@bitgo/sdk-coin-icp 1.23.36 → 1.24.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/src/icp.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"icp.d.ts","sourceRoot":"","sources":["../../src/icp.ts"],"names":[],"mappings":"AACA,OAAO,EACL,uBAAuB,EACvB,+BAA+B,EAC/B,8BAA8B,EAC9B,QAAQ,EACR,SAAS,
|
|
1
|
+
{"version":3,"file":"icp.d.ts","sourceRoot":"","sources":["../../src/icp.ts"],"names":[],"mappings":"AACA,OAAO,EACL,uBAAuB,EACvB,+BAA+B,EAC/B,8BAA8B,EAC9B,QAAQ,EACR,SAAS,EAMT,OAAO,EACP,YAAY,EACZ,YAAY,EAEZ,iBAAiB,EACjB,uBAAuB,EAEvB,iBAAiB,EAEjB,sBAAsB,EACtB,wBAAwB,EAGzB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAsB,QAAQ,IAAI,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAGjF,OAAO,SAAS,MAAM,cAAc,CAAC;AACrC,OAAO,EAAc,IAAI,EAAE,MAAM,QAAQ,CAAC;AAG1C,OAAO,EAIL,YAAY,EAGZ,eAAe,EACf,mBAAmB,EAEnB,UAAU,EAEV,yBAAyB,EACzB,oBAAoB,EACpB,0BAA0B,EAC1B,gCAAgC,EACjC,MAAM,aAAa,CAAC;AAMrB;;;;;;GAMG;AACH,qBAAa,GAAI,SAAQ,QAAQ;IAC/B,SAAS,CAAC,QAAQ,CAAC,YAAY,EAAE,QAAQ,CAAC,eAAe,CAAC,CAAC;IAC3D,SAAS,aAAa,KAAK,EAAE,SAAS,EAAE,WAAW,CAAC,EAAE,QAAQ,CAAC,eAAe,CAAC;IAU/E,MAAM,CAAC,cAAc,CAAC,KAAK,EAAE,SAAS,EAAE,WAAW,CAAC,EAAE,QAAQ,CAAC,eAAe,CAAC,GAAG,QAAQ;IAI1F,QAAQ,IAAI,MAAM;IAIlB,YAAY,IAAI,MAAM;IAItB,SAAS,IAAI,MAAM;IAInB,WAAW,IAAI,MAAM;IAIrB,aAAa,IAAI,MAAM;IAIjB,kBAAkB,CAAC,MAAM,EAAE,oBAAoB,GAAG,OAAO,CAAC,yBAAyB,CAAC;IAapF,iBAAiB,CAAC,MAAM,EAAE,wBAAwB,GAAG,OAAO,CAAC,OAAO,CAAC;IAuC3E;;;;;;;OAOG;IACG,eAAe,CAAC,MAAM,EAAE,0BAA0B,GAAG,OAAO,CAAC,OAAO,CAAC;IA6CrE,gBAAgB,CAAC,MAAM,EAAE,uBAAuB,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAInF;;;OAGG;IACI,eAAe,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO;IAI9C,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;IAIlC,eAAe,CACnB,MAAM,EAAE,sBAAsB,GAAG;QAAE,UAAU,EAAE;YAAE,KAAK,EAAE,MAAM,CAAA;SAAE,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAE,GAC9E,OAAO,CAAC,iBAAiB,CAAC;IAmB7B,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;IAIhC,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;IAIhC,kBAAkB;IAClB,WAAW,IAAI,OAAO;IAItB,oBAAoB;IACpB,sBAAsB,IAAI,YAAY;IAItC,kBAAkB;IAClB,eAAe,IAAI,YAAY;IAI/B,mBAAmB;IACnB,eAAe,IAAI,IAAI;IAIvB,OAAO,CAAC,uBAAuB;IAI/B,mBAAmB;IACnB,SAAS,CAAC,gBAAgB,IAAI,MAAM;IAIpC,mBAAmB;IAEN,oBAAoB,CAAC,OAAO,EAAE,+BAA+B,GAAG,OAAO,CAAC,8BAA8B,CAAC;IA2BpH,OAAO,CAAC,8BAA8B;IAUtC;;;;;OAKG;cACa,iBAAiB,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC;IAM3E;;;;;;;;OAQG;cACa,UAAU,IAAI,OAAO,CAAC,SAAS,CAAC;IAKhD,OAAO,CAAC,iBAAiB;IAIzB;;;;;;;;;;OAUG;IACG,UAAU,CACd,YAAY,EAAE,YAAY,EAC1B,eAAe,EAAE,MAAM,EACvB,YAAY,EAAE,MAAM,CAAC,eAAe,CAAC,EACrC,cAAc,EAAE,MAAM,CAAC,eAAe,CAAC,EACvC,cAAc,EAAE,MAAM,GACrB,OAAO,CAAC,UAAU,EAAE,CAAC;IAsBxB;;;OAGG;IACG,OAAO,CAAC,MAAM,EAAE,eAAe,GAAG,OAAO,CAAC,mBAAmB,GAAG,gCAAgC,CAAC;IAqHvG,kBAAkB;IAClB,iBAAiB,CAAC,EAAE,YAAY,EAAE,GAAG,EAAE,SAAS,EAAE,EAAE,uBAAuB;CAM5E"}
|
package/dist/src/icp.js
CHANGED
|
@@ -362,6 +362,9 @@ class Icp extends sdk_core_1.BaseCoin {
|
|
|
362
362
|
const senderAddress = this.getAddressFromPublicKey(publicKey);
|
|
363
363
|
const balance = await this.getAccountBalance(publicKey);
|
|
364
364
|
const feeData = await this.getFeeData();
|
|
365
|
+
if (balance.isLessThanOrEqualTo(0)) {
|
|
366
|
+
throw new sdk_core_1.ErrorNoInputToRecover('Did not have enough funds to recover');
|
|
367
|
+
}
|
|
365
368
|
const actualBalance = balance.minus(feeData);
|
|
366
369
|
if (actualBalance.isLessThanOrEqualTo(0)) {
|
|
367
370
|
throw new Error('Did not have enough funds to recover');
|
|
@@ -400,6 +403,9 @@ class Icp extends sdk_core_1.BaseCoin {
|
|
|
400
403
|
return recoveredTransaction;
|
|
401
404
|
}
|
|
402
405
|
catch (error) {
|
|
406
|
+
if (error instanceof sdk_core_1.RecoveryProviderError || error instanceof sdk_core_1.ErrorNoInputToRecover) {
|
|
407
|
+
throw error;
|
|
408
|
+
}
|
|
403
409
|
throw new Error(`Error during ICP recovery: ${error.message || error}`);
|
|
404
410
|
}
|
|
405
411
|
}
|
|
@@ -412,4 +418,4 @@ class Icp extends sdk_core_1.BaseCoin {
|
|
|
412
418
|
}
|
|
413
419
|
}
|
|
414
420
|
exports.Icp = Icp;
|
|
415
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWNwLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2ljcC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxvREFBNEI7QUFDNUIsOENBc0J5QjtBQUN6Qiw0Q0FBaUY7QUFDakYsa0RBQStDO0FBQy9DLGtEQUEwQjtBQUMxQixnRUFBcUM7QUFDckMsbUNBQTBDO0FBQzFDLHdEQUEwQztBQUUxQyx1Q0FnQnFCO0FBQ3JCLCtFQUE0RTtBQUM1RSx3REFBZ0M7QUFDaEMsb0RBQTBEO0FBQzFELDZDQUEwQztBQUUxQzs7Ozs7O0dBTUc7QUFDSCxNQUFhLEdBQUksU0FBUSxtQkFBUTtJQUUvQixZQUFzQixLQUFnQixFQUFFLFdBQXVDO1FBQzdFLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUViLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUNqQixNQUFNLElBQUksS0FBSyxDQUFDLG9EQUFvRCxDQUFDLENBQUM7UUFDeEUsQ0FBQztRQUVELElBQUksQ0FBQyxZQUFZLEdBQUcsV0FBVyxDQUFDO0lBQ2xDLENBQUM7SUFFRCxNQUFNLENBQUMsY0FBYyxDQUFDLEtBQWdCLEVBQUUsV0FBdUM7UUFDN0UsT0FBTyxJQUFJLEdBQUcsQ0FBQyxLQUFLLEVBQUUsV0FBVyxDQUFDLENBQUM7SUFDckMsQ0FBQztJQUVELFFBQVE7UUFDTixPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7SUFFRCxZQUFZO1FBQ1YsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0lBRUQsU0FBUztRQUNQLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUM7SUFDbEMsQ0FBQztJQUVELFdBQVc7UUFDVCxPQUFPLG1CQUFtQixDQUFDO0lBQzdCLENBQUM7SUFFRCxhQUFhO1FBQ1gsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDLGFB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LENBQUM7UUFDOUIsQ0FBQztRQUFDLE9BQU8sS0FBSyxFQUFFLENBQUM7WUFDZixNQUFNLElBQUksS0FBSyxDQUFDLDhCQUE4QixLQUFLLENBQUMsT0FBTyxJQUFJLEtBQUssRUFBRSxDQUFDLENBQUM7UUFDMUUsQ0FBQztJQUNILENBQUM7SUFFRCxrQkFBa0I7SUFDbEIsaUJBQWlCLENBQUMsRUFBRSxZQUFZLEVBQUUsR0FBRyxFQUFFLFNBQVMsRUFBMkI7UUFDekUsSUFBSSxZQUFZLEtBQUssS0FBSyxFQUFFLENBQUM7WUFDM0IsTUFBTSxJQUFJLEtBQUssQ0FBQywyQkFBMkIsQ0FBQyxDQUFDO1FBQy9DLENBQUM7UUFDRCxJQUFBLGtDQUFvQixFQUFDLEdBQWEsRUFBRSxTQUFtQixDQUFDLENBQUM7SUFDM0QsQ0FBQztDQUNGO0FBN2JELGtCQTZiQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBhc3NlcnQgZnJvbSAnYXNzZXJ0JztcbmltcG9ydCB7XG4gIEF1ZGl0RGVjcnlwdGVkS2V5UGFyYW1zLFxuICBCYXNlQnJvYWRjYXN0VHJhbnNhY3Rpb25PcHRpb25zLFxuICBCYXNlQnJvYWRjYXN0VHJhbnNhY3Rpb25SZXN1bHQsXG4gIEJhc2VDb2luLFxuICBCaXRHb0Jhc2UsXG4gIEVjZHNhLFxuICBFQ0RTQVV0aWxzLFxuICBFbnZpcm9ubWVudHMsXG4gIEludmFsaWRBZGRyZXNzRXJyb3IsXG4gIEtleVBhaXIsXG4gIE1QQ0FsZ29yaXRobSxcbiAgTXVsdGlzaWdUeXBlLFxuICBtdWx0aXNpZ1R5cGVzLFxuICBQYXJzZWRUcmFuc2FjdGlvbixcbiAgUGFyc2VUcmFuc2FjdGlvbk9wdGlvbnMsXG4gIFNpZ25lZFRyYW5zYWN0aW9uLFxuICBTaWduaW5nRXJyb3IsXG4gIFNpZ25UcmFuc2FjdGlvbk9wdGlvbnMsXG4gIFZlcmlmeVRyYW5zYWN0aW9uT3B0aW9ucyxcbiAgdmVyaWZ5TVBDV2FsbGV0QWRkcmVzcyxcbiAgVW5leHBlY3RlZEFkZHJlc3NFcnJvcixcbn0gZnJvbSAnQGJpdGdvL3Nkay1jb3JlJztcbmltcG9ydCB7IGNvaW5zLCBOZXR3b3JrVHlwZSwgQmFzZUNvaW4gYXMgU3RhdGljc0Jhc2VDb2luIH0gZnJvbSAnQGJpdGdvL3N0YXRpY3MnO1xuaW1wb3J0IHsgUHJpbmNpcGFsIH0gZnJvbSAnQGRmaW5pdHkvcHJpbmNpcGFsJztcbmltcG9ydCBheGlvcyBmcm9tICdheGlvcyc7XG5pbXBvcnQgQmlnTnVtYmVyIGZyb20gJ2JpZ251bWJlci5qcyc7XG5pbXBvcnQgeyBjcmVhdGVIYXNoLCBIYXNoIH0gZnJvbSAnY3J5cHRvJztcbmltcG9ydCAqIGFzIG1wYyBmcm9tICdAYml0Z28vc2RrLWxpYi1tcGMnO1xuXG5pbXBvcnQge1xuICBDdXJ2ZVR5cGUsXG4gIExFREdFUl9DQU5JU1RFUl9JRCxcbiAgVEVTVE5FVF9MRURHRVJfQ0FOSVNURVJfSUQsXG4gIFBheWxvYWRzRGF0YSxcbiAgUFVCTElDX05PREVfUkVRVUVTVF9FTkRQT0lOVCxcbiAgUHVibGljTm9kZVN1Ym1pdFJlc3BvbnNlLFxuICBSZWNvdmVyeU9wdGlvbnMsXG4gIFJlY292ZXJ5VHJhbnNhY3Rpb24sXG4gIFJPT1RfUEFUSCxcbiAgU2lnbmF0dXJlcyxcbiAgU2lnbmluZ1BheWxvYWQsXG4gIEljcFRyYW5zYWN0aW9uRXhwbGFuYXRpb24sXG4gIFRyYW5zYWN0aW9uSGV4UGFyYW1zLFxuICBUc3NWZXJpZnlJY3BBZGRyZXNzT3B0aW9ucyxcbiAgVW5zaWduZWRTd2VlcFJlY292ZXJ5VHJhbnNhY3Rpb24sXG59IGZyb20gJy4vbGliL2lmYWNlJztcbmltcG9ydCB7IFRyYW5zYWN0aW9uQnVpbGRlckZhY3RvcnkgfSBmcm9tICcuL2xpYi90cmFuc2FjdGlvbkJ1aWxkZXJGYWN0b3J5JztcbmltcG9ydCB1dGlscyBmcm9tICcuL2xpYi91dGlscyc7XG5pbXBvcnQgeyBhdWRpdEVjZHNhUHJpdmF0ZUtleSB9IGZyb20gJ0BiaXRnby9zZGstbGliLW1wYyc7XG5pbXBvcnQgeyBJY3BBZ2VudCB9IGZyb20gJy4vbGliL2ljcEFnZW50JztcblxuLyoqXG4gKiBDbGFzcyByZXByZXNlbnRpbmcgdGhlIEludGVybmV0IENvbXB1dGVyIChJQ1ApIGNvaW4uXG4gKiBFeHRlbmRzIHRoZSBCYXNlQ29pbiBjbGFzcyBhbmQgcHJvdmlkZXMgc3BlY2lmaWMgaW1wbGVtZW50YXRpb25zIGZvciBJQ1AuXG4gKlxuICogQHNlZSB7QGxpbmsgaHR0cHM6Ly9pbnRlcm5ldGNvbXB1dGVyLm9yZy99XG4gKiBAc2VlIHtAbGluayBodHRwczovL2ludGVybmV0Y29tcHV0ZXIub3JnL2RvY3MvY3VycmVudC9kZXZlbG9wZXItZG9jcy9kZWZpL3Jvc2V0dGEvaWNwX3Jvc2V0dGEvZGF0YV9hcGkvfVxuICovXG5leHBvcnQgY2xhc3MgSWNwIGV4dGVuZHMgQmFzZUNvaW4ge1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgX3N0YXRpY3NDb2luOiBSZWFkb25seTxTdGF0aWNzQmFzZUNvaW4+O1xuICBwcm90ZWN0ZWQgY29uc3RydWN0b3IoYml0Z286IEJpdEdvQmFzZSwgc3RhdGljc0NvaW4/OiBSZWFkb25seTxTdGF0aWNzQmFzZUNvaW4+KSB7XG4gICAgc3VwZXIoYml0Z28pO1xuXG4gICAgaWYgKCFzdGF0aWNzQ29pbikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdtaXNzaW5nIHJlcXVpcmVkIGNvbnN0cnVjdG9yIHBhcmFtZXRlciBzdGF0aWNzQ29pbicpO1xuICAgIH1cblxuICAgIHRoaXMuX3N0YXRpY3NDb2luID0gc3RhdGljc0NvaW47XG4gIH1cblxuICBzdGF0aWMgY3JlYXRlSW5zdGFuY2UoYml0Z286IEJpdEdvQmFzZSwgc3RhdGljc0NvaW4/OiBSZWFkb25seTxTdGF0aWNzQmFzZUNvaW4+KTogQmFzZUNvaW4ge1xuICAgIHJldHVybiBuZXcgSWNwKGJpdGdvLCBzdGF0aWNzQ29pbik7XG4gIH1cblxuICBnZXRDaGFpbigpOiBzdHJpbmcge1xuICAgIHJldHVybiAnaWNwJztcbiAgfVxuXG4gIGdldEJhc2VDaGFpbigpOiBzdHJpbmcge1xuICAgIHJldHVybiAnaWNwJztcbiAgfVxuXG4gIGdldEZhbWlseSgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLl9zdGF0aWNzQ29pbi5mYW1pbHk7XG4gIH1cblxuICBnZXRGdWxsTmFtZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiAnSW50ZXJuZXQgQ29tcHV0ZXInO1xuICB9XG5cbiAgZ2V0QmFzZUZhY3RvcigpOiBudW1iZXIge1xuICAgIHJldHVybiBNYXRoLnBvdygxMCwgdGhpcy5fc3RhdGljc0NvaW4uZGVjaW1hbFBsYWNlcyk7XG4gIH1cblxuICBhc3luYyBleHBsYWluVHJhbnNhY3Rpb24ocGFyYW1zOiBUcmFuc2FjdGlvbkhleFBhcmFtcyk6IFByb21pc2U8SWNwVHJhbnNhY3Rpb25FeHBsYW5hdGlvbj4ge1xuICAgIGNvbnN0IGZhY3RvcnkgPSB0aGlzLmdldEJ1aWxkZXJGYWN0b3J5KCk7XG4gICAgY29uc3QgdHhCdWlsZGVyID0gYXdhaXQgZmFjdG9yeS5mcm9tKHBhcmFtcy50cmFuc2FjdGlvbkhleCk7XG4gICAgY29uc3QgdHJhbnNhY3Rpb24gPSBhd2FpdCB0eEJ1aWxkZXIuYnVpbGQoKTtcbiAgICBpZiAocGFyYW1zLnNpZ25hYmxlSGV4ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGNvbnN0IGdlbmVyYXRlZFNpZ25hYmxlSGV4ID0gdHhCdWlsZGVyLnRyYW5zYWN0aW9uLnBheWxvYWRzRGF0YS5wYXlsb2Fkc1swXS5oZXhfYnl0ZXM7XG4gICAgICBpZiAoZ2VuZXJhdGVkU2lnbmFibGVIZXggIT09IHBhcmFtcy5zaWduYWJsZUhleCkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ2dlbmVyYXRlZCBzaWduYWJsZUhleCBpcyBub3QgZXF1YWwgdG8gcGFyYW1zLnNpZ25hYmxlSGV4Jyk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB0cmFuc2FjdGlvbi5leHBsYWluVHJhbnNhY3Rpb24oKTtcbiAgfVxuXG4gIGFzeW5jIHZlcmlmeVRyYW5zYWN0aW9uKHBhcmFtczogVmVyaWZ5VHJhbnNhY3Rpb25PcHRpb25zKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgY29uc3QgeyB0eFBhcmFtcywgdHhQcmVidWlsZCB9ID0gcGFyYW1zO1xuICAgIGNvbnN0IHR4SGV4ID0gdHhQcmVidWlsZD8udHhIZXg7XG4gICAgaWYgKCF0eEhleCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCd0eEhleCBpcyByZXF1aXJlZCcpO1xuICAgIH1cbiAgICBjb25zdCB0eEhleFBhcmFtczogVHJhbnNhY3Rpb25IZXhQYXJhbXMgPSB7XG4gICAgICB0cmFuc2FjdGlvbkhleDogdHhIZXgsXG4gICAgfTtcblxuICAgIGlmICh0eFByZWJ1aWxkLnR4SW5mbyAmJiB0eFByZWJ1aWxkLnR4SW5mbyAhPT0gdW5kZWZpbmVkICYmIHR5cGVvZiB0eFByZWJ1aWxkLnR4SW5mbyA9PT0gJ3N0cmluZycpIHtcbiAgICAgIHR4SGV4UGFyYW1zLnNpZ25hYmxlSGV4ID0gdHhQcmVidWlsZC50eEluZm87XG4gICAgfVxuXG4gICAgY29uc3QgZXhwbGFpbmVkVHggPSBhd2FpdCB0aGlzLmV4cGxhaW5UcmFuc2FjdGlvbih0eEhleFBhcmFtcyk7XG5cbiAgICBpZiAoQXJyYXkuaXNBcnJheSh0eFBhcmFtcy5yZWNpcGllbnRzKSAmJiB0eFBhcmFtcy5yZWNpcGllbnRzLmxlbmd0aCA+IDApIHtcbiAgICAgIGlmICh0eFBhcmFtcy5yZWNpcGllbnRzLmxlbmd0aCA+IDEpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgIGAke3RoaXMuZ2V0Q2hhaW4oKX0gZG9lc24ndCBzdXBwb3J0IHNlbmRpbmcgdG8gbW9yZSB0aGFuIDEgZGVzdGluYXRpb24gYWRkcmVzcyB3aXRoaW4gYSBzaW5nbGUgdHJhbnNhY3Rpb24uIFRyeSBhZ2FpbiwgdXNpbmcgb25seSBhIHNpbmdsZSByZWNpcGllbnQuYFxuICAgICAgICApO1xuICAgICAgfVxuICAgICAgYXNzZXJ0KGV4cGxhaW5lZFR4Lm91dHB1dHMubGVuZ3RoID09PSAxLCAnVHggb3V0cHV0cyBkb2VzIG5vdCBtYXRjaCB3aXRoIGV4cGVjdGVkIHR4UGFyYW1zIHJlY2lwaWVudHMnKTtcblxuICAgICAgY29uc3Qgb3V0cHV0ID0gZXhwbGFpbmVkVHgub3V0cHV0c1swXTtcbiAgICAgIGNvbnN0IHJlY2lwaWVudCA9IHR4UGFyYW1zLnJlY2lwaWVudHNbMF07XG4gICAgICBjb25zdCByZWNpcGllbnRSb290QWRkcmVzcyA9XG4gICAgICAgIHR5cGVvZiByZWNpcGllbnQuYWRkcmVzcyA9PT0gJ3N0cmluZycgPyB1dGlscy52YWxpZGF0ZU1lbW9BbmRSZXR1cm5Sb290QWRkcmVzcyhyZWNpcGllbnQuYWRkcmVzcykgOiB1bmRlZmluZWQ7XG4gICAgICBhc3NlcnQoXG4gICAgICAgIHJlY2lwaWVudFJvb3RBZGRyZXNzICE9PSB1bmRlZmluZWQgJiZcbiAgICAgICAgICB0eXBlb2Ygb3V0cHV0LmFkZHJlc3MgPT09ICdzdHJpbmcnICYmXG4gICAgICAgICAgb3V0cHV0LmFkZHJlc3MgPT09IHJlY2lwaWVudFJvb3RBZGRyZXNzICYmXG4gICAgICAgICAgQmlnTnVtYmVyKG91dHB1dC5hbW91bnQpLmVxKEJpZ051bWJlcihyZWNpcGllbnQuYW1vdW50KSksXG4gICAgICAgICdUeCBvdXRwdXRzIGRvZXMgbm90IG1hdGNoIHdpdGggZXhwZWN0ZWQgdHhQYXJhbXMgcmVjaXBpZW50cydcbiAgICAgICk7XG4gICAgfVxuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgLyoqXG4gICAqIFZlcmlmeSB0aGF0IGFuIGFkZHJlc3MgYmVsb25ncyB0byB0aGlzIHdhbGxldC5cbiAgICpcbiAgICogQHBhcmFtIHtUc3NWZXJpZnlJY3BBZGRyZXNzT3B0aW9uc30gcGFyYW1zIC0gVmVyaWZpY2F0aW9uIHBhcmFtZXRlcnNcbiAgICogQHJldHVybnMge1Byb21pc2U8Ym9vbGVhbj59IFRydWUgaWYgYWRkcmVzcyBiZWxvbmdzIHRvIHdhbGxldFxuICAgKiBAdGhyb3dzIHtJbnZhbGlkQWRkcmVzc0Vycm9yfSBJZiBhZGRyZXNzIGZvcm1hdCBpcyBpbnZhbGlkIG9yIGRvZXNuJ3QgbWF0Y2ggZGVyaXZlZCBhZGRyZXNzXG4gICAqIEB0aHJvd3Mge0Vycm9yfSBJZiBpbnZhbGlkIHdhbGxldCB2ZXJzaW9uIG9yIG1pc3NpbmcgcGFyYW1ldGVyc1xuICAgKi9cbiAgYXN5bmMgaXNXYWxsZXRBZGRyZXNzKHBhcmFtczogVHNzVmVyaWZ5SWNwQWRkcmVzc09wdGlvbnMpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICBjb25zdCB7IGFkZHJlc3MsIHJvb3RBZGRyZXNzLCB3YWxsZXRWZXJzaW9uIH0gPSBwYXJhbXM7XG5cbiAgICBpZiAoIXRoaXMuaXNWYWxpZEFkZHJlc3MoYWRkcmVzcykpIHtcbiAgICAgIHRocm93IG5ldyBJbnZhbGlkQWRkcmVzc0Vycm9yKGBpbnZhbGlkIGFkZHJlc3M6ICR7YWRkcmVzc31gKTtcbiAgICB9XG5cbiAgICBsZXQgYWRkcmVzc1RvVmVyaWZ5ID0gYWRkcmVzcztcbiAgICBpZiAod2FsbGV0VmVyc2lvbiA9PT0gMSkge1xuICAgICAgaWYgKCFyb290QWRkcmVzcykge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ3Jvb3RBZGRyZXNzIGlzIHJlcXVpcmVkIGZvciB3YWxsZXQgdmVyc2lvbiAxJyk7XG4gICAgICB9XG4gICAgICBjb25zdCBleHRyYWN0ZWRSb290QWRkcmVzcyA9IHV0aWxzLnZhbGlkYXRlTWVtb0FuZFJldHVyblJvb3RBZGRyZXNzKGFkZHJlc3MpO1xuICAgICAgaWYgKCFleHRyYWN0ZWRSb290QWRkcmVzcyB8fCBleHRyYWN0ZWRSb290QWRkcmVzcyA9PT0gYWRkcmVzcykge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ21lbW9JZCBpcyByZXF1aXJlZCBmb3Igd2FsbGV0IHZlcnNpb24gMSBhZGRyZXNzZXMnKTtcbiAgICAgIH1cbiAgICAgIC8vIEluIHRoZSB3YWxsZXQuY3JlYXRlQWRkcmVzcygpIHZlcmlmaWNhdGlvbiBmbG93LCByb290QWRkcmVzcyBpcyB0aGUgd2FsbGV0J3NcbiAgICAgIC8vIG1lbW8tc3VmZml4ZWQgcmVjZWl2ZUFkZHJlc3MgKGUuZy4gJ3Jvb3Q/bWVtb0lkPTMnKSBmb3IgbWVtby1iYXNlZCAod2FsbGV0VmVyc2lvbiAxKVxuICAgICAgLy8gd2FsbGV0cy4gU3RyaXAgdGhlIG1lbW8gc28gYmFyZSByb290cyBhcmUgY29tcGFyZWQgYW5kIHRoZSBiYXJlIHJvb3QgaXNcbiAgICAgIC8vIHdoYXQgZ2V0cyBrZXktdmVyaWZpZWQgYnkgdmVyaWZ5TVBDV2FsbGV0QWRkcmVzcy5cbiAgICAgIGNvbnN0IHdhbGxldFJvb3RBZGRyZXNzID0gdXRpbHMudmFsaWRhdGVNZW1vQW5kUmV0dXJuUm9vdEFkZHJlc3Mocm9vdEFkZHJlc3MpO1xuICAgICAgaWYgKCF3YWxsZXRSb290QWRkcmVzcyB8fCBleHRyYWN0ZWRSb290QWRkcmVzcy50b0xvd2VyQ2FzZSgpICE9PSB3YWxsZXRSb290QWRkcmVzcy50b0xvd2VyQ2FzZSgpKSB7XG4gICAgICAgIHRocm93IG5ldyBVbmV4cGVjdGVkQWRkcmVzc0Vycm9yKFxuICAgICAgICAgIGBhZGRyZXNzIHZhbGlkYXRpb24gZmFpbHVyZTogZXhwZWN0ZWQgJHt3YWxsZXRSb290QWRkcmVzc30gYnV0IGdvdCAke2V4dHJhY3RlZFJvb3RBZGRyZXNzfWBcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICAgIGFkZHJlc3NUb1ZlcmlmeSA9IHdhbGxldFJvb3RBZGRyZXNzO1xuICAgIH1cblxuICAgIGNvbnN0IGluZGV4VG9WZXJpZnkgPSB3YWxsZXRWZXJzaW9uID09PSAxID8gMCA6IHBhcmFtcy5pbmRleDtcbiAgICBjb25zdCByZXN1bHQgPSBhd2FpdCB2ZXJpZnlNUENXYWxsZXRBZGRyZXNzKFxuICAgICAgeyAuLi5wYXJhbXMsIGFkZHJlc3M6IGFkZHJlc3NUb1ZlcmlmeSwgaW5kZXg6IGluZGV4VG9WZXJpZnksIGtleUN1cnZlOiAnc2VjcDI1NmsxJyB9LFxuICAgICAgdGhpcy5pc1ZhbGlkQWRkcmVzcy5iaW5kKHRoaXMpLFxuICAgICAgKHB1YktleSkgPT4gdXRpbHMuZ2V0QWRkcmVzc0Zyb21QdWJsaWNLZXkocHViS2V5KVxuICAgICk7XG5cbiAgICBpZiAoIXJlc3VsdCkge1xuICAgICAgdGhyb3cgbmV3IFVuZXhwZWN0ZWRBZGRyZXNzRXJyb3IoXG4gICAgICAgIGBhZGRyZXNzIHZhbGlkYXRpb24gZmFpbHVyZTogYWRkcmVzcyAke2FkZHJlc3NUb1ZlcmlmeX0gaXMgbm90IGEgd2FsbGV0IGFkZHJlc3NgXG4gICAgICApO1xuICAgIH1cblxuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgYXN5bmMgcGFyc2VUcmFuc2FjdGlvbihwYXJhbXM6IFBhcnNlVHJhbnNhY3Rpb25PcHRpb25zKTogUHJvbWlzZTxQYXJzZWRUcmFuc2FjdGlvbj4ge1xuICAgIHJldHVybiB7fTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZW5lcmF0ZSBhIG5ldyBrZXlwYWlyIGZvciB0aGlzIGNvaW4uXG4gICAqIEBwYXJhbSBzZWVkIFNlZWQgZnJvbSB3aGljaCB0aGUgbmV3IGtleXBhaXIgc2hvdWxkIGJlIGdlbmVyYXRlZCwgb3RoZXJ3aXNlIGEgcmFuZG9tIHNlZWQgaXMgdXNlZFxuICAgKi9cbiAgcHVibGljIGdlbmVyYXRlS2V5UGFpcihzZWVkPzogQnVmZmVyKTogS2V5UGFpciB7XG4gICAgcmV0dXJuIHV0aWxzLmdlbmVyYXRlS2V5UGFpcihzZWVkKTtcbiAgfVxuXG4gIGlzVmFsaWRBZGRyZXNzKGFkZHJlc3M6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB1dGlscy5pc1ZhbGlkQWRkcmVzcyhhZGRyZXNzKTtcbiAgfVxuXG4gIGFzeW5jIHNpZ25UcmFuc2FjdGlvbihcbiAgICBwYXJhbXM6IFNpZ25UcmFuc2FjdGlvbk9wdGlvbnMgJiB7IHR4UHJlYnVpbGQ6IHsgdHhIZXg6IHN0cmluZyB9OyBwcnY6IHN0cmluZyB9XG4gICk6IFByb21pc2U8U2lnbmVkVHJhbnNhY3Rpb24+IHtcbiAgICBjb25zdCB0eEhleCA9IHBhcmFtcz8udHhQcmVidWlsZD8udHhIZXg7XG4gICAgY29uc3QgcHJpdmF0ZUtleSA9IHBhcmFtcz8ucHJ2O1xuICAgIGlmICghdHhIZXgpIHtcbiAgICAgIHRocm93IG5ldyBTaWduaW5nRXJyb3IoJ21pc3NpbmcgcmVxdWlyZWQgdHhQcmVidWlsZCBwYXJhbWV0ZXI6IHBhcmFtcy50eFByZWJ1aWxkLnR4SGV4Jyk7XG4gICAgfVxuICAgIGlmICghcHJpdmF0ZUtleSkge1xuICAgICAgdGhyb3cgbmV3IFNpZ25pbmdFcnJvcignbWlzc2luZyByZXF1aXJlZCBwcnYgcGFyYW1ldGVyOiBwYXJhbXMucHJ2Jyk7XG4gICAgfVxuICAgIGNvbnN0IGZhY3RvcnkgPSB0aGlzLmdldEJ1aWxkZXJGYWN0b3J5KCk7XG4gICAgY29uc3QgdHhCdWlsZGVyID0gYXdhaXQgZmFjdG9yeS5mcm9tKHBhcmFtcy50eFByZWJ1aWxkLnR4SGV4KTtcbiAgICB0eEJ1aWxkZXIuc2lnbih7IGtleTogcGFyYW1zLnBydiB9KTtcbiAgICB0eEJ1aWxkZXIuY29tYmluZSgpO1xuICAgIGNvbnN0IHNlcmlhbGl6ZWRUeCA9IHR4QnVpbGRlci50cmFuc2FjdGlvbi50b0Jyb2FkY2FzdEZvcm1hdCgpO1xuICAgIHJldHVybiB7XG4gICAgICB0eEhleDogc2VyaWFsaXplZFR4LFxuICAgIH07XG4gIH1cblxuICBpc1ZhbGlkUHViKGtleTogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHV0aWxzLmlzVmFsaWRQdWJsaWNLZXkoa2V5KTtcbiAgfVxuXG4gIGlzVmFsaWRQcnYoa2V5OiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdXRpbHMuaXNWYWxpZFByaXZhdGVLZXkoa2V5KTtcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdERvYyAqL1xuICBzdXBwb3J0c1RzcygpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIC8qKiBpbmhlcml0ZWQgZG9jICovXG4gIGdldERlZmF1bHRNdWx0aXNpZ1R5cGUoKTogTXVsdGlzaWdUeXBlIHtcbiAgICByZXR1cm4gbXVsdGlzaWdUeXBlcy50c3M7XG4gIH1cblxuICAvKiogQGluaGVyaXREb2MgKi9cbiAgZ2V0TVBDQWxnb3JpdGhtKCk6IE1QQ0FsZ29yaXRobSB7XG4gICAgcmV0dXJuICdlY2RzYSc7XG4gIH1cblxuICAvKiogQGluaGVyaXREb2MgKiovXG4gIGdldEhhc2hGdW5jdGlvbigpOiBIYXNoIHtcbiAgICByZXR1cm4gY3JlYXRlSGFzaCgnc2hhMjU2Jyk7XG4gIH1cblxuICBwcml2YXRlIGdldEFkZHJlc3NGcm9tUHVibGljS2V5KGhleEVuY29kZWRQdWJsaWNLZXk6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHV0aWxzLmdldEFkZHJlc3NGcm9tUHVibGljS2V5KGhleEVuY29kZWRQdWJsaWNLZXkpO1xuICB9XG5cbiAgLyoqIEBpbmhlcml0RG9jICoqL1xuICBwcm90ZWN0ZWQgZ2V0UHVibGljTm9kZVVybCgpOiBzdHJpbmcge1xuICAgIHJldHVybiBFbnZpcm9ubWVudHNbdGhpcy5iaXRnby5nZXRFbnYoKV0uaWNwTm9kZVVybDtcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdERvYyAqKi9cbiAgLy8gdGhpcyBtZXRob2QgY2FsbHMgdGhlIHB1YmxpYyBub2RlIHRvIGJyb2FkY2FzdCB0aGUgdHJhbnNhY3Rpb24gYW5kIG5vdCB0aGUgcm9zZXR0YSBub2RlXG4gIHB1YmxpYyBhc3luYyBicm9hZGNhc3RUcmFuc2FjdGlvbihwYXlsb2FkOiBCYXNlQnJvYWRjYXN0VHJhbnNhY3Rpb25PcHRpb25zKTogUHJvbWlzZTxCYXNlQnJvYWRjYXN0VHJhbnNhY3Rpb25SZXN1bHQ+IHtcbiAgICBjb25zdCBlbmRwb2ludCA9IHRoaXMuZ2V0UHVibGljTm9kZUJyb2FkY2FzdEVuZHBvaW50KCk7XG5cbiAgICB0cnkge1xuICAgICAgY29uc3QgYm9keUJ5dGVzID0gdXRpbHMuYmxvYkZyb21IZXgocGF5bG9hZC5zZXJpYWxpemVkU2lnbmVkVHJhbnNhY3Rpb24pO1xuICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBheGlvcy5wb3N0KGVuZHBvaW50LCBib2R5Qnl0ZXMsIHtcbiAgICAgICAgaGVhZGVyczogeyAnQ29udGVudC1UeXBlJzogJ2FwcGxpY2F0aW9uL2Nib3InIH0sXG4gICAgICAgIHJlc3BvbnNlVHlwZTogJ2FycmF5YnVmZmVyJywgLy8gVGhpcyBlbnN1cmVzIHlvdSBnZXQgYSBCdWZmZXIsIG5vdCBhIHN0cmluZ1xuICAgICAgfSk7XG5cbiAgICAgIGlmIChyZXNwb25zZS5zdGF0dXMgIT09IDIwMCkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFRyYW5zYWN0aW9uIGJyb2FkY2FzdCBmYWlsZWQgd2l0aCBzdGF0dXM6ICR7cmVzcG9uc2Uuc3RhdHVzfSAtICR7cmVzcG9uc2Uuc3RhdHVzVGV4dH1gKTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgZGVjb2RlZFJlc3BvbnNlID0gdXRpbHMuY2JvckRlY29kZShyZXNwb25zZS5kYXRhKSBhcyBQdWJsaWNOb2RlU3VibWl0UmVzcG9uc2U7XG5cbiAgICAgIGlmIChkZWNvZGVkUmVzcG9uc2Uuc3RhdHVzID09PSAncmVwbGllZCcpIHtcbiAgICAgICAgLy8gaXQgaXMgY29uc2lkZXJlZCBhIHN1Y2Nlc3MgYmVjYXVzZSBJQ1AgcmV0dXJucyByZXNwb25zZSBpbiBhIENCT1IgbWFwIHdpdGggYSBzdGF0dXMgb2YgJ3JlcGxpZWQnXG4gICAgICAgIHJldHVybiB7fTsgLy8gcmV0dXJuZWQgZW1wdHkgb2JqZWN0IGFzIElDUCBkb2VzIG5vdCByZXR1cm4gYSB0eGlkXG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFVuZXhwZWN0ZWQgcmVzcG9uc2Ugc3RhdHVzIGZyb20gbm9kZTogJHtkZWNvZGVkUmVzcG9uc2Uuc3RhdHVzfWApO1xuICAgICAgfVxuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYFRyYW5zYWN0aW9uIGJyb2FkY2FzdCBlcnJvcjogJHtlcnJvcj8ubWVzc2FnZSB8fCBKU09OLnN0cmluZ2lmeShlcnJvcil9YCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBnZXRQdWJsaWNOb2RlQnJvYWRjYXN0RW5kcG9pbnQoKTogc3RyaW5nIHtcbiAgICBjb25zdCBub2RlVXJsID0gdGhpcy5nZXRQdWJsaWNOb2RlVXJsKCk7XG4gICAgY29uc3QgbGVkZ2VyQ2FuaXN0ZXJJZCA9XG4gICAgICB0aGlzLl9zdGF0aWNzQ29pbi5uZXR3b3JrLnR5cGUgPT09IE5ldHdvcmtUeXBlLlRFU1RORVQgPyBURVNUTkVUX0xFREdFUl9DQU5JU1RFUl9JRCA6IExFREdFUl9DQU5JU1RFUl9JRDtcbiAgICBjb25zdCBwcmluY2lwYWwgPSBQcmluY2lwYWwuZnJvbVVpbnQ4QXJyYXkobGVkZ2VyQ2FuaXN0ZXJJZCk7XG4gICAgY29uc3QgY2FuaXN0ZXJJZEhleCA9IHByaW5jaXBhbC50b1RleHQoKTtcbiAgICBjb25zdCBlbmRwb2ludCA9IGAke25vZGVVcmx9JHtQVUJMSUNfTk9ERV9SRVFVRVNUX0VORFBPSU5UfSR7Y2FuaXN0ZXJJZEhleH0vY2FsbGA7XG4gICAgcmV0dXJuIGVuZHBvaW50O1xuICB9XG5cbiAgLyoqXG4gICAqIEZldGNoZXMgdGhlIGFjY291bnQgYmFsYW5jZSBmb3IgYSBnaXZlbiBwdWJsaWMga2V5LlxuICAgKiBAcGFyYW0gcHVibGljS2V5SGV4IC0gSGV4LWVuY29kZWQgcHVibGljIGtleSBvZiB0aGUgYWNjb3VudC5cbiAgICogQHJldHVybnMgUHJvbWlzZSByZXNvbHZpbmcgdG8gdGhlIGFjY291bnQgYmFsYW5jZSBhcyBhIHN0cmluZy5cbiAgICogQHRocm93cyBFcnJvciBpZiB0aGUgYmFsYW5jZSBjb3VsZCBub3QgYmUgZmV0Y2hlZC5cbiAgICovXG4gIHByb3RlY3RlZCBhc3luYyBnZXRBY2NvdW50QmFsYW5jZShwdWJsaWNLZXlIZXg6IHN0cmluZyk6IFByb21pc2U8QmlnTnVtYmVyPiB7XG4gICAgY29uc3QgcHJpbmNpcGFsSWQgPSB1dGlscy5nZXRQcmluY2lwYWxJZEZyb21QdWJsaWNLZXkocHVibGljS2V5SGV4KS50b1RleHQoKTtcbiAgICBjb25zdCBhZ2VudCA9IG5ldyBJY3BBZ2VudCh0aGlzLmdldFB1YmxpY05vZGVVcmwoKSwgdGhpcy5fc3RhdGljc0NvaW4pO1xuICAgIHJldHVybiBhZ2VudC5nZXRCYWxhbmNlKHByaW5jaXBhbElkKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXRyaWV2ZXMgdGhlIGN1cnJlbnQgdHJhbnNhY3Rpb24gZmVlIGRhdGEgZnJvbSB0aGUgSUNQIHB1YmxpYyBub2RlLlxuICAgKlxuICAgKiBUaGlzIG1ldGhvZCBjcmVhdGVzIGFuIGluc3RhbmNlIG9mIGBJY3BBZ2VudGAgdXNpbmcgdGhlIHB1YmxpYyBub2RlIFVSTCxcbiAgICogdGhlbiBxdWVyaWVzIHRoZSBub2RlIGZvciB0aGUgY3VycmVudCBmZWUgaW5mb3JtYXRpb24uXG4gICAqXG4gICAqIEByZXR1cm5zIEEgcHJvbWlzZSB0aGF0IHJlc29sdmVzIHRvIGEgYEJpZ051bWJlcmAgcmVwcmVzZW50aW5nIHRoZSBjdXJyZW50IHRyYW5zYWN0aW9uIGZlZS5cbiAgICogQHRocm93cyBXaWxsIHByb3BhZ2F0ZSBhbnkgZXJyb3JzIGVuY291bnRlcmVkIHdoaWxlIGNvbW11bmljYXRpbmcgd2l0aCB0aGUgSUNQIG5vZGUuXG4gICAqL1xuICBwcm90ZWN0ZWQgYXN5bmMgZ2V0RmVlRGF0YSgpOiBQcm9taXNlPEJpZ051bWJlcj4ge1xuICAgIGNvbnN0IGFnZW50ID0gbmV3IEljcEFnZW50KHRoaXMuZ2V0UHVibGljTm9kZVVybCgpLCB0aGlzLl9zdGF0aWNzQ29pbik7XG4gICAgcmV0dXJuIGF3YWl0IGFnZW50LmdldEZlZSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRCdWlsZGVyRmFjdG9yeSgpOiBUcmFuc2FjdGlvbkJ1aWxkZXJGYWN0b3J5IHtcbiAgICByZXR1cm4gbmV3IFRyYW5zYWN0aW9uQnVpbGRlckZhY3RvcnkoY29pbnMuZ2V0KHRoaXMuZ2V0QmFzZUNoYWluKCkpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZW5lcmF0ZXMgYW4gYXJyYXkgb2Ygc2lnbmF0dXJlcyBmb3IgdGhlIHByb3ZpZGVkIHBheWxvYWRzIHVzaW5nIE1QQ1xuICAgKlxuICAgKiBAcGFyYW0gcGF5bG9hZHNEYXRhIC0gVGhlIGRhdGEgY29udGFpbmluZyB0aGUgcGF5bG9hZHMgdG8gYmUgc2lnbmVkLlxuICAgKiBAcGFyYW0gc2VuZGVyUHVibGljS2V5IC0gVGhlIHB1YmxpYyBrZXkgb2YgdGhlIHNlbmRlciBpbiBoZXhhZGVjaW1hbCBmb3JtYXQuXG4gICAqIEBwYXJhbSB1c2VyS2V5U2hhcmUgLSBUaGUgdXNlcidzIGtleSBzaGFyZSBhcyBhIEJ1ZmZlci5cbiAgICogQHBhcmFtIGJhY2t1cEtleVNoYXJlIC0gVGhlIGJhY2t1cCBrZXkgc2hhcmUgYXMgYSBCdWZmZXIuXG4gICAqIEBwYXJhbSBjb21tb25LZXlDaGFpbiAtIFRoZSBjb21tb24ga2V5IGNoYWluIGlkZW50aWZpZXIgdXNlZCBmb3IgTVBDIHNpZ25pbmcuXG4gICAqIEByZXR1cm5zIEEgcHJvbWlzZSB0aGF0IHJlc29sdmVzIHRvIGFuIGFycmF5IG9mIGBTaWduYXR1cmVzYCBvYmplY3RzLCBlYWNoIGNvbnRhaW5pbmcgdGhlIHNpZ25pbmcgcGF5bG9hZCxcbiAgICogICAgICAgICAgc2lnbmF0dXJlIHR5cGUsIHB1YmxpYyBrZXksIGFuZCB0aGUgZ2VuZXJhdGVkIHNpZ25hdHVyZSBpbiBoZXhhZGVjaW1hbCBmb3JtYXQuXG4gICAqL1xuICBhc3luYyBzaWduYXR1cmVzKFxuICAgIHBheWxvYWRzRGF0YTogUGF5bG9hZHNEYXRhLFxuICAgIHNlbmRlclB1YmxpY0tleTogc3RyaW5nLFxuICAgIHVzZXJLZXlTaGFyZTogQnVmZmVyPEFycmF5QnVmZmVyTGlrZT4sXG4gICAgYmFja3VwS2V5U2hhcmU6IEJ1ZmZlcjxBcnJheUJ1ZmZlckxpa2U+LFxuICAgIGNvbW1vbktleUNoYWluOiBzdHJpbmdcbiAgKTogUHJvbWlzZTxTaWduYXR1cmVzW10+IHtcbiAgICB0cnkge1xuICAgICAgY29uc3QgcGF5bG9hZCA9IHBheWxvYWRzRGF0YS5wYXlsb2Fkc1swXSBhcyBTaWduaW5nUGF5bG9hZDtcbiAgICAgIGNvbnN0IG1lc3NhZ2UgPSBCdWZmZXIuZnJvbShwYXlsb2FkLmhleF9ieXRlcywgJ2hleCcpO1xuICAgICAgY29uc3QgbWVzc2FnZUhhc2ggPSBjcmVhdGVIYXNoKCdzaGEyNTYnKS51cGRhdGUobWVzc2FnZSkuZGlnZXN0KCk7XG4gICAgICBjb25zdCBzaWduYXR1cmUgPSBhd2FpdCBFQ0RTQVV0aWxzLnNpZ25SZWNvdmVyeU1wY1YyKG1lc3NhZ2VIYXNoLCB1c2VyS2V5U2hhcmUsIGJhY2t1cEtleVNoYXJlLCBjb21tb25LZXlDaGFpbik7XG4gICAgICBjb25zdCBzaWduYXR1cmVQYXlsb2FkOiBTaWduYXR1cmVzID0ge1xuICAgICAgICBzaWduaW5nX3BheWxvYWQ6IHBheWxvYWQsXG4gICAgICAgIHNpZ25hdHVyZV90eXBlOiBwYXlsb2FkLnNpZ25hdHVyZV90eXBlLFxuICAgICAgICBwdWJsaWNfa2V5OiB7XG4gICAgICAgICAgaGV4X2J5dGVzOiBzZW5kZXJQdWJsaWNLZXksXG4gICAgICAgICAgY3VydmVfdHlwZTogQ3VydmVUeXBlLlNFQ1AyNTZLMSxcbiAgICAgICAgfSxcbiAgICAgICAgaGV4X2J5dGVzOiBzaWduYXR1cmUuciArIHNpZ25hdHVyZS5zLFxuICAgICAgfTtcblxuICAgICAgcmV0dXJuIFtzaWduYXR1cmVQYXlsb2FkXTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBFcnJvciBnZW5lcmF0aW5nIHNpZ25hdHVyZXM6ICR7ZXJyb3IubWVzc2FnZSB8fCBlcnJvcn1gKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQnVpbGRzIGEgZnVuZHMgcmVjb3ZlcnkgdHJhbnNhY3Rpb24gd2l0aG91dCBCaXRHb1xuICAgKiBAcGFyYW0gcGFyYW1zXG4gICAqL1xuICBhc3luYyByZWNvdmVyKHBhcmFtczogUmVjb3ZlcnlPcHRpb25zKTogUHJvbWlzZTxSZWNvdmVyeVRyYW5zYWN0aW9uIHwgVW5zaWduZWRTd2VlcFJlY292ZXJ5VHJhbnNhY3Rpb24+IHtcbiAgICB0cnkge1xuICAgICAgaWYgKCFwYXJhbXMucmVjb3ZlcnlEZXN0aW5hdGlvbiB8fCAhdGhpcy5pc1ZhbGlkQWRkcmVzcyhwYXJhbXMucmVjb3ZlcnlEZXN0aW5hdGlvbikpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdpbnZhbGlkIHJlY292ZXJ5RGVzdGluYXRpb24nKTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgaXNVbnNpZ25lZFN3ZWVwID0gIXBhcmFtcy51c2VyS2V5ICYmICFwYXJhbXMuYmFja3VwS2V5ICYmICFwYXJhbXMud2FsbGV0UGFzc3BocmFzZTtcblxuICAgICAgbGV0IHB1YmxpY0tleTogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICAgICAgbGV0IHVzZXJLZXlTaGFyZSwgYmFja3VwS2V5U2hhcmUsIGNvbW1vbktleUNoYWluO1xuICAgICAgY29uc3QgTVBDID0gbmV3IEVjZHNhKCk7XG5cbiAgICAgIGlmICghaXNVbnNpZ25lZFN3ZWVwKSB7XG4gICAgICAgIGlmICghcGFyYW1zLnVzZXJLZXkpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ21pc3NpbmcgdXNlcktleScpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCFwYXJhbXMuYmFja3VwS2V5KSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdtaXNzaW5nIGJhY2t1cEtleScpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCFwYXJhbXMud2FsbGV0UGFzc3BocmFzZSkge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcignbWlzc2luZyB3YWxsZXQgcGFzc3BocmFzZScpO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgdXNlcktleSA9IHBhcmFtcy51c2VyS2V5LnJlcGxhY2UoL1xccy9nLCAnJyk7XG4gICAgICAgIGNvbnN0IGJhY2t1cEtleSA9IHBhcmFtcy5iYWNrdXBLZXkucmVwbGFjZSgvXFxzL2csICcnKTtcblxuICAgICAgICAoeyB1c2VyS2V5U2hhcmUsIGJhY2t1cEtleVNoYXJlLCBjb21tb25LZXlDaGFpbiB9ID0gYXdhaXQgRUNEU0FVdGlscy5nZXRNcGNWMlJlY292ZXJ5S2V5U2hhcmVzKFxuICAgICAgICAgIHVzZXJLZXksXG4gICAgICAgICAgYmFja3VwS2V5LFxuICAgICAgICAgIHBhcmFtcy53YWxsZXRQYXNzcGhyYXNlLFxuICAgICAgICAgIHRoaXMuYml0Z29cbiAgICAgICAgKSk7XG4gICAgICAgIHB1YmxpY0tleSA9IE1QQy5kZXJpdmVVbmhhcmRlbmVkKGNvbW1vbktleUNoYWluLCBST09UX1BBVEgpLnNsaWNlKDAsIDY2KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnN0IGJpdGdvS2V5ID0gcGFyYW1zLmJpdGdvS2V5O1xuICAgICAgICBpZiAoIWJpdGdvS2V5KSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdtaXNzaW5nIGJpdGdvS2V5Jyk7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBoZFRyZWUgPSBuZXcgbXBjLlNlY3AyNTZrMUJpcDMySGRUcmVlKCk7XG4gICAgICAgIGNvbnN0IGRlcml2YXRpb25QYXRoID0gJ20vMCc7XG4gICAgICAgIGNvbnN0IGRlcml2ZWRQdWIgPSBoZFRyZWUucHVibGljRGVyaXZlKFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHBrOiBtcGMuYmlnSW50RnJvbUJ1ZmZlckJFKEJ1ZmZlci5mcm9tKGJpdGdvS2V5LnNsaWNlKDAsIDY2KSwgJ2hleCcpKSxcbiAgICAgICAgICAgIGNoYWluY29kZTogbXBjLmJpZ0ludEZyb21CdWZmZXJCRShCdWZmZXIuZnJvbShiaXRnb0tleS5zbGljZSg2NiksICdoZXgnKSksXG4gICAgICAgICAgfSxcbiAgICAgICAgICBkZXJpdmF0aW9uUGF0aFxuICAgICAgICApO1xuXG4gICAgICAgIHB1YmxpY0tleSA9IG1wYy5iaWdJbnRUb0J1ZmZlckJFKGRlcml2ZWRQdWIucGspLnRvU3RyaW5nKCdoZXgnKTtcbiAgICAgIH1cblxuICAgICAgaWYgKCFwdWJsaWNLZXkpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdmYWlsZWQgdG8gZGVyaXZlIHB1YmxpYyBrZXknKTtcbiAgICAgIH1cblxuICAgICAgY29uc3Qgc2VuZGVyQWRkcmVzcyA9IHRoaXMuZ2V0QWRkcmVzc0Zyb21QdWJsaWNLZXkocHVibGljS2V5KTtcbiAgICAgIGNvbnN0IGJhbGFuY2UgPSBhd2FpdCB0aGlzLmdldEFjY291bnRCYWxhbmNlKHB1YmxpY0tleSk7XG4gICAgICBjb25zdCBmZWVEYXRhID0gYXdhaXQgdGhpcy5nZXRGZWVEYXRhKCk7XG4gICAgICBjb25zdCBhY3R1YWxCYWxhbmNlID0gYmFsYW5jZS5taW51cyhmZWVEYXRhKTtcbiAgICAgIGlmIChhY3R1YWxCYWxhbmNlLmlzTGVzc1RoYW5PckVxdWFsVG8oMCkpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdEaWQgbm90IGhhdmUgZW5vdWdoIGZ1bmRzIHRvIHJlY292ZXInKTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgZmFjdG9yeSA9IHRoaXMuZ2V0QnVpbGRlckZhY3RvcnkoKTtcbiAgICAgIGNvbnN0IHR4QnVpbGRlciA9IGZhY3RvcnkuZ2V0VHJhbnNmZXJCdWlsZGVyKCk7XG4gICAgICB0eEJ1aWxkZXIuc2VuZGVyKHNlbmRlckFkZHJlc3MsIHB1YmxpY0tleSBhcyBzdHJpbmcpO1xuICAgICAgdHhCdWlsZGVyLnJlY2VpdmVySWQocGFyYW1zLnJlY292ZXJ5RGVzdGluYXRpb24pO1xuICAgICAgdHhCdWlsZGVyLmFtb3VudChhY3R1YWxCYWxhbmNlLnRvU3RyaW5nKCkpO1xuICAgICAgaWYgKHBhcmFtcy5tZW1vICE9PSB1bmRlZmluZWQgJiYgdXRpbHMudmFsaWRhdGVNZW1vKHBhcmFtcy5tZW1vKSkge1xuICAgICAgICB0eEJ1aWxkZXIubWVtbyhOdW1iZXIocGFyYW1zLm1lbW8pKTtcbiAgICAgIH1cbiAgICAgIGF3YWl0IHR4QnVpbGRlci5idWlsZCgpO1xuICAgICAgaWYgKHR4QnVpbGRlci50cmFuc2FjdGlvbi5wYXlsb2Fkc0RhdGEucGF5bG9hZHMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignTWlzc2luZyBwYXlsb2FkcyB0byBnZW5lcmF0ZSBzaWduYXR1cmVzJyk7XG4gICAgICB9XG5cbiAgICAgIGlmIChpc1Vuc2lnbmVkU3dlZXApIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICB0eEhleDogdHhCdWlsZGVyLnRyYW5zYWN0aW9uLnVuc2lnbmVkVHJhbnNhY3Rpb24sXG4gICAgICAgICAgY29pbjogdGhpcy5nZXRDaGFpbigpLFxuICAgICAgICB9O1xuICAgICAgfVxuXG4gICAgICBjb25zdCBzaWduYXR1cmVzID0gYXdhaXQgdGhpcy5zaWduYXR1cmVzKFxuICAgICAgICB0eEJ1aWxkZXIudHJhbnNhY3Rpb24ucGF5bG9hZHNEYXRhLFxuICAgICAgICBwdWJsaWNLZXksXG4gICAgICAgIHVzZXJLZXlTaGFyZSxcbiAgICAgICAgYmFja3VwS2V5U2hhcmUsXG4gICAgICAgIGNvbW1vbktleUNoYWluXG4gICAgICApO1xuICAgICAgaWYgKCFzaWduYXR1cmVzIHx8IHNpZ25hdHVyZXMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignRmFpbGVkIHRvIGdlbmVyYXRlIHNpZ25hdHVyZXMnKTtcbiAgICAgIH1cbiAgICAgIHR4QnVpbGRlci50cmFuc2FjdGlvbi5hZGRTaWduYXR1cmUoc2lnbmF0dXJlcyk7XG4gICAgICB0eEJ1aWxkZXIuY29tYmluZSgpO1xuICAgICAgY29uc3QgYnJvYWRjYXN0YWJsZVR4biA9IHR4QnVpbGRlci50cmFuc2FjdGlvbi50b0Jyb2FkY2FzdEZvcm1hdCgpO1xuICAgICAgYXdhaXQgdGhpcy5icm9hZGNhc3RUcmFuc2FjdGlvbih7IHNlcmlhbGl6ZWRTaWduZWRUcmFuc2FjdGlvbjogYnJvYWRjYXN0YWJsZVR4biB9KTtcbiAgICAgIGNvbnN0IHR4SWQgPSB0eEJ1aWxkZXIudHJhbnNhY3Rpb24uaWQ7XG4gICAgICBjb25zdCByZWNvdmVyZWRUcmFuc2FjdGlvbjogUmVjb3ZlcnlUcmFuc2FjdGlvbiA9IHtcbiAgICAgICAgaWQ6IHR4SWQsXG4gICAgICAgIHR4OiBicm9hZGNhc3RhYmxlVHhuLFxuICAgICAgfTtcbiAgICAgIHJldHVybiByZWNvdmVyZWRUcmFuc2FjdGlvbjtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBFcnJvciBkdXJpbmcgSUNQIHJlY292ZXJ5OiAke2Vycm9yLm1lc3NhZ2UgfHwgZXJyb3J9YCk7XG4gICAgfVxuICB9XG5cbiAgLyoqIEBpbmhlcml0RG9jICovXG4gIGF1ZGl0RGVjcnlwdGVkS2V5KHsgbXVsdGlTaWdUeXBlLCBwcnYsIHB1YmxpY0tleSB9OiBBdWRpdERlY3J5cHRlZEtleVBhcmFtcykge1xuICAgIGlmIChtdWx0aVNpZ1R5cGUgIT09ICd0c3MnKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1Vuc3VwcG9ydGVkIG11bHRpc2lndHlwZSAnKTtcbiAgICB9XG4gICAgYXVkaXRFY2RzYVByaXZhdGVLZXkocHJ2IGFzIHN0cmluZywgcHVibGljS2V5IGFzIHN0cmluZyk7XG4gIH1cbn1cbiJdfQ==
|
|
421
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWNwLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2ljcC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxvREFBNEI7QUFDNUIsOENBd0J5QjtBQUN6Qiw0Q0FBaUY7QUFDakYsa0RBQStDO0FBQy9DLGtEQUEwQjtBQUMxQixnRUFBcUM7QUFDckMsbUNBQTBDO0FBQzFDLHdEQUEwQztBQUUxQyx1Q0FnQnFCO0FBQ3JCLCtFQUE0RTtBQUM1RSx3REFBZ0M7QUFDaEMsb0RBQTBEO0FBQzFELDZDQUEwQztBQUUxQzs7Ozs7O0dBTUc7QUFDSCxNQUFhLEdBQUksU0FBUSxtQkFBUTtJQUUvQixZQUFzQixLQUFnQixFQUFFLFdBQXVDO1FBQzdFLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUViLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUNqQixNQUFNLElBQUksS0FBSyxDQUFDLG9EQUFvRCxDQUFDLENBQUM7UUFDeEUsQ0FBQztRQUVELElBQUksQ0FBQyxZQUFZLEdBQUcsV0FBVyxDQUFDO0lBQ2xDLENBQUM7SUFFRCxNQUFNLENBQUMsY0FBYyxDQUFDLEtBQWdCLEVBQUUsV0FBdUM7UUFDN0UsT0FBTyxJQUFJLEdBQUcsQ0FBQyxLQUFLLEVBQUUsV0FBVyxDQUFDLENBQUM7SUFDckMsQ0FBQztJQUVELFFBQVE7UUFDTixPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7SUFFRCxZQUFZO1FBQ1YsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0lBRUQsU0FBUztRQUNQLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUM7SUFDbEMsQ0FBQztJQUVELFdBQVc7UUFDVCxPQUFPLG1CQUFtQixDQUFDO0lBQzdCLENBQUM7SUFFRCxhQUFhO1FBQ1gsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDLGFB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QUMsRUFBRSxDQUFDO1lBQ3RDLE1BQU0sb0JBQW9CLEdBQXdCO2dCQUNoRCxFQUFFLEVBQUUsSUFBSTtnQkFDUixFQUFFLEVBQUUsZ0JBQWdCO2FBQ3JCLENBQUM7WUFDRixPQUFPLG9CQUFvQixDQUFDO1FBQzlCLENBQUM7UUFBQyxPQUFPLEtBQUssRUFBRSxDQUFDO1lBQ2YsSUFBSSxLQUFLLFlBQVksZ0NBQXFCLElBQUksS0FBSyxZQUFZLGdDQUFxQixFQUFFLENBQUM7Z0JBQ3JGLE1BQU0sS0FBSyxDQUFDO1lBQ2QsQ0FBQztZQUNELE1BQU0sSUFBSSxLQUFLLENBQUMsOEJBQThCLEtBQUssQ0FBQyxPQUFPLElBQUksS0FBSyxFQUFFLENBQUMsQ0FBQztRQUMxRSxDQUFDO0lBQ0gsQ0FBQztJQUVELGtCQUFrQjtJQUNsQixpQkFBaUIsQ0FBQyxFQUFFLFlBQVksRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUEyQjtRQUN6RSxJQUFJLFlBQVksS0FBSyxLQUFLLEVBQUUsQ0FBQztZQUMzQixNQUFNLElBQUksS0FBSyxDQUFDLDJCQUEyQixDQUFDLENBQUM7UUFDL0MsQ0FBQztRQUNELElBQUEsa0NBQW9CLEVBQUMsR0FBYSxFQUFFLFNBQW1CLENBQUMsQ0FBQztJQUMzRCxDQUFDO0NBQ0Y7QUFuY0Qsa0JBbWNDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGFzc2VydCBmcm9tICdhc3NlcnQnO1xuaW1wb3J0IHtcbiAgQXVkaXREZWNyeXB0ZWRLZXlQYXJhbXMsXG4gIEJhc2VCcm9hZGNhc3RUcmFuc2FjdGlvbk9wdGlvbnMsXG4gIEJhc2VCcm9hZGNhc3RUcmFuc2FjdGlvblJlc3VsdCxcbiAgQmFzZUNvaW4sXG4gIEJpdEdvQmFzZSxcbiAgRWNkc2EsXG4gIEVDRFNBVXRpbHMsXG4gIEVudmlyb25tZW50cyxcbiAgRXJyb3JOb0lucHV0VG9SZWNvdmVyLFxuICBJbnZhbGlkQWRkcmVzc0Vycm9yLFxuICBLZXlQYWlyLFxuICBNUENBbGdvcml0aG0sXG4gIE11bHRpc2lnVHlwZSxcbiAgbXVsdGlzaWdUeXBlcyxcbiAgUGFyc2VkVHJhbnNhY3Rpb24sXG4gIFBhcnNlVHJhbnNhY3Rpb25PcHRpb25zLFxuICBSZWNvdmVyeVByb3ZpZGVyRXJyb3IsXG4gIFNpZ25lZFRyYW5zYWN0aW9uLFxuICBTaWduaW5nRXJyb3IsXG4gIFNpZ25UcmFuc2FjdGlvbk9wdGlvbnMsXG4gIFZlcmlmeVRyYW5zYWN0aW9uT3B0aW9ucyxcbiAgdmVyaWZ5TVBDV2FsbGV0QWRkcmVzcyxcbiAgVW5leHBlY3RlZEFkZHJlc3NFcnJvcixcbn0gZnJvbSAnQGJpdGdvL3Nkay1jb3JlJztcbmltcG9ydCB7IGNvaW5zLCBOZXR3b3JrVHlwZSwgQmFzZUNvaW4gYXMgU3RhdGljc0Jhc2VDb2luIH0gZnJvbSAnQGJpdGdvL3N0YXRpY3MnO1xuaW1wb3J0IHsgUHJpbmNpcGFsIH0gZnJvbSAnQGRmaW5pdHkvcHJpbmNpcGFsJztcbmltcG9ydCBheGlvcyBmcm9tICdheGlvcyc7XG5pbXBvcnQgQmlnTnVtYmVyIGZyb20gJ2JpZ251bWJlci5qcyc7XG5pbXBvcnQgeyBjcmVhdGVIYXNoLCBIYXNoIH0gZnJvbSAnY3J5cHRvJztcbmltcG9ydCAqIGFzIG1wYyBmcm9tICdAYml0Z28vc2RrLWxpYi1tcGMnO1xuXG5pbXBvcnQge1xuICBDdXJ2ZVR5cGUsXG4gIExFREdFUl9DQU5JU1RFUl9JRCxcbiAgVEVTVE5FVF9MRURHRVJfQ0FOSVNURVJfSUQsXG4gIFBheWxvYWRzRGF0YSxcbiAgUFVCTElDX05PREVfUkVRVUVTVF9FTkRQT0lOVCxcbiAgUHVibGljTm9kZVN1Ym1pdFJlc3BvbnNlLFxuICBSZWNvdmVyeU9wdGlvbnMsXG4gIFJlY292ZXJ5VHJhbnNhY3Rpb24sXG4gIFJPT1RfUEFUSCxcbiAgU2lnbmF0dXJlcyxcbiAgU2lnbmluZ1BheWxvYWQsXG4gIEljcFRyYW5zYWN0aW9uRXhwbGFuYXRpb24sXG4gIFRyYW5zYWN0aW9uSGV4UGFyYW1zLFxuICBUc3NWZXJpZnlJY3BBZGRyZXNzT3B0aW9ucyxcbiAgVW5zaWduZWRTd2VlcFJlY292ZXJ5VHJhbnNhY3Rpb24sXG59IGZyb20gJy4vbGliL2lmYWNlJztcbmltcG9ydCB7IFRyYW5zYWN0aW9uQnVpbGRlckZhY3RvcnkgfSBmcm9tICcuL2xpYi90cmFuc2FjdGlvbkJ1aWxkZXJGYWN0b3J5JztcbmltcG9ydCB1dGlscyBmcm9tICcuL2xpYi91dGlscyc7XG5pbXBvcnQgeyBhdWRpdEVjZHNhUHJpdmF0ZUtleSB9IGZyb20gJ0BiaXRnby9zZGstbGliLW1wYyc7XG5pbXBvcnQgeyBJY3BBZ2VudCB9IGZyb20gJy4vbGliL2ljcEFnZW50JztcblxuLyoqXG4gKiBDbGFzcyByZXByZXNlbnRpbmcgdGhlIEludGVybmV0IENvbXB1dGVyIChJQ1ApIGNvaW4uXG4gKiBFeHRlbmRzIHRoZSBCYXNlQ29pbiBjbGFzcyBhbmQgcHJvdmlkZXMgc3BlY2lmaWMgaW1wbGVtZW50YXRpb25zIGZvciBJQ1AuXG4gKlxuICogQHNlZSB7QGxpbmsgaHR0cHM6Ly9pbnRlcm5ldGNvbXB1dGVyLm9yZy99XG4gKiBAc2VlIHtAbGluayBodHRwczovL2ludGVybmV0Y29tcHV0ZXIub3JnL2RvY3MvY3VycmVudC9kZXZlbG9wZXItZG9jcy9kZWZpL3Jvc2V0dGEvaWNwX3Jvc2V0dGEvZGF0YV9hcGkvfVxuICovXG5leHBvcnQgY2xhc3MgSWNwIGV4dGVuZHMgQmFzZUNvaW4ge1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgX3N0YXRpY3NDb2luOiBSZWFkb25seTxTdGF0aWNzQmFzZUNvaW4+O1xuICBwcm90ZWN0ZWQgY29uc3RydWN0b3IoYml0Z286IEJpdEdvQmFzZSwgc3RhdGljc0NvaW4/OiBSZWFkb25seTxTdGF0aWNzQmFzZUNvaW4+KSB7XG4gICAgc3VwZXIoYml0Z28pO1xuXG4gICAgaWYgKCFzdGF0aWNzQ29pbikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdtaXNzaW5nIHJlcXVpcmVkIGNvbnN0cnVjdG9yIHBhcmFtZXRlciBzdGF0aWNzQ29pbicpO1xuICAgIH1cblxuICAgIHRoaXMuX3N0YXRpY3NDb2luID0gc3RhdGljc0NvaW47XG4gIH1cblxuICBzdGF0aWMgY3JlYXRlSW5zdGFuY2UoYml0Z286IEJpdEdvQmFzZSwgc3RhdGljc0NvaW4/OiBSZWFkb25seTxTdGF0aWNzQmFzZUNvaW4+KTogQmFzZUNvaW4ge1xuICAgIHJldHVybiBuZXcgSWNwKGJpdGdvLCBzdGF0aWNzQ29pbik7XG4gIH1cblxuICBnZXRDaGFpbigpOiBzdHJpbmcge1xuICAgIHJldHVybiAnaWNwJztcbiAgfVxuXG4gIGdldEJhc2VDaGFpbigpOiBzdHJpbmcge1xuICAgIHJldHVybiAnaWNwJztcbiAgfVxuXG4gIGdldEZhbWlseSgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLl9zdGF0aWNzQ29pbi5mYW1pbHk7XG4gIH1cblxuICBnZXRGdWxsTmFtZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiAnSW50ZXJuZXQgQ29tcHV0ZXInO1xuICB9XG5cbiAgZ2V0QmFzZUZhY3RvcigpOiBudW1iZXIge1xuICAgIHJldHVybiBNYXRoLnBvdygxMCwgdGhpcy5fc3RhdGljc0NvaW4uZGVjaW1hbFBsYWNlcyk7XG4gIH1cblxuICBhc3luYyBleHBsYWluVHJhbnNhY3Rpb24ocGFyYW1zOiBUcmFuc2FjdGlvbkhleFBhcmFtcyk6IFByb21pc2U8SWNwVHJhbnNhY3Rpb25FeHBsYW5hdGlvbj4ge1xuICAgIGNvbnN0IGZhY3RvcnkgPSB0aGlzLmdldEJ1aWxkZXJGYWN0b3J5KCk7XG4gICAgY29uc3QgdHhCdWlsZGVyID0gYXdhaXQgZmFjdG9yeS5mcm9tKHBhcmFtcy50cmFuc2FjdGlvbkhleCk7XG4gICAgY29uc3QgdHJhbnNhY3Rpb24gPSBhd2FpdCB0eEJ1aWxkZXIuYnVpbGQoKTtcbiAgICBpZiAocGFyYW1zLnNpZ25hYmxlSGV4ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGNvbnN0IGdlbmVyYXRlZFNpZ25hYmxlSGV4ID0gdHhCdWlsZGVyLnRyYW5zYWN0aW9uLnBheWxvYWRzRGF0YS5wYXlsb2Fkc1swXS5oZXhfYnl0ZXM7XG4gICAgICBpZiAoZ2VuZXJhdGVkU2lnbmFibGVIZXggIT09IHBhcmFtcy5zaWduYWJsZUhleCkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ2dlbmVyYXRlZCBzaWduYWJsZUhleCBpcyBub3QgZXF1YWwgdG8gcGFyYW1zLnNpZ25hYmxlSGV4Jyk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB0cmFuc2FjdGlvbi5leHBsYWluVHJhbnNhY3Rpb24oKTtcbiAgfVxuXG4gIGFzeW5jIHZlcmlmeVRyYW5zYWN0aW9uKHBhcmFtczogVmVyaWZ5VHJhbnNhY3Rpb25PcHRpb25zKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgY29uc3QgeyB0eFBhcmFtcywgdHhQcmVidWlsZCB9ID0gcGFyYW1zO1xuICAgIGNvbnN0IHR4SGV4ID0gdHhQcmVidWlsZD8udHhIZXg7XG4gICAgaWYgKCF0eEhleCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCd0eEhleCBpcyByZXF1aXJlZCcpO1xuICAgIH1cbiAgICBjb25zdCB0eEhleFBhcmFtczogVHJhbnNhY3Rpb25IZXhQYXJhbXMgPSB7XG4gICAgICB0cmFuc2FjdGlvbkhleDogdHhIZXgsXG4gICAgfTtcblxuICAgIGlmICh0eFByZWJ1aWxkLnR4SW5mbyAmJiB0eFByZWJ1aWxkLnR4SW5mbyAhPT0gdW5kZWZpbmVkICYmIHR5cGVvZiB0eFByZWJ1aWxkLnR4SW5mbyA9PT0gJ3N0cmluZycpIHtcbiAgICAgIHR4SGV4UGFyYW1zLnNpZ25hYmxlSGV4ID0gdHhQcmVidWlsZC50eEluZm87XG4gICAgfVxuXG4gICAgY29uc3QgZXhwbGFpbmVkVHggPSBhd2FpdCB0aGlzLmV4cGxhaW5UcmFuc2FjdGlvbih0eEhleFBhcmFtcyk7XG5cbiAgICBpZiAoQXJyYXkuaXNBcnJheSh0eFBhcmFtcy5yZWNpcGllbnRzKSAmJiB0eFBhcmFtcy5yZWNpcGllbnRzLmxlbmd0aCA+IDApIHtcbiAgICAgIGlmICh0eFBhcmFtcy5yZWNpcGllbnRzLmxlbmd0aCA+IDEpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgIGAke3RoaXMuZ2V0Q2hhaW4oKX0gZG9lc24ndCBzdXBwb3J0IHNlbmRpbmcgdG8gbW9yZSB0aGFuIDEgZGVzdGluYXRpb24gYWRkcmVzcyB3aXRoaW4gYSBzaW5nbGUgdHJhbnNhY3Rpb24uIFRyeSBhZ2FpbiwgdXNpbmcgb25seSBhIHNpbmdsZSByZWNpcGllbnQuYFxuICAgICAgICApO1xuICAgICAgfVxuICAgICAgYXNzZXJ0KGV4cGxhaW5lZFR4Lm91dHB1dHMubGVuZ3RoID09PSAxLCAnVHggb3V0cHV0cyBkb2VzIG5vdCBtYXRjaCB3aXRoIGV4cGVjdGVkIHR4UGFyYW1zIHJlY2lwaWVudHMnKTtcblxuICAgICAgY29uc3Qgb3V0cHV0ID0gZXhwbGFpbmVkVHgub3V0cHV0c1swXTtcbiAgICAgIGNvbnN0IHJlY2lwaWVudCA9IHR4UGFyYW1zLnJlY2lwaWVudHNbMF07XG4gICAgICBjb25zdCByZWNpcGllbnRSb290QWRkcmVzcyA9XG4gICAgICAgIHR5cGVvZiByZWNpcGllbnQuYWRkcmVzcyA9PT0gJ3N0cmluZycgPyB1dGlscy52YWxpZGF0ZU1lbW9BbmRSZXR1cm5Sb290QWRkcmVzcyhyZWNpcGllbnQuYWRkcmVzcykgOiB1bmRlZmluZWQ7XG4gICAgICBhc3NlcnQoXG4gICAgICAgIHJlY2lwaWVudFJvb3RBZGRyZXNzICE9PSB1bmRlZmluZWQgJiZcbiAgICAgICAgICB0eXBlb2Ygb3V0cHV0LmFkZHJlc3MgPT09ICdzdHJpbmcnICYmXG4gICAgICAgICAgb3V0cHV0LmFkZHJlc3MgPT09IHJlY2lwaWVudFJvb3RBZGRyZXNzICYmXG4gICAgICAgICAgQmlnTnVtYmVyKG91dHB1dC5hbW91bnQpLmVxKEJpZ051bWJlcihyZWNpcGllbnQuYW1vdW50KSksXG4gICAgICAgICdUeCBvdXRwdXRzIGRvZXMgbm90IG1hdGNoIHdpdGggZXhwZWN0ZWQgdHhQYXJhbXMgcmVjaXBpZW50cydcbiAgICAgICk7XG4gICAgfVxuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgLyoqXG4gICAqIFZlcmlmeSB0aGF0IGFuIGFkZHJlc3MgYmVsb25ncyB0byB0aGlzIHdhbGxldC5cbiAgICpcbiAgICogQHBhcmFtIHtUc3NWZXJpZnlJY3BBZGRyZXNzT3B0aW9uc30gcGFyYW1zIC0gVmVyaWZpY2F0aW9uIHBhcmFtZXRlcnNcbiAgICogQHJldHVybnMge1Byb21pc2U8Ym9vbGVhbj59IFRydWUgaWYgYWRkcmVzcyBiZWxvbmdzIHRvIHdhbGxldFxuICAgKiBAdGhyb3dzIHtJbnZhbGlkQWRkcmVzc0Vycm9yfSBJZiBhZGRyZXNzIGZvcm1hdCBpcyBpbnZhbGlkIG9yIGRvZXNuJ3QgbWF0Y2ggZGVyaXZlZCBhZGRyZXNzXG4gICAqIEB0aHJvd3Mge0Vycm9yfSBJZiBpbnZhbGlkIHdhbGxldCB2ZXJzaW9uIG9yIG1pc3NpbmcgcGFyYW1ldGVyc1xuICAgKi9cbiAgYXN5bmMgaXNXYWxsZXRBZGRyZXNzKHBhcmFtczogVHNzVmVyaWZ5SWNwQWRkcmVzc09wdGlvbnMpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICBjb25zdCB7IGFkZHJlc3MsIHJvb3RBZGRyZXNzLCB3YWxsZXRWZXJzaW9uIH0gPSBwYXJhbXM7XG5cbiAgICBpZiAoIXRoaXMuaXNWYWxpZEFkZHJlc3MoYWRkcmVzcykpIHtcbiAgICAgIHRocm93IG5ldyBJbnZhbGlkQWRkcmVzc0Vycm9yKGBpbnZhbGlkIGFkZHJlc3M6ICR7YWRkcmVzc31gKTtcbiAgICB9XG5cbiAgICBsZXQgYWRkcmVzc1RvVmVyaWZ5ID0gYWRkcmVzcztcbiAgICBpZiAod2FsbGV0VmVyc2lvbiA9PT0gMSkge1xuICAgICAgaWYgKCFyb290QWRkcmVzcykge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ3Jvb3RBZGRyZXNzIGlzIHJlcXVpcmVkIGZvciB3YWxsZXQgdmVyc2lvbiAxJyk7XG4gICAgICB9XG4gICAgICBjb25zdCBleHRyYWN0ZWRSb290QWRkcmVzcyA9IHV0aWxzLnZhbGlkYXRlTWVtb0FuZFJldHVyblJvb3RBZGRyZXNzKGFkZHJlc3MpO1xuICAgICAgaWYgKCFleHRyYWN0ZWRSb290QWRkcmVzcyB8fCBleHRyYWN0ZWRSb290QWRkcmVzcyA9PT0gYWRkcmVzcykge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ21lbW9JZCBpcyByZXF1aXJlZCBmb3Igd2FsbGV0IHZlcnNpb24gMSBhZGRyZXNzZXMnKTtcbiAgICAgIH1cbiAgICAgIC8vIEluIHRoZSB3YWxsZXQuY3JlYXRlQWRkcmVzcygpIHZlcmlmaWNhdGlvbiBmbG93LCByb290QWRkcmVzcyBpcyB0aGUgd2FsbGV0J3NcbiAgICAgIC8vIG1lbW8tc3VmZml4ZWQgcmVjZWl2ZUFkZHJlc3MgKGUuZy4gJ3Jvb3Q/bWVtb0lkPTMnKSBmb3IgbWVtby1iYXNlZCAod2FsbGV0VmVyc2lvbiAxKVxuICAgICAgLy8gd2FsbGV0cy4gU3RyaXAgdGhlIG1lbW8gc28gYmFyZSByb290cyBhcmUgY29tcGFyZWQgYW5kIHRoZSBiYXJlIHJvb3QgaXNcbiAgICAgIC8vIHdoYXQgZ2V0cyBrZXktdmVyaWZpZWQgYnkgdmVyaWZ5TVBDV2FsbGV0QWRkcmVzcy5cbiAgICAgIGNvbnN0IHdhbGxldFJvb3RBZGRyZXNzID0gdXRpbHMudmFsaWRhdGVNZW1vQW5kUmV0dXJuUm9vdEFkZHJlc3Mocm9vdEFkZHJlc3MpO1xuICAgICAgaWYgKCF3YWxsZXRSb290QWRkcmVzcyB8fCBleHRyYWN0ZWRSb290QWRkcmVzcy50b0xvd2VyQ2FzZSgpICE9PSB3YWxsZXRSb290QWRkcmVzcy50b0xvd2VyQ2FzZSgpKSB7XG4gICAgICAgIHRocm93IG5ldyBVbmV4cGVjdGVkQWRkcmVzc0Vycm9yKFxuICAgICAgICAgIGBhZGRyZXNzIHZhbGlkYXRpb24gZmFpbHVyZTogZXhwZWN0ZWQgJHt3YWxsZXRSb290QWRkcmVzc30gYnV0IGdvdCAke2V4dHJhY3RlZFJvb3RBZGRyZXNzfWBcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICAgIGFkZHJlc3NUb1ZlcmlmeSA9IHdhbGxldFJvb3RBZGRyZXNzO1xuICAgIH1cblxuICAgIGNvbnN0IGluZGV4VG9WZXJpZnkgPSB3YWxsZXRWZXJzaW9uID09PSAxID8gMCA6IHBhcmFtcy5pbmRleDtcbiAgICBjb25zdCByZXN1bHQgPSBhd2FpdCB2ZXJpZnlNUENXYWxsZXRBZGRyZXNzKFxuICAgICAgeyAuLi5wYXJhbXMsIGFkZHJlc3M6IGFkZHJlc3NUb1ZlcmlmeSwgaW5kZXg6IGluZGV4VG9WZXJpZnksIGtleUN1cnZlOiAnc2VjcDI1NmsxJyB9LFxuICAgICAgdGhpcy5pc1ZhbGlkQWRkcmVzcy5iaW5kKHRoaXMpLFxuICAgICAgKHB1YktleSkgPT4gdXRpbHMuZ2V0QWRkcmVzc0Zyb21QdWJsaWNLZXkocHViS2V5KVxuICAgICk7XG5cbiAgICBpZiAoIXJlc3VsdCkge1xuICAgICAgdGhyb3cgbmV3IFVuZXhwZWN0ZWRBZGRyZXNzRXJyb3IoXG4gICAgICAgIGBhZGRyZXNzIHZhbGlkYXRpb24gZmFpbHVyZTogYWRkcmVzcyAke2FkZHJlc3NUb1ZlcmlmeX0gaXMgbm90IGEgd2FsbGV0IGFkZHJlc3NgXG4gICAgICApO1xuICAgIH1cblxuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgYXN5bmMgcGFyc2VUcmFuc2FjdGlvbihwYXJhbXM6IFBhcnNlVHJhbnNhY3Rpb25PcHRpb25zKTogUHJvbWlzZTxQYXJzZWRUcmFuc2FjdGlvbj4ge1xuICAgIHJldHVybiB7fTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZW5lcmF0ZSBhIG5ldyBrZXlwYWlyIGZvciB0aGlzIGNvaW4uXG4gICAqIEBwYXJhbSBzZWVkIFNlZWQgZnJvbSB3aGljaCB0aGUgbmV3IGtleXBhaXIgc2hvdWxkIGJlIGdlbmVyYXRlZCwgb3RoZXJ3aXNlIGEgcmFuZG9tIHNlZWQgaXMgdXNlZFxuICAgKi9cbiAgcHVibGljIGdlbmVyYXRlS2V5UGFpcihzZWVkPzogQnVmZmVyKTogS2V5UGFpciB7XG4gICAgcmV0dXJuIHV0aWxzLmdlbmVyYXRlS2V5UGFpcihzZWVkKTtcbiAgfVxuXG4gIGlzVmFsaWRBZGRyZXNzKGFkZHJlc3M6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB1dGlscy5pc1ZhbGlkQWRkcmVzcyhhZGRyZXNzKTtcbiAgfVxuXG4gIGFzeW5jIHNpZ25UcmFuc2FjdGlvbihcbiAgICBwYXJhbXM6IFNpZ25UcmFuc2FjdGlvbk9wdGlvbnMgJiB7IHR4UHJlYnVpbGQ6IHsgdHhIZXg6IHN0cmluZyB9OyBwcnY6IHN0cmluZyB9XG4gICk6IFByb21pc2U8U2lnbmVkVHJhbnNhY3Rpb24+IHtcbiAgICBjb25zdCB0eEhleCA9IHBhcmFtcz8udHhQcmVidWlsZD8udHhIZXg7XG4gICAgY29uc3QgcHJpdmF0ZUtleSA9IHBhcmFtcz8ucHJ2O1xuICAgIGlmICghdHhIZXgpIHtcbiAgICAgIHRocm93IG5ldyBTaWduaW5nRXJyb3IoJ21pc3NpbmcgcmVxdWlyZWQgdHhQcmVidWlsZCBwYXJhbWV0ZXI6IHBhcmFtcy50eFByZWJ1aWxkLnR4SGV4Jyk7XG4gICAgfVxuICAgIGlmICghcHJpdmF0ZUtleSkge1xuICAgICAgdGhyb3cgbmV3IFNpZ25pbmdFcnJvcignbWlzc2luZyByZXF1aXJlZCBwcnYgcGFyYW1ldGVyOiBwYXJhbXMucHJ2Jyk7XG4gICAgfVxuICAgIGNvbnN0IGZhY3RvcnkgPSB0aGlzLmdldEJ1aWxkZXJGYWN0b3J5KCk7XG4gICAgY29uc3QgdHhCdWlsZGVyID0gYXdhaXQgZmFjdG9yeS5mcm9tKHBhcmFtcy50eFByZWJ1aWxkLnR4SGV4KTtcbiAgICB0eEJ1aWxkZXIuc2lnbih7IGtleTogcGFyYW1zLnBydiB9KTtcbiAgICB0eEJ1aWxkZXIuY29tYmluZSgpO1xuICAgIGNvbnN0IHNlcmlhbGl6ZWRUeCA9IHR4QnVpbGRlci50cmFuc2FjdGlvbi50b0Jyb2FkY2FzdEZvcm1hdCgpO1xuICAgIHJldHVybiB7XG4gICAgICB0eEhleDogc2VyaWFsaXplZFR4LFxuICAgIH07XG4gIH1cblxuICBpc1ZhbGlkUHViKGtleTogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHV0aWxzLmlzVmFsaWRQdWJsaWNLZXkoa2V5KTtcbiAgfVxuXG4gIGlzVmFsaWRQcnYoa2V5OiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdXRpbHMuaXNWYWxpZFByaXZhdGVLZXkoa2V5KTtcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdERvYyAqL1xuICBzdXBwb3J0c1RzcygpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIC8qKiBpbmhlcml0ZWQgZG9jICovXG4gIGdldERlZmF1bHRNdWx0aXNpZ1R5cGUoKTogTXVsdGlzaWdUeXBlIHtcbiAgICByZXR1cm4gbXVsdGlzaWdUeXBlcy50c3M7XG4gIH1cblxuICAvKiogQGluaGVyaXREb2MgKi9cbiAgZ2V0TVBDQWxnb3JpdGhtKCk6IE1QQ0FsZ29yaXRobSB7XG4gICAgcmV0dXJuICdlY2RzYSc7XG4gIH1cblxuICAvKiogQGluaGVyaXREb2MgKiovXG4gIGdldEhhc2hGdW5jdGlvbigpOiBIYXNoIHtcbiAgICByZXR1cm4gY3JlYXRlSGFzaCgnc2hhMjU2Jyk7XG4gIH1cblxuICBwcml2YXRlIGdldEFkZHJlc3NGcm9tUHVibGljS2V5KGhleEVuY29kZWRQdWJsaWNLZXk6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHV0aWxzLmdldEFkZHJlc3NGcm9tUHVibGljS2V5KGhleEVuY29kZWRQdWJsaWNLZXkpO1xuICB9XG5cbiAgLyoqIEBpbmhlcml0RG9jICoqL1xuICBwcm90ZWN0ZWQgZ2V0UHVibGljTm9kZVVybCgpOiBzdHJpbmcge1xuICAgIHJldHVybiBFbnZpcm9ubWVudHNbdGhpcy5iaXRnby5nZXRFbnYoKV0uaWNwTm9kZVVybDtcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdERvYyAqKi9cbiAgLy8gdGhpcyBtZXRob2QgY2FsbHMgdGhlIHB1YmxpYyBub2RlIHRvIGJyb2FkY2FzdCB0aGUgdHJhbnNhY3Rpb24gYW5kIG5vdCB0aGUgcm9zZXR0YSBub2RlXG4gIHB1YmxpYyBhc3luYyBicm9hZGNhc3RUcmFuc2FjdGlvbihwYXlsb2FkOiBCYXNlQnJvYWRjYXN0VHJhbnNhY3Rpb25PcHRpb25zKTogUHJvbWlzZTxCYXNlQnJvYWRjYXN0VHJhbnNhY3Rpb25SZXN1bHQ+IHtcbiAgICBjb25zdCBlbmRwb2ludCA9IHRoaXMuZ2V0UHVibGljTm9kZUJyb2FkY2FzdEVuZHBvaW50KCk7XG5cbiAgICB0cnkge1xuICAgICAgY29uc3QgYm9keUJ5dGVzID0gdXRpbHMuYmxvYkZyb21IZXgocGF5bG9hZC5zZXJpYWxpemVkU2lnbmVkVHJhbnNhY3Rpb24pO1xuICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBheGlvcy5wb3N0KGVuZHBvaW50LCBib2R5Qnl0ZXMsIHtcbiAgICAgICAgaGVhZGVyczogeyAnQ29udGVudC1UeXBlJzogJ2FwcGxpY2F0aW9uL2Nib3InIH0sXG4gICAgICAgIHJlc3BvbnNlVHlwZTogJ2FycmF5YnVmZmVyJywgLy8gVGhpcyBlbnN1cmVzIHlvdSBnZXQgYSBCdWZmZXIsIG5vdCBhIHN0cmluZ1xuICAgICAgfSk7XG5cbiAgICAgIGlmIChyZXNwb25zZS5zdGF0dXMgIT09IDIwMCkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFRyYW5zYWN0aW9uIGJyb2FkY2FzdCBmYWlsZWQgd2l0aCBzdGF0dXM6ICR7cmVzcG9uc2Uuc3RhdHVzfSAtICR7cmVzcG9uc2Uuc3RhdHVzVGV4dH1gKTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgZGVjb2RlZFJlc3BvbnNlID0gdXRpbHMuY2JvckRlY29kZShyZXNwb25zZS5kYXRhKSBhcyBQdWJsaWNOb2RlU3VibWl0UmVzcG9uc2U7XG5cbiAgICAgIGlmIChkZWNvZGVkUmVzcG9uc2Uuc3RhdHVzID09PSAncmVwbGllZCcpIHtcbiAgICAgICAgLy8gaXQgaXMgY29uc2lkZXJlZCBhIHN1Y2Nlc3MgYmVjYXVzZSBJQ1AgcmV0dXJucyByZXNwb25zZSBpbiBhIENCT1IgbWFwIHdpdGggYSBzdGF0dXMgb2YgJ3JlcGxpZWQnXG4gICAgICAgIHJldHVybiB7fTsgLy8gcmV0dXJuZWQgZW1wdHkgb2JqZWN0IGFzIElDUCBkb2VzIG5vdCByZXR1cm4gYSB0eGlkXG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFVuZXhwZWN0ZWQgcmVzcG9uc2Ugc3RhdHVzIGZyb20gbm9kZTogJHtkZWNvZGVkUmVzcG9uc2Uuc3RhdHVzfWApO1xuICAgICAgfVxuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYFRyYW5zYWN0aW9uIGJyb2FkY2FzdCBlcnJvcjogJHtlcnJvcj8ubWVzc2FnZSB8fCBKU09OLnN0cmluZ2lmeShlcnJvcil9YCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBnZXRQdWJsaWNOb2RlQnJvYWRjYXN0RW5kcG9pbnQoKTogc3RyaW5nIHtcbiAgICBjb25zdCBub2RlVXJsID0gdGhpcy5nZXRQdWJsaWNOb2RlVXJsKCk7XG4gICAgY29uc3QgbGVkZ2VyQ2FuaXN0ZXJJZCA9XG4gICAgICB0aGlzLl9zdGF0aWNzQ29pbi5uZXR3b3JrLnR5cGUgPT09IE5ldHdvcmtUeXBlLlRFU1RORVQgPyBURVNUTkVUX0xFREdFUl9DQU5JU1RFUl9JRCA6IExFREdFUl9DQU5JU1RFUl9JRDtcbiAgICBjb25zdCBwcmluY2lwYWwgPSBQcmluY2lwYWwuZnJvbVVpbnQ4QXJyYXkobGVkZ2VyQ2FuaXN0ZXJJZCk7XG4gICAgY29uc3QgY2FuaXN0ZXJJZEhleCA9IHByaW5jaXBhbC50b1RleHQoKTtcbiAgICBjb25zdCBlbmRwb2ludCA9IGAke25vZGVVcmx9JHtQVUJMSUNfTk9ERV9SRVFVRVNUX0VORFBPSU5UfSR7Y2FuaXN0ZXJJZEhleH0vY2FsbGA7XG4gICAgcmV0dXJuIGVuZHBvaW50O1xuICB9XG5cbiAgLyoqXG4gICAqIEZldGNoZXMgdGhlIGFjY291bnQgYmFsYW5jZSBmb3IgYSBnaXZlbiBwdWJsaWMga2V5LlxuICAgKiBAcGFyYW0gcHVibGljS2V5SGV4IC0gSGV4LWVuY29kZWQgcHVibGljIGtleSBvZiB0aGUgYWNjb3VudC5cbiAgICogQHJldHVybnMgUHJvbWlzZSByZXNvbHZpbmcgdG8gdGhlIGFjY291bnQgYmFsYW5jZSBhcyBhIHN0cmluZy5cbiAgICogQHRocm93cyBFcnJvciBpZiB0aGUgYmFsYW5jZSBjb3VsZCBub3QgYmUgZmV0Y2hlZC5cbiAgICovXG4gIHByb3RlY3RlZCBhc3luYyBnZXRBY2NvdW50QmFsYW5jZShwdWJsaWNLZXlIZXg6IHN0cmluZyk6IFByb21pc2U8QmlnTnVtYmVyPiB7XG4gICAgY29uc3QgcHJpbmNpcGFsSWQgPSB1dGlscy5nZXRQcmluY2lwYWxJZEZyb21QdWJsaWNLZXkocHVibGljS2V5SGV4KS50b1RleHQoKTtcbiAgICBjb25zdCBhZ2VudCA9IG5ldyBJY3BBZ2VudCh0aGlzLmdldFB1YmxpY05vZGVVcmwoKSwgdGhpcy5fc3RhdGljc0NvaW4pO1xuICAgIHJldHVybiBhZ2VudC5nZXRCYWxhbmNlKHByaW5jaXBhbElkKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXRyaWV2ZXMgdGhlIGN1cnJlbnQgdHJhbnNhY3Rpb24gZmVlIGRhdGEgZnJvbSB0aGUgSUNQIHB1YmxpYyBub2RlLlxuICAgKlxuICAgKiBUaGlzIG1ldGhvZCBjcmVhdGVzIGFuIGluc3RhbmNlIG9mIGBJY3BBZ2VudGAgdXNpbmcgdGhlIHB1YmxpYyBub2RlIFVSTCxcbiAgICogdGhlbiBxdWVyaWVzIHRoZSBub2RlIGZvciB0aGUgY3VycmVudCBmZWUgaW5mb3JtYXRpb24uXG4gICAqXG4gICAqIEByZXR1cm5zIEEgcHJvbWlzZSB0aGF0IHJlc29sdmVzIHRvIGEgYEJpZ051bWJlcmAgcmVwcmVzZW50aW5nIHRoZSBjdXJyZW50IHRyYW5zYWN0aW9uIGZlZS5cbiAgICogQHRocm93cyBXaWxsIHByb3BhZ2F0ZSBhbnkgZXJyb3JzIGVuY291bnRlcmVkIHdoaWxlIGNvbW11bmljYXRpbmcgd2l0aCB0aGUgSUNQIG5vZGUuXG4gICAqL1xuICBwcm90ZWN0ZWQgYXN5bmMgZ2V0RmVlRGF0YSgpOiBQcm9taXNlPEJpZ051bWJlcj4ge1xuICAgIGNvbnN0IGFnZW50ID0gbmV3IEljcEFnZW50KHRoaXMuZ2V0UHVibGljTm9kZVVybCgpLCB0aGlzLl9zdGF0aWNzQ29pbik7XG4gICAgcmV0dXJuIGF3YWl0IGFnZW50LmdldEZlZSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRCdWlsZGVyRmFjdG9yeSgpOiBUcmFuc2FjdGlvbkJ1aWxkZXJGYWN0b3J5IHtcbiAgICByZXR1cm4gbmV3IFRyYW5zYWN0aW9uQnVpbGRlckZhY3RvcnkoY29pbnMuZ2V0KHRoaXMuZ2V0QmFzZUNoYWluKCkpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZW5lcmF0ZXMgYW4gYXJyYXkgb2Ygc2lnbmF0dXJlcyBmb3IgdGhlIHByb3ZpZGVkIHBheWxvYWRzIHVzaW5nIE1QQ1xuICAgKlxuICAgKiBAcGFyYW0gcGF5bG9hZHNEYXRhIC0gVGhlIGRhdGEgY29udGFpbmluZyB0aGUgcGF5bG9hZHMgdG8gYmUgc2lnbmVkLlxuICAgKiBAcGFyYW0gc2VuZGVyUHVibGljS2V5IC0gVGhlIHB1YmxpYyBrZXkgb2YgdGhlIHNlbmRlciBpbiBoZXhhZGVjaW1hbCBmb3JtYXQuXG4gICAqIEBwYXJhbSB1c2VyS2V5U2hhcmUgLSBUaGUgdXNlcidzIGtleSBzaGFyZSBhcyBhIEJ1ZmZlci5cbiAgICogQHBhcmFtIGJhY2t1cEtleVNoYXJlIC0gVGhlIGJhY2t1cCBrZXkgc2hhcmUgYXMgYSBCdWZmZXIuXG4gICAqIEBwYXJhbSBjb21tb25LZXlDaGFpbiAtIFRoZSBjb21tb24ga2V5IGNoYWluIGlkZW50aWZpZXIgdXNlZCBmb3IgTVBDIHNpZ25pbmcuXG4gICAqIEByZXR1cm5zIEEgcHJvbWlzZSB0aGF0IHJlc29sdmVzIHRvIGFuIGFycmF5IG9mIGBTaWduYXR1cmVzYCBvYmplY3RzLCBlYWNoIGNvbnRhaW5pbmcgdGhlIHNpZ25pbmcgcGF5bG9hZCxcbiAgICogICAgICAgICAgc2lnbmF0dXJlIHR5cGUsIHB1YmxpYyBrZXksIGFuZCB0aGUgZ2VuZXJhdGVkIHNpZ25hdHVyZSBpbiBoZXhhZGVjaW1hbCBmb3JtYXQuXG4gICAqL1xuICBhc3luYyBzaWduYXR1cmVzKFxuICAgIHBheWxvYWRzRGF0YTogUGF5bG9hZHNEYXRhLFxuICAgIHNlbmRlclB1YmxpY0tleTogc3RyaW5nLFxuICAgIHVzZXJLZXlTaGFyZTogQnVmZmVyPEFycmF5QnVmZmVyTGlrZT4sXG4gICAgYmFja3VwS2V5U2hhcmU6IEJ1ZmZlcjxBcnJheUJ1ZmZlckxpa2U+LFxuICAgIGNvbW1vbktleUNoYWluOiBzdHJpbmdcbiAgKTogUHJvbWlzZTxTaWduYXR1cmVzW10+IHtcbiAgICB0cnkge1xuICAgICAgY29uc3QgcGF5bG9hZCA9IHBheWxvYWRzRGF0YS5wYXlsb2Fkc1swXSBhcyBTaWduaW5nUGF5bG9hZDtcbiAgICAgIGNvbnN0IG1lc3NhZ2UgPSBCdWZmZXIuZnJvbShwYXlsb2FkLmhleF9ieXRlcywgJ2hleCcpO1xuICAgICAgY29uc3QgbWVzc2FnZUhhc2ggPSBjcmVhdGVIYXNoKCdzaGEyNTYnKS51cGRhdGUobWVzc2FnZSkuZGlnZXN0KCk7XG4gICAgICBjb25zdCBzaWduYXR1cmUgPSBhd2FpdCBFQ0RTQVV0aWxzLnNpZ25SZWNvdmVyeU1wY1YyKG1lc3NhZ2VIYXNoLCB1c2VyS2V5U2hhcmUsIGJhY2t1cEtleVNoYXJlLCBjb21tb25LZXlDaGFpbik7XG4gICAgICBjb25zdCBzaWduYXR1cmVQYXlsb2FkOiBTaWduYXR1cmVzID0ge1xuICAgICAgICBzaWduaW5nX3BheWxvYWQ6IHBheWxvYWQsXG4gICAgICAgIHNpZ25hdHVyZV90eXBlOiBwYXlsb2FkLnNpZ25hdHVyZV90eXBlLFxuICAgICAgICBwdWJsaWNfa2V5OiB7XG4gICAgICAgICAgaGV4X2J5dGVzOiBzZW5kZXJQdWJsaWNLZXksXG4gICAgICAgICAgY3VydmVfdHlwZTogQ3VydmVUeXBlLlNFQ1AyNTZLMSxcbiAgICAgICAgfSxcbiAgICAgICAgaGV4X2J5dGVzOiBzaWduYXR1cmUuciArIHNpZ25hdHVyZS5zLFxuICAgICAgfTtcblxuICAgICAgcmV0dXJuIFtzaWduYXR1cmVQYXlsb2FkXTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBFcnJvciBnZW5lcmF0aW5nIHNpZ25hdHVyZXM6ICR7ZXJyb3IubWVzc2FnZSB8fCBlcnJvcn1gKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQnVpbGRzIGEgZnVuZHMgcmVjb3ZlcnkgdHJhbnNhY3Rpb24gd2l0aG91dCBCaXRHb1xuICAgKiBAcGFyYW0gcGFyYW1zXG4gICAqL1xuICBhc3luYyByZWNvdmVyKHBhcmFtczogUmVjb3ZlcnlPcHRpb25zKTogUHJvbWlzZTxSZWNvdmVyeVRyYW5zYWN0aW9uIHwgVW5zaWduZWRTd2VlcFJlY292ZXJ5VHJhbnNhY3Rpb24+IHtcbiAgICB0cnkge1xuICAgICAgaWYgKCFwYXJhbXMucmVjb3ZlcnlEZXN0aW5hdGlvbiB8fCAhdGhpcy5pc1ZhbGlkQWRkcmVzcyhwYXJhbXMucmVjb3ZlcnlEZXN0aW5hdGlvbikpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdpbnZhbGlkIHJlY292ZXJ5RGVzdGluYXRpb24nKTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgaXNVbnNpZ25lZFN3ZWVwID0gIXBhcmFtcy51c2VyS2V5ICYmICFwYXJhbXMuYmFja3VwS2V5ICYmICFwYXJhbXMud2FsbGV0UGFzc3BocmFzZTtcblxuICAgICAgbGV0IHB1YmxpY0tleTogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICAgICAgbGV0IHVzZXJLZXlTaGFyZSwgYmFja3VwS2V5U2hhcmUsIGNvbW1vbktleUNoYWluO1xuICAgICAgY29uc3QgTVBDID0gbmV3IEVjZHNhKCk7XG5cbiAgICAgIGlmICghaXNVbnNpZ25lZFN3ZWVwKSB7XG4gICAgICAgIGlmICghcGFyYW1zLnVzZXJLZXkpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ21pc3NpbmcgdXNlcktleScpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCFwYXJhbXMuYmFja3VwS2V5KSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdtaXNzaW5nIGJhY2t1cEtleScpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCFwYXJhbXMud2FsbGV0UGFzc3BocmFzZSkge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcignbWlzc2luZyB3YWxsZXQgcGFzc3BocmFzZScpO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgdXNlcktleSA9IHBhcmFtcy51c2VyS2V5LnJlcGxhY2UoL1xccy9nLCAnJyk7XG4gICAgICAgIGNvbnN0IGJhY2t1cEtleSA9IHBhcmFtcy5iYWNrdXBLZXkucmVwbGFjZSgvXFxzL2csICcnKTtcblxuICAgICAgICAoeyB1c2VyS2V5U2hhcmUsIGJhY2t1cEtleVNoYXJlLCBjb21tb25LZXlDaGFpbiB9ID0gYXdhaXQgRUNEU0FVdGlscy5nZXRNcGNWMlJlY292ZXJ5S2V5U2hhcmVzKFxuICAgICAgICAgIHVzZXJLZXksXG4gICAgICAgICAgYmFja3VwS2V5LFxuICAgICAgICAgIHBhcmFtcy53YWxsZXRQYXNzcGhyYXNlLFxuICAgICAgICAgIHRoaXMuYml0Z29cbiAgICAgICAgKSk7XG4gICAgICAgIHB1YmxpY0tleSA9IE1QQy5kZXJpdmVVbmhhcmRlbmVkKGNvbW1vbktleUNoYWluLCBST09UX1BBVEgpLnNsaWNlKDAsIDY2KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnN0IGJpdGdvS2V5ID0gcGFyYW1zLmJpdGdvS2V5O1xuICAgICAgICBpZiAoIWJpdGdvS2V5KSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdtaXNzaW5nIGJpdGdvS2V5Jyk7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBoZFRyZWUgPSBuZXcgbXBjLlNlY3AyNTZrMUJpcDMySGRUcmVlKCk7XG4gICAgICAgIGNvbnN0IGRlcml2YXRpb25QYXRoID0gJ20vMCc7XG4gICAgICAgIGNvbnN0IGRlcml2ZWRQdWIgPSBoZFRyZWUucHVibGljRGVyaXZlKFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHBrOiBtcGMuYmlnSW50RnJvbUJ1ZmZlckJFKEJ1ZmZlci5mcm9tKGJpdGdvS2V5LnNsaWNlKDAsIDY2KSwgJ2hleCcpKSxcbiAgICAgICAgICAgIGNoYWluY29kZTogbXBjLmJpZ0ludEZyb21CdWZmZXJCRShCdWZmZXIuZnJvbShiaXRnb0tleS5zbGljZSg2NiksICdoZXgnKSksXG4gICAgICAgICAgfSxcbiAgICAgICAgICBkZXJpdmF0aW9uUGF0aFxuICAgICAgICApO1xuXG4gICAgICAgIHB1YmxpY0tleSA9IG1wYy5iaWdJbnRUb0J1ZmZlckJFKGRlcml2ZWRQdWIucGspLnRvU3RyaW5nKCdoZXgnKTtcbiAgICAgIH1cblxuICAgICAgaWYgKCFwdWJsaWNLZXkpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdmYWlsZWQgdG8gZGVyaXZlIHB1YmxpYyBrZXknKTtcbiAgICAgIH1cblxuICAgICAgY29uc3Qgc2VuZGVyQWRkcmVzcyA9IHRoaXMuZ2V0QWRkcmVzc0Zyb21QdWJsaWNLZXkocHVibGljS2V5KTtcbiAgICAgIGNvbnN0IGJhbGFuY2UgPSBhd2FpdCB0aGlzLmdldEFjY291bnRCYWxhbmNlKHB1YmxpY0tleSk7XG4gICAgICBjb25zdCBmZWVEYXRhID0gYXdhaXQgdGhpcy5nZXRGZWVEYXRhKCk7XG4gICAgICBpZiAoYmFsYW5jZS5pc0xlc3NUaGFuT3JFcXVhbFRvKDApKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvck5vSW5wdXRUb1JlY292ZXIoJ0RpZCBub3QgaGF2ZSBlbm91Z2ggZnVuZHMgdG8gcmVjb3ZlcicpO1xuICAgICAgfVxuICAgICAgY29uc3QgYWN0dWFsQmFsYW5jZSA9IGJhbGFuY2UubWludXMoZmVlRGF0YSk7XG4gICAgICBpZiAoYWN0dWFsQmFsYW5jZS5pc0xlc3NUaGFuT3JFcXVhbFRvKDApKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignRGlkIG5vdCBoYXZlIGVub3VnaCBmdW5kcyB0byByZWNvdmVyJyk7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGZhY3RvcnkgPSB0aGlzLmdldEJ1aWxkZXJGYWN0b3J5KCk7XG4gICAgICBjb25zdCB0eEJ1aWxkZXIgPSBmYWN0b3J5LmdldFRyYW5zZmVyQnVpbGRlcigpO1xuICAgICAgdHhCdWlsZGVyLnNlbmRlcihzZW5kZXJBZGRyZXNzLCBwdWJsaWNLZXkgYXMgc3RyaW5nKTtcbiAgICAgIHR4QnVpbGRlci5yZWNlaXZlcklkKHBhcmFtcy5yZWNvdmVyeURlc3RpbmF0aW9uKTtcbiAgICAgIHR4QnVpbGRlci5hbW91bnQoYWN0dWFsQmFsYW5jZS50b1N0cmluZygpKTtcbiAgICAgIGlmIChwYXJhbXMubWVtbyAhPT0gdW5kZWZpbmVkICYmIHV0aWxzLnZhbGlkYXRlTWVtbyhwYXJhbXMubWVtbykpIHtcbiAgICAgICAgdHhCdWlsZGVyLm1lbW8oTnVtYmVyKHBhcmFtcy5tZW1vKSk7XG4gICAgICB9XG4gICAgICBhd2FpdCB0eEJ1aWxkZXIuYnVpbGQoKTtcbiAgICAgIGlmICh0eEJ1aWxkZXIudHJhbnNhY3Rpb24ucGF5bG9hZHNEYXRhLnBheWxvYWRzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ01pc3NpbmcgcGF5bG9hZHMgdG8gZ2VuZXJhdGUgc2lnbmF0dXJlcycpO1xuICAgICAgfVxuXG4gICAgICBpZiAoaXNVbnNpZ25lZFN3ZWVwKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgdHhIZXg6IHR4QnVpbGRlci50cmFuc2FjdGlvbi51bnNpZ25lZFRyYW5zYWN0aW9uLFxuICAgICAgICAgIGNvaW46IHRoaXMuZ2V0Q2hhaW4oKSxcbiAgICAgICAgfTtcbiAgICAgIH1cblxuICAgICAgY29uc3Qgc2lnbmF0dXJlcyA9IGF3YWl0IHRoaXMuc2lnbmF0dXJlcyhcbiAgICAgICAgdHhCdWlsZGVyLnRyYW5zYWN0aW9uLnBheWxvYWRzRGF0YSxcbiAgICAgICAgcHVibGljS2V5LFxuICAgICAgICB1c2VyS2V5U2hhcmUsXG4gICAgICAgIGJhY2t1cEtleVNoYXJlLFxuICAgICAgICBjb21tb25LZXlDaGFpblxuICAgICAgKTtcbiAgICAgIGlmICghc2lnbmF0dXJlcyB8fCBzaWduYXR1cmVzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ZhaWxlZCB0byBnZW5lcmF0ZSBzaWduYXR1cmVzJyk7XG4gICAgICB9XG4gICAgICB0eEJ1aWxkZXIudHJhbnNhY3Rpb24uYWRkU2lnbmF0dXJlKHNpZ25hdHVyZXMpO1xuICAgICAgdHhCdWlsZGVyLmNvbWJpbmUoKTtcbiAgICAgIGNvbnN0IGJyb2FkY2FzdGFibGVUeG4gPSB0eEJ1aWxkZXIudHJhbnNhY3Rpb24udG9Ccm9hZGNhc3RGb3JtYXQoKTtcbiAgICAgIGF3YWl0IHRoaXMuYnJvYWRjYXN0VHJhbnNhY3Rpb24oeyBzZXJpYWxpemVkU2lnbmVkVHJhbnNhY3Rpb246IGJyb2FkY2FzdGFibGVUeG4gfSk7XG4gICAgICBjb25zdCB0eElkID0gdHhCdWlsZGVyLnRyYW5zYWN0aW9uLmlkO1xuICAgICAgY29uc3QgcmVjb3ZlcmVkVHJhbnNhY3Rpb246IFJlY292ZXJ5VHJhbnNhY3Rpb24gPSB7XG4gICAgICAgIGlkOiB0eElkLFxuICAgICAgICB0eDogYnJvYWRjYXN0YWJsZVR4bixcbiAgICAgIH07XG4gICAgICByZXR1cm4gcmVjb3ZlcmVkVHJhbnNhY3Rpb247XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGlmIChlcnJvciBpbnN0YW5jZW9mIFJlY292ZXJ5UHJvdmlkZXJFcnJvciB8fCBlcnJvciBpbnN0YW5jZW9mIEVycm9yTm9JbnB1dFRvUmVjb3Zlcikge1xuICAgICAgICB0aHJvdyBlcnJvcjtcbiAgICAgIH1cbiAgICAgIHRocm93IG5ldyBFcnJvcihgRXJyb3IgZHVyaW5nIElDUCByZWNvdmVyeTogJHtlcnJvci5tZXNzYWdlIHx8IGVycm9yfWApO1xuICAgIH1cbiAgfVxuXG4gIC8qKiBAaW5oZXJpdERvYyAqL1xuICBhdWRpdERlY3J5cHRlZEtleSh7IG11bHRpU2lnVHlwZSwgcHJ2LCBwdWJsaWNLZXkgfTogQXVkaXREZWNyeXB0ZWRLZXlQYXJhbXMpIHtcbiAgICBpZiAobXVsdGlTaWdUeXBlICE9PSAndHNzJykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdVbnN1cHBvcnRlZCBtdWx0aXNpZ3R5cGUgJyk7XG4gICAgfVxuICAgIGF1ZGl0RWNkc2FQcml2YXRlS2V5KHBydiBhcyBzdHJpbmcsIHB1YmxpY0tleSBhcyBzdHJpbmcpO1xuICB9XG59XG4iXX0=
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"icpAgent.d.ts","sourceRoot":"","sources":["../../../src/lib/icpAgent.ts"],"names":[],"mappings":"AAWA,OAAO,SAAS,MAAM,cAAc,CAAC;AACrC,OAAO,EAAe,QAAQ,IAAI,eAAe,EAAE,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"icpAgent.d.ts","sourceRoot":"","sources":["../../../src/lib/icpAgent.ts"],"names":[],"mappings":"AAWA,OAAO,SAAS,MAAM,cAAc,CAAC;AACrC,OAAO,EAAe,QAAQ,IAAI,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAG1E,qBAAa,QAAQ;IACnB,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAS;IAC9B,OAAO,CAAC,QAAQ,CAAC,WAAW,CAA4B;gBAE5C,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,QAAQ,CAAC,eAAe,CAAC;IAKhE;;;OAGG;IACH,OAAO,CAAC,WAAW;IAQnB;;;;;;;;OAQG;IACH,OAAO,CAAC,SAAS;IAQjB;;;;;OAKG;IACU,UAAU,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC;IAmBhE;;;;OAIG;IACU,MAAM,IAAI,OAAO,CAAC,SAAS,CAAC;CAmB1C"}
|
package/dist/src/lib/icpAgent.js
CHANGED
|
@@ -10,6 +10,7 @@ const utils_1 = __importDefault(require("./utils"));
|
|
|
10
10
|
const iface_1 = require("./iface");
|
|
11
11
|
const bignumber_js_1 = __importDefault(require("bignumber.js"));
|
|
12
12
|
const statics_1 = require("@bitgo/statics");
|
|
13
|
+
const sdk_core_1 = require("@bitgo/sdk-core");
|
|
13
14
|
class IcpAgent {
|
|
14
15
|
constructor(host, staticsCoin) {
|
|
15
16
|
this.host = host;
|
|
@@ -48,10 +49,10 @@ class IcpAgent {
|
|
|
48
49
|
* @throws Error if the balance could not be fetched.
|
|
49
50
|
*/
|
|
50
51
|
async getBalance(principalId) {
|
|
52
|
+
if (!principalId) {
|
|
53
|
+
throw new Error('Principal ID is required');
|
|
54
|
+
}
|
|
51
55
|
try {
|
|
52
|
-
if (!principalId) {
|
|
53
|
-
throw new Error('Principal ID is required');
|
|
54
|
-
}
|
|
55
56
|
const ledger = this.getLedger();
|
|
56
57
|
const account = {
|
|
57
58
|
owner: principal_1.Principal.fromText(principalId),
|
|
@@ -62,7 +63,7 @@ class IcpAgent {
|
|
|
62
63
|
}
|
|
63
64
|
catch (error) {
|
|
64
65
|
const errorMessage = error instanceof Error ? error.message : 'Unknown error';
|
|
65
|
-
throw new
|
|
66
|
+
throw new sdk_core_1.RecoveryProviderError(`Error fetching balance for principal ${principalId}: ${errorMessage}`, error);
|
|
66
67
|
}
|
|
67
68
|
}
|
|
68
69
|
/**
|
|
@@ -82,9 +83,9 @@ class IcpAgent {
|
|
|
82
83
|
}
|
|
83
84
|
catch (error) {
|
|
84
85
|
const errorMessage = error instanceof Error ? error.message : 'Unknown error';
|
|
85
|
-
throw new
|
|
86
|
+
throw new sdk_core_1.RecoveryProviderError(`Error fetching transaction fee: ${errorMessage}`, error);
|
|
86
87
|
}
|
|
87
88
|
}
|
|
88
89
|
}
|
|
89
90
|
exports.IcpAgent = IcpAgent;
|
|
90
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
91
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWNwQWdlbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL2ljcEFnZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLGtEQUErQztBQUMvQyw2QkFBd0Q7QUFDeEQsb0RBQTRCO0FBQzVCLG1DQU9pQjtBQUNqQixnRUFBcUM7QUFDckMsNENBQTBFO0FBQzFFLDhDQUF3RDtBQUV4RCxNQUFhLFFBQVE7SUFJbkIsWUFBWSxJQUFZLEVBQUUsV0FBc0M7UUFDOUQsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7UUFDakIsSUFBSSxDQUFDLFdBQVcsR0FBRyxXQUFXLENBQUM7SUFDakMsQ0FBQztJQUVEOzs7T0FHRztJQUNLLFdBQVc7UUFDakIsT0FBTyxJQUFJLGVBQVMsQ0FBQztZQUNuQixJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUk7WUFDZixLQUFLO1lBQ0wscUJBQXFCLEVBQUUsS0FBSztTQUM3QixDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQ7Ozs7Ozs7O09BUUc7SUFDSyxTQUFTO1FBQ2YsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQ2pDLE1BQU0sRUFBRSxHQUFHLElBQUEsYUFBTyxFQUFDLEtBQUssRUFBRSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBQzNDLE1BQU0sZ0JBQWdCLEdBQ3BCLElBQUksQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLElBQUksS0FBSyxxQkFBVyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsa0NBQTBCLENBQUMsQ0FBQyxDQUFDLDBCQUFrQixDQUFDO1FBQzFHLE9BQU8sRUFBRSxDQUFDLHFCQUFTLENBQUMsY0FBYyxDQUFDLGdCQUFnQixDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQztJQUNqRSxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSSxLQUFLLENBQUMsVUFBVSxDQUFDLFdBQW1CO1FBQ3pDLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUNqQixNQUFNLElBQUksS0FBSyxDQUFDLDBCQUEwQixDQUFDLENBQUM7UUFDOUMsQ0FBQztRQUNELElBQUksQ0FBQztZQUNILE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztZQUNoQyxNQUFNLE9BQU8sR0FBRztnQkFDZCxLQUFLLEVBQUUscUJBQVMsQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDO2dCQUN0QyxVQUFVLEVBQUUsQ0FBQyxlQUFLLENBQUMsVUFBVSxDQUFDLDBCQUFrQixDQUFDLENBQUM7YUFDbkQsQ0FBQztZQUVGLE1BQU0sT0FBTyxHQUFHLE1BQU0sTUFBTSxDQUFDLElBQUksQ0FBQyw0QkFBb0IsRUFBRSxPQUFPLENBQUMsQ0FBQztZQUNqRSxPQUFPLElBQUEsc0JBQVMsRUFBQyxPQUFPLENBQUMsQ0FBQztRQUM1QixDQUFDO1FBQUMsT0FBTyxLQUFLLEVBQUUsQ0FBQztZQUNmLE1BQU0sWUFBWSxHQUFHLEtBQUssWUFBWSxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLGVBQWUsQ0FBQztZQUM5RSxNQUFNLElBQUksZ0NBQXFCLENBQUMsd0NBQXdDLFdBQVcsS0FBSyxZQUFZLEVBQUUsRUFBRSxLQUFLLENBQUMsQ0FBQztRQUNqSCxDQUFDO0lBQ0gsQ0FBQztJQUVEOzs7O09BSUc7SUFDSSxLQUFLLENBQUMsTUFBTTtRQUNqQixJQUFJLENBQUM7WUFDSCxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7WUFDaEMsTUFBTSxRQUFRLEdBQUcsTUFBTSxNQUFNLENBQUMsSUFBSSxDQUFDLHFCQUFhLENBQUMsQ0FBQztZQUVsRCxNQUFNLFFBQVEsR0FBRyxRQUFRLENBQUMsSUFBSSxDQUM1QixDQUFDLEtBQUssRUFBc0MsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxxQkFBYSxJQUFJLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxHQUFHLEtBQUssU0FBUyxDQUN6RyxDQUFDO1lBRUYsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO2dCQUNkLE1BQU0sSUFBSSxLQUFLLENBQUMsR0FBRyxxQkFBYSx1Q0FBdUMsQ0FBQyxDQUFDO1lBQzNFLENBQUM7WUFFRCxPQUFPLElBQUEsc0JBQVMsRUFBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDcEMsQ0FBQztRQUFDLE9BQU8sS0FBSyxFQUFFLENBQUM7WUFDZixNQUFNLFlBQVksR0FBRyxLQUFLLFlBQVksS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxlQUFlLENBQUM7WUFDOUUsTUFBTSxJQUFJLGdDQUFxQixDQUFDLG1DQUFtQyxZQUFZLEVBQUUsRUFBRSxLQUFLLENBQUMsQ0FBQztRQUM1RixDQUFDO0lBQ0gsQ0FBQztDQUNGO0FBdkZELDRCQXVGQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFByaW5jaXBhbCB9IGZyb20gJ0BkZmluaXR5L3ByaW5jaXBhbCc7XG5pbXBvcnQgeyBIdHRwQWdlbnQsIHJlcGxpY2EsIEFnZW50Q2FuaXN0ZXIgfSBmcm9tICdpYzAnO1xuaW1wb3J0IHV0aWxzIGZyb20gJy4vdXRpbHMnO1xuaW1wb3J0IHtcbiAgQUNDT1VOVF9CQUxBTkNFX0NBTEwsXG4gIExFREdFUl9DQU5JU1RFUl9JRCxcbiAgVEVTVE5FVF9MRURHRVJfQ0FOSVNURVJfSUQsXG4gIElDUkMxX0ZFRV9LRVksXG4gIE1FVEFEQVRBX0NBTEwsXG4gIERFRkFVTFRfU1VCQUNDT1VOVCxcbn0gZnJvbSAnLi9pZmFjZSc7XG5pbXBvcnQgQmlnTnVtYmVyIGZyb20gJ2JpZ251bWJlci5qcyc7XG5pbXBvcnQgeyBOZXR3b3JrVHlwZSwgQmFzZUNvaW4gYXMgU3RhdGljc0Jhc2VDb2luIH0gZnJvbSAnQGJpdGdvL3N0YXRpY3MnO1xuaW1wb3J0IHsgUmVjb3ZlcnlQcm92aWRlckVycm9yIH0gZnJvbSAnQGJpdGdvL3Nkay1jb3JlJztcblxuZXhwb3J0IGNsYXNzIEljcEFnZW50IHtcbiAgcHJpdmF0ZSByZWFkb25seSBob3N0OiBzdHJpbmc7XG4gIHByaXZhdGUgcmVhZG9ubHkgc3RhdGljc0NvaW46IFJlYWRvbmx5PFN0YXRpY3NCYXNlQ29pbj47XG5cbiAgY29uc3RydWN0b3IoaG9zdDogc3RyaW5nLCBzdGF0aWNzQ29pbjogUmVhZG9ubHk8U3RhdGljc0Jhc2VDb2luPikge1xuICAgIHRoaXMuaG9zdCA9IGhvc3Q7XG4gICAgdGhpcy5zdGF0aWNzQ29pbiA9IHN0YXRpY3NDb2luO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYSBuZXcgSFRUUCBhZ2VudCBmb3IgY29tbXVuaWNhdGluZyB3aXRoIHRoZSBJbnRlcm5ldCBDb21wdXRlci5cbiAgICogQHJldHVybnMgQW4gaW5zdGFuY2Ugb2YgSHR0cEFnZW50LlxuICAgKi9cbiAgcHJpdmF0ZSBjcmVhdGVBZ2VudCgpOiBIdHRwQWdlbnQge1xuICAgIHJldHVybiBuZXcgSHR0cEFnZW50KHtcbiAgICAgIGhvc3Q6IHRoaXMuaG9zdCxcbiAgICAgIGZldGNoLFxuICAgICAgdmVyaWZ5UXVlcnlTaWduYXR1cmVzOiBmYWxzZSxcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXRyaWV2ZXMgYW4gaW5zdGFuY2Ugb2YgdGhlIGxlZGdlciBjYW5pc3RlciBhZ2VudC5cbiAgICpcbiAgICogVGhpcyBtZXRob2QgY3JlYXRlcyBhIG5ldyBhZ2VudCB1c2luZyBgY3JlYXRlQWdlbnQoKWAsIGluaXRpYWxpemVzIGEgcmVwbGljYSBpbnRlcmZhY2VcbiAgICogd2l0aCB0aGUgYWdlbnQgKGNvbmZpZ3VyZWQgZm9yIGxvY2FsIHVzZSksIGFuZCByZXR1cm5zIGFuIGBBZ2VudENhbmlzdGVyYCBpbnN0YW5jZVxuICAgKiBmb3IgdGhlIGxlZGdlciBjYW5pc3RlciBpZGVudGlmaWVkIGJ5IGBMRURHRVJfQ0FOSVNURVJfSURgLlxuICAgKlxuICAgKiBAcmV0dXJucyB7QWdlbnRDYW5pc3Rlcn0gQW4gYWdlbnQgaW50ZXJmYWNlIGZvciBpbnRlcmFjdGluZyB3aXRoIHRoZSBsZWRnZXIgY2FuaXN0ZXIuXG4gICAqL1xuICBwcml2YXRlIGdldExlZGdlcigpOiBBZ2VudENhbmlzdGVyIHtcbiAgICBjb25zdCBhZ2VudCA9IHRoaXMuY3JlYXRlQWdlbnQoKTtcbiAgICBjb25zdCBpYyA9IHJlcGxpY2EoYWdlbnQsIHsgbG9jYWw6IHRydWUgfSk7XG4gICAgY29uc3QgbGVkZ2VyQ2FuaXN0ZXJJZCA9XG4gICAgICB0aGlzLnN0YXRpY3NDb2luLm5ldHdvcmsudHlwZSA9PT0gTmV0d29ya1R5cGUuVEVTVE5FVCA/IFRFU1RORVRfTEVER0VSX0NBTklTVEVSX0lEIDogTEVER0VSX0NBTklTVEVSX0lEO1xuICAgIHJldHVybiBpYyhQcmluY2lwYWwuZnJvbVVpbnQ4QXJyYXkobGVkZ2VyQ2FuaXN0ZXJJZCkudG9UZXh0KCkpO1xuICB9XG5cbiAgLyoqXG4gICAqIEZldGNoZXMgdGhlIGFjY291bnQgYmFsYW5jZSBmb3IgYSBnaXZlbiBwcmluY2lwYWwgSUQuXG4gICAqIEBwYXJhbSBwcmluY2lwYWxJZCAtIFRoZSBwcmluY2lwYWwgSUQgb2YgdGhlIGFjY291bnQuXG4gICAqIEByZXR1cm5zIFByb21pc2UgcmVzb2x2aW5nIHRvIHRoZSBhY2NvdW50IGJhbGFuY2UgYXMgYSBzdHJpbmcuXG4gICAqIEB0aHJvd3MgRXJyb3IgaWYgdGhlIGJhbGFuY2UgY291bGQgbm90IGJlIGZldGNoZWQuXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgZ2V0QmFsYW5jZShwcmluY2lwYWxJZDogc3RyaW5nKTogUHJvbWlzZTxCaWdOdW1iZXI+IHtcbiAgICBpZiAoIXByaW5jaXBhbElkKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1ByaW5jaXBhbCBJRCBpcyByZXF1aXJlZCcpO1xuICAgIH1cbiAgICB0cnkge1xuICAgICAgY29uc3QgbGVkZ2VyID0gdGhpcy5nZXRMZWRnZXIoKTtcbiAgICAgIGNvbnN0IGFjY291bnQgPSB7XG4gICAgICAgIG93bmVyOiBQcmluY2lwYWwuZnJvbVRleHQocHJpbmNpcGFsSWQpLFxuICAgICAgICBzdWJhY2NvdW50OiBbdXRpbHMuaGV4VG9CeXRlcyhERUZBVUxUX1NVQkFDQ09VTlQpXSxcbiAgICAgIH07XG5cbiAgICAgIGNvbnN0IGJhbGFuY2UgPSBhd2FpdCBsZWRnZXIuY2FsbChBQ0NPVU5UX0JBTEFOQ0VfQ0FMTCwgYWNjb3VudCk7XG4gICAgICByZXR1cm4gQmlnTnVtYmVyKGJhbGFuY2UpO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBjb25zdCBlcnJvck1lc3NhZ2UgPSBlcnJvciBpbnN0YW5jZW9mIEVycm9yID8gZXJyb3IubWVzc2FnZSA6ICdVbmtub3duIGVycm9yJztcbiAgICAgIHRocm93IG5ldyBSZWNvdmVyeVByb3ZpZGVyRXJyb3IoYEVycm9yIGZldGNoaW5nIGJhbGFuY2UgZm9yIHByaW5jaXBhbCAke3ByaW5jaXBhbElkfTogJHtlcnJvck1lc3NhZ2V9YCwgZXJyb3IpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBGZXRjaGVzIHRoZSB0cmFuc2FjdGlvbiBmZWUgZnJvbSB0aGUgbGVkZ2VyLlxuICAgKiBAcmV0dXJucyBQcm9taXNlIHJlc29sdmluZyB0byB0aGUgdHJhbnNhY3Rpb24gZmVlIGFzIGEgc3RyaW5nLlxuICAgKiBAdGhyb3dzIEVycm9yIGlmIHRoZSBmZWUgY291bGQgbm90IGJlIGZldGNoZWQuXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgZ2V0RmVlKCk6IFByb21pc2U8QmlnTnVtYmVyPiB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IGxlZGdlciA9IHRoaXMuZ2V0TGVkZ2VyKCk7XG4gICAgICBjb25zdCBtZXRhZGF0YSA9IGF3YWl0IGxlZGdlci5jYWxsKE1FVEFEQVRBX0NBTEwpO1xuXG4gICAgICBjb25zdCBmZWVFbnRyeSA9IG1ldGFkYXRhLmZpbmQoXG4gICAgICAgIChlbnRyeSk6IGVudHJ5IGlzIFtzdHJpbmcsIHsgTmF0OiBzdHJpbmcgfV0gPT4gZW50cnlbMF0gPT09IElDUkMxX0ZFRV9LRVkgJiYgZW50cnlbMV0/Lk5hdCAhPT0gdW5kZWZpbmVkXG4gICAgICApO1xuXG4gICAgICBpZiAoIWZlZUVudHJ5KSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgJHtJQ1JDMV9GRUVfS0VZfSBtZXRhZGF0YSBub3QgZm91bmQgb3IgaW52YWxpZCBmb3JtYXRgKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIEJpZ051bWJlcihmZWVFbnRyeVsxXS5OYXQpO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBjb25zdCBlcnJvck1lc3NhZ2UgPSBlcnJvciBpbnN0YW5jZW9mIEVycm9yID8gZXJyb3IubWVzc2FnZSA6ICdVbmtub3duIGVycm9yJztcbiAgICAgIHRocm93IG5ldyBSZWNvdmVyeVByb3ZpZGVyRXJyb3IoYEVycm9yIGZldGNoaW5nIHRyYW5zYWN0aW9uIGZlZTogJHtlcnJvck1lc3NhZ2V9YCwgZXJyb3IpO1xuICAgIH1cbiAgfVxufVxuIl19
|
|
@@ -47,6 +47,7 @@ const icpAgent_1 = require("../../../src/lib/icpAgent");
|
|
|
47
47
|
const iface_1 = require("../../../src/lib/iface");
|
|
48
48
|
const principal_1 = require("@dfinity/principal");
|
|
49
49
|
const bignumber_js_1 = __importDefault(require("bignumber.js"));
|
|
50
|
+
const sdk_core_1 = require("@bitgo/sdk-core");
|
|
50
51
|
const utils_1 = __importDefault(require("../../../src/lib/utils"));
|
|
51
52
|
describe('ICP transaction recovery', async () => {
|
|
52
53
|
let bitgo;
|
|
@@ -165,6 +166,12 @@ describe('ICP transaction recovery', async () => {
|
|
|
165
166
|
.recover(recoveryParams)
|
|
166
167
|
.should.rejectedWith('Error during ICP recovery: Transaction broadcast error: Request failed with status code 500');
|
|
167
168
|
});
|
|
169
|
+
it('should fail to recover txn if balance is zero', async () => {
|
|
170
|
+
sinon_1.default.restore();
|
|
171
|
+
sinon_1.default.stub(icpAgent_1.IcpAgent.prototype, 'getBalance').resolves((0, bignumber_js_1.default)(0));
|
|
172
|
+
sinon_1.default.stub(icpAgent_1.IcpAgent.prototype, 'getFee').resolves((0, bignumber_js_1.default)(10000));
|
|
173
|
+
await icp.recover(recoveryParams).should.rejectedWith(sdk_core_1.ErrorNoInputToRecover);
|
|
174
|
+
});
|
|
168
175
|
it('should fail to recover txn if balance is low', async () => {
|
|
169
176
|
sinon_1.default.restore();
|
|
170
177
|
setupLowBalanceStubs();
|
|
@@ -172,6 +179,11 @@ describe('ICP transaction recovery', async () => {
|
|
|
172
179
|
.recover(recoveryParams)
|
|
173
180
|
.should.rejectedWith('Error during ICP recovery: Did not have enough funds to recover');
|
|
174
181
|
});
|
|
182
|
+
it('should fail to recover txn if the balance provider fails', async () => {
|
|
183
|
+
sinon_1.default.restore();
|
|
184
|
+
sinon_1.default.stub(icpAgent_1.IcpAgent.prototype, 'getBalance').rejects(new sdk_core_1.RecoveryProviderError('Error fetching balance'));
|
|
185
|
+
await icp.recover(recoveryParams).should.rejectedWith(sdk_core_1.RecoveryProviderError);
|
|
186
|
+
});
|
|
175
187
|
it('should fail to recover txn if userKey is not provided', async () => {
|
|
176
188
|
recoveryParams.userKey = '';
|
|
177
189
|
await icp.recover(recoveryParams).should.rejectedWith('Error during ICP recovery: missing userKey');
|
|
@@ -185,4 +197,4 @@ describe('ICP transaction recovery', async () => {
|
|
|
185
197
|
await icp.recover(recoveryParams).should.rejectedWith('Error during ICP recovery: missing wallet passphrase');
|
|
186
198
|
});
|
|
187
199
|
});
|
|
188
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNhY3Rpb25SZWNvdmVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vdGVzdC91bml0L3RyYW5zYWN0aW9uQnVpbGRlci90cmFuc2FjdGlvblJlY292ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxvREFBNEI7QUFDNUIsOERBQWdEO0FBQ2hELGtEQUEwQjtBQUMxQiw4Q0FBNEM7QUFDNUMsNENBQTBDO0FBQzFDLGdEQUF3QjtBQUN4Qiw4Q0FBeUM7QUFDekMsd0RBQXFEO0FBQ3JELGtEQUE2RTtBQUM3RSxrREFBK0M7QUFDL0MsZ0VBQXFDO0FBQ3JDLG1FQUEyQztBQUUzQyxRQUFRLENBQUMsMEJBQTBCLEVBQUUsS0FBSyxJQUFJLEVBQUU7SUFDOUMsSUFBSSxLQUFLLENBQUM7SUFDVixJQUFJLGNBQStCLENBQUM7SUFDcEMsSUFBSSxHQUFHLENBQUM7SUFDUixJQUFJLGlCQUF5QixDQUFDO0lBQzlCLElBQUksaUJBQXlCLENBQUM7SUFDOUIsSUFBSSxPQUFlLENBQUM7SUFFcEIsd0NBQXdDO0lBQ3hDLE1BQU0saUJBQWlCLEdBQUcsR0FBRyxFQUFFO1FBQzdCLGVBQUssQ0FBQyxJQUFJLENBQUMsbUJBQVEsQ0FBQyxTQUFTLEVBQUUsWUFBWSxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUEsc0JBQVMsRUFBQyxVQUFVLENBQUMsQ0FBQyxDQUFDO1FBQzdFLGVBQUssQ0FBQyxJQUFJLENBQUMsbUJBQVEsQ0FBQyxTQUFTLEVBQUUsUUFBUSxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUEsc0JBQVMsRUFBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO1FBQ3BFLGVBQUssQ0FBQyxJQUFJLENBQUMsZUFBSyxFQUFFLGFBQWEsQ0FBQyxDQUFDLE9BQU8sQ0FBQztZQUN2QyxRQUFRLEVBQUUsUUFBUSxDQUFDLHVCQUF1QjtZQUMxQyxjQUFjLEVBQUUsUUFB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QUF1RCxFQUFFLEtBQUssSUFBSSxFQUFFO1FBQ3JFLGNBQWMsQ0FBQyxPQUFPLEdBQUcsRUFBRSxDQUFDO1FBQzVCLE1BQU0sR0FBRyxDQUFDLE9BQU8sQ0FBQyxjQUFjLENBQUMsQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLDRDQUE0QyxDQUFDLENBQUM7SUFDdEcsQ0FBQyxDQUFDLENBQUM7SUFFSCxFQUFFLENBQUMseURBQXlELEVBQUUsS0FBSyxJQUFJLEVBQUU7UUFDdkUsY0FBYyxDQUFDLFNBQVMsR0FBRyxFQUFFLENBQUM7UUFDOUIsTUFBTSxHQUFHLENBQUMsT0FBTyxDQUFDLGNBQWMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsOENBQThDLENBQUMsQ0FBQztJQUN4RyxDQUFDLENBQUMsQ0FBQztJQUVILEVBQUUsQ0FBQyxpRUFBaUUsRUFBRSxLQUFLLElBQUksRUFBRTtRQUMvRSxjQUFjLENBQUMsZ0JBQWdCLEdBQUcsRUFBRSxDQUFDO1FBQ3JDLE1BQU0sR0FBRyxDQUFDLE9BQU8sQ0FBQyxjQUFjLENBQUMsQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLHNEQUFzRCxDQUFDLENBQUM7SUFDaEgsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBzaG91bGQgZnJvbSAnc2hvdWxkJztcbmltcG9ydCAqIGFzIHRlc3REYXRhIGZyb20gJy4uLy4uL3Jlc291cmNlcy9pY3AnO1xuaW1wb3J0IHNpbm9uIGZyb20gJ3Npbm9uJztcbmltcG9ydCB7IFRlc3RCaXRHbyB9IGZyb20gJ0BiaXRnby9zZGstdGVzdCc7XG5pbXBvcnQgeyBCaXRHb0FQSSB9IGZyb20gJ0BiaXRnby9zZGstYXBpJztcbmltcG9ydCBub2NrIGZyb20gJ25vY2snO1xuaW1wb3J0IHsgSWNwIH0gZnJvbSAnLi4vLi4vLi4vc3JjL2luZGV4JztcbmltcG9ydCB7IEljcEFnZW50IH0gZnJvbSAnLi4vLi4vLi4vc3JjL2xpYi9pY3BBZ2VudCc7XG5pbXBvcnQgeyBSZWNvdmVyeU9wdGlvbnMsIExFREdFUl9DQU5JU1RFUl9JRCB9IGZyb20gJy4uLy4uLy4uL3NyYy9saWIvaWZhY2UnO1xuaW1wb3J0IHsgUHJpbmNpcGFsIH0gZnJvbSAnQGRmaW5pdHkvcHJpbmNpcGFsJztcbmltcG9ydCBCaWdOdW1iZXIgZnJvbSAnYmlnbnVtYmVyLmpzJztcbmltcG9ydCB1dGlscyBmcm9tICcuLi8uLi8uLi9zcmMvbGliL3V0aWxzJztcblxuZGVzY3JpYmUoJ0lDUCB0cmFuc2FjdGlvbiByZWNvdmVyeScsIGFzeW5jICgpID0+IHtcbiAgbGV0IGJpdGdvO1xuICBsZXQgcmVjb3ZlcnlQYXJhbXM6IFJlY292ZXJ5T3B0aW9ucztcbiAgbGV0IGljcDtcbiAgbGV0IGJyb2FkY2FzdEVuZHBvaW50OiBzdHJpbmc7XG4gIGxldCBicm9hZGNhc3RSZXNwb25zZTogQnVmZmVyO1xuICBsZXQgbm9kZVVybDogc3RyaW5nO1xuXG4gIC8vIEhlbHBlciBmdW5jdGlvbnMgZm9yIHNldHRpbmcgdXAgc3R1YnNcbiAgY29uc3Qgc2V0dXBEZWZhdWx0U3R1YnMgPSAoKSA9PiB7XG4gICAgc2lub24uc3R1YihJY3BBZ2VudC5wcm90b3R5cGUsICdnZXRCYWxhbmNlJykucmVzb2x2ZXMoQmlnTnVtYmVyKDEwMDAwMDAwMDApKTtcbiAgICBzaW5vbi5zdHViKEljcEFnZW50LnByb3RvdHlwZSwgJ2dldEZlZScpLnJlc29sdmVzKEJpZ051bWJlcigxMDAwMCkpO1xuICAgIHNpbm9uLnN0dWIodXRpbHMsICdnZXRNZXRhRGF0YScpLnJldHVybnMoe1xuICAgICAgbWV0YURhdGE6IHRlc3REYXRhLk1ldGFEYXRhV2l0aERlZmF1bHRNZW1vLFxuICAgICAgaW5ncmVzc0VuZFRpbWU6IHRlc3REYXRhLk1ldGFEYXRhV2l0aERlZmF1bHRNZW1vLmluZ3Jlc3NfZW5kID8/IDAsXG4gICAgfSk7XG4gICAgc2lub24uc3R1YihpY3AsICdzaWduYXR1cmVzJykucmV0dXJucyh0ZXN0RGF0YS5SZWNvdmVyVHJhbnNhY3Rpb25TaWduYXR1cmVXaXRoRGVmYXVsdE1lbW8pO1xuICB9O1xuXG4gIGNvbnN0IHNldHVwTWVtb1N0dWJzID0gKCkgPT4ge1xuICAgIHNpbm9uLnN0dWIoSWNwQWdlbnQucHJvdG90eXBlLCAnZ2V0QmFsYW5jZScpLnJlc29sdmVzKEJpZ051bWJlcigxMDAwMDAwMDAwKSk7XG4gICAgc2lub24uc3R1YihJY3BBZ2VudC5wcm90b3R5cGUsICdnZXRGZWUnKS5yZXNvbHZlcyhCaWdOdW1iZXIoMTAwMDApKTtcbiAgICBzaW5vbi5zdHViKHV0aWxzLCAnZ2V0TWV0YURhdGEnKS5yZXR1cm5zKHtcbiAgICAgIG1ldGFEYXRhOiB0ZXN0RGF0YS5NZXRhRGF0YVdpdGhNZW1vLFxuICAgICAgaW5ncmVzc0VuZFRpbWU6IHRlc3REYXRhLk1ldGFEYXRhV2l0aE1lbW8uaW5ncmVzc19lbmQgPz8gMCxcbiAgICB9KTtcbiAgICBzaW5vbi5zdHViKGljcCwgJ3NpZ25hdHVyZXMnKS5yZXR1cm5zKHRlc3REYXRhLlJlY292ZXJUcmFuc2FjdGlvblNpZ25hdHVyZVdpdGhNZW1vKTtcbiAgfTtcblxuICBjb25zdCBzZXR1cExvd0JhbGFuY2VTdHVicyA9ICgpID0+IHtcbiAgICBzaW5vbi5zdHViKEljcEFnZW50LnByb3RvdHlwZSwgJ2dldEJhbGFuY2UnKS5yZXNvbHZlcyhCaWdOdW1iZXIoMTApKTtcbiAgICBzaW5vbi5zdHViKEljcEFnZW50LnByb3RvdHlwZSwgJ2dldEZlZScpLnJlc29sdmVzKEJpZ051bWJlcigxMDAwMCkpO1xuICAgIHNpbm9uLnN0dWIodXRpbHMsICdnZXRNZXRhRGF0YScpLnJldHVybnMoe1xuICAgICAgbWV0YURhdGE6IHRlc3REYXRhLk1ldGFEYXRhV2l0aERlZmF1bHRNZW1vLFxuICAgICAgaW5ncmVzc0VuZFRpbWU6IHRlc3REYXRhLk1ldGFEYXRhV2l0aERlZmF1bHRNZW1vLmluZ3Jlc3NfZW5kID8/IDAsXG4gICAgfSk7XG4gIH07XG5cbiAgYmVmb3JlKGZ1bmN0aW9uICgpIHtcbiAgICBiaXRnbyA9IFRlc3RCaXRHby5kZWNvcmF0ZShCaXRHb0FQSSwgeyBlbnY6ICd0ZXN0JyB9KTtcbiAgICBiaXRnby5zYWZlUmVnaXN0ZXIoJ2ljcCcsIEljcC5jcmVhdGVJbnN0YW5jZSk7XG4gICAgYml0Z28uaW5pdGlhbGl6ZVRlc3RWYXJzKCk7XG4gICAgcmVjb3ZlcnlQYXJhbXMgPSB7XG4gICAgICB1c2VyS2V5OiB0ZXN0RGF0YS5XUldSZWNvdmVyeS51c2VyS2V5LFxuICAgICAgYmFja3VwS2V5OiB0ZXN0RGF0YS5XUldSZWNvdmVyeS5iYWNrdXBLZXksXG4gICAgICB3YWxsZXRQYXNzcGhyYXNlOiB0ZXN0RGF0YS5XUldSZWNvdmVyeS53YWxsZXRQYXNzcGhyYXNlLFxuICAgICAgcmVjb3ZlcnlEZXN0aW5hdGlvbjogdGVzdERhdGEuQWNjb3VudHMuYWNjb3VudDIuYWRkcmVzcyxcbiAgICB9O1xuXG4gICAgaWNwID0gYml0Z28uY29pbignaWNwJyk7XG4gICAgbm9kZVVybCA9IGljcC5nZXRQdWJsaWNOb2RlVXJsKCk7XG4gICAgY29uc3QgcHJpbmNpcGFsID0gUHJpbmNpcGFsLmZyb21VaW50OEFycmF5KExFREdFUl9DQU5JU1RFUl9JRCk7XG4gICAgY29uc3QgY2FuaXN0ZXJJZEhleCA9IHByaW5jaXBhbC50b1RleHQoKTtcbiAgICBicm9hZGNhc3RFbmRwb2ludCA9IGAvYXBpL3YzL2NhbmlzdGVyLyR7Y2FuaXN0ZXJJZEhleH0vY2FsbGA7XG4gICAgYnJvYWRjYXN0UmVzcG9uc2UgPSBCdWZmZXIuZnJvbSh0ZXN0RGF0YS5QdWJsaWNOb2RlQXBpQnJvYWRjYXN0UmVzcG9uc2UsICdoZXgnKTtcbiAgfSk7XG5cbiAgYmVmb3JlRWFjaChmdW5jdGlvbiAoKSB7XG4gICAgc2V0dXBEZWZhdWx0U3R1YnMoKTtcbiAgICAvLyBTZXQgdXAgZGVmYXVsdCBzdWNjZXNzZnVsIG5vY2sgcmVzcG9uc2VcbiAgICBub2NrKG5vZGVVcmwpLnBvc3QoYnJvYWRjYXN0RW5kcG9pbnQpLnJlcGx5KDIwMCwgYnJvYWRjYXN0UmVzcG9uc2UpO1xuICB9KTtcblxuICBhZnRlckVhY2goZnVuY3Rpb24gKCkge1xuICAgIHJlY292ZXJ5UGFyYW1zID0ge1xuICAgICAgdXNlcktleTogdGVzdERhdGEuV1JXUmVjb3ZlcnkudXNlcktleSxcbiAgICAgIGJhY2t1cEtleTogdGVzdERhdGEuV1JXUmVjb3ZlcnkuYmFja3VwS2V5LFxuICAgICAgd2FsbGV0UGFzc3BocmFzZTogdGVzdERhdGEuV1JXUmVjb3Zlcnkud2FsbGV0UGFzc3BocmFzZSxcbiAgICAgIHJlY292ZXJ5RGVzdGluYXRpb246IHRlc3REYXRhLkFjY291bnRzLmFjY291bnQyLmFkZHJlc3MsXG4gICAgfTtcbiAgICBub2NrLmNsZWFuQWxsKCk7XG4gICAgc2lub24ucmVzdG9yZSgpO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIHJlY292ZXIgYSB0cmFuc2FjdGlvbiB3aXRoIGRlZmF1bHQgbWVtbyBzdWNjZXNzZnVsbHknLCBhc3luYyAoKSA9PiB7XG4gICAgY29uc3QgcmVjb3ZlclR4biA9IGF3YWl0IGljcC5yZWNvdmVyKHJlY292ZXJ5UGFyYW1zKTtcbiAgICByZWNvdmVyVHhuLmlkLnNob3VsZC5iZS5hLlN0cmluZygpO1xuICAgIHNob3VsZC5lcXVhbChyZWNvdmVyVHhuLmlkLCB0ZXN0RGF0YS5UeG5JZFdpdGhEZWZhdWx0TWVtbyk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgcmVjb3ZlciBhIHRyYW5zYWN0aW9uIHdpdGggbWVtbyBzdWNjZXNzZnVsbHknLCBhc3luYyAoKSA9PiB7XG4gICAgc2lub24ucmVzdG9yZSgpO1xuICAgIHNldHVwTWVtb1N0dWJzKCk7XG4gICAgcmVjb3ZlcnlQYXJhbXMubWVtbyA9IHRlc3REYXRhLk1ldGFEYXRhV2l0aE1lbW8ubWVtbztcbiAgICBjb25zdCByZWNvdmVyVHhuID0gYXdhaXQgaWNwLnJlY292ZXIocmVjb3ZlcnlQYXJhbXMpO1xuICAgIHJlY292ZXJUeG4uaWQuc2hvdWxkLmJlLmEuU3RyaW5nKCk7XG4gICAgc2hvdWxkLmVxdWFsKHJlY292ZXJUeG4uaWQsIHRlc3REYXRhLlR4bklkV2l0aE1lbW8pO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIHJlY292ZXIgYSB1bnNpZ25lZCBzd2VlcCB0cmFuc2FjdGlvbiBzdWNjZXNzZnVsbHknLCBhc3luYyAoKSA9PiB7XG4gICAgc2lub24ucmVzdG9yZSgpO1xuICAgIHNldHVwTWVtb1N0dWJzKCk7XG5cbiAgICBjb25zdCB1bnNpZ25lZFN3ZWVwUmVjb3ZlcnlQYXJhbXMgPSB7XG4gICAgICBiaXRnb0tleTpcbiAgICAgICAgJzAzMTA3Njg3MzZhMDA1ZWE1MzY0ZTFiNWI1Mjg4Y2Y1NTMyMjRkZDI4YjJkZjhjZWQ2M2I3MmE4MDIwNDc4OTY3ZjA1ZWM1YmNlMWYyNmNkN2ViMDA5YTRiZWE0NDViYjU1YzJmNTRhMzBmMjcwNmMxYTM3NDdlOGRmMmQyODg4MjknLFxuICAgICAgcmVjb3ZlcnlEZXN0aW5hdGlvbjogdGVzdERhdGEuQWNjb3VudHMuYWNjb3VudDIuYWRkcmVzcyxcbiAgICB9O1xuICAgIGNvbnN0IHJlY292ZXJUeG4gPSBhd2FpdCBpY3AucmVjb3Zlcih1bnNpZ25lZFN3ZWVwUmVjb3ZlcnlQYXJhbXMpO1xuICAgIHJlY292ZXJUeG4udHhIZXguc2hvdWxkLmJlLmEuU3RyaW5nKCk7XG4gICAgc2hvdWxkLmVxdWFsKHJlY292ZXJUeG4udHhIZXgsIHRlc3REYXRhLlVuc2lnbmVkU3dlZXBUcmFuc2FjdGlvbik7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgZmFpbGVkIHRvIHJlY292ZXIgYSB1bnNpZ25lZCBzd2VlcCB0cmFuc2FjdGlvbiB3aXRoIHdyb25nIGJpdGdvIGtleScsIGFzeW5jICgpID0+IHtcbiAgICBzaW5vbi5yZXN0b3JlKCk7XG4gICAgc2V0dXBNZW1vU3R1YnMoKTtcblxuICAgIGNvbnN0IHVuc2lnbmVkU3dlZXBSZWNvdmVyeVBhcmFtcyA9IHtcbiAgICAgIGJpdGdvS2V5OiAndGVzdEtleScsXG4gICAgICByZWNvdmVyeURlc3RpbmF0aW9uOiB0ZXN0RGF0YS5BY2NvdW50cy5hY2NvdW50Mi5hZGRyZXNzLFxuICAgIH07XG4gICAgYXdhaXQgaWNwXG4gICAgICAucmVjb3Zlcih1bnNpZ25lZFN3ZWVwUmVjb3ZlcnlQYXJhbXMpXG4gICAgICAuc2hvdWxkLnJlamVjdGVkV2l0aCgnRXJyb3IgZHVyaW5nIElDUCByZWNvdmVyeTogQ2Fubm90IGNvbnZlcnQgMHggdG8gYSBCaWdJbnQnKTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCBmYWlsZWQgdG8gcmVjb3ZlciByZWNvdmVyIGEgdW5zaWduZWQgc3dlZXAgdHJhbnNhY3Rpb24gd2l0aG91dCBiaXRnbyBrZXknLCBhc3luYyAoKSA9PiB7XG4gICAgc2lub24ucmVzdG9yZSgpO1xuICAgIHNldHVwTWVtb1N0dWJzKCk7XG5cbiAgICBjb25zdCB1bnNpZ25lZFN3ZWVwUmVjb3ZlcnlQYXJhbXMgPSB7XG4gICAgICByZWNvdmVyeURlc3RpbmF0aW9uOiB0ZXN0RGF0YS5BY2NvdW50cy5hY2NvdW50Mi5hZGRyZXNzLFxuICAgIH07XG4gICAgYXdhaXQgaWNwLnJlY292ZXIodW5zaWduZWRTd2VlcFJlY292ZXJ5UGFyYW1zKS5zaG91bGQucmVqZWN0ZWRXaXRoKCdFcnJvciBkdXJpbmcgSUNQIHJlY292ZXJ5OiBtaXNzaW5nIGJpdGdvS2V5Jyk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgZmFpbCB0byByZWNvdmVyIGlmIGJyb2FkY2FzdCBBUEkgZmFpbHMnLCBhc3luYyAoKSA9PiB7XG4gICAgbm9jay5jbGVhbkFsbCgpO1xuICAgIG5vY2sobm9kZVVybCkucG9zdChicm9hZGNhc3RFbmRwb2ludCkucmVwbHkoNTAwLCAnSW50ZXJuYWwgU2VydmVyIEVycm9yJyk7XG4gICAgcmVjb3ZlcnlQYXJhbXMubWVtbyA9IDA7XG4gICAgYXdhaXQgaWNwXG4gICAgICAucmVjb3ZlcihyZWNvdmVyeVBhcmFtcylcbiAgICAgIC5zaG91bGQucmVqZWN0ZWRXaXRoKFxuICAgICAgICAnRXJyb3IgZHVyaW5nIElDUCByZWNvdmVyeTogVHJhbnNhY3Rpb24gYnJvYWRjYXN0IGVycm9yOiBSZXF1ZXN0IGZhaWxlZCB3aXRoIHN0YXR1cyBjb2RlIDUwMCdcbiAgICAgICk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgZmFpbCB0byByZWNvdmVyIHR4biBpZiBiYWxhbmNlIGlzIGxvdycsIGFzeW5jICgpID0+IHtcbiAgICBzaW5vbi5yZXN0b3JlKCk7XG4gICAgc2V0dXBMb3dCYWxhbmNlU3R1YnMoKTtcbiAgICBhd2FpdCBpY3BcbiAgICAgIC5yZWNvdmVyKHJlY292ZXJ5UGFyYW1zKVxuICAgICAgLnNob3VsZC5yZWplY3RlZFdpdGgoJ0Vycm9yIGR1cmluZyBJQ1AgcmVjb3Zlcnk6IERpZCBub3QgaGF2ZSBlbm91Z2ggZnVuZHMgdG8gcmVjb3ZlcicpO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIGZhaWwgdG8gcmVjb3ZlciB0eG4gaWYgdXNlcktleSBpcyBub3QgcHJvdmlkZWQnLCBhc3luYyAoKSA9PiB7XG4gICAgcmVjb3ZlcnlQYXJhbXMudXNlcktleSA9ICcnO1xuICAgIGF3YWl0IGljcC5yZWNvdmVyKHJlY292ZXJ5UGFyYW1zKS5zaG91bGQucmVqZWN0ZWRXaXRoKCdFcnJvciBkdXJpbmcgSUNQIHJlY292ZXJ5OiBtaXNzaW5nIHVzZXJLZXknKTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCBmYWlsIHRvIHJlY292ZXIgdHhuIGlmIGJhY2t1cEtleSBpcyBub3QgcHJvdmlkZWQnLCBhc3luYyAoKSA9PiB7XG4gICAgcmVjb3ZlcnlQYXJhbXMuYmFja3VwS2V5ID0gJyc7XG4gICAgYXdhaXQgaWNwLnJlY292ZXIocmVjb3ZlcnlQYXJhbXMpLnNob3VsZC5yZWplY3RlZFdpdGgoJ0Vycm9yIGR1cmluZyBJQ1AgcmVjb3Zlcnk6IG1pc3NpbmcgYmFja3VwS2V5Jyk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgZmFpbCB0byByZWNvdmVyIHR4biBpZiB3YWxsZXQgcGFzc3BocmFzZSBpcyBub3QgcHJvdmlkZWQnLCBhc3luYyAoKSA9PiB7XG4gICAgcmVjb3ZlcnlQYXJhbXMud2FsbGV0UGFzc3BocmFzZSA9ICcnO1xuICAgIGF3YWl0IGljcC5yZWNvdmVyKHJlY292ZXJ5UGFyYW1zKS5zaG91bGQucmVqZWN0ZWRXaXRoKCdFcnJvciBkdXJpbmcgSUNQIHJlY292ZXJ5OiBtaXNzaW5nIHdhbGxldCBwYXNzcGhyYXNlJyk7XG4gIH0pO1xufSk7XG4iXX0=
|
|
200
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNhY3Rpb25SZWNvdmVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vdGVzdC91bml0L3RyYW5zYWN0aW9uQnVpbGRlci90cmFuc2FjdGlvblJlY292ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxvREFBNEI7QUFDNUIsOERBQWdEO0FBQ2hELGtEQUEwQjtBQUMxQiw4Q0FBNEM7QUFDNUMsNENBQTBDO0FBQzFDLGdEQUF3QjtBQUN4Qiw4Q0FBeUM7QUFDekMsd0RBQXFEO0FBQ3JELGtEQUE2RTtBQUM3RSxrREFBK0M7QUFDL0MsZ0VBQXFDO0FBQ3JDLDhDQUErRTtBQUMvRSxtRUFBMkM7QUFFM0MsUUFBUSxDQUFDLDBCQUEwQixFQUFFLEtBQUssSUFBSSxFQUFFO0lBQzlDLElBQUksS0FBSyxDQUFDO0lBQ1YsSUFBSSxjQUErQixDQUFDO0lBQ3BDLElBQUksR0FBRyxDQUFDO0lBQ1IsSUFBSSxpQkFBeUIsQ0FBQztJQUM5QixJQUFJLGlCQUF5QixDQUFDO0lBQzlCLElBQUksT0FBZSxDQUFDO0lBRXBCLHdDQUF3QztJQUN4QyxNQUFNLGlCQUFpQixHQUFHLEdBQUcsRUFBRTtRQUM3QixlQUFLLENBQUMsSUFBSSxDQUFDLG1CQUFRLENBQUMsU0FBUyxFQUFFLFlBQVksQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFBLHNCQUFTLEVBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQztRQUM3RSxlQUFLLENBQUMsSUFBSSxDQUFDLG1CQUFRLENBQUMsU0FBUyxFQUFFLFFBQVEsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFBLHNCQUFTLEVBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztRQUNwRSxlQUFLLENBQUMsSUFBSSxDQUFDLGVBQUssRUFBRSxhQUFhLENBQUMsQ0FBQyxPQUFPLENBQUM7WUFDdkMsUUFBUSxFQUFFLFFBQVEsQ0FBQyx1QkFBdUI7WUFDMUMs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O1FBQ3ZFLGNBQWMsQ0FBQyxTQUFTLEdBQUcsRUFBRSxDQUFDO1FBQzlCLE1BQU0sR0FBRyxDQUFDLE9BQU8sQ0FBQyxjQUFjLENBQUMsQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLDhDQUE4QyxDQUFDLENBQUM7SUFDeEcsQ0FBQyxDQUFDLENBQUM7SUFFSCxFQUFFLENBQUMsaUVBQWlFLEVBQUUsS0FBSyxJQUFJLEVBQUU7UUFDL0UsY0FBYyxDQUFDLGdCQUFnQixHQUFHLEVBQUUsQ0FBQztRQUNyQyxNQUFNLEdBQUcsQ0FBQyxPQUFPLENBQUMsY0FBYyxDQUFDLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxzREFBc0QsQ0FBQyxDQUFDO0lBQ2hILENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgc2hvdWxkIGZyb20gJ3Nob3VsZCc7XG5pbXBvcnQgKiBhcyB0ZXN0RGF0YSBmcm9tICcuLi8uLi9yZXNvdXJjZXMvaWNwJztcbmltcG9ydCBzaW5vbiBmcm9tICdzaW5vbic7XG5pbXBvcnQgeyBUZXN0Qml0R28gfSBmcm9tICdAYml0Z28vc2RrLXRlc3QnO1xuaW1wb3J0IHsgQml0R29BUEkgfSBmcm9tICdAYml0Z28vc2RrLWFwaSc7XG5pbXBvcnQgbm9jayBmcm9tICdub2NrJztcbmltcG9ydCB7IEljcCB9IGZyb20gJy4uLy4uLy4uL3NyYy9pbmRleCc7XG5pbXBvcnQgeyBJY3BBZ2VudCB9IGZyb20gJy4uLy4uLy4uL3NyYy9saWIvaWNwQWdlbnQnO1xuaW1wb3J0IHsgUmVjb3ZlcnlPcHRpb25zLCBMRURHRVJfQ0FOSVNURVJfSUQgfSBmcm9tICcuLi8uLi8uLi9zcmMvbGliL2lmYWNlJztcbmltcG9ydCB7IFByaW5jaXBhbCB9IGZyb20gJ0BkZmluaXR5L3ByaW5jaXBhbCc7XG5pbXBvcnQgQmlnTnVtYmVyIGZyb20gJ2JpZ251bWJlci5qcyc7XG5pbXBvcnQgeyBFcnJvck5vSW5wdXRUb1JlY292ZXIsIFJlY292ZXJ5UHJvdmlkZXJFcnJvciB9IGZyb20gJ0BiaXRnby9zZGstY29yZSc7XG5pbXBvcnQgdXRpbHMgZnJvbSAnLi4vLi4vLi4vc3JjL2xpYi91dGlscyc7XG5cbmRlc2NyaWJlKCdJQ1AgdHJhbnNhY3Rpb24gcmVjb3ZlcnknLCBhc3luYyAoKSA9PiB7XG4gIGxldCBiaXRnbztcbiAgbGV0IHJlY292ZXJ5UGFyYW1zOiBSZWNvdmVyeU9wdGlvbnM7XG4gIGxldCBpY3A7XG4gIGxldCBicm9hZGNhc3RFbmRwb2ludDogc3RyaW5nO1xuICBsZXQgYnJvYWRjYXN0UmVzcG9uc2U6IEJ1ZmZlcjtcbiAgbGV0IG5vZGVVcmw6IHN0cmluZztcblxuICAvLyBIZWxwZXIgZnVuY3Rpb25zIGZvciBzZXR0aW5nIHVwIHN0dWJzXG4gIGNvbnN0IHNldHVwRGVmYXVsdFN0dWJzID0gKCkgPT4ge1xuICAgIHNpbm9uLnN0dWIoSWNwQWdlbnQucHJvdG90eXBlLCAnZ2V0QmFsYW5jZScpLnJlc29sdmVzKEJpZ051bWJlcigxMDAwMDAwMDAwKSk7XG4gICAgc2lub24uc3R1YihJY3BBZ2VudC5wcm90b3R5cGUsICdnZXRGZWUnKS5yZXNvbHZlcyhCaWdOdW1iZXIoMTAwMDApKTtcbiAgICBzaW5vbi5zdHViKHV0aWxzLCAnZ2V0TWV0YURhdGEnKS5yZXR1cm5zKHtcbiAgICAgIG1ldGFEYXRhOiB0ZXN0RGF0YS5NZXRhRGF0YVdpdGhEZWZhdWx0TWVtbyxcbiAgICAgIGluZ3Jlc3NFbmRUaW1lOiB0ZXN0RGF0YS5NZXRhRGF0YVdpdGhEZWZhdWx0TWVtby5pbmdyZXNzX2VuZCA/PyAwLFxuICAgIH0pO1xuICAgIHNpbm9uLnN0dWIoaWNwLCAnc2lnbmF0dXJlcycpLnJldHVybnModGVzdERhdGEuUmVjb3ZlclRyYW5zYWN0aW9uU2lnbmF0dXJlV2l0aERlZmF1bHRNZW1vKTtcbiAgfTtcblxuICBjb25zdCBzZXR1cE1lbW9TdHVicyA9ICgpID0+IHtcbiAgICBzaW5vbi5zdHViKEljcEFnZW50LnByb3RvdHlwZSwgJ2dldEJhbGFuY2UnKS5yZXNvbHZlcyhCaWdOdW1iZXIoMTAwMDAwMDAwMCkpO1xuICAgIHNpbm9uLnN0dWIoSWNwQWdlbnQucHJvdG90eXBlLCAnZ2V0RmVlJykucmVzb2x2ZXMoQmlnTnVtYmVyKDEwMDAwKSk7XG4gICAgc2lub24uc3R1Yih1dGlscywgJ2dldE1ldGFEYXRhJykucmV0dXJucyh7XG4gICAgICBtZXRhRGF0YTogdGVzdERhdGEuTWV0YURhdGFXaXRoTWVtbyxcbiAgICAgIGluZ3Jlc3NFbmRUaW1lOiB0ZXN0RGF0YS5NZXRhRGF0YVdpdGhNZW1vLmluZ3Jlc3NfZW5kID8/IDAsXG4gICAgfSk7XG4gICAgc2lub24uc3R1YihpY3AsICdzaWduYXR1cmVzJykucmV0dXJucyh0ZXN0RGF0YS5SZWNvdmVyVHJhbnNhY3Rpb25TaWduYXR1cmVXaXRoTWVtbyk7XG4gIH07XG5cbiAgY29uc3Qgc2V0dXBMb3dCYWxhbmNlU3R1YnMgPSAoKSA9PiB7XG4gICAgc2lub24uc3R1YihJY3BBZ2VudC5wcm90b3R5cGUsICdnZXRCYWxhbmNlJykucmVzb2x2ZXMoQmlnTnVtYmVyKDEwKSk7XG4gICAgc2lub24uc3R1YihJY3BBZ2VudC5wcm90b3R5cGUsICdnZXRGZWUnKS5yZXNvbHZlcyhCaWdOdW1iZXIoMTAwMDApKTtcbiAgICBzaW5vbi5zdHViKHV0aWxzLCAnZ2V0TWV0YURhdGEnKS5yZXR1cm5zKHtcbiAgICAgIG1ldGFEYXRhOiB0ZXN0RGF0YS5NZXRhRGF0YVdpdGhEZWZhdWx0TWVtbyxcbiAgICAgIGluZ3Jlc3NFbmRUaW1lOiB0ZXN0RGF0YS5NZXRhRGF0YVdpdGhEZWZhdWx0TWVtby5pbmdyZXNzX2VuZCA/PyAwLFxuICAgIH0pO1xuICB9O1xuXG4gIGJlZm9yZShmdW5jdGlvbiAoKSB7XG4gICAgYml0Z28gPSBUZXN0Qml0R28uZGVjb3JhdGUoQml0R29BUEksIHsgZW52OiAndGVzdCcgfSk7XG4gICAgYml0Z28uc2FmZVJlZ2lzdGVyKCdpY3AnLCBJY3AuY3JlYXRlSW5zdGFuY2UpO1xuICAgIGJpdGdvLmluaXRpYWxpemVUZXN0VmFycygpO1xuICAgIHJlY292ZXJ5UGFyYW1zID0ge1xuICAgICAgdXNlcktleTogdGVzdERhdGEuV1JXUmVjb3ZlcnkudXNlcktleSxcbiAgICAgIGJhY2t1cEtleTogdGVzdERhdGEuV1JXUmVjb3ZlcnkuYmFja3VwS2V5LFxuICAgICAgd2FsbGV0UGFzc3BocmFzZTogdGVzdERhdGEuV1JXUmVjb3Zlcnkud2FsbGV0UGFzc3BocmFzZSxcbiAgICAgIHJlY292ZXJ5RGVzdGluYXRpb246IHRlc3REYXRhLkFjY291bnRzLmFjY291bnQyLmFkZHJlc3MsXG4gICAgfTtcblxuICAgIGljcCA9IGJpdGdvLmNvaW4oJ2ljcCcpO1xuICAgIG5vZGVVcmwgPSBpY3AuZ2V0UHVibGljTm9kZVVybCgpO1xuICAgIGNvbnN0IHByaW5jaXBhbCA9IFByaW5jaXBhbC5mcm9tVWludDhBcnJheShMRURHRVJfQ0FOSVNURVJfSUQpO1xuICAgIGNvbnN0IGNhbmlzdGVySWRIZXggPSBwcmluY2lwYWwudG9UZXh0KCk7XG4gICAgYnJvYWRjYXN0RW5kcG9pbnQgPSBgL2FwaS92My9jYW5pc3Rlci8ke2NhbmlzdGVySWRIZXh9L2NhbGxgO1xuICAgIGJyb2FkY2FzdFJlc3BvbnNlID0gQnVmZmVyLmZyb20odGVzdERhdGEuUHVibGljTm9kZUFwaUJyb2FkY2FzdFJlc3BvbnNlLCAnaGV4Jyk7XG4gIH0pO1xuXG4gIGJlZm9yZUVhY2goZnVuY3Rpb24gKCkge1xuICAgIHNldHVwRGVmYXVsdFN0dWJzKCk7XG4gICAgLy8gU2V0IHVwIGRlZmF1bHQgc3VjY2Vzc2Z1bCBub2NrIHJlc3BvbnNlXG4gICAgbm9jayhub2RlVXJsKS5wb3N0KGJyb2FkY2FzdEVuZHBvaW50KS5yZXBseSgyMDAsIGJyb2FkY2FzdFJlc3BvbnNlKTtcbiAgfSk7XG5cbiAgYWZ0ZXJFYWNoKGZ1bmN0aW9uICgpIHtcbiAgICByZWNvdmVyeVBhcmFtcyA9IHtcbiAgICAgIHVzZXJLZXk6IHRlc3REYXRhLldSV1JlY292ZXJ5LnVzZXJLZXksXG4gICAgICBiYWNrdXBLZXk6IHRlc3REYXRhLldSV1JlY292ZXJ5LmJhY2t1cEtleSxcbiAgICAgIHdhbGxldFBhc3NwaHJhc2U6IHRlc3REYXRhLldSV1JlY292ZXJ5LndhbGxldFBhc3NwaHJhc2UsXG4gICAgICByZWNvdmVyeURlc3RpbmF0aW9uOiB0ZXN0RGF0YS5BY2NvdW50cy5hY2NvdW50Mi5hZGRyZXNzLFxuICAgIH07XG4gICAgbm9jay5jbGVhbkFsbCgpO1xuICAgIHNpbm9uLnJlc3RvcmUoKTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCByZWNvdmVyIGEgdHJhbnNhY3Rpb24gd2l0aCBkZWZhdWx0IG1lbW8gc3VjY2Vzc2Z1bGx5JywgYXN5bmMgKCkgPT4ge1xuICAgIGNvbnN0IHJlY292ZXJUeG4gPSBhd2FpdCBpY3AucmVjb3ZlcihyZWNvdmVyeVBhcmFtcyk7XG4gICAgcmVjb3ZlclR4bi5pZC5zaG91bGQuYmUuYS5TdHJpbmcoKTtcbiAgICBzaG91bGQuZXF1YWwocmVjb3ZlclR4bi5pZCwgdGVzdERhdGEuVHhuSWRXaXRoRGVmYXVsdE1lbW8pO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIHJlY292ZXIgYSB0cmFuc2FjdGlvbiB3aXRoIG1lbW8gc3VjY2Vzc2Z1bGx5JywgYXN5bmMgKCkgPT4ge1xuICAgIHNpbm9uLnJlc3RvcmUoKTtcbiAgICBzZXR1cE1lbW9TdHVicygpO1xuICAgIHJlY292ZXJ5UGFyYW1zLm1lbW8gPSB0ZXN0RGF0YS5NZXRhRGF0YVdpdGhNZW1vLm1lbW87XG4gICAgY29uc3QgcmVjb3ZlclR4biA9IGF3YWl0IGljcC5yZWNvdmVyKHJlY292ZXJ5UGFyYW1zKTtcbiAgICByZWNvdmVyVHhuLmlkLnNob3VsZC5iZS5hLlN0cmluZygpO1xuICAgIHNob3VsZC5lcXVhbChyZWNvdmVyVHhuLmlkLCB0ZXN0RGF0YS5UeG5JZFdpdGhNZW1vKTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCByZWNvdmVyIGEgdW5zaWduZWQgc3dlZXAgdHJhbnNhY3Rpb24gc3VjY2Vzc2Z1bGx5JywgYXN5bmMgKCkgPT4ge1xuICAgIHNpbm9uLnJlc3RvcmUoKTtcbiAgICBzZXR1cE1lbW9TdHVicygpO1xuXG4gICAgY29uc3QgdW5zaWduZWRTd2VlcFJlY292ZXJ5UGFyYW1zID0ge1xuICAgICAgYml0Z29LZXk6XG4gICAgICAgICcwMzEwNzY4NzM2YTAwNWVhNTM2NGUxYjViNTI4OGNmNTUzMjI0ZGQyOGIyZGY4Y2VkNjNiNzJhODAyMDQ3ODk2N2YwNWVjNWJjZTFmMjZjZDdlYjAwOWE0YmVhNDQ1YmI1NWMyZjU0YTMwZjI3MDZjMWEzNzQ3ZThkZjJkMjg4ODI5JyxcbiAgICAgIHJlY292ZXJ5RGVzdGluYXRpb246IHRlc3REYXRhLkFjY291bnRzLmFjY291bnQyLmFkZHJlc3MsXG4gICAgfTtcbiAgICBjb25zdCByZWNvdmVyVHhuID0gYXdhaXQgaWNwLnJlY292ZXIodW5zaWduZWRTd2VlcFJlY292ZXJ5UGFyYW1zKTtcbiAgICByZWNvdmVyVHhuLnR4SGV4LnNob3VsZC5iZS5hLlN0cmluZygpO1xuICAgIHNob3VsZC5lcXVhbChyZWNvdmVyVHhuLnR4SGV4LCB0ZXN0RGF0YS5VbnNpZ25lZFN3ZWVwVHJhbnNhY3Rpb24pO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIGZhaWxlZCB0byByZWNvdmVyIGEgdW5zaWduZWQgc3dlZXAgdHJhbnNhY3Rpb24gd2l0aCB3cm9uZyBiaXRnbyBrZXknLCBhc3luYyAoKSA9PiB7XG4gICAgc2lub24ucmVzdG9yZSgpO1xuICAgIHNldHVwTWVtb1N0dWJzKCk7XG5cbiAgICBjb25zdCB1bnNpZ25lZFN3ZWVwUmVjb3ZlcnlQYXJhbXMgPSB7XG4gICAgICBiaXRnb0tleTogJ3Rlc3RLZXknLFxuICAgICAgcmVjb3ZlcnlEZXN0aW5hdGlvbjogdGVzdERhdGEuQWNjb3VudHMuYWNjb3VudDIuYWRkcmVzcyxcbiAgICB9O1xuICAgIGF3YWl0IGljcFxuICAgICAgLnJlY292ZXIodW5zaWduZWRTd2VlcFJlY292ZXJ5UGFyYW1zKVxuICAgICAgLnNob3VsZC5yZWplY3RlZFdpdGgoJ0Vycm9yIGR1cmluZyBJQ1AgcmVjb3Zlcnk6IENhbm5vdCBjb252ZXJ0IDB4IHRvIGEgQmlnSW50Jyk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgZmFpbGVkIHRvIHJlY292ZXIgcmVjb3ZlciBhIHVuc2lnbmVkIHN3ZWVwIHRyYW5zYWN0aW9uIHdpdGhvdXQgYml0Z28ga2V5JywgYXN5bmMgKCkgPT4ge1xuICAgIHNpbm9uLnJlc3RvcmUoKTtcbiAgICBzZXR1cE1lbW9TdHVicygpO1xuXG4gICAgY29uc3QgdW5zaWduZWRTd2VlcFJlY292ZXJ5UGFyYW1zID0ge1xuICAgICAgcmVjb3ZlcnlEZXN0aW5hdGlvbjogdGVzdERhdGEuQWNjb3VudHMuYWNjb3VudDIuYWRkcmVzcyxcbiAgICB9O1xuICAgIGF3YWl0IGljcC5yZWNvdmVyKHVuc2lnbmVkU3dlZXBSZWNvdmVyeVBhcmFtcykuc2hvdWxkLnJlamVjdGVkV2l0aCgnRXJyb3IgZHVyaW5nIElDUCByZWNvdmVyeTogbWlzc2luZyBiaXRnb0tleScpO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIGZhaWwgdG8gcmVjb3ZlciBpZiBicm9hZGNhc3QgQVBJIGZhaWxzJywgYXN5bmMgKCkgPT4ge1xuICAgIG5vY2suY2xlYW5BbGwoKTtcbiAgICBub2NrKG5vZGVVcmwpLnBvc3QoYnJvYWRjYXN0RW5kcG9pbnQpLnJlcGx5KDUwMCwgJ0ludGVybmFsIFNlcnZlciBFcnJvcicpO1xuICAgIHJlY292ZXJ5UGFyYW1zLm1lbW8gPSAwO1xuICAgIGF3YWl0IGljcFxuICAgICAgLnJlY292ZXIocmVjb3ZlcnlQYXJhbXMpXG4gICAgICAuc2hvdWxkLnJlamVjdGVkV2l0aChcbiAgICAgICAgJ0Vycm9yIGR1cmluZyBJQ1AgcmVjb3Zlcnk6IFRyYW5zYWN0aW9uIGJyb2FkY2FzdCBlcnJvcjogUmVxdWVzdCBmYWlsZWQgd2l0aCBzdGF0dXMgY29kZSA1MDAnXG4gICAgICApO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIGZhaWwgdG8gcmVjb3ZlciB0eG4gaWYgYmFsYW5jZSBpcyB6ZXJvJywgYXN5bmMgKCkgPT4ge1xuICAgIHNpbm9uLnJlc3RvcmUoKTtcbiAgICBzaW5vbi5zdHViKEljcEFnZW50LnByb3RvdHlwZSwgJ2dldEJhbGFuY2UnKS5yZXNvbHZlcyhCaWdOdW1iZXIoMCkpO1xuICAgIHNpbm9uLnN0dWIoSWNwQWdlbnQucHJvdG90eXBlLCAnZ2V0RmVlJykucmVzb2x2ZXMoQmlnTnVtYmVyKDEwMDAwKSk7XG4gICAgYXdhaXQgaWNwLnJlY292ZXIocmVjb3ZlcnlQYXJhbXMpLnNob3VsZC5yZWplY3RlZFdpdGgoRXJyb3JOb0lucHV0VG9SZWNvdmVyKTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCBmYWlsIHRvIHJlY292ZXIgdHhuIGlmIGJhbGFuY2UgaXMgbG93JywgYXN5bmMgKCkgPT4ge1xuICAgIHNpbm9uLnJlc3RvcmUoKTtcbiAgICBzZXR1cExvd0JhbGFuY2VTdHVicygpO1xuICAgIGF3YWl0IGljcFxuICAgICAgLnJlY292ZXIocmVjb3ZlcnlQYXJhbXMpXG4gICAgICAuc2hvdWxkLnJlamVjdGVkV2l0aCgnRXJyb3IgZHVyaW5nIElDUCByZWNvdmVyeTogRGlkIG5vdCBoYXZlIGVub3VnaCBmdW5kcyB0byByZWNvdmVyJyk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgZmFpbCB0byByZWNvdmVyIHR4biBpZiB0aGUgYmFsYW5jZSBwcm92aWRlciBmYWlscycsIGFzeW5jICgpID0+IHtcbiAgICBzaW5vbi5yZXN0b3JlKCk7XG4gICAgc2lub24uc3R1YihJY3BBZ2VudC5wcm90b3R5cGUsICdnZXRCYWxhbmNlJykucmVqZWN0cyhuZXcgUmVjb3ZlcnlQcm92aWRlckVycm9yKCdFcnJvciBmZXRjaGluZyBiYWxhbmNlJykpO1xuICAgIGF3YWl0IGljcC5yZWNvdmVyKHJlY292ZXJ5UGFyYW1zKS5zaG91bGQucmVqZWN0ZWRXaXRoKFJlY292ZXJ5UHJvdmlkZXJFcnJvcik7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgZmFpbCB0byByZWNvdmVyIHR4biBpZiB1c2VyS2V5IGlzIG5vdCBwcm92aWRlZCcsIGFzeW5jICgpID0+IHtcbiAgICByZWNvdmVyeVBhcmFtcy51c2VyS2V5ID0gJyc7XG4gICAgYXdhaXQgaWNwLnJlY292ZXIocmVjb3ZlcnlQYXJhbXMpLnNob3VsZC5yZWplY3RlZFdpdGgoJ0Vycm9yIGR1cmluZyBJQ1AgcmVjb3Zlcnk6IG1pc3NpbmcgdXNlcktleScpO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIGZhaWwgdG8gcmVjb3ZlciB0eG4gaWYgYmFja3VwS2V5IGlzIG5vdCBwcm92aWRlZCcsIGFzeW5jICgpID0+IHtcbiAgICByZWNvdmVyeVBhcmFtcy5iYWNrdXBLZXkgPSAnJztcbiAgICBhd2FpdCBpY3AucmVjb3ZlcihyZWNvdmVyeVBhcmFtcykuc2hvdWxkLnJlamVjdGVkV2l0aCgnRXJyb3IgZHVyaW5nIElDUCByZWNvdmVyeTogbWlzc2luZyBiYWNrdXBLZXknKTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCBmYWlsIHRvIHJlY292ZXIgdHhuIGlmIHdhbGxldCBwYXNzcGhyYXNlIGlzIG5vdCBwcm92aWRlZCcsIGFzeW5jICgpID0+IHtcbiAgICByZWNvdmVyeVBhcmFtcy53YWxsZXRQYXNzcGhyYXNlID0gJyc7XG4gICAgYXdhaXQgaWNwLnJlY292ZXIocmVjb3ZlcnlQYXJhbXMpLnNob3VsZC5yZWplY3RlZFdpdGgoJ0Vycm9yIGR1cmluZyBJQ1AgcmVjb3Zlcnk6IG1pc3Npbmcgd2FsbGV0IHBhc3NwaHJhc2UnKTtcbiAgfSk7XG59KTtcbiJdfQ==
|