@workflow/cli 5.0.0-beta.46 → 5.0.0-beta.48
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/commands/cancel.d.ts +10 -1
- package/dist/commands/cancel.d.ts.map +1 -1
- package/dist/commands/cancel.js +20 -7
- package/dist/commands/inspect-flag-forwarding.test.d.ts +2 -0
- package/dist/commands/inspect-flag-forwarding.test.d.ts.map +1 -0
- package/dist/commands/inspect-flag-forwarding.test.js +121 -0
- package/dist/commands/inspect-flag-scope.test.d.ts +2 -0
- package/dist/commands/inspect-flag-scope.test.d.ts.map +1 -0
- package/dist/commands/inspect-flag-scope.test.js +161 -0
- package/dist/commands/inspect.d.ts +13 -1
- package/dist/commands/inspect.d.ts.map +1 -1
- package/dist/commands/inspect.js +70 -10
- package/dist/commands/start.d.ts +1 -1
- package/dist/commands/web.d.ts +1 -1
- package/dist/lib/bulk-cancel.d.ts +15 -2
- package/dist/lib/bulk-cancel.d.ts.map +1 -1
- package/dist/lib/bulk-cancel.js +49 -18
- package/dist/lib/bulk-cancel.test.js +80 -8
- package/dist/lib/config/types.d.ts +6 -1
- package/dist/lib/config/types.d.ts.map +1 -1
- package/dist/lib/config/types.js +1 -1
- package/dist/lib/inspect/attribute-filter.d.ts +15 -0
- package/dist/lib/inspect/attribute-filter.d.ts.map +1 -0
- package/dist/lib/inspect/attribute-filter.js +51 -0
- package/dist/lib/inspect/attribute-filter.test.d.ts +2 -0
- package/dist/lib/inspect/attribute-filter.test.d.ts.map +1 -0
- package/dist/lib/inspect/attribute-filter.test.js +65 -0
- package/dist/lib/inspect/errors.d.ts +28 -0
- package/dist/lib/inspect/errors.d.ts.map +1 -1
- package/dist/lib/inspect/errors.js +59 -1
- package/dist/lib/inspect/errors.test.d.ts +2 -0
- package/dist/lib/inspect/errors.test.d.ts.map +1 -0
- package/dist/lib/inspect/errors.test.js +48 -0
- package/dist/lib/inspect/flag-bounds.d.ts +57 -0
- package/dist/lib/inspect/flag-bounds.d.ts.map +1 -0
- package/dist/lib/inspect/flag-bounds.js +112 -0
- package/dist/lib/inspect/flag-bounds.test.d.ts +2 -0
- package/dist/lib/inspect/flag-bounds.test.d.ts.map +1 -0
- package/dist/lib/inspect/flag-bounds.test.js +126 -0
- package/dist/lib/inspect/flags.d.ts +1 -1
- package/dist/lib/inspect/flags.d.ts.map +1 -1
- package/dist/lib/inspect/flags.js +5 -2
- package/dist/lib/inspect/hydration.d.ts.map +1 -1
- package/dist/lib/inspect/hydration.js +2 -1
- package/dist/lib/inspect/output.d.ts +10 -0
- package/dist/lib/inspect/output.d.ts.map +1 -1
- package/dist/lib/inspect/output.js +138 -24
- package/dist/lib/inspect/output.test.js +223 -2
- package/package.json +13 -13
|
@@ -104,6 +104,7 @@ const ERROR_REVIVER_KEYS = [
|
|
|
104
104
|
'ReferenceError',
|
|
105
105
|
'RetryableError',
|
|
106
106
|
'RuntimeDecryptionError',
|
|
107
|
+
'StreamError',
|
|
107
108
|
'SyntaxError',
|
|
108
109
|
'TypeError',
|
|
109
110
|
'URIError',
|
|
@@ -345,4 +346,4 @@ export async function hydrateResourceIO(resource, keyResolver) {
|
|
|
345
346
|
// Post-process: swap encrypted Uint8Arrays and expired stubs for CLI-styled objects
|
|
346
347
|
return replaceEncryptedAndExpiredWithRef(hydrated);
|
|
347
348
|
}
|
|
348
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaHlkcmF0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xpYi9pbnNwZWN0L2h5ZHJhdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7R0FLRztBQUVILE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDcEMsT0FBTyxFQUFFLGlCQUFpQixFQUFFLFlBQVksRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQy9FLE9BQU8sRUFDTCxnQkFBZ0IsRUFDaEIsZ0JBQWdCLEVBQ2hCLGlCQUFpQixJQUFJLHdCQUF3QixFQUM3QyxlQUFlLEVBQ2YsYUFBYSxFQUNiLFFBQVEsRUFDUixxQkFBcUIsRUFFckIsdUJBQXVCLEdBQ3hCLE1BQU0scUNBQXFDLENBQUM7QUFDN0MsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzVELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3hELE9BQU8sS0FBSyxNQUFNLE9BQU8sQ0FBQztBQVcxQixvREFBb0Q7QUFDcEQsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixnQkFBZ0IsRUFDaEIscUJBQXFCLEVBQ3JCLGdCQUFnQixFQUNoQixrQkFBa0IsRUFDbEIsZUFBZSxFQUNmLFVBQVUsRUFDVixXQUFXLEVBRVgsZUFBZSxFQUVmLFVBQVUsR0FDWCxNQUFNLHFDQUFxQyxDQUFDO0FBRTdDLDhFQUE4RTtBQUM5RSwyQ0FBMkM7QUFDM0MsOEVBQThFO0FBRTlFOzs7R0FHRztBQUNILE1BQU0sbUJBQW9CLFNBQVEsZ0JBQWdCO0lBQ2hELENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUNkLE1BQWMsRUFDZCxPQUFtRDtRQUVuRCxNQUFNLE9BQU8sR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxFQUFFLEdBQUcsT0FBTyxFQUFFLEtBQUssRUFBRSxPQUFPLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQztR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aUMsQ0FBQyxRQUFRLENBQUMsQ0FBQztBQUNyRCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBDTEktc3BlY2lmaWMgaHlkcmF0aW9uIGZvciBvMTF5IGRpc3BsYXkuXG4gKlxuICogTm9kZS5qcyByZXZpdmVycyB0aGF0IHVzZSBgQnVmZmVyLmZyb20oKWAgZm9yIGJhc2U2NCBkZWNvZGluZyBhbmQgYWRkXG4gKiBgdXRpbC5pbnNwZWN0LmN1c3RvbWAgdG8gQ2xhc3NJbnN0YW5jZVJlZiBmb3IgcHJldHR5IENMSSBvdXRwdXQuXG4gKi9cblxuaW1wb3J0IHsgaW5zcGVjdCB9IGZyb20gJ25vZGU6dXRpbCc7XG5pbXBvcnQgeyBnZXRDb21tb25SZXZpdmVycywgbWF5YmVEZWNyeXB0IH0gZnJvbSAnQHdvcmtmbG93L2NvcmUvc2VyaWFsaXphdGlvbic7XG5pbXBvcnQge1xuICBDbGFzc0luc3RhbmNlUmVmLFxuICBleHRyYWN0Q2xhc3NOYW1lLFxuICBoeWRyYXRlUmVzb3VyY2VJTyBhcyBoeWRyYXRlUmVzb3VyY2VJT0dlbmVyaWMsXG4gIGlzRW5jcnlwdGVkRGF0YSxcbiAgaXNFeHBpcmVkU3R1YixcbiAgaXNSdW5SZWYsXG4gIG9ic2VydmFiaWxpdHlSZXZpdmVycyxcbiAgdHlwZSBSZXZpdmVycyxcbiAgc2VyaWFsaXplZEluc3RhbmNlVG9SZWYsXG59IGZyb20gJ0B3b3JrZmxvdy9jb3JlL3NlcmlhbGl6YXRpb24tZm9ybWF0JztcbmltcG9ydCB7IHBhcnNlQ2xhc3NOYW1lIH0gZnJvbSAnQHdvcmtmbG93L3V0aWxzL3BhcnNlLW5hbWUnO1xuaW1wb3J0IHsgZ2V0RXZlbnREYXRhUmVmRmllbGRzIH0gZnJvbSAnQHdvcmtmbG93L3dvcmxkJztcbmltcG9ydCBjaGFsayBmcm9tICdjaGFsayc7XG5cbi8qKlxuICogQSBmdW5jdGlvbiB0aGF0IHJlc29sdmVzIGFuIGVuY3J5cHRpb24ga2V5IGZvciBhIHJ1biwgb3IgbnVsbCB0byBza2lwXG4gKiBkZWNyeXB0aW9uLiBBY2NlcHRzIGEgcnVuSWQ7IHRoZSByZXNvbHZlciBpcyByZXNwb25zaWJsZSBmb3IgbG9va2luZ1xuICogdXAgdGhlIFdvcmtmbG93UnVuIGludGVybmFsbHkgKHdpdGggY2FjaGluZykgaWYgdGhlIFdvcmxkIG5lZWRzIGl0LlxuICovXG5leHBvcnQgdHlwZSBFbmNyeXB0aW9uS2V5UmVzb2x2ZXIgPVxuICB8ICgocnVuSWQ6IHN0cmluZykgPT4gUHJvbWlzZTxVaW50OEFycmF5IHwgdW5kZWZpbmVkPilcbiAgfCBudWxsO1xuXG4vLyBSZS1leHBvcnQgdHlwZXMgYW5kIHV0aWxpdGllcyB0aGF0IGNvbnN1bWVycyBuZWVkXG5leHBvcnQge1xuICBDTEFTU19JTlNUQU5DRV9SRUZfVFlQRSxcbiAgQ2xhc3NJbnN0YW5jZVJlZixcbiAgRU5DUllQVEVEX1BMQUNFSE9MREVSLFxuICBleHRyYWN0U3RyZWFtSWRzLFxuICBpc0NsYXNzSW5zdGFuY2VSZWYsXG4gIGlzRW5jcnlwdGVkRGF0YSxcbiAgaXNTdHJlYW1JZCxcbiAgaXNTdHJlYW1SZWYsXG4gIHR5cGUgUmV2aXZlcnMsXG4gIFNUUkVBTV9SRUZfVFlQRSxcbiAgdHlwZSBTdHJlYW1SZWYsXG4gIHRydW5jYXRlSWQsXG59IGZyb20gJ0B3b3JrZmxvdy9jb3JlL3NlcmlhbGl6YXRpb24tZm9ybWF0JztcblxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBDTEkgQ2xhc3NJbnN0YW5jZVJlZiB3aXRoIGluc3BlY3QuY3VzdG9tXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuLyoqXG4gKiBFeHRlbmRlZCBDbGFzc0luc3RhbmNlUmVmIHdpdGggTm9kZS5qcyBgdXRpbC5pbnNwZWN0LmN1c3RvbWAgZm9yXG4gKiBwcmV0dHkgQ0xJIG91dHB1dDogYENsYXNzTmFtZUBmaWxlbmFtZSB7IC4uLmRhdGEgfWBcbiAqL1xuY2xhc3MgQ0xJQ2xhc3NJbnN0YW5jZVJlZiBleHRlbmRzIENsYXNzSW5zdGFuY2VSZWYge1xuICBbaW5zcGVjdC5jdXN0b21dKFxuICAgIF9kZXB0aDogbnVtYmVyLFxuICAgIG9wdGlvbnM6IGltcG9ydCgnbm9kZTp1dGlsJykuSW5zcGVjdE9wdGlvbnNTdHlsaXplZFxuICApOiBzdHJpbmcge1xuICAgIGNvbnN0IGRhdGFTdHIgPSBpbnNwZWN0KHRoaXMuZGF0YSwgeyAuLi5vcHRpb25zLCBkZXB0aDogb3B0aW9ucy5kZXB0aCB9KTtcbiAgICBjb25zdCBwYXJzZWQgPSBwYXJzZUNsYXNzTmFtZSh0aGlzLmNsYXNzSWQpO1xuICAgIGNvbnN0IG1vZHVsZVNwZWNpZmllciA9IHBhcnNlZD8ubW9kdWxlU3BlY2lmaWVyID8/IHRoaXMuY2xhc3NJZDtcbiAgICBjb25zdCBmaWxlTmFtZSA9IG1vZHVsZVNwZWNpZmllci5zcGxpdCgnLycpLnBvcCgpID8/IG1vZHVsZVNwZWNpZmllcjtcbiAgICBjb25zdCBzdHlsZWRGaWxlTmFtZSA9IG9wdGlvbnMuc3R5bGl6ZVxuICAgICAgPyBvcHRpb25zLnN0eWxpemUoYEAke2ZpbGVOYW1lfWAsICd1bmRlZmluZWQnKVxuICAgICAgOiBgQCR7ZmlsZU5hbWV9YDtcbiAgICByZXR1cm4gYCR7dGhpcy5jbGFzc05hbWV9JHtzdHlsZWRGaWxlTmFtZX0gJHtkYXRhU3RyfWA7XG4gIH1cbn1cblxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBDTEkgZW5jcnlwdGVkIGRhdGEgcGxhY2Vob2xkZXIgd2l0aCBjdXN0b20gaW5zcGVjdFxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbi8qKlxuICogUGxhY2Vob2xkZXIgb2JqZWN0IGZvciBlbmNyeXB0ZWQgZGF0YSBmaWVsZHMgaW4gQ0xJIG91dHB1dC5cbiAqXG4gKiBVc2VzIGB1dGlsLmluc3BlY3QuY3VzdG9tYCB0byByZW5kZXIgYXMgYSBzdHlsZWQsIHVucXVvdGVkIHN0cmluZ1xuICogKGUuZy4sIGRpbSB5ZWxsb3cgXCLwn5SSIEVuY3J5cHRlZFwiKSBpbnN0ZWFkIG9mIGEgcGxhaW4gcXVvdGVkIHN0cmluZy5cbiAqIEFsc28gcHJvdmlkZXMgYHRvSlNPTigpYCBmb3IgYC0tanNvbmAgb3V0cHV0LlxuICovXG5jbGFzcyBFbmNyeXB0ZWREYXRhUmVmIHtcbiAgW2luc3BlY3QuY3VzdG9tXSgpOiBzdHJpbmcge1xuICAgIHJldHVybiBjaGFsay5kaW0ueWVsbG93KCdcXHV7MUY1MTJ9IEVuY3J5cHRlZCcpO1xuICB9XG5cbiAgdG9KU09OKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuICdcXHV7MUY1MTJ9IEVuY3J5cHRlZCc7XG4gIH1cblxuICB0b1N0cmluZygpOiBzdHJpbmcge1xuICAgIHJldHVybiAnXFx1ezFGNTEyfSBFbmNyeXB0ZWQnO1xuICB9XG59XG5cbi8qKiBTaW5nbGV0b24gZW5jcnlwdGVkIGRhdGEgcGxhY2Vob2xkZXIgZm9yIENMSSBkaXNwbGF5ICovXG5jb25zdCBFTkNSWVBURURfUkVGID0gbmV3IEVuY3J5cHRlZERhdGFSZWYoKTtcblxuLyoqIENoZWNrIGlmIGEgdmFsdWUgaXMgYW4gRW5jcnlwdGVkRGF0YVJlZiAoZm9yIGN1c3RvbSB0YWJsZSBmb3JtYXR0aW5nIGluIENMSSkgKi9cbmV4cG9ydCBmdW5jdGlvbiBpc0VuY3J5cHRlZFJlZih2YWx1ZTogdW5rbm93bik6IHZhbHVlIGlzIEVuY3J5cHRlZERhdGFSZWYge1xuICByZXR1cm4gdmFsdWUgaW5zdGFuY2VvZiBFbmNyeXB0ZWREYXRhUmVmO1xufVxuXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIENMSSBleHBpcmVkIGRhdGEgcGxhY2Vob2xkZXIgd2l0aCBjdXN0b20gaW5zcGVjdFxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbi8qKlxuICogUGxhY2Vob2xkZXIgb2JqZWN0IGZvciBleHBpcmVkIGRhdGEgZmllbGRzIGluIENMSSBvdXRwdXQuXG4gKlxuICogVXNlcyBgdXRpbC5pbnNwZWN0LmN1c3RvbWAgdG8gcmVuZGVyIGFzIGEgc3R5bGVkLCB1bnF1b3RlZCBzdHJpbmdcbiAqIChlLmcuLCBkaW0gZ3JheSBcIjxkYXRhIGV4cGlyZWQ+XCIpIGluc3RlYWQgb2YgYSByYXcgc3R1YiBvYmplY3QuXG4gKiBBbHNvIHByb3ZpZGVzIGB0b0pTT04oKWAgZm9yIGAtLWpzb25gIG91dHB1dC5cbiAqL1xuY2xhc3MgRXhwaXJlZERhdGFSZWYge1xuICBbaW5zcGVjdC5jdXN0b21dKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGNoYWxrLmdyYXkoJzxkYXRhIGV4cGlyZWQ+Jyk7XG4gIH1cblxuICB0b0pTT04oKTogc3RyaW5nIHtcbiAgICByZXR1cm4gJzxkYXRhIGV4cGlyZWQ+JztcbiAgfVxuXG4gIHRvU3RyaW5nKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuICc8ZGF0YSBleHBpcmVkPic7XG4gIH1cbn1cblxuLyoqIFNpbmdsZXRvbiBleHBpcmVkIGRhdGEgcGxhY2Vob2xkZXIgZm9yIENMSSBkaXNwbGF5ICovXG5jb25zdCBFWFBJUkVEX1JFRiA9IG5ldyBFeHBpcmVkRGF0YVJlZigpO1xuXG4vKiogQ2hlY2sgaWYgYSB2YWx1ZSBpcyBhbiBFeHBpcmVkRGF0YVJlZiAoZm9yIGN1c3RvbSB0YWJsZSBmb3JtYXR0aW5nIGluIENMSSkgKi9cbmV4cG9ydCBmdW5jdGlvbiBpc0V4cGlyZWRSZWYodmFsdWU6IHVua25vd24pOiB2YWx1ZSBpcyBFeHBpcmVkRGF0YVJlZiB7XG4gIHJldHVybiB2YWx1ZSBpbnN0YW5jZW9mIEV4cGlyZWREYXRhUmVmO1xufVxuXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIENMSSByZXZpdmVycyAoTm9kZS5qcywgdXNlcyBCdWZmZXIpXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuLyoqXG4gKiBUaGUgc2V0IG9mIHJlZHVjZXIga2V5cyB3aG9zZSBgZ2V0Q29tbW9uUmV2aXZlcnMoKWAgb3V0cHV0IHByb2R1Y2VzIGFcbiAqIG5hdGl2ZSBgRXJyb3JgIGluc3RhbmNlLiBXZSB3cmFwIGVhY2ggb2YgdGhlc2Ugd2l0aCBhbiBhZGRpdGlvbmFsXG4gKiBgdG9KU09OYCBhdHRhY2htZW50IGluIENMSSBtb2RlIChzZWUgYHdyYXBFcnJvclJldml2ZXJXaXRoVG9KU09OYCkuXG4gKi9cbmNvbnN0IEVSUk9SX1JFVklWRVJfS0VZUyA9IFtcbiAgJ0FnZ3JlZ2F0ZUVycm9yJyxcbiAgJ0RPTUV4Y2VwdGlvbicsXG4gICdFcnJvcicsXG4gICdFdmFsRXJyb3InLFxuICAnRmF0YWxFcnJvcicsXG4gICdIb29rQ29uZmxpY3RFcnJvcicsXG4gICdSYW5nZUVycm9yJyxcbiAgJ1JlZmVyZW5jZUVycm9yJyxcbiAgJ1JldHJ5YWJsZUVycm9yJyxcbiAgJ1J1bnRpbWVEZWNyeXB0aW9uRXJyb3InLFxuICAnU3ludGF4RXJyb3InLFxuICAnVHlwZUVycm9yJyxcbiAgJ1VSSUVycm9yJyxcbl0gYXMgY29uc3Q7XG5cbi8qKlxuICogV3JhcHMgYSBydW50aW1lIEVycm9yIHJldml2ZXIgc28gdGhhdCB0aGUgcHJvZHVjZWQgaW5zdGFuY2UgY2FycmllcyBhXG4gKiBub24tZW51bWVyYWJsZSBgdG9KU09OYCBtZXRob2QuIFRoZSBydW50aW1lIHJldml2ZXJzIHJldHVybiByZWFsIGBFcnJvcmBcbiAqIGluc3RhbmNlcyAoZ29vZCBmb3IgYHV0aWwuaW5zcGVjdGAsIGBpbnN0YW5jZW9mYCwgYHRvU3RyaW5nYCwgZXRjLiksIGJ1dFxuICogYEVycm9yLnByb3RvdHlwZWAncyBgbmFtZWAgLyBgbWVzc2FnZWAgLyBgc3RhY2tgIC8gYGNhdXNlYCBhcmVcbiAqIG5vbi1lbnVtZXJhYmxlIGFuZCB3b3VsZCBiZSBkcm9wcGVkIGJ5IGBKU09OLnN0cmluZ2lmeWAsIHdoaWNoIGlzIGhvd1xuICogdGhlIENMSSBlbWl0cyBpdHMgYC0tanNvbmAgb3V0cHV0LiBBZGRpbmcgYHRvSlNPTmAgKHdoaWNoIGBKU09OLnN0cmluZ2lmeWBcbiAqIGNhbGxzIGJ1dCBgdXRpbC5pbnNwZWN0YCBpZ25vcmVzKSBnaXZlcyB1cyB0aGUgYmVzdCBvZiBib3RoIHdvcmxkczpcbiAqIHJvdW5kLXRyaXBwZWQgZXJyb3JzIHJlbmRlciBjbGVhbmx5IGluIGJvdGggbW9kZXMgd2l0aG91dCB0aGVcbiAqIGRhdGEtdmVyc3VzLWRpc3BsYXkgdHJhZGVvZmYgdGhhdCBwbGFpbi1vYmplY3QgcmV2aXZlcnMgd291bGQgZm9yY2UuXG4gKlxuICogU3ViY2xhc3Mtc3BlY2lmaWMgZW51bWVyYWJsZSBmaWVsZHMgKGUuZy4gYFJldHJ5YWJsZUVycm9yLnJldHJ5QWZ0ZXJgLFxuICogYEFnZ3JlZ2F0ZUVycm9yLmVycm9yc2AsIGBGYXRhbEVycm9yLmZhdGFsYCkgYXJlIHBpY2tlZCB1cCBhdXRvbWF0aWNhbGx5XG4gKiB2aWEgYE9iamVjdC5hc3NpZ25gIGFmdGVyIHRoZSBiYXNlIGZpZWxkcywgc28gd2UgZG9uJ3QgaGF2ZSB0byBlbnVtZXJhdGVcbiAqIHRoZW0gcGVyLXN1YmNsYXNzLlxuICovXG5mdW5jdGlvbiB3cmFwRXJyb3JSZXZpdmVyV2l0aFRvSlNPTihcbiAgcmV2aXZlcjogKHZhbHVlOiBhbnkpID0+IHVua25vd25cbik6ICh2YWx1ZTogYW55KSA9PiB1bmtub3duIHtcbiAgcmV0dXJuICh2YWx1ZSkgPT4ge1xuICAgIGNvbnN0IHJlc3VsdCA9IHJldml2ZXIodmFsdWUpO1xuICAgIGlmICghKHJlc3VsdCBpbnN0YW5jZW9mIEVycm9yKSkgcmV0dXJuIHJlc3VsdDtcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkocmVzdWx0LCAndG9KU09OJywge1xuICAgICAgdmFsdWU6IGZ1bmN0aW9uICh0aGlzOiBFcnJvcikge1xuICAgICAgICBjb25zdCBqc29uOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiA9IHtcbiAgICAgICAgICBuYW1lOiB0aGlzLm5hbWUsXG4gICAgICAgICAgbWVzc2FnZTogdGhpcy5tZXNzYWdlLFxuICAgICAgICAgIHN0YWNrOiB0aGlzLnN0YWNrLFxuICAgICAgICB9O1xuICAgICAgICBpZiAoJ2NhdXNlJyBpbiB0aGlzKSB7XG4gICAgICAgICAganNvbi5jYXVzZSA9ICh0aGlzIGFzIHsgY2F1c2U6IHVua25vd24gfSkuY2F1c2U7XG4gICAgICAgIH1cbiAgICAgICAgLy8gUGljayB1cCBzdWJjbGFzcy1zcGVjaWZpYyBlbnVtZXJhYmxlIGZpZWxkcyAoZS5nLiBGYXRhbEVycm9yLmZhdGFsLFxuICAgICAgICAvLyBSZXRyeWFibGVFcnJvci5yZXRyeUFmdGVyLCBBZ2dyZWdhdGVFcnJvci5lcnJvcnMpLlxuICAgICAgICBPYmplY3QuYXNzaWduKGpzb24sIHRoaXMpO1xuICAgICAgICByZXR1cm4ganNvbjtcbiAgICAgIH0sXG4gICAgICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgICAgIHdyaXRhYmxlOiB0cnVlLFxuICAgICAgY29uZmlndXJhYmxlOiB0cnVlLFxuICAgIH0pO1xuICAgIHJldHVybiByZXN1bHQ7XG4gIH07XG59XG5cbi8qKlxuICogVGhlIHNldCBvZiByZXZpdmVycyB1c2VkIGJ5IENMSSBpbnNwZWN0IG91dHB1dC5cbiAqXG4gKiBCdWlsdCBvbiB0b3Agb2YgYGdldENvbW1vblJldml2ZXJzKClgIGZyb20gYEB3b3JrZmxvdy9jb3JlYCBzbyB0aGF0IHRoZVxuICogQ0xJIHN0YXlzIGluIHN5bmMgd2l0aCB0aGUgcnVudGltZSdzIHJldml2ZXIgc2V0IGF1dG9tYXRpY2FsbHkuIFdpdGhvdXRcbiAqIHRoaXMsIGV2ZXJ5IG5ldyByZXZpdmVyIGFkZGVkIHRvIGNvcmUgKGUuZy4gYEZhdGFsRXJyb3JgLFxuICogYFJldHJ5YWJsZUVycm9yYCwgdGhlIGJ1aWx0LWluIGBFcnJvcmAgc3ViY2xhc3Nlcykgd291bGQgc2lsZW50bHlcbiAqIGRpc2FwcGVhciBmcm9tIENMSSBvdXRwdXQ6IGRldmFsdWUgdGhyb3dzIFwiVW5rbm93biB0eXBlIFhcIiBmb3JcbiAqIHVucmVjb2duaXplZCByZWR1Y2VkIHR5cGVzLCBhbmQgYGh5ZHJhdGVSZXNvdXJjZUlPYCBzd2FsbG93cyB0aGF0IGVycm9yXG4gKiBhbmQgc3VyZmFjZXMgdGhlIHJhdyBgVWludDhBcnJheWAgcGF5bG9hZCB0byBjb25zdW1lcnMsIHdoaWNoIHRoZW5cbiAqIHNob3dzIHVwIGFzIGBzdGVwLmVycm9yYCAvIGBydW4uZXJyb3JgIGJ5dGUgZHVtcHMgaW5zdGVhZCBvZiB1c2FibGVcbiAqIGB7IG1lc3NhZ2UsIHN0YWNrLCDigKYgfWAgb2JqZWN0cy5cbiAqXG4gKiBPbiB0b3Agb2YgdGhlIGNvbW1vbiBzZXQgd2UgbGF5ZXI6XG4gKiAgIC0gQSBgdG9KU09OYCBzaGltIG9uIGVhY2ggRXJyb3IgcmV2aXZlciBzbyBub24tZW51bWVyYWJsZVxuICogICAgIGBFcnJvci5wcm90b3R5cGVgIGZpZWxkcyBzdXJ2aXZlIGBKU09OLnN0cmluZ2lmeWAgZm9yIGAtLWpzb25gIG91dHB1dFxuICogICAgIHdoaWxlIGxlYXZpbmcgYHV0aWwuaW5zcGVjdGAgcmVuZGVyaW5nIHVudG91Y2hlZFxuICogICAtIGBvYnNlcnZhYmlsaXR5UmV2aXZlcnNgIGZvciBzdHJlYW1zIC8gc3RlcCt3b3JrZmxvdyBmdW5jdGlvbiByZWZzXG4gKiAgIC0gQ0xJLXNwZWNpZmljIG92ZXJyaWRlcyB0aGF0IHByb2R1Y2UgZGlzcGxheS1mcmllbmRseSBwbGFjZWhvbGRlcnNcbiAqICAgICBmb3IgYENsYXNzYCAvIGBJbnN0YW5jZWAgKHRoZSBydW50aW1lIHZlcnNpb25zIG5lZWQgZnVsbCBjbGFzc1xuICogICAgIGlkZW50aXR5IHdoaWNoIHRoZSBDTEkgZG9lc24ndCBoYXZlIGFjY2VzcyB0bylcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldENMSVJldml2ZXJzKCk6IFJldml2ZXJzIHtcbiAgY29uc3QgYmFzZVJldml2ZXJzID0gZ2V0Q29tbW9uUmV2aXZlcnMoZ2xvYmFsVGhpcyk7XG4gIGNvbnN0IGVycm9yUmV2aXZlcnMgPSBPYmplY3QuZnJvbUVudHJpZXMoXG4gICAgRVJST1JfUkVWSVZFUl9LRVlTLmZsYXRNYXAoKGtleSkgPT4ge1xuICAgICAgY29uc3QgcmV2aXZlciA9IChiYXNlUmV2aXZlcnMgYXMgUmV2aXZlcnMpW2tleV07XG4gICAgICByZXR1cm4gcmV2aXZlciA/IFtba2V5LCB3cmFwRXJyb3JSZXZpdmVyV2l0aFRvSlNPTihyZXZpdmVyKV1dIDogW107XG4gICAgfSlcbiAgKTtcbiAgcmV0dXJuIHtcbiAgICAuLi5iYXNlUmV2aXZlcnMsXG4gICAgLi4uZXJyb3JSZXZpdmVycyxcbiAgICAvLyBPMTF5LXNwZWNpZmljIHJldml2ZXJzIChzdHJlYW1zLCBzdGVwIGZ1bmN0aW9ucyDihpIgZGlzcGxheSBvYmplY3RzKS5cbiAgICAuLi5vYnNlcnZhYmlsaXR5UmV2aXZlcnMsXG4gICAgLy8gTm9kZSBgUmVxdWVzdGAgLyBgUmVzcG9uc2VgIHJldml2ZXJzIHRoYXQgZG9uJ3QgcmVseSBvbiBydW5uaW5nIGFuXG4gICAgLy8gYWN0dWFsIGZldGNoIGhhbmRsZXIsIHVzZWQgdG8gcmVuZGVyIHJlcXVlc3QvcmVzcG9uc2UgSU8gaW5saW5lLlxuICAgIFJlcXVlc3Q6ICh2YWx1ZSkgPT4ge1xuICAgICAgLy8gYmlvbWUtaWdub3JlIGxpbnQvY29tcGxleGl0eS91c2VBcnJvd0Z1bmN0aW9uOiBhcnJvdyBmdW5jdGlvbnMgaGF2ZSBubyAucHJvdG90eXBlXG4gICAgICBjb25zdCBjdG9yID0geyBSZXF1ZXN0OiBmdW5jdGlvbiAoKSB7fSB9LlJlcXVlc3QhO1xuICAgICAgY29uc3Qgb2JqID0gT2JqZWN0LmNyZWF0ZShjdG9yLnByb3RvdHlwZSk7XG4gICAgICBPYmplY3QuYXNzaWduKG9iaiwge1xuICAgICAgICBtZXRob2Q6IHZhbHVlLm1ldGhvZCxcbiAgICAgICAgdXJsOiB2YWx1ZS51cmwsXG4gICAgICAgIGhlYWRlcnM6IG5ldyBIZWFkZXJzKHZhbHVlLmhlYWRlcnMpLFxuICAgICAgICBib2R5OiB2YWx1ZS5ib2R5LFxuICAgICAgICBkdXBsZXg6IHZhbHVlLmR1cGxleCxcbiAgICAgICAgLi4uKHZhbHVlLnJlc3BvbnNlV3JpdGFibGVcbiAgICAgICAgICA/IHsgcmVzcG9uc2VXcml0YWJsZTogdmFsdWUucmVzcG9uc2VXcml0YWJsZSB9XG4gICAgICAgICAgOiB7fSksXG4gICAgICB9KTtcbiAgICAgIHJldHVybiBvYmo7XG4gICAgfSxcbiAgICBSZXNwb25zZTogKHZhbHVlKSA9PiB7XG4gICAgICAvLyBiaW9tZS1pZ25vcmUgbGludC9jb21wbGV4aXR5L3VzZUFycm93RnVuY3Rpb246IGFycm93IGZ1bmN0aW9ucyBoYXZlIG5vIC5wcm90b3R5cGVcbiAgICAgIGNvbnN0IGN0b3IgPSB7IFJlc3BvbnNlOiBmdW5jdGlvbiAoKSB7fSB9LlJlc3BvbnNlITtcbiAgICAgIGNvbnN0IG9iaiA9IE9iamVjdC5jcmVhdGUoY3Rvci5wcm90b3R5cGUpO1xuICAgICAgT2JqZWN0LmFzc2lnbihvYmosIHtcbiAgICAgICAgc3RhdHVzOiB2YWx1ZS5zdGF0dXMsXG4gICAgICAgIHN0YXR1c1RleHQ6IHZhbHVlLnN0YXR1c1RleHQsXG4gICAgICAgIHVybDogdmFsdWUudXJsLFxuICAgICAgICBoZWFkZXJzOiBuZXcgSGVhZGVycyh2YWx1ZS5oZWFkZXJzKSxcbiAgICAgICAgYm9keTogdmFsdWUuYm9keSxcbiAgICAgICAgcmVkaXJlY3RlZDogdmFsdWUucmVkaXJlY3RlZCxcbiAgICAgICAgdHlwZTogdmFsdWUudHlwZSxcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIG9iajtcbiAgICB9LFxuICAgIC8vIENMSS1zcGVjaWZpYyBvdmVycmlkZXMgZm9yIGNsYXNzIGluc3RhbmNlcyB3aXRoIGluc3BlY3QuY3VzdG9tXG4gICAgQ2xhc3M6ICh2YWx1ZSkgPT4gYDxjbGFzczoke2V4dHJhY3RDbGFzc05hbWUodmFsdWUuY2xhc3NJZCl9PmAsXG4gICAgSW5zdGFuY2U6ICh2YWx1ZSkgPT4ge1xuICAgICAgLy8gUnVuIGluc3RhbmNlcyBhcmUgcmVuZGVyZWQgYXMgUnVuUmVmIGZvciBjbGlja2FibGUgcmVuZGVyaW5nXG4gICAgICBjb25zdCBydW5SZWYgPSBzZXJpYWxpemVkSW5zdGFuY2VUb1JlZih2YWx1ZSk7XG4gICAgICBpZiAoaXNSdW5SZWYocnVuUmVmKSkge1xuICAgICAgICByZXR1cm4gcnVuUmVmO1xuICAgICAgfVxuICAgICAgcmV0dXJuIG5ldyBDTElDbGFzc0luc3RhbmNlUmVmKFxuICAgICAgICBleHRyYWN0Q2xhc3NOYW1lKHZhbHVlLmNsYXNzSWQpLFxuICAgICAgICB2YWx1ZS5jbGFzc0lkLFxuICAgICAgICB2YWx1ZS5kYXRhXG4gICAgICApO1xuICAgIH0sXG4gIH07XG59XG5cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gUHJlLWJ1aWx0IENMSSByZXZpdmVycyAoY2FjaGVkKVxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbmxldCBjYWNoZWRSZXZpdmVyczogUmV2aXZlcnMgfCBudWxsID0gbnVsbDtcblxuZnVuY3Rpb24gZ2V0UmV2aXZlcnMoKTogUmV2aXZlcnMge1xuICBpZiAoIWNhY2hlZFJldml2ZXJzKSB7XG4gICAgY2FjaGVkUmV2aXZlcnMgPSBnZXRDTElSZXZpdmVycygpO1xuICB9XG4gIHJldHVybiBjYWNoZWRSZXZpdmVycztcbn1cblxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBEZWNyeXB0aW9uIGhlbHBlcnNcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4vKipcbiAqIFByZS1wcm9jZXNzIGEgcmVzb3VyY2UncyBkYXRhIGZpZWxkczogaWYgdGhlIHJlc29sdmVyIGlzIHByb3ZpZGVkIGFuZFxuICogdGhlIGZpZWxkIGlzIGVuY3J5cHRlZCwgZGVjcnlwdCBpdCBiZWZvcmUgZ2VuZXJpYyBoeWRyYXRpb24uXG4gKlxuICogVXNlcyBjb3JlJ3MgYG1heWJlRGVjcnlwdCgpYCB3aGljaCBoYW5kbGVzIHRoZSAnZW5jcicgcHJlZml4IHN0cmlwcGluZ1xuICogYW5kIEFFUy1HQ00gZGVjcnlwdGlvbiB0cmFuc3BhcmVudGx5LlxuICpcbiAqIFdoZW4gdGhlIHJlc29sdmVyIGlzIG51bGwgKG5vIC0tZGVjcnlwdCBmbGFnKSwgZW5jcnlwdGVkIGZpZWxkcyBwYXNzXG4gKiB0aHJvdWdoIGFzIFVpbnQ4QXJyYXkgYW5kIGFyZSByZXBsYWNlZCB3aXRoIEVuY3J5cHRlZERhdGFSZWYgaW4gcG9zdC1wcm9jZXNzaW5nLlxuICovXG5hc3luYyBmdW5jdGlvbiBtYXliZURlY3J5cHRGaWVsZHM8XG4gIFQgZXh0ZW5kcyB7XG4gICAgcnVuSWQ/OiBzdHJpbmc7XG4gICAgaW5wdXQ/OiBhbnk7XG4gICAgb3V0cHV0PzogYW55O1xuICAgIG1ldGFkYXRhPzogYW55O1xuICAgIGV2ZW50VHlwZT86IHN0cmluZztcbiAgICBldmVudERhdGE/OiBhbnk7XG4gIH0sXG4+KHJlc291cmNlOiBULCByZXNvbHZlcjogRW5jcnlwdGlvbktleVJlc29sdmVyKTogUHJvbWlzZTxUPiB7XG4gIGlmICghcmVzb2x2ZXIpIHJldHVybiByZXNvdXJjZTtcblxuICBjb25zdCBydW5JZCA9IChyZXNvdXJjZSBhcyBhbnkpLnJ1bklkIGFzIHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgaWYgKCFydW5JZCkgcmV0dXJuIHJlc291cmNlO1xuXG4gIGNvbnN0IHJlc3VsdCA9IHsgLi4ucmVzb3VyY2UgfTtcblxuICB0cnkge1xuICAgIGNvbnN0IHJhd0tleSA9IGF3YWl0IHJlc29sdmVyKHJ1bklkKTtcbiAgICAvLyBSZXNvbHZlIHRoZSBmdWxsIGtleSBjYXBhYmlsaXR5IHNvIGAtLWRlY3J5cHRgIGNhbiBvcGVuIHNlYWxlZFxuICAgIC8vICgnZW5jcCcpIHBheWxvYWRzIHRoYXQgb3RoZXIgcnVucyB3cm90ZSB0byB0aGlzIG9uZSwgbm90IGp1c3QgdGhlXG4gICAgLy8gcnVuJ3Mgb3duIHN5bW1ldHJpYyAoJ2VuY3InKSBwYXlsb2Fkcy5cbiAgICBjb25zdCB7IGRlcml2ZVJ1blBheWxvYWRLZXlzIH0gPSBhd2FpdCBpbXBvcnQoXG4gICAgICAnQHdvcmtmbG93L2NvcmUvc2VyaWFsaXphdGlvbidcbiAgICApO1xuICAgIGNvbnN0IGsgPSByYXdLZXkgPyBhd2FpdCBkZXJpdmVSdW5QYXlsb2FkS2V5cyhyYXdLZXkpIDogdW5kZWZpbmVkO1xuXG4gICAgLy8gRGVjcnlwdCBpbnB1dC9vdXRwdXQvZXJyb3IgZmllbGRzIChXb3JrZmxvd1J1biwgU3RlcClcbiAgICByZXN1bHQuaW5wdXQgPSBhd2FpdCBtYXliZURlY3J5cHQocmVzdWx0LmlucHV0LCBrKTtcbiAgICByZXN1bHQub3V0cHV0ID0gYXdhaXQgbWF5YmVEZWNyeXB0KHJlc3VsdC5vdXRwdXQsIGspO1xuICAgIChyZXN1bHQgYXMgYW55KS5lcnJvciA9IGF3YWl0IG1heWJlRGVjcnlwdCgocmVzdWx0IGFzIGFueSkuZXJyb3IsIGspO1xuXG4gICAgLy8gRGVjcnlwdCBtZXRhZGF0YSBmaWVsZCAoSG9vaylcbiAgICByZXN1bHQubWV0YWRhdGEgPSBhd2FpdCBtYXliZURlY3J5cHQocmVzdWx0Lm1ldGFkYXRhLCBrKTtcblxuICAgIC8vIERlY3J5cHQgZXZlbnREYXRhIGZpZWxkcyAoRXZlbnQpXG4gICAgaWYgKHJlc3VsdC5ldmVudERhdGEgJiYgdHlwZW9mIHJlc3VsdC5ldmVudERhdGEgPT09ICdvYmplY3QnKSB7XG4gICAgICBjb25zdCBldmVudERhdGEgPSB7IC4uLnJlc3VsdC5ldmVudERhdGEgfTtcbiAgICAgIGZvciAoY29uc3QgZmllbGQgb2YgZ2V0RXZlbnREYXRhUmVmRmllbGRzKHJlc3VsdC5ldmVudFR5cGUgPz8gJycpKSB7XG4gICAgICAgIGV2ZW50RGF0YVtmaWVsZF0gPSBhd2FpdCBtYXliZURlY3J5cHQoZXZlbnREYXRhW2ZpZWxkXSwgayk7XG4gICAgICB9XG4gICAgICByZXN1bHQuZXZlbnREYXRhID0gZXZlbnREYXRhO1xuICAgIH1cbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgY29uc3QgbWVzc2FnZSA9IGVyciBpbnN0YW5jZW9mIEVycm9yID8gZXJyLm1lc3NhZ2UgOiBTdHJpbmcoZXJyKTtcblxuICAgIC8vIElmIHRoZSBrZXkgZmV0Y2ggZmFpbGVkIGR1ZSB0byBhbiBIVFRQIGVycm9yIChlLmcuIDQyOSByYXRlIGxpbWl0LFxuICAgIC8vIDUwMCBzZXJ2ZXIgZXJyb3IpLCByZS10aHJvdyBzbyB0aGUgY2FsbGVyIHN1cmZhY2VzIGEgY2xlYXIgZmFpbHVyZVxuICAgIC8vIGluc3RlYWQgb2Ygc2lsZW50bHkgc2hvd2luZyBlbmNyeXB0ZWQgcGxhY2Vob2xkZXJzLlxuICAgIGlmIChtZXNzYWdlLmluY2x1ZGVzKCdIVFRQICcpKSB7XG4gICAgICB0aHJvdyBlcnI7XG4gICAgfVxuXG4gICAgLy8gRGVjcnlwdGlvbiBmYWlsZWQgKGJhZCBrZXksIGNvcnJ1cHRlZCBjaXBoZXJ0ZXh0LCBldGMuKSwgc28gZmFsbCBiYWNrXG4gICAgLy8gdG8gc2hvd2luZyBlbmNyeXB0ZWQgcGxhY2Vob2xkZXJzIGluc3RlYWQgb2YgY3Jhc2hpbmcgdGhlIENMSS5cbiAgICBjb25zdCB7IGxvZ2dlciB9ID0gYXdhaXQgaW1wb3J0KCcuLi9jb25maWcvbG9nLmpzJyk7XG4gICAgbG9nZ2VyLndhcm4oYERlY3J5cHRpb24gZmFpbGVkIGZvciByZXNvdXJjZSAke3J1bklkfTogJHttZXNzYWdlfWApO1xuICB9XG5cbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBQdWJsaWMgQVBJXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuLyoqIFJlcGxhY2UgYSBzaW5nbGUgZmllbGQgdmFsdWUgd2l0aCBhIGRpc3BsYXkgcmVmIGlmIGl0J3MgZW5jcnlwdGVkIG9yIGV4cGlyZWQuICovXG5mdW5jdGlvbiB0b0Rpc3BsYXlSZWYodmFsdWU6IHVua25vd24pOiB1bmtub3duIHtcbiAgaWYgKGlzRW5jcnlwdGVkRGF0YSh2YWx1ZSkpIHJldHVybiBFTkNSWVBURURfUkVGO1xuICBpZiAoaXNFeHBpcmVkU3R1Yih2YWx1ZSkpIHJldHVybiBFWFBJUkVEX1JFRjtcbiAgcmV0dXJuIHZhbHVlO1xufVxuXG4vKipcbiAqIFJlcGxhY2UgZW5jcnlwdGVkIFVpbnQ4QXJyYXkgdmFsdWVzIGFuZCBleHBpcmVkIHN0dWJzIHdpdGggc3R5bGVkXG4gKiByZWYgb2JqZWN0cyBpbiBrbm93biBkYXRhIGZpZWxkcyBmb3IgY3VzdG9tIGluc3BlY3QgcmVuZGVyaW5nLlxuICovXG5mdW5jdGlvbiByZXBsYWNlRW5jcnlwdGVkQW5kRXhwaXJlZFdpdGhSZWY8VD4ocmVzb3VyY2U6IFQpOiBUIHtcbiAgaWYgKCFyZXNvdXJjZSB8fCB0eXBlb2YgcmVzb3VyY2UgIT09ICdvYmplY3QnKSByZXR1cm4gcmVzb3VyY2U7XG4gIGNvbnN0IHIgPSByZXNvdXJjZSBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcbiAgY29uc3QgcmVzdWx0ID0geyAuLi5yIH07XG5cbiAgZm9yIChjb25zdCBrZXkgb2YgWydpbnB1dCcsICdvdXRwdXQnLCAnbWV0YWRhdGEnLCAnZXJyb3InXSkge1xuICAgIHJlc3VsdFtrZXldID0gdG9EaXNwbGF5UmVmKHJlc3VsdFtrZXldKTtcbiAgfVxuXG4gIGlmIChyZXN1bHQuZXZlbnREYXRhICYmIHR5cGVvZiByZXN1bHQuZXZlbnREYXRhID09PSAnb2JqZWN0Jykge1xuICAgIGNvbnN0IGVkID0geyAuLi4ocmVzdWx0LmV2ZW50RGF0YSBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPikgfTtcbiAgICBjb25zdCBldmVudFR5cGUgPVxuICAgICAgdHlwZW9mIHJlc3VsdC5ldmVudFR5cGUgPT09ICdzdHJpbmcnID8gcmVzdWx0LmV2ZW50VHlwZSA6ICcnO1xuICAgIGZvciAoY29uc3Qga2V5IG9mIGdldEV2ZW50RGF0YVJlZkZpZWxkcyhldmVudFR5cGUpKSB7XG4gICAgICBlZFtrZXldID0gdG9EaXNwbGF5UmVmKGVkW2tleV0pO1xuICAgIH1cbiAgICByZXN1bHQuZXZlbnREYXRhID0gZWQ7XG4gIH1cblxuICByZXR1cm4gcmVzdWx0IGFzIFQ7XG59XG5cbi8qKlxuICogSHlkcmF0ZSB0aGUgc2VyaWFsaXplZCBkYXRhIGZpZWxkcyBvZiBhIHJlc291cmNlIGZvciBDTEkgZGlzcGxheS5cbiAqXG4gKiBXaGVuIGBlbmNyeXB0b3JSZXNvbHZlcmAgaXMgbnVsbCAoZGVmYXVsdCAvIG5vIC0tZGVjcnlwdCBmbGFnKSwgZW5jcnlwdGVkXG4gKiBmaWVsZHMgYXJlIHNob3duIGFzIHN0eWxlZCBcIvCflJIgRW5jcnlwdGVkXCIgcGxhY2Vob2xkZXJzIHZpYSBFbmNyeXB0ZWREYXRhUmVmLlxuICpcbiAqIFdoZW4gYGVuY3J5cHRvclJlc29sdmVyYCBpcyBwcm92aWRlZCAoLS1kZWNyeXB0IGZsYWcpLCBlbmNyeXB0ZWQgZmllbGRzXG4gKiBhcmUgZGVjcnlwdGVkIGJlZm9yZSBoeWRyYXRpb24gc28gdGhlIGFjdHVhbCB1c2VyIGRhdGEgaXMgZGlzcGxheWVkLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gaHlkcmF0ZVJlc291cmNlSU88VD4oXG4gIHJlc291cmNlOiBULFxuICBrZXlSZXNvbHZlcj86IEVuY3J5cHRpb25LZXlSZXNvbHZlclxuKTogUHJvbWlzZTxUPiB7XG4gIC8vIFByZS1wcm9jZXNzOiBkZWNyeXB0IGFueSBlbmNyeXB0ZWQgZmllbGRzIHdoZW4gYSByZXNvbHZlciBpcyBwcm92aWRlZFxuICBjb25zdCBwcmVwcm9jZXNzZWQgPSBhd2FpdCBtYXliZURlY3J5cHRGaWVsZHMoXG4gICAgcmVzb3VyY2UgYXMgYW55LFxuICAgIGtleVJlc29sdmVyID8/IG51bGxcbiAgKTtcbiAgY29uc3QgaHlkcmF0ZWQgPSBoeWRyYXRlUmVzb3VyY2VJT0dlbmVyaWMocHJlcHJvY2Vzc2VkLCBnZXRSZXZpdmVycygpKSBhcyBUO1xuICAvLyBQb3N0LXByb2Nlc3M6IHN3YXAgZW5jcnlwdGVkIFVpbnQ4QXJyYXlzIGFuZCBleHBpcmVkIHN0dWJzIGZvciBDTEktc3R5bGVkIG9iamVjdHNcbiAgcmV0dXJuIHJlcGxhY2VFbmNyeXB0ZWRBbmRFeHBpcmVkV2l0aFJlZihoeWRyYXRlZCk7XG59XG4iXX0=
|
|
349
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaHlkcmF0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xpYi9pbnNwZWN0L2h5ZHJhdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7R0FLRztBQUVILE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDcEMsT0FBTyxFQUFFLGlCQUFpQixFQUFFLFlBQVksRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQy9FLE9BQU8sRUFDTCxnQkFBZ0IsRUFDaEIsZ0JBQWdCLEVBQ2hCLGlCQUFpQixJQUFJLHdCQUF3QixFQUM3QyxlQUFlLEVBQ2YsYUFBYSxFQUNiLFFBQVEsRUFDUixxQkFBcUIsRUFFckIsdUJBQXVCLEdBQ3hCLE1BQU0scUNBQXFDLENBQUM7QUFDN0MsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzVELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3hELE9BQU8sS0FBSyxNQUFNLE9BQU8sQ0FBQztBQVcxQixvREFBb0Q7QUFDcEQsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixnQkFBZ0IsRUFDaEIscUJBQXFCLEVBQ3JCLGdCQUFnQixFQUNoQixrQkFBa0IsRUFDbEIsZUFBZSxFQUNmLFVBQVUsRUFDVixXQUFXLEVBRVgsZUFBZSxFQUVmLFVBQVUsR0FDWCxNQUFNLHFDQUFxQyxDQUFDO0FBRTdDLDhFQUE4RTtBQUM5RSwyQ0FBMkM7QUFDM0MsOEVBQThFO0FBRTlFOzs7R0FHRztBQUNILE1BQU0sbUJBQW9CLFNBQVEsZ0JBQWdCO0lBQ2hELENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUNkLE1BQWMsRUFDZCxPQUFtRDtRQUVuRCxNQUFNLE9BQU8sR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxFQUFFLEdBQUcsT0FBTyxFQUFFLEtBQUssRUFBRSxPQUFPLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQztR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LE9BQU8saUNBQWlDLENBQUMsUUFBUSxDQUFDLENBQUM7QUFDckQsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQ0xJLXNwZWNpZmljIGh5ZHJhdGlvbiBmb3IgbzExeSBkaXNwbGF5LlxuICpcbiAqIE5vZGUuanMgcmV2aXZlcnMgdGhhdCB1c2UgYEJ1ZmZlci5mcm9tKClgIGZvciBiYXNlNjQgZGVjb2RpbmcgYW5kIGFkZFxuICogYHV0aWwuaW5zcGVjdC5jdXN0b21gIHRvIENsYXNzSW5zdGFuY2VSZWYgZm9yIHByZXR0eSBDTEkgb3V0cHV0LlxuICovXG5cbmltcG9ydCB7IGluc3BlY3QgfSBmcm9tICdub2RlOnV0aWwnO1xuaW1wb3J0IHsgZ2V0Q29tbW9uUmV2aXZlcnMsIG1heWJlRGVjcnlwdCB9IGZyb20gJ0B3b3JrZmxvdy9jb3JlL3NlcmlhbGl6YXRpb24nO1xuaW1wb3J0IHtcbiAgQ2xhc3NJbnN0YW5jZVJlZixcbiAgZXh0cmFjdENsYXNzTmFtZSxcbiAgaHlkcmF0ZVJlc291cmNlSU8gYXMgaHlkcmF0ZVJlc291cmNlSU9HZW5lcmljLFxuICBpc0VuY3J5cHRlZERhdGEsXG4gIGlzRXhwaXJlZFN0dWIsXG4gIGlzUnVuUmVmLFxuICBvYnNlcnZhYmlsaXR5UmV2aXZlcnMsXG4gIHR5cGUgUmV2aXZlcnMsXG4gIHNlcmlhbGl6ZWRJbnN0YW5jZVRvUmVmLFxufSBmcm9tICdAd29ya2Zsb3cvY29yZS9zZXJpYWxpemF0aW9uLWZvcm1hdCc7XG5pbXBvcnQgeyBwYXJzZUNsYXNzTmFtZSB9IGZyb20gJ0B3b3JrZmxvdy91dGlscy9wYXJzZS1uYW1lJztcbmltcG9ydCB7IGdldEV2ZW50RGF0YVJlZkZpZWxkcyB9IGZyb20gJ0B3b3JrZmxvdy93b3JsZCc7XG5pbXBvcnQgY2hhbGsgZnJvbSAnY2hhbGsnO1xuXG4vKipcbiAqIEEgZnVuY3Rpb24gdGhhdCByZXNvbHZlcyBhbiBlbmNyeXB0aW9uIGtleSBmb3IgYSBydW4sIG9yIG51bGwgdG8gc2tpcFxuICogZGVjcnlwdGlvbi4gQWNjZXB0cyBhIHJ1bklkOyB0aGUgcmVzb2x2ZXIgaXMgcmVzcG9uc2libGUgZm9yIGxvb2tpbmdcbiAqIHVwIHRoZSBXb3JrZmxvd1J1biBpbnRlcm5hbGx5ICh3aXRoIGNhY2hpbmcpIGlmIHRoZSBXb3JsZCBuZWVkcyBpdC5cbiAqL1xuZXhwb3J0IHR5cGUgRW5jcnlwdGlvbktleVJlc29sdmVyID1cbiAgfCAoKHJ1bklkOiBzdHJpbmcpID0+IFByb21pc2U8VWludDhBcnJheSB8IHVuZGVmaW5lZD4pXG4gIHwgbnVsbDtcblxuLy8gUmUtZXhwb3J0IHR5cGVzIGFuZCB1dGlsaXRpZXMgdGhhdCBjb25zdW1lcnMgbmVlZFxuZXhwb3J0IHtcbiAgQ0xBU1NfSU5TVEFOQ0VfUkVGX1RZUEUsXG4gIENsYXNzSW5zdGFuY2VSZWYsXG4gIEVOQ1JZUFRFRF9QTEFDRUhPTERFUixcbiAgZXh0cmFjdFN0cmVhbUlkcyxcbiAgaXNDbGFzc0luc3RhbmNlUmVmLFxuICBpc0VuY3J5cHRlZERhdGEsXG4gIGlzU3RyZWFtSWQsXG4gIGlzU3RyZWFtUmVmLFxuICB0eXBlIFJldml2ZXJzLFxuICBTVFJFQU1fUkVGX1RZUEUsXG4gIHR5cGUgU3RyZWFtUmVmLFxuICB0cnVuY2F0ZUlkLFxufSBmcm9tICdAd29ya2Zsb3cvY29yZS9zZXJpYWxpemF0aW9uLWZvcm1hdCc7XG5cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gQ0xJIENsYXNzSW5zdGFuY2VSZWYgd2l0aCBpbnNwZWN0LmN1c3RvbVxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbi8qKlxuICogRXh0ZW5kZWQgQ2xhc3NJbnN0YW5jZVJlZiB3aXRoIE5vZGUuanMgYHV0aWwuaW5zcGVjdC5jdXN0b21gIGZvclxuICogcHJldHR5IENMSSBvdXRwdXQ6IGBDbGFzc05hbWVAZmlsZW5hbWUgeyAuLi5kYXRhIH1gXG4gKi9cbmNsYXNzIENMSUNsYXNzSW5zdGFuY2VSZWYgZXh0ZW5kcyBDbGFzc0luc3RhbmNlUmVmIHtcbiAgW2luc3BlY3QuY3VzdG9tXShcbiAgICBfZGVwdGg6IG51bWJlcixcbiAgICBvcHRpb25zOiBpbXBvcnQoJ25vZGU6dXRpbCcpLkluc3BlY3RPcHRpb25zU3R5bGl6ZWRcbiAgKTogc3RyaW5nIHtcbiAgICBjb25zdCBkYXRhU3RyID0gaW5zcGVjdCh0aGlzLmRhdGEsIHsgLi4ub3B0aW9ucywgZGVwdGg6IG9wdGlvbnMuZGVwdGggfSk7XG4gICAgY29uc3QgcGFyc2VkID0gcGFyc2VDbGFzc05hbWUodGhpcy5jbGFzc0lkKTtcbiAgICBjb25zdCBtb2R1bGVTcGVjaWZpZXIgPSBwYXJzZWQ/Lm1vZHVsZVNwZWNpZmllciA/PyB0aGlzLmNsYXNzSWQ7XG4gICAgY29uc3QgZmlsZU5hbWUgPSBtb2R1bGVTcGVjaWZpZXIuc3BsaXQoJy8nKS5wb3AoKSA/PyBtb2R1bGVTcGVjaWZpZXI7XG4gICAgY29uc3Qgc3R5bGVkRmlsZU5hbWUgPSBvcHRpb25zLnN0eWxpemVcbiAgICAgID8gb3B0aW9ucy5zdHlsaXplKGBAJHtmaWxlTmFtZX1gLCAndW5kZWZpbmVkJylcbiAgICAgIDogYEAke2ZpbGVOYW1lfWA7XG4gICAgcmV0dXJuIGAke3RoaXMuY2xhc3NOYW1lfSR7c3R5bGVkRmlsZU5hbWV9ICR7ZGF0YVN0cn1gO1xuICB9XG59XG5cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gQ0xJIGVuY3J5cHRlZCBkYXRhIHBsYWNlaG9sZGVyIHdpdGggY3VzdG9tIGluc3BlY3Rcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4vKipcbiAqIFBsYWNlaG9sZGVyIG9iamVjdCBmb3IgZW5jcnlwdGVkIGRhdGEgZmllbGRzIGluIENMSSBvdXRwdXQuXG4gKlxuICogVXNlcyBgdXRpbC5pbnNwZWN0LmN1c3RvbWAgdG8gcmVuZGVyIGFzIGEgc3R5bGVkLCB1bnF1b3RlZCBzdHJpbmdcbiAqIChlLmcuLCBkaW0geWVsbG93IFwi8J+UkiBFbmNyeXB0ZWRcIikgaW5zdGVhZCBvZiBhIHBsYWluIHF1b3RlZCBzdHJpbmcuXG4gKiBBbHNvIHByb3ZpZGVzIGB0b0pTT04oKWAgZm9yIGAtLWpzb25gIG91dHB1dC5cbiAqL1xuY2xhc3MgRW5jcnlwdGVkRGF0YVJlZiB7XG4gIFtpbnNwZWN0LmN1c3RvbV0oKTogc3RyaW5nIHtcbiAgICByZXR1cm4gY2hhbGsuZGltLnllbGxvdygnXFx1ezFGNTEyfSBFbmNyeXB0ZWQnKTtcbiAgfVxuXG4gIHRvSlNPTigpOiBzdHJpbmcge1xuICAgIHJldHVybiAnXFx1ezFGNTEyfSBFbmNyeXB0ZWQnO1xuICB9XG5cbiAgdG9TdHJpbmcoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gJ1xcdXsxRjUxMn0gRW5jcnlwdGVkJztcbiAgfVxufVxuXG4vKiogU2luZ2xldG9uIGVuY3J5cHRlZCBkYXRhIHBsYWNlaG9sZGVyIGZvciBDTEkgZGlzcGxheSAqL1xuY29uc3QgRU5DUllQVEVEX1JFRiA9IG5ldyBFbmNyeXB0ZWREYXRhUmVmKCk7XG5cbi8qKiBDaGVjayBpZiBhIHZhbHVlIGlzIGFuIEVuY3J5cHRlZERhdGFSZWYgKGZvciBjdXN0b20gdGFibGUgZm9ybWF0dGluZyBpbiBDTEkpICovXG5leHBvcnQgZnVuY3Rpb24gaXNFbmNyeXB0ZWRSZWYodmFsdWU6IHVua25vd24pOiB2YWx1ZSBpcyBFbmNyeXB0ZWREYXRhUmVmIHtcbiAgcmV0dXJuIHZhbHVlIGluc3RhbmNlb2YgRW5jcnlwdGVkRGF0YVJlZjtcbn1cblxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBDTEkgZXhwaXJlZCBkYXRhIHBsYWNlaG9sZGVyIHdpdGggY3VzdG9tIGluc3BlY3Rcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4vKipcbiAqIFBsYWNlaG9sZGVyIG9iamVjdCBmb3IgZXhwaXJlZCBkYXRhIGZpZWxkcyBpbiBDTEkgb3V0cHV0LlxuICpcbiAqIFVzZXMgYHV0aWwuaW5zcGVjdC5jdXN0b21gIHRvIHJlbmRlciBhcyBhIHN0eWxlZCwgdW5xdW90ZWQgc3RyaW5nXG4gKiAoZS5nLiwgZGltIGdyYXkgXCI8ZGF0YSBleHBpcmVkPlwiKSBpbnN0ZWFkIG9mIGEgcmF3IHN0dWIgb2JqZWN0LlxuICogQWxzbyBwcm92aWRlcyBgdG9KU09OKClgIGZvciBgLS1qc29uYCBvdXRwdXQuXG4gKi9cbmNsYXNzIEV4cGlyZWREYXRhUmVmIHtcbiAgW2luc3BlY3QuY3VzdG9tXSgpOiBzdHJpbmcge1xuICAgIHJldHVybiBjaGFsay5ncmF5KCc8ZGF0YSBleHBpcmVkPicpO1xuICB9XG5cbiAgdG9KU09OKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuICc8ZGF0YSBleHBpcmVkPic7XG4gIH1cblxuICB0b1N0cmluZygpOiBzdHJpbmcge1xuICAgIHJldHVybiAnPGRhdGEgZXhwaXJlZD4nO1xuICB9XG59XG5cbi8qKiBTaW5nbGV0b24gZXhwaXJlZCBkYXRhIHBsYWNlaG9sZGVyIGZvciBDTEkgZGlzcGxheSAqL1xuY29uc3QgRVhQSVJFRF9SRUYgPSBuZXcgRXhwaXJlZERhdGFSZWYoKTtcblxuLyoqIENoZWNrIGlmIGEgdmFsdWUgaXMgYW4gRXhwaXJlZERhdGFSZWYgKGZvciBjdXN0b20gdGFibGUgZm9ybWF0dGluZyBpbiBDTEkpICovXG5leHBvcnQgZnVuY3Rpb24gaXNFeHBpcmVkUmVmKHZhbHVlOiB1bmtub3duKTogdmFsdWUgaXMgRXhwaXJlZERhdGFSZWYge1xuICByZXR1cm4gdmFsdWUgaW5zdGFuY2VvZiBFeHBpcmVkRGF0YVJlZjtcbn1cblxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBDTEkgcmV2aXZlcnMgKE5vZGUuanMsIHVzZXMgQnVmZmVyKVxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbi8qKlxuICogVGhlIHNldCBvZiByZWR1Y2VyIGtleXMgd2hvc2UgYGdldENvbW1vblJldml2ZXJzKClgIG91dHB1dCBwcm9kdWNlcyBhXG4gKiBuYXRpdmUgYEVycm9yYCBpbnN0YW5jZS4gV2Ugd3JhcCBlYWNoIG9mIHRoZXNlIHdpdGggYW4gYWRkaXRpb25hbFxuICogYHRvSlNPTmAgYXR0YWNobWVudCBpbiBDTEkgbW9kZSAoc2VlIGB3cmFwRXJyb3JSZXZpdmVyV2l0aFRvSlNPTmApLlxuICovXG5jb25zdCBFUlJPUl9SRVZJVkVSX0tFWVMgPSBbXG4gICdBZ2dyZWdhdGVFcnJvcicsXG4gICdET01FeGNlcHRpb24nLFxuICAnRXJyb3InLFxuICAnRXZhbEVycm9yJyxcbiAgJ0ZhdGFsRXJyb3InLFxuICAnSG9va0NvbmZsaWN0RXJyb3InLFxuICAnUmFuZ2VFcnJvcicsXG4gICdSZWZlcmVuY2VFcnJvcicsXG4gICdSZXRyeWFibGVFcnJvcicsXG4gICdSdW50aW1lRGVjcnlwdGlvbkVycm9yJyxcbiAgJ1N0cmVhbUVycm9yJyxcbiAgJ1N5bnRheEVycm9yJyxcbiAgJ1R5cGVFcnJvcicsXG4gICdVUklFcnJvcicsXG5dIGFzIGNvbnN0O1xuXG4vKipcbiAqIFdyYXBzIGEgcnVudGltZSBFcnJvciByZXZpdmVyIHNvIHRoYXQgdGhlIHByb2R1Y2VkIGluc3RhbmNlIGNhcnJpZXMgYVxuICogbm9uLWVudW1lcmFibGUgYHRvSlNPTmAgbWV0aG9kLiBUaGUgcnVudGltZSByZXZpdmVycyByZXR1cm4gcmVhbCBgRXJyb3JgXG4gKiBpbnN0YW5jZXMgKGdvb2QgZm9yIGB1dGlsLmluc3BlY3RgLCBgaW5zdGFuY2VvZmAsIGB0b1N0cmluZ2AsIGV0Yy4pLCBidXRcbiAqIGBFcnJvci5wcm90b3R5cGVgJ3MgYG5hbWVgIC8gYG1lc3NhZ2VgIC8gYHN0YWNrYCAvIGBjYXVzZWAgYXJlXG4gKiBub24tZW51bWVyYWJsZSBhbmQgd291bGQgYmUgZHJvcHBlZCBieSBgSlNPTi5zdHJpbmdpZnlgLCB3aGljaCBpcyBob3dcbiAqIHRoZSBDTEkgZW1pdHMgaXRzIGAtLWpzb25gIG91dHB1dC4gQWRkaW5nIGB0b0pTT05gICh3aGljaCBgSlNPTi5zdHJpbmdpZnlgXG4gKiBjYWxscyBidXQgYHV0aWwuaW5zcGVjdGAgaWdub3JlcykgZ2l2ZXMgdXMgdGhlIGJlc3Qgb2YgYm90aCB3b3JsZHM6XG4gKiByb3VuZC10cmlwcGVkIGVycm9ycyByZW5kZXIgY2xlYW5seSBpbiBib3RoIG1vZGVzIHdpdGhvdXQgdGhlXG4gKiBkYXRhLXZlcnN1cy1kaXNwbGF5IHRyYWRlb2ZmIHRoYXQgcGxhaW4tb2JqZWN0IHJldml2ZXJzIHdvdWxkIGZvcmNlLlxuICpcbiAqIFN1YmNsYXNzLXNwZWNpZmljIGVudW1lcmFibGUgZmllbGRzIChlLmcuIGBSZXRyeWFibGVFcnJvci5yZXRyeUFmdGVyYCxcbiAqIGBBZ2dyZWdhdGVFcnJvci5lcnJvcnNgLCBgRmF0YWxFcnJvci5mYXRhbGApIGFyZSBwaWNrZWQgdXAgYXV0b21hdGljYWxseVxuICogdmlhIGBPYmplY3QuYXNzaWduYCBhZnRlciB0aGUgYmFzZSBmaWVsZHMsIHNvIHdlIGRvbid0IGhhdmUgdG8gZW51bWVyYXRlXG4gKiB0aGVtIHBlci1zdWJjbGFzcy5cbiAqL1xuZnVuY3Rpb24gd3JhcEVycm9yUmV2aXZlcldpdGhUb0pTT04oXG4gIHJldml2ZXI6ICh2YWx1ZTogYW55KSA9PiB1bmtub3duXG4pOiAodmFsdWU6IGFueSkgPT4gdW5rbm93biB7XG4gIHJldHVybiAodmFsdWUpID0+IHtcbiAgICBjb25zdCByZXN1bHQgPSByZXZpdmVyKHZhbHVlKTtcbiAgICBpZiAoIShyZXN1bHQgaW5zdGFuY2VvZiBFcnJvcikpIHJldHVybiByZXN1bHQ7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHJlc3VsdCwgJ3RvSlNPTicsIHtcbiAgICAgIHZhbHVlOiBmdW5jdGlvbiAodGhpczogRXJyb3IpIHtcbiAgICAgICAgY29uc3QganNvbjogUmVjb3JkPHN0cmluZywgdW5rbm93bj4gPSB7XG4gICAgICAgICAgbmFtZTogdGhpcy5uYW1lLFxuICAgICAgICAgIG1lc3NhZ2U6IHRoaXMubWVzc2FnZSxcbiAgICAgICAgICBzdGFjazogdGhpcy5zdGFjayxcbiAgICAgICAgfTtcbiAgICAgICAgaWYgKCdjYXVzZScgaW4gdGhpcykge1xuICAgICAgICAgIGpzb24uY2F1c2UgPSAodGhpcyBhcyB7IGNhdXNlOiB1bmtub3duIH0pLmNhdXNlO1xuICAgICAgICB9XG4gICAgICAgIC8vIFBpY2sgdXAgc3ViY2xhc3Mtc3BlY2lmaWMgZW51bWVyYWJsZSBmaWVsZHMgKGUuZy4gRmF0YWxFcnJvci5mYXRhbCxcbiAgICAgICAgLy8gUmV0cnlhYmxlRXJyb3IucmV0cnlBZnRlciwgQWdncmVnYXRlRXJyb3IuZXJyb3JzKS5cbiAgICAgICAgT2JqZWN0LmFzc2lnbihqc29uLCB0aGlzKTtcbiAgICAgICAgcmV0dXJuIGpzb247XG4gICAgICB9LFxuICAgICAgZW51bWVyYWJsZTogZmFsc2UsXG4gICAgICB3cml0YWJsZTogdHJ1ZSxcbiAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgICB9KTtcbiAgICByZXR1cm4gcmVzdWx0O1xuICB9O1xufVxuXG4vKipcbiAqIFRoZSBzZXQgb2YgcmV2aXZlcnMgdXNlZCBieSBDTEkgaW5zcGVjdCBvdXRwdXQuXG4gKlxuICogQnVpbHQgb24gdG9wIG9mIGBnZXRDb21tb25SZXZpdmVycygpYCBmcm9tIGBAd29ya2Zsb3cvY29yZWAgc28gdGhhdCB0aGVcbiAqIENMSSBzdGF5cyBpbiBzeW5jIHdpdGggdGhlIHJ1bnRpbWUncyByZXZpdmVyIHNldCBhdXRvbWF0aWNhbGx5LiBXaXRob3V0XG4gKiB0aGlzLCBldmVyeSBuZXcgcmV2aXZlciBhZGRlZCB0byBjb3JlIChlLmcuIGBGYXRhbEVycm9yYCxcbiAqIGBSZXRyeWFibGVFcnJvcmAsIHRoZSBidWlsdC1pbiBgRXJyb3JgIHN1YmNsYXNzZXMpIHdvdWxkIHNpbGVudGx5XG4gKiBkaXNhcHBlYXIgZnJvbSBDTEkgb3V0cHV0OiBkZXZhbHVlIHRocm93cyBcIlVua25vd24gdHlwZSBYXCIgZm9yXG4gKiB1bnJlY29nbml6ZWQgcmVkdWNlZCB0eXBlcywgYW5kIGBoeWRyYXRlUmVzb3VyY2VJT2Agc3dhbGxvd3MgdGhhdCBlcnJvclxuICogYW5kIHN1cmZhY2VzIHRoZSByYXcgYFVpbnQ4QXJyYXlgIHBheWxvYWQgdG8gY29uc3VtZXJzLCB3aGljaCB0aGVuXG4gKiBzaG93cyB1cCBhcyBgc3RlcC5lcnJvcmAgLyBgcnVuLmVycm9yYCBieXRlIGR1bXBzIGluc3RlYWQgb2YgdXNhYmxlXG4gKiBgeyBtZXNzYWdlLCBzdGFjaywg4oCmIH1gIG9iamVjdHMuXG4gKlxuICogT24gdG9wIG9mIHRoZSBjb21tb24gc2V0IHdlIGxheWVyOlxuICogICAtIEEgYHRvSlNPTmAgc2hpbSBvbiBlYWNoIEVycm9yIHJldml2ZXIgc28gbm9uLWVudW1lcmFibGVcbiAqICAgICBgRXJyb3IucHJvdG90eXBlYCBmaWVsZHMgc3Vydml2ZSBgSlNPTi5zdHJpbmdpZnlgIGZvciBgLS1qc29uYCBvdXRwdXRcbiAqICAgICB3aGlsZSBsZWF2aW5nIGB1dGlsLmluc3BlY3RgIHJlbmRlcmluZyB1bnRvdWNoZWRcbiAqICAgLSBgb2JzZXJ2YWJpbGl0eVJldml2ZXJzYCBmb3Igc3RyZWFtcyAvIHN0ZXArd29ya2Zsb3cgZnVuY3Rpb24gcmVmc1xuICogICAtIENMSS1zcGVjaWZpYyBvdmVycmlkZXMgdGhhdCBwcm9kdWNlIGRpc3BsYXktZnJpZW5kbHkgcGxhY2Vob2xkZXJzXG4gKiAgICAgZm9yIGBDbGFzc2AgLyBgSW5zdGFuY2VgICh0aGUgcnVudGltZSB2ZXJzaW9ucyBuZWVkIGZ1bGwgY2xhc3NcbiAqICAgICBpZGVudGl0eSB3aGljaCB0aGUgQ0xJIGRvZXNuJ3QgaGF2ZSBhY2Nlc3MgdG8pXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRDTElSZXZpdmVycygpOiBSZXZpdmVycyB7XG4gIGNvbnN0IGJhc2VSZXZpdmVycyA9IGdldENvbW1vblJldml2ZXJzKGdsb2JhbFRoaXMpO1xuICBjb25zdCBlcnJvclJldml2ZXJzID0gT2JqZWN0LmZyb21FbnRyaWVzKFxuICAgIEVSUk9SX1JFVklWRVJfS0VZUy5mbGF0TWFwKChrZXkpID0+IHtcbiAgICAgIGNvbnN0IHJldml2ZXIgPSAoYmFzZVJldml2ZXJzIGFzIFJldml2ZXJzKVtrZXldO1xuICAgICAgcmV0dXJuIHJldml2ZXIgPyBbW2tleSwgd3JhcEVycm9yUmV2aXZlcldpdGhUb0pTT04ocmV2aXZlcildXSA6IFtdO1xuICAgIH0pXG4gICk7XG4gIHJldHVybiB7XG4gICAgLi4uYmFzZVJldml2ZXJzLFxuICAgIC4uLmVycm9yUmV2aXZlcnMsXG4gICAgLy8gTzExeS1zcGVjaWZpYyByZXZpdmVycyAoc3RyZWFtcywgc3RlcCBmdW5jdGlvbnMg4oaSIGRpc3BsYXkgb2JqZWN0cykuXG4gICAgLi4ub2JzZXJ2YWJpbGl0eVJldml2ZXJzLFxuICAgIC8vIE5vZGUgYFJlcXVlc3RgIC8gYFJlc3BvbnNlYCByZXZpdmVycyB0aGF0IGRvbid0IHJlbHkgb24gcnVubmluZyBhblxuICAgIC8vIGFjdHVhbCBmZXRjaCBoYW5kbGVyLCB1c2VkIHRvIHJlbmRlciByZXF1ZXN0L3Jlc3BvbnNlIElPIGlubGluZS5cbiAgICBSZXF1ZXN0OiAodmFsdWUpID0+IHtcbiAgICAgIC8vIGJpb21lLWlnbm9yZSBsaW50L2NvbXBsZXhpdHkvdXNlQXJyb3dGdW5jdGlvbjogYXJyb3cgZnVuY3Rpb25zIGhhdmUgbm8gLnByb3RvdHlwZVxuICAgICAgY29uc3QgY3RvciA9IHsgUmVxdWVzdDogZnVuY3Rpb24gKCkge30gfS5SZXF1ZXN0ITtcbiAgICAgIGNvbnN0IG9iaiA9IE9iamVjdC5jcmVhdGUoY3Rvci5wcm90b3R5cGUpO1xuICAgICAgT2JqZWN0LmFzc2lnbihvYmosIHtcbiAgICAgICAgbWV0aG9kOiB2YWx1ZS5tZXRob2QsXG4gICAgICAgIHVybDogdmFsdWUudXJsLFxuICAgICAgICBoZWFkZXJzOiBuZXcgSGVhZGVycyh2YWx1ZS5oZWFkZXJzKSxcbiAgICAgICAgYm9keTogdmFsdWUuYm9keSxcbiAgICAgICAgZHVwbGV4OiB2YWx1ZS5kdXBsZXgsXG4gICAgICAgIC4uLih2YWx1ZS5yZXNwb25zZVdyaXRhYmxlXG4gICAgICAgICAgPyB7IHJlc3BvbnNlV3JpdGFibGU6IHZhbHVlLnJlc3BvbnNlV3JpdGFibGUgfVxuICAgICAgICAgIDoge30pLFxuICAgICAgfSk7XG4gICAgICByZXR1cm4gb2JqO1xuICAgIH0sXG4gICAgUmVzcG9uc2U6ICh2YWx1ZSkgPT4ge1xuICAgICAgLy8gYmlvbWUtaWdub3JlIGxpbnQvY29tcGxleGl0eS91c2VBcnJvd0Z1bmN0aW9uOiBhcnJvdyBmdW5jdGlvbnMgaGF2ZSBubyAucHJvdG90eXBlXG4gICAgICBjb25zdCBjdG9yID0geyBSZXNwb25zZTogZnVuY3Rpb24gKCkge30gfS5SZXNwb25zZSE7XG4gICAgICBjb25zdCBvYmogPSBPYmplY3QuY3JlYXRlKGN0b3IucHJvdG90eXBlKTtcbiAgICAgIE9iamVjdC5hc3NpZ24ob2JqLCB7XG4gICAgICAgIHN0YXR1czogdmFsdWUuc3RhdHVzLFxuICAgICAgICBzdGF0dXNUZXh0OiB2YWx1ZS5zdGF0dXNUZXh0LFxuICAgICAgICB1cmw6IHZhbHVlLnVybCxcbiAgICAgICAgaGVhZGVyczogbmV3IEhlYWRlcnModmFsdWUuaGVhZGVycyksXG4gICAgICAgIGJvZHk6IHZhbHVlLmJvZHksXG4gICAgICAgIHJlZGlyZWN0ZWQ6IHZhbHVlLnJlZGlyZWN0ZWQsXG4gICAgICAgIHR5cGU6IHZhbHVlLnR5cGUsXG4gICAgICB9KTtcbiAgICAgIHJldHVybiBvYmo7XG4gICAgfSxcbiAgICAvLyBDTEktc3BlY2lmaWMgb3ZlcnJpZGVzIGZvciBjbGFzcyBpbnN0YW5jZXMgd2l0aCBpbnNwZWN0LmN1c3RvbVxuICAgIENsYXNzOiAodmFsdWUpID0+IGA8Y2xhc3M6JHtleHRyYWN0Q2xhc3NOYW1lKHZhbHVlLmNsYXNzSWQpfT5gLFxuICAgIEluc3RhbmNlOiAodmFsdWUpID0+IHtcbiAgICAgIC8vIFJ1biBpbnN0YW5jZXMgYXJlIHJlbmRlcmVkIGFzIFJ1blJlZiBmb3IgY2xpY2thYmxlIHJlbmRlcmluZ1xuICAgICAgY29uc3QgcnVuUmVmID0gc2VyaWFsaXplZEluc3RhbmNlVG9SZWYodmFsdWUpO1xuICAgICAgaWYgKGlzUnVuUmVmKHJ1blJlZikpIHtcbiAgICAgICAgcmV0dXJuIHJ1blJlZjtcbiAgICAgIH1cbiAgICAgIHJldHVybiBuZXcgQ0xJQ2xhc3NJbnN0YW5jZVJlZihcbiAgICAgICAgZXh0cmFjdENsYXNzTmFtZSh2YWx1ZS5jbGFzc0lkKSxcbiAgICAgICAgdmFsdWUuY2xhc3NJZCxcbiAgICAgICAgdmFsdWUuZGF0YVxuICAgICAgKTtcbiAgICB9LFxuICB9O1xufVxuXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIFByZS1idWlsdCBDTEkgcmV2aXZlcnMgKGNhY2hlZClcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG5sZXQgY2FjaGVkUmV2aXZlcnM6IFJldml2ZXJzIHwgbnVsbCA9IG51bGw7XG5cbmZ1bmN0aW9uIGdldFJldml2ZXJzKCk6IFJldml2ZXJzIHtcbiAgaWYgKCFjYWNoZWRSZXZpdmVycykge1xuICAgIGNhY2hlZFJldml2ZXJzID0gZ2V0Q0xJUmV2aXZlcnMoKTtcbiAgfVxuICByZXR1cm4gY2FjaGVkUmV2aXZlcnM7XG59XG5cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gRGVjcnlwdGlvbiBoZWxwZXJzXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuLyoqXG4gKiBQcmUtcHJvY2VzcyBhIHJlc291cmNlJ3MgZGF0YSBmaWVsZHM6IGlmIHRoZSByZXNvbHZlciBpcyBwcm92aWRlZCBhbmRcbiAqIHRoZSBmaWVsZCBpcyBlbmNyeXB0ZWQsIGRlY3J5cHQgaXQgYmVmb3JlIGdlbmVyaWMgaHlkcmF0aW9uLlxuICpcbiAqIFVzZXMgY29yZSdzIGBtYXliZURlY3J5cHQoKWAgd2hpY2ggaGFuZGxlcyB0aGUgJ2VuY3InIHByZWZpeCBzdHJpcHBpbmdcbiAqIGFuZCBBRVMtR0NNIGRlY3J5cHRpb24gdHJhbnNwYXJlbnRseS5cbiAqXG4gKiBXaGVuIHRoZSByZXNvbHZlciBpcyBudWxsIChubyAtLWRlY3J5cHQgZmxhZyksIGVuY3J5cHRlZCBmaWVsZHMgcGFzc1xuICogdGhyb3VnaCBhcyBVaW50OEFycmF5IGFuZCBhcmUgcmVwbGFjZWQgd2l0aCBFbmNyeXB0ZWREYXRhUmVmIGluIHBvc3QtcHJvY2Vzc2luZy5cbiAqL1xuYXN5bmMgZnVuY3Rpb24gbWF5YmVEZWNyeXB0RmllbGRzPFxuICBUIGV4dGVuZHMge1xuICAgIHJ1bklkPzogc3RyaW5nO1xuICAgIGlucHV0PzogYW55O1xuICAgIG91dHB1dD86IGFueTtcbiAgICBtZXRhZGF0YT86IGFueTtcbiAgICBldmVudFR5cGU/OiBzdHJpbmc7XG4gICAgZXZlbnREYXRhPzogYW55O1xuICB9LFxuPihyZXNvdXJjZTogVCwgcmVzb2x2ZXI6IEVuY3J5cHRpb25LZXlSZXNvbHZlcik6IFByb21pc2U8VD4ge1xuICBpZiAoIXJlc29sdmVyKSByZXR1cm4gcmVzb3VyY2U7XG5cbiAgY29uc3QgcnVuSWQgPSAocmVzb3VyY2UgYXMgYW55KS5ydW5JZCBhcyBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gIGlmICghcnVuSWQpIHJldHVybiByZXNvdXJjZTtcblxuICBjb25zdCByZXN1bHQgPSB7IC4uLnJlc291cmNlIH07XG5cbiAgdHJ5IHtcbiAgICBjb25zdCByYXdLZXkgPSBhd2FpdCByZXNvbHZlcihydW5JZCk7XG4gICAgLy8gUmVzb2x2ZSB0aGUgZnVsbCBrZXkgY2FwYWJpbGl0eSBzbyBgLS1kZWNyeXB0YCBjYW4gb3BlbiBzZWFsZWRcbiAgICAvLyAoJ2VuY3AnKSBwYXlsb2FkcyB0aGF0IG90aGVyIHJ1bnMgd3JvdGUgdG8gdGhpcyBvbmUsIG5vdCBqdXN0IHRoZVxuICAgIC8vIHJ1bidzIG93biBzeW1tZXRyaWMgKCdlbmNyJykgcGF5bG9hZHMuXG4gICAgY29uc3QgeyBkZXJpdmVSdW5QYXlsb2FkS2V5cyB9ID0gYXdhaXQgaW1wb3J0KFxuICAgICAgJ0B3b3JrZmxvdy9jb3JlL3NlcmlhbGl6YXRpb24nXG4gICAgKTtcbiAgICBjb25zdCBrID0gcmF3S2V5ID8gYXdhaXQgZGVyaXZlUnVuUGF5bG9hZEtleXMocmF3S2V5KSA6IHVuZGVmaW5lZDtcblxuICAgIC8vIERlY3J5cHQgaW5wdXQvb3V0cHV0L2Vycm9yIGZpZWxkcyAoV29ya2Zsb3dSdW4sIFN0ZXApXG4gICAgcmVzdWx0LmlucHV0ID0gYXdhaXQgbWF5YmVEZWNyeXB0KHJlc3VsdC5pbnB1dCwgayk7XG4gICAgcmVzdWx0Lm91dHB1dCA9IGF3YWl0IG1heWJlRGVjcnlwdChyZXN1bHQub3V0cHV0LCBrKTtcbiAgICAocmVzdWx0IGFzIGFueSkuZXJyb3IgPSBhd2FpdCBtYXliZURlY3J5cHQoKHJlc3VsdCBhcyBhbnkpLmVycm9yLCBrKTtcblxuICAgIC8vIERlY3J5cHQgbWV0YWRhdGEgZmllbGQgKEhvb2spXG4gICAgcmVzdWx0Lm1ldGFkYXRhID0gYXdhaXQgbWF5YmVEZWNyeXB0KHJlc3VsdC5tZXRhZGF0YSwgayk7XG5cbiAgICAvLyBEZWNyeXB0IGV2ZW50RGF0YSBmaWVsZHMgKEV2ZW50KVxuICAgIGlmIChyZXN1bHQuZXZlbnREYXRhICYmIHR5cGVvZiByZXN1bHQuZXZlbnREYXRhID09PSAnb2JqZWN0Jykge1xuICAgICAgY29uc3QgZXZlbnREYXRhID0geyAuLi5yZXN1bHQuZXZlbnREYXRhIH07XG4gICAgICBmb3IgKGNvbnN0IGZpZWxkIG9mIGdldEV2ZW50RGF0YVJlZkZpZWxkcyhyZXN1bHQuZXZlbnRUeXBlID8/ICcnKSkge1xuICAgICAgICBldmVudERhdGFbZmllbGRdID0gYXdhaXQgbWF5YmVEZWNyeXB0KGV2ZW50RGF0YVtmaWVsZF0sIGspO1xuICAgICAgfVxuICAgICAgcmVzdWx0LmV2ZW50RGF0YSA9IGV2ZW50RGF0YTtcbiAgICB9XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIGNvbnN0IG1lc3NhZ2UgPSBlcnIgaW5zdGFuY2VvZiBFcnJvciA/IGVyci5tZXNzYWdlIDogU3RyaW5nKGVycik7XG5cbiAgICAvLyBJZiB0aGUga2V5IGZldGNoIGZhaWxlZCBkdWUgdG8gYW4gSFRUUCBlcnJvciAoZS5nLiA0MjkgcmF0ZSBsaW1pdCxcbiAgICAvLyA1MDAgc2VydmVyIGVycm9yKSwgcmUtdGhyb3cgc28gdGhlIGNhbGxlciBzdXJmYWNlcyBhIGNsZWFyIGZhaWx1cmVcbiAgICAvLyBpbnN0ZWFkIG9mIHNpbGVudGx5IHNob3dpbmcgZW5jcnlwdGVkIHBsYWNlaG9sZGVycy5cbiAgICBpZiAobWVzc2FnZS5pbmNsdWRlcygnSFRUUCAnKSkge1xuICAgICAgdGhyb3cgZXJyO1xuICAgIH1cblxuICAgIC8vIERlY3J5cHRpb24gZmFpbGVkIChiYWQga2V5LCBjb3JydXB0ZWQgY2lwaGVydGV4dCwgZXRjLiksIHNvIGZhbGwgYmFja1xuICAgIC8vIHRvIHNob3dpbmcgZW5jcnlwdGVkIHBsYWNlaG9sZGVycyBpbnN0ZWFkIG9mIGNyYXNoaW5nIHRoZSBDTEkuXG4gICAgY29uc3QgeyBsb2dnZXIgfSA9IGF3YWl0IGltcG9ydCgnLi4vY29uZmlnL2xvZy5qcycpO1xuICAgIGxvZ2dlci53YXJuKGBEZWNyeXB0aW9uIGZhaWxlZCBmb3IgcmVzb3VyY2UgJHtydW5JZH06ICR7bWVzc2FnZX1gKTtcbiAgfVxuXG4gIHJldHVybiByZXN1bHQ7XG59XG5cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gUHVibGljIEFQSVxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbi8qKiBSZXBsYWNlIGEgc2luZ2xlIGZpZWxkIHZhbHVlIHdpdGggYSBkaXNwbGF5IHJlZiBpZiBpdCdzIGVuY3J5cHRlZCBvciBleHBpcmVkLiAqL1xuZnVuY3Rpb24gdG9EaXNwbGF5UmVmKHZhbHVlOiB1bmtub3duKTogdW5rbm93biB7XG4gIGlmIChpc0VuY3J5cHRlZERhdGEodmFsdWUpKSByZXR1cm4gRU5DUllQVEVEX1JFRjtcbiAgaWYgKGlzRXhwaXJlZFN0dWIodmFsdWUpKSByZXR1cm4gRVhQSVJFRF9SRUY7XG4gIHJldHVybiB2YWx1ZTtcbn1cblxuLyoqXG4gKiBSZXBsYWNlIGVuY3J5cHRlZCBVaW50OEFycmF5IHZhbHVlcyBhbmQgZXhwaXJlZCBzdHVicyB3aXRoIHN0eWxlZFxuICogcmVmIG9iamVjdHMgaW4ga25vd24gZGF0YSBmaWVsZHMgZm9yIGN1c3RvbSBpbnNwZWN0IHJlbmRlcmluZy5cbiAqL1xuZnVuY3Rpb24gcmVwbGFjZUVuY3J5cHRlZEFuZEV4cGlyZWRXaXRoUmVmPFQ+KHJlc291cmNlOiBUKTogVCB7XG4gIGlmICghcmVzb3VyY2UgfHwgdHlwZW9mIHJlc291cmNlICE9PSAnb2JqZWN0JykgcmV0dXJuIHJlc291cmNlO1xuICBjb25zdCByID0gcmVzb3VyY2UgYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG4gIGNvbnN0IHJlc3VsdCA9IHsgLi4uciB9O1xuXG4gIGZvciAoY29uc3Qga2V5IG9mIFsnaW5wdXQnLCAnb3V0cHV0JywgJ21ldGFkYXRhJywgJ2Vycm9yJ10pIHtcbiAgICByZXN1bHRba2V5XSA9IHRvRGlzcGxheVJlZihyZXN1bHRba2V5XSk7XG4gIH1cblxuICBpZiAocmVzdWx0LmV2ZW50RGF0YSAmJiB0eXBlb2YgcmVzdWx0LmV2ZW50RGF0YSA9PT0gJ29iamVjdCcpIHtcbiAgICBjb25zdCBlZCA9IHsgLi4uKHJlc3VsdC5ldmVudERhdGEgYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4pIH07XG4gICAgY29uc3QgZXZlbnRUeXBlID1cbiAgICAgIHR5cGVvZiByZXN1bHQuZXZlbnRUeXBlID09PSAnc3RyaW5nJyA/IHJlc3VsdC5ldmVudFR5cGUgOiAnJztcbiAgICBmb3IgKGNvbnN0IGtleSBvZiBnZXRFdmVudERhdGFSZWZGaWVsZHMoZXZlbnRUeXBlKSkge1xuICAgICAgZWRba2V5XSA9IHRvRGlzcGxheVJlZihlZFtrZXldKTtcbiAgICB9XG4gICAgcmVzdWx0LmV2ZW50RGF0YSA9IGVkO1xuICB9XG5cbiAgcmV0dXJuIHJlc3VsdCBhcyBUO1xufVxuXG4vKipcbiAqIEh5ZHJhdGUgdGhlIHNlcmlhbGl6ZWQgZGF0YSBmaWVsZHMgb2YgYSByZXNvdXJjZSBmb3IgQ0xJIGRpc3BsYXkuXG4gKlxuICogV2hlbiBgZW5jcnlwdG9yUmVzb2x2ZXJgIGlzIG51bGwgKGRlZmF1bHQgLyBubyAtLWRlY3J5cHQgZmxhZyksIGVuY3J5cHRlZFxuICogZmllbGRzIGFyZSBzaG93biBhcyBzdHlsZWQgXCLwn5SSIEVuY3J5cHRlZFwiIHBsYWNlaG9sZGVycyB2aWEgRW5jcnlwdGVkRGF0YVJlZi5cbiAqXG4gKiBXaGVuIGBlbmNyeXB0b3JSZXNvbHZlcmAgaXMgcHJvdmlkZWQgKC0tZGVjcnlwdCBmbGFnKSwgZW5jcnlwdGVkIGZpZWxkc1xuICogYXJlIGRlY3J5cHRlZCBiZWZvcmUgaHlkcmF0aW9uIHNvIHRoZSBhY3R1YWwgdXNlciBkYXRhIGlzIGRpc3BsYXllZC5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGh5ZHJhdGVSZXNvdXJjZUlPPFQ+KFxuICByZXNvdXJjZTogVCxcbiAga2V5UmVzb2x2ZXI/OiBFbmNyeXB0aW9uS2V5UmVzb2x2ZXJcbik6IFByb21pc2U8VD4ge1xuICAvLyBQcmUtcHJvY2VzczogZGVjcnlwdCBhbnkgZW5jcnlwdGVkIGZpZWxkcyB3aGVuIGEgcmVzb2x2ZXIgaXMgcHJvdmlkZWRcbiAgY29uc3QgcHJlcHJvY2Vzc2VkID0gYXdhaXQgbWF5YmVEZWNyeXB0RmllbGRzKFxuICAgIHJlc291cmNlIGFzIGFueSxcbiAgICBrZXlSZXNvbHZlciA/PyBudWxsXG4gICk7XG4gIGNvbnN0IGh5ZHJhdGVkID0gaHlkcmF0ZVJlc291cmNlSU9HZW5lcmljKHByZXByb2Nlc3NlZCwgZ2V0UmV2aXZlcnMoKSkgYXMgVDtcbiAgLy8gUG9zdC1wcm9jZXNzOiBzd2FwIGVuY3J5cHRlZCBVaW50OEFycmF5cyBhbmQgZXhwaXJlZCBzdHVicyBmb3IgQ0xJLXN0eWxlZCBvYmplY3RzXG4gIHJldHVybiByZXBsYWNlRW5jcnlwdGVkQW5kRXhwaXJlZFdpdGhSZWYoaHlkcmF0ZWQpO1xufVxuIl19
|
|
@@ -22,4 +22,14 @@ export declare const listEvents: (world: World, opts?: InspectCLIOptions) => Pro
|
|
|
22
22
|
export declare const listHooks: (world: World, opts?: InspectCLIOptions) => Promise<void>;
|
|
23
23
|
export declare const showHook: (world: World, hookId: string, opts?: InspectCLIOptions) => Promise<void>;
|
|
24
24
|
export declare const listSleeps: (world: World, opts?: InspectCLIOptions) => Promise<void>;
|
|
25
|
+
/**
|
|
26
|
+
* List the distinct attribute keys recorded on this project's runs, with how
|
|
27
|
+
* many runs carry each and when it was first and last seen.
|
|
28
|
+
*
|
|
29
|
+
* Analytics-only: the storage APIs have no cross-run attribute index, so
|
|
30
|
+
* there is nothing to fall back to. Pair it with
|
|
31
|
+
* `inspect runs --attribute key=value` to go from discovering a key to
|
|
32
|
+
* filtering by it.
|
|
33
|
+
*/
|
|
34
|
+
export declare const listAttributes: (world: World, opts?: InspectCLIOptions) => Promise<void>;
|
|
25
35
|
//# sourceMappingURL=output.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"output.d.ts","sourceRoot":"","sources":["../../../src/lib/inspect/output.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"output.d.ts","sourceRoot":"","sources":["../../../src/lib/inspect/output.ts"],"names":[],"mappings":"AAOA,OAAO,EAKL,KAAK,WAAW,EAChB,KAAK,KAAK,EACX,MAAM,iBAAiB,CAAC;AAMzB,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAuC5D,OAAO,EAGL,kBAAkB,EAGnB,MAAM,qBAAqB,CAAC;AAqN7B,eAAO,MAAM,gBAAgB,GAC3B,MAAM,MAAM,EACZ,OAAO,OAAO,EACd,OAAM,iBAAsB,EAC5B,kBAAkB,UAAU,CAAC,OAAO,kBAAkB,CAAC,EACvD,OAAO,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,YAuE/B,CAAC;AAuLF;;;GAGG;AACH,eAAO,MAAM,cAAc,GAAI,KAAK,WAAW,KAAG,OAMjD,CAAC;AA4EF,eAAO,MAAM,QAAQ,GAAU,OAAO,KAAK,EAAE,OAAM,iBAAsB,kBAkJxE,CAAC;AAEF,eAAO,MAAM,YAAY,GACvB,OAAO,KAAK,EACZ,OAAM,iBAAsB,8DAoB7B,CAAC;AAEF,eAAO,MAAM,OAAO,GAClB,OAAO,KAAK,EACZ,OAAO,MAAM,EACb,OAAM,iBAAsB,kBAwC7B,CAAC;AAEF,eAAO,MAAM,SAAS,GACpB,OAAO,KAAK,EACZ,OAAM,iBAEL,kBA2GF,CAAC;AAEF,eAAO,MAAM,QAAQ,GACnB,OAAO,KAAK,EACZ,QAAQ,MAAM,EACd,OAAM,iBAAsB,kBA+C7B,CAAC;AAEF,eAAO,MAAM,UAAU,GACrB,OAAO,KAAK,EACZ,UAAU,MAAM,EAChB,OAAM,iBAAsB,kBA6C7B,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,kBAAkB,GAC7B,OAAO,KAAK,EACZ,OAAM,iBAAsB,kBAgD7B,CAAC;AAEF,eAAO,MAAM,UAAU,GACrB,OAAO,KAAK,EACZ,OAAM,iBAAsB,kBA0G7B,CAAC;AAEF,eAAO,MAAM,SAAS,GAAU,OAAO,KAAK,EAAE,OAAM,iBAAsB,kBA6EzE,CAAC;AAEF,eAAO,MAAM,QAAQ,GACnB,OAAO,KAAK,EACZ,QAAQ,MAAM,EACd,OAAM,iBAAsB,kBA+B7B,CAAC;AAqDF,eAAO,MAAM,UAAU,GACrB,OAAO,KAAK,EACZ,OAAM,iBAAsB,kBAsJ7B,CAAC;AASF;;;;;;;;GAQG;AACH,eAAO,MAAM,cAAc,GACzB,OAAO,KAAK,EACZ,OAAM,iBAAsB,kBAsG7B,CAAC"}
|