@bitgo-beta/sdk-core 8.2.1-beta.1924 → 8.2.1-beta.1925

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.
@@ -4,6 +4,7 @@
4
4
  * @experimental The safe client surface is experimental and may change (including breaking
5
5
  * changes) before the public release.
6
6
  */
7
+ import type { InitializeSafeResponse } from '@bitgo/public-types';
7
8
  import { FinalizeSafeOptions, InitializeSafeOptions } from './iSafe';
8
9
  import { Safe } from './safe';
9
10
  /**
@@ -56,10 +57,12 @@ export interface ISafes {
56
57
  */
57
58
  generateSafe(params: CreateSafeOptions): Promise<Safe>;
58
59
  /**
59
- * Phase 1 — initialize a safe (metadata only, no key material).
60
+ * Phase 1 — initialize a safe (metadata only, no key material). The server response is just
61
+ * `{ id, status }` (no `label`/`enterpriseId`/`creator`/`users`/`createdAt` yet), so this
62
+ * returns that raw shape rather than a full `Safe`.
60
63
  * @experimental
61
64
  */
62
- initializeSafe(params: InitializeSafeOptions): Promise<Safe>;
65
+ initializeSafe(params: InitializeSafeOptions): Promise<InitializeSafeResponse>;
63
66
  /**
64
67
  * Phase 2 — run the 4 root key ceremonies tagged with `safeId`; returns the 12 minted key ids.
65
68
  * @experimental
@@ -1 +1 @@
1
- {"version":3,"file":"iSafes.d.ts","sourceRoot":"","sources":["../../../../src/bitgo/safe/iSafes.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,EAAE,mBAAmB,EAAE,qBAAqB,EAAE,MAAM,SAAS,CAAC;AACrE,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAE9B;;;;;;;;GAQG;AACH,MAAM,WAAW,iBAAiB;IAChC,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;CACpB;AAED;;;GAGG;AACH,MAAM,WAAW,kBAAkB;IACjC,MAAM,EAAE,MAAM,CAAC;CAChB;AAED;;;;GAIG;AACH,MAAM,MAAM,QAAQ,GAAG,mBAAmB,CAAC;AAE3C;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,EAAE,EAAE,MAAM,CAAC;CACZ;AAED;;GAEG;AACH,MAAM,WAAW,MAAM;IACrB;;;;OAIG;IACH,YAAY,CAAC,MAAM,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACvD;;;OAGG;IACH,cAAc,CAAC,MAAM,EAAE,qBAAqB,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC7D;;;OAGG;IACH,cAAc,CAAC,MAAM,EAAE,iBAAiB,GAAG,kBAAkB,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;IAClF;;;OAGG;IACH,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,mBAAmB,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACzE;;;OAGG;IACH,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC3C,oBAAoB;IACpB,IAAI,CAAC,MAAM,CAAC,EAAE,gBAAgB,GAAG,OAAO,CAAC;QAAE,KAAK,EAAE,IAAI,EAAE,CAAC;QAAC,UAAU,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACjF,oBAAoB;IACpB,GAAG,CAAC,MAAM,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAC5C"}
1
+ {"version":3,"file":"iSafes.d.ts","sourceRoot":"","sources":["../../../../src/bitgo/safe/iSafes.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAC;AAClE,OAAO,EAAE,mBAAmB,EAAE,qBAAqB,EAAE,MAAM,SAAS,CAAC;AACrE,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAE9B;;;;;;;;GAQG;AACH,MAAM,WAAW,iBAAiB;IAChC,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;CACpB;AAED;;;GAGG;AACH,MAAM,WAAW,kBAAkB;IACjC,MAAM,EAAE,MAAM,CAAC;CAChB;AAED;;;;GAIG;AACH,MAAM,MAAM,QAAQ,GAAG,mBAAmB,CAAC;AAE3C;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,EAAE,EAAE,MAAM,CAAC;CACZ;AAED;;GAEG;AACH,MAAM,WAAW,MAAM;IACrB;;;;OAIG;IACH,YAAY,CAAC,MAAM,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACvD;;;;;OAKG;IACH,cAAc,CAAC,MAAM,EAAE,qBAAqB,GAAG,OAAO,CAAC,sBAAsB,CAAC,CAAC;IAC/E;;;OAGG;IACH,cAAc,CAAC,MAAM,EAAE,iBAAiB,GAAG,kBAAkB,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;IAClF;;;OAGG;IACH,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,mBAAmB,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACzE;;;OAGG;IACH,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC3C,oBAAoB;IACpB,IAAI,CAAC,MAAM,CAAC,EAAE,gBAAgB,GAAG,OAAO,CAAC;QAAE,KAAK,EAAE,IAAI,EAAE,CAAC;QAAC,UAAU,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACjF,oBAAoB;IACpB,GAAG,CAAC,MAAM,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAC5C"}
@@ -1,3 +1,3 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaVNhZmVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2JpdGdvL3NhZmUvaVNhZmVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBwcmV0dGllclxuICpcbiAqIEBleHBlcmltZW50YWwgVGhlIHNhZmUgY2xpZW50IHN1cmZhY2UgaXMgZXhwZXJpbWVudGFsIGFuZCBtYXkgY2hhbmdlIChpbmNsdWRpbmcgYnJlYWtpbmdcbiAqIGNoYW5nZXMpIGJlZm9yZSB0aGUgcHVibGljIHJlbGVhc2UuXG4gKi9cbmltcG9ydCB7IEZpbmFsaXplU2FmZU9wdGlvbnMsIEluaXRpYWxpemVTYWZlT3B0aW9ucyB9IGZyb20gJy4vaVNhZmUnO1xuaW1wb3J0IHsgU2FmZSB9IGZyb20gJy4vc2FmZSc7XG5cbi8qKlxuICogT3B0aW9ucyBmb3Igc2FmZSBjcmVhdGlvbi5cbiAqXG4gKiB2MSB0YXJnZXRzIHRoZSBIT1QgY3VzdG9keSBtb2RlbCBvbmx5OiB0aGUgbXVsdGlzaWcgcm9vdCB1c2VyL2JhY2t1cCBrZXlzIGFyZSBnZW5lcmF0ZWQgbG9jYWxseVxuICogYnkgdGhlIFNESywgZW5jcnlwdGVkIHdpdGggYHBhc3NwaHJhc2VgLCBhbmQgcmVnaXN0ZXJlZCBvbiBCaXRHbzsgdGhlIE1QQyByb290cyBydW4gdGhlIHN0YW5kYXJkXG4gKiBob3QgY2VyZW1vbmllcyB3aXRoIHRoZSBzYW1lIHBhc3NwaHJhc2UuIFNlbGYtbWFuYWdlZCBjb2xkIGtleXMgYW5kIGN1c3RvZGlhbCBzYWZlcyBhcmUgb3V0IG9mXG4gKiBzY29wZSBmb3IgdjEuXG4gKiBAZXhwZXJpbWVudGFsXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ3JlYXRlU2FmZU9wdGlvbnMge1xuICBsYWJlbDogc3RyaW5nO1xuICBwYXNzcGhyYXNlOiBzdHJpbmc7IC8vIGVuY3J5cHRzIHRoZSBsb2NhbGx5LWdlbmVyYXRlZCBtdWx0aXNpZyB1c2VyL2JhY2t1cCBwcnZzOyBzaGFyZWQgd2l0aCB0aGUgTVBDIGNlcmVtb25pZXNcbn1cblxuLyoqXG4gKiBIYW5kbGUgcmV0dXJuZWQgYnkgYGluaXRpYWxpemVTYWZlYCwgdGhyZWFkZWQgaW50byB0aGUga2V5IGNlcmVtb25pZXMgYW5kIGZpbmFsaXplLlxuICogQGV4cGVyaW1lbnRhbFxuICovXG5leHBvcnQgaW50ZXJmYWNlIFNhZmVDcmVhdGlvbkhhbmRsZSB7XG4gIHNhZmVJZDogc3RyaW5nO1xufVxuXG4vKipcbiAqIFRoZSAxMiBtaW50ZWQgcm9vdCBrZXkgaWRzIHByb2R1Y2VkIGJ5IGBjcmVhdGVTYWZlS2V5c2AsIGFzIDQgb3JkZXJlZCBbdXNlciwgYmFja3VwLCBiaXRnb11cbiAqIHRyaXBsZXRzIOKAlCBleGFjdGx5IHRoZSBwYXlsb2FkIGBmaW5hbGl6ZVNhZmVgIGNvbnN1bWVzLlxuICogQGV4cGVyaW1lbnRhbFxuICovXG5leHBvcnQgdHlwZSBTYWZlS2V5cyA9IEZpbmFsaXplU2FmZU9wdGlvbnM7XG5cbi8qKlxuICogQGV4cGVyaW1lbnRhbFxuICovXG5leHBvcnQgaW50ZXJmYWNlIExpc3RTYWZlc09wdGlvbnMge1xuICBjdXJzb3I/OiBzdHJpbmc7IC8vIG9wYXF1ZSBjdXJzb3IgZnJvbSBhIHByZXZpb3VzIHJlc3BvbnNlJ3MgbmV4dEN1cnNvclxuICBsaW1pdD86IG51bWJlcjtcbn1cblxuLyoqXG4gKiBAZXhwZXJpbWVudGFsXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgR2V0U2FmZU9wdGlvbnMge1xuICBpZDogc3RyaW5nO1xufVxuXG4vKipcbiAqIEBleHBlcmltZW50YWxcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJU2FmZXMge1xuICAvKipcbiAgICogT25lLWNhbGwgY29udmVuaWVuY2Ugd3JhcHBlciBjaGFpbmluZyB0aGUgdGhyZWUgY3JlYXRpb24gcGhhc2VzOlxuICAgKiBpbml0aWFsaXplIOKGkiBjcmVhdGVTYWZlS2V5cyAoNCBzYWZlSWQtdGFnZ2VkIGNlcmVtb25pZXMpIOKGkiBmaW5hbGl6ZS4gSE9UIGN1c3RvZHkgb25seSBpbiB2MS5cbiAgICogQGV4cGVyaW1lbnRhbFxuICAgKi9cbiAgZ2VuZXJhdGVTYWZlKHBhcmFtczogQ3JlYXRlU2FmZU9wdGlvbnMpOiBQcm9taXNlPFNhZmU+O1xuICAvKipcbiAgICogUGhhc2UgMSDigJQgaW5pdGlhbGl6ZSBhIHNhZmUgKG1ldGFkYXRhIG9ubHksIG5vIGtleSBtYXRlcmlhbCkuXG4gICAqIEBleHBlcmltZW50YWxcbiAgICovXG4gIGluaXRpYWxpemVTYWZlKHBhcmFtczogSW5pdGlhbGl6ZVNhZmVPcHRpb25zKTogUHJvbWlzZTxTYWZlPjtcbiAgLyoqXG4gICAqIFBoYXNlIDIg4oCUIHJ1biB0aGUgNCByb290IGtleSBjZXJlbW9uaWVzIHRhZ2dlZCB3aXRoIGBzYWZlSWRgOyByZXR1cm5zIHRoZSAxMiBtaW50ZWQga2V5IGlkcy5cbiAgICogQGV4cGVyaW1lbnRhbFxuICAgKi9cbiAgY3JlYXRlU2FmZUtleXMocGFyYW1zOiBDcmVhdGVTYWZlT3B0aW9ucyAmIFNhZmVDcmVhdGlvbkhhbmRsZSk6IFByb21pc2U8U2FmZUtleXM+O1xuICAvKipcbiAgICogUGhhc2UgMyDigJQgZmluYWxpemUgYSBzYWZlIHdpdGggdGhlIDEyIHJvb3Qga2V5IGlkcy4gSWRlbXBvdGVudC5cbiAgICogQGV4cGVyaW1lbnRhbFxuICAgKi9cbiAgZmluYWxpemVTYWZlKHNhZmVJZDogc3RyaW5nLCBwYXJhbXM6IEZpbmFsaXplU2FmZU9wdGlvbnMpOiBQcm9taXNlPFNhZmU+O1xuICAvKipcbiAgICogQXJjaGl2ZSBhIHNhZmUuIEFsc28gdGhlIGFiYW5kb25tZW50IHBhdGggZm9yIGEgc3R1Y2sgYGluaXRpYWxpemluZ2Agc2FmZS5cbiAgICogQGV4cGVyaW1lbnRhbFxuICAgKi9cbiAgYXJjaGl2ZVNhZmUoc2FmZUlkOiBzdHJpbmcpOiBQcm9taXNlPFNhZmU+O1xuICAvKiogQGV4cGVyaW1lbnRhbCAqL1xuICBsaXN0KHBhcmFtcz86IExpc3RTYWZlc09wdGlvbnMpOiBQcm9taXNlPHsgc2FmZXM6IFNhZmVbXTsgbmV4dEN1cnNvcj86IHN0cmluZyB9PjtcbiAgLyoqIEBleHBlcmltZW50YWwgKi9cbiAgZ2V0KHBhcmFtczogR2V0U2FmZU9wdGlvbnMpOiBQcm9taXNlPFNhZmU+O1xufVxuIl19
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaVNhZmVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2JpdGdvL3NhZmUvaVNhZmVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBwcmV0dGllclxuICpcbiAqIEBleHBlcmltZW50YWwgVGhlIHNhZmUgY2xpZW50IHN1cmZhY2UgaXMgZXhwZXJpbWVudGFsIGFuZCBtYXkgY2hhbmdlIChpbmNsdWRpbmcgYnJlYWtpbmdcbiAqIGNoYW5nZXMpIGJlZm9yZSB0aGUgcHVibGljIHJlbGVhc2UuXG4gKi9cbmltcG9ydCB0eXBlIHsgSW5pdGlhbGl6ZVNhZmVSZXNwb25zZSB9IGZyb20gJ0BiaXRnby9wdWJsaWMtdHlwZXMnO1xuaW1wb3J0IHsgRmluYWxpemVTYWZlT3B0aW9ucywgSW5pdGlhbGl6ZVNhZmVPcHRpb25zIH0gZnJvbSAnLi9pU2FmZSc7XG5pbXBvcnQgeyBTYWZlIH0gZnJvbSAnLi9zYWZlJztcblxuLyoqXG4gKiBPcHRpb25zIGZvciBzYWZlIGNyZWF0aW9uLlxuICpcbiAqIHYxIHRhcmdldHMgdGhlIEhPVCBjdXN0b2R5IG1vZGVsIG9ubHk6IHRoZSBtdWx0aXNpZyByb290IHVzZXIvYmFja3VwIGtleXMgYXJlIGdlbmVyYXRlZCBsb2NhbGx5XG4gKiBieSB0aGUgU0RLLCBlbmNyeXB0ZWQgd2l0aCBgcGFzc3BocmFzZWAsIGFuZCByZWdpc3RlcmVkIG9uIEJpdEdvOyB0aGUgTVBDIHJvb3RzIHJ1biB0aGUgc3RhbmRhcmRcbiAqIGhvdCBjZXJlbW9uaWVzIHdpdGggdGhlIHNhbWUgcGFzc3BocmFzZS4gU2VsZi1tYW5hZ2VkIGNvbGQga2V5cyBhbmQgY3VzdG9kaWFsIHNhZmVzIGFyZSBvdXQgb2ZcbiAqIHNjb3BlIGZvciB2MS5cbiAqIEBleHBlcmltZW50YWxcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBDcmVhdGVTYWZlT3B0aW9ucyB7XG4gIGxhYmVsOiBzdHJpbmc7XG4gIHBhc3NwaHJhc2U6IHN0cmluZzsgLy8gZW5jcnlwdHMgdGhlIGxvY2FsbHktZ2VuZXJhdGVkIG11bHRpc2lnIHVzZXIvYmFja3VwIHBydnM7IHNoYXJlZCB3aXRoIHRoZSBNUEMgY2VyZW1vbmllc1xufVxuXG4vKipcbiAqIEhhbmRsZSByZXR1cm5lZCBieSBgaW5pdGlhbGl6ZVNhZmVgLCB0aHJlYWRlZCBpbnRvIHRoZSBrZXkgY2VyZW1vbmllcyBhbmQgZmluYWxpemUuXG4gKiBAZXhwZXJpbWVudGFsXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU2FmZUNyZWF0aW9uSGFuZGxlIHtcbiAgc2FmZUlkOiBzdHJpbmc7XG59XG5cbi8qKlxuICogVGhlIDEyIG1pbnRlZCByb290IGtleSBpZHMgcHJvZHVjZWQgYnkgYGNyZWF0ZVNhZmVLZXlzYCwgYXMgNCBvcmRlcmVkIFt1c2VyLCBiYWNrdXAsIGJpdGdvXVxuICogdHJpcGxldHMg4oCUIGV4YWN0bHkgdGhlIHBheWxvYWQgYGZpbmFsaXplU2FmZWAgY29uc3VtZXMuXG4gKiBAZXhwZXJpbWVudGFsXG4gKi9cbmV4cG9ydCB0eXBlIFNhZmVLZXlzID0gRmluYWxpemVTYWZlT3B0aW9ucztcblxuLyoqXG4gKiBAZXhwZXJpbWVudGFsXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTGlzdFNhZmVzT3B0aW9ucyB7XG4gIGN1cnNvcj86IHN0cmluZzsgLy8gb3BhcXVlIGN1cnNvciBmcm9tIGEgcHJldmlvdXMgcmVzcG9uc2UncyBuZXh0Q3Vyc29yXG4gIGxpbWl0PzogbnVtYmVyO1xufVxuXG4vKipcbiAqIEBleHBlcmltZW50YWxcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBHZXRTYWZlT3B0aW9ucyB7XG4gIGlkOiBzdHJpbmc7XG59XG5cbi8qKlxuICogQGV4cGVyaW1lbnRhbFxuICovXG5leHBvcnQgaW50ZXJmYWNlIElTYWZlcyB7XG4gIC8qKlxuICAgKiBPbmUtY2FsbCBjb252ZW5pZW5jZSB3cmFwcGVyIGNoYWluaW5nIHRoZSB0aHJlZSBjcmVhdGlvbiBwaGFzZXM6XG4gICAqIGluaXRpYWxpemUg4oaSIGNyZWF0ZVNhZmVLZXlzICg0IHNhZmVJZC10YWdnZWQgY2VyZW1vbmllcykg4oaSIGZpbmFsaXplLiBIT1QgY3VzdG9keSBvbmx5IGluIHYxLlxuICAgKiBAZXhwZXJpbWVudGFsXG4gICAqL1xuICBnZW5lcmF0ZVNhZmUocGFyYW1zOiBDcmVhdGVTYWZlT3B0aW9ucyk6IFByb21pc2U8U2FmZT47XG4gIC8qKlxuICAgKiBQaGFzZSAxIOKAlCBpbml0aWFsaXplIGEgc2FmZSAobWV0YWRhdGEgb25seSwgbm8ga2V5IG1hdGVyaWFsKS4gVGhlIHNlcnZlciByZXNwb25zZSBpcyBqdXN0XG4gICAqIGB7IGlkLCBzdGF0dXMgfWAgKG5vIGBsYWJlbGAvYGVudGVycHJpc2VJZGAvYGNyZWF0b3JgL2B1c2Vyc2AvYGNyZWF0ZWRBdGAgeWV0KSwgc28gdGhpc1xuICAgKiByZXR1cm5zIHRoYXQgcmF3IHNoYXBlIHJhdGhlciB0aGFuIGEgZnVsbCBgU2FmZWAuXG4gICAqIEBleHBlcmltZW50YWxcbiAgICovXG4gIGluaXRpYWxpemVTYWZlKHBhcmFtczogSW5pdGlhbGl6ZVNhZmVPcHRpb25zKTogUHJvbWlzZTxJbml0aWFsaXplU2FmZVJlc3BvbnNlPjtcbiAgLyoqXG4gICAqIFBoYXNlIDIg4oCUIHJ1biB0aGUgNCByb290IGtleSBjZXJlbW9uaWVzIHRhZ2dlZCB3aXRoIGBzYWZlSWRgOyByZXR1cm5zIHRoZSAxMiBtaW50ZWQga2V5IGlkcy5cbiAgICogQGV4cGVyaW1lbnRhbFxuICAgKi9cbiAgY3JlYXRlU2FmZUtleXMocGFyYW1zOiBDcmVhdGVTYWZlT3B0aW9ucyAmIFNhZmVDcmVhdGlvbkhhbmRsZSk6IFByb21pc2U8U2FmZUtleXM+O1xuICAvKipcbiAgICogUGhhc2UgMyDigJQgZmluYWxpemUgYSBzYWZlIHdpdGggdGhlIDEyIHJvb3Qga2V5IGlkcy4gSWRlbXBvdGVudC5cbiAgICogQGV4cGVyaW1lbnRhbFxuICAgKi9cbiAgZmluYWxpemVTYWZlKHNhZmVJZDogc3RyaW5nLCBwYXJhbXM6IEZpbmFsaXplU2FmZU9wdGlvbnMpOiBQcm9taXNlPFNhZmU+O1xuICAvKipcbiAgICogQXJjaGl2ZSBhIHNhZmUuIEFsc28gdGhlIGFiYW5kb25tZW50IHBhdGggZm9yIGEgc3R1Y2sgYGluaXRpYWxpemluZ2Agc2FmZS5cbiAgICogQGV4cGVyaW1lbnRhbFxuICAgKi9cbiAgYXJjaGl2ZVNhZmUoc2FmZUlkOiBzdHJpbmcpOiBQcm9taXNlPFNhZmU+O1xuICAvKiogQGV4cGVyaW1lbnRhbCAqL1xuICBsaXN0KHBhcmFtcz86IExpc3RTYWZlc09wdGlvbnMpOiBQcm9taXNlPHsgc2FmZXM6IFNhZmVbXTsgbmV4dEN1cnNvcj86IHN0cmluZyB9PjtcbiAgLyoqIEBleHBlcmltZW50YWwgKi9cbiAgZ2V0KHBhcmFtczogR2V0U2FmZU9wdGlvbnMpOiBQcm9taXNlPFNhZmU+O1xufVxuIl19
@@ -1,3 +1,4 @@
1
+ import { InitializeSafeResponse } from '@bitgo/public-types';
1
2
  import { BitGoBase } from '../bitgoBase';
2
3
  import { FinalizeSafeOptions, InitializeSafeOptions } from './iSafe';
3
4
  import { CreateSafeOptions, GetSafeOptions, ISafes, ListSafesOptions, SafeCreationHandle, SafeKeys } from './iSafes';
@@ -31,9 +32,10 @@ export declare class Safes implements ISafes {
31
32
  /**
32
33
  * Phase 1 — initialize a safe (metadata only, no key material).
33
34
  * POST /api/v2/enterprise/:eId/safes { label }
35
+ * Response is just `{ id, status }` — the safe has no label/roster/etc. yet.
34
36
  * @experimental
35
37
  */
36
- initializeSafe(params: InitializeSafeOptions): Promise<Safe>;
38
+ initializeSafe(params: InitializeSafeOptions): Promise<InitializeSafeResponse>;
37
39
  /**
38
40
  * Phase 2 — run the 4 root key ceremonies tagged with `safeId`; returns the 12 minted key ids
39
41
  * as 4 ordered [user, backup, bitgo] triplets. HOT custody only in v1.
@@ -1 +1 @@
1
- {"version":3,"file":"safes.d.ts","sourceRoot":"","sources":["../../../../src/bitgo/safe/safes.ts"],"names":[],"mappings":"AAUA,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAGzC,OAAO,EAAE,mBAAmB,EAAE,qBAAqB,EAAE,MAAM,SAAS,CAAC;AACrE,OAAO,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AACrH,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAuC9B;;;;;;GAMG;AACH,qBAAa,KAAM,YAAW,MAAM;IAClC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAY;IAClC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAS;gBAE1B,KAAK,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM;IAKlD;;;OAGG;IACH,OAAO,CAAC,GAAG;IAIX;;;;;;;;OAQG;IACG,YAAY,CAAC,MAAM,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC;IAM5D;;;;OAIG;IACG,cAAc,CAAC,MAAM,EAAE,qBAAqB,GAAG,OAAO,CAAC,IAAI,CAAC;IAMlE;;;;;;;;;;;;OAYG;IACG,cAAc,CAAC,MAAM,EAAE,iBAAiB,GAAG,kBAAkB,GAAG,OAAO,CAAC,QAAQ,CAAC;IAkDvF;;;;;OAKG;IACG,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAShD;;;;;OAKG;IACG,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,mBAAmB,GAAG,OAAO,CAAC,IAAI,CAAC;IAW9E;;;OAGG;IACH,OAAO,CAAC,WAAW;IAOnB;;;;;;OAMG;YACW,kBAAkB;IA0BhC;;;;;OAKG;YACW,aAAa;IAY3B;;;;;;;OAOG;IACG,IAAI,CAAC,MAAM,GAAE,gBAAqB,GAAG,OAAO,CAAC;QAAE,KAAK,EAAE,IAAI,EAAE,CAAC;QAAC,UAAU,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAiB1F;;;;OAIG;IACG,GAAG,CAAC,MAAM,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC;CAKjD"}
1
+ {"version":3,"file":"safes.d.ts","sourceRoot":"","sources":["../../../../src/bitgo/safe/safes.ts"],"names":[],"mappings":"AAOA,OAAO,EAGL,sBAAsB,EAIvB,MAAM,qBAAqB,CAAC;AAG7B,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAGzC,OAAO,EAAE,mBAAmB,EAAE,qBAAqB,EAAE,MAAM,SAAS,CAAC;AACrE,OAAO,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AACrH,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAuC9B;;;;;;GAMG;AACH,qBAAa,KAAM,YAAW,MAAM;IAClC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAY;IAClC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAS;gBAE1B,KAAK,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM;IAKlD;;;OAGG;IACH,OAAO,CAAC,GAAG;IAIX;;;;;;;;OAQG;IACG,YAAY,CAAC,MAAM,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC;IAM5D;;;;;OAKG;IACG,cAAc,CAAC,MAAM,EAAE,qBAAqB,GAAG,OAAO,CAAC,sBAAsB,CAAC;IAKpF;;;;;;;;;;;;OAYG;IACG,cAAc,CAAC,MAAM,EAAE,iBAAiB,GAAG,kBAAkB,GAAG,OAAO,CAAC,QAAQ,CAAC;IAkDvF;;;;;OAKG;IACG,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAShD;;;;;OAKG;IACG,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,mBAAmB,GAAG,OAAO,CAAC,IAAI,CAAC;IAW9E;;;OAGG;IACH,OAAO,CAAC,WAAW;IAOnB;;;;;;OAMG;YACW,kBAAkB;IA0BhC;;;;;OAKG;YACW,aAAa;IAY3B;;;;;;;OAOG;IACG,IAAI,CAAC,MAAM,GAAE,gBAAqB,GAAG,OAAO,CAAC;QAAE,KAAK,EAAE,IAAI,EAAE,CAAC;QAAC,UAAU,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAiB1F;;;;OAIG;IACG,GAAG,CAAC,MAAM,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC;CAKjD"}
@@ -111,18 +111,18 @@ class Safes {
111
111
  */
112
112
  async generateSafe(params) {
113
113
  const safe = await this.initializeSafe({ label: params.label });
114
- const rootKeys = await this.createSafeKeys({ ...params, safeId: safe.id() });
115
- return await this.finalizeSafe(safe.id(), rootKeys);
114
+ const rootKeys = await this.createSafeKeys({ ...params, safeId: safe.id });
115
+ return await this.finalizeSafe(safe.id, rootKeys);
116
116
  }
117
117
  /**
118
118
  * Phase 1 — initialize a safe (metadata only, no key material).
119
119
  * POST /api/v2/enterprise/:eId/safes { label }
120
+ * Response is just `{ id, status }` — the safe has no label/roster/etc. yet.
120
121
  * @experimental
121
122
  */
122
123
  async initializeSafe(params) {
123
124
  const response = await (0, postWithCodec_1.postWithCodec)(this.bitgo, this.url(), public_types_1.InitializeSafeBody, params).result();
124
- const safeData = (0, codecs_1.decodeWithCodec)(public_types_1.SafeData, response, 'SafeData');
125
- return new safe_1.Safe(this.bitgo, safeData);
125
+ return (0, codecs_1.decodeWithCodec)(public_types_1.InitializeSafeResponse, response, 'InitializeSafeResponse');
126
126
  }
127
127
  /**
128
128
  * Phase 2 — run the 4 root key ceremonies tagged with `safeId`; returns the 12 minted key ids
@@ -291,4 +291,4 @@ class Safes {
291
291
  }
292
292
  }
293
293
  exports.Safes = Safes;
294
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2FmZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvYml0Z28vc2FmZS9zYWZlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTs7Ozs7R0FLRztBQUNILHlDQUEyQjtBQUMzQixzREFBa0g7QUFDbEgseUNBQTRDO0FBRzVDLDRDQUFrRDtBQUNsRCwwREFBdUQ7QUFHdkQsaUNBQThCO0FBRTlCOzs7Ozs7R0FNRztBQUNILE1BQU0sb0JBQW9CLEdBQStEO0lBQ3ZGLE9BQU8sRUFBRTtRQUNQLGlCQUFpQjtRQUNqQixpQkFBaUIsRUFBRSxLQUFLO1FBQ3hCLGVBQWUsRUFBRSxLQUFLO1FBQ3RCLFlBQVk7UUFDWixRQUFRLEVBQUUsS0FBSztRQUNmLFFBQVEsRUFBRSxLQUFLO0tBQ2hCO0lBQ0QsT0FBTyxFQUFFO1FBQ1AsaUJBQWlCO1FBQ2pCLGlCQUFpQixFQUFFLE1BQU07UUFDekIsZUFBZSxFQUFFLE1BQU07UUFDdkIsWUFBWTtRQUNaLFFBQVEsRUFBRSxPQUFPO1FBQ2pCLFFBQVEsRUFBRSxNQUFNO0tBQ2pCO0NBQ0YsQ0FBQztBQUVGOzs7OztHQUtHO0FBQ0gsTUFBTSxpQkFBaUIsR0FBRyxDQUFDLENBQUMsWUFBWSxDQUFDO0lBQ3ZDLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyx1QkFBUSxDQUFDLEVBQUUsQ0FBQztJQUNwQyxDQUFDLENBQUMsT0FBTyxDQUFDLEVBQUUsZUFBZSxFQUFFLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQztDQUN6QyxDQUFDLENBQUM7QUFFSDs7Ozs7O0dBTUc7QUFDSCxNQUFhLEtBQUs7SUFJaEIsWUFBWSxLQUFnQixFQUFFLFlBQW9CO1FBQ2hELElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO1FBQ25CLElBQUksQ0FBQyxZQUFZLEdBQUcsWUFBWSxD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QUlHO0lBQ0gsS0FBSyxDQUFDLEdBQUcsQ0FBQyxNQUFzQjtRQUM5QixNQUFNLFFBQVEsR0FBRyxNQUFNLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxNQUFNLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBQzFFLE1BQU0sUUFBUSxHQUFHLElBQUEsd0JBQWUsRUFBQyx1QkFBUSxFQUFFLFFBQVEsRUFBRSxVQUFVLENBQUMsQ0FBQztRQUNqRSxPQUFPLElBQUksV0FBSSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsUUFBUSxDQUFDLENBQUM7SUFDeEMsQ0FBQztDQUNGO0FBM09ELHNCQTJPQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQHByZXR0aWVyXG4gKlxuICogQGV4cGVyaW1lbnRhbCBUaGUgc2FmZSBjbGllbnQgc3VyZmFjZSBpcyBleHBlcmltZW50YWwgYW5kIG1heSBjaGFuZ2UgKGluY2x1ZGluZyBicmVha2luZ1xuICogY2hhbmdlcykgYmVmb3JlIHRoZSBwdWJsaWMgcmVsZWFzZS5cbiAqL1xuaW1wb3J0ICogYXMgdCBmcm9tICdpby10cyc7XG5pbXBvcnQgeyBGaW5hbGl6ZVNhZmVCb2R5LCBJbml0aWFsaXplU2FmZUJvZHksIFJvb3RLZXlUcmlwbGV0LCBSb290S2V5VHlwZSwgU2FmZURhdGEgfSBmcm9tICdAYml0Z28vcHVibGljLXR5cGVzJztcbmltcG9ydCB7IEVudmlyb25tZW50cyB9IGZyb20gJy4uLy4uL2NvbW1vbic7XG5pbXBvcnQgeyBJQmFzZUNvaW4gfSBmcm9tICcuLi9iYXNlQ29pbic7XG5pbXBvcnQgeyBCaXRHb0Jhc2UgfSBmcm9tICcuLi9iaXRnb0Jhc2UnO1xuaW1wb3J0IHsgZGVjb2RlV2l0aENvZGVjIH0gZnJvbSAnLi4vdXRpbHMvY29kZWNzJztcbmltcG9ydCB7IHBvc3RXaXRoQ29kZWMgfSBmcm9tICcuLi91dGlscy9wb3N0V2l0aENvZGVjJztcbmltcG9ydCB7IEZpbmFsaXplU2FmZU9wdGlvbnMsIEluaXRpYWxpemVTYWZlT3B0aW9ucyB9IGZyb20gJy4vaVNhZmUnO1xuaW1wb3J0IHsgQ3JlYXRlU2FmZU9wdGlvbnMsIEdldFNhZmVPcHRpb25zLCBJU2FmZXMsIExpc3RTYWZlc09wdGlvbnMsIFNhZmVDcmVhdGlvbkhhbmRsZSwgU2FmZUtleXMgfSBmcm9tICcuL2lTYWZlcyc7XG5pbXBvcnQgeyBTYWZlIH0gZnJvbSAnLi9zYWZlJztcblxuLyoqXG4gKiBSZXByZXNlbnRhdGl2ZSBjb2luIHBlciByb290IHNsb3QsIGJ5IG5ldHdvcmsuIFNhZmUgcm9vdHMgYXJlIGN1cnZlL3NjaGVtZS1zY29wZWQsIG5vdFxuICogY29pbi1zY29wZWQg4oCUIFdQIHN0YW1wcyBgY3VydmVgIHNlcnZlci1zaWRlIGZyb20gdGhlIGNvaW4ncyBrZXkgY3VydmUsIHNvIGFueSBjb2luIG9mIHRoZVxuICogcmlnaHQgKGN1cnZlLCBzY2hlbWUpIHdvcmtzLiBUaGVzZSBhcmUgc3RhYmxlLCBhbHdheXMtYXZhaWxhYmxlIGNob2ljZXMgdXNlZCBvbmx5IHRvIHJvdXRlXG4gKiB0aGUga2V5LWdlbmVyYXRpb24gY2VyZW1vbnk7IHRoZSByZXN1bHRpbmcgcm9vdCBpcyBpbnRlcmNoYW5nZWFibGUgYWNyb3NzIGNvaW5zIG9mIHRoZSBzbG90LlxuICogQGV4cGVyaW1lbnRhbFxuICovXG5jb25zdCBST09UX0NPSU5fQllfTkVUV09SSzogUmVjb3JkPCdtYWlubmV0JyB8ICd0ZXN0bmV0JywgUmVjb3JkPFJvb3RLZXlUeXBlLCBzdHJpbmc+PiA9IHtcbiAgbWFpbm5ldDoge1xuICAgIC8vIG11bHRpc2lnIHJvb3RzXG4gICAgc2VjcDI1NmsxTXVsdGlzaWc6ICdidGMnLFxuICAgIGVkMjU1MTlNdWx0aXNpZzogJ3hsbScsXG4gICAgLy8gTVBDIHJvb3RzXG4gICAgZWNkc2FNcGM6ICdldGgnLFxuICAgIGVkZHNhTXBjOiAnc29sJyxcbiAgfSxcbiAgdGVzdG5ldDoge1xuICAgIC8vIG11bHRpc2lnIHJvb3RzXG4gICAgc2VjcDI1NmsxTXVsdGlzaWc6ICd0YnRjJyxcbiAgICBlZDI1NTE5TXVsdGlzaWc6ICd0eGxtJyxcbiAgICAvLyBNUEMgcm9vdHNcbiAgICBlY2RzYU1wYzogJ2h0ZXRoJyxcbiAgICBlZGRzYU1wYzogJ3Rzb2wnLFxuICB9LFxufTtcblxuLyoqXG4gKiBXaXJlIHNoYXBlIG9mIHRoZSBwYWdpbmF0ZWQgYEdFVCAvZW50ZXJwcmlzZS86ZUlkL3NhZmVzYCByZXNwb25zZS4gV1AgcGFnaW5hdGVzIHdpdGggdGhlIHYyXG4gKiBgcHJldklkYC9gbmV4dEJhdGNoUHJldklkYCBjb252ZW50aW9uOyB0aGUgU0RLIHJlLWV4cG9zZXMgaXQgYXMgYW4gb3BhcXVlIGBjdXJzb3JgL2BuZXh0Q3Vyc29yYFxuICogKHNlZSBgbGlzdGApLlxuICogQGV4cGVyaW1lbnRhbFxuICovXG5jb25zdCBMaXN0U2FmZXNSZXNwb25zZSA9IHQuaW50ZXJzZWN0aW9uKFtcbiAgdC50eXBlKHsgc2FmZXM6IHQuYXJyYXkoU2FmZURhdGEpIH0pLFxuICB0LnBhcnRpYWwoeyBuZXh0QmF0Y2hQcmV2SWQ6IHQuc3RyaW5nIH0pLFxuXSk7XG5cbi8qKlxuICogQ29sbGVjdGlvbiBhY2Nlc3NvciBmb3IgYSBzaW5nbGUgZW50ZXJwcmlzZSdzIHNhZmVzLCBtaXJyb3JpbmcgV2FsbGV0cyAvIEVudGVycHJpc2VzLlxuICogU2FmZSByb3V0ZXMgYXJlIGVudGVycHJpc2Utc2NvcGVkICgvYXBpL3YyL2VudGVycHJpc2UvOmVJZC9zYWZlcyksIHNvIHRoZSBhY2Nlc3NvciBpc1xuICogY29uc3RydWN0ZWQgd2l0aCB0aGUgZW50ZXJwcmlzZSBpZCAoc2VlIEVudGVycHJpc2Uuc2FmZXMoKSkuXG4gKlxuICogQGV4cGVyaW1lbnRhbFxuICovXG5leHBvcnQgY2xhc3MgU2FmZXMgaW1wbGVtZW50cyBJU2FmZXMge1xuICBwcml2YXRlIHJlYWRvbmx5IGJpdGdvOiBCaXRHb0Jhc2U7XG4gIHByaXZhdGUgcmVhZG9ubHkgZW50ZXJwcmlzZUlkOiBzdHJpbmc7XG5cbiAgY29uc3RydWN0b3IoYml0Z286IEJpdEdvQmFzZSwgZW50ZXJwcmlzZUlkOiBzdHJpbmcpIHtcbiAgICB0aGlzLmJpdGdvID0gYml0Z287XG4gICAgdGhpcy5lbnRlcnByaXNlSWQgPSBlbnRlcnByaXNlSWQ7XG4gIH1cblxuICAvKipcbiAgICogRW50ZXJwcmlzZS1zY29wZWQgdjIgVVJMIGZvciB0aGUgc2FmZXMgY29sbGVjdGlvbiwgZS5nLiAvYXBpL3YyL2VudGVycHJpc2UvOmVJZC9zYWZlc1xuICAgKiBAcGFyYW0gZXh0cmFcbiAgICovXG4gIHByaXZhdGUgdXJsKGV4dHJhID0gJycpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmJpdGdvLnVybChgL2VudGVycHJpc2UvJHt0aGlzLmVudGVycHJpc2VJZH0vc2FmZXMke2V4dHJhfWAsIDIpO1xuICB9XG5cbiAgLyoqXG4gICAqIE9uZS1jYWxsIGNvbnZlbmllbmNlIHdyYXBwZXIgY2hhaW5pbmcgdGhlIHRocmVlIGNyZWF0aW9uIHBoYXNlczpcbiAgICogaW5pdGlhbGl6ZSAoUGhhc2UgMSkg4oaSIGNyZWF0ZVNhZmVLZXlzIChQaGFzZSAyLCA0IHNhZmVJZC10YWdnZWQgY2VyZW1vbmllcykg4oaSXG4gICAqIGZpbmFsaXplIChQaGFzZSAzKS4gSE9UIGN1c3RvZHkgb25seSBpbiB2MS5cbiAgICpcbiAgICogSWYgYSBrZXkgY2VyZW1vbnkgZmFpbHMsIGBjcmVhdGVTYWZlS2V5c2AgYXJjaGl2ZXMgdGhlIHNhZmUgYmVmb3JlIHRocm93aW5nLCBzbyBhIGZhaWxlZCBydW5cbiAgICogbGVhdmVzIG5vIGhhbGYtY3JlYXRlZCBzYWZlIGJlaGluZCDigJQgY3JlYXRlIGEgbmV3IHNhZmUgYW5kIHJldHJ5LlxuICAgKiBAZXhwZXJpbWVudGFsXG4gICAqL1xuICBhc3luYyBnZW5lcmF0ZVNhZmUocGFyYW1zOiBDcmVhdGVTYWZlT3B0aW9ucyk6IFByb21pc2U8U2FmZT4ge1xuICAgIGNvbnN0IHNhZmUgPSBhd2FpdCB0aGlzLmluaXRpYWxpemVTYWZlKHsgbGFiZWw6IHBhcmFtcy5sYWJlbCB9KTtcbiAgICBjb25zdCByb290S2V5cyA9IGF3YWl0IHRoaXMuY3JlYXRlU2FmZUtleXMoeyAuLi5wYXJhbXMsIHNhZmVJZDogc2FmZS5pZCgpIH0pO1xuICAgIHJldHVybiBhd2FpdCB0aGlzLmZpbmFsaXplU2FmZShzYWZlLmlkKCksIHJvb3RLZXlzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBQaGFzZSAxIOKAlCBpbml0aWFsaXplIGEgc2FmZSAobWV0YWRhdGEgb25seSwgbm8ga2V5IG1hdGVyaWFsKS5cbiAgICogUE9TVCAvYXBpL3YyL2VudGVycHJpc2UvOmVJZC9zYWZlcyB7IGxhYmVsIH1cbiAgICogQGV4cGVyaW1lbnRhbFxuICAgKi9cbiAgYXN5bmMgaW5pdGlhbGl6ZVNhZmUocGFyYW1zOiBJbml0aWFsaXplU2FmZU9wdGlvbnMpOiBQcm9taXNlPFNhZmU+IHtcbiAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IHBvc3RXaXRoQ29kZWModGhpcy5iaXRnbywgdGhpcy51cmwoKSwgSW5pdGlhbGl6ZVNhZmVCb2R5LCBwYXJhbXMpLnJlc3VsdCgpO1xuICAgIGNvbnN0IHNhZmVEYXRhID0gZGVjb2RlV2l0aENvZGVjKFNhZmVEYXRhLCByZXNwb25zZSwgJ1NhZmVEYXRhJyk7XG4gICAgcmV0dXJuIG5ldyBTYWZlKHRoaXMuYml0Z28sIHNhZmVEYXRhKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBQaGFzZSAyIOKAlCBydW4gdGhlIDQgcm9vdCBrZXkgY2VyZW1vbmllcyB0YWdnZWQgd2l0aCBgc2FmZUlkYDsgcmV0dXJucyB0aGUgMTIgbWludGVkIGtleSBpZHNcbiAgICogYXMgNCBvcmRlcmVkIFt1c2VyLCBiYWNrdXAsIGJpdGdvXSB0cmlwbGV0cy4gSE9UIGN1c3RvZHkgb25seSBpbiB2MS5cbiAgICpcbiAgICogQWxsIDQgY2VyZW1vbmllcyAoMi4xIG11bHRpc2lnIOKRoOKRoywgMi4yIE1QQyDikaHikaIpIHJ1biBpbiBwYXJhbGxlbC4gSWYgYW55IG9mIHRoZW0gZmFpbCwgdGhlXG4gICAqIHBhcnRpYWxseS1jcmVhdGVkIHNhZmUgaXMgYXJjaGl2ZWQgKGEgbGVnYWwgYGluaXRpYWxpemluZyDihpIgYXJjaGl2ZWRgIHRyYW5zaXRpb24sIHNvIHRoZVxuICAgKiBvcnBoYW5lZCB0YWdnZWQga2V5cyBhcmUgaW5lcnQpIGFuZCBhbiBlcnJvciBsaXN0aW5nIGV2ZXJ5IGNlcmVtb255IGZhaWx1cmUgaXMgdGhyb3duIOKAlFxuICAgKiBjcmVhdGUgYSBuZXcgc2FmZSBhbmQgcmV0cnkuXG4gICAqXG4gICAqIE5vdCBpbmRlcGVuZGVudGx5IGlkZW1wb3RlbnQ6IHJlLXJ1bm5pbmcgYWdhaW5zdCBhIHNhZmUgdGhhdCBhbHJlYWR5IGhhcyBzb21lIHJvb3RzIGhpdHMgV1Anc1xuICAgKiB1bmlxdWUgcm9vdC1zbG90IGluZGV4LlxuICAgKiBAZXhwZXJpbWVudGFsXG4gICAqL1xuICBhc3luYyBjcmVhdGVTYWZlS2V5cyhwYXJhbXM6IENyZWF0ZVNhZmVPcHRpb25zICYgU2FmZUNyZWF0aW9uSGFuZGxlKTogUHJvbWlzZTxTYWZlS2V5cz4ge1xuICAgIGNvbnN0IHsgc2FmZUlkLCBwYXNzcGhyYXNlIH0gPSBwYXJhbXM7XG4gICAgY29uc3QgZW50ZXJwcmlzZSA9IHRoaXMuZW50ZXJwcmlzZUlkO1xuXG4gICAgLy8gYHNsb3RzYCBNVVNUIHN0YXkgaW5kZXgtYWxpZ25lZCB3aXRoIHRoZSBQcm9taXNlLmFsbFNldHRsZWQgYXJyYXkgYmVsb3cuIE9yZGVyZWQgYnkgc2NoZW1lOlxuICAgIC8vIHRoZSB0d28gbXVsdGlzaWcgcm9vdHMgZmlyc3QsIHRoZW4gdGhlIHR3byBNUEMgcm9vdHMuXG4gICAgY29uc3Qgc2xvdHM6IFJvb3RLZXlUeXBlW10gPSBbJ3NlY3AyNTZrMU11bHRpc2lnJywgJ2VkMjU1MTlNdWx0aXNpZycsICdlY2RzYU1wYycsICdlZGRzYU1wYyddO1xuICAgIGNvbnN0IHJlc3VsdHMgPSBhd2FpdCBQcm9taXNlLmFsbFNldHRsZWQoW1xuICAgICAgLy8gUGhhc2UgMi4xIOKAlCBtdWx0aXNpZyByb290cyAo4pGg4pGjKTogbG9jYWwgdXNlci9iYWNrdXAga2V5cGFpcnMgKyBCaXRHbyBrZXksIGFsbCBzYWZlSWQtdGFnZ2VkLlxuICAgICAgdGhpcy5jcmVhdGVNdWx0aXNpZ1Jvb3QoJ3NlY3AyNTZrMU11bHRpc2lnJywgc2FmZUlkLCBwYXNzcGhyYXNlLCBlbnRlcnByaXNlKSxcbiAgICAgIHRoaXMuY3JlYXRlTXVsdGlzaWdSb290KCdlZDI1NTE5TXVsdGlzaWcnLCBzYWZlSWQsIHBhc3NwaHJhc2UsIGVudGVycHJpc2UpLFxuICAgICAgLy8gUGhhc2UgMi4yIOKAlCBNUEMgcm9vdHMgKOKRoeKRoik6IHRoZSBleGlzdGluZyBES0xTICjikaEpIGFuZCBFZERTQSAo4pGiKSBjZXJlbW9uaWVzLCBzYWZlSWQgdGhyZWFkZWQuXG4gICAgICB0aGlzLmNyZWF0ZU1wY1Jvb3QoJ2VjZHNhTXBjJywgc2FmZUlkLCBwYXNzcGhyYXNlLCBlbnRlcnByaXNlKSxcbiAgICAgIHRoaXMuY3JlYXRlTXBjUm9vdCgnZWRkc2FNcGMnLCBzYWZlSWQsIHBhc3NwaHJhc2UsIGVudGVycHJpc2UpLFxuICAgIF0pO1xuXG4gICAgLy8gU2luZ2xlIHBhc3Mgb3ZlciB0aGUgc2V0dGxlZCByZXN1bHRzOiBgc3RhdHVzID09PSAnZnVsZmlsbGVkJ2AgbmFycm93cyBgLnZhbHVlYCB0byBhXG4gICAgLy8gUm9vdEtleVRyaXBsZXQgKG5vIGNhc3QgbmVlZGVkKSwgYW5kIHJlamVjdGlvbnMgYXJlIGNvbGxlY3RlZCBwZXItc2xvdCBmb3IgdGhlIGVycm9yIGJlbG93LlxuICAgIGNvbnN0IGhvdCA9IHt9IGFzIFNhZmVLZXlzWydyb290S2V5cyddWydob3QnXTtcbiAgICBjb25zdCBmYWlsdXJlczogc3RyaW5nW10gPSBbXTtcbiAgICByZXN1bHRzLmZvckVhY2goKHJlc3VsdCwgaSkgPT4ge1xuICAgICAgaWYgKHJlc3VsdC5zdGF0dXMgPT09ICdmdWxmaWxsZWQnKSB7XG4gICAgICAgIGhvdFtzbG90c1tpXV0gPSByZXN1bHQudmFsdWU7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zdCByZWFzb24gPSByZXN1bHQucmVhc29uIGluc3RhbmNlb2YgRXJyb3IgPyByZXN1bHQucmVhc29uLm1lc3NhZ2UgOiBTdHJpbmcocmVzdWx0LnJlYXNvbik7XG4gICAgICAgIGZhaWx1cmVzLnB1c2goYCR7c2xvdHNbaV19OiAke3JlYXNvbn1gKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIGlmIChmYWlsdXJlcy5sZW5ndGggPiAwKSB7XG4gICAgICAvLyBCZXN0LWVmZm9ydCBhYmFuZG9uIHRoZSBwYXJ0aWFsbHktY3JlYXRlZCBzYWZlIHNvIGEgcmV0cnkgc3RhcnRzIGZyb20gYSBjbGVhbiBzbGF0ZS4gS2VlcFxuICAgICAgLy8gdGhlIGNlcmVtb255IGZhaWx1cmVzIGFzIHRoZSBwcmltYXJ5IGVycm9yOyBub3RlIGl0IGlmIHRoZSBjbGVhbnVwIGFyY2hpdmUgYWxzbyBmYWlsZWQuXG4gICAgICBsZXQgYXJjaGl2ZUVycm9yOiBFcnJvciB8IHVuZGVmaW5lZDtcbiAgICAgIHRyeSB7XG4gICAgICAgIGF3YWl0IHRoaXMuYXJjaGl2ZVNhZmUoc2FmZUlkKTtcbiAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgYXJjaGl2ZUVycm9yID0gZSBpbnN0YW5jZW9mIEVycm9yID8gZSA6IG5ldyBFcnJvcihTdHJpbmcoZSkpO1xuICAgICAgfVxuICAgICAgbGV0IG1lc3NhZ2UgPVxuICAgICAgICBgU2FmZSBrZXkgZ2VuZXJhdGlvbiBmYWlsZWQgZm9yICR7ZmFpbHVyZXMubGVuZ3RofSByb290IGNlcmVtb255L2llcyBgICtcbiAgICAgICAgYFske2ZhaWx1cmVzLmpvaW4oJzsgJyl9XS4gVGhlIHNhZmUgKCR7c2FmZUlkfSkgaGFzIGJlZW4gYXJjaGl2ZWQ7IGNyZWF0ZSBhIG5ldyBzYWZlIGFuZCByZXRyeS5gO1xuICAgICAgaWYgKGFyY2hpdmVFcnJvcikge1xuICAgICAgICBtZXNzYWdlICs9IGAgTk9URTogYXJjaGl2aW5nIHRoZSBzYWZlIGFsc28gZmFpbGVkICgke2FyY2hpdmVFcnJvci5tZXNzYWdlfSk7IGFyY2hpdmUgaXQgbWFudWFsbHkgYmVmb3JlIHJldHJ5aW5nLmA7XG4gICAgICB9XG4gICAgICB0aHJvdyBuZXcgRXJyb3IobWVzc2FnZSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHsgcm9vdEtleXM6IHsgaG90IH0gfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBcmNoaXZlIGEgc2FmZS4gQWxzbyB0aGUgYWJhbmRvbm1lbnQgcGF0aCBmb3IgYSBzdHVjayBgaW5pdGlhbGl6aW5nYCBzYWZlICh1c2VkIGJ5XG4gICAqIGBjcmVhdGVTYWZlS2V5c2AgdG8gY2xlYW4gdXAgYWZ0ZXIgYSBmYWlsZWQgY2VyZW1vbnkpLlxuICAgKiBQT1NUIC9hcGkvdjIvZW50ZXJwcmlzZS86ZUlkL3NhZmVzLzpzYWZlSWQvYXJjaGl2ZVxuICAgKiBAZXhwZXJpbWVudGFsXG4gICAqL1xuICBhc3luYyBhcmNoaXZlU2FmZShzYWZlSWQ6IHN0cmluZyk6IFByb21pc2U8U2FmZT4ge1xuICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgdGhpcy5iaXRnb1xuICAgICAgLnBvc3QodGhpcy51cmwoYC8ke3NhZmVJZH0vYXJjaGl2ZWApKVxuICAgICAgLnNlbmQoKVxuICAgICAgLnJlc3VsdCgpO1xuICAgIGNvbnN0IHNhZmVEYXRhID0gZGVjb2RlV2l0aENvZGVjKFNhZmVEYXRhLCByZXNwb25zZSwgJ1NhZmVEYXRhJyk7XG4gICAgcmV0dXJuIG5ldyBTYWZlKHRoaXMuYml0Z28sIHNhZmVEYXRhKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBQaGFzZSAzIOKAlCBmaW5hbGl6ZSBhIHNhZmUgd2l0aCB0aGUgMTIgcm9vdCBrZXkgaWRzIGFzIDQgb3JkZXJlZCBbdXNlciwgYmFja3VwLCBiaXRnb10gdHJpcGxldHMuXG4gICAqIFBPU1QgL2FwaS92Mi9lbnRlcnByaXNlLzplSWQvc2FmZXMvOnNhZmVJZC9maW5hbGl6ZSB7IHJvb3RLZXlzIH0uXG4gICAqIElkZW1wb3RlbnQ6IHJlLWZpbmFsaXppbmcgd2l0aCB0aGUgc2FtZSBgcm9vdEtleXNgIHJldHVybnMgdGhlIGFjdGl2ZSBzYWZlIGFnYWluICgyMDApLlxuICAgKiBAZXhwZXJpbWVudGFsXG4gICAqL1xuICBhc3luYyBmaW5hbGl6ZVNhZmUoc2FmZUlkOiBzdHJpbmcsIHBhcmFtczogRmluYWxpemVTYWZlT3B0aW9ucyk6IFByb21pc2U8U2FmZT4ge1xuICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgcG9zdFdpdGhDb2RlYyhcbiAgICAgIHRoaXMuYml0Z28sXG4gICAgICB0aGlzLnVybChgLyR7c2FmZUlkfS9maW5hbGl6ZWApLFxuICAgICAgRmluYWxpemVTYWZlQm9keSxcbiAgICAgIHBhcmFtc1xuICAgICkucmVzdWx0KCk7XG4gICAgY29uc3Qgc2FmZURhdGEgPSBkZWNvZGVXaXRoQ29kZWMoU2FmZURhdGEsIHJlc3BvbnNlLCAnU2FmZURhdGEnKTtcbiAgICByZXR1cm4gbmV3IFNhZmUodGhpcy5iaXRnbywgc2FmZURhdGEpO1xuICB9XG5cbiAgLyoqXG4gICAqIENvaW4gdXNlZCB0byByb3V0ZSBhIGdpdmVuIHJvb3QncyBrZXkgY2VyZW1vbnkgKHNlZSBST09UX0NPSU5fQllfTkVUV09SSykuXG4gICAqIEBleHBlcmltZW50YWxcbiAgICovXG4gIHByaXZhdGUgY29pbkZvclJvb3Qoc2xvdDogUm9vdEtleVR5cGUpOiBJQmFzZUNvaW4ge1xuICAgIC8vIFYxTmV0d29yayBpcyBleGFjdGx5ICdiaXRjb2luJyB8ICd0ZXN0bmV0Jywgc28gdGhpcyBicmFuY2ggaXMgZXhoYXVzdGl2ZSBvdmVyIGV2ZXJ5XG4gICAgLy8gZW52aXJvbm1lbnQ6ICdiaXRjb2luJyBpcyBtYWlubmV0IGFuZCBldmVyeSBvdGhlciB2YWx1ZSBpcyBhIHRlc3RuZXQuXG4gICAgY29uc3QgbmV0d29yayA9IEVudmlyb25tZW50c1t0aGlzLmJpdGdvLmdldEVudigpXS5uZXR3b3JrID09PSAnYml0Y29pbicgPyAnbWFpbm5ldCcgOiAndGVzdG5ldCc7XG4gICAgcmV0dXJuIHRoaXMuYml0Z28uY29pbihST09UX0NPSU5fQllfTkVUV09SS1tuZXR3b3JrXVtzbG90XSk7XG4gIH1cblxuICAvKipcbiAgICogUGhhc2UgMi4xIGhlbHBlciDigJQgbWludCBvbmUgb25jaGFpbi1tdWx0aXNpZyByb290IChjb2xkIG1vZGVsLCBhcyB3YWxsZXQgY3JlYXRpb24gZG9lcyB0b2RheSk6XG4gICAqIGdlbmVyYXRlIHVzZXIvYmFja3VwIGtleXBhaXJzIGxvY2FsbHksIGVuY3J5cHQgd2l0aCBgcGFzc3BocmFzZWAsIHJlZ2lzdGVyIHZpYSBQT1NUIC86Y29pbi9rZXlcbiAgICogd2l0aCBgc2FmZUlkYDsgdGhlIEJpdEdvIGtleSBpcyBjcmVhdGVkIHRocm91Z2ggdGhlIHNhbWUgcm91dGUncyBgc291cmNlOidiaXRnbydgIHBhdGguXG4gICAqIFJldHVybnMgdGhlIFt1c2VyLCBiYWNrdXAsIGJpdGdvXSBrZXkgaWQgdHJpcGxldC5cbiAgICogQGV4cGVyaW1lbnRhbFxuICAgKi9cbiAgcHJpdmF0ZSBhc3luYyBjcmVhdGVNdWx0aXNpZ1Jvb3QoXG4gICAgc2xvdDogJ3NlY3AyNTZrMU11bHRpc2lnJyB8ICdlZDI1NTE5TXVsdGlzaWcnLFxuICAgIHNhZmVJZDogc3RyaW5nLFxuICAgIHBhc3NwaHJhc2U6IHN0cmluZyxcbiAgICBlbnRlcnByaXNlOiBzdHJpbmdcbiAgKTogUHJvbWlzZTxSb290S2V5VHJpcGxldD4ge1xuICAgIGNvbnN0IGtleWNoYWlucyA9IHRoaXMuY29pbkZvclJvb3Qoc2xvdCkua2V5Y2hhaW5zKCk7XG5cbiAgICBjb25zdCB1c2VyS2V5UGFpciA9IGtleWNoYWlucy5jcmVhdGUoKTtcbiAgICBjb25zdCB1c2VyS2V5Y2hhaW5Qcm9taXNlID0ga2V5Y2hhaW5zLmFkZCh7XG4gICAgICBwdWI6IHVzZXJLZXlQYWlyLnB1YixcbiAgICAgIGVuY3J5cHRlZFBydjogYXdhaXQgdGhpcy5iaXRnby5lbmNyeXB0KHsgaW5wdXQ6IHVzZXJLZXlQYWlyLnBydiwgcGFzc3dvcmQ6IHBhc3NwaHJhc2UgfSksXG4gICAgICBzb3VyY2U6ICd1c2VyJyxcbiAgICAgIHNhZmVJZCxcbiAgICB9KTtcbiAgICBjb25zdCBiYWNrdXBLZXljaGFpblByb21pc2UgPSBrZXljaGFpbnMuY3JlYXRlQmFja3VwKHsgcGFzc3BocmFzZSwgc2FmZUlkIH0pO1xuICAgIGNvbnN0IGJpdGdvS2V5Y2hhaW5Qcm9taXNlID0ga2V5Y2hhaW5zLmNyZWF0ZUJpdEdvKHsgZW50ZXJwcmlzZSwgc2FmZUlkIH0pO1xuXG4gICAgY29uc3QgW3VzZXJLZXljaGFpbiwgYmFja3VwS2V5Y2hhaW4sIGJpdGdvS2V5Y2hhaW5dID0gYXdhaXQgUHJvbWlzZS5hbGwoW1xuICAgICAgdXNlcktleWNoYWluUHJvbWlzZSxcbiAgICAgIGJhY2t1cEtleWNoYWluUHJvbWlzZSxcbiAgICAgIGJpdGdvS2V5Y2hhaW5Qcm9taXNlLFxuICAgIF0pO1xuICAgIHJldHVybiBbdXNlcktleWNoYWluLmlkLCBiYWNrdXBLZXljaGFpbi5pZCwgYml0Z29LZXljaGFpbi5pZF07XG4gIH1cblxuICAvKipcbiAgICogUGhhc2UgMi4yIGhlbHBlciDigJQgcnVuIG9uZSBNUEMgY2VyZW1vbnkgKERLTFMgZm9yIGVjZHNhTXBjLCBFZERTQSBmb3IgZWRkc2FNcGMpIHZpYSB0aGVcbiAgICogZXhpc3RpbmcgYGNyZWF0ZU1wY2AgZmxvdyB3aXRoIGBzYWZlSWRgIHRocmVhZGVkIHRocm91Z2gsIHNvIHRoZSByZXN1bHRpbmcgdXNlci9iYWNrdXAvYml0Z29cbiAgICoga2V5cyBsYW5kIHRhZ2dlZC4gUmV0dXJucyB0aGUgW3VzZXIsIGJhY2t1cCwgYml0Z29dIGtleSBpZCB0cmlwbGV0LlxuICAgKiBAZXhwZXJpbWVudGFsXG4gICAqL1xuICBwcml2YXRlIGFzeW5jIGNyZWF0ZU1wY1Jvb3QoXG4gICAgc2xvdDogJ2VjZHNhTXBjJyB8ICdlZGRzYU1wYycsXG4gICAgc2FmZUlkOiBzdHJpbmcsXG4gICAgcGFzc3BocmFzZTogc3RyaW5nLFxuICAgIGVudGVycHJpc2U6IHN0cmluZ1xuICApOiBQcm9taXNlPFJvb3RLZXlUcmlwbGV0PiB7XG4gICAgY29uc3QgeyB1c2VyS2V5Y2hhaW4sIGJhY2t1cEtleWNoYWluLCBiaXRnb0tleWNoYWluIH0gPSBhd2FpdCB0aGlzLmNvaW5Gb3JSb290KHNsb3QpXG4gICAgICAua2V5Y2hhaW5zKClcbiAgICAgIC5jcmVhdGVNcGMoeyBtdWx0aXNpZ1R5cGU6ICd0c3MnLCBwYXNzcGhyYXNlLCBlbnRlcnByaXNlLCBzYWZlSWQgfSk7XG4gICAgcmV0dXJuIFt1c2VyS2V5Y2hhaW4uaWQsIGJhY2t1cEtleWNoYWluLmlkLCBiaXRnb0tleWNoYWluLmlkXTtcbiAgfVxuXG4gIC8qKlxuICAgKiBMaXN0IHRoZSBlbnRlcnByaXNlJ3Mgc2FmZXMgdGhlIGNhbGxlciBpcyBhIG1lbWJlciBvZiAoY3Vyc29yIHBhZ2luYXRpb24pLlxuICAgKiBHRVQgL2FwaS92Mi9lbnRlcnByaXNlLzplSWQvc2FmZXM/bGltaXQmcHJldklkXG4gICAqXG4gICAqIGBjdXJzb3JgIGlzIHRoZSBvcGFxdWUgYG5leHRDdXJzb3JgIHJldHVybmVkIGJ5IGEgcHJldmlvdXMgY2FsbDsgcGFnZSBmb3J3YXJkIHVudGlsXG4gICAqIGBuZXh0Q3Vyc29yYCBpcyBhYnNlbnQuXG4gICAqIEBleHBlcmltZW50YWxcbiAgICovXG4gIGFzeW5jIGxpc3QocGFyYW1zOiBMaXN0U2FmZXNPcHRpb25zID0ge30pOiBQcm9taXNlPHsgc2FmZXM6IFNhZmVbXTsgbmV4dEN1cnNvcj86IHN0cmluZyB9PiB7XG4gICAgLy8gU0RLIGV4cG9zZXMgYW4gb3BhcXVlIGN1cnNvcjsgV1Agc3BlYWtzIHByZXZJZC9uZXh0QmF0Y2hQcmV2SWQgKHYyIGxpc3QgY29udmVudGlvbikuXG4gICAgY29uc3QgcXVlcnk6IHsgbGltaXQ/OiBudW1iZXI7IHByZXZJZD86IHN0cmluZyB9ID0ge307XG4gICAgaWYgKHBhcmFtcy5saW1pdCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBxdWVyeS5saW1pdCA9IHBhcmFtcy5saW1pdDtcbiAgICB9XG4gICAgaWYgKHBhcmFtcy5jdXJzb3IgIT09IHVuZGVmaW5lZCkge1xuICAgICAgcXVlcnkucHJldklkID0gcGFyYW1zLmN1cnNvcjtcbiAgICB9XG4gICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCB0aGlzLmJpdGdvLmdldCh0aGlzLnVybCgpKS5xdWVyeShxdWVyeSkucmVzdWx0KCk7XG4gICAgY29uc3QgeyBzYWZlcywgbmV4dEJhdGNoUHJldklkIH0gPSBkZWNvZGVXaXRoQ29kZWMoTGlzdFNhZmVzUmVzcG9uc2UsIHJlc3BvbnNlLCAnTGlzdFNhZmVzUmVzcG9uc2UnKTtcbiAgICByZXR1cm4ge1xuICAgICAgc2FmZXM6IHNhZmVzLm1hcCgoc2FmZURhdGEpID0+IG5ldyBTYWZlKHRoaXMuYml0Z28sIHNhZmVEYXRhKSksXG4gICAgICBuZXh0Q3Vyc29yOiBuZXh0QmF0Y2hQcmV2SWQsXG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBGZXRjaCBhIHNpbmdsZSBzYWZlIGJ5IGlkLiBOb24tbWVtYmVycyBnZXQgYSA0MDQgKGV4aXN0ZW5jZSBpcyBub3QgbGVha2VkKS5cbiAgICogR0VUIC9hcGkvdjIvZW50ZXJwcmlzZS86ZUlkL3NhZmVzLzpzYWZlSWRcbiAgICogQGV4cGVyaW1lbnRhbFxuICAgKi9cbiAgYXN5bmMgZ2V0KHBhcmFtczogR2V0U2FmZU9wdGlvbnMpOiBQcm9taXNlPFNhZmU+IHtcbiAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IHRoaXMuYml0Z28uZ2V0KHRoaXMudXJsKGAvJHtwYXJhbXMuaWR9YCkpLnJlc3VsdCgpO1xuICAgIGNvbnN0IHNhZmVEYXRhID0gZGVjb2RlV2l0aENvZGVjKFNhZmVEYXRhLCByZXNwb25zZSwgJ1NhZmVEYXRhJyk7XG4gICAgcmV0dXJuIG5ldyBTYWZlKHRoaXMuYml0Z28sIHNhZmVEYXRhKTtcbiAgfVxufVxuIl19
294
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2FmZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvYml0Z28vc2FmZS9zYWZlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTs7Ozs7R0FLRztBQUNILHlDQUEyQjtBQUMzQixzREFPNkI7QUFDN0IseUNBQTRDO0FBRzVDLDRDQUFrRDtBQUNsRCwwREFBdUQ7QUFHdkQsaUNBQThCO0FBRTlCOzs7Ozs7R0FNRztBQUNILE1BQU0sb0JBQW9CLEdBQStEO0lBQ3ZGLE9BQU8sRUFBRTtRQUNQLGlCQUFpQjtRQUNqQixpQkFBaUIsRUFBRSxLQUFLO1FBQ3hCLGVBQWUsRUFBRSxLQUFLO1FBQ3RCLFlBQVk7UUFDWixRQUFRLEVBQUUsS0FBSztRQUNmLFFBQVEsRUFBRSxLQUFLO0tBQ2hCO0lBQ0QsT0FBTyxFQUFFO1FBQ1AsaUJBQWlCO1FBQ2pCLGlCQUFpQixFQUFFLE1BQU07UUFDekIsZUFBZSxFQUFFLE1BQU07UUFDdkIsWUFBWTtRQUNaLFFBQVEsRUFBRSxPQUFPO1FBQ2pCLFFBQVEsRUFBRSxNQUFNO0tBQ2pCO0NBQ0YsQ0FBQztBQUVGOzs7OztHQUtHO0FBQ0gsTUFBTSxpQkFBaUIsR0FBRyxDQUFDLENBQUMsWUFBWSxDQUFDO0lBQ3ZDLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyx1QkFBUSxDQUFDLEVBQUUsQ0FBQztJQUNwQyxDQUFDLENBQUMsT0FBTyxDQUFDLEVBQUUsZUFBZSxFQUFFLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQztDQUN6QyxDQUFDLENBQUM7QUFFSDs7Ozs7O0dBTUc7QUFDSCxNQUFhLEtBQUs7SUFJaEIsWUFBWSxLQUFnQixFQUFFLFlBQW9CO1FBQ2hELElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO1FBQ25CLElBQUksQ0FBQyxZQUFZLEdBQUcsWUFBWSxD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QUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksTUFBTSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUMxRSxNQUFNLFFBQVEsR0FBRyxJQUFBLHdCQUFlLEVBQUMsdUJBQVEsRUFBRSxRQUFRLEVBQUUsVUFBVSxDQUFDLENBQUM7UUFDakUsT0FBTyxJQUFJLFdBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLFFBQVEsQ0FBQyxDQUFDO0lBQ3hDLENBQUM7Q0FDRjtBQTNPRCxzQkEyT0MiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBwcmV0dGllclxuICpcbiAqIEBleHBlcmltZW50YWwgVGhlIHNhZmUgY2xpZW50IHN1cmZhY2UgaXMgZXhwZXJpbWVudGFsIGFuZCBtYXkgY2hhbmdlIChpbmNsdWRpbmcgYnJlYWtpbmdcbiAqIGNoYW5nZXMpIGJlZm9yZSB0aGUgcHVibGljIHJlbGVhc2UuXG4gKi9cbmltcG9ydCAqIGFzIHQgZnJvbSAnaW8tdHMnO1xuaW1wb3J0IHtcbiAgRmluYWxpemVTYWZlQm9keSxcbiAgSW5pdGlhbGl6ZVNhZmVCb2R5LFxuICBJbml0aWFsaXplU2FmZVJlc3BvbnNlLFxuICBSb290S2V5VHJpcGxldCxcbiAgUm9vdEtleVR5cGUsXG4gIFNhZmVEYXRhLFxufSBmcm9tICdAYml0Z28vcHVibGljLXR5cGVzJztcbmltcG9ydCB7IEVudmlyb25tZW50cyB9IGZyb20gJy4uLy4uL2NvbW1vbic7XG5pbXBvcnQgeyBJQmFzZUNvaW4gfSBmcm9tICcuLi9iYXNlQ29pbic7XG5pbXBvcnQgeyBCaXRHb0Jhc2UgfSBmcm9tICcuLi9iaXRnb0Jhc2UnO1xuaW1wb3J0IHsgZGVjb2RlV2l0aENvZGVjIH0gZnJvbSAnLi4vdXRpbHMvY29kZWNzJztcbmltcG9ydCB7IHBvc3RXaXRoQ29kZWMgfSBmcm9tICcuLi91dGlscy9wb3N0V2l0aENvZGVjJztcbmltcG9ydCB7IEZpbmFsaXplU2FmZU9wdGlvbnMsIEluaXRpYWxpemVTYWZlT3B0aW9ucyB9IGZyb20gJy4vaVNhZmUnO1xuaW1wb3J0IHsgQ3JlYXRlU2FmZU9wdGlvbnMsIEdldFNhZmVPcHRpb25zLCBJU2FmZXMsIExpc3RTYWZlc09wdGlvbnMsIFNhZmVDcmVhdGlvbkhhbmRsZSwgU2FmZUtleXMgfSBmcm9tICcuL2lTYWZlcyc7XG5pbXBvcnQgeyBTYWZlIH0gZnJvbSAnLi9zYWZlJztcblxuLyoqXG4gKiBSZXByZXNlbnRhdGl2ZSBjb2luIHBlciByb290IHNsb3QsIGJ5IG5ldHdvcmsuIFNhZmUgcm9vdHMgYXJlIGN1cnZlL3NjaGVtZS1zY29wZWQsIG5vdFxuICogY29pbi1zY29wZWQg4oCUIFdQIHN0YW1wcyBgY3VydmVgIHNlcnZlci1zaWRlIGZyb20gdGhlIGNvaW4ncyBrZXkgY3VydmUsIHNvIGFueSBjb2luIG9mIHRoZVxuICogcmlnaHQgKGN1cnZlLCBzY2hlbWUpIHdvcmtzLiBUaGVzZSBhcmUgc3RhYmxlLCBhbHdheXMtYXZhaWxhYmxlIGNob2ljZXMgdXNlZCBvbmx5IHRvIHJvdXRlXG4gKiB0aGUga2V5LWdlbmVyYXRpb24gY2VyZW1vbnk7IHRoZSByZXN1bHRpbmcgcm9vdCBpcyBpbnRlcmNoYW5nZWFibGUgYWNyb3NzIGNvaW5zIG9mIHRoZSBzbG90LlxuICogQGV4cGVyaW1lbnRhbFxuICovXG5jb25zdCBST09UX0NPSU5fQllfTkVUV09SSzogUmVjb3JkPCdtYWlubmV0JyB8ICd0ZXN0bmV0JywgUmVjb3JkPFJvb3RLZXlUeXBlLCBzdHJpbmc+PiA9IHtcbiAgbWFpbm5ldDoge1xuICAgIC8vIG11bHRpc2lnIHJvb3RzXG4gICAgc2VjcDI1NmsxTXVsdGlzaWc6ICdidGMnLFxuICAgIGVkMjU1MTlNdWx0aXNpZzogJ3hsbScsXG4gICAgLy8gTVBDIHJvb3RzXG4gICAgZWNkc2FNcGM6ICdldGgnLFxuICAgIGVkZHNhTXBjOiAnc29sJyxcbiAgfSxcbiAgdGVzdG5ldDoge1xuICAgIC8vIG11bHRpc2lnIHJvb3RzXG4gICAgc2VjcDI1NmsxTXVsdGlzaWc6ICd0YnRjJyxcbiAgICBlZDI1NTE5TXVsdGlzaWc6ICd0eGxtJyxcbiAgICAvLyBNUEMgcm9vdHNcbiAgICBlY2RzYU1wYzogJ2h0ZXRoJyxcbiAgICBlZGRzYU1wYzogJ3Rzb2wnLFxuICB9LFxufTtcblxuLyoqXG4gKiBXaXJlIHNoYXBlIG9mIHRoZSBwYWdpbmF0ZWQgYEdFVCAvZW50ZXJwcmlzZS86ZUlkL3NhZmVzYCByZXNwb25zZS4gV1AgcGFnaW5hdGVzIHdpdGggdGhlIHYyXG4gKiBgcHJldklkYC9gbmV4dEJhdGNoUHJldklkYCBjb252ZW50aW9uOyB0aGUgU0RLIHJlLWV4cG9zZXMgaXQgYXMgYW4gb3BhcXVlIGBjdXJzb3JgL2BuZXh0Q3Vyc29yYFxuICogKHNlZSBgbGlzdGApLlxuICogQGV4cGVyaW1lbnRhbFxuICovXG5jb25zdCBMaXN0U2FmZXNSZXNwb25zZSA9IHQuaW50ZXJzZWN0aW9uKFtcbiAgdC50eXBlKHsgc2FmZXM6IHQuYXJyYXkoU2FmZURhdGEpIH0pLFxuICB0LnBhcnRpYWwoeyBuZXh0QmF0Y2hQcmV2SWQ6IHQuc3RyaW5nIH0pLFxuXSk7XG5cbi8qKlxuICogQ29sbGVjdGlvbiBhY2Nlc3NvciBmb3IgYSBzaW5nbGUgZW50ZXJwcmlzZSdzIHNhZmVzLCBtaXJyb3JpbmcgV2FsbGV0cyAvIEVudGVycHJpc2VzLlxuICogU2FmZSByb3V0ZXMgYXJlIGVudGVycHJpc2Utc2NvcGVkICgvYXBpL3YyL2VudGVycHJpc2UvOmVJZC9zYWZlcyksIHNvIHRoZSBhY2Nlc3NvciBpc1xuICogY29uc3RydWN0ZWQgd2l0aCB0aGUgZW50ZXJwcmlzZSBpZCAoc2VlIEVudGVycHJpc2Uuc2FmZXMoKSkuXG4gKlxuICogQGV4cGVyaW1lbnRhbFxuICovXG5leHBvcnQgY2xhc3MgU2FmZXMgaW1wbGVtZW50cyBJU2FmZXMge1xuICBwcml2YXRlIHJlYWRvbmx5IGJpdGdvOiBCaXRHb0Jhc2U7XG4gIHByaXZhdGUgcmVhZG9ubHkgZW50ZXJwcmlzZUlkOiBzdHJpbmc7XG5cbiAgY29uc3RydWN0b3IoYml0Z286IEJpdEdvQmFzZSwgZW50ZXJwcmlzZUlkOiBzdHJpbmcpIHtcbiAgICB0aGlzLmJpdGdvID0gYml0Z287XG4gICAgdGhpcy5lbnRlcnByaXNlSWQgPSBlbnRlcnByaXNlSWQ7XG4gIH1cblxuICAvKipcbiAgICogRW50ZXJwcmlzZS1zY29wZWQgdjIgVVJMIGZvciB0aGUgc2FmZXMgY29sbGVjdGlvbiwgZS5nLiAvYXBpL3YyL2VudGVycHJpc2UvOmVJZC9zYWZlc1xuICAgKiBAcGFyYW0gZXh0cmFcbiAgICovXG4gIHByaXZhdGUgdXJsKGV4dHJhID0gJycpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmJpdGdvLnVybChgL2VudGVycHJpc2UvJHt0aGlzLmVudGVycHJpc2VJZH0vc2FmZXMke2V4dHJhfWAsIDIpO1xuICB9XG5cbiAgLyoqXG4gICAqIE9uZS1jYWxsIGNvbnZlbmllbmNlIHdyYXBwZXIgY2hhaW5pbmcgdGhlIHRocmVlIGNyZWF0aW9uIHBoYXNlczpcbiAgICogaW5pdGlhbGl6ZSAoUGhhc2UgMSkg4oaSIGNyZWF0ZVNhZmVLZXlzIChQaGFzZSAyLCA0IHNhZmVJZC10YWdnZWQgY2VyZW1vbmllcykg4oaSXG4gICAqIGZpbmFsaXplIChQaGFzZSAzKS4gSE9UIGN1c3RvZHkgb25seSBpbiB2MS5cbiAgICpcbiAgICogSWYgYSBrZXkgY2VyZW1vbnkgZmFpbHMsIGBjcmVhdGVTYWZlS2V5c2AgYXJjaGl2ZXMgdGhlIHNhZmUgYmVmb3JlIHRocm93aW5nLCBzbyBhIGZhaWxlZCBydW5cbiAgICogbGVhdmVzIG5vIGhhbGYtY3JlYXRlZCBzYWZlIGJlaGluZCDigJQgY3JlYXRlIGEgbmV3IHNhZmUgYW5kIHJldHJ5LlxuICAgKiBAZXhwZXJpbWVudGFsXG4gICAqL1xuICBhc3luYyBnZW5lcmF0ZVNhZmUocGFyYW1zOiBDcmVhdGVTYWZlT3B0aW9ucyk6IFByb21pc2U8U2FmZT4ge1xuICAgIGNvbnN0IHNhZmUgPSBhd2FpdCB0aGlzLmluaXRpYWxpemVTYWZlKHsgbGFiZWw6IHBhcmFtcy5sYWJlbCB9KTtcbiAgICBjb25zdCByb290S2V5cyA9IGF3YWl0IHRoaXMuY3JlYXRlU2FmZUtleXMoeyAuLi5wYXJhbXMsIHNhZmVJZDogc2FmZS5pZCB9KTtcbiAgICByZXR1cm4gYXdhaXQgdGhpcy5maW5hbGl6ZVNhZmUoc2FmZS5pZCwgcm9vdEtleXMpO1xuICB9XG5cbiAgLyoqXG4gICAqIFBoYXNlIDEg4oCUIGluaXRpYWxpemUgYSBzYWZlIChtZXRhZGF0YSBvbmx5LCBubyBrZXkgbWF0ZXJpYWwpLlxuICAgKiBQT1NUIC9hcGkvdjIvZW50ZXJwcmlzZS86ZUlkL3NhZmVzIHsgbGFiZWwgfVxuICAgKiBSZXNwb25zZSBpcyBqdXN0IGB7IGlkLCBzdGF0dXMgfWAg4oCUIHRoZSBzYWZlIGhhcyBubyBsYWJlbC9yb3N0ZXIvZXRjLiB5ZXQuXG4gICAqIEBleHBlcmltZW50YWxcbiAgICovXG4gIGFzeW5jIGluaXRpYWxpemVTYWZlKHBhcmFtczogSW5pdGlhbGl6ZVNhZmVPcHRpb25zKTogUHJvbWlzZTxJbml0aWFsaXplU2FmZVJlc3BvbnNlPiB7XG4gICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBwb3N0V2l0aENvZGVjKHRoaXMuYml0Z28sIHRoaXMudXJsKCksIEluaXRpYWxpemVTYWZlQm9keSwgcGFyYW1zKS5yZXN1bHQoKTtcbiAgICByZXR1cm4gZGVjb2RlV2l0aENvZGVjKEluaXRpYWxpemVTYWZlUmVzcG9uc2UsIHJlc3BvbnNlLCAnSW5pdGlhbGl6ZVNhZmVSZXNwb25zZScpO1xuICB9XG5cbiAgLyoqXG4gICAqIFBoYXNlIDIg4oCUIHJ1biB0aGUgNCByb290IGtleSBjZXJlbW9uaWVzIHRhZ2dlZCB3aXRoIGBzYWZlSWRgOyByZXR1cm5zIHRoZSAxMiBtaW50ZWQga2V5IGlkc1xuICAgKiBhcyA0IG9yZGVyZWQgW3VzZXIsIGJhY2t1cCwgYml0Z29dIHRyaXBsZXRzLiBIT1QgY3VzdG9keSBvbmx5IGluIHYxLlxuICAgKlxuICAgKiBBbGwgNCBjZXJlbW9uaWVzICgyLjEgbXVsdGlzaWcg4pGg4pGjLCAyLjIgTVBDIOKRoeKRoikgcnVuIGluIHBhcmFsbGVsLiBJZiBhbnkgb2YgdGhlbSBmYWlsLCB0aGVcbiAgICogcGFydGlhbGx5LWNyZWF0ZWQgc2FmZSBpcyBhcmNoaXZlZCAoYSBsZWdhbCBgaW5pdGlhbGl6aW5nIOKGkiBhcmNoaXZlZGAgdHJhbnNpdGlvbiwgc28gdGhlXG4gICAqIG9ycGhhbmVkIHRhZ2dlZCBrZXlzIGFyZSBpbmVydCkgYW5kIGFuIGVycm9yIGxpc3RpbmcgZXZlcnkgY2VyZW1vbnkgZmFpbHVyZSBpcyB0aHJvd24g4oCUXG4gICAqIGNyZWF0ZSBhIG5ldyBzYWZlIGFuZCByZXRyeS5cbiAgICpcbiAgICogTm90IGluZGVwZW5kZW50bHkgaWRlbXBvdGVudDogcmUtcnVubmluZyBhZ2FpbnN0IGEgc2FmZSB0aGF0IGFscmVhZHkgaGFzIHNvbWUgcm9vdHMgaGl0cyBXUCdzXG4gICAqIHVuaXF1ZSByb290LXNsb3QgaW5kZXguXG4gICAqIEBleHBlcmltZW50YWxcbiAgICovXG4gIGFzeW5jIGNyZWF0ZVNhZmVLZXlzKHBhcmFtczogQ3JlYXRlU2FmZU9wdGlvbnMgJiBTYWZlQ3JlYXRpb25IYW5kbGUpOiBQcm9taXNlPFNhZmVLZXlzPiB7XG4gICAgY29uc3QgeyBzYWZlSWQsIHBhc3NwaHJhc2UgfSA9IHBhcmFtcztcbiAgICBjb25zdCBlbnRlcnByaXNlID0gdGhpcy5lbnRlcnByaXNlSWQ7XG5cbiAgICAvLyBgc2xvdHNgIE1VU1Qgc3RheSBpbmRleC1hbGlnbmVkIHdpdGggdGhlIFByb21pc2UuYWxsU2V0dGxlZCBhcnJheSBiZWxvdy4gT3JkZXJlZCBieSBzY2hlbWU6XG4gICAgLy8gdGhlIHR3byBtdWx0aXNpZyByb290cyBmaXJzdCwgdGhlbiB0aGUgdHdvIE1QQyByb290cy5cbiAgICBjb25zdCBzbG90czogUm9vdEtleVR5cGVbXSA9IFsnc2VjcDI1NmsxTXVsdGlzaWcnLCAnZWQyNTUxOU11bHRpc2lnJywgJ2VjZHNhTXBjJywgJ2VkZHNhTXBjJ107XG4gICAgY29uc3QgcmVzdWx0cyA9IGF3YWl0IFByb21pc2UuYWxsU2V0dGxlZChbXG4gICAgICAvLyBQaGFzZSAyLjEg4oCUIG11bHRpc2lnIHJvb3RzICjikaDikaMpOiBsb2NhbCB1c2VyL2JhY2t1cCBrZXlwYWlycyArIEJpdEdvIGtleSwgYWxsIHNhZmVJZC10YWdnZWQuXG4gICAgICB0aGlzLmNyZWF0ZU11bHRpc2lnUm9vdCgnc2VjcDI1NmsxTXVsdGlzaWcnLCBzYWZlSWQsIHBhc3NwaHJhc2UsIGVudGVycHJpc2UpLFxuICAgICAgdGhpcy5jcmVhdGVNdWx0aXNpZ1Jvb3QoJ2VkMjU1MTlNdWx0aXNpZycsIHNhZmVJZCwgcGFzc3BocmFzZSwgZW50ZXJwcmlzZSksXG4gICAgICAvLyBQaGFzZSAyLjIg4oCUIE1QQyByb290cyAo4pGh4pGiKTogdGhlIGV4aXN0aW5nIERLTFMgKOKRoSkgYW5kIEVkRFNBICjikaIpIGNlcmVtb25pZXMsIHNhZmVJZCB0aHJlYWRlZC5cbiAgICAgIHRoaXMuY3JlYXRlTXBjUm9vdCgnZWNkc2FNcGMnLCBzYWZlSWQsIHBhc3NwaHJhc2UsIGVudGVycHJpc2UpLFxuICAgICAgdGhpcy5jcmVhdGVNcGNSb290KCdlZGRzYU1wYycsIHNhZmVJZCwgcGFzc3BocmFzZSwgZW50ZXJwcmlzZSksXG4gICAgXSk7XG5cbiAgICAvLyBTaW5nbGUgcGFzcyBvdmVyIHRoZSBzZXR0bGVkIHJlc3VsdHM6IGBzdGF0dXMgPT09ICdmdWxmaWxsZWQnYCBuYXJyb3dzIGAudmFsdWVgIHRvIGFcbiAgICAvLyBSb290S2V5VHJpcGxldCAobm8gY2FzdCBuZWVkZWQpLCBhbmQgcmVqZWN0aW9ucyBhcmUgY29sbGVjdGVkIHBlci1zbG90IGZvciB0aGUgZXJyb3IgYmVsb3cuXG4gICAgY29uc3QgaG90ID0ge30gYXMgU2FmZUtleXNbJ3Jvb3RLZXlzJ11bJ2hvdCddO1xuICAgIGNvbnN0IGZhaWx1cmVzOiBzdHJpbmdbXSA9IFtdO1xuICAgIHJlc3VsdHMuZm9yRWFjaCgocmVzdWx0LCBpKSA9PiB7XG4gICAgICBpZiAocmVzdWx0LnN0YXR1cyA9PT0gJ2Z1bGZpbGxlZCcpIHtcbiAgICAgICAgaG90W3Nsb3RzW2ldXSA9IHJlc3VsdC52YWx1ZTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnN0IHJlYXNvbiA9IHJlc3VsdC5yZWFzb24gaW5zdGFuY2VvZiBFcnJvciA/IHJlc3VsdC5yZWFzb24ubWVzc2FnZSA6IFN0cmluZyhyZXN1bHQucmVhc29uKTtcbiAgICAgICAgZmFpbHVyZXMucHVzaChgJHtzbG90c1tpXX06ICR7cmVhc29ufWApO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgaWYgKGZhaWx1cmVzLmxlbmd0aCA+IDApIHtcbiAgICAgIC8vIEJlc3QtZWZmb3J0IGFiYW5kb24gdGhlIHBhcnRpYWxseS1jcmVhdGVkIHNhZmUgc28gYSByZXRyeSBzdGFydHMgZnJvbSBhIGNsZWFuIHNsYXRlLiBLZWVwXG4gICAgICAvLyB0aGUgY2VyZW1vbnkgZmFpbHVyZXMgYXMgdGhlIHByaW1hcnkgZXJyb3I7IG5vdGUgaXQgaWYgdGhlIGNsZWFudXAgYXJjaGl2ZSBhbHNvIGZhaWxlZC5cbiAgICAgIGxldCBhcmNoaXZlRXJyb3I6IEVycm9yIHwgdW5kZWZpbmVkO1xuICAgICAgdHJ5IHtcbiAgICAgICAgYXdhaXQgdGhpcy5hcmNoaXZlU2FmZShzYWZlSWQpO1xuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICBhcmNoaXZlRXJyb3IgPSBlIGluc3RhbmNlb2YgRXJyb3IgPyBlIDogbmV3IEVycm9yKFN0cmluZyhlKSk7XG4gICAgICB9XG4gICAgICBsZXQgbWVzc2FnZSA9XG4gICAgICAgIGBTYWZlIGtleSBnZW5lcmF0aW9uIGZhaWxlZCBmb3IgJHtmYWlsdXJlcy5sZW5ndGh9IHJvb3QgY2VyZW1vbnkvaWVzIGAgK1xuICAgICAgICBgWyR7ZmFpbHVyZXMuam9pbignOyAnKX1dLiBUaGUgc2FmZSAoJHtzYWZlSWR9KSBoYXMgYmVlbiBhcmNoaXZlZDsgY3JlYXRlIGEgbmV3IHNhZmUgYW5kIHJldHJ5LmA7XG4gICAgICBpZiAoYXJjaGl2ZUVycm9yKSB7XG4gICAgICAgIG1lc3NhZ2UgKz0gYCBOT1RFOiBhcmNoaXZpbmcgdGhlIHNhZmUgYWxzbyBmYWlsZWQgKCR7YXJjaGl2ZUVycm9yLm1lc3NhZ2V9KTsgYXJjaGl2ZSBpdCBtYW51YWxseSBiZWZvcmUgcmV0cnlpbmcuYDtcbiAgICAgIH1cbiAgICAgIHRocm93IG5ldyBFcnJvcihtZXNzYWdlKTtcbiAgICB9XG5cbiAgICByZXR1cm4geyByb290S2V5czogeyBob3QgfSB9O1xuICB9XG5cbiAgLyoqXG4gICAqIEFyY2hpdmUgYSBzYWZlLiBBbHNvIHRoZSBhYmFuZG9ubWVudCBwYXRoIGZvciBhIHN0dWNrIGBpbml0aWFsaXppbmdgIHNhZmUgKHVzZWQgYnlcbiAgICogYGNyZWF0ZVNhZmVLZXlzYCB0byBjbGVhbiB1cCBhZnRlciBhIGZhaWxlZCBjZXJlbW9ueSkuXG4gICAqIFBPU1QgL2FwaS92Mi9lbnRlcnByaXNlLzplSWQvc2FmZXMvOnNhZmVJZC9hcmNoaXZlXG4gICAqIEBleHBlcmltZW50YWxcbiAgICovXG4gIGFzeW5jIGFyY2hpdmVTYWZlKHNhZmVJZDogc3RyaW5nKTogUHJvbWlzZTxTYWZlPiB7XG4gICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCB0aGlzLmJpdGdvXG4gICAgICAucG9zdCh0aGlzLnVybChgLyR7c2FmZUlkfS9hcmNoaXZlYCkpXG4gICAgICAuc2VuZCgpXG4gICAgICAucmVzdWx0KCk7XG4gICAgY29uc3Qgc2FmZURhdGEgPSBkZWNvZGVXaXRoQ29kZWMoU2FmZURhdGEsIHJlc3BvbnNlLCAnU2FmZURhdGEnKTtcbiAgICByZXR1cm4gbmV3IFNhZmUodGhpcy5iaXRnbywgc2FmZURhdGEpO1xuICB9XG5cbiAgLyoqXG4gICAqIFBoYXNlIDMg4oCUIGZpbmFsaXplIGEgc2FmZSB3aXRoIHRoZSAxMiByb290IGtleSBpZHMgYXMgNCBvcmRlcmVkIFt1c2VyLCBiYWNrdXAsIGJpdGdvXSB0cmlwbGV0cy5cbiAgICogUE9TVCAvYXBpL3YyL2VudGVycHJpc2UvOmVJZC9zYWZlcy86c2FmZUlkL2ZpbmFsaXplIHsgcm9vdEtleXMgfS5cbiAgICogSWRlbXBvdGVudDogcmUtZmluYWxpemluZyB3aXRoIHRoZSBzYW1lIGByb290S2V5c2AgcmV0dXJucyB0aGUgYWN0aXZlIHNhZmUgYWdhaW4gKDIwMCkuXG4gICAqIEBleHBlcmltZW50YWxcbiAgICovXG4gIGFzeW5jIGZpbmFsaXplU2FmZShzYWZlSWQ6IHN0cmluZywgcGFyYW1zOiBGaW5hbGl6ZVNhZmVPcHRpb25zKTogUHJvbWlzZTxTYWZlPiB7XG4gICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBwb3N0V2l0aENvZGVjKFxuICAgICAgdGhpcy5iaXRnbyxcbiAgICAgIHRoaXMudXJsKGAvJHtzYWZlSWR9L2ZpbmFsaXplYCksXG4gICAgICBGaW5hbGl6ZVNhZmVCb2R5LFxuICAgICAgcGFyYW1zXG4gICAgKS5yZXN1bHQoKTtcbiAgICBjb25zdCBzYWZlRGF0YSA9IGRlY29kZVdpdGhDb2RlYyhTYWZlRGF0YSwgcmVzcG9uc2UsICdTYWZlRGF0YScpO1xuICAgIHJldHVybiBuZXcgU2FmZSh0aGlzLmJpdGdvLCBzYWZlRGF0YSk7XG4gIH1cblxuICAvKipcbiAgICogQ29pbiB1c2VkIHRvIHJvdXRlIGEgZ2l2ZW4gcm9vdCdzIGtleSBjZXJlbW9ueSAoc2VlIFJPT1RfQ09JTl9CWV9ORVRXT1JLKS5cbiAgICogQGV4cGVyaW1lbnRhbFxuICAgKi9cbiAgcHJpdmF0ZSBjb2luRm9yUm9vdChzbG90OiBSb290S2V5VHlwZSk6IElCYXNlQ29pbiB7XG4gICAgLy8gVjFOZXR3b3JrIGlzIGV4YWN0bHkgJ2JpdGNvaW4nIHwgJ3Rlc3RuZXQnLCBzbyB0aGlzIGJyYW5jaCBpcyBleGhhdXN0aXZlIG92ZXIgZXZlcnlcbiAgICAvLyBlbnZpcm9ubWVudDogJ2JpdGNvaW4nIGlzIG1haW5uZXQgYW5kIGV2ZXJ5IG90aGVyIHZhbHVlIGlzIGEgdGVzdG5ldC5cbiAgICBjb25zdCBuZXR3b3JrID0gRW52aXJvbm1lbnRzW3RoaXMuYml0Z28uZ2V0RW52KCldLm5ldHdvcmsgPT09ICdiaXRjb2luJyA/ICdtYWlubmV0JyA6ICd0ZXN0bmV0JztcbiAgICByZXR1cm4gdGhpcy5iaXRnby5jb2luKFJPT1RfQ09JTl9CWV9ORVRXT1JLW25ldHdvcmtdW3Nsb3RdKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBQaGFzZSAyLjEgaGVscGVyIOKAlCBtaW50IG9uZSBvbmNoYWluLW11bHRpc2lnIHJvb3QgKGNvbGQgbW9kZWwsIGFzIHdhbGxldCBjcmVhdGlvbiBkb2VzIHRvZGF5KTpcbiAgICogZ2VuZXJhdGUgdXNlci9iYWNrdXAga2V5cGFpcnMgbG9jYWxseSwgZW5jcnlwdCB3aXRoIGBwYXNzcGhyYXNlYCwgcmVnaXN0ZXIgdmlhIFBPU1QgLzpjb2luL2tleVxuICAgKiB3aXRoIGBzYWZlSWRgOyB0aGUgQml0R28ga2V5IGlzIGNyZWF0ZWQgdGhyb3VnaCB0aGUgc2FtZSByb3V0ZSdzIGBzb3VyY2U6J2JpdGdvJ2AgcGF0aC5cbiAgICogUmV0dXJucyB0aGUgW3VzZXIsIGJhY2t1cCwgYml0Z29dIGtleSBpZCB0cmlwbGV0LlxuICAgKiBAZXhwZXJpbWVudGFsXG4gICAqL1xuICBwcml2YXRlIGFzeW5jIGNyZWF0ZU11bHRpc2lnUm9vdChcbiAgICBzbG90OiAnc2VjcDI1NmsxTXVsdGlzaWcnIHwgJ2VkMjU1MTlNdWx0aXNpZycsXG4gICAgc2FmZUlkOiBzdHJpbmcsXG4gICAgcGFzc3BocmFzZTogc3RyaW5nLFxuICAgIGVudGVycHJpc2U6IHN0cmluZ1xuICApOiBQcm9taXNlPFJvb3RLZXlUcmlwbGV0PiB7XG4gICAgY29uc3Qga2V5Y2hhaW5zID0gdGhpcy5jb2luRm9yUm9vdChzbG90KS5rZXljaGFpbnMoKTtcblxuICAgIGNvbnN0IHVzZXJLZXlQYWlyID0ga2V5Y2hhaW5zLmNyZWF0ZSgpO1xuICAgIGNvbnN0IHVzZXJLZXljaGFpblByb21pc2UgPSBrZXljaGFpbnMuYWRkKHtcbiAgICAgIHB1YjogdXNlcktleVBhaXIucHViLFxuICAgICAgZW5jcnlwdGVkUHJ2OiBhd2FpdCB0aGlzLmJpdGdvLmVuY3J5cHQoeyBpbnB1dDogdXNlcktleVBhaXIucHJ2LCBwYXNzd29yZDogcGFzc3BocmFzZSB9KSxcbiAgICAgIHNvdXJjZTogJ3VzZXInLFxuICAgICAgc2FmZUlkLFxuICAgIH0pO1xuICAgIGNvbnN0IGJhY2t1cEtleWNoYWluUHJvbWlzZSA9IGtleWNoYWlucy5jcmVhdGVCYWNrdXAoeyBwYXNzcGhyYXNlLCBzYWZlSWQgfSk7XG4gICAgY29uc3QgYml0Z29LZXljaGFpblByb21pc2UgPSBrZXljaGFpbnMuY3JlYXRlQml0R28oeyBlbnRlcnByaXNlLCBzYWZlSWQgfSk7XG5cbiAgICBjb25zdCBbdXNlcktleWNoYWluLCBiYWNrdXBLZXljaGFpbiwgYml0Z29LZXljaGFpbl0gPSBhd2FpdCBQcm9taXNlLmFsbChbXG4gICAgICB1c2VyS2V5Y2hhaW5Qcm9taXNlLFxuICAgICAgYmFja3VwS2V5Y2hhaW5Qcm9taXNlLFxuICAgICAgYml0Z29LZXljaGFpblByb21pc2UsXG4gICAgXSk7XG4gICAgcmV0dXJuIFt1c2VyS2V5Y2hhaW4uaWQsIGJhY2t1cEtleWNoYWluLmlkLCBiaXRnb0tleWNoYWluLmlkXTtcbiAgfVxuXG4gIC8qKlxuICAgKiBQaGFzZSAyLjIgaGVscGVyIOKAlCBydW4gb25lIE1QQyBjZXJlbW9ueSAoREtMUyBmb3IgZWNkc2FNcGMsIEVkRFNBIGZvciBlZGRzYU1wYykgdmlhIHRoZVxuICAgKiBleGlzdGluZyBgY3JlYXRlTXBjYCBmbG93IHdpdGggYHNhZmVJZGAgdGhyZWFkZWQgdGhyb3VnaCwgc28gdGhlIHJlc3VsdGluZyB1c2VyL2JhY2t1cC9iaXRnb1xuICAgKiBrZXlzIGxhbmQgdGFnZ2VkLiBSZXR1cm5zIHRoZSBbdXNlciwgYmFja3VwLCBiaXRnb10ga2V5IGlkIHRyaXBsZXQuXG4gICAqIEBleHBlcmltZW50YWxcbiAgICovXG4gIHByaXZhdGUgYXN5bmMgY3JlYXRlTXBjUm9vdChcbiAgICBzbG90OiAnZWNkc2FNcGMnIHwgJ2VkZHNhTXBjJyxcbiAgICBzYWZlSWQ6IHN0cmluZyxcbiAgICBwYXNzcGhyYXNlOiBzdHJpbmcsXG4gICAgZW50ZXJwcmlzZTogc3RyaW5nXG4gICk6IFByb21pc2U8Um9vdEtleVRyaXBsZXQ+IHtcbiAgICBjb25zdCB7IHVzZXJLZXljaGFpbiwgYmFja3VwS2V5Y2hhaW4sIGJpdGdvS2V5Y2hhaW4gfSA9IGF3YWl0IHRoaXMuY29pbkZvclJvb3Qoc2xvdClcbiAgICAgIC5rZXljaGFpbnMoKVxuICAgICAgLmNyZWF0ZU1wYyh7IG11bHRpc2lnVHlwZTogJ3RzcycsIHBhc3NwaHJhc2UsIGVudGVycHJpc2UsIHNhZmVJZCB9KTtcbiAgICByZXR1cm4gW3VzZXJLZXljaGFpbi5pZCwgYmFja3VwS2V5Y2hhaW4uaWQsIGJpdGdvS2V5Y2hhaW4uaWRdO1xuICB9XG5cbiAgLyoqXG4gICAqIExpc3QgdGhlIGVudGVycHJpc2UncyBzYWZlcyB0aGUgY2FsbGVyIGlzIGEgbWVtYmVyIG9mIChjdXJzb3IgcGFnaW5hdGlvbikuXG4gICAqIEdFVCAvYXBpL3YyL2VudGVycHJpc2UvOmVJZC9zYWZlcz9saW1pdCZwcmV2SWRcbiAgICpcbiAgICogYGN1cnNvcmAgaXMgdGhlIG9wYXF1ZSBgbmV4dEN1cnNvcmAgcmV0dXJuZWQgYnkgYSBwcmV2aW91cyBjYWxsOyBwYWdlIGZvcndhcmQgdW50aWxcbiAgICogYG5leHRDdXJzb3JgIGlzIGFic2VudC5cbiAgICogQGV4cGVyaW1lbnRhbFxuICAgKi9cbiAgYXN5bmMgbGlzdChwYXJhbXM6IExpc3RTYWZlc09wdGlvbnMgPSB7fSk6IFByb21pc2U8eyBzYWZlczogU2FmZVtdOyBuZXh0Q3Vyc29yPzogc3RyaW5nIH0+IHtcbiAgICAvLyBTREsgZXhwb3NlcyBhbiBvcGFxdWUgY3Vyc29yOyBXUCBzcGVha3MgcHJldklkL25leHRCYXRjaFByZXZJZCAodjIgbGlzdCBjb252ZW50aW9uKS5cbiAgICBjb25zdCBxdWVyeTogeyBsaW1pdD86IG51bWJlcjsgcHJldklkPzogc3RyaW5nIH0gPSB7fTtcbiAgICBpZiAocGFyYW1zLmxpbWl0ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHF1ZXJ5LmxpbWl0ID0gcGFyYW1zLmxpbWl0O1xuICAgIH1cbiAgICBpZiAocGFyYW1zLmN1cnNvciAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBxdWVyeS5wcmV2SWQgPSBwYXJhbXMuY3Vyc29yO1xuICAgIH1cbiAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IHRoaXMuYml0Z28uZ2V0KHRoaXMudXJsKCkpLnF1ZXJ5KHF1ZXJ5KS5yZXN1bHQoKTtcbiAgICBjb25zdCB7IHNhZmVzLCBuZXh0QmF0Y2hQcmV2SWQgfSA9IGRlY29kZVdpdGhDb2RlYyhMaXN0U2FmZXNSZXNwb25zZSwgcmVzcG9uc2UsICdMaXN0U2FmZXNSZXNwb25zZScpO1xuICAgIHJldHVybiB7XG4gICAgICBzYWZlczogc2FmZXMubWFwKChzYWZlRGF0YSkgPT4gbmV3IFNhZmUodGhpcy5iaXRnbywgc2FmZURhdGEpKSxcbiAgICAgIG5leHRDdXJzb3I6IG5leHRCYXRjaFByZXZJZCxcbiAgICB9O1xuICB9XG5cbiAgLyoqXG4gICAqIEZldGNoIGEgc2luZ2xlIHNhZmUgYnkgaWQuIE5vbi1tZW1iZXJzIGdldCBhIDQwNCAoZXhpc3RlbmNlIGlzIG5vdCBsZWFrZWQpLlxuICAgKiBHRVQgL2FwaS92Mi9lbnRlcnByaXNlLzplSWQvc2FmZXMvOnNhZmVJZFxuICAgKiBAZXhwZXJpbWVudGFsXG4gICAqL1xuICBhc3luYyBnZXQocGFyYW1zOiBHZXRTYWZlT3B0aW9ucyk6IFByb21pc2U8U2FmZT4ge1xuICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgdGhpcy5iaXRnby5nZXQodGhpcy51cmwoYC8ke3BhcmFtcy5pZH1gKSkucmVzdWx0KCk7XG4gICAgY29uc3Qgc2FmZURhdGEgPSBkZWNvZGVXaXRoQ29kZWMoU2FmZURhdGEsIHJlc3BvbnNlLCAnU2FmZURhdGEnKTtcbiAgICByZXR1cm4gbmV3IFNhZmUodGhpcy5iaXRnbywgc2FmZURhdGEpO1xuICB9XG59XG4iXX0=
@@ -59,13 +59,13 @@ describe('Safes', function () {
59
59
  sinon.restore();
60
60
  });
61
61
  describe('initializeSafe', function () {
62
- it('POSTs to the safes collection URL and returns a Safe', async function () {
63
- const send = sinon.stub().returns({ result: sinon.stub().resolves(safeDataWire) });
62
+ it('POSTs to the safes collection URL and returns the initializing id/status', async function () {
63
+ const initializeResponseWire = { id: 'test-safe-id', status: 'initializing' };
64
+ const send = sinon.stub().returns({ result: sinon.stub().resolves(initializeResponseWire) });
64
65
  mockBitGo.post.returns({ send });
65
66
  const result = await safes.initializeSafe({ label: 'my safe' });
66
- result.should.be.instanceof(src_1.Safe);
67
- result.id().should.equal('test-safe-id');
68
- result.enterpriseId().should.equal('test-enterprise-id');
67
+ result.id.should.equal('test-safe-id');
68
+ result.status.should.equal('initializing');
69
69
  sinon.assert.calledWith(mockBitGo.post, '/enterprise/test-enterprise-id/safes');
70
70
  sinon.assert.calledWith(send, { label: 'my safe' });
71
71
  });
@@ -240,7 +240,7 @@ describe('Safes', function () {
240
240
  });
241
241
  describe('generateSafe', function () {
242
242
  it('chains initialize → createSafeKeys → finalize, threading the safeId', async function () {
243
- const initializing = new src_1.Safe(mockBitGo, { ...safeDataWire, status: 'initializing' });
243
+ const initializing = { id: 'test-safe-id', status: 'initializing' };
244
244
  const rootKeys = { rootKeys: { hot: {} } };
245
245
  const initStub = sinon.stub(safes, 'initializeSafe').resolves(initializing);
246
246
  const keysStub = sinon.stub(safes, 'createSafeKeys').resolves(rootKeys);
@@ -294,4 +294,4 @@ describe('Safes', function () {
294
294
  });
295
295
  });
296
296
  });
297
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2FmZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi90ZXN0L3VuaXQvYml0Z28vc2FmZS9zYWZlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLDZDQUErQjtBQUMvQixrQkFBZ0I7QUFDaEIseUNBQTBEO0FBRTFELFFBQVEsQ0FBQyxPQUFPLEVBQUU7SUFDaEIsSUFBSSxLQUFZLENBQUM7SUFDakIsSUFBSSxTQUFjLENBQUM7SUFDbkIsTUFBTSxZQUFZLEdBQUc7UUFDbkIsRUFBRSxFQUFFLGNBQWM7UUFDbEIsWUFBWSxFQUFFLG9CQUFvQjtRQUNsQyxLQUFLLEVBQUUsU0FBUztRQUNoQixNQUFNLEVBQUUsUUFBUTtRQUNoQixPQUFPLEVBQUUsWUFBWTtRQUNyQixLQUFLLEVBQUUsQ0FBQyxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQUUsV0FBVyxFQUFFLENBQUMsT0FBTyxFQUFFLE9BQU8sQ0FBQyxFQUFFLENBQUM7UUFDbEUsU0FBUyxFQUFFLDBCQUEwQjtLQUN0QyxDQUFDO0lBRUYsVUFBVSxDQUFDO1FBQ1QsU0FBUyxHQUFHO1lBQ1YsR0FBRyxFQUFFLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxJQUFZLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQztZQUNuRCxJQUFJLEVBQUUsS0FBSyxDQUFDLElBQUksRUFBRTtTQUNuQixDQUFDO1FBQ0YsS0FBSyxHQUFHLElBQUksV0FBSyxDQUFDLFNBQVMsRUFBRSxvQkFBb0IsQ0FBQyxDQUFDO0lBQ3JELENBQUMsQ0FBQyxDQUFDO0lBRUgsU0FBUyxDQUFDO1FBQ1IsS0FBSyxDQUFDLE9BQU8sRUFBRSxDQUFDO0lBQ2xCLENBQUMsQ0FBQyxDQUFDO0lBRUgsUUFBUSxDQUFDLGdCQUFnQixFQUFFO1FBQ3pCLEVBQUUsQ0FBQyxzREFBc0QsRUFBRSxLQUFLO1lBQzlELE1BQU0s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QUFDLFVBQVUsQ0FBQyxLQUFLLEVBQUUsRUFBRSxLQUFLLEVBQUUsRUFBRSxFQUFFLE1BQU0sRUFBRSxjQUFjLEVBQUUsQ0FBQyxDQUFDO1FBQ3hFLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQyxDQUFDLENBQUM7SUFFSCxRQUFRLENBQUMsNkJBQTZCLEVBQUU7UUFDdEMsRUFBRSxDQUFDLG1EQUFtRCxFQUFFO1lBQ3RELE1BQU0sVUFBVSxHQUFHLElBQUksZ0JBQVUsQ0FBQyxTQUFTLEVBQUUsRUFBUyxFQUFFLEVBQUUsRUFBRSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQztZQUN2RixVQUFVLENBQUMsS0FBSyxFQUFFLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxVQUFVLENBQUMsV0FBSyxDQUFDLENBQUM7UUFDakQsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDLENBQUMsQ0FBQztBQUNMLENBQUMsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgc2lub24gZnJvbSAnc2lub24nO1xuaW1wb3J0ICdzaG91bGQnO1xuaW1wb3J0IHsgRW50ZXJwcmlzZSwgU2FmZSwgU2FmZXMgfSBmcm9tICcuLi8uLi8uLi8uLi9zcmMnO1xuXG5kZXNjcmliZSgnU2FmZXMnLCBmdW5jdGlvbiAoKSB7XG4gIGxldCBzYWZlczogU2FmZXM7XG4gIGxldCBtb2NrQml0R286IGFueTtcbiAgY29uc3Qgc2FmZURhdGFXaXJlID0ge1xuICAgIGlkOiAndGVzdC1zYWZlLWlkJyxcbiAgICBlbnRlcnByaXNlSWQ6ICd0ZXN0LWVudGVycHJpc2UtaWQnLFxuICAgIGxhYmVsOiAnbXkgc2FmZScsXG4gICAgc3RhdHVzOiAnYWN0aXZlJyxcbiAgICBjcmVhdG9yOiAnY3JlYXRvci1pZCcsXG4gICAgdXNlcnM6IFt7IHVzZXJJZDogJ2NyZWF0b3ItaWQnLCBwZXJtaXNzaW9uczogWydhZG1pbicsICdzcGVuZCddIH1dLFxuICAgIGNyZWF0ZWRBdDogJzIwMjYtMDctMDdUMDA6MDA6MDAuMDAwWicsXG4gIH07XG5cbiAgYmVmb3JlRWFjaChmdW5jdGlvbiAoKSB7XG4gICAgbW9ja0JpdEdvID0ge1xuICAgICAgdXJsOiBzaW5vbi5zdHViKCkuY2FsbHNGYWtlKChwYXRoOiBzdHJpbmcpID0+IHBhdGgpLFxuICAgICAgcG9zdDogc2lub24uc3R1YigpLFxuICAgIH07XG4gICAgc2FmZXMgPSBuZXcgU2FmZXMobW9ja0JpdEdvLCAndGVzdC1lbnRlcnByaXNlLWlkJyk7XG4gIH0pO1xuXG4gIGFmdGVyRWFjaChmdW5jdGlvbiAoKSB7XG4gICAgc2lub24ucmVzdG9yZSgpO1xuICB9KTtcblxuICBkZXNjcmliZSgnaW5pdGlhbGl6ZVNhZmUnLCBmdW5jdGlvbiAoKSB7XG4gICAgaXQoJ1BPU1RzIHRvIHRoZSBzYWZlcyBjb2xsZWN0aW9uIFVSTCBhbmQgcmV0dXJucyBhIFNhZmUnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCBzZW5kID0gc2lub24uc3R1YigpLnJldHVybnMoeyByZXN1bHQ6IHNpbm9uLnN0dWIoKS5yZXNvbHZlcyhzYWZlRGF0YVdpcmUpIH0pO1xuICAgICAgbW9ja0JpdEdvLnBvc3QucmV0dXJucyh7IHNlbmQgfSk7XG5cbiAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHNhZmVzLmluaXRpYWxpemVTYWZlKHsgbGFiZWw6ICdteSBzYWZlJyB9KTtcblxuICAgICAgcmVzdWx0LnNob3VsZC5iZS5pbnN0YW5jZW9mKFNhZmUpO1xuICAgICAgcmVzdWx0LmlkKCkuc2hvdWxkLmVxdWFsKCd0ZXN0LXNhZmUtaWQnKTtcbiAgICAgIHJlc3VsdC5lbnRlcnByaXNlSWQoKS5zaG91bGQuZXF1YWwoJ3Rlc3QtZW50ZXJwcmlzZS1pZCcpO1xuICAgICAgc2lub24uYXNzZXJ0LmNhbGxlZFdpdGgobW9ja0JpdEdvLnBvc3QsICcvZW50ZXJwcmlzZS90ZXN0LWVudGVycHJpc2UtaWQvc2FmZXMnKTtcbiAgICAgIHNpbm9uLmFzc2VydC5jYWxsZWRXaXRoKHNlbmQsIHsgbGFiZWw6ICdteSBzYWZlJyB9KTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ2NyZWF0ZVNhZmVLZXlzJywgZnVuY3Rpb24gKCkge1xuICAgIC8vIFBlci1jb2luIGtleWNoYWlucygpIG1vY2s6IG11bHRpc2lnIGNvaW5zIHVzZSBjcmVhdGUvYWRkL2NyZWF0ZUJhY2t1cC9jcmVhdGVCaXRHbzsgTVBDIGNvaW5zXG4gICAgLy8gdXNlIGNyZWF0ZU1wYy4gSWRzIGFyZSBkZXJpdmVkIGZyb20gdGhlIGNvaW4gbmFtZSBzbyB3ZSBjYW4gYXNzZXJ0IHBlci1zbG90IGNvaW4gcm91dGluZy5cbiAgICBmdW5jdGlvbiBtYWtlS2V5Y2hhaW5zKGNvaW46IHN0cmluZykge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgY3JlYXRlOiBzaW5vbi5zdHViKCkucmV0dXJucyh7IHB1YjogYCR7Y29pbn0tcHViYCwgcHJ2OiBgJHtjb2lufS1wcnZgIH0pLFxuICAgICAgICBhZGQ6IHNpbm9uLnN0dWIoKS5yZXNvbHZlcyh7IGlkOiBgJHtjb2lufS11c2VyYCB9KSxcbiAgICAgICAgY3JlYXRlQmFja3VwOiBzaW5vbi5zdHViKCkucmVzb2x2ZXMoeyBpZDogYCR7Y29pbn0tYmFja3VwYCB9KSxcbiAgICAgICAgY3JlYXRlQml0R286IHNpbm9uLnN0dWIoKS5yZXNvbHZlcyh7IGlkOiBgJHtjb2lufS1iaXRnb2AgfSksXG4gICAgICAgIGNyZWF0ZU1wYzogc2lub24uc3R1YigpLnJlc29sdmVzKHtcbiAgICAgICAgICB1c2VyS2V5Y2hhaW46IHsgaWQ6IGAke2NvaW59LXVzZXJgIH0sXG4gICAgICAgICAgYmFja3VwS2V5Y2hhaW46IHsgaWQ6IGAke2NvaW59LWJhY2t1cGAgfSxcbiAgICAgICAgICBiaXRnb0tleWNoYWluOiB7IGlkOiBgJHtjb2lufS1iaXRnb2AgfSxcbiAgICAgICAgfSksXG4gICAgICB9O1xuICAgIH1cblxuICAgIGxldCBrZXljaGFpbnNCeUNvaW46IFJlY29yZDxzdHJpbmcsIFJldHVyblR5cGU8dHlwZW9mIG1ha2VLZXljaGFpbnM+PjtcblxuICAgIGJlZm9yZUVhY2goZnVuY3Rpb24gKCkge1xuICAgICAga2V5Y2hhaW5zQnlDb2luID0ge307XG4gICAgICBtb2NrQml0R28uZ2V0RW52ID0gc2lub24uc3R1YigpLnJldHVybnMoJ3Rlc3QnKTsgLy8gdGVzdG5ldCBjb2luIG1hcFxuICAgICAgbW9ja0JpdEdvLmVuY3J5cHQgPSBzaW5vbi5zdHViKCkucmVzb2x2ZXMoJ2VuY3J5cHRlZC1wcnYnKTtcbiAgICAgIG1vY2tCaXRHby5jb2luID0gc2lub24uc3R1YigpLmNhbGxzRmFrZSgobmFtZTogc3RyaW5nKSA9PiB7XG4gICAgICAgIGtleWNoYWluc0J5Q29pbltuYW1lXSA9IGtleWNoYWluc0J5Q29pbltuYW1lXSB8fCBtYWtlS2V5Y2hhaW5zKG5hbWUpO1xuICAgICAgICByZXR1cm4geyBrZXljaGFpbnM6ICgpID0+IGtleWNoYWluc0J5Q29pbltuYW1lXSB9O1xuICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICBpdCgncnVucyB0aGUgNCByb290IGNlcmVtb25pZXMgYW5kIHJldHVybnMgMTIgaWRzIGFzIG9yZGVyZWQgdHJpcGxldHMnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBzYWZlcy5jcmVhdGVTYWZlS2V5cyh7IGxhYmVsOiAnbXkgc2FmZScsIHBhc3NwaHJhc2U6ICdwdycsIHNhZmVJZDogJ3NhZmUtMScgfSk7XG5cbiAgICAgIHJlc3VsdC5zaG91bGQuZGVlcEVxdWFsKHtcbiAgICAgICAgcm9vdEtleXM6IHtcbiAgICAgICAgICBob3Q6IHtcbiAgICAgICAgICAgIHNlY3AyNTZrMU11bHRpc2lnOiBbJ3RidGMtdXNlcicsICd0YnRjLWJhY2t1cCcsICd0YnRjLWJpdGdvJ10sXG4gICAgICAgICAgICBlY2RzYU1wYzogWydodGV0aC11c2VyJywgJ2h0ZXRoLWJhY2t1cCcsICdodGV0aC1iaXRnbyddLFxuICAgICAgICAgICAgZWRkc2FNcGM6IFsndHNvbC11c2VyJywgJ3Rzb2wtYmFja3VwJywgJ3Rzb2wtYml0Z28nXSxcbiAgICAgICAgICAgIGVkMjU1MTlNdWx0aXNpZzogWyd0eGxtLXVzZXInLCAndHhsbS1iYWNrdXAnLCAndHhsbS1iaXRnbyddLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIGl0KCd0YWdzIGV2ZXJ5IG11bHRpc2lnIGtleSByZWdpc3RyYXRpb24gd2l0aCBzYWZlSWQgYW5kIHRoZSBjb3JyZWN0IHNvdXJjZScsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGF3YWl0IHNhZmVzLmNyZWF0ZVNhZmVLZXlzKHsgbGFiZWw6ICdteSBzYWZlJywgcGFzc3BocmFzZTogJ3B3Jywgc2FmZUlkOiAnc2FmZS0xJyB9KTtcblxuICAgICAgY29uc3QgYnRjID0ga2V5Y2hhaW5zQnlDb2luWyd0YnRjJ107XG4gICAgICBzaW5vbi5hc3NlcnQuY2FsbGVkV2l0aE1hdGNoKGJ0Yy5hZGQsIHtcbiAgICAgICAgcHViOiAndGJ0Yy1wdWInLFxuICAgICAgICBlbmNyeXB0ZWRQcnY6ICdlbmNyeXB0ZWQtcHJ2JyxcbiAgICAgICAgc291cmNlOiAndXNlcicsXG4gICAgICAgIHNhZmVJZDogJ3NhZmUtMScsXG4gICAgICB9KTtcbiAgICAgIHNpbm9uLmFzc2VydC5jYWxsZWRXaXRoTWF0Y2goYnRjLmNyZWF0ZUJhY2t1cCwgeyBwYXNzcGhyYXNlOiAncHcnLCBzYWZlSWQ6ICdzYWZlLTEnIH0pO1xuICAgICAgc2lub24uYXNzZXJ0LmNhbGxlZFdpdGhNYXRjaChidGMuY3JlYXRlQml0R28sIHsgZW50ZXJwcmlzZTogJ3Rlc3QtZW50ZXJwcmlzZS1pZCcsIHNhZmVJZDogJ3NhZmUtMScgfSk7XG4gICAgfSk7XG5cbiAgICBpdCgndGhyZWFkcyBzYWZlSWQgKyBlbnRlcnByaXNlIGludG8gYm90aCBNUEMgY2VyZW1vbmllcycsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGF3YWl0IHNhZmVzLmNyZWF0ZVNhZmVLZXlzKHsgbGFiZWw6ICdteSBzYWZlJywgcGFzc3BocmFzZTogJ3B3Jywgc2FmZUlkOiAnc2FmZS0xJyB9KTtcblxuICAgICAgc2lub24uYXNzZXJ0LmNhbGxlZFdpdGhNYXRjaChrZXljaGFpbnNCeUNvaW5bJ2h0ZXRoJ10uY3JlYXRlTXBjLCB7XG4gICAgICAgIG11bHRpc2lnVHlwZTogJ3RzcycsXG4gICAgICAgIHBhc3NwaHJhc2U6ICdwdycsXG4gICAgICAgIGVudGVycHJpc2U6ICd0ZXN0LWVudGVycHJpc2UtaWQnLFxuICAgICAgICBzYWZlSWQ6ICdzYWZlLTEnLFxuICAgICAgfSk7XG4gICAgICBzaW5vbi5hc3NlcnQuY2FsbGVkV2l0aE1hdGNoKGtleWNoYWluc0J5Q29pblsndHNvbCddLmNyZWF0ZU1wYywge1xuICAgICAgICBtdWx0aXNpZ1R5cGU6ICd0c3MnLFxuICAgICAgICBwYXNzcGhyYXNlOiAncHcnLFxuICAgICAgICBlbnRlcnByaXNlOiAndGVzdC1lbnRlcnByaXNlLWlkJyxcbiAgICAgICAgc2FmZUlkOiAnc2FmZS0xJyxcbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgaXQoJ3NlbGVjdHMgbWFpbm5ldCBjb2lucyBpbiBhIHByb2QgZW52aXJvbm1lbnQnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBtb2NrQml0R28uZ2V0RW52ID0gc2lub24uc3R1YigpLnJldHVybnMoJ3Byb2QnKTtcbiAgICAgIGF3YWl0IHNhZmVzLmNyZWF0ZVNhZmVLZXlzKHsgbGFiZWw6ICdteSBzYWZlJywgcGFzc3BocmFzZTogJ3B3Jywgc2FmZUlkOiAnc2FmZS0xJyB9KTtcblxuICAgICAgc2lub24uYXNzZXJ0LmNhbGxlZFdpdGgobW9ja0JpdEdvLmNvaW4sICdidGMnKTtcbiAgICAgIHNpbm9uLmFzc2VydC5jYWxsZWRXaXRoKG1vY2tCaXRHby5jb2luLCAnZXRoJyk7XG4gICAgICBzaW5vbi5hc3NlcnQuY2FsbGVkV2l0aChtb2NrQml0R28uY29pbiwgJ3NvbCcpO1xuICAgICAgc2lub24uYXNzZXJ0LmNhbGxlZFdpdGgobW9ja0JpdEdvLmNvaW4sICd4bG0nKTtcbiAgICB9KTtcblxuICAgIGl0KCdydW5zIHRoZSA0IHJvb3QgY2VyZW1vbmllcyBpbiBwYXJhbGxlbCAobm9uZSBhd2FpdHMgYW5vdGhlciknLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICAvLyBHYXRlIGV4YWN0bHkgb25lIGNhbGwgcGVyIHJvb3Qgb24gYSBzaGFyZWQgbGF0Y2ggdGhhdCBvbmx5IG9wZW5zIG9uY2UgYWxsIDQgcm9vdHMgaGF2ZVxuICAgICAgLy8gZW50ZXJlZC4gSWYgdGhlIHJvb3RzIHJhbiBzZXF1ZW50aWFsbHksIHRoZSBmaXJzdCB3b3VsZCBhd2FpdCB0aGUgbGF0Y2ggZm9yZXZlciDihpIgdGhlXG4gICAgICAvLyB0ZXN0IHdvdWxkIHRpbWUgb3V0OyBjb21wbGV0aW5nIHByb3ZlcyBhbGwgNCB3ZXJlIGluIGZsaWdodCBjb25jdXJyZW50bHkuXG4gICAgICBsZXQgcmVsZWFzZTogKCkgPT4gdm9pZCA9ICgpID0+IHVuZGVmaW5lZDtcbiAgICAgIGNvbnN0IGdhdGUgPSBuZXcgUHJvbWlzZTx2b2lkPigocmVzb2x2ZSkgPT4gKHJlbGVhc2UgPSByZXNvbHZlKSk7XG4gICAgICBsZXQgc3RhcnRlZCA9IDA7XG4gICAgICBjb25zdCBnYXRlZCA9IChyZXN1bHQ6IGFueSkgPT5cbiAgICAgICAgc2lub24uc3R1YigpLmNhbGxzRmFrZShhc3luYyAoKSA9PiB7XG4gICAgICAgICAgaWYgKCsrc3RhcnRlZCA9PT0gNCkge1xuICAgICAgICAgICAgcmVsZWFzZSgpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBhd2FpdCBnYXRlO1xuICAgICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICAgIH0pO1xuICAgICAgLy8gb25lIGdhdGVkIGVudHJ5IHBvaW50IHBlciByb290OiBtdWx0aXNpZyByb290cyB2aWEgY3JlYXRlQml0R28sIE1QQyByb290cyB2aWEgY3JlYXRlTXBjXG4gICAgICBrZXljaGFpbnNCeUNvaW5bJ3RidGMnXSA9IG1ha2VLZXljaGFpbnMoJ3RidGMnKTtcbiAgICAgIGtleWNoYWluc0J5Q29pblsndGJ0YyddLmNyZWF0ZUJpdEdvID0gZ2F0ZWQoeyBpZDogJ3RidGMtYml0Z28nIH0pO1xuICAgICAga2V5Y2hhaW5zQnlDb2luWyd0eGxtJ10gPSBtYWtlS2V5Y2hhaW5zKCd0eGxtJyk7XG4gICAgICBrZXljaGFpbnNCeUNvaW5bJ3R4bG0nXS5jcmVhdGVCaXRHbyA9IGdhdGVkKHsgaWQ6ICd0eGxtLWJpdGdvJyB9KTtcbiAgICAgIGtleWNoYWluc0J5Q29pblsnaHRldGgnXSA9IG1ha2VLZXljaGFpbnMoJ2h0ZXRoJyk7XG4gICAgICBrZXljaGFpbnNCeUNvaW5bJ2h0ZXRoJ10uY3JlYXRlTXBjID0gZ2F0ZWQoe1xuICAgICAgICB1c2VyS2V5Y2hhaW46IHsgaWQ6ICdodGV0aC11c2VyJyB9LFxuICAgICAgICBiYWNrdXBLZXljaGFpbjogeyBpZDogJ2h0ZXRoLWJhY2t1cCcgfSxcbiAgICAgICAgYml0Z29LZXljaGFpbjogeyBpZDogJ2h0ZXRoLWJpdGdvJyB9LFxuICAgICAgfSk7XG4gICAgICBrZXljaGFpbnNCeUNvaW5bJ3Rzb2wnXSA9IG1ha2VLZXljaGFpbnMoJ3Rzb2wnKTtcbiAgICAgIGtleWNoYWluc0J5Q29pblsndHNvbCddLmNyZWF0ZU1wYyA9IGdhdGVkKHtcbiAgICAgICAgdXNlcktleWNoYWluOiB7IGlkOiAndHNvbC11c2VyJyB9LFxuICAgICAgICBiYWNrdXBLZXljaGFpbjogeyBpZDogJ3Rzb2wtYmFja3VwJyB9LFxuICAgICAgICBiaXRnb0tleWNoYWluOiB7IGlkOiAndHNvbC1iaXRnbycgfSxcbiAgICAgIH0pO1xuXG4gICAgICBhd2FpdCBzYWZlcy5jcmVhdGVTYWZlS2V5cyh7IGxhYmVsOiAnbXkgc2FmZScsIHBhc3NwaHJhc2U6ICdwdycsIHNhZmVJZDogJ3NhZmUtMScgfSk7XG4gICAgICBzdGFydGVkLnNob3VsZC5lcXVhbCg0KTtcbiAgICB9KTtcblxuICAgIGl0KCdhcmNoaXZlcyB0aGUgc2FmZSBhbmQgdGhyb3dzIGxpc3RpbmcgZXZlcnkgZmFpbGVkIGNlcmVtb255JywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgLy8gVHdvIGNlcmVtb25pZXMgZmFpbCAoYW4gTVBDIGFuZCBhIG11bHRpc2lnIHJvb3QpLlxuICAgICAga2V5Y2hhaW5zQnlDb2luWydodGV0aCddID0gbWFrZUtleWNoYWlucygnaHRldGgnKTtcbiAgICAgIGtleWNoYWluc0J5Q29pblsnaHRldGgnXS5jcmVhdGVNcGMgPSBzaW5vbi5zdHViKCkucmVqZWN0cyhuZXcgRXJyb3IoJ2RrbHMgYm9vbScpKTtcbiAgICAgIGtleWNoYWluc0J5Q29pblsndHhsbSddID0gbWFrZUtleWNoYWlucygndHhsbScpO1xuICAgICAga2V5Y2hhaW5zQnlDb2luWyd0eGxtJ10uY3JlYXRlQml0R28gPSBzaW5vbi5zdHViKCkucmVqZWN0cyhuZXcgRXJyb3IoJ2JpdGdvIGtleSBib29tJykpO1xuICAgICAgLy8gYXJjaGl2ZSBzdWNjZWVkcywgcmV0dXJuaW5nIGEgdmFsaWQgKGFyY2hpdmVkKSBTYWZlRGF0YVxuICAgICAgY29uc3Qgc2VuZCA9IHNpbm9uLnN0dWIoKS5yZXR1cm5zKHtcbiAgICAgICAgcmVzdWx0OiBzaW5vbi5zdHViKCkucmVzb2x2ZXMoeyAuLi5zYWZlRGF0YVdpcmUsIHN0YXR1czogJ2FyY2hpdmVkJyB9KSxcbiAgICAgIH0pO1xuICAgICAgbW9ja0JpdEdvLnBvc3QucmV0dXJucyh7IHNlbmQgfSk7XG5cbiAgICAgIGNvbnN0IGVyciA9IGF3YWl0IHNhZmVzXG4gICAgICAgIC5jcmVhdGVTYWZlS2V5cyh7IGxhYmVsOiAnbXkgc2FmZScsIHBhc3NwaHJhc2U6ICdwdycsIHNhZmVJZDogJ3NhZmUtMScgfSlcbiAgICAgICAgLnNob3VsZC5iZS5yZWplY3RlZFdpdGgoL1NhZmUga2V5IGdlbmVyYXRpb24gZmFpbGVkIGZvciAyIHJvb3QvKTtcbiAgICAgIGVyci5tZXNzYWdlLnNob3VsZC5tYXRjaCgvZWNkc2FNcGM6IGRrbHMgYm9vbS8pO1xuICAgICAgZXJyLm1lc3NhZ2Uuc2hvdWxkLm1hdGNoKC9lZDI1NTE5TXVsdGlzaWc6IGJpdGdvIGtleSBib29tLyk7XG4gICAgICBlcnIubWVzc2FnZS5zaG91bGQubWF0Y2goL2hhcyBiZWVuIGFyY2hpdmVkLyk7XG4gICAgICBlcnIubWVzc2FnZS5zaG91bGQubm90Lm1hdGNoKC9hcmNoaXZpbmcgdGhlIHNhZmUgYWxzbyBmYWlsZWQvKTtcbiAgICAgIHNpbm9uLmFzc2VydC5jYWxsZWRXaXRoKG1vY2tCaXRHby5wb3N0LCAnL2VudGVycHJpc2UvdGVzdC1lbnRlcnByaXNlLWlkL3NhZmVzL3NhZmUtMS9hcmNoaXZlJyk7XG4gICAgfSk7XG5cbiAgICBpdCgnbm90ZXMgd2hlbiBhcmNoaXZpbmcgYWxzbyBmYWlscycsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGtleWNoYWluc0J5Q29pblsndHNvbCddID0gbWFrZUtleWNoYWlucygndHNvbCcpO1xuICAgICAga2V5Y2hhaW5zQnlDb2luWyd0c29sJ10uY3JlYXRlTXBjID0gc2lub24uc3R1YigpLnJlamVjdHMobmV3IEVycm9yKCdlZGRzYSBib29tJykpO1xuICAgICAgbW9ja0JpdEdvLnBvc3QucmV0dXJucyh7XG4gICAgICAgIHNlbmQ6IHNpbm9uLnN0dWIoKS5yZXR1cm5zKHsgcmVzdWx0OiBzaW5vbi5zdHViKCkucmVqZWN0cyhuZXcgRXJyb3IoJ2FyY2hpdmUgNTAwJykpIH0pLFxuICAgICAgfSk7XG5cbiAgICAgIGF3YWl0IHNhZmVzXG4gICAgICAgIC5jcmVhdGVTYWZlS2V5cyh7IGxhYmVsOiAnbXkgc2FmZScsIHBhc3NwaHJhc2U6ICdwdycsIHNhZmVJZDogJ3NhZmUtMScgfSlcbiAgICAgICAgLnNob3VsZC5iZS5yZWplY3RlZFdpdGgoL2FyY2hpdmluZyB0aGUgc2FmZSBhbHNvIGZhaWxlZCBcXChhcmNoaXZlIDUwMFxcKS4qYXJjaGl2ZSBpdCBtYW51YWxseS8pO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZSgnZmluYWxpemVTYWZlJywgZnVuY3Rpb24gKCkge1xuICAgIGNvbnN0IHJvb3RLZXlzID0ge1xuICAgICAgaG90OiB7XG4gICAgICAgIHNlY3AyNTZrMU11bHRpc2lnOiBbJ3UxJywgJ2IxJywgJ2cxJ10gYXMgW3N0cmluZywgc3RyaW5nLCBzdHJpbmddLFxuICAgICAgICBlY2RzYU1wYzogWyd1MicsICdiMicsICdnMiddIGFzIFtzdHJpbmcsIHN0cmluZywgc3RyaW5nXSxcbiAgICAgICAgZWRkc2FNcGM6IFsndTMnLCAnYjMnLCAnZzMnXSBhcyBbc3RyaW5nLCBzdHJpbmcsIHN0cmluZ10sXG4gICAgICAgIGVkMjU1MTlNdWx0aXNpZzogWyd1NCcsICdiNCcsICdnNCddIGFzIFtzdHJpbmcsIHN0cmluZywgc3RyaW5nXSxcbiAgICAgIH0sXG4gICAgfTtcblxuICAgIGl0KCdQT1NUcyB0aGUgcm9vdEtleXMgdG8gdGhlIGZpbmFsaXplIFVSTCBhbmQgcmV0dXJucyB0aGUgYWN0aXZlIFNhZmUnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCBzZW5kID0gc2lub24uc3R1YigpLnJldHVybnMoeyByZXN1bHQ6IHNpbm9uLnN0dWIoKS5yZXNvbHZlcyhzYWZlRGF0YVdpcmUpIH0pO1xuICAgICAgbW9ja0JpdEdvLnBvc3QucmV0dXJucyh7IHNlbmQgfSk7XG5cbiAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHNhZmVzLmZpbmFsaXplU2FmZSgndGVzdC1zYWZlLWlkJywgeyByb290S2V5cyB9KTtcblxuICAgICAgcmVzdWx0LnNob3VsZC5iZS5pbnN0YW5jZW9mKFNhZmUpO1xuICAgICAgcmVzdWx0LnN0YXR1cygpLnNob3VsZC5lcXVhbCgnYWN0aXZlJyk7XG4gICAgICBzaW5vbi5hc3NlcnQuY2FsbGVkV2l0aChtb2NrQml0R28ucG9zdCwgJy9lbnRlcnByaXNlL3Rlc3QtZW50ZXJwcmlzZS1pZC9zYWZlcy90ZXN0LXNhZmUtaWQvZmluYWxpemUnKTtcbiAgICAgIHNpbm9uLmFzc2VydC5jYWxsZWRXaXRoTWF0Y2goc2VuZCwgeyByb290S2V5cyB9KTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ2FyY2hpdmVTYWZlJywgZnVuY3Rpb24gKCkge1xuICAgIGl0KCdQT1NUcyB0byB0aGUgYXJjaGl2ZSBVUkwgYW5kIHJldHVybnMgdGhlIGFyY2hpdmVkIFNhZmUnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCBzZW5kID0gc2lub24uc3R1YigpLnJldHVybnMoeyByZXN1bHQ6IHNpbm9uLnN0dWIoKS5yZXNvbHZlcyh7IC4uLnNhZmVEYXRhV2lyZSwgc3RhdHVzOiAnYXJjaGl2ZWQnIH0pIH0pO1xuICAgICAgbW9ja0JpdEdvLnBvc3QucmV0dXJucyh7IHNlbmQgfSk7XG5cbiAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHNhZmVzLmFyY2hpdmVTYWZlKCd0ZXN0LXNhZmUtaWQnKTtcblxuICAgICAgcmVzdWx0LnNob3VsZC5iZS5pbnN0YW5jZW9mKFNhZmUpO1xuICAgICAgcmVzdWx0LnN0YXR1cygpLnNob3VsZC5lcXVhbCgnYXJjaGl2ZWQnKTtcbiAgICAgIHNpbm9uLmFzc2VydC5jYWxsZWRXaXRoKG1vY2tCaXRHby5wb3N0LCAnL2VudGVycHJpc2UvdGVzdC1lbnRlcnByaXNlLWlkL3NhZmVzL3Rlc3Qtc2FmZS1pZC9hcmNoaXZlJyk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdnZW5lcmF0ZVNhZmUnLCBmdW5jdGlvbiAoKSB7XG4gICAgaXQoJ2NoYWlucyBpbml0aWFsaXplIOKGkiBjcmVhdGVTYWZlS2V5cyDihpIgZmluYWxpemUsIHRocmVhZGluZyB0aGUgc2FmZUlkJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgaW5pdGlhbGl6aW5nID0gbmV3IFNhZmUobW9ja0JpdEdvLCB7IC4uLnNhZmVEYXRhV2lyZSwgc3RhdHVzOiAnaW5pdGlhbGl6aW5nJyB9IGFzIGFueSk7XG4gICAgICBjb25zdCByb290S2V5cyA9IHsgcm9vdEtleXM6IHsgaG90OiB7fSB9IH0gYXMgYW55O1xuICAgICAgY29uc3QgaW5pdFN0dWIgPSBzaW5vbi5zdHViKHNhZmVzLCAnaW5pdGlhbGl6ZVNhZmUnKS5yZXNvbHZlcyhpbml0aWFsaXppbmcpO1xuICAgICAgY29uc3Qga2V5c1N0dWIgPSBzaW5vbi5zdHViKHNhZmVzLCAnY3JlYXRlU2FmZUtleXMnKS5yZXNvbHZlcyhyb290S2V5cyk7XG4gICAgICBjb25zdCBmaW5hbGl6ZVN0dWIgPSBzaW5vbi5zdHViKHNhZmVzLCAnZmluYWxpemVTYWZlJykucmVzb2x2ZXMobmV3IFNhZmUobW9ja0JpdEdvLCBzYWZlRGF0YVdpcmUgYXMgYW55KSk7XG5cbiAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHNhZmVzLmdlbmVyYXRlU2FmZSh7IGxhYmVsOiAnbXkgc2FmZScsIHBhc3NwaHJhc2U6ICdwdycgfSk7XG5cbiAgICAgIHNpbm9uLmFzc2VydC5jYWxsZWRXaXRoTWF0Y2goaW5pdFN0dWIsIHsgbGFiZWw6ICdteSBzYWZlJyB9KTtcbiAgICAgIHNpbm9uLmFzc2VydC5jYWxsZWRXaXRoTWF0Y2goa2V5c1N0dWIsIHsgbGFiZWw6ICdteSBzYWZlJywgcGFzc3BocmFzZTogJ3B3Jywgc2FmZUlkOiAndGVzdC1zYWZlLWlkJyB9KTtcbiAgICAgIHNpbm9uLmFzc2VydC5jYWxsZWRXaXRoKGZpbmFsaXplU3R1YiwgJ3Rlc3Qtc2FmZS1pZCcsIHJvb3RLZXlzKTtcbiAgICAgIHNpbm9uLmFzc2VydC5jYWxsT3JkZXIoaW5pdFN0dWIsIGtleXNTdHViLCBmaW5hbGl6ZVN0dWIpO1xuICAgICAgcmVzdWx0LnN0YXR1cygpLnNob3VsZC5lcXVhbCgnYWN0aXZlJyk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdnZXQnLCBmdW5jdGlvbiAoKSB7XG4gICAgaXQoJ0dFVHMgdGhlIHNhZmUgVVJMIGFuZCByZXR1cm5zIGEgU2FmZScsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIG1vY2tCaXRHby5nZXQgPSBzaW5vbi5zdHViKCkucmV0dXJucyh7IHJlc3VsdDogc2lub24uc3R1YigpLnJlc29sdmVzKHNhZmVEYXRhV2lyZSkgfSk7XG5cbiAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHNhZmVzLmdldCh7IGlkOiAndGVzdC1zYWZlLWlkJyB9KTtcblxuICAgICAgcmVzdWx0LnNob3VsZC5iZS5pbnN0YW5jZW9mKFNhZmUpO1xuICAgICAgcmVzdWx0LmlkKCkuc2hvdWxkLmVxdWFsKCd0ZXN0LXNhZmUtaWQnKTtcbiAgICAgIHNpbm9uLmFzc2VydC5jYWxsZWRXaXRoKG1vY2tCaXRHby5nZXQsICcvZW50ZXJwcmlzZS90ZXN0LWVudGVycHJpc2UtaWQvc2FmZXMvdGVzdC1zYWZlLWlkJyk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdsaXN0JywgZnVuY3Rpb24gKCkge1xuICAgIGl0KCdHRVRzIHRoZSBzYWZlcyBjb2xsZWN0aW9uIGFuZCBtYXBzIHRoZSByZXNwb25zZSB0byBTYWZlcycsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IHF1ZXJ5ID0gc2lub24uc3R1YigpLnJldHVybnNUaGlzKCk7XG4gICAgICBjb25zdCByZXN1bHQgPSBzaW5vbi5zdHViKCkucmVzb2x2ZXMoeyBzYWZlczogW3NhZmVEYXRhV2lyZV0sIG5leHRCYXRjaFByZXZJZDogJ25leHQtcGFnZS1pZCcgfSk7XG4gICAgICBtb2NrQml0R28uZ2V0ID0gc2lub24uc3R1YigpLnJldHVybnMoeyBxdWVyeSwgcmVzdWx0IH0pO1xuXG4gICAgICBjb25zdCBwYWdlID0gYXdhaXQgc2FmZXMubGlzdCgpO1xuXG4gICAgICBwYWdlLnNhZmVzLnNob3VsZC5oYXZlLmxlbmd0aCgxKTtcbiAgICAgIHBhZ2Uuc2FmZXNbMF0uc2hvdWxkLmJlLmluc3RhbmNlb2YoU2FmZSk7XG4gICAgICBwYWdlLnNhZmVzWzBdLmlkKCkuc2hvdWxkLmVxdWFsKCd0ZXN0LXNhZmUtaWQnKTtcbiAgICAgIHBhZ2Uuc2hvdWxkLmhhdmUucHJvcGVydHkoJ25leHRDdXJzb3InLCAnbmV4dC1wYWdlLWlkJyk7XG4gICAgICBzaW5vbi5hc3NlcnQuY2FsbGVkV2l0aChtb2NrQml0R28uZ2V0LCAnL2VudGVycHJpc2UvdGVzdC1lbnRlcnByaXNlLWlkL3NhZmVzJyk7XG4gICAgICAvLyBubyBjdXJzb3IvbGltaXQgcGFzc2VkIOKGkiBlbXB0eSBxdWVyeVxuICAgICAgc2lub24uYXNzZXJ0LmNhbGxlZFdpdGgocXVlcnksIHt9KTtcbiAgICB9KTtcblxuICAgIGl0KCdtYXBzIGN1cnNvcuKGknByZXZJZCBhbmQgbGltaXQgb250byB0aGUgcXVlcnknLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCBxdWVyeSA9IHNpbm9uLnN0dWIoKS5yZXR1cm5zVGhpcygpO1xuICAgICAgY29uc3QgcmVzdWx0ID0gc2lub24uc3R1YigpLnJlc29sdmVzKHsgc2FmZXM6IFtdIH0pO1xuICAgICAgbW9ja0JpdEdvLmdldCA9IHNpbm9uLnN0dWIoKS5yZXR1cm5zKHsgcXVlcnksIHJlc3VsdCB9KTtcblxuICAgICAgY29uc3QgcGFnZSA9IGF3YWl0IHNhZmVzLmxpc3QoeyBjdXJzb3I6ICdwcmV2LXBhZ2UtaWQnLCBsaW1pdDogNTAgfSk7XG5cbiAgICAgIHBhZ2Uuc2FmZXMuc2hvdWxkLmhhdmUubGVuZ3RoKDApO1xuICAgICAgLy8gYWJzZW50IG5leHRCYXRjaFByZXZJZCDihpIgdW5kZWZpbmVkIG5leHRDdXJzb3IgKGxhc3QgcGFnZSlcbiAgICAgIChwYWdlLm5leHRDdXJzb3IgPT09IHVuZGVmaW5lZCkuc2hvdWxkLmJlLnRydWUoKTtcbiAgICAgIHNpbm9uLmFzc2VydC5jYWxsZWRXaXRoKHF1ZXJ5LCB7IGxpbWl0OiA1MCwgcHJldklkOiAncHJldi1wYWdlLWlkJyB9KTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ0VudGVycHJpc2Uuc2FmZXMoKSBhY2Nlc3NvcicsIGZ1bmN0aW9uICgpIHtcbiAgICBpdCgncmV0dXJucyBhIFNhZmVzIGluc3RhbmNlIHNjb3BlZCB0byB0aGUgZW50ZXJwcmlzZScsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IGVudGVycHJpc2UgPSBuZXcgRW50ZXJwcmlzZShtb2NrQml0R28sIHt9IGFzIGFueSwgeyBpZDogJ2VudC1pZCcsIG5hbWU6ICdlbnQnIH0pO1xuICAgICAgZW50ZXJwcmlzZS5zYWZlcygpLnNob3VsZC5iZS5pbnN0YW5jZW9mKFNhZmVzKTtcbiAgICB9KTtcbiAgfSk7XG59KTtcbiJdfQ==
297
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2FmZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi90ZXN0L3VuaXQvYml0Z28vc2FmZS9zYWZlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLDZDQUErQjtBQUMvQixrQkFBZ0I7QUFDaEIseUNBQTBEO0FBRTFELFFBQVEsQ0FBQyxPQUFPLEVBQUU7SUFDaEIsSUFBSSxLQUFZLENBQUM7SUFDakIsSUFBSSxTQUFjLENBQUM7SUFDbkIsTUFBTSxZQUFZLEdBQUc7UUFDbkIsRUFBRSxFQUFFLGNBQWM7UUFDbEIsWUFBWSxFQUFFLG9CQUFvQjtRQUNsQyxLQUFLLEVBQUUsU0FBUztRQUNoQixNQUFNLEVBQUUsUUFBUTtRQUNoQixPQUFPLEVBQUUsWUFBWTtRQUNyQixLQUFLLEVBQUUsQ0FBQyxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQUUsV0FBVyxFQUFFLENBQUMsT0FBTyxFQUFFLE9BQU8sQ0FBQyxFQUFFLENBQUM7UUFDbEUsU0FBUyxFQUFFLDBCQUEwQjtLQUN0QyxDQUFDO0lBRUYsVUFBVSxDQUFDO1FBQ1QsU0FBUyxHQUFHO1lBQ1YsR0FBRyxFQUFFLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxJQUFZLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQztZQUNuRCxJQUFJLEVBQUUsS0FBSyxDQUFDLElBQUksRUFBRTtTQUNuQixDQUFDO1FBQ0YsS0FBSyxHQUFHLElBQUksV0FBSyxDQUFDLFNBQVMsRUFBRSxvQkFBb0IsQ0FBQyxDQUFDO0lBQ3JELENBQUMsQ0FBQyxDQUFDO0lBRUgsU0FBUyxDQUFDO1FBQ1IsS0FBSyxDQUFDLE9BQU8sRUFBRSxDQUFDO0lBQ2xCLENBQUMsQ0FBQyxDQUFDO0lBRUgsUUFBUSxDQUFDLGdCQUFnQixFQUFFO1FBQ3pCLEVBQUUsQ0FBQywwRUFBMEUsRUFBRSxLQUFLO1lBQ2xGLE1BQU0s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RSxFQUFFLEtBQUssRUFBRSxFQUFFLEVBQUUsTUFBTSxFQUFFLGNBQWMsRUFBRSxDQUFDLENBQUM7UUFDeEUsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDLENBQUMsQ0FBQztJQUVILFFBQVEsQ0FBQyw2QkFBNkIsRUFBRTtRQUN0QyxFQUFFLENBQUMsbURBQW1ELEVBQUU7WUFDdEQsTUFBTSxVQUFVLEdBQUcsSUFBSSxnQkFBVSxDQUFDLFNBQVMsRUFBRSxFQUFTLEVBQUUsRUFBRSxFQUFFLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDO1lBQ3ZGLFVBQVUsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLFVBQVUsQ0FBQyxXQUFLLENBQUMsQ0FBQztRQUNqRCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBzaW5vbiBmcm9tICdzaW5vbic7XG5pbXBvcnQgJ3Nob3VsZCc7XG5pbXBvcnQgeyBFbnRlcnByaXNlLCBTYWZlLCBTYWZlcyB9IGZyb20gJy4uLy4uLy4uLy4uL3NyYyc7XG5cbmRlc2NyaWJlKCdTYWZlcycsIGZ1bmN0aW9uICgpIHtcbiAgbGV0IHNhZmVzOiBTYWZlcztcbiAgbGV0IG1vY2tCaXRHbzogYW55O1xuICBjb25zdCBzYWZlRGF0YVdpcmUgPSB7XG4gICAgaWQ6ICd0ZXN0LXNhZmUtaWQnLFxuICAgIGVudGVycHJpc2VJZDogJ3Rlc3QtZW50ZXJwcmlzZS1pZCcsXG4gICAgbGFiZWw6ICdteSBzYWZlJyxcbiAgICBzdGF0dXM6ICdhY3RpdmUnLFxuICAgIGNyZWF0b3I6ICdjcmVhdG9yLWlkJyxcbiAgICB1c2VyczogW3sgdXNlcklkOiAnY3JlYXRvci1pZCcsIHBlcm1pc3Npb25zOiBbJ2FkbWluJywgJ3NwZW5kJ10gfV0sXG4gICAgY3JlYXRlZEF0OiAnMjAyNi0wNy0wN1QwMDowMDowMC4wMDBaJyxcbiAgfTtcblxuICBiZWZvcmVFYWNoKGZ1bmN0aW9uICgpIHtcbiAgICBtb2NrQml0R28gPSB7XG4gICAgICB1cmw6IHNpbm9uLnN0dWIoKS5jYWxsc0Zha2UoKHBhdGg6IHN0cmluZykgPT4gcGF0aCksXG4gICAgICBwb3N0OiBzaW5vbi5zdHViKCksXG4gICAgfTtcbiAgICBzYWZlcyA9IG5ldyBTYWZlcyhtb2NrQml0R28sICd0ZXN0LWVudGVycHJpc2UtaWQnKTtcbiAgfSk7XG5cbiAgYWZ0ZXJFYWNoKGZ1bmN0aW9uICgpIHtcbiAgICBzaW5vbi5yZXN0b3JlKCk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdpbml0aWFsaXplU2FmZScsIGZ1bmN0aW9uICgpIHtcbiAgICBpdCgnUE9TVHMgdG8gdGhlIHNhZmVzIGNvbGxlY3Rpb24gVVJMIGFuZCByZXR1cm5zIHRoZSBpbml0aWFsaXppbmcgaWQvc3RhdHVzJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgaW5pdGlhbGl6ZVJlc3BvbnNlV2lyZSA9IHsgaWQ6ICd0ZXN0LXNhZmUtaWQnLCBzdGF0dXM6ICdpbml0aWFsaXppbmcnIH07XG4gICAgICBjb25zdCBzZW5kID0gc2lub24uc3R1YigpLnJldHVybnMoeyByZXN1bHQ6IHNpbm9uLnN0dWIoKS5yZXNvbHZlcyhpbml0aWFsaXplUmVzcG9uc2VXaXJlKSB9KTtcbiAgICAgIG1vY2tCaXRHby5wb3N0LnJldHVybnMoeyBzZW5kIH0pO1xuXG4gICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBzYWZlcy5pbml0aWFsaXplU2FmZSh7IGxhYmVsOiAnbXkgc2FmZScgfSk7XG5cbiAgICAgIHJlc3VsdC5pZC5zaG91bGQuZXF1YWwoJ3Rlc3Qtc2FmZS1pZCcpO1xuICAgICAgcmVzdWx0LnN0YXR1cy5zaG91bGQuZXF1YWwoJ2luaXRpYWxpemluZycpO1xuICAgICAgc2lub24uYXNzZXJ0LmNhbGxlZFdpdGgobW9ja0JpdEdvLnBvc3QsICcvZW50ZXJwcmlzZS90ZXN0LWVudGVycHJpc2UtaWQvc2FmZXMnKTtcbiAgICAgIHNpbm9uLmFzc2VydC5jYWxsZWRXaXRoKHNlbmQsIHsgbGFiZWw6ICdteSBzYWZlJyB9KTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ2NyZWF0ZVNhZmVLZXlzJywgZnVuY3Rpb24gKCkge1xuICAgIC8vIFBlci1jb2luIGtleWNoYWlucygpIG1vY2s6IG11bHRpc2lnIGNvaW5zIHVzZSBjcmVhdGUvYWRkL2NyZWF0ZUJhY2t1cC9jcmVhdGVCaXRHbzsgTVBDIGNvaW5zXG4gICAgLy8gdXNlIGNyZWF0ZU1wYy4gSWRzIGFyZSBkZXJpdmVkIGZyb20gdGhlIGNvaW4gbmFtZSBzbyB3ZSBjYW4gYXNzZXJ0IHBlci1zbG90IGNvaW4gcm91dGluZy5cbiAgICBmdW5jdGlvbiBtYWtlS2V5Y2hhaW5zKGNvaW46IHN0cmluZykge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgY3JlYXRlOiBzaW5vbi5zdHViKCkucmV0dXJucyh7IHB1YjogYCR7Y29pbn0tcHViYCwgcHJ2OiBgJHtjb2lufS1wcnZgIH0pLFxuICAgICAgICBhZGQ6IHNpbm9uLnN0dWIoKS5yZXNvbHZlcyh7IGlkOiBgJHtjb2lufS11c2VyYCB9KSxcbiAgICAgICAgY3JlYXRlQmFja3VwOiBzaW5vbi5zdHViKCkucmVzb2x2ZXMoeyBpZDogYCR7Y29pbn0tYmFja3VwYCB9KSxcbiAgICAgICAgY3JlYXRlQml0R286IHNpbm9uLnN0dWIoKS5yZXNvbHZlcyh7IGlkOiBgJHtjb2lufS1iaXRnb2AgfSksXG4gICAgICAgIGNyZWF0ZU1wYzogc2lub24uc3R1YigpLnJlc29sdmVzKHtcbiAgICAgICAgICB1c2VyS2V5Y2hhaW46IHsgaWQ6IGAke2NvaW59LXVzZXJgIH0sXG4gICAgICAgICAgYmFja3VwS2V5Y2hhaW46IHsgaWQ6IGAke2NvaW59LWJhY2t1cGAgfSxcbiAgICAgICAgICBiaXRnb0tleWNoYWluOiB7IGlkOiBgJHtjb2lufS1iaXRnb2AgfSxcbiAgICAgICAgfSksXG4gICAgICB9O1xuICAgIH1cblxuICAgIGxldCBrZXljaGFpbnNCeUNvaW46IFJlY29yZDxzdHJpbmcsIFJldHVyblR5cGU8dHlwZW9mIG1ha2VLZXljaGFpbnM+PjtcblxuICAgIGJlZm9yZUVhY2goZnVuY3Rpb24gKCkge1xuICAgICAga2V5Y2hhaW5zQnlDb2luID0ge307XG4gICAgICBtb2NrQml0R28uZ2V0RW52ID0gc2lub24uc3R1YigpLnJldHVybnMoJ3Rlc3QnKTsgLy8gdGVzdG5ldCBjb2luIG1hcFxuICAgICAgbW9ja0JpdEdvLmVuY3J5cHQgPSBzaW5vbi5zdHViKCkucmVzb2x2ZXMoJ2VuY3J5cHRlZC1wcnYnKTtcbiAgICAgIG1vY2tCaXRHby5jb2luID0gc2lub24uc3R1YigpLmNhbGxzRmFrZSgobmFtZTogc3RyaW5nKSA9PiB7XG4gICAgICAgIGtleWNoYWluc0J5Q29pbltuYW1lXSA9IGtleWNoYWluc0J5Q29pbltuYW1lXSB8fCBtYWtlS2V5Y2hhaW5zKG5hbWUpO1xuICAgICAgICByZXR1cm4geyBrZXljaGFpbnM6ICgpID0+IGtleWNoYWluc0J5Q29pbltuYW1lXSB9O1xuICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICBpdCgncnVucyB0aGUgNCByb290IGNlcmVtb25pZXMgYW5kIHJldHVybnMgMTIgaWRzIGFzIG9yZGVyZWQgdHJpcGxldHMnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBzYWZlcy5jcmVhdGVTYWZlS2V5cyh7IGxhYmVsOiAnbXkgc2FmZScsIHBhc3NwaHJhc2U6ICdwdycsIHNhZmVJZDogJ3NhZmUtMScgfSk7XG5cbiAgICAgIHJlc3VsdC5zaG91bGQuZGVlcEVxdWFsKHtcbiAgICAgICAgcm9vdEtleXM6IHtcbiAgICAgICAgICBob3Q6IHtcbiAgICAgICAgICAgIHNlY3AyNTZrMU11bHRpc2lnOiBbJ3RidGMtdXNlcicsICd0YnRjLWJhY2t1cCcsICd0YnRjLWJpdGdvJ10sXG4gICAgICAgICAgICBlY2RzYU1wYzogWydodGV0aC11c2VyJywgJ2h0ZXRoLWJhY2t1cCcsICdodGV0aC1iaXRnbyddLFxuICAgICAgICAgICAgZWRkc2FNcGM6IFsndHNvbC11c2VyJywgJ3Rzb2wtYmFja3VwJywgJ3Rzb2wtYml0Z28nXSxcbiAgICAgICAgICAgIGVkMjU1MTlNdWx0aXNpZzogWyd0eGxtLXVzZXInLCAndHhsbS1iYWNrdXAnLCAndHhsbS1iaXRnbyddLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIGl0KCd0YWdzIGV2ZXJ5IG11bHRpc2lnIGtleSByZWdpc3RyYXRpb24gd2l0aCBzYWZlSWQgYW5kIHRoZSBjb3JyZWN0IHNvdXJjZScsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGF3YWl0IHNhZmVzLmNyZWF0ZVNhZmVLZXlzKHsgbGFiZWw6ICdteSBzYWZlJywgcGFzc3BocmFzZTogJ3B3Jywgc2FmZUlkOiAnc2FmZS0xJyB9KTtcblxuICAgICAgY29uc3QgYnRjID0ga2V5Y2hhaW5zQnlDb2luWyd0YnRjJ107XG4gICAgICBzaW5vbi5hc3NlcnQuY2FsbGVkV2l0aE1hdGNoKGJ0Yy5hZGQsIHtcbiAgICAgICAgcHViOiAndGJ0Yy1wdWInLFxuICAgICAgICBlbmNyeXB0ZWRQcnY6ICdlbmNyeXB0ZWQtcHJ2JyxcbiAgICAgICAgc291cmNlOiAndXNlcicsXG4gICAgICAgIHNhZmVJZDogJ3NhZmUtMScsXG4gICAgICB9KTtcbiAgICAgIHNpbm9uLmFzc2VydC5jYWxsZWRXaXRoTWF0Y2goYnRjLmNyZWF0ZUJhY2t1cCwgeyBwYXNzcGhyYXNlOiAncHcnLCBzYWZlSWQ6ICdzYWZlLTEnIH0pO1xuICAgICAgc2lub24uYXNzZXJ0LmNhbGxlZFdpdGhNYXRjaChidGMuY3JlYXRlQml0R28sIHsgZW50ZXJwcmlzZTogJ3Rlc3QtZW50ZXJwcmlzZS1pZCcsIHNhZmVJZDogJ3NhZmUtMScgfSk7XG4gICAgfSk7XG5cbiAgICBpdCgndGhyZWFkcyBzYWZlSWQgKyBlbnRlcnByaXNlIGludG8gYm90aCBNUEMgY2VyZW1vbmllcycsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGF3YWl0IHNhZmVzLmNyZWF0ZVNhZmVLZXlzKHsgbGFiZWw6ICdteSBzYWZlJywgcGFzc3BocmFzZTogJ3B3Jywgc2FmZUlkOiAnc2FmZS0xJyB9KTtcblxuICAgICAgc2lub24uYXNzZXJ0LmNhbGxlZFdpdGhNYXRjaChrZXljaGFpbnNCeUNvaW5bJ2h0ZXRoJ10uY3JlYXRlTXBjLCB7XG4gICAgICAgIG11bHRpc2lnVHlwZTogJ3RzcycsXG4gICAgICAgIHBhc3NwaHJhc2U6ICdwdycsXG4gICAgICAgIGVudGVycHJpc2U6ICd0ZXN0LWVudGVycHJpc2UtaWQnLFxuICAgICAgICBzYWZlSWQ6ICdzYWZlLTEnLFxuICAgICAgfSk7XG4gICAgICBzaW5vbi5hc3NlcnQuY2FsbGVkV2l0aE1hdGNoKGtleWNoYWluc0J5Q29pblsndHNvbCddLmNyZWF0ZU1wYywge1xuICAgICAgICBtdWx0aXNpZ1R5cGU6ICd0c3MnLFxuICAgICAgICBwYXNzcGhyYXNlOiAncHcnLFxuICAgICAgICBlbnRlcnByaXNlOiAndGVzdC1lbnRlcnByaXNlLWlkJyxcbiAgICAgICAgc2FmZUlkOiAnc2FmZS0xJyxcbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgaXQoJ3NlbGVjdHMgbWFpbm5ldCBjb2lucyBpbiBhIHByb2QgZW52aXJvbm1lbnQnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBtb2NrQml0R28uZ2V0RW52ID0gc2lub24uc3R1YigpLnJldHVybnMoJ3Byb2QnKTtcbiAgICAgIGF3YWl0IHNhZmVzLmNyZWF0ZVNhZmVLZXlzKHsgbGFiZWw6ICdteSBzYWZlJywgcGFzc3BocmFzZTogJ3B3Jywgc2FmZUlkOiAnc2FmZS0xJyB9KTtcblxuICAgICAgc2lub24uYXNzZXJ0LmNhbGxlZFdpdGgobW9ja0JpdEdvLmNvaW4sICdidGMnKTtcbiAgICAgIHNpbm9uLmFzc2VydC5jYWxsZWRXaXRoKG1vY2tCaXRHby5jb2luLCAnZXRoJyk7XG4gICAgICBzaW5vbi5hc3NlcnQuY2FsbGVkV2l0aChtb2NrQml0R28uY29pbiwgJ3NvbCcpO1xuICAgICAgc2lub24uYXNzZXJ0LmNhbGxlZFdpdGgobW9ja0JpdEdvLmNvaW4sICd4bG0nKTtcbiAgICB9KTtcblxuICAgIGl0KCdydW5zIHRoZSA0IHJvb3QgY2VyZW1vbmllcyBpbiBwYXJhbGxlbCAobm9uZSBhd2FpdHMgYW5vdGhlciknLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICAvLyBHYXRlIGV4YWN0bHkgb25lIGNhbGwgcGVyIHJvb3Qgb24gYSBzaGFyZWQgbGF0Y2ggdGhhdCBvbmx5IG9wZW5zIG9uY2UgYWxsIDQgcm9vdHMgaGF2ZVxuICAgICAgLy8gZW50ZXJlZC4gSWYgdGhlIHJvb3RzIHJhbiBzZXF1ZW50aWFsbHksIHRoZSBmaXJzdCB3b3VsZCBhd2FpdCB0aGUgbGF0Y2ggZm9yZXZlciDihpIgdGhlXG4gICAgICAvLyB0ZXN0IHdvdWxkIHRpbWUgb3V0OyBjb21wbGV0aW5nIHByb3ZlcyBhbGwgNCB3ZXJlIGluIGZsaWdodCBjb25jdXJyZW50bHkuXG4gICAgICBsZXQgcmVsZWFzZTogKCkgPT4gdm9pZCA9ICgpID0+IHVuZGVmaW5lZDtcbiAgICAgIGNvbnN0IGdhdGUgPSBuZXcgUHJvbWlzZTx2b2lkPigocmVzb2x2ZSkgPT4gKHJlbGVhc2UgPSByZXNvbHZlKSk7XG4gICAgICBsZXQgc3RhcnRlZCA9IDA7XG4gICAgICBjb25zdCBnYXRlZCA9IChyZXN1bHQ6IGFueSkgPT5cbiAgICAgICAgc2lub24uc3R1YigpLmNhbGxzRmFrZShhc3luYyAoKSA9PiB7XG4gICAgICAgICAgaWYgKCsrc3RhcnRlZCA9PT0gNCkge1xuICAgICAgICAgICAgcmVsZWFzZSgpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBhd2FpdCBnYXRlO1xuICAgICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICAgIH0pO1xuICAgICAgLy8gb25lIGdhdGVkIGVudHJ5IHBvaW50IHBlciByb290OiBtdWx0aXNpZyByb290cyB2aWEgY3JlYXRlQml0R28sIE1QQyByb290cyB2aWEgY3JlYXRlTXBjXG4gICAgICBrZXljaGFpbnNCeUNvaW5bJ3RidGMnXSA9IG1ha2VLZXljaGFpbnMoJ3RidGMnKTtcbiAgICAgIGtleWNoYWluc0J5Q29pblsndGJ0YyddLmNyZWF0ZUJpdEdvID0gZ2F0ZWQoeyBpZDogJ3RidGMtYml0Z28nIH0pO1xuICAgICAga2V5Y2hhaW5zQnlDb2luWyd0eGxtJ10gPSBtYWtlS2V5Y2hhaW5zKCd0eGxtJyk7XG4gICAgICBrZXljaGFpbnNCeUNvaW5bJ3R4bG0nXS5jcmVhdGVCaXRHbyA9IGdhdGVkKHsgaWQ6ICd0eGxtLWJpdGdvJyB9KTtcbiAgICAgIGtleWNoYWluc0J5Q29pblsnaHRldGgnXSA9IG1ha2VLZXljaGFpbnMoJ2h0ZXRoJyk7XG4gICAgICBrZXljaGFpbnNCeUNvaW5bJ2h0ZXRoJ10uY3JlYXRlTXBjID0gZ2F0ZWQoe1xuICAgICAgICB1c2VyS2V5Y2hhaW46IHsgaWQ6ICdodGV0aC11c2VyJyB9LFxuICAgICAgICBiYWNrdXBLZXljaGFpbjogeyBpZDogJ2h0ZXRoLWJhY2t1cCcgfSxcbiAgICAgICAgYml0Z29LZXljaGFpbjogeyBpZDogJ2h0ZXRoLWJpdGdvJyB9LFxuICAgICAgfSk7XG4gICAgICBrZXljaGFpbnNCeUNvaW5bJ3Rzb2wnXSA9IG1ha2VLZXljaGFpbnMoJ3Rzb2wnKTtcbiAgICAgIGtleWNoYWluc0J5Q29pblsndHNvbCddLmNyZWF0ZU1wYyA9IGdhdGVkKHtcbiAgICAgICAgdXNlcktleWNoYWluOiB7IGlkOiAndHNvbC11c2VyJyB9LFxuICAgICAgICBiYWNrdXBLZXljaGFpbjogeyBpZDogJ3Rzb2wtYmFja3VwJyB9LFxuICAgICAgICBiaXRnb0tleWNoYWluOiB7IGlkOiAndHNvbC1iaXRnbycgfSxcbiAgICAgIH0pO1xuXG4gICAgICBhd2FpdCBzYWZlcy5jcmVhdGVTYWZlS2V5cyh7IGxhYmVsOiAnbXkgc2FmZScsIHBhc3NwaHJhc2U6ICdwdycsIHNhZmVJZDogJ3NhZmUtMScgfSk7XG4gICAgICBzdGFydGVkLnNob3VsZC5lcXVhbCg0KTtcbiAgICB9KTtcblxuICAgIGl0KCdhcmNoaXZlcyB0aGUgc2FmZSBhbmQgdGhyb3dzIGxpc3RpbmcgZXZlcnkgZmFpbGVkIGNlcmVtb255JywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgLy8gVHdvIGNlcmVtb25pZXMgZmFpbCAoYW4gTVBDIGFuZCBhIG11bHRpc2lnIHJvb3QpLlxuICAgICAga2V5Y2hhaW5zQnlDb2luWydodGV0aCddID0gbWFrZUtleWNoYWlucygnaHRldGgnKTtcbiAgICAgIGtleWNoYWluc0J5Q29pblsnaHRldGgnXS5jcmVhdGVNcGMgPSBzaW5vbi5zdHViKCkucmVqZWN0cyhuZXcgRXJyb3IoJ2RrbHMgYm9vbScpKTtcbiAgICAgIGtleWNoYWluc0J5Q29pblsndHhsbSddID0gbWFrZUtleWNoYWlucygndHhsbScpO1xuICAgICAga2V5Y2hhaW5zQnlDb2luWyd0eGxtJ10uY3JlYXRlQml0R28gPSBzaW5vbi5zdHViKCkucmVqZWN0cyhuZXcgRXJyb3IoJ2JpdGdvIGtleSBib29tJykpO1xuICAgICAgLy8gYXJjaGl2ZSBzdWNjZWVkcywgcmV0dXJuaW5nIGEgdmFsaWQgKGFyY2hpdmVkKSBTYWZlRGF0YVxuICAgICAgY29uc3Qgc2VuZCA9IHNpbm9uLnN0dWIoKS5yZXR1cm5zKHtcbiAgICAgICAgcmVzdWx0OiBzaW5vbi5zdHViKCkucmVzb2x2ZXMoeyAuLi5zYWZlRGF0YVdpcmUsIHN0YXR1czogJ2FyY2hpdmVkJyB9KSxcbiAgICAgIH0pO1xuICAgICAgbW9ja0JpdEdvLnBvc3QucmV0dXJucyh7IHNlbmQgfSk7XG5cbiAgICAgIGNvbnN0IGVyciA9IGF3YWl0IHNhZmVzXG4gICAgICAgIC5jcmVhdGVTYWZlS2V5cyh7IGxhYmVsOiAnbXkgc2FmZScsIHBhc3NwaHJhc2U6ICdwdycsIHNhZmVJZDogJ3NhZmUtMScgfSlcbiAgICAgICAgLnNob3VsZC5iZS5yZWplY3RlZFdpdGgoL1NhZmUga2V5IGdlbmVyYXRpb24gZmFpbGVkIGZvciAyIHJvb3QvKTtcbiAgICAgIGVyci5tZXNzYWdlLnNob3VsZC5tYXRjaCgvZWNkc2FNcGM6IGRrbHMgYm9vbS8pO1xuICAgICAgZXJyLm1lc3NhZ2Uuc2hvdWxkLm1hdGNoKC9lZDI1NTE5TXVsdGlzaWc6IGJpdGdvIGtleSBib29tLyk7XG4gICAgICBlcnIubWVzc2FnZS5zaG91bGQubWF0Y2goL2hhcyBiZWVuIGFyY2hpdmVkLyk7XG4gICAgICBlcnIubWVzc2FnZS5zaG91bGQubm90Lm1hdGNoKC9hcmNoaXZpbmcgdGhlIHNhZmUgYWxzbyBmYWlsZWQvKTtcbiAgICAgIHNpbm9uLmFzc2VydC5jYWxsZWRXaXRoKG1vY2tCaXRHby5wb3N0LCAnL2VudGVycHJpc2UvdGVzdC1lbnRlcnByaXNlLWlkL3NhZmVzL3NhZmUtMS9hcmNoaXZlJyk7XG4gICAgfSk7XG5cbiAgICBpdCgnbm90ZXMgd2hlbiBhcmNoaXZpbmcgYWxzbyBmYWlscycsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGtleWNoYWluc0J5Q29pblsndHNvbCddID0gbWFrZUtleWNoYWlucygndHNvbCcpO1xuICAgICAga2V5Y2hhaW5zQnlDb2luWyd0c29sJ10uY3JlYXRlTXBjID0gc2lub24uc3R1YigpLnJlamVjdHMobmV3IEVycm9yKCdlZGRzYSBib29tJykpO1xuICAgICAgbW9ja0JpdEdvLnBvc3QucmV0dXJucyh7XG4gICAgICAgIHNlbmQ6IHNpbm9uLnN0dWIoKS5yZXR1cm5zKHsgcmVzdWx0OiBzaW5vbi5zdHViKCkucmVqZWN0cyhuZXcgRXJyb3IoJ2FyY2hpdmUgNTAwJykpIH0pLFxuICAgICAgfSk7XG5cbiAgICAgIGF3YWl0IHNhZmVzXG4gICAgICAgIC5jcmVhdGVTYWZlS2V5cyh7IGxhYmVsOiAnbXkgc2FmZScsIHBhc3NwaHJhc2U6ICdwdycsIHNhZmVJZDogJ3NhZmUtMScgfSlcbiAgICAgICAgLnNob3VsZC5iZS5yZWplY3RlZFdpdGgoL2FyY2hpdmluZyB0aGUgc2FmZSBhbHNvIGZhaWxlZCBcXChhcmNoaXZlIDUwMFxcKS4qYXJjaGl2ZSBpdCBtYW51YWxseS8pO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZSgnZmluYWxpemVTYWZlJywgZnVuY3Rpb24gKCkge1xuICAgIGNvbnN0IHJvb3RLZXlzID0ge1xuICAgICAgaG90OiB7XG4gICAgICAgIHNlY3AyNTZrMU11bHRpc2lnOiBbJ3UxJywgJ2IxJywgJ2cxJ10gYXMgW3N0cmluZywgc3RyaW5nLCBzdHJpbmddLFxuICAgICAgICBlY2RzYU1wYzogWyd1MicsICdiMicsICdnMiddIGFzIFtzdHJpbmcsIHN0cmluZywgc3RyaW5nXSxcbiAgICAgICAgZWRkc2FNcGM6IFsndTMnLCAnYjMnLCAnZzMnXSBhcyBbc3RyaW5nLCBzdHJpbmcsIHN0cmluZ10sXG4gICAgICAgIGVkMjU1MTlNdWx0aXNpZzogWyd1NCcsICdiNCcsICdnNCddIGFzIFtzdHJpbmcsIHN0cmluZywgc3RyaW5nXSxcbiAgICAgIH0sXG4gICAgfTtcblxuICAgIGl0KCdQT1NUcyB0aGUgcm9vdEtleXMgdG8gdGhlIGZpbmFsaXplIFVSTCBhbmQgcmV0dXJucyB0aGUgYWN0aXZlIFNhZmUnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCBzZW5kID0gc2lub24uc3R1YigpLnJldHVybnMoeyByZXN1bHQ6IHNpbm9uLnN0dWIoKS5yZXNvbHZlcyhzYWZlRGF0YVdpcmUpIH0pO1xuICAgICAgbW9ja0JpdEdvLnBvc3QucmV0dXJucyh7IHNlbmQgfSk7XG5cbiAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHNhZmVzLmZpbmFsaXplU2FmZSgndGVzdC1zYWZlLWlkJywgeyByb290S2V5cyB9KTtcblxuICAgICAgcmVzdWx0LnNob3VsZC5iZS5pbnN0YW5jZW9mKFNhZmUpO1xuICAgICAgcmVzdWx0LnN0YXR1cygpLnNob3VsZC5lcXVhbCgnYWN0aXZlJyk7XG4gICAgICBzaW5vbi5hc3NlcnQuY2FsbGVkV2l0aChtb2NrQml0R28ucG9zdCwgJy9lbnRlcnByaXNlL3Rlc3QtZW50ZXJwcmlzZS1pZC9zYWZlcy90ZXN0LXNhZmUtaWQvZmluYWxpemUnKTtcbiAgICAgIHNpbm9uLmFzc2VydC5jYWxsZWRXaXRoTWF0Y2goc2VuZCwgeyByb290S2V5cyB9KTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ2FyY2hpdmVTYWZlJywgZnVuY3Rpb24gKCkge1xuICAgIGl0KCdQT1NUcyB0byB0aGUgYXJjaGl2ZSBVUkwgYW5kIHJldHVybnMgdGhlIGFyY2hpdmVkIFNhZmUnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCBzZW5kID0gc2lub24uc3R1YigpLnJldHVybnMoeyByZXN1bHQ6IHNpbm9uLnN0dWIoKS5yZXNvbHZlcyh7IC4uLnNhZmVEYXRhV2lyZSwgc3RhdHVzOiAnYXJjaGl2ZWQnIH0pIH0pO1xuICAgICAgbW9ja0JpdEdvLnBvc3QucmV0dXJucyh7IHNlbmQgfSk7XG5cbiAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHNhZmVzLmFyY2hpdmVTYWZlKCd0ZXN0LXNhZmUtaWQnKTtcblxuICAgICAgcmVzdWx0LnNob3VsZC5iZS5pbnN0YW5jZW9mKFNhZmUpO1xuICAgICAgcmVzdWx0LnN0YXR1cygpLnNob3VsZC5lcXVhbCgnYXJjaGl2ZWQnKTtcbiAgICAgIHNpbm9uLmFzc2VydC5jYWxsZWRXaXRoKG1vY2tCaXRHby5wb3N0LCAnL2VudGVycHJpc2UvdGVzdC1lbnRlcnByaXNlLWlkL3NhZmVzL3Rlc3Qtc2FmZS1pZC9hcmNoaXZlJyk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdnZW5lcmF0ZVNhZmUnLCBmdW5jdGlvbiAoKSB7XG4gICAgaXQoJ2NoYWlucyBpbml0aWFsaXplIOKGkiBjcmVhdGVTYWZlS2V5cyDihpIgZmluYWxpemUsIHRocmVhZGluZyB0aGUgc2FmZUlkJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgaW5pdGlhbGl6aW5nID0geyBpZDogJ3Rlc3Qtc2FmZS1pZCcsIHN0YXR1czogJ2luaXRpYWxpemluZycgYXMgY29uc3QgfTtcbiAgICAgIGNvbnN0IHJvb3RLZXlzID0geyByb290S2V5czogeyBob3Q6IHt9IH0gfSBhcyBhbnk7XG4gICAgICBjb25zdCBpbml0U3R1YiA9IHNpbm9uLnN0dWIoc2FmZXMsICdpbml0aWFsaXplU2FmZScpLnJlc29sdmVzKGluaXRpYWxpemluZyk7XG4gICAgICBjb25zdCBrZXlzU3R1YiA9IHNpbm9uLnN0dWIoc2FmZXMsICdjcmVhdGVTYWZlS2V5cycpLnJlc29sdmVzKHJvb3RLZXlzKTtcbiAgICAgIGNvbnN0IGZpbmFsaXplU3R1YiA9IHNpbm9uLnN0dWIoc2FmZXMsICdmaW5hbGl6ZVNhZmUnKS5yZXNvbHZlcyhuZXcgU2FmZShtb2NrQml0R28sIHNhZmVEYXRhV2lyZSBhcyBhbnkpKTtcblxuICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgc2FmZXMuZ2VuZXJhdGVTYWZlKHsgbGFiZWw6ICdteSBzYWZlJywgcGFzc3BocmFzZTogJ3B3JyB9KTtcblxuICAgICAgc2lub24uYXNzZXJ0LmNhbGxlZFdpdGhNYXRjaChpbml0U3R1YiwgeyBsYWJlbDogJ215IHNhZmUnIH0pO1xuICAgICAgc2lub24uYXNzZXJ0LmNhbGxlZFdpdGhNYXRjaChrZXlzU3R1YiwgeyBsYWJlbDogJ215IHNhZmUnLCBwYXNzcGhyYXNlOiAncHcnLCBzYWZlSWQ6ICd0ZXN0LXNhZmUtaWQnIH0pO1xuICAgICAgc2lub24uYXNzZXJ0LmNhbGxlZFdpdGgoZmluYWxpemVTdHViLCAndGVzdC1zYWZlLWlkJywgcm9vdEtleXMpO1xuICAgICAgc2lub24uYXNzZXJ0LmNhbGxPcmRlcihpbml0U3R1Yiwga2V5c1N0dWIsIGZpbmFsaXplU3R1Yik7XG4gICAgICByZXN1bHQuc3RhdHVzKCkuc2hvdWxkLmVxdWFsKCdhY3RpdmUnKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ2dldCcsIGZ1bmN0aW9uICgpIHtcbiAgICBpdCgnR0VUcyB0aGUgc2FmZSBVUkwgYW5kIHJldHVybnMgYSBTYWZlJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgbW9ja0JpdEdvLmdldCA9IHNpbm9uLnN0dWIoKS5yZXR1cm5zKHsgcmVzdWx0OiBzaW5vbi5zdHViKCkucmVzb2x2ZXMoc2FmZURhdGFXaXJlKSB9KTtcblxuICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgc2FmZXMuZ2V0KHsgaWQ6ICd0ZXN0LXNhZmUtaWQnIH0pO1xuXG4gICAgICByZXN1bHQuc2hvdWxkLmJlLmluc3RhbmNlb2YoU2FmZSk7XG4gICAgICByZXN1bHQuaWQoKS5zaG91bGQuZXF1YWwoJ3Rlc3Qtc2FmZS1pZCcpO1xuICAgICAgc2lub24uYXNzZXJ0LmNhbGxlZFdpdGgobW9ja0JpdEdvLmdldCwgJy9lbnRlcnByaXNlL3Rlc3QtZW50ZXJwcmlzZS1pZC9zYWZlcy90ZXN0LXNhZmUtaWQnKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ2xpc3QnLCBmdW5jdGlvbiAoKSB7XG4gICAgaXQoJ0dFVHMgdGhlIHNhZmVzIGNvbGxlY3Rpb24gYW5kIG1hcHMgdGhlIHJlc3BvbnNlIHRvIFNhZmVzJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgcXVlcnkgPSBzaW5vbi5zdHViKCkucmV0dXJuc1RoaXMoKTtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IHNpbm9uLnN0dWIoKS5yZXNvbHZlcyh7IHNhZmVzOiBbc2FmZURhdGFXaXJlXSwgbmV4dEJhdGNoUHJldklkOiAnbmV4dC1wYWdlLWlkJyB9KTtcbiAgICAgIG1vY2tCaXRHby5nZXQgPSBzaW5vbi5zdHViKCkucmV0dXJucyh7IHF1ZXJ5LCByZXN1bHQgfSk7XG5cbiAgICAgIGNvbnN0IHBhZ2UgPSBhd2FpdCBzYWZlcy5saXN0KCk7XG5cbiAgICAgIHBhZ2Uuc2FmZXMuc2hvdWxkLmhhdmUubGVuZ3RoKDEpO1xuICAgICAgcGFnZS5zYWZlc1swXS5zaG91bGQuYmUuaW5zdGFuY2VvZihTYWZlKTtcbiAgICAgIHBhZ2Uuc2FmZXNbMF0uaWQoKS5zaG91bGQuZXF1YWwoJ3Rlc3Qtc2FmZS1pZCcpO1xuICAgICAgcGFnZS5zaG91bGQuaGF2ZS5wcm9wZXJ0eSgnbmV4dEN1cnNvcicsICduZXh0LXBhZ2UtaWQnKTtcbiAgICAgIHNpbm9uLmFzc2VydC5jYWxsZWRXaXRoKG1vY2tCaXRHby5nZXQsICcvZW50ZXJwcmlzZS90ZXN0LWVudGVycHJpc2UtaWQvc2FmZXMnKTtcbiAgICAgIC8vIG5vIGN1cnNvci9saW1pdCBwYXNzZWQg4oaSIGVtcHR5IHF1ZXJ5XG4gICAgICBzaW5vbi5hc3NlcnQuY2FsbGVkV2l0aChxdWVyeSwge30pO1xuICAgIH0pO1xuXG4gICAgaXQoJ21hcHMgY3Vyc29y4oaScHJldklkIGFuZCBsaW1pdCBvbnRvIHRoZSBxdWVyeScsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IHF1ZXJ5ID0gc2lub24uc3R1YigpLnJldHVybnNUaGlzKCk7XG4gICAgICBjb25zdCByZXN1bHQgPSBzaW5vbi5zdHViKCkucmVzb2x2ZXMoeyBzYWZlczogW10gfSk7XG4gICAgICBtb2NrQml0R28uZ2V0ID0gc2lub24uc3R1YigpLnJldHVybnMoeyBxdWVyeSwgcmVzdWx0IH0pO1xuXG4gICAgICBjb25zdCBwYWdlID0gYXdhaXQgc2FmZXMubGlzdCh7IGN1cnNvcjogJ3ByZXYtcGFnZS1pZCcsIGxpbWl0OiA1MCB9KTtcblxuICAgICAgcGFnZS5zYWZlcy5zaG91bGQuaGF2ZS5sZW5ndGgoMCk7XG4gICAgICAvLyBhYnNlbnQgbmV4dEJhdGNoUHJldklkIOKGkiB1bmRlZmluZWQgbmV4dEN1cnNvciAobGFzdCBwYWdlKVxuICAgICAgKHBhZ2UubmV4dEN1cnNvciA9PT0gdW5kZWZpbmVkKS5zaG91bGQuYmUudHJ1ZSgpO1xuICAgICAgc2lub24uYXNzZXJ0LmNhbGxlZFdpdGgocXVlcnksIHsgbGltaXQ6IDUwLCBwcmV2SWQ6ICdwcmV2LXBhZ2UtaWQnIH0pO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZSgnRW50ZXJwcmlzZS5zYWZlcygpIGFjY2Vzc29yJywgZnVuY3Rpb24gKCkge1xuICAgIGl0KCdyZXR1cm5zIGEgU2FmZXMgaW5zdGFuY2Ugc2NvcGVkIHRvIHRoZSBlbnRlcnByaXNlJywgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgZW50ZXJwcmlzZSA9IG5ldyBFbnRlcnByaXNlKG1vY2tCaXRHbywge30gYXMgYW55LCB7IGlkOiAnZW50LWlkJywgbmFtZTogJ2VudCcgfSk7XG4gICAgICBlbnRlcnByaXNlLnNhZmVzKCkuc2hvdWxkLmJlLmluc3RhbmNlb2YoU2FmZXMpO1xuICAgIH0pO1xuICB9KTtcbn0pO1xuIl19