@pipeline-builder/api-core 4.1.9 → 4.1.11
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/middleware/auth.d.ts +18 -0
- package/lib/middleware/auth.js +14 -2
- package/lib/middleware/route-table.d.ts +11 -1
- package/lib/middleware/route-table.js +4 -1
- package/lib/openapi/routes/plugin-routes.js +38 -3
- package/lib/services/compliance-event-subscriber.js +10 -2
- package/lib/services/remote-audit-client.d.ts +1 -1
- package/lib/services/remote-audit-client.js +25 -6
- package/lib/services/service-keys.js +10 -3
- package/lib/types/error-codes.d.ts +4 -0
- package/lib/types/error-codes.js +6 -1
- package/package.json +1 -1
|
@@ -145,6 +145,9 @@ function toEntry(method, path, gates) {
|
|
|
145
145
|
entry.minAssurance = g.minAssurance;
|
|
146
146
|
if (g.maxAge !== undefined)
|
|
147
147
|
entry.maxAge = entry.maxAge === undefined ? g.maxAge : Math.min(entry.maxAge, g.maxAge);
|
|
148
|
+
if (g.exempt !== undefined) {
|
|
149
|
+
entry.assuranceExempt = [...new Set([...(entry.assuranceExempt ?? []), g.exempt])].sort();
|
|
150
|
+
}
|
|
148
151
|
break;
|
|
149
152
|
case 'orgAdminAssurance':
|
|
150
153
|
// Strictest wins: one `refuse` in the chain refuses machines.
|
|
@@ -233,4 +236,4 @@ export function summarizeRouteTable(table) {
|
|
|
233
236
|
internal: table.filter((e) => e.internalCallers.length > 0).length,
|
|
234
237
|
};
|
|
235
238
|
}
|
|
236
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUtdGFibGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbWlkZGxld2FyZS9yb3V0ZS10YWJsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwrQ0FBK0M7QUFDL0Msc0NBQXNDO0FBRXRDOzs7Ozs7Ozs7Ozs7Ozs7O0dBZ0JHO0FBRUgsT0FBTyxPQUFPLE1BQU0sU0FBUyxDQUFDO0FBa0M5QixzRUFBc0U7QUFDdEUsaUVBQWlFO0FBQ2pFLE1BQU0sS0FBSyxHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUMsOEJBQThCLENBQUMsQ0FBQztBQUN6RCxNQUFNLFVBQVUsR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDLDZCQUE2QixDQUFDLENBQUM7QUFDN0QsTUFBTSxrQkFBa0IsR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDLGlDQUFpQyxDQUFDLENBQUM7QUFJekU7Ozs7O0dBS0c7QUFDSCxNQUFNLFVBQVUsWUFBWSxDQUFtQixFQUFLLEVBQUUsR0FBRyxLQUFrQjtJQUN6RSxNQUFNLENBQUMsR0FBRyxFQUFnQixDQUFDO0lBQzNCLE1BQU0sQ0FBQyxjQUFjLENBQUMsQ0FBQyxFQUFFLEtBQUssRUFBRSxFQUFFLEtBQUssRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxDQUFDLEVBQUUsR0FBRyxLQUFLLENBQUMsRUFBRSxZQUFZLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7SUFDbkksT0FBTyxFQUFFLENBQUM7QUFDWixDQUFDO0FBRUQsaUZBQWlGO0FBQ2pGLE1BQU0sVUFBVSxhQUFhLENBQUMsRUFBVztJQUN2QyxJQUFJLE9BQU8sRUFBRSxLQUFLLFVBQVU7UUFBRSxPQUFPLEVBQUUsQ0FBQztJQUN4QyxPQUFRLEVBQWEsQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLENBQUM7QUFDckMsQ0FBQztBQUVEOzs7Ozs7R0FNRztBQUNILE1BQU0sVUFBVSxPQUFPLENBQUMsR0FBRyxPQUFpQjtJQUMxQyxPQUFPLFlBQVksQ0FBQyxTQUFTLFlBQVksQ0FBQyxJQUFhLEVBQUUsSUFBYSxFQUFFLElBQWdCLElBQUksSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxDQUFDLENBQUM7QUFDckksQ0FBQztBQWlCRCxTQUFTLG9CQUFvQjtJQUMzQixNQUFNLEtBQUssR0FBSSxPQUFPLENBQUMsTUFBcUUsQ0FBQyxTQUFTLENBQUM7SUFDdkcsSUFBSSxLQUFLLENBQUMsa0JBQWtCLENBQUM7UUFBRSxPQUFPO0lBQ3RDLE1BQU0sV0FBVyxHQUFHLEtBQUssQ0FBQyxHQUF3RCxDQUFDO0lBQ25GLEtBQUssQ0FBQyxHQUFHLEdBQUcsU0FBUyxZQUFZLENBQW1CLEdBQUcsSUFBZTtRQUNwRSxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQztRQUNqQyxNQUFNLE1BQU0sR0FBRyxXQUFXLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQztRQUM3Qyx1RUFBdUU7UUFDdkUsdUVBQXVFO1FBQ3ZFLElBQUksS0FBSyxHQUFZLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUM3QixPQUFPLEtBQUssQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLElBQUksS0FBSyxDQUFDLE1BQU0sR0FBRyxDQUFDO1lBQUUsS0FBSyxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNsRSxNQUFNLElBQUksR0FBRyxPQUFPLEtBQUssS0FBSyxVQUFVLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ2pFLEtBQUssSUFBSSxDQUFDLEdBQUcsTUFBTSxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDO1lBQ2hELE1BQU0sQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxVQUFVLEVBQUUsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQUUsWUFBWSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7UUFDM0csQ0FBQztRQUNELE9BQU8sTUFBTSxDQUFDO0lBQ2hCLENBQUMsQ0FBQztJQUNGLE1BQU0sQ0FBQyxjQUFjLENBQUMsS0FBSyxFQUFFLGtCQUFrQixFQUFFLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQztBQUN2RixDQUFDO0FBRUQsb0JBQW9CLEVBQUUsQ0FBQztBQTZDdkIsU0FBUyxRQUFRLENBQUMsTUFBYyxFQUFFLElBQVk7SUFDNUMsTUFBTSxNQUFNLEdBQUcsR0FBRyxNQUFNLENBQUMsT0FBTyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDO0lBQzNFLE9BQU8sTUFBTSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUM7QUFDOUQsQ0FBQztBQUVELFNBQVMsUUFBUSxDQUFDLE1BQWU7SUFDL0IsT0FBTyxPQUFPLE1BQU0sS0FBSyxVQUFVLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBRSxNQUE4QixDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQzlGLENBQUM7QUFFRDs7Ozs7O0dBTUc7QUFDSCxTQUFTLE9BQU8sQ0FBQyxDQUFZLEVBQUUsUUFBZ0I7SUFDN0MsTUFBTSxJQUFJLEdBQUcsQ0FBQyxDQUFDLE1BQU0sS0FBSyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQztJQUM5QyxJQUFJLElBQUksSUFBSSxRQUFRLEtBQUssSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxHQUFHLElBQUksR0FBRyxDQUFDO1FBQUUsT0FBTyxLQUFLLENBQUM7SUFDaEYsSUFBSSxDQUFDLENBQUMsS0FBSyxDQUFDLEtBQUs7UUFBRSxPQUFPLElBQUksQ0FBQztJQUMvQixNQUFNLEdBQUcsR0FBRyxRQUFRLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxHQUFHLENBQUM7SUFDL0MsT0FBTyxDQUFDLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsS0FBSyxLQUFLLENBQUMsQ0FBQztBQUN4RCxDQUFDO0FBRUQsU0FBUyxZQUFZLENBQUMsR0FBYztJQUNsQyxPQUFPLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLGFBQWEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQ2hELENBQUM7QUFFRCxTQUFTLE9BQU8sQ0FBQyxNQUFjLEVBQUUsSUFBWSxFQUFFLEtBQWtCO0lBQy9ELE1BQU0sS0FBSyxHQUFvQjtRQUM3QixNQUFNO1FBQ04sSUFBSTtRQUNKLElBQUksRUFBRSxLQUFLO1FBQ1gsV0FBVyxFQUFFLEVBQUU7UUFDZixXQUFXLEVBQUUsS0FBSztRQUNsQixnQkFBZ0IsRUFBRSxLQUFLO1FBQ3ZCLGVBQWUsRUFBRSxFQUFFO1FBQ25CLE1BQU0sRUFBRSxLQUFLO1FBQ2IsYUFBYSxFQUFFLEVBQUU7UUFDakIsWUFBWSxFQUFFLENBQUM7UUFDZixRQUFRLEVBQUUsRUFBRTtRQUNaLE1BQU0sRUFBRSxFQUFFO1FBQ1YsS0FBSyxFQUFFLEVBQUU7S0FDVixDQUFDO0lBQ0YsS0FBSyxNQUFNLENBQUMsSUFBSSxLQUFLLEVBQUUsQ0FBQztRQUN0QixRQUFRLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUNmLEtBQUssTUFBTTtnQkFBRSxLQUFLLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQztnQkFBQyxNQUFNO1lBQ3RDLEtBQUssWUFBWTtnQkFBRSxLQUFLLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUMsSUFBSSxFQUFFLFdBQVcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxFQUFFLFlBQVksRUFBRSxDQUFDLENBQUMsWUFBWSxLQUFLLElBQUksRUFBRSxDQUFDLENBQUM7Z0JBQUMsTUFBTTtZQUMzSSxLQUFLLGFBQWE7Z0JBQUUsS0FBSyxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUM7Z0JBQUMsTUFBTTtZQUNwRCxLQUFLLGtCQUFrQjtnQkFBRSxLQUFLLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDO2dCQUFDLE1BQU07WUFDOUQsS0FBSyxpQkFBaUI7Z0JBQUUsS0FBSyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsT0FBTztvQkFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLGVBQWUsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDO3dCQUFFLEtBQUssQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUFDLE1BQU07WUFDaEksS0FBSyxRQUFRO2dCQUNYLEtBQUssQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDO2dCQUNwQixLQUFLLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxPQUFPLElBQUksRUFBRTtvQkFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDO3dCQUFFLEtBQUssQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUNuRyxNQUFNO1lBQ1IsS0FBSyxXQUFXO2dCQUNkLDZFQUE2RTtnQkFDN0UsSUFBSSxDQUFDLENBQUMsWUFBWSxHQUFHLEtBQUssQ0FBQyxZQUFZO29CQUFFLEtBQUssQ0FBQyxZQUFZLEdBQUcsQ0FBQyxDQUFDLFlBQVksQ0FBQztnQkFDN0UsSUFBSSxDQUFDLENBQUMsTUFBTSxLQUFLLFNBQVM7b0JBQUUsS0FBSyxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUMsTUFBTSxLQUFLLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQztnQkFDcEgsTUFBTTtZQUNSLEtBQUssbUJBQW1CO2dCQUN0Qiw4REFBOEQ7Z0JBQzlELEtBQUssQ0FBQyxpQkFBaUIsR0FBRztvQkFDeEIsUUFBUSxFQUFFLEtBQUssQ0FBQyxpQkFBaUIsRUFBRSxRQUFRLEtBQUssUUFBUSxJQUFJLENBQUMsQ0FBQyxRQUFRLEtBQUssUUFBUSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLE9BQU87aUJBQ3pHLENBQUM7Z0JBQ0YsTUFBTTtZQUNSLEtBQUssU0FBUztnQkFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQztvQkFBRSxLQUFLLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUM7Z0JBQUMsTUFBTTtZQUMvRixLQUFLLE9BQU87Z0JBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUM7b0JBQUUsS0FBSyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDO2dCQUFDLE1BQU07WUFDckYsS0FBSyxPQUFPO2dCQUFFLEtBQUssTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLE9BQU87b0JBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQzt3QkFBRSxLQUFLLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFBQyxNQUFNO1FBQ3BHLENBQUM7SUFDSCxDQUFDO0lBQ0QsS0FBSyxDQUFDLGVBQWUsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUM3QixLQUFLLENBQUMsYUFBYSxDQUFDLElBQUksRUFBRSxDQUFDO0lBQzNCLE9BQU8sS0FBSyxDQUFDO0FBQ2YsQ0FBQztBQUVELFNBQVMsSUFBSSxDQUFDLEtBQWMsRUFBRSxNQUFjLEVBQUUsU0FBc0IsRUFBRSxHQUFzQixFQUFFLElBQWlCO0lBQzdHLE1BQU0sS0FBSyxHQUFnQixFQUFFLENBQUM7SUFDOUIsS0FBSyxNQUFNLEtBQUssSUFBSSxLQUFLLEVBQUUsQ0FBQztRQUMxQixJQUFJLEtBQUssQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUNoQixNQUFNLEtBQUssR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDdEYsTUFBTSxPQUFPLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEtBQUssTUFBTSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDLENBQUM7WUFDcEcsS0FBSyxNQUFNLFNBQVMsSUFBSSxLQUFLLEVBQUUsQ0FBQztnQkFDOUIsTUFBTSxJQUFJLEdBQUcsUUFBUSxDQUFDLE1BQU0sRUFBRSxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQztnQkFDakQsTUFBTSxLQUFLLEdBQUcsQ0FBQyxHQUFHLFNBQVMsRUFBRSxHQUFHLEtBQUssQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsT0FBTyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQztnQkFDbEcsS0FBSyxNQUFNLE1BQU0sSUFBSSxPQUFPLEVBQUUsQ0FBQztvQkFDN0IsTUFBTSxHQUFHLEdBQUcsR0FBRyxNQUFNLElBQUksSUFBSSxFQUFFLENBQUM7b0JBQ2hDLDRFQUE0RTtvQkFDNUUsSUFBSSxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQzt3QkFBRSxTQUFTO29CQUM1QixJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO29CQUNkLE1BQU0sUUFBUSxHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUMsS0FBSzt5QkFDL0IsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsTUFBTSxLQUFLLFNBQVMsSUFBSSxDQUFDLENBQUMsTUFBTSxDQUFDLFdBQVcsRUFBRSxLQUFLLE1BQU0sSUFBSSxNQUFNLEtBQUssR0FBRyxDQUFDO3lCQUM1RixHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQztvQkFDeEIsR0FBRyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxFQUFFLElBQUksRUFBRSxZQUFZLENBQUMsQ0FBQyxHQUFHLEtBQUssRUFBRSxHQUFHLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUN6RSxDQUFDO1lBQ0gsQ0FBQztRQUNILENBQUM7YUFBTSxJQUFJLFFBQVEsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQztZQUNsQyxNQUFNLFNBQVMsR0FBRyxRQUFRLENBQUMsTUFBTSxFQUFFLEtBQUssQ0FBQyxVQUFVLENBQUMsSUFBSSxHQUFHLENBQUMsQ0FBQztZQUM3RCx5RUFBeUU7WUFDekUsMEVBQTBFO1lBQzFFLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRSxTQUFTLEVBQUUsQ0FBQyxHQUFHLFNBQVMsRUFBRSxHQUFHLEtBQUssQ0FBQyxFQUFFLEdBQUcsRUFBRSxJQUFJLENBQUMsQ0FBQztRQUMzRSxDQUFDO2FBQU0sQ0FBQztZQUNOLEtBQUssQ0FBQyxJQUFJLENBQUMsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FBQztRQUNoQyxDQUFDO0lBQ0gsQ0FBQztBQUNILENBQUM7QUFFRDs7OztHQUlHO0FBQ0gsTUFBTSxVQUFVLGVBQWUsQ0FBQyxHQUFZO0lBQzFDLE1BQU0sSUFBSSxHQUFJLEdBQStCLENBQUMsTUFBTSxJQUFLLEdBQWtCLENBQUM7SUFDNUUsTUFBTSxHQUFHLEdBQXNCLEVBQUUsQ0FBQztJQUNsQyxJQUFJLENBQUMsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDO1FBQUUsT0FBTyxHQUFHLENBQUM7SUFDcEQsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsSUFBSSxHQUFHLEVBQUUsQ0FBQyxDQUFDO0lBQzFDLE9BQU8sR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksS0FBSyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDbkgsQ0FBQztBQUVELDJFQUEyRTtBQUMzRSxNQUFNLFVBQVUsYUFBYSxDQUFDLE1BQWM7SUFDMUMsT0FBTyxDQUFDLENBQUMsS0FBSyxFQUFFLE1BQU0sRUFBRSxTQUFTLENBQUMsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUM7QUFDcEUsQ0FBQztBQUVELDZDQUE2QztBQUM3QyxNQUFNLFVBQVUsbUJBQW1CLENBQUMsS0FBaUM7SUFDbkUsTUFBTSxLQUFLLEdBQUcsQ0FBQyxDQUFrQixFQUFXLEVBQUUsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLE1BQU0sR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLFdBQVcsSUFBSSxDQUFDLENBQUMsZ0JBQWdCLENBQUM7SUFDL0csTUFBTSxNQUFNLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBQzVELE9BQU87UUFDTCxNQUFNLEVBQUUsS0FBSyxDQUFDLE1BQU07UUFDcEIsTUFBTSxFQUFFLE1BQU0sQ0FBQyxNQUFNO1FBQ3JCLE9BQU8sRUFBRSxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU07UUFDOUMsU0FBUyxFQUFFLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsTUFBTSxLQUFLLENBQUMsQ0FBQyxDQUFDLE1BQU07UUFDNUQsUUFBUSxFQUFFLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxlQUFlLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLE1BQU07S0FDbkUsQ0FBQztBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgMjAyNiBQaXBlbGluZSBCdWlsZGVyIENvbnRyaWJ1dG9yc1xuLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjBcblxuLyoqXG4gKiBJbnRyb3NwZWN0YWJsZSByb3V0ZSB0YWJsZS5cbiAqXG4gKiBBdXRob3JpemF0aW9uIGlzIHNwbGl0IGJldHdlZW4gcm91dGVyIG1vdW50cyAoYGFwcC51c2UoJy94JywgZ2F0ZSwgcm91dGVyKWApXG4gKiBhbmQgaW5kaXZpZHVhbCByb3V0ZXMsIHNvIGdyZXBwaW5nIHNvdXJjZSBjYW4ndCBwcm92ZSB0aGF0IGV2ZXJ5IHJvdXRlIGlzXG4gKiBnYXRlZC4gSW5zdGVhZCwgZXZlcnkgZ2F0ZSBtaWRkbGV3YXJlIGluIHRoaXMgcGFja2FnZSBjYXJyaWVzIE1FVEFEQVRBICh3aGF0IGl0XG4gKiByZXF1aXJlcyksIGFuZCB7QGxpbmsgYnVpbGRSb3V0ZVRhYmxlfSB3YWxrcyBhbiBhc3NlbWJsZWQgRXhwcmVzcyBhcHAgYW5kXG4gKiByZXNvbHZlcywgcGVyIG1ldGhvZCArIHBhdGgsIHRoZSBmdWxsIGNoYWluIG9mIGdhdGVzIEV4cHJlc3Mgd291bGQgcnVuIGJlZm9yZVxuICogdGhlIGhhbmRsZXI6IHBlcm1pc3Npb25zLCBzeXN0ZW0tYWRtaW4sIHNlcnZpY2UgcHJpbmNpcGFsLCBzdGVwLXVwLCBmZWF0dXJlLFxuICogdG9rZW4gc2NvcGUsIGFuZCB0aGUgYXVkaXQgYWN0aW9ucyB0aGUgcm91dGUgZGVjbGFyZXMgdmlhIHtAbGluayBhdWRpdGVkfS5cbiAqXG4gKiBFeHByZXNzIDUgKHJvdXRlckAyKSBkb2VzIG5vdCBrZWVwIGEgbW91bnQncyBwYXRoIHN0cmluZyBvbiBpdHMgbGF5ZXIsIHNvIHRoaXNcbiAqIG1vZHVsZSByZWNvcmRzIGl0OiBvbiBpbXBvcnQgaXQgd3JhcHMgYFJvdXRlci5wcm90b3R5cGUudXNlYCB0byBzdGFtcCBlYWNoIG5ld1xuICogbGF5ZXIgd2l0aCB0aGUgcGF0aCBpdCB3YXMgbW91bnRlZCBhdC4gYXBpLWNvcmUgaXMgaW1wb3J0ZWQgYmVmb3JlIGFueSByb3V0ZVxuICogbW9kdWxlIHJlZ2lzdGVycyBhIHJvdXRlLCBzbyBldmVyeSBsYXllciBhbiBhcHAgYnVpbGRzIGlzIHN0YW1wZWQuIFRoZSB3cmFwXG4gKiBvbmx5IGFkZHMgYSBzeW1ib2wgcHJvcGVydHk7IHJvdXRpbmcgYmVoYXZpb3VyIGlzIHVuY2hhbmdlZC5cbiAqL1xuXG5pbXBvcnQgZXhwcmVzcyBmcm9tICdleHByZXNzJztcbmltcG9ydCB0eXBlIHsgUGVybWlzc2lvbiB9IGZyb20gJy4uL3R5cGVzL3Blcm1pc3Npb25zLmpzJztcblxuLyoqXG4gKiBXaGF0IGEgTUFDSElORSBjcmVkZW50aWFsIChQQVQsIHNlcnZpY2UgYWNjb3VudCkgbWVldHMgb24gYSByb3V0ZSBnYXRlZCBieVxuICogYHJlcXVpcmVPcmdBZG1pbkFzc3VyYW5jZWAgd2hpbGUgdGhlIG9yZydzIGFkbWluLU1GQSBwb2xpY3kgaXMgb246XG4gKiAgIC0gYGFsbG93YCAg4oCUIHRoZSByb3V0ZSBpcyBsZWdpdGltYXRlbHkgbWFjaGluZS1jYWxsYWJsZSAoYXV0b21hdGlvbiB0aGF0XG4gKiAgICAgICAgICAgICAgICBtYW5hZ2VzIG1lbWJlcnMsIHJvbGVzLCBiaWxsaW5n4oCmKTsgdGhlIHBvbGljeSBpcyBhYm91dCBob3dcbiAqICAgICAgICAgICAgICAgIHN0cm9uZ2x5IGEgUEVSU09OJ3Mgc2Vzc2lvbiB3YXMgb3BlbmVkLCBzbyBpdCBkb2VzIG5vdCBhcHBseTtcbiAqICAgLSBgcmVmdXNlYCDigJQgb25seSBhIHBlcnNvbiBtYXkgZG8gdGhpcyB3aGlsZSB0aGUgcG9saWN5IGlzIG9uICg0MDNcbiAqICAgICAgICAgICAgICAgIGBIVU1BTl9TRVNTSU9OX1JFUVVJUkVEYCksIGUuZy4gbWludGluZyBhbm90aGVyIGNyZWRlbnRpYWwuXG4gKi9cbmV4cG9ydCB0eXBlIE9yZ0FkbWluQXNzdXJhbmNlTWFjaGluZXMgPSAnYWxsb3cnIHwgJ3JlZnVzZSc7XG5cbi8qKiBPbmUgcmVxdWlyZW1lbnQgYSBnYXRlIG1pZGRsZXdhcmUgZW5mb3JjZXMuICovXG5leHBvcnQgdHlwZSBSb3V0ZUdhdGUgPVxuICB8IHsga2luZDogJ2F1dGgnIH1cbiAgfCB7IGtpbmQ6ICdwZXJtaXNzaW9uJzsgbW9kZTogJ2FueScgfCAnYWxsJzsgcGVybWlzc2lvbnM6IHJlYWRvbmx5IFBlcm1pc3Npb25bXTsgYWxsb3dTZXJ2aWNlPzogYm9vbGVhbiB9XG4gIHwgeyBraW5kOiAnc3lzdGVtQWRtaW4nIH1cbiAgfCB7IGtpbmQ6ICdzZXJ2aWNlUHJpbmNpcGFsJyB9XG4gIC8qKiBBbiBJTlRFUk5BTCByb3V0ZTogdXNlciB0b2tlbnMgcmVmdXNlZCBvdXRyaWdodCwgb25seSB0aGVzZSBzZXJ2aWNlcyBhZG1pdHRlZC4gKi9cbiAgfCB7IGtpbmQ6ICdpbnRlcm5hbFNlcnZpY2UnOyBjYWxsZXJzOiByZWFkb25seSBzdHJpbmdbXSB9XG4gIHwgeyBraW5kOiAnc3RlcFVwJzsgbWV0aG9kcz86IHJlYWRvbmx5IHN0cmluZ1tdIH1cbiAgLyoqIFRoZSB3aG9sZSBTRVNTSU9OIG11c3QgYmUgTUZBLWdyYWRlIChgcmVxdWlyZUF1dGgoeyBtaW5Bc3N1cmFuY2UgfSlgKSwgYW5kXG4gICAqICBvcHRpb25hbGx5IG5vIG9sZGVyIHRoYW4gYG1heEFnZWAgc2Vjb25kcy4gKi9cbiAgfCB7IGtpbmQ6ICdhc3N1cmFuY2UnOyBtaW5Bc3N1cmFuY2U6IDEgfCAyOyBtYXhBZ2U/OiBudW1iZXIgfVxuICAvKiogVGhlIHNlc3Npb24gbXVzdCBiZSBNRkEtZ3JhZGUgV0hFTiB0aGUgb3JnJ3MgYGFkbWluQWN0aW9uc1JlcXVpcmVNZmFgXG4gICAqICBwb2xpY3kgaXMgb24gKGByZXF1aXJlT3JnQWRtaW5Bc3N1cmFuY2VgKS4gYG1hY2hpbmVzYCBzYXlzIHdoYXQgYSBtYWNoaW5lXG4gICAqICBjcmVkZW50aWFsIG1lZXRzIG9uIHRoZSByb3V0ZSB3aGlsZSB0aGUgcG9saWN5IGlzIG9uLiAqL1xuICB8IHsga2luZDogJ29yZ0FkbWluQXNzdXJhbmNlJzsgbWFjaGluZXM6IE9yZ0FkbWluQXNzdXJhbmNlTWFjaGluZXMgfVxuICB8IHsga2luZDogJ2ZlYXR1cmUnOyBmZWF0dXJlOiBzdHJpbmcgfVxuICB8IHsga2luZDogJ3Njb3BlJzsgc2NvcGU6IHN0cmluZyB9XG4gIHwgeyBraW5kOiAnYXVkaXQnOyBhY3Rpb25zOiByZWFkb25seSBzdHJpbmdbXSB9O1xuXG4vLyBTeW1ib2wuZm9yLCBub3QgU3ltYm9sKCk6IGEgdGVzdCB0aGF0IGxvYWRzIGFwaS1jb3JlIHR3aWNlIChFU00gKyBhXG4vLyByZXF1aXJlQWN0dWFsIGNvcHkpIG11c3Qgc3RpbGwgc2VlIHRhZ3Mgc2V0IGJ5IHRoZSBvdGhlciBjb3B5LlxuY29uc3QgR0FURVMgPSBTeW1ib2wuZm9yKCdwaXBlbGluZS1idWlsZGVyLnJvdXRlLWdhdGVzJyk7XG5jb25zdCBMQVlFUl9QQVRIID0gU3ltYm9sLmZvcigncGlwZWxpbmUtYnVpbGRlci5sYXllci1wYXRoJyk7XG5jb25zdCBSRUNPUkRFUl9JTlNUQUxMRUQgPSBTeW1ib2wuZm9yKCdwaXBlbGluZS1idWlsZGVyLnJvdXRlLXJlY29yZGVyJyk7XG5cbnR5cGUgVGFnZ2VkID0geyBbR0FURVNdPzogUm91dGVHYXRlW10gfTtcblxuLyoqXG4gKiBBdHRhY2ggZ2F0ZSBtZXRhZGF0YSB0byBhIG1pZGRsZXdhcmUgZnVuY3Rpb24gKGFwcGVuZHMgdG8gYW55IGV4aXN0aW5nIHRhZ3MpXG4gKiBhbmQgcmV0dXJuIHRoZSBzYW1lIGZ1bmN0aW9uLiBVc2UgaXQgZm9yIGEgc2VydmljZS1sb2NhbCBnYXRlIHNvIHRoZSByb3V0ZVxuICogdGFibGUga25vd3Mgd2hhdCBpdCBlbmZvcmNlcyDigJQgZS5nLiBhIGhhbmRsZXItbGV2ZWwgYHJlcXVpcmVDb21wbGlhbmNlV3JpdGVgXG4gKiB0YWdnZWQgYHsga2luZDogJ3Blcm1pc3Npb24nLCBtb2RlOiAnYW55JywgcGVybWlzc2lvbnM6IFsnY29tcGxpYW5jZTp3cml0ZSddIH1gLlxuICovXG5leHBvcnQgZnVuY3Rpb24gdGFnUm91dGVHYXRlPFQgZXh0ZW5kcyBvYmplY3Q+KGZuOiBULCAuLi5nYXRlczogUm91dGVHYXRlW10pOiBUIHtcbiAgY29uc3QgdCA9IGZuIGFzIFQgJiBUYWdnZWQ7XG4gIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCBHQVRFUywgeyB2YWx1ZTogWy4uLih0W0dBVEVTXSA/PyBbXSksIC4uLmdhdGVzXSwgY29uZmlndXJhYmxlOiB0cnVlLCBlbnVtZXJhYmxlOiBmYWxzZSwgd3JpdGFibGU6IHRydWUgfSk7XG4gIHJldHVybiBmbjtcbn1cblxuLyoqIFRoZSBnYXRlIG1ldGFkYXRhIGF0dGFjaGVkIHRvIGEgbWlkZGxld2FyZSBmdW5jdGlvbiAoZW1wdHkgd2hlbiB1bnRhZ2dlZCkuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0Um91dGVHYXRlcyhmbjogdW5rbm93bik6IHJlYWRvbmx5IFJvdXRlR2F0ZVtdIHtcbiAgaWYgKHR5cGVvZiBmbiAhPT0gJ2Z1bmN0aW9uJykgcmV0dXJuIFtdO1xuICByZXR1cm4gKGZuIGFzIFRhZ2dlZClbR0FURVNdID8/IFtdO1xufVxuXG4vKipcbiAqIERlY2xhcmUgdGhlIGF1ZGl0IGFjdGlvbihzKSBhIHJvdXRlIGVtaXRzLiBBIG5vLW9wIG1pZGRsZXdhcmUgd2hvc2Ugb25seSBqb2JcbiAqIGlzIHRvIHB1dCB0aGUgYWN0aW9uIG9uIHRoZSByb3V0ZSB0YWJsZSwgc28gdGhlIGNvdmVyYWdlIHRlc3QgY2FuIHJlcXVpcmUgYW5cbiAqIGF1ZGl0IGRlY2xhcmF0aW9uIG9uIGV2ZXJ5IHdyaXRlIHJvdXRlLiBQbGFjZSBpdCBpbiB0aGUgcm91dGUncyBjaGFpbjpcbiAqIGByb3V0ZXIucG9zdCgnLycsIGF1ZGl0ZWQoJ3BpcGVsaW5lLmNyZWF0ZScpLCBoYW5kbGVyKWAuIFRoZSBoYW5kbGVyIHN0aWxsXG4gKiBlbWl0cyB0aGUgZXZlbnQgaXRzZWxmLlxuICovXG5leHBvcnQgZnVuY3Rpb24gYXVkaXRlZCguLi5hY3Rpb25zOiBzdHJpbmdbXSk6IChyZXE6IHVua25vd24sIHJlczogdW5rbm93biwgbmV4dDogKCkgPT4gdm9pZCkgPT4gdm9pZCB7XG4gIHJldHVybiB0YWdSb3V0ZUdhdGUoZnVuY3Rpb24gYXVkaXRlZFJvdXRlKF9yZXE6IHVua25vd24sIF9yZXM6IHVua25vd24sIG5leHQ6ICgpID0+IHZvaWQpIHsgbmV4dCgpOyB9LCB7IGtpbmQ6ICdhdWRpdCcsIGFjdGlvbnMgfSk7XG59XG5cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gTW91bnQtcGF0aCByZWNvcmRpbmdcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG5pbnRlcmZhY2UgTGF5ZXIge1xuICBoYW5kbGU6IHVua25vd247XG4gIHJvdXRlPzogeyBwYXRoOiBzdHJpbmcgfCBzdHJpbmdbXTsgbWV0aG9kczogUmVjb3JkPHN0cmluZywgYm9vbGVhbj47IHN0YWNrOiBBcnJheTx7IG1ldGhvZD86IHN0cmluZzsgaGFuZGxlOiB1bmtub3duIH0+IH07XG4gIG1hdGNoZXJzOiBBcnJheTwocGF0aDogc3RyaW5nKSA9PiB1bmtub3duPjtcbiAgLyoqIHJvdXRlckAyJ3MgXCJtb3VudGVkIGF0ICcvJyB3aXRoIGVuZDpmYWxzZVwiIGZhc3QgcGF0aCDigJQgbWF0Y2hlcyBBTlkgcGF0aC4gKi9cbiAgc2xhc2g/OiBib29sZWFuO1xuICBbTEFZRVJfUEFUSF0/OiBzdHJpbmc7XG59XG5cbmludGVyZmFjZSBSb3V0ZXJMaWtlIHsgc3RhY2s6IExheWVyW10gfVxuXG5mdW5jdGlvbiBpbnN0YWxsUm91dGVSZWNvcmRlcigpOiB2b2lkIHtcbiAgY29uc3QgcHJvdG8gPSAoZXhwcmVzcy5Sb3V0ZXIgYXMgdW5rbm93biBhcyB7IHByb3RvdHlwZTogUmVjb3JkPHN0cmluZyB8IHN5bWJvbCwgdW5rbm93bj4gfSkucHJvdG90eXBlO1xuICBpZiAocHJvdG9bUkVDT1JERVJfSU5TVEFMTEVEXSkgcmV0dXJuO1xuICBjb25zdCBvcmlnaW5hbFVzZSA9IHByb3RvLnVzZSBhcyAodGhpczogUm91dGVyTGlrZSwgLi4uYXJnczogdW5rbm93bltdKSA9PiB1bmtub3duO1xuICBwcm90by51c2UgPSBmdW5jdGlvbiByZWNvcmRpbmdVc2UodGhpczogUm91dGVyTGlrZSwgLi4uYXJnczogdW5rbm93bltdKTogdW5rbm93biB7XG4gICAgY29uc3QgYmVmb3JlID0gdGhpcy5zdGFjay5sZW5ndGg7XG4gICAgY29uc3QgcmVzdWx0ID0gb3JpZ2luYWxVc2UuYXBwbHkodGhpcywgYXJncyk7XG4gICAgLy8gU2FtZSBwYXRoIGRpc2FtYmlndWF0aW9uIGFzIHJvdXRlckAyJ3MgYHVzZWA6IGEgbGVhZGluZyBub24tZnVuY3Rpb25cbiAgICAvLyAocG9zc2libHkgbmVzdGVkIGluIGFycmF5cykgaXMgdGhlIHBhdGg7IG90aGVyd2lzZSB0aGUgbW91bnQgaXMgJy8nLlxuICAgIGxldCBmaXJzdDogdW5rbm93biA9IGFyZ3NbMF07XG4gICAgd2hpbGUgKEFycmF5LmlzQXJyYXkoZmlyc3QpICYmIGZpcnN0Lmxlbmd0aCA+IDApIGZpcnN0ID0gZmlyc3RbMF07XG4gICAgY29uc3QgcGF0aCA9IHR5cGVvZiBmaXJzdCA9PT0gJ2Z1bmN0aW9uJyA/ICcvJyA6IFN0cmluZyhhcmdzWzBdKTtcbiAgICBmb3IgKGxldCBpID0gYmVmb3JlOyBpIDwgdGhpcy5zdGFjay5sZW5ndGg7IGkrKykge1xuICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMuc3RhY2tbaV0sIExBWUVSX1BBVEgsIHsgdmFsdWU6IHBhdGgsIGVudW1lcmFibGU6IGZhbHNlLCBjb25maWd1cmFibGU6IHRydWUgfSk7XG4gICAgfVxuICAgIHJldHVybiByZXN1bHQ7XG4gIH07XG4gIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShwcm90bywgUkVDT1JERVJfSU5TVEFMTEVELCB7IHZhbHVlOiB0cnVlLCBlbnVtZXJhYmxlOiBmYWxzZSB9KTtcbn1cblxuaW5zdGFsbFJvdXRlUmVjb3JkZXIoKTtcblxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBUYWJsZSBjb25zdHJ1Y3Rpb25cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4vKiogUmVzb2x2ZWQgcmVxdWlyZW1lbnRzIGZvciBvbmUgbWV0aG9kICsgcGF0aC4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUm91dGVUYWJsZUVudHJ5IHtcbiAgbWV0aG9kOiBzdHJpbmc7XG4gIHBhdGg6IHN0cmluZztcbiAgLyoqIEF1dGhlbnRpY2F0aW9uIHJ1bnMgYmVmb3JlIHRoZSBoYW5kbGVyIChyZXF1aXJlQXV0aCkuICovXG4gIGF1dGg6IGJvb2xlYW47XG4gIC8qKiBFYWNoIHBlcm1pc3Npb24gZ2F0ZSBpbiB0aGUgY2hhaW4gKGFsbCBtdXN0IHBhc3M7IGVhY2ggaXMgYW55LW9mIG9yIGFsbC1vZikuICovXG4gIHBlcm1pc3Npb25zOiBBcnJheTx7IG1vZGU6ICdhbnknIHwgJ2FsbCc7IHBlcm1pc3Npb25zOiBQZXJtaXNzaW9uW107IGFsbG93U2VydmljZTogYm9vbGVhbiB9PjtcbiAgc3lzdGVtQWRtaW46IGJvb2xlYW47XG4gIHNlcnZpY2VQcmluY2lwYWw6IGJvb2xlYW47XG4gIC8qKlxuICAgKiBUaGUgc2VydmljZXMgYWxsb3dlZCB0byBjYWxsIHRoaXMgcm91dGUgd2hlbiBpdCBpcyBJTlRFUk5BTCAoYHJlcXVpcmVJbnRlcm5hbFNlcnZpY2VgKS5cbiAgICogQW4gZW1wdHkgYXJyYXkgbWVhbnMgdGhlIHJvdXRlIGlzIG5vdCBpbnRlcm5hbCDigJQgYSB1c2VyIHRva2VuIG1heSByZWFjaCBpdCxcbiAgICogc3ViamVjdCB0byB0aGUgb3RoZXIgZ2F0ZXMuIFNvcnRlZCwgc28gdGhlIGdlbmVyYXRlZCB0YWJsZSBpcyBzdGFibGUuXG4gICAqL1xuICBpbnRlcm5hbENhbGxlcnM6IHN0cmluZ1tdO1xuICBzdGVwVXA6IGJvb2xlYW47XG4gIC8qKiBXaGVuIHRoZSBzdGVwLXVwIGdhdGUgbmFtZXMgdGhlIGZhY3RvcnMgdGhhdCBtYXkgZWFybiBpdCAoYFsnd2ViYXV0aG4nLFxuICAgKiAgJ3RvdHAnXWAgb24gdGhlIG1vc3QgZGFuZ2Vyb3VzIHJvdXRlcyksIHRoZSBhbGxvd2VkIG1ldGhvZHMuIEVtcHR5IG1lYW5zXG4gICAqICBhbnkgZmFjdG9yIHNhdGlzZmllcyBpdC4gU29ydGVkLCBzbyB0aGUgZ2VuZXJhdGVkIHRhYmxlIGlzIHN0YWJsZS4gKi9cbiAgc3RlcFVwTWV0aG9kczogc3RyaW5nW107XG4gIC8qKiBIaWdoZXN0IGBtaW5Bc3N1cmFuY2VgIGFueSBnYXRlIGluIHRoZSBjaGFpbiBkZW1hbmRzOyAwIHdoZW4gbm9uZSBkb2VzLiAqL1xuICBtaW5Bc3N1cmFuY2U6IDAgfCAxIHwgMjtcbiAgLyoqIFRpZ2h0ZXN0IGBtYXhBZ2VgIChzZWNvbmRzKSBhbnkgYXNzdXJhbmNlIGdhdGUgaW4gdGhlIGNoYWluIGRlbWFuZHMuICovXG4gIG1heEFnZT86IG51bWJlcjtcbiAgLyoqXG4gICAqIFByZXNlbnQgd2hlbiB0aGUgcm91dGUgcmVxdWlyZXMgYW4gTUZBLWdyYWRlIHNlc3Npb24gV0hFTiB0aGUgb3JnJ3NcbiAgICogYGFkbWluQWN0aW9uc1JlcXVpcmVNZmFgIHBvbGljeSBpcyBvbiAoYHJlcXVpcmVPcmdBZG1pbkFzc3VyYW5jZWApLCB3aXRoXG4gICAqIHdoYXQgYSBtYWNoaW5lIGNyZWRlbnRpYWwgbWVldHMgdGhlcmUuIEFic2VudCAobm90IGBmYWxzZWApIG90aGVyd2lzZSwgc29cbiAgICogdGhlIHRhYmxlIG9mIGEgc2VydmljZSB0aGF0IHVzZXMgbm8gc3VjaCBnYXRlIGlzIHVuY2hhbmdlZC5cbiAgICovXG4gIG9yZ0FkbWluQXNzdXJhbmNlPzogeyBtYWNoaW5lczogT3JnQWRtaW5Bc3N1cmFuY2VNYWNoaW5lcyB9O1xuICBmZWF0dXJlczogc3RyaW5nW107XG4gIHNjb3Blczogc3RyaW5nW107XG4gIGF1ZGl0OiBzdHJpbmdbXTtcbn1cblxuaW50ZXJmYWNlIENhbmRpZGF0ZSB7IGxheWVyOiBMYXllcjsgcHJlZml4OiBzdHJpbmcgfVxuXG5mdW5jdGlvbiBqb2luUGF0aChwcmVmaXg6IHN0cmluZywgcGF0aDogc3RyaW5nKTogc3RyaW5nIHtcbiAgY29uc3Qgam9pbmVkID0gYCR7cHJlZml4LnJlcGxhY2UoL1xcLyskLywgJycpfS8ke3BhdGgucmVwbGFjZSgvXlxcLysvLCAnJyl9YDtcbiAgcmV0dXJuIGpvaW5lZC5sZW5ndGggPiAxID8gam9pbmVkLnJlcGxhY2UoL1xcLyskLywgJycpIDogJy8nO1xufVxuXG5mdW5jdGlvbiBpc1JvdXRlcihoYW5kbGU6IHVua25vd24pOiBoYW5kbGUgaXMgUm91dGVyTGlrZSB7XG4gIHJldHVybiB0eXBlb2YgaGFuZGxlID09PSAnZnVuY3Rpb24nICYmIEFycmF5LmlzQXJyYXkoKGhhbmRsZSBhcyBQYXJ0aWFsPFJvdXRlckxpa2U+KS5zdGFjayk7XG59XG5cbi8qKlxuICogV2hldGhlciBhIG1pZGRsZXdhcmUgbGF5ZXIgKG1vdW50ZWQgdW5kZXIgYHByZWZpeGApIHJ1bnMgZm9yIGBmdWxsUGF0aGAuXG4gKiBNaXJyb3JzIGBMYXllci5wcm90b3R5cGUubWF0Y2hgLCBpbmNsdWRpbmcgaXRzIGZhc3QgcGF0aDogYSBsYXllciBhZGRlZCB3aXRoXG4gKiBubyBwYXRoIChgcm91dGVyLnVzZShnYXRlKWApIG1hdGNoZXMgRVZFUlkgcGF0aCB1bmRlciBpdHMgcm91dGVyIOKAlCB3aGljaCBpc1xuICogZXhhY3RseSBob3cgdGhlIHNoYXJlZCBgcmVxdWlyZVBlcm1pc3Npb25gIGdhdGVzIGJldHdlZW4gdHdvIGByb3V0ZXIudXNlKC4uLilgXG4gKiBtb3VudHMgcmVhY2ggdGhlIHJvdXRlcnMgcmVnaXN0ZXJlZCBhZnRlciB0aGVtLlxuICovXG5mdW5jdGlvbiBhcHBsaWVzKGM6IENhbmRpZGF0ZSwgZnVsbFBhdGg6IHN0cmluZyk6IGJvb2xlYW4ge1xuICBjb25zdCBiYXNlID0gYy5wcmVmaXggPT09ICcvJyA/ICcnIDogYy5wcmVmaXg7XG4gIGlmIChiYXNlICYmIGZ1bGxQYXRoICE9PSBiYXNlICYmICFmdWxsUGF0aC5zdGFydHNXaXRoKGAke2Jhc2V9L2ApKSByZXR1cm4gZmFsc2U7XG4gIGlmIChjLmxheWVyLnNsYXNoKSByZXR1cm4gdHJ1ZTtcbiAgY29uc3QgcmVsID0gZnVsbFBhdGguc2xpY2UoYmFzZS5sZW5ndGgpIHx8ICcvJztcbiAgcmV0dXJuIGMubGF5ZXIubWF0Y2hlcnMuc29tZSgobSkgPT4gbShyZWwpICE9PSBmYWxzZSk7XG59XG5cbmZ1bmN0aW9uIGNvbGxlY3RHYXRlcyhmbnM6IHVua25vd25bXSk6IFJvdXRlR2F0ZVtdIHtcbiAgcmV0dXJuIGZucy5mbGF0TWFwKChmbikgPT4gZ2V0Um91dGVHYXRlcyhmbikpO1xufVxuXG5mdW5jdGlvbiB0b0VudHJ5KG1ldGhvZDogc3RyaW5nLCBwYXRoOiBzdHJpbmcsIGdhdGVzOiBSb3V0ZUdhdGVbXSk6IFJvdXRlVGFibGVFbnRyeSB7XG4gIGNvbnN0IGVudHJ5OiBSb3V0ZVRhYmxlRW50cnkgPSB7XG4gICAgbWV0aG9kLFxuICAgIHBhdGgsXG4gICAgYXV0aDogZmFsc2UsXG4gICAgcGVybWlzc2lvbnM6IFtdLFxuICAgIHN5c3RlbUFkbWluOiBmYWxzZSxcbiAgICBzZXJ2aWNlUHJpbmNpcGFsOiBmYWxzZSxcbiAgICBpbnRlcm5hbENhbGxlcnM6IFtdLFxuICAgIHN0ZXBVcDogZmFsc2UsXG4gICAgc3RlcFVwTWV0aG9kczogW10sXG4gICAgbWluQXNzdXJhbmNlOiAwLFxuICAgIGZlYXR1cmVzOiBbXSxcbiAgICBzY29wZXM6IFtdLFxuICAgIGF1ZGl0OiBbXSxcbiAgfTtcbiAgZm9yIChjb25zdCBnIG9mIGdhdGVzKSB7XG4gICAgc3dpdGNoIChnLmtpbmQpIHtcbiAgICAgIGNhc2UgJ2F1dGgnOiBlbnRyeS5hdXRoID0gdHJ1ZTsgYnJlYWs7XG4gICAgICBjYXNlICdwZXJtaXNzaW9uJzogZW50cnkucGVybWlzc2lvbnMucHVzaCh7IG1vZGU6IGcubW9kZSwgcGVybWlzc2lvbnM6IFsuLi5nLnBlcm1pc3Npb25zXSwgYWxsb3dTZXJ2aWNlOiBnLmFsbG93U2VydmljZSA9PT0gdHJ1ZSB9KTsgYnJlYWs7XG4gICAgICBjYXNlICdzeXN0ZW1BZG1pbic6IGVudHJ5LnN5c3RlbUFkbWluID0gdHJ1ZTsgYnJlYWs7XG4gICAgICBjYXNlICdzZXJ2aWNlUHJpbmNpcGFsJzogZW50cnkuc2VydmljZVByaW5jaXBhbCA9IHRydWU7IGJyZWFrO1xuICAgICAgY2FzZSAnaW50ZXJuYWxTZXJ2aWNlJzogZm9yIChjb25zdCBjIG9mIGcuY2FsbGVycykgaWYgKCFlbnRyeS5pbnRlcm5hbENhbGxlcnMuaW5jbHVkZXMoYykpIGVudHJ5LmludGVybmFsQ2FsbGVycy5wdXNoKGMpOyBicmVhaztcbiAgICAgIGNhc2UgJ3N0ZXBVcCc6XG4gICAgICAgIGVudHJ5LnN0ZXBVcCA9IHRydWU7XG4gICAgICAgIGZvciAoY29uc3QgbSBvZiBnLm1ldGhvZHMgPz8gW10pIGlmICghZW50cnkuc3RlcFVwTWV0aG9kcy5pbmNsdWRlcyhtKSkgZW50cnkuc3RlcFVwTWV0aG9kcy5wdXNoKG0pO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ2Fzc3VyYW5jZSc6XG4gICAgICAgIC8vIFNldmVyYWwgZ2F0ZXMgbWF5IGFwcGx5OyB0aGUgU1RSSUNURVNUIHdpbnMsIHNpbmNlIGV2ZXJ5IG9uZSBvZiB0aGVtIHJ1bnMuXG4gICAgICAgIGlmIChnLm1pbkFzc3VyYW5jZSA+IGVudHJ5Lm1pbkFzc3VyYW5jZSkgZW50cnkubWluQXNzdXJhbmNlID0gZy5taW5Bc3N1cmFuY2U7XG4gICAgICAgIGlmIChnLm1heEFnZSAhPT0gdW5kZWZpbmVkKSBlbnRyeS5tYXhBZ2UgPSBlbnRyeS5tYXhBZ2UgPT09IHVuZGVmaW5lZCA/IGcubWF4QWdlIDogTWF0aC5taW4oZW50cnkubWF4QWdlLCBnLm1heEFnZSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnb3JnQWRtaW5Bc3N1cmFuY2UnOlxuICAgICAgICAvLyBTdHJpY3Rlc3Qgd2luczogb25lIGByZWZ1c2VgIGluIHRoZSBjaGFpbiByZWZ1c2VzIG1hY2hpbmVzLlxuICAgICAgICBlbnRyeS5vcmdBZG1pbkFzc3VyYW5jZSA9IHtcbiAgICAgICAgICBtYWNoaW5lczogZW50cnkub3JnQWRtaW5Bc3N1cmFuY2U/Lm1hY2hpbmVzID09PSAncmVmdXNlJyB8fCBnLm1hY2hpbmVzID09PSAncmVmdXNlJyA/ICdyZWZ1c2UnIDogJ2FsbG93JyxcbiAgICAgICAgfTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdmZWF0dXJlJzogaWYgKCFlbnRyeS5mZWF0dXJlcy5pbmNsdWRlcyhnLmZlYXR1cmUpKSBlbnRyeS5mZWF0dXJlcy5wdXNoKGcuZmVhdHVyZSk7IGJyZWFrO1xuICAgICAgY2FzZSAnc2NvcGUnOiBpZiAoIWVudHJ5LnNjb3Blcy5pbmNsdWRlcyhnLnNjb3BlKSkgZW50cnkuc2NvcGVzLnB1c2goZy5zY29wZSk7IGJyZWFrO1xuICAgICAgY2FzZSAnYXVkaXQnOiBmb3IgKGNvbnN0IGEgb2YgZy5hY3Rpb25zKSBpZiAoIWVudHJ5LmF1ZGl0LmluY2x1ZGVzKGEpKSBlbnRyeS5hdWRpdC5wdXNoKGEpOyBicmVhaztcbiAgICB9XG4gIH1cbiAgZW50cnkuaW50ZXJuYWxDYWxsZXJzLnNvcnQoKTtcbiAgZW50cnkuc3RlcFVwTWV0aG9kcy5zb3J0KCk7XG4gIHJldHVybiBlbnRyeTtcbn1cblxuZnVuY3Rpb24gd2FsayhzdGFjazogTGF5ZXJbXSwgcHJlZml4OiBzdHJpbmcsIGluaGVyaXRlZDogQ2FuZGlkYXRlW10sIG91dDogUm91dGVUYWJsZUVudHJ5W10sIHNlZW46IFNldDxzdHJpbmc+KTogdm9pZCB7XG4gIGNvbnN0IGxvY2FsOiBDYW5kaWRhdGVbXSA9IFtdO1xuICBmb3IgKGNvbnN0IGxheWVyIG9mIHN0YWNrKSB7XG4gICAgaWYgKGxheWVyLnJvdXRlKSB7XG4gICAgICBjb25zdCBwYXRocyA9IEFycmF5LmlzQXJyYXkobGF5ZXIucm91dGUucGF0aCkgPyBsYXllci5yb3V0ZS5wYXRoIDogW2xheWVyLnJvdXRlLnBhdGhdO1xuICAgICAgY29uc3QgbWV0aG9kcyA9IE9iamVjdC5rZXlzKGxheWVyLnJvdXRlLm1ldGhvZHMpLm1hcCgobSkgPT4gKG0gPT09ICdfYWxsJyA/ICcqJyA6IG0udG9VcHBlckNhc2UoKSkpO1xuICAgICAgZm9yIChjb25zdCByb3V0ZVBhdGggb2YgcGF0aHMpIHtcbiAgICAgICAgY29uc3QgZnVsbCA9IGpvaW5QYXRoKHByZWZpeCwgU3RyaW5nKHJvdXRlUGF0aCkpO1xuICAgICAgICBjb25zdCBjaGFpbiA9IFsuLi5pbmhlcml0ZWQsIC4uLmxvY2FsXS5maWx0ZXIoKGMpID0+IGFwcGxpZXMoYywgZnVsbCkpLm1hcCgoYykgPT4gYy5sYXllci5oYW5kbGUpO1xuICAgICAgICBmb3IgKGNvbnN0IG1ldGhvZCBvZiBtZXRob2RzKSB7XG4gICAgICAgICAgY29uc3Qga2V5ID0gYCR7bWV0aG9kfSAke2Z1bGx9YDtcbiAgICAgICAgICAvLyBGaXJzdCByZWdpc3RyYXRpb24gd2lucywgYXMgaW4gRXhwcmVzczogYSBsYXRlciBkdXBsaWNhdGUgaXMgdW5yZWFjaGFibGUuXG4gICAgICAgICAgaWYgKHNlZW4uaGFzKGtleSkpIGNvbnRpbnVlO1xuICAgICAgICAgIHNlZW4uYWRkKGtleSk7XG4gICAgICAgICAgY29uc3Qgcm91dGVGbnMgPSBsYXllci5yb3V0ZS5zdGFja1xuICAgICAgICAgICAgLmZpbHRlcigobCkgPT4gbC5tZXRob2QgPT09IHVuZGVmaW5lZCB8fCBsLm1ldGhvZC50b1VwcGVyQ2FzZSgpID09PSBtZXRob2QgfHwgbWV0aG9kID09PSAnKicpXG4gICAgICAgICAgICAubWFwKChsKSA9PiBsLmhhbmRsZSk7XG4gICAgICAgICAgb3V0LnB1c2godG9FbnRyeShtZXRob2QsIGZ1bGwsIGNvbGxlY3RHYXRlcyhbLi4uY2hhaW4sIC4uLnJvdXRlRm5zXSkpKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoaXNSb3V0ZXIobGF5ZXIuaGFuZGxlKSkge1xuICAgICAgY29uc3QgbW91bnRQYXRoID0gam9pblBhdGgocHJlZml4LCBsYXllcltMQVlFUl9QQVRIXSA/PyAnLycpO1xuICAgICAgLy8gTWlkZGxld2FyZSB0aGF0IHJ1bnMgYmVmb3JlIHRoaXMgcm91dGVyIChhbmNlc3RvcnMgKyBlYXJsaWVyIHNpYmxpbmdzKVxuICAgICAgLy8gaXMgaW5oZXJpdGVkOyBhcHBsaWNhYmlsaXR5IGlzIHJlLWNoZWNrZWQgYWdhaW5zdCBlYWNoIGZ1bGwgcm91dGUgcGF0aC5cbiAgICAgIHdhbGsobGF5ZXIuaGFuZGxlLnN0YWNrLCBtb3VudFBhdGgsIFsuLi5pbmhlcml0ZWQsIC4uLmxvY2FsXSwgb3V0LCBzZWVuKTtcbiAgICB9IGVsc2Uge1xuICAgICAgbG9jYWwucHVzaCh7IGxheWVyLCBwcmVmaXggfSk7XG4gICAgfVxuICB9XG59XG5cbi8qKlxuICogQnVpbGQgdGhlIHJvdXRlIHRhYmxlIG9mIGFuIGFzc2VtYmxlZCBFeHByZXNzIGFwcCAob3Igcm91dGVyKTogb25lIGVudHJ5IHBlclxuICogcmVhY2hhYmxlIG1ldGhvZCArIHBhdGggd2l0aCBldmVyeSBnYXRlIHRoYXQgcnVucyBiZWZvcmUgaXRzIGhhbmRsZXIuXG4gKiBIRUFEIGlzIGZvbGRlZCBpbnRvIEdFVCwgYXMgRXhwcmVzcyBkb2VzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gYnVpbGRSb3V0ZVRhYmxlKGFwcDogdW5rbm93bik6IFJvdXRlVGFibGVFbnRyeVtdIHtcbiAgY29uc3Qgcm9vdCA9IChhcHAgYXMgeyByb3V0ZXI/OiBSb3V0ZXJMaWtlIH0pLnJvdXRlciA/PyAoYXBwIGFzIFJvdXRlckxpa2UpO1xuICBjb25zdCBvdXQ6IFJvdXRlVGFibGVFbnRyeVtdID0gW107XG4gIGlmICghcm9vdCB8fCAhQXJyYXkuaXNBcnJheShyb290LnN0YWNrKSkgcmV0dXJuIG91dDtcbiAgd2Fsayhyb290LnN0YWNrLCAnLycsIFtdLCBvdXQsIG5ldyBTZXQoKSk7XG4gIHJldHVybiBvdXQuc29ydCgoYSwgYikgPT4gKGEucGF0aCA9PT0gYi5wYXRoID8gYS5tZXRob2QubG9jYWxlQ29tcGFyZShiLm1ldGhvZCkgOiBhLnBhdGgubG9jYWxlQ29tcGFyZShiLnBhdGgpKSk7XG59XG5cbi8qKiBXaGV0aGVyIGEgbWV0aG9kIG11dGF0ZXMgc3RhdGUgKGV2ZXJ5dGhpbmcgZXhjZXB0IEdFVC9IRUFEL09QVElPTlMpLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzV3JpdGVNZXRob2QobWV0aG9kOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgcmV0dXJuICFbJ0dFVCcsICdIRUFEJywgJ09QVElPTlMnXS5pbmNsdWRlcyhtZXRob2QudG9VcHBlckNhc2UoKSk7XG59XG5cbi8qKiBTdW1tYXJ5IGNvdW50cyBmb3IgYSBzdGFydHVwIGxvZyBsaW5lLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHN1bW1hcml6ZVJvdXRlVGFibGUodGFibGU6IHJlYWRvbmx5IFJvdXRlVGFibGVFbnRyeVtdKTogeyByb3V0ZXM6IG51bWJlcjsgd3JpdGVzOiBudW1iZXI7IHVuZ2F0ZWQ6IG51bWJlcjsgdW5hdWRpdGVkOiBudW1iZXI7IGludGVybmFsOiBudW1iZXIgfSB7XG4gIGNvbnN0IGdhdGVkID0gKGU6IFJvdXRlVGFibGVFbnRyeSk6IGJvb2xlYW4gPT4gZS5wZXJtaXNzaW9ucy5sZW5ndGggPiAwIHx8IGUuc3lzdGVtQWRtaW4gfHwgZS5zZXJ2aWNlUHJpbmNpcGFsO1xuICBjb25zdCB3cml0ZXMgPSB0YWJsZS5maWx0ZXIoKGUpID0+IGlzV3JpdGVNZXRob2QoZS5tZXRob2QpKTtcbiAgcmV0dXJuIHtcbiAgICByb3V0ZXM6IHRhYmxlLmxlbmd0aCxcbiAgICB3cml0ZXM6IHdyaXRlcy5sZW5ndGgsXG4gICAgdW5nYXRlZDogdGFibGUuZmlsdGVyKChlKSA9PiAhZ2F0ZWQoZSkpLmxlbmd0aCxcbiAgICB1bmF1ZGl0ZWQ6IHdyaXRlcy5maWx0ZXIoKGUpID0+IGUuYXVkaXQubGVuZ3RoID09PSAwKS5sZW5ndGgsXG4gICAgaW50ZXJuYWw6IHRhYmxlLmZpbHRlcigoZSkgPT4gZS5pbnRlcm5hbENhbGxlcnMubGVuZ3RoID4gMCkubGVuZ3RoLFxuICB9O1xufVxuIl19
|
|
239
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUtdGFibGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbWlkZGxld2FyZS9yb3V0ZS10YWJsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwrQ0FBK0M7QUFDL0Msc0NBQXNDO0FBRXRDOzs7Ozs7Ozs7Ozs7Ozs7O0dBZ0JHO0FBRUgsT0FBTyxPQUFPLE1BQU0sU0FBUyxDQUFDO0FBb0M5QixzRUFBc0U7QUFDdEUsaUVBQWlFO0FBQ2pFLE1BQU0sS0FBSyxHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUMsOEJBQThCLENBQUMsQ0FBQztBQUN6RCxNQUFNLFVBQVUsR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDLDZCQUE2QixDQUFDLENBQUM7QUFDN0QsTUFBTSxrQkFBa0IsR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDLGlDQUFpQyxDQUFDLENBQUM7QUFJekU7Ozs7O0dBS0c7QUFDSCxNQUFNLFVBQVUsWUFBWSxDQUFtQixFQUFLLEVBQUUsR0FBRyxLQUFrQjtJQUN6RSxNQUFNLENBQUMsR0FBRyxFQUFnQixDQUFDO0lBQzNCLE1BQU0sQ0FBQyxjQUFjLENBQUMsQ0FBQyxFQUFFLEtBQUssRUFBRSxFQUFFLEtBQUssRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxDQUFDLEVBQUUsR0FBRyxLQUFLLENBQUMsRUFBRSxZQUFZLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7SUFDbkksT0FBTyxFQUFFLENBQUM7QUFDWixDQUFDO0FBRUQsaUZBQWlGO0FBQ2pGLE1BQU0sVUFBVSxhQUFhLENBQUMsRUFBVztJQUN2QyxJQUFJLE9BQU8sRUFBRSxLQUFLLFVBQVU7UUFBRSxPQUFPLEVBQUUsQ0FBQztJQUN4QyxPQUFRLEVBQWEsQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLENBQUM7QUFDckMsQ0FBQztBQUVEOzs7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Q0FBQztBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgMjAyNiBQaXBlbGluZSBCdWlsZGVyIENvbnRyaWJ1dG9yc1xuLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjBcblxuLyoqXG4gKiBJbnRyb3NwZWN0YWJsZSByb3V0ZSB0YWJsZS5cbiAqXG4gKiBBdXRob3JpemF0aW9uIGlzIHNwbGl0IGJldHdlZW4gcm91dGVyIG1vdW50cyAoYGFwcC51c2UoJy94JywgZ2F0ZSwgcm91dGVyKWApXG4gKiBhbmQgaW5kaXZpZHVhbCByb3V0ZXMsIHNvIGdyZXBwaW5nIHNvdXJjZSBjYW4ndCBwcm92ZSB0aGF0IGV2ZXJ5IHJvdXRlIGlzXG4gKiBnYXRlZC4gSW5zdGVhZCwgZXZlcnkgZ2F0ZSBtaWRkbGV3YXJlIGluIHRoaXMgcGFja2FnZSBjYXJyaWVzIE1FVEFEQVRBICh3aGF0IGl0XG4gKiByZXF1aXJlcyksIGFuZCB7QGxpbmsgYnVpbGRSb3V0ZVRhYmxlfSB3YWxrcyBhbiBhc3NlbWJsZWQgRXhwcmVzcyBhcHAgYW5kXG4gKiByZXNvbHZlcywgcGVyIG1ldGhvZCArIHBhdGgsIHRoZSBmdWxsIGNoYWluIG9mIGdhdGVzIEV4cHJlc3Mgd291bGQgcnVuIGJlZm9yZVxuICogdGhlIGhhbmRsZXI6IHBlcm1pc3Npb25zLCBzeXN0ZW0tYWRtaW4sIHNlcnZpY2UgcHJpbmNpcGFsLCBzdGVwLXVwLCBmZWF0dXJlLFxuICogdG9rZW4gc2NvcGUsIGFuZCB0aGUgYXVkaXQgYWN0aW9ucyB0aGUgcm91dGUgZGVjbGFyZXMgdmlhIHtAbGluayBhdWRpdGVkfS5cbiAqXG4gKiBFeHByZXNzIDUgKHJvdXRlckAyKSBkb2VzIG5vdCBrZWVwIGEgbW91bnQncyBwYXRoIHN0cmluZyBvbiBpdHMgbGF5ZXIsIHNvIHRoaXNcbiAqIG1vZHVsZSByZWNvcmRzIGl0OiBvbiBpbXBvcnQgaXQgd3JhcHMgYFJvdXRlci5wcm90b3R5cGUudXNlYCB0byBzdGFtcCBlYWNoIG5ld1xuICogbGF5ZXIgd2l0aCB0aGUgcGF0aCBpdCB3YXMgbW91bnRlZCBhdC4gYXBpLWNvcmUgaXMgaW1wb3J0ZWQgYmVmb3JlIGFueSByb3V0ZVxuICogbW9kdWxlIHJlZ2lzdGVycyBhIHJvdXRlLCBzbyBldmVyeSBsYXllciBhbiBhcHAgYnVpbGRzIGlzIHN0YW1wZWQuIFRoZSB3cmFwXG4gKiBvbmx5IGFkZHMgYSBzeW1ib2wgcHJvcGVydHk7IHJvdXRpbmcgYmVoYXZpb3VyIGlzIHVuY2hhbmdlZC5cbiAqL1xuXG5pbXBvcnQgZXhwcmVzcyBmcm9tICdleHByZXNzJztcbmltcG9ydCB0eXBlIHsgUGVybWlzc2lvbiB9IGZyb20gJy4uL3R5cGVzL3Blcm1pc3Npb25zLmpzJztcblxuLyoqXG4gKiBXaGF0IGEgTUFDSElORSBjcmVkZW50aWFsIChQQVQsIHNlcnZpY2UgYWNjb3VudCkgbWVldHMgb24gYSByb3V0ZSBnYXRlZCBieVxuICogYHJlcXVpcmVPcmdBZG1pbkFzc3VyYW5jZWAgd2hpbGUgdGhlIG9yZydzIGFkbWluLU1GQSBwb2xpY3kgaXMgb246XG4gKiAgIC0gYGFsbG93YCAg4oCUIHRoZSByb3V0ZSBpcyBsZWdpdGltYXRlbHkgbWFjaGluZS1jYWxsYWJsZSAoYXV0b21hdGlvbiB0aGF0XG4gKiAgICAgICAgICAgICAgICBtYW5hZ2VzIG1lbWJlcnMsIHJvbGVzLCBiaWxsaW5n4oCmKTsgdGhlIHBvbGljeSBpcyBhYm91dCBob3dcbiAqICAgICAgICAgICAgICAgIHN0cm9uZ2x5IGEgUEVSU09OJ3Mgc2Vzc2lvbiB3YXMgb3BlbmVkLCBzbyBpdCBkb2VzIG5vdCBhcHBseTtcbiAqICAgLSBgcmVmdXNlYCDigJQgb25seSBhIHBlcnNvbiBtYXkgZG8gdGhpcyB3aGlsZSB0aGUgcG9saWN5IGlzIG9uICg0MDNcbiAqICAgICAgICAgICAgICAgIGBIVU1BTl9TRVNTSU9OX1JFUVVJUkVEYCksIGUuZy4gbWludGluZyBhbm90aGVyIGNyZWRlbnRpYWwuXG4gKi9cbmV4cG9ydCB0eXBlIE9yZ0FkbWluQXNzdXJhbmNlTWFjaGluZXMgPSAnYWxsb3cnIHwgJ3JlZnVzZSc7XG5cbi8qKiBPbmUgcmVxdWlyZW1lbnQgYSBnYXRlIG1pZGRsZXdhcmUgZW5mb3JjZXMuICovXG5leHBvcnQgdHlwZSBSb3V0ZUdhdGUgPVxuICB8IHsga2luZDogJ2F1dGgnIH1cbiAgfCB7IGtpbmQ6ICdwZXJtaXNzaW9uJzsgbW9kZTogJ2FueScgfCAnYWxsJzsgcGVybWlzc2lvbnM6IHJlYWRvbmx5IFBlcm1pc3Npb25bXTsgYWxsb3dTZXJ2aWNlPzogYm9vbGVhbiB9XG4gIHwgeyBraW5kOiAnc3lzdGVtQWRtaW4nIH1cbiAgfCB7IGtpbmQ6ICdzZXJ2aWNlUHJpbmNpcGFsJyB9XG4gIC8qKiBBbiBJTlRFUk5BTCByb3V0ZTogdXNlciB0b2tlbnMgcmVmdXNlZCBvdXRyaWdodCwgb25seSB0aGVzZSBzZXJ2aWNlcyBhZG1pdHRlZC4gKi9cbiAgfCB7IGtpbmQ6ICdpbnRlcm5hbFNlcnZpY2UnOyBjYWxsZXJzOiByZWFkb25seSBzdHJpbmdbXSB9XG4gIHwgeyBraW5kOiAnc3RlcFVwJzsgbWV0aG9kcz86IHJlYWRvbmx5IHN0cmluZ1tdIH1cbiAgLyoqIFRoZSB3aG9sZSBTRVNTSU9OIG11c3QgYmUgTUZBLWdyYWRlIChgcmVxdWlyZUF1dGgoeyBtaW5Bc3N1cmFuY2UgfSlgKSwgYW5kXG4gICAqICBvcHRpb25hbGx5IG5vIG9sZGVyIHRoYW4gYG1heEFnZWAgc2Vjb25kcy4gYGV4ZW1wdGAgbmFtZXMgYSBjYXJ2ZS1vdXQgdGhlXG4gICAqICBnYXRlIGFwcGxpZXMgdG8gYSBuYXJyb3cgY2xhc3Mgb2YgcmVxdWVzdCAoc2VlIGBBc3N1cmFuY2VPcHRpb25zLmV4ZW1wdGApLFxuICAgKiAgc28gYSByb3V0ZSB3aG9zZSBsZXZlbCBpcyBjb25kaXRpb25hbCBzYXlzIHNvIG9uIHRoZSB0YWJsZS4gKi9cbiAgfCB7IGtpbmQ6ICdhc3N1cmFuY2UnOyBtaW5Bc3N1cmFuY2U6IDEgfCAyOyBtYXhBZ2U/OiBudW1iZXI7IGV4ZW1wdD86IHN0cmluZyB9XG4gIC8qKiBUaGUgc2Vzc2lvbiBtdXN0IGJlIE1GQS1ncmFkZSBXSEVOIHRoZSBvcmcncyBgYWRtaW5BY3Rpb25zUmVxdWlyZU1mYWBcbiAgICogIHBvbGljeSBpcyBvbiAoYHJlcXVpcmVPcmdBZG1pbkFzc3VyYW5jZWApLiBgbWFjaGluZXNgIHNheXMgd2hhdCBhIG1hY2hpbmVcbiAgICogIGNyZWRlbnRpYWwgbWVldHMgb24gdGhlIHJvdXRlIHdoaWxlIHRoZSBwb2xpY3kgaXMgb24uICovXG4gIHwgeyBraW5kOiAnb3JnQWRtaW5Bc3N1cmFuY2UnOyBtYWNoaW5lczogT3JnQWRtaW5Bc3N1cmFuY2VNYWNoaW5lcyB9XG4gIHwgeyBraW5kOiAnZmVhdHVyZSc7IGZlYXR1cmU6IHN0cmluZyB9XG4gIHwgeyBraW5kOiAnc2NvcGUnOyBzY29wZTogc3RyaW5nIH1cbiAgfCB7IGtpbmQ6ICdhdWRpdCc7IGFjdGlvbnM6IHJlYWRvbmx5IHN0cmluZ1tdIH07XG5cbi8vIFN5bWJvbC5mb3IsIG5vdCBTeW1ib2woKTogYSB0ZXN0IHRoYXQgbG9hZHMgYXBpLWNvcmUgdHdpY2UgKEVTTSArIGFcbi8vIHJlcXVpcmVBY3R1YWwgY29weSkgbXVzdCBzdGlsbCBzZWUgdGFncyBzZXQgYnkgdGhlIG90aGVyIGNvcHkuXG5jb25zdCBHQVRFUyA9IFN5bWJvbC5mb3IoJ3BpcGVsaW5lLWJ1aWxkZXIucm91dGUtZ2F0ZXMnKTtcbmNvbnN0IExBWUVSX1BBVEggPSBTeW1ib2wuZm9yKCdwaXBlbGluZS1idWlsZGVyLmxheWVyLXBhdGgnKTtcbmNvbnN0IFJFQ09SREVSX0lOU1RBTExFRCA9IFN5bWJvbC5mb3IoJ3BpcGVsaW5lLWJ1aWxkZXIucm91dGUtcmVjb3JkZXInKTtcblxudHlwZSBUYWdnZWQgPSB7IFtHQVRFU10/OiBSb3V0ZUdhdGVbXSB9O1xuXG4vKipcbiAqIEF0dGFjaCBnYXRlIG1ldGFkYXRhIHRvIGEgbWlkZGxld2FyZSBmdW5jdGlvbiAoYXBwZW5kcyB0byBhbnkgZXhpc3RpbmcgdGFncylcbiAqIGFuZCByZXR1cm4gdGhlIHNhbWUgZnVuY3Rpb24uIFVzZSBpdCBmb3IgYSBzZXJ2aWNlLWxvY2FsIGdhdGUgc28gdGhlIHJvdXRlXG4gKiB0YWJsZSBrbm93cyB3aGF0IGl0IGVuZm9yY2VzIOKAlCBlLmcuIGEgaGFuZGxlci1sZXZlbCBgcmVxdWlyZUNvbXBsaWFuY2VXcml0ZWBcbiAqIHRhZ2dlZCBgeyBraW5kOiAncGVybWlzc2lvbicsIG1vZGU6ICdhbnknLCBwZXJtaXNzaW9uczogWydjb21wbGlhbmNlOndyaXRlJ10gfWAuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB0YWdSb3V0ZUdhdGU8VCBleHRlbmRzIG9iamVjdD4oZm46IFQsIC4uLmdhdGVzOiBSb3V0ZUdhdGVbXSk6IFQge1xuICBjb25zdCB0ID0gZm4gYXMgVCAmIFRhZ2dlZDtcbiAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIEdBVEVTLCB7IHZhbHVlOiBbLi4uKHRbR0FURVNdID8/IFtdKSwgLi4uZ2F0ZXNdLCBjb25maWd1cmFibGU6IHRydWUsIGVudW1lcmFibGU6IGZhbHNlLCB3cml0YWJsZTogdHJ1ZSB9KTtcbiAgcmV0dXJuIGZuO1xufVxuXG4vKiogVGhlIGdhdGUgbWV0YWRhdGEgYXR0YWNoZWQgdG8gYSBtaWRkbGV3YXJlIGZ1bmN0aW9uIChlbXB0eSB3aGVuIHVudGFnZ2VkKS4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRSb3V0ZUdhdGVzKGZuOiB1bmtub3duKTogcmVhZG9ubHkgUm91dGVHYXRlW10ge1xuICBpZiAodHlwZW9mIGZuICE9PSAnZnVuY3Rpb24nKSByZXR1cm4gW107XG4gIHJldHVybiAoZm4gYXMgVGFnZ2VkKVtHQVRFU10gPz8gW107XG59XG5cbi8qKlxuICogRGVjbGFyZSB0aGUgYXVkaXQgYWN0aW9uKHMpIGEgcm91dGUgZW1pdHMuIEEgbm8tb3AgbWlkZGxld2FyZSB3aG9zZSBvbmx5IGpvYlxuICogaXMgdG8gcHV0IHRoZSBhY3Rpb24gb24gdGhlIHJvdXRlIHRhYmxlLCBzbyB0aGUgY292ZXJhZ2UgdGVzdCBjYW4gcmVxdWlyZSBhblxuICogYXVkaXQgZGVjbGFyYXRpb24gb24gZXZlcnkgd3JpdGUgcm91dGUuIFBsYWNlIGl0IGluIHRoZSByb3V0ZSdzIGNoYWluOlxuICogYHJvdXRlci5wb3N0KCcvJywgYXVkaXRlZCgncGlwZWxpbmUuY3JlYXRlJyksIGhhbmRsZXIpYC4gVGhlIGhhbmRsZXIgc3RpbGxcbiAqIGVtaXRzIHRoZSBldmVudCBpdHNlbGYuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBhdWRpdGVkKC4uLmFjdGlvbnM6IHN0cmluZ1tdKTogKHJlcTogdW5rbm93biwgcmVzOiB1bmtub3duLCBuZXh0OiAoKSA9PiB2b2lkKSA9PiB2b2lkIHtcbiAgcmV0dXJuIHRhZ1JvdXRlR2F0ZShmdW5jdGlvbiBhdWRpdGVkUm91dGUoX3JlcTogdW5rbm93biwgX3JlczogdW5rbm93biwgbmV4dDogKCkgPT4gdm9pZCkgeyBuZXh0KCk7IH0sIHsga2luZDogJ2F1ZGl0JywgYWN0aW9ucyB9KTtcbn1cblxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBNb3VudC1wYXRoIHJlY29yZGluZ1xuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbmludGVyZmFjZSBMYXllciB7XG4gIGhhbmRsZTogdW5rbm93bjtcbiAgcm91dGU/OiB7IHBhdGg6IHN0cmluZyB8IHN0cmluZ1tdOyBtZXRob2RzOiBSZWNvcmQ8c3RyaW5nLCBib29sZWFuPjsgc3RhY2s6IEFycmF5PHsgbWV0aG9kPzogc3RyaW5nOyBoYW5kbGU6IHVua25vd24gfT4gfTtcbiAgbWF0Y2hlcnM6IEFycmF5PChwYXRoOiBzdHJpbmcpID0+IHVua25vd24+O1xuICAvKiogcm91dGVyQDIncyBcIm1vdW50ZWQgYXQgJy8nIHdpdGggZW5kOmZhbHNlXCIgZmFzdCBwYXRoIOKAlCBtYXRjaGVzIEFOWSBwYXRoLiAqL1xuICBzbGFzaD86IGJvb2xlYW47XG4gIFtMQVlFUl9QQVRIXT86IHN0cmluZztcbn1cblxuaW50ZXJmYWNlIFJvdXRlckxpa2UgeyBzdGFjazogTGF5ZXJbXSB9XG5cbmZ1bmN0aW9uIGluc3RhbGxSb3V0ZVJlY29yZGVyKCk6IHZvaWQge1xuICBjb25zdCBwcm90byA9IChleHByZXNzLlJvdXRlciBhcyB1bmtub3duIGFzIHsgcHJvdG90eXBlOiBSZWNvcmQ8c3RyaW5nIHwgc3ltYm9sLCB1bmtub3duPiB9KS5wcm90b3R5cGU7XG4gIGlmIChwcm90b1tSRUNPUkRFUl9JTlNUQUxMRURdKSByZXR1cm47XG4gIGNvbnN0IG9yaWdpbmFsVXNlID0gcHJvdG8udXNlIGFzICh0aGlzOiBSb3V0ZXJMaWtlLCAuLi5hcmdzOiB1bmtub3duW10pID0+IHVua25vd247XG4gIHByb3RvLnVzZSA9IGZ1bmN0aW9uIHJlY29yZGluZ1VzZSh0aGlzOiBSb3V0ZXJMaWtlLCAuLi5hcmdzOiB1bmtub3duW10pOiB1bmtub3duIHtcbiAgICBjb25zdCBiZWZvcmUgPSB0aGlzLnN0YWNrLmxlbmd0aDtcbiAgICBjb25zdCByZXN1bHQgPSBvcmlnaW5hbFVzZS5hcHBseSh0aGlzLCBhcmdzKTtcbiAgICAvLyBTYW1lIHBhdGggZGlzYW1iaWd1YXRpb24gYXMgcm91dGVyQDIncyBgdXNlYDogYSBsZWFkaW5nIG5vbi1mdW5jdGlvblxuICAgIC8vIChwb3NzaWJseSBuZXN0ZWQgaW4gYXJyYXlzKSBpcyB0aGUgcGF0aDsgb3RoZXJ3aXNlIHRoZSBtb3VudCBpcyAnLycuXG4gICAgbGV0IGZpcnN0OiB1bmtub3duID0gYXJnc1swXTtcbiAgICB3aGlsZSAoQXJyYXkuaXNBcnJheShmaXJzdCkgJiYgZmlyc3QubGVuZ3RoID4gMCkgZmlyc3QgPSBmaXJzdFswXTtcbiAgICBjb25zdCBwYXRoID0gdHlwZW9mIGZpcnN0ID09PSAnZnVuY3Rpb24nID8gJy8nIDogU3RyaW5nKGFyZ3NbMF0pO1xuICAgIGZvciAobGV0IGkgPSBiZWZvcmU7IGkgPCB0aGlzLnN0YWNrLmxlbmd0aDsgaSsrKSB7XG4gICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodGhpcy5zdGFja1tpXSwgTEFZRVJfUEFUSCwgeyB2YWx1ZTogcGF0aCwgZW51bWVyYWJsZTogZmFsc2UsIGNvbmZpZ3VyYWJsZTogdHJ1ZSB9KTtcbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfTtcbiAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHByb3RvLCBSRUNPUkRFUl9JTlNUQUxMRUQsIHsgdmFsdWU6IHRydWUsIGVudW1lcmFibGU6IGZhbHNlIH0pO1xufVxuXG5pbnN0YWxsUm91dGVSZWNvcmRlcigpO1xuXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIFRhYmxlIGNvbnN0cnVjdGlvblxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbi8qKiBSZXNvbHZlZCByZXF1aXJlbWVudHMgZm9yIG9uZSBtZXRob2QgKyBwYXRoLiAqL1xuZXhwb3J0IGludGVyZmFjZSBSb3V0ZVRhYmxlRW50cnkge1xuICBtZXRob2Q6IHN0cmluZztcbiAgcGF0aDogc3RyaW5nO1xuICAvKiogQXV0aGVudGljYXRpb24gcnVucyBiZWZvcmUgdGhlIGhhbmRsZXIgKHJlcXVpcmVBdXRoKS4gKi9cbiAgYXV0aDogYm9vbGVhbjtcbiAgLyoqIEVhY2ggcGVybWlzc2lvbiBnYXRlIGluIHRoZSBjaGFpbiAoYWxsIG11c3QgcGFzczsgZWFjaCBpcyBhbnktb2Ygb3IgYWxsLW9mKS4gKi9cbiAgcGVybWlzc2lvbnM6IEFycmF5PHsgbW9kZTogJ2FueScgfCAnYWxsJzsgcGVybWlzc2lvbnM6IFBlcm1pc3Npb25bXTsgYWxsb3dTZXJ2aWNlOiBib29sZWFuIH0+O1xuICBzeXN0ZW1BZG1pbjogYm9vbGVhbjtcbiAgc2VydmljZVByaW5jaXBhbDogYm9vbGVhbjtcbiAgLyoqXG4gICAqIFRoZSBzZXJ2aWNlcyBhbGxvd2VkIHRvIGNhbGwgdGhpcyByb3V0ZSB3aGVuIGl0IGlzIElOVEVSTkFMIChgcmVxdWlyZUludGVybmFsU2VydmljZWApLlxuICAgKiBBbiBlbXB0eSBhcnJheSBtZWFucyB0aGUgcm91dGUgaXMgbm90IGludGVybmFsIOKAlCBhIHVzZXIgdG9rZW4gbWF5IHJlYWNoIGl0LFxuICAgKiBzdWJqZWN0IHRvIHRoZSBvdGhlciBnYXRlcy4gU29ydGVkLCBzbyB0aGUgZ2VuZXJhdGVkIHRhYmxlIGlzIHN0YWJsZS5cbiAgICovXG4gIGludGVybmFsQ2FsbGVyczogc3RyaW5nW107XG4gIHN0ZXBVcDogYm9vbGVhbjtcbiAgLyoqIFdoZW4gdGhlIHN0ZXAtdXAgZ2F0ZSBuYW1lcyB0aGUgZmFjdG9ycyB0aGF0IG1heSBlYXJuIGl0IChgWyd3ZWJhdXRobicsXG4gICAqICAndG90cCddYCBvbiB0aGUgbW9zdCBkYW5nZXJvdXMgcm91dGVzKSwgdGhlIGFsbG93ZWQgbWV0aG9kcy4gRW1wdHkgbWVhbnNcbiAgICogIGFueSBmYWN0b3Igc2F0aXNmaWVzIGl0LiBTb3J0ZWQsIHNvIHRoZSBnZW5lcmF0ZWQgdGFibGUgaXMgc3RhYmxlLiAqL1xuICBzdGVwVXBNZXRob2RzOiBzdHJpbmdbXTtcbiAgLyoqIEhpZ2hlc3QgYG1pbkFzc3VyYW5jZWAgYW55IGdhdGUgaW4gdGhlIGNoYWluIGRlbWFuZHM7IDAgd2hlbiBub25lIGRvZXMuICovXG4gIG1pbkFzc3VyYW5jZTogMCB8IDEgfCAyO1xuICAvKiogVGlnaHRlc3QgYG1heEFnZWAgKHNlY29uZHMpIGFueSBhc3N1cmFuY2UgZ2F0ZSBpbiB0aGUgY2hhaW4gZGVtYW5kcy4gKi9cbiAgbWF4QWdlPzogbnVtYmVyO1xuICAvKipcbiAgICogVGhlIG5hbWVkIGNhcnZlLW91dHMgdGhlIGNoYWluJ3MgYXNzdXJhbmNlIGdhdGVzIGFsbG93IChzb3J0ZWQpLiBBYnNlbnQgd2hlblxuICAgKiB0aGVyZSBhcmUgbm9uZSwgc28gYSB0YWJsZSBvZiByb3V0ZXMgd2l0aG91dCBvbmUgaXMgdW5jaGFuZ2VkLiBBIHJldmlld2VyXG4gICAqIHJlYWRpbmcgYG1pbkFzc3VyYW5jZTogMmAgbmV4dCB0byBgYXNzdXJhbmNlRXhlbXB0OiBbXCJib290c3RyYXAtc2V0dXBcIl1gXG4gICAqIGtub3dzIHRoZSBsZXZlbCBpcyByZXF1aXJlZCBvZiBldmVyeW9uZSBFWENFUFQgdGhhdCBuYW1lZCBjYXNlLlxuICAgKi9cbiAgYXNzdXJhbmNlRXhlbXB0Pzogc3RyaW5nW107XG4gIC8qKlxuICAgKiBQcmVzZW50IHdoZW4gdGhlIHJvdXRlIHJlcXVpcmVzIGFuIE1GQS1ncmFkZSBzZXNzaW9uIFdIRU4gdGhlIG9yZydzXG4gICAqIGBhZG1pbkFjdGlvbnNSZXF1aXJlTWZhYCBwb2xpY3kgaXMgb24gKGByZXF1aXJlT3JnQWRtaW5Bc3N1cmFuY2VgKSwgd2l0aFxuICAgKiB3aGF0IGEgbWFjaGluZSBjcmVkZW50aWFsIG1lZXRzIHRoZXJlLiBBYnNlbnQgKG5vdCBgZmFsc2VgKSBvdGhlcndpc2UsIHNvXG4gICAqIHRoZSB0YWJsZSBvZiBhIHNlcnZpY2UgdGhhdCB1c2VzIG5vIHN1Y2ggZ2F0ZSBpcyB1bmNoYW5nZWQuXG4gICAqL1xuICBvcmdBZG1pbkFzc3VyYW5jZT86IHsgbWFjaGluZXM6IE9yZ0FkbWluQXNzdXJhbmNlTWFjaGluZXMgfTtcbiAgZmVhdHVyZXM6IHN0cmluZ1tdO1xuICBzY29wZXM6IHN0cmluZ1tdO1xuICBhdWRpdDogc3RyaW5nW107XG59XG5cbmludGVyZmFjZSBDYW5kaWRhdGUgeyBsYXllcjogTGF5ZXI7IHByZWZpeDogc3RyaW5nIH1cblxuZnVuY3Rpb24gam9pblBhdGgocHJlZml4OiBzdHJpbmcsIHBhdGg6IHN0cmluZyk6IHN0cmluZyB7XG4gIGNvbnN0IGpvaW5lZCA9IGAke3ByZWZpeC5yZXBsYWNlKC9cXC8rJC8sICcnKX0vJHtwYXRoLnJlcGxhY2UoL15cXC8rLywgJycpfWA7XG4gIHJldHVybiBqb2luZWQubGVuZ3RoID4gMSA/IGpvaW5lZC5yZXBsYWNlKC9cXC8rJC8sICcnKSA6ICcvJztcbn1cblxuZnVuY3Rpb24gaXNSb3V0ZXIoaGFuZGxlOiB1bmtub3duKTogaGFuZGxlIGlzIFJvdXRlckxpa2Uge1xuICByZXR1cm4gdHlwZW9mIGhhbmRsZSA9PT0gJ2Z1bmN0aW9uJyAmJiBBcnJheS5pc0FycmF5KChoYW5kbGUgYXMgUGFydGlhbDxSb3V0ZXJMaWtlPikuc3RhY2spO1xufVxuXG4vKipcbiAqIFdoZXRoZXIgYSBtaWRkbGV3YXJlIGxheWVyIChtb3VudGVkIHVuZGVyIGBwcmVmaXhgKSBydW5zIGZvciBgZnVsbFBhdGhgLlxuICogTWlycm9ycyBgTGF5ZXIucHJvdG90eXBlLm1hdGNoYCwgaW5jbHVkaW5nIGl0cyBmYXN0IHBhdGg6IGEgbGF5ZXIgYWRkZWQgd2l0aFxuICogbm8gcGF0aCAoYHJvdXRlci51c2UoZ2F0ZSlgKSBtYXRjaGVzIEVWRVJZIHBhdGggdW5kZXIgaXRzIHJvdXRlciDigJQgd2hpY2ggaXNcbiAqIGV4YWN0bHkgaG93IHRoZSBzaGFyZWQgYHJlcXVpcmVQZXJtaXNzaW9uYCBnYXRlcyBiZXR3ZWVuIHR3byBgcm91dGVyLnVzZSguLi4pYFxuICogbW91bnRzIHJlYWNoIHRoZSByb3V0ZXJzIHJlZ2lzdGVyZWQgYWZ0ZXIgdGhlbS5cbiAqL1xuZnVuY3Rpb24gYXBwbGllcyhjOiBDYW5kaWRhdGUsIGZ1bGxQYXRoOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgY29uc3QgYmFzZSA9IGMucHJlZml4ID09PSAnLycgPyAnJyA6IGMucHJlZml4O1xuICBpZiAoYmFzZSAmJiBmdWxsUGF0aCAhPT0gYmFzZSAmJiAhZnVsbFBhdGguc3RhcnRzV2l0aChgJHtiYXNlfS9gKSkgcmV0dXJuIGZhbHNlO1xuICBpZiAoYy5sYXllci5zbGFzaCkgcmV0dXJuIHRydWU7XG4gIGNvbnN0IHJlbCA9IGZ1bGxQYXRoLnNsaWNlKGJhc2UubGVuZ3RoKSB8fCAnLyc7XG4gIHJldHVybiBjLmxheWVyLm1hdGNoZXJzLnNvbWUoKG0pID0+IG0ocmVsKSAhPT0gZmFsc2UpO1xufVxuXG5mdW5jdGlvbiBjb2xsZWN0R2F0ZXMoZm5zOiB1bmtub3duW10pOiBSb3V0ZUdhdGVbXSB7XG4gIHJldHVybiBmbnMuZmxhdE1hcCgoZm4pID0+IGdldFJvdXRlR2F0ZXMoZm4pKTtcbn1cblxuZnVuY3Rpb24gdG9FbnRyeShtZXRob2Q6IHN0cmluZywgcGF0aDogc3RyaW5nLCBnYXRlczogUm91dGVHYXRlW10pOiBSb3V0ZVRhYmxlRW50cnkge1xuICBjb25zdCBlbnRyeTogUm91dGVUYWJsZUVudHJ5ID0ge1xuICAgIG1ldGhvZCxcbiAgICBwYXRoLFxuICAgIGF1dGg6IGZhbHNlLFxuICAgIHBlcm1pc3Npb25zOiBbXSxcbiAgICBzeXN0ZW1BZG1pbjogZmFsc2UsXG4gICAgc2VydmljZVByaW5jaXBhbDogZmFsc2UsXG4gICAgaW50ZXJuYWxDYWxsZXJzOiBbXSxcbiAgICBzdGVwVXA6IGZhbHNlLFxuICAgIHN0ZXBVcE1ldGhvZHM6IFtdLFxuICAgIG1pbkFzc3VyYW5jZTogMCxcbiAgICBmZWF0dXJlczogW10sXG4gICAgc2NvcGVzOiBbXSxcbiAgICBhdWRpdDogW10sXG4gIH07XG4gIGZvciAoY29uc3QgZyBvZiBnYXRlcykge1xuICAgIHN3aXRjaCAoZy5raW5kKSB7XG4gICAgICBjYXNlICdhdXRoJzogZW50cnkuYXV0aCA9IHRydWU7IGJyZWFrO1xuICAgICAgY2FzZSAncGVybWlzc2lvbic6IGVudHJ5LnBlcm1pc3Npb25zLnB1c2goeyBtb2RlOiBnLm1vZGUsIHBlcm1pc3Npb25zOiBbLi4uZy5wZXJtaXNzaW9uc10sIGFsbG93U2VydmljZTogZy5hbGxvd1NlcnZpY2UgPT09IHRydWUgfSk7IGJyZWFrO1xuICAgICAgY2FzZSAnc3lzdGVtQWRtaW4nOiBlbnRyeS5zeXN0ZW1BZG1pbiA9IHRydWU7IGJyZWFrO1xuICAgICAgY2FzZSAnc2VydmljZVByaW5jaXBhbCc6IGVudHJ5LnNlcnZpY2VQcmluY2lwYWwgPSB0cnVlOyBicmVhaztcbiAgICAgIGNhc2UgJ2ludGVybmFsU2VydmljZSc6IGZvciAoY29uc3QgYyBvZiBnLmNhbGxlcnMpIGlmICghZW50cnkuaW50ZXJuYWxDYWxsZXJzLmluY2x1ZGVzKGMpKSBlbnRyeS5pbnRlcm5hbENhbGxlcnMucHVzaChjKTsgYnJlYWs7XG4gICAgICBjYXNlICdzdGVwVXAnOlxuICAgICAgICBlbnRyeS5zdGVwVXAgPSB0cnVlO1xuICAgICAgICBmb3IgKGNvbnN0IG0gb2YgZy5tZXRob2RzID8/IFtdKSBpZiAoIWVudHJ5LnN0ZXBVcE1ldGhvZHMuaW5jbHVkZXMobSkpIGVudHJ5LnN0ZXBVcE1ldGhvZHMucHVzaChtKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdhc3N1cmFuY2UnOlxuICAgICAgICAvLyBTZXZlcmFsIGdhdGVzIG1heSBhcHBseTsgdGhlIFNUUklDVEVTVCB3aW5zLCBzaW5jZSBldmVyeSBvbmUgb2YgdGhlbSBydW5zLlxuICAgICAgICBpZiAoZy5taW5Bc3N1cmFuY2UgPiBlbnRyeS5taW5Bc3N1cmFuY2UpIGVudHJ5Lm1pbkFzc3VyYW5jZSA9IGcubWluQXNzdXJhbmNlO1xuICAgICAgICBpZiAoZy5tYXhBZ2UgIT09IHVuZGVmaW5lZCkgZW50cnkubWF4QWdlID0gZW50cnkubWF4QWdlID09PSB1bmRlZmluZWQgPyBnLm1heEFnZSA6IE1hdGgubWluKGVudHJ5Lm1heEFnZSwgZy5tYXhBZ2UpO1xuICAgICAgICBpZiAoZy5leGVtcHQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIGVudHJ5LmFzc3VyYW5jZUV4ZW1wdCA9IFsuLi5uZXcgU2V0KFsuLi4oZW50cnkuYXNzdXJhbmNlRXhlbXB0ID8/IFtdKSwgZy5leGVtcHRdKV0uc29ydCgpO1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnb3JnQWRtaW5Bc3N1cmFuY2UnOlxuICAgICAgICAvLyBTdHJpY3Rlc3Qgd2luczogb25lIGByZWZ1c2VgIGluIHRoZSBjaGFpbiByZWZ1c2VzIG1hY2hpbmVzLlxuICAgICAgICBlbnRyeS5vcmdBZG1pbkFzc3VyYW5jZSA9IHtcbiAgICAgICAgICBtYWNoaW5lczogZW50cnkub3JnQWRtaW5Bc3N1cmFuY2U/Lm1hY2hpbmVzID09PSAncmVmdXNlJyB8fCBnLm1hY2hpbmVzID09PSAncmVmdXNlJyA/ICdyZWZ1c2UnIDogJ2FsbG93JyxcbiAgICAgICAgfTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdmZWF0dXJlJzogaWYgKCFlbnRyeS5mZWF0dXJlcy5pbmNsdWRlcyhnLmZlYXR1cmUpKSBlbnRyeS5mZWF0dXJlcy5wdXNoKGcuZmVhdHVyZSk7IGJyZWFrO1xuICAgICAgY2FzZSAnc2NvcGUnOiBpZiAoIWVudHJ5LnNjb3Blcy5pbmNsdWRlcyhnLnNjb3BlKSkgZW50cnkuc2NvcGVzLnB1c2goZy5zY29wZSk7IGJyZWFrO1xuICAgICAgY2FzZSAnYXVkaXQnOiBmb3IgKGNvbnN0IGEgb2YgZy5hY3Rpb25zKSBpZiAoIWVudHJ5LmF1ZGl0LmluY2x1ZGVzKGEpKSBlbnRyeS5hdWRpdC5wdXNoKGEpOyBicmVhaztcbiAgICB9XG4gIH1cbiAgZW50cnkuaW50ZXJuYWxDYWxsZXJzLnNvcnQoKTtcbiAgZW50cnkuc3RlcFVwTWV0aG9kcy5zb3J0KCk7XG4gIHJldHVybiBlbnRyeTtcbn1cblxuZnVuY3Rpb24gd2FsayhzdGFjazogTGF5ZXJbXSwgcHJlZml4OiBzdHJpbmcsIGluaGVyaXRlZDogQ2FuZGlkYXRlW10sIG91dDogUm91dGVUYWJsZUVudHJ5W10sIHNlZW46IFNldDxzdHJpbmc+KTogdm9pZCB7XG4gIGNvbnN0IGxvY2FsOiBDYW5kaWRhdGVbXSA9IFtdO1xuICBmb3IgKGNvbnN0IGxheWVyIG9mIHN0YWNrKSB7XG4gICAgaWYgKGxheWVyLnJvdXRlKSB7XG4gICAgICBjb25zdCBwYXRocyA9IEFycmF5LmlzQXJyYXkobGF5ZXIucm91dGUucGF0aCkgPyBsYXllci5yb3V0ZS5wYXRoIDogW2xheWVyLnJvdXRlLnBhdGhdO1xuICAgICAgY29uc3QgbWV0aG9kcyA9IE9iamVjdC5rZXlzKGxheWVyLnJvdXRlLm1ldGhvZHMpLm1hcCgobSkgPT4gKG0gPT09ICdfYWxsJyA/ICcqJyA6IG0udG9VcHBlckNhc2UoKSkpO1xuICAgICAgZm9yIChjb25zdCByb3V0ZVBhdGggb2YgcGF0aHMpIHtcbiAgICAgICAgY29uc3QgZnVsbCA9IGpvaW5QYXRoKHByZWZpeCwgU3RyaW5nKHJvdXRlUGF0aCkpO1xuICAgICAgICBjb25zdCBjaGFpbiA9IFsuLi5pbmhlcml0ZWQsIC4uLmxvY2FsXS5maWx0ZXIoKGMpID0+IGFwcGxpZXMoYywgZnVsbCkpLm1hcCgoYykgPT4gYy5sYXllci5oYW5kbGUpO1xuICAgICAgICBmb3IgKGNvbnN0IG1ldGhvZCBvZiBtZXRob2RzKSB7XG4gICAgICAgICAgY29uc3Qga2V5ID0gYCR7bWV0aG9kfSAke2Z1bGx9YDtcbiAgICAgICAgICAvLyBGaXJzdCByZWdpc3RyYXRpb24gd2lucywgYXMgaW4gRXhwcmVzczogYSBsYXRlciBkdXBsaWNhdGUgaXMgdW5yZWFjaGFibGUuXG4gICAgICAgICAgaWYgKHNlZW4uaGFzKGtleSkpIGNvbnRpbnVlO1xuICAgICAgICAgIHNlZW4uYWRkKGtleSk7XG4gICAgICAgICAgY29uc3Qgcm91dGVGbnMgPSBsYXllci5yb3V0ZS5zdGFja1xuICAgICAgICAgICAgLmZpbHRlcigobCkgPT4gbC5tZXRob2QgPT09IHVuZGVmaW5lZCB8fCBsLm1ldGhvZC50b1VwcGVyQ2FzZSgpID09PSBtZXRob2QgfHwgbWV0aG9kID09PSAnKicpXG4gICAgICAgICAgICAubWFwKChsKSA9PiBsLmhhbmRsZSk7XG4gICAgICAgICAgb3V0LnB1c2godG9FbnRyeShtZXRob2QsIGZ1bGwsIGNvbGxlY3RHYXRlcyhbLi4uY2hhaW4sIC4uLnJvdXRlRm5zXSkpKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoaXNSb3V0ZXIobGF5ZXIuaGFuZGxlKSkge1xuICAgICAgY29uc3QgbW91bnRQYXRoID0gam9pblBhdGgocHJlZml4LCBsYXllcltMQVlFUl9QQVRIXSA/PyAnLycpO1xuICAgICAgLy8gTWlkZGxld2FyZSB0aGF0IHJ1bnMgYmVmb3JlIHRoaXMgcm91dGVyIChhbmNlc3RvcnMgKyBlYXJsaWVyIHNpYmxpbmdzKVxuICAgICAgLy8gaXMgaW5oZXJpdGVkOyBhcHBsaWNhYmlsaXR5IGlzIHJlLWNoZWNrZWQgYWdhaW5zdCBlYWNoIGZ1bGwgcm91dGUgcGF0aC5cbiAgICAgIHdhbGsobGF5ZXIuaGFuZGxlLnN0YWNrLCBtb3VudFBhdGgsIFsuLi5pbmhlcml0ZWQsIC4uLmxvY2FsXSwgb3V0LCBzZWVuKTtcbiAgICB9IGVsc2Uge1xuICAgICAgbG9jYWwucHVzaCh7IGxheWVyLCBwcmVmaXggfSk7XG4gICAgfVxuICB9XG59XG5cbi8qKlxuICogQnVpbGQgdGhlIHJvdXRlIHRhYmxlIG9mIGFuIGFzc2VtYmxlZCBFeHByZXNzIGFwcCAob3Igcm91dGVyKTogb25lIGVudHJ5IHBlclxuICogcmVhY2hhYmxlIG1ldGhvZCArIHBhdGggd2l0aCBldmVyeSBnYXRlIHRoYXQgcnVucyBiZWZvcmUgaXRzIGhhbmRsZXIuXG4gKiBIRUFEIGlzIGZvbGRlZCBpbnRvIEdFVCwgYXMgRXhwcmVzcyBkb2VzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gYnVpbGRSb3V0ZVRhYmxlKGFwcDogdW5rbm93bik6IFJvdXRlVGFibGVFbnRyeVtdIHtcbiAgY29uc3Qgcm9vdCA9IChhcHAgYXMgeyByb3V0ZXI/OiBSb3V0ZXJMaWtlIH0pLnJvdXRlciA/PyAoYXBwIGFzIFJvdXRlckxpa2UpO1xuICBjb25zdCBvdXQ6IFJvdXRlVGFibGVFbnRyeVtdID0gW107XG4gIGlmICghcm9vdCB8fCAhQXJyYXkuaXNBcnJheShyb290LnN0YWNrKSkgcmV0dXJuIG91dDtcbiAgd2Fsayhyb290LnN0YWNrLCAnLycsIFtdLCBvdXQsIG5ldyBTZXQoKSk7XG4gIHJldHVybiBvdXQuc29ydCgoYSwgYikgPT4gKGEucGF0aCA9PT0gYi5wYXRoID8gYS5tZXRob2QubG9jYWxlQ29tcGFyZShiLm1ldGhvZCkgOiBhLnBhdGgubG9jYWxlQ29tcGFyZShiLnBhdGgpKSk7XG59XG5cbi8qKiBXaGV0aGVyIGEgbWV0aG9kIG11dGF0ZXMgc3RhdGUgKGV2ZXJ5dGhpbmcgZXhjZXB0IEdFVC9IRUFEL09QVElPTlMpLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzV3JpdGVNZXRob2QobWV0aG9kOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgcmV0dXJuICFbJ0dFVCcsICdIRUFEJywgJ09QVElPTlMnXS5pbmNsdWRlcyhtZXRob2QudG9VcHBlckNhc2UoKSk7XG59XG5cbi8qKiBTdW1tYXJ5IGNvdW50cyBmb3IgYSBzdGFydHVwIGxvZyBsaW5lLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHN1bW1hcml6ZVJvdXRlVGFibGUodGFibGU6IHJlYWRvbmx5IFJvdXRlVGFibGVFbnRyeVtdKTogeyByb3V0ZXM6IG51bWJlcjsgd3JpdGVzOiBudW1iZXI7IHVuZ2F0ZWQ6IG51bWJlcjsgdW5hdWRpdGVkOiBudW1iZXI7IGludGVybmFsOiBudW1iZXIgfSB7XG4gIGNvbnN0IGdhdGVkID0gKGU6IFJvdXRlVGFibGVFbnRyeSk6IGJvb2xlYW4gPT4gZS5wZXJtaXNzaW9ucy5sZW5ndGggPiAwIHx8IGUuc3lzdGVtQWRtaW4gfHwgZS5zZXJ2aWNlUHJpbmNpcGFsO1xuICBjb25zdCB3cml0ZXMgPSB0YWJsZS5maWx0ZXIoKGUpID0+IGlzV3JpdGVNZXRob2QoZS5tZXRob2QpKTtcbiAgcmV0dXJuIHtcbiAgICByb3V0ZXM6IHRhYmxlLmxlbmd0aCxcbiAgICB3cml0ZXM6IHdyaXRlcy5sZW5ndGgsXG4gICAgdW5nYXRlZDogdGFibGUuZmlsdGVyKChlKSA9PiAhZ2F0ZWQoZSkpLmxlbmd0aCxcbiAgICB1bmF1ZGl0ZWQ6IHdyaXRlcy5maWx0ZXIoKGUpID0+IGUuYXVkaXQubGVuZ3RoID09PSAwKS5sZW5ndGgsXG4gICAgaW50ZXJuYWw6IHRhYmxlLmZpbHRlcigoZSkgPT4gZS5pbnRlcm5hbENhbGxlcnMubGVuZ3RoID4gMCkubGVuZ3RoLFxuICB9O1xufVxuIl19
|
|
@@ -17,10 +17,45 @@ export function registerPluginRoutes() {
|
|
|
17
17
|
method: 'get',
|
|
18
18
|
path: '/plugins/find',
|
|
19
19
|
summary: 'Find a single plugin',
|
|
20
|
-
description: 'Find a single plugin matching the query filters.'
|
|
20
|
+
description: 'Find a single plugin matching the query filters. For a plugin that runs on its own image, '
|
|
21
|
+
+ 'the image\'s cosign signature is verified first; `imageDigest` in the response is the verified digest '
|
|
22
|
+
+ 'pipelines pin CodeBuild to.',
|
|
21
23
|
tags,
|
|
22
24
|
security: auth,
|
|
23
|
-
responses: {
|
|
25
|
+
responses: {
|
|
26
|
+
200: { description: 'Plugin found' },
|
|
27
|
+
404: { description: 'Not found' },
|
|
28
|
+
409: { description: 'IMAGE_VERIFICATION_FAILED — the plugin image has no signed digest, or its signature did not verify' },
|
|
29
|
+
},
|
|
30
|
+
});
|
|
31
|
+
registry.registerPath({
|
|
32
|
+
method: 'post',
|
|
33
|
+
path: '/plugins/lookup',
|
|
34
|
+
summary: 'Resolve a single plugin (synth)',
|
|
35
|
+
description: 'Same as `GET /plugins/find` with the filter in the body — the endpoint pipeline synth resolves '
|
|
36
|
+
+ 'plugins through. Verifies the plugin image signature before returning it.',
|
|
37
|
+
tags,
|
|
38
|
+
security: auth,
|
|
39
|
+
responses: {
|
|
40
|
+
200: { description: 'Plugin found' },
|
|
41
|
+
400: { description: 'Missing or invalid filter' },
|
|
42
|
+
404: { description: 'Not found' },
|
|
43
|
+
409: { description: 'IMAGE_VERIFICATION_FAILED — the plugin image has no signed digest, or its signature did not verify' },
|
|
44
|
+
},
|
|
45
|
+
});
|
|
46
|
+
registry.registerPath({
|
|
47
|
+
method: 'get',
|
|
48
|
+
path: '/plugins/{id}/sbom',
|
|
49
|
+
summary: 'Download a plugin image SBOM',
|
|
50
|
+
description: 'The SPDX JSON SBOM of the plugin image, read from its signed in-toto attestation — so the '
|
|
51
|
+
+ 'document returned is exactly what the platform generated and signed at build time.',
|
|
52
|
+
tags,
|
|
53
|
+
security: auth,
|
|
54
|
+
responses: {
|
|
55
|
+
200: { description: 'SPDX JSON document (application/spdx+json, served as an attachment)' },
|
|
56
|
+
404: { description: 'Plugin not found, or the plugin has no image' },
|
|
57
|
+
409: { description: 'IMAGE_VERIFICATION_FAILED — no SBOM attestation verified against the plugin-signing key' },
|
|
58
|
+
},
|
|
24
59
|
});
|
|
25
60
|
registry.registerPath({
|
|
26
61
|
method: 'get',
|
|
@@ -93,4 +128,4 @@ export function registerPluginRoutes() {
|
|
|
93
128
|
responses: { 202: { description: 'Plugin build queued' }, 400: { description: 'Validation error' }, 403: { description: 'Admin required' }, 429: { description: 'Quota exceeded' } },
|
|
94
129
|
});
|
|
95
130
|
}
|
|
96
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGx1Z2luLXJvdXRlcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9vcGVuYXBpL3JvdXRlcy9wbHVnaW4tcm91dGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLCtDQUErQztBQUMvQyxzQ0FBc0M7QUFFdEMsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRTFDLE1BQU0sSUFBSSxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUM7QUFDekIsTUFBTSxJQUFJLEdBQUcsQ0FBQyxFQUFFLFVBQVUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0FBRWxDLE1BQU0sVUFBVSxvQkFBb0I7SUFDbEMsUUFBUSxDQUFDLFlBQVksQ0FBQztRQUNwQixNQUFNLEVBQUUsS0FBSztRQUNiLElBQUksRUFBRSxVQUFVO1FBQ2hCLE9BQU8sRUFBRSxjQUFjO1FBQ3ZCLFdBQVcsRUFBRSx1REFBdUQ7UUFDcEUsSUFBSTtRQUNKLFFBQVEsRUFBRSxJQUFJO1FBQ2QsU0FBUyxFQUFFLEVBQUUsR0FBRyxFQUFFLEVBQUUsV0FBVyxFQUFFLDJCQUEyQixFQUFFLEVBQUUsR0FBRyxFQUFFLEVBQUUsV0FBVyxFQUFFLGNBQWMsRUFBRSxFQUFFO0tBQ3ZHLENBQUMsQ0FBQztJQUVILFFBQVEsQ0FBQyxZQUFZLENBQUM7UUFDcEIsTUFBTSxFQUFFLEtBQUs7UUFDYixJQUFJLEVBQUUsZUFBZTtRQUNyQixPQUFPLEVBQUUsc0JBQXNCO1FBQy9CLFdBQVcsRUFBRSxrREFBa0Q7UUFDL0QsSUFBSTtRQUNKLFFBQVEsRUFBRSxJQUFJO1FBQ2QsU0FBUyxFQUFFLEVBQUUsR0FBRyxFQUFFLEVBQUUsV0FBVyxFQUFFLGNBQWMsRUFBRSxFQUFFLEdBQUcsRUFBRSxFQUFFLFdBQVcsRUFBRSxXQUFXLEVBQUUsRUFBRTtLQUN2RixDQUFDLENBQUM7SUFFSCxRQUFRLENBQUMsWUFBWSxDQUFDO1FBQ3BCLE1BQU0sRUFBRSxLQUFLO1FBQ2Is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LEVBQUUsMkJBQTJCO1FBQ2pDLE9BQU8sRUFBRSw0QkFBNEI7UUFDckMsV0FBVyxFQUFFLDhGQUE4RjtRQUMzRyxJQUFJO1FBQ0osUUFBUSxFQUFFLElBQUk7UUFDZCxTQUFTLEVBQUUsRUFBRSxHQUFHLEVBQUUsRUFBRSxXQUFXLEVBQUUscUJBQXFCLEVBQUUsRUFBRSxHQUFHLEVBQUUsRUFBRSxXQUFXLEVBQUUsa0JBQWtCLEVBQUUsRUFBRSxHQUFHLEVBQUUsRUFBRSxXQUFXLEVBQUUsZ0JBQWdCLEVBQUUsRUFBRSxHQUFHLEVBQUUsRUFBRSxXQUFXLEVBQUUsZ0JBQWdCLEVBQUUsRUFBRTtLQUNyTCxDQUFDLENBQUM7QUFDTCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IDIwMjYgUGlwZWxpbmUgQnVpbGRlciBDb250cmlidXRvcnNcbi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wXG5cbmltcG9ydCB7IHJlZ2lzdHJ5IH0gZnJvbSAnLi4vcmVnaXN0cnkuanMnO1xuXG5jb25zdCB0YWdzID0gWydQbHVnaW5zJ107XG5jb25zdCBhdXRoID0gW3sgYmVhcmVyQXV0aDogW10gfV07XG5cbmV4cG9ydCBmdW5jdGlvbiByZWdpc3RlclBsdWdpblJvdXRlcygpOiB2b2lkIHtcbiAgcmVnaXN0cnkucmVnaXN0ZXJQYXRoKHtcbiAgICBtZXRob2Q6ICdnZXQnLFxuICAgIHBhdGg6ICcvcGx1Z2lucycsXG4gICAgc3VtbWFyeTogJ0xpc3QgcGx1Z2lucycsXG4gICAgZGVzY3JpcHRpb246ICdMaXN0IHBsdWdpbnMgd2l0aCBwYWdpbmF0aW9uLCBmaWx0ZXJpbmcsIGFuZCBzb3J0aW5nLicsXG4gICAgdGFncyxcbiAgICBzZWN1cml0eTogYXV0aCxcbiAgICByZXNwb25zZXM6IHsgMjAwOiB7IGRlc2NyaXB0aW9uOiAnUGFnaW5hdGVkIGxpc3Qgb2YgcGx1Z2lucycgfSwgNDAxOiB7IGRlc2NyaXB0aW9uOiAnVW5hdXRob3JpemVkJyB9IH0sXG4gIH0pO1xuXG4gIHJlZ2lzdHJ5LnJlZ2lzdGVyUGF0aCh7XG4gICAgbWV0aG9kOiAnZ2V0JyxcbiAgICBwYXRoOiAnL3BsdWdpbnMvZmluZCcsXG4gICAgc3VtbWFyeTogJ0ZpbmQgYSBzaW5nbGUgcGx1Z2luJyxcbiAgICBkZXNjcmlwdGlvbjogJ0ZpbmQgYSBzaW5nbGUgcGx1Z2luIG1hdGNoaW5nIHRoZSBxdWVyeSBmaWx0ZXJzLicsXG4gICAgdGFncyxcbiAgICBzZWN1cml0eTogYXV0aCxcbiAgICByZXNwb25zZXM6IHsgMjAwOiB7IGRlc2NyaXB0aW9uOiAnUGx1Z2luIGZvdW5kJyB9LCA0MDQ6IHsgZGVzY3JpcHRpb246ICdOb3QgZm91bmQnIH0gfSxcbiAgfSk7XG5cbiAgcmVnaXN0cnkucmVnaXN0ZXJQYXRoKHtcbiAgICBtZXRob2Q6ICdnZXQnLFxuICAgIHBhdGg6ICcvcGx1Z2lucy97aWR9JyxcbiAgICBzdW1tYXJ5OiAnR2V0IHBsdWdpbiBieSBJRCcsXG4gICAgdGFncyxcbiAgICBzZWN1cml0eTogYXV0aCxcbiAgICByZXNwb25zZXM6IHsgMjAwOiB7IGRlc2NyaXB0aW9uOiAnUGx1Z2luIGRldGFpbHMnIH0sIDQwNDogeyBkZXNjcmlwdGlvbjogJ05vdCBmb3VuZCcgfSB9LFxuICB9KTtcblxuICByZWdpc3RyeS5yZWdpc3RlclBhdGgoe1xuICAgIG1ldGhvZDogJ3Bvc3QnLFxuICAgIHBhdGg6ICcvcGx1Z2lucycsXG4gICAgc3VtbWFyeTogJ1VwbG9hZCBhIHBsdWdpbicsXG4gICAgZGVzY3JpcHRpb246ICdVcGxvYWQgYSBwbHVnaW4gWklQIGZpbGUgd2l0aCBzcGVjLiBCdWlsZHMgRG9ja2VyIGltYWdlIGFuZCBzYXZlcyB0byBkYXRhYmFzZS4nLFxuICAgIHRhZ3MsXG4gICAgc2VjdXJpdHk6IGF1dGgsXG4gICAgcmVzcG9uc2VzOiB7IDIwMjogeyBkZXNjcmlwdGlvbjogJ1BsdWdpbiBidWlsZCBxdWV1ZWQnIH0sIDQwMDogeyBkZXNjcmlwdGlvbjogJ1ZhbGlkYXRpb24gZXJyb3InIH0sIDQyOTogeyBkZXNjcmlwdGlvbjogJ1F1b3RhIGV4Y2VlZGVkJyB9IH0sXG4gIH0pO1xuXG4gIHJlZ2lzdHJ5LnJlZ2lzdGVyUGF0aCh7XG4gICAgbWV0aG9kOiAncHV0JyxcbiAgICBwYXRoOiAnL3BsdWdpbnMve2lkfScsXG4gICAgc3VtbWFyeTogJ1VwZGF0ZSBhIHBsdWdpbicsXG4gICAgdGFncyxcbiAgICBzZWN1cml0eTogYXV0aCxcbiAgICByZXNwb25zZXM6IHsgMjAwOiB7IGRlc2NyaXB0aW9uOiAnUGx1Z2luIHVwZGF0ZWQnIH0sIDQwNDogeyBkZXNjcmlwdGlvbjogJ05vdCBmb3VuZCcgfSB9LFxuICB9KTtcblxuICByZWdpc3RyeS5yZWdpc3RlclBhdGgoe1xuICAgIG1ldGhvZDogJ2RlbGV0ZScsXG4gICAgcGF0aDogJy9wbHVnaW5zL3tpZH0nLFxuICAgIHN1bW1hcnk6ICdEZWxldGUgYSBwbHVnaW4nLFxuICAgIGRlc2NyaXB0aW9uOiAnU29mdC1kZWxldGUgYSBwbHVnaW4gYnkgc2V0dGluZyBpc0FjdGl2ZSB0byBmYWxzZS4nLFxuICAgIHRhZ3MsXG4gICAgc2VjdXJpdHk6IGF1dGgsXG4gICAgcmVzcG9uc2VzOiB7IDIwMDogeyBkZXNjcmlwdGlvbjogJ1BsdWdpbiBkZWxldGVkJyB9LCA0MDQ6IHsgZGVzY3JpcHRpb246ICdOb3QgZm91bmQnIH0gfSxcbiAgfSk7XG5cbiAgcmVnaXN0cnkucmVnaXN0ZXJQYXRoKHtcbiAgICBtZXRob2Q6ICdnZXQnLFxuICAgIHBhdGg6ICcvcGx1Z2lucy9wcm92aWRlcnMnLFxuICAgIHN1bW1hcnk6ICdMaXN0IEFJIHByb3ZpZGVycycsXG4gICAgZGVzY3JpcHRpb246ICdMaXN0IEFJIHByb3ZpZGVycyBjb25maWd1cmVkIGZvciBwbHVnaW4gZ2VuZXJhdGlvbi4nLFxuICAgIHRhZ3MsXG4gICAgc2VjdXJpdHk6IGF1dGgsXG4gICAgcmVzcG9uc2VzOiB7IDIwMDogeyBkZXNjcmlwdGlvbjogJ0xpc3Qgb2YgYXZhaWxhYmxlIEFJIHByb3ZpZGVycyB3aXRoIG1vZGVscycgfSB9LFxuICB9KTtcblxuICByZWdpc3RyeS5yZWdpc3RlclBhdGgoe1xuICAgIG1ldGhvZDogJ3Bvc3QnLFxuICAgIHBhdGg6ICcvcGx1Z2lucy9nZW5lcmF0ZScsXG4gICAgc3VtbWFyeTogJ0dlbmVyYXRlIHBsdWdpbiB2aWEgQUknLFxuICAgIGRlc2NyaXB0aW9uOiAnR2VuZXJhdGUgYSBwbHVnaW4gY29uZmlndXJhdGlvbiBhbmQgRG9ja2VyZmlsZSBmcm9tIGEgbmF0dXJhbCBsYW5ndWFnZSBwcm9tcHQuJyxcbiAgICB0YWdzLFxuICAgIHNlY3VyaXR5OiBhdXRoLFxuICAgIHJlc3BvbnNlczogeyAyMDA6IHsgZGVzY3JpcHRpb246ICdHZW5lcmF0ZWQgcGx1Z2luIGNvbmZpZ3VyYXRpb24gYW5kIERvY2tlcmZpbGUnIH0sIDQwMDogeyBkZXNjcmlwdGlvbjogJ1ZhbGlkYXRpb24gZXJyb3InIH0gfSxcbiAgfSk7XG5cbiAgcmVnaXN0cnkucmVnaXN0ZXJQYXRoKHtcbiAgICBtZXRob2Q6ICdwb3N0JyxcbiAgICBwYXRoOiAnL3BsdWdpbnMvZ2VuZXJhdGUvc3RyZWFtJyxcbiAgICBzdW1tYXJ5OiAnU3RyZWFtIHBsdWdpbiBnZW5lcmF0aW9uIHZpYSBBSScsXG4gICAgZGVzY3JpcHRpb246ICdHZW5lcmF0ZSBwbHVnaW4gY29uZmlndXJhdGlvbiBmcm9tIGEgbmF0dXJhbCBsYW5ndWFnZSBwcm9tcHQuIFN0cmVhbXMgcGFydGlhbCByZXN1bHRzIGFzIFNTRSBldmVudHMuJyxcbiAgICB0YWdzLFxuICAgIHNlY3VyaXR5OiBhdXRoLFxuICAgIHJlc3BvbnNlczogeyAyMDA6IHsgZGVzY3JpcHRpb246ICdTU0UgZXZlbnQgc3RyZWFtIG9mIHBhcnRpYWwgcGx1Z2luIG9iamVjdHMnIH0sIDQwMDogeyBkZXNjcmlwdGlvbjogJ1ZhbGlkYXRpb24gZXJyb3InIH0gfSxcbiAgfSk7XG5cbiAgcmVnaXN0cnkucmVnaXN0ZXJQYXRoKHtcbiAgICBtZXRob2Q6ICdwb3N0JyxcbiAgICBwYXRoOiAnL3BsdWdpbnMvZGVwbG95LWdlbmVyYXRlZCcsXG4gICAgc3VtbWFyeTogJ0RlcGxveSBBSS1nZW5lcmF0ZWQgcGx1Z2luJyxcbiAgICBkZXNjcmlwdGlvbjogJ0J1aWxkIERvY2tlciBpbWFnZSBmcm9tIEFJLWdlbmVyYXRlZCBEb2NrZXJmaWxlIGFuZCBzYXZlIHBsdWdpbiB0byBkYXRhYmFzZS4gUmVxdWlyZXMgYWRtaW4uJyxcbiAgICB0YWdzLFxuICAgIHNlY3VyaXR5OiBhdXRoLFxuICAgIHJlc3BvbnNlczogeyAyMDI6IHsgZGVzY3JpcHRpb246ICdQbHVnaW4gYnVpbGQgcXVldWVkJyB9LCA0MDA6IHsgZGVzY3JpcHRpb246ICdWYWxpZGF0aW9uIGVycm9yJyB9LCA0MDM6IHsgZGVzY3JpcHRpb246ICdBZG1pbiByZXF1aXJlZCcgfSwgNDI5OiB7IGRlc2NyaXB0aW9uOiAnUXVvdGEgZXhjZWVkZWQnIH0gfSxcbiAgfSk7XG59XG4iXX0=
|
|
131
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGx1Z2luLXJvdXRlcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9vcGVuYXBpL3JvdXRlcy9wbHVnaW4tcm91dGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLCtDQUErQztBQUMvQyxzQ0FBc0M7QUFFdEMsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRTFDLE1BQU0sSUFBSSxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUM7QUFDekIsTUFBTSxJQUFJLEdBQUcsQ0FBQyxFQUFFLFVBQVUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0FBRWxDLE1BQU0sVUFBVSxvQkFBb0I7SUFDbEMsUUFBUSxDQUFDLFlBQVksQ0FBQztRQUNwQixNQUFNLEVBQUUsS0FBSztRQUNiLElBQUksRUFBRSxVQUFVO1FBQ2hCLE9BQU8sRUFBRSxjQUFjO1FBQ3ZCLFdBQVcsRUFBRSx1REFBdUQ7UUFDcEUsSUFBSTtRQUNKLFFBQVEsRUFBRSxJQUFJO1FBQ2QsU0FBUyxFQUFFLEVBQUUsR0FBRyxFQUFFLEVBQUUsV0FBVyxFQUFFLDJCQUEyQixFQUFFLEVBQUUsR0FBRyxFQUFFLEVBQUUsV0FBVyxFQUFFLGNBQWMsRUFBRSxFQUFFO0tBQ3ZHLENBQUMsQ0FBQztJQUVILFFBQVEsQ0FBQyxZQUFZLENBQUM7UUFDcEIsTUFBTSxFQUFFLEtBQUs7UUFDYixJQUFJLEVBQUUsZUFBZTtRQUNyQixPQUFPLEVBQUUsc0JBQXNCO1FBQy9CLFdBQVcsRUFBRSw0RkFBNEY7Y0FDckcsd0dBQXdHO2NBQ3hHLDZCQUE2QjtRQUNqQyxJQUFJO1FBQ0osUUFBUSxFQUFFLElBQUk7UUFDZCxTQUFTLEVBQUU7WUFDVCxHQUFHLEVBQUUsRUFBRSxXQUFXLEVBQUUsY0FBYyxFQUFFO1lBQ3BDLEdBQUcsRUFBRSxFQUFFLFdBQVcsRUFBRSxXQUFXLEVBQUU7WUFDakMsR0FBRyxFQUFFLEVBQUUsV0FBVyxFQUFFLG9HQUFvRyxFQUFFO1NB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RUFBRSxHQUFHLEVBQUUsRUFBRSxXQUFXLEVBQUUsa0JBQWtCLEVBQUUsRUFBRSxHQUFHLEVBQUUsRUFBRSxXQUFXLEVBQUUsZ0JBQWdCLEVBQUUsRUFBRSxHQUFHLEVBQUUsRUFBRSxXQUFXLEVBQUUsZ0JBQWdCLEVBQUUsRUFBRTtLQUNyTCxDQUFDLENBQUM7QUFDTCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IDIwMjYgUGlwZWxpbmUgQnVpbGRlciBDb250cmlidXRvcnNcbi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wXG5cbmltcG9ydCB7IHJlZ2lzdHJ5IH0gZnJvbSAnLi4vcmVnaXN0cnkuanMnO1xuXG5jb25zdCB0YWdzID0gWydQbHVnaW5zJ107XG5jb25zdCBhdXRoID0gW3sgYmVhcmVyQXV0aDogW10gfV07XG5cbmV4cG9ydCBmdW5jdGlvbiByZWdpc3RlclBsdWdpblJvdXRlcygpOiB2b2lkIHtcbiAgcmVnaXN0cnkucmVnaXN0ZXJQYXRoKHtcbiAgICBtZXRob2Q6ICdnZXQnLFxuICAgIHBhdGg6ICcvcGx1Z2lucycsXG4gICAgc3VtbWFyeTogJ0xpc3QgcGx1Z2lucycsXG4gICAgZGVzY3JpcHRpb246ICdMaXN0IHBsdWdpbnMgd2l0aCBwYWdpbmF0aW9uLCBmaWx0ZXJpbmcsIGFuZCBzb3J0aW5nLicsXG4gICAgdGFncyxcbiAgICBzZWN1cml0eTogYXV0aCxcbiAgICByZXNwb25zZXM6IHsgMjAwOiB7IGRlc2NyaXB0aW9uOiAnUGFnaW5hdGVkIGxpc3Qgb2YgcGx1Z2lucycgfSwgNDAxOiB7IGRlc2NyaXB0aW9uOiAnVW5hdXRob3JpemVkJyB9IH0sXG4gIH0pO1xuXG4gIHJlZ2lzdHJ5LnJlZ2lzdGVyUGF0aCh7XG4gICAgbWV0aG9kOiAnZ2V0JyxcbiAgICBwYXRoOiAnL3BsdWdpbnMvZmluZCcsXG4gICAgc3VtbWFyeTogJ0ZpbmQgYSBzaW5nbGUgcGx1Z2luJyxcbiAgICBkZXNjcmlwdGlvbjogJ0ZpbmQgYSBzaW5nbGUgcGx1Z2luIG1hdGNoaW5nIHRoZSBxdWVyeSBmaWx0ZXJzLiBGb3IgYSBwbHVnaW4gdGhhdCBydW5zIG9uIGl0cyBvd24gaW1hZ2UsICdcbiAgICAgICsgJ3RoZSBpbWFnZVxcJ3MgY29zaWduIHNpZ25hdHVyZSBpcyB2ZXJpZmllZCBmaXJzdDsgYGltYWdlRGlnZXN0YCBpbiB0aGUgcmVzcG9uc2UgaXMgdGhlIHZlcmlmaWVkIGRpZ2VzdCAnXG4gICAgICArICdwaXBlbGluZXMgcGluIENvZGVCdWlsZCB0by4nLFxuICAgIHRhZ3MsXG4gICAgc2VjdXJpdHk6IGF1dGgsXG4gICAgcmVzcG9uc2VzOiB7XG4gICAgICAyMDA6IHsgZGVzY3JpcHRpb246ICdQbHVnaW4gZm91bmQnIH0sXG4gICAgICA0MDQ6IHsgZGVzY3JpcHRpb246ICdOb3QgZm91bmQnIH0sXG4gICAgICA0MDk6IHsgZGVzY3JpcHRpb246ICdJTUFHRV9WRVJJRklDQVRJT05fRkFJTEVEIOKAlCB0aGUgcGx1Z2luIGltYWdlIGhhcyBubyBzaWduZWQgZGlnZXN0LCBvciBpdHMgc2lnbmF0dXJlIGRpZCBub3QgdmVyaWZ5JyB9LFxuICAgIH0sXG4gIH0pO1xuXG4gIHJlZ2lzdHJ5LnJlZ2lzdGVyUGF0aCh7XG4gICAgbWV0aG9kOiAncG9zdCcsXG4gICAgcGF0aDogJy9wbHVnaW5zL2xvb2t1cCcsXG4gICAgc3VtbWFyeTogJ1Jlc29sdmUgYSBzaW5nbGUgcGx1Z2luIChzeW50aCknLFxuICAgIGRlc2NyaXB0aW9uOiAnU2FtZSBhcyBgR0VUIC9wbHVnaW5zL2ZpbmRgIHdpdGggdGhlIGZpbHRlciBpbiB0aGUgYm9keSDigJQgdGhlIGVuZHBvaW50IHBpcGVsaW5lIHN5bnRoIHJlc29sdmVzICdcbiAgICAgICsgJ3BsdWdpbnMgdGhyb3VnaC4gVmVyaWZpZXMgdGhlIHBsdWdpbiBpbWFnZSBzaWduYXR1cmUgYmVmb3JlIHJldHVybmluZyBpdC4nLFxuICAgIHRhZ3MsXG4gICAgc2VjdXJpdHk6IGF1dGgsXG4gICAgcmVzcG9uc2VzOiB7XG4gICAgICAyMDA6IHsgZGVzY3JpcHRpb246ICdQbHVnaW4gZm91bmQnIH0sXG4gICAgICA0MDA6IHsgZGVzY3JpcHRpb246ICdNaXNzaW5nIG9yIGludmFsaWQgZmlsdGVyJyB9LFxuICAgICAgNDA0OiB7IGRlc2NyaXB0aW9uOiAnTm90IGZvdW5kJyB9LFxuICAgICAgNDA5OiB7IGRlc2NyaXB0aW9uOiAnSU1BR0VfVkVSSUZJQ0FUSU9OX0ZBSUxFRCDigJQgdGhlIHBsdWdpbiBpbWFnZSBoYXMgbm8gc2lnbmVkIGRpZ2VzdCwgb3IgaXRzIHNpZ25hdHVyZSBkaWQgbm90IHZlcmlmeScgfSxcbiAgICB9LFxuICB9KTtcblxuICByZWdpc3RyeS5yZWdpc3RlclBhdGgoe1xuICAgIG1ldGhvZDogJ2dldCcsXG4gICAgcGF0aDogJy9wbHVnaW5zL3tpZH0vc2JvbScsXG4gICAgc3VtbWFyeTogJ0Rvd25sb2FkIGEgcGx1Z2luIGltYWdlIFNCT00nLFxuICAgIGRlc2NyaXB0aW9uOiAnVGhlIFNQRFggSlNPTiBTQk9NIG9mIHRoZSBwbHVnaW4gaW1hZ2UsIHJlYWQgZnJvbSBpdHMgc2lnbmVkIGluLXRvdG8gYXR0ZXN0YXRpb24g4oCUIHNvIHRoZSAnXG4gICAgICArICdkb2N1bWVudCByZXR1cm5lZCBpcyBleGFjdGx5IHdoYXQgdGhlIHBsYXRmb3JtIGdlbmVyYXRlZCBhbmQgc2lnbmVkIGF0IGJ1aWxkIHRpbWUuJyxcbiAgICB0YWdzLFxuICAgIHNlY3VyaXR5OiBhdXRoLFxuICAgIHJlc3BvbnNlczoge1xuICAgICAgMjAwOiB7IGRlc2NyaXB0aW9uOiAnU1BEWCBKU09OIGRvY3VtZW50IChhcHBsaWNhdGlvbi9zcGR4K2pzb24sIHNlcnZlZCBhcyBhbiBhdHRhY2htZW50KScgfSxcbiAgICAgIDQwNDogeyBkZXNjcmlwdGlvbjogJ1BsdWdpbiBub3QgZm91bmQsIG9yIHRoZSBwbHVnaW4gaGFzIG5vIGltYWdlJyB9LFxuICAgICAgNDA5OiB7IGRlc2NyaXB0aW9uOiAnSU1BR0VfVkVSSUZJQ0FUSU9OX0ZBSUxFRCDigJQgbm8gU0JPTSBhdHRlc3RhdGlvbiB2ZXJpZmllZCBhZ2FpbnN0IHRoZSBwbHVnaW4tc2lnbmluZyBrZXknIH0sXG4gICAgfSxcbiAgfSk7XG5cbiAgcmVnaXN0cnkucmVnaXN0ZXJQYXRoKHtcbiAgICBtZXRob2Q6ICdnZXQnLFxuICAgIHBhdGg6ICcvcGx1Z2lucy97aWR9JyxcbiAgICBzdW1tYXJ5OiAnR2V0IHBsdWdpbiBieSBJRCcsXG4gICAgdGFncyxcbiAgICBzZWN1cml0eTogYXV0aCxcbiAgICByZXNwb25zZXM6IHsgMjAwOiB7IGRlc2NyaXB0aW9uOiAnUGx1Z2luIGRldGFpbHMnIH0sIDQwNDogeyBkZXNjcmlwdGlvbjogJ05vdCBmb3VuZCcgfSB9LFxuICB9KTtcblxuICByZWdpc3RyeS5yZWdpc3RlclBhdGgoe1xuICAgIG1ldGhvZDogJ3Bvc3QnLFxuICAgIHBhdGg6ICcvcGx1Z2lucycsXG4gICAgc3VtbWFyeTogJ1VwbG9hZCBhIHBsdWdpbicsXG4gICAgZGVzY3JpcHRpb246ICdVcGxvYWQgYSBwbHVnaW4gWklQIGZpbGUgd2l0aCBzcGVjLiBCdWlsZHMgRG9ja2VyIGltYWdlIGFuZCBzYXZlcyB0byBkYXRhYmFzZS4nLFxuICAgIHRhZ3MsXG4gICAgc2VjdXJpdHk6IGF1dGgsXG4gICAgcmVzcG9uc2VzOiB7IDIwMjogeyBkZXNjcmlwdGlvbjogJ1BsdWdpbiBidWlsZCBxdWV1ZWQnIH0sIDQwMDogeyBkZXNjcmlwdGlvbjogJ1ZhbGlkYXRpb24gZXJyb3InIH0sIDQyOTogeyBkZXNjcmlwdGlvbjogJ1F1b3RhIGV4Y2VlZGVkJyB9IH0sXG4gIH0pO1xuXG4gIHJlZ2lzdHJ5LnJlZ2lzdGVyUGF0aCh7XG4gICAgbWV0aG9kOiAncHV0JyxcbiAgICBwYXRoOiAnL3BsdWdpbnMve2lkfScsXG4gICAgc3VtbWFyeTogJ1VwZGF0ZSBhIHBsdWdpbicsXG4gICAgdGFncyxcbiAgICBzZWN1cml0eTogYXV0aCxcbiAgICByZXNwb25zZXM6IHsgMjAwOiB7IGRlc2NyaXB0aW9uOiAnUGx1Z2luIHVwZGF0ZWQnIH0sIDQwNDogeyBkZXNjcmlwdGlvbjogJ05vdCBmb3VuZCcgfSB9LFxuICB9KTtcblxuICByZWdpc3RyeS5yZWdpc3RlclBhdGgoe1xuICAgIG1ldGhvZDogJ2RlbGV0ZScsXG4gICAgcGF0aDogJy9wbHVnaW5zL3tpZH0nLFxuICAgIHN1bW1hcnk6ICdEZWxldGUgYSBwbHVnaW4nLFxuICAgIGRlc2NyaXB0aW9uOiAnU29mdC1kZWxldGUgYSBwbHVnaW4gYnkgc2V0dGluZyBpc0FjdGl2ZSB0byBmYWxzZS4nLFxuICAgIHRhZ3MsXG4gICAgc2VjdXJpdHk6IGF1dGgsXG4gICAgcmVzcG9uc2VzOiB7IDIwMDogeyBkZXNjcmlwdGlvbjogJ1BsdWdpbiBkZWxldGVkJyB9LCA0MDQ6IHsgZGVzY3JpcHRpb246ICdOb3QgZm91bmQnIH0gfSxcbiAgfSk7XG5cbiAgcmVnaXN0cnkucmVnaXN0ZXJQYXRoKHtcbiAgICBtZXRob2Q6ICdnZXQnLFxuICAgIHBhdGg6ICcvcGx1Z2lucy9wcm92aWRlcnMnLFxuICAgIHN1bW1hcnk6ICdMaXN0IEFJIHByb3ZpZGVycycsXG4gICAgZGVzY3JpcHRpb246ICdMaXN0IEFJIHByb3ZpZGVycyBjb25maWd1cmVkIGZvciBwbHVnaW4gZ2VuZXJhdGlvbi4nLFxuICAgIHRhZ3MsXG4gICAgc2VjdXJpdHk6IGF1dGgsXG4gICAgcmVzcG9uc2VzOiB7IDIwMDogeyBkZXNjcmlwdGlvbjogJ0xpc3Qgb2YgYXZhaWxhYmxlIEFJIHByb3ZpZGVycyB3aXRoIG1vZGVscycgfSB9LFxuICB9KTtcblxuICByZWdpc3RyeS5yZWdpc3RlclBhdGgoe1xuICAgIG1ldGhvZDogJ3Bvc3QnLFxuICAgIHBhdGg6ICcvcGx1Z2lucy9nZW5lcmF0ZScsXG4gICAgc3VtbWFyeTogJ0dlbmVyYXRlIHBsdWdpbiB2aWEgQUknLFxuICAgIGRlc2NyaXB0aW9uOiAnR2VuZXJhdGUgYSBwbHVnaW4gY29uZmlndXJhdGlvbiBhbmQgRG9ja2VyZmlsZSBmcm9tIGEgbmF0dXJhbCBsYW5ndWFnZSBwcm9tcHQuJyxcbiAgICB0YWdzLFxuICAgIHNlY3VyaXR5OiBhdXRoLFxuICAgIHJlc3BvbnNlczogeyAyMDA6IHsgZGVzY3JpcHRpb246ICdHZW5lcmF0ZWQgcGx1Z2luIGNvbmZpZ3VyYXRpb24gYW5kIERvY2tlcmZpbGUnIH0sIDQwMDogeyBkZXNjcmlwdGlvbjogJ1ZhbGlkYXRpb24gZXJyb3InIH0gfSxcbiAgfSk7XG5cbiAgcmVnaXN0cnkucmVnaXN0ZXJQYXRoKHtcbiAgICBtZXRob2Q6ICdwb3N0JyxcbiAgICBwYXRoOiAnL3BsdWdpbnMvZ2VuZXJhdGUvc3RyZWFtJyxcbiAgICBzdW1tYXJ5OiAnU3RyZWFtIHBsdWdpbiBnZW5lcmF0aW9uIHZpYSBBSScsXG4gICAgZGVzY3JpcHRpb246ICdHZW5lcmF0ZSBwbHVnaW4gY29uZmlndXJhdGlvbiBmcm9tIGEgbmF0dXJhbCBsYW5ndWFnZSBwcm9tcHQuIFN0cmVhbXMgcGFydGlhbCByZXN1bHRzIGFzIFNTRSBldmVudHMuJyxcbiAgICB0YWdzLFxuICAgIHNlY3VyaXR5OiBhdXRoLFxuICAgIHJlc3BvbnNlczogeyAyMDA6IHsgZGVzY3JpcHRpb246ICdTU0UgZXZlbnQgc3RyZWFtIG9mIHBhcnRpYWwgcGx1Z2luIG9iamVjdHMnIH0sIDQwMDogeyBkZXNjcmlwdGlvbjogJ1ZhbGlkYXRpb24gZXJyb3InIH0gfSxcbiAgfSk7XG5cbiAgcmVnaXN0cnkucmVnaXN0ZXJQYXRoKHtcbiAgICBtZXRob2Q6ICdwb3N0JyxcbiAgICBwYXRoOiAnL3BsdWdpbnMvZGVwbG95LWdlbmVyYXRlZCcsXG4gICAgc3VtbWFyeTogJ0RlcGxveSBBSS1nZW5lcmF0ZWQgcGx1Z2luJyxcbiAgICBkZXNjcmlwdGlvbjogJ0J1aWxkIERvY2tlciBpbWFnZSBmcm9tIEFJLWdlbmVyYXRlZCBEb2NrZXJmaWxlIGFuZCBzYXZlIHBsdWdpbiB0byBkYXRhYmFzZS4gUmVxdWlyZXMgYWRtaW4uJyxcbiAgICB0YWdzLFxuICAgIHNlY3VyaXR5OiBhdXRoLFxuICAgIHJlc3BvbnNlczogeyAyMDI6IHsgZGVzY3JpcHRpb246ICdQbHVnaW4gYnVpbGQgcXVldWVkJyB9LCA0MDA6IHsgZGVzY3JpcHRpb246ICdWYWxpZGF0aW9uIGVycm9yJyB9LCA0MDM6IHsgZGVzY3JpcHRpb246ICdBZG1pbiByZXF1aXJlZCcgfSwgNDI5OiB7IGRlc2NyaXB0aW9uOiAnUXVvdGEgZXhjZWVkZWQnIH0gfSxcbiAgfSk7XG59XG4iXX0=
|
|
@@ -45,12 +45,20 @@ export function registerComplianceEventSubscriber(config, serviceName = serviceI
|
|
|
45
45
|
// retry-safe in the http-client, so a transient 5xx/timeout is retried
|
|
46
46
|
// rather than dropped on the first attempt; compliance re-evaluation is
|
|
47
47
|
// naturally idempotent, so a duplicate delivery is harmless.
|
|
48
|
-
await client.post('/compliance/events/entity', event, {
|
|
48
|
+
const response = await client.post('/compliance/events/entity', event, {
|
|
49
49
|
headers: {
|
|
50
50
|
'Authorization': getServiceAuthHeader({ serviceName, orgId: event.orgId, role: 'member' }),
|
|
51
51
|
'Idempotency-Key': `${event.target}:${event.entityId}:${event.eventType}:${event.timestamp.toISOString()}`,
|
|
52
52
|
},
|
|
53
53
|
});
|
|
54
|
+
// The client RETURNS a terminal 4xx/5xx (retries exhausted) rather than
|
|
55
|
+
// throwing, so an unchecked call counted every rejection as delivered:
|
|
56
|
+
// a 403 from a mis-provisioned service identity, or a 500 from a broken
|
|
57
|
+
// compliance deploy, dropped every re-validation with no metric and no
|
|
58
|
+
// log. Route it through the same drop path as a transport error.
|
|
59
|
+
if (response.statusCode < 200 || response.statusCode >= 300) {
|
|
60
|
+
throw new Error(`compliance rejected the entity event with HTTP ${response.statusCode}`);
|
|
61
|
+
}
|
|
54
62
|
}
|
|
55
63
|
catch (err) {
|
|
56
64
|
// Fire-and-forget: log + a drop metric so sustained loss is alertable
|
|
@@ -72,4 +80,4 @@ export function registerComplianceEventSubscriber(config, serviceName = serviceI
|
|
|
72
80
|
port: serviceConfig.port,
|
|
73
81
|
});
|
|
74
82
|
}
|
|
75
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
83
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcGxpYW5jZS1ldmVudC1zdWJzY3JpYmVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3NlcnZpY2VzL2NvbXBsaWFuY2UtZXZlbnQtc3Vic2NyaWJlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwrQ0FBK0M7QUFDL0Msc0NBQXNDO0FBRXRDLE9BQU8sRUFBRSxZQUFZLEVBQWdELE1BQU0sb0JBQW9CLENBQUM7QUFDaEcsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDdEQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ3BELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQzdELE9BQU8sRUFBc0IsTUFBTSxvQkFBb0IsQ0FBQztBQUN4RCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDbEQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ3pELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUVwRCxNQUFNLE1BQU0sR0FBRyxZQUFZLENBQUMsbUJBQW1CLENBQUMsQ0FBQztBQUVqRDs7Ozs7Ozs7Ozs7Ozs7R0FjRztBQUNILE1BQU0sVUFBVSxpQ0FBaUMsQ0FDL0MsTUFBK0IsRUFDL0IsV0FBVyxHQUFXLGVBQWUsRUFBRTtJQUV2QyxNQUFNLGFBQWEsR0FBa0I7UUFDbkMsSUFBSSxFQUFFLE1BQU0sRUFBRSxJQUFJLElBQUksT0FBTyxDQUFDLEdBQUcsQ0FBQyx1QkFBdUIsSUFBSSxZQUFZO1FBQ3pFLElBQUksRUFBRSxNQUFNLEVBQUUsSUFBSSxJQUFJLFFBQVEsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLHVCQUF1QixJQUFJLE1BQU0sRUFBRSxFQUFFLENBQUM7S0FDbEYsQ0FBQztJQUVGLE1BQU0sTUFBTSxHQUFHLElBQUksa0JBQWtCLENBQUMsYUFBYSxDQUFDLENBQUM7SUFFckQsTUFBTSxVQUFVLEdBQTBCO1FBQ3hDLEtBQUssQ0FBQyxhQUFhLENBQUMsS0FBa0I7WUFDcEMsSUFBSSxDQUFDO2dCQUNILGdFQUFnRTtnQkFDaEUsa0VBQWtFO2dCQUNsRSxvREFBb0Q7Z0JBQ3BELGdFQUFnRTtnQkFDaEUsc0RBQXNEO2dCQUN0RCxFQUFFO2dCQUNGLG9FQUFvRTtnQkFDcEUsNkRBQTZEO2dCQUM3RCxzRUFBc0U7Z0JBQ3RFLHVFQUF1RTtnQkFDdkUsd0VBQXdFO2dCQUN4RSw2REFBNkQ7Z0JBQzdELE1BQU0sUUFBUSxHQUFHLE1BQU0sTUFBTSxDQUFDLElBQUksQ0FBQywyQkFBMkIsRUFBRSxLQUFLLEVBQUU7b0JBQ3JFLE9BQU8sRUFBRTt3QkFDUCxlQUFlLEVBQUUsb0JBQW9CLENBQUMsRUFBRSxXQUFXLEVBQUUsS0FBSyxFQUFFLEtBQUssQ0FBQyxLQUFLLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxDQUFDO3dCQUMxRixpQkFBaUIsRUFBRSxHQUFHLEtBQUssQ0FBQyxNQUFNLElBQUksS0FBSyxDQUFDLFFBQVEsSUFBSSxLQUFLLENBQUMsU0FBUyxJQUFJLEtBQUssQ0FBQyxTQUFTLENBQUMsV0FBVyxFQUFFLEVBQUU7cUJBQzNHO2lCQUNGLENBQUMsQ0FBQztnQkFDSCx3RUFBd0U7Z0JBQ3hFLHVFQUF1RTtnQkFDdkUsd0VBQXdFO2dCQUN4RSx1RUFBdUU7Z0JBQ3ZFLGlFQUFpRTtnQkFDakUsSUFBSSxRQUFRLENBQUMsVUFBVSxHQUFHLEdBQUcsSUFBSSxRQUFRLENBQUMsVUFBVSxJQUFJLEdBQUcsRUFBRSxDQUFDO29CQUM1RCxNQUFNLElBQUksS0FBSyxDQUFDLGtEQUFrRCxRQUFRLENBQUMsVUFBVSxFQUFFLENBQUMsQ0FBQztnQkFDM0YsQ0FBQztZQUNILENBQUM7WUFBQyxPQUFPLEdBQUcsRUFBRSxDQUFDO2dCQUNiLHNFQUFzRTtnQkFDdEUsd0VBQXdFO2dCQUN4RSx5REFBeUQ7Z0JBQ3pELFdBQVcsQ0FBQyw2QkFBNkIsRUFBRSxFQUFFLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxFQUFFLEtBQUssQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDO2dCQUMzRixNQUFNLENBQUMsSUFBSSxDQUFDLHFEQUFxRCxFQUFFO29CQUNqRSxNQUFNLEVBQUUsS0FBSyxDQUFDLE1BQU07b0JBQ3BCLFNBQVMsRUFBRSxLQUFLLENBQUMsU0FBUztvQkFDMUIsUUFBUSxFQUFFLEtBQUssQ0FBQyxRQUFRO29CQUN4QixLQUFLLEVBQUUsWUFBWSxDQUFDLEdBQUcsQ0FBQztpQkFDekIsQ0FBQyxDQUFDO1lBQ0wsQ0FBQztRQUNILENBQUM7S0FDRixDQUFDO0lBRUYsWUFBWSxDQUFDLFNBQVMsQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUNuQyxNQUFNLENBQUMsSUFBSSxDQUFDLHdDQUF3QyxFQUFFO1FBQ3BELElBQUksRUFBRSxhQUFhLENBQUMsSUFBSTtRQUN4QixJQUFJLEVBQUUsYUFBYSxDQUFDLElBQUk7S0FDekIsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCAyMDI2IFBpcGVsaW5lIEJ1aWxkZXIgQ29udHJpYnV0b3JzXG4vLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMFxuXG5pbXBvcnQgeyBlbnRpdHlFdmVudHMsIHR5cGUgRW50aXR5RXZlbnQsIHR5cGUgRW50aXR5RXZlbnRTdWJzY3JpYmVyIH0gZnJvbSAnLi9lbnRpdHktZXZlbnRzLmpzJztcbmltcG9ydCB7IEludGVybmFsSHR0cENsaWVudCB9IGZyb20gJy4vaHR0cC1jbGllbnQuanMnO1xuaW1wb3J0IHsgc2VydmljZUlkZW50aXR5IH0gZnJvbSAnLi9zZXJ2aWNlLWtleXMuanMnO1xuaW1wb3J0IHsgZ2V0U2VydmljZUF1dGhIZWFkZXIgfSBmcm9tICcuLi9taWRkbGV3YXJlL2F1dGguanMnO1xuaW1wb3J0IHsgdHlwZSBTZXJ2aWNlQ29uZmlnIH0gZnJvbSAnLi4vdHlwZXMvY29tbW9uLmpzJztcbmltcG9ydCB7IGNyZWF0ZUxvZ2dlciB9IGZyb20gJy4uL3V0aWxzL2xvZ2dlci5qcyc7XG5pbXBvcnQgeyBlbWl0Q291bnRlciB9IGZyb20gJy4uL3V0aWxzL21ldHJpYy1lbWl0dGVyLmpzJztcbmltcG9ydCB7IGVycm9yTWVzc2FnZSB9IGZyb20gJy4uL3V0aWxzL3Jlc3BvbnNlLmpzJztcblxuY29uc3QgbG9nZ2VyID0gY3JlYXRlTG9nZ2VyKCdjb21wbGlhbmNlLWV2ZW50cycpO1xuXG4vKipcbiAqIFJlZ2lzdGVycyBhbiBlbnRpdHkgZXZlbnQgc3Vic2NyaWJlciB0aGF0IGZvcndhcmRzIGV2ZW50cyB0byB0aGUgY29tcGxpYW5jZSBzZXJ2aWNlLlxuICpcbiAqIENhbGwgdGhpcyBhdCBzZXJ2aWNlIHN0YXJ0dXAgKGluIGluZGV4LnRzKSB0byBlbmFibGUgYXV0b21hdGljIGNvbXBsaWFuY2VcbiAqIG5vdGlmaWNhdGlvbiBvbiBlbnRpdHkgbXV0YXRpb25zLiBFdmVudHMgYXJlIGZpcmUtYW5kLWZvcmdldCDigJQgZmFpbHVyZXNcbiAqIGFyZSBsb2dnZWQgYnV0IG5ldmVyIGJsb2NrIHRoZSBvcmlnaW5hbCByZXF1ZXN0LlxuICpcbiAqIEBwYXJhbSBjb25maWcgLSBPcHRpb25hbCBzZXJ2aWNlIGNvbmZpZyBvdmVycmlkZSAoZGVmYXVsdHMgdG8gQ09NUExJQU5DRV9TRVJWSUNFX0hPU1QvUE9SVCBlbnYgdmFycylcbiAqIEBwYXJhbSBzZXJ2aWNlTmFtZSAtIFNlcnZpY2UgaWRlbnRpZmllciBiYWtlZCBpbnRvIHRoZSBzaWduZWQgSldUJ3MgYHN1YmBcbiAqICAgKGUuZy4gJ3BpcGVsaW5lJywgJ3BsdWdpbicpLiBUaGUgY29tcGxpYW5jZSByb3V0ZSBpcyBhbiBJTlRFUk5BTCByb3V0ZTogaXRcbiAqICAgYWRtaXRzIG9ubHkgdGhvc2UgdHdvIHNlcnZpY2VzJyBvd24gc2lnbmVkIHRva2VucywgYW5kIG5vIHVzZXIgdG9rZW4uXG4gKiAgIERlZmF1bHRzIHRvIFRISVMgcHJvY2VzcydzIGlkZW50aXR5IChgU0VSVklDRV9OQU1FYCkg4oCUIHNpbmNlICMxNCBhIHNlcnZpY2VcbiAqICAgaG9sZHMgb25seSBpdHMgb3duIHNpZ25pbmcga2V5LCBzbyBhIHBsYWNlaG9sZGVyIG5hbWUgd291bGQgbWludCBhIHRva2VuIG5vXG4gKiAgIHBlZXIgY291bGQgdmVyaWZ5LlxuICovXG5leHBvcnQgZnVuY3Rpb24gcmVnaXN0ZXJDb21wbGlhbmNlRXZlbnRTdWJzY3JpYmVyKFxuICBjb25maWc/OiBQYXJ0aWFsPFNlcnZpY2VDb25maWc+LFxuICBzZXJ2aWNlTmFtZTogc3RyaW5nID0gc2VydmljZUlkZW50aXR5KCksXG4pOiB2b2lkIHtcbiAgY29uc3Qgc2VydmljZUNvbmZpZzogU2VydmljZUNvbmZpZyA9IHtcbiAgICBob3N0OiBjb25maWc/Lmhvc3QgPz8gcHJvY2Vzcy5lbnYuQ09NUExJQU5DRV9TRVJWSUNFX0hPU1QgPz8gJ2NvbXBsaWFuY2UnLFxuICAgIHBvcnQ6IGNvbmZpZz8ucG9ydCA/PyBwYXJzZUludChwcm9jZXNzLmVudi5DT01QTElBTkNFX1NFUlZJQ0VfUE9SVCA/PyAnMzAwMCcsIDEwKSxcbiAgfTtcblxuICBjb25zdCBjbGllbnQgPSBuZXcgSW50ZXJuYWxIdHRwQ2xpZW50KHNlcnZpY2VDb25maWcpO1xuXG4gIGNvbnN0IHN1YnNjcmliZXI6IEVudGl0eUV2ZW50U3Vic2NyaWJlciA9IHtcbiAgICBhc3luYyBvbkVudGl0eUV2ZW50KGV2ZW50OiBFbnRpdHlFdmVudCk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgdHJ5IHtcbiAgICAgICAgLy8gTWludCBhIHBlci1ldmVudCBzZXJ2aWNlIEpXVCBzY29wZWQgdG8gdGhlIGV2ZW50J3Mgb3JnIHNvIHRoZVxuICAgICAgICAvLyBjb21wbGlhbmNlIHJvdXRlJ3MgYHJ1bldpdGhUZW5hbnRDb250ZXh0YCBzZWVzIHRoZSByaWdodCB0ZW5hbnRcbiAgICAgICAgLy8gR1VDLiBUaGUgY29tcGxpYW5jZSBzaWRlIGVuZm9yY2VzIGByZXF1aXJlQXV0aGAgK1xuICAgICAgICAvLyBgcmVxdWlyZVNlcnZpY2VQcmluY2lwYWxgIOKAlCB0aGUgcHJldmlvdXMgYHgtaW50ZXJuYWwtc2VydmljZWBcbiAgICAgICAgLy8gaGVhZGVyIGlzIG5vIGxvbmdlciBzdWZmaWNpZW50IChhbmQgd2FzIHNwb29mYWJsZSkuXG4gICAgICAgIC8vXG4gICAgICAgIC8vIFRoaXMgSFRUUCBub3RpZnkgaXMgdGhlIFNJTkdMRSBkZWxpdmVyeSBjaGFubmVsIGZvciBwb3N0LW11dGF0aW9uXG4gICAgICAgIC8vIHJlLXZhbGlkYXRpb24gKHByaW1hcnkgZW5mb3JjZW1lbnQgaXMgdGhlIGZhaWwtQ0xPU0VEIGxpdmVcbiAgICAgICAgLy8gdmFsaWRhdGUgcGF0aCkuIEEgc3RhYmxlIHBlci1ldmVudCBgSWRlbXBvdGVuY3ktS2V5YCBtYWtlcyB0aGUgUE9TVFxuICAgICAgICAvLyByZXRyeS1zYWZlIGluIHRoZSBodHRwLWNsaWVudCwgc28gYSB0cmFuc2llbnQgNXh4L3RpbWVvdXQgaXMgcmV0cmllZFxuICAgICAgICAvLyByYXRoZXIgdGhhbiBkcm9wcGVkIG9uIHRoZSBmaXJzdCBhdHRlbXB0OyBjb21wbGlhbmNlIHJlLWV2YWx1YXRpb24gaXNcbiAgICAgICAgLy8gbmF0dXJhbGx5IGlkZW1wb3RlbnQsIHNvIGEgZHVwbGljYXRlIGRlbGl2ZXJ5IGlzIGhhcm1sZXNzLlxuICAgICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGNsaWVudC5wb3N0KCcvY29tcGxpYW5jZS9ldmVudHMvZW50aXR5JywgZXZlbnQsIHtcbiAgICAgICAgICBoZWFkZXJzOiB7XG4gICAgICAgICAgICAnQXV0aG9yaXphdGlvbic6IGdldFNlcnZpY2VBdXRoSGVhZGVyKHsgc2VydmljZU5hbWUsIG9yZ0lkOiBldmVudC5vcmdJZCwgcm9sZTogJ21lbWJlcicgfSksXG4gICAgICAgICAgICAnSWRlbXBvdGVuY3ktS2V5JzogYCR7ZXZlbnQudGFyZ2V0fToke2V2ZW50LmVudGl0eUlkfToke2V2ZW50LmV2ZW50VHlwZX06JHtldmVudC50aW1lc3RhbXAudG9JU09TdHJpbmcoKX1gLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0pO1xuICAgICAgICAvLyBUaGUgY2xpZW50IFJFVFVSTlMgYSB0ZXJtaW5hbCA0eHgvNXh4IChyZXRyaWVzIGV4aGF1c3RlZCkgcmF0aGVyIHRoYW5cbiAgICAgICAgLy8gdGhyb3dpbmcsIHNvIGFuIHVuY2hlY2tlZCBjYWxsIGNvdW50ZWQgZXZlcnkgcmVqZWN0aW9uIGFzIGRlbGl2ZXJlZDpcbiAgICAgICAgLy8gYSA0MDMgZnJvbSBhIG1pcy1wcm92aXNpb25lZCBzZXJ2aWNlIGlkZW50aXR5LCBvciBhIDUwMCBmcm9tIGEgYnJva2VuXG4gICAgICAgIC8vIGNvbXBsaWFuY2UgZGVwbG95LCBkcm9wcGVkIGV2ZXJ5IHJlLXZhbGlkYXRpb24gd2l0aCBubyBtZXRyaWMgYW5kIG5vXG4gICAgICAgIC8vIGxvZy4gUm91dGUgaXQgdGhyb3VnaCB0aGUgc2FtZSBkcm9wIHBhdGggYXMgYSB0cmFuc3BvcnQgZXJyb3IuXG4gICAgICAgIGlmIChyZXNwb25zZS5zdGF0dXNDb2RlIDwgMjAwIHx8IHJlc3BvbnNlLnN0YXR1c0NvZGUgPj0gMzAwKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBjb21wbGlhbmNlIHJlamVjdGVkIHRoZSBlbnRpdHkgZXZlbnQgd2l0aCBIVFRQICR7cmVzcG9uc2Uuc3RhdHVzQ29kZX1gKTtcbiAgICAgICAgfVxuICAgICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgIC8vIEZpcmUtYW5kLWZvcmdldDogbG9nICsgYSBkcm9wIG1ldHJpYyBzbyBzdXN0YWluZWQgbG9zcyBpcyBhbGVydGFibGVcbiAgICAgICAgLy8gKG9wZXJhdG9ycyBjYW4ndCBhY3Qgb24gYSB3YXJuIGxpbmUgYWxvbmUpLCB0aGVuIHN3YWxsb3cg4oCUIGNvbXBsaWFuY2VcbiAgICAgICAgLy8gbm90aWZpY2F0aW9uIGlzIG5vbi1mYXRhbCB0byB0aGUgb3JpZ2luYXRpbmcgbXV0YXRpb24uXG4gICAgICAgIGVtaXRDb3VudGVyKCdjb21wbGlhbmNlX2V2ZW50X2Ryb3BfdG90YWwnLCB7IHNlcnZpY2U6IHNlcnZpY2VOYW1lLCB0YXJnZXQ6IGV2ZW50LnRhcmdldCB9KTtcbiAgICAgICAgbG9nZ2VyLndhcm4oJ0ZhaWxlZCB0byBub3RpZnkgY29tcGxpYW5jZSBzZXJ2aWNlIG9mIGVudGl0eSBldmVudCcsIHtcbiAgICAgICAgICB0YXJnZXQ6IGV2ZW50LnRhcmdldCxcbiAgICAgICAgICBldmVudFR5cGU6IGV2ZW50LmV2ZW50VHlwZSxcbiAgICAgICAgICBlbnRpdHlJZDogZXZlbnQuZW50aXR5SWQsXG4gICAgICAgICAgZXJyb3I6IGVycm9yTWVzc2FnZShlcnIpLFxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9LFxuICB9O1xuXG4gIGVudGl0eUV2ZW50cy5zdWJzY3JpYmUoc3Vic2NyaWJlcik7XG4gIGxvZ2dlci5pbmZvKCdDb21wbGlhbmNlIGV2ZW50IHN1YnNjcmliZXIgcmVnaXN0ZXJlZCcsIHtcbiAgICBob3N0OiBzZXJ2aWNlQ29uZmlnLmhvc3QsXG4gICAgcG9ydDogc2VydmljZUNvbmZpZy5wb3J0LFxuICB9KTtcbn1cbiJdfQ==
|
|
@@ -10,7 +10,7 @@ import { type AuditSpool } from './audit-spool.js';
|
|
|
10
10
|
* (`admin.superadmin.grant`, `org.ownership.transfer`, `user.login`, …). Keep
|
|
11
11
|
* this list free of any platform-only action.
|
|
12
12
|
*/
|
|
13
|
-
export declare const REMOTE_AUDIT_ACTIONS: readonly ['plugin.build.completed', 'plugin.build.failed', 'plugin.build.timeout', 'plugin.delete', 'plugin.restore', 'plugin.purge', 'plugin.update', 'plugin.upload', 'plugin.deploy', 'plugin.bulk.update', 'plugin.bulk.delete', 'plugin.dlq.purge', 'plugin.build.retry', 'plugin.dlq.replay', 'pipeline.create', 'pipeline.update', 'pipeline.delete', 'pipeline.restore', 'pipeline.purge', 'pipeline_template.create', 'pipeline_template.update', 'pipeline_template.delete', 'pipeline_template.restore', 'pipeline_template.purge', 'pipeline.execution.start', 'pipeline.execution.cancel', 'pipeline.registry.register', 'pipeline.registry.deregister', 'quota.reset', 'quota.limit.update', 'quota.delete', 'compliance.exemption.approve', 'compliance.exemption.revoke', 'compliance.rule.toggle', 'compliance.rule.create', 'compliance.rule.update', 'compliance.rule.delete', 'compliance.rule.restore', 'compliance.rule.purge', 'compliance.policy.create', 'compliance.policy.update', 'compliance.policy.delete', 'compliance.policy.restore', 'compliance.policy.purge', 'compliance.scan-schedule.create', 'compliance.scan-schedule.update', 'compliance.scan-schedule.delete', 'compliance.template.apply', 'compliance.scan.create', 'compliance.scan.cancel', 'compliance.notification-preference.update', 'registry.gc', 'registry.image.delete', 'registry.image.copy', 'message.announcement.create', 'message.delete', 'message.restore', 'message.purge', 'billing.subscription.create', 'billing.subscription.update', 'billing.subscription.reactivate', 'billing.subscription.cancel', 'billing.subscription.delete', 'billing.tier.override', 'billing.addon.add', 'billing.addon.remove', 'billing.addon.prune', 'billing.discount.generate', 'billing.discount.issue', 'billing.discount.apply', 'billing.discount.remove', 'billing.discount.revoke', 'billing.promotion.create', 'billing.promotion.update', 'billing.promotion.revoke', 'billing.promotion.grant', 'billing.promotion.activate', 'billing.credit.consumed', 'billing.credit.exhausted', 'billing.combo.expired', 'reporting.settings.update', 'reporting.deployment.outcome', 'reporting.retention.sync', 'authz.denied', 'ask.query', 'ask.agent.turn'];
|
|
13
|
+
export declare const REMOTE_AUDIT_ACTIONS: readonly ['plugin.build.completed', 'plugin.build.failed', 'plugin.build.timeout', 'plugin.delete', 'plugin.restore', 'plugin.purge', 'plugin.update', 'plugin.upload', 'plugin.deploy', 'plugin.bulk.update', 'plugin.bulk.delete', 'plugin.dlq.purge', 'plugin.build.retry', 'plugin.dlq.replay', 'pipeline.create', 'pipeline.update', 'pipeline.delete', 'pipeline.restore', 'pipeline.purge', 'pipeline_template.create', 'pipeline_template.update', 'pipeline_template.delete', 'pipeline_template.restore', 'pipeline_template.purge', 'pipeline.execution.start', 'pipeline.execution.cancel', 'pipeline.registry.register', 'pipeline.registry.deregister', 'quota.reset', 'quota.limit.update', 'quota.delete', 'compliance.exemption.approve', 'compliance.exemption.revoke', 'compliance.rule.toggle', 'compliance.rule.create', 'compliance.rule.update', 'compliance.rule.delete', 'compliance.rule.restore', 'compliance.rule.purge', 'compliance.policy.create', 'compliance.policy.update', 'compliance.policy.delete', 'compliance.policy.restore', 'compliance.policy.purge', 'compliance.scan-schedule.create', 'compliance.scan-schedule.update', 'compliance.scan-schedule.delete', 'compliance.template.apply', 'compliance.scan.create', 'compliance.scan.cancel', 'compliance.notification-preference.update', 'registry.gc', 'registry.image.delete', 'registry.image.copy', 'registry.image.sign', 'message.announcement.create', 'message.delete', 'message.restore', 'message.purge', 'billing.subscription.create', 'billing.subscription.update', 'billing.subscription.reactivate', 'billing.subscription.cancel', 'billing.subscription.delete', 'billing.tier.override', 'billing.addon.add', 'billing.addon.remove', 'billing.addon.prune', 'billing.discount.generate', 'billing.discount.issue', 'billing.discount.apply', 'billing.discount.remove', 'billing.discount.revoke', 'billing.promotion.create', 'billing.promotion.update', 'billing.promotion.revoke', 'billing.promotion.grant', 'billing.promotion.activate', 'billing.credit.consumed', 'billing.credit.exhausted', 'billing.combo.expired', 'reporting.settings.update', 'reporting.deployment.outcome', 'reporting.retention.sync', 'authz.denied', 'ask.query', 'ask.agent.turn'];
|
|
14
14
|
export type RemoteAuditAction = typeof REMOTE_AUDIT_ACTIONS[number];
|
|
15
15
|
/** Whether `value` is an action a remote service may emit (the ingest allow-list). */
|
|
16
16
|
export declare function isRemoteAuditAction(value: string): value is RemoteAuditAction;
|