@bitgo-beta/sdk-coin-canton 1.0.1-beta.794 → 1.0.1-beta.795
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/lib/utils.d.ts.map +1 -1
- package/dist/src/lib/utils.js +8 -6
- package/dist/test/resources.d.ts +12 -0
- package/dist/test/resources.d.ts.map +1 -1
- package/dist/test/resources.js +14 -2
- package/dist/test/unit/builder/cosignDelegationAccept/cosignDelegationAcceptBuilder.js +13 -1
- package/dist/test/unit/utils.js +8 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +6 -6
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/lib/utils.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,SAAS,EAA2B,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAO3F,OAAO,EAAE,iBAAiB,EAA+C,qBAAqB,EAAE,MAAM,SAAS,CAAC;AAChH,OAAO,EAAe,KAAK,EAAE,MAAM,sBAAsB,CAAC;AAE1D,qBAAa,KAAM,YAAW,SAAS;IACrC,kBAAkB;IAClB,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;IAUxC,kBAAkB;IAClB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAQrC,kBAAkB;IAClB,iBAAiB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;IAIvC,kBAAkB;IAClB,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;IAItC,kBAAkB;IAClB,gBAAgB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO;IAI5C,kBAAkB;IAClB,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAI3C;;;;OAIG;IACH,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO;IAKxC;;;;OAIG;IACH,gBAAgB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM;IAI3C;;;;OAIG;IACH,uBAAuB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM;IAMlD;;;;;OAKG;IACH,6BAA6B,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,eAAe,GAAG,qBAAqB;
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/lib/utils.ts"],"names":[],"mappings":"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"}
|
package/dist/src/lib/utils.js
CHANGED
|
@@ -441,14 +441,16 @@ class Utils {
|
|
|
441
441
|
break;
|
|
442
442
|
}
|
|
443
443
|
case sdk_core_1.TransactionType.CosignDelegationAccept: {
|
|
444
|
-
//
|
|
445
|
-
const signerParty = findExerciseActingParty('CosigningDelegationProposal_Accept')
|
|
444
|
+
// TradeWeb: CosigningDelegationProposal_Accept; Temple: AcceptDelegationProposal.
|
|
445
|
+
const signerParty = findExerciseActingParty('CosigningDelegationProposal_Accept') ??
|
|
446
|
+
findExerciseActingParty('AcceptDelegationProposal');
|
|
446
447
|
if (signerParty)
|
|
447
448
|
sender = signerParty;
|
|
448
|
-
//
|
|
449
|
-
|
|
449
|
+
// TradeWeb creates CosigningDelegation { admin, signer }; Temple creates
|
|
450
|
+
// Delegation { operator, user } from the same acceptance operation.
|
|
451
|
+
const delegationFields = findCreateNodeFields('CosigningDelegation') ?? findCreateNodeFields('Delegation');
|
|
450
452
|
if (delegationFields) {
|
|
451
|
-
const adminData = getField(delegationFields, 'admin');
|
|
453
|
+
const adminData = getField(delegationFields, 'admin') ?? getField(delegationFields, 'operator');
|
|
452
454
|
if (adminData?.oneofKind === 'party')
|
|
453
455
|
receiver = adminData.party ?? '';
|
|
454
456
|
}
|
|
@@ -961,4 +963,4 @@ class Utils {
|
|
|
961
963
|
exports.Utils = Utils;
|
|
962
964
|
const utils = new Utils();
|
|
963
965
|
exports.default = utils;
|
|
964
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL3V0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLGdFQUFxQztBQUNyQyxvREFBNEI7QUFFNUIsbURBQTJGO0FBQzNGLGlEQUF5RDtBQUV6RCwwREFBMEU7QUFDMUUseUZBQW1GO0FBRW5GLHlDQUFtRjtBQUluRixNQUFhLEtBQUs7SUFDaEIsa0JBQWtCO0lBQ2xCLGNBQWMsQ0FBQyxPQUFlO1FBQzVCLElBQUksQ0FBQyxPQUFPLElBQUksT0FBTyxDQUFDLElBQUksRUFBRSxLQUFLLEVBQUU7WUFBRSxPQUFPLEtBQUssQ0FBQztRQUNwRCxNQUFNLENBQUMsU0FBUyxFQUFFLFdBQVcsQ0FBQyxHQUFHLE9BQU8sQ0FBQyxJQUFJLEVBQUUsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDNUQsSUFBSSxDQUFDLFdBQVc7WUFBRSxPQUFPLEtBQUssQ0FBQztRQUMvQixpRUFBaUU7UUFDakUsTUFBTSxDQUFDLGVBQWUsQ0FBQyxHQUFHLFdBQVcsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDL0QsSUFBSSxDQUFDLFNBQVMsSUFBSSxDQUFDLGVBQWU7WUFBRSxPQUFPLEtBQUssQ0FBQztRQUNqRCxPQUFPLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxlQUFlLENBQUMsQ0FBQztJQUNoRCxDQUFDO0lBRUQsa0JBQWtCO0lBQ2xCLGNBQWMsQ0FBQyxJQUFZO1FBQ3pCLDJFQUEyRTtRQUMzRSxvREFBb0Q7UUFDcEQsTUFBTSxDQUFDLE1BQU0sQ0FBQyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDakMsTUFBTSxXQUFXLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ25DLE9BQU8sQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLElBQUksV0FBVyxHQUFHLENBQUMs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LEdBQUcsSUFBSSxLQUFLLEVBQUUsQ0FBQztBQUUxQixrQkFBZSxLQUFLLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgQmlnTnVtYmVyIGZyb20gJ2JpZ251bWJlci5qcyc7XG5pbXBvcnQgY3J5cHRvIGZyb20gJ2NyeXB0byc7XG5cbmltcG9ydCB7IEJhc2VVdGlscywgaXNWYWxpZEVkMjU1MTlQdWJsaWNLZXksIFRyYW5zYWN0aW9uVHlwZSB9IGZyb20gJ0BiaXRnby1iZXRhL3Nkay1jb3JlJztcbmltcG9ydCB7IENhbnRvblRva2VuLCBjb2lucyB9IGZyb20gJ0BiaXRnby1iZXRhL3N0YXRpY3MnO1xuXG5pbXBvcnQgeyBjb21wdXRlUHJlcGFyZWRUcmFuc2FjdGlvbiB9IGZyb20gJy4uLy4uL3Jlc291cmNlcy9oYXNoL2hhc2guanMnO1xuaW1wb3J0IHsgUHJlcGFyZWRUcmFuc2FjdGlvbiB9IGZyb20gJy4uLy4uL3Jlc291cmNlcy9wcm90by9wcmVwYXJlZFRyYW5zYWN0aW9uLmpzJztcblxuaW1wb3J0IHsgQ3J5cHRvS2V5Rm9ybWF0LCBTaWduaW5nQWxnb3JpdGhtU3BlYywgU2lnbmluZ0tleVNwZWMgfSBmcm9tICcuL2NvbnN0YW50JztcbmltcG9ydCB7IENhbnRvbkNvbW1hbmRJbmZvLCBQcmVwYXJlZFRyYW5zYWN0aW9uIGFzIElQcmVwYXJlZFRyYW5zYWN0aW9uLCBQcmVwYXJlZFR4blBhcnNlZEluZm8gfSBmcm9tICcuL2lmYWNlJztcbmltcG9ydCB7IFJlY29yZEZpZWxkLCBWYWx1ZSB9IGZyb20gJy4vcmVzb3VyY2VzSW50ZXJmYWNlJztcblxuZXhwb3J0IGNsYXNzIFV0aWxzIGltcGxlbWVudHMgQmFzZVV0aWxzIHtcbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIGlzVmFsaWRBZGRyZXNzKGFkZHJlc3M6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIGlmICghYWRkcmVzcyB8fCBhZGRyZXNzLnRyaW0oKSA9PT0gJycpIHJldHVybiBmYWxzZTtcbiAgICBjb25zdCBbcGFydHlIaW50LCBmaW5nZXJwcmludF0gPSBhZGRyZXNzLnRyaW0oKS5zcGxpdCgnOjonKTtcbiAgICBpZiAoIWZpbmdlcnByaW50KSByZXR1cm4gZmFsc2U7XG4gICAgLy8gYWxsIG1lbW9JZHMgYXJlIGNvbnNpZGVyZWQgdmFsaWQgYXMgbG9uZyBhcyBzdHJpbmdzIGFyZSBwYXNzZWRcbiAgICBjb25zdCBbZmluZ2VycHJpbnRQYXJ0XSA9IGZpbmdlcnByaW50LnRyaW0oKS5zcGxpdCgnP21lbW9JZD0nKTtcbiAgICBpZiAoIXBhcnR5SGludCB8fCAhZmluZ2VycHJpbnRQYXJ0KSByZXR1cm4gZmFsc2U7XG4gICAgcmV0dXJuIHRoaXMuaXNWYWxpZENhbnRvbkhleChmaW5nZXJwcmludFBhcnQpO1xuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIGlzVmFsaWRCbG9ja0lkKGhhc2g6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIC8vIEluIGNhbnRvbiwgdGhlcmUgaXMgbm8gYmxvY2sgaGFzaCwgd2Ugc3RvcmUgdGhlIGhlaWdodCBhcyB0aGUgX2lkIChoYXNoKVxuICAgIC8vIHRoaXMgd2lsbCBiZSBvZiB0aGUgZm9ybSwgPGJsb2NrSGVpZ2h0Pl88dmVyc2lvbj5cbiAgICBjb25zdCBbaGVpZ2h0XSA9IGhhc2guc3BsaXQoJ18nKTtcbiAgICBjb25zdCBibG9ja0hlaWdodCA9IE51bWJlcihoZWlnaHQpO1xuICAgIHJldHVybiAhaXNOYU4oYmxvY2tIZWlnaHQpICYmIGJsb2NrSGVpZ2h0ID4gMDtcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICBpc1ZhbGlkUHJpdmF0ZUtleShrZXk6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHRocm93IG5ldyBFcnJvcignTWV0aG9kIG5vdCBpbXBsZW1lbnRlZC4nKTtcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICBpc1ZhbGlkUHVibGljS2V5KGtleTogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIGlzVmFsaWRFZDI1NTE5UHVibGljS2V5KGtleSk7XG4gIH1cblxuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgaXNWYWxpZFNpZ25hdHVyZShzaWduYXR1cmU6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHRocm93IG5ldyBFcnJvcignTWV0aG9kIG5vdCBpbXBsZW1lbnRlZC4nKTtcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICBpc1ZhbGlkVHJhbnNhY3Rpb25JZCh0eElkOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ01ldGhvZCBub3QgaW1wbGVtZW50ZWQuJyk7XG4gIH1cblxuICAvKipcbiAgICogTWV0aG9kIHRvIHZhbGlkYXRlIHRoZSBpbnB1dCBpcyBhIHZhbGlkIGNhbnRvbiBoZXggc3RyaW5nXG4gICAqIEBwYXJhbSB7U3RyaW5nfSB2YWx1ZSB0aGUgaGV4IHN0cmluZyB2YWx1ZVxuICAgKiBAcmV0dXJucyB7Qm9vbGVhbn0gdHJ1ZSBpZiB2YWxpZFxuICAgKi9cbiAgaXNWYWxpZENhbnRvbkhleCh2YWx1ZTogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgY29uc3QgcmVnZXggPSAvXlthLWZBLUYwLTldezY4fSQvO1xuICAgIHJldHVybiByZWdleC50ZXN0KHZhbHVlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBIZWxwZXIgbWV0aG9kIHRvIGNvbnZlcnQgaGV4IHZhbHVlIHRvIGJhc2U2NFxuICAgKiBAcGFyYW0ge1N0cmluZ30gaGV4U3RyaW5nIC0gaGV4IGVuY29kZWQgc3RyaW5nXG4gICAqIEByZXR1cm5zIHtTdHJpbmd9IGJhc2U2NCBlbmNvZGVkIHN0cmluZ1xuICAgKi9cbiAgZ2V0QmFzZTY0RnJvbUhleChoZXhTdHJpbmc6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgcmV0dXJuIEJ1ZmZlci5mcm9tKGhleFN0cmluZywgJ2hleCcpLnRvU3RyaW5nKCdiYXNlNjQnKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBNZXRob2QgdG8gY3JlYXRlIGZpbmdlcnByaW50IChwYXJ0IG9mIHRoZSBjYW50b24gcGFydHlJZCkgZnJvbSBwdWJsaWMga2V5XG4gICAqIEBwYXJhbSB7U3RyaW5nfSBwdWJsaWNLZXkgdGhlIHB1YmxpYyBrZXlcbiAgICogQHJldHVybnMge1N0cmluZ31cbiAgICovXG4gIGdldEFkZHJlc3NGcm9tUHVibGljS2V5KHB1YmxpY0tleTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBjb25zdCBrZXkgPSB0aGlzLnNpZ25pbmdQdWJsaWNLZXlGcm9tRWQyNTUxOShwdWJsaWNLZXkpO1xuICAgIGNvbnN0IGhhc2hQdXJwb3NlID0gMTI7XG4gICAgcmV0dXJuIHRoaXMuY29tcHV0ZVNoYTI1NkNhbnRvbkhhc2goaGFzaFB1cnBvc2UsIGtleS5wdWJsaWNLZXkpO1xuICB9XG5cbiAgLyoqXG4gICAqIE1ldGhvZCB0byBwYXJzZSByYXcgY2FudG9uIHRyYW5zYWN0aW9uICYgZ2V0IHJlcXVpcmVkIGRhdGFcbiAgICogQHBhcmFtIHtTdHJpbmd9IHJhd0RhdGEgYmFzZTY0IGVuY29kZWQgc3RyaW5nXG4gICAqIEBwYXJhbSB7VHJhbnNhY3Rpb25UeXBlfSB0eFR5cGUgdGhlIHRyYW5zYWN0aW9uIHR5cGVcbiAgICogQHJldHVybnMge1ByZXBhcmVkVHhuUGFyc2VkSW5mb31cbiAgICovXG4gIHBhcnNlUmF3Q2FudG9uVHJhbnNhY3Rpb25EYXRhKHJhd0RhdGE6IHN0cmluZywgdHhUeXBlOiBUcmFuc2FjdGlvblR5cGUpOiBQcmVwYXJlZFR4blBhcnNlZEluZm8ge1xuICAgIGNvbnN0IGRlY29kZWREYXRhID0gdGhpcy5kZWNvZGVQcmVwYXJlZFRyYW5zYWN0aW9uKHJhd0RhdGEpO1xuICAgIGNvbnN0IG5vZGVzID0gZGVjb2RlZERhdGEudHJhbnNhY3Rpb24/Lm5vZGVzID8/IFtdO1xuICAgIGNvbnN0IGdldEZpZWxkID0gKGZpZWxkczogUmVjb3JkRmllbGRbXSwgbGFiZWw6IHN0cmluZykgPT4gZmllbGRzLmZpbmQoKGYpID0+IGYubGFiZWwgPT09IGxhYmVsKT8udmFsdWU/LnN1bTtcblxuICAgIGxldCBzZW5kZXIgPSAnJztcbiAgICBsZXQgcmVjZWl2ZXIgPSAnJztcbiAgICBsZXQgYW1vdW50ID0gJyc7XG4gICAgbGV0IG1lbW9JZDogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICAgIGxldCBpbnN0cnVtZW50SWQ6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgICBsZXQgaW5zdHJ1bWVudEFkbWluOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIHRoZSBhcmd1bWVudCBmaWVsZHMgb2YgdGhlIGZpcnN0IGNyZWF0ZSBub2RlIG1hdGNoaW5nIHRoZSBnaXZlbiBlbnRpdHkgbmFtZS5cbiAgICAgKi9cbiAgICBjb25zdCBmaW5kQ3JlYXRlTm9kZUZpZWxkcyA9IChlbnRpdHlOYW1lOiBzdHJpbmcpOiBSZWNvcmRGaWVsZFtdIHwgdW5kZWZpbmVkID0+IHtcbiAgICAgIGZvciAoY29uc3Qgbm9kZSBvZiBub2Rlcykge1xuICAgICAgICBjb25zdCB2biA9IG5vZGUudmVyc2lvbmVkTm9kZTtcbiAgICAgICAgaWYgKCF2biB8fCB2bi5vbmVvZktpbmQgIT09ICd2MScpIGNvbnRpbnVlO1xuICAgICAgICBjb25zdCBudCA9IHZuLnYxLm5vZGVUeXBlO1xuICAgICAgICBpZiAobnQub25lb2ZLaW5kICE9PSAnY3JlYXRlJykgY29udGludWU7XG4gICAgICAgIGlmIChudC5jcmVhdGUudGVtcGxhdGVJZD8uZW50aXR5TmFtZSAhPT0gZW50aXR5TmFtZSkgY29udGludWU7XG4gICAgICAgIGNvbnN0IGFyZ1N1bSA9IG50LmNyZWF0ZS5hcmd1bWVudD8uc3VtO1xuICAgICAgICBpZiAoIWFyZ1N1bSB8fCBhcmdTdW0ub25lb2ZLaW5kICE9PSAncmVjb3JkJykgY29udGludWU7XG4gICAgICAgIGNvbnN0IGZpZWxkcyA9IGFyZ1N1bS5yZWNvcmQ/LmZpZWxkcztcbiAgICAgICAgaWYgKGZpZWxkcykgcmV0dXJuIGZpZWxkcztcbiAgICAgIH1cbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfTtcblxuICAgIC8qKlxuICAgICAqIFJldHVybnMgdGhlIGNob3NlblZhbHVlIGZpZWxkcyBvZiB0aGUgZmlyc3QgZXhlcmNpc2Ugbm9kZSBtYXRjaGluZyB0aGUgZ2l2ZW4gY2hvaWNlSWQuXG4gICAgICovXG4gICAgY29uc3QgZmluZEV4ZXJjaXNlTm9kZUZpZWxkcyA9IChjaG9pY2VJZDogc3RyaW5nKTogUmVjb3JkRmllbGRbXSB8IHVuZGVmaW5lZCA9PiB7XG4gICAgICBmb3IgKGNvbnN0IG5vZGUgb2Ygbm9kZXMpIHtcbiAgICAgICAgY29uc3Qgdm4gPSBub2RlLnZlcnNpb25lZE5vZGU7XG4gICAgICAgIGlmICghdm4gfHwgdm4ub25lb2ZLaW5kICE9PSAndjEnKSBjb250aW51ZTtcbiAgICAgICAgY29uc3QgbnQgPSB2bi52MS5ub2RlVHlwZTtcbiAgICAgICAgaWYgKG50Lm9uZW9mS2luZCAhPT0gJ2V4ZXJjaXNlJykgY29udGludWU7XG4gICAgICAgIGlmIChudC5leGVyY2lzZS5jaG9pY2VJZCAhPT0gY2hvaWNlSWQpIGNvbnRpbnVlO1xuICAgICAgICBjb25zdCBhcmdTdW0gPSBudC5leGVyY2lzZS5jaG9zZW5WYWx1ZT8uc3VtO1xuICAgICAgICBpZiAoIWFyZ1N1bSB8fCBhcmdTdW0ub25lb2ZLaW5kICE9PSAncmVjb3JkJykgY29udGludWU7XG4gICAgICAgIGNvbnN0IGZpZWxkcyA9IGFyZ1N1bS5yZWNvcmQ/LmZpZWxkcztcbiAgICAgICAgaWYgKGZpZWxkcykgcmV0dXJuIGZpZWxkcztcbiAgICAgIH1cbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfTtcblxuICAgIC8qKlxuICAgICAqIFJldHVybnMgdGhlIGZpcnN0IGFjdGluZyBwYXJ0eSBvZiB0aGUgZmlyc3QgZXhlcmNpc2Ugbm9kZSBtYXRjaGluZyB0aGUgZ2l2ZW4gY2hvaWNlSWQuXG4gICAgICovXG4gICAgY29uc3QgZmluZEV4ZXJjaXNlQWN0aW5nUGFydHkgPSAoY2hvaWNlSWQ6IHN0cmluZyk6IHN0cmluZyB8IHVuZGVmaW5lZCA9PiB7XG4gICAgICBmb3IgKGNvbnN0IG5vZGUgb2Ygbm9kZXMpIHtcbiAgICAgICAgY29uc3Qgdm4gPSBub2RlLnZlcnNpb25lZE5vZGU7XG4gICAgICAgIGlmICghdm4gfHwgdm4ub25lb2ZLaW5kICE9PSAndjEnKSBjb250aW51ZTtcbiAgICAgICAgY29uc3QgbnQgPSB2bi52MS5ub2RlVHlwZTtcbiAgICAgICAgaWYgKG50Lm9uZW9mS2luZCAhPT0gJ2V4ZXJjaXNlJykgY29udGludWU7XG4gICAgICAgIGlmIChudC5leGVyY2lzZS5jaG9pY2VJZCAhPT0gY2hvaWNlSWQpIGNvbnRpbnVlO1xuICAgICAgICByZXR1cm4gbnQuZXhlcmNpc2UuYWN0aW5nUGFydGllc1swXTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfTtcblxuICAgIC8qKlxuICAgICAqIEV4dHJhY3RzIHNlbmRlciwgcmVjZWl2ZXIsIGFtb3VudCwgYW5kIGluc3RydW1lbnQgZmllbGRzIGZyb20gYSB0cmFuc2ZlciByZWNvcmQuXG4gICAgICogQ2FudG9uIGNvaW4gdHJhbnNmZXJzIGFuZCBjYnRjIHVzZSBpbnN0cnVtZW50SWQuYWRtaW47IHJlZ3VsYXIgdG9rZW4gdHJhbnNmZXJzIHVzZSBpbnN0cnVtZW50SWRlbnRpZmllci5zb3VyY2UuXG4gICAgICovXG4gICAgY29uc3QgZXh0cmFjdEZyb21UcmFuc2ZlclJlY29yZCA9IChcbiAgICAgIHRyYW5zZmVyUmVjb3JkOiBSZWNvcmRGaWVsZFtdLFxuICAgICAgaW5zdHJ1bWVudEZpZWxkTmFtZTogc3RyaW5nLFxuICAgICAgaW5zdHJ1bWVudEFkbWluRmllbGROYW1lOiBzdHJpbmdcbiAgICApOiB2b2lkID0+IHtcbiAgICAgIGNvbnN0IHNlbmRlckRhdGEgPSBnZXRGaWVsZCh0cmFuc2ZlclJlY29yZCwgJ3NlbmRlcicpO1xuICAgICAgaWYgKHNlbmRlckRhdGE/Lm9uZW9mS2luZCA9PT0gJ3BhcnR5Jykgc2VuZGVyID0gc2VuZGVyRGF0YS5wYXJ0eSA/PyAnJztcbiAgICAgIGNvbnN0IHJlY2VpdmVyRGF0YSA9IGdldEZpZWxkKHRyYW5zZmVyUmVjb3JkLCAncmVjZWl2ZXInKTtcbiAgICAgIGlmIChyZWNlaXZlckRhdGE/Lm9uZW9mS2luZCA9PT0gJ3BhcnR5JykgcmVjZWl2ZXIgPSByZWNlaXZlckRhdGEucGFydHkgPz8gJyc7XG4gICAgICBjb25zdCBhbW91bnREYXRhID0gZ2V0RmllbGQodHJhbnNmZXJSZWNvcmQsICdhbW91bnQnKTtcbiAgICAgIGlmIChhbW91bnREYXRhPy5vbmVvZktpbmQgPT09ICdudW1lcmljJykgYW1vdW50ID0gYW1vdW50RGF0YS5udW1lcmljID8/ICcnO1xuICAgICAgY29uc3QgaW5zdHJ1bWVudEZpZWxkID0gZ2V0RmllbGQodHJhbnNmZXJSZWNvcmQsIGluc3RydW1lbnRGaWVsZE5hbWUpO1xuICAgICAgaWYgKGluc3RydW1lbnRGaWVsZD8ub25lb2ZLaW5kID09PSAncmVjb3JkJykge1xuICAgICAgICBjb25zdCBpbnN0cnVtZW50RmllbGRzID0gaW5zdHJ1bWVudEZpZWxkLnJlY29yZD8uZmllbGRzID8/IFtdO1xuICAgICAgICBjb25zdCBhZG1pbkRhdGEgPSBnZXRGaWVsZChpbnN0cnVtZW50RmllbGRzLCBpbnN0cnVtZW50QWRtaW5GaWVsZE5hbWUpO1xuICAgICAgICBpZiAoYWRtaW5EYXRhPy5vbmVvZktpbmQgPT09ICdwYXJ0eScpIGluc3RydW1lbnRBZG1pbiA9IGFkbWluRGF0YS5wYXJ0eSA/PyAnJztcbiAgICAgICAgY29uc3QgaWREYXRhID0gZ2V0RmllbGQoaW5zdHJ1bWVudEZpZWxkcywgJ2lkJyk7XG4gICAgICAgIGlmIChpZERhdGE/Lm9uZW9mS2luZCA9PT0gJ3RleHQnKSBpbnN0cnVtZW50SWQgPSBpZERhdGEudGV4dCA/PyAnJztcbiAgICAgIH1cbiAgICB9O1xuXG4gICAgc3dpdGNoICh0eFR5cGUpIHtcbiAgICAgIGNhc2UgVHJhbnNhY3Rpb25UeXBlLk9uZVN0ZXBQcmVBcHByb3ZhbDoge1xuICAgICAgICAvLyBDYW50b24gY29pbjogVHJhbnNmZXJQcmVhcHByb3ZhbFByb3Bvc2FsIGNyZWF0ZSBub2RlIOKGkiBwcm92aWRlcj1zZW5kZXIsIHJlY2VpdmVyXG4gICAgICAgIGNvbnN0IGNvaW5GaWVsZHMgPSBmaW5kQ3JlYXRlTm9kZUZpZWxkcygnVHJhbnNmZXJQcmVhcHByb3ZhbFByb3Bvc2FsJyk7XG4gICAgICAgIGlmIChjb2luRmllbGRzKSB7XG4gICAgICAgICAgY29uc3QgcHJvdmlkZXJEYXRhID0gZ2V0RmllbGQoY29pbkZpZWxkcywgJ3Byb3ZpZGVyJyk7XG4gICAgICAgICAgaWYgKHByb3ZpZGVyRGF0YT8ub25lb2ZLaW5kID09PSAncGFydHknKSBzZW5kZXIgPSBwcm92aWRlckRhdGEucGFydHkgPz8gJyc7XG4gICAgICAgICAgY29uc3QgcmVjZWl2ZXJEYXRhID0gZ2V0RmllbGQoY29pbkZpZWxkcywgJ3JlY2VpdmVyJyk7XG4gICAgICAgICAgaWYgKHJlY2VpdmVyRGF0YT8ub25lb2ZLaW5kID09PSAncGFydHknKSByZWNlaXZlciA9IHJlY2VpdmVyRGF0YS5wYXJ0eSA/PyAnJztcbiAgICAgICAgICBhbW91bnQgPSAnMCc7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgLy8gVG9rZW46IFRyYW5zZmVyUHJlYXBwcm92YWwgY3JlYXRlIG5vZGUg4oaSIG9wZXJhdG9yPXNlbmRlciwgcmVjZWl2ZXIsIGluc3RydW1lbnRBZG1pbiwgaW5zdHJ1bWVudEFsbG93YW5jZXNcbiAgICAgICAgY29uc3QgdG9rZW5GaWVsZHMgPSBmaW5kQ3JlYXRlTm9kZUZpZWxkcygnVHJhbnNmZXJQcmVhcHByb3ZhbCcpO1xuICAgICAgICBpZiAodG9rZW5GaWVsZHMpIHtcbiAgICAgICAgICBjb25zdCBvcGVyYXRvckRhdGEgPSBnZXRGaWVsZCh0b2tlbkZpZWxkcywgJ29wZXJhdG9yJyk7XG4gICAgICAgICAgaWYgKG9wZXJhdG9yRGF0YT8ub25lb2ZLaW5kID09PSAncGFydHknKSBzZW5kZXIgPSBvcGVyYXRvckRhdGEucGFydHkgPz8gJyc7XG4gICAgICAgICAgY29uc3QgcmVjZWl2ZXJEYXRhID0gZ2V0RmllbGQodG9rZW5GaWVsZHMsICdyZWNlaXZlcicpO1xuICAgICAgICAgIGlmIChyZWNlaXZlckRhdGE/Lm9uZW9mS2luZCA9PT0gJ3BhcnR5JykgcmVjZWl2ZXIgPSByZWNlaXZlckRhdGEucGFydHkgPz8gJyc7XG4gICAgICAgICAgYW1vdW50ID0gJzAnO1xuICAgICAgICAgIGNvbnN0IGluc3RydW1lbnRBZG1pbkRhdGEgPSBnZXRGaWVsZCh0b2tlbkZpZWxkcywgJ2luc3RydW1lbnRBZG1pbicpO1xuICAgICAgICAgIGlmIChpbnN0cnVtZW50QWRtaW5EYXRhPy5vbmVvZktpbmQgPT09ICdwYXJ0eScpIGluc3RydW1lbnRBZG1pbiA9IGluc3RydW1lbnRBZG1pbkRhdGEucGFydHkgPz8gJyc7XG4gICAgICAgICAgY29uc3QgYWxsb3dhbmNlc0RhdGEgPSBnZXRGaWVsZCh0b2tlbkZpZWxkcywgJ2luc3RydW1lbnRBbGxvd2FuY2VzJyk7XG4gICAgICAgICAgaWYgKGFsbG93YW5jZXNEYXRhPy5vbmVvZktpbmQgPT09ICdsaXN0Jykge1xuICAgICAgICAgICAgLy8gZm9yIHRoZSBzYW1lIGluc3RydW1lbnQgYWRtaW4sIGlmIG11bHRpcGxlIHRva2VucyBhcmUgc3VwcG9ydGVkIHRoZW4gd2UgY2FuIGVuYWJsZSBhbGwgb2YgdGhlbSxcbiAgICAgICAgICAgIC8vIGJ1dCB3ZSB3b24ndCBiZSBkb2luZyB0aGF0IGZvciBub3dcbiAgICAgICAgICAgIGNvbnN0IGZpcnN0QWxsb3dhbmNlID0gYWxsb3dhbmNlc0RhdGEubGlzdD8uZWxlbWVudHM/LlswXT8uc3VtO1xuICAgICAgICAgICAgaWYgKGZpcnN0QWxsb3dhbmNlPy5vbmVvZktpbmQgPT09ICdyZWNvcmQnKSB7XG4gICAgICAgICAgICAgIGNvbnN0IGFsbG93YW5jZUZpZWxkcyA9IGZpcnN0QWxsb3dhbmNlLnJlY29yZD8uZmllbGRzID8/IFtdO1xuICAgICAgICAgICAgICBjb25zdCBpZERhdGEgPSBnZXRGaWVsZChhbGxvd2FuY2VGaWVsZHMsICdpZCcpO1xuICAgICAgICAgICAgICBpZiAoaWREYXRhPy5vbmVvZktpbmQgPT09ICd0ZXh0JykgaW5zdHJ1bWVudElkID0gaWREYXRhLnRleHQgPz8gJyc7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuXG4gICAgICBjYXNlIFRyYW5zYWN0aW9uVHlwZS5UcmFuc2ZlckFjY2VwdDoge1xuICAgICAgICAvLyBDYW50b24gY29pbjogQW11bGV0IGNyZWF0ZSBub2RlIOKGkiBkc289c2VuZGVyLCBvd25lcj1yZWNlaXZlciwgYW1vdW50LmluaXRpYWxBbW91bnRcbiAgICAgICAgY29uc3QgYW11bGV0RmllbGRzID0gZmluZENyZWF0ZU5vZGVGaWVsZHMoJ0FtdWxldCcpO1xuICAgICAgICBpZiAoYW11bGV0RmllbGRzKSB7XG4gICAgICAgICAgY29uc3QgZHNvRGF0YSA9IGdldEZpZWxkKGFtdWxldEZpZWxkcywgJ2RzbycpO1xuICAgICAgICAgIGlmIChkc29EYXRhPy5vbmVvZktpbmQgPT09ICdwYXJ0eScpIHNlbmRlciA9IGRzb0RhdGEucGFydHkgPz8gJyc7XG4gICAgICAgICAgY29uc3Qgb3duZXJEYXRhID0gZ2V0RmllbGQoYW11bGV0RmllbGRzLCAnb3duZXInKTtcbiAgICAgICAgICBpZiAob3duZXJEYXRhPy5vbmVvZktpbmQgPT09ICdwYXJ0eScpIHJlY2VpdmVyID0gb3duZXJEYXRhLnBhcnR5ID8/ICcnO1xuICAgICAgICAgIGNvbnN0IGFtb3VudEZpZWxkID0gZ2V0RmllbGQoYW11bGV0RmllbGRzLCAnYW1vdW50Jyk7XG4gICAgICAgICAgaWYgKGFtb3VudEZpZWxkPy5vbmVvZktpbmQgPT09ICdyZWNvcmQnKSB7XG4gICAgICAgICAgICBjb25zdCBpbml0aWFsQW1vdW50RGF0YSA9IGdldEZpZWxkKGFtb3VudEZpZWxkLnJlY29yZD8uZmllbGRzID8/IFtdLCAnaW5pdGlhbEFtb3VudCcpO1xuICAgICAgICAgICAgaWYgKGluaXRpYWxBbW91bnREYXRhPy5vbmVvZktpbmQgPT09ICdudW1lcmljJykgYW1vdW50ID0gaW5pdGlhbEFtb3VudERhdGEubnVtZXJpYyA/PyAnJztcbiAgICAgICAgICB9XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgLy8gUmVndWxhciB0b2tlbiAobm9uLWNidGMpOiBFeGVjdXRlZFRyYW5zZmVyIGNyZWF0ZSBub2RlXG4gICAgICAgIC8vIOKGkiB0cmFuc2Zlci57c2VuZGVyLCByZWNlaXZlciwgYW1vdW50LCBpbnN0cnVtZW50SWRlbnRpZmllci57c291cmNlPWFkbWluLCBpZH19XG4gICAgICAgIGNvbnN0IGV4ZWN1dGVkVHJhbnNmZXJGaWVsZHMgPSBmaW5kQ3JlYXRlTm9kZUZpZWxkcygnRXhlY3V0ZWRUcmFuc2ZlcicpO1xuICAgICAgICBpZiAoZXhlY3V0ZWRUcmFuc2ZlckZpZWxkcykge1xuICAgICAgICAgIGNvbnN0IHRyYW5zZmVyU3VtID0gZ2V0RmllbGQoZXhlY3V0ZWRUcmFuc2ZlckZpZWxkcywgJ3RyYW5zZmVyJyk7XG4gICAgICAgICAgaWYgKHRyYW5zZmVyU3VtPy5vbmVvZktpbmQgPT09ICdyZWNvcmQnKSB7XG4gICAgICAgICAgICBleHRyYWN0RnJvbVRyYW5zZmVyUmVjb3JkKHRyYW5zZmVyU3VtLnJlY29yZD8uZmllbGRzID8/IFtdLCAnaW5zdHJ1bWVudElkZW50aWZpZXInLCAnc291cmNlJyk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIC8vIGNidGMgdG9rZW4gZmFsbGJhY2s6IFRyYW5zZmVyUnVsZV9EaXJlY3RUcmFuc2ZlciBleGVyY2lzZSBub2RlXG4gICAgICAgIC8vIOKGkiB0cmFuc2Zlci57c2VuZGVyLCByZWNlaXZlciwgYW1vdW50LCBpbnN0cnVtZW50SWQue2FkbWluLCBpZH19XG4gICAgICAgIGNvbnN0IGRpcmVjdFRyYW5zZmVyRmllbGRzID0gZmluZEV4ZXJjaXNlTm9kZUZpZWxkcygnVHJhbnNmZXJSdWxlX0RpcmVjdFRyYW5zZmVyJyk7XG4gICAgICAgIGlmIChkaXJlY3RUcmFuc2ZlckZpZWxkcykge1xuICAgICAgICAgIGNvbnN0IHRyYW5zZmVyU3VtID0gZ2V0RmllbGQoZGlyZWN0VHJhbnNmZXJGaWVsZHMsICd0cmFuc2ZlcicpO1xuICAgICAgICAgIGlmICh0cmFuc2ZlclN1bT8ub25lb2ZLaW5kID09PSAncmVjb3JkJykge1xuICAgICAgICAgICAgZXh0cmFjdEZyb21UcmFuc2ZlclJlY29yZCh0cmFuc2ZlclN1bS5yZWNvcmQ/LmZpZWxkcyA/PyBbXSwgJ2luc3RydW1lbnRJZCcsICdhZG1pbicpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICAvLyBVU0RDeC90d28tc3RlcCB0b2tlbiBmYWxsYmFjazogVHJhbnNmZXJSdWxlX1R3b1N0ZXBUcmFuc2ZlciBleGVyY2lzZSBub2RlXG4gICAgICAgIC8vIOKGkiB0cmFuc2Zlci57c2VuZGVyLCByZWNlaXZlciwgYW1vdW50LCBpbnN0cnVtZW50SWQue2FkbWluLCBpZH19XG4gICAgICAgIGlmICghc2VuZGVyKSB7XG4gICAgICAgICAgY29uc3QgdHdvU3RlcFRyYW5zZmVyRmllbGRzID0gZmluZEV4ZXJjaXNlTm9kZUZpZWxkcygnVHJhbnNmZXJSdWxlX1R3b1N0ZXBUcmFuc2ZlcicpO1xuICAgICAgICAgIGlmICh0d29TdGVwVHJhbnNmZXJGaWVsZHMpIHtcbiAgICAgICAgICAgIGNvbnN0IHRyYW5zZmVyU3VtID0gZ2V0RmllbGQodHdvU3RlcFRyYW5zZmVyRmllbGRzLCAndHJhbnNmZXInKTtcbiAgICAgICAgICAgIGlmICh0cmFuc2ZlclN1bT8ub25lb2ZLaW5kID09PSAncmVjb3JkJykge1xuICAgICAgICAgICAgICBleHRyYWN0RnJvbVRyYW5zZmVyUmVjb3JkKHRyYW5zZmVyU3VtLnJlY29yZD8uZmllbGRzID8/IFtdLCAnaW5zdHJ1bWVudElkJywgJ2FkbWluJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuXG4gICAgICBjYXNlIFRyYW5zYWN0aW9uVHlwZS5UcmFuc2ZlclJlamVjdDoge1xuICAgICAgICAvLyBDYW50b24gY29pbjogQW11bGV0IGNyZWF0ZSBub2RlIOKGkiBkc289c2VuZGVyLCBvd25lcj1yZWNlaXZlciwgYW1vdW50LmluaXRpYWxBbW91bnRcbiAgICAgICAgY29uc3QgYW11bGV0RmllbGRzID0gZmluZENyZWF0ZU5vZGVGaWVsZHMoJ0FtdWxldCcpO1xuICAgICAgICBpZiAoYW11bGV0RmllbGRzKSB7XG4gICAgICAgICAgY29uc3QgZHNvRGF0YSA9IGdldEZpZWxkKGFtdWxldEZpZWxkcywgJ2RzbycpO1xuICAgICAgICAgIGlmIChkc29EYXRhPy5vbmVvZktpbmQgPT09ICdwYXJ0eScpIHNlbmRlciA9IGRzb0RhdGEucGFydHkgPz8gJyc7XG4gICAgICAgICAgY29uc3Qgb3duZXJEYXRhID0gZ2V0RmllbGQoYW11bGV0RmllbGRzLCAnb3duZXInKTtcbiAgICAgICAgICBpZiAob3duZXJEYXRhPy5vbmVvZktpbmQgPT09ICdwYXJ0eScpIHJlY2VpdmVyID0gb3duZXJEYXRhLnBhcnR5ID8/ICcnO1xuICAgICAgICAgIGNvbnN0IGFtb3VudEZpZWxkID0gZ2V0RmllbGQoYW11bGV0RmllbGRzLCAnYW1vdW50Jyk7XG4gICAgICAgICAgaWYgKGFtb3VudEZpZWxkPy5vbmVvZktpbmQgPT09ICdyZWNvcmQnKSB7XG4gICAgICAgICAgICBjb25zdCBpbml0aWFsQW1vdW50RGF0YSA9IGdldEZpZWxkKGFtb3VudEZpZWxkLnJlY29yZD8uZmllbGRzID8/IFtdLCAnaW5pdGlhbEFtb3VudCcpO1xuICAgICAgICAgICAgaWYgKGluaXRpYWxBbW91bnREYXRhPy5vbmVvZktpbmQgPT09ICdudW1lcmljJykgYW1vdW50ID0gaW5pdGlhbEFtb3VudERhdGEubnVtZXJpYyA/PyAnJztcbiAgICAgICAgICB9XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgLy8gUmVndWxhciB0b2tlbiAobm9uLWNidGMpOiBSZWplY3RlZFRyYW5zZmVyIGNyZWF0ZSBub2RlXG4gICAgICAgIC8vIOKGkiB0cmFuc2Zlci57c2VuZGVyLCByZWNlaXZlciwgYW1vdW50LCBpbnN0cnVtZW50SWRlbnRpZmllci57c291cmNlPWFkbWluLCBpZH19XG4gICAgICAgIGNvbnN0IHJlamVjdGVkVHJhbnNmZXJGaWVsZHMgPSBmaW5kQ3JlYXRlTm9kZUZpZWxkcygnUmVqZWN0ZWRUcmFuc2ZlcicpO1xuICAgICAgICBpZiAocmVqZWN0ZWRUcmFuc2ZlckZpZWxkcykge1xuICAgICAgICAgIGNvbnN0IHRyYW5zZmVyU3VtID0gZ2V0RmllbGQocmVqZWN0ZWRUcmFuc2ZlckZpZWxkcywgJ3RyYW5zZmVyJyk7XG4gICAgICAgICAgaWYgKHRyYW5zZmVyU3VtPy5vbmVvZktpbmQgPT09ICdyZWNvcmQnKSB7XG4gICAgICAgICAgICBleHRyYWN0RnJvbVRyYW5zZmVyUmVjb3JkKHRyYW5zZmVyU3VtLnJlY29yZD8uZmllbGRzID8/IFtdLCAnaW5zdHJ1bWVudElkZW50aWZpZXInLCAnc291cmNlJyk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIC8vIGNidGMgdG9rZW4gZmFsbGJhY2s6IEhvbGRpbmcgY3JlYXRlIG5vZGUgKG93bmVyPXNlbmRlciwgaW5zdHJ1bWVudCwgYW1vdW50KVxuICAgICAgICAvLyArIFRyYW5zZmVySW5zdHJ1Y3Rpb25fUmVqZWN0IGV4ZXJjaXNlIChhY3RpbmdQYXJ0aWVzWzBdPXJlY2VpdmVyIHdobyByZWplY3RlZClcbiAgICAgICAgY29uc3QgaG9sZGluZ0ZpZWxkcyA9IGZpbmRDcmVhdGVOb2RlRmllbGRzKCdIb2xkaW5nJyk7XG4gICAgICAgIGlmIChob2xkaW5nRmllbGRzKSB7XG4gICAgICAgICAgY29uc3Qgb3duZXJEYXRhID0gZ2V0RmllbGQoaG9sZGluZ0ZpZWxkcywgJ293bmVyJyk7XG4gICAgICAgICAgaWYgKG93bmVyRGF0YT8ub25lb2ZLaW5kID09PSAncGFydHknKSBzZW5kZXIgPSBvd25lckRhdGEucGFydHkgPz8gJyc7XG4gICAgICAgICAgY29uc3QgYW1vdW50RGF0YSA9IGdldEZpZWxkKGhvbGRpbmdGaWVsZHMsICdhbW91bnQnKTtcbiAgICAgICAgICBpZiAoYW1vdW50RGF0YT8ub25lb2ZLaW5kID09PSAnbnVtZXJpYycpIGFtb3VudCA9IGFtb3VudERhdGEubnVtZXJpYyA/PyAnJztcbiAgICAgICAgICBjb25zdCBpbnN0cnVtZW50RGF0YSA9IGdldEZpZWxkKGhvbGRpbmdGaWVsZHMsICdpbnN0cnVtZW50Jyk7XG4gICAgICAgICAgaWYgKGluc3RydW1lbnREYXRhPy5vbmVvZktpbmQgPT09ICdyZWNvcmQnKSB7XG4gICAgICAgICAgICBjb25zdCBpbnN0cnVtZW50RmllbGRzID0gaW5zdHJ1bWVudERhdGEucmVjb3JkPy5maWVsZHMgPz8gW107XG4gICAgICAgICAgICBjb25zdCBzb3VyY2VEYXRhID0gZ2V0RmllbGQoaW5zdHJ1bWVudEZpZWxkcywgJ3NvdXJjZScpO1xuICAgICAgICAgICAgaWYgKHNvdXJjZURhdGE/Lm9uZW9mS2luZCA9PT0gJ3BhcnR5JykgaW5zdHJ1bWVudEFkbWluID0gc291cmNlRGF0YS5wYXJ0eSA/PyAnJztcbiAgICAgICAgICAgIGNvbnN0IGlkRGF0YSA9IGdldEZpZWxkKGluc3RydW1lbnRGaWVsZHMsICdpZCcpO1xuICAgICAgICAgICAgaWYgKGlkRGF0YT8ub25lb2ZLaW5kID09PSAndGV4dCcpIGluc3RydW1lbnRJZCA9IGlkRGF0YS50ZXh0ID8/ICcnO1xuICAgICAgICAgIH1cbiAgICAgICAgICBjb25zdCByZWNlaXZlclBhcnR5ID0gZmluZEV4ZXJjaXNlQWN0aW5nUGFydHkoJ1RyYW5zZmVySW5zdHJ1Y3Rpb25fUmVqZWN0Jyk7XG4gICAgICAgICAgaWYgKHJlY2VpdmVyUGFydHkpIHJlY2VpdmVyID0gcmVjZWl2ZXJQYXJ0eTtcbiAgICAgICAgfVxuICAgICAgICBicmVhaztcbiAgICAgIH1cblxuICAgICAgY2FzZSBUcmFuc2FjdGlvblR5cGUuQWxsb2NhdGlvbkFsbG9jYXRlV2l0aGRyYXduOiB7XG4gICAgICAgIC8vIEhvbGRpbmcgY3JlYXRlIG5vZGUg4oaSIG93bmVyPXNlbmRlcj1yZWNlaXZlciAoYWxsb2NhdGluZyBwYXJ0eSBnZXRzIHRoZWlyIGhvbGRpbmcgYmFjayksXG4gICAgICAgIC8vIGluc3RydW1lbnQue3NvdXJjZT1hZG1pbiwgaWR9LCBhbW91bnRcbiAgICAgICAgY29uc3QgaG9sZGluZ0ZpZWxkcyA9IGZpbmRDcmVhdGVOb2RlRmllbGRzKCdIb2xkaW5nJyk7XG4gICAgICAgIGlmIChob2xkaW5nRmllbGRzKSB7XG4gICAgICAgICAgY29uc3Qgb3duZXJEYXRhID0gZ2V0RmllbGQoaG9sZGluZ0ZpZWxkcywgJ293bmVyJyk7XG4gICAgICAgICAgaWYgKG93bmVyRGF0YT8ub25lb2ZLaW5kID09PSAncGFydHknKSB7XG4gICAgICAgICAgICByZWNlaXZlciA9IG93bmVyRGF0YS5wYXJ0eSA/PyAnJztcbiAgICAgICAgICAgIHNlbmRlciA9IHJlY2VpdmVyO1xuICAgICAgICAgIH1cbiAgICAgICAgICBjb25zdCBhbW91bnREYXRhID0gZ2V0RmllbGQoaG9sZGluZ0ZpZWxkcywgJ2Ftb3VudCcpO1xuICAgICAgICAgIGlmIChhbW91bnREYXRhPy5vbmVvZktpbmQgPT09ICdudW1lcmljJykgYW1vdW50ID0gYW1vdW50RGF0YS5udW1lcmljID8/ICcnO1xuICAgICAgICAgIGNvbnN0IGluc3RydW1lbnREYXRhID0gZ2V0RmllbGQoaG9sZGluZ0ZpZWxkcywgJ2luc3RydW1lbnQnKTtcbiAgICAgICAgICBpZiAoaW5zdHJ1bWVudERhdGE/Lm9uZW9mS2luZCA9PT0gJ3JlY29yZCcpIHtcbiAgICAgICAgICAgIGNvbnN0IGluc3RydW1lbnRGaWVsZHMgPSBpbnN0cnVtZW50RGF0YS5yZWNvcmQ/LmZpZWxkcyA/PyBbXTtcbiAgICAgICAgICAgIGNvbnN0IHNvdXJjZURhdGEgPSBnZXRGaWVsZChpbnN0cnVtZW50RmllbGRzLCAnc291cmNlJyk7XG4gICAgICAgICAgICBpZiAoc291cmNlRGF0YT8ub25lb2ZLaW5kID09PSAncGFydHknKSBpbnN0cnVtZW50QWRtaW4gPSBzb3VyY2VEYXRhLnBhcnR5ID8/ICcnO1xuICAgICAgICAgICAgY29uc3QgaWREYXRhID0gZ2V0RmllbGQoaW5zdHJ1bWVudEZpZWxkcywgJ2lkJyk7XG4gICAgICAgICAgICBpZiAoaWREYXRhPy5vbmVvZktpbmQgPT09ICd0ZXh0JykgaW5zdHJ1bWVudElkID0gaWREYXRhLnRleHQgPz8gJyc7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuXG4gICAgICBjYXNlIFRyYW5zYWN0aW9uVHlwZS5BbGxvY2F0aW9uQWxsb2NhdGU6IHtcbiAgICAgICAgLy8gRHZwTGVnQWxsb2NhdGlvbiBjcmVhdGUgbm9kZSDihpIgYWxsb2NhdGlvbi50cmFuc2ZlckxlZyBjb250YWlucyB0aGUgZnVsbCBzZXR0bGVtZW50IHRyYW5zZmVyIGRldGFpbHM6XG4gICAgICAgIC8vIHNlbmRlciwgcmVjZWl2ZXIgKHRoZSBhY3R1YWwgc2V0dGxlbWVudCBjb3VudGVycGFydHkpLCBhbW91bnQsIGFuZCBpbnN0cnVtZW50SWRcbiAgICAgICAgY29uc3QgZHZwRmllbGRzID0gZmluZENyZWF0ZU5vZGVGaWVsZHMoJ0R2cExlZ0FsbG9jYXRpb24nKTtcbiAgICAgICAgaWYgKGR2cEZpZWxkcykge1xuICAgICAgICAgIGNvbnN0IGFsbG9jYXRpb25GaWVsZCA9IGdldEZpZWxkKGR2cEZpZWxkcywgJ2FsbG9jYXRpb24nKTtcbiAgICAgICAgICBpZiAoYWxsb2NhdGlvbkZpZWxkPy5vbmVvZktpbmQgPT09ICdyZWNvcmQnKSB7XG4gICAgICAgICAgICBjb25zdCBhbGxvY2F0aW9uRmllbGRzID0gYWxsb2NhdGlvbkZpZWxkLnJlY29yZD8uZmllbGRzID8/IFtdO1xuICAgICAgICAgICAgY29uc3QgdHJhbnNmZXJMZWdGaWVsZCA9IGdldEZpZWxkKGFsbG9jYXRpb25GaWVsZHMsICd0cmFuc2ZlckxlZycpO1xuICAgICAgICAgICAgaWYgKHRyYW5zZmVyTGVnRmllbGQ/Lm9uZW9mS2luZCA9PT0gJ3JlY29yZCcpIHtcbiAgICAgICAgICAgICAgY29uc3QgdHJhbnNmZXJMZWdGaWVsZHMgPSB0cmFuc2ZlckxlZ0ZpZWxkLnJlY29yZD8uZmllbGRzID8/IFtdO1xuICAgICAgICAgICAgICBjb25zdCBzZW5kZXJEYXRhID0gZ2V0RmllbGQodHJhbnNmZXJMZWdGaWVsZHMsICdzZW5kZXInKTtcbiAgICAgICAgICAgICAgaWYgKHNlbmRlckRhdGE/Lm9uZW9mS2luZCA9PT0gJ3BhcnR5Jykgc2VuZGVyID0gc2VuZGVyRGF0YS5wYXJ0eSA/PyAnJztcbiAgICAgICAgICAgICAgY29uc3QgcmVjZWl2ZXJEYXRhID0gZ2V0RmllbGQodHJhbnNmZXJMZWdGaWVsZHMsICdyZWNlaXZlcicpO1xuICAgICAgICAgICAgICBpZiAocmVjZWl2ZXJEYXRhPy5vbmVvZktpbmQgPT09ICdwYXJ0eScpIHJlY2VpdmVyID0gcmVjZWl2ZXJEYXRhLnBhcnR5ID8/ICcnO1xuICAgICAgICAgICAgICBjb25zdCBhbW91bnREYXRhID0gZ2V0RmllbGQodHJhbnNmZXJMZWdGaWVsZHMsICdhbW91bnQnKTtcbiAgICAgICAgICAgICAgaWYgKGFtb3VudERhdGE/Lm9uZW9mS2luZCA9PT0gJ251bWVyaWMnKSBhbW91bnQgPSBhbW91bnREYXRhLm51bWVyaWMgPz8gJyc7XG4gICAgICAgICAgICAgIGNvbnN0IGluc3RydW1lbnRJZEZpZWxkID0gZ2V0RmllbGQodHJhbnNmZXJMZWdGaWVsZHMsICdpbnN0cnVtZW50SWQnKTtcbiAgICAgICAgICAgICAgaWYgKGluc3RydW1lbnRJZEZpZWxkPy5vbmVvZktpbmQgPT09ICdyZWNvcmQnKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgaW5zdHJ1bWVudElkRmllbGRzID0gaW5zdHJ1bWVudElkRmllbGQucmVjb3JkPy5maWVsZHMgPz8gW107XG4gICAgICAgICAgICAgICAgY29uc3QgYWRtaW5EYXRhID0gZ2V0RmllbGQoaW5zdHJ1bWVudElkRmllbGRzLCAnYWRtaW4nKTtcbiAgICAgICAgICAgICAgICBpZiAoYWRtaW5EYXRhPy5vbmVvZktpbmQgPT09ICdwYXJ0eScpIGluc3RydW1lbnRBZG1pbiA9IGFkbWluRGF0YS5wYXJ0eSA/PyAnJztcbiAgICAgICAgICAgICAgICBjb25zdCBpZERhdGEgPSBnZXRGaWVsZChpbnN0cnVtZW50SWRGaWVsZHMsICdpZCcpO1xuICAgICAgICAgICAgICAgIGlmIChpZERhdGE/Lm9uZW9mS2luZCA9PT0gJ3RleHQnKSBpbnN0cnVtZW50SWQgPSBpZERhdGEudGV4dCA/PyAnJztcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICAvLyBGYWxsYmFjazogaWYgRHZwTGVnQWxsb2NhdGlvbiBpcyBhYnNlbnQsIHVzZSB0aGUgb3BlcmF0b3IgYXMgcmVjZWl2ZXJcbiAgICAgICAgaWYgKCFyZWNlaXZlcikge1xuICAgICAgICAgIGNvbnN0IGFsbG9jYXRlRmllbGRzID0gZmluZEV4ZXJjaXNlTm9kZUZpZWxkcygnQWxsb2NhdGlvbkZhY3RvcnlfQWxsb2NhdGUnKTtcbiAgICAgICAgICBpZiAoYWxsb2NhdGVGaWVsZHMpIHtcbiAgICAgICAgICAgIGNvbnN0IGFkbWluRGF0YSA9IGdldEZpZWxkKGFsbG9jYXRlRmllbGRzLCAnZXhwZWN0ZWRBZG1pbicpO1xuICAgICAgICAgICAgaWYgKGFkbWluRGF0YT8ub25lb2ZLaW5kID09PSAncGFydHknKSByZWNlaXZlciA9IGFkbWluRGF0YS5wYXJ0eSA/PyAnJztcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFzZW5kZXIpIHtcbiAgICAgICAgICBjb25zdCBzZW5kZXJQYXJ0eSA9IGZpbmRFeGVyY2lzZUFjdGluZ1BhcnR5KCdBbGxvY2F0aW9uRmFjdG9yeV9BbGxvY2F0ZScpO1xuICAgICAgICAgIGlmIChzZW5kZXJQYXJ0eSkgc2VuZGVyID0gc2VuZGVyUGFydHk7XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG5cbiAgICAgIGNhc2UgVHJhbnNhY3Rpb25UeXBlLkFsbG9jYXRpb25SZWplY3Q6IHtcbiAgICAgICAgLy8gUmVqZWN0ZWREdnAgY3JlYXRlIG5vZGUg4oaSIGR2cC57c2VsbGVyPXNlbmRlciwgYnV5ZXI9cmVjZWl2ZXIsIHRlcm1zLmRlbGl2ZXJpZXNbMF0ue2Ftb3VudCwgaW5zdHJ1bWVudC57YWRtaW4sIGlkfX19XG4gICAgICAgIGNvbnN0IHJlamVjdGVkRHZwRmllbGRzID0gZmluZENyZWF0ZU5vZGVGaWVsZHMoJ1JlamVjdGVkRHZwJyk7XG4gICAgICAgIGlmIChyZWplY3RlZER2cEZpZWxkcykge1xuICAgICAgICAgIGNvbnN0IGR2cEZpZWxkID0gZ2V0RmllbGQocmVqZWN0ZWREdnBGaWVsZHMsICdkdnAnKTtcbiAgICAgICAgICBpZiAoZHZwRmllbGQ/Lm9uZW9mS2luZCA9PT0gJ3JlY29yZCcpIHtcbiAgICAgICAgICAgIGNvbnN0IGR2cEZpZWxkcyA9IGR2cEZpZWxkLnJlY29yZD8uZmllbGRzID8/IFtdO1xuICAgICAgICAgICAgY29uc3Qgc2VsbGVyRGF0YSA9IGdldEZpZWxkKGR2cEZpZWxkcywgJ3NlbGxlcicpO1xuICAgICAgICAgICAgaWYgKHNlbGxlckRhdGE/Lm9uZW9mS2luZCA9PT0gJ3BhcnR5Jykgc2VuZGVyID0gc2VsbGVyRGF0YS5wYXJ0eSA/PyAnJztcbiAgICAgICAgICAgIGNvbnN0IGJ1eWVyRGF0YSA9IGdldEZpZWxkKGR2cEZpZWxkcywgJ2J1eWVyJyk7XG4gICAgICAgICAgICBpZiAoYnV5ZXJEYXRhPy5vbmVvZktpbmQgPT09ICdwYXJ0eScpIHJlY2VpdmVyID0gYnV5ZXJEYXRhLnBhcnR5ID8/ICcnO1xuICAgICAgICAgICAgY29uc3QgdGVybXNGaWVsZCA9IGdldEZpZWxkKGR2cEZpZWxkcywgJ3Rlcm1zJyk7XG4gICAgICAgICAgICBpZiAodGVybXNGaWVsZD8ub25lb2ZLaW5kID09PSAncmVjb3JkJykge1xuICAgICAgICAgICAgICBjb25zdCB0ZXJtc0ZpZWxkcyA9IHRlcm1zRmllbGQucmVjb3JkPy5maWVsZHMgPz8gW107XG4gICAgICAgICAgICAgIGNvbnN0IGRlbGl2ZXJpZXNGaWVsZCA9IGdldEZpZWxkKHRlcm1zRmllbGRzLCAnZGVsaXZlcmllcycpO1xuICAgICAgICAgICAgICBpZiAoZGVsaXZlcmllc0ZpZWxkPy5vbmVvZktpbmQgPT09ICdsaXN0Jykge1xuICAgICAgICAgICAgICAgIGNvbnN0IGZpcnN0RGVsaXZlcnkgPSBkZWxpdmVyaWVzRmllbGQubGlzdD8uZWxlbWVudHM/LlswXT8uc3VtO1xuICAgICAgICAgICAgICAgIGlmIChmaXJzdERlbGl2ZXJ5Py5vbmVvZktpbmQgPT09ICdyZWNvcmQnKSB7XG4gICAgICAgICAgICAgICAgICBjb25zdCBkZWxpdmVyeUZpZWxkcyA9IGZpcnN0RGVsaXZlcnkucmVjb3JkPy5maWVsZHMgPz8gW107XG4gICAgICAgICAgICAgICAgICBjb25zdCBhbW91bnREYXRhID0gZ2V0RmllbGQoZGVsaXZlcnlGaWVsZHMsICdhbW91bnQnKTtcbiAgICAgICAgICAgICAgICAgIGlmIChhbW91bnREYXRhPy5vbmVvZktpbmQgPT09ICdudW1lcmljJykgYW1vdW50ID0gYW1vdW50RGF0YS5udW1lcmljID8/ICcnO1xuICAgICAgICAgICAgICAgICAgY29uc3QgaW5zdHJ1bWVudEZpZWxkID0gZ2V0RmllbGQoZGVsaXZlcnlGaWVsZHMsICdpbnN0cnVtZW50Jyk7XG4gICAgICAgICAgICAgICAgICBpZiAoaW5zdHJ1bWVudEZpZWxkPy5vbmVvZktpbmQgPT09ICdyZWNvcmQnKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGluc3RydW1lbnRGaWVsZHMgPSBpbnN0cnVtZW50RmllbGQucmVjb3JkPy5maWVsZHMgPz8gW107XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGFkbWluRGF0YSA9IGdldEZpZWxkKGluc3RydW1lbnRGaWVsZHMsICdhZG1pbicpO1xuICAgICAgICAgICAgICAgICAgICBpZiAoYWRtaW5EYXRhPy5vbmVvZktpbmQgPT09ICdwYXJ0eScpIGluc3RydW1lbnRBZG1pbiA9IGFkbWluRGF0YS5wYXJ0eSA/PyAnJztcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgaWREYXRhID0gZ2V0RmllbGQoaW5zdHJ1bWVudEZpZWxkcywgJ2lkJyk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChpZERhdGE/Lm9uZW9mS2luZCA9PT0gJ3RleHQnKSBpbnN0cnVtZW50SWQgPSBpZERhdGEudGV4dCA/PyAnJztcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG5cbiAgICAgIGNhc2UgVHJhbnNhY3Rpb25UeXBlLkNvc2lnbkRlbGVnYXRpb25BY2NlcHQ6IHtcbiAgICAgICAgLy8gZXhlcmNpc2UgQ29zaWduaW5nRGVsZWdhdGlvblByb3Bvc2FsX0FjY2VwdCDihpIgYWN0aW5nUGFydGllc1swXSA9IHNpZ25lciAoc2VuZGVyKVxuICAgICAgICBjb25zdCBzaWduZXJQYXJ0eSA9IGZpbmRFeGVyY2lzZUFjdGluZ1BhcnR5KCdDb3NpZ25pbmdEZWxlZ2F0aW9uUHJvcG9zYWxfQWNjZXB0Jyk7XG4gICAgICAgIGlmIChzaWduZXJQYXJ0eSkgc2VuZGVyID0gc2lnbmVyUGFydHk7XG4gICAgICAgIC8vIENvc2lnbmluZ0RlbGVnYXRpb24gY3JlYXRlIG5vZGUgKHJlc3VsdCBvZiB0aGUgYWNjZXB0KSDihpIgYWRtaW4gPSByZWNlaXZlclxuICAgICAgICBjb25zdCBkZWxlZ2F0aW9uRmllbGRzID0gZmluZENyZWF0ZU5vZGVGaWVsZHMoJ0Nvc2lnbmluZ0RlbGVnYXRpb24nKTtcbiAgICAgICAgaWYgKGRlbGVnYXRpb25GaWVsZHMpIHtcbiAgICAgICAgICBjb25zdCBhZG1pbkRhdGEgPSBnZXRGaWVsZChkZWxlZ2F0aW9uRmllbGRzLCAnYWRtaW4nKTtcbiAgICAgICAgICBpZiAoYWRtaW5EYXRhPy5vbmVvZktpbmQgPT09ICdwYXJ0eScpIHJlY2VpdmVyID0gYWRtaW5EYXRhLnBhcnR5ID8/ICcnO1xuICAgICAgICB9XG4gICAgICAgIGFtb3VudCA9ICcwJztcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG5cbiAgICAgIGNhc2UgVHJhbnNhY3Rpb25UeXBlLlRyYW5zZmVyT2ZmZXJXaXRoZHJhd246IHtcbiAgICAgICAgLy8gQ2FudG9uIGNvaW46IEFtdWxldCBjcmVhdGUgbm9kZSDihpIgb3duZXI9c2VuZGVyPXJlY2VpdmVyLCBhbW91bnQuaW5pdGlhbEFtb3VudFxuICAgICAgICBjb25zdCBhbXVsZXRGaWVsZHMgPSBmaW5kQ3JlYXRlTm9kZUZpZWxkcygnQW11bGV0Jyk7XG4gICAgICAgIGlmIChhbXVsZXRGaWVsZHMpIHtcbiAgICAgICAgICBjb25zdCBvd25lckRhdGEgPSBnZXRGaWVsZChhbXVsZXRGaWVsZHMsICdvd25lcicpO1xuICAgICAgICAgIGlmIChvd25lckRhdGE/Lm9uZW9mS2luZCA9PT0gJ3BhcnR5Jykge1xuICAgICAgICAgICAgcmVjZWl2ZXIgPSBvd25lckRhdGEucGFydHkgPz8gJyc7XG4gICAgICAgICAgICBzZW5kZXIgPSByZWNlaXZlcjtcbiAgICAgICAgICB9XG4gICAgICAgICAgY29uc3QgYW1vdW50RmllbGQgPSBnZXRGaWVsZChhbXVsZXRGaWVsZHMsICdhbW91bnQnKTtcbiAgICAgICAgICBpZiAoYW1vdW50RmllbGQ/Lm9uZW9mS2luZCA9PT0gJ3JlY29yZCcpIHtcbiAgICAgICAgICAgIGNvbnN0IGluaXRpYWxBbW91bnREYXRhID0gZ2V0RmllbGQoYW1vdW50RmllbGQucmVjb3JkPy5maWVsZHMgPz8gW10sICdpbml0aWFsQW1vdW50Jyk7XG4gICAgICAgICAgICBpZiAoaW5pdGlhbEFtb3VudERhdGE/Lm9uZW9mS2luZCA9PT0gJ251bWVyaWMnKSBhbW91bnQgPSBpbml0aWFsQW1vdW50RGF0YS5udW1lcmljID8/ICcnO1xuICAgICAgICAgIH1cbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICAvLyBUb2tlbjogSG9sZGluZyBjcmVhdGUgbm9kZSDihpIgb3duZXI9c2VuZGVyPXJlY2VpdmVyLCBpbnN0cnVtZW50Lntzb3VyY2U9YWRtaW4sIGlkfSwgYW1vdW50XG4gICAgICAgIGNvbnN0IGhvbGRpbmdGaWVsZHMgPSBmaW5kQ3JlYXRlTm9kZUZpZWxkcygnSG9sZGluZycpO1xuICAgICAgICBpZiAoaG9sZGluZ0ZpZWxkcykge1xuICAgICAgICAgIGNvbnN0IG93bmVyRGF0YSA9IGdldEZpZWxkKGhvbGRpbmdGaWVsZHMsICdvd25lcicpO1xuICAgICAgICAgIGlmIChvd25lckRhdGE/Lm9uZW9mS2luZCA9PT0gJ3BhcnR5Jykge1xuICAgICAgICAgICAgcmVjZWl2ZXIgPSBvd25lckRhdGEucGFydHkgPz8gJyc7XG4gICAgICAgICAgICBzZW5kZXIgPSByZWNlaXZlcjtcbiAgICAgICAgICB9XG4gICAgICAgICAgY29uc3QgYW1vdW50RGF0YSA9IGdldEZpZWxkKGhvbGRpbmdGaWVsZHMsICdhbW91bnQnKTtcbiAgICAgICAgICBpZiAoYW1vdW50RGF0YT8ub25lb2ZLaW5kID09PSAnbnVtZXJpYycpIGFtb3VudCA9IGFtb3VudERhdGEubnVtZXJpYyA/PyAnJztcbiAgICAgICAgICBjb25zdCBpbnN0cnVtZW50RGF0YSA9IGdldEZpZWxkKGhvbGRpbmdGaWVsZHMsICdpbnN0cnVtZW50Jyk7XG4gICAgICAgICAgaWYgKGluc3RydW1lbnREYXRhPy5vbmVvZktpbmQgPT09ICdyZWNvcmQnKSB7XG4gICAgICAgICAgICBjb25zdCBpbnN0cnVtZW50RmllbGRzID0gaW5zdHJ1bWVudERhdGEucmVjb3JkPy5maWVsZHMgPz8gW107XG4gICAgICAgICAgICBjb25zdCBzb3VyY2VEYXRhID0gZ2V0RmllbGQoaW5zdHJ1bWVudEZpZWxkcywgJ3NvdXJjZScpO1xuICAgICAgICAgICAgaWYgKHNvdXJjZURhdGE/Lm9uZW9mS2luZCA9PT0gJ3BhcnR5JykgaW5zdHJ1bWVudEFkbWluID0gc291cmNlRGF0YS5wYXJ0eSA/PyAnJztcbiAgICAgICAgICAgIGNvbnN0IGlkRGF0YSA9IGdldEZpZWxkKGluc3RydW1lbnRGaWVsZHMsICdpZCcpO1xuICAgICAgICAgICAgaWYgKGlkRGF0YT8ub25lb2ZLaW5kID09PSAndGV4dCcpIGluc3RydW1lbnRJZCA9IGlkRGF0YS50ZXh0ID8/ICcnO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBicmVhaztcbiAgICAgIH1cblxuICAgICAgZGVmYXVsdDoge1xuICAgICAgICAvLyBJbml0aWFsIHRyYW5zZmVyICgxLXN0ZXAgYW5kIDItc3RlcCwgY29pbiBhbmQgdG9rZW4pOiBUcmFuc2ZlckZhY3RvcnlfVHJhbnNmZXIgZXhlcmNpc2Ugbm9kZVxuICAgICAgICAvLyDihpIgdHJhbnNmZXIue3NlbmRlciwgcmVjZWl2ZXIsIGFtb3VudCwgaW5zdHJ1bWVudElkLnthZG1pbiwgaWR9LCBtZXRhfVxuICAgICAgICBjb25zdCB0cmFuc2ZlckZpZWxkcyA9IGZpbmRFeGVyY2lzZU5vZGVGaWVsZHMoJ1RyYW5zZmVyRmFjdG9yeV9UcmFuc2ZlcicpO1xuICAgICAgICBpZiAodHJhbnNmZXJGaWVsZHMpIHtcbiAgICAgICAgICBjb25zdCB0cmFuc2ZlclN1bSA9IGdldEZpZWxkKHRyYW5zZmVyRmllbGRzLCAndHJhbnNmZXInKTtcbiAgICAgICAgICBpZiAodHJhbnNmZXJTdW0/Lm9uZW9mS2luZCA9PT0gJ3JlY29yZCcpIHtcbiAgICAgICAgICAgIGNvbnN0IHRyYW5zZmVyUmVjb3JkID0gdHJhbnNmZXJTdW0ucmVjb3JkPy5maWVsZHMgPz8gW107XG4gICAgICAgICAgICBleHRyYWN0RnJvbVRyYW5zZmVyUmVjb3JkKHRyYW5zZmVyUmVjb3JkLCAnaW5zdHJ1bWVudElkJywgJ2FkbWluJyk7XG4gICAgICAgICAgICBjb25zdCBtZXRhRmllbGQgPSBnZXRGaWVsZCh0cmFuc2ZlclJlY29yZCwgJ21ldGEnKTtcbiAgICAgICAgICAgIGlmIChtZXRhRmllbGQ/Lm9uZW9mS2luZCA9PT0gJ3JlY29yZCcpIHtcbiAgICAgICAgICAgICAgY29uc3QgdmFsdWVzRmllbGQgPSBnZXRGaWVsZChtZXRhRmllbGQucmVjb3JkPy5maWVsZHMgPz8gW10sICd2YWx1ZXMnKTtcbiAgICAgICAgICAgICAgaWYgKHZhbHVlc0ZpZWxkPy5vbmVvZktpbmQgPT09ICd0ZXh0TWFwJykge1xuICAgICAgICAgICAgICAgIGNvbnN0IG1lbW9FbnRyeSA9IHZhbHVlc0ZpZWxkLnRleHRNYXA/LmVudHJpZXMuZmluZChcbiAgICAgICAgICAgICAgICAgIChlKSA9PiBlLmtleSA9PT0gJ3NwbGljZS5sZmRlY2VudHJhbGl6ZWR0cnVzdC5vcmcvcmVhc29uJ1xuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgaWYgKG1lbW9FbnRyeSkge1xuICAgICAgICAgICAgICAgICAgY29uc3QgbWVtb1ZhbHVlID0gbWVtb0VudHJ5Py52YWx1ZT8uc3VtO1xuICAgICAgICAgICAgICAgICAgaWYgKG1lbW9WYWx1ZT8ub25lb2ZLaW5kID09PSAndGV4dCcpIG1lbW9JZCA9IG1lbW9WYWx1ZS50ZXh0O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoIXNlbmRlciB8fCAhcmVjZWl2ZXIgfHwgIWFtb3VudCkge1xuICAgICAgY29uc3QgbWlzc2luZ0ZpZWxkczogc3RyaW5nW10gPSBbXTtcbiAgICAgIGlmICghc2VuZGVyKSBtaXNzaW5nRmllbGRzLnB1c2goJ3NlbmRlcicpO1xuICAgICAgaWYgKCFyZWNlaXZlcikgbWlzc2luZ0ZpZWxkcy5wdXNoKCdyZWNlaXZlcicpO1xuICAgICAgaWYgKCFhbW91bnQpIG1pc3NpbmdGaWVsZHMucHVzaCgnYW1vdW50Jyk7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYGludmFsaWQgdHJhbnNhY3Rpb24gZGF0YTogbWlzc2luZyAke21pc3NpbmdGaWVsZHMuam9pbignLCAnKX1gKTtcbiAgICB9XG4gICAgY29uc3QgY29udmVydGVkQW1vdW50ID0gdGhpcy5jb252ZXJ0QW1vdW50VG9Mb3dlc3RVbml0KG5ldyBCaWdOdW1iZXIoYW1vdW50KSk7XG4gICAgY29uc3QgcGFyc2VkRGF0YTogUHJlcGFyZWRUeG5QYXJzZWRJbmZvID0ge1xuICAgICAgc2VuZGVyLFxuICAgICAgcmVjZWl2ZXIsXG4gICAgICBhbW91bnQ6IGNvbnZlcnRlZEFtb3VudCxcbiAgICB9O1xuICAgIGlmIChtZW1vSWQpIHtcbiAgICAgIHBhcnNlZERhdGEubWVtb0lkID0gbWVtb0lkO1xuICAgIH1cbiAgICBpZiAoaW5zdHJ1bWVudElkICYmIGluc3RydW1lbnRBZG1pbikge1xuICAgICAgcGFyc2VkRGF0YS50b2tlbiA9IHRoaXMuZmluZFRva2VuTmFtZUJ5Q29udHJhY3RBZGRyZXNzKGAke2luc3RydW1lbnRBZG1pbn06JHtpbnN0cnVtZW50SWR9YCk7XG4gICAgfVxuICAgIHJldHVybiBwYXJzZWREYXRhO1xuICB9XG5cbiAgLyoqIFBhcnNlcyBgXCJQa2c6TW9kdWxlOkVudGl0eVwiYCBpbnRvIHBhcnRzLiAqL1xuICBwYXJzZUNhbnRvblRlbXBsYXRlSWQodmFsdWU6IHN0cmluZyk6IHsgcGtnOiBzdHJpbmc7IG1vZHVsZU5hbWU6IHN0cmluZzsgZW50aXR5TmFtZTogc3RyaW5nIH0gfCB1bmRlZmluZWQge1xuICAgIGlmICh0eXBlb2YgdmFsdWUgIT09ICdzdHJpbmcnKSByZXR1cm4gdW5kZWZpbmVkO1xuICAgIGNvbnN0IHBhcnRzID0gdmFsdWUuc3BsaXQoJzonKTtcbiAgICBpZiAocGFydHMubGVuZ3RoICE9PSAzKSByZXR1cm4gdW5kZWZpbmVkO1xuICAgIGNvbnN0IFtwa2csIG1vZHVsZU5hbWUsIGVudGl0eU5hbWVdID0gcGFydHM7XG4gICAgaWYgKCFwa2cgfHwgIW1vZHVsZU5hbWUgfHwgIWVudGl0eU5hbWUpIHJldHVybiB1bmRlZmluZWQ7XG4gICAgcmV0dXJuIHsgcGtnLCBtb2R1bGVOYW1lLCBlbnRpdHlOYW1lIH07XG4gIH1cblxuICBkYW1sVmFsdWVUb0pzb24odmFsdWU6IFZhbHVlIHwgdW5kZWZpbmVkKTogdW5rbm93biB7XG4gICAgaWYgKCF2YWx1ZSB8fCAhdmFsdWUuc3VtKSByZXR1cm4gdW5kZWZpbmVkO1xuICAgIGNvbnN0IHN1bSA9IHZhbHVlLnN1bTtcbiAgICBzd2l0Y2ggKHN1bS5vbmVvZktpbmQpIHtcbiAgICAgIGNhc2UgJ3VuaXQnOlxuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgIGNhc2UgJ2Jvb2wnOlxuICAgICAgICByZXR1cm4gc3VtLmJvb2w7XG4gICAgICBjYXNlICdpbnQ2NCc6XG4gICAgICAgIHJldHVybiBzdW0uaW50NjQ7XG4gICAgICBjYXNlICdkYXRlJzpcbiAgICAgICAgcmV0dXJuIHN1bS5kYXRlO1xuICAgICAgY2FzZSAndGltZXN0YW1wJzpcbiAgICAgICAgcmV0dXJuIHN1bS50aW1lc3RhbXA7XG4gICAgICBjYXNlICdudW1lcmljJzpcbiAgICAgICAgcmV0dXJuIHN1bS5udW1lcmljO1xuICAgICAgY2FzZSAncGFydHknOlxuICAgICAgICByZXR1cm4gc3VtLnBhcnR5O1xuICAgICAgY2FzZSAndGV4dCc6XG4gICAgICAgIHJldHVybiBzdW0udGV4dDtcbiAgICAgIGNhc2UgJ2NvbnRyYWN0SWQnOlxuICAgICAgICByZXR1cm4gc3VtLmNvbnRyYWN0SWQ7XG4gICAgICBjYXNlICdvcHRpb25hbCc6XG4gICAgICAgIHJldHVybiBzdW0ub3B0aW9uYWw/LnZhbHVlID8gdGhpcy5kYW1sVmFsdWVUb0pzb24oc3VtLm9wdGlvbmFsLnZhbHVlKSA6IG51bGw7XG4gICAgICBjYXNlICdsaXN0JzpcbiAgICAgICAgcmV0dXJuIChzdW0ubGlzdD8uZWxlbWVudHMgPz8gW10pLm1hcCgoZWwpID0+IHRoaXMuZGFtbFZhbHVlVG9Kc29uKGVsKSk7XG4gICAgICBjYXNlICd0ZXh0TWFwJzoge1xuICAgICAgICBjb25zdCBvYmo6IFJlY29yZDxzdHJpbmcsIHVua25vd24+ID0ge307XG4gICAgICAgIGZvciAoY29uc3QgZW50cnkgb2Ygc3VtLnRleHRNYXA/LmVudHJpZXMgPz8gW10pIHtcbiAgICAgICAgICBvYmpbZW50cnkua2V5XSA9IHRoaXMuZGFtbFZhbHVlVG9Kc29uKGVudHJ5LnZhbHVlKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gb2JqO1xuICAgICAgfVxuICAgICAgY2FzZSAnZ2VuTWFwJzpcbiAgICAgICAgcmV0dXJuIChzdW0uZ2VuTWFwPy5lbnRyaWVzID8/IFtdKS5tYXAoKGVudHJ5KSA9PiBbXG4gICAgICAgICAgdGhpcy5kYW1sVmFsdWVUb0pzb24oZW50cnkua2V5KSxcbiAgICAgICAgICB0aGlzLmRhbWxWYWx1ZVRvSnNvbihlbnRyeS52YWx1ZSksXG4gICAgICAgIF0pO1xuICAgICAgY2FzZSAncmVjb3JkJzoge1xuICAgICAgICBjb25zdCBvYmo6IFJlY29yZDxzdHJpbmcsIHVua25vd24+ID0ge307XG4gICAgICAgIGZvciAoY29uc3QgZiBvZiBzdW0ucmVjb3JkPy5maWVsZHMgPz8gW10pIHtcbiAgICAgICAgICBvYmpbZi5sYWJlbF0gPSB0aGlzLmRhbWxWYWx1ZVRvSnNvbihmLnZhbHVlKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gb2JqO1xuICAgICAgfVxuICAgICAgY2FzZSAndmFyaWFudCc6IHtcbiAgICAgICAgY29uc3Qgb2JqOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiA9IHt9O1xuICAgICAgICBvYmpbc3VtLnZhcmlhbnQuY29uc3RydWN0b3JdID0gdGhpcy5kYW1sVmFsdWVUb0pzb24oc3VtLnZhcmlhbnQudmFsdWUpO1xuICAgICAgICByZXR1cm4gb2JqO1xuICAgICAgfVxuICAgICAgY2FzZSAnZW51bSc6XG4gICAgICAgIHJldHVybiBzdW0uZW51bS5jb25zdHJ1Y3RvcjtcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuICB9XG5cbiAgLyoqIFJlYWRzIGFjdEFzIHBhcnRpZXMgZnJvbSBhIGJhc2U2NC1lbmNvZGVkIHByZXBhcmVkIHRyYW5zYWN0aW9uIHByb3RvYnVmLiAqL1xuICBleHRyYWN0U3VibWl0dGVyQWN0QXMocmF3QmFzZTY0OiBzdHJpbmcpOiBzdHJpbmdbXSB7XG4gICAgY29uc3QgZGVjb2RlZCA9IHRoaXMuZGVjb2RlUHJlcGFyZWRUcmFuc2FjdGlvbihyYXdCYXNlNjQpO1xuICAgIHJldHVybiBkZWNvZGVkLm1ldGFkYXRhPy5zdWJtaXR0ZXJJbmZvPy5hY3RBcyA/PyBbXTtcbiAgfVxuXG4gIC8qKiBEZWNvZGVzIGEgcHJlcGFyZWQgQ2FudG9uIHRyYW5zYWN0aW9uIHByb3RvYnVmIGFuZCBleHRyYWN0cyB0aGUgcm9vdCBDcmVhdGVDb21tYW5kIG9yIEV4ZXJjaXNlQ29tbWFuZC4gKi9cbiAgZXh0cmFjdENhbnRvbkNvbW1hbmRJbmZvKHJhd0Jhc2U2NDogc3RyaW5nKTogQ2FudG9uQ29tbWFuZEluZm8ge1xuICAgIGNvbnN0IGRlY29kZWQgPSB0aGlzLmRlY29kZVByZXBhcmVkVHJhbnNhY3Rpb24ocmF3QmFzZTY0KTtcbiAgICBjb25zdCB0eCA9IGRlY29kZWQudHJhbnNhY3Rpb247XG4gICAgaWYgKCF0eCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdkZWNvZGVkIHByZXBhcmVkIHRyYW5zYWN0aW9uIGhhcyBubyB0cmFuc2FjdGlvbiBib2R5Jyk7XG4gICAgfVxuICAgIGNvbnN0IHJvb3RzID0gdHgucm9vdHMgPz8gW107XG4gICAgaWYgKHJvb3RzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdkZWNvZGVkIHByZXBhcmVkIHRyYW5zYWN0aW9uIGhhcyBubyByb290IG5vZGVzJyk7XG4gICAgfVxuICAgIGlmIChyb290cy5sZW5ndGggPiAxKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYGRlY29kZWQgcHJlcGFyZWQgdHJhbnNhY3Rpb24gaGFzICR7cm9vdHMubGVuZ3RofSByb290IG5vZGVzOyBleHBlY3RlZCBleGFjdGx5IDFgKTtcbiAgICB9XG4gICAgY29uc3Qgcm9vdElkID0gcm9vdHNbMF07XG4gICAgY29uc3Qgcm9vdE5vZGUgPSAodHgubm9kZXMgPz8gW10pLmZpbmQoKG4pID0+IG4ubm9kZUlkID09PSByb290SWQpO1xuICAgIGlmICghcm9vdE5vZGUpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgcm9vdCBub2RlICcke3Jvb3RJZH0nIG5vdCBmb3VuZCBpbiBub2RlcyBsaXN0YCk7XG4gICAgfVxuICAgIGNvbnN0IHZlcnNpb25lZE5vZGUgPSByb290Tm9kZS52ZXJzaW9uZWROb2RlO1xuICAgIGlmICghdmVyc2lvbmVkTm9kZSB8fCB2ZXJzaW9uZWROb2RlLm9uZW9mS2luZCAhPT0gJ3YxJykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGB1bnN1cHBvcnRlZCByb290IG5vZGUgdmVyc2lvbjogJHt2ZXJzaW9uZWROb2RlPy5vbmVvZktpbmQgPz8gJ3VuZGVmaW5lZCd9YCk7XG4gICAgfVxuICAgIGNvbnN0IG5vZGVUeXBlID0gdmVyc2lvbmVkTm9kZS52MS5ub2RlVHlwZTtcbiAgICBpZiAobm9kZVR5cGUub25lb2ZLaW5kID09PSAnY3JlYXRlJykge1xuICAgICAgY29uc3QgY3JlYXRlTm9kZSA9IG5vZGVUeXBlLmNyZWF0ZTtcbiAgICAgIGlmICghY3JlYXRlTm9kZS50ZW1wbGF0ZUlkKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignY3JlYXRlIG5vZGUgbWlzc2luZyB0ZW1wbGF0ZUlkJyk7XG4gICAgICB9XG4gICAgICByZXR1cm4ge1xuICAgICAgICBraW5kOiAnQ3JlYXRlQ29tbWFuZCcsXG4gICAgICAgIHRlbXBsYXRlSWQ6IHtcbiAgICAgICAgICBwYWNrYWdlSWQ6IGNyZWF0ZU5vZGUudGVtcGxhdGVJZC5wYWNrYWdlSWQsXG4gICAgICAgICAgbW9kdWxlTmFtZTogY3JlYXRlTm9kZS50ZW1wbGF0ZUlkLm1vZHVsZU5hbWUsXG4gICAgICAgICAgZW50aXR5TmFtZTogY3JlYXRlTm9kZS50ZW1wbGF0ZUlkLmVudGl0eU5hbWUsXG4gICAgICAgIH0sXG4gICAgICAgIGFyZ3VtZW50OiB0aGlzLmRhbWxWYWx1ZVRvSnNvbihjcmVhdGVOb2RlLmFyZ3VtZW50KSxcbiAgICAgIH07XG4gICAgfVxuICAgIGlmIChub2RlVHlwZS5vbmVvZktpbmQgPT09ICdleGVyY2lzZScpIHtcbiAgICAgIGNvbnN0IGV4ZXJjaXNlTm9kZSA9IG5vZGVUeXBlLmV4ZXJjaXNlO1xuICAgICAgaWYgKCFleGVyY2lzZU5vZGUudGVtcGxhdGVJZCkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ2V4ZXJjaXNlIG5vZGUgbWlzc2luZyB0ZW1wbGF0ZUlkJyk7XG4gICAgICB9XG4gICAgICByZXR1cm4ge1xuICAgICAgICBraW5kOiAnRXhlcmNpc2VDb21tYW5kJyxcbiAgICAgICAgdGVtcGxhdGVJZDoge1xuICAgICAgICAgIHBhY2thZ2VJZDogZXhlcmNpc2VOb2RlLnRlbXBsYXRlSWQucGFja2FnZUlkLFxuICAgICAgICAgIG1vZHVsZU5hbWU6IGV4ZXJjaXNlTm9kZS50ZW1wbGF0ZUlkLm1vZHVsZU5hbWUsXG4gICAgICAgICAgZW50aXR5TmFtZTogZXhlcmNpc2VOb2RlLnRlbXBsYXRlSWQuZW50aXR5TmFtZSxcbiAgICAgICAgfSxcbiAgICAgICAgYXJndW1lbnQ6IHRoaXMuZGFtbFZhbHVlVG9Kc29uKGV4ZXJjaXNlTm9kZS5jaG9zZW5WYWx1ZSksXG4gICAgICAgIGNob2ljZTogZXhlcmNpc2VOb2RlLmNob2ljZUlkLFxuICAgICAgICBjb250cmFjdElkOiBleGVyY2lzZU5vZGUuY29udHJhY3RJZCxcbiAgICAgICAgYWN0aW5nUGFydGllczogWy4uLihleGVyY2lzZU5vZGUuYWN0aW5nUGFydGllcyA/PyBbXSldLFxuICAgICAgfTtcbiAgICB9XG4gICAgdGhyb3cgbmV3IEVycm9yKGB1bnN1cHBvcnRlZCByb290IG5vZGUgdHlwZTogJHtub2RlVHlwZS5vbmVvZktpbmQgPz8gJ3VuZGVmaW5lZCd9YCk7XG4gIH1cblxuICBzYW1lRWxlbWVudHMoYTogcmVhZG9ubHkgc3RyaW5nW10sIGI6IHJlYWRvbmx5IHN0cmluZ1tdKTogYm9vbGVhbiB7XG4gICAgaWYgKGEubGVuZ3RoICE9PSBiLmxlbmd0aCkgcmV0dXJuIGZhbHNlO1xuICAgIGNvbnN0IHNvcnRlZEEgPSBbLi4uYV0uc29ydCgpO1xuICAgIGNvbnN0IHNvcnRlZEIgPSBbLi4uYl0uc29ydCgpO1xuICAgIHJldHVybiBzb3J0ZWRBLmV2ZXJ5KCh4LCBpKSA9PiB4ID09PSBzb3J0ZWRCW2ldKTtcbiAgfVxuXG4gIC8qKiBTdHJpcHMgdGhlIGBjb21tYW5kLmAgcHJlZml4IGZyb20gaW5qZWN0QXMgcGF0aHMgKGUuZy4gYGNvbW1hbmQuRXhlcmNpc2VDb21tYW5kLmNvbnRyYWN0SWRgIOKGkiBgRXhlcmNpc2VDb21tYW5kLmNvbnRyYWN0SWRgKS4gKi9cbiAgbm9ybWFsaXplSW5qZWN0QXMoc3BlY3M6IHJlYWRvbmx5IHsgaW5qZWN0QXM/OiBzdHJpbmcgfVtdIHwgdW5kZWZpbmVkKTogU2V0PHN0cmluZz4ge1xuICAgIGNvbnN0IG91dCA9IG5ldyBTZXQ8c3RyaW5nPigpO1xuICAgIGlmICghc3BlY3MpIHJldHVybiBvdXQ7XG4gICAgZm9yIChjb25zdCBzcGVjIG9mIHNwZWNzKSB7XG4gICAgICBpZiAoIXNwZWMgfHwgdHlwZW9mIHNwZWMuaW5qZWN0QXMgIT09ICdzdHJpbmcnKSBjb250aW51ZTtcbiAgICAgIGNvbnN0IHN0cmlwcGVkID0gc3BlYy5pbmplY3RBcy5zdGFydHNXaXRoKCdjb21tYW5kLicpID8gc3BlYy5pbmplY3RBcy5zbGljZSgnY29tbWFuZC4nLmxlbmd0aCkgOiBzcGVjLmluamVjdEFzO1xuICAgICAgaWYgKHN0cmlwcGVkKSBvdXQuYWRkKHN0cmlwcGVkKTtcbiAgICB9XG4gICAgcmV0dXJuIG91dDtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZWN1cnNpdmVseSBhc3NlcnRzIHRoYXQgYGFjdHVhbGAgbWF0Y2hlcyBgZXhwZWN0ZWRgLiBQYXRocyBpbiBgaW5qZWN0QXNQYXRoc2AgYXJlIHNraXBwZWQuXG4gICAqIE51bWVyaWMgc3RyaW5ncyBhcmUgY29tcGFyZWQgdmlhIEJpZ051bWJlciB0byBoYW5kbGUgREFNTCBmb3JtYXR0aW5nIGRpZmZlcmVuY2VzIChlLmcuIFwiMTAwXCIgdnMgXCIxMDAuMDAwMDAwMDAwMFwiKS5cbiAgICovXG4gIGFzc2VydERlZXBDYW50b25NYXRjaChleHBlY3RlZDogdW5rbm93biwgYWN0dWFsOiB1bmtub3duLCBpbmplY3RBc1BhdGhzOiBTZXQ8c3RyaW5nPiwgY3VycmVudFBhdGggPSAnJyk6IHZvaWQge1xuICAgIGlmIChpbmplY3RBc1BhdGhzLmhhcyhjdXJyZW50UGF0aCkpIHJldHVybjtcblxuICAgIC8vIE9ubHkgdW5kZWZpbmVkIG1lYW5zIFwidW5zcGVjaWZpZWQg4oCUIHNraXAgY29tcGFyaXNvblwiLiBFbXB0eSB7fSBvciBbXSBhcmUgdmFsaWRcbiAgICAvLyBEYW1sIHZhbHVlcyBhbmQgbXVzdCBiZSB2ZXJpZmllZCBhZ2FpbnN0IGFjdHVhbCB0byBwcmV2ZW50IGFjY2lkZW50YWwgdW5kZXItdmVyaWZpY2F0aW9uLlxuICAgIGlmIChleHBlY3RlZCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKGV4cGVjdGVkID09PSBudWxsIHx8IGFjdHVhbCA9PT0gbnVsbCkge1xuICAgICAgaWYgKGV4cGVjdGVkICE9PSBhY3R1YWwpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgIGBDYW50b24gY29tbWFuZCBtaXNtYXRjaCBhdCAnJHtjdXJyZW50UGF0aCB8fCAnPHJvb3Q+J30nOiBleHBlY3RlZCAke3RoaXMuc3RyaW5naWZ5Rm9yRXJyb3IoXG4gICAgICAgICAgICBleHBlY3RlZFxuICAgICAgICAgICl9LCBnb3QgJHt0aGlzLnN0cmluZ2lmeUZvckVycm9yKGFjdHVhbCl9YFxuICAgICAgICApO1xuICAgICAgfVxuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAodHlwZW9mIGV4cGVjdGVkID09PSAnc3RyaW5nJyAmJiB0eXBlb2YgYWN0dWFsID09PSAnc3RyaW5nJykge1xuICAgICAgaWYgKHRoaXMuYXJlTnVtZXJpY1N0cmluZ3MoZXhwZWN0ZWQsIGFjdHVhbCkpIHtcbiAgICAgICAgaWYgKCFuZXcgQmlnTnVtYmVyKGV4cGVjdGVkKS5pc0VxdWFsVG8obmV3IEJpZ051bWJlcihhY3R1YWwpKSkge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICAgIGBDYW50b24gY29tbWFuZCBudW1lcmljIG1pc21hdGNoIGF0ICcke2N1cnJlbnRQYXRoIHx8ICc8cm9vdD4nfSc6IGV4cGVjdGVkICR7ZXhwZWN0ZWR9LCBnb3QgJHthY3R1YWx9YFxuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgLy8gSVNPIDg2MDEgaW5wdXQgdnMgbWljcm9zZWNvbmQtc2luY2UtZXBvY2ggZW5jb2RpbmcgaW4gdGhlIHByZXBhcmVkLXRyYW5zYWN0aW9uIHByb3RvYnVmLlxuICAgICAgaWYgKHRoaXMuaXNJc29UaW1lc3RhbXAoZXhwZWN0ZWQpICYmIHRoaXMuaXNJbnRlZ2VyU3RyaW5nKGFjdHVhbCkpIHtcbiAgICAgICAgY29uc3QgZXhwZWN0ZWRNaWNyb3NlY29uZHMgPSBuZXcgQmlnTnVtYmVyKG5ldyBEYXRlKGV4cGVjdGVkKS5nZXRUaW1lKCkpLm11bHRpcGxpZWRCeSgxMDAwKTtcbiAgICAgICAgaWYgKCFleHBlY3RlZE1pY3Jvc2Vjb25kcy5pc0VxdWFsVG8obmV3IEJpZ051bWJlcihhY3R1YWwpKSkge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICAgIGBDYW50b24gY29tbWFuZCB0aW1lc3RhbXAgbWlzbWF0Y2ggYXQgJyR7Y3VycmVudFBhdGggfHwgJzxyb290Pid9JzogYCArXG4gICAgICAgICAgICAgIGBleHBlY3RlZCAnJHtleHBlY3RlZH0nICgke2V4cGVjdGVkTWljcm9zZWNvbmRzLnRvRml4ZWQoMCl9IMK1cyksIGdvdCAnJHthY3R1YWx9J2BcbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGlmIChleHBlY3RlZCAhPT0gYWN0dWFsKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICBgQ2FudG9uIGNvbW1hbmQgbWlzbWF0Y2ggYXQgJyR7Y3VycmVudFBhdGggfHwgJzxyb290Pid9JzogZXhwZWN0ZWQgJyR7ZXhwZWN0ZWR9JywgZ290ICcke2FjdHVhbH0nYFxuICAgICAgICApO1xuICAgICAgfVxuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAodHlwZW9mIGV4cGVjdGVkID09PSAnbnVtYmVyJyAmJiB0eXBlb2YgYWN0dWFsID09PSAnbnVtYmVyJykge1xuICAgICAgaWYgKGV4cGVjdGVkICE9PSBhY3R1YWwpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBDYW50b24gY29tbWFuZCBtaXNtYXRjaCBhdCAnJHtjdXJyZW50UGF0aCB8fCAnPHJvb3Q+J30nOiBleHBlY3RlZCAke2V4cGVjdGVkfSwgZ290ICR7YWN0dWFsfWApO1xuICAgICAgfVxuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAodHlwZW9mIGV4cGVjdGVkID09PSAnYm9vbGVhbicgJiYgdHlwZW9mIGFjdHVhbCA9PT0gJ2Jvb2xlYW4nKSB7XG4gICAgICBpZiAoZXhwZWN0ZWQgIT09IGFjdHVhbCkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYENhbnRvbiBjb21tYW5kIG1pc21hdGNoIGF0ICcke2N1cnJlbnRQYXRoIHx8ICc8cm9vdD4nfSc6IGV4cGVjdGVkICR7ZXhwZWN0ZWR9LCBnb3QgJHthY3R1YWx9YCk7XG4gICAgICB9XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmIChBcnJheS5pc0FycmF5KGV4cGVjdGVkKSAmJiBBcnJheS5pc0FycmF5KGFjdHVhbCkpIHtcbiAgICAgIGlmIChleHBlY3RlZC5sZW5ndGggIT09IGFjdHVhbC5sZW5ndGgpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgIGBDYW50b24gY29tbWFuZCBsaXN0LWxlbmd0aCBtaXNtYXRjaCBhdCAnJHtjdXJyZW50UGF0aCB8fCAnPHJvb3Q+J30nOiBleHBlY3RlZCAke2V4cGVjdGVkLmxlbmd0aH0sIGdvdCAke1xuICAgICAgICAgICAgYWN0dWFsLmxlbmd0aFxuICAgICAgICAgIH1gXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGV4cGVjdGVkLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGNvbnN0IGNoaWxkUGF0aCA9IGN1cnJlbnRQYXRoID8gYCR7Y3VycmVudFBhdGh9LiR7aX1gIDogU3RyaW5nKGkpO1xuICAgICAgICB0aGlzLmFzc2VydERlZXBDYW50b25NYXRjaChleHBlY3RlZFtpXSwgYWN0dWFsW2ldLCBpbmplY3RBc1BhdGhzLCBjaGlsZFBhdGgpO1xuICAgICAgfVxuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAodGhpcy5pc1BsYWluT2JqZWN0KGV4cGVjdGVkKSAmJiB0aGlzLmlzUGxhaW5PYmplY3QoYWN0dWFsKSkge1xuICAgICAgY29uc3QgZXhwZWN0ZWRLZXlzID0gbmV3IFNldChPYmplY3Qua2V5cyhleHBlY3RlZCkpO1xuICAgICAgY29uc3QgYWN0dWFsS2V5cyA9IG5ldyBTZXQoT2JqZWN0LmtleXMoYWN0dWFsKSk7XG4gICAgICBmb3IgKGNvbnN0IGtleSBvZiBleHBlY3RlZEtleXMpIHtcbiAgICAgICAgY29uc3QgY2hpbGRQYXRoID0gY3VycmVudFBhdGggPyBgJHtjdXJyZW50UGF0aH0uJHtrZXl9YCA6IGtleTtcbiAgICAgICAgaWYgKGV4cGVjdGVkW2tleV0gPT09IHVuZGVmaW5lZCB8fCBpbmplY3RBc1BhdGhzLmhhcyhjaGlsZFBhdGgpKSBjb250aW51ZTtcbiAgICAgICAgaWYgKCFhY3R1YWxLZXlzLmhhcyhrZXkpKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBDYW50b24gY29tbWFuZCBtaXNzaW5nIGZpZWxkIGF0ICcke2NoaWxkUGF0aH0nIG9uIHByZXBhcmVkIHRyYW5zYWN0aW9uYCk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5hc3NlcnREZWVwQ2FudG9uTWF0Y2goZXhwZWN0ZWRba2V5XSwgKGFjdHVhbCBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPilba2V5XSwgaW5qZWN0QXNQYXRocywgY2hpbGRQYXRoKTtcbiAgICAgIH1cbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgYENhbnRvbiBjb21tYW5kIHR5cGUgbWlzbWF0Y2ggYXQgJyR7Y3VycmVudFBhdGggfHwgJzxyb290Pid9JzogZXhwZWN0ZWQgJHt0aGlzLmRlc2NyaWJlVHlwZShcbiAgICAgICAgZXhwZWN0ZWRcbiAgICAgICl9LCBnb3QgJHt0aGlzLmRlc2NyaWJlVHlwZShhY3R1YWwpfWBcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIENvbXB1dGVzIHRoZSB0b3BvbG9neSBoYXNoIGZyb20gdGhlIEFQSSByZXNwb25zZSBvZiB0aGUgJ2NyZWF0ZSBwYXJ0eScgZW5kcG9pbnQuXG4gICAqXG4gICAqIEBwYXJhbSB0b3BvbG9neVRyYW5zYWN0aW9ucyAtIExpc3Qgb2YgYmFzZTY0LWVuY29kZWQgdG9wb2xvZ3kgdHJhbnNhY3Rpb25zIGZyb20gdGhlIENhbnRvbiBBUEkuXG4gICAqIEByZXR1cm5zIFRoZSBmaW5hbCBiYXNlNjQtZW5jb2RlZCB0b3BvbG9neSB0cmFuc2FjdGlvbiBoYXNoLlxuICAgKi9cbiAgY29tcHV0ZUhhc2hGcm9tQ3JlYXRlUGFydHlSZXNwb25zZSh0b3BvbG9neVRyYW5zYWN0aW9uczogc3RyaW5nW10pOiBzdHJpbmcge1xuICAgIGNvbnN0IHR4QnVmZmVycyA9IHRvcG9sb2d5VHJhbnNhY3Rpb25zLm1hcCgodHgpID0+IEJ1ZmZlci5mcm9tKHR4LCAnYmFzZTY0JykpO1xuICAgIHJldHVybiB0aGlzLmNvbXB1dGVIYXNoRnJvbVRvcG9sb2d5VHJhbnNhY3Rpb24odHhCdWZmZXJzKTtcbiAgfVxuXG4gIGFzeW5jIGNvbXB1dGVIYXNoRnJvbVByZXBhcmVTdWJtaXNzaW9uUmVzcG9uc2UocHJlcGFyZWRUcmFuc2FjdGlvbkJhc2U2NDogc3RyaW5nKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICBjb25zdCBwcmVwYXJlZFRyYW5zYWN0aW9uID0gdGhpcy5kZWNvZGVQcmVwYXJlZFRyYW5zYWN0aW9uKHByZXBhcmVkVHJhbnNhY3Rpb25CYXNlNjQpO1xuICAgIGNvbnN0IGhhc2ggPSBhd2FpdCBjb21wdXRlUHJlcGFyZWRUcmFuc2FjdGlvbihwcmVwYXJlZFRyYW5zYWN0aW9uKTtcbiAgICByZXR1cm4gQnVmZmVyLmZyb20oaGFzaCkudG9TdHJpbmcoJ2Jhc2U2NCcpO1xuICB9XG5cbiAgLyoqXG4gICAqIENvbXB1dGVzIHRoZSBmaW5hbCB0b3BvbG9neSB0cmFuc2FjdGlvbiBoYXNoIGZvciBhIGxpc3Qgb2YgcHJlcGFyZWQgQ2FudG9uIHRyYW5zYWN0aW9ucy5cbiAgICpcbiAgICogRWFjaCB0cmFuc2FjdGlvbiBpcyBmaXJzdCBoYXNoZWQgd2l0aCBwdXJwb3NlIGAxMWAsIHRoZW4gYWxsIGhhc2hlcyBhcmUgY29tYmluZWQgYW5kXG4gICAqIGhhc2hlZCBhZ2FpbiB3aXRoIHB1cnBvc2UgYDU1YCwgZm9sbG93aW5nIHRoZSBDYW50b24gdG9wb2xvZ3kgaGFzaCBydWxlcy5cbiAgICpcbiAgICogVGhlIHJlc3VsdGluZyBoYXNoIGlzIGVuY29kZWQgYXMgYSBiYXNlNjQgc3RyaW5nLlxuICAgKlxuICAgKiBAcGFyYW0ge0J1ZmZlcltdfSBwcmVwYXJlZFRyYW5zYWN0aW9ucyAtIEFuIGFycmF5IG9mIENhbnRvbiB0cmFuc2FjdGlvbiBidWZmZXJzLlxuICAgKiBAcmV0dXJucyB7c3RyaW5nfSBUaGUgZmluYWwgdG9wb2xvZ3kgaGFzaCwgYmFzZTY0LWVuY29kZWQuXG4gICAqL1xuICBwcml2YXRlIGNvbXB1dGVIYXNoRnJvbVRvcG9sb2d5VHJhbnNhY3Rpb24ocHJlcGFyZWRUcmFuc2FjdGlvbnM6IEJ1ZmZlcltdKTogc3RyaW5nIHtcbiAgICBjb25zdCByYXdIYXNoZXMgPSBwcmVwYXJlZFRyYW5zYWN0aW9ucy5tYXAoKHR4KSA9PiB0aGlzLmNvbXB1dGVTaGEyNTZDYW50b25IYXNoKDExLCB0eCkpO1xuICAgIGNvbnN0IGNvbWJpbmVkSGFzaGVzID0gdGhpcy5jb21wdXRlTXVsdGlIYXNoRm9yVG9wb2xvZ3kocmF3SGFzaGVzKTtcbiAgICBjb25zdCBjb21wdXRlZEhhc2ggPSB0aGlzLmNvbXB1dGVTaGEyNTZDYW50b25IYXNoKDU1LCBjb21iaW5lZEhhc2hlcyk7XG4gICAgcmV0dXJuIEJ1ZmZlci5mcm9tKGNvbXB1dGVkSGFzaCwgJ2hleCcpLnRvU3RyaW5nKCdiYXNlNjQnKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDb252ZXJ0cyBhIGJhc2U2NC1lbmNvZGVkIEVkMjU1MTkgcHVibGljIGtleSBzdHJpbmcgaW50byBhIHN0cnVjdHVyZWQgc2lnbmluZyBwdWJsaWMga2V5IG9iamVjdC5cbiAgICogQHBhcmFtIHtTdHJpbmd9IHB1YmxpY0tleSBUaGUgYmFzZTY0LWVuY29kZWQgRWQyNTUxOSBwdWJsaWMga2V5XG4gICAqIEByZXR1cm5zIHtPYmplY3R9IFRoZSBzdHJ1Y3R1cmVkIHNpZ25pbmcga2V5IG9iamVjdCBmb3JtYXR0ZWQgZm9yIHVzZSB3aXRoIGNyeXB0b2dyYXBoaWMgb3BlcmF0aW9uc1xuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgcHJpdmF0ZSBzaWduaW5nUHVibGljS2V5RnJvbUVkMjU1MTkocHVibGljS2V5OiBzdHJpbmcpOiB7XG4gICAgZm9ybWF0OiBudW1iZXI7XG4gICAgcHVibGljS2V5OiBCdWZmZXI7XG4gICAgc2NoZW1lOiBudW1iZXI7XG4gICAga2V5U3BlYzogbnVtYmVyO1xuICAgIHVzYWdlOiBbXTtcbiAgfSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGZvcm1hdDogQ3J5cHRvS2V5Rm9ybWF0LlJBVyxcbiAgICAgIHB1YmxpY0tleTogQnVmZmVyLmZyb20ocHVibGljS2V5LCAnYmFzZTY0JyksXG4gICAgICBzY2hlbWU6IFNpZ25pbmdBbGdvcml0aG1TcGVjLkVEMjU1MTksXG4gICAgICBrZXlTcGVjOiBTaWduaW5nS2V5U3BlYy5FQ19DVVJWRTI1NTE5LFxuICAgICAgdXNhZ2U6IFtdLFxuICAgIH07XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlcyBhIGJ1ZmZlciB3aXRoIGEgNC1ieXRlIGJpZy1lbmRpYW4gaW50ZWdlciBwcmVmaXggZm9sbG93ZWQgYnkgdGhlIHByb3ZpZGVkIGJ5dGUgYnVmZmVyXG4gICAqIEBwYXJhbSB7TnVtYmVyfSB2YWx1ZSBUaGUgaW50ZWdlciB0byBwcmVmaXgsIHdyaXR0ZW4gYXMgNCBieXRlcyBpbiBiaWctZW5kaWFuIG9yZGVyXG4gICAqIEBwYXJhbSB7QnVmZmVyfSBieXRlcyBUaGUgYnVmZmVyIHRvIGFwcGVuZCBhZnRlciB0aGUgaW50ZWdlciBwcmVmaXhcbiAgICogQHJldHVybnMge0J1ZmZlcn0gVGhlIHJlc3VsdGluZyBidWZmZXIgd2l0aCB0aGUgcHJlZml4ZWQgaW50ZWdlclxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgcHJpdmF0ZSBwcmVmaXhlZEludCh2YWx1ZTogbnVtYmVyLCBieXRlczogQnVmZmVyKTogQnVmZmVyIHtcbiAgICBjb25zdCBidWZmZXIgPSBCdWZmZXIuYWxsb2MoNCArIGJ5dGVzLmxlbmd0aCk7XG4gICAgYnVmZmVyLndyaXRlVUludDMyQkUodmFsdWUsIDApO1xuICAgIEJ1ZmZlci5mcm9tKGJ5dGVzKS5jb3B5KGJ1ZmZlciwgNCk7XG4gICAgcmV0dXJuIGJ1ZmZlcjtcbiAgfVxuXG4gIC8qKlxuICAgKiBDb21wdXRlcyBhbiBTSEEtMjU2IENhbnRvbi1zdHlsZSBoYXNoIGJ5IHByZWZpeGluZyB0aGUgaW5wdXQgd2l0aCBhIHB1cnBvc2UgaWRlbnRpZmllcixcbiAgICogdGhlbiBoYXNoaW5nIHRoZSByZXN1bHRpbmcgYnVmZmVyIGFuZCBwcmVwZW5kaW5nIGEgbXVsdGktcHJlZml4XG4gICAqXG4gICAqIEBwYXJhbSB7TnVtYmVyfSBwdXJwb3NlIEEgbnVtZXJpYyBpZGVudGlmaWVyIHRvIHByZWZpeCB0aGUgaGFzaCBpbnB1dCB3aXRoXG4gICAqIEBwYXJhbSB7QnVmZmVyfSBieXRlcyBUaGUgYnVmZmVyIHRvIGJlIGhhc2hlZFxuICAgKiBAcmV0dXJucyB7U3RyaW5nfSBBIGhleGFkZWNpbWFsIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiB0aGUgcmVzdWx0aW5nIGhhc2ggd2l0aCBtdWx0aS1wcmVmaXhcbiAgICogQHByaXZhdGVcbiAgICovXG4gIHByaXZhdGUgY29tcHV0ZVNoYTI1NkNhbnRvbkhhc2gocHVycG9zZTogbnVtYmVyLCBieXRlczogQnVmZmVyKTogc3RyaW5nIHtcbiAgICBjb25zdCBoYXNoSW5wdXQgPSB0aGlzLnByZWZpeGVkSW50KHB1cnBvc2UsIGJ5dGVzKTtcbiAgICBjb25zdCBoYXNoID0gY3J5cHRvLmNyZWF0ZUhhc2goJ3NoYTI1NicpLnVwZGF0ZShoYXNoSW5wdXQpLmRpZ2VzdCgpO1xuICAgIGNvbnN0IG11bHRpcHJlZml4ID0gQnVmZmVyLmZyb20oWzB4MTIsIDB4MjBdKTtcbiAgICByZXR1cm4gQnVmZmVyLmNvbmNhdChbbXVsdGlwcmVmaXgsIGhhc2hdKS50b1N0cmluZygnaGV4Jyk7XG4gIH1cblxuICAvKipcbiAgICogRGVjb2RlcyBhIEJhc2U2NC1lbmNvZGVkIHN0cmluZyBpbnRvIGEgVWludDhBcnJheVxuICAgKiBAcGFyYW0ge1N0cmluZ30gYjY0IFRoZSBCYXNlNjQtZW5jb2RlZCBzdHJpbmdcbiAgICogQHJldHVybnMge1VpbnQ4QXJyYXl9IFRoZSBkZWNvZGVkIGJ5dGUgYXJyYXlcbiAgICogQHByaXZhdGVcbiAgICovXG4gIHByaXZhdGUgZnJvbUJhc2U2NChiNjQ6IHN0cmluZyk6IFVpbnQ4QXJyYXkge1xuICAgIHJldHVybiBuZXcgVWludDhBcnJheShCdWZmZXIuZnJvbShiNjQsICdiYXNlNjQnKSk7XG4gIH1cblxuICAvKipcbiAgICogRGVjb2RlcyBhIEJhc2U2NC1lbmNvZGVkIHByZXBhcmVkIHRyYW5zYWN0aW9uIGludG8gYSBzdHJ1Y3R1cmVkIG9iamVjdFxuICAgKiBAcGFyYW0ge1N0cmluZ30gYmFzZTY0IFRoZSBCYXNlNjQtZW5jb2RlZCB0cmFuc2FjdGlvbiBkYXRhXG4gICAqIEByZXR1cm5zIHtJUHJlcGFyZWRUcmFuc2FjdGlvbn0gVGhlIGRlY29kZWQgYElQcmVwYXJlZFRyYW5zYWN0aW9uYCBvYmplY3RcbiAgICogQHByaXZhdGVcbiAgICovXG4gIHByaXZhdGUgZGVjb2RlUHJlcGFyZWRUcmFuc2FjdGlvbihiYXNlNjQ6IHN0cmluZyk6IElQcmVwYXJlZFRyYW5zYWN0aW9uIHtcbiAgICBjb25zdCBieXRlcyA9IHRoaXMuZnJvbUJhc2U2NChiYXNlNjQpO1xuICAgIHJldHVybiBQcmVwYXJlZFRyYW5zYWN0aW9uLmZyb21CaW5hcnkoYnl0ZXMpO1xuICB9XG5cbiAgLyoqXG4gICAqIENvbXB1dGVzIGEgZGV0ZXJtaW5pc3RpYyBjb21iaW5lZCBoYXNoIGZyb20gYW4gYXJyYXkgb2YgaW5kaXZpZHVhbCBDYW50b24tc3R5bGUgU0hBLTI1NiBoYXNoZXNcbiAgICpcbiAgICogRWFjaCBoYXNoIGlzIGRlY29kZWQgZnJvbSBoZXgsIHNvcnRlZCBsZXhpY29ncmFwaGljYWxseSAoYnkgaGV4KSwgYW5kIHByZWZpeGVkIHdpdGggaXRzIGxlbmd0aFxuICAgKiBUaGUgZmluYWwgYnVmZmVyIGluY2x1ZGVzIHRoZSBudW1iZXIgb2YgaGFzaGVzIGZvbGxvd2VkIGJ5IGVhY2ggKGxlbmd0aC1wcmVmaXhlZCkgaGFzaFxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ1tdfSBoYXNoZXMgLSBBbiBhcnJheSBvZiBDYW50b24tcHJlZml4ZWQgU0hBLTI1NiBoYXNoZXMgaW4gaGV4YWRlY2ltYWwgc3RyaW5nIGZvcm1hdFxuICAgKiBAcmV0dXJucyB7QnVmZmVyfSBBIGJpbmFyeSBidWZmZXIgcmVwcmVzZW50aW5nIHRoZSBjb21iaW5lZCBoYXNoIGlucHV0XG4gICAqL1xuICBwcml2YXRlIGNvbXB1dGVNdWx0aUhhc2hGb3JUb3BvbG9neShoYXNoZXM6IHN0cmluZ1tdKTogQnVmZmVyIHtcbiAgICBjb25zdCBzb3J0ZWRIYXNoZXMgPSBoYXNoZXNcbiAgICAgIC5tYXAoKGhleCkgPT4gQnVmZmVyLmZyb20oaGV4LCAnaGV4JykpXG4gICAgICAuc29ydCgoYSwgYikgPT4gYS50b1N0cmluZygnaGV4JykubG9jYWxlQ29tcGFyZShiLnRvU3RyaW5nKCdoZXgnKSkpO1xuXG4gICAgY29uc3QgbnVtSGFzaGVzQnl0ZXMgPSB0aGlzLmVuY29kZUludDMyKHNvcnRlZEhhc2hlcy5sZW5ndGgpO1xuICAgIGNvbnN0IHBhcnRzOiBCdWZmZXJbXSA9IFtudW1IYXNoZXNCeXRlc107XG5cbiAgICBmb3IgKGNvbnN0IGggb2Ygc29ydGVkSGFzaGVzKSB7XG4gICAgICBjb25zdCBsZW5ndGhCeXRlcyA9IHRoaXMuZW5jb2RlSW50MzIoaC5sZW5ndGgpO1xuICAgICAgcGFydHMucHVzaChsZW5ndGhCeXRlcywgaCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIEJ1ZmZlci5jb25jYXQocGFydHMpO1xuICB9XG5cbiAgLyoqXG4gICAqIEVuY29kZXMgYSAzMi1iaXQgc2lnbmVkIGludGVnZXIgaW50byBhIDQtYnl0ZSBiaWctZW5kaWFuIEJ1ZmZlclxuICAgKlxuICAgKiBAcGFyYW0ge251bWJlcn0gdmFsdWUgLSBUaGUgaW50ZWdlciB0byBlbmNvZGVcbiAgICogQHJldHVybnMge0J1ZmZlcn0gQSA0LWJ5dGUgYnVmZmVyIHJlcHJlc2VudGluZyB0aGUgaW50ZWdlciBpbiBiaWctZW5kaWFuIGZvcm1hdFxuICAgKi9cbiAgcHJpdmF0ZSBlbmNvZGVJbnQzMih2YWx1ZTogbnVtYmVyKTogQnVmZmVyIHtcbiAgICBjb25zdCBidWYgPSBCdWZmZXIuYWxsb2MoNCk7XG4gICAgYnVmLndyaXRlSW50MzJCRSh2YWx1ZSwgMCk7XG4gICAgcmV0dXJuIGJ1ZjtcbiAgfVxuXG4gIC8qKlxuICAgKiBDb252ZXJ0IHRvIGNhbnRvbiByYXcgdW5pdHNcbiAgICogQHBhcmFtIHtCaWdOdW1iZXJ9IHZhbHVlXG4gICAqIEByZXR1cm5zIHtTdHJpbmd9IHRoZSBjb252ZXJ0ZWQgcmF3IGNhbnRvbiB1bml0c1xuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgcHJpdmF0ZSBjb252ZXJ0QW1vdW50VG9Mb3dlc3RVbml0KHZhbHVlOiBCaWdOdW1iZXIpOiBzdHJpbmcge1xuICAgIHJldHVybiB2YWx1ZS5tdWx0aXBsaWVkQnkobmV3IEJpZ051bWJlcigxMCkucG93KDEwKSkudG9GaXhlZCgwKTtcbiAgfVxuXG4gIGlzUGxhaW5PYmplY3QodmFsdWU6IHVua25vd24pOiB2YWx1ZSBpcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiB7XG4gICAgcmV0dXJuIHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcgJiYgdmFsdWUgIT09IG51bGwgJiYgIUFycmF5LmlzQXJyYXkodmFsdWUpO1xuICB9XG5cbiAgcHJpdmF0ZSBhcmVOdW1lcmljU3RyaW5ncyhhOiBzdHJpbmcsIGI6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IG51bWVyaWNSZSA9IC9eLT9cXGQrKFxcLlxcZCspPyQvO1xuICAgIHJldHVybiBudW1lcmljUmUudGVzdChhKSAmJiBudW1lcmljUmUudGVzdChiKTtcbiAgfVxuXG4gIHByaXZhdGUgaXNJc29UaW1lc3RhbXAodmFsdWU6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIGlmICghL15cXGR7NH0tXFxkezJ9LVxcZHsyfVRcXGR7Mn06XFxkezJ9OlxcZHsyfShcXC5cXGR7MSwzfSk/WiQvLnRlc3QodmFsdWUpKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIHJldHVybiBOdW1iZXIuaXNGaW5pdGUoRGF0ZS5wYXJzZSh2YWx1ZSkpO1xuICB9XG5cbiAgcHJpdmF0ZSBpc0ludGVnZXJTdHJpbmcodmFsdWU6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAvXlxcZCskLy50ZXN0KHZhbHVlKTtcbiAgfVxuXG4gIHByaXZhdGUgZGVzY3JpYmVUeXBlKHZhbHVlOiB1bmtub3duKTogc3RyaW5nIHtcbiAgICBpZiAodmFsdWUgPT09IG51bGwpIHJldHVybiAnbnVsbCc7XG4gICAgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKSByZXR1cm4gJ2FycmF5JztcbiAgICByZXR1cm4gdHlwZW9mIHZhbHVlO1xuICB9XG5cbiAgcHJpdmF0ZSBzdHJpbmdpZnlGb3JFcnJvcih2YWx1ZTogdW5rbm93bik6IHN0cmluZyB7XG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiBKU09OLnN0cmluZ2lmeSh2YWx1ZSk7XG4gICAgfSBjYXRjaCB7XG4gICAgICByZXR1cm4gU3RyaW5nKHZhbHVlKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogR2V0IHRoZSBiaXRnbyB0b2tlbiBuYW1lIHVzaW5nIHRoZSBvbi1jaGFpbiBpbnN0cnVtZW50IGRldGFpbHNcbiAgICogQHBhcmFtIGNvbnRyYWN0QWRkcmVzcyAtIHRoZSBjb250cmFjdCBhZGRyZXNzIG9mIHRoZSBmb3JtLCBgaW5zdHJ1bWVudEFkbWluOmluc3RydW1lbnRJZGBcbiAgICogQHJldHVybnMgdG9rZW5OYW1lIGlmIGNvbnRyYWN0QWRkcmVzcyBtYXRjaGVzIHdpdGggYW55IHN1cHBvcnRlZCBjYW50b24gdG9rZW5zXG4gICAqL1xuICBwcml2YXRlIGZpbmRUb2tlbk5hbWVCeUNvbnRyYWN0QWRkcmVzcyhjb250cmFjdEFkZHJlc3M6IHN0cmluZyk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gICAgaWYgKGNvbnRyYWN0QWRkcmVzcy5pbmNsdWRlcygnQW11bGV0JykpIHtcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuICAgIGNvbnN0IGNhbnRvblRva2VuID0gY29pbnNcbiAgICAgIC5maWx0ZXIoKGNvaW4pID0+IGNvaW4gaW5zdGFuY2VvZiBDYW50b25Ub2tlbiAmJiBjb2luLmNvbnRyYWN0QWRkcmVzcyA9PT0gY29udHJhY3RBZGRyZXNzKVxuICAgICAgLm1hcCgoY29pbikgPT4gY29pbiBhcyBDYW50b25Ub2tlbik7XG4gICAgcmV0dXJuIGNhbnRvblRva2VuID8gY2FudG9uVG9rZW5bMF0ubmFtZSA6IHVuZGVmaW5lZDtcbiAgfVxufVxuXG5jb25zdCB1dGlscyA9IG5ldyBVdGlscygpO1xuXG5leHBvcnQgZGVmYXVsdCB1dGlscztcbiJdfQ==
|
|
966
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL3V0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLGdFQUFxQztBQUNyQyxvREFBNEI7QUFFNUIsbURBQTJGO0FBQzNGLGlEQUF5RDtBQUV6RCwwREFBMEU7QUFDMUUseUZBQW1GO0FBRW5GLHlDQUFtRjtBQUluRixNQUFhLEtBQUs7SUFDaEIsa0JBQWtCO0lBQ2xCLGNBQWMsQ0FBQyxPQUFlO1FBQzVCLElBQUksQ0FBQyxPQUFPLElBQUksT0FBTyxDQUFDLElBQUksRUFBRSxLQUFLLEVBQUU7WUFBRSxPQUFPLEtBQUssQ0FBQztRQUNwRCxNQUFNLENBQUMsU0FBUyxFQUFFLFdBQVcsQ0FBQyxHQUFHLE9BQU8sQ0FBQyxJQUFJLEVBQUUsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDNUQsSUFBSSxDQUFDLFdBQVc7WUFBRSxPQUFPLEtBQUssQ0FBQztRQUMvQixpRUFBaUU7UUFDakUsTUFBTSxDQUFDLGVBQWUsQ0FBQyxHQUFHLFdBQVcsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDL0QsSUFBSSxDQUFDLFNBQVMsSUFBSSxDQUFDLGVBQWU7WUFBRSxPQUFPLEtBQUssQ0FBQztRQUNqRCxPQUFPLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxlQUFlLENBQUMsQ0FBQztJQUNoRCxDQUFDO0lBRUQsa0JBQWtCO0lBQ2xCLGNBQWMsQ0FBQyxJQUFZO1FBQ3pCLDJFQUEyRTtRQUMzRSxvREFBb0Q7UUFDcEQsTUFBTSxDQUFDLE1BQU0sQ0FBQyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDakMsTUFBTSxXQUFXLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ25DLE9BQU8sQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLElBQUksV0FBVyxHQUFHLENBQUMs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QUFDLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDO0lBQ3ZELENBQUM7Q0FDRjtBQTk3QkQsc0JBODdCQztBQUVELE1BQU0sS0FBSyxHQUFHLElBQUksS0FBSyxFQUFFLENBQUM7QUFFMUIsa0JBQWUsS0FBSyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IEJpZ051bWJlciBmcm9tICdiaWdudW1iZXIuanMnO1xuaW1wb3J0IGNyeXB0byBmcm9tICdjcnlwdG8nO1xuXG5pbXBvcnQgeyBCYXNlVXRpbHMsIGlzVmFsaWRFZDI1NTE5UHVibGljS2V5LCBUcmFuc2FjdGlvblR5cGUgfSBmcm9tICdAYml0Z28tYmV0YS9zZGstY29yZSc7XG5pbXBvcnQgeyBDYW50b25Ub2tlbiwgY29pbnMgfSBmcm9tICdAYml0Z28tYmV0YS9zdGF0aWNzJztcblxuaW1wb3J0IHsgY29tcHV0ZVByZXBhcmVkVHJhbnNhY3Rpb24gfSBmcm9tICcuLi8uLi9yZXNvdXJjZXMvaGFzaC9oYXNoLmpzJztcbmltcG9ydCB7IFByZXBhcmVkVHJhbnNhY3Rpb24gfSBmcm9tICcuLi8uLi9yZXNvdXJjZXMvcHJvdG8vcHJlcGFyZWRUcmFuc2FjdGlvbi5qcyc7XG5cbmltcG9ydCB7IENyeXB0b0tleUZvcm1hdCwgU2lnbmluZ0FsZ29yaXRobVNwZWMsIFNpZ25pbmdLZXlTcGVjIH0gZnJvbSAnLi9jb25zdGFudCc7XG5pbXBvcnQgeyBDYW50b25Db21tYW5kSW5mbywgUHJlcGFyZWRUcmFuc2FjdGlvbiBhcyBJUHJlcGFyZWRUcmFuc2FjdGlvbiwgUHJlcGFyZWRUeG5QYXJzZWRJbmZvIH0gZnJvbSAnLi9pZmFjZSc7XG5pbXBvcnQgeyBSZWNvcmRGaWVsZCwgVmFsdWUgfSBmcm9tICcuL3Jlc291cmNlc0ludGVyZmFjZSc7XG5cbmV4cG9ydCBjbGFzcyBVdGlscyBpbXBsZW1lbnRzIEJhc2VVdGlscyB7XG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICBpc1ZhbGlkQWRkcmVzcyhhZGRyZXNzOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICBpZiAoIWFkZHJlc3MgfHwgYWRkcmVzcy50cmltKCkgPT09ICcnKSByZXR1cm4gZmFsc2U7XG4gICAgY29uc3QgW3BhcnR5SGludCwgZmluZ2VycHJpbnRdID0gYWRkcmVzcy50cmltKCkuc3BsaXQoJzo6Jyk7XG4gICAgaWYgKCFmaW5nZXJwcmludCkgcmV0dXJuIGZhbHNlO1xuICAgIC8vIGFsbCBtZW1vSWRzIGFyZSBjb25zaWRlcmVkIHZhbGlkIGFzIGxvbmcgYXMgc3RyaW5ncyBhcmUgcGFzc2VkXG4gICAgY29uc3QgW2ZpbmdlcnByaW50UGFydF0gPSBmaW5nZXJwcmludC50cmltKCkuc3BsaXQoJz9tZW1vSWQ9Jyk7XG4gICAgaWYgKCFwYXJ0eUhpbnQgfHwgIWZpbmdlcnByaW50UGFydCkgcmV0dXJuIGZhbHNlO1xuICAgIHJldHVybiB0aGlzLmlzVmFsaWRDYW50b25IZXgoZmluZ2VycHJpbnRQYXJ0KTtcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICBpc1ZhbGlkQmxvY2tJZChoYXNoOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICAvLyBJbiBjYW50b24sIHRoZXJlIGlzIG5vIGJsb2NrIGhhc2gsIHdlIHN0b3JlIHRoZSBoZWlnaHQgYXMgdGhlIF9pZCAoaGFzaClcbiAgICAvLyB0aGlzIHdpbGwgYmUgb2YgdGhlIGZvcm0sIDxibG9ja0hlaWdodD5fPHZlcnNpb24+XG4gICAgY29uc3QgW2hlaWdodF0gPSBoYXNoLnNwbGl0KCdfJyk7XG4gICAgY29uc3QgYmxvY2tIZWlnaHQgPSBOdW1iZXIoaGVpZ2h0KTtcbiAgICByZXR1cm4gIWlzTmFOKGJsb2NrSGVpZ2h0KSAmJiBibG9ja0hlaWdodCA+IDA7XG4gIH1cblxuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgaXNWYWxpZFByaXZhdGVLZXkoa2V5OiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ01ldGhvZCBub3QgaW1wbGVtZW50ZWQuJyk7XG4gIH1cblxuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgaXNWYWxpZFB1YmxpY0tleShrZXk6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBpc1ZhbGlkRWQyNTUxOVB1YmxpY0tleShrZXkpO1xuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIGlzVmFsaWRTaWduYXR1cmUoc2lnbmF0dXJlOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ01ldGhvZCBub3QgaW1wbGVtZW50ZWQuJyk7XG4gIH1cblxuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgaXNWYWxpZFRyYW5zYWN0aW9uSWQodHhJZDogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdNZXRob2Qgbm90IGltcGxlbWVudGVkLicpO1xuICB9XG5cbiAgLyoqXG4gICAqIE1ldGhvZCB0byB2YWxpZGF0ZSB0aGUgaW5wdXQgaXMgYSB2YWxpZCBjYW50b24gaGV4IHN0cmluZ1xuICAgKiBAcGFyYW0ge1N0cmluZ30gdmFsdWUgdGhlIGhleCBzdHJpbmcgdmFsdWVcbiAgICogQHJldHVybnMge0Jvb2xlYW59IHRydWUgaWYgdmFsaWRcbiAgICovXG4gIGlzVmFsaWRDYW50b25IZXgodmFsdWU6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IHJlZ2V4ID0gL15bYS1mQS1GMC05XXs2OH0kLztcbiAgICByZXR1cm4gcmVnZXgudGVzdCh2YWx1ZSk7XG4gIH1cblxuICAvKipcbiAgICogSGVscGVyIG1ldGhvZCB0byBjb252ZXJ0IGhleCB2YWx1ZSB0byBiYXNlNjRcbiAgICogQHBhcmFtIHtTdHJpbmd9IGhleFN0cmluZyAtIGhleCBlbmNvZGVkIHN0cmluZ1xuICAgKiBAcmV0dXJucyB7U3RyaW5nfSBiYXNlNjQgZW5jb2RlZCBzdHJpbmdcbiAgICovXG4gIGdldEJhc2U2NEZyb21IZXgoaGV4U3RyaW5nOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHJldHVybiBCdWZmZXIuZnJvbShoZXhTdHJpbmcsICdoZXgnKS50b1N0cmluZygnYmFzZTY0Jyk7XG4gIH1cblxuICAvKipcbiAgICogTWV0aG9kIHRvIGNyZWF0ZSBmaW5nZXJwcmludCAocGFydCBvZiB0aGUgY2FudG9uIHBhcnR5SWQpIGZyb20gcHVibGljIGtleVxuICAgKiBAcGFyYW0ge1N0cmluZ30gcHVibGljS2V5IHRoZSBwdWJsaWMga2V5XG4gICAqIEByZXR1cm5zIHtTdHJpbmd9XG4gICAqL1xuICBnZXRBZGRyZXNzRnJvbVB1YmxpY0tleShwdWJsaWNLZXk6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgY29uc3Qga2V5ID0gdGhpcy5zaWduaW5nUHVibGljS2V5RnJvbUVkMjU1MTkocHVibGljS2V5KTtcbiAgICBjb25zdCBoYXNoUHVycG9zZSA9IDEyO1xuICAgIHJldHVybiB0aGlzLmNvbXB1dGVTaGEyNTZDYW50b25IYXNoKGhhc2hQdXJwb3NlLCBrZXkucHVibGljS2V5KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBNZXRob2QgdG8gcGFyc2UgcmF3IGNhbnRvbiB0cmFuc2FjdGlvbiAmIGdldCByZXF1aXJlZCBkYXRhXG4gICAqIEBwYXJhbSB7U3RyaW5nfSByYXdEYXRhIGJhc2U2NCBlbmNvZGVkIHN0cmluZ1xuICAgKiBAcGFyYW0ge1RyYW5zYWN0aW9uVHlwZX0gdHhUeXBlIHRoZSB0cmFuc2FjdGlvbiB0eXBlXG4gICAqIEByZXR1cm5zIHtQcmVwYXJlZFR4blBhcnNlZEluZm99XG4gICAqL1xuICBwYXJzZVJhd0NhbnRvblRyYW5zYWN0aW9uRGF0YShyYXdEYXRhOiBzdHJpbmcsIHR4VHlwZTogVHJhbnNhY3Rpb25UeXBlKTogUHJlcGFyZWRUeG5QYXJzZWRJbmZvIHtcbiAgICBjb25zdCBkZWNvZGVkRGF0YSA9IHRoaXMuZGVjb2RlUHJlcGFyZWRUcmFuc2FjdGlvbihyYXdEYXRhKTtcbiAgICBjb25zdCBub2RlcyA9IGRlY29kZWREYXRhLnRyYW5zYWN0aW9uPy5ub2RlcyA/PyBbXTtcbiAgICBjb25zdCBnZXRGaWVsZCA9IChmaWVsZHM6IFJlY29yZEZpZWxkW10sIGxhYmVsOiBzdHJpbmcpID0+IGZpZWxkcy5maW5kKChmKSA9PiBmLmxhYmVsID09PSBsYWJlbCk/LnZhbHVlPy5zdW07XG5cbiAgICBsZXQgc2VuZGVyID0gJyc7XG4gICAgbGV0IHJlY2VpdmVyID0gJyc7XG4gICAgbGV0IGFtb3VudCA9ICcnO1xuICAgIGxldCBtZW1vSWQ6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgICBsZXQgaW5zdHJ1bWVudElkOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gICAgbGV0IGluc3RydW1lbnRBZG1pbjogc3RyaW5nIHwgdW5kZWZpbmVkO1xuXG4gICAgLyoqXG4gICAgICogUmV0dXJucyB0aGUgYXJndW1lbnQgZmllbGRzIG9mIHRoZSBmaXJzdCBjcmVhdGUgbm9kZSBtYXRjaGluZyB0aGUgZ2l2ZW4gZW50aXR5IG5hbWUuXG4gICAgICovXG4gICAgY29uc3QgZmluZENyZWF0ZU5vZGVGaWVsZHMgPSAoZW50aXR5TmFtZTogc3RyaW5nKTogUmVjb3JkRmllbGRbXSB8IHVuZGVmaW5lZCA9PiB7XG4gICAgICBmb3IgKGNvbnN0IG5vZGUgb2Ygbm9kZXMpIHtcbiAgICAgICAgY29uc3Qgdm4gPSBub2RlLnZlcnNpb25lZE5vZGU7XG4gICAgICAgIGlmICghdm4gfHwgdm4ub25lb2ZLaW5kICE9PSAndjEnKSBjb250aW51ZTtcbiAgICAgICAgY29uc3QgbnQgPSB2bi52MS5ub2RlVHlwZTtcbiAgICAgICAgaWYgKG50Lm9uZW9mS2luZCAhPT0gJ2NyZWF0ZScpIGNvbnRpbnVlO1xuICAgICAgICBpZiAobnQuY3JlYXRlLnRlbXBsYXRlSWQ/LmVudGl0eU5hbWUgIT09IGVudGl0eU5hbWUpIGNvbnRpbnVlO1xuICAgICAgICBjb25zdCBhcmdTdW0gPSBudC5jcmVhdGUuYXJndW1lbnQ/LnN1bTtcbiAgICAgICAgaWYgKCFhcmdTdW0gfHwgYXJnU3VtLm9uZW9mS2luZCAhPT0gJ3JlY29yZCcpIGNvbnRpbnVlO1xuICAgICAgICBjb25zdCBmaWVsZHMgPSBhcmdTdW0ucmVjb3JkPy5maWVsZHM7XG4gICAgICAgIGlmIChmaWVsZHMpIHJldHVybiBmaWVsZHM7XG4gICAgICB9XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH07XG5cbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIHRoZSBjaG9zZW5WYWx1ZSBmaWVsZHMgb2YgdGhlIGZpcnN0IGV4ZXJjaXNlIG5vZGUgbWF0Y2hpbmcgdGhlIGdpdmVuIGNob2ljZUlkLlxuICAgICAqL1xuICAgIGNvbnN0IGZpbmRFeGVyY2lzZU5vZGVGaWVsZHMgPSAoY2hvaWNlSWQ6IHN0cmluZyk6IFJlY29yZEZpZWxkW10gfCB1bmRlZmluZWQgPT4ge1xuICAgICAgZm9yIChjb25zdCBub2RlIG9mIG5vZGVzKSB7XG4gICAgICAgIGNvbnN0IHZuID0gbm9kZS52ZXJzaW9uZWROb2RlO1xuICAgICAgICBpZiAoIXZuIHx8IHZuLm9uZW9mS2luZCAhPT0gJ3YxJykgY29udGludWU7XG4gICAgICAgIGNvbnN0IG50ID0gdm4udjEubm9kZVR5cGU7XG4gICAgICAgIGlmIChudC5vbmVvZktpbmQgIT09ICdleGVyY2lzZScpIGNvbnRpbnVlO1xuICAgICAgICBpZiAobnQuZXhlcmNpc2UuY2hvaWNlSWQgIT09IGNob2ljZUlkKSBjb250aW51ZTtcbiAgICAgICAgY29uc3QgYXJnU3VtID0gbnQuZXhlcmNpc2UuY2hvc2VuVmFsdWU/LnN1bTtcbiAgICAgICAgaWYgKCFhcmdTdW0gfHwgYXJnU3VtLm9uZW9mS2luZCAhPT0gJ3JlY29yZCcpIGNvbnRpbnVlO1xuICAgICAgICBjb25zdCBmaWVsZHMgPSBhcmdTdW0ucmVjb3JkPy5maWVsZHM7XG4gICAgICAgIGlmIChmaWVsZHMpIHJldHVybiBmaWVsZHM7XG4gICAgICB9XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH07XG5cbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIHRoZSBmaXJzdCBhY3RpbmcgcGFydHkgb2YgdGhlIGZpcnN0IGV4ZXJjaXNlIG5vZGUgbWF0Y2hpbmcgdGhlIGdpdmVuIGNob2ljZUlkLlxuICAgICAqL1xuICAgIGNvbnN0IGZpbmRFeGVyY2lzZUFjdGluZ1BhcnR5ID0gKGNob2ljZUlkOiBzdHJpbmcpOiBzdHJpbmcgfCB1bmRlZmluZWQgPT4ge1xuICAgICAgZm9yIChjb25zdCBub2RlIG9mIG5vZGVzKSB7XG4gICAgICAgIGNvbnN0IHZuID0gbm9kZS52ZXJzaW9uZWROb2RlO1xuICAgICAgICBpZiAoIXZuIHx8IHZuLm9uZW9mS2luZCAhPT0gJ3YxJykgY29udGludWU7XG4gICAgICAgIGNvbnN0IG50ID0gdm4udjEubm9kZVR5cGU7XG4gICAgICAgIGlmIChudC5vbmVvZktpbmQgIT09ICdleGVyY2lzZScpIGNvbnRpbnVlO1xuICAgICAgICBpZiAobnQuZXhlcmNpc2UuY2hvaWNlSWQgIT09IGNob2ljZUlkKSBjb250aW51ZTtcbiAgICAgICAgcmV0dXJuIG50LmV4ZXJjaXNlLmFjdGluZ1BhcnRpZXNbMF07XG4gICAgICB9XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH07XG5cbiAgICAvKipcbiAgICAgKiBFeHRyYWN0cyBzZW5kZXIsIHJlY2VpdmVyLCBhbW91bnQsIGFuZCBpbnN0cnVtZW50IGZpZWxkcyBmcm9tIGEgdHJhbnNmZXIgcmVjb3JkLlxuICAgICAqIENhbnRvbiBjb2luIHRyYW5zZmVycyBhbmQgY2J0YyB1c2UgaW5zdHJ1bWVudElkLmFkbWluOyByZWd1bGFyIHRva2VuIHRyYW5zZmVycyB1c2UgaW5zdHJ1bWVudElkZW50aWZpZXIuc291cmNlLlxuICAgICAqL1xuICAgIGNvbnN0IGV4dHJhY3RGcm9tVHJhbnNmZXJSZWNvcmQgPSAoXG4gICAgICB0cmFuc2ZlclJlY29yZDogUmVjb3JkRmllbGRbXSxcbiAgICAgIGluc3RydW1lbnRGaWVsZE5hbWU6IHN0cmluZyxcbiAgICAgIGluc3RydW1lbnRBZG1pbkZpZWxkTmFtZTogc3RyaW5nXG4gICAgKTogdm9pZCA9PiB7XG4gICAgICBjb25zdCBzZW5kZXJEYXRhID0gZ2V0RmllbGQodHJhbnNmZXJSZWNvcmQsICdzZW5kZXInKTtcbiAgICAgIGlmIChzZW5kZXJEYXRhPy5vbmVvZktpbmQgPT09ICdwYXJ0eScpIHNlbmRlciA9IHNlbmRlckRhdGEucGFydHkgPz8gJyc7XG4gICAgICBjb25zdCByZWNlaXZlckRhdGEgPSBnZXRGaWVsZCh0cmFuc2ZlclJlY29yZCwgJ3JlY2VpdmVyJyk7XG4gICAgICBpZiAocmVjZWl2ZXJEYXRhPy5vbmVvZktpbmQgPT09ICdwYXJ0eScpIHJlY2VpdmVyID0gcmVjZWl2ZXJEYXRhLnBhcnR5ID8/ICcnO1xuICAgICAgY29uc3QgYW1vdW50RGF0YSA9IGdldEZpZWxkKHRyYW5zZmVyUmVjb3JkLCAnYW1vdW50Jyk7XG4gICAgICBpZiAoYW1vdW50RGF0YT8ub25lb2ZLaW5kID09PSAnbnVtZXJpYycpIGFtb3VudCA9IGFtb3VudERhdGEubnVtZXJpYyA/PyAnJztcbiAgICAgIGNvbnN0IGluc3RydW1lbnRGaWVsZCA9IGdldEZpZWxkKHRyYW5zZmVyUmVjb3JkLCBpbnN0cnVtZW50RmllbGROYW1lKTtcbiAgICAgIGlmIChpbnN0cnVtZW50RmllbGQ/Lm9uZW9mS2luZCA9PT0gJ3JlY29yZCcpIHtcbiAgICAgICAgY29uc3QgaW5zdHJ1bWVudEZpZWxkcyA9IGluc3RydW1lbnRGaWVsZC5yZWNvcmQ/LmZpZWxkcyA/PyBbXTtcbiAgICAgICAgY29uc3QgYWRtaW5EYXRhID0gZ2V0RmllbGQoaW5zdHJ1bWVudEZpZWxkcywgaW5zdHJ1bWVudEFkbWluRmllbGROYW1lKTtcbiAgICAgICAgaWYgKGFkbWluRGF0YT8ub25lb2ZLaW5kID09PSAncGFydHknKSBpbnN0cnVtZW50QWRtaW4gPSBhZG1pbkRhdGEucGFydHkgPz8gJyc7XG4gICAgICAgIGNvbnN0IGlkRGF0YSA9IGdldEZpZWxkKGluc3RydW1lbnRGaWVsZHMsICdpZCcpO1xuICAgICAgICBpZiAoaWREYXRhPy5vbmVvZktpbmQgPT09ICd0ZXh0JykgaW5zdHJ1bWVudElkID0gaWREYXRhLnRleHQgPz8gJyc7XG4gICAgICB9XG4gICAgfTtcblxuICAgIHN3aXRjaCAodHhUeXBlKSB7XG4gICAgICBjYXNlIFRyYW5zYWN0aW9uVHlwZS5PbmVTdGVwUHJlQXBwcm92YWw6IHtcbiAgICAgICAgLy8gQ2FudG9uIGNvaW46IFRyYW5zZmVyUHJlYXBwcm92YWxQcm9wb3NhbCBjcmVhdGUgbm9kZSDihpIgcHJvdmlkZXI9c2VuZGVyLCByZWNlaXZlclxuICAgICAgICBjb25zdCBjb2luRmllbGRzID0gZmluZENyZWF0ZU5vZGVGaWVsZHMoJ1RyYW5zZmVyUHJlYXBwcm92YWxQcm9wb3NhbCcpO1xuICAgICAgICBpZiAoY29pbkZpZWxkcykge1xuICAgICAgICAgIGNvbnN0IHByb3ZpZGVyRGF0YSA9IGdldEZpZWxkKGNvaW5GaWVsZHMsICdwcm92aWRlcicpO1xuICAgICAgICAgIGlmIChwcm92aWRlckRhdGE/Lm9uZW9mS2luZCA9PT0gJ3BhcnR5Jykgc2VuZGVyID0gcHJvdmlkZXJEYXRhLnBhcnR5ID8/ICcnO1xuICAgICAgICAgIGNvbnN0IHJlY2VpdmVyRGF0YSA9IGdldEZpZWxkKGNvaW5GaWVsZHMsICdyZWNlaXZlcicpO1xuICAgICAgICAgIGlmIChyZWNlaXZlckRhdGE/Lm9uZW9mS2luZCA9PT0gJ3BhcnR5JykgcmVjZWl2ZXIgPSByZWNlaXZlckRhdGEucGFydHkgPz8gJyc7XG4gICAgICAgICAgYW1vdW50ID0gJzAnO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIC8vIFRva2VuOiBUcmFuc2ZlclByZWFwcHJvdmFsIGNyZWF0ZSBub2RlIOKGkiBvcGVyYXRvcj1zZW5kZXIsIHJlY2VpdmVyLCBpbnN0cnVtZW50QWRtaW4sIGluc3RydW1lbnRBbGxvd2FuY2VzXG4gICAgICAgIGNvbnN0IHRva2VuRmllbGRzID0gZmluZENyZWF0ZU5vZGVGaWVsZHMoJ1RyYW5zZmVyUHJlYXBwcm92YWwnKTtcbiAgICAgICAgaWYgKHRva2VuRmllbGRzKSB7XG4gICAgICAgICAgY29uc3Qgb3BlcmF0b3JEYXRhID0gZ2V0RmllbGQodG9rZW5GaWVsZHMsICdvcGVyYXRvcicpO1xuICAgICAgICAgIGlmIChvcGVyYXRvckRhdGE/Lm9uZW9mS2luZCA9PT0gJ3BhcnR5Jykgc2VuZGVyID0gb3BlcmF0b3JEYXRhLnBhcnR5ID8/ICcnO1xuICAgICAgICAgIGNvbnN0IHJlY2VpdmVyRGF0YSA9IGdldEZpZWxkKHRva2VuRmllbGRzLCAncmVjZWl2ZXInKTtcbiAgICAgICAgICBpZiAocmVjZWl2ZXJEYXRhPy5vbmVvZktpbmQgPT09ICdwYXJ0eScpIHJlY2VpdmVyID0gcmVjZWl2ZXJEYXRhLnBhcnR5ID8/ICcnO1xuICAgICAgICAgIGFtb3VudCA9ICcwJztcbiAgICAgICAgICBjb25zdCBpbnN0cnVtZW50QWRtaW5EYXRhID0gZ2V0RmllbGQodG9rZW5GaWVsZHMsICdpbnN0cnVtZW50QWRtaW4nKTtcbiAgICAgICAgICBpZiAoaW5zdHJ1bWVudEFkbWluRGF0YT8ub25lb2ZLaW5kID09PSAncGFydHknKSBpbnN0cnVtZW50QWRtaW4gPSBpbnN0cnVtZW50QWRtaW5EYXRhLnBhcnR5ID8/ICcnO1xuICAgICAgICAgIGNvbnN0IGFsbG93YW5jZXNEYXRhID0gZ2V0RmllbGQodG9rZW5GaWVsZHMsICdpbnN0cnVtZW50QWxsb3dhbmNlcycpO1xuICAgICAgICAgIGlmIChhbGxvd2FuY2VzRGF0YT8ub25lb2ZLaW5kID09PSAnbGlzdCcpIHtcbiAgICAgICAgICAgIC8vIGZvciB0aGUgc2FtZSBpbnN0cnVtZW50IGFkbWluLCBpZiBtdWx0aXBsZSB0b2tlbnMgYXJlIHN1cHBvcnRlZCB0aGVuIHdlIGNhbiBlbmFibGUgYWxsIG9mIHRoZW0sXG4gICAgICAgICAgICAvLyBidXQgd2Ugd29uJ3QgYmUgZG9pbmcgdGhhdCBmb3Igbm93XG4gICAgICAgICAgICBjb25zdCBmaXJzdEFsbG93YW5jZSA9IGFsbG93YW5jZXNEYXRhLmxpc3Q/LmVsZW1lbnRzPy5bMF0/LnN1bTtcbiAgICAgICAgICAgIGlmIChmaXJzdEFsbG93YW5jZT8ub25lb2ZLaW5kID09PSAncmVjb3JkJykge1xuICAgICAgICAgICAgICBjb25zdCBhbGxvd2FuY2VGaWVsZHMgPSBmaXJzdEFsbG93YW5jZS5yZWNvcmQ/LmZpZWxkcyA/PyBbXTtcbiAgICAgICAgICAgICAgY29uc3QgaWREYXRhID0gZ2V0RmllbGQoYWxsb3dhbmNlRmllbGRzLCAnaWQnKTtcbiAgICAgICAgICAgICAgaWYgKGlkRGF0YT8ub25lb2ZLaW5kID09PSAndGV4dCcpIGluc3RydW1lbnRJZCA9IGlkRGF0YS50ZXh0ID8/ICcnO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBicmVhaztcbiAgICAgIH1cblxuICAgICAgY2FzZSBUcmFuc2FjdGlvblR5cGUuVHJhbnNmZXJBY2NlcHQ6IHtcbiAgICAgICAgLy8gQ2FudG9uIGNvaW46IEFtdWxldCBjcmVhdGUgbm9kZSDihpIgZHNvPXNlbmRlciwgb3duZXI9cmVjZWl2ZXIsIGFtb3VudC5pbml0aWFsQW1vdW50XG4gICAgICAgIGNvbnN0IGFtdWxldEZpZWxkcyA9IGZpbmRDcmVhdGVOb2RlRmllbGRzKCdBbXVsZXQnKTtcbiAgICAgICAgaWYgKGFtdWxldEZpZWxkcykge1xuICAgICAgICAgIGNvbnN0IGRzb0RhdGEgPSBnZXRGaWVsZChhbXVsZXRGaWVsZHMsICdkc28nKTtcbiAgICAgICAgICBpZiAoZHNvRGF0YT8ub25lb2ZLaW5kID09PSAncGFydHknKSBzZW5kZXIgPSBkc29EYXRhLnBhcnR5ID8/ICcnO1xuICAgICAgICAgIGNvbnN0IG93bmVyRGF0YSA9IGdldEZpZWxkKGFtdWxldEZpZWxkcywgJ293bmVyJyk7XG4gICAgICAgICAgaWYgKG93bmVyRGF0YT8ub25lb2ZLaW5kID09PSAncGFydHknKSByZWNlaXZlciA9IG93bmVyRGF0YS5wYXJ0eSA/PyAnJztcbiAgICAgICAgICBjb25zdCBhbW91bnRGaWVsZCA9IGdldEZpZWxkKGFtdWxldEZpZWxkcywgJ2Ftb3VudCcpO1xuICAgICAgICAgIGlmIChhbW91bnRGaWVsZD8ub25lb2ZLaW5kID09PSAncmVjb3JkJykge1xuICAgICAgICAgICAgY29uc3QgaW5pdGlhbEFtb3VudERhdGEgPSBnZXRGaWVsZChhbW91bnRGaWVsZC5yZWNvcmQ/LmZpZWxkcyA/PyBbXSwgJ2luaXRpYWxBbW91bnQnKTtcbiAgICAgICAgICAgIGlmIChpbml0aWFsQW1vdW50RGF0YT8ub25lb2ZLaW5kID09PSAnbnVtZXJpYycpIGFtb3VudCA9IGluaXRpYWxBbW91bnREYXRhLm51bWVyaWMgPz8gJyc7XG4gICAgICAgICAgfVxuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIC8vIFJlZ3VsYXIgdG9rZW4gKG5vbi1jYnRjKTogRXhlY3V0ZWRUcmFuc2ZlciBjcmVhdGUgbm9kZVxuICAgICAgICAvLyDihpIgdHJhbnNmZXIue3NlbmRlciwgcmVjZWl2ZXIsIGFtb3VudCwgaW5zdHJ1bWVudElkZW50aWZpZXIue3NvdXJjZT1hZG1pbiwgaWR9fVxuICAgICAgICBjb25zdCBleGVjdXRlZFRyYW5zZmVyRmllbGRzID0gZmluZENyZWF0ZU5vZGVGaWVsZHMoJ0V4ZWN1dGVkVHJhbnNmZXInKTtcbiAgICAgICAgaWYgKGV4ZWN1dGVkVHJhbnNmZXJGaWVsZHMpIHtcbiAgICAgICAgICBjb25zdCB0cmFuc2ZlclN1bSA9IGdldEZpZWxkKGV4ZWN1dGVkVHJhbnNmZXJGaWVsZHMsICd0cmFuc2ZlcicpO1xuICAgICAgICAgIGlmICh0cmFuc2ZlclN1bT8ub25lb2ZLaW5kID09PSAncmVjb3JkJykge1xuICAgICAgICAgICAgZXh0cmFjdEZyb21UcmFuc2ZlclJlY29yZCh0cmFuc2ZlclN1bS5yZWNvcmQ/LmZpZWxkcyA/PyBbXSwgJ2luc3RydW1lbnRJZGVudGlmaWVyJywgJ3NvdXJjZScpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICAvLyBjYnRjIHRva2VuIGZhbGxiYWNrOiBUcmFuc2ZlclJ1bGVfRGlyZWN0VHJhbnNmZXIgZXhlcmNpc2Ugbm9kZVxuICAgICAgICAvLyDihpIgdHJhbnNmZXIue3NlbmRlciwgcmVjZWl2ZXIsIGFtb3VudCwgaW5zdHJ1bWVudElkLnthZG1pbiwgaWR9fVxuICAgICAgICBjb25zdCBkaXJlY3RUcmFuc2ZlckZpZWxkcyA9IGZpbmRFeGVyY2lzZU5vZGVGaWVsZHMoJ1RyYW5zZmVyUnVsZV9EaXJlY3RUcmFuc2ZlcicpO1xuICAgICAgICBpZiAoZGlyZWN0VHJhbnNmZXJGaWVsZHMpIHtcbiAgICAgICAgICBjb25zdCB0cmFuc2ZlclN1bSA9IGdldEZpZWxkKGRpcmVjdFRyYW5zZmVyRmllbGRzLCAndHJhbnNmZXInKTtcbiAgICAgICAgICBpZiAodHJhbnNmZXJTdW0/Lm9uZW9mS2luZCA9PT0gJ3JlY29yZCcpIHtcbiAgICAgICAgICAgIGV4dHJhY3RGcm9tVHJhbnNmZXJSZWNvcmQodHJhbnNmZXJTdW0ucmVjb3JkPy5maWVsZHMgPz8gW10sICdpbnN0cnVtZW50SWQnLCAnYWRtaW4nKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgLy8gVVNEQ3gvdHdvLXN0ZXAgdG9rZW4gZmFsbGJhY2s6IFRyYW5zZmVyUnVsZV9Ud29TdGVwVHJhbnNmZXIgZXhlcmNpc2Ugbm9kZVxuICAgICAgICAvLyDihpIgdHJhbnNmZXIue3NlbmRlciwgcmVjZWl2ZXIsIGFtb3VudCwgaW5zdHJ1bWVudElkLnthZG1pbiwgaWR9fVxuICAgICAgICBpZiAoIXNlbmRlcikge1xuICAgICAgICAgIGNvbnN0IHR3b1N0ZXBUcmFuc2ZlckZpZWxkcyA9IGZpbmRFeGVyY2lzZU5vZGVGaWVsZHMoJ1RyYW5zZmVyUnVsZV9Ud29TdGVwVHJhbnNmZXInKTtcbiAgICAgICAgICBpZiAodHdvU3RlcFRyYW5zZmVyRmllbGRzKSB7XG4gICAgICAgICAgICBjb25zdCB0cmFuc2ZlclN1bSA9IGdldEZpZWxkKHR3b1N0ZXBUcmFuc2ZlckZpZWxkcywgJ3RyYW5zZmVyJyk7XG4gICAgICAgICAgICBpZiAodHJhbnNmZXJTdW0/Lm9uZW9mS2luZCA9PT0gJ3JlY29yZCcpIHtcbiAgICAgICAgICAgICAgZXh0cmFjdEZyb21UcmFuc2ZlclJlY29yZCh0cmFuc2ZlclN1bS5yZWNvcmQ/LmZpZWxkcyA/PyBbXSwgJ2luc3RydW1lbnRJZCcsICdhZG1pbicpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBicmVhaztcbiAgICAgIH1cblxuICAgICAgY2FzZSBUcmFuc2FjdGlvblR5cGUuVHJhbnNmZXJSZWplY3Q6IHtcbiAgICAgICAgLy8gQ2FudG9uIGNvaW46IEFtdWxldCBjcmVhdGUgbm9kZSDihpIgZHNvPXNlbmRlciwgb3duZXI9cmVjZWl2ZXIsIGFtb3VudC5pbml0aWFsQW1vdW50XG4gICAgICAgIGNvbnN0IGFtdWxldEZpZWxkcyA9IGZpbmRDcmVhdGVOb2RlRmllbGRzKCdBbXVsZXQnKTtcbiAgICAgICAgaWYgKGFtdWxldEZpZWxkcykge1xuICAgICAgICAgIGNvbnN0IGRzb0RhdGEgPSBnZXRGaWVsZChhbXVsZXRGaWVsZHMsICdkc28nKTtcbiAgICAgICAgICBpZiAoZHNvRGF0YT8ub25lb2ZLaW5kID09PSAncGFydHknKSBzZW5kZXIgPSBkc29EYXRhLnBhcnR5ID8/ICcnO1xuICAgICAgICAgIGNvbnN0IG93bmVyRGF0YSA9IGdldEZpZWxkKGFtdWxldEZpZWxkcywgJ293bmVyJyk7XG4gICAgICAgICAgaWYgKG93bmVyRGF0YT8ub25lb2ZLaW5kID09PSAncGFydHknKSByZWNlaXZlciA9IG93bmVyRGF0YS5wYXJ0eSA/PyAnJztcbiAgICAgICAgICBjb25zdCBhbW91bnRGaWVsZCA9IGdldEZpZWxkKGFtdWxldEZpZWxkcywgJ2Ftb3VudCcpO1xuICAgICAgICAgIGlmIChhbW91bnRGaWVsZD8ub25lb2ZLaW5kID09PSAncmVjb3JkJykge1xuICAgICAgICAgICAgY29uc3QgaW5pdGlhbEFtb3VudERhdGEgPSBnZXRGaWVsZChhbW91bnRGaWVsZC5yZWNvcmQ/LmZpZWxkcyA/PyBbXSwgJ2luaXRpYWxBbW91bnQnKTtcbiAgICAgICAgICAgIGlmIChpbml0aWFsQW1vdW50RGF0YT8ub25lb2ZLaW5kID09PSAnbnVtZXJpYycpIGFtb3VudCA9IGluaXRpYWxBbW91bnREYXRhLm51bWVyaWMgPz8gJyc7XG4gICAgICAgICAgfVxuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIC8vIFJlZ3VsYXIgdG9rZW4gKG5vbi1jYnRjKTogUmVqZWN0ZWRUcmFuc2ZlciBjcmVhdGUgbm9kZVxuICAgICAgICAvLyDihpIgdHJhbnNmZXIue3NlbmRlciwgcmVjZWl2ZXIsIGFtb3VudCwgaW5zdHJ1bWVudElkZW50aWZpZXIue3NvdXJjZT1hZG1pbiwgaWR9fVxuICAgICAgICBjb25zdCByZWplY3RlZFRyYW5zZmVyRmllbGRzID0gZmluZENyZWF0ZU5vZGVGaWVsZHMoJ1JlamVjdGVkVHJhbnNmZXInKTtcbiAgICAgICAgaWYgKHJlamVjdGVkVHJhbnNmZXJGaWVsZHMpIHtcbiAgICAgICAgICBjb25zdCB0cmFuc2ZlclN1bSA9IGdldEZpZWxkKHJlamVjdGVkVHJhbnNmZXJGaWVsZHMsICd0cmFuc2ZlcicpO1xuICAgICAgICAgIGlmICh0cmFuc2ZlclN1bT8ub25lb2ZLaW5kID09PSAncmVjb3JkJykge1xuICAgICAgICAgICAgZXh0cmFjdEZyb21UcmFuc2ZlclJlY29yZCh0cmFuc2ZlclN1bS5yZWNvcmQ/LmZpZWxkcyA/PyBbXSwgJ2luc3RydW1lbnRJZGVudGlmaWVyJywgJ3NvdXJjZScpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICAvLyBjYnRjIHRva2VuIGZhbGxiYWNrOiBIb2xkaW5nIGNyZWF0ZSBub2RlIChvd25lcj1zZW5kZXIsIGluc3RydW1lbnQsIGFtb3VudClcbiAgICAgICAgLy8gKyBUcmFuc2Zlckluc3RydWN0aW9uX1JlamVjdCBleGVyY2lzZSAoYWN0aW5nUGFydGllc1swXT1yZWNlaXZlciB3aG8gcmVqZWN0ZWQpXG4gICAgICAgIGNvbnN0IGhvbGRpbmdGaWVsZHMgPSBmaW5kQ3JlYXRlTm9kZUZpZWxkcygnSG9sZGluZycpO1xuICAgICAgICBpZiAoaG9sZGluZ0ZpZWxkcykge1xuICAgICAgICAgIGNvbnN0IG93bmVyRGF0YSA9IGdldEZpZWxkKGhvbGRpbmdGaWVsZHMsICdvd25lcicpO1xuICAgICAgICAgIGlmIChvd25lckRhdGE/Lm9uZW9mS2luZCA9PT0gJ3BhcnR5Jykgc2VuZGVyID0gb3duZXJEYXRhLnBhcnR5ID8/ICcnO1xuICAgICAgICAgIGNvbnN0IGFtb3VudERhdGEgPSBnZXRGaWVsZChob2xkaW5nRmllbGRzLCAnYW1vdW50Jyk7XG4gICAgICAgICAgaWYgKGFtb3VudERhdGE/Lm9uZW9mS2luZCA9PT0gJ251bWVyaWMnKSBhbW91bnQgPSBhbW91bnREYXRhLm51bWVyaWMgPz8gJyc7XG4gICAgICAgICAgY29uc3QgaW5zdHJ1bWVudERhdGEgPSBnZXRGaWVsZChob2xkaW5nRmllbGRzLCAnaW5zdHJ1bWVudCcpO1xuICAgICAgICAgIGlmIChpbnN0cnVtZW50RGF0YT8ub25lb2ZLaW5kID09PSAncmVjb3JkJykge1xuICAgICAgICAgICAgY29uc3QgaW5zdHJ1bWVudEZpZWxkcyA9IGluc3RydW1lbnREYXRhLnJlY29yZD8uZmllbGRzID8/IFtdO1xuICAgICAgICAgICAgY29uc3Qgc291cmNlRGF0YSA9IGdldEZpZWxkKGluc3RydW1lbnRGaWVsZHMsICdzb3VyY2UnKTtcbiAgICAgICAgICAgIGlmIChzb3VyY2VEYXRhPy5vbmVvZktpbmQgPT09ICdwYXJ0eScpIGluc3RydW1lbnRBZG1pbiA9IHNvdXJjZURhdGEucGFydHkgPz8gJyc7XG4gICAgICAgICAgICBjb25zdCBpZERhdGEgPSBnZXRGaWVsZChpbnN0cnVtZW50RmllbGRzLCAnaWQnKTtcbiAgICAgICAgICAgIGlmIChpZERhdGE/Lm9uZW9mS2luZCA9PT0gJ3RleHQnKSBpbnN0cnVtZW50SWQgPSBpZERhdGEudGV4dCA/PyAnJztcbiAgICAgICAgICB9XG4gICAgICAgICAgY29uc3QgcmVjZWl2ZXJQYXJ0eSA9IGZpbmRFeGVyY2lzZUFjdGluZ1BhcnR5KCdUcmFuc2Zlckluc3RydWN0aW9uX1JlamVjdCcpO1xuICAgICAgICAgIGlmIChyZWNlaXZlclBhcnR5KSByZWNlaXZlciA9IHJlY2VpdmVyUGFydHk7XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG5cbiAgICAgIGNhc2UgVHJhbnNhY3Rpb25UeXBlLkFsbG9jYXRpb25BbGxvY2F0ZVdpdGhkcmF3bjoge1xuICAgICAgICAvLyBIb2xkaW5nIGNyZWF0ZSBub2RlIOKGkiBvd25lcj1zZW5kZXI9cmVjZWl2ZXIgKGFsbG9jYXRpbmcgcGFydHkgZ2V0cyB0aGVpciBob2xkaW5nIGJhY2spLFxuICAgICAgICAvLyBpbnN0cnVtZW50Lntzb3VyY2U9YWRtaW4sIGlkfSwgYW1vdW50XG4gICAgICAgIGNvbnN0IGhvbGRpbmdGaWVsZHMgPSBmaW5kQ3JlYXRlTm9kZUZpZWxkcygnSG9sZGluZycpO1xuICAgICAgICBpZiAoaG9sZGluZ0ZpZWxkcykge1xuICAgICAgICAgIGNvbnN0IG93bmVyRGF0YSA9IGdldEZpZWxkKGhvbGRpbmdGaWVsZHMsICdvd25lcicpO1xuICAgICAgICAgIGlmIChvd25lckRhdGE/Lm9uZW9mS2luZCA9PT0gJ3BhcnR5Jykge1xuICAgICAgICAgICAgcmVjZWl2ZXIgPSBvd25lckRhdGEucGFydHkgPz8gJyc7XG4gICAgICAgICAgICBzZW5kZXIgPSByZWNlaXZlcjtcbiAgICAgICAgICB9XG4gICAgICAgICAgY29uc3QgYW1vdW50RGF0YSA9IGdldEZpZWxkKGhvbGRpbmdGaWVsZHMsICdhbW91bnQnKTtcbiAgICAgICAgICBpZiAoYW1vdW50RGF0YT8ub25lb2ZLaW5kID09PSAnbnVtZXJpYycpIGFtb3VudCA9IGFtb3VudERhdGEubnVtZXJpYyA/PyAnJztcbiAgICAgICAgICBjb25zdCBpbnN0cnVtZW50RGF0YSA9IGdldEZpZWxkKGhvbGRpbmdGaWVsZHMsICdpbnN0cnVtZW50Jyk7XG4gICAgICAgICAgaWYgKGluc3RydW1lbnREYXRhPy5vbmVvZktpbmQgPT09ICdyZWNvcmQnKSB7XG4gICAgICAgICAgICBjb25zdCBpbnN0cnVtZW50RmllbGRzID0gaW5zdHJ1bWVudERhdGEucmVjb3JkPy5maWVsZHMgPz8gW107XG4gICAgICAgICAgICBjb25zdCBzb3VyY2VEYXRhID0gZ2V0RmllbGQoaW5zdHJ1bWVudEZpZWxkcywgJ3NvdXJjZScpO1xuICAgICAgICAgICAgaWYgKHNvdXJjZURhdGE/Lm9uZW9mS2luZCA9PT0gJ3BhcnR5JykgaW5zdHJ1bWVudEFkbWluID0gc291cmNlRGF0YS5wYXJ0eSA/PyAnJztcbiAgICAgICAgICAgIGNvbnN0IGlkRGF0YSA9IGdldEZpZWxkKGluc3RydW1lbnRGaWVsZHMsICdpZCcpO1xuICAgICAgICAgICAgaWYgKGlkRGF0YT8ub25lb2ZLaW5kID09PSAndGV4dCcpIGluc3RydW1lbnRJZCA9IGlkRGF0YS50ZXh0ID8/ICcnO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBicmVhaztcbiAgICAgIH1cblxuICAgICAgY2FzZSBUcmFuc2FjdGlvblR5cGUuQWxsb2NhdGlvbkFsbG9jYXRlOiB7XG4gICAgICAgIC8vIER2cExlZ0FsbG9jYXRpb24gY3JlYXRlIG5vZGUg4oaSIGFsbG9jYXRpb24udHJhbnNmZXJMZWcgY29udGFpbnMgdGhlIGZ1bGwgc2V0dGxlbWVudCB0cmFuc2ZlciBkZXRhaWxzOlxuICAgICAgICAvLyBzZW5kZXIsIHJlY2VpdmVyICh0aGUgYWN0dWFsIHNldHRsZW1lbnQgY291bnRlcnBhcnR5KSwgYW1vdW50LCBhbmQgaW5zdHJ1bWVudElkXG4gICAgICAgIGNvbnN0IGR2cEZpZWxkcyA9IGZpbmRDcmVhdGVOb2RlRmllbGRzKCdEdnBMZWdBbGxvY2F0aW9uJyk7XG4gICAgICAgIGlmIChkdnBGaWVsZHMpIHtcbiAgICAgICAgICBjb25zdCBhbGxvY2F0aW9uRmllbGQgPSBnZXRGaWVsZChkdnBGaWVsZHMsICdhbGxvY2F0aW9uJyk7XG4gICAgICAgICAgaWYgKGFsbG9jYXRpb25GaWVsZD8ub25lb2ZLaW5kID09PSAncmVjb3JkJykge1xuICAgICAgICAgICAgY29uc3QgYWxsb2NhdGlvbkZpZWxkcyA9IGFsbG9jYXRpb25GaWVsZC5yZWNvcmQ/LmZpZWxkcyA/PyBbXTtcbiAgICAgICAgICAgIGNvbnN0IHRyYW5zZmVyTGVnRmllbGQgPSBnZXRGaWVsZChhbGxvY2F0aW9uRmllbGRzLCAndHJhbnNmZXJMZWcnKTtcbiAgICAgICAgICAgIGlmICh0cmFuc2ZlckxlZ0ZpZWxkPy5vbmVvZktpbmQgPT09ICdyZWNvcmQnKSB7XG4gICAgICAgICAgICAgIGNvbnN0IHRyYW5zZmVyTGVnRmllbGRzID0gdHJhbnNmZXJMZWdGaWVsZC5yZWNvcmQ/LmZpZWxkcyA/PyBbXTtcbiAgICAgICAgICAgICAgY29uc3Qgc2VuZGVyRGF0YSA9IGdldEZpZWxkKHRyYW5zZmVyTGVnRmllbGRzLCAnc2VuZGVyJyk7XG4gICAgICAgICAgICAgIGlmIChzZW5kZXJEYXRhPy5vbmVvZktpbmQgPT09ICdwYXJ0eScpIHNlbmRlciA9IHNlbmRlckRhdGEucGFydHkgPz8gJyc7XG4gICAgICAgICAgICAgIGNvbnN0IHJlY2VpdmVyRGF0YSA9IGdldEZpZWxkKHRyYW5zZmVyTGVnRmllbGRzLCAncmVjZWl2ZXInKTtcbiAgICAgICAgICAgICAgaWYgKHJlY2VpdmVyRGF0YT8ub25lb2ZLaW5kID09PSAncGFydHknKSByZWNlaXZlciA9IHJlY2VpdmVyRGF0YS5wYXJ0eSA/PyAnJztcbiAgICAgICAgICAgICAgY29uc3QgYW1vdW50RGF0YSA9IGdldEZpZWxkKHRyYW5zZmVyTGVnRmllbGRzLCAnYW1vdW50Jyk7XG4gICAgICAgICAgICAgIGlmIChhbW91bnREYXRhPy5vbmVvZktpbmQgPT09ICdudW1lcmljJykgYW1vdW50ID0gYW1vdW50RGF0YS5udW1lcmljID8/ICcnO1xuICAgICAgICAgICAgICBjb25zdCBpbnN0cnVtZW50SWRGaWVsZCA9IGdldEZpZWxkKHRyYW5zZmVyTGVnRmllbGRzLCAnaW5zdHJ1bWVudElkJyk7XG4gICAgICAgICAgICAgIGlmIChpbnN0cnVtZW50SWRGaWVsZD8ub25lb2ZLaW5kID09PSAncmVjb3JkJykge1xuICAgICAgICAgICAgICAgIGNvbnN0IGluc3RydW1lbnRJZEZpZWxkcyA9IGluc3RydW1lbnRJZEZpZWxkLnJlY29yZD8uZmllbGRzID8/IFtdO1xuICAgICAgICAgICAgICAgIGNvbnN0IGFkbWluRGF0YSA9IGdldEZpZWxkKGluc3RydW1lbnRJZEZpZWxkcywgJ2FkbWluJyk7XG4gICAgICAgICAgICAgICAgaWYgKGFkbWluRGF0YT8ub25lb2ZLaW5kID09PSAncGFydHknKSBpbnN0cnVtZW50QWRtaW4gPSBhZG1pbkRhdGEucGFydHkgPz8gJyc7XG4gICAgICAgICAgICAgICAgY29uc3QgaWREYXRhID0gZ2V0RmllbGQoaW5zdHJ1bWVudElkRmllbGRzLCAnaWQnKTtcbiAgICAgICAgICAgICAgICBpZiAoaWREYXRhPy5vbmVvZktpbmQgPT09ICd0ZXh0JykgaW5zdHJ1bWVudElkID0gaWREYXRhLnRleHQgPz8gJyc7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgLy8gRmFsbGJhY2s6IGlmIER2cExlZ0FsbG9jYXRpb24gaXMgYWJzZW50LCB1c2UgdGhlIG9wZXJhdG9yIGFzIHJlY2VpdmVyXG4gICAgICAgIGlmICghcmVjZWl2ZXIpIHtcbiAgICAgICAgICBjb25zdCBhbGxvY2F0ZUZpZWxkcyA9IGZpbmRFeGVyY2lzZU5vZGVGaWVsZHMoJ0FsbG9jYXRpb25GYWN0b3J5X0FsbG9jYXRlJyk7XG4gICAgICAgICAgaWYgKGFsbG9jYXRlRmllbGRzKSB7XG4gICAgICAgICAgICBjb25zdCBhZG1pbkRhdGEgPSBnZXRGaWVsZChhbGxvY2F0ZUZpZWxkcywgJ2V4cGVjdGVkQWRtaW4nKTtcbiAgICAgICAgICAgIGlmIChhZG1pbkRhdGE/Lm9uZW9mS2luZCA9PT0gJ3BhcnR5JykgcmVjZWl2ZXIgPSBhZG1pbkRhdGEucGFydHkgPz8gJyc7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmICghc2VuZGVyKSB7XG4gICAgICAgICAgY29uc3Qgc2VuZGVyUGFydHkgPSBmaW5kRXhlcmNpc2VBY3RpbmdQYXJ0eSgnQWxsb2NhdGlvbkZhY3RvcnlfQWxsb2NhdGUnKTtcbiAgICAgICAgICBpZiAoc2VuZGVyUGFydHkpIHNlbmRlciA9IHNlbmRlclBhcnR5O1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuXG4gICAgICBjYXNlIFRyYW5zYWN0aW9uVHlwZS5BbGxvY2F0aW9uUmVqZWN0OiB7XG4gICAgICAgIC8vIFJlamVjdGVkRHZwIGNyZWF0ZSBub2RlIOKGkiBkdnAue3NlbGxlcj1zZW5kZXIsIGJ1eWVyPXJlY2VpdmVyLCB0ZXJtcy5kZWxpdmVyaWVzWzBdLnthbW91bnQsIGluc3RydW1lbnQue2FkbWluLCBpZH19fVxuICAgICAgICBjb25zdCByZWplY3RlZER2cEZpZWxkcyA9IGZpbmRDcmVhdGVOb2RlRmllbGRzKCdSZWplY3RlZER2cCcpO1xuICAgICAgICBpZiAocmVqZWN0ZWREdnBGaWVsZHMpIHtcbiAgICAgICAgICBjb25zdCBkdnBGaWVsZCA9IGdldEZpZWxkKHJlamVjdGVkRHZwRmllbGRzLCAnZHZwJyk7XG4gICAgICAgICAgaWYgKGR2cEZpZWxkPy5vbmVvZktpbmQgPT09ICdyZWNvcmQnKSB7XG4gICAgICAgICAgICBjb25zdCBkdnBGaWVsZHMgPSBkdnBGaWVsZC5yZWNvcmQ/LmZpZWxkcyA/PyBbXTtcbiAgICAgICAgICAgIGNvbnN0IHNlbGxlckRhdGEgPSBnZXRGaWVsZChkdnBGaWVsZHMsICdzZWxsZXInKTtcbiAgICAgICAgICAgIGlmIChzZWxsZXJEYXRhPy5vbmVvZktpbmQgPT09ICdwYXJ0eScpIHNlbmRlciA9IHNlbGxlckRhdGEucGFydHkgPz8gJyc7XG4gICAgICAgICAgICBjb25zdCBidXllckRhdGEgPSBnZXRGaWVsZChkdnBGaWVsZHMsICdidXllcicpO1xuICAgICAgICAgICAgaWYgKGJ1eWVyRGF0YT8ub25lb2ZLaW5kID09PSAncGFydHknKSByZWNlaXZlciA9IGJ1eWVyRGF0YS5wYXJ0eSA/PyAnJztcbiAgICAgICAgICAgIGNvbnN0IHRlcm1zRmllbGQgPSBnZXRGaWVsZChkdnBGaWVsZHMsICd0ZXJtcycpO1xuICAgICAgICAgICAgaWYgKHRlcm1zRmllbGQ/Lm9uZW9mS2luZCA9PT0gJ3JlY29yZCcpIHtcbiAgICAgICAgICAgICAgY29uc3QgdGVybXNGaWVsZHMgPSB0ZXJtc0ZpZWxkLnJlY29yZD8uZmllbGRzID8/IFtdO1xuICAgICAgICAgICAgICBjb25zdCBkZWxpdmVyaWVzRmllbGQgPSBnZXRGaWVsZCh0ZXJtc0ZpZWxkcywgJ2RlbGl2ZXJpZXMnKTtcbiAgICAgICAgICAgICAgaWYgKGRlbGl2ZXJpZXNGaWVsZD8ub25lb2ZLaW5kID09PSAnbGlzdCcpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBmaXJzdERlbGl2ZXJ5ID0gZGVsaXZlcmllc0ZpZWxkLmxpc3Q/LmVsZW1lbnRzPy5bMF0/LnN1bTtcbiAgICAgICAgICAgICAgICBpZiAoZmlyc3REZWxpdmVyeT8ub25lb2ZLaW5kID09PSAncmVjb3JkJykge1xuICAgICAgICAgICAgICAgICAgY29uc3QgZGVsaXZlcnlGaWVsZHMgPSBmaXJzdERlbGl2ZXJ5LnJlY29yZD8uZmllbGRzID8/IFtdO1xuICAgICAgICAgICAgICAgICAgY29uc3QgYW1vdW50RGF0YSA9IGdldEZpZWxkKGRlbGl2ZXJ5RmllbGRzLCAnYW1vdW50Jyk7XG4gICAgICAgICAgICAgICAgICBpZiAoYW1vdW50RGF0YT8ub25lb2ZLaW5kID09PSAnbnVtZXJpYycpIGFtb3VudCA9IGFtb3VudERhdGEubnVtZXJpYyA/PyAnJztcbiAgICAgICAgICAgICAgICAgIGNvbnN0IGluc3RydW1lbnRGaWVsZCA9IGdldEZpZWxkKGRlbGl2ZXJ5RmllbGRzLCAnaW5zdHJ1bWVudCcpO1xuICAgICAgICAgICAgICAgICAgaWYgKGluc3RydW1lbnRGaWVsZD8ub25lb2ZLaW5kID09PSAncmVjb3JkJykge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBpbnN0cnVtZW50RmllbGRzID0gaW5zdHJ1bWVudEZpZWxkLnJlY29yZD8uZmllbGRzID8/IFtdO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBhZG1pbkRhdGEgPSBnZXRGaWVsZChpbnN0cnVtZW50RmllbGRzLCAnYWRtaW4nKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGFkbWluRGF0YT8ub25lb2ZLaW5kID09PSAncGFydHknKSBpbnN0cnVtZW50QWRtaW4gPSBhZG1pbkRhdGEucGFydHkgPz8gJyc7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGlkRGF0YSA9IGdldEZpZWxkKGluc3RydW1lbnRGaWVsZHMsICdpZCcpO1xuICAgICAgICAgICAgICAgICAgICBpZiAoaWREYXRhPy5vbmVvZktpbmQgPT09ICd0ZXh0JykgaW5zdHJ1bWVudElkID0gaWREYXRhLnRleHQgPz8gJyc7XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuXG4gICAgICBjYXNlIFRyYW5zYWN0aW9uVHlwZS5Db3NpZ25EZWxlZ2F0aW9uQWNjZXB0OiB7XG4gICAgICAgIC8vIFRyYWRlV2ViOiBDb3NpZ25pbmdEZWxlZ2F0aW9uUHJvcG9zYWxfQWNjZXB0OyBUZW1wbGU6IEFjY2VwdERlbGVnYXRpb25Qcm9wb3NhbC5cbiAgICAgICAgY29uc3Qgc2lnbmVyUGFydHkgPVxuICAgICAgICAgIGZpbmRFeGVyY2lzZUFjdGluZ1BhcnR5KCdDb3NpZ25pbmdEZWxlZ2F0aW9uUHJvcG9zYWxfQWNjZXB0JykgPz9cbiAgICAgICAgICBmaW5kRXhlcmNpc2VBY3RpbmdQYXJ0eSgnQWNjZXB0RGVsZWdhdGlvblByb3Bvc2FsJyk7XG4gICAgICAgIGlmIChzaWduZXJQYXJ0eSkgc2VuZGVyID0gc2lnbmVyUGFydHk7XG5cbiAgICAgICAgLy8gVHJhZGVXZWIgY3JlYXRlcyBDb3NpZ25pbmdEZWxlZ2F0aW9uIHsgYWRtaW4sIHNpZ25lciB9OyBUZW1wbGUgY3JlYXRlc1xuICAgICAgICAvLyBEZWxlZ2F0aW9uIHsgb3BlcmF0b3IsIHVzZXIgfSBmcm9tIHRoZSBzYW1lIGFjY2VwdGFuY2Ugb3BlcmF0aW9uLlxuICAgICAgICBjb25zdCBkZWxlZ2F0aW9uRmllbGRzID0gZmluZENyZWF0ZU5vZGVGaWVsZHMoJ0Nvc2lnbmluZ0RlbGVnYXRpb24nKSA/PyBmaW5kQ3JlYXRlTm9kZUZpZWxkcygnRGVsZWdhdGlvbicpO1xuICAgICAgICBpZiAoZGVsZWdhdGlvbkZpZWxkcykge1xuICAgICAgICAgIGNvbnN0IGFkbWluRGF0YSA9IGdldEZpZWxkKGRlbGVnYXRpb25GaWVsZHMsICdhZG1pbicpID8/IGdldEZpZWxkKGRlbGVnYXRpb25GaWVsZHMsICdvcGVyYXRvcicpO1xuICAgICAgICAgIGlmIChhZG1pbkRhdGE/Lm9uZW9mS2luZCA9PT0gJ3BhcnR5JykgcmVjZWl2ZXIgPSBhZG1pbkRhdGEucGFydHkgPz8gJyc7XG4gICAgICAgIH1cbiAgICAgICAgYW1vdW50ID0gJzAnO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cblxuICAgICAgY2FzZSBUcmFuc2FjdGlvblR5cGUuVHJhbnNmZXJPZmZlcldpdGhkcmF3bjoge1xuICAgICAgICAvLyBDYW50b24gY29pbjogQW11bGV0IGNyZWF0ZSBub2RlIOKGkiBvd25lcj1zZW5kZXI9cmVjZWl2ZXIsIGFtb3VudC5pbml0aWFsQW1vdW50XG4gICAgICAgIGNvbnN0IGFtdWxldEZpZWxkcyA9IGZpbmRDcmVhdGVOb2RlRmllbGRzKCdBbXVsZXQnKTtcbiAgICAgICAgaWYgKGFtdWxldEZpZWxkcykge1xuICAgICAgICAgIGNvbnN0IG93bmVyRGF0YSA9IGdldEZpZWxkKGFtdWxldEZpZWxkcywgJ293bmVyJyk7XG4gICAgICAgICAgaWYgKG93bmVyRGF0YT8ub25lb2ZLaW5kID09PSAncGFydHknKSB7XG4gICAgICAgICAgICByZWNlaXZlciA9IG93bmVyRGF0YS5wYXJ0eSA/PyAnJztcbiAgICAgICAgICAgIHNlbmRlciA9IHJlY2VpdmVyO1xuICAgICAgICAgIH1cbiAgICAgICAgICBjb25zdCBhbW91bnRGaWVsZCA9IGdldEZpZWxkKGFtdWxldEZpZWxkcywgJ2Ftb3VudCcpO1xuICAgICAgICAgIGlmIChhbW91bnRGaWVsZD8ub25lb2ZLaW5kID09PSAncmVjb3JkJykge1xuICAgICAgICAgICAgY29uc3QgaW5pdGlhbEFtb3VudERhdGEgPSBnZXRGaWVsZChhbW91bnRGaWVsZC5yZWNvcmQ/LmZpZWxkcyA/PyBbXSwgJ2luaXRpYWxBbW91bnQnKTtcbiAgICAgICAgICAgIGlmIChpbml0aWFsQW1vdW50RGF0YT8ub25lb2ZLaW5kID09PSAnbnVtZXJpYycpIGFtb3VudCA9IGluaXRpYWxBbW91bnREYXRhLm51bWVyaWMgPz8gJyc7XG4gICAgICAgICAgfVxuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIC8vIFRva2VuOiBIb2xkaW5nIGNyZWF0ZSBub2RlIOKGkiBvd25lcj1zZW5kZXI9cmVjZWl2ZXIsIGluc3RydW1lbnQue3NvdXJjZT1hZG1pbiwgaWR9LCBhbW91bnRcbiAgICAgICAgY29uc3QgaG9sZGluZ0ZpZWxkcyA9IGZpbmRDcmVhdGVOb2RlRmllbGRzKCdIb2xkaW5nJyk7XG4gICAgICAgIGlmIChob2xkaW5nRmllbGRzKSB7XG4gICAgICAgICAgY29uc3Qgb3duZXJEYXRhID0gZ2V0RmllbGQoaG9sZGluZ0ZpZWxkcywgJ293bmVyJyk7XG4gICAgICAgICAgaWYgKG93bmVyRGF0YT8ub25lb2ZLaW5kID09PSAncGFydHknKSB7XG4gICAgICAgICAgICByZWNlaXZlciA9IG93bmVyRGF0YS5wYXJ0eSA/PyAnJztcbiAgICAgICAgICAgIHNlbmRlciA9IHJlY2VpdmVyO1xuICAgICAgICAgIH1cbiAgICAgICAgICBjb25zdCBhbW91bnREYXRhID0gZ2V0RmllbGQoaG9sZGluZ0ZpZWxkcywgJ2Ftb3VudCcpO1xuICAgICAgICAgIGlmIChhbW91bnREYXRhPy5vbmVvZktpbmQgPT09ICdudW1lcmljJykgYW1vdW50ID0gYW1vdW50RGF0YS5udW1lcmljID8/ICcnO1xuICAgICAgICAgIGNvbnN0IGluc3RydW1lbnREYXRhID0gZ2V0RmllbGQoaG9sZGluZ0ZpZWxkcywgJ2luc3RydW1lbnQnKTtcbiAgICAgICAgICBpZiAoaW5zdHJ1bWVudERhdGE/Lm9uZW9mS2luZCA9PT0gJ3JlY29yZCcpIHtcbiAgICAgICAgICAgIGNvbnN0IGluc3RydW1lbnRGaWVsZHMgPSBpbnN0cnVtZW50RGF0YS5yZWNvcmQ/LmZpZWxkcyA/PyBbXTtcbiAgICAgICAgICAgIGNvbnN0IHNvdXJjZURhdGEgPSBnZXRGaWVsZChpbnN0cnVtZW50RmllbGRzLCAnc291cmNlJyk7XG4gICAgICAgICAgICBpZiAoc291cmNlRGF0YT8ub25lb2ZLaW5kID09PSAncGFydHknKSBpbnN0cnVtZW50QWRtaW4gPSBzb3VyY2VEYXRhLnBhcnR5ID8/ICcnO1xuICAgICAgICAgICAgY29uc3QgaWREYXRhID0gZ2V0RmllbGQoaW5zdHJ1bWVudEZpZWxkcywgJ2lkJyk7XG4gICAgICAgICAgICBpZiAoaWREYXRhPy5vbmVvZktpbmQgPT09ICd0ZXh0JykgaW5zdHJ1bWVudElkID0gaWREYXRhLnRleHQgPz8gJyc7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuXG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIC8vIEluaXRpYWwgdHJhbnNmZXIgKDEtc3RlcCBhbmQgMi1zdGVwLCBjb2luIGFuZCB0b2tlbik6IFRyYW5zZmVyRmFjdG9yeV9UcmFuc2ZlciBleGVyY2lzZSBub2RlXG4gICAgICAgIC8vIOKGkiB0cmFuc2Zlci57c2VuZGVyLCByZWNlaXZlciwgYW1vdW50LCBpbnN0cnVtZW50SWQue2FkbWluLCBpZH0sIG1ldGF9XG4gICAgICAgIGNvbnN0IHRyYW5zZmVyRmllbGRzID0gZmluZEV4ZXJjaXNlTm9kZUZpZWxkcygnVHJhbnNmZXJGYWN0b3J5X1RyYW5zZmVyJyk7XG4gICAgICAgIGlmICh0cmFuc2ZlckZpZWxkcykge1xuICAgICAgICAgIGNvbnN0IHRyYW5zZmVyU3VtID0gZ2V0RmllbGQodHJhbnNmZXJGaWVsZHMsICd0cmFuc2ZlcicpO1xuICAgICAgICAgIGlmICh0cmFuc2ZlclN1bT8ub25lb2ZLaW5kID09PSAncmVjb3JkJykge1xuICAgICAgICAgICAgY29uc3QgdHJhbnNmZXJSZWNvcmQgPSB0cmFuc2ZlclN1bS5yZWNvcmQ/LmZpZWxkcyA/PyBbXTtcbiAgICAgICAgICAgIGV4dHJhY3RGcm9tVHJhbnNmZXJSZWNvcmQodHJhbnNmZXJSZWNvcmQsICdpbnN0cnVtZW50SWQnLCAnYWRtaW4nKTtcbiAgICAgICAgICAgIGNvbnN0IG1ldGFGaWVsZCA9IGdldEZpZWxkKHRyYW5zZmVyUmVjb3JkLCAnbWV0YScpO1xuICAgICAgICAgICAgaWYgKG1ldGFGaWVsZD8ub25lb2ZLaW5kID09PSAncmVjb3JkJykge1xuICAgICAgICAgICAgICBjb25zdCB2YWx1ZXNGaWVsZCA9IGdldEZpZWxkKG1ldGFGaWVsZC5yZWNvcmQ/LmZpZWxkcyA/PyBbXSwgJ3ZhbHVlcycpO1xuICAgICAgICAgICAgICBpZiAodmFsdWVzRmllbGQ/Lm9uZW9mS2luZCA9PT0gJ3RleHRNYXAnKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgbWVtb0VudHJ5ID0gdmFsdWVzRmllbGQudGV4dE1hcD8uZW50cmllcy5maW5kKFxuICAgICAgICAgICAgICAgICAgKGUpID0+IGUua2V5ID09PSAnc3BsaWNlLmxmZGVjZW50cmFsaXplZHRydXN0Lm9yZy9yZWFzb24nXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICBpZiAobWVtb0VudHJ5KSB7XG4gICAgICAgICAgICAgICAgICBjb25zdCBtZW1vVmFsdWUgPSBtZW1vRW50cnk/LnZhbHVlPy5zdW07XG4gICAgICAgICAgICAgICAgICBpZiAobWVtb1ZhbHVlPy5vbmVvZktpbmQgPT09ICd0ZXh0JykgbWVtb0lkID0gbWVtb1ZhbHVlLnRleHQ7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmICghc2VuZGVyIHx8ICFyZWNlaXZlciB8fCAhYW1vdW50KSB7XG4gICAgICBjb25zdCBtaXNzaW5nRmllbGRzOiBzdHJpbmdbXSA9IFtdO1xuICAgICAgaWYgKCFzZW5kZXIpIG1pc3NpbmdGaWVsZHMucHVzaCgnc2VuZGVyJyk7XG4gICAgICBpZiAoIXJlY2VpdmVyKSBtaXNzaW5nRmllbGRzLnB1c2goJ3JlY2VpdmVyJyk7XG4gICAgICBpZiAoIWFtb3VudCkgbWlzc2luZ0ZpZWxkcy5wdXNoKCdhbW91bnQnKTtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgaW52YWxpZCB0cmFuc2FjdGlvbiBkYXRhOiBtaXNzaW5nICR7bWlzc2luZ0ZpZWxkcy5qb2luKCcsICcpfWApO1xuICAgIH1cbiAgICBjb25zdCBjb252ZXJ0ZWRBbW91bnQgPSB0aGlzLmNvbnZlcnRBbW91bnRUb0xvd2VzdFVuaXQobmV3IEJpZ051bWJlcihhbW91bnQpKTtcbiAgICBjb25zdCBwYXJzZWREYXRhOiBQcmVwYXJlZFR4blBhcnNlZEluZm8gPSB7XG4gICAgICBzZW5kZXIsXG4gICAgICByZWNlaXZlcixcbiAgICAgIGFtb3VudDogY29udmVydGVkQW1vdW50LFxuICAgIH07XG4gICAgaWYgKG1lbW9JZCkge1xuICAgICAgcGFyc2VkRGF0YS5tZW1vSWQgPSBtZW1vSWQ7XG4gICAgfVxuICAgIGlmIChpbnN0cnVtZW50SWQgJiYgaW5zdHJ1bWVudEFkbWluKSB7XG4gICAgICBwYXJzZWREYXRhLnRva2VuID0gdGhpcy5maW5kVG9rZW5OYW1lQnlDb250cmFjdEFkZHJlc3MoYCR7aW5zdHJ1bWVudEFkbWlufToke2luc3RydW1lbnRJZH1gKTtcbiAgICB9XG4gICAgcmV0dXJuIHBhcnNlZERhdGE7XG4gIH1cblxuICAvKiogUGFyc2VzIGBcIlBrZzpNb2R1bGU6RW50aXR5XCJgIGludG8gcGFydHMuICovXG4gIHBhcnNlQ2FudG9uVGVtcGxhdGVJZCh2YWx1ZTogc3RyaW5nKTogeyBwa2c6IHN0cmluZzsgbW9kdWxlTmFtZTogc3RyaW5nOyBlbnRpdHlOYW1lOiBzdHJpbmcgfSB8IHVuZGVmaW5lZCB7XG4gICAgaWYgKHR5cGVvZiB2YWx1ZSAhPT0gJ3N0cmluZycpIHJldHVybiB1bmRlZmluZWQ7XG4gICAgY29uc3QgcGFydHMgPSB2YWx1ZS5zcGxpdCgnOicpO1xuICAgIGlmIChwYXJ0cy5sZW5ndGggIT09IDMpIHJldHVybiB1bmRlZmluZWQ7XG4gICAgY29uc3QgW3BrZywgbW9kdWxlTmFtZSwgZW50aXR5TmFtZV0gPSBwYXJ0cztcbiAgICBpZiAoIXBrZyB8fCAhbW9kdWxlTmFtZSB8fCAhZW50aXR5TmFtZSkgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICByZXR1cm4geyBwa2csIG1vZHVsZU5hbWUsIGVudGl0eU5hbWUgfTtcbiAgfVxuXG4gIGRhbWxWYWx1ZVRvSnNvbih2YWx1ZTogVmFsdWUgfCB1bmRlZmluZWQpOiB1bmtub3duIHtcbiAgICBpZiAoIXZhbHVlIHx8ICF2YWx1ZS5zdW0pIHJldHVybiB1bmRlZmluZWQ7XG4gICAgY29uc3Qgc3VtID0gdmFsdWUuc3VtO1xuICAgIHN3aXRjaCAoc3VtLm9uZW9mS2luZCkge1xuICAgICAgY2FzZSAndW5pdCc6XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgICAgY2FzZSAnYm9vbCc6XG4gICAgICAgIHJldHVybiBzdW0uYm9vbDtcbiAgICAgIGNhc2UgJ2ludDY0JzpcbiAgICAgICAgcmV0dXJuIHN1bS5pbnQ2NDtcbiAgICAgIGNhc2UgJ2RhdGUnOlxuICAgICAgICByZXR1cm4gc3VtLmRhdGU7XG4gICAgICBjYXNlICd0aW1lc3RhbXAnOlxuICAgICAgICByZXR1cm4gc3VtLnRpbWVzdGFtcDtcbiAgICAgIGNhc2UgJ251bWVyaWMnOlxuICAgICAgICByZXR1cm4gc3VtLm51bWVyaWM7XG4gICAgICBjYXNlICdwYXJ0eSc6XG4gICAgICAgIHJldHVybiBzdW0ucGFydHk7XG4gICAgICBjYXNlICd0ZXh0JzpcbiAgICAgICAgcmV0dXJuIHN1bS50ZXh0O1xuICAgICAgY2FzZSAnY29udHJhY3RJZCc6XG4gICAgICAgIHJldHVybiBzdW0uY29udHJhY3RJZDtcbiAgICAgIGNhc2UgJ29wdGlvbmFsJzpcbiAgICAgICAgcmV0dXJuIHN1bS5vcHRpb25hbD8udmFsdWUgPyB0aGlzLmRhbWxWYWx1ZVRvSnNvbihzdW0ub3B0aW9uYWwudmFsdWUpIDogbnVsbDtcbiAgICAgIGNhc2UgJ2xpc3QnOlxuICAgICAgICByZXR1cm4gKHN1bS5saXN0Py5lbGVtZW50cyA/PyBbXSkubWFwKChlbCkgPT4gdGhpcy5kYW1sVmFsdWVUb0pzb24oZWwpKTtcbiAgICAgIGNhc2UgJ3RleHRNYXAnOiB7XG4gICAgICAgIGNvbnN0IG9iajogUmVjb3JkPHN0cmluZywgdW5rbm93bj4gPSB7fTtcbiAgICAgICAgZm9yIChjb25zdCBlbnRyeSBvZiBzdW0udGV4dE1hcD8uZW50cmllcyA/PyBbXSkge1xuICAgICAgICAgIG9ialtlbnRyeS5rZXldID0gdGhpcy5kYW1sVmFsdWVUb0pzb24oZW50cnkudmFsdWUpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBvYmo7XG4gICAgICB9XG4gICAgICBjYXNlICdnZW5NYXAnOlxuICAgICAgICByZXR1cm4gKHN1bS5nZW5NYXA/LmVudHJpZXMgPz8gW10pLm1hcCgoZW50cnkpID0+IFtcbiAgICAgICAgICB0aGlzLmRhbWxWYWx1ZVRvSnNvbihlbnRyeS5rZXkpLFxuICAgICAgICAgIHRoaXMuZGFtbFZhbHVlVG9Kc29uKGVudHJ5LnZhbHVlKSxcbiAgICAgICAgXSk7XG4gICAgICBjYXNlICdyZWNvcmQnOiB7XG4gICAgICAgIGNvbnN0IG9iajogUmVjb3JkPHN0cmluZywgdW5rbm93bj4gPSB7fTtcbiAgICAgICAgZm9yIChjb25zdCBmIG9mIHN1bS5yZWNvcmQ/LmZpZWxkcyA/PyBbXSkge1xuICAgICAgICAgIG9ialtmLmxhYmVsXSA9IHRoaXMuZGFtbFZhbHVlVG9Kc29uKGYudmFsdWUpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBvYmo7XG4gICAgICB9XG4gICAgICBjYXNlICd2YXJpYW50Jzoge1xuICAgICAgICBjb25zdCBvYmo6IFJlY29yZDxzdHJpbmcsIHVua25vd24+ID0ge307XG4gICAgICAgIG9ialtzdW0udmFyaWFudC5jb25zdHJ1Y3Rvcl0gPSB0aGlzLmRhbWxWYWx1ZVRvSnNvbihzdW0udmFyaWFudC52YWx1ZSk7XG4gICAgICAgIHJldHVybiBvYmo7XG4gICAgICB9XG4gICAgICBjYXNlICdlbnVtJzpcbiAgICAgICAgcmV0dXJuIHN1bS5lbnVtLmNvbnN0cnVjdG9yO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG4gIH1cblxuICAvKiogUmVhZHMgYWN0QXMgcGFydGllcyBmcm9tIGEgYmFzZTY0LWVuY29kZWQgcHJlcGFyZWQgdHJhbnNhY3Rpb24gcHJvdG9idWYuICovXG4gIGV4dHJhY3RTdWJtaXR0ZXJBY3RBcyhyYXdCYXNlNjQ6IHN0cmluZyk6IHN0cmluZ1tdIHtcbiAgICBjb25zdCBkZWNvZGVkID0gdGhpcy5kZWNvZGVQcmVwYXJlZFRyYW5zYWN0aW9uKHJhd0Jhc2U2NCk7XG4gICAgcmV0dXJuIGRlY29kZWQubWV0YWRhdGE/LnN1Ym1pdHRlckluZm8/LmFjdEFzID8/IFtdO1xuICB9XG5cbiAgLyoqIERlY29kZXMgYSBwcmVwYXJlZCBDYW50b24gdHJhbnNhY3Rpb24gcHJvdG9idWYgYW5kIGV4dHJhY3RzIHRoZSByb290IENyZWF0ZUNvbW1hbmQgb3IgRXhlcmNpc2VDb21tYW5kLiAqL1xuICBleHRyYWN0Q2FudG9uQ29tbWFuZEluZm8ocmF3QmFzZTY0OiBzdHJpbmcpOiBDYW50b25Db21tYW5kSW5mbyB7XG4gICAgY29uc3QgZGVjb2RlZCA9IHRoaXMuZGVjb2RlUHJlcGFyZWRUcmFuc2FjdGlvbihyYXdCYXNlNjQpO1xuICAgIGNvbnN0IHR4ID0gZGVjb2RlZC50cmFuc2FjdGlvbjtcbiAgICBpZiAoIXR4KSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ2RlY29kZWQgcHJlcGFyZWQgdHJhbnNhY3Rpb24gaGFzIG5vIHRyYW5zYWN0aW9uIGJvZHknKTtcbiAgICB9XG4gICAgY29uc3Qgcm9vdHMgPSB0eC5yb290cyA/PyBbXTtcbiAgICBpZiAocm9vdHMubGVuZ3RoID09PSAwKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ2RlY29kZWQgcHJlcGFyZWQgdHJhbnNhY3Rpb24gaGFzIG5vIHJvb3Qgbm9kZXMnKTtcbiAgICB9XG4gICAgaWYgKHJvb3RzLmxlbmd0aCA+IDEpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgZGVjb2RlZCBwcmVwYXJlZCB0cmFuc2FjdGlvbiBoYXMgJHtyb290cy5sZW5ndGh9IHJvb3Qgbm9kZXM7IGV4cGVjdGVkIGV4YWN0bHkgMWApO1xuICAgIH1cbiAgICBjb25zdCByb290SWQgPSByb290c1swXTtcbiAgICBjb25zdCByb290Tm9kZSA9ICh0eC5ub2RlcyA/PyBbXSkuZmluZCgobikgPT4gbi5ub2RlSWQgPT09IHJvb3RJZCk7XG4gICAgaWYgKCFyb290Tm9kZSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGByb290IG5vZGUgJyR7cm9vdElkfScgbm90IGZvdW5kIGluIG5vZGVzIGxpc3RgKTtcbiAgICB9XG4gICAgY29uc3QgdmVyc2lvbmVkTm9kZSA9IHJvb3ROb2RlLnZlcnNpb25lZE5vZGU7XG4gICAgaWYgKCF2ZXJzaW9uZWROb2RlIHx8IHZlcnNpb25lZE5vZGUub25lb2ZLaW5kICE9PSAndjEnKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYHVuc3VwcG9ydGVkIHJvb3Qgbm9kZSB2ZXJzaW9uOiAke3ZlcnNpb25lZE5vZGU/Lm9uZW9mS2luZCA/PyAndW5kZWZpbmVkJ31gKTtcbiAgICB9XG4gICAgY29uc3Qgbm9kZVR5cGUgPSB2ZXJzaW9uZWROb2RlLnYxLm5vZGVUeXBlO1xuICAgIGlmIChub2RlVHlwZS5vbmVvZktpbmQgPT09ICdjcmVhdGUnKSB7XG4gICAgICBjb25zdCBjcmVhdGVOb2RlID0gbm9kZVR5cGUuY3JlYXRlO1xuICAgICAgaWYgKCFjcmVhdGVOb2RlLnRlbXBsYXRlSWQpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdjcmVhdGUgbm9kZSBtaXNzaW5nIHRlbXBsYXRlSWQnKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB7XG4gICAgICAgIGtpbmQ6ICdDcmVhdGVDb21tYW5kJyxcbiAgICAgICAgdGVtcGxhdGVJZDoge1xuICAgICAgICAgIHBhY2thZ2VJZDogY3JlYXRlTm9kZS50ZW1wbGF0ZUlkLnBhY2thZ2VJZCxcbiAgICAgICAgICBtb2R1bGVOYW1lOiBjcmVhdGVOb2RlLnRlbXBsYXRlSWQubW9kdWxlTmFtZSxcbiAgICAgICAgICBlbnRpdHlOYW1lOiBjcmVhdGVOb2RlLnRlbXBsYXRlSWQuZW50aXR5TmFtZSxcbiAgICAgICAgfSxcbiAgICAgICAgYXJndW1lbnQ6IHRoaXMuZGFtbFZhbHVlVG9Kc29uKGNyZWF0ZU5vZGUuYXJndW1lbnQpLFxuICAgICAgfTtcbiAgICB9XG4gICAgaWYgKG5vZGVUeXBlLm9uZW9mS2luZCA9PT0gJ2V4ZXJjaXNlJykge1xuICAgICAgY29uc3QgZXhlcmNpc2VOb2RlID0gbm9kZVR5cGUuZXhlcmNpc2U7XG4gICAgICBpZiAoIWV4ZXJjaXNlTm9kZS50ZW1wbGF0ZUlkKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignZXhlcmNpc2Ugbm9kZSBtaXNzaW5nIHRlbXBsYXRlSWQnKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB7XG4gICAgICAgIGtpbmQ6ICdFeGVyY2lzZUNvbW1hbmQnLFxuICAgICAgICB0ZW1wbGF0ZUlkOiB7XG4gICAgICAgICAgcGFja2FnZUlkOiBleGVyY2lzZU5vZGUudGVtcGxhdGVJZC5wYWNrYWdlSWQsXG4gICAgICAgICAgbW9kdWxlTmFtZTogZXhlcmNpc2VOb2RlLnRlbXBsYXRlSWQubW9kdWxlTmFtZSxcbiAgICAgICAgICBlbnRpdHlOYW1lOiBleGVyY2lzZU5vZGUudGVtcGxhdGVJZC5lbnRpdHlOYW1lLFxuICAgICAgICB9LFxuICAgICAgICBhcmd1bWVudDogdGhpcy5kYW1sVmFsdWVUb0pzb24oZXhlcmNpc2VOb2RlLmNob3NlblZhbHVlKSxcbiAgICAgICAgY2hvaWNlOiBleGVyY2lzZU5vZGUuY2hvaWNlSWQsXG4gICAgICAgIGNvbnRyYWN0SWQ6IGV4ZXJjaXNlTm9kZS5jb250cmFjdElkLFxuICAgICAgICBhY3RpbmdQYXJ0aWVzOiBbLi4uKGV4ZXJjaXNlTm9kZS5hY3RpbmdQYXJ0aWVzID8/IFtdKV0sXG4gICAgICB9O1xuICAgIH1cbiAgICB0aHJvdyBuZXcgRXJyb3IoYHVuc3VwcG9ydGVkIHJvb3Qgbm9kZSB0eXBlOiAke25vZGVUeXBlLm9uZW9mS2luZCA/PyAndW5kZWZpbmVkJ31gKTtcbiAgfVxuXG4gIHNhbWVFbGVtZW50cyhhOiByZWFkb25seSBzdHJpbmdbXSwgYjogcmVhZG9ubHkgc3RyaW5nW10pOiBib29sZWFuIHtcbiAgICBpZiAoYS5sZW5ndGggIT09IGIubGVuZ3RoKSByZXR1cm4gZmFsc2U7XG4gICAgY29uc3Qgc29ydGVkQSA9IFsuLi5hXS5zb3J0KCk7XG4gICAgY29uc3Qgc29ydGVkQiA9IFsuLi5iXS5zb3J0KCk7XG4gICAgcmV0dXJuIHNvcnRlZEEuZXZlcnkoKHgsIGkpID0+IHggPT09IHNvcnRlZEJbaV0pO1xuICB9XG5cbiAgLyoqIFN0cmlwcyB0aGUgYGNvbW1hbmQuYCBwcmVmaXggZnJvbSBpbmplY3RBcyBwYXRocyAoZS5nLiBgY29tbWFuZC5FeGVyY2lzZUNvbW1hbmQuY29udHJhY3RJZGAg4oaSIGBFeGVyY2lzZUNvbW1hbmQuY29udHJhY3RJZGApLiAqL1xuICBub3JtYWxpemVJbmplY3RBcyhzcGVjczogcmVhZG9ubHkgeyBpbmplY3RBcz86IHN0cmluZyB9W10gfCB1bmRlZmluZWQpOiBTZXQ8c3RyaW5nPiB7XG4gICAgY29uc3Qgb3V0ID0gbmV3IFNldDxzdHJpbmc+KCk7XG4gICAgaWYgKCFzcGVjcykgcmV0dXJuIG91dDtcbiAgICBmb3IgKGNvbnN0IHNwZWMgb2Ygc3BlY3MpIHtcbiAgICAgIGlmICghc3BlYyB8fCB0eXBlb2Ygc3BlYy5pbmplY3RBcyAhPT0gJ3N0cmluZycpIGNvbnRpbnVlO1xuICAgICAgY29uc3Qgc3RyaXBwZWQgPSBzcGVjLmluamVjdEFzLnN0YXJ0c1dpdGgoJ2NvbW1hbmQuJykgPyBzcGVjLmluamVjdEFzLnNsaWNlKCdjb21tYW5kLicubGVuZ3RoKSA6IHNwZWMuaW5qZWN0QXM7XG4gICAgICBpZiAoc3RyaXBwZWQpIG91dC5hZGQoc3RyaXBwZWQpO1xuICAgIH1cbiAgICByZXR1cm4gb3V0O1xuICB9XG5cbiAgLyoqXG4gICAqIFJlY3Vyc2l2ZWx5IGFzc2VydHMgdGhhdCBgYWN0dWFsYCBtYXRjaGVzIGBleHBlY3RlZGAuIFBhdGhzIGluIGBpbmplY3RBc1BhdGhzYCBhcmUgc2tpcHBlZC5cbiAgICogTnVtZXJpYyBzdHJpbmdzIGFyZSBjb21wYXJlZCB2aWEgQmlnTnVtYmVyIHRvIGhhbmRsZSBEQU1MIGZvcm1hdHRpbmcgZGlmZmVyZW5jZXMgKGUuZy4gXCIxMDBcIiB2cyBcIjEwMC4wMDAwMDAwMDAwXCIpLlxuICAgKi9cbiAgYXNzZXJ0RGVlcENhbnRvbk1hdGNoKGV4cGVjdGVkOiB1bmtub3duLCBhY3R1YWw6IHVua25vd24sIGluamVjdEFzUGF0aHM6IFNldDxzdHJpbmc+LCBjdXJyZW50UGF0aCA9ICcnKTogdm9pZCB7XG4gICAgaWYgKGluamVjdEFzUGF0aHMuaGFzKGN1cnJlbnRQYXRoKSkgcmV0dXJuO1xuXG4gICAgLy8gT25seSB1bmRlZmluZWQgbWVhbnMgXCJ1bnNwZWNpZmllZCDigJQgc2tpcCBjb21wYXJpc29uXCIuIEVtcHR5IHt9IG9yIFtdIGFyZSB2YWxpZFxuICAgIC8vIERhbWwgdmFsdWVzIGFuZCBtdXN0IGJlIHZlcmlmaWVkIGFnYWluc3QgYWN0dWFsIHRvIHByZXZlbnQgYWNjaWRlbnRhbCB1bmRlci12ZXJpZmljYXRpb24uXG4gICAgaWYgKGV4cGVjdGVkID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAoZXhwZWN0ZWQgPT09IG51bGwgfHwgYWN0dWFsID09PSBudWxsKSB7XG4gICAgICBpZiAoZXhwZWN0ZWQgIT09IGFjdHVhbCkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgYENhbnRvbiBjb21tYW5kIG1pc21hdGNoIGF0ICcke2N1cnJlbnRQYXRoIHx8ICc8cm9vdD4nfSc6IGV4cGVjdGVkICR7dGhpcy5zdHJpbmdpZnlGb3JFcnJvcihcbiAgICAgICAgICAgIGV4cGVjdGVkXG4gICAgICAgICAgKX0sIGdvdCAke3RoaXMuc3RyaW5naWZ5Rm9yRXJyb3IoYWN0dWFsKX1gXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmICh0eXBlb2YgZXhwZWN0ZWQgPT09ICdzdHJpbmcnICYmIHR5cGVvZiBhY3R1YWwgPT09ICdzdHJpbmcnKSB7XG4gICAgICBpZiAodGhpcy5hcmVOdW1lcmljU3RyaW5ncyhleHBlY3RlZCwgYWN0dWFsKSkge1xuICAgICAgICBpZiAoIW5ldyBCaWdOdW1iZXIoZXhwZWN0ZWQpLmlzRXF1YWxUbyhuZXcgQmlnTnVtYmVyKGFjdHVhbCkpKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgICAgYENhbnRvbiBjb21tYW5kIG51bWVyaWMgbWlzbWF0Y2ggYXQgJyR7Y3VycmVudFBhdGggfHwgJzxyb290Pid9JzogZXhwZWN0ZWQgJHtleHBlY3RlZH0sIGdvdCAke2FjdHVhbH1gXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICAvLyBJU08gODYwMSBpbnB1dCB2cyBtaWNyb3NlY29uZC1zaW5jZS1lcG9jaCBlbmNvZGluZyBpbiB0aGUgcHJlcGFyZWQtdHJhbnNhY3Rpb24gcHJvdG9idWYuXG4gICAgICBpZiAodGhpcy5pc0lzb1RpbWVzdGFtcChleHBlY3RlZCkgJiYgdGhpcy5pc0ludGVnZXJTdHJpbmcoYWN0dWFsKSkge1xuICAgICAgICBjb25zdCBleHBlY3RlZE1pY3Jvc2Vjb25kcyA9IG5ldyBCaWdOdW1iZXIobmV3IERhdGUoZXhwZWN0ZWQpLmdldFRpbWUoKSkubXVsdGlwbGllZEJ5KDEwMDApO1xuICAgICAgICBpZiAoIWV4cGVjdGVkTWljcm9zZWNvbmRzLmlzRXF1YWxUbyhuZXcgQmlnTnVtYmVyKGFjdHVhbCkpKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgICAgYENhbnRvbiBjb21tYW5kIHRpbWVzdGFtcCBtaXNtYXRjaCBhdCAnJHtjdXJyZW50UGF0aCB8fCAnPHJvb3Q+J30nOiBgICtcbiAgICAgICAgICAgICAgYGV4cGVjdGVkICcke2V4cGVjdGVkfScgKCR7ZXhwZWN0ZWRNaWNyb3NlY29uZHMudG9GaXhlZCgwKX0gwrVzKSwgZ290ICcke2FjdHVhbH0nYFxuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgaWYgKGV4cGVjdGVkICE9PSBhY3R1YWwpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgIGBDYW50b24gY29tbWFuZCBtaXNtYXRjaCBhdCAnJHtjdXJyZW50UGF0aCB8fCAnPHJvb3Q+J30nOiBleHBlY3RlZCAnJHtleHBlY3RlZH0nLCBnb3QgJyR7YWN0dWFsfSdgXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmICh0eXBlb2YgZXhwZWN0ZWQgPT09ICdudW1iZXInICYmIHR5cGVvZiBhY3R1YWwgPT09ICdudW1iZXInKSB7XG4gICAgICBpZiAoZXhwZWN0ZWQgIT09IGFjdHVhbCkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYENhbnRvbiBjb21tYW5kIG1pc21hdGNoIGF0ICcke2N1cnJlbnRQYXRoIHx8ICc8cm9vdD4nfSc6IGV4cGVjdGVkICR7ZXhwZWN0ZWR9LCBnb3QgJHthY3R1YWx9YCk7XG4gICAgICB9XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmICh0eXBlb2YgZXhwZWN0ZWQgPT09ICdib29sZWFuJyAmJiB0eXBlb2YgYWN0dWFsID09PSAnYm9vbGVhbicpIHtcbiAgICAgIGlmIChleHBlY3RlZCAhPT0gYWN0dWFsKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgQ2FudG9uIGNvbW1hbmQgbWlzbWF0Y2ggYXQgJyR7Y3VycmVudFBhdGggfHwgJzxyb290Pid9JzogZXhwZWN0ZWQgJHtleHBlY3RlZH0sIGdvdCAke2FjdHVhbH1gKTtcbiAgICAgIH1cbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKEFycmF5LmlzQXJyYXkoZXhwZWN0ZWQpICYmIEFycmF5LmlzQXJyYXkoYWN0dWFsKSkge1xuICAgICAgaWYgKGV4cGVjdGVkLmxlbmd0aCAhPT0gYWN0dWFsLmxlbmd0aCkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgYENhbnRvbiBjb21tYW5kIGxpc3QtbGVuZ3RoIG1pc21hdGNoIGF0ICcke2N1cnJlbnRQYXRoIHx8ICc8cm9vdD4nfSc6IGV4cGVjdGVkICR7ZXhwZWN0ZWQubGVuZ3RofSwgZ290ICR7XG4gICAgICAgICAgICBhY3R1YWwubGVuZ3RoXG4gICAgICAgICAgfWBcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZXhwZWN0ZWQubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgY29uc3QgY2hpbGRQYXRoID0gY3VycmVudFBhdGggPyBgJHtjdXJyZW50UGF0aH0uJHtpfWAgOiBTdHJpbmcoaSk7XG4gICAgICAgIHRoaXMuYXNzZXJ0RGVlcENhbnRvbk1hdGNoKGV4cGVjdGVkW2ldLCBhY3R1YWxbaV0sIGluamVjdEFzUGF0aHMsIGNoaWxkUGF0aCk7XG4gICAgICB9XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmICh0aGlzLmlzUGxhaW5PYmplY3QoZXhwZWN0ZWQpICYmIHRoaXMuaXNQbGFpbk9iamVjdChhY3R1YWwpKSB7XG4gICAgICBjb25zdCBleHBlY3RlZEtleXMgPSBuZXcgU2V0KE9iamVjdC5rZXlzKGV4cGVjdGVkKSk7XG4gICAgICBjb25zdCBhY3R1YWxLZXlzID0gbmV3IFNldChPYmplY3Qua2V5cyhhY3R1YWwpKTtcbiAgICAgIGZvciAoY29uc3Qga2V5IG9mIGV4cGVjdGVkS2V5cykge1xuICAgICAgICBjb25zdCBjaGlsZFBhdGggPSBjdXJyZW50UGF0aCA/IGAke2N1cnJlbnRQYXRofS4ke2tleX1gIDoga2V5O1xuICAgICAgICBpZiAoZXhwZWN0ZWRba2V5XSA9PT0gdW5kZWZpbmVkIHx8IGluamVjdEFzUGF0aHMuaGFzKGNoaWxkUGF0aCkpIGNvbnRpbnVlO1xuICAgICAgICBpZiAoIWFjdHVhbEtleXMuaGFzKGtleSkpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYENhbnRvbiBjb21tYW5kIG1pc3NpbmcgZmllbGQgYXQgJyR7Y2hpbGRQYXRofScgb24gcHJlcGFyZWQgdHJhbnNhY3Rpb25gKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmFzc2VydERlZXBDYW50b25NYXRjaChleHBlY3RlZFtrZXldLCAoYWN0dWFsIGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+KVtrZXldLCBpbmplY3RBc1BhdGhzLCBjaGlsZFBhdGgpO1xuICAgICAgfVxuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICBgQ2FudG9uIGNvbW1hbmQgdHlwZSBtaXNtYXRjaCBhdCAnJHtjdXJyZW50UGF0aCB8fCAnPHJvb3Q+J30nOiBleHBlY3RlZCAke3RoaXMuZGVzY3JpYmVUeXBlKFxuICAgICAgICBleHBlY3RlZFxuICAgICAgKX0sIGdvdCAke3RoaXMuZGVzY3JpYmVUeXBlKGFjdHVhbCl9YFxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogQ29tcHV0ZXMgdGhlIHRvcG9sb2d5IGhhc2ggZnJvbSB0aGUgQVBJIHJlc3BvbnNlIG9mIHRoZSAnY3JlYXRlIHBhcnR5JyBlbmRwb2ludC5cbiAgICpcbiAgICogQHBhcmFtIHRvcG9sb2d5VHJhbnNhY3Rpb25zIC0gTGlzdCBvZiBiYXNlNjQtZW5jb2RlZCB0b3BvbG9neSB0cmFuc2FjdGlvbnMgZnJvbSB0aGUgQ2FudG9uIEFQSS5cbiAgICogQHJldHVybnMgVGhlIGZpbmFsIGJhc2U2NC1lbmNvZGVkIHRvcG9sb2d5IHRyYW5zYWN0aW9uIGhhc2guXG4gICAqL1xuICBjb21wdXRlSGFzaEZyb21DcmVhdGVQYXJ0eVJlc3BvbnNlKHRvcG9sb2d5VHJhbnNhY3Rpb25zOiBzdHJpbmdbXSk6IHN0cmluZyB7XG4gICAgY29uc3QgdHhCdWZmZXJzID0gdG9wb2xvZ3lUcmFuc2FjdGlvbnMubWFwKCh0eCkgPT4gQnVmZmVyLmZyb20odHgsICdiYXNlNjQnKSk7XG4gICAgcmV0dXJuIHRoaXMuY29tcHV0ZUhhc2hGcm9tVG9wb2xvZ3lUcmFuc2FjdGlvbih0eEJ1ZmZlcnMpO1xuICB9XG5cbiAgYXN5bmMgY29tcHV0ZUhhc2hGcm9tUHJlcGFyZVN1Ym1pc3Npb25SZXNwb25zZShwcmVwYXJlZFRyYW5zYWN0aW9uQmFzZTY0OiBzdHJpbmcpOiBQcm9taXNlPHN0cmluZz4ge1xuICAgIGNvbnN0IHByZXBhcmVkVHJhbnNhY3Rpb24gPSB0aGlzLmRlY29kZVByZXBhcmVkVHJhbnNhY3Rpb24ocHJlcGFyZWRUcmFuc2FjdGlvbkJhc2U2NCk7XG4gICAgY29uc3QgaGFzaCA9IGF3YWl0IGNvbXB1dGVQcmVwYXJlZFRyYW5zYWN0aW9uKHByZXBhcmVkVHJhbnNhY3Rpb24pO1xuICAgIHJldHVybiBCdWZmZXIuZnJvbShoYXNoKS50b1N0cmluZygnYmFzZTY0Jyk7XG4gIH1cblxuICAvKipcbiAgICogQ29tcHV0ZXMgdGhlIGZpbmFsIHRvcG9sb2d5IHRyYW5zYWN0aW9uIGhhc2ggZm9yIGEgbGlzdCBvZiBwcmVwYXJlZCBDYW50b24gdHJhbnNhY3Rpb25zLlxuICAgKlxuICAgKiBFYWNoIHRyYW5zYWN0aW9uIGlzIGZpcnN0IGhhc2hlZCB3aXRoIHB1cnBvc2UgYDExYCwgdGhlbiBhbGwgaGFzaGVzIGFyZSBjb21iaW5lZCBhbmRcbiAgICogaGFzaGVkIGFnYWluIHdpdGggcHVycG9zZSBgNTVgLCBmb2xsb3dpbmcgdGhlIENhbnRvbiB0b3BvbG9neSBoYXNoIHJ1bGVzLlxuICAgKlxuICAgKiBUaGUgcmVzdWx0aW5nIGhhc2ggaXMgZW5jb2RlZCBhcyBhIGJhc2U2NCBzdHJpbmcuXG4gICAqXG4gICAqIEBwYXJhbSB7QnVmZmVyW119IHByZXBhcmVkVHJhbnNhY3Rpb25zIC0gQW4gYXJyYXkgb2YgQ2FudG9uIHRyYW5zYWN0aW9uIGJ1ZmZlcnMuXG4gICAqIEByZXR1cm5zIHtzdHJpbmd9IFRoZSBmaW5hbCB0b3BvbG9neSBoYXNoLCBiYXNlNjQtZW5jb2RlZC5cbiAgICovXG4gIHByaXZhdGUgY29tcHV0ZUhhc2hGcm9tVG9wb2xvZ3lUcmFuc2FjdGlvbihwcmVwYXJlZFRyYW5zYWN0aW9uczogQnVmZmVyW10pOiBzdHJpbmcge1xuICAgIGNvbnN0IHJhd0hhc2hlcyA9IHByZXBhcmVkVHJhbnNhY3Rpb25zLm1hcCgodHgpID0+IHRoaXMuY29tcHV0ZVNoYTI1NkNhbnRvbkhhc2goMTEsIHR4KSk7XG4gICAgY29uc3QgY29tYmluZWRIYXNoZXMgPSB0aGlzLmNvbXB1dGVNdWx0aUhhc2hGb3JUb3BvbG9neShyYXdIYXNoZXMpO1xuICAgIGNvbnN0IGNvbXB1dGVkSGFzaCA9IHRoaXMuY29tcHV0ZVNoYTI1NkNhbnRvbkhhc2goNTUsIGNvbWJpbmVkSGFzaGVzKTtcbiAgICByZXR1cm4gQnVmZmVyLmZyb20oY29tcHV0ZWRIYXNoLCAnaGV4JykudG9TdHJpbmcoJ2Jhc2U2NCcpO1xuICB9XG5cbiAgLyoqXG4gICAqIENvbnZlcnRzIGEgYmFzZTY0LWVuY29kZWQgRWQyNTUxOSBwdWJsaWMga2V5IHN0cmluZyBpbnRvIGEgc3RydWN0dXJlZCBzaWduaW5nIHB1YmxpYyBrZXkgb2JqZWN0LlxuICAgKiBAcGFyYW0ge1N0cmluZ30gcHVibGljS2V5IFRoZSBiYXNlNjQtZW5jb2RlZCBFZDI1NTE5IHB1YmxpYyBrZXlcbiAgICogQHJldHVybnMge09iamVjdH0gVGhlIHN0cnVjdHVyZWQgc2lnbmluZyBrZXkgb2JqZWN0IGZvcm1hdHRlZCBmb3IgdXNlIHdpdGggY3J5cHRvZ3JhcGhpYyBvcGVyYXRpb25zXG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBwcml2YXRlIHNpZ25pbmdQdWJsaWNLZXlGcm9tRWQyNTUxOShwdWJsaWNLZXk6IHN0cmluZyk6IHtcbiAgICBmb3JtYXQ6IG51bWJlcjtcbiAgICBwdWJsaWNLZXk6IEJ1ZmZlcjtcbiAgICBzY2hlbWU6IG51bWJlcjtcbiAgICBrZXlTcGVjOiBudW1iZXI7XG4gICAgdXNhZ2U6IFtdO1xuICB9IHtcbiAgICByZXR1cm4ge1xuICAgICAgZm9ybWF0OiBDcnlwdG9LZXlGb3JtYXQuUkFXLFxuICAgICAgcHVibGljS2V5OiBCdWZmZXIuZnJvbShwdWJsaWNLZXksICdiYXNlNjQnKSxcbiAgICAgIHNjaGVtZTogU2lnbmluZ0FsZ29yaXRobVNwZWMuRUQyNTUxOSxcbiAgICAgIGtleVNwZWM6IFNpZ25pbmdLZXlTcGVjLkVDX0NVUlZFMjU1MTksXG4gICAgICB1c2FnZTogW10sXG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGEgYnVmZmVyIHdpdGggYSA0LWJ5dGUgYmlnLWVuZGlhbiBpbnRlZ2VyIHByZWZpeCBmb2xsb3dlZCBieSB0aGUgcHJvdmlkZWQgYnl0ZSBidWZmZXJcbiAgICogQHBhcmFtIHtOdW1iZXJ9IHZhbHVlIFRoZSBpbnRlZ2VyIHRvIHByZWZpeCwgd3JpdHRlbiBhcyA0IGJ5dGVzIGluIGJpZy1lbmRpYW4gb3JkZXJcbiAgICogQHBhcmFtIHtCdWZmZXJ9IGJ5dGVzIFRoZSBidWZmZXIgdG8gYXBwZW5kIGFmdGVyIHRoZSBpbnRlZ2VyIHByZWZpeFxuICAgKiBAcmV0dXJucyB7QnVmZmVyfSBUaGUgcmVzdWx0aW5nIGJ1ZmZlciB3aXRoIHRoZSBwcmVmaXhlZCBpbnRlZ2VyXG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBwcml2YXRlIHByZWZpeGVkSW50KHZhbHVlOiBudW1iZXIsIGJ5dGVzOiBCdWZmZXIpOiBCdWZmZXIge1xuICAgIGNvbnN0IGJ1ZmZlciA9IEJ1ZmZlci5hbGxvYyg0ICsgYnl0ZXMubGVuZ3RoKTtcbiAgICBidWZmZXIud3JpdGVVSW50MzJCRSh2YWx1ZSwgMCk7XG4gICAgQnVmZmVyLmZyb20oYnl0ZXMpLmNvcHkoYnVmZmVyLCA0KTtcbiAgICByZXR1cm4gYnVmZmVyO1xuICB9XG5cbiAgLyoqXG4gICAqIENvbXB1dGVzIGFuIFNIQS0yNTYgQ2FudG9uLXN0eWxlIGhhc2ggYnkgcHJlZml4aW5nIHRoZSBpbnB1dCB3aXRoIGEgcHVycG9zZSBpZGVudGlmaWVyLFxuICAgKiB0aGVuIGhhc2hpbmcgdGhlIHJlc3VsdGluZyBidWZmZXIgYW5kIHByZXBlbmRpbmcgYSBtdWx0aS1wcmVmaXhcbiAgICpcbiAgICogQHBhcmFtIHtOdW1iZXJ9IHB1cnBvc2UgQSBudW1lcmljIGlkZW50aWZpZXIgdG8gcHJlZml4IHRoZSBoYXNoIGlucHV0IHdpdGhcbiAgICogQHBhcmFtIHtCdWZmZXJ9IGJ5dGVzIFRoZSBidWZmZXIgdG8gYmUgaGFzaGVkXG4gICAqIEByZXR1cm5zIHtTdHJpbmd9IEEgaGV4YWRlY2ltYWwgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIHRoZSByZXN1bHRpbmcgaGFzaCB3aXRoIG11bHRpLXByZWZpeFxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgcHJpdmF0ZSBjb21wdXRlU2hhMjU2Q2FudG9uSGFzaChwdXJwb3NlOiBudW1iZXIsIGJ5dGVzOiBCdWZmZXIpOiBzdHJpbmcge1xuICAgIGNvbnN0IGhhc2hJbnB1dCA9IHRoaXMucHJlZml4ZWRJbnQocHVycG9zZSwgYnl0ZXMpO1xuICAgIGNvbnN0IGhhc2ggPSBjcnlwdG8uY3JlYXRlSGFzaCgnc2hhMjU2JykudXBkYXRlKGhhc2hJbnB1dCkuZGlnZXN0KCk7XG4gICAgY29uc3QgbXVsdGlwcmVmaXggPSBCdWZmZXIuZnJvbShbMHgxMiwgMHgyMF0pO1xuICAgIHJldHVybiBCdWZmZXIuY29uY2F0KFttdWx0aXByZWZpeCwgaGFzaF0pLnRvU3RyaW5nKCdoZXgnKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBEZWNvZGVzIGEgQmFzZTY0LWVuY29kZWQgc3RyaW5nIGludG8gYSBVaW50OEFycmF5XG4gICAqIEBwYXJhbSB7U3RyaW5nfSBiNjQgVGhlIEJhc2U2NC1lbmNvZGVkIHN0cmluZ1xuICAgKiBAcmV0dXJucyB7VWludDhBcnJheX0gVGhlIGRlY29kZWQgYnl0ZSBhcnJheVxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgcHJpdmF0ZSBmcm9tQmFzZTY0KGI2NDogc3RyaW5nKTogVWludDhBcnJheSB7XG4gICAgcmV0dXJuIG5ldyBVaW50OEFycmF5KEJ1ZmZlci5mcm9tKGI2NCwgJ2Jhc2U2NCcpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBEZWNvZGVzIGEgQmFzZTY0LWVuY29kZWQgcHJlcGFyZWQgdHJhbnNhY3Rpb24gaW50byBhIHN0cnVjdHVyZWQgb2JqZWN0XG4gICAqIEBwYXJhbSB7U3RyaW5nfSBiYXNlNjQgVGhlIEJhc2U2NC1lbmNvZGVkIHRyYW5zYWN0aW9uIGRhdGFcbiAgICogQHJldHVybnMge0lQcmVwYXJlZFRyYW5zYWN0aW9ufSBUaGUgZGVjb2RlZCBgSVByZXBhcmVkVHJhbnNhY3Rpb25gIG9iamVjdFxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgcHJpdmF0ZSBkZWNvZGVQcmVwYXJlZFRyYW5zYWN0aW9uKGJhc2U2NDogc3RyaW5nKTogSVByZXBhcmVkVHJhbnNhY3Rpb24ge1xuICAgIGNvbnN0IGJ5dGVzID0gdGhpcy5mcm9tQmFzZTY0KGJhc2U2NCk7XG4gICAgcmV0dXJuIFByZXBhcmVkVHJhbnNhY3Rpb24uZnJvbUJpbmFyeShieXRlcyk7XG4gIH1cblxuICAvKipcbiAgICogQ29tcHV0ZXMgYSBkZXRlcm1pbmlzdGljIGNvbWJpbmVkIGhhc2ggZnJvbSBhbiBhcnJheSBvZiBpbmRpdmlkdWFsIENhbnRvbi1zdHlsZSBTSEEtMjU2IGhhc2hlc1xuICAgKlxuICAgKiBFYWNoIGhhc2ggaXMgZGVjb2RlZCBmcm9tIGhleCwgc29ydGVkIGxleGljb2dyYXBoaWNhbGx5IChieSBoZXgpLCBhbmQgcHJlZml4ZWQgd2l0aCBpdHMgbGVuZ3RoXG4gICAqIFRoZSBmaW5hbCBidWZmZXIgaW5jbHVkZXMgdGhlIG51bWJlciBvZiBoYXNoZXMgZm9sbG93ZWQgYnkgZWFjaCAobGVuZ3RoLXByZWZpeGVkKSBoYXNoXG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nW119IGhhc2hlcyAtIEFuIGFycmF5IG9mIENhbnRvbi1wcmVmaXhlZCBTSEEtMjU2IGhhc2hlcyBpbiBoZXhhZGVjaW1hbCBzdHJpbmcgZm9ybWF0XG4gICAqIEByZXR1cm5zIHtCdWZmZXJ9IEEgYmluYXJ5IGJ1ZmZlciByZXByZXNlbnRpbmcgdGhlIGNvbWJpbmVkIGhhc2ggaW5wdXRcbiAgICovXG4gIHByaXZhdGUgY29tcHV0ZU11bHRpSGFzaEZvclRvcG9sb2d5KGhhc2hlczogc3RyaW5nW10pOiBCdWZmZXIge1xuICAgIGNvbnN0IHNvcnRlZEhhc2hlcyA9IGhhc2hlc1xuICAgICAgLm1hcCgoaGV4KSA9PiBCdWZmZXIuZnJvbShoZXgsICdoZXgnKSlcbiAgICAgIC5zb3J0KChhLCBiKSA9PiBhLnRvU3RyaW5nKCdoZXgnKS5sb2NhbGVDb21wYXJlKGIudG9TdHJpbmcoJ2hleCcpKSk7XG5cbiAgICBjb25zdCBudW1IYXNoZXNCeXRlcyA9IHRoaXMuZW5jb2RlSW50MzIoc29ydGVkSGFzaGVzLmxlbmd0aCk7XG4gICAgY29uc3QgcGFydHM6IEJ1ZmZlcltdID0gW251bUhhc2hlc0J5dGVzXTtcblxuICAgIGZvciAoY29uc3QgaCBvZiBzb3J0ZWRIYXNoZXMpIHtcbiAgICAgIGNvbnN0IGxlbmd0aEJ5dGVzID0gdGhpcy5lbmNvZGVJbnQzMihoLmxlbmd0aCk7XG4gICAgICBwYXJ0cy5wdXNoKGxlbmd0aEJ5dGVzLCBoKTtcbiAgICB9XG5cbiAgICByZXR1cm4gQnVmZmVyLmNvbmNhdChwYXJ0cyk7XG4gIH1cblxuICAvKipcbiAgICogRW5jb2RlcyBhIDMyLWJpdCBzaWduZWQgaW50ZWdlciBpbnRvIGEgNC1ieXRlIGJpZy1lbmRpYW4gQnVmZmVyXG4gICAqXG4gICAqIEBwYXJhbSB7bnVtYmVyfSB2YWx1ZSAtIFRoZSBpbnRlZ2VyIHRvIGVuY29kZVxuICAgKiBAcmV0dXJucyB7QnVmZmVyfSBBIDQtYnl0ZSBidWZmZXIgcmVwcmVzZW50aW5nIHRoZSBpbnRlZ2VyIGluIGJpZy1lbmRpYW4gZm9ybWF0XG4gICAqL1xuICBwcml2YXRlIGVuY29kZUludDMyKHZhbHVlOiBudW1iZXIpOiBCdWZmZXIge1xuICAgIGNvbnN0IGJ1ZiA9IEJ1ZmZlci5hbGxvYyg0KTtcbiAgICBidWYud3JpdGVJbnQzMkJFKHZhbHVlLCAwKTtcbiAgICByZXR1cm4gYnVmO1xuICB9XG5cbiAgLyoqXG4gICAqIENvbnZlcnQgdG8gY2FudG9uIHJhdyB1bml0c1xuICAgKiBAcGFyYW0ge0JpZ051bWJlcn0gdmFsdWVcbiAgICogQHJldHVybnMge1N0cmluZ30gdGhlIGNvbnZlcnRlZCByYXcgY2FudG9uIHVuaXRzXG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBwcml2YXRlIGNvbnZlcnRBbW91bnRUb0xvd2VzdFVuaXQodmFsdWU6IEJpZ051bWJlcik6IHN0cmluZyB7XG4gICAgcmV0dXJuIHZhbHVlLm11bHRpcGxpZWRCeShuZXcgQmlnTnVtYmVyKDEwKS5wb3coMTApKS50b0ZpeGVkKDApO1xuICB9XG5cbiAgaXNQbGFpbk9iamVjdCh2YWx1ZTogdW5rbm93bik6IHZhbHVlIGlzIFJlY29yZDxzdHJpbmcsIHVua25vd24+IHtcbiAgICByZXR1cm4gdHlwZW9mIHZhbHVlID09PSAnb2JqZWN0JyAmJiB2YWx1ZSAhPT0gbnVsbCAmJiAhQXJyYXkuaXNBcnJheSh2YWx1ZSk7XG4gIH1cblxuICBwcml2YXRlIGFyZU51bWVyaWNTdHJpbmdzKGE6IHN0cmluZywgYjogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgY29uc3QgbnVtZXJpY1JlID0gL14tP1xcZCsoXFwuXFxkKyk/JC87XG4gICAgcmV0dXJuIG51bWVyaWNSZS50ZXN0KGEpICYmIG51bWVyaWNSZS50ZXN0KGIpO1xuICB9XG5cbiAgcHJpdmF0ZSBpc0lzb1RpbWVzdGFtcCh2YWx1ZTogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgaWYgKCEvXlxcZHs0fS1cXGR7Mn0tXFxkezJ9VFxcZHsyfTpcXGR7Mn06XFxkezJ9KFxcLlxcZHsxLDN9KT9aJC8udGVzdCh2YWx1ZSkpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgcmV0dXJuIE51bWJlci5pc0Zpbml0ZShEYXRlLnBhcnNlKHZhbHVlKSk7XG4gIH1cblxuICBwcml2YXRlIGlzSW50ZWdlclN0cmluZyh2YWx1ZTogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIC9eXFxkKyQvLnRlc3QodmFsdWUpO1xuICB9XG5cbiAgcHJpdmF0ZSBkZXNjcmliZVR5cGUodmFsdWU6IHVua25vd24pOiBzdHJpbmcge1xuICAgIGlmICh2YWx1ZSA9PT0gbnVsbCkgcmV0dXJuICdudWxsJztcbiAgICBpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHJldHVybiAnYXJyYXknO1xuICAgIHJldHVybiB0eXBlb2YgdmFsdWU7XG4gIH1cblxuICBwcml2YXRlIHN0cmluZ2lmeUZvckVycm9yKHZhbHVlOiB1bmtub3duKTogc3RyaW5nIHtcbiAgICB0cnkge1xuICAgICAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KHZhbHVlKTtcbiAgICB9IGNhdGNoIHtcbiAgICAgIHJldHVybiBTdHJpbmcodmFsdWUpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgdGhlIGJpdGdvIHRva2VuIG5hbWUgdXNpbmcgdGhlIG9uLWNoYWluIGluc3RydW1lbnQgZGV0YWlsc1xuICAgKiBAcGFyYW0gY29udHJhY3RBZGRyZXNzIC0gdGhlIGNvbnRyYWN0IGFkZHJlc3Mgb2YgdGhlIGZvcm0sIGBpbnN0cnVtZW50QWRtaW46aW5zdHJ1bWVudElkYFxuICAgKiBAcmV0dXJucyB0b2tlbk5hbWUgaWYgY29udHJhY3RBZGRyZXNzIG1hdGNoZXMgd2l0aCBhbnkgc3VwcG9ydGVkIGNhbnRvbiB0b2tlbnNcbiAgICovXG4gIHByaXZhdGUgZmluZFRva2VuTmFtZUJ5Q29udHJhY3RBZGRyZXNzKGNvbnRyYWN0QWRkcmVzczogc3RyaW5nKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgICBpZiAoY29udHJhY3RBZGRyZXNzLmluY2x1ZGVzKCdBbXVsZXQnKSkge1xuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG4gICAgY29uc3QgY2FudG9uVG9rZW4gPSBjb2luc1xuICAgICAgLmZpbHRlcigoY29pbikgPT4gY29pbiBpbnN0YW5jZW9mIENhbnRvblRva2VuICYmIGNvaW4uY29udHJhY3RBZGRyZXNzID09PSBjb250cmFjdEFkZHJlc3MpXG4gICAgICAubWFwKChjb2luKSA9PiBjb2luIGFzIENhbnRvblRva2VuKTtcbiAgICByZXR1cm4gY2FudG9uVG9rZW4gPyBjYW50b25Ub2tlblswXS5uYW1lIDogdW5kZWZpbmVkO1xuICB9XG59XG5cbmNvbnN0IHV0aWxzID0gbmV3IFV0aWxzKCk7XG5cbmV4cG9ydCBkZWZhdWx0IHV0aWxzO1xuIl19
|
package/dist/test/resources.d.ts
CHANGED
|
@@ -286,4 +286,16 @@ export declare const CosignDelegationAcceptPrepareResponse: {
|
|
|
286
286
|
hashingDetails: null;
|
|
287
287
|
};
|
|
288
288
|
export declare const CosignDelegationAcceptRawTransaction = "eyJwcmVwYXJlQ29tbWFuZFJlc3BvbnNlIjp7InByZXBhcmVkVHJhbnNhY3Rpb24iOiJDcWNQQ2dNeUxqRVNBVEFheWdZS0FUSENQc01HQ3NBR0NnTXlMakVTUWpBd01XSmtZVEV3WXpBNFpURm1ORFZsWlRWbFpURmxNbUZqWW1Vek9Ua3dOR0poTVdKbU9UY3pObU00TVRSaVlUZ3hORE5qTVdReU5HWTJaVFl5T0Rrd054b1BkSEpoWkdWM1pXSXRaR0ZrTFhZeEltNEtRRGd5WXpFd056VmhNekEzTlRGbE9URXpZVEJsTnpjeE0yTTBNRFZsTm1aak9XVmpaR0l6Tm1Fd01USTFORFZsTVdZNFlqTXhNREEwTURkaVlqUTRaVE1TRlZSWExrOXdaWEpoZEc5eUxsWXhMa052YzJsbmJob1RRMjl6YVdkdWFXNW5SR1ZzWldkaGRHbHZiaXF0QW5LcUFncHVDa0E0TW1NeE1EYzFZVE13TnpVeFpUa3hNMkV3WlRjM01UTmpOREExWlRabVl6bGxZMlJpTXpaaE1ERXlOVFExWlRGbU9HSXpNVEF3TkRBM1ltSTBPR1V6RWhWVVZ5NVBjR1Z5WVhSdmNpNVdNUzVEYjNOcFoyNGFFME52YzJsbmJtbHVaMFJsYkdWbllYUnBiMjRTWHdvRllXUnRhVzRTVmpwVWNtRjJhUzF1WlhjdGNHRnlkSGs2T2pFeU1qQTVNbVUzWkRNellXTXhNR013WmpOa05UVTVOell6TkRKbU16YzFOVFZrWmpBMVpHRTFZamMwTWprMU5tUTFObUUyTW1GbE1qTTJOemMyT1RBM09XUXlFbGNLQm5OcFoyNWxjaEpOT2tzeE1qSXdPRG82TVRJeU1EZ3pNRGd5WlRsaFpqRTFObVpsWVdWaU4yRm1aRE0yTTJFd1pXVTFabVpoTVdaa01UWXdPVFEzWWpZME4yRXhNemxoTjJVd1l6SmxaRGM0WmpWa1l6Y3lTekV5TWpBNE9qb3hNakl3T0RNd09ESmxPV0ZtTVRVMlptVmhaV0kzWVdaa016WXpZVEJsWlRWbVptRXhabVF4TmpBNU5EZGlOalEzWVRFek9XRTNaVEJqTW1Wa056aG1OV1JqTnpKVWNtRjJhUzF1WlhjdGNHRnlkSGs2T2pFeU1qQTVNbVUzWkRNellXTXhNR013WmpOa05UVTVOell6TkRKbU16YzFOVFZrWmpBMVpHRTFZamMwTWprMU5tUTFObUUyTW1GbE1qTTJOemMyT1RBM09XUXlPa3N4TWpJd09EbzZNVEl5TURnek1EZ3laVGxoWmpFMU5tWmxZV1ZpTjJGbVpETTJNMkV3WldVMVptWmhNV1prTVRZd09UUTNZalkwTjJFeE16bGhOMlV3WXpKbFpEYzRaalZrWXpjNlZISmhkbWt0Ym1WM0xYQmhjblI1T2pveE1qSXdPVEpsTjJRek0yRmpNVEJqTUdZelpEVTFPVGMyTXpReVpqTTNOVFUxWkdZd05XUmhOV0kzTkRJNU5UWmtOVFpoTmpKaFpUSXpOamMzTmprd056bGtNaHFGQ0FvQk1NSSsvZ2NhK3djS0F6SXVNUktLQVRBd05UQmpOakl6TW1Rek9XVTFaREZsTkdRNU1UWmlNbVJpWlRsa00yUTJOR0ZrWlRjMFlqUXlaRGxpT1RReU9Ea3hOamhpTVRNNE5tRTFOak5rWVRVNU1XTmhNVEl4TWpJd05UTXlNRGRoWVdGa1ltWmlZVGhsWVRRNU5HWTVOV1ZoWTJJeE1UQTRZelZoWmpjMlpXWmlORGs1T0RrM01XWXlZemxqWkRjMk5UazFOalUzTnpBNE5Cb1BkSEpoWkdWM1pXSXRaR0ZrTFhZeEluWUtRRGd5WXpFd056VmhNekEzTlRGbE9URXpZVEJsTnpjeE0yTTBNRFZsTm1aak9XVmpaR0l6Tm1Fd01USTFORFZsTVdZNFlqTXhNREEwTURkaVlqUTRaVE1TRlZSWExrOXdaWEpoZEc5eUxsWXhMa052YzJsbmJob2JRMjl6YVdkdWFXNW5SR1ZzWldkaGRHbHZibEJ5YjNCdmMyRnNLbFJ5WVhacExXNWxkeTF3WVhKMGVUbzZNVEl5TURreVpUZGtNek5oWXpFd1l6Qm1NMlExTlRrM05qTTBNbVl6TnpVMU5XUm1NRFZrWVRWaU56UXlPVFUyWkRVMllUWXlZV1V5TXpZM056WTVNRGM1WkRJeVN6RXlNakE0T2pveE1qSXdPRE13T0RKbE9XRm1NVFUyWm1WaFpXSTNZV1prTXpZellUQmxaVFZtWm1FeFptUXhOakE1TkRkaU5qUTNZVEV6T1dFM1pUQmpNbVZrTnpobU5XUmpOekpVY21GMmFTMXVaWGN0Y0dGeWRIazZPakV5TWpBNU1tVTNaRE16WVdNeE1HTXdaak5rTlRVNU56WXpOREptTXpjMU5UVmtaakExWkdFMVlqYzBNamsxTm1RMU5tRTJNbUZsTWpNMk56YzJPVEEzT1dReU9rc3hNakl3T0RvNk1USXlNRGd6TURneVpUbGhaakUxTm1abFlXVmlOMkZtWkRNMk0yRXdaV1UxWm1aaE1XWmtNVFl3T1RRM1lqWTBOMkV4TXpsaE4yVXdZekpsWkRjNFpqVmtZemRLSWtOdmMybG5ibWx1WjBSbGJHVm5ZWFJwYjI1UWNtOXdiM05oYkY5QlkyTmxjSFJTZ1FGeWZ3cDlDa0E0TW1NeE1EYzFZVE13TnpVeFpUa3hNMkV3WlRjM01UTmpOREExWlRabVl6bGxZMlJpTXpaaE1ERXlOVFExWlRGbU9HSXpNVEF3TkRBM1ltSTBPR1V6RWhWVVZ5NVBjR1Z5WVhSdmNpNVdNUzVEYjNOcFoyNGFJa052YzJsbmJtbHVaMFJsYkdWbllYUnBiMjVRY205d2IzTmhiRjlCWTJObGNIUllBV0lCTVdycUFYTG5BUXFFQVFwQU9ESmpNVEEzTldFek1EYzFNV1U1TVROaE1HVTNOekV6WXpRd05XVTJabU01WldOa1lqTTJZVEF4TWpVME5XVXhaamhpTXpFd01EUXdOMkppTkRobE14SVZWRmN1VDNCbGNtRjBiM0l1VmpFdVEyOXphV2R1R2lsRGIzTnBaMjVwYm1kRVpXeGxaMkYwYVc5dVVISnZjRzl6WVd4ZlFXTmpaWEIwWDFKbGMzVnNkQkplQ2haamIzTnBaMjVwYm1kRVpXeGxaMkYwYVc5dVEybGtFa1JLUWpBd01XSmtZVEV3WXpBNFpURm1ORFZsWlRWbFpURmxNbUZqWW1Vek9Ua3dOR0poTVdKbU9UY3pObU00TVRSaVlUZ3hORE5qTVdReU5HWTJaVFl5T0Rrd055SWlFaURleFJFUEVQNVh2NHpiRVkyZkNiT2NWWmkwRGY3akYyY2M0bm51MndKdHNTSWtDQUVTSUpzN3hVYW5JV1dUMXdaaXBITUJzdWx2WEJuQUU2UjFhbUlSZ1N3Q2lCalVFcjBORW5NS1N6RXlNakE0T2pveE1qSXdPRE13T0RKbE9XRm1NVFUyWm1WaFpXSTNZV1prTXpZellUQmxaVFZtWm1FeFptUXhOakE1TkRkaU5qUTNZVEV6T1dFM1pUQmpNbVZrTnpobU5XUmpOeElrWVRReU9USXlOVFF0TXpZeE1DMDBaR015TFRrelpUQXROVGt3T0daaU9XTmpaVEZtR2xObmJHOWlZV3d0Wkc5dFlXbHVPam94TWpJd1ltVTFPR015T1dVMk5XUmxOREJpWmpJM00ySmxNV1JqTW1JeU5qWmtORE5oT1dFd01ESmxZVFZpTVRnNU5UVmhaV1ZtTjJGaFl6ZzRNV0ppTkRjeFlTb2tOVEJpTldSa09EQXRZV0ZoT1MwMFl6SmxMVGt6TmpNdE5UVXpPVEExTmpGbE1XVTFNS2pUaHNPTy9KUURPc0VMQ3N3R0NnTXlMakVTaWdFd01EVXdZell5TXpKa016bGxOV1F4WlRSa09URTJZakprWW1VNVpETmtOalJoWkdVM05HSTBNbVE1WWprME1qZzVNVFk0WWpFek9EWmhOVFl6WkdFMU9URmpZVEV5TVRJeU1EVXpNakEzWVdGaFpHSm1ZbUU0WldFME9UUm1PVFZsWVdOaU1URXdPR00xWVdZM05tVm1ZalE1T1RnNU56Rm1NbU01WTJRM05qVTVOVFkxTnpjd09EUWFEM1J5WVdSbGQyVmlMV1JoWkMxMk1TSjJDa0E0TW1NeE1EYzFZVE13TnpVeFpUa3hNMkV3WlRjM01UTmpOREExWlRabVl6bGxZMlJpTXpaaE1ERXlOVFExWlRGbU9HSXpNVEF3TkRBM1ltSTBPR1V6RWhWVVZ5NVBjR1Z5WVhSdmNpNVdNUzVEYjNOcFoyNGFHME52YzJsbmJtbHVaMFJsYkdWbllYUnBiMjVRY205d2IzTmhiQ3ExQW5LeUFncDJDa0E0TW1NeE1EYzFZVE13TnpVeFpUa3hNMkV3WlRjM01UTmpOREExWlRabVl6bGxZMlJpTXpaaE1ERXlOVFExWlRGbU9HSXpNVEF3TkRBM1ltSTBPR1V6RWhWVVZ5NVBjR1Z5WVhSdmNpNVdNUzVEYjNOcFoyNGFHME52YzJsbmJtbHVaMFJsYkdWbllYUnBiMjVRY205d2IzTmhiQkpmQ2dWaFpHMXBiaEpXT2xSeVlYWnBMVzVsZHkxd1lYSjBlVG82TVRJeU1Ea3laVGRrTXpOaFl6RXdZekJtTTJRMU5UazNOak0wTW1Zek56VTFOV1JtTURWa1lUVmlOelF5T1RVMlpEVTJZVFl5WVdVeU16WTNOelk1TURjNVpESVNWd29HYzJsbmJtVnlFazA2U3pFeU1qQTRPam94TWpJd09ETXdPREpsT1dGbU1UVTJabVZoWldJM1lXWmtNell6WVRCbFpUVm1abUV4Wm1ReE5qQTVORGRpTmpRM1lURXpPV0UzWlRCak1tVmtOemhtTldSak56SlVjbUYyYVMxdVpYY3RjR0Z5ZEhrNk9qRXlNakE1TW1VM1pETXpZV014TUdNd1pqTmtOVFU1TnpZek5ESm1NemMxTlRWa1pqQTFaR0UxWWpjME1qazFObVExTm1FMk1tRmxNak0yTnpjMk9UQTNPV1F5T2tzeE1qSXdPRG82TVRJeU1EZ3pNRGd5WlRsaFpqRTFObVpsWVdWaU4yRm1aRE0yTTJFd1pXVTFabVpoTVdaa01UWXdPVFEzWWpZME4yRXhNemxoTjJVd1l6SmxaRGM0WmpWa1l6YzZWSEpoZG1rdGJtVjNMWEJoY25SNU9qb3hNakl3T1RKbE4yUXpNMkZqTVRCak1HWXpaRFUxT1RjMk16UXlaak0zTlRVMVpHWXdOV1JoTldJM05ESTVOVFprTlRaaE5qSmhaVEl6TmpjM05qa3dOemxrTXNBK3R0UDZwUC83bEFQU1B1UUVDZ015TGpFUzNBUUtSUUJReGlNdE9lWFI1TmtXc3R2cDA5WkszblMwTFp1VUtKRm9zVGhxVmoybGtjb1NFaUJUSUhxcTIvdW82a2xQbGVyTEVRakZyM2J2dEptSmNmTEp6WFpaVmxkd2hCSVBkSEpoWkdWM1pXSXRaR0ZrTFhZeEdua0tRRGd5WXpFd056VmhNekEzTlRGbE9URXpZVEJsTnpjeE0yTTBNRFZsTm1aak9XVmpaR0l6Tm1Fd01USTFORFZsTVdZNFlqTXhNREEwTURkaVlqUTRaVE1TQWxSWEVnaFBjR1Z5WVhSdmNoSUNWakVTQmtOdmMybG5iaG9iUTI5emFXZHVhVzVuUkdWc1pXZGhkR2x2YmxCeWIzQnZjMkZzSXE0QmFxc0JDbGdLVmpwVWNtRjJhUzF1WlhjdGNHRnlkSGs2T2pFeU1qQTVNbVUzWkRNellXTXhNR013WmpOa05UVTVOell6TkRKbU16YzFOVFZrWmpBMVpHRTFZamMwTWprMU5tUTFObUUyTW1GbE1qTTJOemMyT1RBM09XUXlDazhLVFRwTE1USXlNRGc2T2pFeU1qQTRNekE0TW1VNVlXWXhOVFptWldGbFlqZGhabVF6TmpOaE1HVmxOV1ptWVRGbVpERTJNRGswTjJJMk5EZGhNVE01WVRkbE1HTXlaV1EzT0dZMVpHTTNLbFJ5WVhacExXNWxkeTF3WVhKMGVUbzZNVEl5TURreVpUZGtNek5oWXpFd1l6Qm1NMlExTlRrM05qTTBNbVl6TnpVMU5XUm1NRFZrWVRWaU56UXlPVFUyWkRVMllUWXlZV1V5TXpZM056WTVNRGM1WkRJeVN6RXlNakE0T2pveE1qSXdPRE13T0RKbE9XRm1NVFUyWm1WaFpXSTNZV1prTXpZellUQmxaVFZtWm1FeFptUXhOakE1TkRkaU5qUTNZVEV6T1dFM1pUQmpNbVZrTnpobU5XUmpOem0ycVo3MDMxTUdBRUlxQ2lZS0pBZ0JFaUJEUzE4NWpwVmFHRm1KMnZYNTRuRjNadFRXVFhpU1VGWEwvZEw1RVNYTmxoQWUiLCJwcmVwYXJlZFRyYW5zYWN0aW9uSGFzaCI6ImQ2aVRkK1ZqWUEvY0p3N3BqK0NhS1ZTczBNcU1YVjlMWk5VNDVJajExODg9IiwiaGFzaGluZ1NjaGVtZVZlcnNpb24iOiJIQVNISU5HX1NDSEVNRV9WRVJTSU9OX1YyIiwiaGFzaGluZ0RldGFpbHMiOm51bGx9LCJ0eFR5cGUiOiJDb3NpZ25EZWxlZ2F0aW9uQWNjZXB0IiwicHJlcGFyZWRUcmFuc2FjdGlvbiI6IiIsInBhcnR5U2lnbmF0dXJlcyI6eyJzaWduYXR1cmVzIjpbXX0sImRlZHVwbGljYXRpb25QZXJpb2QiOnsiRW1wdHkiOnt9fSwiaGFzaGluZ1NjaGVtZVZlcnNpb24iOiJIQVNISU5HX1NDSEVNRV9WRVJTSU9OX1YyIiwibWluTGVkZ2VyVGltZSI6eyJ0aW1lIjp7IkVtcHR5Ijp7fX19LCJzdWJtaXNzaW9uSWQiOiIzOTM1YTA2ZC0zYjAzLTQxYmUtOTlhNS05NWIyZWNhYWJmN2QifQ==";
|
|
289
|
+
export declare const CosignDelegationAcceptTemplePrepareResponse: {
|
|
290
|
+
preparedTransaction: string;
|
|
291
|
+
preparedTransactionHash: string;
|
|
292
|
+
hashingSchemeVersion: string;
|
|
293
|
+
hashingDetails: null;
|
|
294
|
+
costEstimation: {
|
|
295
|
+
estimationTimestamp: string;
|
|
296
|
+
confirmationRequestTrafficCostEstimation: number;
|
|
297
|
+
confirmationResponseTrafficCostEstimation: number;
|
|
298
|
+
totalTrafficCostEstimation: number;
|
|
299
|
+
};
|
|
300
|
+
};
|
|
289
301
|
//# sourceMappingURL=resources.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resources.d.ts","sourceRoot":"","sources":["../../test/resources.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,0BAA0B,qz+CAC6w+C,CAAC;AAErz+C,eAAO,MAAM,wBAAwB,6s4CACuq4C,CAAC;AAE7s4C,eAAO,MAAM,wBAAwB,qzhDAC+whD,CAAC;AAErzhD,eAAO,MAAM,2BAA2B,66gDACo4gD,CAAC;AAE76gD,eAAO,MAAM,wBAAwB;;;;;CASpC,CAAC;AAEF,eAAO,MAAM,wBAAwB,i2EAC2zE,CAAC;AAEj2E,eAAO,MAAM,cAAc,yxpEAC6vpE,CAAC;AAEzxpE,eAAO,MAAM,QAAQ;;;CAGpB,CAAC;AAEF,eAAO,MAAM,aAAa;;;;CAIzB,CAAC;AAEF,eAAO,MAAM,sBAAsB,qggSACi+/R,CAAC;AAErggS,eAAO,MAAM,gBAAgB;;;CAG5B,CAAC;AAEF,eAAO,MAAM,+BAA+B;;;;;CAU3C,CAAC;AAEF,eAAO,MAAM,yBAAyB;;;;;CAMrC,CAAC;AAEF,eAAO,MAAM,qBAAqB;;;CAGjC,CAAC;AAEF,eAAO,MAAM,iBAAiB;;;CAG7B,CAAC;AAEF,eAAO,MAAM,iCAAiC;;;;;CAM7C,CAAC;AAEF,eAAO,MAAM,wCAAwC;;;;;CAOpD,CAAC;AAEF,eAAO,MAAM,qCAAqC;;;;;;;;;;;CAYjD,CAAC;AAEF,eAAO,MAAM,gBAAgB;;;;;;;CAS5B,CAAC;AAEF,eAAO,MAAM,mBAAmB;;;;;CAK/B,CAAC;AAEF,eAAO,MAAM,sBAAsB;;;CAGlC,CAAC;AAEF,eAAO,MAAM,kBAAkB;;;;CAK9B,CAAC;AAEF,eAAO,MAAM,iBAAiB;;;;CAK7B,CAAC;AAEF,eAAO,MAAM,mBAAmB;;;;CAK/B,CAAC;AAEF,eAAO,MAAM,0BAA0B;;;;;;CAOtC,CAAC;AAEF,eAAO,MAAM,gCAAgC;;;;;;;;;;;CAY5C,CAAC;AAEF,eAAO,MAAM,kCAAkC;;;;;;;;;;;CAY9C,CAAC;AAEF,eAAO,MAAM,mCAAmC;;;;;;;;;;;CAY/C,CAAC;AAEF,eAAO,MAAM,gCAAgC;;;;;;;;;;;CAY5C,CAAC;AAEF,eAAO,MAAM,iCAAiC;;;;;;;;;;;CAY7C,CAAC;AAEF,eAAO,MAAM,kCAAkC;;;;;;;;;;;CAY9C,CAAC;AAEF,eAAO,MAAM,2CAA2C;;;;;;;;;;;CAYvD,CAAC;AAEF,eAAO,MAAM,gDAAgD;;;;;;;;;;;CAY5D,CAAC;AAEF,eAAO,MAAM,yBAAyB,y0lCACkylC,CAAC;AAEz0lC,eAAO,MAAM,iCAAiC;;;;;CAM7C,CAAC;AAEF,eAAO,MAAM,4BAA4B,qhzDAC2+yD,CAAC;AAErhzD,eAAO,MAAM,gCAAgC;;;;;CAM5C,CAAC;AAEF,eAAO,MAAM,4BAA4B,qy5BAC2v5B,CAAC;AAEry5B,eAAO,MAAM,sBAAsB;;;;;CAMlC,CAAC;AAEF,eAAO,MAAM,uCAAuC;;;;;;;;;;;CAYnD,CAAC;AAEF,eAAO,MAAM,qCAAqC;;;;;;;;;;;CAYjD,CAAC;AAEF,eAAO,MAAM,uCAAuC;;;;;;;;;;;CAYnD,CAAC;AAEF,eAAO,MAAM,WAAW;;;;;;;CAOvB,CAAC;AAEF,eAAO,MAAM,oCAAoC;;;;CAKhD,CAAC;AAEF,eAAO,MAAM,kCAAkC;;;;CAK9C,CAAC;AAEF,eAAO,MAAM,qCAAqC;;;;;CAMjD,CAAC;AAEF,eAAO,MAAM,oCAAoC,6hOAC2+N,CAAC"}
|
|
1
|
+
{"version":3,"file":"resources.d.ts","sourceRoot":"","sources":["../../test/resources.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,0BAA0B,qz+CAC6w+C,CAAC;AAErz+C,eAAO,MAAM,wBAAwB,6s4CACuq4C,CAAC;AAE7s4C,eAAO,MAAM,wBAAwB,qzhDAC+whD,CAAC;AAErzhD,eAAO,MAAM,2BAA2B,66gDACo4gD,CAAC;AAE76gD,eAAO,MAAM,wBAAwB;;;;;CASpC,CAAC;AAEF,eAAO,MAAM,wBAAwB,i2EAC2zE,CAAC;AAEj2E,eAAO,MAAM,cAAc,yxpEAC6vpE,CAAC;AAEzxpE,eAAO,MAAM,QAAQ;;;CAGpB,CAAC;AAEF,eAAO,MAAM,aAAa;;;;CAIzB,CAAC;AAEF,eAAO,MAAM,sBAAsB,qggSACi+/R,CAAC;AAErggS,eAAO,MAAM,gBAAgB;;;CAG5B,CAAC;AAEF,eAAO,MAAM,+BAA+B;;;;;CAU3C,CAAC;AAEF,eAAO,MAAM,yBAAyB;;;;;CAMrC,CAAC;AAEF,eAAO,MAAM,qBAAqB;;;CAGjC,CAAC;AAEF,eAAO,MAAM,iBAAiB;;;CAG7B,CAAC;AAEF,eAAO,MAAM,iCAAiC;;;;;CAM7C,CAAC;AAEF,eAAO,MAAM,wCAAwC;;;;;CAOpD,CAAC;AAEF,eAAO,MAAM,qCAAqC;;;;;;;;;;;CAYjD,CAAC;AAEF,eAAO,MAAM,gBAAgB;;;;;;;CAS5B,CAAC;AAEF,eAAO,MAAM,mBAAmB;;;;;CAK/B,CAAC;AAEF,eAAO,MAAM,sBAAsB;;;CAGlC,CAAC;AAEF,eAAO,MAAM,kBAAkB;;;;CAK9B,CAAC;AAEF,eAAO,MAAM,iBAAiB;;;;CAK7B,CAAC;AAEF,eAAO,MAAM,mBAAmB;;;;CAK/B,CAAC;AAEF,eAAO,MAAM,0BAA0B;;;;;;CAOtC,CAAC;AAEF,eAAO,MAAM,gCAAgC;;;;;;;;;;;CAY5C,CAAC;AAEF,eAAO,MAAM,kCAAkC;;;;;;;;;;;CAY9C,CAAC;AAEF,eAAO,MAAM,mCAAmC;;;;;;;;;;;CAY/C,CAAC;AAEF,eAAO,MAAM,gCAAgC;;;;;;;;;;;CAY5C,CAAC;AAEF,eAAO,MAAM,iCAAiC;;;;;;;;;;;CAY7C,CAAC;AAEF,eAAO,MAAM,kCAAkC;;;;;;;;;;;CAY9C,CAAC;AAEF,eAAO,MAAM,2CAA2C;;;;;;;;;;;CAYvD,CAAC;AAEF,eAAO,MAAM,gDAAgD;;;;;;;;;;;CAY5D,CAAC;AAEF,eAAO,MAAM,yBAAyB,y0lCACkylC,CAAC;AAEz0lC,eAAO,MAAM,iCAAiC;;;;;CAM7C,CAAC;AAEF,eAAO,MAAM,4BAA4B,qhzDAC2+yD,CAAC;AAErhzD,eAAO,MAAM,gCAAgC;;;;;CAM5C,CAAC;AAEF,eAAO,MAAM,4BAA4B,qy5BAC2v5B,CAAC;AAEry5B,eAAO,MAAM,sBAAsB;;;;;CAMlC,CAAC;AAEF,eAAO,MAAM,uCAAuC;;;;;;;;;;;CAYnD,CAAC;AAEF,eAAO,MAAM,qCAAqC;;;;;;;;;;;CAYjD,CAAC;AAEF,eAAO,MAAM,uCAAuC;;;;;;;;;;;CAYnD,CAAC;AAEF,eAAO,MAAM,WAAW;;;;;;;CAOvB,CAAC;AAEF,eAAO,MAAM,oCAAoC;;;;CAKhD,CAAC;AAEF,eAAO,MAAM,kCAAkC;;;;CAK9C,CAAC;AAEF,eAAO,MAAM,qCAAqC;;;;;CAMjD,CAAC;AAEF,eAAO,MAAM,oCAAoC,6hOAC2+N,CAAC;AAE7hO,eAAO,MAAM,2CAA2C;;;;;;;;;;;CAYvD,CAAC"}
|