@decaf-ts/for-fabric 0.4.7 → 0.4.8-hotfix.1

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.
@@ -162,14 +162,18 @@ async function getSigner(keyDirectoryPath) {
162
162
  return await promises.readFile(keyPath);
163
163
  };
164
164
  const privateKeyPem = (await contentOfLoadFile(keyDirectoryPath, signerFileReader));
165
- // Node based implementation
166
- // privateKey = createPrivateKey(privateKeyPem);
167
- // --
168
- // web based implementation
169
- const privateKey = await extractPrivateKey(privateKeyPem);
170
- const keys = Object.getOwnPropertySymbols(privateKey);
171
- const k = privateKey[keys[0]];
172
- // --
165
+ let k;
166
+ if ((0, logging_1.isBrowser)()) {
167
+ // web based implementation
168
+ const privateKey = await extractPrivateKey(privateKeyPem);
169
+ const keys = Object.getOwnPropertySymbols(privateKey);
170
+ k = privateKey[keys[0]];
171
+ }
172
+ else {
173
+ // Node based implementation
174
+ const { createPrivateKey } = await Promise.resolve().then(() => __importStar(require("crypto")));
175
+ k = createPrivateKey(privateKeyPem);
176
+ }
173
177
  return fabric_gateway_1.signers.newPrivateKeySigner(k);
174
178
  }
175
179
  /**
@@ -194,15 +198,15 @@ async function getSigner(keyDirectoryPath) {
194
198
  * ExtractPrivateKey-->>Caller: CryptoKey
195
199
  */
196
200
  async function extractPrivateKey(pem) {
197
- const libName = "crypto";
201
+ // const libName = "node:crypto";
198
202
  let subtle;
199
- if ((0, logging_1.isBrowser)()) {
200
- subtle = globalThis.crypto.subtle;
201
- }
202
- else {
203
- const lib = (await (0, core_1.normalizeImport)(Promise.resolve(`${libName}`).then(s => __importStar(require(s)))));
204
- subtle = lib.subtle || lib.webcrypto.subtle;
205
- }
203
+ // if (isBrowser()) {
204
+ // eslint-disable-next-line prefer-const
205
+ subtle = globalThis.crypto.subtle;
206
+ // } else {
207
+ // const lib = (await normalizeImport(import(libName))) as any;
208
+ // subtle = lib.subtle || lib.webcrypto.subtle;
209
+ // }
206
210
  if (!subtle)
207
211
  throw new Error("Could not load SubtleCrypto module");
208
212
  function str2ab(str) {
@@ -231,4 +235,4 @@ async function extractPrivateKey(pem) {
231
235
  throw new db_decorators_1.InternalError(e);
232
236
  }
233
237
  }
234
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmFicmljLWZzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NsaWVudC9mYWJyaWMtZnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFpQkEsOENBWUM7QUFVRCw0QkFTQztBQWFELDhCQWVDO0FBV0Qsa0NBaUJDO0FBVUQsa0RBS0M7QUFVRCxnRUFPQztBQVVELDhCQXNCQztBQXVCRCw4Q0E2Q0M7QUE1T0QsK0NBQTBEO0FBQzFELGlEQUFxQztBQUNyQyxnRUFBd0U7QUFDeEUsMkRBQXdEO0FBQ3hELHlDQUFpRDtBQUVqRCxNQUFNLEdBQUcsR0FBRyxJQUFJLG9CQUFVLENBQUMsV0FBVyxDQUFDLENBQUM7QUFFeEM7Ozs7Ozs7O0dBUUc7QUFDSSxLQUFLLFVBQVUsaUJBQWlCLENBQ3JDLGFBQWtDLEVBQ2xDLFVBQW1FO0lBRW5FLElBQUksYUFBYSxZQUFZLFVBQVU7UUFBRSxPQUFPLGFBQWEsQ0FBQztJQUM5RCxJQUNFLGFBQWEsQ0FBQyxLQUFLLENBQ2pCLHNFQUFzRSxDQUN2RTtRQUVELE9BQU8sYUFBYSxDQUFDO0lBQ3ZCLE9BQU8sTUFBTSxVQUFVLENBQUMsYUFBYSxDQUFDLENBQUM7QUFDekMsQ0FBQztBQUVEOzs7Ozs7O0dBT0c7QUFDSSxLQUFLLFVBQVUsUUFBUSxDQUFDLGFBQThCO0lBQzNELElBQUksT0FBTyxhQUFhLEtBQUssUUFBUTtRQUFFLE9BQU8sYUFBYSxDQUFDO0lBRTVELE1BQU0sVUFBVSxHQUFHLEtBQUssRUFBRSxJQUFZLEVBQUUsRUFBRTtRQUN4QyxNQUFNLEVBQUUsUUFBUSxFQUFFLEdBQUcsTUFBTSxJQUFBLHNCQUFlLG9EQUFRLElBQUksSUFBRSxDQUFDO1FBQ3pELE9BQU8sTUFBTSxRQUFRLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3ZDLENBQUMsQ0FBQztJQUVGLE9BQU8sTUFBTSxVQUFVLENBQUMsYUFBYSxDQUFDLENBQUM7QUFDekMsQ0FBQztBQUVEOzs7Ozs7Ozs7O0dBVUc7QUFDSSxLQUFLLFVBQVUsU0FBUyxDQUM3QixRQUFnQixFQUNoQixVQUFrQixFQUNsQixXQUFtQixFQUNuQixLQUFhO0lBRWIsR0FBRyxDQUFDLEtBQUssQ0FDUCxpQkFBaUIsS0FBSyxTQUFTLFFBQVEscUJBQXFCLFdBQVcsRUFBRSxDQUMxRSxDQUFDO0lBQ0YsTUFBTSxJQUFJLEdBQUcsSUFBSSxvQkFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ2hDLE1BQU0sV0FBVyxHQUFHLG9CQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7SUFDMUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUNqQyxNQUFNLFdBQVcsR0FBRyxXQUFXLENBQUMsZ0JBQWdCLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDN0QsTUFBTSxJQUFJLENBQUMsYUFBYSxDQUFDLFdBQVcsRUFBRSxXQUFXLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDMUQsT0FBTyxJQUFJLENBQUM7QUFDZCxDQUFDO0FBRUQ7Ozs7Ozs7O0dBUUc7QUFDSSxLQUFLLFVBQVUsV0FBVyxDQUMvQixLQUFhLEVBQ2IsaUJBQXlCO0lBRXpCLE1BQU0sa0JBQWtCLEdBQUcsS0FBSyxFQUFFLElBQVksRUFBRSxFQUFFO1FBQ2hELE1BQU0sRUFBRSxRQUFRLEVBQUUsR0FBRyxNQUFNLElBQUEsc0JBQWUsb0RBQVEsSUFBSSxJQUFFLENBQUM7UUFDekQsTUFBTSxRQUFRLEdBQUcsTUFBTSxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNqRCxNQUFNLFdBQVcsR0FBRyxNQUFNLFFBQVEsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDdEQsT0FBTyxXQUFXLENBQUM7SUFDckIsQ0FBQyxDQUFDO0lBRUYsTUFBTSxXQUFXLEdBQWUsQ0FBQyxNQUFNLGlCQUFpQixDQUN0RCxpQkFBaUIsRUFDakIsa0JBQWtCLENBQ25CLENBQWUsQ0FBQztJQUVqQixPQUFPLEVBQUUsS0FBSyxFQUFFLFdBQVcsRUFBRSxDQUFDO0FBQ2hDLENBQUM7QUFFRDs7Ozs7OztHQU9HO0FBQ0ksS0FBSyxVQUFVLG1CQUFtQixDQUFDLE9BQWU7SUFDdkQsTUFBTSxFQUFFLFFBQVEsRUFBRSxHQUFHLE1BQU0sSUFBQSxzQkFBZSxvREFBUSxJQUFJLElBQUUsQ0FBQztJQUN6RCxNQUFNLEVBQUUsSUFBSSxFQUFFLEdBQUcsTUFBTSxJQUFBLHNCQUFlLG9EQUFRLE1BQU0sSUFBRSxDQUFDO0lBQ3ZELE1BQU0sS0FBSyxHQUFHLE1BQU0sUUFBUSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUM5QyxPQUFPLElBQUksQ0FBQyxPQUFPLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDakMsQ0FBQztBQUVEOzs7Ozs7O0dBT0c7QUFDSSxLQUFLLFVBQVUsMEJBQTBCLENBQzlDLE9BQWU7SUFFZixNQUFNLEVBQUUsUUFBUSxFQUFFLEdBQUcsTUFBTSxJQUFBLHNCQUFlLG9EQUFRLElBQUksSUFBRSxDQUFDO0lBQ3pELE1BQU0sRUFBRSxJQUFJLEVBQUUsR0FBRyxNQUFNLElBQUEsc0JBQWUsb0RBQVEsTUFBTSxJQUFFLENBQUM7SUFDdkQsTUFBTSxLQUFLLEdBQUcsTUFBTSxRQUFRLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQzlDLE9BQU8sQ0FBQyxNQUFNLFFBQVEsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUM7QUFDdkUsQ0FBQztBQUVEOzs7Ozs7O0dBT0c7QUFDSSxLQUFLLFVBQVUsU0FBUyxDQUFDLGdCQUF3QjtJQUN0RCxNQUFNLGdCQUFnQixHQUFHLEtBQUssRUFBRSxJQUFZLEVBQUUsRUFBRTtRQUM5QyxNQUFNLEVBQUUsUUFBUSxFQUFFLEdBQUcsTUFBTSxJQUFBLHNCQUFlLG9EQUFRLElBQUksSUFBRSxDQUFDO1FBQ3pELE1BQU0sT0FBTyxHQUFHLE1BQU0sbUJBQW1CLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDaEQsT0FBTyxNQUFNLFFBQVEsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDMUMsQ0FBQyxDQUFDO0lBRUYsTUFBTSxhQUFhLEdBQUcsQ0FBQyxNQUFNLGlCQUFpQixDQUM1QyxnQkFBZ0IsRUFDaEIsZ0JBQWdCLENBQ2pCLENBQVcsQ0FBQztJQUNiLDRCQUE0QjtJQUM1QixnREFBZ0Q7SUFDaEQsS0FBSztJQUVMLDJCQUEyQjtJQUMzQixNQUFNLFVBQVUsR0FBRyxNQUFNLGlCQUFpQixDQUFDLGFBQWEsQ0FBQyxDQUFDO0lBQzFELE1BQU0sSUFBSSxHQUFHLE1BQU0sQ0FBQyxxQkFBcUIsQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUN0RCxNQUFNLENBQUMsR0FBSSxVQUFrQixDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3ZDLEtBQUs7SUFFTCxPQUFPLHdCQUFPLENBQUMsbUJBQW1CLENBQUMsQ0FBUSxDQUFDLENBQUM7QUFDL0MsQ0FBQztBQUVEOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQW9CRztBQUNJLEtBQUssVUFBVSxpQkFBaUIsQ0FBQyxHQUFXO0lBQ2pELE1BQU0sT0FBTyxHQUFHLFFBQVEsQ0FBQztJQUN6QixJQUFJLE1BQU0sQ0FBQztJQUNYLElBQUksSUFBQSxtQkFBUyxHQUFFLEVBQUUsQ0FBQztRQUNoQixNQUFNLEdBQUksVUFBa0IsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDO0lBQzdDLENBQUM7U0FBTSxDQUFDO1FBQ04sTUFBTSxHQUFHLEdBQUcsQ0FBQyxNQUFNLElBQUEsc0JBQWUscUJBQVEsT0FBTyx3Q0FBRSxDQUFRLENBQUM7UUFDNUQsTUFBTSxHQUFHLEdBQUcsQ0FBQyxNQUFNLElBQUksR0FBRyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUM7SUFDOUMsQ0FBQztJQUVELElBQUksQ0FBQyxNQUFNO1FBQUUsTUFBTSxJQUFJLEtBQUssQ0FBQyxvQ0FBb0MsQ0FBQyxDQUFDO0lBRW5FLFNBQVMsTUFBTSxDQUFDLEdBQVc7UUFDekIsTUFBTSxHQUFHLEdBQUcsSUFBSSxXQUFXLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ3hDLE1BQU0sT0FBTyxHQUFHLElBQUksVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ3BDLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLE1BQU0sR0FBRyxHQUFHLENBQUMsTUFBTSxFQUFFLENBQUMsR0FBRyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQztZQUNyRCxPQUFPLENBQUMsQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNqQyxDQUFDO1FBQ0QsT0FBTyxHQUFHLENBQUM7SUFDYixDQUFDO0lBRUQsTUFBTSxHQUFHLEdBQUcsR0FBRztTQUNaLFFBQVEsQ0FBQyxNQUFNLENBQUM7U0FDaEIsT0FBTyxDQUFDLDZCQUE2QixFQUFFLEVBQUUsQ0FBQztTQUMxQyxVQUFVLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQztTQUNwQixPQUFPLENBQUMsMkJBQTJCLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDNUMsTUFBTSxPQUFPLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsUUFBUSxDQUFDLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQzlELE1BQU0sU0FBUyxHQUFHLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUVsQyxJQUFJLENBQUM7UUFDSCxNQUFNLEdBQUcsR0FBRyxNQUFNLE1BQU0sQ0FBQyxTQUFTLENBQ2hDLE9BQU8sRUFDUCxTQUFTLEVBQ1Q7WUFDRSxJQUFJLEVBQUUsT0FBTztZQUNiLFVBQVUsRUFBRSxPQUFPO1NBQ3BCLEVBQ0QsSUFBSSxFQUNKLENBQUMsTUFBTSxDQUFDLENBQ1QsQ0FBQztRQUVGLE9BQU8sR0FBRyxDQUFDO0lBQ2IsQ0FBQztJQUFDLE9BQU8sQ0FBTSxFQUFFLENBQUM7UUFDaEIsTUFBTSxJQUFJLDZCQUFhLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDN0IsQ0FBQztBQUNILENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpc0Jyb3dzZXIsIE1pbmlMb2dnZXIgfSBmcm9tIFwiQGRlY2FmLXRzL2xvZ2dpbmdcIjtcbmltcG9ydCB7IFVzZXIgfSBmcm9tIFwiZmFicmljLWNvbW1vblwiO1xuaW1wb3J0IHsgSWRlbnRpdHksIFNpZ25lciwgc2lnbmVycyB9IGZyb20gXCJAaHlwZXJsZWRnZXIvZmFicmljLWdhdGV3YXlcIjtcbmltcG9ydCB7IEludGVybmFsRXJyb3IgfSBmcm9tIFwiQGRlY2FmLXRzL2RiLWRlY29yYXRvcnNcIjtcbmltcG9ydCB7IG5vcm1hbGl6ZUltcG9ydCB9IGZyb20gXCJAZGVjYWYtdHMvY29yZVwiO1xuXG5jb25zdCBsb2cgPSBuZXcgTWluaUxvZ2dlcihcImZhYnJpYy1mc1wiKTtcblxuLyoqXG4gKiBAZGVzY3JpcHRpb24gTG9hZHMgY29udGVudCBmcm9tIGEgZmlsZSBvciByZXR1cm5zIHRoZSBjb250ZW50IGlmIGFscmVhZHkgbG9hZGVkXG4gKiBAc3VtbWFyeSBEZXRlcm1pbmVzIGlmIHRoZSBpbnB1dCBpcyBhbHJlYWR5IGNvbnRlbnQgb3IgYSBwYXRoIHRvIGEgZmlsZSwgYW5kIGxvYWRzIHRoZSBmaWxlIGlmIG5lZWRlZFxuICogQHBhcmFtIHtzdHJpbmcgfCBVaW50OEFycmF5fSBjb250ZW50T3JQYXRoIC0gVGhlIGNvbnRlbnQgb3IgcGF0aCB0byBsb2FkXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBmaWxlUmVhZGVyIC0gRnVuY3Rpb24gdG8gcmVhZCB0aGUgZmlsZSBpZiBjb250ZW50T3JQYXRoIGlzIGEgcGF0aFxuICogQHJldHVybiB7UHJvbWlzZTxzdHJpbmcgfCBVaW50OEFycmF5IHwgQnVmZmVyPn0gVGhlIGNvbnRlbnRcbiAqIEBmdW5jdGlvbiBjb250ZW50T2ZMb2FkRmlsZVxuICogQG1lbWJlck9mIG1vZHVsZTpmb3ItZmFicmljLmNsaWVudFxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gY29udGVudE9mTG9hZEZpbGUoXG4gIGNvbnRlbnRPclBhdGg6IHN0cmluZyB8IFVpbnQ4QXJyYXksXG4gIGZpbGVSZWFkZXI6IChwYXRoOiBzdHJpbmcpID0+IFByb21pc2U8c3RyaW5nIHwgVWludDhBcnJheSB8IEJ1ZmZlcj5cbikge1xuICBpZiAoY29udGVudE9yUGF0aCBpbnN0YW5jZW9mIFVpbnQ4QXJyYXkpIHJldHVybiBjb250ZW50T3JQYXRoO1xuICBpZiAoXG4gICAgY29udGVudE9yUGF0aC5tYXRjaChcbiAgICAgIC8tLS0tLUJFR0lOIChDRVJUSUZJQ0FURXxLRVl8UFJJVkFURSBLRVkpLS0tLS0uKz8tLS0tLUVORCBcXDEtLS0tLSQvZ21zXG4gICAgKVxuICApXG4gICAgcmV0dXJuIGNvbnRlbnRPclBhdGg7XG4gIHJldHVybiBhd2FpdCBmaWxlUmVhZGVyKGNvbnRlbnRPclBhdGgpO1xufVxuXG4vKipcbiAqIEBkZXNjcmlwdGlvbiBSZWFkcyBhIGZpbGUgZnJvbSB0aGUgZmlsZSBzeXN0ZW1cbiAqIEBzdW1tYXJ5IExvYWRzIGEgZmlsZSB1c2luZyB0aGUgTm9kZS5qcyBmaWxlIHN5c3RlbSBtb2R1bGVcbiAqIEBwYXJhbSB7c3RyaW5nIHwgQnVmZmVyfSBjb250ZW50T3JQYXRoIC0gVGhlIGNvbnRlbnQgb3IgcGF0aCB0byBsb2FkXG4gKiBAcmV0dXJuIHtQcm9taXNlPEJ1ZmZlcj59IFRoZSBmaWxlIGNvbnRlbnQgYXMgYSBCdWZmZXJcbiAqIEBmdW5jdGlvbiByZWFkRmlsZVxuICogQG1lbWJlck9mIG1vZHVsZTpmb3ItZmFicmljLmNsaWVudFxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcmVhZEZpbGUoY29udGVudE9yUGF0aDogc3RyaW5nIHwgQnVmZmVyKSB7XG4gIGlmICh0eXBlb2YgY29udGVudE9yUGF0aCAhPT0gXCJzdHJpbmdcIikgcmV0dXJuIGNvbnRlbnRPclBhdGg7XG5cbiAgY29uc3QgZmlsZVJlYWRlciA9IGFzeW5jIChwYXRoOiBzdHJpbmcpID0+IHtcbiAgICBjb25zdCB7IHByb21pc2VzIH0gPSBhd2FpdCBub3JtYWxpemVJbXBvcnQoaW1wb3J0KFwiZnNcIikpO1xuICAgIHJldHVybiBhd2FpdCBwcm9taXNlcy5yZWFkRmlsZShwYXRoKTtcbiAgfTtcblxuICByZXR1cm4gYXdhaXQgZmlsZVJlYWRlcihjb250ZW50T3JQYXRoKTtcbn1cblxuLyoqXG4gKiBAZGVzY3JpcHRpb24gQ3JlYXRlcyBhIENlcnRpZmljYXRlIEF1dGhvcml0eSB1c2VyXG4gKiBAc3VtbWFyeSBJbml0aWFsaXplcyBhIHVzZXIgd2l0aCB0aGUgZ2l2ZW4gY3JlZGVudGlhbHMgZm9yIGludGVyYWN0aW5nIHdpdGggYSBGYWJyaWMgQ0FcbiAqIEBwYXJhbSB7c3RyaW5nfSB1c2VyTmFtZSAtIFRoZSB1c2VyIG5hbWVcbiAqIEBwYXJhbSB7c3RyaW5nfSBwcml2YXRlS2V5IC0gVGhlIHByaXZhdGUga2V5IGFzIGEgc3RyaW5nXG4gKiBAcGFyYW0ge3N0cmluZ30gY2VydGlmaWNhdGUgLSBUaGUgY2VydGlmaWNhdGUgYXMgYSBzdHJpbmdcbiAqIEBwYXJhbSB7c3RyaW5nfSBtc3BJZCAtIFRoZSBNZW1iZXJzaGlwIFNlcnZpY2UgUHJvdmlkZXIgSURcbiAqIEByZXR1cm4ge1Byb21pc2U8VXNlcj59IFByb21pc2UgcmVzb2x2aW5nIHRvIHRoZSBjcmVhdGVkIHVzZXJcbiAqIEBmdW5jdGlvbiBnZXRDQVVzZXJcbiAqIEBtZW1iZXJPZiBtb2R1bGU6Zm9yLWZhYnJpYy5jbGllbnRcbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGdldENBVXNlcihcbiAgdXNlck5hbWU6IHN0cmluZyxcbiAgcHJpdmF0ZUtleTogc3RyaW5nLFxuICBjZXJ0aWZpY2F0ZTogc3RyaW5nLFxuICBtc3BJZDogc3RyaW5nXG4pOiBQcm9taXNlPFVzZXI+IHtcbiAgbG9nLmRlYnVnKFxuICAgIGBDcmVhdGluZyBhIENBICR7bXNwSWR9IHVzZXIgJHt1c2VyTmFtZX0gd2l0aCBjZXJ0aWZpY2F0ZSAke2NlcnRpZmljYXRlfWBcbiAgKTtcbiAgY29uc3QgdXNlciA9IG5ldyBVc2VyKHVzZXJOYW1lKTtcbiAgY29uc3QgY3J5cHRvU3VpdGUgPSBVc2VyLm5ld0NyeXB0b1N1aXRlKCk7XG4gIHVzZXIuc2V0Q3J5cHRvU3VpdGUoY3J5cHRvU3VpdGUpO1xuICBjb25zdCBpbXBvcnRlZEtleSA9IGNyeXB0b1N1aXRlLmNyZWF0ZUtleUZyb21SYXcocHJpdmF0ZUtleSk7XG4gIGF3YWl0IHVzZXIuc2V0RW5yb2xsbWVudChpbXBvcnRlZEtleSwgY2VydGlmaWNhdGUsIG1zcElkKTtcbiAgcmV0dXJuIHVzZXI7XG59XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uIEdldHMgYW4gaWRlbnRpdHkgZnJvbSBhIGNlcnRpZmljYXRlIGRpcmVjdG9yeVxuICogQHN1bW1hcnkgTG9hZHMgYSBjZXJ0aWZpY2F0ZSBmcm9tIGEgZGlyZWN0b3J5IGFuZCBjcmVhdGVzIGFuIElkZW50aXR5IG9iamVjdFxuICogQHBhcmFtIHtzdHJpbmd9IG1zcElkIC0gVGhlIE1lbWJlcnNoaXAgU2VydmljZSBQcm92aWRlciBJRFxuICogQHBhcmFtIHtzdHJpbmd9IGNlcnREaXJlY3RvcnlQYXRoIC0gUGF0aCB0byB0aGUgZGlyZWN0b3J5IGNvbnRhaW5pbmcgdGhlIGNlcnRpZmljYXRlXG4gKiBAcmV0dXJuIHtQcm9taXNlPElkZW50aXR5Pn0gUHJvbWlzZSByZXNvbHZpbmcgdG8gdGhlIGlkZW50aXR5XG4gKiBAZnVuY3Rpb24gZ2V0SWRlbnRpdHlcbiAqIEBtZW1iZXJPZiBtb2R1bGU6Zm9yLWZhYnJpYy5jbGllbnRcbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGdldElkZW50aXR5KFxuICBtc3BJZDogc3RyaW5nLFxuICBjZXJ0RGlyZWN0b3J5UGF0aDogc3RyaW5nXG4pOiBQcm9taXNlPElkZW50aXR5PiB7XG4gIGNvbnN0IGlkZW50aXR5RmlsZVJlYWRlciA9IGFzeW5jIChwYXRoOiBzdHJpbmcpID0+IHtcbiAgICBjb25zdCB7IHByb21pc2VzIH0gPSBhd2FpdCBub3JtYWxpemVJbXBvcnQoaW1wb3J0KFwiZnNcIikpO1xuICAgIGNvbnN0IGNlcnRQYXRoID0gYXdhaXQgZ2V0Rmlyc3REaXJGaWxlTmFtZShwYXRoKTtcbiAgICBjb25zdCBjcmVkZW50aWFscyA9IGF3YWl0IHByb21pc2VzLnJlYWRGaWxlKGNlcnRQYXRoKTtcbiAgICByZXR1cm4gY3JlZGVudGlhbHM7XG4gIH07XG5cbiAgY29uc3QgY3JlZGVudGlhbHM6IFVpbnQ4QXJyYXkgPSAoYXdhaXQgY29udGVudE9mTG9hZEZpbGUoXG4gICAgY2VydERpcmVjdG9yeVBhdGgsXG4gICAgaWRlbnRpdHlGaWxlUmVhZGVyXG4gICkpIGFzIFVpbnQ4QXJyYXk7XG5cbiAgcmV0dXJuIHsgbXNwSWQsIGNyZWRlbnRpYWxzIH07XG59XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uIEdldHMgdGhlIGZ1bGwgcGF0aCBvZiB0aGUgZmlyc3QgZmlsZSBpbiBhIGRpcmVjdG9yeVxuICogQHN1bW1hcnkgUmVhZHMgYSBkaXJlY3RvcnkgYW5kIHJldHVybnMgdGhlIHBhdGggdG8gdGhlIGZpcnN0IGZpbGUgZm91bmRcbiAqIEBwYXJhbSB7c3RyaW5nfSBkaXJQYXRoIC0gUGF0aCB0byB0aGUgZGlyZWN0b3J5XG4gKiBAcmV0dXJuIHtQcm9taXNlPHN0cmluZz59IFByb21pc2UgcmVzb2x2aW5nIHRvIHRoZSBmdWxsIHBhdGggb2YgdGhlIGZpcnN0IGZpbGVcbiAqIEBmdW5jdGlvbiBnZXRGaXJzdERpckZpbGVOYW1lXG4gKiBAbWVtYmVyT2YgbW9kdWxlOmZvci1mYWJyaWMuY2xpZW50XG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBnZXRGaXJzdERpckZpbGVOYW1lKGRpclBhdGg6IHN0cmluZyk6IFByb21pc2U8c3RyaW5nPiB7XG4gIGNvbnN0IHsgcHJvbWlzZXMgfSA9IGF3YWl0IG5vcm1hbGl6ZUltcG9ydChpbXBvcnQoXCJmc1wiKSk7XG4gIGNvbnN0IHsgam9pbiB9ID0gYXdhaXQgbm9ybWFsaXplSW1wb3J0KGltcG9ydChcInBhdGhcIikpO1xuICBjb25zdCBmaWxlcyA9IGF3YWl0IHByb21pc2VzLnJlYWRkaXIoZGlyUGF0aCk7XG4gIHJldHVybiBqb2luKGRpclBhdGgsIGZpbGVzWzBdKTtcbn1cblxuLyoqXG4gKiBAZGVzY3JpcHRpb24gR2V0cyB0aGUgY29udGVudCBvZiB0aGUgZmlyc3QgZmlsZSBpbiBhIGRpcmVjdG9yeVxuICogQHN1bW1hcnkgUmVhZHMgYSBkaXJlY3RvcnksIGZpbmRzIHRoZSBmaXJzdCBmaWxlLCBhbmQgcmV0dXJucyBpdHMgY29udGVudCBhcyBhIHN0cmluZ1xuICogQHBhcmFtIHtzdHJpbmd9IGRpclBhdGggLSBQYXRoIHRvIHRoZSBkaXJlY3RvcnlcbiAqIEByZXR1cm4ge1Byb21pc2U8c3RyaW5nPn0gUHJvbWlzZSByZXNvbHZpbmcgdG8gdGhlIGNvbnRlbnQgb2YgdGhlIGZpcnN0IGZpbGVcbiAqIEBmdW5jdGlvbiBnZXRGaXJzdERpckZpbGVOYW1lQ29udGVudFxuICogQG1lbWJlck9mIG1vZHVsZTpmb3ItZmFicmljLmNsaWVudFxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZ2V0Rmlyc3REaXJGaWxlTmFtZUNvbnRlbnQoXG4gIGRpclBhdGg6IHN0cmluZ1xuKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgY29uc3QgeyBwcm9taXNlcyB9ID0gYXdhaXQgbm9ybWFsaXplSW1wb3J0KGltcG9ydChcImZzXCIpKTtcbiAgY29uc3QgeyBqb2luIH0gPSBhd2FpdCBub3JtYWxpemVJbXBvcnQoaW1wb3J0KFwicGF0aFwiKSk7XG4gIGNvbnN0IGZpbGVzID0gYXdhaXQgcHJvbWlzZXMucmVhZGRpcihkaXJQYXRoKTtcbiAgcmV0dXJuIChhd2FpdCBwcm9taXNlcy5yZWFkRmlsZShqb2luKGRpclBhdGgsIGZpbGVzWzBdKSkpLnRvU3RyaW5nKCk7XG59XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uIEdldHMgYSBzaWduZXIgZnJvbSBhIGtleSBkaXJlY3RvcnlcbiAqIEBzdW1tYXJ5IExvYWRzIGEgcHJpdmF0ZSBrZXkgZnJvbSBhIGRpcmVjdG9yeSBhbmQgY3JlYXRlcyBhIFNpZ25lciBmb3IgRmFicmljIHRyYW5zYWN0aW9uc1xuICogQHBhcmFtIHtzdHJpbmd9IGtleURpcmVjdG9yeVBhdGggLSBQYXRoIHRvIHRoZSBkaXJlY3RvcnkgY29udGFpbmluZyB0aGUgcHJpdmF0ZSBrZXlcbiAqIEByZXR1cm4ge1Byb21pc2U8U2lnbmVyPn0gUHJvbWlzZSByZXNvbHZpbmcgdG8gdGhlIHNpZ25lclxuICogQGZ1bmN0aW9uIGdldFNpZ25lclxuICogQG1lbWJlck9mIG1vZHVsZTpmb3ItZmFicmljLmNsaWVudFxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZ2V0U2lnbmVyKGtleURpcmVjdG9yeVBhdGg6IHN0cmluZyk6IFByb21pc2U8U2lnbmVyPiB7XG4gIGNvbnN0IHNpZ25lckZpbGVSZWFkZXIgPSBhc3luYyAocGF0aDogc3RyaW5nKSA9PiB7XG4gICAgY29uc3QgeyBwcm9taXNlcyB9ID0gYXdhaXQgbm9ybWFsaXplSW1wb3J0KGltcG9ydChcImZzXCIpKTtcbiAgICBjb25zdCBrZXlQYXRoID0gYXdhaXQgZ2V0Rmlyc3REaXJGaWxlTmFtZShwYXRoKTtcbiAgICByZXR1cm4gYXdhaXQgcHJvbWlzZXMucmVhZEZpbGUoa2V5UGF0aCk7XG4gIH07XG5cbiAgY29uc3QgcHJpdmF0ZUtleVBlbSA9IChhd2FpdCBjb250ZW50T2ZMb2FkRmlsZShcbiAgICBrZXlEaXJlY3RvcnlQYXRoLFxuICAgIHNpZ25lckZpbGVSZWFkZXJcbiAgKSkgYXMgQnVmZmVyO1xuICAvLyBOb2RlIGJhc2VkIGltcGxlbWVudGF0aW9uXG4gIC8vIHByaXZhdGVLZXkgPSBjcmVhdGVQcml2YXRlS2V5KHByaXZhdGVLZXlQZW0pO1xuICAvLyAtLVxuXG4gIC8vIHdlYiBiYXNlZCBpbXBsZW1lbnRhdGlvblxuICBjb25zdCBwcml2YXRlS2V5ID0gYXdhaXQgZXh0cmFjdFByaXZhdGVLZXkocHJpdmF0ZUtleVBlbSk7XG4gIGNvbnN0IGtleXMgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKHByaXZhdGVLZXkpO1xuICBjb25zdCBrID0gKHByaXZhdGVLZXkgYXMgYW55KVtrZXlzWzBdXTtcbiAgLy8gLS1cblxuICByZXR1cm4gc2lnbmVycy5uZXdQcml2YXRlS2V5U2lnbmVyKGsgYXMgYW55KTtcbn1cblxuLyoqXG4gKiBAZGVzY3JpcHRpb24gRXh0cmFjdHMgYSBwcml2YXRlIGtleSBmcm9tIGEgUEVNIGJ1ZmZlclxuICogQHN1bW1hcnkgQ29udmVydHMgYSBQRU0tZW5jb2RlZCBwcml2YXRlIGtleSB0byBhIENyeXB0b0tleSBvYmplY3RcbiAqIEBwYXJhbSB7QnVmZmVyfSBwZW0gLSBUaGUgUEVNLWVuY29kZWQgcHJpdmF0ZSBrZXlcbiAqIEByZXR1cm4ge1Byb21pc2U8Q3J5cHRvS2V5Pn0gUHJvbWlzZSByZXNvbHZpbmcgdG8gdGhlIENyeXB0b0tleVxuICogQGZ1bmN0aW9uIGV4dHJhY3RQcml2YXRlS2V5XG4gKiBAbWVtYmVyT2YgbW9kdWxlOmZvci1mYWJyaWMuY2xpZW50XG4gKiBAbWVybWFpZFxuICogc2VxdWVuY2VEaWFncmFtXG4gKiAgIHBhcnRpY2lwYW50IENhbGxlclxuICogICBwYXJ0aWNpcGFudCBFeHRyYWN0UHJpdmF0ZUtleVxuICogICBwYXJ0aWNpcGFudCBTdWJ0bGVDcnlwdG9cbiAqXG4gKiAgIENhbGxlci0+PkV4dHJhY3RQcml2YXRlS2V5OiBleHRyYWN0UHJpdmF0ZUtleShwZW0pXG4gKiAgIEV4dHJhY3RQcml2YXRlS2V5LT4+RXh0cmFjdFByaXZhdGVLZXk6IEdldCBTdWJ0bGVDcnlwdG8gaW1wbGVtZW50YXRpb25cbiAqICAgRXh0cmFjdFByaXZhdGVLZXktPj5FeHRyYWN0UHJpdmF0ZUtleTogUGFyc2UgUEVNIGZvcm1hdFxuICogICBFeHRyYWN0UHJpdmF0ZUtleS0+PkV4dHJhY3RQcml2YXRlS2V5OiBDb252ZXJ0IHRvIGJpbmFyeSBERVJcbiAqICAgRXh0cmFjdFByaXZhdGVLZXktPj5TdWJ0bGVDcnlwdG86IGltcG9ydEtleShwa2NzOCwgYmluYXJ5RGVyLCBvcHRpb25zKVxuICogICBTdWJ0bGVDcnlwdG8tLT4+RXh0cmFjdFByaXZhdGVLZXk6IENyeXB0b0tleVxuICogICBFeHRyYWN0UHJpdmF0ZUtleS0tPj5DYWxsZXI6IENyeXB0b0tleVxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZXh0cmFjdFByaXZhdGVLZXkocGVtOiBCdWZmZXIpIHtcbiAgY29uc3QgbGliTmFtZSA9IFwiY3J5cHRvXCI7XG4gIGxldCBzdWJ0bGU7XG4gIGlmIChpc0Jyb3dzZXIoKSkge1xuICAgIHN1YnRsZSA9IChnbG9iYWxUaGlzIGFzIGFueSkuY3J5cHRvLnN1YnRsZTtcbiAgfSBlbHNlIHtcbiAgICBjb25zdCBsaWIgPSAoYXdhaXQgbm9ybWFsaXplSW1wb3J0KGltcG9ydChsaWJOYW1lKSkpIGFzIGFueTtcbiAgICBzdWJ0bGUgPSBsaWIuc3VidGxlIHx8IGxpYi53ZWJjcnlwdG8uc3VidGxlO1xuICB9XG5cbiAgaWYgKCFzdWJ0bGUpIHRocm93IG5ldyBFcnJvcihcIkNvdWxkIG5vdCBsb2FkIFN1YnRsZUNyeXB0byBtb2R1bGVcIik7XG5cbiAgZnVuY3Rpb24gc3RyMmFiKHN0cjogc3RyaW5nKSB7XG4gICAgY29uc3QgYnVmID0gbmV3IEFycmF5QnVmZmVyKHN0ci5sZW5ndGgpO1xuICAgIGNvbnN0IGJ1ZlZpZXcgPSBuZXcgVWludDhBcnJheShidWYpO1xuICAgIGZvciAobGV0IGkgPSAwLCBzdHJMZW4gPSBzdHIubGVuZ3RoOyBpIDwgc3RyTGVuOyBpKyspIHtcbiAgICAgIGJ1ZlZpZXdbaV0gPSBzdHIuY2hhckNvZGVBdChpKTtcbiAgICB9XG4gICAgcmV0dXJuIGJ1ZjtcbiAgfVxuXG4gIGNvbnN0IHN0ciA9IHBlbVxuICAgIC50b1N0cmluZyhcInV0ZjhcIilcbiAgICAucmVwbGFjZShcIi0tLS0tQkVHSU4gUFJJVkFURSBLRVktLS0tLVwiLCBcIlwiKVxuICAgIC5yZXBsYWNlQWxsKFwiXFxuXCIsIFwiXCIpXG4gICAgLnJlcGxhY2UoXCItLS0tLUVORCBQUklWQVRFIEtFWS0tLS0tXCIsIFwiXCIpO1xuICBjb25zdCBkZWNvZGVkID0gQnVmZmVyLmZyb20oc3RyLCBcImJhc2U2NFwiKS50b1N0cmluZyhcImJpbmFyeVwiKTtcbiAgY29uc3QgYmluYXJ5RGVyID0gc3RyMmFiKGRlY29kZWQpO1xuXG4gIHRyeSB7XG4gICAgY29uc3Qga2V5ID0gYXdhaXQgc3VidGxlLmltcG9ydEtleShcbiAgICAgIFwicGtjczhcIixcbiAgICAgIGJpbmFyeURlcixcbiAgICAgIHtcbiAgICAgICAgbmFtZTogXCJFQ0RTQVwiLFxuICAgICAgICBuYW1lZEN1cnZlOiBcIlAtMjU2XCIsXG4gICAgICB9LFxuICAgICAgdHJ1ZSxcbiAgICAgIFtcInNpZ25cIl1cbiAgICApO1xuXG4gICAgcmV0dXJuIGtleTtcbiAgfSBjYXRjaCAoZTogYW55KSB7XG4gICAgdGhyb3cgbmV3IEludGVybmFsRXJyb3IoZSk7XG4gIH1cbn1cbiJdfQ==
238
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmFicmljLWZzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NsaWVudC9mYWJyaWMtZnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFpQkEsOENBWUM7QUFVRCw0QkFTQztBQWFELDhCQWVDO0FBV0Qsa0NBaUJDO0FBVUQsa0RBS0M7QUFVRCxnRUFPQztBQVVELDhCQXlCQztBQXVCRCw4Q0E4Q0M7QUFoUEQsK0NBQTBEO0FBQzFELGlEQUFxQztBQUNyQyxnRUFBd0U7QUFDeEUsMkRBQXdEO0FBQ3hELHlDQUFpRDtBQUVqRCxNQUFNLEdBQUcsR0FBRyxJQUFJLG9CQUFVLENBQUMsV0FBVyxDQUFDLENBQUM7QUFFeEM7Ozs7Ozs7O0dBUUc7QUFDSSxLQUFLLFVBQVUsaUJBQWlCLENBQ3JDLGFBQWtDLEVBQ2xDLFVBQW1FO0lBRW5FLElBQUksYUFBYSxZQUFZLFVBQVU7UUFBRSxPQUFPLGFBQWEsQ0FBQztJQUM5RCxJQUNFLGFBQWEsQ0FBQyxLQUFLLENBQ2pCLHNFQUFzRSxDQUN2RTtRQUVELE9BQU8sYUFBYSxDQUFDO0lBQ3ZCLE9BQU8sTUFBTSxVQUFVLENBQUMsYUFBYSxDQUFDLENBQUM7QUFDekMsQ0FBQztBQUVEOzs7Ozs7O0dBT0c7QUFDSSxLQUFLLFVBQVUsUUFBUSxDQUFDLGFBQThCO0lBQzNELElBQUksT0FBTyxhQUFhLEtBQUssUUFBUTtRQUFFLE9BQU8sYUFBYSxDQUFDO0lBRTVELE1BQU0sVUFBVSxHQUFHLEtBQUssRUFBRSxJQUFZLEVBQUUsRUFBRTtRQUN4QyxNQUFNLEVBQUUsUUFBUSxFQUFFLEdBQUcsTUFBTSxJQUFBLHNCQUFlLG9EQUFRLElBQUksSUFBRSxDQUFDO1FBQ3pELE9BQU8sTUFBTSxRQUFRLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3ZDLENBQUMsQ0FBQztJQUVGLE9BQU8sTUFBTSxVQUFVLENBQUMsYUFBYSxD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QUFDLENBQUMsQ0FBQyxDQUFDO0lBQzdCLENBQUM7QUFDSCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaXNCcm93c2VyLCBNaW5pTG9nZ2VyIH0gZnJvbSBcIkBkZWNhZi10cy9sb2dnaW5nXCI7XG5pbXBvcnQgeyBVc2VyIH0gZnJvbSBcImZhYnJpYy1jb21tb25cIjtcbmltcG9ydCB7IElkZW50aXR5LCBTaWduZXIsIHNpZ25lcnMgfSBmcm9tIFwiQGh5cGVybGVkZ2VyL2ZhYnJpYy1nYXRld2F5XCI7XG5pbXBvcnQgeyBJbnRlcm5hbEVycm9yIH0gZnJvbSBcIkBkZWNhZi10cy9kYi1kZWNvcmF0b3JzXCI7XG5pbXBvcnQgeyBub3JtYWxpemVJbXBvcnQgfSBmcm9tIFwiQGRlY2FmLXRzL2NvcmVcIjtcblxuY29uc3QgbG9nID0gbmV3IE1pbmlMb2dnZXIoXCJmYWJyaWMtZnNcIik7XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uIExvYWRzIGNvbnRlbnQgZnJvbSBhIGZpbGUgb3IgcmV0dXJucyB0aGUgY29udGVudCBpZiBhbHJlYWR5IGxvYWRlZFxuICogQHN1bW1hcnkgRGV0ZXJtaW5lcyBpZiB0aGUgaW5wdXQgaXMgYWxyZWFkeSBjb250ZW50IG9yIGEgcGF0aCB0byBhIGZpbGUsIGFuZCBsb2FkcyB0aGUgZmlsZSBpZiBuZWVkZWRcbiAqIEBwYXJhbSB7c3RyaW5nIHwgVWludDhBcnJheX0gY29udGVudE9yUGF0aCAtIFRoZSBjb250ZW50IG9yIHBhdGggdG8gbG9hZFxuICogQHBhcmFtIHtGdW5jdGlvbn0gZmlsZVJlYWRlciAtIEZ1bmN0aW9uIHRvIHJlYWQgdGhlIGZpbGUgaWYgY29udGVudE9yUGF0aCBpcyBhIHBhdGhcbiAqIEByZXR1cm4ge1Byb21pc2U8c3RyaW5nIHwgVWludDhBcnJheSB8IEJ1ZmZlcj59IFRoZSBjb250ZW50XG4gKiBAZnVuY3Rpb24gY29udGVudE9mTG9hZEZpbGVcbiAqIEBtZW1iZXJPZiBtb2R1bGU6Zm9yLWZhYnJpYy5jbGllbnRcbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGNvbnRlbnRPZkxvYWRGaWxlKFxuICBjb250ZW50T3JQYXRoOiBzdHJpbmcgfCBVaW50OEFycmF5LFxuICBmaWxlUmVhZGVyOiAocGF0aDogc3RyaW5nKSA9PiBQcm9taXNlPHN0cmluZyB8IFVpbnQ4QXJyYXkgfCBCdWZmZXI+XG4pIHtcbiAgaWYgKGNvbnRlbnRPclBhdGggaW5zdGFuY2VvZiBVaW50OEFycmF5KSByZXR1cm4gY29udGVudE9yUGF0aDtcbiAgaWYgKFxuICAgIGNvbnRlbnRPclBhdGgubWF0Y2goXG4gICAgICAvLS0tLS1CRUdJTiAoQ0VSVElGSUNBVEV8S0VZfFBSSVZBVEUgS0VZKS0tLS0tLis/LS0tLS1FTkQgXFwxLS0tLS0kL2dtc1xuICAgIClcbiAgKVxuICAgIHJldHVybiBjb250ZW50T3JQYXRoO1xuICByZXR1cm4gYXdhaXQgZmlsZVJlYWRlcihjb250ZW50T3JQYXRoKTtcbn1cblxuLyoqXG4gKiBAZGVzY3JpcHRpb24gUmVhZHMgYSBmaWxlIGZyb20gdGhlIGZpbGUgc3lzdGVtXG4gKiBAc3VtbWFyeSBMb2FkcyBhIGZpbGUgdXNpbmcgdGhlIE5vZGUuanMgZmlsZSBzeXN0ZW0gbW9kdWxlXG4gKiBAcGFyYW0ge3N0cmluZyB8IEJ1ZmZlcn0gY29udGVudE9yUGF0aCAtIFRoZSBjb250ZW50IG9yIHBhdGggdG8gbG9hZFxuICogQHJldHVybiB7UHJvbWlzZTxCdWZmZXI+fSBUaGUgZmlsZSBjb250ZW50IGFzIGEgQnVmZmVyXG4gKiBAZnVuY3Rpb24gcmVhZEZpbGVcbiAqIEBtZW1iZXJPZiBtb2R1bGU6Zm9yLWZhYnJpYy5jbGllbnRcbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHJlYWRGaWxlKGNvbnRlbnRPclBhdGg6IHN0cmluZyB8IEJ1ZmZlcikge1xuICBpZiAodHlwZW9mIGNvbnRlbnRPclBhdGggIT09IFwic3RyaW5nXCIpIHJldHVybiBjb250ZW50T3JQYXRoO1xuXG4gIGNvbnN0IGZpbGVSZWFkZXIgPSBhc3luYyAocGF0aDogc3RyaW5nKSA9PiB7XG4gICAgY29uc3QgeyBwcm9taXNlcyB9ID0gYXdhaXQgbm9ybWFsaXplSW1wb3J0KGltcG9ydChcImZzXCIpKTtcbiAgICByZXR1cm4gYXdhaXQgcHJvbWlzZXMucmVhZEZpbGUocGF0aCk7XG4gIH07XG5cbiAgcmV0dXJuIGF3YWl0IGZpbGVSZWFkZXIoY29udGVudE9yUGF0aCk7XG59XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uIENyZWF0ZXMgYSBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkgdXNlclxuICogQHN1bW1hcnkgSW5pdGlhbGl6ZXMgYSB1c2VyIHdpdGggdGhlIGdpdmVuIGNyZWRlbnRpYWxzIGZvciBpbnRlcmFjdGluZyB3aXRoIGEgRmFicmljIENBXG4gKiBAcGFyYW0ge3N0cmluZ30gdXNlck5hbWUgLSBUaGUgdXNlciBuYW1lXG4gKiBAcGFyYW0ge3N0cmluZ30gcHJpdmF0ZUtleSAtIFRoZSBwcml2YXRlIGtleSBhcyBhIHN0cmluZ1xuICogQHBhcmFtIHtzdHJpbmd9IGNlcnRpZmljYXRlIC0gVGhlIGNlcnRpZmljYXRlIGFzIGEgc3RyaW5nXG4gKiBAcGFyYW0ge3N0cmluZ30gbXNwSWQgLSBUaGUgTWVtYmVyc2hpcCBTZXJ2aWNlIFByb3ZpZGVyIElEXG4gKiBAcmV0dXJuIHtQcm9taXNlPFVzZXI+fSBQcm9taXNlIHJlc29sdmluZyB0byB0aGUgY3JlYXRlZCB1c2VyXG4gKiBAZnVuY3Rpb24gZ2V0Q0FVc2VyXG4gKiBAbWVtYmVyT2YgbW9kdWxlOmZvci1mYWJyaWMuY2xpZW50XG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBnZXRDQVVzZXIoXG4gIHVzZXJOYW1lOiBzdHJpbmcsXG4gIHByaXZhdGVLZXk6IHN0cmluZyxcbiAgY2VydGlmaWNhdGU6IHN0cmluZyxcbiAgbXNwSWQ6IHN0cmluZ1xuKTogUHJvbWlzZTxVc2VyPiB7XG4gIGxvZy5kZWJ1ZyhcbiAgICBgQ3JlYXRpbmcgYSBDQSAke21zcElkfSB1c2VyICR7dXNlck5hbWV9IHdpdGggY2VydGlmaWNhdGUgJHtjZXJ0aWZpY2F0ZX1gXG4gICk7XG4gIGNvbnN0IHVzZXIgPSBuZXcgVXNlcih1c2VyTmFtZSk7XG4gIGNvbnN0IGNyeXB0b1N1aXRlID0gVXNlci5uZXdDcnlwdG9TdWl0ZSgpO1xuICB1c2VyLnNldENyeXB0b1N1aXRlKGNyeXB0b1N1aXRlKTtcbiAgY29uc3QgaW1wb3J0ZWRLZXkgPSBjcnlwdG9TdWl0ZS5jcmVhdGVLZXlGcm9tUmF3KHByaXZhdGVLZXkpO1xuICBhd2FpdCB1c2VyLnNldEVucm9sbG1lbnQoaW1wb3J0ZWRLZXksIGNlcnRpZmljYXRlLCBtc3BJZCk7XG4gIHJldHVybiB1c2VyO1xufVxuXG4vKipcbiAqIEBkZXNjcmlwdGlvbiBHZXRzIGFuIGlkZW50aXR5IGZyb20gYSBjZXJ0aWZpY2F0ZSBkaXJlY3RvcnlcbiAqIEBzdW1tYXJ5IExvYWRzIGEgY2VydGlmaWNhdGUgZnJvbSBhIGRpcmVjdG9yeSBhbmQgY3JlYXRlcyBhbiBJZGVudGl0eSBvYmplY3RcbiAqIEBwYXJhbSB7c3RyaW5nfSBtc3BJZCAtIFRoZSBNZW1iZXJzaGlwIFNlcnZpY2UgUHJvdmlkZXIgSURcbiAqIEBwYXJhbSB7c3RyaW5nfSBjZXJ0RGlyZWN0b3J5UGF0aCAtIFBhdGggdG8gdGhlIGRpcmVjdG9yeSBjb250YWluaW5nIHRoZSBjZXJ0aWZpY2F0ZVxuICogQHJldHVybiB7UHJvbWlzZTxJZGVudGl0eT59IFByb21pc2UgcmVzb2x2aW5nIHRvIHRoZSBpZGVudGl0eVxuICogQGZ1bmN0aW9uIGdldElkZW50aXR5XG4gKiBAbWVtYmVyT2YgbW9kdWxlOmZvci1mYWJyaWMuY2xpZW50XG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBnZXRJZGVudGl0eShcbiAgbXNwSWQ6IHN0cmluZyxcbiAgY2VydERpcmVjdG9yeVBhdGg6IHN0cmluZ1xuKTogUHJvbWlzZTxJZGVudGl0eT4ge1xuICBjb25zdCBpZGVudGl0eUZpbGVSZWFkZXIgPSBhc3luYyAocGF0aDogc3RyaW5nKSA9PiB7XG4gICAgY29uc3QgeyBwcm9taXNlcyB9ID0gYXdhaXQgbm9ybWFsaXplSW1wb3J0KGltcG9ydChcImZzXCIpKTtcbiAgICBjb25zdCBjZXJ0UGF0aCA9IGF3YWl0IGdldEZpcnN0RGlyRmlsZU5hbWUocGF0aCk7XG4gICAgY29uc3QgY3JlZGVudGlhbHMgPSBhd2FpdCBwcm9taXNlcy5yZWFkRmlsZShjZXJ0UGF0aCk7XG4gICAgcmV0dXJuIGNyZWRlbnRpYWxzO1xuICB9O1xuXG4gIGNvbnN0IGNyZWRlbnRpYWxzOiBVaW50OEFycmF5ID0gKGF3YWl0IGNvbnRlbnRPZkxvYWRGaWxlKFxuICAgIGNlcnREaXJlY3RvcnlQYXRoLFxuICAgIGlkZW50aXR5RmlsZVJlYWRlclxuICApKSBhcyBVaW50OEFycmF5O1xuXG4gIHJldHVybiB7IG1zcElkLCBjcmVkZW50aWFscyB9O1xufVxuXG4vKipcbiAqIEBkZXNjcmlwdGlvbiBHZXRzIHRoZSBmdWxsIHBhdGggb2YgdGhlIGZpcnN0IGZpbGUgaW4gYSBkaXJlY3RvcnlcbiAqIEBzdW1tYXJ5IFJlYWRzIGEgZGlyZWN0b3J5IGFuZCByZXR1cm5zIHRoZSBwYXRoIHRvIHRoZSBmaXJzdCBmaWxlIGZvdW5kXG4gKiBAcGFyYW0ge3N0cmluZ30gZGlyUGF0aCAtIFBhdGggdG8gdGhlIGRpcmVjdG9yeVxuICogQHJldHVybiB7UHJvbWlzZTxzdHJpbmc+fSBQcm9taXNlIHJlc29sdmluZyB0byB0aGUgZnVsbCBwYXRoIG9mIHRoZSBmaXJzdCBmaWxlXG4gKiBAZnVuY3Rpb24gZ2V0Rmlyc3REaXJGaWxlTmFtZVxuICogQG1lbWJlck9mIG1vZHVsZTpmb3ItZmFicmljLmNsaWVudFxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZ2V0Rmlyc3REaXJGaWxlTmFtZShkaXJQYXRoOiBzdHJpbmcpOiBQcm9taXNlPHN0cmluZz4ge1xuICBjb25zdCB7IHByb21pc2VzIH0gPSBhd2FpdCBub3JtYWxpemVJbXBvcnQoaW1wb3J0KFwiZnNcIikpO1xuICBjb25zdCB7IGpvaW4gfSA9IGF3YWl0IG5vcm1hbGl6ZUltcG9ydChpbXBvcnQoXCJwYXRoXCIpKTtcbiAgY29uc3QgZmlsZXMgPSBhd2FpdCBwcm9taXNlcy5yZWFkZGlyKGRpclBhdGgpO1xuICByZXR1cm4gam9pbihkaXJQYXRoLCBmaWxlc1swXSk7XG59XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uIEdldHMgdGhlIGNvbnRlbnQgb2YgdGhlIGZpcnN0IGZpbGUgaW4gYSBkaXJlY3RvcnlcbiAqIEBzdW1tYXJ5IFJlYWRzIGEgZGlyZWN0b3J5LCBmaW5kcyB0aGUgZmlyc3QgZmlsZSwgYW5kIHJldHVybnMgaXRzIGNvbnRlbnQgYXMgYSBzdHJpbmdcbiAqIEBwYXJhbSB7c3RyaW5nfSBkaXJQYXRoIC0gUGF0aCB0byB0aGUgZGlyZWN0b3J5XG4gKiBAcmV0dXJuIHtQcm9taXNlPHN0cmluZz59IFByb21pc2UgcmVzb2x2aW5nIHRvIHRoZSBjb250ZW50IG9mIHRoZSBmaXJzdCBmaWxlXG4gKiBAZnVuY3Rpb24gZ2V0Rmlyc3REaXJGaWxlTmFtZUNvbnRlbnRcbiAqIEBtZW1iZXJPZiBtb2R1bGU6Zm9yLWZhYnJpYy5jbGllbnRcbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGdldEZpcnN0RGlyRmlsZU5hbWVDb250ZW50KFxuICBkaXJQYXRoOiBzdHJpbmdcbik6IFByb21pc2U8c3RyaW5nPiB7XG4gIGNvbnN0IHsgcHJvbWlzZXMgfSA9IGF3YWl0IG5vcm1hbGl6ZUltcG9ydChpbXBvcnQoXCJmc1wiKSk7XG4gIGNvbnN0IHsgam9pbiB9ID0gYXdhaXQgbm9ybWFsaXplSW1wb3J0KGltcG9ydChcInBhdGhcIikpO1xuICBjb25zdCBmaWxlcyA9IGF3YWl0IHByb21pc2VzLnJlYWRkaXIoZGlyUGF0aCk7XG4gIHJldHVybiAoYXdhaXQgcHJvbWlzZXMucmVhZEZpbGUoam9pbihkaXJQYXRoLCBmaWxlc1swXSkpKS50b1N0cmluZygpO1xufVxuXG4vKipcbiAqIEBkZXNjcmlwdGlvbiBHZXRzIGEgc2lnbmVyIGZyb20gYSBrZXkgZGlyZWN0b3J5XG4gKiBAc3VtbWFyeSBMb2FkcyBhIHByaXZhdGUga2V5IGZyb20gYSBkaXJlY3RvcnkgYW5kIGNyZWF0ZXMgYSBTaWduZXIgZm9yIEZhYnJpYyB0cmFuc2FjdGlvbnNcbiAqIEBwYXJhbSB7c3RyaW5nfSBrZXlEaXJlY3RvcnlQYXRoIC0gUGF0aCB0byB0aGUgZGlyZWN0b3J5IGNvbnRhaW5pbmcgdGhlIHByaXZhdGUga2V5XG4gKiBAcmV0dXJuIHtQcm9taXNlPFNpZ25lcj59IFByb21pc2UgcmVzb2x2aW5nIHRvIHRoZSBzaWduZXJcbiAqIEBmdW5jdGlvbiBnZXRTaWduZXJcbiAqIEBtZW1iZXJPZiBtb2R1bGU6Zm9yLWZhYnJpYy5jbGllbnRcbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGdldFNpZ25lcihrZXlEaXJlY3RvcnlQYXRoOiBzdHJpbmcpOiBQcm9taXNlPFNpZ25lcj4ge1xuICBjb25zdCBzaWduZXJGaWxlUmVhZGVyID0gYXN5bmMgKHBhdGg6IHN0cmluZykgPT4ge1xuICAgIGNvbnN0IHsgcHJvbWlzZXMgfSA9IGF3YWl0IG5vcm1hbGl6ZUltcG9ydChpbXBvcnQoXCJmc1wiKSk7XG4gICAgY29uc3Qga2V5UGF0aCA9IGF3YWl0IGdldEZpcnN0RGlyRmlsZU5hbWUocGF0aCk7XG4gICAgcmV0dXJuIGF3YWl0IHByb21pc2VzLnJlYWRGaWxlKGtleVBhdGgpO1xuICB9O1xuXG4gIGNvbnN0IHByaXZhdGVLZXlQZW0gPSAoYXdhaXQgY29udGVudE9mTG9hZEZpbGUoXG4gICAga2V5RGlyZWN0b3J5UGF0aCxcbiAgICBzaWduZXJGaWxlUmVhZGVyXG4gICkpIGFzIEJ1ZmZlcjtcblxuICBsZXQgaztcbiAgaWYgKGlzQnJvd3NlcigpKSB7XG4gICAgLy8gd2ViIGJhc2VkIGltcGxlbWVudGF0aW9uXG4gICAgY29uc3QgcHJpdmF0ZUtleSA9IGF3YWl0IGV4dHJhY3RQcml2YXRlS2V5KHByaXZhdGVLZXlQZW0pO1xuICAgIGNvbnN0IGtleXMgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKHByaXZhdGVLZXkpO1xuICAgIGsgPSAocHJpdmF0ZUtleSBhcyBhbnkpW2tleXNbMF1dO1xuICB9IGVsc2Uge1xuICAgIC8vIE5vZGUgYmFzZWQgaW1wbGVtZW50YXRpb25cbiAgICBjb25zdCB7IGNyZWF0ZVByaXZhdGVLZXkgfSA9IGF3YWl0IGltcG9ydChcImNyeXB0b1wiKTtcbiAgICBrID0gY3JlYXRlUHJpdmF0ZUtleShwcml2YXRlS2V5UGVtKTtcbiAgfVxuXG4gIHJldHVybiBzaWduZXJzLm5ld1ByaXZhdGVLZXlTaWduZXIoayBhcyBhbnkpO1xufVxuXG4vKipcbiAqIEBkZXNjcmlwdGlvbiBFeHRyYWN0cyBhIHByaXZhdGUga2V5IGZyb20gYSBQRU0gYnVmZmVyXG4gKiBAc3VtbWFyeSBDb252ZXJ0cyBhIFBFTS1lbmNvZGVkIHByaXZhdGUga2V5IHRvIGEgQ3J5cHRvS2V5IG9iamVjdFxuICogQHBhcmFtIHtCdWZmZXJ9IHBlbSAtIFRoZSBQRU0tZW5jb2RlZCBwcml2YXRlIGtleVxuICogQHJldHVybiB7UHJvbWlzZTxDcnlwdG9LZXk+fSBQcm9taXNlIHJlc29sdmluZyB0byB0aGUgQ3J5cHRvS2V5XG4gKiBAZnVuY3Rpb24gZXh0cmFjdFByaXZhdGVLZXlcbiAqIEBtZW1iZXJPZiBtb2R1bGU6Zm9yLWZhYnJpYy5jbGllbnRcbiAqIEBtZXJtYWlkXG4gKiBzZXF1ZW5jZURpYWdyYW1cbiAqICAgcGFydGljaXBhbnQgQ2FsbGVyXG4gKiAgIHBhcnRpY2lwYW50IEV4dHJhY3RQcml2YXRlS2V5XG4gKiAgIHBhcnRpY2lwYW50IFN1YnRsZUNyeXB0b1xuICpcbiAqICAgQ2FsbGVyLT4+RXh0cmFjdFByaXZhdGVLZXk6IGV4dHJhY3RQcml2YXRlS2V5KHBlbSlcbiAqICAgRXh0cmFjdFByaXZhdGVLZXktPj5FeHRyYWN0UHJpdmF0ZUtleTogR2V0IFN1YnRsZUNyeXB0byBpbXBsZW1lbnRhdGlvblxuICogICBFeHRyYWN0UHJpdmF0ZUtleS0+PkV4dHJhY3RQcml2YXRlS2V5OiBQYXJzZSBQRU0gZm9ybWF0XG4gKiAgIEV4dHJhY3RQcml2YXRlS2V5LT4+RXh0cmFjdFByaXZhdGVLZXk6IENvbnZlcnQgdG8gYmluYXJ5IERFUlxuICogICBFeHRyYWN0UHJpdmF0ZUtleS0+PlN1YnRsZUNyeXB0bzogaW1wb3J0S2V5KHBrY3M4LCBiaW5hcnlEZXIsIG9wdGlvbnMpXG4gKiAgIFN1YnRsZUNyeXB0by0tPj5FeHRyYWN0UHJpdmF0ZUtleTogQ3J5cHRvS2V5XG4gKiAgIEV4dHJhY3RQcml2YXRlS2V5LS0+PkNhbGxlcjogQ3J5cHRvS2V5XG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBleHRyYWN0UHJpdmF0ZUtleShwZW06IEJ1ZmZlcikge1xuICAvLyBjb25zdCBsaWJOYW1lID0gXCJub2RlOmNyeXB0b1wiO1xuICBsZXQgc3VidGxlO1xuICAvLyBpZiAoaXNCcm93c2VyKCkpIHtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHByZWZlci1jb25zdFxuICBzdWJ0bGUgPSAoZ2xvYmFsVGhpcyBhcyBhbnkpLmNyeXB0by5zdWJ0bGU7XG4gIC8vIH0gZWxzZSB7XG4gIC8vICAgY29uc3QgbGliID0gKGF3YWl0IG5vcm1hbGl6ZUltcG9ydChpbXBvcnQobGliTmFtZSkpKSBhcyBhbnk7XG4gIC8vICAgc3VidGxlID0gbGliLnN1YnRsZSB8fCBsaWIud2ViY3J5cHRvLnN1YnRsZTtcbiAgLy8gfVxuXG4gIGlmICghc3VidGxlKSB0aHJvdyBuZXcgRXJyb3IoXCJDb3VsZCBub3QgbG9hZCBTdWJ0bGVDcnlwdG8gbW9kdWxlXCIpO1xuXG4gIGZ1bmN0aW9uIHN0cjJhYihzdHI6IHN0cmluZykge1xuICAgIGNvbnN0IGJ1ZiA9IG5ldyBBcnJheUJ1ZmZlcihzdHIubGVuZ3RoKTtcbiAgICBjb25zdCBidWZWaWV3ID0gbmV3IFVpbnQ4QXJyYXkoYnVmKTtcbiAgICBmb3IgKGxldCBpID0gMCwgc3RyTGVuID0gc3RyLmxlbmd0aDsgaSA8IHN0ckxlbjsgaSsrKSB7XG4gICAgICBidWZWaWV3W2ldID0gc3RyLmNoYXJDb2RlQXQoaSk7XG4gICAgfVxuICAgIHJldHVybiBidWY7XG4gIH1cblxuICBjb25zdCBzdHIgPSBwZW1cbiAgICAudG9TdHJpbmcoXCJ1dGY4XCIpXG4gICAgLnJlcGxhY2UoXCItLS0tLUJFR0lOIFBSSVZBVEUgS0VZLS0tLS1cIiwgXCJcIilcbiAgICAucmVwbGFjZUFsbChcIlxcblwiLCBcIlwiKVxuICAgIC5yZXBsYWNlKFwiLS0tLS1FTkQgUFJJVkFURSBLRVktLS0tLVwiLCBcIlwiKTtcbiAgY29uc3QgZGVjb2RlZCA9IEJ1ZmZlci5mcm9tKHN0ciwgXCJiYXNlNjRcIikudG9TdHJpbmcoXCJiaW5hcnlcIik7XG4gIGNvbnN0IGJpbmFyeURlciA9IHN0cjJhYihkZWNvZGVkKTtcblxuICB0cnkge1xuICAgIGNvbnN0IGtleSA9IGF3YWl0IHN1YnRsZS5pbXBvcnRLZXkoXG4gICAgICBcInBrY3M4XCIsXG4gICAgICBiaW5hcnlEZXIsXG4gICAgICB7XG4gICAgICAgIG5hbWU6IFwiRUNEU0FcIixcbiAgICAgICAgbmFtZWRDdXJ2ZTogXCJQLTI1NlwiLFxuICAgICAgfSxcbiAgICAgIHRydWUsXG4gICAgICBbXCJzaWduXCJdXG4gICAgKTtcblxuICAgIHJldHVybiBrZXk7XG4gIH0gY2F0Y2ggKGU6IGFueSkge1xuICAgIHRocm93IG5ldyBJbnRlcm5hbEVycm9yKGUpO1xuICB9XG59XG4iXX0=