@pipeline-builder/api-core 5.2.10 → 5.2.11
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/types/ecosystem-notifications.d.ts +5 -4
- package/lib/types/ecosystem-notifications.js +10 -3
- package/lib/types/error-codes.d.ts +41 -0
- package/lib/types/error-codes.js +62 -1
- package/lib/types/index.d.ts +1 -1
- package/lib/types/index.js +2 -2
- package/lib/types/permissions.d.ts +1 -1
- package/lib/types/permissions.js +11 -2
- package/lib/types/pipeline.d.ts +2 -0
- package/lib/types/pipeline.js +3 -1
- package/lib/types/plugin-catalog.d.ts +44 -0
- package/lib/types/plugin-catalog.js +63 -1
- package/lib/types/remote-audit-actions.d.ts +1 -1
- package/lib/types/remote-audit-actions.js +13 -1
- package/lib/validation/index.d.ts +1 -1
- package/lib/validation/index.js +2 -2
- package/lib/validation/pipeline-schemas.d.ts +22 -0
- package/lib/validation/pipeline-schemas.js +19 -1
- package/lib/validation/plugin-spec-schema.d.ts +54 -2
- package/lib/validation/plugin-spec-schema.js +94 -7
- package/package.json +1 -1
package/lib/types/pipeline.d.ts
CHANGED
|
@@ -67,11 +67,13 @@ export declare function computeCreditsFor(durationMs: number | null | undefined,
|
|
|
67
67
|
* @property CODE_BUILD_STEP - Full CodeBuild step with custom build environment
|
|
68
68
|
* @property SHELL_STEP - Simple shell step without custom build environment
|
|
69
69
|
* @property MANUAL_APPROVAL_STEP - Native CDK approval gate (no Docker image, no commands)
|
|
70
|
+
* @property BUILD_IMAGE - A managed toolchain build image (`pipeline-bootstrap`): never a step
|
|
70
71
|
*/
|
|
71
72
|
export declare const PluginType: {
|
|
72
73
|
readonly CODE_BUILD_STEP: 'CodeBuildStep';
|
|
73
74
|
readonly SHELL_STEP: 'ShellStep';
|
|
74
75
|
readonly MANUAL_APPROVAL_STEP: 'ManualApprovalStep';
|
|
76
|
+
readonly BUILD_IMAGE: 'BuildImage';
|
|
75
77
|
};
|
|
76
78
|
export type PluginType = ValueOf<typeof PluginType>;
|
|
77
79
|
/**
|
package/lib/types/pipeline.js
CHANGED
|
@@ -78,10 +78,12 @@ export function computeCreditsFor(durationMs, computeType) {
|
|
|
78
78
|
* @property CODE_BUILD_STEP - Full CodeBuild step with custom build environment
|
|
79
79
|
* @property SHELL_STEP - Simple shell step without custom build environment
|
|
80
80
|
* @property MANUAL_APPROVAL_STEP - Native CDK approval gate (no Docker image, no commands)
|
|
81
|
+
* @property BUILD_IMAGE - A managed toolchain build image (`pipeline-bootstrap`): never a step
|
|
81
82
|
*/
|
|
82
83
|
export const PluginType = {
|
|
83
84
|
CODE_BUILD_STEP: 'CodeBuildStep',
|
|
84
85
|
SHELL_STEP: 'ShellStep',
|
|
85
86
|
MANUAL_APPROVAL_STEP: 'ManualApprovalStep',
|
|
87
|
+
BUILD_IMAGE: 'BuildImage',
|
|
86
88
|
};
|
|
87
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
89
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGlwZWxpbmUuanMiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy90eXBlcy9waXBlbGluZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwrQ0FBK0M7QUFDL0Msc0NBQXNDO0FBV3RDOzs7Ozs7Ozs7R0FTRztBQUNILE1BQU0sQ0FBQyxNQUFNLFdBQVcsR0FBRztJQUN6QixLQUFLLEVBQUUsT0FBTztJQUNkLE1BQU0sRUFBRSxRQUFRO0lBQ2hCLEtBQUssRUFBRSxPQUFPO0lBQ2QsUUFBUSxFQUFFLFVBQVU7Q0FDWixDQUFDO0FBR1g7Ozs7Ozs7Ozs7O0dBV0c7QUFDSCxNQUFNLENBQUMsTUFBTSxzQkFBc0IsR0FBMEM7SUFDM0UsS0FBSyxFQUFFLENBQUM7SUFDUixNQUFNLEVBQUUsQ0FBQztJQUNULEtBQUssRUFBRSxDQUFDO0lBQ1IsUUFBUSxFQUFFLEVBQUU7Q0FDYixDQUFDO0FBRUY7Ozs7Ozs7Ozs7R0FVRztBQUNILE1BQU0sVUFBVSxvQkFBb0IsQ0FBQyxHQUE4QjtJQUNqRSxJQUFJLENBQUMsR0FBRztRQUFFLE9BQU8sSUFBSSxDQUFDO0lBQ3RCLE1BQU0sS0FBSyxHQUFHLEdBQUcsQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUNoQyxNQUFNLElBQUksR0FBRyxLQUFLLENBQUMsVUFBVSxDQUFDLGlCQUFpQixDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsaUJBQWlCLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQztJQUNqRyw0REFBNEQ7SUFDNUQsTUFBTSxHQUFHLEdBQUcsSUFBSSxLQUFLLFNBQVMsSUFBSSxJQUFJLEtBQUssU0FBUyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztJQUN6RSxPQUFRLE1BQU0sQ0FBQyxJQUFJLENBQUMsc0JBQXNCLENBQW1CLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEtBQUssR0FBRyxDQUFDLElBQUksSUFBSSxDQUFDO0FBQy9GLENBQUM7QUFFRDs7Ozs7Ozs7Ozs7O0dBWUc7QUFDSCxNQUFNLFVBQVUsaUJBQWlCLENBQUMsVUFBcUMsRUFBRSxXQUErQjtJQUN0RyxJQUFJLFVBQVUsSUFBSSxJQUFJLElBQUksQ0FBQyxDQUFDLFVBQVUsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVc7UUFBRSxPQUFPLElBQUksQ0FBQztJQUN6RSxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxVQUFVLEdBQUcsTUFBTSxDQUFDLEdBQUcsc0JBQXNCLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQztBQUNoRixDQUFDO0FBRUQ7Ozs7Ozs7R0FPRztBQUNILE1BQU0sQ0FBQyxNQUFNLFVBQVUsR0FBRztJQUN4QixlQUFlLEVBQUUsZUFBZTtJQUNoQyxVQUFVLEVBQUUsV0FBVztJQUN2QixvQkFBb0IsRUFBRSxvQkFBb0I7SUFDMUMsV0FBVyxFQUFFLFlBQVk7Q0FDakIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCAyMDI2IFBpcGVsaW5lIEJ1aWxkZXIgQ29udHJpYnV0b3JzXG4vLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMFxuXG4vKipcbiAqIFNoYXJlZCBwaXBlbGluZSB0eXBlcyB1c2VkIGJ5IGJvdGggcGlwZWxpbmUtY29yZSBhbmQgcGlwZWxpbmUtZGF0YVxuICovXG5cbi8qKlxuICogVXRpbGl0eSB0eXBlIHRvIGV4dHJhY3QgdGhlIHVuaW9uIG9mIGFsbCB2YWx1ZXMgZnJvbSBhbiBvYmplY3QgdHlwZVxuICovXG50eXBlIFZhbHVlT2Y8VD4gPSBUW2tleW9mIFRdO1xuXG4vKipcbiAqIEFXUyBDb2RlQnVpbGQgY29tcHV0ZSByZXNvdXJjZSBzaXplc1xuICpcbiAqIEBwcm9wZXJ0eSBTTUFMTCAtIDMgR0IgbWVtb3J5LCAyIHZDUFVzXG4gKiBAcHJvcGVydHkgTUVESVVNIC0gNyBHQiBtZW1vcnksIDQgdkNQVXNcbiAqIEBwcm9wZXJ0eSBMQVJHRSAtIDE1IEdCIG1lbW9yeSwgOCB2Q1BVc1xuICogQHByb3BlcnR5IFgyX0xBUkdFIC0gMTQ1IEdCIG1lbW9yeSwgNzIgdkNQVXNcbiAqXG4gKiBAc2VlIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9jb2RlYnVpbGQvbGF0ZXN0L3VzZXJndWlkZS9idWlsZC1lbnYtcmVmLWNvbXB1dGUtdHlwZXMuaHRtbFxuICovXG5leHBvcnQgY29uc3QgQ29tcHV0ZVR5cGUgPSB7XG4gIFNNQUxMOiAnU01BTEwnLFxuICBNRURJVU06ICdNRURJVU0nLFxuICBMQVJHRTogJ0xBUkdFJyxcbiAgWDJfTEFSR0U6ICdYMl9MQVJHRScsXG59IGFzIGNvbnN0O1xuZXhwb3J0IHR5cGUgQ29tcHV0ZVR5cGUgPSBWYWx1ZU9mPHR5cGVvZiBDb21wdXRlVHlwZT47XG5cbi8qKlxuICogdkNQVSBlYWNoIENvZGVCdWlsZCBjb21wdXRlIHNpemUgcHJvdmlkZXMsIGZvciB0dXJuaW5nIGEgYnVpbGQncyBEVVJBVElPTlxuICogaW50byBgY3B1Q3JlZGl0c2AgKG9uZSBjcmVkaXQgPSBvbmUgdkNQVS1taW51dGUpLlxuICpcbiAqIERlcml2ZWQgZnJvbSB0aGUgc2FtZSBBV1MgdGFibGUgdGhlIGBDb21wdXRlVHlwZWAgZG9jIGFib3ZlIGNpdGVzLCBhbmQga2VwdFxuICogYmVzaWRlIGl0IG9uIHB1cnBvc2U6IHRoZSBtZW1vcnkvdkNQVSBmaWd1cmVzIGluIHRoYXQgY29tbWVudCBhbmQgdGhlIG51bWJlcnNcbiAqIGhlcmUgYXJlIHRoZSBzYW1lIGZhY3QsIGFuZCBzcGxpdHRpbmcgdGhlbSBpcyBob3cgb25lIGdldHMgdXBkYXRlZCBhbG9uZS5cbiAqXG4gKiBgWDJfTEFSR0VgIGlzIDcyIHZDUFUg4oCUIHRoaXJ0eS1zaXggdGltZXMgU01BTEwuIFRoYXQgcmF0aW8gaXMgd2h5IHBpcGVsaW5lXG4gKiBleGVjdXRpb24gY2Fubm90IGJlIGNoYXJnZWQgYnkgd2FsbC1jbG9jayBhbG9uZSwgYW5kIHdoeSBpbmdlc3RpbmcgaXRcbiAqIChQaGFzZSA0KSByZS1kZXJpdmVzIHRoZSB0aWVyIGxhZGRlciByYXRoZXIgdGhhbiBzaW1wbHkgYWRkaW5nIHRvIGl0LlxuICovXG5leHBvcnQgY29uc3QgQ09ERUJVSUxEX0NPTVBVVEVfVkNQVTogUmVhZG9ubHk8UmVjb3JkPENvbXB1dGVUeXBlLCBudW1iZXI+PiA9IHtcbiAgU01BTEw6IDIsXG4gIE1FRElVTTogNCxcbiAgTEFSR0U6IDgsXG4gIFgyX0xBUkdFOiA3Mixcbn07XG5cbi8qKlxuICogQVdTJ3Mgb3duIHNwZWxsaW5nIG9mIGEgY29tcHV0ZSBzaXplLCBhcyBgQmF0Y2hHZXRCdWlsZHNgIHJldHVybnMgaXRcbiAqIChgZW52aXJvbm1lbnQuY29tcHV0ZVR5cGVgKSwgbmFycm93ZWQgdG8gb3Vycy5cbiAqXG4gKiBOZWVkZWQgYmVjYXVzZSB0aGUgdHdvIHZvY2FidWxhcmllcyBkaWZmZXI6IHRoZSBwaXBlbGluZSBjb25maWcgc3RvcmVzXG4gKiBgTUVESVVNYCwgQVdTIGFuc3dlcnMgYEJVSUxEX0dFTkVSQUwxX01FRElVTWAsIGFuZCBhIHdyb25nIG1hdGNoIGhlcmUgd291bGRcbiAqIHByaWNlIGEgYnVpbGQgYXQgdGhlIHdyb25nIHZDUFUgcmF0aGVyIHRoYW4gZmFpbGluZyB2aXNpYmx5LiBBbnl0aGluZ1xuICogdW5yZWNvZ25pc2VkIHJldHVybnMgYG51bGxgIOKAlCBhbiB1bmtub3duIHNpemUgbXVzdCBiZSByZXBvcnRlZCBhcyB1bmtub3duLCBub3RcbiAqIHNpbGVudGx5IHByaWNlZCBhcyBTTUFMTCwgd2hpY2ggaXMgdGhlIGNoZWFwZXN0IGFuZCB0aGVyZWZvcmUgdGhlIG1vc3RcbiAqIGZsYXR0ZXJpbmcgZ3Vlc3MuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBub3JtYWxpemVDb21wdXRlVHlwZShyYXc6IHN0cmluZyB8IHVuZGVmaW5lZCB8IG51bGwpOiBDb21wdXRlVHlwZSB8IG51bGwge1xuICBpZiAoIXJhdykgcmV0dXJuIG51bGw7XG4gIGNvbnN0IHVwcGVyID0gcmF3LnRvVXBwZXJDYXNlKCk7XG4gIGNvbnN0IGJhcmUgPSB1cHBlci5zdGFydHNXaXRoKCdCVUlMRF9HRU5FUkFMMV8nKSA/IHVwcGVyLnNsaWNlKCdCVUlMRF9HRU5FUkFMMV8nLmxlbmd0aCkgOiB1cHBlcjtcbiAgLy8gQVdTIHNwZWxscyB0aGUgbGFyZ2VzdCBvbmUgYDJYTEFSR0VgOyBvdXJzIGlzIGBYMl9MQVJHRWAuXG4gIGNvbnN0IGtleSA9IGJhcmUgPT09ICcyWExBUkdFJyB8fCBiYXJlID09PSAnWDJMQVJHRScgPyAnWDJfTEFSR0UnIDogYmFyZTtcbiAgcmV0dXJuIChPYmplY3Qua2V5cyhDT0RFQlVJTERfQ09NUFVURV9WQ1BVKSBhcyBDb21wdXRlVHlwZVtdKS5maW5kKChjKSA9PiBjID09PSBrZXkpID8/IG51bGw7XG59XG5cbi8qKlxuICogQ3JlZGl0cyBvbmUgQ29kZUJ1aWxkIGFjdGlvbiBjb25zdW1lZCwgZnJvbSBpdHMgZHVyYXRpb24gYW5kIGNvbXB1dGUgc2l6ZS5cbiAqXG4gKiBSb3VuZHMgVVAgdG8gdGhlIHdob2xlIGNyZWRpdCwgbWF0Y2hpbmcgdGhlIHBsdWdpbi1idWlsZCBtZXRlclxuICogKGBjcmVkaXRzRm9yQnVpbGRgKSDigJQgdHdvIG1ldGVycyBmZWVkaW5nIG9uZSBjb3VudGVyIG11c3Qgcm91bmQgdGhlIHNhbWUgd2F5XG4gKiBvciB0aGUgY291bnRlciBtZWFucyBuZWl0aGVyLlxuICpcbiAqIFJldHVybnMgYG51bGxgIHJhdGhlciB0aGFuIDAgd2hlbiBlaXRoZXIgaW5wdXQgaXMgbWlzc2luZywgYW5kIHRoZSBkaXN0aW5jdGlvblxuICogaXMgdGhlIHBvaW50OiBhIGJ1aWxkIHdpdGggbm8gbWVhc3VyZWQgZHVyYXRpb24gd2FzIG5vdCBvYnNlcnZlZCwgYW5kXG4gKiByZXBvcnRpbmcgdGhhdCBhcyB6ZXJvIGNvbnN1bXB0aW9uIHdvdWxkIG1ha2UgdGhlIGNvdmVyYWdlIGdhcCBsb29rIGxpa2VcbiAqIGlkbGVuZXNzLiBUaGUgaW5nZXN0IGNvdW50cyB0aG9zZSBzZXBhcmF0ZWx5IChgbWVhc3VyZWQ9XCJmYWxzZVwiYCkgc28gdGhlXG4gKiBjb3ZlcmFnZSByYXRpbyBpcyB2aXNpYmxlIEJFRk9SRSBhbnlvbmUgcHJpY2VzIGEgdGllciBvZmYgdGhpcyBzZXJpZXMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjb21wdXRlQ3JlZGl0c0ZvcihkdXJhdGlvbk1zOiBudW1iZXIgfCBudWxsIHwgdW5kZWZpbmVkLCBjb21wdXRlVHlwZTogQ29tcHV0ZVR5cGUgfCBudWxsKTogbnVtYmVyIHwgbnVsbCB7XG4gIGlmIChkdXJhdGlvbk1zID09IG51bGwgfHwgIShkdXJhdGlvbk1zID4gMCkgfHwgIWNvbXB1dGVUeXBlKSByZXR1cm4gbnVsbDtcbiAgcmV0dXJuIE1hdGguY2VpbCgoZHVyYXRpb25NcyAvIDYwXzAwMCkgKiBDT0RFQlVJTERfQ09NUFVURV9WQ1BVW2NvbXB1dGVUeXBlXSk7XG59XG5cbi8qKlxuICogVHlwZXMgb2YgcGlwZWxpbmUgc3RlcHMgdGhhdCBjYW4gYmUgY3JlYXRlZCBieSBwbHVnaW5zXG4gKlxuICogQHByb3BlcnR5IENPREVfQlVJTERfU1RFUCAtIEZ1bGwgQ29kZUJ1aWxkIHN0ZXAgd2l0aCBjdXN0b20gYnVpbGQgZW52aXJvbm1lbnRcbiAqIEBwcm9wZXJ0eSBTSEVMTF9TVEVQIC0gU2ltcGxlIHNoZWxsIHN0ZXAgd2l0aG91dCBjdXN0b20gYnVpbGQgZW52aXJvbm1lbnRcbiAqIEBwcm9wZXJ0eSBNQU5VQUxfQVBQUk9WQUxfU1RFUCAtIE5hdGl2ZSBDREsgYXBwcm92YWwgZ2F0ZSAobm8gRG9ja2VyIGltYWdlLCBubyBjb21tYW5kcylcbiAqIEBwcm9wZXJ0eSBCVUlMRF9JTUFHRSAtIEEgbWFuYWdlZCB0b29sY2hhaW4gYnVpbGQgaW1hZ2UgKGBwaXBlbGluZS1ib290c3RyYXBgKTogbmV2ZXIgYSBzdGVwXG4gKi9cbmV4cG9ydCBjb25zdCBQbHVnaW5UeXBlID0ge1xuICBDT0RFX0JVSUxEX1NURVA6ICdDb2RlQnVpbGRTdGVwJyxcbiAgU0hFTExfU1RFUDogJ1NoZWxsU3RlcCcsXG4gIE1BTlVBTF9BUFBST1ZBTF9TVEVQOiAnTWFudWFsQXBwcm92YWxTdGVwJyxcbiAgQlVJTERfSU1BR0U6ICdCdWlsZEltYWdlJyxcbn0gYXMgY29uc3Q7XG5leHBvcnQgdHlwZSBQbHVnaW5UeXBlID0gVmFsdWVPZjx0eXBlb2YgUGx1Z2luVHlwZT47XG5cbi8qKlxuICogTWV0YWRhdGEgdHlwZSBmb3Igc3RvcmluZyBjb25maWd1cmF0aW9uIGFuZCBjdXN0b20gcHJvcGVydGllc1xuICpcbiAqIFN1cHBvcnRzOlxuICogLSBTdGFuZGFyZCBrZXktdmFsdWUgcGFpcnMgKHN0cmluZywgYm9vbGVhbiwgbnVtYmVyKVxuICogLSBDdXN0b20gQVdTIENESyBrZXlzIHdpdGggdGhlIHBhdHRlcm4gYGF3czpjZGs6e25hbWVzcGFjZX06e2tleX1gXG4gKiAgIChhbGwgbG93ZXJjYXNlIOKAlCBtYXRjaGVzIHRoZSBmb3JtYXQgcHJvZHVjZWQgYnkgYGdldEN1c3RvbUtleWApXG4gKlxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGNvbnN0IG1ldGFkYXRhOiBNZXRhRGF0YVR5cGUgPSB7XG4gKiAgIEJVSUxEX0VOVjogJ3Byb2R1Y3Rpb24nLFxuICogICBOT0RFX1ZFUlNJT046ICcxOCcsXG4gKiAgIEVOQUJMRV9DQUNIRTogdHJ1ZSxcbiAqICAgTUFYX1JFVFJJRVM6IDNcbiAqIH07XG4gKiBgYGBcbiAqL1xuZXhwb3J0IHR5cGUgTWV0YURhdGFUeXBlID1cbiAgUmVjb3JkPHN0cmluZywgc3RyaW5nIHwgYm9vbGVhbiB8IG51bWJlcj4gJlxuICB7IFtLIGluIGBhd3M6Y2RrOiR7c3RyaW5nfWBdPzogdW5rbm93biB9O1xuIl19
|
|
@@ -33,3 +33,47 @@ export declare const METADATA_SOURCES: readonly ['spec', 'readme', 'dockerfile',
|
|
|
33
33
|
export type MetadataSource = typeof METADATA_SOURCES[number];
|
|
34
34
|
/** Per-field provenance of a version's catalog metadata. */
|
|
35
35
|
export type MetadataSources = Partial<Record<PluginCatalogField, MetadataSource>>;
|
|
36
|
+
/**
|
|
37
|
+
* The managed toolchain plugins. `pipeline-bootstrap` (the CodeBuild image the
|
|
38
|
+
* synth and self-mutation run on) and `cdk-synth` (the synth step) are ONE
|
|
39
|
+
* release, published by the system org. Their names are reserved: only the
|
|
40
|
+
* system org creates rows with them, they are never listed in the ecosystem,
|
|
41
|
+
* an upload never promotes or overwrites them, and their lifecycle (default,
|
|
42
|
+
* deprecate, yank, delete) is driven only by the Toolchain console, never the
|
|
43
|
+
* generic plugin routes. Here (dependency-free) so the browser shares the list.
|
|
44
|
+
*/
|
|
45
|
+
export declare const MANAGED_TOOLCHAIN_PLUGINS: readonly ['pipeline-bootstrap', 'cdk-synth'];
|
|
46
|
+
export type ManagedToolchainPlugin = typeof MANAGED_TOOLCHAIN_PLUGINS[number];
|
|
47
|
+
/** Whether `name` is one of the reserved {@link MANAGED_TOOLCHAIN_PLUGINS} (exact, case-insensitive). */
|
|
48
|
+
export declare function isManagedToolchainPlugin(name: string | null | undefined): name is ManagedToolchainPlugin;
|
|
49
|
+
/**
|
|
50
|
+
* The managed toolchain name a plugin REFERENCE resolves, or null: the
|
|
51
|
+
* reference's `filter.name` wins over its `name` (as in pipeline-core's
|
|
52
|
+
* `pluginLookupFilter`), so `{ name: 'BuildSynth', filter: { name: 'cdk-synth' } }`
|
|
53
|
+
* is a managed `cdk-synth`.
|
|
54
|
+
*/
|
|
55
|
+
export declare function managedToolchainRefName(ref: {
|
|
56
|
+
name?: unknown;
|
|
57
|
+
filter?: unknown;
|
|
58
|
+
} | null | undefined): ManagedToolchainPlugin | null;
|
|
59
|
+
/**
|
|
60
|
+
* Whether a managed reference's filter pins its own version (exact or range) or
|
|
61
|
+
* row id. Refused: a managed half is pinned only as a whole release
|
|
62
|
+
* (`toolchain.release`, TOOLCHAIN_PIN_VIA_RELEASE).
|
|
63
|
+
*/
|
|
64
|
+
export declare function managedRefPinsVersion(filter: unknown): boolean;
|
|
65
|
+
/** A pipeline's `toolchain.release` pin (its props), when it carries one. */
|
|
66
|
+
export declare function toolchainReleasePin(props: unknown): string | undefined;
|
|
67
|
+
/**
|
|
68
|
+
* Where a pipeline's BUILD IMAGE (the toolchain release's `pipeline-bootstrap`
|
|
69
|
+
* half) is recorded in its deployed step manifest (docs/plans/
|
|
70
|
+
* bootstrap-image-versioning.md §4). The bootstrap is not a step, so its entry
|
|
71
|
+
* is a non-step row: `step_key` is {@link BUILD_IMAGE_STEP_KEY} (the key its
|
|
72
|
+
* lookup warnings are recorded under too) and its (stage, action) are these
|
|
73
|
+
* sentinels. The stage name holds characters CodePipeline never allows in a
|
|
74
|
+
* stage name, so event ingest's (pipeline, stage, action) join can never match
|
|
75
|
+
* it to a real action.
|
|
76
|
+
*/
|
|
77
|
+
export declare const BUILD_IMAGE_STEP_KEY = "build-image";
|
|
78
|
+
export declare const BUILD_IMAGE_MANIFEST_STAGE = "(toolchain)";
|
|
79
|
+
export declare const BUILD_IMAGE_MANIFEST_ACTION = "build-image";
|
|
@@ -36,4 +36,66 @@ export const PLUGIN_CATALOG_FIELDS = [
|
|
|
36
36
|
export const PLUGIN_CATALOG_LINK_FIELDS = ['homepageUrl', 'sourceUrl', 'documentationUrl'];
|
|
37
37
|
/** Where a catalog field's value came from (stored per version in `metadata_sources`; `user` = edited by a person). */
|
|
38
38
|
export const METADATA_SOURCES = ['spec', 'readme', 'dockerfile', 'derived', 'user'];
|
|
39
|
-
|
|
39
|
+
// -----------------------------------------------------------------------------
|
|
40
|
+
// Managed toolchain names (docs/plans/bootstrap-image-versioning.md §1, D5)
|
|
41
|
+
// -----------------------------------------------------------------------------
|
|
42
|
+
/**
|
|
43
|
+
* The managed toolchain plugins. `pipeline-bootstrap` (the CodeBuild image the
|
|
44
|
+
* synth and self-mutation run on) and `cdk-synth` (the synth step) are ONE
|
|
45
|
+
* release, published by the system org. Their names are reserved: only the
|
|
46
|
+
* system org creates rows with them, they are never listed in the ecosystem,
|
|
47
|
+
* an upload never promotes or overwrites them, and their lifecycle (default,
|
|
48
|
+
* deprecate, yank, delete) is driven only by the Toolchain console, never the
|
|
49
|
+
* generic plugin routes. Here (dependency-free) so the browser shares the list.
|
|
50
|
+
*/
|
|
51
|
+
export const MANAGED_TOOLCHAIN_PLUGINS = ['pipeline-bootstrap', 'cdk-synth'];
|
|
52
|
+
/** Whether `name` is one of the reserved {@link MANAGED_TOOLCHAIN_PLUGINS} (exact, case-insensitive). */
|
|
53
|
+
export function isManagedToolchainPlugin(name) {
|
|
54
|
+
if (typeof name !== 'string')
|
|
55
|
+
return false;
|
|
56
|
+
return MANAGED_TOOLCHAIN_PLUGINS.includes(name.trim().toLowerCase());
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* The managed toolchain name a plugin REFERENCE resolves, or null: the
|
|
60
|
+
* reference's `filter.name` wins over its `name` (as in pipeline-core's
|
|
61
|
+
* `pluginLookupFilter`), so `{ name: 'BuildSynth', filter: { name: 'cdk-synth' } }`
|
|
62
|
+
* is a managed `cdk-synth`.
|
|
63
|
+
*/
|
|
64
|
+
export function managedToolchainRefName(ref) {
|
|
65
|
+
if (!ref)
|
|
66
|
+
return null;
|
|
67
|
+
const filterName = ref.filter && typeof ref.filter === 'object' ? ref.filter.name : undefined;
|
|
68
|
+
const name = typeof filterName === 'string' && filterName !== '' ? filterName : ref.name;
|
|
69
|
+
return typeof name === 'string' && isManagedToolchainPlugin(name) ? name.trim().toLowerCase() : null;
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* Whether a managed reference's filter pins its own version (exact or range) or
|
|
73
|
+
* row id. Refused: a managed half is pinned only as a whole release
|
|
74
|
+
* (`toolchain.release`, TOOLCHAIN_PIN_VIA_RELEASE).
|
|
75
|
+
*/
|
|
76
|
+
export function managedRefPinsVersion(filter) {
|
|
77
|
+
if (!filter || typeof filter !== 'object')
|
|
78
|
+
return false;
|
|
79
|
+
const { version, id } = filter;
|
|
80
|
+
return (typeof version === 'string' && version.trim() !== '') || id !== undefined;
|
|
81
|
+
}
|
|
82
|
+
/** A pipeline's `toolchain.release` pin (its props), when it carries one. */
|
|
83
|
+
export function toolchainReleasePin(props) {
|
|
84
|
+
const toolchain = props && typeof props === 'object' ? props.toolchain : undefined;
|
|
85
|
+
const release = toolchain && typeof toolchain === 'object' ? toolchain.release : undefined;
|
|
86
|
+
return typeof release === 'string' && release.trim() !== '' ? release.trim() : undefined;
|
|
87
|
+
}
|
|
88
|
+
/**
|
|
89
|
+
* Where a pipeline's BUILD IMAGE (the toolchain release's `pipeline-bootstrap`
|
|
90
|
+
* half) is recorded in its deployed step manifest (docs/plans/
|
|
91
|
+
* bootstrap-image-versioning.md §4). The bootstrap is not a step, so its entry
|
|
92
|
+
* is a non-step row: `step_key` is {@link BUILD_IMAGE_STEP_KEY} (the key its
|
|
93
|
+
* lookup warnings are recorded under too) and its (stage, action) are these
|
|
94
|
+
* sentinels. The stage name holds characters CodePipeline never allows in a
|
|
95
|
+
* stage name, so event ingest's (pipeline, stage, action) join can never match
|
|
96
|
+
* it to a real action.
|
|
97
|
+
*/
|
|
98
|
+
export const BUILD_IMAGE_STEP_KEY = 'build-image';
|
|
99
|
+
export const BUILD_IMAGE_MANIFEST_STAGE = '(toolchain)';
|
|
100
|
+
export const BUILD_IMAGE_MANIFEST_ACTION = 'build-image';
|
|
101
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGx1Z2luLWNhdGFsb2cuanMiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy90eXBlcy9wbHVnaW4tY2F0YWxvZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwrQ0FBK0M7QUFDL0Msc0NBQXNDO0FBRXRDOzs7Ozs7R0FNRztBQUVILDBCQUEwQjtBQUMxQixNQUFNLENBQUMsTUFBTSxrQkFBa0IsR0FBRyxHQUFHLENBQUM7QUFDdEMscUNBQXFDO0FBQ3JDLE1BQU0sQ0FBQyxNQUFNLHNCQUFzQixHQUFHLElBQUksQ0FBQztBQUMzQyxxQ0FBcUM7QUFDckMsTUFBTSxDQUFDLE1BQU0sdUJBQXVCLEdBQUcsR0FBRyxDQUFDO0FBQzNDLG9EQUFvRDtBQUNwRCxNQUFNLENBQUMsTUFBTSxtQkFBbUIsR0FBRyxFQUFFLENBQUM7QUFDdEMsTUFBTSxDQUFDLE1BQU0seUJBQXlCLEdBQUcsRUFBRSxDQUFDO0FBQzVDLG9DQUFvQztBQUNwQyxNQUFNLENBQUMsTUFBTSx1QkFBdUIsR0FBRyxFQUFFLEdBQUcsSUFBSSxDQUFDO0FBQ2pELHNDQUFzQztBQUN0QyxNQUFNLENBQUMsTUFBTSwwQkFBMEIsR0FBRyxFQUFFLEdBQUcsSUFBSSxDQUFDO0FBQ3BELG1DQUFtQztBQUNuQyxNQUFNLENBQUMsTUFBTSxjQUFjLEdBQUcsSUFBSSxDQUFDO0FBRW5DLDZHQUE2RztBQUM3RyxNQUFNLENBQUMsTUFBTSxpQkFBaUIsR0FBRztJQUMvQixVQUFVLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsVUFBVTtJQUMzRCxRQUFRLEVBQUUsZ0JBQWdCLEVBQUUsU0FBUyxFQUFFLGNBQWMsRUFBRSxJQUFJO0NBQ25ELENBQUM7QUFHWCxvRUFBb0U7QUFDcEUsTUFBTSxDQUFDLE1BQU0scUJBQXFCLEdBQUc7SUFDbkMsYUFBYSxFQUFFLFNBQVMsRUFBRSxhQUFhLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBRSxTQUFTO0lBQzFFLGFBQWEsRUFBRSxXQUFXLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxFQUFFLFdBQVcsRUFBRSxRQUFRO0NBQ3JFLENBQUM7QUFHWCxxRUFBcUU7QUFDckUsTUFBTSxDQUFDLE1BQU0sMEJBQTBCLEdBQXNDLENBQUMsYUFBYSxFQUFFLFdBQVcsRUFBRSxrQkFBa0IsQ0FBQyxDQUFDO0FBRTlILHVIQUF1SDtBQUN2SCxNQUFNLENBQUMsTUFBTSxnQkFBZ0IsR0FBRyxDQUFDLE1BQU0sRUFBRSxRQUFRLEVBQUUsWUFBWSxFQUFFLFNBQVMsRUFBRSxNQUFNLENBQVUsQ0FBQztBQUs3RixnRkFBZ0Y7QUFDaEYsNEVBQTRFO0FBQzVFLGdGQUFnRjtBQUVoRjs7Ozs7Ozs7R0FRRztBQUNILE1BQU0sQ0FBQyxNQUFNLHlCQUF5QixHQUFHLENBQUMsb0JBQW9CLEVBQUUsV0FBVyxDQUFVLENBQUM7QUFHdEYseUdBQXlHO0FBQ3pHLE1BQU0sVUFBVSx3QkFBd0IsQ0FBQyxJQUErQjtJQUN0RSxJQUFJLE9BQU8sSUFBSSxLQUFLLFFBQVE7UUFBRSxPQUFPLEtBQUssQ0FBQztJQUMzQyxPQUFRLHlCQUErQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQztBQUM5RixDQUFDO0FBRUQ7Ozs7O0dBS0c7QUFDSCxNQUFNLFVBQVUsdUJBQXVCLENBQUMsR0FBNEQ7SUFDbEcsSUFBSSxDQUFDLEdBQUc7UUFBRSxPQUFPLElBQUksQ0FBQztJQUN0QixNQUFNLFVBQVUsR0FBRyxHQUFHLENBQUMsTUFBTSxJQUFJLE9BQU8sR0FBRyxDQUFDLE1BQU0sS0FBSyxRQUFRLENBQUMsQ0FBQyxDQUFFLEdBQUcsQ0FBQyxNQUE2QixDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDO0lBQ3RILE1BQU0sSUFBSSxHQUFHLE9BQU8sVUFBVSxLQUFLLFFBQVEsSUFBSSxVQUFVLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUM7SUFDekYsT0FBTyxPQUFPLElBQUksS0FBSyxRQUFRLElBQUksd0JBQXdCLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxXQUFXLEVBQTRCLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztBQUNqSSxDQUFDO0FBRUQ7Ozs7R0FJRztBQUNILE1BQU0sVUFBVSxxQkFBcUIsQ0FBQyxNQUFlO0lBQ25ELElBQUksQ0FBQyxNQUFNLElBQUksT0FBTyxNQUFNLEtBQUssUUFBUTtRQUFFLE9BQU8sS0FBSyxDQUFDO0lBQ3hELE1BQU0sRUFBRSxPQUFPLEVBQUUsRUFBRSxFQUFFLEdBQUcsTUFBNkMsQ0FBQztJQUN0RSxPQUFPLENBQUMsT0FBTyxPQUFPLEtBQUssUUFBUSxJQUFJLE9BQU8sQ0FBQyxJQUFJLEVBQUUsS0FBSyxFQUFFLENBQUMsSUFBSSxFQUFFLEtBQUssU0FBUyxDQUFDO0FBQ3BGLENBQUM7QUFFRCw2RUFBNkU7QUFDN0UsTUFBTSxVQUFVLG1CQUFtQixDQUFDLEtBQWM7SUFDaEQsTUFBTSxTQUFTLEdBQUcsS0FBSyxJQUFJLE9BQU8sS0FBSyxLQUFLLFFBQVEsQ0FBQyxDQUFDLENBQUUsS0FBaUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQztJQUNoSCxNQUFNLE9BQU8sR0FBRyxTQUFTLElBQUksT0FBTyxTQUFTLEtBQUssUUFBUSxDQUFDLENBQUMsQ0FBRSxTQUFtQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDO0lBQ3RILE9BQU8sT0FBTyxPQUFPLEtBQUssUUFBUSxJQUFJLE9BQU8sQ0FBQyxJQUFJLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDO0FBQzNGLENBQUM7QUFFRDs7Ozs7Ozs7O0dBU0c7QUFDSCxNQUFNLENBQUMsTUFBTSxvQkFBb0IsR0FBRyxhQUFhLENBQUM7QUFDbEQsTUFBTSxDQUFDLE1BQU0sMEJBQTBCLEdBQUcsYUFBYSxDQUFDO0FBQ3hELE1BQU0sQ0FBQyxNQUFNLDJCQUEyQixHQUFHLGFBQWEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCAyMDI2IFBpcGVsaW5lIEJ1aWxkZXIgQ29udHJpYnV0b3JzXG4vLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMFxuXG4vKipcbiAqIFBsdWdpbiBjYXRhbG9nIHZvY2FidWxhcnk6IHRoZSBkZXNjcmlwdGl2ZSAoZWRpdGFibGUpIGZpZWxkcyBvZiBhIHBsdWdpblxuICogdmVyc2lvbiwgdGhlIGNhdGVnb3J5IGlkcywgdGhlIHBlci1maWVsZCBwcm92ZW5hbmNlIHZhbHVlcyBhbmQgdGhlIHNpemVcbiAqIGxpbWl0cy4gRGVwZW5kZW5jeS1mcmVlIHNvIHRoZSBicm93c2VyIGltcG9ydHMgaXQgdGhyb3VnaCB0aGVcbiAqIGBAcGlwZWxpbmUtYnVpbGRlci9hcGktY29yZS9wbHVnaW4tY2F0YWxvZ2Agc3VicGF0aDsgdGhlIFpvZCB2YWxpZGF0b3JzIGJ1aWx0XG4gKiBvbiBpdCBsaXZlIGluIGB2YWxpZGF0aW9uL3BsdWdpbi1jYXRhbG9nLW1ldGFkYXRhLnRzYC5cbiAqL1xuXG4vKiogQ2FyZCBvbmUtbGluZXIgY2FwLiAqL1xuZXhwb3J0IGNvbnN0IFBMVUdJTl9TVU1NQVJZX01BWCA9IDE2MDtcbi8qKiBgZGVzY3JpcHRpb25gIGNhcCwgY2hhcmFjdGVycy4gKi9cbmV4cG9ydCBjb25zdCBQTFVHSU5fREVTQ1JJUFRJT05fTUFYID0gMjAwMDtcbi8qKiBgZGlzcGxheU5hbWVgIGNhcCwgY2hhcmFjdGVycy4gKi9cbmV4cG9ydCBjb25zdCBQTFVHSU5fRElTUExBWV9OQU1FX01BWCA9IDEwMDtcbi8qKiBNYXgga2V5d29yZHMsIGFuZCBtYXggY2hhcmFjdGVycyBwZXIga2V5d29yZC4gKi9cbmV4cG9ydCBjb25zdCBQTFVHSU5fS0VZV09SRFNfTUFYID0gMTA7XG5leHBvcnQgY29uc3QgUExVR0lOX0tFWVdPUkRfTUFYX0xFTkdUSCA9IDMyO1xuLyoqIFJFQURNRS5tZCBjYXAsIGJ5dGVzIChVVEYtOCkuICovXG5leHBvcnQgY29uc3QgUExVR0lOX1JFQURNRV9NQVhfQllURVMgPSA2NCAqIDEwMjQ7XG4vKiogYGNoYW5nZWxvZ2AgY2FwLCBieXRlcyAoVVRGLTgpLiAqL1xuZXhwb3J0IGNvbnN0IFBMVUdJTl9DSEFOR0VMT0dfTUFYX0JZVEVTID0gMzIgKiAxMDI0O1xuLyoqIFByb2plY3QgVVJMIGNhcCwgY2hhcmFjdGVycy4gKi9cbmV4cG9ydCBjb25zdCBQTFVHSU5fVVJMX01BWCA9IDIwNDg7XG5cbi8qKiBDYW5vbmljYWwgcGx1Z2luIGNhdGVnb3JpZXMgKHRoZSBkaXJlY3RvcnkncyBjYXRlZ29yeSBncmlkLCBgcGx1Z2luLXNwZWMueWFtbGAsIGByZXBvcnQtc2NoZW1hLmpzb25gKS4gKi9cbmV4cG9ydCBjb25zdCBQTFVHSU5fQ0FURUdPUklFUyA9IFtcbiAgJ2xhbmd1YWdlJywgJ3NlY3VyaXR5JywgJ3F1YWxpdHknLCAnbW9uaXRvcmluZycsICdhcnRpZmFjdCcsXG4gICdkZXBsb3knLCAnaW5mcmFzdHJ1Y3R1cmUnLCAndGVzdGluZycsICdub3RpZmljYXRpb24nLCAnYWknLFxuXSBhcyBjb25zdDtcbmV4cG9ydCB0eXBlIFBsdWdpbkNhdGFsb2dDYXRlZ29yeSA9IHR5cGVvZiBQTFVHSU5fQ0FURUdPUklFU1tudW1iZXJdO1xuXG4vKiogRXZlcnkgZGVzY3JpcHRpdmUgKGVkaXRhYmxlKSBjYXRhbG9nIGZpZWxkLCBpbiBkaXNwbGF5IG9yZGVyLiAqL1xuZXhwb3J0IGNvbnN0IFBMVUdJTl9DQVRBTE9HX0ZJRUxEUyA9IFtcbiAgJ2Rpc3BsYXlOYW1lJywgJ3N1bW1hcnknLCAnZGVzY3JpcHRpb24nLCAnY2F0ZWdvcnknLCAna2V5d29yZHMnLCAnbGljZW5zZScsXG4gICdob21lcGFnZVVybCcsICdzb3VyY2VVcmwnLCAnZG9jdW1lbnRhdGlvblVybCcsICdpY29uJywgJ2NoYW5nZWxvZycsICdyZWFkbWUnLFxuXSBhcyBjb25zdDtcbmV4cG9ydCB0eXBlIFBsdWdpbkNhdGFsb2dGaWVsZCA9IHR5cGVvZiBQTFVHSU5fQ0FUQUxPR19GSUVMRFNbbnVtYmVyXTtcblxuLyoqIFRoZSBsaW5rIGZpZWxkcyDigJQgYSB1c2VyLWVkaXRlZCBsaW5rIGlzIGhpZ2hsaWdodGVkIGluIHJldmlldy4gKi9cbmV4cG9ydCBjb25zdCBQTFVHSU5fQ0FUQUxPR19MSU5LX0ZJRUxEUzogUmVhZG9ubHlBcnJheTxQbHVnaW5DYXRhbG9nRmllbGQ+ID0gWydob21lcGFnZVVybCcsICdzb3VyY2VVcmwnLCAnZG9jdW1lbnRhdGlvblVybCddO1xuXG4vKiogV2hlcmUgYSBjYXRhbG9nIGZpZWxkJ3MgdmFsdWUgY2FtZSBmcm9tIChzdG9yZWQgcGVyIHZlcnNpb24gaW4gYG1ldGFkYXRhX3NvdXJjZXNgOyBgdXNlcmAgPSBlZGl0ZWQgYnkgYSBwZXJzb24pLiAqL1xuZXhwb3J0IGNvbnN0IE1FVEFEQVRBX1NPVVJDRVMgPSBbJ3NwZWMnLCAncmVhZG1lJywgJ2RvY2tlcmZpbGUnLCAnZGVyaXZlZCcsICd1c2VyJ10gYXMgY29uc3Q7XG5leHBvcnQgdHlwZSBNZXRhZGF0YVNvdXJjZSA9IHR5cGVvZiBNRVRBREFUQV9TT1VSQ0VTW251bWJlcl07XG4vKiogUGVyLWZpZWxkIHByb3ZlbmFuY2Ugb2YgYSB2ZXJzaW9uJ3MgY2F0YWxvZyBtZXRhZGF0YS4gKi9cbmV4cG9ydCB0eXBlIE1ldGFkYXRhU291cmNlcyA9IFBhcnRpYWw8UmVjb3JkPFBsdWdpbkNhdGFsb2dGaWVsZCwgTWV0YWRhdGFTb3VyY2U+PjtcblxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIE1hbmFnZWQgdG9vbGNoYWluIG5hbWVzIChkb2NzL3BsYW5zL2Jvb3RzdHJhcC1pbWFnZS12ZXJzaW9uaW5nLm1kIMKnMSwgRDUpXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4vKipcbiAqIFRoZSBtYW5hZ2VkIHRvb2xjaGFpbiBwbHVnaW5zLiBgcGlwZWxpbmUtYm9vdHN0cmFwYCAodGhlIENvZGVCdWlsZCBpbWFnZSB0aGVcbiAqIHN5bnRoIGFuZCBzZWxmLW11dGF0aW9uIHJ1biBvbikgYW5kIGBjZGstc3ludGhgICh0aGUgc3ludGggc3RlcCkgYXJlIE9ORVxuICogcmVsZWFzZSwgcHVibGlzaGVkIGJ5IHRoZSBzeXN0ZW0gb3JnLiBUaGVpciBuYW1lcyBhcmUgcmVzZXJ2ZWQ6IG9ubHkgdGhlXG4gKiBzeXN0ZW0gb3JnIGNyZWF0ZXMgcm93cyB3aXRoIHRoZW0sIHRoZXkgYXJlIG5ldmVyIGxpc3RlZCBpbiB0aGUgZWNvc3lzdGVtLFxuICogYW4gdXBsb2FkIG5ldmVyIHByb21vdGVzIG9yIG92ZXJ3cml0ZXMgdGhlbSwgYW5kIHRoZWlyIGxpZmVjeWNsZSAoZGVmYXVsdCxcbiAqIGRlcHJlY2F0ZSwgeWFuaywgZGVsZXRlKSBpcyBkcml2ZW4gb25seSBieSB0aGUgVG9vbGNoYWluIGNvbnNvbGUsIG5ldmVyIHRoZVxuICogZ2VuZXJpYyBwbHVnaW4gcm91dGVzLiBIZXJlIChkZXBlbmRlbmN5LWZyZWUpIHNvIHRoZSBicm93c2VyIHNoYXJlcyB0aGUgbGlzdC5cbiAqL1xuZXhwb3J0IGNvbnN0IE1BTkFHRURfVE9PTENIQUlOX1BMVUdJTlMgPSBbJ3BpcGVsaW5lLWJvb3RzdHJhcCcsICdjZGstc3ludGgnXSBhcyBjb25zdDtcbmV4cG9ydCB0eXBlIE1hbmFnZWRUb29sY2hhaW5QbHVnaW4gPSB0eXBlb2YgTUFOQUdFRF9UT09MQ0hBSU5fUExVR0lOU1tudW1iZXJdO1xuXG4vKiogV2hldGhlciBgbmFtZWAgaXMgb25lIG9mIHRoZSByZXNlcnZlZCB7QGxpbmsgTUFOQUdFRF9UT09MQ0hBSU5fUExVR0lOU30gKGV4YWN0LCBjYXNlLWluc2Vuc2l0aXZlKS4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc01hbmFnZWRUb29sY2hhaW5QbHVnaW4obmFtZTogc3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZCk6IG5hbWUgaXMgTWFuYWdlZFRvb2xjaGFpblBsdWdpbiB7XG4gIGlmICh0eXBlb2YgbmFtZSAhPT0gJ3N0cmluZycpIHJldHVybiBmYWxzZTtcbiAgcmV0dXJuIChNQU5BR0VEX1RPT0xDSEFJTl9QTFVHSU5TIGFzIHJlYWRvbmx5IHN0cmluZ1tdKS5pbmNsdWRlcyhuYW1lLnRyaW0oKS50b0xvd2VyQ2FzZSgpKTtcbn1cblxuLyoqXG4gKiBUaGUgbWFuYWdlZCB0b29sY2hhaW4gbmFtZSBhIHBsdWdpbiBSRUZFUkVOQ0UgcmVzb2x2ZXMsIG9yIG51bGw6IHRoZVxuICogcmVmZXJlbmNlJ3MgYGZpbHRlci5uYW1lYCB3aW5zIG92ZXIgaXRzIGBuYW1lYCAoYXMgaW4gcGlwZWxpbmUtY29yZSdzXG4gKiBgcGx1Z2luTG9va3VwRmlsdGVyYCksIHNvIGB7IG5hbWU6ICdCdWlsZFN5bnRoJywgZmlsdGVyOiB7IG5hbWU6ICdjZGstc3ludGgnIH0gfWBcbiAqIGlzIGEgbWFuYWdlZCBgY2RrLXN5bnRoYC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG1hbmFnZWRUb29sY2hhaW5SZWZOYW1lKHJlZjogeyBuYW1lPzogdW5rbm93bjsgZmlsdGVyPzogdW5rbm93biB9IHwgbnVsbCB8IHVuZGVmaW5lZCk6IE1hbmFnZWRUb29sY2hhaW5QbHVnaW4gfCBudWxsIHtcbiAgaWYgKCFyZWYpIHJldHVybiBudWxsO1xuICBjb25zdCBmaWx0ZXJOYW1lID0gcmVmLmZpbHRlciAmJiB0eXBlb2YgcmVmLmZpbHRlciA9PT0gJ29iamVjdCcgPyAocmVmLmZpbHRlciBhcyB7IG5hbWU/OiB1bmtub3duIH0pLm5hbWUgOiB1bmRlZmluZWQ7XG4gIGNvbnN0IG5hbWUgPSB0eXBlb2YgZmlsdGVyTmFtZSA9PT0gJ3N0cmluZycgJiYgZmlsdGVyTmFtZSAhPT0gJycgPyBmaWx0ZXJOYW1lIDogcmVmLm5hbWU7XG4gIHJldHVybiB0eXBlb2YgbmFtZSA9PT0gJ3N0cmluZycgJiYgaXNNYW5hZ2VkVG9vbGNoYWluUGx1Z2luKG5hbWUpID8gbmFtZS50cmltKCkudG9Mb3dlckNhc2UoKSBhcyBNYW5hZ2VkVG9vbGNoYWluUGx1Z2luIDogbnVsbDtcbn1cblxuLyoqXG4gKiBXaGV0aGVyIGEgbWFuYWdlZCByZWZlcmVuY2UncyBmaWx0ZXIgcGlucyBpdHMgb3duIHZlcnNpb24gKGV4YWN0IG9yIHJhbmdlKSBvclxuICogcm93IGlkLiBSZWZ1c2VkOiBhIG1hbmFnZWQgaGFsZiBpcyBwaW5uZWQgb25seSBhcyBhIHdob2xlIHJlbGVhc2VcbiAqIChgdG9vbGNoYWluLnJlbGVhc2VgLCBUT09MQ0hBSU5fUElOX1ZJQV9SRUxFQVNFKS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG1hbmFnZWRSZWZQaW5zVmVyc2lvbihmaWx0ZXI6IHVua25vd24pOiBib29sZWFuIHtcbiAgaWYgKCFmaWx0ZXIgfHwgdHlwZW9mIGZpbHRlciAhPT0gJ29iamVjdCcpIHJldHVybiBmYWxzZTtcbiAgY29uc3QgeyB2ZXJzaW9uLCBpZCB9ID0gZmlsdGVyIGFzIHsgdmVyc2lvbj86IHVua25vd247IGlkPzogdW5rbm93biB9O1xuICByZXR1cm4gKHR5cGVvZiB2ZXJzaW9uID09PSAnc3RyaW5nJyAmJiB2ZXJzaW9uLnRyaW0oKSAhPT0gJycpIHx8IGlkICE9PSB1bmRlZmluZWQ7XG59XG5cbi8qKiBBIHBpcGVsaW5lJ3MgYHRvb2xjaGFpbi5yZWxlYXNlYCBwaW4gKGl0cyBwcm9wcyksIHdoZW4gaXQgY2FycmllcyBvbmUuICovXG5leHBvcnQgZnVuY3Rpb24gdG9vbGNoYWluUmVsZWFzZVBpbihwcm9wczogdW5rbm93bik6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gIGNvbnN0IHRvb2xjaGFpbiA9IHByb3BzICYmIHR5cGVvZiBwcm9wcyA9PT0gJ29iamVjdCcgPyAocHJvcHMgYXMgeyB0b29sY2hhaW4/OiB1bmtub3duIH0pLnRvb2xjaGFpbiA6IHVuZGVmaW5lZDtcbiAgY29uc3QgcmVsZWFzZSA9IHRvb2xjaGFpbiAmJiB0eXBlb2YgdG9vbGNoYWluID09PSAnb2JqZWN0JyA/ICh0b29sY2hhaW4gYXMgeyByZWxlYXNlPzogdW5rbm93biB9KS5yZWxlYXNlIDogdW5kZWZpbmVkO1xuICByZXR1cm4gdHlwZW9mIHJlbGVhc2UgPT09ICdzdHJpbmcnICYmIHJlbGVhc2UudHJpbSgpICE9PSAnJyA/IHJlbGVhc2UudHJpbSgpIDogdW5kZWZpbmVkO1xufVxuXG4vKipcbiAqIFdoZXJlIGEgcGlwZWxpbmUncyBCVUlMRCBJTUFHRSAodGhlIHRvb2xjaGFpbiByZWxlYXNlJ3MgYHBpcGVsaW5lLWJvb3RzdHJhcGBcbiAqIGhhbGYpIGlzIHJlY29yZGVkIGluIGl0cyBkZXBsb3llZCBzdGVwIG1hbmlmZXN0IChkb2NzL3BsYW5zL1xuICogYm9vdHN0cmFwLWltYWdlLXZlcnNpb25pbmcubWQgwqc0KS4gVGhlIGJvb3RzdHJhcCBpcyBub3QgYSBzdGVwLCBzbyBpdHMgZW50cnlcbiAqIGlzIGEgbm9uLXN0ZXAgcm93OiBgc3RlcF9rZXlgIGlzIHtAbGluayBCVUlMRF9JTUFHRV9TVEVQX0tFWX0gKHRoZSBrZXkgaXRzXG4gKiBsb29rdXAgd2FybmluZ3MgYXJlIHJlY29yZGVkIHVuZGVyIHRvbykgYW5kIGl0cyAoc3RhZ2UsIGFjdGlvbikgYXJlIHRoZXNlXG4gKiBzZW50aW5lbHMuIFRoZSBzdGFnZSBuYW1lIGhvbGRzIGNoYXJhY3RlcnMgQ29kZVBpcGVsaW5lIG5ldmVyIGFsbG93cyBpbiBhXG4gKiBzdGFnZSBuYW1lLCBzbyBldmVudCBpbmdlc3QncyAocGlwZWxpbmUsIHN0YWdlLCBhY3Rpb24pIGpvaW4gY2FuIG5ldmVyIG1hdGNoXG4gKiBpdCB0byBhIHJlYWwgYWN0aW9uLlxuICovXG5leHBvcnQgY29uc3QgQlVJTERfSU1BR0VfU1RFUF9LRVkgPSAnYnVpbGQtaW1hZ2UnO1xuZXhwb3J0IGNvbnN0IEJVSUxEX0lNQUdFX01BTklGRVNUX1NUQUdFID0gJyh0b29sY2hhaW4pJztcbmV4cG9ydCBjb25zdCBCVUlMRF9JTUFHRV9NQU5JRkVTVF9BQ1RJT04gPSAnYnVpbGQtaW1hZ2UnO1xuIl19
|
|
@@ -17,7 +17,7 @@
|
|
|
17
17
|
* (`admin.superadmin.grant`, `org.ownership.transfer`, `user.login`, …). Keep
|
|
18
18
|
* this list free of any platform-only action.
|
|
19
19
|
*/
|
|
20
|
-
export declare const REMOTE_AUDIT_ACTIONS: readonly ['plugin.build.completed', 'plugin.build.failed', 'plugin.build.timeout', 'plugin.scan.skipped', 'plugin.vuln.waived', 'plugin.vuln.flagged', 'plugin.vuln.cleared', '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', 'quota.notice_settings.update', 'compliance.exemption.approve', 'compliance.exemption.revoke', 'compliance.exemption.request', 'compliance.exemption.reject', '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.scan.complete', 'compliance.subscription.auto-subscribe', 'compliance.notification-preference.update', 'registry.gc', 'registry.image.delete', 'registry.image.copy', 'registry.image.sign', 'registry.token.issue', 'registry.quarantine.credential.mint', 'message.announcement.create', 'message.delete', 'message.hide', 'message.unhide', 'message.restore', 'message.purge', 'message.update', 'message.attachment.upload', 'message.notify.internal', 'message.org.purge', 'support.case.open', 'support.case.reply', 'support.case.status', 'support.case.severity', 'support.case.assign', 'support.case.transfer', 'support.oncall.acknowledged', 'support.oncall.escalated', 'support.oncall.test', 'support.oncall.paged', 'support.contact.designate', 'support.contact.revoke', 'support.contact.upgrade', 'support.contact.downgrade', 'support.case.note', 'support.canned.write', 'billing.subscription.create', 'billing.subscription.update', 'billing.subscription.reactivate', 'billing.subscription.cancel', 'billing.subscription.delete', 'billing.tier.override', 'billing.support-floor.override', 'billing.support-incident.grant', '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.campaign.create', 'billing.campaign.update', 'billing.campaign.end', 'billing.promotion.create', 'billing.promotion.update', 'billing.promotion.revoke', 'billing.promotion.grant', 'billing.promotion.activate', 'billing.offer.sent', 'billing.offer.withdrawn', 'billing.offer.declined', 'billing.offer.dismissed', 'billing.offer.exclusion.set', 'billing.offer.exclusion.cleared', 'billing.offer.trigger', 'billing.credit.consumed', 'billing.credit.exhausted', 'billing.combo.expired', 'reporting.settings.update', 'reporting.deployment.outcome', 'reporting.retention.sync', 'reporting.report.definition.create', 'reporting.report.definition.update', 'reporting.report.definition.delete', 'reporting.report.ownership.transfer', 'reporting.report.published', 'reporting.report.republished', 'reporting.report.link.created', 'reporting.report.link.revoked', 'reporting.report.recipient.added', 'reporting.report.recipient.removed', 'reporting.report.policy.update', 'reporting.report.paused', 'reporting.report.resumed', 'reporting.report.run.compose', 'reporting.report.run.notes', 'reporting.report.run.summary', 'reporting.report.recipient.resend', 'reporting.report.recipient.verified', 'reporting.report.recipient.unsubscribed', 'reporting.ingest.batch', 'reporting.ingest.rejected', 'reporting.incident.record', 'authz.denied', 'ask.query', 'ask.agent.turn', 'ask.feedback', 'pipeline.ai.generate', 'plugin.ai.generate', 'publisher.create', 'publisher.update', 'publisher.terms.accept', 'publisher.verify.request', 'publisher.verify.approve', 'publisher.verify.reject', 'publisher.tier.change', 'publisher.suspend', 'publisher.unsuspend', 'publisher.transfer.request', 'publisher.transfer.accept', 'publisher.transfer.decline', 'publisher.transfer.approve', 'publisher.transfer.reject', 'publisher.profile-change.approve', 'publisher.profile-change.reject', 'plugin.request.submit', 'plugin.request.withdraw', 'plugin.request.approve', 'plugin.request.second-approve', 'plugin.request.reject', 'plugin.request.auto-approve', 'plugin.listing.publish', 'plugin.listing.update', 'plugin.listing.state.change', 'plugin.listing.pause', 'plugin.listing.unpause', 'plugin.version.pause', 'plugin.version.yank', 'plugin.version.unyank', 'plugin.version.deprecate', 'plugin.version.prune', 'ecosystem.auto-approval-rule.create', 'ecosystem.auto-approval-rule.update', 'ecosystem.auto-approval-rule.delete', 'ecosystem.reserved-name.update', 'ecosystem.bootstrap.open', 'ecosystem.bootstrap.close', 'registry.image.publish', 'registry.image.resign', 'registry.image.yank', 'registry.image.gc', 'plugin.install.request', 'plugin.install.approve', 'plugin.install.deny', 'plugin.install.create', 'plugin.install.upgrade', 'plugin.install.change-request', 'plugin.install.change-approve', 'plugin.install.change-reject', 'plugin.install.remove', 'org.plugin-install-policy.update', 'plugin.shadowing.denied', 'plugin.review.create', 'plugin.review.update', 'plugin.review.delete', 'plugin.review.report', 'plugin.review.hold', 'plugin.review.release', 'plugin.review.remove', 'plugin.review.anonymize', 'plugin.review.reply.create', 'plugin.review.reply.update', 'plugin.review.reply.delete', 'plugin.submission.create', 'plugin.submission.verify', 'plugin.submission.gate-fail', 'plugin.submission.approve', 'plugin.submission.reject', 'plugin.submission.claim', 'plugin.submission.expire', 'plugin.advisory.create', 'plugin.advisory.update', 'plugin.advisory.publish', 'plugin.advisory.withdraw', 'plugin.security_notifications.update', 'plugin.security_notifications.external_email.verify', 'plugin.security_notifications.test', 'plugin.setup_image.promoted', 'plugin.setup_image.promote_refused', 'plugin.setup_image.kept', 'plugin.setup_image.discarded', 'pipeline.vuln.accepted', 'pipeline.vuln.false_positive', 'pipeline.vuln.reopened', 'pipeline.runtime_check.flagged', 'pipeline.plugin.upgraded', 'pipeline.security_report.upload'];
|
|
20
|
+
export declare const REMOTE_AUDIT_ACTIONS: readonly ['plugin.build.completed', 'plugin.build.failed', 'plugin.build.timeout', 'plugin.scan.skipped', 'plugin.vuln.waived', 'plugin.vuln.flagged', 'plugin.vuln.cleared', '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', 'quota.notice_settings.update', 'compliance.exemption.approve', 'compliance.exemption.revoke', 'compliance.exemption.request', 'compliance.exemption.reject', '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.scan.complete', 'compliance.subscription.auto-subscribe', 'compliance.notification-preference.update', 'registry.gc', 'registry.image.delete', 'registry.image.copy', 'registry.image.sign', 'registry.token.issue', 'registry.quarantine.credential.mint', 'message.announcement.create', 'message.delete', 'message.hide', 'message.unhide', 'message.restore', 'message.purge', 'message.update', 'message.attachment.upload', 'message.notify.internal', 'message.org.purge', 'support.case.open', 'support.case.reply', 'support.case.status', 'support.case.severity', 'support.case.assign', 'support.case.transfer', 'support.oncall.acknowledged', 'support.oncall.escalated', 'support.oncall.test', 'support.oncall.paged', 'support.contact.designate', 'support.contact.revoke', 'support.contact.upgrade', 'support.contact.downgrade', 'support.case.note', 'support.canned.write', 'billing.subscription.create', 'billing.subscription.update', 'billing.subscription.reactivate', 'billing.subscription.cancel', 'billing.subscription.delete', 'billing.tier.override', 'billing.support-floor.override', 'billing.support-incident.grant', '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.campaign.create', 'billing.campaign.update', 'billing.campaign.end', 'billing.promotion.create', 'billing.promotion.update', 'billing.promotion.revoke', 'billing.promotion.grant', 'billing.promotion.activate', 'billing.offer.sent', 'billing.offer.withdrawn', 'billing.offer.declined', 'billing.offer.dismissed', 'billing.offer.exclusion.set', 'billing.offer.exclusion.cleared', 'billing.offer.trigger', 'billing.credit.consumed', 'billing.credit.exhausted', 'billing.combo.expired', 'reporting.settings.update', 'reporting.deployment.outcome', 'reporting.retention.sync', 'reporting.report.definition.create', 'reporting.report.definition.update', 'reporting.report.definition.delete', 'reporting.report.ownership.transfer', 'reporting.report.published', 'reporting.report.republished', 'reporting.report.link.created', 'reporting.report.link.revoked', 'reporting.report.recipient.added', 'reporting.report.recipient.removed', 'reporting.report.policy.update', 'reporting.report.paused', 'reporting.report.resumed', 'reporting.report.run.compose', 'reporting.report.run.notes', 'reporting.report.run.summary', 'reporting.report.recipient.resend', 'reporting.report.recipient.verified', 'reporting.report.recipient.unsubscribed', 'reporting.ingest.batch', 'reporting.ingest.rejected', 'reporting.incident.record', 'authz.denied', 'ask.query', 'ask.agent.turn', 'ask.feedback', 'pipeline.ai.generate', 'plugin.ai.generate', 'publisher.create', 'publisher.update', 'publisher.terms.accept', 'publisher.verify.request', 'publisher.verify.approve', 'publisher.verify.reject', 'publisher.tier.change', 'publisher.suspend', 'publisher.unsuspend', 'publisher.transfer.request', 'publisher.transfer.accept', 'publisher.transfer.decline', 'publisher.transfer.approve', 'publisher.transfer.reject', 'publisher.profile-change.approve', 'publisher.profile-change.reject', 'plugin.request.submit', 'plugin.request.withdraw', 'plugin.request.approve', 'plugin.request.second-approve', 'plugin.request.reject', 'plugin.request.auto-approve', 'plugin.listing.publish', 'plugin.listing.update', 'plugin.listing.state.change', 'plugin.listing.pause', 'plugin.listing.unpause', 'plugin.version.pause', 'plugin.version.yank', 'plugin.version.unyank', 'toolchain.default.set', 'toolchain.default.initial', 'toolchain.default.restore', 'toolchain.rollout.update', 'toolchain.release.notes', 'toolchain.release.deprecate', 'toolchain.release.yank', 'toolchain.release.delete', 'toolchain.recovery.notify', 'toolchain.org_default.set', 'toolchain.org_default.clear', 'plugin.version.deprecate', 'plugin.version.prune', 'ecosystem.auto-approval-rule.create', 'ecosystem.auto-approval-rule.update', 'ecosystem.auto-approval-rule.delete', 'ecosystem.reserved-name.update', 'ecosystem.bootstrap.open', 'ecosystem.bootstrap.close', 'registry.image.publish', 'registry.image.resign', 'registry.image.yank', 'registry.image.gc', 'plugin.install.request', 'plugin.install.approve', 'plugin.install.deny', 'plugin.install.create', 'plugin.install.upgrade', 'plugin.install.change-request', 'plugin.install.change-approve', 'plugin.install.change-reject', 'plugin.install.remove', 'org.plugin-install-policy.update', 'plugin.shadowing.denied', 'plugin.review.create', 'plugin.review.update', 'plugin.review.delete', 'plugin.review.report', 'plugin.review.hold', 'plugin.review.release', 'plugin.review.remove', 'plugin.review.anonymize', 'plugin.review.reply.create', 'plugin.review.reply.update', 'plugin.review.reply.delete', 'plugin.submission.create', 'plugin.submission.verify', 'plugin.submission.gate-fail', 'plugin.submission.approve', 'plugin.submission.reject', 'plugin.submission.claim', 'plugin.submission.expire', 'plugin.advisory.create', 'plugin.advisory.update', 'plugin.advisory.publish', 'plugin.advisory.withdraw', 'plugin.security_notifications.update', 'plugin.security_notifications.external_email.verify', 'plugin.security_notifications.test', 'plugin.setup_image.promoted', 'plugin.setup_image.promote_refused', 'plugin.setup_image.kept', 'plugin.setup_image.discarded', 'pipeline.vuln.accepted', 'pipeline.vuln.false_positive', 'pipeline.vuln.reopened', 'pipeline.runtime_check.flagged', 'pipeline.plugin.upgraded', 'pipeline.security_report.upload'];
|
|
21
21
|
export type RemoteAuditAction = typeof REMOTE_AUDIT_ACTIONS[number];
|
|
22
22
|
/** Whether `value` is an action a remote service may emit (the ingest allow-list). */
|
|
23
23
|
export declare function isRemoteAuditAction(value: string): value is RemoteAuditAction;
|
|
@@ -478,6 +478,18 @@ export const REMOTE_AUDIT_ACTIONS = [
|
|
|
478
478
|
'plugin.version.pause',
|
|
479
479
|
'plugin.version.yank',
|
|
480
480
|
'plugin.version.unyank',
|
|
481
|
+
// Pipeline toolchain releases (docs/plans/bootstrap-image-versioning.md §13).
|
|
482
|
+
'toolchain.default.set',
|
|
483
|
+
'toolchain.default.initial',
|
|
484
|
+
'toolchain.default.restore',
|
|
485
|
+
'toolchain.rollout.update',
|
|
486
|
+
'toolchain.release.notes',
|
|
487
|
+
'toolchain.release.deprecate',
|
|
488
|
+
'toolchain.release.yank',
|
|
489
|
+
'toolchain.release.delete',
|
|
490
|
+
'toolchain.recovery.notify',
|
|
491
|
+
'toolchain.org_default.set',
|
|
492
|
+
'toolchain.org_default.clear',
|
|
481
493
|
'plugin.version.deprecate',
|
|
482
494
|
// Retiring a version's registry image to reclaim `storageBytes`. Distinct
|
|
483
495
|
// from the four above, which change whether a version RESOLVES and delete
|
|
@@ -597,4 +609,4 @@ export const REMOTE_AUDIT_ACTIONS = [
|
|
|
597
609
|
export function isRemoteAuditAction(value) {
|
|
598
610
|
return REMOTE_AUDIT_ACTIONS.includes(value);
|
|
599
611
|
}
|
|
600
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVtb3RlLWF1ZGl0LWFjdGlvbnMuanMiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy90eXBlcy9yZW1vdGUtYXVkaXQtYWN0aW9ucy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwrQ0FBK0M7QUFDL0Msc0NBQXNDO0FBRXRDOzs7Ozs7O0dBT0c7QUFHSDs7Ozs7Ozs7OztHQVVHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sb0JBQW9CLEdBQUc7SUFDbEMsd0JBQXdCO0lBQ3hCLHFCQUFxQjtJQUNyQixzQkFBc0I7SUFDdEIsOEVBQThFO0lBQzlFLDJFQUEyRTtJQUMzRSw4RUFBOEU7SUFDOUUscUJBQXFCO0lBQ3JCLHVFQUF1RTtJQUN2RSwyRUFBMkU7SUFDM0UsK0VBQStFO0lBQy9FLDhFQUE4RTtJQUM5RSxrRUFBa0U7SUFDbEUseUVBQXlFO0lBQ3pFLG9CQUFvQjtJQUNwQiwyRUFBMkU7SUFDM0UsNkVBQTZFO0lBQzdFLHNFQUFzRTtJQUN0RSw4RUFBOEU7SUFDOUUsNkVBQTZFO0lBQzdFLHVFQUF1RTtJQUN2RSxxQ0FBcUM7SUFDckMscUJBQXFCO0lBQ3JCLHFCQUFxQjtJQUNyQiw2RUFBNkU7SUFDN0UsK0VBQStFO0lBQy9FLHFFQUFxRTtJQUNyRSxlQUFlO0lBQ2YsZ0JBQWdCO0lBQ2hCLDRFQUE0RTtJQUM1RSx3RUFBd0U7SUFDeEUsY0FBYztJQUNkLGVBQWU7SUFDZixlQUFlO0lBQ2YsZUFBZTtJQUNmLDhFQUE4RTtJQUM5RSw0RUFBNEU7SUFDNUUsb0JBQW9CO0lBQ3BCLG9CQUFvQjtJQUNwQixrQkFBa0I7SUFDbEIseUVBQXlFO0lBQ3pFLDRFQUE0RTtJQUM1RSw0RUFBNEU7SUFDNUUsdUVBQXVFO0lBQ3ZFLG9CQUFvQjtJQUNwQixtQkFBbUI7SUFDbkIsZ0VBQWdFO0lBQ2hFLHFFQUFxRTtJQUNyRSxvREFBb0Q7SUFDcEQsaUJBQWlCO0lBQ2pCLGlCQUFpQjtJQUNqQixpQkFBaUI7SUFDakIsa0JBQWtCO0lBQ2xCLG1FQUFtRTtJQUNuRSw0RUFB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QUFzQztJQUN0QyxxREFBcUQ7SUFDckQsb0NBQW9DO0lBQ3BDLHVFQUF1RTtJQUN2RSxvRUFBb0U7SUFDcEUseUVBQXlFO0lBQ3pFLGlFQUFpRTtJQUNqRSw2QkFBNkI7SUFDN0Isb0NBQW9DO0lBQ3BDLDJFQUEyRTtJQUMzRSx1RUFBdUU7SUFDdkUsaUVBQWlFO0lBQ2pFLHlCQUF5QjtJQUN6Qiw4QkFBOEI7SUFDOUIsd0VBQXdFO0lBQ3hFLDZFQUE2RTtJQUM3RSx3RUFBd0U7SUFDeEUsMkVBQTJFO0lBQzNFLDRFQUE0RTtJQUM1RSx3QkFBd0I7SUFDeEIsOEJBQThCO0lBQzlCLHdCQUF3QjtJQUN4Qix5RUFBeUU7SUFDekUsNEVBQTRFO0lBQzVFLGdDQUFnQztJQUNoQyx3RUFBd0U7SUFDeEUsK0VBQStFO0lBQy9FLDJFQUEyRTtJQUMzRSw0RUFBNEU7SUFDNUUsMEJBQTBCO0lBQzFCLGlDQUFpQztDQUN6QixDQUFDO0FBSVgsc0ZBQXNGO0FBQ3RGLE1BQU0sVUFBVSxtQkFBbUIsQ0FBQyxLQUFhO0lBQy9DLE9BQVEsb0JBQTBDLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQ3JFLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgMjAyNiBQaXBlbGluZSBCdWlsZGVyIENvbnRyaWJ1dG9yc1xuLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjBcblxuLyoqXG4gKiBUaGUgcmVtb3RlIChub24tcGxhdGZvcm0pIGF1ZGl0IEFDVElPTiBWT0NBQlVMQVJZLlxuICpcbiAqIEtlcHQgYXBhcnQgZnJvbSB0aGUgY2xpZW50IHRoYXQgc2hpcHMgdGhlIGV2ZW50cyAoYHNlcnZpY2VzL3JlbW90ZS1hdWRpdC1jbGllbnQudHNgKVxuICogYmVjYXVzZSBpdCBpcyBhbiBhbGxvdy1saXN0LCBub3QgbWFjaGluZXJ5OiBpdCBpcyB0aGUgdGhpbmcgYSByZXZpZXdlciByZWFkc1xuICogZW5kIHRvIGVuZCB3aGVuIGRlY2lkaW5nIHdoZXRoZXIgYSBzZXJ2aWNlIG1heSBlbWl0IGEgZ2l2ZW4gYWN0aW9uLCBhbmQgaXQgaXNcbiAqIHdoYXQgcGxhdGZvcm0ncyBpbmdlc3QgdmFsaWRhdGVzIGFnYWluc3QuXG4gKi9cblxuXG4vKipcbiAqIFRoZSBleGFjdCBzZXQgb2YgYXVkaXQgYWN0aW9ucyBhIE5PTi1QTEFURk9STSAocmVtb3RlKSBzZXJ2aWNlIGlzIHBlcm1pdHRlZCB0b1xuICogZW1pdCB0aHJvdWdoIGBQT1NUIC9hdWRpdC9ldmVudHNgLiBUaGlzIGlzIHRoZSBTSU5HTEUgU09VUkNFIOKAlCBgUmVtb3RlQXVkaXRBY3Rpb25gXG4gKiBpcyBkZXJpdmVkIGZyb20gaXQsIHNvIHRoZSB0eXBlIGFuZCB0aGUgcnVudGltZSBhbGxvdy1saXN0IGNhbiBuZXZlciBkcmlmdC5cbiAqXG4gKiBTRUNVUklUWTogcGxhdGZvcm0ncyBpbmdlc3QgdmFsaWRhdGVzIGBhY3Rpb25gIGFnYWluc3QgdGhpcyBzdWJzZXQgKHZpYVxuICoge0BsaW5rIGlzUmVtb3RlQXVkaXRBY3Rpb259KSwgTk9UIHRoZSBmdWxsIHBsYXRmb3JtIGBBdWRpdEFjdGlvbmAgdW5pb24g4oCUIGFcbiAqIGBzZXJ2aWNlOipgIHRva2VuIG11c3Qgbm90IGJlIGFibGUgdG8gZm9yZ2UgcGxhdGZvcm0tYXV0aG9yaXR5IGV2ZW50c1xuICogKGBhZG1pbi5zdXBlcmFkbWluLmdyYW50YCwgYG9yZy5vd25lcnNoaXAudHJhbnNmZXJgLCBgdXNlci5sb2dpbmAsIOKApikuIEtlZXBcbiAqIHRoaXMgbGlzdCBmcmVlIG9mIGFueSBwbGF0Zm9ybS1vbmx5IGFjdGlvbi5cbiAqL1xuZXhwb3J0IGNvbnN0IFJFTU9URV9BVURJVF9BQ1RJT05TID0gW1xuICAncGx1Z2luLmJ1aWxkLmNvbXBsZXRlZCcsXG4gICdwbHVnaW4uYnVpbGQuZmFpbGVkJyxcbiAgJ3BsdWdpbi5idWlsZC50aW1lb3V0JyxcbiAgLy8gQSB2ZXJzaW9uIHBlcnNpc3RlZCBVTlNDQU5ORUQgYmVjYXVzZSB0aGUgYnVpbGQtdGltZSBzY2FuIGNvdWxkIG5vdCBydW4gYW5kXG4gIC8vIHRoZSBvcGVyYXRvciBlc2NhcGUgaGF0Y2ggYFBMVUdJTl9BTExPV19VTlNDQU5ORURgIGlzIG9uICh3aXRob3V0IGl0IHRoZVxuICAvLyBidWlsZCBmYWlscyBgSU1BR0VfU0NBTl9VTkFWQUlMQUJMRWApLiBgZGV0YWlsc2AgY2FycnkgbmFtZS92ZXJzaW9uL2RpZ2VzdC5cbiAgJ3BsdWdpbi5zY2FuLnNraXBwZWQnLFxuICAvLyBGaXhhYmxlIENyaXRpY2FsIGZpbmRpbmdzIHdlcmUgRVhFTVBURUQgZnJvbSB0aGUgcGxhdGZvcm0gZmxvb3IgYnkgYVxuICAvLyBgUExVR0lOX1ZVTE5fV0FJVkVSU2AgZW50cnksIHNvIGEgYnVpbGQgdGhhdCB3b3VsZCBvdGhlcndpc2UgaGF2ZSBmYWlsZWRcbiAgLy8gUExVR0lOX1ZVTE5fR0FURSB3YXMgYWxsb3dlZCB0aHJvdWdoLiBUaGUgb3RoZXIgaGFsZiBvZiBwbHVnaW4uc2Nhbi5za2lwcGVkOlxuICAvLyBib3RoIGFyZSBvcGVyYXRvciBlc2NhcGUgaGF0Y2hlcyB0aGF0IGNoYW5nZSBhIGdhdGUncyB2ZXJkaWN0LCBhbmQgYSBtZXRyaWNcbiAgLy8gYW5kIGEgbG9nIGxpbmUgYXJlIG5vdCBhIGR1cmFibGUgcmVjb3JkIG9mIG9uZS4gYGRldGFpbHNgIGNhcnJ5XG4gIC8vIG5hbWUvdmVyc2lvbi9kaWdlc3QsIGhvdyBtYW55IGZpbmRpbmdzIHdlcmUgd2FpdmVkIGFuZCB3aGljaCBwYWNrYWdlcy5cbiAgJ3BsdWdpbi52dWxuLndhaXZlZCcsXG4gIC8vIFRoZSBuaWdodGx5IHJlc2NhbiBGTEFHR0VEIGEgc3RvcmVkIHZlcnNpb24gKGl0cyBnYXRlZCBDcml0aWNhbCBmaW5kaW5nc1xuICAvLyBub3cgZXhjZWVkIFBMVUdJTl9WVUxOX01BWF9GSU5ESU5HUyDigJQgbG9va3VwIGFuZCB0aGUgcGlwZWxpbmUncyBvd25lcnMgYXJlXG4gIC8vIHdhcm5lZCBhdCBgZXJyb3JgIHNldmVyaXR5KSwgb3IgQ0xFQVJFRCB0aGF0IGZsYWcuIEJvdGggY2hhbmdlIHdoYXRcbiAgLy8gcmVzb2x1dGlvbiBzYXlzIGFib3V0IGEgdmVyc2lvbiBub2JvZHkgcmVidWlsdCwgb24gbm9ib2R5J3MgcmVxdWVzdCwgc28gdGhlXG4gIC8vIHJlY29yZCBvZiBXSEVOIGFuZCBXSFkgbGl2ZXMgaW4gdGhlIGhhc2gtY2hhaW5lZCBsb2cgcmF0aGVyIHRoYW4gb25seSBpbiBhXG4gIC8vIGNvbHVtbiB0aGUgbmV4dCByZXNjYW4gb3ZlcndyaXRlcy4gYGRldGFpbHNgIGNhcnJ5IGNvdW50cywgdGhlIGdhdGVkXG4gIC8vIGFkdmlzb3J5IGlkcyBhbmQgdGhlIGltYWdlIGRpZ2VzdC5cbiAgJ3BsdWdpbi52dWxuLmZsYWdnZWQnLFxuICAncGx1Z2luLnZ1bG4uY2xlYXJlZCcsXG4gIC8vIFBsdWdpbiBsaWZlY3ljbGUgbXV0YXRpb25zIChhcGkvcGx1Z2luIHJvdXRlIGhhbmRsZXJzKSDigJQgdGhlIGRlc3RydWN0aXZlIC9cbiAgLy8gcHVibGlzaGluZyBzdXJmYWNlIHRoYXQgYnVpbGRzIGFscmVhZHkgYXVkaXQncyBjb3VudGVycGFydDogcmVnaXN0cnkgZGVsZXRlLFxuICAvLyBzb3VyY2UgdXBsb2FkLCBhbmQgZGVwbG95LXRvLWNsdXN0ZXIuIGB0YXJnZXRJZGAgaXMgdGhlIHBsdWdpbiBpZC5cbiAgJ3BsdWdpbi5kZWxldGUnLFxuICAncGx1Z2luLnJlc3RvcmUnLFxuICAvLyBNYW51YWwgcHVyZ2U6IHBlcm1hbmVudCBoYXJkLWRlbGV0ZSBvZiBhIHNvZnQtZGVsZXRlZCBwbHVnaW4gdG9tYnN0b25lIG9uXG4gIC8vIGRlbWFuZCAoZmluYWxpemVzIHdoYXQgdGhlIHJldGVudGlvbiBzd2VlcCB3b3VsZCBvdGhlcndpc2UgZG8gbGF0ZXIpLlxuICAncGx1Z2luLnB1cmdlJyxcbiAgJ3BsdWdpbi51cGRhdGUnLFxuICAncGx1Z2luLnVwbG9hZCcsXG4gICdwbHVnaW4uZGVwbG95JyxcbiAgLy8gUGx1Z2luIGJ1bGsgbXV0YXRpb25zIChhcGkvcGx1Z2luIGJ1bGstcGx1Z2luIHJvdXRlKSArIERMUSBwdXJnZSAoZHJvcHMgYWxsXG4gIC8vIGRlYWQtbGV0dGVyZWQgYnVpbGQgam9icywgY3Jvc3Mtb3JnLCBzeXNhZG1pbikuIGBkZXRhaWxzYCBjYXJyaWVzIGNvdW50cy5cbiAgJ3BsdWdpbi5idWxrLnVwZGF0ZScsXG4gICdwbHVnaW4uYnVsay5kZWxldGUnLFxuICAncGx1Z2luLmRscS5wdXJnZScsXG4gIC8vIEJ1aWxkIHJlLXJ1bnMgZnJvbSB0aGUgcXVldWUtdHJpYWdlIHN1cmZhY2U6IHJlLWVucXVldWUgYSBGQUlMRUQgYnVpbGRcbiAgLy8gKGBwbHVnaW4uYnVpbGQucmV0cnlgKSBvciBhIGRlYWQtbGV0dGVyZWQgb25lIChgcGx1Z2luLmRscS5yZXBsYXlgKS4gQm90aFxuICAvLyByZS1ydW4gYW4gaW1hZ2UgYnVpbGQgKyBwbHVnaW4gcGVyc2lzdCBvbiB0aGUgY2FsbGVyJ3MgYXV0aG9yaXR5LCBzbyB0aGV5XG4gIC8vIGFyZSBhdWRpdGVkIG11dGF0aW9uczsgYGFmZmVjdGVkT3JnSWRgIGNhcnJpZXMgdGhlIGpvYidzIG93bmluZyBvcmcuXG4gICdwbHVnaW4uYnVpbGQucmV0cnknLFxuICAncGx1Z2luLmRscS5yZXBsYXknLFxuICAvLyBQaXBlbGluZSBtdXRhdGlvbnMg4oCUIGVtaXR0ZWQgYnkgYXBpL3BpcGVsaW5lJ3Mgcm91dGUgaGFuZGxlcnNcbiAgLy8gKGNyZWF0ZS91cGRhdGUvZGVsZXRlICsgQ29kZVBpcGVsaW5lIGV4ZWN1dGlvbiB0cmlnZ2VyL2NhbmNlbCkgYW5kXG4gIC8vIHBvc3RlZCB0byBwbGF0Zm9ybSdzIGBQT1NUIC9hdWRpdC9ldmVudHNgIGluZ2VzdC5cbiAgJ3BpcGVsaW5lLmNyZWF0ZScsXG4gICdwaXBlbGluZS51cGRhdGUnLFxuICAncGlwZWxpbmUuZGVsZXRlJyxcbiAgJ3BpcGVsaW5lLnJlc3RvcmUnLFxuICAvLyBNYW51YWwgcHVyZ2U6IHBlcm1hbmVudCBoYXJkLWRlbGV0ZSBvZiBhIHNvZnQtZGVsZXRlZCBwaXBlbGluZSAvXG4gIC8vIHBpcGVsaW5lX3RlbXBsYXRlIHRvbWJzdG9uZSBvbiBkZW1hbmQgKGZpbmFsaXplcyB3aGF0IHRoZSByZXRlbnRpb24gc3dlZXBcbiAgLy8gd291bGQgb3RoZXJ3aXNlIGRvIGxhdGVyKS4gYHRhcmdldElkYCBpcyB0aGUgcHVyZ2VkIGlkLlxuICAncGlwZWxpbmUucHVyZ2UnLFxuICAncGlwZWxpbmVfdGVtcGxhdGUuY3JlYXRlJyxcbiAgJ3BpcGVsaW5lX3RlbXBsYXRlLnVwZGF0ZScsXG4gICdwaXBlbGluZV90ZW1wbGF0ZS5kZWxldGUnLFxuICAncGlwZWxpbmVfdGVtcGxhdGUucmVzdG9yZScsXG4gICdwaXBlbGluZV90ZW1wbGF0ZS5wdXJnZScsXG4gICdwaXBlbGluZS5leGVjdXRpb24uc3RhcnQnLFxuICAncGlwZWxpbmUuZXhlY3V0aW9uLmNhbmNlbCcsXG4gIC8vIENvZGVQaXBlbGluZSBBUk4tcmVnaXN0cnkgY29uZmlnIChhcGkvcGlwZWxpbmUgcmVnaXN0cnkgcm91dGUpIOKAlCByZWdpc3RlcmluZyAvXG4gIC8vIGRlcmVnaXN0ZXJpbmcgdGhlIGV4dGVybmFsIENvZGVQaXBlbGluZSB0aGF0IGJhY2tzIGEgcGlwZWxpbmUgKGRlcGxveS1hZmZlY3RpbmcpLlxuICAncGlwZWxpbmUucmVnaXN0cnkucmVnaXN0ZXInLFxuICAncGlwZWxpbmUucmVnaXN0cnkuZGVyZWdpc3RlcicsXG4gIC8vIFF1b3RhIGFkbWluaXN0cmF0aW9uIChhcGkvcXVvdGEpIOKAlCBhIHN1cGVyYWRtaW4gcmVzZXR0aW5nIGFuIG9yZydzIHVzYWdlXG4gIC8vIGNvdW50ZXIgb3IgZWRpdGluZyBpdHMgdGllciBsaW1pdHMuIGBhZmZlY3RlZE9yZ0lkYCBpcyB0aGUgb3JnIGNoYW5nZWQ7XG4gIC8vIGBkZXRhaWxzYCBjYXJyaWVzIHRoZSBxdW90YVR5cGUgKyBvbGQvbmV3IHZhbHVlLlxuICAncXVvdGEucmVzZXQnLFxuICAncXVvdGEubGltaXQudXBkYXRlJyxcbiAgLy8gQSBzdXBlcmFkbWluIGRlbGV0aW5nIGFuIG9yZydzIGVudGlyZSBxdW90YSBkb2N1bWVudC5cbiAgJ3F1b3RhLmRlbGV0ZScsXG4gIC8vIEFuIGFjY291bnQncyBxdW90YSB0aHJlc2hvbGQtbm90aWNlIHNldHRpbmdzIChvcHQtb3V0ICsgdGhlXG4gIC8vIGBxdW90YS50aHJlc2hvbGRgIHdlYmhvb2sgVVJMKSDigJQgd2hlcmUgdXNhZ2Ugd2FybmluZ3MgZ28uXG4gICdxdW90YS5ub3RpY2Vfc2V0dGluZ3MudXBkYXRlJyxcbiAgLy8gQ29tcGxpYW5jZSBhZG1pbmlzdHJhdGlvbiAoYXBpL2NvbXBsaWFuY2UpIOKAlCB0aGUgZW5mb3JjZW1lbnQtcG9zdHVyZSBzdXJmYWNlLlxuICAvLyBBcHByb3ZpbmcvcmV2b2tpbmcgYW4gZXhlbXB0aW9uLCB0b2dnbGluZy9hdXRob3JpbmcvZGVsZXRpbmcgYSBydWxlLFxuICAvLyBhdXRob3JpbmcvZGVsZXRpbmcgYSBwb2xpY3ksIG1hbmFnaW5nIHNjYW4gc2NoZWR1bGVzLCBhcHBseWluZyBhIHRlbXBsYXRlLFxuICAvLyBvciBjYW5jZWxsaW5nIGEgcnVubmluZyBzY2FuLiBgdGFyZ2V0SWRgIGlzIHRoZSBydWxlL3BvbGljeS9leGVtcHRpb24vc2NhbiBpZC5cbiAgJ2NvbXBsaWFuY2UuZXhlbXB0aW9uLmFwcHJvdmUnLFxuICAnY29tcGxpYW5jZS5leGVtcHRpb24ucmV2b2tlJyxcbiAgLy8gQSBtZW1iZXIgRklMSU5HIGFuIGV4ZW1wdGlvbiByZXF1ZXN0IChzaW5nbGUgb3IgYnVsazsgbWV0YWRhdGEgb25seSwgbmV2ZXJcbiAgLy8gdGhlIHJlYXNvbikgYW5kIGFuIGFkbWluIFJFSkVDVElORyBvbmUg4oCUIHRoZSBvdGhlciBoYWx2ZXMgb2YgdGhlXG4gIC8vIHR3by1wZXJzb24gZGVjaXNpb24gd2hvc2UgYXBwcm92YWwgaXMgcmVjb3JkZWQgYWJvdmUuXG4gICdjb21wbGlhbmNlLmV4ZW1wdGlvbi5yZXF1ZXN0JyxcbiAgJ2NvbXBsaWFuY2UuZXhlbXB0aW9uLnJlamVjdCcsXG4gICdjb21wbGlhbmNlLnJ1bGUudG9nZ2xlJyxcbiAgJ2NvbXBsaWFuY2UucnVsZS5jcmVhdGUnLFxuICAnY29tcGxpYW5jZS5ydWxlLnVwZGF0ZScsXG4gICdjb21wbGlhbmNlLnJ1bGUuZGVsZXRlJyxcbiAgJ2NvbXBsaWFuY2UucnVsZS5yZXN0b3JlJyxcbiAgLy8gTWFudWFsIG9uLWRlbWFuZCBoYXJkLWRlbGV0ZSAoUFVSR0UpIG9mIGEgc29mdC1kZWxldGVkIHJ1bGUvcG9saWN5IHRvbWJzdG9uZSDigJRcbiAgLy8gdGhlIGNhbGxlci1pbml0aWF0ZWQgY291bnRlcnBhcnQgdG8gdGhlIHJldGVudGlvbiBzd2VlcCdzIGF1dG8tcHVyZ2UuIERlc3Ryb3lzXG4gIC8vIHRoZSB0b21ic3RvbmUgcGVybWFuZW50bHksIHNvIGl0IGNhcnJpZXMgdGhlIGR1cmFibGUsIHRhbXBlci1ldmlkZW50IHRyYWlsLlxuICAnY29tcGxpYW5jZS5ydWxlLnB1cmdlJyxcbiAgJ2NvbXBsaWFuY2UucG9saWN5LmNyZWF0ZScsXG4gICdjb21wbGlhbmNlLnBvbGljeS51cGRhdGUnLFxuICAnY29tcGxpYW5jZS5wb2xpY3kuZGVsZXRlJyxcbiAgJ2NvbXBsaWFuY2UucG9saWN5LnJlc3RvcmUnLFxuICAnY29tcGxpYW5jZS5wb2xpY3kucHVyZ2UnLFxuICAnY29tcGxpYW5jZS5zY2FuLXNjaGVkdWxlLmNyZWF0ZScsXG4gICdjb21wbGlhbmNlLnNjYW4tc2NoZWR1bGUudXBkYXRlJyxcbiAgJ2NvbXBsaWFuY2Uuc2Nhbi1zY2hlZHVsZS5kZWxldGUnLFxuICAnY29tcGxpYW5jZS50ZW1wbGF0ZS5hcHBseScsXG4gIC8vIExhdW5jaGluZyBhbiBvcmctd2lkZSByZS1ldmFsdWF0aW9uICh0aGUgY291bnRlcnBhcnQgdG8gYC5jYW5jZWxgKSDigJQgaXRcbiAgLy8gcGVyc2lzdHMgYSBzY2FuIGFuZCBjYW4gYmxvY2sgZW50aXRpZXMgdGhhdCBwYXNzZWQgYmVmb3JlLlxuICAnY29tcGxpYW5jZS5zY2FuLmNyZWF0ZScsXG4gICdjb21wbGlhbmNlLnNjYW4uY2FuY2VsJyxcbiAgLy8gQSBzY2FuJ3MgdGVybWluYWwgT1VUQ09NRSAoY29tcGxldGVkIOKGkiBzdWNjZXNzIHdpdGggdGhlIHBhc3Mvd2Fybi9ibG9ja1xuICAvLyBjb3VudHMsIGZhaWxlZCDihpIgZmFpbHVyZSkuIFNjaGVkdWxlZCBzY2FucyBhbHNvIHdyaXRlIGBjb21wbGlhbmNlLnNjYW4uY3JlYXRlYFxuICAvLyAoYGRldGFpbHMudHJpZ2dlcmVkQnk6ICdzY2hlZHVsZWQnYCksIGF0dHJpYnV0ZWQgdG8gdGhlIHNjaGVkdWxlJ3MgYXV0aG9yLlxuICAnY29tcGxpYW5jZS5zY2FuLmNvbXBsZXRlJyxcbiAgLy8gUGxhdGZvcm0gb25ib2FyZGluZyBzdWJzY3JpYmluZyBhIG5ldyBvcmcgdG8gZXZlcnkgcHVibGlzaGVkIHJ1bGVcbiAgLy8gKElOQUNUSVZFIHN1YnNjcmlwdGlvbnM7IGBkZXRhaWxzLnN1YnNjcmliZWRgIGlzIHRoZSBjb3VudCkuXG4gICdjb21wbGlhbmNlLnN1YnNjcmlwdGlvbi5hdXRvLXN1YnNjcmliZScsXG4gIC8vIFBlci1vcmcgY29tcGxpYW5jZSBub3RpZmljYXRpb24gc2V0dGluZ3M6IHJlY2lwaWVudHMgKyB0aGUgb3V0Ym91bmQgd2ViaG9va1xuICAvLyBVUkwvc2VjcmV0LiBCZWFyZXItZXF1aXZhbGVudCBjb25maWcgdGhhdCByZWRpcmVjdHMgdmlvbGF0aW9uIG5vdGljZXMsIHNvIGFcbiAgLy8gY2hhbmdlIGNhcnJpZXMgdGhlIGR1cmFibGUgdHJhaWwgKG5ldmVyIHRoZSBzZWNyZXQgaXRzZWxmKS5cbiAgJ2NvbXBsaWFuY2Uubm90aWZpY2F0aW9uLXByZWZlcmVuY2UudXBkYXRlJyxcbiAgLy8gSW1hZ2UtcmVnaXN0cnkgZGVzdHJ1Y3RpdmUgb3BzIChhcGkvaW1hZ2UtcmVnaXN0cnkpIOKAlCBnYXJiYWdlLWNvbGxlY3Rpb25cbiAgLy8gc3dlZXBzIGFuZCBleHBsaWNpdCBpbWFnZS90YWcgZGVsZXRlcy5cbiAgJ3JlZ2lzdHJ5LmdjJyxcbiAgJ3JlZ2lzdHJ5LmltYWdlLmRlbGV0ZScsXG4gIC8vIENyb3NzLXJlcG8gdGFnL2ltYWdlIGNvcHkgKGFwaS9pbWFnZS1yZWdpc3RyeSBQT1NUIC9hcGkvaW1hZ2VzL2NvcHkpLiBBXG4gIC8vIGNyb3NzLXRlbmFudCBjb3B5IG1vdmVzIGRhdGEgYWNyb3NzIGN1c3RvbWVyIGJvdW5kYXJpZXMsIHNvIGl0IG5lZWRzIHRoZVxuICAvLyBkdXJhYmxlLCB0YW1wZXItZXZpZGVudCB0cmFpbCDigJQgbm90IGp1c3QgdGhlIExva2kgb3BlcmF0b3IgbGluZS5cbiAgJ3JlZ2lzdHJ5LmltYWdlLmNvcHknLFxuICAvLyBBIHBsdWdpbiBpbWFnZSBzaWduZWQgKyBTQk9NLWF0dGVzdGVkIGJ5IHRoZSBwbGF0Zm9ybSdzIHBsdWdpbi1zaWduaW5nIGtleVxuICAvLyAoYXBpL2ltYWdlLXJlZ2lzdHJ5IFBPU1QgL2ludGVybmFsL3BsdWdpbi1zaWduYXR1cmVzLCBjYWxsZWQgYnkgdGhlIHBsdWdpblxuICAvLyBidWlsZCB3b3JrZXIpLiBUaGUga2V5IGlzIHdoYXQgc3ludGggdHJ1c3RzLCBzbyBldmVyeSB1c2UgaXMgb24gdGhlIHRyYWlsLlxuICAncmVnaXN0cnkuaW1hZ2Uuc2lnbicsXG4gIC8vIFRoZSBEb2NrZXIgdG9rZW4gZW5kcG9pbnQgbWludGluZyBhIHJlZ2lzdHJ5IHRva2VuIHRoYXQgR1JBTlRTIGFjY2Vzc1xuICAvLyAoYGRldGFpbHMuZ3JhbnRlZGA6IHJlcG8gKyBhY3Rpb25zOyB0aGUgc2NvcGUtbGVzcyBgZG9ja2VyIGxvZ2luYCBwcm9iZSBpc1xuICAvLyBub3QgcmVjb3JkZWQpIOKAlCBhbmQsIGFzIG91dGNvbWUgZmFpbHVyZSwgYSByZWZ1c2VkIGNyZWRlbnRpYWwgKGhhc2hlZFxuICAvLyB1c2VybmFtZSwgY3JlZGVudGlhbCBraW5kIG9ubHkpLlxuICAncmVnaXN0cnkudG9rZW4uaXNzdWUnLFxuICAvLyBBIHB1c2ggY3JlZGVudGlhbCBtaW50ZWQgZm9yIG9uZSBhbm9ueW1vdXMgc3VibWlzc2lvbidzXG4gIC8vIGBxdWFyYW50aW5lLzxzdWJtaXNzaW9uSWQ+YCByZXBvIChleHBpcnkgKyBUVEwsIG5ldmVyIHRoZSBzZWNyZXQpLlxuICAncmVnaXN0cnkucXVhcmFudGluZS5jcmVkZW50aWFsLm1pbnQnLFxuICAvLyBNZXNzYWdpbmcgKGFwaS9tZXNzYWdlKSDigJQgYWRtaW4gQlJPQURDQVNUIGFubm91bmNlbWVudHMgKyBkZXN0cnVjdGl2ZVxuICAvLyBkZWxldGVzLiAxOjEgdXNlciBtZXNzYWdlcyBhcmUgaW50ZW50aW9uYWxseSBOT1QgYXVkaXRlZCAobm9pc2UgKyB0aGV5IHdvdWxkXG4gIC8vIHB1bGwgcHJpdmF0ZSBjb250ZW50IGludG8gdGhlIHRyYWlsKS4gYGRldGFpbHNgIGNhcnJ5IG1ldGFkYXRhIG9ubHlcbiAgLy8gKHN1YmplY3QvdHlwZS9zY29wZSksIE5FVkVSIG1lc3NhZ2UgYm9keSBjb250ZW50LlxuICAnbWVzc2FnZS5hbm5vdW5jZW1lbnQuY3JlYXRlJyxcbiAgJ21lc3NhZ2UuZGVsZXRlJyxcbiAgLy8gQnVsayBcInJlbW92ZSBmcm9tIG15IGluYm94XCI6IGEgcGVyLXBhcnRpY2lwYW50IFZJRVcgY2hhbmdlLCBub3QgYSBkZWxldGUg4oCUXG4gIC8vIHRoZSByb3csIHRoZSBvdGhlciBwYXJ0aWNpcGFudHMgYW5kIHRoZSByZXRlbnRpb24gc3dlZXAgYXJlIHVudG91Y2hlZC4gT25lXG4gIC8vIHJvdyBwZXIgYnVsayBjYWxsIHdpdGggYGRldGFpbHMuY291bnRgIGFuZCB0aGUgZmlsdGVyIHNjb3BlLCBuZXZlciBwZXJcbiAgLy8gbWVzc2FnZSBhbmQgbmV2ZXIgdGhlIHNlYXJjaCB0ZXh0LlxuICAnbWVzc2FnZS5oaWRlJyxcbiAgLy8gVGhlIHVuZG8gb2YgYG1lc3NhZ2UuaGlkZWA6IHJvd3MgcHV0IGJhY2sgaW50byB0aGlzIG9yZydzIGluYm94LiBTYW1lXG4gIC8vIHNoYXBlIOKAlCBvbmUgcm93IHBlciBjYWxsIHdpdGggYGRldGFpbHMuY291bnRgLCBuZXZlciB0aGUgaWRzLlxuICAnbWVzc2FnZS51bmhpZGUnLFxuICAnbWVzc2FnZS5yZXN0b3JlJyxcbiAgLy8gTWFudWFsIG9uLWRlbWFuZCBQVVJHRSAocGVybWFuZW50IGhhcmQtZGVsZXRlKSBvZiBhbiBhbHJlYWR5LXNvZnQtZGVsZXRlZFxuICAvLyBtZXNzYWdlIHRvbWJzdG9uZSDigJQgdGhlIGRlc3RydWN0aXZlIGZpbmFsaXplciB0aGUgcmV0ZW50aW9uIHN3ZWVwIHdvdWxkXG4gIC8vIG90aGVyd2lzZSBwZXJmb3JtIGF0IHRoZSBwdXJnZSBkZWFkbGluZS4gYGRldGFpbHNgIGNhcnJ5IG1ldGFkYXRhIG9ubHkuXG4gICdtZXNzYWdlLnB1cmdlJyxcbiAgLy8gQW4gYXV0aG9yJ3MgZWRpdCBvZiBhIHNlbnQgbWVzc2FnZSAoYW5kIHJlZnVzZWQgYXR0ZW1wdHMsIGFzIGZhaWx1cmVzKS5cbiAgLy8gYGRldGFpbHNgIGNhcnJ5IHRoZSBuZXcgYm9keSdzIExFTkdUSCBvbmx5IOKAlCBuZWl0aGVyIHNpZGUgb2YgdGhlIGVkaXQuXG4gICdtZXNzYWdlLnVwZGF0ZScsXG4gIC8vIEEgbWVzc2FnZSBhdHRhY2htZW50IHN0b3JlZCAoZ2VuZXJhbCBvciBzdXBwb3J0IG1vdW50LCBgZGV0YWlscy5zdXJmYWNlYCkuXG4gIC8vIFR5cGUgKyBzaXplIG9ubHkg4oCUIG5ldmVyIHRoZSBieXRlcywgYW5kIG5vdCB0aGUgdXNlci1jaG9zZW4gZmlsZW5hbWUuXG4gICdtZXNzYWdlLmF0dGFjaG1lbnQudXBsb2FkJyxcbiAgLy8gQSBTWVNURU0gbm90aWZpY2F0aW9uIGRyb3BwZWQgaW50byBhbiBvcmcncyBpbmJveCBieSBhbiBpbnRlcm5hbCBzZXJ2aWNlXG4gIC8vIChQT1NUIC9tZXNzYWdlcy9pbnRlcm5hbC9ub3RpZnkpOyBgZGV0YWlscy5jYWxsZXJgIG5hbWVzIHRoZSBzZXJ2aWNlLlxuICAnbWVzc2FnZS5ub3RpZnkuaW50ZXJuYWwnLFxuICAvLyBUaGUgcGxhdGZvcm0gb3JnLWRlbGV0ZSBjYXNjYWRlIHJlY2xhaW1pbmcgYW4gb3JnJ3MgYXR0YWNobWVudCBCTE9CUyDigJRcbiAgLy8gYGRldGFpbHMuYmxvYnNEZWxldGVkYCwgb3IgYSBmYWlsdXJlIHJvdyB3aGVuIHRoZSByZWNsYWltIGRpZCBub3QgY29tcGxldGUuXG4gICdtZXNzYWdlLm9yZy5wdXJnZScsXG4gIC8vIFN1cHBvcnQgY2FzZXMgKGFwaS9tZXNzYWdlKS4gRGlzdGluY3QgZnJvbSB0aGUgYG1lc3NhZ2UuKmAgZmFtaWx5IGFib3ZlXG4gIC8vIGJlY2F1c2UgYSBjYXNlIGlzIG5vdCBhbiBvcmRpbmFyeSBtZXNzYWdlOiBpdCBjYXJyaWVzIGEgcmVzcG9uc2UtdGltZVxuICAvLyBjb21taXRtZW50LCBzbyBXSE8gcmFpc2VkIGl0IGFuZCBXSEVOIHdlIGZpcnN0IGFuc3dlcmVkIGFyZSB0aGUgZmFjdHMgYVxuICAvLyBkaXNwdXRlIHR1cm5zIG9uLiBgZGV0YWlsc2AgY2FycnkgdGhlIGNhc2UgbnVtYmVyLCBsZXZlbCBhbmQgc2V2ZXJpdHkg4oCUXG4gIC8vIG1ldGFkYXRhIG9ubHksIG5ldmVyIHRoZSBib2R5IG9mIHdoYXQgYSBjdXN0b21lciB3cm90ZS5cbiAgLy9cbiAgLy8gVHdvIG9mIHRoZSBuaW5lIHBsYW5uZWQgc3VwcG9ydCBhY3Rpb25zIGFyZSBoZXJlLCBhbmQgb25seSB0d286IHRoZXNlIGFyZVxuICAvLyB0aGUgb25lcyB3aXRoIHJlYWwgZW1pdHRlcnMgdG9kYXkuIFRoZSByZXN0IChgc3RhdHVzYCwgYHNldmVyaXR5YCxcbiAgLy8gYGFzc2lnbmAsIGB0cmFuc2ZlcmAsIGBub3RlYCwgYHJlYWRgKSBsYW5kIFdJVEggdGhlIHJvdXRlcyB0aGF0IGVtaXQgdGhlbSDigJRcbiAgLy8gYSBkZWNsYXJlZCBhY3Rpb24gbm90aGluZyBlbWl0cyBpcyBkZWFkIHZvY2FidWxhcnksIGFuZCB0aGUgcGFyaXR5IHRlc3RcbiAgLy8gd291bGQgdGhlbiBmb3JjZSBhIGRvY3Mgcm93IGRlc2NyaWJpbmcgYW4gZXZlbnQgdGhhdCBuZXZlciBmaXJlcy5cbiAgLy9cbiAgLy8gYHN1cHBvcnQuY2FzZS5yZWFkYCB3aWxsIG1hdHRlciBtb3N0IG9mIGFsbCB3aGVuIGl0IGFycml2ZXM6IGl0IGlzIHRoZSBvbmx5XG4gIC8vIHJlY29yZCB0aGF0IHNvbWVvbmUgYXQgdGhlIHZlbmRvciBvcGVuZWQgYSBjdXN0b21lcidzIGNhc2UuXG4gICdzdXBwb3J0LmNhc2Uub3BlbicsXG4gICdzdXBwb3J0LmNhc2UucmVwbHknLFxuICAvLyBUaGUgd29ya2Zsb3cgbXV0YXRpb25zLiBFYWNoIGlzIGF1ZGl0ZWQgYmVjYXVzZSBlYWNoIG1vdmVzIGEgY2FzZSdzXG4gIC8vIHJlbGF0aW9uc2hpcCB0byBpdHMgcmVzcG9uc2UgY29tbWl0bWVudDogc3RhdHVzIHN0b3BzIG9yIHJlc3RhcnRzIHRoZVxuICAvLyBjbG9jaywgc2V2ZXJpdHkgY2hhbmdlcyB3aGljaCB0YXJnZXQgYXBwbGllcywgYW5kIHRoZSB0d28gb3duZXJzaGlwXG4gIC8vIGFjdGlvbnMgZGVjaWRlIFdITyBpcyBhY2NvdW50YWJsZSBmb3IgbWVldGluZyBpdC4gQSBzaWxlbnQgY2hhbmdlIG9mIG93bmVyXG4gIC8vIGlzIGhvdyBhY2NvdW50YWJpbGl0eSBmb3IgYSBtaXNzZWQgdGFyZ2V0IGRpc2FwcGVhcnMuXG4gICdzdXBwb3J0LmNhc2Uuc3RhdHVzJyxcbiAgJ3N1cHBvcnQuY2FzZS5zZXZlcml0eScsXG4gICdzdXBwb3J0LmNhc2UuYXNzaWduJyxcbiAgJ3N1cHBvcnQuY2FzZS50cmFuc2ZlcicsXG4gIC8vIE9OLUNBTEwuIFRoZSBwcm92aWRlciBvd25zIHRoZSByb3RhLCB0aGUgZXNjYWxhdGlvbiBhbmQgdGhlIGNvbnRhY3RcbiAgLy8gbWV0aG9kczsgd2hhdCBpdCBjYW5ub3Qgb3duIGlzIGFuIGF1ZGl0YWJsZSBhbnN3ZXIgdG8gXCJ3aG8gcGlja2VkIHRoaXMgdXBcbiAgLy8gYXQgMDM6MTRcIi4gQSBjbGljayBvbiBhIGxpbmsgaW4gdGhlaXIgVUkgaXMgbm90IGFuIGlkZW50aXR5IHRoaXMgc3lzdGVtIGNhblxuICAvLyBhdHRlc3QgdG8sIHNvIHRoZWlyIGluY2lkZW50IHN0YXRlIGNoYW5nZSBpcyByZWxheWVkIGhlcmUgYW5kIHJlY29yZGVkXG4gIC8vIGFnYWluc3QgdGhlIGFnZW50IHRoZXkgbmFtZS4gVGhlIGhhc2ggY2hhaW4gaXMgdGhlIHBvaW50OiBhIHBvc3QtaW5jaWRlbnRcbiAgLy8gcmV2aWV3IG5lZWRzIHRoZSBhY2sgdG8gYmUgZXZpZGVuY2UgcmF0aGVyIHRoYW4gYSBzY3JlZW5zaG90LlxuICAvL1xuICAvLyBgZXNjYWxhdGVkYCBpcyBhdWRpdGVkIHNlcGFyYXRlbHkgYmVjYXVzZSBpdCBpcyB0aGUgcmVjb3JkIHRoYXQgdGhlIEZJUlNUXG4gIC8vIHJlc3BvbmRlciBkaWQgbm90IGFuc3dlciDigJQgdGhlIGZhY3QgYSByb3RhIGlzIGFkanVzdGVkIG9uLCBhbmQgdGhlIG9uZSBtb3N0XG4gIC8vIGxpa2VseSB0byBiZSBkaXNwdXRlZCBsYXRlci5cbiAgJ3N1cHBvcnQub25jYWxsLmFja25vd2xlZGdlZCcsXG4gICdzdXBwb3J0Lm9uY2FsbC5lc2NhbGF0ZWQnLFxuICAvLyBUaGUgdGVzdCBwYWdlLiBBdWRpdGVkIGJlY2F1c2UgaXQgUklOR1MgQSBQSE9ORTogd2hvZXZlciBpdCB3YWtlcyBpc1xuICAvLyBlbnRpdGxlZCB0byBhIHJlY29yZCBvZiB3aG8gY2F1c2VkIHRoYXQsIGF0IHdoYXRldmVyIGhvdXIgaXQgd2FzLlxuICAnc3VwcG9ydC5vbmNhbGwudGVzdCcsXG4gIC8vIFRoZSBwZXItY2FzZSBzd2VlcCBwYWdpbmcgdGhlIHJvdGEgZm9yIGEgcHJlbWl1bSBjYXNlIG5lYXJpbmcgaXRzIHRhcmdldC5cbiAgLy8gUmVjb3JkZWQgb25jZSwgb24gdGhlIHRpY2sgdGhlIGNhc2UgRU5URVJFRCB0aGUgd2luZG93IOKAlCB0aGUgc3dlZXAgcmUtc2VuZHNcbiAgLy8gdGhlIHBhZ2UgZXZlcnkgdGljaywgYW5kIHR3ZW50eS1mb3VyIHJvd3MgZm9yIG9uZSBwYWdlIHdvdWxkIGJlIG5vaXNlLlxuICAnc3VwcG9ydC5vbmNhbGwucGFnZWQnLFxuICAvLyBUaGUgdHdvIENPTlRBQ1QgYWN0aW9ucyAocGxhdGZvcm0pLiBOb3QgY2FzZSBldmVudHMg4oCUIGVudGl0bGVtZW50IGV2ZW50czpcbiAgLy8gZWFjaCBvbmUgY2hhbmdlcyB3aG8gaW4gYW4gb3JnIGlzIGFibGUgdG8gY29tbWl0IHVzIHRvIGEgcmVzcG9uc2UgdGFyZ2V0IGF0XG4gIC8vIGFsbCwgYW5kIGRlc2lnbmF0aW5nIHNwZW5kcyBhIHNsb3Qgb2YgYSBQQUlELCBhY2NvdW50LXBvb2xlZCBhbGxvd2FuY2UuIFRoZVxuICAvLyByZXZva2UgY2FycmllcyB0aGUgY291bnQgb2Ygb3BlbiBjYXNlcyBpdCBsZWZ0IGJlaGluZCwgc28gYW4gb3JwaGFuZWQgY2FzZVxuICAvLyBpcyBhIHJlY29yZGVkIGZhY3QgcmF0aGVyIHRoYW4gc29tZXRoaW5nIGRpc2NvdmVyZWQgbGF0ZXIuXG4gICdzdXBwb3J0LmNvbnRhY3QuZGVzaWduYXRlJyxcbiAgJ3N1cHBvcnQuY29udGFjdC5yZXZva2UnLFxuICAvLyBUaGUgcHJlbWl1bSBVUEdSQURFLCBib3RoIGRpcmVjdGlvbnMuIFNlcGFyYXRlIGFjdGlvbnMgZnJvbSBkZXNpZ25hdGlvblxuICAvLyBiZWNhdXNlIHRoZXkgYW5zd2VyIHRvIGEgZGlmZmVyZW50IGNhcCBhbmQgY2FycnkgYSBkaWZmZXJlbnQgZmFjdDogd2hvIHdhc1xuICAvLyBlbnRpdGxlZCB0byAyNHg3IGNvdmVyYWdlLCBhbmQgd2hlbi4gQSByZXNwb25zZS10aW1lIGRpc3B1dGUgb3ZlciBhblxuICAvLyBvdXQtb2YtaG91cnMgY2FzZSB0dXJucyBvbiBleGFjdGx5IHRoYXQuXG4gICdzdXBwb3J0LmNvbnRhY3QudXBncmFkZScsXG4gICdzdXBwb3J0LmNvbnRhY3QuZG93bmdyYWRlJyxcbiAgLy8gU3RhZmYgbm90ZXMgb24gYSBjYXNlLiBBdWRpdGVkIGJlY2F1c2UgYSBub3RlIGlzIHRoZSB2ZW5kb3IncyBpbnRlcm5hbFxuICAvLyBhc3Nlc3NtZW50IG9mIGEgY3VzdG9tZXIgYW5kIHRoZSBvbmx5IHN1cmZhY2Ugb24gYSBjYXNlIHRoZSB0ZW5hbnQgbXVzdFxuICAvLyBuZXZlciBzZWU7IHRoZSB0cmFpbCBjYXJyaWVzIE1FVEFEQVRBIE9OTFkgKGNhc2UgbnVtYmVyLCBub3RlIGlkLCBsZW5ndGgpXG4gIC8vIGFuZCBuZXZlciB0aGUgYm9keSwgc2luY2UgdGhlIGNlbnRyYWwgdHJhaWwgaXMgcmVhZCBmYXIgbW9yZSB3aWRlbHkgdGhhblxuICAvLyB0aGUgc3VwcG9ydCBxdWV1ZSBpcy5cbiAgJ3N1cHBvcnQuY2FzZS5ub3RlJyxcbiAgLy8gVGhlIGNhbm5lZC1yZXBseSBsaWJyYXJ5LiBPTkUgYWN0aW9uIGZvciBjcmVhdGUvZWRpdC9yZXRpcmUgcmF0aGVyIHRoYW5cbiAgLy8gdGhyZWUsIGJlY2F1c2UgdGhlIHRyYWlsJ3MgcXVlc3Rpb24gaGVyZSBpcyBcIndobyBjaGFuZ2VkIHRoZSB3b3JkaW5nIHRoZVxuICAvLyBkZXNrIHNlbmRzIGN1c3RvbWVyc1wiLCBub3Qgd2hpY2ggdmVyYiB0aGV5IHVzZWQg4oCUIGBkZXRhaWxzYCBjYXJyaWVzIHRoYXQuXG4gIC8vIFN5c3RlbS13aWRlIHJhdGhlciB0aGFuIHBlci10ZW5hbnQsIHNvIHRoZXNlIHJvd3MgbmFtZSBubyBhZmZlY3RlZCBvcmcuXG4gICdzdXBwb3J0LmNhbm5lZC53cml0ZScsXG4gIC8vIEJpbGxpbmcgKGFwaS9iaWxsaW5nKSDigJQgc3Vic2NyaXB0aW9uICsgZW50aXRsZW1lbnQgbXV0YXRpb25zLCBtaXJyb3JlZCB0byB0aGVcbiAgLy8gY2VudHJhbCBhdWRpdCB0cmFpbCAodGhlc2UgYWxzbyB3cml0ZSB0byB0aGUgc2VydmljZS1sb2NhbCBiaWxsaW5nX2V2ZW50c1xuICAvLyBjb2xsZWN0aW9uKS4gYGRldGFpbHNgIGNhcnJ5IHBsYW4vdGllci9hZGRvbiBpZHMgb25seSDigJQgbmV2ZXIgY2FyZC9wYXltZW50XG4gIC8vIHNlY3JldHMgb3IgYW4gQVdTIGFjY291bnQgaWQuXG4gIC8vIFN1YnNjcmlwdGlvbiBsaWZlY3ljbGUgYSBDVVNUT01FUiBkcml2ZXMgKHRoZSBhZG1pbiBjb3VudGVycGFydCBpc1xuICAvLyBgYmlsbGluZy50aWVyLm92ZXJyaWRlYCk6IHNlbGYtc2VydmUgY3JlYXRlIChkaXJlY3Qgb3IgTWFya2V0cGxhY2UgY2xhaW0pLFxuICAvLyBwbGFuL2ludGVydmFsIGNoYW5nZSwgY2FuY2VsLWF0LXBlcmlvZC1lbmQsIHVuZG8tY2FuY2VsLCBjYXNjYWRlIGRlbGV0ZS5cbiAgJ2JpbGxpbmcuc3Vic2NyaXB0aW9uLmNyZWF0ZScsXG4gICdiaWxsaW5nLnN1YnNjcmlwdGlvbi51cGRhdGUnLFxuICAnYmlsbGluZy5zdWJzY3JpcHRpb24ucmVhY3RpdmF0ZScsXG4gICdiaWxsaW5nLnN1YnNjcmlwdGlvbi5jYW5jZWwnLFxuICAnYmlsbGluZy5zdWJzY3JpcHRpb24uZGVsZXRlJyxcbiAgJ2JpbGxpbmcudGllci5vdmVycmlkZScsXG4gIC8vIEEgTkVHT1RJQVRFRCBzdXBwb3J0IHNpemUgZmxvb3IgcmVwbGFjaW5nIHRoZSBjb21wdXRlZCByYW1wLiBTeXN0ZW0tb3JnXG4gIC8vIG9ubHksIGFuZCBhdWRpdGVkIHdpdGggdGhlIGFncmVlZCBQUklDRSBhbmQgdGhlIGFncmVlZCBTRUFUIENPVU5UIHRvZ2V0aGVyOlxuICAvLyBhIGRpc3B1dGUgYWJvdXQgd2hhdCB3YXMgc2lnbmVkIGZvciB0dXJucyBvbiB0aGF0IHBhaXIsIGFuZCB0aGUgcHJpY2UgYWxvbmVcbiAgLy8gY2Fubm90IGFuc3dlciBcImF0IHdoYXQgc2NhbGVcIi5cbiAgJ2JpbGxpbmcuc3VwcG9ydC1mbG9vci5vdmVycmlkZScsXG4gIC8vIEEgR1JBTlRFRCBvbmUtdGltZSBzdXBwb3J0IGluY2lkZW50IOKAlCBhIGNvbW1lcmNpYWwgY29uY2Vzc2lvbiwgbm90IGEgc2FsZS5cbiAgLy8gVGhlcmUgaXMgZGVsaWJlcmF0ZWx5IG5vIHB1cmNoYXNlIHBhdGg6IG1vbnRobHkgc3VwcG9ydCBjYW5jZWxzIGZyZWVseSwgc29cbiAgLy8gYW4gaW5jaWRlbnQgcHJpY2VkIGFib3ZlIGEgbW9udGggaXMgZG9taW5hdGVkIGFuZCBvbmUgYmVsb3cgaXQgbG9zZXMgbW9uZXkuXG4gIC8vIFRoZSByb3cgY2FycmllcyB0aGUgY291bnQgYW5kIHRoZSByZXN1bHRpbmcgYmFsYW5jZSwgd2hpY2ggaXMgd2hhdCBhIGxhdGVyXG4gIC8vIHJldmlldyBvZiBcIndobyBnYXZlIHdoYXQgYXdheVwiIG5lZWRzLlxuICAnYmlsbGluZy5zdXBwb3J0LWluY2lkZW50LmdyYW50JyxcbiAgLy8gT3BlcmF0b3Itb25seSByZXNlZWQgb2YgdGhlIGludm9pY2UgbGVkZ2VyIGZyb20gdGhlIHBheW1lbnQgcHJvdmlkZXInc1xuICAvLyBoaXN0b3J5IChQT1NUIC9iaWxsaW5nL2FkbWluL2JhY2tmaWxsKSDigJQgbXV0YXRlcyBmaW5hbmNlIGRhdGEgZmxlZXQtd2lkZS5cbiAgJ2JpbGxpbmcuYWRkb24uYWRkJyxcbiAgJ2JpbGxpbmcuYWRkb24ucmVtb3ZlJyxcbiAgLy8gU3lzdGVtLWluaXRpYXRlZCByZW1vdmFsIG9mIGEgdGllci1pbmNsdWRlZCBhZGQtb24gb24gYSBwbGFuIHVwZ3JhZGUgKHRoZVxuICAvLyBhY2NvdW50J3MgbmV3IHRpZXIgbm93IGJ1bmRsZXMgdGhlIGZlYXR1cmUpIOKAlCBkaXN0aW5jdCBmcm9tIGEgdXNlci1pbml0aWF0ZWRcbiAgLy8gYHJlbW92ZWAgc28gZmluYW5jZSBjYW4gdGVsbCBhbiBhdXRvLXBydW5lIGZyb20gYSBjdXN0b21lciBhY3Rpb24uXG4gICdiaWxsaW5nLmFkZG9uLnBydW5lJyxcbiAgLy8gRGlzY291bnRzIChkb2NzL2JpbGxpbmctZGlzY291bnRzLm1kKSDigJQgbWludC9pc3N1ZS9hcHBseS9yZW1vdmUvcmV2b2tlIG9mIGFcbiAgLy8gcHJpY2UgY291cG9uIG9yIHVzYWdlIGNyZWRpdC4gYGRldGFpbHNgIGNhcnJ5IHRoZSBkaXNjb3VudCBpZCArIGtpbmQvdmFsdWVcbiAgLy8gb25seSwgbmV2ZXIgdGhlIG9wYXF1ZSB0b2tlbiBvciBzaWduaW5nIGtleS5cbiAgJ2JpbGxpbmcuZGlzY291bnQuZ2VuZXJhdGUnLFxuICAnYmlsbGluZy5kaXNjb3VudC5pc3N1ZScsXG4gICdiaWxsaW5nLmRpc2NvdW50LmFwcGx5JyxcbiAgJ2JpbGxpbmcuZGlzY291bnQucmVtb3ZlJyxcbiAgJ2JpbGxpbmcuZGlzY291bnQucmV2b2tlJyxcbiAgLy8gQ2FtcGFpZ25zIChkb2NzL2JpbGxpbmctZGlzY291bnRzLm1kKSDigJQgdGhlIGlkZW50aXR5IGEgc2V0IG9mIGRpc2NvdW50IGNvZGVzXG4gIC8vIGJlbG9uZ3MgdG8sIGNhcnJ5aW5nIHRoZSBidWRnZXQsIHdpbmRvdyBhbmQgb25lLXBlci1hY2NvdW50IHJ1bGUuIEF1dGhvcmluZ1xuICAvLyBvbmUgZGVjaWRlcyBob3cgbXVjaCB0aGUgYnVzaW5lc3MgbWF5IGdpdmUgYXdheSwgc28gZWFjaCBjaGFuZ2UgaXMgYXVkaXRlZC5cbiAgJ2JpbGxpbmcuY2FtcGFpZ24uY3JlYXRlJyxcbiAgJ2JpbGxpbmcuY2FtcGFpZ24udXBkYXRlJyxcbiAgJ2JpbGxpbmcuY2FtcGFpZ24uZW5kJyxcbiAgLy8gUHJvbW90aW9ucyAoZG9jcy9iaWxsaW5nLWRpc2NvdW50cy5tZCNwcm9tb3Rpb25zKSDigJQgcnVsZS1kcml2ZW4gYXV0by1ncmFudFxuICAvLyBjYW1wYWlnbnMuIGBkZXRhaWxzYCBjYXJyeSB0aGUgcHJvbW90aW9uIGlkICsgY2VudHMvZXZlbnQgb25seS5cbiAgJ2JpbGxpbmcucHJvbW90aW9uLmNyZWF0ZScsXG4gICdiaWxsaW5nLnByb21vdGlvbi51cGRhdGUnLFxuICAnYmlsbGluZy5wcm9tb3Rpb24ucmV2b2tlJyxcbiAgJ2JpbGxpbmcucHJvbW90aW9uLmdyYW50JyxcbiAgJ2JpbGxpbmcucHJvbW90aW9uLmFjdGl2YXRlJyxcbiAgLy8gRXhwYW5zaW9uIE9GRkVSUyAoZG9jcy9wbGFucy9zYWxlcy1hZ2VudC5tZCkuIEFuIGF1dG9tYXRlZCBncmFudGVyIG5lZWRzIGl0c1xuICAvLyBvd24gdHJhaWw6IGBkZWNsaW5lZGAgYW5kIGBkaXNtaXNzZWRgIGFyZSB0aGUgYWNjb3VudCdzIG93biBhbnN3ZXJzIChhbmQgdGhlXG4gIC8vIHBhaXIgRDYncyBsZW5ndGhlbmVkIHF1aWV0IHdpbmRvdyBkZXBlbmRzIG9uIOKAlCBcIm5ldmVyIHNhdyBpdFwiIGFuZCBcInNhaWQgbm9cIlxuICAvLyBtdXN0IG5vdCBiZSB0aGUgc2FtZSByb3cpOyBgZXhjbHVzaW9uLnNldGAvYGNsZWFyZWRgIGFyZSB0aGUgb3BlcmF0b3IgdmV0byxcbiAgLy8gd2hpY2ggaXMgdGhlIHByaWNlIG9mIHNoaXBwaW5nIHRoZSBmZWF0dXJlIGF0IGFsbCBhbmQgdGhlcmVmb3JlIGhhcyB0byBiZVxuICAvLyBhdHRyaWJ1dGFibGU7IGB0cmlnZ2VyYCBpcyBhIGh1bWFuIGFza2luZyBmb3IgYW4gb2ZmZXIgbm93LCByZWNvcmRlZCBzbyBhXG4gIC8vIG1hbnVhbCBvZmZlciBpcyBkaXN0aW5ndWlzaGFibGUgZnJvbSBhbiBhZ2VudCBvbmUgaW4gdGhlIG91dGNvbWUgbG9nLlxuICAvLyBUaGUgYWdlbnQncyBPV04gd29yaywgdW5kZXIgaXRzIG93biBhY3RvciAoRDE0IOKAlCBgT0ZGRVJTX0FHRU5UX0FDVE9SX0lEYCkuXG4gIC8vIGBzZW50YCBpcyB3aGF0IG1ha2VzIFwid2h5IGRpZCB0aGlzIGFjY291bnQgZ2V0IHRoaXM/XCIgYW5zd2VyYWJsZSBmcm9tIHRoZVxuICAvLyBjZW50cmFsIHRyYWlsIHJhdGhlciB0aGFuIG9ubHkgZnJvbSB0aGUgc2VydmljZSdzIG93biBjb2xsZWN0aW9uLCBhbmRcbiAgLy8gYHdpdGhkcmF3bmAgaXMgdGhlIHJlY2FsbCBhbiBvcGVyYXRvciByZWFjaGVzIGZvciBvbiB0aGUgbW9ybmluZyBhIHJ1bGVcbiAgLy8gdHVybnMgb3V0IHRvIGJlIHdyb25nIOKAlCBib3RoIGNhcnJ5IHRoZSByYXRpb25hbGUgb3IgdGhlIHdpbmRvdywgbmV2ZXIgY29weS5cbiAgJ2JpbGxpbmcub2ZmZXIuc2VudCcsXG4gICdiaWxsaW5nLm9mZmVyLndpdGhkcmF3bicsXG4gICdiaWxsaW5nLm9mZmVyLmRlY2xpbmVkJyxcbiAgJ2JpbGxpbmcub2ZmZXIuZGlzbWlzc2VkJyxcbiAgJ2JpbGxpbmcub2ZmZXIuZXhjbHVzaW9uLnNldCcsXG4gICdiaWxsaW5nLm9mZmVyLmV4Y2x1c2lvbi5jbGVhcmVkJyxcbiAgJ2JpbGxpbmcub2ZmZXIudHJpZ2dlcicsXG4gIC8vIFVzYWdlLWNyZWRpdCByZWFsaXphdGlvbiDigJQgYSBjdXN0b21lci9jb21wbGlhbmNlLXZpc2libGUgcmVjb3JkIG9mIGNyZWRpdFxuICAvLyBtb3ZlbWVudDogYGNvbnN1bWVkYCAoTWFya2V0cGxhY2UgbWV0ZXJlZCBkcmF3ZG93biksIGBleGhhdXN0ZWRgIChiYWxhbmNlIGhpdFxuICAvLyB6ZXJvKSwgYW5kIGEgY29tYm8gZW5kaW5nLiBgZGV0YWlsc2AgY2FycnkgY2VudHMvaWRzIG9ubHksIG5vIHBheW1lbnQgc2VjcmV0cy5cbiAgJ2JpbGxpbmcuY3JlZGl0LmNvbnN1bWVkJyxcbiAgJ2JpbGxpbmcuY3JlZGl0LmV4aGF1c3RlZCcsXG4gICdiaWxsaW5nLmNvbWJvLmV4cGlyZWQnLFxuICAvLyBSZXBvcnRpbmcgKGFwaS9yZXBvcnRpbmcpIOKAlCB0aGUgdGhyZWUgcmVwb3J0aW5nIG11dGF0aW9ucyB3aG9zZSBlZmZlY3RcbiAgLy8gb3V0bGl2ZXMgYSByZXF1ZXN0IGxvZzogdGhlIHBlci1vcmcgY29ycmVsYXRpb24td2luZG93IGNvbmZpZyB3cml0ZSwgYVxuICAvLyBwb3N0LWRlcGxveSBvdXRjb21lIG1hcmtlciAoaXQgbW92ZXMgdGhlIG9yZydzIERPUkEgQ0ZSL01UVFIpLCBhbmQgdGhlXG4gIC8vIGluYm91bmQgYmlsbGluZ+KGknJlcG9ydGluZyByZXRlbnRpb24tZW50aXRsZW1lbnQgc3luYyAoYSByZXRlbnRpb24gY3V0IGlzIGFcbiAgLy8gZGF0YS1kZXN0cm95aW5nIGNoYW5nZSBhcHBsaWVkIGJ5IHRoZSBuZXh0IHN3ZWVwKS4gYGRldGFpbHNgIGNhcnJ5IHRoZVxuICAvLyBzZXR0aW5ncy9vdXRjb21lIHZhbHVlcyBvbmx5LlxuICAncmVwb3J0aW5nLnNldHRpbmdzLnVwZGF0ZScsXG4gICdyZXBvcnRpbmcuZGVwbG95bWVudC5vdXRjb21lJyxcbiAgJ3JlcG9ydGluZy5yZXRlbnRpb24uc3luYycsXG4gIC8vIFN0YWtlaG9sZGVyIHJlcG9ydHMg4oCUIHRoZSBhZGQtb24ncyBhdXRob3JpbmcgYW5kIFBVQkxJU0hJTkcgc3VyZmFjZS4gUHVibGlzaGluZ1xuICAvLyBpcyB0aGUgbW9tZW50IGludGVybmFsIGRlbGl2ZXJ5IG51bWJlcnMgbGVhdmUgdGhlIHBsYXRmb3JtLCBzbyB0aGUgd2hvbGVcbiAgLy8gb3V0d2FyZCBwYXRoIGlzIGF1ZGl0YWJsZTogd2hpY2ggcmVwb3J0LCB3aGljaCBwZXJpb2QncyBmcm96ZW4gc25hcHNob3QsXG4gIC8vIHdoaWNoIHZlcnNpb24sIGFuZCB3aG8gbGV0IGl0IG91dC4gYGxpbmsuY3JlYXRlZGAgLyBgbGluay5yZXZva2VkYCBjb3ZlciB0aGVcbiAgLy8gVVJMcyB0aGF0IGxldCBzb21lb25lIHdpdGhvdXQgYW4gYWNjb3VudCByZWFkIGl0OyBgcmVjaXBpZW50LmFkZGVkYCAvXG4gIC8vIGByZWNpcGllbnQucmVtb3ZlZGAgY292ZXIgd2hvIGlzIG9uIHRoZSBkaXN0cmlidXRpb24gbGlzdCwgd2hpY2ggaXMgdGhlIG90aGVyXG4gIC8vIHdheSBkYXRhIHJlYWNoZXMgYSBwZXJzb24uIGBvd25lcnNoaXAudHJhbnNmZXJgIGlzIGEgcHJpdmlsZWdlIG1vdmU6IGFcbiAgLy8gc2NoZWR1bGVkIHJ1biBpcyBhdXRob3JpemVkIGFzIGl0cyBPV05FUiwgc28gaGFuZGluZyBhIGRlZmluaXRpb24gb3ZlciBoYW5kc1xuICAvLyBvdmVyIHdob3NlIGFjY2VzcyB0aGUgbnVtYmVycyBhcmUgY29tcHV0ZWQgd2l0aC5cbiAgLy9cbiAgLy8gRGVsaWJlcmF0ZWx5IE5PVCBhdWRpdGVkOiByZWFkaW5nIGEgc2hhcmVkIHJlcG9ydC4gVGhlIGFjY2VzcyBpcyBsb2dnZWQgYW5kXG4gIC8vIGNvdW50ZWQgcGVyIGxpbmssIGJ1dCBpdCBpcyBhbiBVTkFVVEhFTlRJQ0FURUQsIGV4dGVybmFsbHktdHJpZ2dlcmVkIGV2ZW50IOKAlFxuICAvLyBhbnlvbmUgaG9sZGluZyBhIFVSTCBjb3VsZCBvdGhlcndpc2Ugd3JpdGUgdW5ib3VuZGVkIHJvd3MgaW50byB0aGUgb3JnJ3MgYXVkaXRcbiAgLy8gdHJhaWwsIHdoaWNoIHR1cm5zIGEgcmVhZCBpbnRvIGEgd2F5IHRvIGJ1cnkgdGhlIGVudHJpZXMgdGhhdCBtYXR0ZXIuXG4gICdyZXBvcnRpbmcucmVwb3J0LmRlZmluaXRpb24uY3JlYXRlJyxcbiAgJ3JlcG9ydGluZy5yZXBvcnQuZGVmaW5pdGlvbi51cGRhdGUnLFxuICAncmVwb3J0aW5nLnJlcG9ydC5kZWZpbml0aW9uLmRlbGV0ZScsXG4gICdyZXBvcnRpbmcucmVwb3J0Lm93bmVyc2hpcC50cmFuc2ZlcicsXG4gICdyZXBvcnRpbmcucmVwb3J0LnB1Ymxpc2hlZCcsXG4gICdyZXBvcnRpbmcucmVwb3J0LnJlcHVibGlzaGVkJyxcbiAgJ3JlcG9ydGluZy5yZXBvcnQubGluay5jcmVhdGVkJyxcbiAgJ3JlcG9ydGluZy5yZXBvcnQubGluay5yZXZva2VkJyxcbiAgJ3JlcG9ydGluZy5yZXBvcnQucmVjaXBpZW50LmFkZGVkJyxcbiAgJ3JlcG9ydGluZy5yZXBvcnQucmVjaXBpZW50LnJlbW92ZWQnLFxuICAncmVwb3J0aW5nLnJlcG9ydC5wb2xpY3kudXBkYXRlJyxcbiAgLy8gQSBkZWZpbml0aW9uIFNUT1BQRUQgcHJvZHVjaW5nIHJlcG9ydHMgd2l0aG91dCBhbnlvbmUgYXNraW5nIGl0IHRvOiB0aGUgb3duZXJcbiAgLy8gd2FzIGRlYWN0aXZhdGVkIG9yIHJlbW92ZWQsIG9yIGxvc3QgdGhlIHBlcm1pc3Npb24gYSBydW4gaXMgYXV0aG9yaXplZCB3aXRoLlxuICAvLyBSZWNvcmRlZCBiZWNhdXNlIHRoZSBlZmZlY3QgaXMgc2lsZW50IOKAlCBhIG1hbmFnZXIgZmluZHMgb3V0IGJ5IG5vdCByZWNlaXZpbmdcbiAgLy8gdGhlIHJlcG9ydCDigJQgc28gdGhlIHRyYWlsIGhhcyB0byBzYXkgd2hpY2ggcmVwb3J0cyBzdG9wcGVkIGFuZCB3aHkuXG4gICdyZXBvcnRpbmcucmVwb3J0LnBhdXNlZCcsXG4gIC8vIOKApmFuZCBzdGFydGVkIGFnYWluLiBJdHMgb3duIGFjdGlvbiByYXRoZXIgdGhhbiBhIGRldGFpbCBvbiB0aGUgcGF1c2UsIGJlY2F1c2UgdGhlXG4gIC8vIHF1ZXN0aW9uIGEgcmV2aWV3ZXIgYXNrcyBpcyBcIndhcyB0aGlzIGFjY291bnQncyByZXBvcnRpbmcgb2ZmIGJldHdlZW4gdGhlc2UgdHdvXG4gIC8vIGRhdGVzXCIsIGFuZCBhbnN3ZXJpbmcgaXQgZnJvbSBhIHNpbmdsZSBhY3Rpb24ncyBkZXRhaWxzIG1lYW5zIHJlYWRpbmcgZXZlcnkgcm93LlxuICAncmVwb3J0aW5nLnJlcG9ydC5yZXN1bWVkJyxcbiAgLy8gVGhlIGRyYWZ0aW5nIGhhbGYgb2YgYSBydW46IGEgY29tcG9zZS9yZWdlbmVyYXRlIGZyZWV6ZXMgdGhlIG9yZydzIG51bWJlcnNcbiAgLy8gaW50byBhIHJ1biwgdGhlIGxlYWQncyBub3RlcyBhcmUgZWRpdGVkIG9udG8gaXQgKG1ldGFkYXRhIG9ubHkg4oCUIGxlbmd0aCxcbiAgLy8gbmV2ZXIgdGhlIHByb3NlKSwgYW5kIGFuIEFJIHN1bW1hcnkgaXMgZHJhZnRlZCBmcm9tIGl0ICh0aGUgbnVtYmVycyB3ZW50IHRvXG4gIC8vIGEgcHJvdmlkZXI7IGBvdXRjb21lYCBjYXJyaWVzIGEgcmVmdXNhbCkuIEEgcmVzZW5kIHJlLW1pbnRzIGEgcmVjaXBpZW50J3NcbiAgLy8gY29uZmlybWF0aW9uIGNyZWRlbnRpYWwuIGB2ZXJpZmllZGAgLyBgdW5zdWJzY3JpYmVkYCBhcmUgdGhlIFVOQVVUSEVOVElDQVRFRFxuICAvLyByZWNpcGllbnQncyBvd24gYWN0cyAoYWN0b3IgYGFub255bW91c2AsIGEgaGFzaGVkIGFkZHJlc3Mgb25seSk6IGJvdW5kZWQgYnlcbiAgLy8gY29uc3RydWN0aW9uIOKAlCB0aGUgdmVyaWZ5IHRva2VuIGlzIHNpbmdsZS11c2UsIGFuZCBvbmx5IHRoZSBjbGljayB0aGF0XG4gIC8vIGFjdHVhbGx5IHN0b3BzIGRlbGl2ZXJ5IHdyaXRlcyBhbiB1bnN1YnNjcmliZSByb3cuXG4gICdyZXBvcnRpbmcucmVwb3J0LnJ1bi5jb21wb3NlJyxcbiAgJ3JlcG9ydGluZy5yZXBvcnQucnVuLm5vdGVzJyxcbiAgJ3JlcG9ydGluZy5yZXBvcnQucnVuLnN1bW1hcnknLFxuICAncmVwb3J0aW5nLnJlcG9ydC5yZWNpcGllbnQucmVzZW5kJyxcbiAgJ3JlcG9ydGluZy5yZXBvcnQucmVjaXBpZW50LnZlcmlmaWVkJyxcbiAgJ3JlcG9ydGluZy5yZXBvcnQucmVjaXBpZW50LnVuc3Vic2NyaWJlZCcsXG4gIC8vIE1BQ0hJTkUgaW5nZXN0IChgcmVwb3J0aW5nOmluZ2VzdGAgc2NvcGUpLiBPbmUgYGJhdGNoYCByb3cgcGVyIFBPU1QgdG8gdGhlXG4gIC8vIGV2ZW50IC8gaW5jaWRlbnQgLyBpbmdlc3QtaGVhbHRoIHJvdXRlcyDigJQgY291bnRzIHBsdXMgY2FwcGVkIHBpcGVsaW5lLFxuICAvLyBleGVjdXRpb24sIEV2ZW50QnJpZGdlLWV2ZW50IGFuZCBpbmNpZGVudCBpZCBsaXN0cywgYXR0cmlidXRlZCB0byB0aGVcbiAgLy8gY3JlZGVudGlhbCdzIHByaW5jaXBhbCDigJQgc28gYSBmb3JnZWQgb3IgbWlzcm91dGVkIHdyaXRlIG5hbWVzIHRoZSBrZXkgYmVoaW5kXG4gIC8vIGl0LiBgcmVqZWN0ZWRgIGlzIHRoZSB0ZW5hbmN5IHJlZnVzYWwgaW5zaWRlIGEgYmF0Y2ggKGV2ZW50cyBuYW1pbmcgYW5vdGhlclxuICAvLyBvcmcncyBwaXBlbGluZXMpOiBhIEZBSUxVUkUgcm93IHdpdGggdGhlIG9mZmVuZGluZyBwaXBlbGluZSBpZHMsIG5ldmVyIHRoZVxuICAvLyBvcmcgdGhleSBiZWxvbmcgdG8uIGBpbmNpZGVudC5yZWNvcmRgIGlzIG9uZSBpbmNpZGVudCB0aGF0IGlzIG5ldyBvciBhY3R1YWxseVxuICAvLyBjaGFuZ2VkIChiZWZvcmUvYWZ0ZXIpOyBsaWtlIGBkZXBsb3ltZW50Lm91dGNvbWVgIGl0IG1vdmVzIENGUi9NVFRSLiBBblxuICAvLyB1bmNoYW5nZWQgcmVwZWF0LWludGVydmFsIHJlLXBvc3Qgd3JpdGVzIG5vbmUuXG4gICdyZXBvcnRpbmcuaW5nZXN0LmJhdGNoJyxcbiAgJ3JlcG9ydGluZy5pbmdlc3QucmVqZWN0ZWQnLFxuICAncmVwb3J0aW5nLmluY2lkZW50LnJlY29yZCcsXG4gIC8vIERlbmllZCBhdXRob3JpemF0aW9uIGF0dGVtcHQg4oCUIGVtaXR0ZWQgYmVzdC1lZmZvcnQgYnkgdGhlIHNoYXJlZFxuICAvLyBgcmVxdWlyZVBlcm1pc3Npb25gIC8gYHJlcXVpcmVTeXN0ZW1BZG1pbmAgZ2F0ZSB3aGVuIGEgc3RhdGUtY2hhbmdpbmdcbiAgLy8gKG5vbi1HRVQpIHJlcXVlc3QgaXMgcmVqZWN0ZWQsIHNvIHByb2JpbmcvZXNjYWxhdGlvbiBhdHRlbXB0cyBhcmUgdmlzaWJsZVxuICAvLyByYXRoZXIgdGhhbiBpbnZpc2libGUuIGBkZXRhaWxzYCBjYXJyaWVzIHRoZSByZXF1aXJlZCBwZXJtaXNzaW9uICsgcGF0aDtcbiAgLy8gYG91dGNvbWVgIGlzICdmYWlsdXJlJy5cbiAgJ2F1dGh6LmRlbmllZCcsXG4gIC8vIFwiQXNrXCIgYXNzaXN0YW50IGFjdGl2aXR5IOKAlCB2aXNpYmlsaXR5IGludG8gd2hhdCB0aGUgYXNzaXN0YW50IGRpZCBvbiBhIHVzZXInc1xuICAvLyBiZWhhbGYuIGBhc2sucXVlcnlgIGlzIGEgcmVhZC1vbmx5IGhvdy10byB0dXJuOyBgYXNrLmFnZW50LnR1cm5gIGlzIGEgdG9vbC1jYWxsaW5nXG4gIC8vIHR1cm4uIGBkZXRhaWxzYCBjYXJyeSBTQUZFIE1FVEFEQVRBIE9OTFkgKHRvb2xzIHVzZWQsIHByb3Bvc2FsIGtpbmRzLCBxdWVyeVxuICAvLyBsZW5ndGgsIG91dGNvbWUpLCBuZXZlciB0aGUgcmF3IHF1ZXJ5IHRleHQuXG4gICdhc2sucXVlcnknLFxuICAnYXNrLmFnZW50LnR1cm4nLFxuICAvLyBBIHJlYWRlciByYXRpbmcgYW4gYW5zd2VyLCBvciBhIGhlbHAgc2VhcmNoIHRoYXQgZm91bmQgbm90aGluZy4gVGhlIE9OTFlcbiAgLy8gc2lnbmFsIGZvciB3aGljaCBkb2NzIHRoZSBhc3Npc3RhbnQgYW5zd2VycyBiYWRseSBmcm9tIOKAlCB0aGUgdHVybiBpdHNlbGZcbiAgLy8gY2Fubm90IHRlbGwgYSBnb29kIGFuc3dlciBmcm9tIGEgY29uZmlkZW50IHdyb25nIG9uZS4gYGRldGFpbHNgIGNhcnJ5IHRoZVxuICAvLyByYXRpbmcgYW5kIHRoZSBET0MgSURTIGNpdGVkIChgYXV0aGVudGljYXRpb24ubWRgKSwgbmV2ZXIgdGhlIHF1ZXN0aW9uOiB0aGVcbiAgLy8gZG9jIGlzIHdoYXQgZ2V0cyBmaXhlZCwgYW5kIGl0IGlzIG5vdCB1c2VyLWVudGVyZWQgdGV4dC5cbiAgJ2Fzay5mZWVkYmFjaycsXG4gIC8vIE9uZSBBSSBnZW5lcmF0aW9uIG9mIGEgcGlwZWxpbmUgLyBwbHVnaW4gZHJhZnQgKGAvcGlwZWxpbmVzL2dlbmVyYXRlKmAsXG4gIC8vIGAvcGx1Z2lucy9nZW5lcmF0ZSpgKSwgc3VjY2VzcyBvciBmYWlsdXJlIChpbmNsLiBjbGllbnQgYWJvcnQpLiBgZGV0YWlsc2AgY2FycnlcbiAgLy8gU0FGRSBNRVRBREFUQSBPTkxZOiB0aGUgcm91dGUsIHRoZSBwcm9tcHQgTEVOR1RILCB0aGUgc2hhcmVkIEFJIHVzYWdlIGJsb2NrXG4gIC8vIChgYWlgOiB0aGUgcHJvdmlkZXIgYW5kIG1vZGVsIHRoYXQgQU5TV0VSRUQgYWZ0ZXIgYW55IGZhaWxvdmVyLCBgZmFsbGJhY2tGcm9tYCxcbiAgLy8gd2hvc2Uga2V5IHBhaWQg4oCUIGBrZXlTb3VyY2VgIHJlcXVlc3Qvb3JnL3BsYXRmb3JtIOKAlCB0b2tlbnMgaW4vb3V0L2NhY2hlZCwgdGhlXG4gIC8vIHByb21wdCB2ZXJzaW9uLCBob3cgdGhlIGBhaUNhbGxzYCBzbG90IHNldHRsZWQpIGFuZCB0aGUgcmVzZXJ2YXRpb24nc1xuICAvLyBgcXVvdGFgIHZpZXcg4oCUIG5ldmVyIHRoZSBwcm9tcHQsIHRoZSBnZW5lcmF0ZWQgb3V0cHV0LCBvciBhIGtleS5cbiAgJ3BpcGVsaW5lLmFpLmdlbmVyYXRlJyxcbiAgJ3BsdWdpbi5haS5nZW5lcmF0ZScsXG4gIC8vIFBsdWdpbiBlY29zeXN0ZW0gKGRvY3MvcnVuYm9va3MvZWNvc3lzdGVtLW1vZGVyYXRpb24ubWQpLiBHb3Zlcm5hbmNlIGFjdGlvbnNcbiAgLy8gYXJlIHJlY29yZGVkIHdpdGggYG9yZ0lkYCA9IHRoZSBzeXN0ZW0gb3JnOyBgYWZmZWN0ZWRPcmdJZGAgaXMgdGhlXG4gIC8vIHB1Ymxpc2hlcidzIG9yZyAobGlzdGluZy92ZXJzaW9uL3Jldmlldy9hZHZpc29yeS9wdWJsaXNoZXIgbW9kZXJhdGlvbikgb3JcbiAgLy8gdGhlIGluc3RhbGxpbmcgb3JnIChpbnN0YWxscyArIHBvbGljeSkuIEFub255bW91cyBzdWJtaXNzaW9ucyB1c2UgdGhlXG4gIC8vIGBBTk9OWU1PVVNfQUNUT1JfSURgIGFjdG9yIHdpdGggYGRldGFpbHMuc3VibWlzc2lvbklkYC4gYGRldGFpbHNgIGNhcnJ5IGlkcyxcbiAgLy8gdmVyc2lvbnMsIGRpZ2VzdHMsIHRpZXIsIHN0YXRlIGFuZCByZWFzb24gY29kZXMgb25seSDigJQgbmV2ZXIgcmV2aWV3IGJvZGllcyxcbiAgLy8gUkVBRE1FIGNvbnRlbnQsIHNlY3JldHMgb3IgZW1haWxzLlxuICAvLyBQdWJsaXNoZXJzLlxuICAncHVibGlzaGVyLmNyZWF0ZScsXG4gICdwdWJsaXNoZXIudXBkYXRlJyxcbiAgJ3B1Ymxpc2hlci50ZXJtcy5hY2NlcHQnLFxuICAncHVibGlzaGVyLnZlcmlmeS5yZXF1ZXN0JyxcbiAgJ3B1Ymxpc2hlci52ZXJpZnkuYXBwcm92ZScsXG4gICdwdWJsaXNoZXIudmVyaWZ5LnJlamVjdCcsXG4gICdwdWJsaXNoZXIudGllci5jaGFuZ2UnLFxuICAncHVibGlzaGVyLnN1c3BlbmQnLFxuICAncHVibGlzaGVyLnVuc3VzcGVuZCcsXG4gICdwdWJsaXNoZXIudHJhbnNmZXIucmVxdWVzdCcsXG4gICdwdWJsaXNoZXIudHJhbnNmZXIuYWNjZXB0JyxcbiAgJ3B1Ymxpc2hlci50cmFuc2Zlci5kZWNsaW5lJyxcbiAgJ3B1Ymxpc2hlci50cmFuc2Zlci5hcHByb3ZlJyxcbiAgJ3B1Ymxpc2hlci50cmFuc2Zlci5yZWplY3QnLFxuICAncHVibGlzaGVyLnByb2ZpbGUtY2hhbmdlLmFwcHJvdmUnLFxuICAncHVibGlzaGVyLnByb2ZpbGUtY2hhbmdlLnJlamVjdCcsXG4gIC8vIFB1Ymxpc2ggcmVxdWVzdHMgKHRlbmFudCDihpIgc3lzdGVtIG9yZykuIGBkZXRhaWxzLmtpbmRgIG5hbWVzIHRoZSByZXF1ZXN0LlxuICAncGx1Z2luLnJlcXVlc3Quc3VibWl0JyxcbiAgJ3BsdWdpbi5yZXF1ZXN0LndpdGhkcmF3JyxcbiAgJ3BsdWdpbi5yZXF1ZXN0LmFwcHJvdmUnLFxuICAncGx1Z2luLnJlcXVlc3Quc2Vjb25kLWFwcHJvdmUnLFxuICAncGx1Z2luLnJlcXVlc3QucmVqZWN0JyxcbiAgJ3BsdWdpbi5yZXF1ZXN0LmF1dG8tYXBwcm92ZScsXG4gIC8vIExpc3RpbmdzIGFuZCB2ZXJzaW9ucyAoc3lzdGVtIG9yZywgZXhjZXB0IHRoZSB0ZW5hbnQgcGF1c2UpLlxuICAncGx1Z2luLmxpc3RpbmcucHVibGlzaCcsXG4gIC8vIE5PVEU6IHRoZXJlIGlzIG5vIGBwbHVnaW4ubGlzdGluZy51bmxpc3RgLiBXaXRoZHJhd2FsIGlzIGFscmVhZHkgZXhwcmVzc2VkIGJ5XG4gIC8vIGBwbHVnaW4ubGlzdGluZy5zdGF0ZS5jaGFuZ2VgIChgdW5tYWludGFpbmVkYCAvIGBzdXNwZW5kZWRgIC8gYGxpc3RlZGApLFxuICAvLyB3aGljaCBpcyB0aGUgYWN0aW9uIHRoZSBjb2RlIGFjdHVhbGx5IGVtaXRzLCBzbyBgdW5saXN0YCB3YXMgYSBzZWNvbmQgbmFtZVxuICAvLyBmb3IgYSB0aGluZyB0aGF0IGhhcyBvbmUg4oCUIGFuZCBhIG5ldmVyLWVtaXR0ZWQgb25lIGF0IHRoYXQuXG4gICdwbHVnaW4ubGlzdGluZy51cGRhdGUnLFxuICAncGx1Z2luLmxpc3Rpbmcuc3RhdGUuY2hhbmdlJyxcbiAgJ3BsdWdpbi5saXN0aW5nLnBhdXNlJyxcbiAgJ3BsdWdpbi5saXN0aW5nLnVucGF1c2UnLFxuICAncGx1Z2luLnZlcnNpb24ucGF1c2UnLFxuICAncGx1Z2luLnZlcnNpb24ueWFuaycsXG4gICdwbHVnaW4udmVyc2lvbi51bnlhbmsnLFxuICAncGx1Z2luLnZlcnNpb24uZGVwcmVjYXRlJyxcbiAgLy8gUmV0aXJpbmcgYSB2ZXJzaW9uJ3MgcmVnaXN0cnkgaW1hZ2UgdG8gcmVjbGFpbSBgc3RvcmFnZUJ5dGVzYC4gRGlzdGluY3RcbiAgLy8gZnJvbSB0aGUgZm91ciBhYm92ZSwgd2hpY2ggY2hhbmdlIHdoZXRoZXIgYSB2ZXJzaW9uIFJFU09MVkVTIGFuZCBkZWxldGVcbiAgLy8gbm90aGluZywgYW5kIGZyb20gYHJlZ2lzdHJ5LmltYWdlLmRlbGV0ZWAvYHJlZ2lzdHJ5LnRhZy5kZWxldGVgLCB3aGljaCBhcmVcbiAgLy8gdGhlIHJlZ2lzdHJ5J3Mgb3duIG9wZXJhdG9yLXNpZGUgdHJhaWwuIFRoaXMgaXMgYSB0ZW5hbnQgZnJlZWluZyBzcGFjZSwgYW5kXG4gIC8vIHRoZSBvbmx5IGF1ZGl0ZWQgYWN0aW9uIHRoYXQgY2FuIHJlZHVjZSBhbiBvcmcncyBzdG9yYWdlIGZpZ3VyZSDigJQgc28gaXRzXG4gIC8vIHJvdyBjYXJyaWVzIHRoZSBieXRlcyBpdCBmcmVlZCwgd2hpY2ggY2Fubm90IGJlIHJlY292ZXJlZCBhZnRlcndhcmRzLlxuICAncGx1Z2luLnZlcnNpb24ucHJ1bmUnLFxuICAvLyBOT1RFOiBubyBgcGx1Z2luLmNvbGxlY3Rpb24udXBkYXRlYC4gYGVjb3N5c3RlbV9jb2xsZWN0aW9uc2Agd2FzIGRlbGV0ZWQgKHNlZVxuICAvLyB0aGUgdG9tYnN0b25lIGluIGBzY2hlbWEvZWNvc3lzdGVtLnRzYCkgYmVjYXVzZSBub3RoaW5nIGV2ZXIgd3JvdGUgb3IgcmVhZFxuICAvLyBvbmU7IHRoaXMgZGVjbGFyYXRpb24gb3V0bGl2ZWQgdGhlIHRhYmxlIGl0IGF1ZGl0ZWQuXG4gIC8vIEVjb3N5c3RlbSBjb25maWd1cmF0aW9uIChzeXN0ZW0gb3JnKS5cbiAgJ2Vjb3N5c3RlbS5hdXRvLWFwcHJvdmFsLXJ1bGUuY3JlYXRlJyxcbiAgJ2Vjb3N5c3RlbS5hdXRvLWFwcHJvdmFsLXJ1bGUudXBkYXRlJyxcbiAgJ2Vjb3N5c3RlbS5hdXRvLWFwcHJvdmFsLXJ1bGUuZGVsZXRlJyxcbiAgJ2Vjb3N5c3RlbS5yZXNlcnZlZC1uYW1lLnVwZGF0ZScsXG4gIC8vIFRoZSBvbmUtdGltZSBCT09UU1RSQVAgZXhjZXB0aW9uIChhdXRvLWFwcHJvdmFsIG9mIHRoZSBpbml0aWFsIE9mZmljaWFsXG4gIC8vIGNhdGFsb2cpIG9wZW5pbmcgb24gdGhlIGZpcnN0IE9mZmljaWFsIHJlcXVlc3QsIGFuZCBjbG9zaW5nIGZvciBnb29kXG4gIC8vIChgZGV0YWlscy5yZWFzb25gOiB3aW5kb3dfZWxhcHNlZCAvIGxpc3RpbmdzX2V4aXN0IC8gYSBtYW5hZ2VyIGRlY2lzaW9uO1xuICAvLyBgZGV0YWlscy5hcHByb3ZlZGA6IGhvdyBtYW55IHJlcXVlc3RzIHJvZGUgaXQpLlxuICAnZWNvc3lzdGVtLmJvb3RzdHJhcC5vcGVuJyxcbiAgJ2Vjb3N5c3RlbS5ib290c3RyYXAuY2xvc2UnLFxuICAvLyBOT1RFOiBubyBgZWNvc3lzdGVtLnNsYS51cGRhdGVgLiBUaGUgbGFuZSBTTEFzIGFyZSBIQVJEQ09ERUQgKHN0YW5kYXJkIDQ4aCxcbiAgLy8gc2VjdXJpdHktZml4IDRoIGluIGBzZXJ2aWNlcy9lY29zeXN0ZW0vc2xhLnRzYCkgd2l0aCBubyBzZXR0aW5ncyBzdXJmYWNlLCBzb1xuICAvLyB0aGVyZSBpcyBubyBtdXRhdGlvbiB0byBhdWRpdC4gTWFraW5nIHRoZW0gb3BlcmF0b3ItdHVuYWJsZSBpcyB0aGUgY2hhbmdlXG4gIC8vIHRoYXQgc2hvdWxkIHJlLWFkZCB0aGlzLlxuICAvLyBQdWJsaWMgcmVnaXN0cnkgbmFtZXNwYWNlIChgcHVibGljLypgKTogY29weSArIHNpZ24gKyBhdHRlc3Qgb24gcHVibGlzaCxcbiAgLy8gdGhlIHRpZXItY2hhbmdlL3N1c3BlbnNpb24gcmUtc2lnbiBqb2IsIHRhZyByZW1vdmFsIG9uIHlhbmsvdGFrZWRvd24sIGFuZFxuICAvLyB0aGUgcmV0ZW50aW9uIHN3ZWVwLlxuICAncmVnaXN0cnkuaW1hZ2UucHVibGlzaCcsXG4gICdyZWdpc3RyeS5pbWFnZS5yZXNpZ24nLFxuICAncmVnaXN0cnkuaW1hZ2UueWFuaycsXG4gICdyZWdpc3RyeS5pbWFnZS5nYycsXG4gIC8vIEluc3RhbGxzIGFuZCB0aGUgaW5zdGFsbGluZyBvcmcncyBjb25zdW1wdGlvbiBwb2xpY3kgKG9yZy1sb2NhbCkuXG4gICdwbHVnaW4uaW5zdGFsbC5yZXF1ZXN0JyxcbiAgJ3BsdWdpbi5pbnN0YWxsLmFwcHJvdmUnLFxuICAncGx1Z2luLmluc3RhbGwuZGVueScsXG4gICdwbHVnaW4uaW5zdGFsbC5jcmVhdGUnLFxuICAncGx1Z2luLmluc3RhbGwudXBncmFkZScsXG4gIC8vIEEgbWVtYmVyJ3MgcmVxdWVzdCB0byBjaGFuZ2UgYW4gaW5zdGFsbCBwYXN0IHdoYXQgdGhleSBtYXkgZG8gYWxvbmUsIGFuZCBpdHMgZGVjaXNpb24uXG4gICdwbHVnaW4uaW5zdGFsbC5jaGFuZ2UtcmVxdWVzdCcsXG4gICdwbHVnaW4uaW5zdGFsbC5jaGFuZ2UtYXBwcm92ZScsXG4gICdwbHVnaW4uaW5zdGFsbC5jaGFuZ2UtcmVqZWN0JyxcbiAgJ3BsdWdpbi5pbnN0YWxsLnJlbW92ZScsXG4gICdvcmcucGx1Z2luLWluc3RhbGwtcG9saWN5LnVwZGF0ZScsXG4gIC8vIEFuIHVwbG9hZCBSRUZVU0VEIGJlY2F1c2UgaXRzIG5hbWUgd291bGQgb3ZlcnJpZGUgc29tZXRoaW5nIHRoZSBvcmcgYWxyZWFkeVxuICAvLyByZXNvbHZlcyDigJQgYSBsaXN0aW5nLCBvciBhIHRlYW0ncyBwYXJlbnQtb3JnIHBsdWdpbiDigJQgYW5kIHRoZSBjb25zdW1wdGlvblxuICAvLyBwb2xpY3kgc2F5cyBgc2hhZG93aW5nOiBkZW55YC4gQXVkaXRlZCBiZWNhdXNlIGEgcmVmdXNhbCBvdGhlcndpc2UgcmV0dXJuc1xuICAvLyBhbiBlcnJvciB0byB0aGUgY2FsbGVyIGFuZCBsZWF2ZXMgbm90aGluZyBiZWhpbmQ6IGFuIGF0dGVtcHQgdG8gZGVmaW5lXG4gIC8vIGB0cml2eWAgb3ZlciB0aGUgT2ZmaWNpYWwgc2Nhbm5lciBpcyBleGFjdGx5IHRoZSB0aGluZyBzb21lb25lIHNob3VsZCBiZVxuICAvLyBhYmxlIHRvIGZpbmQgYWZ0ZXJ3YXJkcy4gYGRldGFpbHNgIGNhcnJ5IHRoZSBuYW1lIGFuZCB3aGF0IGl0IHdvdWxkIGhhdmVcbiAgLy8gb3ZlcnJpZGRlbi5cbiAgJ3BsdWdpbi5zaGFkb3dpbmcuZGVuaWVkJyxcbiAgLy8gUmV2aWV3cyBhbmQgcmVwbGllcy5cbiAgJ3BsdWdpbi5yZXZpZXcuY3JlYXRlJyxcbiAgJ3BsdWdpbi5yZXZpZXcudXBkYXRlJyxcbiAgJ3BsdWdpbi5yZXZpZXcuZGVsZXRlJyxcbiAgJ3BsdWdpbi5yZXZpZXcucmVwb3J0JyxcbiAgJ3BsdWdpbi5yZXZpZXcuaG9sZCcsXG4gICdwbHVnaW4ucmV2aWV3LnJlbGVhc2UnLFxuICAncGx1Z2luLnJldmlldy5yZW1vdmUnLFxuICAncGx1Z2luLnJldmlldy5hbm9ueW1pemUnLFxuICAncGx1Z2luLnJldmlldy5yZXBseS5jcmVhdGUnLFxuICAncGx1Z2luLnJldmlldy5yZXBseS51cGRhdGUnLFxuICAncGx1Z2luLnJldmlldy5yZXBseS5kZWxldGUnLFxuICAvLyBBbm9ueW1vdXMgc3VibWlzc2lvbnMuXG4gICdwbHVnaW4uc3VibWlzc2lvbi5jcmVhdGUnLFxuICAncGx1Z2luLnN1Ym1pc3Npb24udmVyaWZ5JyxcbiAgJ3BsdWdpbi5zdWJtaXNzaW9uLmdhdGUtZmFpbCcsXG4gICdwbHVnaW4uc3VibWlzc2lvbi5hcHByb3ZlJyxcbiAgJ3BsdWdpbi5zdWJtaXNzaW9uLnJlamVjdCcsXG4gICdwbHVnaW4uc3VibWlzc2lvbi5jbGFpbScsXG4gICdwbHVnaW4uc3VibWlzc2lvbi5leHBpcmUnLFxuICAvLyBTZWN1cml0eSBhZHZpc29yaWVzIChwdWJsaXNoL3dpdGhkcmF3IGFyZSBzeXN0ZW0tb3JnIG9ubHk7IHVwZGF0ZSA9IGFcbiAgLy8gbW9kZXJhdG9yIGVkaXRpbmcgYSBkcmFmdCBiZWZvcmUgaXQgaXMgcHVibGlzaGVkKS5cbiAgJ3BsdWdpbi5hZHZpc29yeS5jcmVhdGUnLFxuICAncGx1Z2luLmFkdmlzb3J5LnVwZGF0ZScsXG4gICdwbHVnaW4uYWR2aXNvcnkucHVibGlzaCcsXG4gICdwbHVnaW4uYWR2aXNvcnkud2l0aGRyYXcnLFxuICAvLyBQZXItb3JnIHBsdWdpbiBzZWN1cml0eSBub3RpZmljYXRpb25zIChwbHVnaW4gc2NhbiBnYXRlcyk6IHRoZSBzZXR0aW5nc1xuICAvLyAocmVjaXBpZW50cywgZGlnZXN0LCB3ZWJob29rLCBleHRlcm5hbCBhZGRyZXNzIOKAlCBjaGFuZ2VkIGZpZWxkIG5hbWVzIGFuZFxuICAvLyB0aGUgd2ViaG9vayBob3N0IG9ubHksIG5ldmVyIHRoZSBzZWNyZXQgb3IgdGhlIGFkZHJlc3MpLCBhbiBleHRlcm5hbFxuICAvLyBhZGRyZXNzIGNvbmZpcm1lZCB0aHJvdWdoIGl0cyBlbWFpbGVkIHNpbmdsZS11c2UgbGluaywgYW5kIGEgdGVzdCBzZW5kLlxuICAncGx1Z2luLnNlY3VyaXR5X25vdGlmaWNhdGlvbnMudXBkYXRlJyxcbiAgJ3BsdWdpbi5zZWN1cml0eV9ub3RpZmljYXRpb25zLmV4dGVybmFsX2VtYWlsLnZlcmlmeScsXG4gICdwbHVnaW4uc2VjdXJpdHlfbm90aWZpY2F0aW9ucy50ZXN0JyxcbiAgLy8gQSBnYXRlLXJlZnVzZWQgaW1hZ2UgS0VQVCBmcm9tIHRoZSBzZXR1cCBjYXRhbG9nIGxvYWQsIHByb21vdGVkIHRvIGFcbiAgLy8gdmVyc2lvbiB3aXRob3V0IGEgcmVidWlsZCAoc3lzdGVtIG9yZywgYWZ0ZXIgYSBmaXggdXBzdHJlYW0gb3IgYW5cbiAgLy8gYWR2aXNvcnktaWQgd2FpdmVyKSDigJQgb3IgcmVmdXNlZCBhZ2FpbiBiZWNhdXNlIHRoZSBDVVJSRU5UIGdhdGVzIHN0aWxsXG4gIC8vIGZhaWwgaXQuIGBkZXRhaWxzYCBjYXJyeSBuYW1lL3ZlcnNpb24vZGlnZXN0IGFuZCB0aGUgZmluZGluZ3MuXG4gICdwbHVnaW4uc2V0dXBfaW1hZ2UucHJvbW90ZWQnLFxuICAncGx1Z2luLnNldHVwX2ltYWdlLnByb21vdGVfcmVmdXNlZCcsXG4gIC8vIEEgZ2F0ZS1yZWZ1c2VkIHNldHVwLWxvYWQgaW1hZ2UgS0VQVCAoc2lnbmVkLCBpbiB0aGUgcmVnaXN0cnkpIGZvciBsYXRlclxuICAvLyBwcm9tb3Rpb24gKGBkZXRhaWxzYDogZGlnZXN0LCByZWZ1c2FsIGNvZGUsIGV4cGlyZXNBdCkg4oCUIGFuZCBpdHMgcm93XG4gIC8vIGRyb3BwZWQgYnkgdGhlIHN3ZWVwIChgZGV0YWlscy5yZWFzb25gOiBleHBpcmVkIC8gc3VwZXJzZWRlZCkuXG4gICdwbHVnaW4uc2V0dXBfaW1hZ2Uua2VwdCcsXG4gICdwbHVnaW4uc2V0dXBfaW1hZ2UuZGlzY2FyZGVkJyxcbiAgLy8gQSBQSVBFTElORSdzIHRyaWFnZSBvZiBpdHMgZXhwb3N1cmUgdG8gYSB2dWxuZXJhYmxlIHBsdWdpbiB2ZXJzaW9uOiBhXG4gIC8vIHRpbWUtYm94ZWQgcmlzayBhY2NlcHRhbmNlIChyZWFzb24gKyBleHBpcnksIHRoZSBhY2NlcHRlZCBmaW5kaW5nIGtleXMgYW5kXG4gIC8vIHdoZXRoZXIgS0VWIGZpbmRpbmdzIHdlcmUgYWNjZXB0ZWQpLCBhIGZhbHNlLXBvc2l0aXZlIGRpc21pc3NhbCwgb3IgYVxuICAvLyByZW9wZW4uIEFuIGFjdGl2ZSBhY2NlcHRhbmNlIGV4ZW1wdHMgdGhhdCBwaXBlbGluZSdzIGxvb2t1cHMgYW5kIHJ1bnRpbWVcbiAgLy8gY2hlY2tzIGZyb20gdGhlIGZsYWcgLyBLRVYgLyBIaWdoLWZsb29yIHJlZnVzYWxzIGZvciB0aG9zZSBmaW5kaW5ncyBvbmx5LlxuICAncGlwZWxpbmUudnVsbi5hY2NlcHRlZCcsXG4gICdwaXBlbGluZS52dWxuLmZhbHNlX3Bvc2l0aXZlJyxcbiAgJ3BpcGVsaW5lLnZ1bG4ucmVvcGVuZWQnLFxuICAvLyBBIHBpcGVsaW5lJ3MgcnVudGltZSBjaGVjayBncmFkZWQgb25lIG9mIGl0cyBydW5uaW5nIGltYWdlcyBgZXJyb3JgIG9yXG4gIC8vIGxvdWRlciAoYGRldGFpbHNgOiBzdGVwS2V5LCBkaWdlc3QsIHJlYXNvbiBjb2RlcywgZXhlY3V0aW9uSWQgd2hlbiBzZW50KS5cbiAgJ3BpcGVsaW5lLnJ1bnRpbWVfY2hlY2suZmxhZ2dlZCcsXG4gIC8vIEEgcGlwZWxpbmUncyBwbHVnaW4gc3RlcHMgbW92ZWQgdG8gbmV3ZXIgdmVyc2lvbnMgdGhyb3VnaCB0aGUgdXBncmFkZVxuICAvLyBmbG93IChwcmV2aWV3IOKGkiBhcHBseTsgYGRldGFpbHNgIGNhcnJ5IHRoZSBzdGVwcywgZnJvbSDihpIgdG8gdmVyc2lvbnMpLCBhbmQgYVxuICAvLyBwaXBlbGluZS1ydW4gc2VjdXJpdHkgc2Nhbm5lciByZXBvcnQgdXBsb2FkZWQgZm9yIGEgcGlwZWxpbmUgKGBkZXRhaWxzYDpcbiAgLy8gdG9vbCwgZm9ybWF0LCBzdGFnZSwgdGhlIGZpbmRpbmcgY291bnRzIOKAlCBuZXZlciB0aGUgZmluZGluZ3MgdGhlbXNlbHZlcykuXG4gICdwaXBlbGluZS5wbHVnaW4udXBncmFkZWQnLFxuICAncGlwZWxpbmUuc2VjdXJpdHlfcmVwb3J0LnVwbG9hZCcsXG5dIGFzIGNvbnN0O1xuXG5leHBvcnQgdHlwZSBSZW1vdGVBdWRpdEFjdGlvbiA9IHR5cGVvZiBSRU1PVEVfQVVESVRfQUNUSU9OU1tudW1iZXJdO1xuXG4vKiogV2hldGhlciBgdmFsdWVgIGlzIGFuIGFjdGlvbiBhIHJlbW90ZSBzZXJ2aWNlIG1heSBlbWl0ICh0aGUgaW5nZXN0IGFsbG93LWxpc3QpLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzUmVtb3RlQXVkaXRBY3Rpb24odmFsdWU6IHN0cmluZyk6IHZhbHVlIGlzIFJlbW90ZUF1ZGl0QWN0aW9uIHtcbiAgcmV0dXJuIChSRU1PVEVfQVVESVRfQUNUSU9OUyBhcyByZWFkb25seSBzdHJpbmdbXSkuaW5jbHVkZXModmFsdWUpO1xufVxuIl19
|
|
612
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVtb3RlLWF1ZGl0LWFjdGlvbnMuanMiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy90eXBlcy9yZW1vdGUtYXVkaXQtYWN0aW9ucy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwrQ0FBK0M7QUFDL0Msc0NBQXNDO0FBRXRDOzs7Ozs7O0dBT0c7QUFHSDs7Ozs7Ozs7OztHQVVHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sb0JBQW9CLEdBQUc7SUFDbEMsd0JBQXdCO0lBQ3hCLHFCQUFxQjtJQUNyQixzQkFBc0I7SUFDdEIsOEVBQThFO0lBQzlFLDJFQUEyRTtJQUMzRSw4RUFBOEU7SUFDOUUscUJBQXFCO0lBQ3JCLHVFQUF1RTtJQUN2RSwyRUFBMkU7SUFDM0UsK0VBQStFO0lBQy9FLDhFQUE4RTtJQUM5RSxrRUFBa0U7SUFDbEUseUVBQXlFO0lBQ3pFLG9CQUFvQjtJQUNwQiwyRUFBMkU7SUFDM0UsNkVBQTZFO0lBQzdFLHNFQUFzRTtJQUN0RSw4RUFBOEU7SUFDOUUsNkVBQTZFO0lBQzdFLHVFQUF1RTtJQUN2RSxxQ0FBcUM7SUFDckMscUJBQXFCO0lBQ3JCLHFCQUFxQjtJQUNyQiw2RUFBNkU7SUFDN0UsK0VBQStFO0lBQy9FLHFFQUFxRTtJQUNyRSxlQUFlO0lBQ2YsZ0JBQWdCO0lBQ2hCLDRFQUE0RTtJQUM1RSx3RUFBd0U7SUFDeEUsY0FBYztJQUNkLGVBQWU7SUFDZixlQUFlO0lBQ2YsZUFBZTtJQUNmLDhFQUE4RTtJQUM5RSw0RUFBNEU7SUFDNUUsb0JBQW9CO0lBQ3BCLG9CQUFvQjtJQUNwQixrQkFBa0I7SUFDbEIseUVBQXlFO0lBQ3pFLDRFQUE0RTtJQUM1RSw0RUFBNEU7SUFDNUUsdUVBQXVFO0lBQ3ZFLG9CQUFvQjtJQUNwQixtQkFBbUI7SUFDbkIsZ0VBQWdFO0lBQ2hFLHFFQUFxRTtJQUNyRSxvREFBb0Q7SUFDcEQsaUJBQWlCO0lBQ2pCLGlCQUFpQjtJQUNqQixpQkFBaUI7SUFDakIsa0JBQWtCO0lBQ2xCLG1FQUFtRTtJQUNuRSw0RUFB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QUF5QjtJQUN6QiwwQkFBMEI7SUFDMUIsd0VBQXdFO0lBQ3hFLHFEQUFxRDtJQUNyRCx3QkFBd0I7SUFDeEIsd0JBQXdCO0lBQ3hCLHlCQUF5QjtJQUN6QiwwQkFBMEI7SUFDMUIsMEVBQTBFO0lBQzFFLDJFQUEyRTtJQUMzRSx1RUFBdUU7SUFDdkUsMEVBQTBFO0lBQzFFLHNDQUFzQztJQUN0QyxxREFBcUQ7SUFDckQsb0NBQW9DO0lBQ3BDLHVFQUF1RTtJQUN2RSxvRUFBb0U7SUFDcEUseUVBQXlFO0lBQ3pFLGlFQUFpRTtJQUNqRSw2QkFBNkI7SUFDN0Isb0NBQW9DO0lBQ3BDLDJFQUEyRTtJQUMzRSx1RUFBdUU7SUFDdkUsaUVBQWlFO0lBQ2pFLHlCQUF5QjtJQUN6Qiw4QkFBOEI7SUFDOUIsd0VBQXdFO0lBQ3hFLDZFQUE2RTtJQUM3RSx3RUFBd0U7SUFDeEUsMkVBQTJFO0lBQzNFLDRFQUE0RTtJQUM1RSx3QkFBd0I7SUFDeEIsOEJBQThCO0lBQzlCLHdCQUF3QjtJQUN4Qix5RUFBeUU7SUFDekUsNEVBQTRFO0lBQzVFLGdDQUFnQztJQUNoQyx3RUFBd0U7SUFDeEUsK0VBQStFO0lBQy9FLDJFQUEyRTtJQUMzRSw0RUFBNEU7SUFDNUUsMEJBQTBCO0lBQzFCLGlDQUFpQztDQUN6QixDQUFDO0FBSVgsc0ZBQXNGO0FBQ3RGLE1BQU0sVUFBVSxtQkFBbUIsQ0FBQyxLQUFhO0lBQy9DLE9BQVEsb0JBQTBDLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQ3JFLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgMjAyNiBQaXBlbGluZSBCdWlsZGVyIENvbnRyaWJ1dG9yc1xuLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjBcblxuLyoqXG4gKiBUaGUgcmVtb3RlIChub24tcGxhdGZvcm0pIGF1ZGl0IEFDVElPTiBWT0NBQlVMQVJZLlxuICpcbiAqIEtlcHQgYXBhcnQgZnJvbSB0aGUgY2xpZW50IHRoYXQgc2hpcHMgdGhlIGV2ZW50cyAoYHNlcnZpY2VzL3JlbW90ZS1hdWRpdC1jbGllbnQudHNgKVxuICogYmVjYXVzZSBpdCBpcyBhbiBhbGxvdy1saXN0LCBub3QgbWFjaGluZXJ5OiBpdCBpcyB0aGUgdGhpbmcgYSByZXZpZXdlciByZWFkc1xuICogZW5kIHRvIGVuZCB3aGVuIGRlY2lkaW5nIHdoZXRoZXIgYSBzZXJ2aWNlIG1heSBlbWl0IGEgZ2l2ZW4gYWN0aW9uLCBhbmQgaXQgaXNcbiAqIHdoYXQgcGxhdGZvcm0ncyBpbmdlc3QgdmFsaWRhdGVzIGFnYWluc3QuXG4gKi9cblxuXG4vKipcbiAqIFRoZSBleGFjdCBzZXQgb2YgYXVkaXQgYWN0aW9ucyBhIE5PTi1QTEFURk9STSAocmVtb3RlKSBzZXJ2aWNlIGlzIHBlcm1pdHRlZCB0b1xuICogZW1pdCB0aHJvdWdoIGBQT1NUIC9hdWRpdC9ldmVudHNgLiBUaGlzIGlzIHRoZSBTSU5HTEUgU09VUkNFIOKAlCBgUmVtb3RlQXVkaXRBY3Rpb25gXG4gKiBpcyBkZXJpdmVkIGZyb20gaXQsIHNvIHRoZSB0eXBlIGFuZCB0aGUgcnVudGltZSBhbGxvdy1saXN0IGNhbiBuZXZlciBkcmlmdC5cbiAqXG4gKiBTRUNVUklUWTogcGxhdGZvcm0ncyBpbmdlc3QgdmFsaWRhdGVzIGBhY3Rpb25gIGFnYWluc3QgdGhpcyBzdWJzZXQgKHZpYVxuICoge0BsaW5rIGlzUmVtb3RlQXVkaXRBY3Rpb259KSwgTk9UIHRoZSBmdWxsIHBsYXRmb3JtIGBBdWRpdEFjdGlvbmAgdW5pb24g4oCUIGFcbiAqIGBzZXJ2aWNlOipgIHRva2VuIG11c3Qgbm90IGJlIGFibGUgdG8gZm9yZ2UgcGxhdGZvcm0tYXV0aG9yaXR5IGV2ZW50c1xuICogKGBhZG1pbi5zdXBlcmFkbWluLmdyYW50YCwgYG9yZy5vd25lcnNoaXAudHJhbnNmZXJgLCBgdXNlci5sb2dpbmAsIOKApikuIEtlZXBcbiAqIHRoaXMgbGlzdCBmcmVlIG9mIGFueSBwbGF0Zm9ybS1vbmx5IGFjdGlvbi5cbiAqL1xuZXhwb3J0IGNvbnN0IFJFTU9URV9BVURJVF9BQ1RJT05TID0gW1xuICAncGx1Z2luLmJ1aWxkLmNvbXBsZXRlZCcsXG4gICdwbHVnaW4uYnVpbGQuZmFpbGVkJyxcbiAgJ3BsdWdpbi5idWlsZC50aW1lb3V0JyxcbiAgLy8gQSB2ZXJzaW9uIHBlcnNpc3RlZCBVTlNDQU5ORUQgYmVjYXVzZSB0aGUgYnVpbGQtdGltZSBzY2FuIGNvdWxkIG5vdCBydW4gYW5kXG4gIC8vIHRoZSBvcGVyYXRvciBlc2NhcGUgaGF0Y2ggYFBMVUdJTl9BTExPV19VTlNDQU5ORURgIGlzIG9uICh3aXRob3V0IGl0IHRoZVxuICAvLyBidWlsZCBmYWlscyBgSU1BR0VfU0NBTl9VTkFWQUlMQUJMRWApLiBgZGV0YWlsc2AgY2FycnkgbmFtZS92ZXJzaW9uL2RpZ2VzdC5cbiAgJ3BsdWdpbi5zY2FuLnNraXBwZWQnLFxuICAvLyBGaXhhYmxlIENyaXRpY2FsIGZpbmRpbmdzIHdlcmUgRVhFTVBURUQgZnJvbSB0aGUgcGxhdGZvcm0gZmxvb3IgYnkgYVxuICAvLyBgUExVR0lOX1ZVTE5fV0FJVkVSU2AgZW50cnksIHNvIGEgYnVpbGQgdGhhdCB3b3VsZCBvdGhlcndpc2UgaGF2ZSBmYWlsZWRcbiAgLy8gUExVR0lOX1ZVTE5fR0FURSB3YXMgYWxsb3dlZCB0aHJvdWdoLiBUaGUgb3RoZXIgaGFsZiBvZiBwbHVnaW4uc2Nhbi5za2lwcGVkOlxuICAvLyBib3RoIGFyZSBvcGVyYXRvciBlc2NhcGUgaGF0Y2hlcyB0aGF0IGNoYW5nZSBhIGdhdGUncyB2ZXJkaWN0LCBhbmQgYSBtZXRyaWNcbiAgLy8gYW5kIGEgbG9nIGxpbmUgYXJlIG5vdCBhIGR1cmFibGUgcmVjb3JkIG9mIG9uZS4gYGRldGFpbHNgIGNhcnJ5XG4gIC8vIG5hbWUvdmVyc2lvbi9kaWdlc3QsIGhvdyBtYW55IGZpbmRpbmdzIHdlcmUgd2FpdmVkIGFuZCB3aGljaCBwYWNrYWdlcy5cbiAgJ3BsdWdpbi52dWxuLndhaXZlZCcsXG4gIC8vIFRoZSBuaWdodGx5IHJlc2NhbiBGTEFHR0VEIGEgc3RvcmVkIHZlcnNpb24gKGl0cyBnYXRlZCBDcml0aWNhbCBmaW5kaW5nc1xuICAvLyBub3cgZXhjZWVkIFBMVUdJTl9WVUxOX01BWF9GSU5ESU5HUyDigJQgbG9va3VwIGFuZCB0aGUgcGlwZWxpbmUncyBvd25lcnMgYXJlXG4gIC8vIHdhcm5lZCBhdCBgZXJyb3JgIHNldmVyaXR5KSwgb3IgQ0xFQVJFRCB0aGF0IGZsYWcuIEJvdGggY2hhbmdlIHdoYXRcbiAgLy8gcmVzb2x1dGlvbiBzYXlzIGFib3V0IGEgdmVyc2lvbiBub2JvZHkgcmVidWlsdCwgb24gbm9ib2R5J3MgcmVxdWVzdCwgc28gdGhlXG4gIC8vIHJlY29yZCBvZiBXSEVOIGFuZCBXSFkgbGl2ZXMgaW4gdGhlIGhhc2gtY2hhaW5lZCBsb2cgcmF0aGVyIHRoYW4gb25seSBpbiBhXG4gIC8vIGNvbHVtbiB0aGUgbmV4dCByZXNjYW4gb3ZlcndyaXRlcy4gYGRldGFpbHNgIGNhcnJ5IGNvdW50cywgdGhlIGdhdGVkXG4gIC8vIGFkdmlzb3J5IGlkcyBhbmQgdGhlIGltYWdlIGRpZ2VzdC5cbiAgJ3BsdWdpbi52dWxuLmZsYWdnZWQnLFxuICAncGx1Z2luLnZ1bG4uY2xlYXJlZCcsXG4gIC8vIFBsdWdpbiBsaWZlY3ljbGUgbXV0YXRpb25zIChhcGkvcGx1Z2luIHJvdXRlIGhhbmRsZXJzKSDigJQgdGhlIGRlc3RydWN0aXZlIC9cbiAgLy8gcHVibGlzaGluZyBzdXJmYWNlIHRoYXQgYnVpbGRzIGFscmVhZHkgYXVkaXQncyBjb3VudGVycGFydDogcmVnaXN0cnkgZGVsZXRlLFxuICAvLyBzb3VyY2UgdXBsb2FkLCBhbmQgZGVwbG95LXRvLWNsdXN0ZXIuIGB0YXJnZXRJZGAgaXMgdGhlIHBsdWdpbiBpZC5cbiAgJ3BsdWdpbi5kZWxldGUnLFxuICAncGx1Z2luLnJlc3RvcmUnLFxuICAvLyBNYW51YWwgcHVyZ2U6IHBlcm1hbmVudCBoYXJkLWRlbGV0ZSBvZiBhIHNvZnQtZGVsZXRlZCBwbHVnaW4gdG9tYnN0b25lIG9uXG4gIC8vIGRlbWFuZCAoZmluYWxpemVzIHdoYXQgdGhlIHJldGVudGlvbiBzd2VlcCB3b3VsZCBvdGhlcndpc2UgZG8gbGF0ZXIpLlxuICAncGx1Z2luLnB1cmdlJyxcbiAgJ3BsdWdpbi51cGRhdGUnLFxuICAncGx1Z2luLnVwbG9hZCcsXG4gICdwbHVnaW4uZGVwbG95JyxcbiAgLy8gUGx1Z2luIGJ1bGsgbXV0YXRpb25zIChhcGkvcGx1Z2luIGJ1bGstcGx1Z2luIHJvdXRlKSArIERMUSBwdXJnZSAoZHJvcHMgYWxsXG4gIC8vIGRlYWQtbGV0dGVyZWQgYnVpbGQgam9icywgY3Jvc3Mtb3JnLCBzeXNhZG1pbikuIGBkZXRhaWxzYCBjYXJyaWVzIGNvdW50cy5cbiAgJ3BsdWdpbi5idWxrLnVwZGF0ZScsXG4gICdwbHVnaW4uYnVsay5kZWxldGUnLFxuICAncGx1Z2luLmRscS5wdXJnZScsXG4gIC8vIEJ1aWxkIHJlLXJ1bnMgZnJvbSB0aGUgcXVldWUtdHJpYWdlIHN1cmZhY2U6IHJlLWVucXVldWUgYSBGQUlMRUQgYnVpbGRcbiAgLy8gKGBwbHVnaW4uYnVpbGQucmV0cnlgKSBvciBhIGRlYWQtbGV0dGVyZWQgb25lIChgcGx1Z2luLmRscS5yZXBsYXlgKS4gQm90aFxuICAvLyByZS1ydW4gYW4gaW1hZ2UgYnVpbGQgKyBwbHVnaW4gcGVyc2lzdCBvbiB0aGUgY2FsbGVyJ3MgYXV0aG9yaXR5LCBzbyB0aGV5XG4gIC8vIGFyZSBhdWRpdGVkIG11dGF0aW9uczsgYGFmZmVjdGVkT3JnSWRgIGNhcnJpZXMgdGhlIGpvYidzIG93bmluZyBvcmcuXG4gICdwbHVnaW4uYnVpbGQucmV0cnknLFxuICAncGx1Z2luLmRscS5yZXBsYXknLFxuICAvLyBQaXBlbGluZSBtdXRhdGlvbnMg4oCUIGVtaXR0ZWQgYnkgYXBpL3BpcGVsaW5lJ3Mgcm91dGUgaGFuZGxlcnNcbiAgLy8gKGNyZWF0ZS91cGRhdGUvZGVsZXRlICsgQ29kZVBpcGVsaW5lIGV4ZWN1dGlvbiB0cmlnZ2VyL2NhbmNlbCkgYW5kXG4gIC8vIHBvc3RlZCB0byBwbGF0Zm9ybSdzIGBQT1NUIC9hdWRpdC9ldmVudHNgIGluZ2VzdC5cbiAgJ3BpcGVsaW5lLmNyZWF0ZScsXG4gICdwaXBlbGluZS51cGRhdGUnLFxuICAncGlwZWxpbmUuZGVsZXRlJyxcbiAgJ3BpcGVsaW5lLnJlc3RvcmUnLFxuICAvLyBNYW51YWwgcHVyZ2U6IHBlcm1hbmVudCBoYXJkLWRlbGV0ZSBvZiBhIHNvZnQtZGVsZXRlZCBwaXBlbGluZSAvXG4gIC8vIHBpcGVsaW5lX3RlbXBsYXRlIHRvbWJzdG9uZSBvbiBkZW1hbmQgKGZpbmFsaXplcyB3aGF0IHRoZSByZXRlbnRpb24gc3dlZXBcbiAgLy8gd291bGQgb3RoZXJ3aXNlIGRvIGxhdGVyKS4gYHRhcmdldElkYCBpcyB0aGUgcHVyZ2VkIGlkLlxuICAncGlwZWxpbmUucHVyZ2UnLFxuICAncGlwZWxpbmVfdGVtcGxhdGUuY3JlYXRlJyxcbiAgJ3BpcGVsaW5lX3RlbXBsYXRlLnVwZGF0ZScsXG4gICdwaXBlbGluZV90ZW1wbGF0ZS5kZWxldGUnLFxuICAncGlwZWxpbmVfdGVtcGxhdGUucmVzdG9yZScsXG4gICdwaXBlbGluZV90ZW1wbGF0ZS5wdXJnZScsXG4gICdwaXBlbGluZS5leGVjdXRpb24uc3RhcnQnLFxuICAncGlwZWxpbmUuZXhlY3V0aW9uLmNhbmNlbCcsXG4gIC8vIENvZGVQaXBlbGluZSBBUk4tcmVnaXN0cnkgY29uZmlnIChhcGkvcGlwZWxpbmUgcmVnaXN0cnkgcm91dGUpIOKAlCByZWdpc3RlcmluZyAvXG4gIC8vIGRlcmVnaXN0ZXJpbmcgdGhlIGV4dGVybmFsIENvZGVQaXBlbGluZSB0aGF0IGJhY2tzIGEgcGlwZWxpbmUgKGRlcGxveS1hZmZlY3RpbmcpLlxuICAncGlwZWxpbmUucmVnaXN0cnkucmVnaXN0ZXInLFxuICAncGlwZWxpbmUucmVnaXN0cnkuZGVyZWdpc3RlcicsXG4gIC8vIFF1b3RhIGFkbWluaXN0cmF0aW9uIChhcGkvcXVvdGEpIOKAlCBhIHN1cGVyYWRtaW4gcmVzZXR0aW5nIGFuIG9yZydzIHVzYWdlXG4gIC8vIGNvdW50ZXIgb3IgZWRpdGluZyBpdHMgdGllciBsaW1pdHMuIGBhZmZlY3RlZE9yZ0lkYCBpcyB0aGUgb3JnIGNoYW5nZWQ7XG4gIC8vIGBkZXRhaWxzYCBjYXJyaWVzIHRoZSBxdW90YVR5cGUgKyBvbGQvbmV3IHZhbHVlLlxuICAncXVvdGEucmVzZXQnLFxuICAncXVvdGEubGltaXQudXBkYXRlJyxcbiAgLy8gQSBzdXBlcmFkbWluIGRlbGV0aW5nIGFuIG9yZydzIGVudGlyZSBxdW90YSBkb2N1bWVudC5cbiAgJ3F1b3RhLmRlbGV0ZScsXG4gIC8vIEFuIGFjY291bnQncyBxdW90YSB0aHJlc2hvbGQtbm90aWNlIHNldHRpbmdzIChvcHQtb3V0ICsgdGhlXG4gIC8vIGBxdW90YS50aHJlc2hvbGRgIHdlYmhvb2sgVVJMKSDigJQgd2hlcmUgdXNhZ2Ugd2FybmluZ3MgZ28uXG4gICdxdW90YS5ub3RpY2Vfc2V0dGluZ3MudXBkYXRlJyxcbiAgLy8gQ29tcGxpYW5jZSBhZG1pbmlzdHJhdGlvbiAoYXBpL2NvbXBsaWFuY2UpIOKAlCB0aGUgZW5mb3JjZW1lbnQtcG9zdHVyZSBzdXJmYWNlLlxuICAvLyBBcHByb3ZpbmcvcmV2b2tpbmcgYW4gZXhlbXB0aW9uLCB0b2dnbGluZy9hdXRob3JpbmcvZGVsZXRpbmcgYSBydWxlLFxuICAvLyBhdXRob3JpbmcvZGVsZXRpbmcgYSBwb2xpY3ksIG1hbmFnaW5nIHNjYW4gc2NoZWR1bGVzLCBhcHBseWluZyBhIHRlbXBsYXRlLFxuICAvLyBvciBjYW5jZWxsaW5nIGEgcnVubmluZyBzY2FuLiBgdGFyZ2V0SWRgIGlzIHRoZSBydWxlL3BvbGljeS9leGVtcHRpb24vc2NhbiBpZC5cbiAgJ2NvbXBsaWFuY2UuZXhlbXB0aW9uLmFwcHJvdmUnLFxuICAnY29tcGxpYW5jZS5leGVtcHRpb24ucmV2b2tlJyxcbiAgLy8gQSBtZW1iZXIgRklMSU5HIGFuIGV4ZW1wdGlvbiByZXF1ZXN0IChzaW5nbGUgb3IgYnVsazsgbWV0YWRhdGEgb25seSwgbmV2ZXJcbiAgLy8gdGhlIHJlYXNvbikgYW5kIGFuIGFkbWluIFJFSkVDVElORyBvbmUg4oCUIHRoZSBvdGhlciBoYWx2ZXMgb2YgdGhlXG4gIC8vIHR3by1wZXJzb24gZGVjaXNpb24gd2hvc2UgYXBwcm92YWwgaXMgcmVjb3JkZWQgYWJvdmUuXG4gICdjb21wbGlhbmNlLmV4ZW1wdGlvbi5yZXF1ZXN0JyxcbiAgJ2NvbXBsaWFuY2UuZXhlbXB0aW9uLnJlamVjdCcsXG4gICdjb21wbGlhbmNlLnJ1bGUudG9nZ2xlJyxcbiAgJ2NvbXBsaWFuY2UucnVsZS5jcmVhdGUnLFxuICAnY29tcGxpYW5jZS5ydWxlLnVwZGF0ZScsXG4gICdjb21wbGlhbmNlLnJ1bGUuZGVsZXRlJyxcbiAgJ2NvbXBsaWFuY2UucnVsZS5yZXN0b3JlJyxcbiAgLy8gTWFudWFsIG9uLWRlbWFuZCBoYXJkLWRlbGV0ZSAoUFVSR0UpIG9mIGEgc29mdC1kZWxldGVkIHJ1bGUvcG9saWN5IHRvbWJzdG9uZSDigJRcbiAgLy8gdGhlIGNhbGxlci1pbml0aWF0ZWQgY291bnRlcnBhcnQgdG8gdGhlIHJldGVudGlvbiBzd2VlcCdzIGF1dG8tcHVyZ2UuIERlc3Ryb3lzXG4gIC8vIHRoZSB0b21ic3RvbmUgcGVybWFuZW50bHksIHNvIGl0IGNhcnJpZXMgdGhlIGR1cmFibGUsIHRhbXBlci1ldmlkZW50IHRyYWlsLlxuICAnY29tcGxpYW5jZS5ydWxlLnB1cmdlJyxcbiAgJ2NvbXBsaWFuY2UucG9saWN5LmNyZWF0ZScsXG4gICdjb21wbGlhbmNlLnBvbGljeS51cGRhdGUnLFxuICAnY29tcGxpYW5jZS5wb2xpY3kuZGVsZXRlJyxcbiAgJ2NvbXBsaWFuY2UucG9saWN5LnJlc3RvcmUnLFxuICAnY29tcGxpYW5jZS5wb2xpY3kucHVyZ2UnLFxuICAnY29tcGxpYW5jZS5zY2FuLXNjaGVkdWxlLmNyZWF0ZScsXG4gICdjb21wbGlhbmNlLnNjYW4tc2NoZWR1bGUudXBkYXRlJyxcbiAgJ2NvbXBsaWFuY2Uuc2Nhbi1zY2hlZHVsZS5kZWxldGUnLFxuICAnY29tcGxpYW5jZS50ZW1wbGF0ZS5hcHBseScsXG4gIC8vIExhdW5jaGluZyBhbiBvcmctd2lkZSByZS1ldmFsdWF0aW9uICh0aGUgY291bnRlcnBhcnQgdG8gYC5jYW5jZWxgKSDigJQgaXRcbiAgLy8gcGVyc2lzdHMgYSBzY2FuIGFuZCBjYW4gYmxvY2sgZW50aXRpZXMgdGhhdCBwYXNzZWQgYmVmb3JlLlxuICAnY29tcGxpYW5jZS5zY2FuLmNyZWF0ZScsXG4gICdjb21wbGlhbmNlLnNjYW4uY2FuY2VsJyxcbiAgLy8gQSBzY2FuJ3MgdGVybWluYWwgT1VUQ09NRSAoY29tcGxldGVkIOKGkiBzdWNjZXNzIHdpdGggdGhlIHBhc3Mvd2Fybi9ibG9ja1xuICAvLyBjb3VudHMsIGZhaWxlZCDihpIgZmFpbHVyZSkuIFNjaGVkdWxlZCBzY2FucyBhbHNvIHdyaXRlIGBjb21wbGlhbmNlLnNjYW4uY3JlYXRlYFxuICAvLyAoYGRldGFpbHMudHJpZ2dlcmVkQnk6ICdzY2hlZHVsZWQnYCksIGF0dHJpYnV0ZWQgdG8gdGhlIHNjaGVkdWxlJ3MgYXV0aG9yLlxuICAnY29tcGxpYW5jZS5zY2FuLmNvbXBsZXRlJyxcbiAgLy8gUGxhdGZvcm0gb25ib2FyZGluZyBzdWJzY3JpYmluZyBhIG5ldyBvcmcgdG8gZXZlcnkgcHVibGlzaGVkIHJ1bGVcbiAgLy8gKElOQUNUSVZFIHN1YnNjcmlwdGlvbnM7IGBkZXRhaWxzLnN1YnNjcmliZWRgIGlzIHRoZSBjb3VudCkuXG4gICdjb21wbGlhbmNlLnN1YnNjcmlwdGlvbi5hdXRvLXN1YnNjcmliZScsXG4gIC8vIFBlci1vcmcgY29tcGxpYW5jZSBub3RpZmljYXRpb24gc2V0dGluZ3M6IHJlY2lwaWVudHMgKyB0aGUgb3V0Ym91bmQgd2ViaG9va1xuICAvLyBVUkwvc2VjcmV0LiBCZWFyZXItZXF1aXZhbGVudCBjb25maWcgdGhhdCByZWRpcmVjdHMgdmlvbGF0aW9uIG5vdGljZXMsIHNvIGFcbiAgLy8gY2hhbmdlIGNhcnJpZXMgdGhlIGR1cmFibGUgdHJhaWwgKG5ldmVyIHRoZSBzZWNyZXQgaXRzZWxmKS5cbiAgJ2NvbXBsaWFuY2Uubm90aWZpY2F0aW9uLXByZWZlcmVuY2UudXBkYXRlJyxcbiAgLy8gSW1hZ2UtcmVnaXN0cnkgZGVzdHJ1Y3RpdmUgb3BzIChhcGkvaW1hZ2UtcmVnaXN0cnkpIOKAlCBnYXJiYWdlLWNvbGxlY3Rpb25cbiAgLy8gc3dlZXBzIGFuZCBleHBsaWNpdCBpbWFnZS90YWcgZGVsZXRlcy5cbiAgJ3JlZ2lzdHJ5LmdjJyxcbiAgJ3JlZ2lzdHJ5LmltYWdlLmRlbGV0ZScsXG4gIC8vIENyb3NzLXJlcG8gdGFnL2ltYWdlIGNvcHkgKGFwaS9pbWFnZS1yZWdpc3RyeSBQT1NUIC9hcGkvaW1hZ2VzL2NvcHkpLiBBXG4gIC8vIGNyb3NzLXRlbmFudCBjb3B5IG1vdmVzIGRhdGEgYWNyb3NzIGN1c3RvbWVyIGJvdW5kYXJpZXMsIHNvIGl0IG5lZWRzIHRoZVxuICAvLyBkdXJhYmxlLCB0YW1wZXItZXZpZGVudCB0cmFpbCDigJQgbm90IGp1c3QgdGhlIExva2kgb3BlcmF0b3IgbGluZS5cbiAgJ3JlZ2lzdHJ5LmltYWdlLmNvcHknLFxuICAvLyBBIHBsdWdpbiBpbWFnZSBzaWduZWQgKyBTQk9NLWF0dGVzdGVkIGJ5IHRoZSBwbGF0Zm9ybSdzIHBsdWdpbi1zaWduaW5nIGtleVxuICAvLyAoYXBpL2ltYWdlLXJlZ2lzdHJ5IFBPU1QgL2ludGVybmFsL3BsdWdpbi1zaWduYXR1cmVzLCBjYWxsZWQgYnkgdGhlIHBsdWdpblxuICAvLyBidWlsZCB3b3JrZXIpLiBUaGUga2V5IGlzIHdoYXQgc3ludGggdHJ1c3RzLCBzbyBldmVyeSB1c2UgaXMgb24gdGhlIHRyYWlsLlxuICAncmVnaXN0cnkuaW1hZ2Uuc2lnbicsXG4gIC8vIFRoZSBEb2NrZXIgdG9rZW4gZW5kcG9pbnQgbWludGluZyBhIHJlZ2lzdHJ5IHRva2VuIHRoYXQgR1JBTlRTIGFjY2Vzc1xuICAvLyAoYGRldGFpbHMuZ3JhbnRlZGA6IHJlcG8gKyBhY3Rpb25zOyB0aGUgc2NvcGUtbGVzcyBgZG9ja2VyIGxvZ2luYCBwcm9iZSBpc1xuICAvLyBub3QgcmVjb3JkZWQpIOKAlCBhbmQsIGFzIG91dGNvbWUgZmFpbHVyZSwgYSByZWZ1c2VkIGNyZWRlbnRpYWwgKGhhc2hlZFxuICAvLyB1c2VybmFtZSwgY3JlZGVudGlhbCBraW5kIG9ubHkpLlxuICAncmVnaXN0cnkudG9rZW4uaXNzdWUnLFxuICAvLyBBIHB1c2ggY3JlZGVudGlhbCBtaW50ZWQgZm9yIG9uZSBhbm9ueW1vdXMgc3VibWlzc2lvbidzXG4gIC8vIGBxdWFyYW50aW5lLzxzdWJtaXNzaW9uSWQ+YCByZXBvIChleHBpcnkgKyBUVEwsIG5ldmVyIHRoZSBzZWNyZXQpLlxuICAncmVnaXN0cnkucXVhcmFudGluZS5jcmVkZW50aWFsLm1pbnQnLFxuICAvLyBNZXNzYWdpbmcgKGFwaS9tZXNzYWdlKSDigJQgYWRtaW4gQlJPQURDQVNUIGFubm91bmNlbWVudHMgKyBkZXN0cnVjdGl2ZVxuICAvLyBkZWxldGVzLiAxOjEgdXNlciBtZXNzYWdlcyBhcmUgaW50ZW50aW9uYWxseSBOT1QgYXVkaXRlZCAobm9pc2UgKyB0aGV5IHdvdWxkXG4gIC8vIHB1bGwgcHJpdmF0ZSBjb250ZW50IGludG8gdGhlIHRyYWlsKS4gYGRldGFpbHNgIGNhcnJ5IG1ldGFkYXRhIG9ubHlcbiAgLy8gKHN1YmplY3QvdHlwZS9zY29wZSksIE5FVkVSIG1lc3NhZ2UgYm9keSBjb250ZW50LlxuICAnbWVzc2FnZS5hbm5vdW5jZW1lbnQuY3JlYXRlJyxcbiAgJ21lc3NhZ2UuZGVsZXRlJyxcbiAgLy8gQnVsayBcInJlbW92ZSBmcm9tIG15IGluYm94XCI6IGEgcGVyLXBhcnRpY2lwYW50IFZJRVcgY2hhbmdlLCBub3QgYSBkZWxldGUg4oCUXG4gIC8vIHRoZSByb3csIHRoZSBvdGhlciBwYXJ0aWNpcGFudHMgYW5kIHRoZSByZXRlbnRpb24gc3dlZXAgYXJlIHVudG91Y2hlZC4gT25lXG4gIC8vIHJvdyBwZXIgYnVsayBjYWxsIHdpdGggYGRldGFpbHMuY291bnRgIGFuZCB0aGUgZmlsdGVyIHNjb3BlLCBuZXZlciBwZXJcbiAgLy8gbWVzc2FnZSBhbmQgbmV2ZXIgdGhlIHNlYXJjaCB0ZXh0LlxuICAnbWVzc2FnZS5oaWRlJyxcbiAgLy8gVGhlIHVuZG8gb2YgYG1lc3NhZ2UuaGlkZWA6IHJvd3MgcHV0IGJhY2sgaW50byB0aGlzIG9yZydzIGluYm94LiBTYW1lXG4gIC8vIHNoYXBlIOKAlCBvbmUgcm93IHBlciBjYWxsIHdpdGggYGRldGFpbHMuY291bnRgLCBuZXZlciB0aGUgaWRzLlxuICAnbWVzc2FnZS51bmhpZGUnLFxuICAnbWVzc2FnZS5yZXN0b3JlJyxcbiAgLy8gTWFudWFsIG9uLWRlbWFuZCBQVVJHRSAocGVybWFuZW50IGhhcmQtZGVsZXRlKSBvZiBhbiBhbHJlYWR5LXNvZnQtZGVsZXRlZFxuICAvLyBtZXNzYWdlIHRvbWJzdG9uZSDigJQgdGhlIGRlc3RydWN0aXZlIGZpbmFsaXplciB0aGUgcmV0ZW50aW9uIHN3ZWVwIHdvdWxkXG4gIC8vIG90aGVyd2lzZSBwZXJmb3JtIGF0IHRoZSBwdXJnZSBkZWFkbGluZS4gYGRldGFpbHNgIGNhcnJ5IG1ldGFkYXRhIG9ubHkuXG4gICdtZXNzYWdlLnB1cmdlJyxcbiAgLy8gQW4gYXV0aG9yJ3MgZWRpdCBvZiBhIHNlbnQgbWVzc2FnZSAoYW5kIHJlZnVzZWQgYXR0ZW1wdHMsIGFzIGZhaWx1cmVzKS5cbiAgLy8gYGRldGFpbHNgIGNhcnJ5IHRoZSBuZXcgYm9keSdzIExFTkdUSCBvbmx5IOKAlCBuZWl0aGVyIHNpZGUgb2YgdGhlIGVkaXQuXG4gICdtZXNzYWdlLnVwZGF0ZScsXG4gIC8vIEEgbWVzc2FnZSBhdHRhY2htZW50IHN0b3JlZCAoZ2VuZXJhbCBvciBzdXBwb3J0IG1vdW50LCBgZGV0YWlscy5zdXJmYWNlYCkuXG4gIC8vIFR5cGUgKyBzaXplIG9ubHkg4oCUIG5ldmVyIHRoZSBieXRlcywgYW5kIG5vdCB0aGUgdXNlci1jaG9zZW4gZmlsZW5hbWUuXG4gICdtZXNzYWdlLmF0dGFjaG1lbnQudXBsb2FkJyxcbiAgLy8gQSBTWVNURU0gbm90aWZpY2F0aW9uIGRyb3BwZWQgaW50byBhbiBvcmcncyBpbmJveCBieSBhbiBpbnRlcm5hbCBzZXJ2aWNlXG4gIC8vIChQT1NUIC9tZXNzYWdlcy9pbnRlcm5hbC9ub3RpZnkpOyBgZGV0YWlscy5jYWxsZXJgIG5hbWVzIHRoZSBzZXJ2aWNlLlxuICAnbWVzc2FnZS5ub3RpZnkuaW50ZXJuYWwnLFxuICAvLyBUaGUgcGxhdGZvcm0gb3JnLWRlbGV0ZSBjYXNjYWRlIHJlY2xhaW1pbmcgYW4gb3JnJ3MgYXR0YWNobWVudCBCTE9CUyDigJRcbiAgLy8gYGRldGFpbHMuYmxvYnNEZWxldGVkYCwgb3IgYSBmYWlsdXJlIHJvdyB3aGVuIHRoZSByZWNsYWltIGRpZCBub3QgY29tcGxldGUuXG4gICdtZXNzYWdlLm9yZy5wdXJnZScsXG4gIC8vIFN1cHBvcnQgY2FzZXMgKGFwaS9tZXNzYWdlKS4gRGlzdGluY3QgZnJvbSB0aGUgYG1lc3NhZ2UuKmAgZmFtaWx5IGFib3ZlXG4gIC8vIGJlY2F1c2UgYSBjYXNlIGlzIG5vdCBhbiBvcmRpbmFyeSBtZXNzYWdlOiBpdCBjYXJyaWVzIGEgcmVzcG9uc2UtdGltZVxuICAvLyBjb21taXRtZW50LCBzbyBXSE8gcmFpc2VkIGl0IGFuZCBXSEVOIHdlIGZpcnN0IGFuc3dlcmVkIGFyZSB0aGUgZmFjdHMgYVxuICAvLyBkaXNwdXRlIHR1cm5zIG9uLiBgZGV0YWlsc2AgY2FycnkgdGhlIGNhc2UgbnVtYmVyLCBsZXZlbCBhbmQgc2V2ZXJpdHkg4oCUXG4gIC8vIG1ldGFkYXRhIG9ubHksIG5ldmVyIHRoZSBib2R5IG9mIHdoYXQgYSBjdXN0b21lciB3cm90ZS5cbiAgLy9cbiAgLy8gVHdvIG9mIHRoZSBuaW5lIHBsYW5uZWQgc3VwcG9ydCBhY3Rpb25zIGFyZSBoZXJlLCBhbmQgb25seSB0d286IHRoZXNlIGFyZVxuICAvLyB0aGUgb25lcyB3aXRoIHJlYWwgZW1pdHRlcnMgdG9kYXkuIFRoZSByZXN0IChgc3RhdHVzYCwgYHNldmVyaXR5YCxcbiAgLy8gYGFzc2lnbmAsIGB0cmFuc2ZlcmAsIGBub3RlYCwgYHJlYWRgKSBsYW5kIFdJVEggdGhlIHJvdXRlcyB0aGF0IGVtaXQgdGhlbSDigJRcbiAgLy8gYSBkZWNsYXJlZCBhY3Rpb24gbm90aGluZyBlbWl0cyBpcyBkZWFkIHZvY2FidWxhcnksIGFuZCB0aGUgcGFyaXR5IHRlc3RcbiAgLy8gd291bGQgdGhlbiBmb3JjZSBhIGRvY3Mgcm93IGRlc2NyaWJpbmcgYW4gZXZlbnQgdGhhdCBuZXZlciBmaXJlcy5cbiAgLy9cbiAgLy8gYHN1cHBvcnQuY2FzZS5yZWFkYCB3aWxsIG1hdHRlciBtb3N0IG9mIGFsbCB3aGVuIGl0IGFycml2ZXM6IGl0IGlzIHRoZSBvbmx5XG4gIC8vIHJlY29yZCB0aGF0IHNvbWVvbmUgYXQgdGhlIHZlbmRvciBvcGVuZWQgYSBjdXN0b21lcidzIGNhc2UuXG4gICdzdXBwb3J0LmNhc2Uub3BlbicsXG4gICdzdXBwb3J0LmNhc2UucmVwbHknLFxuICAvLyBUaGUgd29ya2Zsb3cgbXV0YXRpb25zLiBFYWNoIGlzIGF1ZGl0ZWQgYmVjYXVzZSBlYWNoIG1vdmVzIGEgY2FzZSdzXG4gIC8vIHJlbGF0aW9uc2hpcCB0byBpdHMgcmVzcG9uc2UgY29tbWl0bWVudDogc3RhdHVzIHN0b3BzIG9yIHJlc3RhcnRzIHRoZVxuICAvLyBjbG9jaywgc2V2ZXJpdHkgY2hhbmdlcyB3aGljaCB0YXJnZXQgYXBwbGllcywgYW5kIHRoZSB0d28gb3duZXJzaGlwXG4gIC8vIGFjdGlvbnMgZGVjaWRlIFdITyBpcyBhY2NvdW50YWJsZSBmb3IgbWVldGluZyBpdC4gQSBzaWxlbnQgY2hhbmdlIG9mIG93bmVyXG4gIC8vIGlzIGhvdyBhY2NvdW50YWJpbGl0eSBmb3IgYSBtaXNzZWQgdGFyZ2V0IGRpc2FwcGVhcnMuXG4gICdzdXBwb3J0LmNhc2Uuc3RhdHVzJyxcbiAgJ3N1cHBvcnQuY2FzZS5zZXZlcml0eScsXG4gICdzdXBwb3J0LmNhc2UuYXNzaWduJyxcbiAgJ3N1cHBvcnQuY2FzZS50cmFuc2ZlcicsXG4gIC8vIE9OLUNBTEwuIFRoZSBwcm92aWRlciBvd25zIHRoZSByb3RhLCB0aGUgZXNjYWxhdGlvbiBhbmQgdGhlIGNvbnRhY3RcbiAgLy8gbWV0aG9kczsgd2hhdCBpdCBjYW5ub3Qgb3duIGlzIGFuIGF1ZGl0YWJsZSBhbnN3ZXIgdG8gXCJ3aG8gcGlja2VkIHRoaXMgdXBcbiAgLy8gYXQgMDM6MTRcIi4gQSBjbGljayBvbiBhIGxpbmsgaW4gdGhlaXIgVUkgaXMgbm90IGFuIGlkZW50aXR5IHRoaXMgc3lzdGVtIGNhblxuICAvLyBhdHRlc3QgdG8sIHNvIHRoZWlyIGluY2lkZW50IHN0YXRlIGNoYW5nZSBpcyByZWxheWVkIGhlcmUgYW5kIHJlY29yZGVkXG4gIC8vIGFnYWluc3QgdGhlIGFnZW50IHRoZXkgbmFtZS4gVGhlIGhhc2ggY2hhaW4gaXMgdGhlIHBvaW50OiBhIHBvc3QtaW5jaWRlbnRcbiAgLy8gcmV2aWV3IG5lZWRzIHRoZSBhY2sgdG8gYmUgZXZpZGVuY2UgcmF0aGVyIHRoYW4gYSBzY3JlZW5zaG90LlxuICAvL1xuICAvLyBgZXNjYWxhdGVkYCBpcyBhdWRpdGVkIHNlcGFyYXRlbHkgYmVjYXVzZSBpdCBpcyB0aGUgcmVjb3JkIHRoYXQgdGhlIEZJUlNUXG4gIC8vIHJlc3BvbmRlciBkaWQgbm90IGFuc3dlciDigJQgdGhlIGZhY3QgYSByb3RhIGlzIGFkanVzdGVkIG9uLCBhbmQgdGhlIG9uZSBtb3N0XG4gIC8vIGxpa2VseSB0byBiZSBkaXNwdXRlZCBsYXRlci5cbiAgJ3N1cHBvcnQub25jYWxsLmFja25vd2xlZGdlZCcsXG4gICdzdXBwb3J0Lm9uY2FsbC5lc2NhbGF0ZWQnLFxuICAvLyBUaGUgdGVzdCBwYWdlLiBBdWRpdGVkIGJlY2F1c2UgaXQgUklOR1MgQSBQSE9ORTogd2hvZXZlciBpdCB3YWtlcyBpc1xuICAvLyBlbnRpdGxlZCB0byBhIHJlY29yZCBvZiB3aG8gY2F1c2VkIHRoYXQsIGF0IHdoYXRldmVyIGhvdXIgaXQgd2FzLlxuICAnc3VwcG9ydC5vbmNhbGwudGVzdCcsXG4gIC8vIFRoZSBwZXItY2FzZSBzd2VlcCBwYWdpbmcgdGhlIHJvdGEgZm9yIGEgcHJlbWl1bSBjYXNlIG5lYXJpbmcgaXRzIHRhcmdldC5cbiAgLy8gUmVjb3JkZWQgb25jZSwgb24gdGhlIHRpY2sgdGhlIGNhc2UgRU5URVJFRCB0aGUgd2luZG93IOKAlCB0aGUgc3dlZXAgcmUtc2VuZHNcbiAgLy8gdGhlIHBhZ2UgZXZlcnkgdGljaywgYW5kIHR3ZW50eS1mb3VyIHJvd3MgZm9yIG9uZSBwYWdlIHdvdWxkIGJlIG5vaXNlLlxuICAnc3VwcG9ydC5vbmNhbGwucGFnZWQnLFxuICAvLyBUaGUgdHdvIENPTlRBQ1QgYWN0aW9ucyAocGxhdGZvcm0pLiBOb3QgY2FzZSBldmVudHMg4oCUIGVudGl0bGVtZW50IGV2ZW50czpcbiAgLy8gZWFjaCBvbmUgY2hhbmdlcyB3aG8gaW4gYW4gb3JnIGlzIGFibGUgdG8gY29tbWl0IHVzIHRvIGEgcmVzcG9uc2UgdGFyZ2V0IGF0XG4gIC8vIGFsbCwgYW5kIGRlc2lnbmF0aW5nIHNwZW5kcyBhIHNsb3Qgb2YgYSBQQUlELCBhY2NvdW50LXBvb2xlZCBhbGxvd2FuY2UuIFRoZVxuICAvLyByZXZva2UgY2FycmllcyB0aGUgY291bnQgb2Ygb3BlbiBjYXNlcyBpdCBsZWZ0IGJlaGluZCwgc28gYW4gb3JwaGFuZWQgY2FzZVxuICAvLyBpcyBhIHJlY29yZGVkIGZhY3QgcmF0aGVyIHRoYW4gc29tZXRoaW5nIGRpc2NvdmVyZWQgbGF0ZXIuXG4gICdzdXBwb3J0LmNvbnRhY3QuZGVzaWduYXRlJyxcbiAgJ3N1cHBvcnQuY29udGFjdC5yZXZva2UnLFxuICAvLyBUaGUgcHJlbWl1bSBVUEdSQURFLCBib3RoIGRpcmVjdGlvbnMuIFNlcGFyYXRlIGFjdGlvbnMgZnJvbSBkZXNpZ25hdGlvblxuICAvLyBiZWNhdXNlIHRoZXkgYW5zd2VyIHRvIGEgZGlmZmVyZW50IGNhcCBhbmQgY2FycnkgYSBkaWZmZXJlbnQgZmFjdDogd2hvIHdhc1xuICAvLyBlbnRpdGxlZCB0byAyNHg3IGNvdmVyYWdlLCBhbmQgd2hlbi4gQSByZXNwb25zZS10aW1lIGRpc3B1dGUgb3ZlciBhblxuICAvLyBvdXQtb2YtaG91cnMgY2FzZSB0dXJucyBvbiBleGFjdGx5IHRoYXQuXG4gICdzdXBwb3J0LmNvbnRhY3QudXBncmFkZScsXG4gICdzdXBwb3J0LmNvbnRhY3QuZG93bmdyYWRlJyxcbiAgLy8gU3RhZmYgbm90ZXMgb24gYSBjYXNlLiBBdWRpdGVkIGJlY2F1c2UgYSBub3RlIGlzIHRoZSB2ZW5kb3IncyBpbnRlcm5hbFxuICAvLyBhc3Nlc3NtZW50IG9mIGEgY3VzdG9tZXIgYW5kIHRoZSBvbmx5IHN1cmZhY2Ugb24gYSBjYXNlIHRoZSB0ZW5hbnQgbXVzdFxuICAvLyBuZXZlciBzZWU7IHRoZSB0cmFpbCBjYXJyaWVzIE1FVEFEQVRBIE9OTFkgKGNhc2UgbnVtYmVyLCBub3RlIGlkLCBsZW5ndGgpXG4gIC8vIGFuZCBuZXZlciB0aGUgYm9keSwgc2luY2UgdGhlIGNlbnRyYWwgdHJhaWwgaXMgcmVhZCBmYXIgbW9yZSB3aWRlbHkgdGhhblxuICAvLyB0aGUgc3VwcG9ydCBxdWV1ZSBpcy5cbiAgJ3N1cHBvcnQuY2FzZS5ub3RlJyxcbiAgLy8gVGhlIGNhbm5lZC1yZXBseSBsaWJyYXJ5LiBPTkUgYWN0aW9uIGZvciBjcmVhdGUvZWRpdC9yZXRpcmUgcmF0aGVyIHRoYW5cbiAgLy8gdGhyZWUsIGJlY2F1c2UgdGhlIHRyYWlsJ3MgcXVlc3Rpb24gaGVyZSBpcyBcIndobyBjaGFuZ2VkIHRoZSB3b3JkaW5nIHRoZVxuICAvLyBkZXNrIHNlbmRzIGN1c3RvbWVyc1wiLCBub3Qgd2hpY2ggdmVyYiB0aGV5IHVzZWQg4oCUIGBkZXRhaWxzYCBjYXJyaWVzIHRoYXQuXG4gIC8vIFN5c3RlbS13aWRlIHJhdGhlciB0aGFuIHBlci10ZW5hbnQsIHNvIHRoZXNlIHJvd3MgbmFtZSBubyBhZmZlY3RlZCBvcmcuXG4gICdzdXBwb3J0LmNhbm5lZC53cml0ZScsXG4gIC8vIEJpbGxpbmcgKGFwaS9iaWxsaW5nKSDigJQgc3Vic2NyaXB0aW9uICsgZW50aXRsZW1lbnQgbXV0YXRpb25zLCBtaXJyb3JlZCB0byB0aGVcbiAgLy8gY2VudHJhbCBhdWRpdCB0cmFpbCAodGhlc2UgYWxzbyB3cml0ZSB0byB0aGUgc2VydmljZS1sb2NhbCBiaWxsaW5nX2V2ZW50c1xuICAvLyBjb2xsZWN0aW9uKS4gYGRldGFpbHNgIGNhcnJ5IHBsYW4vdGllci9hZGRvbiBpZHMgb25seSDigJQgbmV2ZXIgY2FyZC9wYXltZW50XG4gIC8vIHNlY3JldHMgb3IgYW4gQVdTIGFjY291bnQgaWQuXG4gIC8vIFN1YnNjcmlwdGlvbiBsaWZlY3ljbGUgYSBDVVNUT01FUiBkcml2ZXMgKHRoZSBhZG1pbiBjb3VudGVycGFydCBpc1xuICAvLyBgYmlsbGluZy50aWVyLm92ZXJyaWRlYCk6IHNlbGYtc2VydmUgY3JlYXRlIChkaXJlY3Qgb3IgTWFya2V0cGxhY2UgY2xhaW0pLFxuICAvLyBwbGFuL2ludGVydmFsIGNoYW5nZSwgY2FuY2VsLWF0LXBlcmlvZC1lbmQsIHVuZG8tY2FuY2VsLCBjYXNjYWRlIGRlbGV0ZS5cbiAgJ2JpbGxpbmcuc3Vic2NyaXB0aW9uLmNyZWF0ZScsXG4gICdiaWxsaW5nLnN1YnNjcmlwdGlvbi51cGRhdGUnLFxuICAnYmlsbGluZy5zdWJzY3JpcHRpb24ucmVhY3RpdmF0ZScsXG4gICdiaWxsaW5nLnN1YnNjcmlwdGlvbi5jYW5jZWwnLFxuICAnYmlsbGluZy5zdWJzY3JpcHRpb24uZGVsZXRlJyxcbiAgJ2JpbGxpbmcudGllci5vdmVycmlkZScsXG4gIC8vIEEgTkVHT1RJQVRFRCBzdXBwb3J0IHNpemUgZmxvb3IgcmVwbGFjaW5nIHRoZSBjb21wdXRlZCByYW1wLiBTeXN0ZW0tb3JnXG4gIC8vIG9ubHksIGFuZCBhdWRpdGVkIHdpdGggdGhlIGFncmVlZCBQUklDRSBhbmQgdGhlIGFncmVlZCBTRUFUIENPVU5UIHRvZ2V0aGVyOlxuICAvLyBhIGRpc3B1dGUgYWJvdXQgd2hhdCB3YXMgc2lnbmVkIGZvciB0dXJucyBvbiB0aGF0IHBhaXIsIGFuZCB0aGUgcHJpY2UgYWxvbmVcbiAgLy8gY2Fubm90IGFuc3dlciBcImF0IHdoYXQgc2NhbGVcIi5cbiAgJ2JpbGxpbmcuc3VwcG9ydC1mbG9vci5vdmVycmlkZScsXG4gIC8vIEEgR1JBTlRFRCBvbmUtdGltZSBzdXBwb3J0IGluY2lkZW50IOKAlCBhIGNvbW1lcmNpYWwgY29uY2Vzc2lvbiwgbm90IGEgc2FsZS5cbiAgLy8gVGhlcmUgaXMgZGVsaWJlcmF0ZWx5IG5vIHB1cmNoYXNlIHBhdGg6IG1vbnRobHkgc3VwcG9ydCBjYW5jZWxzIGZyZWVseSwgc29cbiAgLy8gYW4gaW5jaWRlbnQgcHJpY2VkIGFib3ZlIGEgbW9udGggaXMgZG9taW5hdGVkIGFuZCBvbmUgYmVsb3cgaXQgbG9zZXMgbW9uZXkuXG4gIC8vIFRoZSByb3cgY2FycmllcyB0aGUgY291bnQgYW5kIHRoZSByZXN1bHRpbmcgYmFsYW5jZSwgd2hpY2ggaXMgd2hhdCBhIGxhdGVyXG4gIC8vIHJldmlldyBvZiBcIndobyBnYXZlIHdoYXQgYXdheVwiIG5lZWRzLlxuICAnYmlsbGluZy5zdXBwb3J0LWluY2lkZW50LmdyYW50JyxcbiAgLy8gT3BlcmF0b3Itb25seSByZXNlZWQgb2YgdGhlIGludm9pY2UgbGVkZ2VyIGZyb20gdGhlIHBheW1lbnQgcHJvdmlkZXInc1xuICAvLyBoaXN0b3J5IChQT1NUIC9iaWxsaW5nL2FkbWluL2JhY2tmaWxsKSDigJQgbXV0YXRlcyBmaW5hbmNlIGRhdGEgZmxlZXQtd2lkZS5cbiAgJ2JpbGxpbmcuYWRkb24uYWRkJyxcbiAgJ2JpbGxpbmcuYWRkb24ucmVtb3ZlJyxcbiAgLy8gU3lzdGVtLWluaXRpYXRlZCByZW1vdmFsIG9mIGEgdGllci1pbmNsdWRlZCBhZGQtb24gb24gYSBwbGFuIHVwZ3JhZGUgKHRoZVxuICAvLyBhY2NvdW50J3MgbmV3IHRpZXIgbm93IGJ1bmRsZXMgdGhlIGZlYXR1cmUpIOKAlCBkaXN0aW5jdCBmcm9tIGEgdXNlci1pbml0aWF0ZWRcbiAgLy8gYHJlbW92ZWAgc28gZmluYW5jZSBjYW4gdGVsbCBhbiBhdXRvLXBydW5lIGZyb20gYSBjdXN0b21lciBhY3Rpb24uXG4gICdiaWxsaW5nLmFkZG9uLnBydW5lJyxcbiAgLy8gRGlzY291bnRzIChkb2NzL2JpbGxpbmctZGlzY291bnRzLm1kKSDigJQgbWludC9pc3N1ZS9hcHBseS9yZW1vdmUvcmV2b2tlIG9mIGFcbiAgLy8gcHJpY2UgY291cG9uIG9yIHVzYWdlIGNyZWRpdC4gYGRldGFpbHNgIGNhcnJ5IHRoZSBkaXNjb3VudCBpZCArIGtpbmQvdmFsdWVcbiAgLy8gb25seSwgbmV2ZXIgdGhlIG9wYXF1ZSB0b2tlbiBvciBzaWduaW5nIGtleS5cbiAgJ2JpbGxpbmcuZGlzY291bnQuZ2VuZXJhdGUnLFxuICAnYmlsbGluZy5kaXNjb3VudC5pc3N1ZScsXG4gICdiaWxsaW5nLmRpc2NvdW50LmFwcGx5JyxcbiAgJ2JpbGxpbmcuZGlzY291bnQucmVtb3ZlJyxcbiAgJ2JpbGxpbmcuZGlzY291bnQucmV2b2tlJyxcbiAgLy8gQ2FtcGFpZ25zIChkb2NzL2JpbGxpbmctZGlzY291bnRzLm1kKSDigJQgdGhlIGlkZW50aXR5IGEgc2V0IG9mIGRpc2NvdW50IGNvZGVzXG4gIC8vIGJlbG9uZ3MgdG8sIGNhcnJ5aW5nIHRoZSBidWRnZXQsIHdpbmRvdyBhbmQgb25lLXBlci1hY2NvdW50IHJ1bGUuIEF1dGhvcmluZ1xuICAvLyBvbmUgZGVjaWRlcyBob3cgbXVjaCB0aGUgYnVzaW5lc3MgbWF5IGdpdmUgYXdheSwgc28gZWFjaCBjaGFuZ2UgaXMgYXVkaXRlZC5cbiAgJ2JpbGxpbmcuY2FtcGFpZ24uY3JlYXRlJyxcbiAgJ2JpbGxpbmcuY2FtcGFpZ24udXBkYXRlJyxcbiAgJ2JpbGxpbmcuY2FtcGFpZ24uZW5kJyxcbiAgLy8gUHJvbW90aW9ucyAoZG9jcy9iaWxsaW5nLWRpc2NvdW50cy5tZCNwcm9tb3Rpb25zKSDigJQgcnVsZS1kcml2ZW4gYXV0by1ncmFudFxuICAvLyBjYW1wYWlnbnMuIGBkZXRhaWxzYCBjYXJyeSB0aGUgcHJvbW90aW9uIGlkICsgY2VudHMvZXZlbnQgb25seS5cbiAgJ2JpbGxpbmcucHJvbW90aW9uLmNyZWF0ZScsXG4gICdiaWxsaW5nLnByb21vdGlvbi51cGRhdGUnLFxuICAnYmlsbGluZy5wcm9tb3Rpb24ucmV2b2tlJyxcbiAgJ2JpbGxpbmcucHJvbW90aW9uLmdyYW50JyxcbiAgJ2JpbGxpbmcucHJvbW90aW9uLmFjdGl2YXRlJyxcbiAgLy8gRXhwYW5zaW9uIE9GRkVSUyAoZG9jcy9wbGFucy9zYWxlcy1hZ2VudC5tZCkuIEFuIGF1dG9tYXRlZCBncmFudGVyIG5lZWRzIGl0c1xuICAvLyBvd24gdHJhaWw6IGBkZWNsaW5lZGAgYW5kIGBkaXNtaXNzZWRgIGFyZSB0aGUgYWNjb3VudCdzIG93biBhbnN3ZXJzIChhbmQgdGhlXG4gIC8vIHBhaXIgRDYncyBsZW5ndGhlbmVkIHF1aWV0IHdpbmRvdyBkZXBlbmRzIG9uIOKAlCBcIm5ldmVyIHNhdyBpdFwiIGFuZCBcInNhaWQgbm9cIlxuICAvLyBtdXN0IG5vdCBiZSB0aGUgc2FtZSByb3cpOyBgZXhjbHVzaW9uLnNldGAvYGNsZWFyZWRgIGFyZSB0aGUgb3BlcmF0b3IgdmV0byxcbiAgLy8gd2hpY2ggaXMgdGhlIHByaWNlIG9mIHNoaXBwaW5nIHRoZSBmZWF0dXJlIGF0IGFsbCBhbmQgdGhlcmVmb3JlIGhhcyB0byBiZVxuICAvLyBhdHRyaWJ1dGFibGU7IGB0cmlnZ2VyYCBpcyBhIGh1bWFuIGFza2luZyBmb3IgYW4gb2ZmZXIgbm93LCByZWNvcmRlZCBzbyBhXG4gIC8vIG1hbnVhbCBvZmZlciBpcyBkaXN0aW5ndWlzaGFibGUgZnJvbSBhbiBhZ2VudCBvbmUgaW4gdGhlIG91dGNvbWUgbG9nLlxuICAvLyBUaGUgYWdlbnQncyBPV04gd29yaywgdW5kZXIgaXRzIG93biBhY3RvciAoRDE0IOKAlCBgT0ZGRVJTX0FHRU5UX0FDVE9SX0lEYCkuXG4gIC8vIGBzZW50YCBpcyB3aGF0IG1ha2VzIFwid2h5IGRpZCB0aGlzIGFjY291bnQgZ2V0IHRoaXM/XCIgYW5zd2VyYWJsZSBmcm9tIHRoZVxuICAvLyBjZW50cmFsIHRyYWlsIHJhdGhlciB0aGFuIG9ubHkgZnJvbSB0aGUgc2VydmljZSdzIG93biBjb2xsZWN0aW9uLCBhbmRcbiAgLy8gYHdpdGhkcmF3bmAgaXMgdGhlIHJlY2FsbCBhbiBvcGVyYXRvciByZWFjaGVzIGZvciBvbiB0aGUgbW9ybmluZyBhIHJ1bGVcbiAgLy8gdHVybnMgb3V0IHRvIGJlIHdyb25nIOKAlCBib3RoIGNhcnJ5IHRoZSByYXRpb25hbGUgb3IgdGhlIHdpbmRvdywgbmV2ZXIgY29weS5cbiAgJ2JpbGxpbmcub2ZmZXIuc2VudCcsXG4gICdiaWxsaW5nLm9mZmVyLndpdGhkcmF3bicsXG4gICdiaWxsaW5nLm9mZmVyLmRlY2xpbmVkJyxcbiAgJ2JpbGxpbmcub2ZmZXIuZGlzbWlzc2VkJyxcbiAgJ2JpbGxpbmcub2ZmZXIuZXhjbHVzaW9uLnNldCcsXG4gICdiaWxsaW5nLm9mZmVyLmV4Y2x1c2lvbi5jbGVhcmVkJyxcbiAgJ2JpbGxpbmcub2ZmZXIudHJpZ2dlcicsXG4gIC8vIFVzYWdlLWNyZWRpdCByZWFsaXphdGlvbiDigJQgYSBjdXN0b21lci9jb21wbGlhbmNlLXZpc2libGUgcmVjb3JkIG9mIGNyZWRpdFxuICAvLyBtb3ZlbWVudDogYGNvbnN1bWVkYCAoTWFya2V0cGxhY2UgbWV0ZXJlZCBkcmF3ZG93biksIGBleGhhdXN0ZWRgIChiYWxhbmNlIGhpdFxuICAvLyB6ZXJvKSwgYW5kIGEgY29tYm8gZW5kaW5nLiBgZGV0YWlsc2AgY2FycnkgY2VudHMvaWRzIG9ubHksIG5vIHBheW1lbnQgc2VjcmV0cy5cbiAgJ2JpbGxpbmcuY3JlZGl0LmNvbnN1bWVkJyxcbiAgJ2JpbGxpbmcuY3JlZGl0LmV4aGF1c3RlZCcsXG4gICdiaWxsaW5nLmNvbWJvLmV4cGlyZWQnLFxuICAvLyBSZXBvcnRpbmcgKGFwaS9yZXBvcnRpbmcpIOKAlCB0aGUgdGhyZWUgcmVwb3J0aW5nIG11dGF0aW9ucyB3aG9zZSBlZmZlY3RcbiAgLy8gb3V0bGl2ZXMgYSByZXF1ZXN0IGxvZzogdGhlIHBlci1vcmcgY29ycmVsYXRpb24td2luZG93IGNvbmZpZyB3cml0ZSwgYVxuICAvLyBwb3N0LWRlcGxveSBvdXRjb21lIG1hcmtlciAoaXQgbW92ZXMgdGhlIG9yZydzIERPUkEgQ0ZSL01UVFIpLCBhbmQgdGhlXG4gIC8vIGluYm91bmQgYmlsbGluZ+KGknJlcG9ydGluZyByZXRlbnRpb24tZW50aXRsZW1lbnQgc3luYyAoYSByZXRlbnRpb24gY3V0IGlzIGFcbiAgLy8gZGF0YS1kZXN0cm95aW5nIGNoYW5nZSBhcHBsaWVkIGJ5IHRoZSBuZXh0IHN3ZWVwKS4gYGRldGFpbHNgIGNhcnJ5IHRoZVxuICAvLyBzZXR0aW5ncy9vdXRjb21lIHZhbHVlcyBvbmx5LlxuICAncmVwb3J0aW5nLnNldHRpbmdzLnVwZGF0ZScsXG4gICdyZXBvcnRpbmcuZGVwbG95bWVudC5vdXRjb21lJyxcbiAgJ3JlcG9ydGluZy5yZXRlbnRpb24uc3luYycsXG4gIC8vIFN0YWtlaG9sZGVyIHJlcG9ydHMg4oCUIHRoZSBhZGQtb24ncyBhdXRob3JpbmcgYW5kIFBVQkxJU0hJTkcgc3VyZmFjZS4gUHVibGlzaGluZ1xuICAvLyBpcyB0aGUgbW9tZW50IGludGVybmFsIGRlbGl2ZXJ5IG51bWJlcnMgbGVhdmUgdGhlIHBsYXRmb3JtLCBzbyB0aGUgd2hvbGVcbiAgLy8gb3V0d2FyZCBwYXRoIGlzIGF1ZGl0YWJsZTogd2hpY2ggcmVwb3J0LCB3aGljaCBwZXJpb2QncyBmcm96ZW4gc25hcHNob3QsXG4gIC8vIHdoaWNoIHZlcnNpb24sIGFuZCB3aG8gbGV0IGl0IG91dC4gYGxpbmsuY3JlYXRlZGAgLyBgbGluay5yZXZva2VkYCBjb3ZlciB0aGVcbiAgLy8gVVJMcyB0aGF0IGxldCBzb21lb25lIHdpdGhvdXQgYW4gYWNjb3VudCByZWFkIGl0OyBgcmVjaXBpZW50LmFkZGVkYCAvXG4gIC8vIGByZWNpcGllbnQucmVtb3ZlZGAgY292ZXIgd2hvIGlzIG9uIHRoZSBkaXN0cmlidXRpb24gbGlzdCwgd2hpY2ggaXMgdGhlIG90aGVyXG4gIC8vIHdheSBkYXRhIHJlYWNoZXMgYSBwZXJzb24uIGBvd25lcnNoaXAudHJhbnNmZXJgIGlzIGEgcHJpdmlsZWdlIG1vdmU6IGFcbiAgLy8gc2NoZWR1bGVkIHJ1biBpcyBhdXRob3JpemVkIGFzIGl0cyBPV05FUiwgc28gaGFuZGluZyBhIGRlZmluaXRpb24gb3ZlciBoYW5kc1xuICAvLyBvdmVyIHdob3NlIGFjY2VzcyB0aGUgbnVtYmVycyBhcmUgY29tcHV0ZWQgd2l0aC5cbiAgLy9cbiAgLy8gRGVsaWJlcmF0ZWx5IE5PVCBhdWRpdGVkOiByZWFkaW5nIGEgc2hhcmVkIHJlcG9ydC4gVGhlIGFjY2VzcyBpcyBsb2dnZWQgYW5kXG4gIC8vIGNvdW50ZWQgcGVyIGxpbmssIGJ1dCBpdCBpcyBhbiBVTkFVVEhFTlRJQ0FURUQsIGV4dGVybmFsbHktdHJpZ2dlcmVkIGV2ZW50IOKAlFxuICAvLyBhbnlvbmUgaG9sZGluZyBhIFVSTCBjb3VsZCBvdGhlcndpc2Ugd3JpdGUgdW5ib3VuZGVkIHJvd3MgaW50byB0aGUgb3JnJ3MgYXVkaXRcbiAgLy8gdHJhaWwsIHdoaWNoIHR1cm5zIGEgcmVhZCBpbnRvIGEgd2F5IHRvIGJ1cnkgdGhlIGVudHJpZXMgdGhhdCBtYXR0ZXIuXG4gICdyZXBvcnRpbmcucmVwb3J0LmRlZmluaXRpb24uY3JlYXRlJyxcbiAgJ3JlcG9ydGluZy5yZXBvcnQuZGVmaW5pdGlvbi51cGRhdGUnLFxuICAncmVwb3J0aW5nLnJlcG9ydC5kZWZpbml0aW9uLmRlbGV0ZScsXG4gICdyZXBvcnRpbmcucmVwb3J0Lm93bmVyc2hpcC50cmFuc2ZlcicsXG4gICdyZXBvcnRpbmcucmVwb3J0LnB1Ymxpc2hlZCcsXG4gICdyZXBvcnRpbmcucmVwb3J0LnJlcHVibGlzaGVkJyxcbiAgJ3JlcG9ydGluZy5yZXBvcnQubGluay5jcmVhdGVkJyxcbiAgJ3JlcG9ydGluZy5yZXBvcnQubGluay5yZXZva2VkJyxcbiAgJ3JlcG9ydGluZy5yZXBvcnQucmVjaXBpZW50LmFkZGVkJyxcbiAgJ3JlcG9ydGluZy5yZXBvcnQucmVjaXBpZW50LnJlbW92ZWQnLFxuICAncmVwb3J0aW5nLnJlcG9ydC5wb2xpY3kudXBkYXRlJyxcbiAgLy8gQSBkZWZpbml0aW9uIFNUT1BQRUQgcHJvZHVjaW5nIHJlcG9ydHMgd2l0aG91dCBhbnlvbmUgYXNraW5nIGl0IHRvOiB0aGUgb3duZXJcbiAgLy8gd2FzIGRlYWN0aXZhdGVkIG9yIHJlbW92ZWQsIG9yIGxvc3QgdGhlIHBlcm1pc3Npb24gYSBydW4gaXMgYXV0aG9yaXplZCB3aXRoLlxuICAvLyBSZWNvcmRlZCBiZWNhdXNlIHRoZSBlZmZlY3QgaXMgc2lsZW50IOKAlCBhIG1hbmFnZXIgZmluZHMgb3V0IGJ5IG5vdCByZWNlaXZpbmdcbiAgLy8gdGhlIHJlcG9ydCDigJQgc28gdGhlIHRyYWlsIGhhcyB0byBzYXkgd2hpY2ggcmVwb3J0cyBzdG9wcGVkIGFuZCB3aHkuXG4gICdyZXBvcnRpbmcucmVwb3J0LnBhdXNlZCcsXG4gIC8vIOKApmFuZCBzdGFydGVkIGFnYWluLiBJdHMgb3duIGFjdGlvbiByYXRoZXIgdGhhbiBhIGRldGFpbCBvbiB0aGUgcGF1c2UsIGJlY2F1c2UgdGhlXG4gIC8vIHF1ZXN0aW9uIGEgcmV2aWV3ZXIgYXNrcyBpcyBcIndhcyB0aGlzIGFjY291bnQncyByZXBvcnRpbmcgb2ZmIGJldHdlZW4gdGhlc2UgdHdvXG4gIC8vIGRhdGVzXCIsIGFuZCBhbnN3ZXJpbmcgaXQgZnJvbSBhIHNpbmdsZSBhY3Rpb24ncyBkZXRhaWxzIG1lYW5zIHJlYWRpbmcgZXZlcnkgcm93LlxuICAncmVwb3J0aW5nLnJlcG9ydC5yZXN1bWVkJyxcbiAgLy8gVGhlIGRyYWZ0aW5nIGhhbGYgb2YgYSBydW46IGEgY29tcG9zZS9yZWdlbmVyYXRlIGZyZWV6ZXMgdGhlIG9yZydzIG51bWJlcnNcbiAgLy8gaW50byBhIHJ1biwgdGhlIGxlYWQncyBub3RlcyBhcmUgZWRpdGVkIG9udG8gaXQgKG1ldGFkYXRhIG9ubHkg4oCUIGxlbmd0aCxcbiAgLy8gbmV2ZXIgdGhlIHByb3NlKSwgYW5kIGFuIEFJIHN1bW1hcnkgaXMgZHJhZnRlZCBmcm9tIGl0ICh0aGUgbnVtYmVycyB3ZW50IHRvXG4gIC8vIGEgcHJvdmlkZXI7IGBvdXRjb21lYCBjYXJyaWVzIGEgcmVmdXNhbCkuIEEgcmVzZW5kIHJlLW1pbnRzIGEgcmVjaXBpZW50J3NcbiAgLy8gY29uZmlybWF0aW9uIGNyZWRlbnRpYWwuIGB2ZXJpZmllZGAgLyBgdW5zdWJzY3JpYmVkYCBhcmUgdGhlIFVOQVVUSEVOVElDQVRFRFxuICAvLyByZWNpcGllbnQncyBvd24gYWN0cyAoYWN0b3IgYGFub255bW91c2AsIGEgaGFzaGVkIGFkZHJlc3Mgb25seSk6IGJvdW5kZWQgYnlcbiAgLy8gY29uc3RydWN0aW9uIOKAlCB0aGUgdmVyaWZ5IHRva2VuIGlzIHNpbmdsZS11c2UsIGFuZCBvbmx5IHRoZSBjbGljayB0aGF0XG4gIC8vIGFjdHVhbGx5IHN0b3BzIGRlbGl2ZXJ5IHdyaXRlcyBhbiB1bnN1YnNjcmliZSByb3cuXG4gICdyZXBvcnRpbmcucmVwb3J0LnJ1bi5jb21wb3NlJyxcbiAgJ3JlcG9ydGluZy5yZXBvcnQucnVuLm5vdGVzJyxcbiAgJ3JlcG9ydGluZy5yZXBvcnQucnVuLnN1bW1hcnknLFxuICAncmVwb3J0aW5nLnJlcG9ydC5yZWNpcGllbnQucmVzZW5kJyxcbiAgJ3JlcG9ydGluZy5yZXBvcnQucmVjaXBpZW50LnZlcmlmaWVkJyxcbiAgJ3JlcG9ydGluZy5yZXBvcnQucmVjaXBpZW50LnVuc3Vic2NyaWJlZCcsXG4gIC8vIE1BQ0hJTkUgaW5nZXN0IChgcmVwb3J0aW5nOmluZ2VzdGAgc2NvcGUpLiBPbmUgYGJhdGNoYCByb3cgcGVyIFBPU1QgdG8gdGhlXG4gIC8vIGV2ZW50IC8gaW5jaWRlbnQgLyBpbmdlc3QtaGVhbHRoIHJvdXRlcyDigJQgY291bnRzIHBsdXMgY2FwcGVkIHBpcGVsaW5lLFxuICAvLyBleGVjdXRpb24sIEV2ZW50QnJpZGdlLWV2ZW50IGFuZCBpbmNpZGVudCBpZCBsaXN0cywgYXR0cmlidXRlZCB0byB0aGVcbiAgLy8gY3JlZGVudGlhbCdzIHByaW5jaXBhbCDigJQgc28gYSBmb3JnZWQgb3IgbWlzcm91dGVkIHdyaXRlIG5hbWVzIHRoZSBrZXkgYmVoaW5kXG4gIC8vIGl0LiBgcmVqZWN0ZWRgIGlzIHRoZSB0ZW5hbmN5IHJlZnVzYWwgaW5zaWRlIGEgYmF0Y2ggKGV2ZW50cyBuYW1pbmcgYW5vdGhlclxuICAvLyBvcmcncyBwaXBlbGluZXMpOiBhIEZBSUxVUkUgcm93IHdpdGggdGhlIG9mZmVuZGluZyBwaXBlbGluZSBpZHMsIG5ldmVyIHRoZVxuICAvLyBvcmcgdGhleSBiZWxvbmcgdG8uIGBpbmNpZGVudC5yZWNvcmRgIGlzIG9uZSBpbmNpZGVudCB0aGF0IGlzIG5ldyBvciBhY3R1YWxseVxuICAvLyBjaGFuZ2VkIChiZWZvcmUvYWZ0ZXIpOyBsaWtlIGBkZXBsb3ltZW50Lm91dGNvbWVgIGl0IG1vdmVzIENGUi9NVFRSLiBBblxuICAvLyB1bmNoYW5nZWQgcmVwZWF0LWludGVydmFsIHJlLXBvc3Qgd3JpdGVzIG5vbmUuXG4gICdyZXBvcnRpbmcuaW5nZXN0LmJhdGNoJyxcbiAgJ3JlcG9ydGluZy5pbmdlc3QucmVqZWN0ZWQnLFxuICAncmVwb3J0aW5nLmluY2lkZW50LnJlY29yZCcsXG4gIC8vIERlbmllZCBhdXRob3JpemF0aW9uIGF0dGVtcHQg4oCUIGVtaXR0ZWQgYmVzdC1lZmZvcnQgYnkgdGhlIHNoYXJlZFxuICAvLyBgcmVxdWlyZVBlcm1pc3Npb25gIC8gYHJlcXVpcmVTeXN0ZW1BZG1pbmAgZ2F0ZSB3aGVuIGEgc3RhdGUtY2hhbmdpbmdcbiAgLy8gKG5vbi1HRVQpIHJlcXVlc3QgaXMgcmVqZWN0ZWQsIHNvIHByb2JpbmcvZXNjYWxhdGlvbiBhdHRlbXB0cyBhcmUgdmlzaWJsZVxuICAvLyByYXRoZXIgdGhhbiBpbnZpc2libGUuIGBkZXRhaWxzYCBjYXJyaWVzIHRoZSByZXF1aXJlZCBwZXJtaXNzaW9uICsgcGF0aDtcbiAgLy8gYG91dGNvbWVgIGlzICdmYWlsdXJlJy5cbiAgJ2F1dGh6LmRlbmllZCcsXG4gIC8vIFwiQXNrXCIgYXNzaXN0YW50IGFjdGl2aXR5IOKAlCB2aXNpYmlsaXR5IGludG8gd2hhdCB0aGUgYXNzaXN0YW50IGRpZCBvbiBhIHVzZXInc1xuICAvLyBiZWhhbGYuIGBhc2sucXVlcnlgIGlzIGEgcmVhZC1vbmx5IGhvdy10byB0dXJuOyBgYXNrLmFnZW50LnR1cm5gIGlzIGEgdG9vbC1jYWxsaW5nXG4gIC8vIHR1cm4uIGBkZXRhaWxzYCBjYXJyeSBTQUZFIE1FVEFEQVRBIE9OTFkgKHRvb2xzIHVzZWQsIHByb3Bvc2FsIGtpbmRzLCBxdWVyeVxuICAvLyBsZW5ndGgsIG91dGNvbWUpLCBuZXZlciB0aGUgcmF3IHF1ZXJ5IHRleHQuXG4gICdhc2sucXVlcnknLFxuICAnYXNrLmFnZW50LnR1cm4nLFxuICAvLyBBIHJlYWRlciByYXRpbmcgYW4gYW5zd2VyLCBvciBhIGhlbHAgc2VhcmNoIHRoYXQgZm91bmQgbm90aGluZy4gVGhlIE9OTFlcbiAgLy8gc2lnbmFsIGZvciB3aGljaCBkb2NzIHRoZSBhc3Npc3RhbnQgYW5zd2VycyBiYWRseSBmcm9tIOKAlCB0aGUgdHVybiBpdHNlbGZcbiAgLy8gY2Fubm90IHRlbGwgYSBnb29kIGFuc3dlciBmcm9tIGEgY29uZmlkZW50IHdyb25nIG9uZS4gYGRldGFpbHNgIGNhcnJ5IHRoZVxuICAvLyByYXRpbmcgYW5kIHRoZSBET0MgSURTIGNpdGVkIChgYXV0aGVudGljYXRpb24ubWRgKSwgbmV2ZXIgdGhlIHF1ZXN0aW9uOiB0aGVcbiAgLy8gZG9jIGlzIHdoYXQgZ2V0cyBmaXhlZCwgYW5kIGl0IGlzIG5vdCB1c2VyLWVudGVyZWQgdGV4dC5cbiAgJ2Fzay5mZWVkYmFjaycsXG4gIC8vIE9uZSBBSSBnZW5lcmF0aW9uIG9mIGEgcGlwZWxpbmUgLyBwbHVnaW4gZHJhZnQgKGAvcGlwZWxpbmVzL2dlbmVyYXRlKmAsXG4gIC8vIGAvcGx1Z2lucy9nZW5lcmF0ZSpgKSwgc3VjY2VzcyBvciBmYWlsdXJlIChpbmNsLiBjbGllbnQgYWJvcnQpLiBgZGV0YWlsc2AgY2FycnlcbiAgLy8gU0FGRSBNRVRBREFUQSBPTkxZOiB0aGUgcm91dGUsIHRoZSBwcm9tcHQgTEVOR1RILCB0aGUgc2hhcmVkIEFJIHVzYWdlIGJsb2NrXG4gIC8vIChgYWlgOiB0aGUgcHJvdmlkZXIgYW5kIG1vZGVsIHRoYXQgQU5TV0VSRUQgYWZ0ZXIgYW55IGZhaWxvdmVyLCBgZmFsbGJhY2tGcm9tYCxcbiAgLy8gd2hvc2Uga2V5IHBhaWQg4oCUIGBrZXlTb3VyY2VgIHJlcXVlc3Qvb3JnL3BsYXRmb3JtIOKAlCB0b2tlbnMgaW4vb3V0L2NhY2hlZCwgdGhlXG4gIC8vIHByb21wdCB2ZXJzaW9uLCBob3cgdGhlIGBhaUNhbGxzYCBzbG90IHNldHRsZWQpIGFuZCB0aGUgcmVzZXJ2YXRpb24nc1xuICAvLyBgcXVvdGFgIHZpZXcg4oCUIG5ldmVyIHRoZSBwcm9tcHQsIHRoZSBnZW5lcmF0ZWQgb3V0cHV0LCBvciBhIGtleS5cbiAgJ3BpcGVsaW5lLmFpLmdlbmVyYXRlJyxcbiAgJ3BsdWdpbi5haS5nZW5lcmF0ZScsXG4gIC8vIFBsdWdpbiBlY29zeXN0ZW0gKGRvY3MvcnVuYm9va3MvZWNvc3lzdGVtLW1vZGVyYXRpb24ubWQpLiBHb3Zlcm5hbmNlIGFjdGlvbnNcbiAgLy8gYXJlIHJlY29yZGVkIHdpdGggYG9yZ0lkYCA9IHRoZSBzeXN0ZW0gb3JnOyBgYWZmZWN0ZWRPcmdJZGAgaXMgdGhlXG4gIC8vIHB1Ymxpc2hlcidzIG9yZyAobGlzdGluZy92ZXJzaW9uL3Jldmlldy9hZHZpc29yeS9wdWJsaXNoZXIgbW9kZXJhdGlvbikgb3JcbiAgLy8gdGhlIGluc3RhbGxpbmcgb3JnIChpbnN0YWxscyArIHBvbGljeSkuIEFub255bW91cyBzdWJtaXNzaW9ucyB1c2UgdGhlXG4gIC8vIGBBTk9OWU1PVVNfQUNUT1JfSURgIGFjdG9yIHdpdGggYGRldGFpbHMuc3VibWlzc2lvbklkYC4gYGRldGFpbHNgIGNhcnJ5IGlkcyxcbiAgLy8gdmVyc2lvbnMsIGRpZ2VzdHMsIHRpZXIsIHN0YXRlIGFuZCByZWFzb24gY29kZXMgb25seSDigJQgbmV2ZXIgcmV2aWV3IGJvZGllcyxcbiAgLy8gUkVBRE1FIGNvbnRlbnQsIHNlY3JldHMgb3IgZW1haWxzLlxuICAvLyBQdWJsaXNoZXJzLlxuICAncHVibGlzaGVyLmNyZWF0ZScsXG4gICdwdWJsaXNoZXIudXBkYXRlJyxcbiAgJ3B1Ymxpc2hlci50ZXJtcy5hY2NlcHQnLFxuICAncHVibGlzaGVyLnZlcmlmeS5yZXF1ZXN0JyxcbiAgJ3B1Ymxpc2hlci52ZXJpZnkuYXBwcm92ZScsXG4gICdwdWJsaXNoZXIudmVyaWZ5LnJlamVjdCcsXG4gICdwdWJsaXNoZXIudGllci5jaGFuZ2UnLFxuICAncHVibGlzaGVyLnN1c3BlbmQnLFxuICAncHVibGlzaGVyLnVuc3VzcGVuZCcsXG4gICdwdWJsaXNoZXIudHJhbnNmZXIucmVxdWVzdCcsXG4gICdwdWJsaXNoZXIudHJhbnNmZXIuYWNjZXB0JyxcbiAgJ3B1Ymxpc2hlci50cmFuc2Zlci5kZWNsaW5lJyxcbiAgJ3B1Ymxpc2hlci50cmFuc2Zlci5hcHByb3ZlJyxcbiAgJ3B1Ymxpc2hlci50cmFuc2Zlci5yZWplY3QnLFxuICAncHVibGlzaGVyLnByb2ZpbGUtY2hhbmdlLmFwcHJvdmUnLFxuICAncHVibGlzaGVyLnByb2ZpbGUtY2hhbmdlLnJlamVjdCcsXG4gIC8vIFB1Ymxpc2ggcmVxdWVzdHMgKHRlbmFudCDihpIgc3lzdGVtIG9yZykuIGBkZXRhaWxzLmtpbmRgIG5hbWVzIHRoZSByZXF1ZXN0LlxuICAncGx1Z2luLnJlcXVlc3Quc3VibWl0JyxcbiAgJ3BsdWdpbi5yZXF1ZXN0LndpdGhkcmF3JyxcbiAgJ3BsdWdpbi5yZXF1ZXN0LmFwcHJvdmUnLFxuICAncGx1Z2luLnJlcXVlc3Quc2Vjb25kLWFwcHJvdmUnLFxuICAncGx1Z2luLnJlcXVlc3QucmVqZWN0JyxcbiAgJ3BsdWdpbi5yZXF1ZXN0LmF1dG8tYXBwcm92ZScsXG4gIC8vIExpc3RpbmdzIGFuZCB2ZXJzaW9ucyAoc3lzdGVtIG9yZywgZXhjZXB0IHRoZSB0ZW5hbnQgcGF1c2UpLlxuICAncGx1Z2luLmxpc3RpbmcucHVibGlzaCcsXG4gIC8vIE5PVEU6IHRoZXJlIGlzIG5vIGBwbHVnaW4ubGlzdGluZy51bmxpc3RgLiBXaXRoZHJhd2FsIGlzIGFscmVhZHkgZXhwcmVzc2VkIGJ5XG4gIC8vIGBwbHVnaW4ubGlzdGluZy5zdGF0ZS5jaGFuZ2VgIChgdW5tYWludGFpbmVkYCAvIGBzdXNwZW5kZWRgIC8gYGxpc3RlZGApLFxuICAvLyB3aGljaCBpcyB0aGUgYWN0aW9uIHRoZSBjb2RlIGFjdHVhbGx5IGVtaXRzLCBzbyBgdW5saXN0YCB3YXMgYSBzZWNvbmQgbmFtZVxuICAvLyBmb3IgYSB0aGluZyB0aGF0IGhhcyBvbmUg4oCUIGFuZCBhIG5ldmVyLWVtaXR0ZWQgb25lIGF0IHRoYXQuXG4gICdwbHVnaW4ubGlzdGluZy51cGRhdGUnLFxuICAncGx1Z2luLmxpc3Rpbmcuc3RhdGUuY2hhbmdlJyxcbiAgJ3BsdWdpbi5saXN0aW5nLnBhdXNlJyxcbiAgJ3BsdWdpbi5saXN0aW5nLnVucGF1c2UnLFxuICAncGx1Z2luLnZlcnNpb24ucGF1c2UnLFxuICAncGx1Z2luLnZlcnNpb24ueWFuaycsXG4gICdwbHVnaW4udmVyc2lvbi51bnlhbmsnLFxuICAvLyBQaXBlbGluZSB0b29sY2hhaW4gcmVsZWFzZXMgKGRvY3MvcGxhbnMvYm9vdHN0cmFwLWltYWdlLXZlcnNpb25pbmcubWQgwqcxMykuXG4gICd0b29sY2hhaW4uZGVmYXVsdC5zZXQnLFxuICAndG9vbGNoYWluLmRlZmF1bHQuaW5pdGlhbCcsXG4gICd0b29sY2hhaW4uZGVmYXVsdC5yZXN0b3JlJyxcbiAgJ3Rvb2xjaGFpbi5yb2xsb3V0LnVwZGF0ZScsXG4gICd0b29sY2hhaW4ucmVsZWFzZS5ub3RlcycsXG4gICd0b29sY2hhaW4ucmVsZWFzZS5kZXByZWNhdGUnLFxuICAndG9vbGNoYWluLnJlbGVhc2UueWFuaycsXG4gICd0b29sY2hhaW4ucmVsZWFzZS5kZWxldGUnLFxuICAndG9vbGNoYWluLnJlY292ZXJ5Lm5vdGlmeScsXG4gICd0b29sY2hhaW4ub3JnX2RlZmF1bHQuc2V0JyxcbiAgJ3Rvb2xjaGFpbi5vcmdfZGVmYXVsdC5jbGVhcicsXG4gICdwbHVnaW4udmVyc2lvbi5kZXByZWNhdGUnLFxuICAvLyBSZXRpcmluZyBhIHZlcnNpb24ncyByZWdpc3RyeSBpbWFnZSB0byByZWNsYWltIGBzdG9yYWdlQnl0ZXNgLiBEaXN0aW5jdFxuICAvLyBmcm9tIHRoZSBmb3VyIGFib3ZlLCB3aGljaCBjaGFuZ2Ugd2hldGhlciBhIHZlcnNpb24gUkVTT0xWRVMgYW5kIGRlbGV0ZVxuICAvLyBub3RoaW5nLCBhbmQgZnJvbSBgcmVnaXN0cnkuaW1hZ2UuZGVsZXRlYC9gcmVnaXN0cnkudGFnLmRlbGV0ZWAsIHdoaWNoIGFyZVxuICAvLyB0aGUgcmVnaXN0cnkncyBvd24gb3BlcmF0b3Itc2lkZSB0cmFpbC4gVGhpcyBpcyBhIHRlbmFudCBmcmVlaW5nIHNwYWNlLCBhbmRcbiAgLy8gdGhlIG9ubHkgYXVkaXRlZCBhY3Rpb24gdGhhdCBjYW4gcmVkdWNlIGFuIG9yZydzIHN0b3JhZ2UgZmlndXJlIOKAlCBzbyBpdHNcbiAgLy8gcm93IGNhcnJpZXMgdGhlIGJ5dGVzIGl0IGZyZWVkLCB3aGljaCBjYW5ub3QgYmUgcmVjb3ZlcmVkIGFmdGVyd2FyZHMuXG4gICdwbHVnaW4udmVyc2lvbi5wcnVuZScsXG4gIC8vIE5PVEU6IG5vIGBwbHVnaW4uY29sbGVjdGlvbi51cGRhdGVgLiBgZWNvc3lzdGVtX2NvbGxlY3Rpb25zYCB3YXMgZGVsZXRlZCAoc2VlXG4gIC8vIHRoZSB0b21ic3RvbmUgaW4gYHNjaGVtYS9lY29zeXN0ZW0udHNgKSBiZWNhdXNlIG5vdGhpbmcgZXZlciB3cm90ZSBvciByZWFkXG4gIC8vIG9uZTsgdGhpcyBkZWNsYXJhdGlvbiBvdXRsaXZlZCB0aGUgdGFibGUgaXQgYXVkaXRlZC5cbiAgLy8gRWNvc3lzdGVtIGNvbmZpZ3VyYXRpb24gKHN5c3RlbSBvcmcpLlxuICAnZWNvc3lzdGVtLmF1dG8tYXBwcm92YWwtcnVsZS5jcmVhdGUnLFxuICAnZWNvc3lzdGVtLmF1dG8tYXBwcm92YWwtcnVsZS51cGRhdGUnLFxuICAnZWNvc3lzdGVtLmF1dG8tYXBwcm92YWwtcnVsZS5kZWxldGUnLFxuICAnZWNvc3lzdGVtLnJlc2VydmVkLW5hbWUudXBkYXRlJyxcbiAgLy8gVGhlIG9uZS10aW1lIEJPT1RTVFJBUCBleGNlcHRpb24gKGF1dG8tYXBwcm92YWwgb2YgdGhlIGluaXRpYWwgT2ZmaWNpYWxcbiAgLy8gY2F0YWxvZykgb3BlbmluZyBvbiB0aGUgZmlyc3QgT2ZmaWNpYWwgcmVxdWVzdCwgYW5kIGNsb3NpbmcgZm9yIGdvb2RcbiAgLy8gKGBkZXRhaWxzLnJlYXNvbmA6IHdpbmRvd19lbGFwc2VkIC8gbGlzdGluZ3NfZXhpc3QgLyBhIG1hbmFnZXIgZGVjaXNpb247XG4gIC8vIGBkZXRhaWxzLmFwcHJvdmVkYDogaG93IG1hbnkgcmVxdWVzdHMgcm9kZSBpdCkuXG4gICdlY29zeXN0ZW0uYm9vdHN0cmFwLm9wZW4nLFxuICAnZWNvc3lzdGVtLmJvb3RzdHJhcC5jbG9zZScsXG4gIC8vIE5PVEU6IG5vIGBlY29zeXN0ZW0uc2xhLnVwZGF0ZWAuIFRoZSBsYW5lIFNMQXMgYXJlIEhBUkRDT0RFRCAoc3RhbmRhcmQgNDhoLFxuICAvLyBzZWN1cml0eS1maXggNGggaW4gYHNlcnZpY2VzL2Vjb3N5c3RlbS9zbGEudHNgKSB3aXRoIG5vIHNldHRpbmdzIHN1cmZhY2UsIHNvXG4gIC8vIHRoZXJlIGlzIG5vIG11dGF0aW9uIHRvIGF1ZGl0LiBNYWtpbmcgdGhlbSBvcGVyYXRvci10dW5hYmxlIGlzIHRoZSBjaGFuZ2VcbiAgLy8gdGhhdCBzaG91bGQgcmUtYWRkIHRoaXMuXG4gIC8vIFB1YmxpYyByZWdpc3RyeSBuYW1lc3BhY2UgKGBwdWJsaWMvKmApOiBjb3B5ICsgc2lnbiArIGF0dGVzdCBvbiBwdWJsaXNoLFxuICAvLyB0aGUgdGllci1jaGFuZ2Uvc3VzcGVuc2lvbiByZS1zaWduIGpvYiwgdGFnIHJlbW92YWwgb24geWFuay90YWtlZG93biwgYW5kXG4gIC8vIHRoZSByZXRlbnRpb24gc3dlZXAuXG4gICdyZWdpc3RyeS5pbWFnZS5wdWJsaXNoJyxcbiAgJ3JlZ2lzdHJ5LmltYWdlLnJlc2lnbicsXG4gICdyZWdpc3RyeS5pbWFnZS55YW5rJyxcbiAgJ3JlZ2lzdHJ5LmltYWdlLmdjJyxcbiAgLy8gSW5zdGFsbHMgYW5kIHRoZSBpbnN0YWxsaW5nIG9yZydzIGNvbnN1bXB0aW9uIHBvbGljeSAob3JnLWxvY2FsKS5cbiAgJ3BsdWdpbi5pbnN0YWxsLnJlcXVlc3QnLFxuICAncGx1Z2luLmluc3RhbGwuYXBwcm92ZScsXG4gICdwbHVnaW4uaW5zdGFsbC5kZW55JyxcbiAgJ3BsdWdpbi5pbnN0YWxsLmNyZWF0ZScsXG4gICdwbHVnaW4uaW5zdGFsbC51cGdyYWRlJyxcbiAgLy8gQSBtZW1iZXIncyByZXF1ZXN0IHRvIGNoYW5nZSBhbiBpbnN0YWxsIHBhc3Qgd2hhdCB0aGV5IG1heSBkbyBhbG9uZSwgYW5kIGl0cyBkZWNpc2lvbi5cbiAgJ3BsdWdpbi5pbnN0YWxsLmNoYW5nZS1yZXF1ZXN0JyxcbiAgJ3BsdWdpbi5pbnN0YWxsLmNoYW5nZS1hcHByb3ZlJyxcbiAgJ3BsdWdpbi5pbnN0YWxsLmNoYW5nZS1yZWplY3QnLFxuICAncGx1Z2luLmluc3RhbGwucmVtb3ZlJyxcbiAgJ29yZy5wbHVnaW4taW5zdGFsbC1wb2xpY3kudXBkYXRlJyxcbiAgLy8gQW4gdXBsb2FkIFJFRlVTRUQgYmVjYXVzZSBpdHMgbmFtZSB3b3VsZCBvdmVycmlkZSBzb21ldGhpbmcgdGhlIG9yZyBhbHJlYWR5XG4gIC8vIHJlc29sdmVzIOKAlCBhIGxpc3RpbmcsIG9yIGEgdGVhbSdzIHBhcmVudC1vcmcgcGx1Z2luIOKAlCBhbmQgdGhlIGNvbnN1bXB0aW9uXG4gIC8vIHBvbGljeSBzYXlzIGBzaGFkb3dpbmc6IGRlbnlgLiBBdWRpdGVkIGJlY2F1c2UgYSByZWZ1c2FsIG90aGVyd2lzZSByZXR1cm5zXG4gIC8vIGFuIGVycm9yIHRvIHRoZSBjYWxsZXIgYW5kIGxlYXZlcyBub3RoaW5nIGJlaGluZDogYW4gYXR0ZW1wdCB0byBkZWZpbmVcbiAgLy8gYHRyaXZ5YCBvdmVyIHRoZSBPZmZpY2lhbCBzY2FubmVyIGlzIGV4YWN0bHkgdGhlIHRoaW5nIHNvbWVvbmUgc2hvdWxkIGJlXG4gIC8vIGFibGUgdG8gZmluZCBhZnRlcndhcmRzLiBgZGV0YWlsc2AgY2FycnkgdGhlIG5hbWUgYW5kIHdoYXQgaXQgd291bGQgaGF2ZVxuICAvLyBvdmVycmlkZGVuLlxuICAncGx1Z2luLnNoYWRvd2luZy5kZW5pZWQnLFxuICAvLyBSZXZpZXdzIGFuZCByZXBsaWVzLlxuICAncGx1Z2luLnJldmlldy5jcmVhdGUnLFxuICAncGx1Z2luLnJldmlldy51cGRhdGUnLFxuICAncGx1Z2luLnJldmlldy5kZWxldGUnLFxuICAncGx1Z2luLnJldmlldy5yZXBvcnQnLFxuICAncGx1Z2luLnJldmlldy5ob2xkJyxcbiAgJ3BsdWdpbi5yZXZpZXcucmVsZWFzZScsXG4gICdwbHVnaW4ucmV2aWV3LnJlbW92ZScsXG4gICdwbHVnaW4ucmV2aWV3LmFub255bWl6ZScsXG4gICdwbHVnaW4ucmV2aWV3LnJlcGx5LmNyZWF0ZScsXG4gICdwbHVnaW4ucmV2aWV3LnJlcGx5LnVwZGF0ZScsXG4gICdwbHVnaW4ucmV2aWV3LnJlcGx5LmRlbGV0ZScsXG4gIC8vIEFub255bW91cyBzdWJtaXNzaW9ucy5cbiAgJ3BsdWdpbi5zdWJtaXNzaW9uLmNyZWF0ZScsXG4gICdwbHVnaW4uc3VibWlzc2lvbi52ZXJpZnknLFxuICAncGx1Z2luLnN1Ym1pc3Npb24uZ2F0ZS1mYWlsJyxcbiAgJ3BsdWdpbi5zdWJtaXNzaW9uLmFwcHJvdmUnLFxuICAncGx1Z2luLnN1Ym1pc3Npb24ucmVqZWN0JyxcbiAgJ3BsdWdpbi5zdWJtaXNzaW9uLmNsYWltJyxcbiAgJ3BsdWdpbi5zdWJtaXNzaW9uLmV4cGlyZScsXG4gIC8vIFNlY3VyaXR5IGFkdmlzb3JpZXMgKHB1Ymxpc2gvd2l0aGRyYXcgYXJlIHN5c3RlbS1vcmcgb25seTsgdXBkYXRlID0gYVxuICAvLyBtb2RlcmF0b3IgZWRpdGluZyBhIGRyYWZ0IGJlZm9yZSBpdCBpcyBwdWJsaXNoZWQpLlxuICAncGx1Z2luLmFkdmlzb3J5LmNyZWF0ZScsXG4gICdwbHVnaW4uYWR2aXNvcnkudXBkYXRlJyxcbiAgJ3BsdWdpbi5hZHZpc29yeS5wdWJsaXNoJyxcbiAgJ3BsdWdpbi5hZHZpc29yeS53aXRoZHJhdycsXG4gIC8vIFBlci1vcmcgcGx1Z2luIHNlY3VyaXR5IG5vdGlmaWNhdGlvbnMgKHBsdWdpbiBzY2FuIGdhdGVzKTogdGhlIHNldHRpbmdzXG4gIC8vIChyZWNpcGllbnRzLCBkaWdlc3QsIHdlYmhvb2ssIGV4dGVybmFsIGFkZHJlc3Mg4oCUIGNoYW5nZWQgZmllbGQgbmFtZXMgYW5kXG4gIC8vIHRoZSB3ZWJob29rIGhvc3Qgb25seSwgbmV2ZXIgdGhlIHNlY3JldCBvciB0aGUgYWRkcmVzcyksIGFuIGV4dGVybmFsXG4gIC8vIGFkZHJlc3MgY29uZmlybWVkIHRocm91Z2ggaXRzIGVtYWlsZWQgc2luZ2xlLXVzZSBsaW5rLCBhbmQgYSB0ZXN0IHNlbmQuXG4gICdwbHVnaW4uc2VjdXJpdHlfbm90aWZpY2F0aW9ucy51cGRhdGUnLFxuICAncGx1Z2luLnNlY3VyaXR5X25vdGlmaWNhdGlvbnMuZXh0ZXJuYWxfZW1haWwudmVyaWZ5JyxcbiAgJ3BsdWdpbi5zZWN1cml0eV9ub3RpZmljYXRpb25zLnRlc3QnLFxuICAvLyBBIGdhdGUtcmVmdXNlZCBpbWFnZSBLRVBUIGZyb20gdGhlIHNldHVwIGNhdGFsb2cgbG9hZCwgcHJvbW90ZWQgdG8gYVxuICAvLyB2ZXJzaW9uIHdpdGhvdXQgYSByZWJ1aWxkIChzeXN0ZW0gb3JnLCBhZnRlciBhIGZpeCB1cHN0cmVhbSBvciBhblxuICAvLyBhZHZpc29yeS1pZCB3YWl2ZXIpIOKAlCBvciByZWZ1c2VkIGFnYWluIGJlY2F1c2UgdGhlIENVUlJFTlQgZ2F0ZXMgc3RpbGxcbiAgLy8gZmFpbCBpdC4gYGRldGFpbHNgIGNhcnJ5IG5hbWUvdmVyc2lvbi9kaWdlc3QgYW5kIHRoZSBmaW5kaW5ncy5cbiAgJ3BsdWdpbi5zZXR1cF9pbWFnZS5wcm9tb3RlZCcsXG4gICdwbHVnaW4uc2V0dXBfaW1hZ2UucHJvbW90ZV9yZWZ1c2VkJyxcbiAgLy8gQSBnYXRlLXJlZnVzZWQgc2V0dXAtbG9hZCBpbWFnZSBLRVBUIChzaWduZWQsIGluIHRoZSByZWdpc3RyeSkgZm9yIGxhdGVyXG4gIC8vIHByb21vdGlvbiAoYGRldGFpbHNgOiBkaWdlc3QsIHJlZnVzYWwgY29kZSwgZXhwaXJlc0F0KSDigJQgYW5kIGl0cyByb3dcbiAgLy8gZHJvcHBlZCBieSB0aGUgc3dlZXAgKGBkZXRhaWxzLnJlYXNvbmA6IGV4cGlyZWQgLyBzdXBlcnNlZGVkKS5cbiAgJ3BsdWdpbi5zZXR1cF9pbWFnZS5rZXB0JyxcbiAgJ3BsdWdpbi5zZXR1cF9pbWFnZS5kaXNjYXJkZWQnLFxuICAvLyBBIFBJUEVMSU5FJ3MgdHJpYWdlIG9mIGl0cyBleHBvc3VyZSB0byBhIHZ1bG5lcmFibGUgcGx1Z2luIHZlcnNpb246IGFcbiAgLy8gdGltZS1ib3hlZCByaXNrIGFjY2VwdGFuY2UgKHJlYXNvbiArIGV4cGlyeSwgdGhlIGFjY2VwdGVkIGZpbmRpbmcga2V5cyBhbmRcbiAgLy8gd2hldGhlciBLRVYgZmluZGluZ3Mgd2VyZSBhY2NlcHRlZCksIGEgZmFsc2UtcG9zaXRpdmUgZGlzbWlzc2FsLCBvciBhXG4gIC8vIHJlb3Blbi4gQW4gYWN0aXZlIGFjY2VwdGFuY2UgZXhlbXB0cyB0aGF0IHBpcGVsaW5lJ3MgbG9va3VwcyBhbmQgcnVudGltZVxuICAvLyBjaGVja3MgZnJvbSB0aGUgZmxhZyAvIEtFViAvIEhpZ2gtZmxvb3IgcmVmdXNhbHMgZm9yIHRob3NlIGZpbmRpbmdzIG9ubHkuXG4gICdwaXBlbGluZS52dWxuLmFjY2VwdGVkJyxcbiAgJ3BpcGVsaW5lLnZ1bG4uZmFsc2VfcG9zaXRpdmUnLFxuICAncGlwZWxpbmUudnVsbi5yZW9wZW5lZCcsXG4gIC8vIEEgcGlwZWxpbmUncyBydW50aW1lIGNoZWNrIGdyYWRlZCBvbmUgb2YgaXRzIHJ1bm5pbmcgaW1hZ2VzIGBlcnJvcmAgb3JcbiAgLy8gbG91ZGVyIChgZGV0YWlsc2A6IHN0ZXBLZXksIGRpZ2VzdCwgcmVhc29uIGNvZGVzLCBleGVjdXRpb25JZCB3aGVuIHNlbnQpLlxuICAncGlwZWxpbmUucnVudGltZV9jaGVjay5mbGFnZ2VkJyxcbiAgLy8gQSBwaXBlbGluZSdzIHBsdWdpbiBzdGVwcyBtb3ZlZCB0byBuZXdlciB2ZXJzaW9ucyB0aHJvdWdoIHRoZSB1cGdyYWRlXG4gIC8vIGZsb3cgKHByZXZpZXcg4oaSIGFwcGx5OyBgZGV0YWlsc2AgY2FycnkgdGhlIHN0ZXBzLCBmcm9tIOKGkiB0byB2ZXJzaW9ucyksIGFuZCBhXG4gIC8vIHBpcGVsaW5lLXJ1biBzZWN1cml0eSBzY2FubmVyIHJlcG9ydCB1cGxvYWRlZCBmb3IgYSBwaXBlbGluZSAoYGRldGFpbHNgOlxuICAvLyB0b29sLCBmb3JtYXQsIHN0YWdlLCB0aGUgZmluZGluZyBjb3VudHMg4oCUIG5ldmVyIHRoZSBmaW5kaW5ncyB0aGVtc2VsdmVzKS5cbiAgJ3BpcGVsaW5lLnBsdWdpbi51cGdyYWRlZCcsXG4gICdwaXBlbGluZS5zZWN1cml0eV9yZXBvcnQudXBsb2FkJyxcbl0gYXMgY29uc3Q7XG5cbmV4cG9ydCB0eXBlIFJlbW90ZUF1ZGl0QWN0aW9uID0gdHlwZW9mIFJFTU9URV9BVURJVF9BQ1RJT05TW251bWJlcl07XG5cbi8qKiBXaGV0aGVyIGB2YWx1ZWAgaXMgYW4gYWN0aW9uIGEgcmVtb3RlIHNlcnZpY2UgbWF5IGVtaXQgKHRoZSBpbmdlc3QgYWxsb3ctbGlzdCkuICovXG5leHBvcnQgZnVuY3Rpb24gaXNSZW1vdGVBdWRpdEFjdGlvbih2YWx1ZTogc3RyaW5nKTogdmFsdWUgaXMgUmVtb3RlQXVkaXRBY3Rpb24ge1xuICByZXR1cm4gKFJFTU9URV9BVURJVF9BQ1RJT05TIGFzIHJlYWRvbmx5IHN0cmluZ1tdKS5pbmNsdWRlcyh2YWx1ZSk7XG59XG4iXX0=
|
|
@@ -6,7 +6,7 @@ export { isAllowedSpdxId, projectUrlProblem, validateCatalogField, findContractK
|
|
|
6
6
|
export { isAllowedAttachmentType, MessageTypeSchema, MessagePrioritySchema, MessageSentBySchema, MessageFilterSchema, MESSAGE_ATTACHMENT_MAX_BYTES, MESSAGE_ATTACHMENT_ALLOWED_MIME, MessageCreateSchema, MessageReplySchema, MessageEditSchema, MessageHideSchema, MessageBulkIdsSchema, MessageBulkReadSchema, MESSAGE_BULK_MAX_IDS, } from './message-schemas.js';
|
|
7
7
|
export * from './ai-schemas.js';
|
|
8
8
|
export { validate, validateQuery, validateBody, } from './middleware.js';
|
|
9
|
-
export { isValidEgressHost, checkPluginSpec, checkPluginConfig, pluginSpecRequiredFieldsProblem, PLUGIN_TYPES, PLUGIN_COMPUTE_TYPES, type PluginBuildType, PLUGIN_NAME_PATTERN, PLUGIN_VERSION_PATTERN, type PluginSpecInput, type PackageCheck, } from './plugin-spec-schema.js';
|
|
9
|
+
export { isValidEgressHost, checkPluginSpec, checkPluginConfig, pluginSpecRequiredFieldsProblem, PLUGIN_TYPES, STEP_PLUGIN_TYPES, PluginToolchainSchema, type PluginToolchain, TOOLCHAIN_METADATA_PREFIX, toolchainMetadata, toolchainFromMetadata, PLUGIN_SOURCE_DIGEST_PATTERN, PLUGIN_COMPUTE_TYPES, type PluginBuildType, PLUGIN_NAME_PATTERN, PLUGIN_VERSION_PATTERN, type PluginSpecInput, type PackageCheck, } from './plugin-spec-schema.js';
|
|
10
10
|
export { stripInlineMarkdown, readmeTitle, readmeFirstParagraph, firstSentence, detectCatalogMetadata, resolveCatalogMetadata, acceptAllCatalogMetadata, parseCatalogEdits, parseCatalogEditsPart, type DetectedField, type CatalogSpecFields, type ResolvedCatalog, } from './plugin-catalog-detect.js';
|
|
11
11
|
export { parseLabelArgs, parseDockerfile, OCI_LABELS, } from './dockerfile-static.js';
|
|
12
12
|
export { isPluginTemplatableField, checkPluginTemplates, formatPluginTemplateIssue, PLUGIN_TEMPLATE_SCOPE_ROOTS, type PluginTemplateEngine, type PluginTemplateIssue, } from './plugin-template-contract.js';
|
package/lib/validation/index.js
CHANGED
|
@@ -8,7 +8,7 @@ export { isAllowedSpdxId, projectUrlProblem, validateCatalogField, findContractK
|
|
|
8
8
|
export { isAllowedAttachmentType, MessageTypeSchema, MessagePrioritySchema, MessageSentBySchema, MessageFilterSchema, MESSAGE_ATTACHMENT_MAX_BYTES, MESSAGE_ATTACHMENT_ALLOWED_MIME, MessageCreateSchema, MessageReplySchema, MessageEditSchema, MessageHideSchema, MessageBulkIdsSchema, MessageBulkReadSchema, MESSAGE_BULK_MAX_IDS, } from './message-schemas.js';
|
|
9
9
|
export * from './ai-schemas.js';
|
|
10
10
|
export { validate, validateQuery, validateBody, } from './middleware.js';
|
|
11
|
-
export { isValidEgressHost, checkPluginSpec, checkPluginConfig, pluginSpecRequiredFieldsProblem, PLUGIN_TYPES, PLUGIN_COMPUTE_TYPES, PLUGIN_NAME_PATTERN, PLUGIN_VERSION_PATTERN, } from './plugin-spec-schema.js';
|
|
11
|
+
export { isValidEgressHost, checkPluginSpec, checkPluginConfig, pluginSpecRequiredFieldsProblem, PLUGIN_TYPES, STEP_PLUGIN_TYPES, PluginToolchainSchema, TOOLCHAIN_METADATA_PREFIX, toolchainMetadata, toolchainFromMetadata, PLUGIN_SOURCE_DIGEST_PATTERN, PLUGIN_COMPUTE_TYPES, PLUGIN_NAME_PATTERN, PLUGIN_VERSION_PATTERN, } from './plugin-spec-schema.js';
|
|
12
12
|
export { stripInlineMarkdown, readmeTitle, readmeFirstParagraph, firstSentence, detectCatalogMetadata, resolveCatalogMetadata, acceptAllCatalogMetadata, parseCatalogEdits, parseCatalogEditsPart, } from './plugin-catalog-detect.js';
|
|
13
13
|
export { parseLabelArgs, parseDockerfile, OCI_LABELS, } from './dockerfile-static.js';
|
|
14
14
|
export { isPluginTemplatableField, checkPluginTemplates, formatPluginTemplateIssue, PLUGIN_TEMPLATE_SCOPE_ROOTS, } from './plugin-template-contract.js';
|
|
@@ -16,4 +16,4 @@ export { lintPluginDockerfile, lintPluginSpec } from './plugin-lint.js';
|
|
|
16
16
|
export * from './plugin-base-images.js';
|
|
17
17
|
export { shannonEntropy, scanPluginSourceHeuristics, blockingHeuristics, HEURISTICS_MAX_FILE_BYTES, HEURISTICS_MAX_FINDINGS, } from './plugin-heuristics.js';
|
|
18
18
|
export { findConfusableName } from './plugin-name-confusable.js';
|
|
19
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
19
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy92YWxpZGF0aW9uL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLCtDQUErQztBQUMvQyxzQ0FBc0M7QUFFdEMsT0FBTyxFQUNMLGdCQUFnQixFQUNoQixjQUFjLEVBQ2Qsa0JBQWtCLEVBQ2xCLGdCQUFnQixHQUNqQixNQUFNLHFCQUFxQixDQUFDO0FBQzdCLGNBQWMsdUJBQXVCLENBQUM7QUFDdEMsT0FBTyxFQUNMLDRCQUE0QixFQUM1Qiw0QkFBNEIsRUFDNUIsNEJBQTRCLEVBQzVCLHlCQUF5QixHQUMxQixNQUFNLGdDQUFnQyxDQUFDO0FBQ3hDLGNBQWMscUJBQXFCLENBQUM7QUFDcEMsT0FBTyxFQUNMLGVBQWUsRUFDZixpQkFBaUIsRUFDakIsb0JBQW9CLEVBQ3BCLGdCQUFnQixFQUNoQixtQkFBbUIsRUFDbkIsZ0JBQWdCLEVBQ2hCLHdCQUF3QixFQUV4QixzQkFBc0IsR0FDdkIsTUFBTSw4QkFBOEIsQ0FBQztBQUN0QyxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLGlCQUFpQixFQUNqQixxQkFBcUIsRUFDckIsbUJBQW1CLEVBQ25CLG1CQUFtQixFQUNuQiw0QkFBNEIsRUFDNUIsK0JBQStCLEVBQy9CLG1CQUFtQixFQUNuQixrQkFBa0IsRUFDbEIsaUJBQWlCLEVBQ2pCLGlCQUFpQixFQUNqQixvQkFBb0IsRUFDcEIscUJBQXFCLEVBQ3JCLG9CQUFvQixHQUNyQixNQUFNLHNCQUFzQixDQUFDO0FBQzlCLGNBQWMsaUJBQWlCLENBQUM7QUFDaEMsT0FBTyxFQUNMLFFBQVEsRUFDUixhQUFhLEVBQ2IsWUFBWSxHQUNiLE1BQU0saUJBQWlCLENBQUM7QUFDekIsT0FBTyxFQUNMLGlCQUFpQixFQUNqQixlQUFlLEVBQ2YsaUJBQWlCLEVBQ2pCLCtCQUErQixFQUMvQixZQUFZLEVBQ1osaUJBQWlCLEVBQ2pCLHFCQUFxQixFQUVyQix5QkFBeUIsRUFDekIsaUJBQWlCLEVBQ2pCLHFCQUFxQixFQUNyQiw0QkFBNEIsRUFDNUIsb0JBQW9CLEVBRXBCLG1CQUFtQixFQUNuQixzQkFBc0IsR0FHdkIsTUFBTSx5QkFBeUIsQ0FBQztBQUNqQyxPQUFPLEVBQ0wsbUJBQW1CLEVBQ25CLFdBQVcsRUFDWCxvQkFBb0IsRUFDcEIsYUFBYSxFQUNiLHFCQUFxQixFQUNyQixzQkFBc0IsRUFDdEIsd0JBQXdCLEVBQ3hCLGlCQUFpQixFQUNqQixxQkFBcUIsR0FJdEIsTUFBTSw0QkFBNEIsQ0FBQztBQUNwQyxPQUFPLEVBQ0wsY0FBYyxFQUNkLGVBQWUsRUFDZixVQUFVLEdBQ1gsTUFBTSx3QkFBd0IsQ0FBQztBQUNoQyxPQUFPLEVBQ0wsd0JBQXdCLEVBQ3hCLG9CQUFvQixFQUNwQix5QkFBeUIsRUFDekIsMkJBQTJCLEdBRzVCLE1BQU0sK0JBQStCLENBQUM7QUFDdkMsT0FBTyxFQUFFLG9CQUFvQixFQUFFLGNBQWMsRUFBMEIsTUFBTSxrQkFBa0IsQ0FBQztBQUNoRyxjQUFjLHlCQUF5QixDQUFDO0FBQ3hDLE9BQU8sRUFDTCxjQUFjLEVBQ2QsMEJBQTBCLEVBQzFCLGtCQUFrQixFQUtsQix5QkFBeUIsRUFDekIsdUJBQXVCLEdBQ3hCLE1BQU0sd0JBQXdCLENBQUM7QUFDaEMsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sNkJBQTZCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgMjAyNiBQaXBlbGluZSBCdWlsZGVyIENvbnRyaWJ1dG9yc1xuLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjBcblxuZXhwb3J0IHtcbiAgVmlzaWJpbGl0eVNjaGVtYSxcbiAgTUFYX1BBR0VfTElNSVQsXG4gIERFRkFVTFRfUEFHRV9MSU1JVCxcbiAgVVVJRFByZWZpeFNjaGVtYSxcbn0gZnJvbSAnLi9jb21tb24tc2NoZW1hcy5qcyc7XG5leHBvcnQgKiBmcm9tICcuL3BpcGVsaW5lLXNjaGVtYXMuanMnO1xuZXhwb3J0IHtcbiAgUGlwZWxpbmVUZW1wbGF0ZUZpbHRlclNjaGVtYSxcbiAgUGlwZWxpbmVUZW1wbGF0ZUNyZWF0ZVNjaGVtYSxcbiAgUGlwZWxpbmVUZW1wbGF0ZVVwZGF0ZVNjaGVtYSxcbiAgSW5zdGFudGlhdGVUZW1wbGF0ZVNjaGVtYSxcbn0gZnJvbSAnLi9waXBlbGluZS10ZW1wbGF0ZS1zY2hlbWFzLmpzJztcbmV4cG9ydCAqIGZyb20gJy4vcGx1Z2luLXNjaGVtYXMuanMnO1xuZXhwb3J0IHtcbiAgaXNBbGxvd2VkU3BkeElkLFxuICBwcm9qZWN0VXJsUHJvYmxlbSxcbiAgdmFsaWRhdGVDYXRhbG9nRmllbGQsXG4gIGZpbmRDb250cmFjdEtleXMsXG4gIGNvbnRyYWN0S2V5c01lc3NhZ2UsXG4gIElDT05fS0VZX1BBVFRFUk4sXG4gIFBsdWdpbkNhdGFsb2dFZGl0c1NjaGVtYSxcbiAgdHlwZSBQbHVnaW5DYXRhbG9nRWRpdHMsXG4gIFBMVUdJTl9DT05UUkFDVF9GSUVMRFMsXG59IGZyb20gJy4vcGx1Z2luLWNhdGFsb2ctbWV0YWRhdGEuanMnO1xuZXhwb3J0IHtcbiAgaXNBbGxvd2VkQXR0YWNobWVudFR5cGUsXG4gIE1lc3NhZ2VUeXBlU2NoZW1hLFxuICBNZXNzYWdlUHJpb3JpdHlTY2hlbWEsXG4gIE1lc3NhZ2VTZW50QnlTY2hlbWEsXG4gIE1lc3NhZ2VGaWx0ZXJTY2hlbWEsXG4gIE1FU1NBR0VfQVRUQUNITUVOVF9NQVhfQllURVMsXG4gIE1FU1NBR0VfQVRUQUNITUVOVF9BTExPV0VEX01JTUUsXG4gIE1lc3NhZ2VDcmVhdGVTY2hlbWEsXG4gIE1lc3NhZ2VSZXBseVNjaGVtYSxcbiAgTWVzc2FnZUVkaXRTY2hlbWEsXG4gIE1lc3NhZ2VIaWRlU2NoZW1hLFxuICBNZXNzYWdlQnVsa0lkc1NjaGVtYSxcbiAgTWVzc2FnZUJ1bGtSZWFkU2NoZW1hLFxuICBNRVNTQUdFX0JVTEtfTUFYX0lEUyxcbn0gZnJvbSAnLi9tZXNzYWdlLXNjaGVtYXMuanMnO1xuZXhwb3J0ICogZnJvbSAnLi9haS1zY2hlbWFzLmpzJztcbmV4cG9ydCB7XG4gIHZhbGlkYXRlLFxuICB2YWxpZGF0ZVF1ZXJ5LFxuICB2YWxpZGF0ZUJvZHksXG59IGZyb20gJy4vbWlkZGxld2FyZS5qcyc7XG5leHBvcnQge1xuICBpc1ZhbGlkRWdyZXNzSG9zdCxcbiAgY2hlY2tQbHVnaW5TcGVjLFxuICBjaGVja1BsdWdpbkNvbmZpZyxcbiAgcGx1Z2luU3BlY1JlcXVpcmVkRmllbGRzUHJvYmxlbSxcbiAgUExVR0lOX1RZUEVTLFxuICBTVEVQX1BMVUdJTl9UWVBFUyxcbiAgUGx1Z2luVG9vbGNoYWluU2NoZW1hLFxuICB0eXBlIFBsdWdpblRvb2xjaGFpbixcbiAgVE9PTENIQUlOX01FVEFEQVRBX1BSRUZJWCxcbiAgdG9vbGNoYWluTWV0YWRhdGEsXG4gIHRvb2xjaGFpbkZyb21NZXRhZGF0YSxcbiAgUExVR0lOX1NPVVJDRV9ESUdFU1RfUEFUVEVSTixcbiAgUExVR0lOX0NPTVBVVEVfVFlQRVMsXG4gIHR5cGUgUGx1Z2luQnVpbGRUeXBlLFxuICBQTFVHSU5fTkFNRV9QQVRURVJOLFxuICBQTFVHSU5fVkVSU0lPTl9QQVRURVJOLFxuICB0eXBlIFBsdWdpblNwZWNJbnB1dCxcbiAgdHlwZSBQYWNrYWdlQ2hlY2ssXG59IGZyb20gJy4vcGx1Z2luLXNwZWMtc2NoZW1hLmpzJztcbmV4cG9ydCB7XG4gIHN0cmlwSW5saW5lTWFya2Rvd24sXG4gIHJlYWRtZVRpdGxlLFxuICByZWFkbWVGaXJzdFBhcmFncmFwaCxcbiAgZmlyc3RTZW50ZW5jZSxcbiAgZGV0ZWN0Q2F0YWxvZ01ldGFkYXRhLFxuICByZXNvbHZlQ2F0YWxvZ01ldGFkYXRhLFxuICBhY2NlcHRBbGxDYXRhbG9nTWV0YWRhdGEsXG4gIHBhcnNlQ2F0YWxvZ0VkaXRzLFxuICBwYXJzZUNhdGFsb2dFZGl0c1BhcnQsXG4gIHR5cGUgRGV0ZWN0ZWRGaWVsZCxcbiAgdHlwZSBDYXRhbG9nU3BlY0ZpZWxkcyxcbiAgdHlwZSBSZXNvbHZlZENhdGFsb2csXG59IGZyb20gJy4vcGx1Z2luLWNhdGFsb2ctZGV0ZWN0LmpzJztcbmV4cG9ydCB7XG4gIHBhcnNlTGFiZWxBcmdzLFxuICBwYXJzZURvY2tlcmZpbGUsXG4gIE9DSV9MQUJFTFMsXG59IGZyb20gJy4vZG9ja2VyZmlsZS1zdGF0aWMuanMnO1xuZXhwb3J0IHtcbiAgaXNQbHVnaW5UZW1wbGF0YWJsZUZpZWxkLFxuICBjaGVja1BsdWdpblRlbXBsYXRlcyxcbiAgZm9ybWF0UGx1Z2luVGVtcGxhdGVJc3N1ZSxcbiAgUExVR0lOX1RFTVBMQVRFX1NDT1BFX1JPT1RTLFxuICB0eXBlIFBsdWdpblRlbXBsYXRlRW5naW5lLFxuICB0eXBlIFBsdWdpblRlbXBsYXRlSXNzdWUsXG59IGZyb20gJy4vcGx1Z2luLXRlbXBsYXRlLWNvbnRyYWN0LmpzJztcbmV4cG9ydCB7IGxpbnRQbHVnaW5Eb2NrZXJmaWxlLCBsaW50UGx1Z2luU3BlYywgdHlwZSBQbHVnaW5MaW50RmluZGluZyB9IGZyb20gJy4vcGx1Z2luLWxpbnQuanMnO1xuZXhwb3J0ICogZnJvbSAnLi9wbHVnaW4tYmFzZS1pbWFnZXMuanMnO1xuZXhwb3J0IHtcbiAgc2hhbm5vbkVudHJvcHksXG4gIHNjYW5QbHVnaW5Tb3VyY2VIZXVyaXN0aWNzLFxuICBibG9ja2luZ0hldXJpc3RpY3MsXG4gIHR5cGUgSGV1cmlzdGljU2V2ZXJpdHksXG4gIHR5cGUgSGV1cmlzdGljRmluZGluZyxcbiAgdHlwZSBIZXVyaXN0aWNzUmVwb3J0LFxuICB0eXBlIEhldXJpc3RpY3NJbnB1dEZpbGUsXG4gIEhFVVJJU1RJQ1NfTUFYX0ZJTEVfQllURVMsXG4gIEhFVVJJU1RJQ1NfTUFYX0ZJTkRJTkdTLFxufSBmcm9tICcuL3BsdWdpbi1oZXVyaXN0aWNzLmpzJztcbmV4cG9ydCB7IGZpbmRDb25mdXNhYmxlTmFtZSB9IGZyb20gJy4vcGx1Z2luLW5hbWUtY29uZnVzYWJsZS5qcyc7XG4iXX0=
|