@bitgo-beta/sdk-core 8.2.1-beta.2037 → 8.2.1-beta.2038
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/bitgo/staking/iStakingWallet.d.ts +2 -2
- package/dist/src/bitgo/staking/iStakingWallet.d.ts.map +1 -1
- package/dist/src/bitgo/staking/iStakingWallet.js +1 -1
- package/dist/src/bitgo/staking/stakingWallet.d.ts.map +1 -1
- package/dist/src/bitgo/staking/stakingWallet.js +14 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +8 -8
|
@@ -82,9 +82,9 @@ export interface StakeOptions {
|
|
|
82
82
|
*/
|
|
83
83
|
blsSignature?: string;
|
|
84
84
|
/**
|
|
85
|
-
* subtype-specific interfaces
|
|
85
|
+
* coin-specific staking subtype. Subtype-specific interfaces may narrow this field.
|
|
86
86
|
*/
|
|
87
|
-
subType?:
|
|
87
|
+
subType?: string;
|
|
88
88
|
/**
|
|
89
89
|
* stx btc reward address
|
|
90
90
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"iStakingWallet.d.ts","sourceRoot":"","sources":["../../../../src/bitgo/staking/iStakingWallet.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,EAAE,0BAA0B,EAAE,yBAAyB,EAAE,MAAM,WAAW,CAAC;AAElF,MAAM,WAAW,cAAc;IAC7B,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,MAAM,CAAC;IACf,iBAAiB,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,gBAAgB,EAAE,MAAM,CAAC;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,kBAAkB,EAAE,MAAM,CAAC;IAC3B,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,kBAAkB,EAAE,CAAC;CACpC;AAED,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,MAAM,aAAa,GAAG;IAC1B,QAAQ,EAAE,MAAM,CAAC;IACjB,aAAa,EAAE,MAAM,CAAC;CACvB,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG;IAC1B,QAAQ,EAAE,MAAM,CAAC;IACjB,aAAa,EAAE,MAAM,CAAC;CACvB,CAAC;AAEF,MAAM,WAAW,gBAAiB,SAAQ,IAAI,CAAC,YAAY,EAAE,SAAS,CAAC;IACrE,OAAO,EAAE,WAAW,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,EAAE,MAAM,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,WAAW,YAAY;IAC3B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;OAEG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;;;;OAIG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB;;OAEG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;;OAEG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB;;OAEG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB;;OAEG;IACH,OAAO,CAAC,EAAE,
|
|
1
|
+
{"version":3,"file":"iStakingWallet.d.ts","sourceRoot":"","sources":["../../../../src/bitgo/staking/iStakingWallet.ts"],"names":[],"mappings":"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"}
|
|
@@ -9,4 +9,4 @@ var DelegationStatus;
|
|
|
9
9
|
DelegationStatus["ACTIVE"] = "ACTIVE";
|
|
10
10
|
DelegationStatus["COMPLETE"] = "COMPLETE";
|
|
11
11
|
})(DelegationStatus || (exports.DelegationStatus = DelegationStatus = {}));
|
|
12
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaVN0YWtpbmdXYWxsZXQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvYml0Z28vc3Rha2luZy9pU3Rha2luZ1dhbGxldC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFxUUEsSUFBWSxnQkFNWDtBQU5ELFdBQVksZ0JBQWdCO0lBQzFCLHVDQUFtQixDQUFBO0lBQ25CLHFDQUFpQixDQUFBO0lBQ2pCLHlDQUFxQixDQUFBO0lBQ3JCLHFDQUFpQixDQUFBO0lBQ2pCLHlDQUFxQixDQUFBO0FBQ3ZCLENBQUMsRUFOVyxnQkFBZ0IsZ0NBQWhCLGdCQUFnQixRQU0zQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFNpZ25lZFRyYW5zYWN0aW9uIH0gZnJvbSAnLi4vYmFzZUNvaW4nO1xuaW1wb3J0IHsgUHJlYnVpbGRUcmFuc2FjdGlvbk9wdGlvbnMsIFByZWJ1aWxkVHJhbnNhY3Rpb25SZXN1bHQgfSBmcm9tICcuLi93YWxsZXQnO1xuXG5leHBvcnQgaW50ZXJmYWNlIFN0YWtpbmdSZXF1ZXN0IHtcbiAgaWQ6IHN0cmluZztcbiAgYW1vdW50OiBzdHJpbmc7XG4gIHdpdGhkcmF3YWxBZGRyZXNzOiBzdHJpbmc7XG4gIGNsaWVudElkPzogc3RyaW5nO1xuICByZXF1ZXN0aW5nVXNlcklkOiBzdHJpbmc7XG4gIHR5cGU6IHN0cmluZztcbiAgZW50ZXJwcmlzZUlkOiBzdHJpbmc7XG4gIHdhbGxldElkOiBzdHJpbmc7XG4gIHdhbGxldFR5cGU6IHN0cmluZztcbiAgY29pbjogc3RyaW5nO1xuICBzdGF0dXM6IHN0cmluZztcbiAgc3RhdHVzTW9kaWZpZWREYXRlOiBzdHJpbmc7XG4gIGNyZWF0ZWREYXRlOiBzdHJpbmc7XG4gIHRyYW5zYWN0aW9uczogU3Rha2luZ1RyYW5zYWN0aW9uW107XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRGVsZWdhdGlvblJlcXVlc3Qge1xuICBhbW91bnQ6IHN0cmluZztcbiAgdmFsaWRhdG9yOiBzdHJpbmc7XG59XG5cbmV4cG9ydCB0eXBlIENvcmVkYW9QYXJhbXMgPSB7XG4gIGV4cGlyZUF0OiBzdHJpbmc7XG4gIHJld2FyZEFkZHJlc3M6IHN0cmluZztcbn07XG5cbmV4cG9ydCB0eXBlIEJhYnlsb25QYXJhbXMgPSB7XG4gIGR1cmF0aW9uOiBzdHJpbmc7XG4gIHJld2FyZEFkZHJlc3M6IHN0cmluZztcbn07XG5cbmV4cG9ydCBpbnRlcmZhY2UgUG94NVN0YWtlT3B0aW9ucyBleHRlbmRzIE9taXQ8U3Rha2VPcHRpb25zLCAnc3ViVHlwZSc+IHtcbiAgc3ViVHlwZTogJ3BveDUtYm9uZCc7XG4gIGJvbmRJbmRleDogbnVtYmVyO1xuICBzaWduZXJNYW5hZ2VyOiBzdHJpbmc7XG4gIG51bUN5Y2xlcz86IHN0cmluZztcbiAgc3RhcnRCdXJuSHQ/OiBzdHJpbmc7XG4gIHNpZ25lckNhbGxkYXRhPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIFJlcHJlc2VudHMgdGhlIG9wdGlvbnMgZm9yIHN0YWtpbmcuXG4gKiBAdHlwZWRlZiB7T2JqZWN0fSBTdGFrZU9wdGlvbnNcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBbYW1vdW50XSAtIGFtb3VudCB0byBzdGFrZVxuICogQHByb3BlcnR5IHtzdHJpbmd9IFtjbGllbnRJZF0gLSBjbGllbnRJZFxuICogQHByb3BlcnR5IHtzdHJpbmd9IFt2YWxpZGF0b3JdIC0gY2hvc2VuIHZhbGlkYXRvclxuICogQHByb3BlcnR5IHtzdHJpbmd9IFtkdXJhdGlvbl0gLSBkZWxlZ2F0aW9uIGR1cmF0aW9uOiBhIG51bWVyaWMgc3RyaW5nLCBpbiBkYXlzIG9yIGN5Y2xlc1xuICogQHByb3BlcnR5IHtzdHJpbmd9IFtzdWJUeXBlXSAtIGNvaW4gc2VwY2lmaWMgc3Rha2luZyBzdWJ0eXBlXG4gKiBAcHJvcGVydHkge3N0cmluZ30gW2J0Y1Jld2FyZEFkZHJlc3NdIC0gYnRjIHJld2FyZCBhZGRyZXNzXG4gKiBAcHJvcGVydHkge3N0cmluZ30gW3NpZ25lclB1Yl0gLSBzdHggc2lnbmVyIHB1YmxpYyBrZXlcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBbc2lnbmVyU2lnbmF0dXJlXSAtIHN0eCBzaWduZXIgc2lnbmF0dXJlXG4gKiBAcHJvcGVydHkge3N0cmluZ30gW21heEFtb3VudF0gLSBzdHggbWF4IGFtb3VudFxuICogQHByb3BlcnR5IHtzdHJpbmd9IFthdXRoSWRdIC0gc3R4IGF1dGgtaWRcbiAqIEBwcm9wZXJ0eSB7RGVsZWdhdGlvblJlcXVlc3RbXX0gW2RlbGVnYXRpb25SZXF1ZXN0c10gLSBUaGUgZGVsZWdhdGlvbiByZXF1ZXN0c1xuICogVE9ETzogcmVtb3ZlIHN1cHBvcnQgdG8gdGhpcyBjb250cmFjdCB2ZXJzaW9uIGFmdGVyIFNUWCBmb3JrXG4gKiBodHRwczovL2JpdGdvaW5jLmF0bGFzc2lhbi5uZXQvYnJvd3NlL0VBLTM0ODJcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBbY29udHJhY3ROYW1lXSAtIHN0eCBjb250cmFjdCBuYW1lOiB2YWxpZCBuYW1lcyBhcmUgcG94LTMsIHBveC00IGFuZCBwb3gtNSBvbmx5LCB1c2VkIG9ubHkgZm9yIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkgZHVyaW5nIHBveCBjb250cmFjdCBmb3Jrc1xuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU3Rha2VPcHRpb25zIHtcbiAgYW1vdW50Pzogc3RyaW5nO1xuICBjbGllbnRJZD86IHN0cmluZztcbiAgdmFsaWRhdG9yPzogc3RyaW5nO1xuICAvKipcbiAgICogdXNlZCB0byBzZWxlY3QgYSBwcm92aWRlciBpbnN0ZWFkIG9mIGEgdmFsaWRhdG9yIGFkZHJlc3MgKGkuZSBmb3IgRVRIIGZsb3cpXG4gICAqL1xuICBwcm92aWRlcj86IHN0cmluZztcbiAgLyoqXG4gICAqIGZsYWcgdG8gaW5kaWNhdGUgaWYgdGhlIHN0YWtpbmcgcmVxdWVzdCBpcyBmb3IgcmVzdGFraW5nXG4gICAqXG4gICAqIGkuZTogRVRIIHJlc3Rha2luZyBmbG93XG4gICAqL1xuICBpc1Jlc3Rha2luZz86IGJvb2xlYW47XG4gIC8qKlxuICAgKiBkZWxlZ2F0aW9uIGR1cmF0aW9uOiBhIG51bWVyaWMgc3RyaW5nLCBpbiBkYXlzIG9yIGN5Y2xlc1xuICAgKi9cbiAgZHVyYXRpb24/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBCTFMgcHVibGljIGtleSAoY3VycmVudGx5IHVzZWQgZm9yIEFWQVhQIHN0YWtpbmcpXG4gICAqL1xuICBibHNQdWJsaWNLZXk/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBCTFMgc2lnbmF0dXJlIChjdXJyZW50bHkgdXNlZCBmb3IgQVZBWFAgc3Rha2luZylcbiAgICovXG4gIGJsc1NpZ25hdHVyZT86IHN0cmluZztcbiAgLyoqXG4gICAqIHN1YnR5cGUtc3BlY2lmaWMgaW50ZXJmYWNlcyBwcm92aWRlIHRoZWlyIG93biBkaXNjcmltaW5hbnRcbiAgICovXG4gIHN1YlR5cGU/OiBuZXZlcjtcbiAgLyoqXG4gICAqIHN0eCBidGMgcmV3YXJkIGFkZHJlc3NcbiAgICovXG4gIGJ0Y1Jld2FyZEFkZHJlc3M/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIHN0eCBzaWduZXIgcHViXG4gICAqL1xuICBzaWduZXJQdWI/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIHN0eCBzaWduZXIgc2lnbmF0dXJlXG4gICAqL1xuICBzaWduZXJTaWduYXR1cmU/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIHN0eCBtYXggYW1vdW50XG4gICAqL1xuICBtYXhBbW91bnQ/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIHN0eCBhdXRoLWlkXG4gICAqL1xuICBhdXRoSWQ/OiBzdHJpbmc7XG5cbiAgZGVsZWdhdGlvblJlcXVlc3RzPzogRGVsZWdhdGlvblJlcXVlc3RbXTtcblxuICAvLyBUT0RPOiByZW1vdmUgc3VwcG9ydCB0byB0aGlzIGNvbnRyYWN0IHZlcnNpb24gYWZ0ZXIgU1RYIGZvcmtcbiAgLy8gaHR0cHM6Ly9iaXRnb2luYy5hdGxhc3NpYW4ubmV0L2Jyb3dzZS9FQS0zNDgyXG4gIC8qKlxuICAgKiBwb3gtY29udHJhY3QgbmFtZSAodmFsaWQgdmFsdWVzIGFyZSBwb3gtMywgcG94LTQgYW5kIHBveC01KVxuICAgKi9cbiAgY29udHJhY3ROYW1lPzogJ3BveC0zJyB8ICdwb3gtNCcgfCAncG94LTUnO1xuXG4gIC8qKlxuICAgKiBidGMgc3Rha2luZyBleHBpcmUgdGltZVxuICAgKi9cbiAgZXhwaXJlQXQ/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIGJ0YyBzdGFraW5nIHJld2FyZCBhZGRyZXNzXG4gICAqL1xuICByZXdhcmRBZGRyZXNzPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBidGMgYmFieWxvbiBzdGFraW5nIHBhcmFtc1xuICAgKi9cblxuICBiYWJ5bG9uPzogQmFieWxvblBhcmFtcztcblxuICAvKipcbiAgICogYnRjIGNvcmVkYW8gc3Rha2luZyBwYXJhbXNcbiAgICovXG5cbiAgY29yZWRhbz86IENvcmVkYW9QYXJhbXM7XG5cbiAgLyoqXG4gICAqIGFkYSB2b3RlIGRlbGVnYXRpb24gZHJlcCBpZFxuICAgKi9cbiAgZFJlcElkPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBiZXJhIG5hdGl2ZSBzdGFraW5nIG9wZXJhdG9yXG4gICAqL1xuICBvcGVyYXRvcj86IHN0cmluZztcblxuICAvKipcbiAgICogYmVyYSBuYXRpdmUgc3Rha2luZyB3aXRoZHJhdyBjcmVkZW50aWFsc1xuICAgKi9cbiAgd2l0aGRyYXdDcmVkZW50aWFscz86IHN0cmluZztcblxuICAvKipcbiAgICogYmVyYSBuYXRpdmUgc3Rha2luZyBkZXBvc2l0IHNpZ25hdHVyZVxuICAgKi9cbiAgZGVwb3NpdFNpZ25hdHVyZT86IHN0cmluZztcblxuICAvKipcbiAgICogcmVnaW9uIGZvciBldGggc3Rha2luZ1xuICAgKi9cbiAgcmVnaW9uPzogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFhkY1N0YWtlT3B0aW9ucyBleHRlbmRzIFN0YWtlT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBYREMgbWFzdGVybm9kZSBLWUMgZG9jdW1lbnQgaGFzaCDigJQgSVBGUyBDSUR2MCAoUW0uLi4pIHJldHVybmVkIGJ5IHRoZVxuICAgKiBzdGFraW5nLXNlcnZpY2UgS1lDIHVwbG9hZCBlbmRwb2ludCwgaW5qZWN0ZWQgYmVmb3JlIGNhbGxpbmcgc3Rha2UoKS5cbiAgICovXG4gIGt5Y0hhc2g/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVHJvblN0YWtlT3B0aW9ucyBleHRlbmRzIFN0YWtlT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBUcm9uIHN0YWtpbmcgcmVzb3VyY2UgdHlwZSAoRW5lcmd5IG9yIEJhbmR3aWR0aClcbiAgICovXG4gIHJlc291cmNlVHlwZT86IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBUYW9TdGFrZU9wdGlvbnMgZXh0ZW5kcyBTdGFrZU9wdGlvbnMge1xuICAvKipcbiAgICogdGFvIHN0YWtpbmcgbmV0VUlEXG4gICAqL1xuICBuZXRVSUQ/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVmV0U3Rha2VPcHRpb25zIGV4dGVuZHMgU3Rha2VPcHRpb25zIHtcbiAgLyoqXG4gICAqIHZldCBzdGFraW5nIG5mdCB0aWVyXG4gICAqL1xuICBuZnRUaWVyPzogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFN0b3J5U3Rha2VPcHRpb25zIGV4dGVuZHMgU3Rha2VPcHRpb25zIHtcbiAgLyoqXG4gICAqIERhdGEgTmV0d29yayBzdGFraW5nIHBlcmlvZFxuICAgKi9cbiAgc3Rha2luZ1BlcmlvZD86IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBVbnN0YWtlT3B0aW9ucyB7XG4gIGFtb3VudDogc3RyaW5nO1xuICBjbGllbnRJZD86IHN0cmluZztcbiAgZGVsZWdhdGlvbklkPzogc3RyaW5nO1xuICAvKipcbiAgICogY29pbiBzZXBjaWZpYyBzdGFraW5nIHN1YnR5cGVcbiAgICovXG4gIHN1YlR5cGU/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRXRoVW5zdGFrZU9wdGlvbnMge1xuICBjbGllbnRJZD86IHN0cmluZztcbiAgZGVsZWdhdGlvbklkcz86IHN0cmluZ1tdO1xuICB1bnN0YWtlQWxsPzogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBTd2l0Y2hWYWxpZGF0b3JPcHRpb25zIHtcbiAgYW1vdW50OiBzdHJpbmc7XG4gIGNsaWVudElkPzogc3RyaW5nO1xuICBkZWxlZ2F0aW9uSWQ6IHN0cmluZztcbiAgdmFsaWRhdG9yOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVGFvU3dpdGNoVmFsaWRhdG9yT3B0aW9ucyBleHRlbmRzIFN3aXRjaFZhbGlkYXRvck9wdGlvbnMge1xuICBuZXRVSUQ6IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBQb2x5eFN3aXRjaFZhbGlkYXRvck9wdGlvbnMge1xuICBkZWxlZ2F0aW9uSWQ6IHN0cmluZztcbiAgdmFsaWRhdG9yczogc3RyaW5nW107XG4gIGNsaWVudElkPzogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIENsYWltUmV3YXJkc09wdGlvbnMge1xuICBhbW91bnQ6IHN0cmluZztcbiAgY2xpZW50SWQ/OiBzdHJpbmc7XG4gIGRlbGVnYXRpb25JZD86IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBEZWxlZ2F0aW9uT3B0aW9ucyB7XG4gIGRlbGVnYXRpb25TdGF0dXM/OiBEZWxlZ2F0aW9uU3RhdHVzO1xuICBkZWxlZ2F0aW9uSWRzPzogU2V0PHN0cmluZz47XG4gIHBhZ2U/OiBudW1iZXI7XG4gIHBhZ2VTaXplPzogbnVtYmVyO1xuICBzb3J0Qnk/OiBDUkVBVEVEX0RBVEVfREVTQyB8IENSRUFURURfREFURV9BU0M7XG59XG5cbmV4cG9ydCB0eXBlIENSRUFURURfREFURV9ERVNDID0gJy1jcmVhdGVkRGF0ZSc7XG5leHBvcnQgdHlwZSBDUkVBVEVEX0RBVEVfQVNDID0gJ2NyZWF0ZWREYXRlJztcblxuZXhwb3J0IGVudW0gRGVsZWdhdGlvblN0YXR1cyB7XG4gIFBFTkRJTkcgPSAnUEVORElORycsXG4gIEZBSUxFRCA9ICdGQUlMRUQnLFxuICBSRUpFQ1RFRCA9ICdSRUpFQ1RFRCcsXG4gIEFDVElWRSA9ICdBQ1RJVkUnLFxuICBDT01QTEVURSA9ICdDT01QTEVURScsXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRGVsZWdhdGlvblJlc3VsdHMge1xuICBkZWxlZ2F0aW9uczogRGVsZWdhdGlvbltdO1xuICBwYWdlOiBudW1iZXI7XG4gIHRvdGFsUGFnZXM6IG51bWJlcjtcbiAgdG90YWxFbGVtZW50czogbnVtYmVyO1xufVxuZXhwb3J0IGludGVyZmFjZSBEZWxlZ2F0aW9uIHtcbiAgaWQ6IHN0cmluZztcbiAgZGVsZWdhdGlvbkFkZHJlc3M6IHN0cmluZztcbiAgd2l0aGRyYXdhbEFkZHJlc3M6IHN0cmluZztcbiAgZGVsZWdhdGVkOiBudW1iZXI7XG4gIGNvaW46IHN0cmluZztcbiAgd2FsbGV0SWQ6IHN0cmluZztcbiAgc3RhdHVzOiBEZWxlZ2F0aW9uU3RhdHVzO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFRyYW5zYWN0aW9uc1JlYWR5VG9TaWduIHtcbiAgYWxsU2lnbmluZ0NvbXBsZXRlOiBib29sZWFuO1xuICB0cmFuc2FjdGlvbnM6IFN0YWtpbmdUcmFuc2FjdGlvbltdO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFN0YWtpbmdUcmFuc2FjdGlvbiB7XG4gIGlkOiBzdHJpbmc7XG4gIHN0YWtpbmdSZXF1ZXN0SWQ6IHN0cmluZztcbiAgZGVsZWdhdGlvbklkOiBzdHJpbmc7XG4gIHRyYW5zYWN0aW9uVHlwZTogc3RyaW5nO1xuICBjcmVhdGVkRGF0ZTogc3RyaW5nO1xuICBzdGF0dXM6IHN0cmluZztcbiAgc3RhdHVzTW9kaWZpZWREYXRlOiBzdHJpbmc7XG4gIGFtb3VudDogc3RyaW5nO1xuICBwZW5kaW5nQXBwcm92YWxJZD86IHN0cmluZztcbiAgdHJhbnNmZXJJZD86IHN0cmluZztcbiAgdHhSZXF1ZXN0SWQ/OiBzdHJpbmc7XG4gIGJ1aWxkUGFyYW1zPzogUHJlYnVpbGRUcmFuc2FjdGlvbk9wdGlvbnM7XG4gIGdhc1ByaWNlPzogc3RyaW5nO1xufVxuXG5leHBvcnQgdHlwZSBTdGFraW5nVHhSZXF1ZXN0UHJlYnVpbGRUcmFuc2FjdGlvblJlc3VsdCA9IHtcbiAgd2FsbGV0SWQ6IHN0cmluZztcbiAgdHhSZXF1ZXN0SWQ6IHN0cmluZztcbn07XG5cbmV4cG9ydCBpbnRlcmZhY2UgU3Rha2luZ1ByZWJ1aWxkVHJhbnNhY3Rpb25SZXN1bHQge1xuICB0cmFuc2FjdGlvbjogU3Rha2luZ1RyYW5zYWN0aW9uO1xuICByZXN1bHQ6IFByZWJ1aWxkVHJhbnNhY3Rpb25SZXN1bHQgfCBTdGFraW5nVHhSZXF1ZXN0UHJlYnVpbGRUcmFuc2FjdGlvblJlc3VsdDtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBTdGFraW5nU2lnbmVkVHJhbnNhY3Rpb24ge1xuICB0cmFuc2FjdGlvbjogU3Rha2luZ1RyYW5zYWN0aW9uO1xuICBzaWduZWQ6IFNpZ25lZFRyYW5zYWN0aW9uO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFN0YWtpbmdTaWduT3B0aW9ucyB7XG4gIHdhbGxldFBhc3NwaHJhc2U6IHN0cmluZztcbiAgdHJhbnNhY3Rpb25WZXJpZmljYXRpb25PcHRpb25zPzoge1xuICAgIC8qKlxuICAgICAqIFNraXAgdHJhbnNhY3Rpb24gdmVyaWZpY2F0aW9uLiBOb3QgcmVjb21tZW5kZWQgdW5sZXNzIHlvdSBoYXZlIG1hbnVhbGx5IHZlcmlmaWVkIHRoZSB0cmFuc2FjdGlvbiBkZXRhaWxzLlxuICAgICAqIEBkZWZhdWx0IGZhbHNlXG4gICAgICovXG4gICAgc2tpcFRyYW5zYWN0aW9uVmVyaWZpY2F0aW9uPzogYm9vbGVhbjtcbiAgfTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJU3Rha2luZ1dhbGxldCB7XG4gIHJlYWRvbmx5IHdhbGxldElkOiBzdHJpbmc7XG4gIHJlYWRvbmx5IGNvaW46IHN0cmluZztcbiAgc3Rha2UoXG4gICAgb3B0aW9uczpcbiAgICAgIHwgU3Rha2VPcHRpb25zXG4gICAgICB8IFBveDVTdGFrZU9wdGlvbnNcbiAgICAgIHwgVHJvblN0YWtlT3B0aW9uc1xuICAgICAgfCBUYW9TdGFrZU9wdGlvbnNcbiAgICAgIHwgVmV0U3Rha2VPcHRpb25zXG4gICAgICB8IFN0b3J5U3Rha2VPcHRpb25zXG4gICAgICB8IFhkY1N0YWtlT3B0aW9uc1xuICApOiBQcm9taXNlPFN0YWtpbmdSZXF1ZXN0PjtcbiAgdW5zdGFrZShvcHRpb25zOiBVbnN0YWtlT3B0aW9ucyB8IEV0aFVuc3Rha2VPcHRpb25zKTogUHJvbWlzZTxTdGFraW5nUmVxdWVzdD47XG4gIHN3aXRjaFZhbGlkYXRvcihcbiAgICBvcHRpb25zOiBTd2l0Y2hWYWxpZGF0b3JPcHRpb25zIHwgVGFvU3dpdGNoVmFsaWRhdG9yT3B0aW9ucyB8IFBvbHl4U3dpdGNoVmFsaWRhdG9yT3B0aW9uc1xuICApOiBQcm9taXNlPFN0YWtpbmdSZXF1ZXN0PjtcbiAgY2xhaW1SZXdhcmRzKG9wdGlvbnM6IENsYWltUmV3YXJkc09wdGlvbnMpOiBQcm9taXNlPFN0YWtpbmdSZXF1ZXN0PjtcbiAgZ2V0U3Rha2luZ1JlcXVlc3Qoc3Rha2luZ1JlcXVlc3RJZDogc3RyaW5nKTogUHJvbWlzZTxTdGFraW5nUmVxdWVzdD47XG4gIGdldFRyYW5zYWN0aW9uc1JlYWR5VG9TaWduKHN0YWtpbmdSZXF1ZXN0SWQ6IHN0cmluZyk6IFByb21pc2U8VHJhbnNhY3Rpb25zUmVhZHlUb1NpZ24+O1xuICBidWlsZCh0cmFuc2FjdGlvbjogU3Rha2luZ1RyYW5zYWN0aW9uKTogUHJvbWlzZTxTdGFraW5nUHJlYnVpbGRUcmFuc2FjdGlvblJlc3VsdD47XG4gIHNpZ24oXG4gICAgc2lnbk9wdGlvbnM6IFN0YWtpbmdTaWduT3B0aW9ucyxcbiAgICBzdGFraW5nUHJlYnVpbGRUcmFuc2FjdGlvbjogU3Rha2luZ1ByZWJ1aWxkVHJhbnNhY3Rpb25SZXN1bHRcbiAgKTogUHJvbWlzZTxTdGFraW5nU2lnbmVkVHJhbnNhY3Rpb24+O1xuICBzZW5kKHNpZ25lZFRyYW5zYWN0aW9uOiBTdGFraW5nU2lnbmVkVHJhbnNhY3Rpb24pOiBQcm9taXNlPFN0YWtpbmdUcmFuc2FjdGlvbj47XG4gIGJ1aWxkU2lnbkFuZFNlbmQoc2lnbk9wdGlvbnM6IFN0YWtpbmdTaWduT3B0aW9ucywgdHJhbnNhY3Rpb246IFN0YWtpbmdUcmFuc2FjdGlvbik7XG4gIGJ1aWxkQW5kU2lnbihzaWduT3B0aW9uczogU3Rha2luZ1NpZ25PcHRpb25zLCB0cmFuc2FjdGlvbjogU3Rha2luZ1RyYW5zYWN0aW9uKTtcbiAgY2FuY2VsU3Rha2luZ1JlcXVlc3Qoc3Rha2luZ1JlcXVlc3RJZDogc3RyaW5nKTogUHJvbWlzZTxTdGFraW5nUmVxdWVzdD47XG4gIHByZWJ1aWxkU2VsZk1hbmFnZWRTdGFraW5nVHJhbnNhY3Rpb24odHJhbnNhY3Rpb246IFN0YWtpbmdUcmFuc2FjdGlvbik6IFByb21pc2U8UHJlYnVpbGRUcmFuc2FjdGlvblJlc3VsdD47XG59XG4iXX0=
|
|
12
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaVN0YWtpbmdXYWxsZXQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvYml0Z28vc3Rha2luZy9pU3Rha2luZ1dhbGxldC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFxUUEsSUFBWSxnQkFNWDtBQU5ELFdBQVksZ0JBQWdCO0lBQzFCLHVDQUFtQixDQUFBO0lBQ25CLHFDQUFpQixDQUFBO0lBQ2pCLHlDQUFxQixDQUFBO0lBQ3JCLHFDQUFpQixDQUFBO0lBQ2pCLHlDQUFxQixDQUFBO0FBQ3ZCLENBQUMsRUFOVyxnQkFBZ0IsZ0NBQWhCLGdCQUFnQixRQU0zQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFNpZ25lZFRyYW5zYWN0aW9uIH0gZnJvbSAnLi4vYmFzZUNvaW4nO1xuaW1wb3J0IHsgUHJlYnVpbGRUcmFuc2FjdGlvbk9wdGlvbnMsIFByZWJ1aWxkVHJhbnNhY3Rpb25SZXN1bHQgfSBmcm9tICcuLi93YWxsZXQnO1xuXG5leHBvcnQgaW50ZXJmYWNlIFN0YWtpbmdSZXF1ZXN0IHtcbiAgaWQ6IHN0cmluZztcbiAgYW1vdW50OiBzdHJpbmc7XG4gIHdpdGhkcmF3YWxBZGRyZXNzOiBzdHJpbmc7XG4gIGNsaWVudElkPzogc3RyaW5nO1xuICByZXF1ZXN0aW5nVXNlcklkOiBzdHJpbmc7XG4gIHR5cGU6IHN0cmluZztcbiAgZW50ZXJwcmlzZUlkOiBzdHJpbmc7XG4gIHdhbGxldElkOiBzdHJpbmc7XG4gIHdhbGxldFR5cGU6IHN0cmluZztcbiAgY29pbjogc3RyaW5nO1xuICBzdGF0dXM6IHN0cmluZztcbiAgc3RhdHVzTW9kaWZpZWREYXRlOiBzdHJpbmc7XG4gIGNyZWF0ZWREYXRlOiBzdHJpbmc7XG4gIHRyYW5zYWN0aW9uczogU3Rha2luZ1RyYW5zYWN0aW9uW107XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRGVsZWdhdGlvblJlcXVlc3Qge1xuICBhbW91bnQ6IHN0cmluZztcbiAgdmFsaWRhdG9yOiBzdHJpbmc7XG59XG5cbmV4cG9ydCB0eXBlIENvcmVkYW9QYXJhbXMgPSB7XG4gIGV4cGlyZUF0OiBzdHJpbmc7XG4gIHJld2FyZEFkZHJlc3M6IHN0cmluZztcbn07XG5cbmV4cG9ydCB0eXBlIEJhYnlsb25QYXJhbXMgPSB7XG4gIGR1cmF0aW9uOiBzdHJpbmc7XG4gIHJld2FyZEFkZHJlc3M6IHN0cmluZztcbn07XG5cbmV4cG9ydCBpbnRlcmZhY2UgUG94NVN0YWtlT3B0aW9ucyBleHRlbmRzIE9taXQ8U3Rha2VPcHRpb25zLCAnc3ViVHlwZSc+IHtcbiAgc3ViVHlwZTogJ3BveDUtYm9uZCc7XG4gIGJvbmRJbmRleDogbnVtYmVyO1xuICBzaWduZXJNYW5hZ2VyOiBzdHJpbmc7XG4gIG51bUN5Y2xlcz86IHN0cmluZztcbiAgc3RhcnRCdXJuSHQ/OiBzdHJpbmc7XG4gIHNpZ25lckNhbGxkYXRhPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIFJlcHJlc2VudHMgdGhlIG9wdGlvbnMgZm9yIHN0YWtpbmcuXG4gKiBAdHlwZWRlZiB7T2JqZWN0fSBTdGFrZU9wdGlvbnNcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBbYW1vdW50XSAtIGFtb3VudCB0byBzdGFrZVxuICogQHByb3BlcnR5IHtzdHJpbmd9IFtjbGllbnRJZF0gLSBjbGllbnRJZFxuICogQHByb3BlcnR5IHtzdHJpbmd9IFt2YWxpZGF0b3JdIC0gY2hvc2VuIHZhbGlkYXRvclxuICogQHByb3BlcnR5IHtzdHJpbmd9IFtkdXJhdGlvbl0gLSBkZWxlZ2F0aW9uIGR1cmF0aW9uOiBhIG51bWVyaWMgc3RyaW5nLCBpbiBkYXlzIG9yIGN5Y2xlc1xuICogQHByb3BlcnR5IHtzdHJpbmd9IFtzdWJUeXBlXSAtIGNvaW4gc2VwY2lmaWMgc3Rha2luZyBzdWJ0eXBlXG4gKiBAcHJvcGVydHkge3N0cmluZ30gW2J0Y1Jld2FyZEFkZHJlc3NdIC0gYnRjIHJld2FyZCBhZGRyZXNzXG4gKiBAcHJvcGVydHkge3N0cmluZ30gW3NpZ25lclB1Yl0gLSBzdHggc2lnbmVyIHB1YmxpYyBrZXlcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBbc2lnbmVyU2lnbmF0dXJlXSAtIHN0eCBzaWduZXIgc2lnbmF0dXJlXG4gKiBAcHJvcGVydHkge3N0cmluZ30gW21heEFtb3VudF0gLSBzdHggbWF4IGFtb3VudFxuICogQHByb3BlcnR5IHtzdHJpbmd9IFthdXRoSWRdIC0gc3R4IGF1dGgtaWRcbiAqIEBwcm9wZXJ0eSB7RGVsZWdhdGlvblJlcXVlc3RbXX0gW2RlbGVnYXRpb25SZXF1ZXN0c10gLSBUaGUgZGVsZWdhdGlvbiByZXF1ZXN0c1xuICogVE9ETzogcmVtb3ZlIHN1cHBvcnQgdG8gdGhpcyBjb250cmFjdCB2ZXJzaW9uIGFmdGVyIFNUWCBmb3JrXG4gKiBodHRwczovL2JpdGdvaW5jLmF0bGFzc2lhbi5uZXQvYnJvd3NlL0VBLTM0ODJcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBbY29udHJhY3ROYW1lXSAtIHN0eCBjb250cmFjdCBuYW1lOiB2YWxpZCBuYW1lcyBhcmUgcG94LTMsIHBveC00IGFuZCBwb3gtNSBvbmx5LCB1c2VkIG9ubHkgZm9yIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkgZHVyaW5nIHBveCBjb250cmFjdCBmb3Jrc1xuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU3Rha2VPcHRpb25zIHtcbiAgYW1vdW50Pzogc3RyaW5nO1xuICBjbGllbnRJZD86IHN0cmluZztcbiAgdmFsaWRhdG9yPzogc3RyaW5nO1xuICAvKipcbiAgICogdXNlZCB0byBzZWxlY3QgYSBwcm92aWRlciBpbnN0ZWFkIG9mIGEgdmFsaWRhdG9yIGFkZHJlc3MgKGkuZSBmb3IgRVRIIGZsb3cpXG4gICAqL1xuICBwcm92aWRlcj86IHN0cmluZztcbiAgLyoqXG4gICAqIGZsYWcgdG8gaW5kaWNhdGUgaWYgdGhlIHN0YWtpbmcgcmVxdWVzdCBpcyBmb3IgcmVzdGFraW5nXG4gICAqXG4gICAqIGkuZTogRVRIIHJlc3Rha2luZyBmbG93XG4gICAqL1xuICBpc1Jlc3Rha2luZz86IGJvb2xlYW47XG4gIC8qKlxuICAgKiBkZWxlZ2F0aW9uIGR1cmF0aW9uOiBhIG51bWVyaWMgc3RyaW5nLCBpbiBkYXlzIG9yIGN5Y2xlc1xuICAgKi9cbiAgZHVyYXRpb24/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBCTFMgcHVibGljIGtleSAoY3VycmVudGx5IHVzZWQgZm9yIEFWQVhQIHN0YWtpbmcpXG4gICAqL1xuICBibHNQdWJsaWNLZXk/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBCTFMgc2lnbmF0dXJlIChjdXJyZW50bHkgdXNlZCBmb3IgQVZBWFAgc3Rha2luZylcbiAgICovXG4gIGJsc1NpZ25hdHVyZT86IHN0cmluZztcbiAgLyoqXG4gICAqIGNvaW4tc3BlY2lmaWMgc3Rha2luZyBzdWJ0eXBlLiBTdWJ0eXBlLXNwZWNpZmljIGludGVyZmFjZXMgbWF5IG5hcnJvdyB0aGlzIGZpZWxkLlxuICAgKi9cbiAgc3ViVHlwZT86IHN0cmluZztcbiAgLyoqXG4gICAqIHN0eCBidGMgcmV3YXJkIGFkZHJlc3NcbiAgICovXG4gIGJ0Y1Jld2FyZEFkZHJlc3M/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIHN0eCBzaWduZXIgcHViXG4gICAqL1xuICBzaWduZXJQdWI/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIHN0eCBzaWduZXIgc2lnbmF0dXJlXG4gICAqL1xuICBzaWduZXJTaWduYXR1cmU/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIHN0eCBtYXggYW1vdW50XG4gICAqL1xuICBtYXhBbW91bnQ/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIHN0eCBhdXRoLWlkXG4gICAqL1xuICBhdXRoSWQ/OiBzdHJpbmc7XG5cbiAgZGVsZWdhdGlvblJlcXVlc3RzPzogRGVsZWdhdGlvblJlcXVlc3RbXTtcblxuICAvLyBUT0RPOiByZW1vdmUgc3VwcG9ydCB0byB0aGlzIGNvbnRyYWN0IHZlcnNpb24gYWZ0ZXIgU1RYIGZvcmtcbiAgLy8gaHR0cHM6Ly9iaXRnb2luYy5hdGxhc3NpYW4ubmV0L2Jyb3dzZS9FQS0zNDgyXG4gIC8qKlxuICAgKiBwb3gtY29udHJhY3QgbmFtZSAodmFsaWQgdmFsdWVzIGFyZSBwb3gtMywgcG94LTQgYW5kIHBveC01KVxuICAgKi9cbiAgY29udHJhY3ROYW1lPzogJ3BveC0zJyB8ICdwb3gtNCcgfCAncG94LTUnO1xuXG4gIC8qKlxuICAgKiBidGMgc3Rha2luZyBleHBpcmUgdGltZVxuICAgKi9cbiAgZXhwaXJlQXQ/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIGJ0YyBzdGFraW5nIHJld2FyZCBhZGRyZXNzXG4gICAqL1xuICByZXdhcmRBZGRyZXNzPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBidGMgYmFieWxvbiBzdGFraW5nIHBhcmFtc1xuICAgKi9cblxuICBiYWJ5bG9uPzogQmFieWxvblBhcmFtcztcblxuICAvKipcbiAgICogYnRjIGNvcmVkYW8gc3Rha2luZyBwYXJhbXNcbiAgICovXG5cbiAgY29yZWRhbz86IENvcmVkYW9QYXJhbXM7XG5cbiAgLyoqXG4gICAqIGFkYSB2b3RlIGRlbGVnYXRpb24gZHJlcCBpZFxuICAgKi9cbiAgZFJlcElkPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBiZXJhIG5hdGl2ZSBzdGFraW5nIG9wZXJhdG9yXG4gICAqL1xuICBvcGVyYXRvcj86IHN0cmluZztcblxuICAvKipcbiAgICogYmVyYSBuYXRpdmUgc3Rha2luZyB3aXRoZHJhdyBjcmVkZW50aWFsc1xuICAgKi9cbiAgd2l0aGRyYXdDcmVkZW50aWFscz86IHN0cmluZztcblxuICAvKipcbiAgICogYmVyYSBuYXRpdmUgc3Rha2luZyBkZXBvc2l0IHNpZ25hdHVyZVxuICAgKi9cbiAgZGVwb3NpdFNpZ25hdHVyZT86IHN0cmluZztcblxuICAvKipcbiAgICogcmVnaW9uIGZvciBldGggc3Rha2luZ1xuICAgKi9cbiAgcmVnaW9uPzogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFhkY1N0YWtlT3B0aW9ucyBleHRlbmRzIFN0YWtlT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBYREMgbWFzdGVybm9kZSBLWUMgZG9jdW1lbnQgaGFzaCDigJQgSVBGUyBDSUR2MCAoUW0uLi4pIHJldHVybmVkIGJ5IHRoZVxuICAgKiBzdGFraW5nLXNlcnZpY2UgS1lDIHVwbG9hZCBlbmRwb2ludCwgaW5qZWN0ZWQgYmVmb3JlIGNhbGxpbmcgc3Rha2UoKS5cbiAgICovXG4gIGt5Y0hhc2g/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVHJvblN0YWtlT3B0aW9ucyBleHRlbmRzIFN0YWtlT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBUcm9uIHN0YWtpbmcgcmVzb3VyY2UgdHlwZSAoRW5lcmd5IG9yIEJhbmR3aWR0aClcbiAgICovXG4gIHJlc291cmNlVHlwZT86IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBUYW9TdGFrZU9wdGlvbnMgZXh0ZW5kcyBTdGFrZU9wdGlvbnMge1xuICAvKipcbiAgICogdGFvIHN0YWtpbmcgbmV0VUlEXG4gICAqL1xuICBuZXRVSUQ/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVmV0U3Rha2VPcHRpb25zIGV4dGVuZHMgU3Rha2VPcHRpb25zIHtcbiAgLyoqXG4gICAqIHZldCBzdGFraW5nIG5mdCB0aWVyXG4gICAqL1xuICBuZnRUaWVyPzogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFN0b3J5U3Rha2VPcHRpb25zIGV4dGVuZHMgU3Rha2VPcHRpb25zIHtcbiAgLyoqXG4gICAqIERhdGEgTmV0d29yayBzdGFraW5nIHBlcmlvZFxuICAgKi9cbiAgc3Rha2luZ1BlcmlvZD86IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBVbnN0YWtlT3B0aW9ucyB7XG4gIGFtb3VudDogc3RyaW5nO1xuICBjbGllbnRJZD86IHN0cmluZztcbiAgZGVsZWdhdGlvbklkPzogc3RyaW5nO1xuICAvKipcbiAgICogY29pbiBzZXBjaWZpYyBzdGFraW5nIHN1YnR5cGVcbiAgICovXG4gIHN1YlR5cGU/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRXRoVW5zdGFrZU9wdGlvbnMge1xuICBjbGllbnRJZD86IHN0cmluZztcbiAgZGVsZWdhdGlvbklkcz86IHN0cmluZ1tdO1xuICB1bnN0YWtlQWxsPzogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBTd2l0Y2hWYWxpZGF0b3JPcHRpb25zIHtcbiAgYW1vdW50OiBzdHJpbmc7XG4gIGNsaWVudElkPzogc3RyaW5nO1xuICBkZWxlZ2F0aW9uSWQ6IHN0cmluZztcbiAgdmFsaWRhdG9yOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVGFvU3dpdGNoVmFsaWRhdG9yT3B0aW9ucyBleHRlbmRzIFN3aXRjaFZhbGlkYXRvck9wdGlvbnMge1xuICBuZXRVSUQ6IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBQb2x5eFN3aXRjaFZhbGlkYXRvck9wdGlvbnMge1xuICBkZWxlZ2F0aW9uSWQ6IHN0cmluZztcbiAgdmFsaWRhdG9yczogc3RyaW5nW107XG4gIGNsaWVudElkPzogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIENsYWltUmV3YXJkc09wdGlvbnMge1xuICBhbW91bnQ6IHN0cmluZztcbiAgY2xpZW50SWQ/OiBzdHJpbmc7XG4gIGRlbGVnYXRpb25JZD86IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBEZWxlZ2F0aW9uT3B0aW9ucyB7XG4gIGRlbGVnYXRpb25TdGF0dXM/OiBEZWxlZ2F0aW9uU3RhdHVzO1xuICBkZWxlZ2F0aW9uSWRzPzogU2V0PHN0cmluZz47XG4gIHBhZ2U/OiBudW1iZXI7XG4gIHBhZ2VTaXplPzogbnVtYmVyO1xuICBzb3J0Qnk/OiBDUkVBVEVEX0RBVEVfREVTQyB8IENSRUFURURfREFURV9BU0M7XG59XG5cbmV4cG9ydCB0eXBlIENSRUFURURfREFURV9ERVNDID0gJy1jcmVhdGVkRGF0ZSc7XG5leHBvcnQgdHlwZSBDUkVBVEVEX0RBVEVfQVNDID0gJ2NyZWF0ZWREYXRlJztcblxuZXhwb3J0IGVudW0gRGVsZWdhdGlvblN0YXR1cyB7XG4gIFBFTkRJTkcgPSAnUEVORElORycsXG4gIEZBSUxFRCA9ICdGQUlMRUQnLFxuICBSRUpFQ1RFRCA9ICdSRUpFQ1RFRCcsXG4gIEFDVElWRSA9ICdBQ1RJVkUnLFxuICBDT01QTEVURSA9ICdDT01QTEVURScsXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRGVsZWdhdGlvblJlc3VsdHMge1xuICBkZWxlZ2F0aW9uczogRGVsZWdhdGlvbltdO1xuICBwYWdlOiBudW1iZXI7XG4gIHRvdGFsUGFnZXM6IG51bWJlcjtcbiAgdG90YWxFbGVtZW50czogbnVtYmVyO1xufVxuZXhwb3J0IGludGVyZmFjZSBEZWxlZ2F0aW9uIHtcbiAgaWQ6IHN0cmluZztcbiAgZGVsZWdhdGlvbkFkZHJlc3M6IHN0cmluZztcbiAgd2l0aGRyYXdhbEFkZHJlc3M6IHN0cmluZztcbiAgZGVsZWdhdGVkOiBudW1iZXI7XG4gIGNvaW46IHN0cmluZztcbiAgd2FsbGV0SWQ6IHN0cmluZztcbiAgc3RhdHVzOiBEZWxlZ2F0aW9uU3RhdHVzO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFRyYW5zYWN0aW9uc1JlYWR5VG9TaWduIHtcbiAgYWxsU2lnbmluZ0NvbXBsZXRlOiBib29sZWFuO1xuICB0cmFuc2FjdGlvbnM6IFN0YWtpbmdUcmFuc2FjdGlvbltdO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFN0YWtpbmdUcmFuc2FjdGlvbiB7XG4gIGlkOiBzdHJpbmc7XG4gIHN0YWtpbmdSZXF1ZXN0SWQ6IHN0cmluZztcbiAgZGVsZWdhdGlvbklkOiBzdHJpbmc7XG4gIHRyYW5zYWN0aW9uVHlwZTogc3RyaW5nO1xuICBjcmVhdGVkRGF0ZTogc3RyaW5nO1xuICBzdGF0dXM6IHN0cmluZztcbiAgc3RhdHVzTW9kaWZpZWREYXRlOiBzdHJpbmc7XG4gIGFtb3VudDogc3RyaW5nO1xuICBwZW5kaW5nQXBwcm92YWxJZD86IHN0cmluZztcbiAgdHJhbnNmZXJJZD86IHN0cmluZztcbiAgdHhSZXF1ZXN0SWQ/OiBzdHJpbmc7XG4gIGJ1aWxkUGFyYW1zPzogUHJlYnVpbGRUcmFuc2FjdGlvbk9wdGlvbnM7XG4gIGdhc1ByaWNlPzogc3RyaW5nO1xufVxuXG5leHBvcnQgdHlwZSBTdGFraW5nVHhSZXF1ZXN0UHJlYnVpbGRUcmFuc2FjdGlvblJlc3VsdCA9IHtcbiAgd2FsbGV0SWQ6IHN0cmluZztcbiAgdHhSZXF1ZXN0SWQ6IHN0cmluZztcbn07XG5cbmV4cG9ydCBpbnRlcmZhY2UgU3Rha2luZ1ByZWJ1aWxkVHJhbnNhY3Rpb25SZXN1bHQge1xuICB0cmFuc2FjdGlvbjogU3Rha2luZ1RyYW5zYWN0aW9uO1xuICByZXN1bHQ6IFByZWJ1aWxkVHJhbnNhY3Rpb25SZXN1bHQgfCBTdGFraW5nVHhSZXF1ZXN0UHJlYnVpbGRUcmFuc2FjdGlvblJlc3VsdDtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBTdGFraW5nU2lnbmVkVHJhbnNhY3Rpb24ge1xuICB0cmFuc2FjdGlvbjogU3Rha2luZ1RyYW5zYWN0aW9uO1xuICBzaWduZWQ6IFNpZ25lZFRyYW5zYWN0aW9uO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFN0YWtpbmdTaWduT3B0aW9ucyB7XG4gIHdhbGxldFBhc3NwaHJhc2U6IHN0cmluZztcbiAgdHJhbnNhY3Rpb25WZXJpZmljYXRpb25PcHRpb25zPzoge1xuICAgIC8qKlxuICAgICAqIFNraXAgdHJhbnNhY3Rpb24gdmVyaWZpY2F0aW9uLiBOb3QgcmVjb21tZW5kZWQgdW5sZXNzIHlvdSBoYXZlIG1hbnVhbGx5IHZlcmlmaWVkIHRoZSB0cmFuc2FjdGlvbiBkZXRhaWxzLlxuICAgICAqIEBkZWZhdWx0IGZhbHNlXG4gICAgICovXG4gICAgc2tpcFRyYW5zYWN0aW9uVmVyaWZpY2F0aW9uPzogYm9vbGVhbjtcbiAgfTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJU3Rha2luZ1dhbGxldCB7XG4gIHJlYWRvbmx5IHdhbGxldElkOiBzdHJpbmc7XG4gIHJlYWRvbmx5IGNvaW46IHN0cmluZztcbiAgc3Rha2UoXG4gICAgb3B0aW9uczpcbiAgICAgIHwgU3Rha2VPcHRpb25zXG4gICAgICB8IFBveDVTdGFrZU9wdGlvbnNcbiAgICAgIHwgVHJvblN0YWtlT3B0aW9uc1xuICAgICAgfCBUYW9TdGFrZU9wdGlvbnNcbiAgICAgIHwgVmV0U3Rha2VPcHRpb25zXG4gICAgICB8IFN0b3J5U3Rha2VPcHRpb25zXG4gICAgICB8IFhkY1N0YWtlT3B0aW9uc1xuICApOiBQcm9taXNlPFN0YWtpbmdSZXF1ZXN0PjtcbiAgdW5zdGFrZShvcHRpb25zOiBVbnN0YWtlT3B0aW9ucyB8IEV0aFVuc3Rha2VPcHRpb25zKTogUHJvbWlzZTxTdGFraW5nUmVxdWVzdD47XG4gIHN3aXRjaFZhbGlkYXRvcihcbiAgICBvcHRpb25zOiBTd2l0Y2hWYWxpZGF0b3JPcHRpb25zIHwgVGFvU3dpdGNoVmFsaWRhdG9yT3B0aW9ucyB8IFBvbHl4U3dpdGNoVmFsaWRhdG9yT3B0aW9uc1xuICApOiBQcm9taXNlPFN0YWtpbmdSZXF1ZXN0PjtcbiAgY2xhaW1SZXdhcmRzKG9wdGlvbnM6IENsYWltUmV3YXJkc09wdGlvbnMpOiBQcm9taXNlPFN0YWtpbmdSZXF1ZXN0PjtcbiAgZ2V0U3Rha2luZ1JlcXVlc3Qoc3Rha2luZ1JlcXVlc3RJZDogc3RyaW5nKTogUHJvbWlzZTxTdGFraW5nUmVxdWVzdD47XG4gIGdldFRyYW5zYWN0aW9uc1JlYWR5VG9TaWduKHN0YWtpbmdSZXF1ZXN0SWQ6IHN0cmluZyk6IFByb21pc2U8VHJhbnNhY3Rpb25zUmVhZHlUb1NpZ24+O1xuICBidWlsZCh0cmFuc2FjdGlvbjogU3Rha2luZ1RyYW5zYWN0aW9uKTogUHJvbWlzZTxTdGFraW5nUHJlYnVpbGRUcmFuc2FjdGlvblJlc3VsdD47XG4gIHNpZ24oXG4gICAgc2lnbk9wdGlvbnM6IFN0YWtpbmdTaWduT3B0aW9ucyxcbiAgICBzdGFraW5nUHJlYnVpbGRUcmFuc2FjdGlvbjogU3Rha2luZ1ByZWJ1aWxkVHJhbnNhY3Rpb25SZXN1bHRcbiAgKTogUHJvbWlzZTxTdGFraW5nU2lnbmVkVHJhbnNhY3Rpb24+O1xuICBzZW5kKHNpZ25lZFRyYW5zYWN0aW9uOiBTdGFraW5nU2lnbmVkVHJhbnNhY3Rpb24pOiBQcm9taXNlPFN0YWtpbmdUcmFuc2FjdGlvbj47XG4gIGJ1aWxkU2lnbkFuZFNlbmQoc2lnbk9wdGlvbnM6IFN0YWtpbmdTaWduT3B0aW9ucywgdHJhbnNhY3Rpb246IFN0YWtpbmdUcmFuc2FjdGlvbik7XG4gIGJ1aWxkQW5kU2lnbihzaWduT3B0aW9uczogU3Rha2luZ1NpZ25PcHRpb25zLCB0cmFuc2FjdGlvbjogU3Rha2luZ1RyYW5zYWN0aW9uKTtcbiAgY2FuY2VsU3Rha2luZ1JlcXVlc3Qoc3Rha2luZ1JlcXVlc3RJZDogc3RyaW5nKTogUHJvbWlzZTxTdGFraW5nUmVxdWVzdD47XG4gIHByZWJ1aWxkU2VsZk1hbmFnZWRTdGFraW5nVHJhbnNhY3Rpb24odHJhbnNhY3Rpb246IFN0YWtpbmdUcmFuc2FjdGlvbik6IFByb21pc2U8UHJlYnVpbGRUcmFuc2FjdGlvblJlc3VsdD47XG59XG4iXX0=
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stakingWallet.d.ts","sourceRoot":"","sources":["../../../../src/bitgo/staking/stakingWallet.ts"],"names":[],"mappings":"AAMA,OAAO,EACL,iBAAiB,EACjB,iBAAiB,EACjB,cAAc,EACd,YAAY,EACZ,gCAAgC,EAChC,cAAc,EACd,wBAAwB,EACxB,kBAAkB,EAClB,kBAAkB,EAClB,sBAAsB,EACtB,uBAAuB,EACvB,cAAc,EACd,iBAAiB,EACjB,mBAAmB,EAEnB,gBAAgB,EAChB,eAAe,EACf,yBAAyB,EACzB,2BAA2B,EAC3B,eAAe,EACf,iBAAiB,EACjB,eAAe,EACf,gBAAgB,EACjB,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EAAE,OAAO,EAAE,yBAAyB,EAAE,MAAM,WAAW,CAAC;AAC/D,OAAO,EAAE,SAAS,EAA2B,MAAM,UAAU,CAAC;AAM9D,qBAAa,aAAc,YAAW,cAAc;IAClD,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAY;IAClC,OAAO,CAAC,iBAAiB,CAAC,CAAU;IACpC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAU;IAE5B,MAAM,EAAE,OAAO,CAAC;IAChB,OAAO,EAAE,SAAS,CAAC;gBAEd,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO;IAO9C,IAAI,QAAQ,IAAI,MAAM,CAErB;IAED,IAAI,IAAI,IAAI,MAAM,CAEjB;IAED;;;;OAIG;IACG,KAAK,CACT,OAAO,EACH,YAAY,GACZ,gBAAgB,GAChB,gBAAgB,GAChB,eAAe,GACf,eAAe,GACf,iBAAiB,GACjB,eAAe,GAClB,OAAO,CAAC,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"stakingWallet.d.ts","sourceRoot":"","sources":["../../../../src/bitgo/staking/stakingWallet.ts"],"names":[],"mappings":"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"}
|
|
@@ -33,6 +33,7 @@ class StakingWallet {
|
|
|
33
33
|
* @return StakingRequest
|
|
34
34
|
*/
|
|
35
35
|
async stake(options) {
|
|
36
|
+
validatePox5StakeOptions(options);
|
|
36
37
|
return await this.createStakingRequest(options, 'STAKE');
|
|
37
38
|
}
|
|
38
39
|
/**
|
|
@@ -362,7 +363,19 @@ class StakingWallet {
|
|
|
362
363
|
}
|
|
363
364
|
}
|
|
364
365
|
exports.StakingWallet = StakingWallet;
|
|
366
|
+
function validatePox5StakeOptions(options) {
|
|
367
|
+
if (options.subType !== 'pox5-bond') {
|
|
368
|
+
return;
|
|
369
|
+
}
|
|
370
|
+
const pox5Options = options;
|
|
371
|
+
if (!Number.isInteger(pox5Options.bondIndex) || pox5Options.bondIndex < 0) {
|
|
372
|
+
throw new Error('bondIndex is required for pox5-bond staking');
|
|
373
|
+
}
|
|
374
|
+
if (typeof pox5Options.signerManager !== 'string' || pox5Options.signerManager.length === 0) {
|
|
375
|
+
throw new Error('signerManager is required for pox5-bond staking');
|
|
376
|
+
}
|
|
377
|
+
}
|
|
365
378
|
function isStakingTxRequestPrebuildResult(tx) {
|
|
366
379
|
return tx.txRequestId !== undefined;
|
|
367
380
|
}
|
|
368
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3Rha2luZ1dhbGxldC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9iaXRnby9zdGFraW5nL3N0YWtpbmdXYWxsZXQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUE7O0dBRUc7QUFDSCxpREFBaUQ7QUFDakQsNkRBQXFDO0FBNkJyQyxvQ0FBOEQ7QUFDOUQsb0RBQTRCO0FBQzVCLGdFQUF1RTtBQUN2RSxrREFBMEI7QUFDMUIsbURBQW9EO0FBRXBELE1BQWEsYUFBYTtJQVF4QixZQUFZLE1BQWUsRUFBRSxRQUFpQjtRQUM1QyxJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQztRQUNyQixJQUFJLENBQUMsS0FBSyxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUM7UUFDMUIsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLGdCQUFRLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDM0UsSUFBSSxDQUFDLFFBQVEsR0FBRyxRQUFRLENBQUM7SUFDM0IsQ0FBQztJQUVELElBQUksUUFBUTtRQUNWLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxFQUFFLEVBQUUsQ0FBQztJQUMxQixDQUFDO0lBRUQsSUFBSSxJQUFJO1FBQ04sT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDdkcsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxLQUFLLENBQUMsS0FBSyxDQUNULE9BT21CO1FBRW5CLE9BQU8sTUFBTSxJQUFJLENBQUMsb0JBQW9CLENBQUMsT0FBTyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQzNE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RCxXQUFXLENBQUMsZUFBZSxDQUM1QixVQUFVLElBQUksQ0FBQyxTQUFTLENBQUUsb0JBQTRCLENBQUMsZUFBZSxDQUFDLEVBQUUsQ0FDM0UsQ0FBQztZQUNKLENBQUM7UUFDSCxDQUFDO1FBRUQsSUFBSSxjQUFjLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQzlCLE1BQU0sWUFBWSxHQUFHLHlEQUF5RCxjQUFjLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUM7WUFDMUcsSUFBQSxlQUFLLEVBQUMsWUFBWSxDQUFDLENBQUM7WUFDcEIsTUFBTSxJQUFJLEtBQUssQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUNoQyxDQUFDO1FBRUQsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQ2pCLElBQUEsZUFBSyxFQUNILDBEQUEwRCxXQUFXLENBQUMsZ0JBQWdCLGlDQUFpQyxDQUN4SCxDQUFDO1FBQ0osQ0FBQztJQUNILENBQUM7Q0FDRjtBQXJkRCxzQ0FxZEM7QUFFRCxTQUFTLGdDQUFnQyxDQUN2QyxFQUE4QztJQUU5QyxPQUFRLEVBQWdELENBQUMsV0FBVyxLQUFLLFNBQVMsQ0FBQztBQUNyRixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAcHJldHRpZXJcbiAqL1xuaW1wb3J0IHsgQ29pbkZhbWlseSB9IGZyb20gJ0BiaXRnby1iZXRhL3N0YXRpY3MnO1xuaW1wb3J0IGlzRXF1YWwgZnJvbSAnbG9kYXNoL2lzRXF1YWwnO1xuXG5pbXBvcnQge1xuICBEZWxlZ2F0aW9uT3B0aW9ucyxcbiAgRGVsZWdhdGlvblJlc3VsdHMsXG4gIElTdGFraW5nV2FsbGV0LFxuICBTdGFrZU9wdGlvbnMsXG4gIFN0YWtpbmdQcmVidWlsZFRyYW5zYWN0aW9uUmVzdWx0LFxuICBTdGFraW5nUmVxdWVzdCxcbiAgU3Rha2luZ1NpZ25lZFRyYW5zYWN0aW9uLFxuICBTdGFraW5nU2lnbk9wdGlvbnMsXG4gIFN0YWtpbmdUcmFuc2FjdGlvbixcbiAgU3dpdGNoVmFsaWRhdG9yT3B0aW9ucyxcbiAgVHJhbnNhY3Rpb25zUmVhZHlUb1NpZ24sXG4gIFVuc3Rha2VPcHRpb25zLFxuICBFdGhVbnN0YWtlT3B0aW9ucyxcbiAgQ2xhaW1SZXdhcmRzT3B0aW9ucyxcbiAgU3Rha2luZ1R4UmVxdWVzdFByZWJ1aWxkVHJhbnNhY3Rpb25SZXN1bHQsXG4gIFRyb25TdGFrZU9wdGlvbnMsXG4gIFRhb1N0YWtlT3B0aW9ucyxcbiAgVGFvU3dpdGNoVmFsaWRhdG9yT3B0aW9ucyxcbiAgUG9seXhTd2l0Y2hWYWxpZGF0b3JPcHRpb25zLFxuICBWZXRTdGFrZU9wdGlvbnMsXG4gIFN0b3J5U3Rha2VPcHRpb25zLFxuICBYZGNTdGFrZU9wdGlvbnMsXG4gIFBveDVTdGFrZU9wdGlvbnMsXG59IGZyb20gJy4vaVN0YWtpbmdXYWxsZXQnO1xuaW1wb3J0IHsgQml0R29CYXNlIH0gZnJvbSAnLi4vYml0Z29CYXNlJztcbmltcG9ydCB7IElXYWxsZXQsIFByZWJ1aWxkVHJhbnNhY3Rpb25SZXN1bHQgfSBmcm9tICcuLi93YWxsZXQnO1xuaW1wb3J0IHsgSVRzc1V0aWxzLCBSZXF1ZXN0VHJhY2VyLCBUc3NVdGlscyB9IGZyb20gJy4uL3V0aWxzJztcbmltcG9ydCBhc3NlcnQgZnJvbSAnYXNzZXJ0JztcbmltcG9ydCB7IHRyYW5zYWN0aW9uUmVjaXBpZW50c01hdGNoIH0gZnJvbSAnLi4vdXRpbHMvdHJhbnNhY3Rpb25VdGlscyc7XG5pbXBvcnQgZGVidWcgZnJvbSAnZGVidWcnO1xuaW1wb3J0IHsgVHJhbnNhY3Rpb25UeXBlIH0gZnJvbSAnLi4vLi4vYWNjb3VudC1saWInO1xuXG5leHBvcnQgY2xhc3MgU3Rha2luZ1dhbGxldCBpbXBsZW1lbnRzIElTdGFraW5nV2FsbGV0IHtcbiAgcHJpdmF0ZSByZWFkb25seSBiaXRnbzogQml0R29CYXNlO1xuICBwcml2YXRlIHRva2VuUGFyZW50V2FsbGV0PzogSVdhbGxldDtcbiAgcHJpdmF0ZSByZWFkb25seSBpc0V0aFRzczogYm9vbGVhbjtcblxuICBwdWJsaWMgd2FsbGV0OiBJV2FsbGV0O1xuICBwdWJsaWMgdHNzVXRpbDogSVRzc1V0aWxzO1xuXG4gIGNvbnN0cnVjdG9yKHdhbGxldDogSVdhbGxldCwgaXNFdGhUc3M6IGJvb2xlYW4pIHtcbiAgICB0aGlzLndhbGxldCA9IHdhbGxldDtcbiAgICB0aGlzLmJpdGdvID0gd2FsbGV0LmJpdGdvO1xuICAgIHRoaXMudHNzVXRpbCA9IG5ldyBUc3NVdGlscyh0aGlzLmJpdGdvLCB0aGlzLndhbGxldC5iYXNlQ29pbiwgdGhpcy53YWxsZXQpO1xuICAgIHRoaXMuaXNFdGhUc3MgPSBpc0V0aFRzcztcbiAgfVxuXG4gIGdldCB3YWxsZXRJZCgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLndhbGxldC5pZCgpO1xuICB9XG5cbiAgZ2V0IGNvaW4oKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy53YWxsZXQuYmFzZUNvaW4udG9rZW5Db25maWcgPyB0aGlzLndhbGxldC5iYXNlQ29pbi50b2tlbkNvbmZpZy50eXBlIDogdGhpcy53YWxsZXQuY29pbigpO1xuICB9XG5cbiAgLyoqXG4gICAqIFN0YWtlIGNvaW5zXG4gICAqIEBwYXJhbSBvcHRpb25zIC0gc3Rha2Ugb3B0aW9uc1xuICAgKiBAcmV0dXJuIFN0YWtpbmdSZXF1ZXN0XG4gICAqL1xuICBhc3luYyBzdGFrZShcbiAgICBvcHRpb25zOlxuICAgICAgfCBTdGFrZU9wdGlvbnNcbiAgICAgIHwgUG94NVN0YWtlT3B0aW9uc1xuICAgICAgfCBUcm9uU3Rha2VPcHRpb25zXG4gICAgICB8IFRhb1N0YWtlT3B0aW9uc1xuICAgICAgfCBWZXRTdGFrZU9wdGlvbnNcbiAgICAgIHwgU3RvcnlTdGFrZU9wdGlvbnNcbiAgICAgIHwgWGRjU3Rha2VPcHRpb25zXG4gICk6IFByb21pc2U8U3Rha2luZ1JlcXVlc3Q+IHtcbiAgICByZXR1cm4gYXdhaXQgdGhpcy5jcmVhdGVTdGFraW5nUmVxdWVzdChvcHRpb25zLCAnU1RBS0UnKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBVbnN0YWtlIGNvaW5zXG4gICAqIEBwYXJhbSBvcHRpb25zIC0gdW5zdGFrZSBvcHRpb25zXG4gICAqIEByZXR1cm4gU3Rha2luZ1JlcXVlc3RcbiAgICovXG4gIGFzeW5jIHVuc3Rha2Uob3B0aW9uczogVW5zdGFrZU9wdGlvbnMgfCBFdGhVbnN0YWtlT3B0aW9ucyk6IFByb21pc2U8U3Rha2luZ1JlcXVlc3Q+IHtcbiAgICByZXR1cm4gYXdhaXQgdGhpcy5jcmVhdGVTdGFraW5nUmVxdWVzdChvcHRpb25zLCAnVU5TVEFLRScpO1xuICB9XG5cbiAgLyoqXG4gICAqIFN1Ym1pdCBhIHJlcXVlc3QgdG8gc3dpdGNoIHRoZSB2YWxpZGF0b3IgdXNlZCBmb3IgYSBzcGVjaWZpYyBkZWxlZ2F0aW9uXG4gICAqIFRoaXMgd2lsbCBjcmVhdGUgYSBuZXcgZGVsZWdhdGlvbiB3aXRoIHRoZSBuZXcgdmFsaWRhdG9yIGFkZHJlc3MgYW5kIG1hcmsgdGhlIG9sZCBkZWxlZ2F0aW9uIGFzIGluYWN0aXZlXG4gICAqIEBwYXJhbSBvcHRpb25zIC0gc3dpdGNoIHZhbGlkYXRvciBvcHRpb25zXG4gICAqIEByZXR1cm4gU3Rha2luZ1JlcXVlc3RcbiAgICovXG4gIGFzeW5jIHN3aXRjaFZhbGlkYXRvcihcbiAgICBvcHRpb25zOiBTd2l0Y2hWYWxpZGF0b3JPcHRpb25zIHwgVGFvU3dpdGNoVmFsaWRhdG9yT3B0aW9ucyB8IFBvbHl4U3dpdGNoVmFsaWRhdG9yT3B0aW9uc1xuICApOiBQcm9taXNlPFN0YWtpbmdSZXF1ZXN0PiB7XG4gICAgcmV0dXJuIGF3YWl0IHRoaXMuY3JlYXRlU3Rha2luZ1JlcXVlc3Qob3B0aW9ucywgJ1NXSVRDSF9WQUxJREFUT1InKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTdWJtaXQgYSByZXF1ZXN0IHRvIGNsYWltIHJld2FyZHMgZm9yIGEgc3BlY2lmaWMgZGVsZWdhdGlvblxuICAgKiBAcGFyYW0gb3B0aW9ucyAtIGNsYWltIHJld2FyZHMgb3B0aW9uc1xuICAgKiBAcmV0dXJuIFN0YWtpbmdSZXF1ZXN0XG4gICAqL1xuICBhc3luYyBjbGFpbVJld2FyZHMob3B0aW9uczogQ2xhaW1SZXdhcmRzT3B0aW9ucyk6IFByb21pc2U8U3Rha2luZ1JlcXVlc3Q+IHtcbiAgICByZXR1cm4gYXdhaXQgdGhpcy5jcmVhdGVTdGFraW5nUmVxdWVzdChvcHRpb25zLCAnQ0xBSU1fUkVXQVJEUycpO1xuICB9XG5cbiAgLyoqXG4gICAqIENhbmNlbCBzdGFraW5nIHJlcXVlc3RcbiAgICogQHBhcmFtIHN0YWtpbmdSZXF1ZXN0SWQgLSBpZCBvZiB0aGUgc3Rha2luZyByZXF1ZXN0IHRvIGNhbmNlbFxuICAgKiBAcmV0dXJuIFN0YWtpbmdSZXF1ZXN0XG4gICAqL1xuICBhc3luYyBjYW5jZWxTdGFraW5nUmVxdWVzdChzdGFraW5nUmVxdWVzdElkOiBzdHJpbmcpOiBQcm9taXNlPFN0YWtpbmdSZXF1ZXN0PiB7XG4gICAgcmV0dXJuIGF3YWl0IHRoaXMuYml0Z28uZGVsKHRoaXMuYml0Z28ubWljcm9zZXJ2aWNlc1VybCh0aGlzLnN0YWtpbmdSZXF1ZXN0VXJsKHN0YWtpbmdSZXF1ZXN0SWQpKSkucmVzdWx0KCk7XG4gIH1cblxuICAvKipcbiAgICogRmV0Y2ggZGVsZWdhdGlvbnMgZm9yIGEgc3BlY2lmaWMgd2FsbGV0XG4gICAqIEBwYXJhbSBvcHRpb25zIC0gdW5zdGFrZSBvcHRpb25zXG4gICAqIEByZXR1cm4gU3Rha2luZ1JlcXVlc3RcbiAgICovXG4gIGFzeW5jIGRlbGVnYXRpb25zKG9wdGlvbnM6IERlbGVnYXRpb25PcHRpb25zKTogUHJvbWlzZTxEZWxlZ2F0aW9uUmVzdWx0cz4ge1xuICAgIHJldHVybiBhd2FpdCB0aGlzLmdldERlbGVnYXRpb25zKG9wdGlvbnMpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCBhIHN0YWtpbmcgcmVxdWVzdCBieSBJRFxuICAgKiBAcGFyYW0gc3Rha2luZ1JlcXVlc3RJZCAtIGlkIG9mIHRoZSBzdGFraW5nIHJlcXVlc3QgdG8gcmV0cmlldmVcbiAgICogQHJldHVybiBTdGFraW5nUmVxdWVzdFxuICAgKi9cbiAgYXN5bmMgZ2V0U3Rha2luZ1JlcXVlc3Qoc3Rha2luZ1JlcXVlc3RJZDogc3RyaW5nKTogUHJvbWlzZTxTdGFraW5nUmVxdWVzdD4ge1xuICAgIHJldHVybiBhd2FpdCB0aGlzLmJpdGdvLmdldCh0aGlzLmJpdGdvLm1pY3Jvc2VydmljZXNVcmwodGhpcy5zdGFraW5nUmVxdWVzdFVybChzdGFraW5nUmVxdWVzdElkKSkpLnJlc3VsdCgpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCB0cmFuc2FjdGlvbnMgcmVhZHkgdG8gc2lnblxuICAgKiBAcGFyYW0gc3Rha2luZ1JlcXVlc3RJZFxuICAgKiBAcmV0dXJuIFRyYW5zYWN0aW9uc1JlYWR5VG9TaWduXG4gICAqL1xuICBhc3luYyBnZXRUcmFuc2FjdGlvbnNSZWFkeVRvU2lnbihzdGFraW5nUmVxdWVzdElkOiBzdHJpbmcpOiBQcm9taXNlPFRyYW5zYWN0aW9uc1JlYWR5VG9TaWduPiB7XG4gICAgY29uc3Qgc3Rha2luZ1JlcXVlc3Q6IFN0YWtpbmdSZXF1ZXN0ID0gYXdhaXQgdGhpcy5nZXRTdGFraW5nUmVxdWVzdChzdGFraW5nUmVxdWVzdElkKTtcbiAgICBjb25zdCByZWFkeVRvU2lnbjogU3Rha2luZ1RyYW5zYWN0aW9uW10gPSBzdGFraW5nUmVxdWVzdC50cmFuc2FjdGlvbnMuZmlsdGVyKFxuICAgICAgKHRyYW5zYWN0aW9uOiBTdGFraW5nVHJhbnNhY3Rpb24pID0+IHRyYW5zYWN0aW9uLnN0YXR1cyA9PT0gYFJFQURZYFxuICAgICk7XG4gICAgY29uc3QgbmV3VHJhbnNhY3Rpb25zOiBTdGFraW5nVHJhbnNhY3Rpb25bXSA9IHN0YWtpbmdSZXF1ZXN0LnRyYW5zYWN0aW9ucy5maWx0ZXIoXG4gICAgICAodHJhbnNhY3Rpb246IFN0YWtpbmdUcmFuc2FjdGlvbikgPT4gdHJhbnNhY3Rpb24uc3RhdHVzID09PSBgTkVXYFxuICAgICk7XG5cbiAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHtcbiAgICAgIGFsbFNpZ25pbmdDb21wbGV0ZTpcbiAgICAgICAgc3Rha2luZ1JlcXVlc3QudHJhbnNhY3Rpb25zLmxlbmd0aCA+IDAgJiYgbmV3VHJhbnNhY3Rpb25zLmxlbmd0aCA9PT0gMCAmJiByZWFkeVRvU2lnbi5sZW5ndGggPT09IDAsXG4gICAgICB0cmFuc2FjdGlvbnM6IHJlYWR5VG9TaWduLFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEJ1aWxkIHRoZSBzdGFraW5nIHRyYW5zYWN0aW9uXG4gICAqIElmIFRTUyBkZWxldGUgc2lnbmF0dXJlIHNoYXJlcywgZWxzZSBleHBhbmQgYnVpbGQgcGFyYW1zIGFuZCB0aGVuIGJ1aWxkXG4gICAqIEBwYXJhbSB0cmFuc2FjdGlvbiAtIHN0YWtpbmcgdHJhbnNhY3Rpb24gdG8gYnVpbGRcbiAgICovXG4gIGFzeW5jIGJ1aWxkKHRyYW5zYWN0aW9uOiBTdGFraW5nVHJhbnNhY3Rpb24pOiBQcm9taXNlPFN0YWtpbmdQcmVidWlsZFRyYW5zYWN0aW9uUmVzdWx0PiB7XG4gICAgaWYgKCh0aGlzLndhbGxldC5tdWx0aXNpZ1R5cGUoKSA9PT0gJ3RzcycgJiYgdGhpcy53YWxsZXQuYmFzZUNvaW4uZ2V0RmFtaWx5KCkgIT09ICdldGgnKSB8fCB0aGlzLmlzRXRoVHNzKSB7XG4gICAgICBpZiAoIXRyYW5zYWN0aW9uLnR4UmVxdWVzdElkKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcigndHhSZXF1ZXN0SWQgaXMgcmVxdWlyZWQgdG8gc2lnbiBhbmQgc2VuZCcpO1xuICAgICAgfVxuICAgICAgLy8gZGVsZXRlIHNpZ25hdHVyZSBzaGFyZXMgYmVmb3JlIHNpZ25pbmcgZm9yIHRyYW5zYWN0aW9uIHJlcXVlc3QgQVBJXG4gICAgICBhd2FpdCB0aGlzLnRzc1V0aWwuZGVsZXRlU2lnbmF0dXJlU2hhcmVzKHRyYW5zYWN0aW9uLnR4UmVxdWVzdElkKTtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHRyYW5zYWN0aW9uOiB0cmFuc2FjdGlvbixcbiAgICAgICAgcmVzdWx0OiB7XG4gICAgICAgICAgd2FsbGV0SWQ6IHRoaXMud2FsbGV0SWQsXG4gICAgICAgICAgdHhSZXF1ZXN0SWQ6IHRyYW5zYWN0aW9uLnR4UmVxdWVzdElkLFxuICAgICAgICB9LFxuICAgICAgfTtcbiAgICB9IGVsc2Uge1xuICAgICAgdHJhbnNhY3Rpb24gPSBhd2FpdCB0aGlzLmV4cGFuZEJ1aWxkUGFyYW1zKHRyYW5zYWN0aW9uKTtcbiAgICAgIGlmICghdHJhbnNhY3Rpb24uYnVpbGRQYXJhbXMpIHtcbiAgICAgICAgdGhyb3cgRXJyb3IoYFN0YWtpbmcgdHJhbnNhY3Rpb24gJHt0cmFuc2FjdGlvbi5pZH0gYnVpbGQgcGFyYW1zIG5vdCBleHBhbmRlZGApO1xuICAgICAgfVxuICAgICAgY29uc3Qgd2FsbGV0ID0gYXdhaXQgdGhpcy5leHRyYWN0V2FsbGV0KHRyYW5zYWN0aW9uKTtcblxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdHJhbnNhY3Rpb246IHRyYW5zYWN0aW9uLFxuICAgICAgICByZXN1bHQ6IGF3YWl0IHdhbGxldC5wcmVidWlsZFRyYW5zYWN0aW9uKHRyYW5zYWN0aW9uLmJ1aWxkUGFyYW1zKSxcbiAgICAgIH07XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBleHRyYWN0V2FsbGV0KHRyYW5zYWN0aW9uOiBTdGFraW5nVHJhbnNhY3Rpb24pIHtcbiAgICByZXR1cm4gdGhpcy5pc0J0Y1VuZGVsZWdhdGUodHJhbnNhY3Rpb24pXG4gICAgICA/IGF3YWl0IHRoaXMuZ2V0RGVzY3JpcHRvcldhbGxldCh0cmFuc2FjdGlvbilcbiAgICAgIDogYXdhaXQgdGhpcy5nZXRXYWxsZXRGb3JCdWlsZGluZ0FuZFNpZ25pbmcoKTtcbiAgfVxuXG4gIHByaXZhdGUgaXNCdGNVbmRlbGVnYXRlKHRyYW5zYWN0aW9uOiBTdGFraW5nVHJhbnNhY3Rpb24pIHtcbiAgICByZXR1cm4gKFxuICAgICAgdGhpcy53YWxsZXQuYmFzZUNvaW4uZ2V0RmFtaWx5KCkgPT09ICdidGMnICYmIHRyYW5zYWN0aW9uLnRyYW5zYWN0aW9uVHlwZS50b0xvd2VyQ2FzZSgpID09PSAndW5kZWxlZ2F0ZV93aXRoZHJhdydcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBpc1N0eCgpIHtcbiAgICByZXR1cm4gdGhpcy53YWxsZXQuYmFzZUNvaW4uZ2V0RmFtaWx5KCkgPT09ICdzdHgnO1xuICB9XG5cbiAgcHJpdmF0ZSBpc1RyeFN0YWtpbmcodHJhbnNhY3Rpb246IFN0YWtpbmdUcmFuc2FjdGlvbikge1xuICAgIHJldHVybiB0aGlzLndhbGxldC5iYXNlQ29pbi5nZXRGYW1pbHkoKSA9PT0gJ3RyeCc7XG4gIH1cblxuICAvKipcbiAgICogU2lnbiB0aGUgc3Rha2luZyB0cmFuc2FjdGlvblxuICAgKiBAcGFyYW0gc2lnbk9wdGlvbnNcbiAgICogQHBhcmFtIHN0YWtpbmdQcmVidWlsZFRyYW5zYWN0aW9uXG4gICAqL1xuICBhc3luYyBzaWduKFxuICAgIHNpZ25PcHRpb25zOiBTdGFraW5nU2lnbk9wdGlvbnMsXG4gICAgc3Rha2luZ1ByZWJ1aWxkVHJhbnNhY3Rpb246IFN0YWtpbmdQcmVidWlsZFRyYW5zYWN0aW9uUmVzdWx0XG4gICk6IFByb21pc2U8U3Rha2luZ1NpZ25lZFRyYW5zYWN0aW9uPiB7XG4gICAgY29uc3QgcmVxSWQgPSBuZXcgUmVxdWVzdFRyYWNlcigpO1xuICAgIGNvbnN0IGlzQnRjVW5kZWxlZ2F0ZSA9XG4gICAgICB0aGlzLndhbGxldC5iYXNlQ29pbi5nZXRGYW1pbHkoKSA9PT0gJ2J0YycgJiZcbiAgICAgIHN0YWtpbmdQcmVidWlsZFRyYW5zYWN0aW9uLnRyYW5zYWN0aW9uLnRyYW5zYWN0aW9uVHlwZS50b0xvd2VyQ2FzZSgpID09PSAndW5kZWxlZ2F0ZV93aXRoZHJhdyc7XG4gICAgY29uc3Qgd2FsbGV0ID0gaXNCdGNVbmRlbGVnYXRlXG4gICAgICA/IGF3YWl0IHRoaXMuZ2V0RGVzY3JpcHRvcldhbGxldChzdGFraW5nUHJlYnVpbGRUcmFuc2FjdGlvbi50cmFuc2FjdGlvbilcbiAgICAgIDogYXdhaXQgdGhpcy5nZXRXYWxsZXRGb3JCdWlsZGluZ0FuZFNpZ25pbmcoKTtcblxuICAgIGNvbnN0IGtleWNoYWluID0gYXdhaXQgd2FsbGV0LmJhc2VDb2luLmtleWNoYWlucygpLmdldEtleXNGb3JTaWduaW5nKHtcbiAgICAgIHdhbGxldDogdGhpcy53YWxsZXQsXG4gICAgICByZXFJZDogcmVxSWQsXG4gICAgfSk7XG4gICAgcmV0dXJuIHtcbiAgICAgIHRyYW5zYWN0aW9uOiBzdGFraW5nUHJlYnVpbGRUcmFuc2FjdGlvbi50cmFuc2FjdGlvbixcbiAgICAgIHNpZ25lZDogYXdhaXQgd2FsbGV0LnNpZ25UcmFuc2FjdGlvbih7XG4gICAgICAgIHR4UHJlYnVpbGQ6IHN0YWtpbmdQcmVidWlsZFRyYW5zYWN0aW9uLnJlc3VsdCxcbiAgICAgICAgd2FsbGV0UGFzc3BocmFzZTogc2lnbk9wdGlvbnMud2FsbGV0UGFzc3BocmFzZSxcbiAgICAgICAga2V5Y2hhaW46IGtleWNoYWluWzBdLFxuICAgICAgfSksXG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZW5kIHRoZSBzaWduZWQgc3Rha2luZyB0cmFuc2FjdGlvbiBpZiByZXF1aXJlZC4gU2VuZCBjYWxsIGlzIG5vdCByZXF1aXJlZCBpZiBhcGkgdmVyc2lvbiBpcyBmdWxsXG4gICAqIGFuZCB0aGlzIG1ldGhvZCB3aWxsIHJldHVybiB0aGUgc3Rha2luZyB0cmFuc2FjdGlvbiBmcm9tIHRoZSBpbmNvbWluZyBvYmplY3QuXG4gICAqIEBwYXJhbSBzaWduZWRUcmFuc2FjdGlvblxuICAgKi9cbiAgYXN5bmMgc2VuZChzaWduZWRUcmFuc2FjdGlvbjogU3Rha2luZ1NpZ25lZFRyYW5zYWN0aW9uKTogUHJvbWlzZTxTdGFraW5nVHJhbnNhY3Rpb24+IHtcbiAgICBpZiAodGhpcy5pc1NlbmRDYWxsUmVxdWlyZWQoKSkge1xuICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYml0Z29cbiAgICAgICAgLnBvc3QodGhpcy5iaXRnby5taWNyb3NlcnZpY2VzVXJsKHRoaXMuc3Rha2luZ1RyYW5zYWN0aW9uVVJMKHNpZ25lZFRyYW5zYWN0aW9uLnRyYW5zYWN0aW9uKSkpXG4gICAgICAgIC5zZW5kKHNpZ25lZFRyYW5zYWN0aW9uLnNpZ25lZClcbiAgICAgICAgLnJlc3VsdCgpO1xuICAgIH1cbiAgICByZXR1cm4gc2lnbmVkVHJhbnNhY3Rpb24udHJhbnNhY3Rpb247XG4gIH1cblxuICAvKipcbiAgICogQERlcHJlY2F0ZWQgdXNlIGJ1aWxkQW5kU2lnblxuICAgKiBCdWlsZCwgc2lnbiBhbmQgc2VuZCB0aGUgdHJhbnNhY3Rpb24uXG4gICAqIEBwYXJhbSBzaWduT3B0aW9uc1xuICAgKiBAcGFyYW0gdHJhbnNhY3Rpb25cbiAgICovXG4gIGFzeW5jIGJ1aWxkU2lnbkFuZFNlbmQoXG4gICAgc2lnbk9wdGlvbnM6IFN0YWtpbmdTaWduT3B0aW9ucyxcbiAgICB0cmFuc2FjdGlvbjogU3Rha2luZ1RyYW5zYWN0aW9uXG4gICk6IFByb21pc2U8U3Rha2luZ1RyYW5zYWN0aW9uPiB7XG4gICAgcmV0dXJuIGF3YWl0IHRoaXMuYnVpbGRBbmRTaWduKHNpZ25PcHRpb25zLCB0cmFuc2FjdGlvbikudGhlbigocmVzdWx0OiBTdGFraW5nU2lnbmVkVHJhbnNhY3Rpb24pID0+IHtcbiAgICAgIHJldHVybiB0aGlzLnNlbmQocmVzdWx0KTtcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGUgcHJlYnVpbHQgc3Rha2luZyB0cmFuc2FjdGlvbi5cbiAgICpcbiAgICogZm9yIHRyYW5zYWN0aW9ucyB3aXRoIHR4IHJlcXVlc3QgaWQgKFRTUyB0cmFuc2FjdGlvbnMpLCB3ZSBuZWVkIHRvIGRlbGV0ZSBzaWduYXR1cmUgc2hhcmVzIGJlZm9yZSBjcmVhdGluZyBwcmVidWlsZCB0cmFuc2FjdGlvblxuICAgKiB3ZSBvbmx5IG5lZWQgdG8gZ2V0IHRyYW5zYWN0aW9uIGJ1aWxkIHBhcmFtcyBpZiB0aGV5IGV4aXN0IHRvIHByZSBidWlsZFxuICAgKlxuICAgKiBAcGFyYW0gdHJhbnNhY3Rpb25cbiAgICovXG4gIGFzeW5jIHByZWJ1aWxkU2VsZk1hbmFnZWRTdGFraW5nVHJhbnNhY3Rpb24odHJhbnNhY3Rpb246IFN0YWtpbmdUcmFuc2FjdGlvbik6IFByb21pc2U8UHJlYnVpbGRUcmFuc2FjdGlvblJlc3VsdD4ge1xuICAgIGlmICh0cmFuc2FjdGlvbi50eFJlcXVlc3RJZCkge1xuICAgICAgYXdhaXQgdGhpcy50c3NVdGlsLmRlbGV0ZVNpZ25hdHVyZVNoYXJlcyh0cmFuc2FjdGlvbi50eFJlcXVlc3RJZCk7XG4gICAgfVxuICAgIGNvbnN0IGJ1aWxkUGFyYW1zID0gKGF3YWl0IHRoaXMuZXhwYW5kQnVpbGRQYXJhbXModHJhbnNhY3Rpb24pKS5idWlsZFBhcmFtcztcbiAgICBjb25zdCBmb3JtYXR0ZWRQYXJhbXMgPSB7XG4gICAgICAuLi5idWlsZFBhcmFtcyxcbiAgICAgIGNvaW46IHRoaXMuY29pbixcbiAgICAgIHdhbGxldElkOiB0aGlzLndhbGxldElkLFxuICAgICAgd2FsbGV0VHlwZTogdGhpcy53YWxsZXQudHlwZSgpLFxuICAgICAgcHJldmlldzogdHJ1ZSxcbiAgICB9O1xuICAgIHJldHVybiBhd2FpdCAoYXdhaXQgdGhpcy5nZXRXYWxsZXRGb3JCdWlsZGluZ0FuZFNpZ25pbmcoKSkucHJlYnVpbGRUcmFuc2FjdGlvbihmb3JtYXR0ZWRQYXJhbXMpO1xuICB9XG5cbiAgLyoqXG4gICAqIEJ1aWxkIGFuZCBzaWduIHRoZSB0cmFuc2FjdGlvbi5cbiAgICogQHBhcmFtIHNpZ25PcHRpb25zXG4gICAqIEBwYXJhbSB0cmFuc2FjdGlvblxuICAgKi9cbiAgYXN5bmMgYnVpbGRBbmRTaWduKFxuICAgIHNpZ25PcHRpb25zOiBTdGFraW5nU2lnbk9wdGlvbnMsXG4gICAgdHJhbnNhY3Rpb246IFN0YWtpbmdUcmFuc2FjdGlvblxuICApOiBQcm9taXNlPFN0YWtpbmdTaWduZWRUcmFuc2FjdGlvbj4ge1xuICAgIGNvbnN0IGJ1aWx0VHggPSBhd2FpdCB0aGlzLmJ1aWxkKHRyYW5zYWN0aW9uKTtcbiAgICAvLyBkZWZhdWx0IHRvIHZlcmlmeWluZyBhIHRyYW5zYWN0aW9uIHVubGVzcyBleHBsaWNpdGx5IHNraXBwZWRcbiAgICAvLyBza2lwcGluZyB0aGUgdmVyaWZpY2F0aW9uIGZvciBidGMgdW5kZWxlZ2F0ZSBiZWNhdXNlIGl0IGlzIGp1c3Qgc2luZ2xlIHNpZ1xuICAgIC8vIFRPRE86IFNDLTMxODMgKGFkZCB0cnggc3Rha2luZyB2ZXJpZmljYXRpb24pXG4gICAgLy8gVE9ETzogU0MtMzUwOCAoYWRkIFNUWCBzdGFraW5nIHZlcmlmaWNhdGlvbilcbiAgICBjb25zdCBza2lwVmVyaWZpY2F0aW9uID1cbiAgICAgIChzaWduT3B0aW9ucy50cmFuc2FjdGlvblZlcmlmaWNhdGlvbk9wdGlvbnM/LnNraXBUcmFuc2FjdGlvblZlcmlmaWNhdGlvbiB8fFxuICAgICAgICB0aGlzLmlzQnRjVW5kZWxlZ2F0ZSh0cmFuc2FjdGlvbikgfHxcbiAgICAgICAgdGhpcy5pc1RyeFN0YWtpbmcodHJhbnNhY3Rpb24pIHx8XG4gICAgICAgIHRoaXMuaXNTdHgoKSkgPz9cbiAgICAgIGZhbHNlO1xuICAgIGlmICghaXNTdGFraW5nVHhSZXF1ZXN0UHJlYnVpbGRSZXN1bHQoYnVpbHRUeC5yZXN1bHQpICYmICFza2lwVmVyaWZpY2F0aW9uKSB7XG4gICAgICBhd2FpdCB0aGlzLnZhbGlkYXRlQnVpbHRTdGFraW5nVHJhbnNhY3Rpb24oYnVpbHRUeC50cmFuc2FjdGlvbiwgYnVpbHRUeCk7XG4gICAgfVxuICAgIHJldHVybiBhd2FpdCB0aGlzLnNpZ24oc2lnbk9wdGlvbnMsIGJ1aWx0VHgpO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBleHBhbmRCdWlsZFBhcmFtcyhzdGFraW5nVHJhbnNhY3Rpb246IFN0YWtpbmdUcmFuc2FjdGlvbik6IFByb21pc2U8U3Rha2luZ1RyYW5zYWN0aW9uPiB7XG4gICAgcmV0dXJuIGF3YWl0IHRoaXMuYml0Z29cbiAgICAgIC5nZXQodGhpcy5iaXRnby5taWNyb3NlcnZpY2VzVXJsKHRoaXMuc3Rha2luZ1RyYW5zYWN0aW9uVVJMKHN0YWtpbmdUcmFuc2FjdGlvbikpKVxuICAgICAgLnF1ZXJ5KHsgZXhwYW5kQnVpbGRQYXJhbXM6IHRydWUgfSlcbiAgICAgIC5yZXN1bHQoKTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgY3JlYXRlU3Rha2luZ1JlcXVlc3QoXG4gICAgb3B0aW9uczpcbiAgICAgIHwgU3Rha2VPcHRpb25zXG4gICAgICB8IFVuc3Rha2VPcHRpb25zXG4gICAgICB8IEV0aFVuc3Rha2VPcHRpb25zXG4gICAgICB8IFN3aXRjaFZhbGlkYXRvck9wdGlvbnNcbiAgICAgIHwgQ2xhaW1SZXdhcmRzT3B0aW9uc1xuICAgICAgfCBQb3g1U3Rha2VPcHRpb25zXG4gICAgICB8IFRyb25TdGFrZU9wdGlvbnNcbiAgICAgIHwgVGFvU3Rha2VPcHRpb25zXG4gICAgICB8IFRhb1N3aXRjaFZhbGlkYXRvck9wdGlvbnNcbiAgICAgIHwgUG9seXhTd2l0Y2hWYWxpZGF0b3JPcHRpb25zXG4gICAgICB8IFZldFN0YWtlT3B0aW9uc1xuICAgICAgfCBTdG9yeVN0YWtlT3B0aW9uc1xuICAgICAgfCBYZGNTdGFrZU9wdGlvbnMsXG4gICAgdHlwZTogc3RyaW5nXG4gICk6IFByb21pc2U8U3Rha2luZ1JlcXVlc3Q+IHtcbiAgICByZXR1cm4gYXdhaXQgdGhpcy5iaXRnb1xuICAgICAgLnBvc3QodGhpcy5iaXRnby5taWNyb3NlcnZpY2VzVXJsKHRoaXMuc3Rha2luZ1JlcXVlc3RzVVJMKCkpKVxuICAgICAgLnNlbmQoe1xuICAgICAgICAuLi5vcHRpb25zLFxuICAgICAgICB0eXBlOiB0eXBlLFxuICAgICAgfSlcbiAgICAgIC5yZXN1bHQoKTtcbiAgfVxuXG4gIHByaXZhdGUgc3Rha2luZ1JlcXVlc3RzVVJMKCkge1xuICAgIHJldHVybiBgL2FwaS9zdGFraW5nL3YxLyR7dGhpcy5jb2lufS93YWxsZXRzLyR7dGhpcy53YWxsZXRJZH0vcmVxdWVzdHNgO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBnZXREZWxlZ2F0aW9ucyhvcHRpb25zOiBEZWxlZ2F0aW9uT3B0aW9ucyk6IFByb21pc2U8RGVsZWdhdGlvblJlc3VsdHM+IHtcbiAgICByZXR1cm4gYXdhaXQgdGhpcy5iaXRnby5nZXQodGhpcy5iaXRnby5taWNyb3NlcnZpY2VzVXJsKHRoaXMuc3Rha2luZ0RlbGVnYXRpb25zVVJMKCkpKS5xdWVyeShvcHRpb25zKS5yZXN1bHQoKTtcbiAgfVxuXG4gIHByaXZhdGUgc3Rha2luZ0RlbGVnYXRpb25zVVJMKCkge1xuICAgIHJldHVybiBgL2FwaS9zdGFraW5nL3YxLyR7dGhpcy5jb2lufS93YWxsZXRzLyR7dGhpcy53YWxsZXRJZH0vZGVsZWdhdGlvbnNgO1xuICB9XG5cbiAgcHJpdmF0ZSBzdGFraW5nUmVxdWVzdFVybChzdGFraW5nUmVxdWVzdElkOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHJldHVybiBgJHt0aGlzLnN0YWtpbmdSZXF1ZXN0c1VSTCgpfS8ke3N0YWtpbmdSZXF1ZXN0SWR9YDtcbiAgfVxuXG4gIHByaXZhdGUgc3Rha2luZ1RyYW5zYWN0aW9uVVJMKHN0YWtpbmdUcmFuc2FjdGlvbjogU3Rha2luZ1RyYW5zYWN0aW9uKTogc3RyaW5nIHtcbiAgICByZXR1cm4gYCR7dGhpcy5zdGFraW5nUmVxdWVzdFVybChzdGFraW5nVHJhbnNhY3Rpb24uc3Rha2luZ1JlcXVlc3RJZCl9L3RyYW5zYWN0aW9ucy8ke3N0YWtpbmdUcmFuc2FjdGlvbi5pZH1gO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBnZXRXYWxsZXRGb3JCdWlsZGluZ0FuZFNpZ25pbmcoKTogUHJvbWlzZTxJV2FsbGV0PiB7XG4gICAgaWYgKHRoaXMud2FsbGV0LmJhc2VDb2luLnRva2VuQ29uZmlnKSB7XG4gICAgICBpZiAoIXRoaXMudG9rZW5QYXJlbnRXYWxsZXQpIHtcbiAgICAgICAgdGhpcy50b2tlblBhcmVudFdhbGxldCA9IGF3YWl0IHRoaXMuYml0Z29cbiAgICAgICAgICAuY29pbih0aGlzLndhbGxldC5iYXNlQ29pbi50b2tlbkNvbmZpZy5jb2luKVxuICAgICAgICAgIC53YWxsZXRzKClcbiAgICAgICAgICAuZ2V0KHsgaWQ6IHRoaXMud2FsbGV0LmlkKCkgfSk7XG4gICAgICB9XG4gICAgICByZXR1cm4gdGhpcy50b2tlblBhcmVudFdhbGxldDtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSh0aGlzLndhbGxldCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFNlbmQgQVBJIGNhbGwgaXMgb25seSByZXF1aXJlZCBmb3IgVFNTIFR4UmVxdWVzdCBhcGkgdmVyc2lvbiBsaXRlIG9yIG11bHRpLXNpZyB0cmFuc2FjdGlvbnMuXG4gICAqIEZvciBGdWxsIGFwaSB2ZXJzaW9uLCBzaWduIHRyYW5zYWN0aW9uIG1vdmVzIHRoZSB0cmFuc2FjdGlvbiB0byBkZWxpdmVyZWQgc3RhdGUuXG4gICAqIEByZXR1cm5zIHRydWUgaWYgc2VuZCBBUEkgY2FsbCB0byBzdGFraW5nIHNlcnZpY2UgaXMgcmVxdWlyZWQgZWxzZSBmYWxzZVxuICAgKi9cbiAgcHJpdmF0ZSBpc1NlbmRDYWxsUmVxdWlyZWQoKTogYm9vbGVhbiB7XG4gICAgaWYgKHRoaXMud2FsbGV0LmJhc2VDb2luLmdldEZhbWlseSgpID09PSBDb2luRmFtaWx5LkVUSCkge1xuICAgICAgcmV0dXJuICF0aGlzLmlzRXRoVHNzO1xuICAgIH0gZWxzZSBpZiAodGhpcy53YWxsZXQubXVsdGlzaWdUeXBlKCkgPT09ICd0c3MnKSB7XG4gICAgICByZXR1cm4gdGhpcy53YWxsZXQuYmFzZUNvaW4uZ2V0TVBDQWxnb3JpdGhtKCkgIT09ICdlY2RzYSc7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgZ2V0RGVzY3JpcHRvcldhbGxldCh0cmFuc2FjdGlvbjogU3Rha2luZ1RyYW5zYWN0aW9uKTogUHJvbWlzZTxJV2FsbGV0PiB7XG4gICAgYXNzZXJ0KHRyYW5zYWN0aW9uLmJ1aWxkUGFyYW1zPy5zZW5kZXJXYWxsZXRJZCwgJ3NlbmRlcldhbGxldElkIGlzIHJlcXVpcmVkIGZvciBidGMgdW5kZWxlZ2F0ZSB0cmFuc2FjdGlvbicpO1xuICAgIHJldHVybiBhd2FpdCB0aGlzLndhbGxldC5iYXNlQ29pbi53YWxsZXRzKCkuZ2V0KHsgaWQ6IHRyYW5zYWN0aW9uLmJ1aWxkUGFyYW1zLnNlbmRlcldhbGxldElkIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyB2YWxpZGF0ZUJ1aWx0U3Rha2luZ1RyYW5zYWN0aW9uKFxuICAgIHRyYW5zYWN0aW9uOiBTdGFraW5nVHJhbnNhY3Rpb24sXG4gICAgcHJlYnVpbHRTdGFraW5nVHJhbnNhY3Rpb246IFN0YWtpbmdQcmVidWlsZFRyYW5zYWN0aW9uUmVzdWx0XG4gICkge1xuICAgIGNvbnN0IHsgYnVpbGRQYXJhbXMgfSA9IHRyYW5zYWN0aW9uO1xuICAgIGNvbnN0IHsgcmVzdWx0IH0gPSBwcmVidWlsdFN0YWtpbmdUcmFuc2FjdGlvbjtcbiAgICBjb25zdCBjb2luID0gdGhpcy53YWxsZXQuYmFzZUNvaW47XG4gICAgZGVidWcoYFZhbGlkYXRpbmcgc3Rha2luZyB0cmFuc2FjdGlvbiAke3RyYW5zYWN0aW9uLnN0YWtpbmdSZXF1ZXN0SWR9IHdpdGggcHJlYnVpbHQgdHJhbnNhY3Rpb25gKTtcblxuICAgIGlmICghKCd0eEhleCcgaW4gcmVzdWx0KSB8fCAhcmVzdWx0LnR4SGV4KSB7XG4gICAgICBkZWJ1ZyhgU2tpcHBpbmcgdmFsaWRhdGlvbiBmb3Igc3Rha2luZyB0cmFuc2FjdGlvbiAke3RyYW5zYWN0aW9uLnN0YWtpbmdSZXF1ZXN0SWR9IC0gdHhIZXggaXMgdW5kZWZpbmVkYCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgZXhwbGFpbmVkVHJhbnNhY3Rpb24gPSBhd2FpdCBjb2luLmV4cGxhaW5UcmFuc2FjdGlvbihyZXN1bHQsIHRoaXMud2FsbGV0KTtcbiAgICBjb25zdCBtaXNtYXRjaEVycm9yczogc3RyaW5nW10gPSBbXTtcblxuICAgIGlmIChidWlsZFBhcmFtcz8ucmVjaXBpZW50cyAmJiBidWlsZFBhcmFtcy5yZWNpcGllbnRzLmxlbmd0aCA+IDApIHtcbiAgICAgIGNvbnN0IHVzZXJSZWNpcGllbnRNYXAgPSBuZXcgTWFwKFxuICAgICAgICBidWlsZFBhcmFtcy5yZWNpcGllbnRzLm1hcCgocmVjaXBpZW50KSA9PiBbcmVjaXBpZW50LmFkZHJlc3MudG9Mb3dlckNhc2UoKSwgcmVjaXBpZW50XSlcbiAgICAgICk7XG4gICAgICBjb25zdCBwbGF0Zm9ybVJlY2lwaWVudE1hcCA9IG5ldyBNYXAoXG4gICAgICAgIChleHBsYWluZWRUcmFuc2FjdGlvbj8ub3V0cHV0cyA/PyBbXSkubWFwKChyZWNpcGllbnQpID0+IFtyZWNpcGllbnQuYWRkcmVzcy50b0xvd2VyQ2FzZSgpLCByZWNpcGllbnRdKVxuICAgICAgKTtcbiAgICAgIGZvciAoY29uc3QgW2FkZHJlc3NdIG9mIHBsYXRmb3JtUmVjaXBpZW50TWFwKSB7XG4gICAgICAgIGlmICghdXNlclJlY2lwaWVudE1hcC5oYXMoYWRkcmVzcykpIHtcbiAgICAgICAgICBtaXNtYXRjaEVycm9ycy5wdXNoKGBVbmV4cGVjdGVkIHJlY2lwaWVudCBhZGRyZXNzIGZvdW5kIGluIGJ1aWx0IHRyYW5zYWN0aW9uOiAke2FkZHJlc3N9YCk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgZm9yIChjb25zdCBbYWRkcmVzcywgdXNlclJlY2lwaWVudF0gb2YgdXNlclJlY2lwaWVudE1hcCkge1xuICAgICAgICBjb25zdCBwbGF0Zm9ybVJlY2lwaWVudCA9IHBsYXRmb3JtUmVjaXBpZW50TWFwLmdldChhZGRyZXNzKTtcbiAgICAgICAgaWYgKCFwbGF0Zm9ybVJlY2lwaWVudCkge1xuICAgICAgICAgIG1pc21hdGNoRXJyb3JzLnB1c2goYEV4cGVjdGVkIHJlY2lwaWVudCBhZGRyZXNzIG5vdCBmb3VuZCBpbiBidWlsdCB0cmFuc2FjdGlvbjogJHthZGRyZXNzfWApO1xuICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgbWF0Y2hSZXN1bHQgPSB0cmFuc2FjdGlvblJlY2lwaWVudHNNYXRjaCh1c2VyUmVjaXBpZW50LCBwbGF0Zm9ybVJlY2lwaWVudCk7XG5cbiAgICAgICAgaWYgKCFtYXRjaFJlc3VsdC5hbW91bnRNYXRjaCkge1xuICAgICAgICAgIG1pc21hdGNoRXJyb3JzLnB1c2goXG4gICAgICAgICAgICBgUmVjaXBpZW50ICR7YWRkcmVzc30gYW1vdW50IG1pc21hdGNoLiBFeHBlY3RlZDogJHt1c2VyUmVjaXBpZW50LmFtb3VudH0sIEdvdDogJHtwbGF0Zm9ybVJlY2lwaWVudC5hbW91bnR9YFxuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFtYXRjaFJlc3VsdC50b2tlbk1hdGNoKSB7XG4gICAgICAgICAgbWlzbWF0Y2hFcnJvcnMucHVzaChcbiAgICAgICAgICAgIGBSZWNpcGllbnQgJHthZGRyZXNzfSB0b2tlbiBtaXNtYXRjaC4gRXhwZWN0ZWQ6ICR7dXNlclJlY2lwaWVudC50b2tlbk5hbWUgPz8gJ25hdGl2ZSBjb2luJ30sIEdvdDogJHtcbiAgICAgICAgICAgICAgcGxhdGZvcm1SZWNpcGllbnQudG9rZW5OYW1lID8/ICduYXRpdmUgY29pbidcbiAgICAgICAgICAgIH1gXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChidWlsZFBhcmFtcz8ubWVtbyAmJiAoZXhwbGFpbmVkVHJhbnNhY3Rpb24gYXMgYW55KS5tZW1vICE9PSBidWlsZFBhcmFtcy5tZW1vKSB7XG4gICAgICBtaXNtYXRjaEVycm9ycy5wdXNoKFxuICAgICAgICBgTWVtbyBtaXNtYXRjaC4gRXhwZWN0ZWQ6ICcke0pTT04uc3RyaW5naWZ5KGJ1aWxkUGFyYW1zLm1lbW8pfScsIEdvdDogJyR7SlNPTi5zdHJpbmdpZnkoXG4gICAgICAgICAgKGV4cGxhaW5lZFRyYW5zYWN0aW9uIGFzIGFueSkubWVtb1xuICAgICAgICApfSdgXG4gICAgICApO1xuICAgIH1cblxuICAgIGlmIChidWlsZFBhcmFtcz8uZ2FzTGltaXQgJiYgU3RyaW5nKChleHBsYWluZWRUcmFuc2FjdGlvbiBhcyBhbnkpLmdhc0xpbWl0KSAhPT0gU3RyaW5nKGJ1aWxkUGFyYW1zLmdhc0xpbWl0KSkge1xuICAgICAgbWlzbWF0Y2hFcnJvcnMucHVzaChcbiAgICAgICAgYEdhcyBMaW1pdCBtaXNtYXRjaC4gRXhwZWN0ZWQ6ICR7YnVpbGRQYXJhbXMuZ2FzTGltaXR9LCBHb3Q6ICR7KGV4cGxhaW5lZFRyYW5zYWN0aW9uIGFzIGFueSkuZ2FzTGltaXR9YFxuICAgICAgKTtcbiAgICB9XG5cbiAgICBpZiAoXG4gICAgICBidWlsZFBhcmFtcz8udHlwZSAmJlxuICAgICAgKGV4cGxhaW5lZFRyYW5zYWN0aW9uIGFzIGFueSkudHlwZSAhPT0gdW5kZWZpbmVkICYmXG4gICAgICBUcmFuc2FjdGlvblR5cGVbYnVpbGRQYXJhbXMudHlwZV0gIT09IChleHBsYWluZWRUcmFuc2FjdGlvbiBhcyBhbnkpLnR5cGVcbiAgICApIHtcbiAgICAgIG1pc21hdGNoRXJyb3JzLnB1c2goXG4gICAgICAgIGBUcmFuc2FjdGlvbiB0eXBlIG1pc21hdGNoLiBFeHBlY3RlZDogJyR7YnVpbGRQYXJhbXMudHlwZX0nLCBHb3Q6ICckeyhleHBsYWluZWRUcmFuc2FjdGlvbiBhcyBhbnkpLnR5cGV9J2BcbiAgICAgICk7XG4gICAgfVxuXG4gICAgaWYgKGJ1aWxkUGFyYW1zPy5zb2xJbnN0cnVjdGlvbnMpIHtcbiAgICAgIGlmICghaXNFcXVhbCgoZXhwbGFpbmVkVHJhbnNhY3Rpb24gYXMgYW55KS5zb2xJbnN0cnVjdGlvbnMsIGJ1aWxkUGFyYW1zLnNvbEluc3RydWN0aW9ucykpIHtcbiAgICAgICAgbWlzbWF0Y2hFcnJvcnMucHVzaChcbiAgICAgICAgICBgU29sYW5hIGluc3RydWN0aW9ucyBtaXNtYXRjaC4gRXhwZWN0ZWQ6ICR7SlNPTi5zdHJpbmdpZnkoXG4gICAgICAgICAgICBidWlsZFBhcmFtcy5zb2xJbnN0cnVjdGlvbnNcbiAgICAgICAgICApfSwgR290OiAke0pTT04uc3RyaW5naWZ5KChleHBsYWluZWRUcmFuc2FjdGlvbiBhcyBhbnkpLnNvbEluc3RydWN0aW9ucyl9YFxuICAgICAgICApO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChtaXNtYXRjaEVycm9ycy5sZW5ndGggPiAwKSB7XG4gICAgICBjb25zdCBlcnJvck1lc3NhZ2UgPSBgU3Rha2luZyB0cmFuc2FjdGlvbiB2YWxpZGF0aW9uIGZhaWxlZCBiZWZvcmUgc2lnbmluZzogJHttaXNtYXRjaEVycm9ycy5qb2luKCc7ICcpfWA7XG4gICAgICBkZWJ1ZyhlcnJvck1lc3NhZ2UpO1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGVycm9yTWVzc2FnZSk7XG4gICAgfVxuXG4gICAgaWYgKCFidWlsZFBhcmFtcykge1xuICAgICAgZGVidWcoXG4gICAgICAgIGBDYW5ub3QgcGVyZm9ybSBkZWVwIHZhbGlkYXRpb24gZm9yIHN0YWtpbmcgdHJhbnNhY3Rpb24gJHt0cmFuc2FjdGlvbi5zdGFraW5nUmVxdWVzdElkfSB3aXRob3V0IHNwZWNpZmllZCBidWlsZCBwYXJhbXNgXG4gICAgICApO1xuICAgIH1cbiAgfVxufVxuXG5mdW5jdGlvbiBpc1N0YWtpbmdUeFJlcXVlc3RQcmVidWlsZFJlc3VsdChcbiAgdHg6IFN0YWtpbmdQcmVidWlsZFRyYW5zYWN0aW9uUmVzdWx0WydyZXN1bHQnXVxuKTogdHggaXMgU3Rha2luZ1R4UmVxdWVzdFByZWJ1aWxkVHJhbnNhY3Rpb25SZXN1bHQge1xuICByZXR1cm4gKHR4IGFzIFN0YWtpbmdUeFJlcXVlc3RQcmVidWlsZFRyYW5zYWN0aW9uUmVzdWx0KS50eFJlcXVlc3RJZCAhPT0gdW5kZWZpbmVkO1xufVxuIl19
|
|
381
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3Rha2luZ1dhbGxldC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9iaXRnby9zdGFraW5nL3N0YWtpbmdXYWxsZXQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUE7O0dBRUc7QUFDSCxpREFBaUQ7QUFDakQsNkRBQXFDO0FBNkJyQyxvQ0FBOEQ7QUFDOUQsb0RBQTRCO0FBQzVCLGdFQUF1RTtBQUN2RSxrREFBMEI7QUFDMUIsbURBQW9EO0FBRXBELE1BQWEsYUFBYTtJQVF4QixZQUFZLE1BQWUsRUFBRSxRQUFpQjtRQUM1QyxJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQztRQUNyQixJQUFJLENBQUMsS0FBSyxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUM7UUFDMUIsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLGdCQUFRLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDM0UsSUFBSSxDQUFDLFFBQVEsR0FBRyxRQUFRLENBQUM7SUFDM0IsQ0FBQztJQUVELElBQUksUUFBUTtRQUNWLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxFQUFFLEVBQUUsQ0FBQztJQUMxQixDQUFDO0lBRUQsSUFBSSxJQUFJO1FBQ04sT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDdkcsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxLQUFLLENBQUMsS0FBSyxDQUNULE9BT21CO1FBRW5CLHdCQUF3QixDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ2xDLE9BQU8sTUFBTSxJQUFJLENBQUMsb0JBQW9CLENB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QztBQUVELFNBQVMsZ0NBQWdDLENBQ3ZDLEVBQThDO0lBRTlDLE9BQVEsRUFBZ0QsQ0FBQyxXQUFXLEtBQUssU0FBUyxDQUFDO0FBQ3JGLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBwcmV0dGllclxuICovXG5pbXBvcnQgeyBDb2luRmFtaWx5IH0gZnJvbSAnQGJpdGdvLWJldGEvc3RhdGljcyc7XG5pbXBvcnQgaXNFcXVhbCBmcm9tICdsb2Rhc2gvaXNFcXVhbCc7XG5cbmltcG9ydCB7XG4gIERlbGVnYXRpb25PcHRpb25zLFxuICBEZWxlZ2F0aW9uUmVzdWx0cyxcbiAgSVN0YWtpbmdXYWxsZXQsXG4gIFN0YWtlT3B0aW9ucyxcbiAgU3Rha2luZ1ByZWJ1aWxkVHJhbnNhY3Rpb25SZXN1bHQsXG4gIFN0YWtpbmdSZXF1ZXN0LFxuICBTdGFraW5nU2lnbmVkVHJhbnNhY3Rpb24sXG4gIFN0YWtpbmdTaWduT3B0aW9ucyxcbiAgU3Rha2luZ1RyYW5zYWN0aW9uLFxuICBTd2l0Y2hWYWxpZGF0b3JPcHRpb25zLFxuICBUcmFuc2FjdGlvbnNSZWFkeVRvU2lnbixcbiAgVW5zdGFrZU9wdGlvbnMsXG4gIEV0aFVuc3Rha2VPcHRpb25zLFxuICBDbGFpbVJld2FyZHNPcHRpb25zLFxuICBTdGFraW5nVHhSZXF1ZXN0UHJlYnVpbGRUcmFuc2FjdGlvblJlc3VsdCxcbiAgVHJvblN0YWtlT3B0aW9ucyxcbiAgVGFvU3Rha2VPcHRpb25zLFxuICBUYW9Td2l0Y2hWYWxpZGF0b3JPcHRpb25zLFxuICBQb2x5eFN3aXRjaFZhbGlkYXRvck9wdGlvbnMsXG4gIFZldFN0YWtlT3B0aW9ucyxcbiAgU3RvcnlTdGFrZU9wdGlvbnMsXG4gIFhkY1N0YWtlT3B0aW9ucyxcbiAgUG94NVN0YWtlT3B0aW9ucyxcbn0gZnJvbSAnLi9pU3Rha2luZ1dhbGxldCc7XG5pbXBvcnQgeyBCaXRHb0Jhc2UgfSBmcm9tICcuLi9iaXRnb0Jhc2UnO1xuaW1wb3J0IHsgSVdhbGxldCwgUHJlYnVpbGRUcmFuc2FjdGlvblJlc3VsdCB9IGZyb20gJy4uL3dhbGxldCc7XG5pbXBvcnQgeyBJVHNzVXRpbHMsIFJlcXVlc3RUcmFjZXIsIFRzc1V0aWxzIH0gZnJvbSAnLi4vdXRpbHMnO1xuaW1wb3J0IGFzc2VydCBmcm9tICdhc3NlcnQnO1xuaW1wb3J0IHsgdHJhbnNhY3Rpb25SZWNpcGllbnRzTWF0Y2ggfSBmcm9tICcuLi91dGlscy90cmFuc2FjdGlvblV0aWxzJztcbmltcG9ydCBkZWJ1ZyBmcm9tICdkZWJ1Zyc7XG5pbXBvcnQgeyBUcmFuc2FjdGlvblR5cGUgfSBmcm9tICcuLi8uLi9hY2NvdW50LWxpYic7XG5cbmV4cG9ydCBjbGFzcyBTdGFraW5nV2FsbGV0IGltcGxlbWVudHMgSVN0YWtpbmdXYWxsZXQge1xuICBwcml2YXRlIHJlYWRvbmx5IGJpdGdvOiBCaXRHb0Jhc2U7XG4gIHByaXZhdGUgdG9rZW5QYXJlbnRXYWxsZXQ/OiBJV2FsbGV0O1xuICBwcml2YXRlIHJlYWRvbmx5IGlzRXRoVHNzOiBib29sZWFuO1xuXG4gIHB1YmxpYyB3YWxsZXQ6IElXYWxsZXQ7XG4gIHB1YmxpYyB0c3NVdGlsOiBJVHNzVXRpbHM7XG5cbiAgY29uc3RydWN0b3Iod2FsbGV0OiBJV2FsbGV0LCBpc0V0aFRzczogYm9vbGVhbikge1xuICAgIHRoaXMud2FsbGV0ID0gd2FsbGV0O1xuICAgIHRoaXMuYml0Z28gPSB3YWxsZXQuYml0Z287XG4gICAgdGhpcy50c3NVdGlsID0gbmV3IFRzc1V0aWxzKHRoaXMuYml0Z28sIHRoaXMud2FsbGV0LmJhc2VDb2luLCB0aGlzLndhbGxldCk7XG4gICAgdGhpcy5pc0V0aFRzcyA9IGlzRXRoVHNzO1xuICB9XG5cbiAgZ2V0IHdhbGxldElkKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMud2FsbGV0LmlkKCk7XG4gIH1cblxuICBnZXQgY29pbigpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLndhbGxldC5iYXNlQ29pbi50b2tlbkNvbmZpZyA/IHRoaXMud2FsbGV0LmJhc2VDb2luLnRva2VuQ29uZmlnLnR5cGUgOiB0aGlzLndhbGxldC5jb2luKCk7XG4gIH1cblxuICAvKipcbiAgICogU3Rha2UgY29pbnNcbiAgICogQHBhcmFtIG9wdGlvbnMgLSBzdGFrZSBvcHRpb25zXG4gICAqIEByZXR1cm4gU3Rha2luZ1JlcXVlc3RcbiAgICovXG4gIGFzeW5jIHN0YWtlKFxuICAgIG9wdGlvbnM6XG4gICAgICB8IFN0YWtlT3B0aW9uc1xuICAgICAgfCBQb3g1U3Rha2VPcHRpb25zXG4gICAgICB8IFRyb25TdGFrZU9wdGlvbnNcbiAgICAgIHwgVGFvU3Rha2VPcHRpb25zXG4gICAgICB8IFZldFN0YWtlT3B0aW9uc1xuICAgICAgfCBTdG9yeVN0YWtlT3B0aW9uc1xuICAgICAgfCBYZGNTdGFrZU9wdGlvbnNcbiAgKTogUHJvbWlzZTxTdGFraW5nUmVxdWVzdD4ge1xuICAgIHZhbGlkYXRlUG94NVN0YWtlT3B0aW9ucyhvcHRpb25zKTtcbiAgICByZXR1cm4gYXdhaXQgdGhpcy5jcmVhdGVTdGFraW5nUmVxdWVzdChvcHRpb25zLCAnU1RBS0UnKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBVbnN0YWtlIGNvaW5zXG4gICAqIEBwYXJhbSBvcHRpb25zIC0gdW5zdGFrZSBvcHRpb25zXG4gICAqIEByZXR1cm4gU3Rha2luZ1JlcXVlc3RcbiAgICovXG4gIGFzeW5jIHVuc3Rha2Uob3B0aW9uczogVW5zdGFrZU9wdGlvbnMgfCBFdGhVbnN0YWtlT3B0aW9ucyk6IFByb21pc2U8U3Rha2luZ1JlcXVlc3Q+IHtcbiAgICByZXR1cm4gYXdhaXQgdGhpcy5jcmVhdGVTdGFraW5nUmVxdWVzdChvcHRpb25zLCAnVU5TVEFLRScpO1xuICB9XG5cbiAgLyoqXG4gICAqIFN1Ym1pdCBhIHJlcXVlc3QgdG8gc3dpdGNoIHRoZSB2YWxpZGF0b3IgdXNlZCBmb3IgYSBzcGVjaWZpYyBkZWxlZ2F0aW9uXG4gICAqIFRoaXMgd2lsbCBjcmVhdGUgYSBuZXcgZGVsZWdhdGlvbiB3aXRoIHRoZSBuZXcgdmFsaWRhdG9yIGFkZHJlc3MgYW5kIG1hcmsgdGhlIG9sZCBkZWxlZ2F0aW9uIGFzIGluYWN0aXZlXG4gICAqIEBwYXJhbSBvcHRpb25zIC0gc3dpdGNoIHZhbGlkYXRvciBvcHRpb25zXG4gICAqIEByZXR1cm4gU3Rha2luZ1JlcXVlc3RcbiAgICovXG4gIGFzeW5jIHN3aXRjaFZhbGlkYXRvcihcbiAgICBvcHRpb25zOiBTd2l0Y2hWYWxpZGF0b3JPcHRpb25zIHwgVGFvU3dpdGNoVmFsaWRhdG9yT3B0aW9ucyB8IFBvbHl4U3dpdGNoVmFsaWRhdG9yT3B0aW9uc1xuICApOiBQcm9taXNlPFN0YWtpbmdSZXF1ZXN0PiB7XG4gICAgcmV0dXJuIGF3YWl0IHRoaXMuY3JlYXRlU3Rha2luZ1JlcXVlc3Qob3B0aW9ucywgJ1NXSVRDSF9WQUxJREFUT1InKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTdWJtaXQgYSByZXF1ZXN0IHRvIGNsYWltIHJld2FyZHMgZm9yIGEgc3BlY2lmaWMgZGVsZWdhdGlvblxuICAgKiBAcGFyYW0gb3B0aW9ucyAtIGNsYWltIHJld2FyZHMgb3B0aW9uc1xuICAgKiBAcmV0dXJuIFN0YWtpbmdSZXF1ZXN0XG4gICAqL1xuICBhc3luYyBjbGFpbVJld2FyZHMob3B0aW9uczogQ2xhaW1SZXdhcmRzT3B0aW9ucyk6IFByb21pc2U8U3Rha2luZ1JlcXVlc3Q+IHtcbiAgICByZXR1cm4gYXdhaXQgdGhpcy5jcmVhdGVTdGFraW5nUmVxdWVzdChvcHRpb25zLCAnQ0xBSU1fUkVXQVJEUycpO1xuICB9XG5cbiAgLyoqXG4gICAqIENhbmNlbCBzdGFraW5nIHJlcXVlc3RcbiAgICogQHBhcmFtIHN0YWtpbmdSZXF1ZXN0SWQgLSBpZCBvZiB0aGUgc3Rha2luZyByZXF1ZXN0IHRvIGNhbmNlbFxuICAgKiBAcmV0dXJuIFN0YWtpbmdSZXF1ZXN0XG4gICAqL1xuICBhc3luYyBjYW5jZWxTdGFraW5nUmVxdWVzdChzdGFraW5nUmVxdWVzdElkOiBzdHJpbmcpOiBQcm9taXNlPFN0YWtpbmdSZXF1ZXN0PiB7XG4gICAgcmV0dXJuIGF3YWl0IHRoaXMuYml0Z28uZGVsKHRoaXMuYml0Z28ubWljcm9zZXJ2aWNlc1VybCh0aGlzLnN0YWtpbmdSZXF1ZXN0VXJsKHN0YWtpbmdSZXF1ZXN0SWQpKSkucmVzdWx0KCk7XG4gIH1cblxuICAvKipcbiAgICogRmV0Y2ggZGVsZWdhdGlvbnMgZm9yIGEgc3BlY2lmaWMgd2FsbGV0XG4gICAqIEBwYXJhbSBvcHRpb25zIC0gdW5zdGFrZSBvcHRpb25zXG4gICAqIEByZXR1cm4gU3Rha2luZ1JlcXVlc3RcbiAgICovXG4gIGFzeW5jIGRlbGVnYXRpb25zKG9wdGlvbnM6IERlbGVnYXRpb25PcHRpb25zKTogUHJvbWlzZTxEZWxlZ2F0aW9uUmVzdWx0cz4ge1xuICAgIHJldHVybiBhd2FpdCB0aGlzLmdldERlbGVnYXRpb25zKG9wdGlvbnMpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCBhIHN0YWtpbmcgcmVxdWVzdCBieSBJRFxuICAgKiBAcGFyYW0gc3Rha2luZ1JlcXVlc3RJZCAtIGlkIG9mIHRoZSBzdGFraW5nIHJlcXVlc3QgdG8gcmV0cmlldmVcbiAgICogQHJldHVybiBTdGFraW5nUmVxdWVzdFxuICAgKi9cbiAgYXN5bmMgZ2V0U3Rha2luZ1JlcXVlc3Qoc3Rha2luZ1JlcXVlc3RJZDogc3RyaW5nKTogUHJvbWlzZTxTdGFraW5nUmVxdWVzdD4ge1xuICAgIHJldHVybiBhd2FpdCB0aGlzLmJpdGdvLmdldCh0aGlzLmJpdGdvLm1pY3Jvc2VydmljZXNVcmwodGhpcy5zdGFraW5nUmVxdWVzdFVybChzdGFraW5nUmVxdWVzdElkKSkpLnJlc3VsdCgpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCB0cmFuc2FjdGlvbnMgcmVhZHkgdG8gc2lnblxuICAgKiBAcGFyYW0gc3Rha2luZ1JlcXVlc3RJZFxuICAgKiBAcmV0dXJuIFRyYW5zYWN0aW9uc1JlYWR5VG9TaWduXG4gICAqL1xuICBhc3luYyBnZXRUcmFuc2FjdGlvbnNSZWFkeVRvU2lnbihzdGFraW5nUmVxdWVzdElkOiBzdHJpbmcpOiBQcm9taXNlPFRyYW5zYWN0aW9uc1JlYWR5VG9TaWduPiB7XG4gICAgY29uc3Qgc3Rha2luZ1JlcXVlc3Q6IFN0YWtpbmdSZXF1ZXN0ID0gYXdhaXQgdGhpcy5nZXRTdGFraW5nUmVxdWVzdChzdGFraW5nUmVxdWVzdElkKTtcbiAgICBjb25zdCByZWFkeVRvU2lnbjogU3Rha2luZ1RyYW5zYWN0aW9uW10gPSBzdGFraW5nUmVxdWVzdC50cmFuc2FjdGlvbnMuZmlsdGVyKFxuICAgICAgKHRyYW5zYWN0aW9uOiBTdGFraW5nVHJhbnNhY3Rpb24pID0+IHRyYW5zYWN0aW9uLnN0YXR1cyA9PT0gYFJFQURZYFxuICAgICk7XG4gICAgY29uc3QgbmV3VHJhbnNhY3Rpb25zOiBTdGFraW5nVHJhbnNhY3Rpb25bXSA9IHN0YWtpbmdSZXF1ZXN0LnRyYW5zYWN0aW9ucy5maWx0ZXIoXG4gICAgICAodHJhbnNhY3Rpb246IFN0YWtpbmdUcmFuc2FjdGlvbikgPT4gdHJhbnNhY3Rpb24uc3RhdHVzID09PSBgTkVXYFxuICAgICk7XG5cbiAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHtcbiAgICAgIGFsbFNpZ25pbmdDb21wbGV0ZTpcbiAgICAgICAgc3Rha2luZ1JlcXVlc3QudHJhbnNhY3Rpb25zLmxlbmd0aCA+IDAgJiYgbmV3VHJhbnNhY3Rpb25zLmxlbmd0aCA9PT0gMCAmJiByZWFkeVRvU2lnbi5sZW5ndGggPT09IDAsXG4gICAgICB0cmFuc2FjdGlvbnM6IHJlYWR5VG9TaWduLFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEJ1aWxkIHRoZSBzdGFraW5nIHRyYW5zYWN0aW9uXG4gICAqIElmIFRTUyBkZWxldGUgc2lnbmF0dXJlIHNoYXJlcywgZWxzZSBleHBhbmQgYnVpbGQgcGFyYW1zIGFuZCB0aGVuIGJ1aWxkXG4gICAqIEBwYXJhbSB0cmFuc2FjdGlvbiAtIHN0YWtpbmcgdHJhbnNhY3Rpb24gdG8gYnVpbGRcbiAgICovXG4gIGFzeW5jIGJ1aWxkKHRyYW5zYWN0aW9uOiBTdGFraW5nVHJhbnNhY3Rpb24pOiBQcm9taXNlPFN0YWtpbmdQcmVidWlsZFRyYW5zYWN0aW9uUmVzdWx0PiB7XG4gICAgaWYgKCh0aGlzLndhbGxldC5tdWx0aXNpZ1R5cGUoKSA9PT0gJ3RzcycgJiYgdGhpcy53YWxsZXQuYmFzZUNvaW4uZ2V0RmFtaWx5KCkgIT09ICdldGgnKSB8fCB0aGlzLmlzRXRoVHNzKSB7XG4gICAgICBpZiAoIXRyYW5zYWN0aW9uLnR4UmVxdWVzdElkKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcigndHhSZXF1ZXN0SWQgaXMgcmVxdWlyZWQgdG8gc2lnbiBhbmQgc2VuZCcpO1xuICAgICAgfVxuICAgICAgLy8gZGVsZXRlIHNpZ25hdHVyZSBzaGFyZXMgYmVmb3JlIHNpZ25pbmcgZm9yIHRyYW5zYWN0aW9uIHJlcXVlc3QgQVBJXG4gICAgICBhd2FpdCB0aGlzLnRzc1V0aWwuZGVsZXRlU2lnbmF0dXJlU2hhcmVzKHRyYW5zYWN0aW9uLnR4UmVxdWVzdElkKTtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHRyYW5zYWN0aW9uOiB0cmFuc2FjdGlvbixcbiAgICAgICAgcmVzdWx0OiB7XG4gICAgICAgICAgd2FsbGV0SWQ6IHRoaXMud2FsbGV0SWQsXG4gICAgICAgICAgdHhSZXF1ZXN0SWQ6IHRyYW5zYWN0aW9uLnR4UmVxdWVzdElkLFxuICAgICAgICB9LFxuICAgICAgfTtcbiAgICB9IGVsc2Uge1xuICAgICAgdHJhbnNhY3Rpb24gPSBhd2FpdCB0aGlzLmV4cGFuZEJ1aWxkUGFyYW1zKHRyYW5zYWN0aW9uKTtcbiAgICAgIGlmICghdHJhbnNhY3Rpb24uYnVpbGRQYXJhbXMpIHtcbiAgICAgICAgdGhyb3cgRXJyb3IoYFN0YWtpbmcgdHJhbnNhY3Rpb24gJHt0cmFuc2FjdGlvbi5pZH0gYnVpbGQgcGFyYW1zIG5vdCBleHBhbmRlZGApO1xuICAgICAgfVxuICAgICAgY29uc3Qgd2FsbGV0ID0gYXdhaXQgdGhpcy5leHRyYWN0V2FsbGV0KHRyYW5zYWN0aW9uKTtcblxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdHJhbnNhY3Rpb246IHRyYW5zYWN0aW9uLFxuICAgICAgICByZXN1bHQ6IGF3YWl0IHdhbGxldC5wcmVidWlsZFRyYW5zYWN0aW9uKHRyYW5zYWN0aW9uLmJ1aWxkUGFyYW1zKSxcbiAgICAgIH07XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBleHRyYWN0V2FsbGV0KHRyYW5zYWN0aW9uOiBTdGFraW5nVHJhbnNhY3Rpb24pIHtcbiAgICByZXR1cm4gdGhpcy5pc0J0Y1VuZGVsZWdhdGUodHJhbnNhY3Rpb24pXG4gICAgICA/IGF3YWl0IHRoaXMuZ2V0RGVzY3JpcHRvcldhbGxldCh0cmFuc2FjdGlvbilcbiAgICAgIDogYXdhaXQgdGhpcy5nZXRXYWxsZXRGb3JCdWlsZGluZ0FuZFNpZ25pbmcoKTtcbiAgfVxuXG4gIHByaXZhdGUgaXNCdGNVbmRlbGVnYXRlKHRyYW5zYWN0aW9uOiBTdGFraW5nVHJhbnNhY3Rpb24pIHtcbiAgICByZXR1cm4gKFxuICAgICAgdGhpcy53YWxsZXQuYmFzZUNvaW4uZ2V0RmFtaWx5KCkgPT09ICdidGMnICYmIHRyYW5zYWN0aW9uLnRyYW5zYWN0aW9uVHlwZS50b0xvd2VyQ2FzZSgpID09PSAndW5kZWxlZ2F0ZV93aXRoZHJhdydcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBpc1N0eCgpIHtcbiAgICByZXR1cm4gdGhpcy53YWxsZXQuYmFzZUNvaW4uZ2V0RmFtaWx5KCkgPT09ICdzdHgnO1xuICB9XG5cbiAgcHJpdmF0ZSBpc1RyeFN0YWtpbmcodHJhbnNhY3Rpb246IFN0YWtpbmdUcmFuc2FjdGlvbikge1xuICAgIHJldHVybiB0aGlzLndhbGxldC5iYXNlQ29pbi5nZXRGYW1pbHkoKSA9PT0gJ3RyeCc7XG4gIH1cblxuICAvKipcbiAgICogU2lnbiB0aGUgc3Rha2luZyB0cmFuc2FjdGlvblxuICAgKiBAcGFyYW0gc2lnbk9wdGlvbnNcbiAgICogQHBhcmFtIHN0YWtpbmdQcmVidWlsZFRyYW5zYWN0aW9uXG4gICAqL1xuICBhc3luYyBzaWduKFxuICAgIHNpZ25PcHRpb25zOiBTdGFraW5nU2lnbk9wdGlvbnMsXG4gICAgc3Rha2luZ1ByZWJ1aWxkVHJhbnNhY3Rpb246IFN0YWtpbmdQcmVidWlsZFRyYW5zYWN0aW9uUmVzdWx0XG4gICk6IFByb21pc2U8U3Rha2luZ1NpZ25lZFRyYW5zYWN0aW9uPiB7XG4gICAgY29uc3QgcmVxSWQgPSBuZXcgUmVxdWVzdFRyYWNlcigpO1xuICAgIGNvbnN0IGlzQnRjVW5kZWxlZ2F0ZSA9XG4gICAgICB0aGlzLndhbGxldC5iYXNlQ29pbi5nZXRGYW1pbHkoKSA9PT0gJ2J0YycgJiZcbiAgICAgIHN0YWtpbmdQcmVidWlsZFRyYW5zYWN0aW9uLnRyYW5zYWN0aW9uLnRyYW5zYWN0aW9uVHlwZS50b0xvd2VyQ2FzZSgpID09PSAndW5kZWxlZ2F0ZV93aXRoZHJhdyc7XG4gICAgY29uc3Qgd2FsbGV0ID0gaXNCdGNVbmRlbGVnYXRlXG4gICAgICA/IGF3YWl0IHRoaXMuZ2V0RGVzY3JpcHRvcldhbGxldChzdGFraW5nUHJlYnVpbGRUcmFuc2FjdGlvbi50cmFuc2FjdGlvbilcbiAgICAgIDogYXdhaXQgdGhpcy5nZXRXYWxsZXRGb3JCdWlsZGluZ0FuZFNpZ25pbmcoKTtcblxuICAgIGNvbnN0IGtleWNoYWluID0gYXdhaXQgd2FsbGV0LmJhc2VDb2luLmtleWNoYWlucygpLmdldEtleXNGb3JTaWduaW5nKHtcbiAgICAgIHdhbGxldDogdGhpcy53YWxsZXQsXG4gICAgICByZXFJZDogcmVxSWQsXG4gICAgfSk7XG4gICAgcmV0dXJuIHtcbiAgICAgIHRyYW5zYWN0aW9uOiBzdGFraW5nUHJlYnVpbGRUcmFuc2FjdGlvbi50cmFuc2FjdGlvbixcbiAgICAgIHNpZ25lZDogYXdhaXQgd2FsbGV0LnNpZ25UcmFuc2FjdGlvbih7XG4gICAgICAgIHR4UHJlYnVpbGQ6IHN0YWtpbmdQcmVidWlsZFRyYW5zYWN0aW9uLnJlc3VsdCxcbiAgICAgICAgd2FsbGV0UGFzc3BocmFzZTogc2lnbk9wdGlvbnMud2FsbGV0UGFzc3BocmFzZSxcbiAgICAgICAga2V5Y2hhaW46IGtleWNoYWluWzBdLFxuICAgICAgfSksXG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZW5kIHRoZSBzaWduZWQgc3Rha2luZyB0cmFuc2FjdGlvbiBpZiByZXF1aXJlZC4gU2VuZCBjYWxsIGlzIG5vdCByZXF1aXJlZCBpZiBhcGkgdmVyc2lvbiBpcyBmdWxsXG4gICAqIGFuZCB0aGlzIG1ldGhvZCB3aWxsIHJldHVybiB0aGUgc3Rha2luZyB0cmFuc2FjdGlvbiBmcm9tIHRoZSBpbmNvbWluZyBvYmplY3QuXG4gICAqIEBwYXJhbSBzaWduZWRUcmFuc2FjdGlvblxuICAgKi9cbiAgYXN5bmMgc2VuZChzaWduZWRUcmFuc2FjdGlvbjogU3Rha2luZ1NpZ25lZFRyYW5zYWN0aW9uKTogUHJvbWlzZTxTdGFraW5nVHJhbnNhY3Rpb24+IHtcbiAgICBpZiAodGhpcy5pc1NlbmRDYWxsUmVxdWlyZWQoKSkge1xuICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYml0Z29cbiAgICAgICAgLnBvc3QodGhpcy5iaXRnby5taWNyb3NlcnZpY2VzVXJsKHRoaXMuc3Rha2luZ1RyYW5zYWN0aW9uVVJMKHNpZ25lZFRyYW5zYWN0aW9uLnRyYW5zYWN0aW9uKSkpXG4gICAgICAgIC5zZW5kKHNpZ25lZFRyYW5zYWN0aW9uLnNpZ25lZClcbiAgICAgICAgLnJlc3VsdCgpO1xuICAgIH1cbiAgICByZXR1cm4gc2lnbmVkVHJhbnNhY3Rpb24udHJhbnNhY3Rpb247XG4gIH1cblxuICAvKipcbiAgICogQERlcHJlY2F0ZWQgdXNlIGJ1aWxkQW5kU2lnblxuICAgKiBCdWlsZCwgc2lnbiBhbmQgc2VuZCB0aGUgdHJhbnNhY3Rpb24uXG4gICAqIEBwYXJhbSBzaWduT3B0aW9uc1xuICAgKiBAcGFyYW0gdHJhbnNhY3Rpb25cbiAgICovXG4gIGFzeW5jIGJ1aWxkU2lnbkFuZFNlbmQoXG4gICAgc2lnbk9wdGlvbnM6IFN0YWtpbmdTaWduT3B0aW9ucyxcbiAgICB0cmFuc2FjdGlvbjogU3Rha2luZ1RyYW5zYWN0aW9uXG4gICk6IFByb21pc2U8U3Rha2luZ1RyYW5zYWN0aW9uPiB7XG4gICAgcmV0dXJuIGF3YWl0IHRoaXMuYnVpbGRBbmRTaWduKHNpZ25PcHRpb25zLCB0cmFuc2FjdGlvbikudGhlbigocmVzdWx0OiBTdGFraW5nU2lnbmVkVHJhbnNhY3Rpb24pID0+IHtcbiAgICAgIHJldHVybiB0aGlzLnNlbmQocmVzdWx0KTtcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGUgcHJlYnVpbHQgc3Rha2luZyB0cmFuc2FjdGlvbi5cbiAgICpcbiAgICogZm9yIHRyYW5zYWN0aW9ucyB3aXRoIHR4IHJlcXVlc3QgaWQgKFRTUyB0cmFuc2FjdGlvbnMpLCB3ZSBuZWVkIHRvIGRlbGV0ZSBzaWduYXR1cmUgc2hhcmVzIGJlZm9yZSBjcmVhdGluZyBwcmVidWlsZCB0cmFuc2FjdGlvblxuICAgKiB3ZSBvbmx5IG5lZWQgdG8gZ2V0IHRyYW5zYWN0aW9uIGJ1aWxkIHBhcmFtcyBpZiB0aGV5IGV4aXN0IHRvIHByZSBidWlsZFxuICAgKlxuICAgKiBAcGFyYW0gdHJhbnNhY3Rpb25cbiAgICovXG4gIGFzeW5jIHByZWJ1aWxkU2VsZk1hbmFnZWRTdGFraW5nVHJhbnNhY3Rpb24odHJhbnNhY3Rpb246IFN0YWtpbmdUcmFuc2FjdGlvbik6IFByb21pc2U8UHJlYnVpbGRUcmFuc2FjdGlvblJlc3VsdD4ge1xuICAgIGlmICh0cmFuc2FjdGlvbi50eFJlcXVlc3RJZCkge1xuICAgICAgYXdhaXQgdGhpcy50c3NVdGlsLmRlbGV0ZVNpZ25hdHVyZVNoYXJlcyh0cmFuc2FjdGlvbi50eFJlcXVlc3RJZCk7XG4gICAgfVxuICAgIGNvbnN0IGJ1aWxkUGFyYW1zID0gKGF3YWl0IHRoaXMuZXhwYW5kQnVpbGRQYXJhbXModHJhbnNhY3Rpb24pKS5idWlsZFBhcmFtcztcbiAgICBjb25zdCBmb3JtYXR0ZWRQYXJhbXMgPSB7XG4gICAgICAuLi5idWlsZFBhcmFtcyxcbiAgICAgIGNvaW46IHRoaXMuY29pbixcbiAgICAgIHdhbGxldElkOiB0aGlzLndhbGxldElkLFxuICAgICAgd2FsbGV0VHlwZTogdGhpcy53YWxsZXQudHlwZSgpLFxuICAgICAgcHJldmlldzogdHJ1ZSxcbiAgICB9O1xuICAgIHJldHVybiBhd2FpdCAoYXdhaXQgdGhpcy5nZXRXYWxsZXRGb3JCdWlsZGluZ0FuZFNpZ25pbmcoKSkucHJlYnVpbGRUcmFuc2FjdGlvbihmb3JtYXR0ZWRQYXJhbXMpO1xuICB9XG5cbiAgLyoqXG4gICAqIEJ1aWxkIGFuZCBzaWduIHRoZSB0cmFuc2FjdGlvbi5cbiAgICogQHBhcmFtIHNpZ25PcHRpb25zXG4gICAqIEBwYXJhbSB0cmFuc2FjdGlvblxuICAgKi9cbiAgYXN5bmMgYnVpbGRBbmRTaWduKFxuICAgIHNpZ25PcHRpb25zOiBTdGFraW5nU2lnbk9wdGlvbnMsXG4gICAgdHJhbnNhY3Rpb246IFN0YWtpbmdUcmFuc2FjdGlvblxuICApOiBQcm9taXNlPFN0YWtpbmdTaWduZWRUcmFuc2FjdGlvbj4ge1xuICAgIGNvbnN0IGJ1aWx0VHggPSBhd2FpdCB0aGlzLmJ1aWxkKHRyYW5zYWN0aW9uKTtcbiAgICAvLyBkZWZhdWx0IHRvIHZlcmlmeWluZyBhIHRyYW5zYWN0aW9uIHVubGVzcyBleHBsaWNpdGx5IHNraXBwZWRcbiAgICAvLyBza2lwcGluZyB0aGUgdmVyaWZpY2F0aW9uIGZvciBidGMgdW5kZWxlZ2F0ZSBiZWNhdXNlIGl0IGlzIGp1c3Qgc2luZ2xlIHNpZ1xuICAgIC8vIFRPRE86IFNDLTMxODMgKGFkZCB0cnggc3Rha2luZyB2ZXJpZmljYXRpb24pXG4gICAgLy8gVE9ETzogU0MtMzUwOCAoYWRkIFNUWCBzdGFraW5nIHZlcmlmaWNhdGlvbilcbiAgICBjb25zdCBza2lwVmVyaWZpY2F0aW9uID1cbiAgICAgIChzaWduT3B0aW9ucy50cmFuc2FjdGlvblZlcmlmaWNhdGlvbk9wdGlvbnM/LnNraXBUcmFuc2FjdGlvblZlcmlmaWNhdGlvbiB8fFxuICAgICAgICB0aGlzLmlzQnRjVW5kZWxlZ2F0ZSh0cmFuc2FjdGlvbikgfHxcbiAgICAgICAgdGhpcy5pc1RyeFN0YWtpbmcodHJhbnNhY3Rpb24pIHx8XG4gICAgICAgIHRoaXMuaXNTdHgoKSkgPz9cbiAgICAgIGZhbHNlO1xuICAgIGlmICghaXNTdGFraW5nVHhSZXF1ZXN0UHJlYnVpbGRSZXN1bHQoYnVpbHRUeC5yZXN1bHQpICYmICFza2lwVmVyaWZpY2F0aW9uKSB7XG4gICAgICBhd2FpdCB0aGlzLnZhbGlkYXRlQnVpbHRTdGFraW5nVHJhbnNhY3Rpb24oYnVpbHRUeC50cmFuc2FjdGlvbiwgYnVpbHRUeCk7XG4gICAgfVxuICAgIHJldHVybiBhd2FpdCB0aGlzLnNpZ24oc2lnbk9wdGlvbnMsIGJ1aWx0VHgpO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBleHBhbmRCdWlsZFBhcmFtcyhzdGFraW5nVHJhbnNhY3Rpb246IFN0YWtpbmdUcmFuc2FjdGlvbik6IFByb21pc2U8U3Rha2luZ1RyYW5zYWN0aW9uPiB7XG4gICAgcmV0dXJuIGF3YWl0IHRoaXMuYml0Z29cbiAgICAgIC5nZXQodGhpcy5iaXRnby5taWNyb3NlcnZpY2VzVXJsKHRoaXMuc3Rha2luZ1RyYW5zYWN0aW9uVVJMKHN0YWtpbmdUcmFuc2FjdGlvbikpKVxuICAgICAgLnF1ZXJ5KHsgZXhwYW5kQnVpbGRQYXJhbXM6IHRydWUgfSlcbiAgICAgIC5yZXN1bHQoKTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgY3JlYXRlU3Rha2luZ1JlcXVlc3QoXG4gICAgb3B0aW9uczpcbiAgICAgIHwgU3Rha2VPcHRpb25zXG4gICAgICB8IFVuc3Rha2VPcHRpb25zXG4gICAgICB8IEV0aFVuc3Rha2VPcHRpb25zXG4gICAgICB8IFN3aXRjaFZhbGlkYXRvck9wdGlvbnNcbiAgICAgIHwgQ2xhaW1SZXdhcmRzT3B0aW9uc1xuICAgICAgfCBQb3g1U3Rha2VPcHRpb25zXG4gICAgICB8IFRyb25TdGFrZU9wdGlvbnNcbiAgICAgIHwgVGFvU3Rha2VPcHRpb25zXG4gICAgICB8IFRhb1N3aXRjaFZhbGlkYXRvck9wdGlvbnNcbiAgICAgIHwgUG9seXhTd2l0Y2hWYWxpZGF0b3JPcHRpb25zXG4gICAgICB8IFZldFN0YWtlT3B0aW9uc1xuICAgICAgfCBTdG9yeVN0YWtlT3B0aW9uc1xuICAgICAgfCBYZGNTdGFrZU9wdGlvbnMsXG4gICAgdHlwZTogc3RyaW5nXG4gICk6IFByb21pc2U8U3Rha2luZ1JlcXVlc3Q+IHtcbiAgICByZXR1cm4gYXdhaXQgdGhpcy5iaXRnb1xuICAgICAgLnBvc3QodGhpcy5iaXRnby5taWNyb3NlcnZpY2VzVXJsKHRoaXMuc3Rha2luZ1JlcXVlc3RzVVJMKCkpKVxuICAgICAgLnNlbmQoe1xuICAgICAgICAuLi5vcHRpb25zLFxuICAgICAgICB0eXBlOiB0eXBlLFxuICAgICAgfSlcbiAgICAgIC5yZXN1bHQoKTtcbiAgfVxuXG4gIHByaXZhdGUgc3Rha2luZ1JlcXVlc3RzVVJMKCkge1xuICAgIHJldHVybiBgL2FwaS9zdGFraW5nL3YxLyR7dGhpcy5jb2lufS93YWxsZXRzLyR7dGhpcy53YWxsZXRJZH0vcmVxdWVzdHNgO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBnZXREZWxlZ2F0aW9ucyhvcHRpb25zOiBEZWxlZ2F0aW9uT3B0aW9ucyk6IFByb21pc2U8RGVsZWdhdGlvblJlc3VsdHM+IHtcbiAgICByZXR1cm4gYXdhaXQgdGhpcy5iaXRnby5nZXQodGhpcy5iaXRnby5taWNyb3NlcnZpY2VzVXJsKHRoaXMuc3Rha2luZ0RlbGVnYXRpb25zVVJMKCkpKS5xdWVyeShvcHRpb25zKS5yZXN1bHQoKTtcbiAgfVxuXG4gIHByaXZhdGUgc3Rha2luZ0RlbGVnYXRpb25zVVJMKCkge1xuICAgIHJldHVybiBgL2FwaS9zdGFraW5nL3YxLyR7dGhpcy5jb2lufS93YWxsZXRzLyR7dGhpcy53YWxsZXRJZH0vZGVsZWdhdGlvbnNgO1xuICB9XG5cbiAgcHJpdmF0ZSBzdGFraW5nUmVxdWVzdFVybChzdGFraW5nUmVxdWVzdElkOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHJldHVybiBgJHt0aGlzLnN0YWtpbmdSZXF1ZXN0c1VSTCgpfS8ke3N0YWtpbmdSZXF1ZXN0SWR9YDtcbiAgfVxuXG4gIHByaXZhdGUgc3Rha2luZ1RyYW5zYWN0aW9uVVJMKHN0YWtpbmdUcmFuc2FjdGlvbjogU3Rha2luZ1RyYW5zYWN0aW9uKTogc3RyaW5nIHtcbiAgICByZXR1cm4gYCR7dGhpcy5zdGFraW5nUmVxdWVzdFVybChzdGFraW5nVHJhbnNhY3Rpb24uc3Rha2luZ1JlcXVlc3RJZCl9L3RyYW5zYWN0aW9ucy8ke3N0YWtpbmdUcmFuc2FjdGlvbi5pZH1gO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBnZXRXYWxsZXRGb3JCdWlsZGluZ0FuZFNpZ25pbmcoKTogUHJvbWlzZTxJV2FsbGV0PiB7XG4gICAgaWYgKHRoaXMud2FsbGV0LmJhc2VDb2luLnRva2VuQ29uZmlnKSB7XG4gICAgICBpZiAoIXRoaXMudG9rZW5QYXJlbnRXYWxsZXQpIHtcbiAgICAgICAgdGhpcy50b2tlblBhcmVudFdhbGxldCA9IGF3YWl0IHRoaXMuYml0Z29cbiAgICAgICAgICAuY29pbih0aGlzLndhbGxldC5iYXNlQ29pbi50b2tlbkNvbmZpZy5jb2luKVxuICAgICAgICAgIC53YWxsZXRzKClcbiAgICAgICAgICAuZ2V0KHsgaWQ6IHRoaXMud2FsbGV0LmlkKCkgfSk7XG4gICAgICB9XG4gICAgICByZXR1cm4gdGhpcy50b2tlblBhcmVudFdhbGxldDtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSh0aGlzLndhbGxldCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFNlbmQgQVBJIGNhbGwgaXMgb25seSByZXF1aXJlZCBmb3IgVFNTIFR4UmVxdWVzdCBhcGkgdmVyc2lvbiBsaXRlIG9yIG11bHRpLXNpZyB0cmFuc2FjdGlvbnMuXG4gICAqIEZvciBGdWxsIGFwaSB2ZXJzaW9uLCBzaWduIHRyYW5zYWN0aW9uIG1vdmVzIHRoZSB0cmFuc2FjdGlvbiB0byBkZWxpdmVyZWQgc3RhdGUuXG4gICAqIEByZXR1cm5zIHRydWUgaWYgc2VuZCBBUEkgY2FsbCB0byBzdGFraW5nIHNlcnZpY2UgaXMgcmVxdWlyZWQgZWxzZSBmYWxzZVxuICAgKi9cbiAgcHJpdmF0ZSBpc1NlbmRDYWxsUmVxdWlyZWQoKTogYm9vbGVhbiB7XG4gICAgaWYgKHRoaXMud2FsbGV0LmJhc2VDb2luLmdldEZhbWlseSgpID09PSBDb2luRmFtaWx5LkVUSCkge1xuICAgICAgcmV0dXJuICF0aGlzLmlzRXRoVHNzO1xuICAgIH0gZWxzZSBpZiAodGhpcy53YWxsZXQubXVsdGlzaWdUeXBlKCkgPT09ICd0c3MnKSB7XG4gICAgICByZXR1cm4gdGhpcy53YWxsZXQuYmFzZUNvaW4uZ2V0TVBDQWxnb3JpdGhtKCkgIT09ICdlY2RzYSc7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgZ2V0RGVzY3JpcHRvcldhbGxldCh0cmFuc2FjdGlvbjogU3Rha2luZ1RyYW5zYWN0aW9uKTogUHJvbWlzZTxJV2FsbGV0PiB7XG4gICAgYXNzZXJ0KHRyYW5zYWN0aW9uLmJ1aWxkUGFyYW1zPy5zZW5kZXJXYWxsZXRJZCwgJ3NlbmRlcldhbGxldElkIGlzIHJlcXVpcmVkIGZvciBidGMgdW5kZWxlZ2F0ZSB0cmFuc2FjdGlvbicpO1xuICAgIHJldHVybiBhd2FpdCB0aGlzLndhbGxldC5iYXNlQ29pbi53YWxsZXRzKCkuZ2V0KHsgaWQ6IHRyYW5zYWN0aW9uLmJ1aWxkUGFyYW1zLnNlbmRlcldhbGxldElkIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyB2YWxpZGF0ZUJ1aWx0U3Rha2luZ1RyYW5zYWN0aW9uKFxuICAgIHRyYW5zYWN0aW9uOiBTdGFraW5nVHJhbnNhY3Rpb24sXG4gICAgcHJlYnVpbHRTdGFraW5nVHJhbnNhY3Rpb246IFN0YWtpbmdQcmVidWlsZFRyYW5zYWN0aW9uUmVzdWx0XG4gICkge1xuICAgIGNvbnN0IHsgYnVpbGRQYXJhbXMgfSA9IHRyYW5zYWN0aW9uO1xuICAgIGNvbnN0IHsgcmVzdWx0IH0gPSBwcmVidWlsdFN0YWtpbmdUcmFuc2FjdGlvbjtcbiAgICBjb25zdCBjb2luID0gdGhpcy53YWxsZXQuYmFzZUNvaW47XG4gICAgZGVidWcoYFZhbGlkYXRpbmcgc3Rha2luZyB0cmFuc2FjdGlvbiAke3RyYW5zYWN0aW9uLnN0YWtpbmdSZXF1ZXN0SWR9IHdpdGggcHJlYnVpbHQgdHJhbnNhY3Rpb25gKTtcblxuICAgIGlmICghKCd0eEhleCcgaW4gcmVzdWx0KSB8fCAhcmVzdWx0LnR4SGV4KSB7XG4gICAgICBkZWJ1ZyhgU2tpcHBpbmcgdmFsaWRhdGlvbiBmb3Igc3Rha2luZyB0cmFuc2FjdGlvbiAke3RyYW5zYWN0aW9uLnN0YWtpbmdSZXF1ZXN0SWR9IC0gdHhIZXggaXMgdW5kZWZpbmVkYCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgZXhwbGFpbmVkVHJhbnNhY3Rpb24gPSBhd2FpdCBjb2luLmV4cGxhaW5UcmFuc2FjdGlvbihyZXN1bHQsIHRoaXMud2FsbGV0KTtcbiAgICBjb25zdCBtaXNtYXRjaEVycm9yczogc3RyaW5nW10gPSBbXTtcblxuICAgIGlmIChidWlsZFBhcmFtcz8ucmVjaXBpZW50cyAmJiBidWlsZFBhcmFtcy5yZWNpcGllbnRzLmxlbmd0aCA+IDApIHtcbiAgICAgIGNvbnN0IHVzZXJSZWNpcGllbnRNYXAgPSBuZXcgTWFwKFxuICAgICAgICBidWlsZFBhcmFtcy5yZWNpcGllbnRzLm1hcCgocmVjaXBpZW50KSA9PiBbcmVjaXBpZW50LmFkZHJlc3MudG9Mb3dlckNhc2UoKSwgcmVjaXBpZW50XSlcbiAgICAgICk7XG4gICAgICBjb25zdCBwbGF0Zm9ybVJlY2lwaWVudE1hcCA9IG5ldyBNYXAoXG4gICAgICAgIChleHBsYWluZWRUcmFuc2FjdGlvbj8ub3V0cHV0cyA/PyBbXSkubWFwKChyZWNpcGllbnQpID0+IFtyZWNpcGllbnQuYWRkcmVzcy50b0xvd2VyQ2FzZSgpLCByZWNpcGllbnRdKVxuICAgICAgKTtcbiAgICAgIGZvciAoY29uc3QgW2FkZHJlc3NdIG9mIHBsYXRmb3JtUmVjaXBpZW50TWFwKSB7XG4gICAgICAgIGlmICghdXNlclJlY2lwaWVudE1hcC5oYXMoYWRkcmVzcykpIHtcbiAgICAgICAgICBtaXNtYXRjaEVycm9ycy5wdXNoKGBVbmV4cGVjdGVkIHJlY2lwaWVudCBhZGRyZXNzIGZvdW5kIGluIGJ1aWx0IHRyYW5zYWN0aW9uOiAke2FkZHJlc3N9YCk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgZm9yIChjb25zdCBbYWRkcmVzcywgdXNlclJlY2lwaWVudF0gb2YgdXNlclJlY2lwaWVudE1hcCkge1xuICAgICAgICBjb25zdCBwbGF0Zm9ybVJlY2lwaWVudCA9IHBsYXRmb3JtUmVjaXBpZW50TWFwLmdldChhZGRyZXNzKTtcbiAgICAgICAgaWYgKCFwbGF0Zm9ybVJlY2lwaWVudCkge1xuICAgICAgICAgIG1pc21hdGNoRXJyb3JzLnB1c2goYEV4cGVjdGVkIHJlY2lwaWVudCBhZGRyZXNzIG5vdCBmb3VuZCBpbiBidWlsdCB0cmFuc2FjdGlvbjogJHthZGRyZXNzfWApO1xuICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgbWF0Y2hSZXN1bHQgPSB0cmFuc2FjdGlvblJlY2lwaWVudHNNYXRjaCh1c2VyUmVjaXBpZW50LCBwbGF0Zm9ybVJlY2lwaWVudCk7XG5cbiAgICAgICAgaWYgKCFtYXRjaFJlc3VsdC5hbW91bnRNYXRjaCkge1xuICAgICAgICAgIG1pc21hdGNoRXJyb3JzLnB1c2goXG4gICAgICAgICAgICBgUmVjaXBpZW50ICR7YWRkcmVzc30gYW1vdW50IG1pc21hdGNoLiBFeHBlY3RlZDogJHt1c2VyUmVjaXBpZW50LmFtb3VudH0sIEdvdDogJHtwbGF0Zm9ybVJlY2lwaWVudC5hbW91bnR9YFxuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFtYXRjaFJlc3VsdC50b2tlbk1hdGNoKSB7XG4gICAgICAgICAgbWlzbWF0Y2hFcnJvcnMucHVzaChcbiAgICAgICAgICAgIGBSZWNpcGllbnQgJHthZGRyZXNzfSB0b2tlbiBtaXNtYXRjaC4gRXhwZWN0ZWQ6ICR7dXNlclJlY2lwaWVudC50b2tlbk5hbWUgPz8gJ25hdGl2ZSBjb2luJ30sIEdvdDogJHtcbiAgICAgICAgICAgICAgcGxhdGZvcm1SZWNpcGllbnQudG9rZW5OYW1lID8/ICduYXRpdmUgY29pbidcbiAgICAgICAgICAgIH1gXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChidWlsZFBhcmFtcz8ubWVtbyAmJiAoZXhwbGFpbmVkVHJhbnNhY3Rpb24gYXMgYW55KS5tZW1vICE9PSBidWlsZFBhcmFtcy5tZW1vKSB7XG4gICAgICBtaXNtYXRjaEVycm9ycy5wdXNoKFxuICAgICAgICBgTWVtbyBtaXNtYXRjaC4gRXhwZWN0ZWQ6ICcke0pTT04uc3RyaW5naWZ5KGJ1aWxkUGFyYW1zLm1lbW8pfScsIEdvdDogJyR7SlNPTi5zdHJpbmdpZnkoXG4gICAgICAgICAgKGV4cGxhaW5lZFRyYW5zYWN0aW9uIGFzIGFueSkubWVtb1xuICAgICAgICApfSdgXG4gICAgICApO1xuICAgIH1cblxuICAgIGlmIChidWlsZFBhcmFtcz8uZ2FzTGltaXQgJiYgU3RyaW5nKChleHBsYWluZWRUcmFuc2FjdGlvbiBhcyBhbnkpLmdhc0xpbWl0KSAhPT0gU3RyaW5nKGJ1aWxkUGFyYW1zLmdhc0xpbWl0KSkge1xuICAgICAgbWlzbWF0Y2hFcnJvcnMucHVzaChcbiAgICAgICAgYEdhcyBMaW1pdCBtaXNtYXRjaC4gRXhwZWN0ZWQ6ICR7YnVpbGRQYXJhbXMuZ2FzTGltaXR9LCBHb3Q6ICR7KGV4cGxhaW5lZFRyYW5zYWN0aW9uIGFzIGFueSkuZ2FzTGltaXR9YFxuICAgICAgKTtcbiAgICB9XG5cbiAgICBpZiAoXG4gICAgICBidWlsZFBhcmFtcz8udHlwZSAmJlxuICAgICAgKGV4cGxhaW5lZFRyYW5zYWN0aW9uIGFzIGFueSkudHlwZSAhPT0gdW5kZWZpbmVkICYmXG4gICAgICBUcmFuc2FjdGlvblR5cGVbYnVpbGRQYXJhbXMudHlwZV0gIT09IChleHBsYWluZWRUcmFuc2FjdGlvbiBhcyBhbnkpLnR5cGVcbiAgICApIHtcbiAgICAgIG1pc21hdGNoRXJyb3JzLnB1c2goXG4gICAgICAgIGBUcmFuc2FjdGlvbiB0eXBlIG1pc21hdGNoLiBFeHBlY3RlZDogJyR7YnVpbGRQYXJhbXMudHlwZX0nLCBHb3Q6ICckeyhleHBsYWluZWRUcmFuc2FjdGlvbiBhcyBhbnkpLnR5cGV9J2BcbiAgICAgICk7XG4gICAgfVxuXG4gICAgaWYgKGJ1aWxkUGFyYW1zPy5zb2xJbnN0cnVjdGlvbnMpIHtcbiAgICAgIGlmICghaXNFcXVhbCgoZXhwbGFpbmVkVHJhbnNhY3Rpb24gYXMgYW55KS5zb2xJbnN0cnVjdGlvbnMsIGJ1aWxkUGFyYW1zLnNvbEluc3RydWN0aW9ucykpIHtcbiAgICAgICAgbWlzbWF0Y2hFcnJvcnMucHVzaChcbiAgICAgICAgICBgU29sYW5hIGluc3RydWN0aW9ucyBtaXNtYXRjaC4gRXhwZWN0ZWQ6ICR7SlNPTi5zdHJpbmdpZnkoXG4gICAgICAgICAgICBidWlsZFBhcmFtcy5zb2xJbnN0cnVjdGlvbnNcbiAgICAgICAgICApfSwgR290OiAke0pTT04uc3RyaW5naWZ5KChleHBsYWluZWRUcmFuc2FjdGlvbiBhcyBhbnkpLnNvbEluc3RydWN0aW9ucyl9YFxuICAgICAgICApO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChtaXNtYXRjaEVycm9ycy5sZW5ndGggPiAwKSB7XG4gICAgICBjb25zdCBlcnJvck1lc3NhZ2UgPSBgU3Rha2luZyB0cmFuc2FjdGlvbiB2YWxpZGF0aW9uIGZhaWxlZCBiZWZvcmUgc2lnbmluZzogJHttaXNtYXRjaEVycm9ycy5qb2luKCc7ICcpfWA7XG4gICAgICBkZWJ1ZyhlcnJvck1lc3NhZ2UpO1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGVycm9yTWVzc2FnZSk7XG4gICAgfVxuXG4gICAgaWYgKCFidWlsZFBhcmFtcykge1xuICAgICAgZGVidWcoXG4gICAgICAgIGBDYW5ub3QgcGVyZm9ybSBkZWVwIHZhbGlkYXRpb24gZm9yIHN0YWtpbmcgdHJhbnNhY3Rpb24gJHt0cmFuc2FjdGlvbi5zdGFraW5nUmVxdWVzdElkfSB3aXRob3V0IHNwZWNpZmllZCBidWlsZCBwYXJhbXNgXG4gICAgICApO1xuICAgIH1cbiAgfVxufVxuXG5mdW5jdGlvbiB2YWxpZGF0ZVBveDVTdGFrZU9wdGlvbnMob3B0aW9uczogU3Rha2VPcHRpb25zIHwgUG94NVN0YWtlT3B0aW9ucyk6IHZvaWQge1xuICBpZiAob3B0aW9ucy5zdWJUeXBlICE9PSAncG94NS1ib25kJykge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGNvbnN0IHBveDVPcHRpb25zID0gb3B0aW9ucyBhcyBQYXJ0aWFsPFBveDVTdGFrZU9wdGlvbnM+O1xuICBpZiAoIU51bWJlci5pc0ludGVnZXIocG94NU9wdGlvbnMuYm9uZEluZGV4KSB8fCAocG94NU9wdGlvbnMuYm9uZEluZGV4IGFzIG51bWJlcikgPCAwKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdib25kSW5kZXggaXMgcmVxdWlyZWQgZm9yIHBveDUtYm9uZCBzdGFraW5nJyk7XG4gIH1cbiAgaWYgKHR5cGVvZiBwb3g1T3B0aW9ucy5zaWduZXJNYW5hZ2VyICE9PSAnc3RyaW5nJyB8fCBwb3g1T3B0aW9ucy5zaWduZXJNYW5hZ2VyLmxlbmd0aCA9PT0gMCkge1xuICAgIHRocm93IG5ldyBFcnJvcignc2lnbmVyTWFuYWdlciBpcyByZXF1aXJlZCBmb3IgcG94NS1ib25kIHN0YWtpbmcnKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBpc1N0YWtpbmdUeFJlcXVlc3RQcmVidWlsZFJlc3VsdChcbiAgdHg6IFN0YWtpbmdQcmVidWlsZFRyYW5zYWN0aW9uUmVzdWx0WydyZXN1bHQnXVxuKTogdHggaXMgU3Rha2luZ1R4UmVxdWVzdFByZWJ1aWxkVHJhbnNhY3Rpb25SZXN1bHQge1xuICByZXR1cm4gKHR4IGFzIFN0YWtpbmdUeFJlcXVlc3RQcmVidWlsZFRyYW5zYWN0aW9uUmVzdWx0KS50eFJlcXVlc3RJZCAhPT0gdW5kZWZpbmVkO1xufVxuIl19
|