@bitgo-beta/sdk-coin-canton 1.0.1-beta.675 → 1.0.1-beta.677
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/canton.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"canton.d.ts","sourceRoot":"","sources":["../../src/canton.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,uBAAuB,EACvB,QAAQ,EAER,SAAS,EAET,mBAAmB,EAMnB,OAAO,EACP,YAAY,EACZ,YAAY,EAEZ,iBAAiB,EACjB,uBAAuB,EACvB,eAAe,EACf,oCAAoC,EACpC,iBAAiB,EACjB,sBAAsB,EACtB,qBAAqB,EACrB,sBAAsB,IAAI,0BAA0B,EACpD,iBAAiB,EACjB,eAAe,EACf,uBAAuB,EACvB,wBAAwB,EACzB,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EAAE,QAAQ,IAAI,eAAe,EAAS,MAAM,qBAAqB,CAAC;AAOzE,MAAM,WAAW,sBAAuB,SAAQ,0BAA0B;IACxE,IAAI,EAAE,eAAe,CAAC;CACvB;AAED,MAAM,WAAW,yBAAyB;IACxC,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,uBAAwB,SAAQ,iBAAiB;IAChE,mBAAmB,CAAC,EAAE,mBAAmB,CAAC;CAC3C;AAED,qBAAa,MAAO,SAAQ,QAAQ;IAClC,SAAS,CAAC,QAAQ,CAAC,YAAY,EAAE,QAAQ,CAAC,eAAe,CAAC,CAAC;IAE3D,SAAS,aAAa,KAAK,EAAE,SAAS,EAAE,WAAW,CAAC,EAAE,QAAQ,CAAC,eAAe,CAAC;IAU/E,MAAM,CAAC,cAAc,CAAC,KAAK,EAAE,SAAS,EAAE,WAAW,CAAC,EAAE,QAAQ,CAAC,eAAe,CAAC,GAAG,QAAQ;IAI1F,OAAO,CAAC,UAAU;IAIlB,kBAAkB;IACX,aAAa,IAAI,MAAM;IAI9B,kBAAkB;IACX,QAAQ,IAAI,MAAM;IAIzB,kBAAkB;IACX,SAAS,IAAI,MAAM;IAI1B,kBAAkB;IACX,WAAW,IAAI,MAAM;IAI5B,kBAAkB;IAClB,WAAW,IAAI,OAAO;IAItB,kBAAkB;IAClB,sBAAsB,IAAI,OAAO;IAIjC,oBAAoB;IACpB,sBAAsB,IAAI,YAAY;IAItC,oBAAoB;IACpB,uCAAuC,IAAI,OAAO;IAIlD,eAAe,IAAI,YAAY;IAI/B,kBAAkB;IACZ,iBAAiB,CAAC,MAAM,EAAE,wBAAwB,GAAG,OAAO,CAAC,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"canton.d.ts","sourceRoot":"","sources":["../../src/canton.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,uBAAuB,EACvB,QAAQ,EAER,SAAS,EAET,mBAAmB,EAMnB,OAAO,EACP,YAAY,EACZ,YAAY,EAEZ,iBAAiB,EACjB,uBAAuB,EACvB,eAAe,EACf,oCAAoC,EACpC,iBAAiB,EACjB,sBAAsB,EACtB,qBAAqB,EACrB,sBAAsB,IAAI,0BAA0B,EACpD,iBAAiB,EACjB,eAAe,EACf,uBAAuB,EACvB,wBAAwB,EACzB,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EAAE,QAAQ,IAAI,eAAe,EAAS,MAAM,qBAAqB,CAAC;AAOzE,MAAM,WAAW,sBAAuB,SAAQ,0BAA0B;IACxE,IAAI,EAAE,eAAe,CAAC;CACvB;AAED,MAAM,WAAW,yBAAyB;IACxC,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,uBAAwB,SAAQ,iBAAiB;IAChE,mBAAmB,CAAC,EAAE,mBAAmB,CAAC;CAC3C;AAED,qBAAa,MAAO,SAAQ,QAAQ;IAClC,SAAS,CAAC,QAAQ,CAAC,YAAY,EAAE,QAAQ,CAAC,eAAe,CAAC,CAAC;IAE3D,SAAS,aAAa,KAAK,EAAE,SAAS,EAAE,WAAW,CAAC,EAAE,QAAQ,CAAC,eAAe,CAAC;IAU/E,MAAM,CAAC,cAAc,CAAC,KAAK,EAAE,SAAS,EAAE,WAAW,CAAC,EAAE,QAAQ,CAAC,eAAe,CAAC,GAAG,QAAQ;IAI1F,OAAO,CAAC,UAAU;IAIlB,kBAAkB;IACX,aAAa,IAAI,MAAM;IAI9B,kBAAkB;IACX,QAAQ,IAAI,MAAM;IAIzB,kBAAkB;IACX,SAAS,IAAI,MAAM;IAI1B,kBAAkB;IACX,WAAW,IAAI,MAAM;IAI5B,kBAAkB;IAClB,WAAW,IAAI,OAAO;IAItB,kBAAkB;IAClB,sBAAsB,IAAI,OAAO;IAIjC,oBAAoB;IACpB,sBAAsB,IAAI,YAAY;IAItC,oBAAoB;IACpB,uCAAuC,IAAI,OAAO;IAIlD,eAAe,IAAI,YAAY;IAI/B,kBAAkB;IACZ,iBAAiB,CAAC,MAAM,EAAE,wBAAwB,GAAG,OAAO,CAAC,OAAO,CAAC;IA+F3E,OAAO,CAAC,8BAA8B;IAoItC,OAAO,CAAC,iBAAiB;IAWzB,kBAAkB;IACZ,eAAe,CAAC,MAAM,EAAE,uBAAuB,GAAG,OAAO,CAAC,OAAO,CAAC;IAqBxE,kBAAkB;IACZ,gBAAgB,CAAC,MAAM,EAAE,uBAAuB,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAcnF,kBAAkB;IAClB,eAAe,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO;IAYvC,kBAAkB;IAClB,kBAAkB,CAAC,MAAM,EAAE,yBAAyB,GAAG,OAAO,CAAC,sBAAsB,CAAC;IAatF,kBAAkB;IAClB,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;IAIhC,kBAAkB;IAClB,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;IAMxC,kBAAkB;IAClB,wBAAwB,IAAI,qBAAqB;IAOjD,uBAAuB,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM;IAKrD,kBAAkB;IAClB,eAAe,CAAC,MAAM,EAAE,sBAAsB,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAI3E,kBAAkB;IAClB,iBAAiB,CAAC,EAAE,YAAY,EAAE,GAAG,EAAE,SAAS,EAAE,EAAE,uBAAuB,GAAG,IAAI;IAOlF,kBAAkB;IAClB,6BAA6B,CAAC,MAAM,EAAE,eAAe,EAAE,MAAM,EAAE,oCAAoC,GAAG,IAAI;CAsC3G"}
|
package/dist/src/canton.js
CHANGED
|
@@ -81,6 +81,7 @@ class Canton extends sdk_core_1.BaseCoin {
|
|
|
81
81
|
case sdk_core_1.TransactionType.AllocationAllocate:
|
|
82
82
|
case sdk_core_1.TransactionType.AllocationRequest:
|
|
83
83
|
case sdk_core_1.TransactionType.EndInvestorOnboardingOffer:
|
|
84
|
+
case sdk_core_1.TransactionType.AllocationAllocateWithdrawn:
|
|
84
85
|
// There is no recipient info to verify for these transaction types, so always return true.
|
|
85
86
|
return true;
|
|
86
87
|
case sdk_core_1.TransactionType.CantonCommand:
|
|
@@ -374,4 +375,4 @@ class Canton extends sdk_core_1.BaseCoin {
|
|
|
374
375
|
}
|
|
375
376
|
}
|
|
376
377
|
exports.Canton = Canton;
|
|
377
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FudG9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NhbnRvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSxtREE0QjhCO0FBQzlCLHlEQUErRDtBQUMvRCxpREFBeUU7QUFDekUsK0JBQWtEO0FBQ2xELDJDQUF5RDtBQUd6RCx3REFBZ0M7QUFjaEMsTUFBYSxNQUFPLFNBQVEsbUJBQVE7SUFHbEMsWUFBc0IsS0FBZ0IsRUFBRSxXQUF1QztRQUM3RSxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7UUFFYixJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7WUFDakIsTUFBTSxJQUFJLEtBQUssQ0FBQyxvREFBb0QsQ0FBQyxDQUFDO1FBQ3hFLENBQUM7UUFFRCxJQUFJLENBQUMsWUFBWSxHQUFHLFdBQVcsQ0FBQztJQUNsQyxDQUFDO0lBRUQsTUFBTSxDQUFDLGNBQWMsQ0FBQyxLQUFnQixFQUFFLFdBQXVDO1FBQzdFLE9BQU8sSUFBSSxNQUFNLENBQUMsS0FBSyxFQUFFLFdBQVcsQ0FBQyxDQUFDO0lBQ3hDLENBQUM7SUFFTyxVQUFVO1FBQ2hCLE9BQU8sSUFBSSwrQkFBeUIsQ0FBQyxlQUFLLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDbkUsQ0FBQztJQUVELGtCQUFrQjtJQUNYLGFBQWE7UUFDbEIsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQsa0JBQWtCO0lBQ1gsUUFBUTtRQUNiLE9BQU8sUUFBUSxDQUFDO0lBQ2xCLENBQUM7SUFFRCxrQkFBa0I7SUFDWCxTQUFTO1FBQ2QsT0FBTyxRQUFRLENBQUM7SUFDbEIsQ0FBQztJQUVELGtCQUFrQjtJQUNYLFdBQVc7UUFDaEIsT0FBTyxRQUFRLENBQUM7SUFDbEIsQ0FBQztJQUVELGtCQUFrQjtJQUNsQixXQUFXO1FBQ1QsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQsa0JBQWtCO0lBQ2xCLHNC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LE1BQU0sQ0FBQyxRQUFRLENBQUM7UUFDcEMsQ0FBQztRQUNELElBQUksTUFBTSxDQUFDLFVBQVUsRUFBRSxDQUFDO1lBQ3RCLE1BQU0sQ0FBQyxVQUFVLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBQztRQUN4QyxDQUFDO1FBQ0QsSUFBSSxNQUFNLENBQUMsU0FBUyxFQUFFLENBQUM7WUFDckIsTUFBTSxDQUFDLFNBQVMsR0FBRyxNQUFNLENBQUMsU0FBUyxDQUFDO1FBQ3RDLENBQUM7UUFDRCxJQUFJLE1BQU0sQ0FBQyxlQUFlLEVBQUUsQ0FBQztZQUMzQixNQUFNLENBQUMsZUFBZSxHQUFHLE1BQU0sQ0FBQyxlQUFlLENBQUM7UUFDbEQsQ0FBQztRQUNELElBQUksTUFBTSxDQUFDLGFBQWEsRUFBRSxDQUFDO1lBQ3pCLE1BQU0sQ0FBQyxhQUFhLEdBQUcsTUFBTSxDQUFDLGFBQWEsQ0FBQztRQUM5QyxDQUFDO0lBQ0gsQ0FBQztDQUNGO0FBNWJELHdCQTRiQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEF1ZGl0RGVjcnlwdGVkS2V5UGFyYW1zLFxuICBCYXNlQ29pbixcbiAgQmFzZVRyYW5zYWN0aW9uLFxuICBCaXRHb0Jhc2UsXG4gIENhbnRvbkNvbW1hbmQsXG4gIENhbnRvbkNvbW1hbmRQYXJhbXMsXG4gIENhbnRvbkNyZWF0ZUNvbW1hbmQsXG4gIENhbnRvbkV4ZXJjaXNlQ29tbWFuZCxcbiAgRUREU0FNZXRob2RzLFxuICBleHRyYWN0Q29tbW9uS2V5Y2hhaW4sXG4gIEludmFsaWRBZGRyZXNzRXJyb3IsXG4gIEtleVBhaXIsXG4gIE1QQ0FsZ29yaXRobSxcbiAgTXVsdGlzaWdUeXBlLFxuICBtdWx0aXNpZ1R5cGVzLFxuICBQYXJzZWRUcmFuc2FjdGlvbixcbiAgUGFyc2VUcmFuc2FjdGlvbk9wdGlvbnMsXG4gIFBvcHVsYXRlZEludGVudCxcbiAgUHJlYnVpbGRUcmFuc2FjdGlvbldpdGhJbnRlbnRPcHRpb25zLFxuICBTaWduZWRUcmFuc2FjdGlvbixcbiAgU2lnblRyYW5zYWN0aW9uT3B0aW9ucyxcbiAgVG9rZW5FbmFibGVtZW50Q29uZmlnLFxuICBUcmFuc2FjdGlvbkV4cGxhbmF0aW9uIGFzIEJhc2VUcmFuc2FjdGlvbkV4cGxhbmF0aW9uLFxuICBUcmFuc2FjdGlvblBhcmFtcyxcbiAgVHJhbnNhY3Rpb25UeXBlLFxuICBUc3NWZXJpZnlBZGRyZXNzT3B0aW9ucyxcbiAgVmVyaWZ5VHJhbnNhY3Rpb25PcHRpb25zLFxufSBmcm9tICdAYml0Z28tYmV0YS9zZGstY29yZSc7XG5pbXBvcnQgeyBhdWRpdEVkZHNhUHJpdmF0ZUtleSB9IGZyb20gJ0BiaXRnby1iZXRhL3Nkay1saWItbXBjJztcbmltcG9ydCB7IEJhc2VDb2luIGFzIFN0YXRpY3NCYXNlQ29pbiwgY29pbnMgfSBmcm9tICdAYml0Z28tYmV0YS9zdGF0aWNzJztcbmltcG9ydCB7IFRyYW5zYWN0aW9uQnVpbGRlckZhY3RvcnkgfSBmcm9tICcuL2xpYic7XG5pbXBvcnQgeyBLZXlQYWlyIGFzIENhbnRvbktleVBhaXIgfSBmcm9tICcuL2xpYi9rZXlQYWlyJztcbmltcG9ydCB7IENhbnRvbkNvbW1hbmRLaW5kLCBUeERhdGEgfSBmcm9tICcuL2xpYi9pZmFjZSc7XG5pbXBvcnQgeyBUcmFuc2FjdGlvbiB9IGZyb20gJy4vbGliL3RyYW5zYWN0aW9uL3RyYW5zYWN0aW9uJztcbmltcG9ydCB1dGlscyBmcm9tICcuL2xpYi91dGlscyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgVHJhbnNhY3Rpb25FeHBsYW5hdGlvbiBleHRlbmRzIEJhc2VUcmFuc2FjdGlvbkV4cGxhbmF0aW9uIHtcbiAgdHlwZTogVHJhbnNhY3Rpb25UeXBlO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEV4cGxhaW5UcmFuc2FjdGlvbk9wdGlvbnMge1xuICB0eEhleDogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIENhbnRvblRyYW5zYWN0aW9uUGFyYW1zIGV4dGVuZHMgVHJhbnNhY3Rpb25QYXJhbXMge1xuICBjYW50b25Db21tYW5kUGFyYW1zPzogQ2FudG9uQ29tbWFuZFBhcmFtcztcbn1cblxuZXhwb3J0IGNsYXNzIENhbnRvbiBleHRlbmRzIEJhc2VDb2luIHtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IF9zdGF0aWNzQ29pbjogUmVhZG9ubHk8U3RhdGljc0Jhc2VDb2luPjtcblxuICBwcm90ZWN0ZWQgY29uc3RydWN0b3IoYml0Z286IEJpdEdvQmFzZSwgc3RhdGljc0NvaW4/OiBSZWFkb25seTxTdGF0aWNzQmFzZUNvaW4+KSB7XG4gICAgc3VwZXIoYml0Z28pO1xuXG4gICAgaWYgKCFzdGF0aWNzQ29pbikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdtaXNzaW5nIHJlcXVpcmVkIGNvbnN0cnVjdG9yIHBhcmFtZXRlciBzdGF0aWNzQ29pbicpO1xuICAgIH1cblxuICAgIHRoaXMuX3N0YXRpY3NDb2luID0gc3RhdGljc0NvaW47XG4gIH1cblxuICBzdGF0aWMgY3JlYXRlSW5zdGFuY2UoYml0Z286IEJpdEdvQmFzZSwgc3RhdGljc0NvaW4/OiBSZWFkb25seTxTdGF0aWNzQmFzZUNvaW4+KTogQmFzZUNvaW4ge1xuICAgIHJldHVybiBuZXcgQ2FudG9uKGJpdGdvLCBzdGF0aWNzQ29pbik7XG4gIH1cblxuICBwcml2YXRlIGdldEJ1aWxkZXIoKTogVHJhbnNhY3Rpb25CdWlsZGVyRmFjdG9yeSB7XG4gICAgcmV0dXJuIG5ldyBUcmFuc2FjdGlvbkJ1aWxkZXJGYWN0b3J5KGNvaW5zLmdldCh0aGlzLmdldENoYWluKCkpKTtcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdERvYyAqL1xuICBwdWJsaWMgZ2V0QmFzZUZhY3RvcigpOiBudW1iZXIge1xuICAgIHJldHVybiAxZTEwO1xuICB9XG5cbiAgLyoqIEBpbmhlcml0RG9jICovXG4gIHB1YmxpYyBnZXRDaGFpbigpOiBzdHJpbmcge1xuICAgIHJldHVybiAnY2FudG9uJztcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdERvYyAqL1xuICBwdWJsaWMgZ2V0RmFtaWx5KCk6IHN0cmluZyB7XG4gICAgcmV0dXJuICdjYW50b24nO1xuICB9XG5cbiAgLyoqIEBpbmhlcml0RG9jICovXG4gIHB1YmxpYyBnZXRGdWxsTmFtZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiAnQ2FudG9uJztcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdERvYyAqL1xuICBzdXBwb3J0c1RzcygpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdERvYyAqL1xuICBzdXBwb3J0c01lc3NhZ2VTaWduaW5nKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgLyoqIGluaGVyaXRlZCBkb2MgKi9cbiAgZ2V0RGVmYXVsdE11bHRpc2lnVHlwZSgpOiBNdWx0aXNpZ1R5cGUge1xuICAgIHJldHVybiBtdWx0aXNpZ1R5cGVzLnRzcztcbiAgfVxuXG4gIC8qKiBpbmhlcml0ZWQgZG9jICovXG4gIHJlcXVpcmVzV2FsbGV0SW5pdGlhbGl6YXRpb25UcmFuc2FjdGlvbigpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIGdldE1QQ0FsZ29yaXRobSgpOiBNUENBbGdvcml0aG0ge1xuICAgIHJldHVybiAnZWRkc2EnO1xuICB9XG5cbiAgLyoqIEBpbmhlcml0RG9jICovXG4gIGFzeW5jIHZlcmlmeVRyYW5zYWN0aW9uKHBhcmFtczogVmVyaWZ5VHJhbnNhY3Rpb25PcHRpb25zKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgY29uc3QgY29pbkNvbmZpZyA9IGNvaW5zLmdldCh0aGlzLmdldENoYWluKCkpO1xuICAgIGNvbnN0IHsgdHhQcmVidWlsZDogdHhQcmVidWlsZCwgdHhQYXJhbXMgfSA9IHBhcmFtcztcbiAgICBjb25zdCByYXdUeCA9IHR4UHJlYnVpbGQudHhIZXg7XG4gICAgaWYgKCFyYXdUeCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdtaXNzaW5nIHJlcXVpcmVkIHR4IHByZWJ1aWxkIHByb3BlcnR5IHR4SGV4Jyk7XG4gICAgfVxuICAgIGNvbnN0IHR4QnVpbGRlciA9IG5ldyBUcmFuc2FjdGlvbkJ1aWxkZXJGYWN0b3J5KGNvaW5Db25maWcpLmZyb20ocmF3VHgpO1xuICAgIGNvbnN0IHRyYW5zYWN0aW9uID0gdHhCdWlsZGVyLnRyYW5zYWN0aW9uO1xuICAgIGNvbnN0IGV4cGxhaW5lZFR4ID0gdHJhbnNhY3Rpb24uZXhwbGFpblRyYW5zYWN0aW9uKCk7XG4gICAgc3dpdGNoICh0cmFuc2FjdGlvbi50eXBlKSB7XG4gICAgICBjYXNlIFRyYW5zYWN0aW9uVHlwZS5XYWxsZXRJbml0aWFsaXphdGlvbjpcbiAgICAgIGNhc2UgVHJhbnNhY3Rpb25UeXBlLlRyYW5zZmVyQWNjZXB0OlxuICAgICAgY2FzZSBUcmFuc2FjdGlvblR5cGUuVHJhbnNmZXJSZWplY3Q6XG4gICAgICBjYXNlIFRyYW5zYWN0aW9uVHlwZS5UcmFuc2ZlckFja25vd2xlZGdlOlxuICAgICAgY2FzZSBUcmFuc2FjdGlvblR5cGUuVHJhbnNmZXJPZmZlcldpdGhkcmF3bjpcbiAgICAgIGNhc2UgVHJhbnNhY3Rpb25UeXBlLkNvc2lnbkRlbGVnYXRpb25BY2NlcHQ6XG4gICAgICBjYXNlIFRyYW5zYWN0aW9uVHlwZS5Db3NpZ25EZWxlZ2F0aW9uUHJvcG9zYWw6XG4gICAgICBjYXNlIFRyYW5zYWN0aW9uVHlwZS5BbGxvY2F0aW9uQWxsb2NhdGU6XG4gICAgICBjYXNlIFRyYW5zYWN0aW9uVHlwZS5BbGxvY2F0aW9uUmVxdWVzdDpcbiAgICAgIGNhc2UgVHJhbnNhY3Rpb25UeXBlLkVuZEludmVzdG9yT25ib2FyZGluZ09mZmVyOlxuICAgICAgICAvLyBUaGVyZSBpcyBubyByZWNpcGllbnQgaW5mbyB0byB2ZXJpZnkgZm9yIHRoZXNlIHRyYW5zYWN0aW9uIHR5cGVzLCBzbyBhbHdheXMgcmV0dXJuIHRydWUuXG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgY2FzZSBUcmFuc2FjdGlvblR5cGUuQ2FudG9uQ29tbWFuZDpcbiAgICAgICAgcmV0dXJuIHRoaXMudmVyaWZ5Q2FudG9uQ29tbWFuZFRyYW5zYWN0aW9uKFxuICAgICAgICAgIHRyYW5zYWN0aW9uLFxuICAgICAgICAgICh0eFBhcmFtcyBhcyBDYW50b25UcmFuc2FjdGlvblBhcmFtcykuY2FudG9uQ29tbWFuZFBhcmFtc1xuICAgICAgICApO1xuICAgICAgY2FzZSBUcmFuc2FjdGlvblR5cGUuT25lU3RlcFByZUFwcHJvdmFsOlxuICAgICAgICAvLyBDYW50b24gaXMgYWx3YXlzIGEgVFNTIHdhbGxldC4gVGhlIFNESydzIGJ1aWxkVG9rZW5FbmFibGVtZW50cyBwYXNzZXMgZW5hYmxlVG9rZW5zXG4gICAgICAgIC8vIHRocm91Z2ggdW5jaGFuZ2VkIGZvciBUU1Mgd2FsbGV0cyAobm8gY29udmVyc2lvbiB0byByZWNpcGllbnRzKSwgc28gdHhQYXJhbXMuZW5hYmxlVG9rZW5zXG4gICAgICAgIC8vIGlzIHRoZSBvbmx5IHNvdXJjZSBvZiB1c2VyIGludGVudCBoZXJlLlxuICAgICAgICAvL1xuICAgICAgICAvLyBSZWNlaXZlciB2YWxpZGF0aW9uOiB0aGUgcmVjZWl2ZXIgb2YgYSBPbmVTdGVwUHJlQXBwcm92YWwgaXMgYWx3YXlzIHRoZSB3YWxsZXQncyByb290IGFkZHJlc3MuXG4gICAgICAgIC8vIFdlIHVzZSBlbmFibGVUb2tlbi5hZGRyZXNzIGlmIGV4cGxpY2l0bHkgcHJvdmlkZWQsIG90aGVyd2lzZSBmYWxsIGJhY2sgdG9cbiAgICAgICAgLy8gd2FsbGV0LmNvaW5TcGVjaWZpYygpLnJvb3RBZGRyZXNzICh0aGUgQ2FudG9uIHBhcnR5IElEIHN0b3JlZCBhdCB3YWxsZXQgY3JlYXRpb24gdGltZSkuXG4gICAgICAgIC8vIFRva2VuIG5hbWUgdmFsaWRhdGlvbjogY2hlY2tlZCB3aGVuIHRoZSB0b2tlbiBpcyByZXNvbHZhYmxlIGZyb20gc3RhdGljcy5cbiAgICAgICAgaWYgKFxuICAgICAgICAgIHR4UGFyYW1zLnR5cGUgPT09ICdlbmFibGV0b2tlbicgJiZcbiAgICAgICAgICB0eFBhcmFtcy5lbmFibGVUb2tlbnMgIT09IHVuZGVmaW5lZCAmJlxuICAgICAgICAgIHR4UGFyYW1zLmVuYWJsZVRva2Vucy5sZW5ndGggPiAwXG4gICAgICAgICkge1xuICAgICAgICAgIGNvbnN0IHR4RGF0YSA9IHRyYW5zYWN0aW9uLnRvSnNvbigpIGFzIFR4RGF0YTtcbiAgICAgICAgICBjb25zdCBlbmFibGVUb2tlbiA9IHR4UGFyYW1zLmVuYWJsZVRva2Vuc1swXTtcbiAgICAgICAgICBjb25zdCB3YWxsZXRSb290QWRkcmVzcyA9IHBhcmFtcy53YWxsZXQ/LmNvaW5TcGVjaWZpYz8uKCk/LnJvb3RBZGRyZXNzO1xuICAgICAgICAgIGNvbnN0IGV4cGVjdGVkUmVjZWl2ZXIgPSBlbmFibGVUb2tlbi5hZGRyZXNzID8/IHdhbGxldFJvb3RBZGRyZXNzO1xuICAgICAgICAgIGlmIChleHBlY3RlZFJlY2VpdmVyKSB7XG4gICAgICAgICAgICAvLyBTdHJpcCA/bWVtb0lkIHN1ZmZpeCBpZiBwcmVzZW50IGluIHRoZSBzdG9yZWQgYWRkcmVzc1xuICAgICAgICAgICAgY29uc3QgW2V4cGVjdGVkUmVjZWl2ZXJCYXNlXSA9IGV4cGVjdGVkUmVjZWl2ZXIuc3BsaXQoJz9tZW1vSWQ9Jyk7XG4gICAgICAgICAgICBpZiAodHhEYXRhLnJlY2VpdmVyICE9PSBleHBlY3RlZFJlY2VpdmVyQmFzZSkge1xuICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgICAgICAgYE9uZVN0ZXBQcmVBcHByb3ZhbCByZWNlaXZlciBtaXNtYXRjaDogZXhwZWN0ZWQgJyR7ZXhwZWN0ZWRSZWNlaXZlckJhc2V9JywgZ290ICcke3R4RGF0YS5yZWNlaXZlcn0nYFxuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAodHhEYXRhLnRva2VuICE9PSB1bmRlZmluZWQgJiYgdHhEYXRhLnRva2VuICE9PSBlbmFibGVUb2tlbi5uYW1lKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgICAgIGBPbmVTdGVwUHJlQXBwcm92YWwgdG9rZW4gbmFtZSBtaXNtYXRjaDogZXhwZWN0ZWQgJyR7ZW5hYmxlVG9rZW4ubmFtZX0nLCBnb3QgJyR7dHhEYXRhLnRva2VufSdgXG4gICAgICAgICAgICApO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIGNhc2UgVHJhbnNhY3Rpb25UeXBlLlNlbmQ6XG4gICAgICAgIGlmICh0eFBhcmFtcy5yZWNpcGllbnRzICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICBjb25zdCBmaWx0ZXJlZFJlY2lwaWVudHMgPSB0eFBhcmFtcy5yZWNpcGllbnRzPy5tYXAoKHJlY2lwaWVudCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgeyBhZGRyZXNzLCBhbW91bnQsIHRva2VuTmFtZSB9ID0gcmVjaXBpZW50O1xuICAgICAgICAgICAgY29uc3QgW2FkZHJlc3NQYXJ0LCBtZW1vSWRdID0gYWRkcmVzcy5zcGxpdCgnP21lbW9JZD0nKTtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgIGFkZHJlc3M6IGFkZHJlc3NQYXJ0LFxuICAgICAgICAgICAgICBhbW91bnQsXG4gICAgICAgICAgICAgIC4uLihtZW1vSWQgJiYgeyBtZW1vOiBtZW1vSWQgfSksXG4gICAgICAgICAgICAgIC4uLih0b2tlbk5hbWUgJiYgeyB0b2tlbk5hbWUgfSksXG4gICAgICAgICAgICB9O1xuICAgICAgICAgIH0pO1xuICAgICAgICAgIGNvbnN0IGZpbHRlcmVkT3V0cHV0cyA9IGV4cGxhaW5lZFR4Lm91dHB1dHM/Lm1hcCgob3V0cHV0KSA9PiB7XG4gICAgICAgICAgICBjb25zdCB7IGFkZHJlc3MsIGFtb3VudCwgdG9rZW5OYW1lLCBtZW1vIH0gPSBvdXRwdXQ7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICBhZGRyZXNzLFxuICAgICAgICAgICAgICBhbW91bnQsXG4gICAgICAgICAgICAgIC4uLihtZW1vICYmIHsgbWVtbyB9KSxcbiAgICAgICAgICAgICAgLi4uKHRva2VuTmFtZSAmJiB7IHRva2VuTmFtZSB9KSxcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgfSk7XG4gICAgICAgICAgaWYgKEpTT04uc3RyaW5naWZ5KGZpbHRlcmVkUmVjaXBpZW50cykgIT09IEpTT04uc3RyaW5naWZ5KGZpbHRlcmVkT3V0cHV0cykpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignVHggb3V0cHV0cyBkbyBub3QgbWF0Y2ggd2l0aCBleHBlY3RlZCB0eFBhcmFtcyByZWNpcGllbnRzJyk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgZGVmYXVsdDoge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYHVua25vd24gdHJhbnNhY3Rpb24gdHlwZSwgJHt0cmFuc2FjdGlvbi50eXBlfWApO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgdmVyaWZ5Q2FudG9uQ29tbWFuZFRyYW5zYWN0aW9uKFxuICAgIHRyYW5zYWN0aW9uOiBCYXNlVHJhbnNhY3Rpb24sXG4gICAgdXNlclBhcmFtczogQ2FudG9uQ29tbWFuZFBhcmFtcyB8IHVuZGVmaW5lZFxuICApOiBib29sZWFuIHtcbiAgICBpZiAoIXVzZXJQYXJhbXMpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIGNvbnN0IGNhbnRvblR4ID0gdHJhbnNhY3Rpb24gYXMgVHJhbnNhY3Rpb247XG4gICAgY29uc3QgcmF3UHJlcGFyZWQgPSBjYW50b25UeC5wcmVwYXJlQ29tbWFuZD8ucHJlcGFyZWRUcmFuc2FjdGlvbjtcbiAgICBpZiAoIXJhd1ByZXBhcmVkKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0NhbnRvbkNvbW1hbmQgdmVyaWZ5VHJhbnNhY3Rpb246IG1pc3NpbmcgcHJlcGFyZWRUcmFuc2FjdGlvbiBwcm90b2J1ZiBvbiB0eCBwcmVidWlsZCcpO1xuICAgIH1cblxuICAgIGNvbnN0IGRlY29kZWRDb21tYW5kID0gdXRpbHMuZXh0cmFjdENhbnRvbkNvbW1hbmRJbmZvKHJhd1ByZXBhcmVkKTtcbiAgICBjb25zdCB1c2VyQ29tbWFuZCA9IHVzZXJQYXJhbXMuY29tbWFuZCBhcyBQYXJ0aWFsPENhbnRvbkNvbW1hbmQ+O1xuXG4gICAgLy8gSW5wdXQgc2hhcGUgaXMgZW5mb3JjZWQgYnkgbXBjVXRpbHMgYXQgYnVpbGQgdGltZTsgaGVyZSB3ZSByZXNvbHZlIHdoaWNoIGJyYW5jaCBpcyBwcmVzZW50LlxuICAgIGNvbnN0IGhhc0NyZWF0ZSA9ICdDcmVhdGVDb21tYW5kJyBpbiB1c2VyQ29tbWFuZCAmJiB1dGlscy5pc1BsYWluT2JqZWN0KHVzZXJDb21tYW5kLkNyZWF0ZUNvbW1hbmQpO1xuICAgIGNvbnN0IGhhc0V4ZXJjaXNlID0gJ0V4ZXJjaXNlQ29tbWFuZCcgaW4gdXNlckNvbW1hbmQgJiYgdXRpbHMuaXNQbGFpbk9iamVjdCh1c2VyQ29tbWFuZC5FeGVyY2lzZUNvbW1hbmQpO1xuICAgIGlmICghaGFzQ3JlYXRlICYmICFoYXNFeGVyY2lzZSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICBgQ2FudG9uQ29tbWFuZCB2ZXJpZnlUcmFuc2FjdGlvbjogY29tbWFuZCBtdXN0IGNvbnRhaW4gYSBDcmVhdGVDb21tYW5kIG9yIEV4ZXJjaXNlQ29tbWFuZCB3cmFwcGVyYFxuICAgICAgKTtcbiAgICB9XG4gICAgaWYgKGhhc0NyZWF0ZSAmJiBoYXNFeGVyY2lzZSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICBgQ2FudG9uQ29tbWFuZCB2ZXJpZnlUcmFuc2FjdGlvbjogY29tbWFuZCBtdXN0IGNvbnRhaW4gZXhhY3RseSBvbmUgb2YgQ3JlYXRlQ29tbWFuZCBvciBFeGVyY2lzZUNvbW1hbmQsIG5vdCBib3RoYFxuICAgICAgKTtcbiAgICB9XG4gICAgY29uc3QgdXNlcktpbmQ6IENhbnRvbkNvbW1hbmRLaW5kID0gaGFzQ3JlYXRlID8gJ0NyZWF0ZUNvbW1hbmQnIDogJ0V4ZXJjaXNlQ29tbWFuZCc7XG4gICAgaWYgKGRlY29kZWRDb21tYW5kLmtpbmQgIT09IHVzZXJLaW5kKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgIGBDYW50b25Db21tYW5kIHZlcmlmeVRyYW5zYWN0aW9uOiBjb21tYW5kIGtpbmQgbWlzbWF0Y2gg4oCUIGV4cGVjdGVkICR7dXNlcktpbmR9LCBnb3QgJHtkZWNvZGVkQ29tbWFuZC5raW5kfWBcbiAgICAgICk7XG4gICAgfVxuXG4gICAgY29uc3QgdXNlcklubmVyID1cbiAgICAgIHVzZXJLaW5kID09PSAnQ3JlYXRlQ29tbWFuZCdcbiAgICAgICAgPyAodXNlckNvbW1hbmQgYXMgQ2FudG9uQ3JlYXRlQ29tbWFuZCkuQ3JlYXRlQ29tbWFuZFxuICAgICAgICA6ICh1c2VyQ29tbWFuZCBhcyBDYW50b25FeGVyY2lzZUNvbW1hbmQpLkV4ZXJjaXNlQ29tbWFuZDtcblxuICAgIGlmICghdXNlcklubmVyPy50ZW1wbGF0ZUlkKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYENhbnRvbkNvbW1hbmQgdmVyaWZ5VHJhbnNhY3Rpb246ICR7dXNlcktpbmR9LnRlbXBsYXRlSWQgbXVzdCBiZSBhIG5vbi1lbXB0eSBzdHJpbmdgKTtcbiAgICB9XG5cbiAgICAvLyB0ZW1wbGF0ZUlkIChtb2R1bGVOYW1lICsgZW50aXR5TmFtZTsgcGFja2FnZSBpZCBpcyBtdXRhYmxlLCBzbyBpZ25vcmVkKVxuICAgIGNvbnN0IHBhcnNlZCA9IHV0aWxzLnBhcnNlQ2FudG9uVGVtcGxhdGVJZCh1c2VySW5uZXIudGVtcGxhdGVJZCk7XG4gICAgaWYgKCFwYXJzZWQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgYENhbnRvbkNvbW1hbmQgdmVyaWZ5VHJhbnNhY3Rpb246IGludmFsaWQgdXNlciB0ZW1wbGF0ZUlkICcke3VzZXJJbm5lci50ZW1wbGF0ZUlkfScg4oCUIGV4cGVjdGVkIGZvcm1hdCAnUGtnOk1vZHVsZTpFbnRpdHknYFxuICAgICAgKTtcbiAgICB9XG4gICAgaWYgKFxuICAgICAgZGVjb2RlZENvbW1hbmQudGVtcGxhdGVJZC5tb2R1bGVOYW1lICE9PSBwYXJzZWQubW9kdWxlTmFtZSB8fFxuICAgICAgZGVjb2RlZENvbW1hbmQudGVtcGxhdGVJZC5lbnRpdHlOYW1lICE9PSBwYXJzZWQuZW50aXR5TmFtZVxuICAgICkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICBgQ2FudG9uQ29tbWFuZCB2ZXJpZnlUcmFuc2FjdGlvbjogdGVtcGxhdGVJZCBtaXNtYXRjaCDigJQgZXhwZWN0ZWQgJyR7cGFyc2VkLm1vZHVsZU5hbWV9OiR7cGFyc2VkLmVudGl0eU5hbWV9JywgZ290ICcke2RlY29kZWRDb21tYW5kLnRlbXBsYXRlSWQubW9kdWxlTmFtZX06JHtkZWNvZGVkQ29tbWFuZC50ZW1wbGF0ZUlkLmVudGl0eU5hbWV9J2BcbiAgICAgICk7XG4gICAgfVxuXG4gICAgLy8gQnVpbGQgdGhlIGluamVjdC1hcyBza2lwIHNldCBvbmNlIGZvciB1c2UgYWNyb3NzIHRoZSBjb250cmFjdElkIGFuZCBhcmd1bWVudCBjaGVja3NcbiAgICBjb25zdCBza2lwUGF0aHMgPSB1dGlscy5ub3JtYWxpemVJbmplY3RBcyh1c2VyUGFyYW1zLnJlc29sdmVDb250cmFjdHMpO1xuXG4gICAgLy8gbWV0YWRhdGEuc3VibWl0dGVySW5mby5hY3RBcyBtdXN0IGNvbnRhaW4gZXhhY3RseSB0aGUgc2FtZSBwYXJ0aWVzIGFzIHRoZSB1c2VyJ3MgYWN0QXNcbiAgICBpZiAoIUFycmF5LmlzQXJyYXkodXNlclBhcmFtcy5hY3RBcykgfHwgdXNlclBhcmFtcy5hY3RBcy5sZW5ndGggPT09IDApIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgQ2FudG9uQ29tbWFuZCB2ZXJpZnlUcmFuc2FjdGlvbjogYWN0QXMgbXVzdCBiZSBhIG5vbi1lbXB0eSBhcnJheSBvZiBwYXJ0eSBJRHNgKTtcbiAgICB9XG4gICAgaWYgKCF1c2VyUGFyYW1zLmFjdEFzLmV2ZXJ5KChwKSA9PiB0eXBlb2YgcCA9PT0gJ3N0cmluZycgJiYgcC50cmltKCkgIT09ICcnKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBDYW50b25Db21tYW5kIHZlcmlmeVRyYW5zYWN0aW9uOiBhbGwgYWN0QXMgZW50cmllcyBtdXN0IGJlIG5vbi1lbXB0eSBzdHJpbmdzYCk7XG4gICAgfVxuICAgIGNvbnN0IHN1Ym1pdHRlckFjdEFzID0gY2FudG9uVHguY2FudG9uQ29tbWFuZEFjdEFzUGFydGllcyA/PyBbXTtcbiAgICBpZiAoIXV0aWxzLnNhbWVFbGVtZW50cyhzdWJtaXR0ZXJBY3RBcywgdXNlclBhcmFtcy5hY3RBcykpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgYENhbnRvbkNvbW1hbmQgdmVyaWZ5VHJhbnNhY3Rpb246IHN1Ym1pdHRlckluZm8uYWN0QXMgWyR7c3VibWl0dGVyQWN0QXMuam9pbihcbiAgICAgICAgICAnLCAnXG4gICAgICAgICl9XSBkb2VzIG5vdCBtYXRjaCB1c2VyIGFjdEFzIFske3VzZXJQYXJhbXMuYWN0QXMuam9pbignLCAnKX1dYFxuICAgICAgKTtcbiAgICB9XG5cbiAgICBpZiAodXNlcktpbmQgPT09ICdFeGVyY2lzZUNvbW1hbmQnKSB7XG4gICAgICBjb25zdCBleGVyY2lzZUlubmVyID0gdXNlcklubmVyIGFzIENhbnRvbkV4ZXJjaXNlQ29tbWFuZFsnRXhlcmNpc2VDb21tYW5kJ107XG5cbiAgICAgIC8vIGNob2ljZSBpZFxuICAgICAgaWYgKGRlY29kZWRDb21tYW5kLmNob2ljZSAhPT0gZXhlcmNpc2VJbm5lci5jaG9pY2UpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgIGBDYW50b25Db21tYW5kIHZlcmlmeVRyYW5zYWN0aW9uOiBjaG9pY2UgbWlzbWF0Y2gg4oCUIGV4cGVjdGVkICcke2V4ZXJjaXNlSW5uZXIuY2hvaWNlfScsIGdvdCAnJHtcbiAgICAgICAgICAgIGRlY29kZWRDb21tYW5kLmNob2ljZSA/PyAnJ1xuICAgICAgICAgIH0nYFxuICAgICAgICApO1xuICAgICAgfVxuXG4gICAgICAvLyBldmVyeSBvbi1jaGFpbiBhY3RpbmdQYXJ0eSBtdXN0IGJlIGluIHRoZSB1c2VyJ3MgYWN0QXMgKHByZXZlbnRzIHByaXZpbGVnZSBlc2NhbGF0aW9uKVxuICAgICAgY29uc3Qgb25DaGFpbkFjdG9ycyA9IGRlY29kZWRDb21tYW5kLmFjdGluZ1BhcnRpZXMgPz8gW107XG4gICAgICBmb3IgKGNvbnN0IGFjdG9yIG9mIG9uQ2hhaW5BY3RvcnMpIHtcbiAgICAgICAgaWYgKCF1c2VyUGFyYW1zLmFjdEFzLmluY2x1ZGVzKGFjdG9yKSkge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICAgIGBDYW50b25Db21tYW5kIHZlcmlmeVRyYW5zYWN0aW9uOiB1bmF1dGhvcml6ZWQgYWN0aW5nIHBhcnR5ICcke2FjdG9yfScgb24gcm9vdCBleGVyY2lzZSAobm90IGluIHVzZXIgYWN0QXMpYFxuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgLy8gY29udHJhY3RJZCDigJQgc2tpcCB3aGVuIGFic2VudC9lbXB0eSBvciB3aGVuIElNUyB3aWxsIGluamVjdCBpdCB2aWEgcmVzb2x2ZUNvbnRyYWN0c1xuICAgICAgaWYgKFxuICAgICAgICBleGVyY2lzZUlubmVyLmNvbnRyYWN0SWQgIT09IHVuZGVmaW5lZCAmJlxuICAgICAgICBleGVyY2lzZUlubmVyLmNvbnRyYWN0SWQgIT09ICcnICYmXG4gICAgICAgICFza2lwUGF0aHMuaGFzKCdFeGVyY2lzZUNvbW1hbmQuY29udHJhY3RJZCcpXG4gICAgICApIHtcbiAgICAgICAgaWYgKGRlY29kZWRDb21tYW5kLmNvbnRyYWN0SWQgIT09IGV4ZXJjaXNlSW5uZXIuY29udHJhY3RJZCkge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICAgIGBDYW50b25Db21tYW5kIHZlcmlmeVRyYW5zYWN0aW9uOiBjb250cmFjdElkIG1pc21hdGNoIOKAlCBleHBlY3RlZCAnJHtleGVyY2lzZUlubmVyLmNvbnRyYWN0SWR9JywgZ290ICcke1xuICAgICAgICAgICAgICBkZWNvZGVkQ29tbWFuZC5jb250cmFjdElkID8/ICcnXG4gICAgICAgICAgICB9J2BcbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIC8vIGRlZXAgYXJndW1lbnQgY29tcGFyZVxuICAgICAgY29uc3QgYXJndW1lbnRTa2lwUGF0aHMgPSB0aGlzLnJlbGF0aXZlU2tpcFBhdGhzKHNraXBQYXRocywgJ0V4ZXJjaXNlQ29tbWFuZC5jaG9pY2VBcmd1bWVudC4nKTtcbiAgICAgIHV0aWxzLmFzc2VydERlZXBDYW50b25NYXRjaChleGVyY2lzZUlubmVyLmNob2ljZUFyZ3VtZW50LCBkZWNvZGVkQ29tbWFuZC5hcmd1bWVudCwgYXJndW1lbnRTa2lwUGF0aHMpO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBjcmVhdGVJbm5lciA9IHVzZXJJbm5lciBhcyBDYW50b25DcmVhdGVDb21tYW5kWydDcmVhdGVDb21tYW5kJ107XG5cbiAgICAgIC8vIGRlZXAgYXJndW1lbnQgY29tcGFyZVxuICAgICAgY29uc3QgYXJndW1lbnRTa2lwUGF0aHMgPSB0aGlzLnJlbGF0aXZlU2tpcFBhdGhzKHNraXBQYXRocywgJ0NyZWF0ZUNvbW1hbmQuY3JlYXRlQXJndW1lbnRzLicpO1xuICAgICAgdXRpbHMuYXNzZXJ0RGVlcENhbnRvbk1hdGNoKGNyZWF0ZUlubmVyLmNyZWF0ZUFyZ3VtZW50cywgZGVjb2RlZENvbW1hbmQuYXJndW1lbnQsIGFyZ3VtZW50U2tpcFBhdGhzKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIHByaXZhdGUgcmVsYXRpdmVTa2lwUGF0aHMoc2tpcFBhdGhzOiBTZXQ8c3RyaW5nPiwgcHJlZml4OiBzdHJpbmcpOiBTZXQ8c3RyaW5nPiB7XG4gICAgY29uc3Qgb3V0ID0gbmV3IFNldDxzdHJpbmc+KCk7XG4gICAgZm9yIChjb25zdCBwIG9mIHNraXBQYXRocykge1xuICAgICAgaWYgKHAuc3RhcnRzV2l0aChwcmVmaXgpKSB7XG4gICAgICAgIGNvbnN0IHN0cmlwcGVkID0gcC5zbGljZShwcmVmaXgubGVuZ3RoKTtcbiAgICAgICAgaWYgKHN0cmlwcGVkKSBvdXQuYWRkKHN0cmlwcGVkKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIG91dDtcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdERvYyAqL1xuICBhc3luYyBpc1dhbGxldEFkZHJlc3MocGFyYW1zOiBUc3NWZXJpZnlBZGRyZXNzT3B0aW9ucyk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIC8vIFRPRE86IHJlZmFjdG9yIHRoaXMgYW5kIHVzZSB0aGUgYHZlcmlmeUVkZHNhTWVtb0Jhc2VkV2FsbGV0QWRkcmVzc2Agb25jZSBwdWJsaXNoZWQgZnJvbSBzZGstY29yZVxuICAgIC8vIGh0dHBzOi8vYml0Z29pbmMuYXRsYXNzaWFuLm5ldC9icm93c2UvQ09JTi02MzQ3XG4gICAgY29uc3QgeyBrZXljaGFpbnMsIGFkZHJlc3M6IG5ld0FkZHJlc3MsIGluZGV4IH0gPSBwYXJhbXM7XG4gICAgY29uc3QgW2FkZHJlc3NQYXJ0LCBtZW1vSWRdID0gbmV3QWRkcmVzcy5zcGxpdCgnP21lbW9JZD0nKTtcbiAgICBpZiAoIXRoaXMuaXNWYWxpZEFkZHJlc3MoYWRkcmVzc1BhcnQpKSB7XG4gICAgICB0aHJvdyBuZXcgSW52YWxpZEFkZHJlc3NFcnJvcihgaW52YWxpZCBhZGRyZXNzOiAke25ld0FkZHJlc3N9YCk7XG4gICAgfVxuICAgIGlmIChtZW1vSWQgJiYgbWVtb0lkICE9PSBgJHtpbmRleH1gKSB7XG4gICAgICB0aHJvdyBuZXcgSW52YWxpZEFkZHJlc3NFcnJvcihgaW52YWxpZCBtZW1vSWQgaW5kZXg6ICR7bWVtb0lkfWApO1xuICAgIH1cbiAgICBjb25zdCBjb21tb25LZXljaGFpbiA9IGV4dHJhY3RDb21tb25LZXljaGFpbihrZXljaGFpbnMpO1xuICAgIGNvbnN0IE1QQyA9IGF3YWl0IEVERFNBTWV0aG9kcy5nZXRJbml0aWFsaXplZE1wY0luc3RhbmNlKCk7XG4gICAgY29uc3QgZGVyaXZhdGlvblBhdGggPSAnbS8wJztcbiAgICBjb25zdCBkZXJpdmVkUHVibGljS2V5ID0gTVBDLmRlcml2ZVVuaGFyZGVuZWQoY29tbW9uS2V5Y2hhaW4sIGRlcml2YXRpb25QYXRoKS5zbGljZSgwLCA2NCk7XG4gICAgY29uc3QgcHVibGljS2V5QmFzZTY0ID0gQnVmZmVyLmZyb20oZGVyaXZlZFB1YmxpY0tleSwgJ2hleCcpLnRvU3RyaW5nKCdiYXNlNjQnKTtcbiAgICBjb25zdCByb290QWRkcmVzc0ZpbmdlcnByaW50ID0gdXRpbHMuZ2V0QWRkcmVzc0Zyb21QdWJsaWNLZXkocHVibGljS2V5QmFzZTY0KTtcbiAgICBjb25zdCByb290QWRkcmVzcyA9IGAke3Jvb3RBZGRyZXNzRmluZ2VycHJpbnQuc2xpY2UoMCwgNSl9Ojoke3Jvb3RBZGRyZXNzRmluZ2VycHJpbnR9YDtcbiAgICByZXR1cm4gYWRkcmVzc1BhcnQgPT09IHJvb3RBZGRyZXNzO1xuICB9XG5cbiAgLyoqIEBpbmhlcml0RG9jICovXG4gIGFzeW5jIHBhcnNlVHJhbnNhY3Rpb24ocGFyYW1zOiBQYXJzZVRyYW5zYWN0aW9uT3B0aW9ucyk6IFByb21pc2U8UGFyc2VkVHJhbnNhY3Rpb24+IHtcbiAgICBjb25zdCB0eEhleCA9IHBhcmFtcy50eEhleCBhcyBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gICAgaWYgKCF0eEhleCkge1xuICAgICAgLy8gTWVzc2FnZS1vbmx5IHNpZ25pbmcgcmVxdWVzdHMgKGUuZy4gQ0FOVE9OX1NJR05fVFJBTlNBQ1RJT04sIENBTlRPTl9TSUdOX1RPUE9MT0dZKVxuICAgICAgLy8gaGF2ZSBubyB0cmFuc2FjdGlvbiBoZXggdG8gcGFyc2Ug4oCUIHJldHVybiBhbiBlbXB0eSByZXN1bHQuXG4gICAgICByZXR1cm4ge307XG4gICAgfVxuICAgIGNvbnN0IHRyYW5zYWN0aW9uRXhwbGFuYXRpb24gPSBhd2FpdCB0aGlzLmV4cGxhaW5UcmFuc2FjdGlvbih7IHR4SGV4IH0pO1xuICAgIGlmICghdHJhbnNhY3Rpb25FeHBsYW5hdGlvbikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIHRyYW5zYWN0aW9uJyk7XG4gICAgfVxuICAgIHJldHVybiB0cmFuc2FjdGlvbkV4cGxhbmF0aW9uIGFzIHVua25vd24gYXMgUGFyc2VkVHJhbnNhY3Rpb247XG4gIH1cblxuICAvKiogQGluaGVyaXREb2MgKi9cbiAgZ2VuZXJhdGVLZXlQYWlyKHNlZWQ/OiBCdWZmZXIpOiBLZXlQYWlyIHtcbiAgICBjb25zdCBrZXlQYWlyID0gc2VlZCA/IG5ldyBDYW50b25LZXlQYWlyKHsgc2VlZCB9KSA6IG5ldyBDYW50b25LZXlQYWlyKCk7XG4gICAgY29uc3Qga2V5cyA9IGtleVBhaXIuZ2V0S2V5cygpO1xuICAgIGlmICgha2V5cy5wcnYpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignTWlzc2luZyBwcnYgaW4ga2V5IGdlbmVyYXRpb24uJyk7XG4gICAgfVxuICAgIHJldHVybiB7XG4gICAgICBwdWI6IGtleXMucHViLFxuICAgICAgcHJ2OiBrZXlzLnBydixcbiAgICB9O1xuICB9XG5cbiAgLyoqIEBpbmhlcml0RG9jICovXG4gIGV4cGxhaW5UcmFuc2FjdGlvbihwYXJhbXM6IEV4cGxhaW5UcmFuc2FjdGlvbk9wdGlvbnMpOiBQcm9taXNlPFRyYW5zYWN0aW9uRXhwbGFuYXRpb24+IHtcbiAgICBjb25zdCBmYWN0b3J5ID0gdGhpcy5nZXRCdWlsZGVyKCk7XG4gICAgbGV0IHJlYnVpbHRUcmFuc2FjdGlvbjogQmFzZVRyYW5zYWN0aW9uO1xuICAgIGNvbnN0IHR4UmF3ID0gcGFyYW1zLnR4SGV4O1xuICAgIHRyeSB7XG4gICAgICBjb25zdCB0eEJ1aWxkZXIgPSBmYWN0b3J5LmZyb20odHhSYXcpO1xuICAgICAgcmVidWlsdFRyYW5zYWN0aW9uID0gdHhCdWlsZGVyLnRyYW5zYWN0aW9uO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignSW52YWxpZCB0cmFuc2FjdGlvbicpO1xuICAgIH1cbiAgICByZXR1cm4gcmVidWlsdFRyYW5zYWN0aW9uLmV4cGxhaW5UcmFuc2FjdGlvbigpO1xuICB9XG5cbiAgLyoqIEBpbmhlcml0RG9jICovXG4gIGlzVmFsaWRQdWIocHViOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdXRpbHMuaXNWYWxpZFB1YmxpY0tleShwdWIpO1xuICB9XG5cbiAgLyoqIEBpbmhlcml0RG9jICovXG4gIGlzVmFsaWRBZGRyZXNzKGFkZHJlc3M6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIC8vIGNhbnRvbiBhZGRyZXNzZXMgYXJlIG9mIHRoZSBmb3JtLCBwYXJ0eUhpbnQ6OmZpbmdlcnByaW50XG4gICAgLy8gd2hlcmUgcGFydHlIaW50IGlzIG9mIGxlbmd0aCA1IGFuZCBmaW5nZXJwcmludCBpcyA2OCBjaGFyYWN0ZXJzIGxvbmdcbiAgICByZXR1cm4gdXRpbHMuaXNWYWxpZEFkZHJlc3MoYWRkcmVzcyk7XG4gIH1cblxuICAvKiogQGluaGVyaXREb2MgKi9cbiAgZ2V0VG9rZW5FbmFibGVtZW50Q29uZmlnKCk6IFRva2VuRW5hYmxlbWVudENvbmZpZyB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHJlcXVpcmVzVG9rZW5FbmFibGVtZW50OiB0cnVlLFxuICAgICAgc3VwcG9ydHNNdWx0aXBsZVRva2VuRW5hYmxlbWVudHM6IGZhbHNlLFxuICAgIH07XG4gIH1cblxuICBnZXRBZGRyZXNzRnJvbVB1YmxpY0tleShwdWJsaWNLZXlIZXg6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgY29uc3QgcHVibGljS2V5QmFzZTY0ID0gQnVmZmVyLmZyb20ocHVibGljS2V5SGV4LCAnaGV4JykudG9TdHJpbmcoJ2Jhc2U2NCcpO1xuICAgIHJldHVybiB1dGlscy5nZXRBZGRyZXNzRnJvbVB1YmxpY0tleShwdWJsaWNLZXlCYXNlNjQpO1xuICB9XG5cbiAgLyoqIEBpbmhlcml0RG9jICovXG4gIHNpZ25UcmFuc2FjdGlvbihwYXJhbXM6IFNpZ25UcmFuc2FjdGlvbk9wdGlvbnMpOiBQcm9taXNlPFNpZ25lZFRyYW5zYWN0aW9uPiB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdNZXRob2Qgbm90IGltcGxlbWVudGVkLicpO1xuICB9XG5cbiAgLyoqIEBpbmhlcml0RG9jICovXG4gIGF1ZGl0RGVjcnlwdGVkS2V5KHsgbXVsdGlTaWdUeXBlLCBwcnYsIHB1YmxpY0tleSB9OiBBdWRpdERlY3J5cHRlZEtleVBhcmFtcyk6IHZvaWQge1xuICAgIGlmIChtdWx0aVNpZ1R5cGUgIT09IG11bHRpc2lnVHlwZXMudHNzKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1Vuc3VwcG9ydGVkIG11bHRpU2lnVHlwZScpO1xuICAgIH1cbiAgICBhdWRpdEVkZHNhUHJpdmF0ZUtleShwcnYsIHB1YmxpY0tleSA/PyAnJyk7XG4gIH1cblxuICAvKiogQGluaGVyaXREb2MgKi9cbiAgc2V0Q29pblNwZWNpZmljRmllbGRzSW5JbnRlbnQoaW50ZW50OiBQb3B1bGF0ZWRJbnRlbnQsIHBhcmFtczogUHJlYnVpbGRUcmFuc2FjdGlvbldpdGhJbnRlbnRPcHRpb25zKTogdm9pZCB7XG4gICAgaWYgKHBhcmFtcy50eFJlcXVlc3RJZCkge1xuICAgICAgaW50ZW50LnR4UmVxdWVzdElkID0gcGFyYW1zLnR4UmVxdWVzdElkO1xuICAgIH1cbiAgICBpZiAocGFyYW1zLnRyYW5zZmVyT2ZmZXJJZCkge1xuICAgICAgaW50ZW50LnRyYW5zZmVyT2ZmZXJJZCA9IHBhcmFtcy50cmFuc2Zlck9mZmVySWQ7XG4gICAgfVxuICAgIGlmIChwYXJhbXMudW5zcGVudHMpIHtcbiAgICAgIGludGVudC51bnNwZW50cyA9IHBhcmFtcy51bnNwZW50cztcbiAgICB9XG4gICAgaWYgKHBhcmFtcy5jYW50b25Db21tYW5kUGFyYW1zKSB7XG4gICAgICBpbnRlbnQuY2FudG9uQ29tbWFuZFBhcmFtcyA9IHBhcmFtcy5jYW50b25Db21tYW5kUGFyYW1zO1xuICAgIH1cbiAgICBpZiAocGFyYW1zLmVuZEludmVzdG9yUGFydHlJZCkge1xuICAgICAgaW50ZW50LmVuZEludmVzdG9yUGFydHlJZCA9IHBhcmFtcy5lbmRJbnZlc3RvclBhcnR5SWQ7XG4gICAgfVxuICAgIGlmIChwYXJhbXMucmVhc29uKSB7XG4gICAgICBpbnRlbnQucmVhc29uID0gcGFyYW1zLnJlYXNvbjtcbiAgICB9XG4gICAgaWYgKHBhcmFtcy5vcGVyYXRvcikge1xuICAgICAgaW50ZW50Lm9wZXJhdG9yID0gcGFyYW1zLm9wZXJhdG9yO1xuICAgIH1cbiAgICBpZiAocGFyYW1zLnByb3ZpZGVyKSB7XG4gICAgICBpbnRlbnQucHJvdmlkZXIgPSBwYXJhbXMucHJvdmlkZXI7XG4gICAgfVxuICAgIGlmIChwYXJhbXMuY29tcGxpYW5jZSkge1xuICAgICAgaW50ZW50LmNvbXBsaWFuY2UgPSBwYXJhbXMuY29tcGxpYW5jZTtcbiAgICB9XG4gICAgaWYgKHBhcmFtcy5yZWdpc3RyYXIpIHtcbiAgICAgIGludGVudC5yZWdpc3RyYXIgPSBwYXJhbXMucmVnaXN0cmFyO1xuICAgIH1cbiAgICBpZiAocGFyYW1zLmNsaWVudE9uYm9hcmRlcikge1xuICAgICAgaW50ZW50LmNsaWVudE9uYm9hcmRlciA9IHBhcmFtcy5jbGllbnRPbmJvYXJkZXI7XG4gICAgfVxuICAgIGlmIChwYXJhbXMuZXhwaXJhdGlvbklzbykge1xuICAgICAgaW50ZW50LmV4cGlyYXRpb25Jc28gPSBwYXJhbXMuZXhwaXJhdGlvbklzbztcbiAgICB9XG4gIH1cbn1cbiJdfQ==
|
|
378
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FudG9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NhbnRvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSxtREE0QjhCO0FBQzlCLHlEQUErRDtBQUMvRCxpREFBeUU7QUFDekUsK0JBQWtEO0FBQ2xELDJDQUF5RDtBQUd6RCx3REFBZ0M7QUFjaEMsTUFBYSxNQUFPLFNBQVEsbUJBQVE7SUFHbEMsWUFBc0IsS0FBZ0IsRUFBRSxXQUF1QztRQUM3RSxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7UUFFYixJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7WUFDakIsTUFBTSxJQUFJLEtBQUssQ0FBQyxvREFBb0QsQ0FBQyxDQUFDO1FBQ3hFLENBQUM7UUFFRCxJQUFJLENBQUMsWUFBWSxHQUFHLFdBQVcsQ0FBQztJQUNsQyxDQUFDO0lBRUQsTUFBTSxDQUFDLGNBQWMsQ0FBQyxLQUFnQixFQUFFLFdBQXVDO1FBQzdFLE9BQU8sSUFBSSxNQUFNLENBQUMsS0FBSyxFQUFFLFdBQVcsQ0FBQyxDQUFDO0lBQ3hDLENBQUM7SUFFTyxVQUFVO1FBQ2hCLE9BQU8sSUFBSSwrQkFBeUIsQ0FBQyxlQUFLLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDbkUsQ0FBQztJQUVELGtCQUFrQjtJQUNYLGFBQWE7UUFDbEIsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQsa0JBQWtCO0lBQ1gsUUFBUTtRQUNiLE9BQU8sUUFBUSxDQUFDO0lBQ2xCLENBQUM7SUFFRCxrQkFBa0I7SUFDWCxTQUFTO1FBQ2QsT0FBTyxRQUFRLENBQUM7SUFDbEIsQ0FBQztJQUVELGtCQUFrQjtJQUNYLFdBQVc7UUFDaEIsT0FBTyxRQUFRLENBQUM7SUFDbEIsQ0FBQztJQUVELGtCQUFrQjtJQUNsQixXQUFXO1FBQ1QsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQsa0JBQWtCO0lBQ2xCLHNC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QUFFLENBQUM7WUFDcEIsTUFBTSxDQUFDLFFBQVEsR0FBRyxNQUFNLENBQUMsUUFBUSxDQUFDO1FBQ3BDLENBQUM7UUFDRCxJQUFJLE1BQU0sQ0FBQyxVQUFVLEVBQUUsQ0FBQztZQUN0QixNQUFNLENBQUMsVUFBVSxHQUFHLE1BQU0sQ0FBQyxVQUFVLENBQUM7UUFDeEMsQ0FBQztRQUNELElBQUksTUFBTSxDQUFDLFNBQVMsRUFBRSxDQUFDO1lBQ3JCLE1BQU0sQ0FBQyxTQUFTLEdBQUcsTUFBTSxDQUFDLFNBQVMsQ0FBQztRQUN0QyxDQUFDO1FBQ0QsSUFBSSxNQUFNLENBQUMsZUFBZSxFQUFFLENBQUM7WUFDM0IsTUFBTSxDQUFDLGVBQWUsR0FBRyxNQUFNLENBQUMsZUFBZSxDQUFDO1FBQ2xELENBQUM7UUFDRCxJQUFJLE1BQU0sQ0FBQyxhQUFhLEVBQUUsQ0FBQztZQUN6QixNQUFNLENBQUMsYUFBYSxHQUFHLE1BQU0sQ0FBQyxhQUFhLENBQUM7UUFDOUMsQ0FBQztJQUNILENBQUM7Q0FDRjtBQTdiRCx3QkE2YkMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBdWRpdERlY3J5cHRlZEtleVBhcmFtcyxcbiAgQmFzZUNvaW4sXG4gIEJhc2VUcmFuc2FjdGlvbixcbiAgQml0R29CYXNlLFxuICBDYW50b25Db21tYW5kLFxuICBDYW50b25Db21tYW5kUGFyYW1zLFxuICBDYW50b25DcmVhdGVDb21tYW5kLFxuICBDYW50b25FeGVyY2lzZUNvbW1hbmQsXG4gIEVERFNBTWV0aG9kcyxcbiAgZXh0cmFjdENvbW1vbktleWNoYWluLFxuICBJbnZhbGlkQWRkcmVzc0Vycm9yLFxuICBLZXlQYWlyLFxuICBNUENBbGdvcml0aG0sXG4gIE11bHRpc2lnVHlwZSxcbiAgbXVsdGlzaWdUeXBlcyxcbiAgUGFyc2VkVHJhbnNhY3Rpb24sXG4gIFBhcnNlVHJhbnNhY3Rpb25PcHRpb25zLFxuICBQb3B1bGF0ZWRJbnRlbnQsXG4gIFByZWJ1aWxkVHJhbnNhY3Rpb25XaXRoSW50ZW50T3B0aW9ucyxcbiAgU2lnbmVkVHJhbnNhY3Rpb24sXG4gIFNpZ25UcmFuc2FjdGlvbk9wdGlvbnMsXG4gIFRva2VuRW5hYmxlbWVudENvbmZpZyxcbiAgVHJhbnNhY3Rpb25FeHBsYW5hdGlvbiBhcyBCYXNlVHJhbnNhY3Rpb25FeHBsYW5hdGlvbixcbiAgVHJhbnNhY3Rpb25QYXJhbXMsXG4gIFRyYW5zYWN0aW9uVHlwZSxcbiAgVHNzVmVyaWZ5QWRkcmVzc09wdGlvbnMsXG4gIFZlcmlmeVRyYW5zYWN0aW9uT3B0aW9ucyxcbn0gZnJvbSAnQGJpdGdvLWJldGEvc2RrLWNvcmUnO1xuaW1wb3J0IHsgYXVkaXRFZGRzYVByaXZhdGVLZXkgfSBmcm9tICdAYml0Z28tYmV0YS9zZGstbGliLW1wYyc7XG5pbXBvcnQgeyBCYXNlQ29pbiBhcyBTdGF0aWNzQmFzZUNvaW4sIGNvaW5zIH0gZnJvbSAnQGJpdGdvLWJldGEvc3RhdGljcyc7XG5pbXBvcnQgeyBUcmFuc2FjdGlvbkJ1aWxkZXJGYWN0b3J5IH0gZnJvbSAnLi9saWInO1xuaW1wb3J0IHsgS2V5UGFpciBhcyBDYW50b25LZXlQYWlyIH0gZnJvbSAnLi9saWIva2V5UGFpcic7XG5pbXBvcnQgeyBDYW50b25Db21tYW5kS2luZCwgVHhEYXRhIH0gZnJvbSAnLi9saWIvaWZhY2UnO1xuaW1wb3J0IHsgVHJhbnNhY3Rpb24gfSBmcm9tICcuL2xpYi90cmFuc2FjdGlvbi90cmFuc2FjdGlvbic7XG5pbXBvcnQgdXRpbHMgZnJvbSAnLi9saWIvdXRpbHMnO1xuXG5leHBvcnQgaW50ZXJmYWNlIFRyYW5zYWN0aW9uRXhwbGFuYXRpb24gZXh0ZW5kcyBCYXNlVHJhbnNhY3Rpb25FeHBsYW5hdGlvbiB7XG4gIHR5cGU6IFRyYW5zYWN0aW9uVHlwZTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBFeHBsYWluVHJhbnNhY3Rpb25PcHRpb25zIHtcbiAgdHhIZXg6IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBDYW50b25UcmFuc2FjdGlvblBhcmFtcyBleHRlbmRzIFRyYW5zYWN0aW9uUGFyYW1zIHtcbiAgY2FudG9uQ29tbWFuZFBhcmFtcz86IENhbnRvbkNvbW1hbmRQYXJhbXM7XG59XG5cbmV4cG9ydCBjbGFzcyBDYW50b24gZXh0ZW5kcyBCYXNlQ29pbiB7XG4gIHByb3RlY3RlZCByZWFkb25seSBfc3RhdGljc0NvaW46IFJlYWRvbmx5PFN0YXRpY3NCYXNlQ29pbj47XG5cbiAgcHJvdGVjdGVkIGNvbnN0cnVjdG9yKGJpdGdvOiBCaXRHb0Jhc2UsIHN0YXRpY3NDb2luPzogUmVhZG9ubHk8U3RhdGljc0Jhc2VDb2luPikge1xuICAgIHN1cGVyKGJpdGdvKTtcblxuICAgIGlmICghc3RhdGljc0NvaW4pIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignbWlzc2luZyByZXF1aXJlZCBjb25zdHJ1Y3RvciBwYXJhbWV0ZXIgc3RhdGljc0NvaW4nKTtcbiAgICB9XG5cbiAgICB0aGlzLl9zdGF0aWNzQ29pbiA9IHN0YXRpY3NDb2luO1xuICB9XG5cbiAgc3RhdGljIGNyZWF0ZUluc3RhbmNlKGJpdGdvOiBCaXRHb0Jhc2UsIHN0YXRpY3NDb2luPzogUmVhZG9ubHk8U3RhdGljc0Jhc2VDb2luPik6IEJhc2VDb2luIHtcbiAgICByZXR1cm4gbmV3IENhbnRvbihiaXRnbywgc3RhdGljc0NvaW4pO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRCdWlsZGVyKCk6IFRyYW5zYWN0aW9uQnVpbGRlckZhY3Rvcnkge1xuICAgIHJldHVybiBuZXcgVHJhbnNhY3Rpb25CdWlsZGVyRmFjdG9yeShjb2lucy5nZXQodGhpcy5nZXRDaGFpbigpKSk7XG4gIH1cblxuICAvKiogQGluaGVyaXREb2MgKi9cbiAgcHVibGljIGdldEJhc2VGYWN0b3IoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gMWUxMDtcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdERvYyAqL1xuICBwdWJsaWMgZ2V0Q2hhaW4oKTogc3RyaW5nIHtcbiAgICByZXR1cm4gJ2NhbnRvbic7XG4gIH1cblxuICAvKiogQGluaGVyaXREb2MgKi9cbiAgcHVibGljIGdldEZhbWlseSgpOiBzdHJpbmcge1xuICAgIHJldHVybiAnY2FudG9uJztcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdERvYyAqL1xuICBwdWJsaWMgZ2V0RnVsbE5hbWUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gJ0NhbnRvbic7XG4gIH1cblxuICAvKiogQGluaGVyaXREb2MgKi9cbiAgc3VwcG9ydHNUc3MoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICAvKiogQGluaGVyaXREb2MgKi9cbiAgc3VwcG9ydHNNZXNzYWdlU2lnbmluZygpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIC8qKiBpbmhlcml0ZWQgZG9jICovXG4gIGdldERlZmF1bHRNdWx0aXNpZ1R5cGUoKTogTXVsdGlzaWdUeXBlIHtcbiAgICByZXR1cm4gbXVsdGlzaWdUeXBlcy50c3M7XG4gIH1cblxuICAvKiogaW5oZXJpdGVkIGRvYyAqL1xuICByZXF1aXJlc1dhbGxldEluaXRpYWxpemF0aW9uVHJhbnNhY3Rpb24oKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICBnZXRNUENBbGdvcml0aG0oKTogTVBDQWxnb3JpdGhtIHtcbiAgICByZXR1cm4gJ2VkZHNhJztcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdERvYyAqL1xuICBhc3luYyB2ZXJpZnlUcmFuc2FjdGlvbihwYXJhbXM6IFZlcmlmeVRyYW5zYWN0aW9uT3B0aW9ucyk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIGNvbnN0IGNvaW5Db25maWcgPSBjb2lucy5nZXQodGhpcy5nZXRDaGFpbigpKTtcbiAgICBjb25zdCB7IHR4UHJlYnVpbGQ6IHR4UHJlYnVpbGQsIHR4UGFyYW1zIH0gPSBwYXJhbXM7XG4gICAgY29uc3QgcmF3VHggPSB0eFByZWJ1aWxkLnR4SGV4O1xuICAgIGlmICghcmF3VHgpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignbWlzc2luZyByZXF1aXJlZCB0eCBwcmVidWlsZCBwcm9wZXJ0eSB0eEhleCcpO1xuICAgIH1cbiAgICBjb25zdCB0eEJ1aWxkZXIgPSBuZXcgVHJhbnNhY3Rpb25CdWlsZGVyRmFjdG9yeShjb2luQ29uZmlnKS5mcm9tKHJhd1R4KTtcbiAgICBjb25zdCB0cmFuc2FjdGlvbiA9IHR4QnVpbGRlci50cmFuc2FjdGlvbjtcbiAgICBjb25zdCBleHBsYWluZWRUeCA9IHRyYW5zYWN0aW9uLmV4cGxhaW5UcmFuc2FjdGlvbigpO1xuICAgIHN3aXRjaCAodHJhbnNhY3Rpb24udHlwZSkge1xuICAgICAgY2FzZSBUcmFuc2FjdGlvblR5cGUuV2FsbGV0SW5pdGlhbGl6YXRpb246XG4gICAgICBjYXNlIFRyYW5zYWN0aW9uVHlwZS5UcmFuc2ZlckFjY2VwdDpcbiAgICAgIGNhc2UgVHJhbnNhY3Rpb25UeXBlLlRyYW5zZmVyUmVqZWN0OlxuICAgICAgY2FzZSBUcmFuc2FjdGlvblR5cGUuVHJhbnNmZXJBY2tub3dsZWRnZTpcbiAgICAgIGNhc2UgVHJhbnNhY3Rpb25UeXBlLlRyYW5zZmVyT2ZmZXJXaXRoZHJhd246XG4gICAgICBjYXNlIFRyYW5zYWN0aW9uVHlwZS5Db3NpZ25EZWxlZ2F0aW9uQWNjZXB0OlxuICAgICAgY2FzZSBUcmFuc2FjdGlvblR5cGUuQ29zaWduRGVsZWdhdGlvblByb3Bvc2FsOlxuICAgICAgY2FzZSBUcmFuc2FjdGlvblR5cGUuQWxsb2NhdGlvbkFsbG9jYXRlOlxuICAgICAgY2FzZSBUcmFuc2FjdGlvblR5cGUuQWxsb2NhdGlvblJlcXVlc3Q6XG4gICAgICBjYXNlIFRyYW5zYWN0aW9uVHlwZS5FbmRJbnZlc3Rvck9uYm9hcmRpbmdPZmZlcjpcbiAgICAgIGNhc2UgVHJhbnNhY3Rpb25UeXBlLkFsbG9jYXRpb25BbGxvY2F0ZVdpdGhkcmF3bjpcbiAgICAgICAgLy8gVGhlcmUgaXMgbm8gcmVjaXBpZW50IGluZm8gdG8gdmVyaWZ5IGZvciB0aGVzZSB0cmFuc2FjdGlvbiB0eXBlcywgc28gYWx3YXlzIHJldHVybiB0cnVlLlxuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIGNhc2UgVHJhbnNhY3Rpb25UeXBlLkNhbnRvbkNvbW1hbmQ6XG4gICAgICAgIHJldHVybiB0aGlzLnZlcmlmeUNhbnRvbkNvbW1hbmRUcmFuc2FjdGlvbihcbiAgICAgICAgICB0cmFuc2FjdGlvbixcbiAgICAgICAgICAodHhQYXJhbXMgYXMgQ2FudG9uVHJhbnNhY3Rpb25QYXJhbXMpLmNhbnRvbkNvbW1hbmRQYXJhbXNcbiAgICAgICAgKTtcbiAgICAgIGNhc2UgVHJhbnNhY3Rpb25UeXBlLk9uZVN0ZXBQcmVBcHByb3ZhbDpcbiAgICAgICAgLy8gQ2FudG9uIGlzIGFsd2F5cyBhIFRTUyB3YWxsZXQuIFRoZSBTREsncyBidWlsZFRva2VuRW5hYmxlbWVudHMgcGFzc2VzIGVuYWJsZVRva2Vuc1xuICAgICAgICAvLyB0aHJvdWdoIHVuY2hhbmdlZCBmb3IgVFNTIHdhbGxldHMgKG5vIGNvbnZlcnNpb24gdG8gcmVjaXBpZW50cyksIHNvIHR4UGFyYW1zLmVuYWJsZVRva2Vuc1xuICAgICAgICAvLyBpcyB0aGUgb25seSBzb3VyY2Ugb2YgdXNlciBpbnRlbnQgaGVyZS5cbiAgICAgICAgLy9cbiAgICAgICAgLy8gUmVjZWl2ZXIgdmFsaWRhdGlvbjogdGhlIHJlY2VpdmVyIG9mIGEgT25lU3RlcFByZUFwcHJvdmFsIGlzIGFsd2F5cyB0aGUgd2FsbGV0J3Mgcm9vdCBhZGRyZXNzLlxuICAgICAgICAvLyBXZSB1c2UgZW5hYmxlVG9rZW4uYWRkcmVzcyBpZiBleHBsaWNpdGx5IHByb3ZpZGVkLCBvdGhlcndpc2UgZmFsbCBiYWNrIHRvXG4gICAgICAgIC8vIHdhbGxldC5jb2luU3BlY2lmaWMoKS5yb290QWRkcmVzcyAodGhlIENhbnRvbiBwYXJ0eSBJRCBzdG9yZWQgYXQgd2FsbGV0IGNyZWF0aW9uIHRpbWUpLlxuICAgICAgICAvLyBUb2tlbiBuYW1lIHZhbGlkYXRpb246IGNoZWNrZWQgd2hlbiB0aGUgdG9rZW4gaXMgcmVzb2x2YWJsZSBmcm9tIHN0YXRpY3MuXG4gICAgICAgIGlmIChcbiAgICAgICAgICB0eFBhcmFtcy50eXBlID09PSAnZW5hYmxldG9rZW4nICYmXG4gICAgICAgICAgdHhQYXJhbXMuZW5hYmxlVG9rZW5zICE9PSB1bmRlZmluZWQgJiZcbiAgICAgICAgICB0eFBhcmFtcy5lbmFibGVUb2tlbnMubGVuZ3RoID4gMFxuICAgICAgICApIHtcbiAgICAgICAgICBjb25zdCB0eERhdGEgPSB0cmFuc2FjdGlvbi50b0pzb24oKSBhcyBUeERhdGE7XG4gICAgICAgICAgY29uc3QgZW5hYmxlVG9rZW4gPSB0eFBhcmFtcy5lbmFibGVUb2tlbnNbMF07XG4gICAgICAgICAgY29uc3Qgd2FsbGV0Um9vdEFkZHJlc3MgPSBwYXJhbXMud2FsbGV0Py5jb2luU3BlY2lmaWM/LigpPy5yb290QWRkcmVzcztcbiAgICAgICAgICBjb25zdCBleHBlY3RlZFJlY2VpdmVyID0gZW5hYmxlVG9rZW4uYWRkcmVzcyA/PyB3YWxsZXRSb290QWRkcmVzcztcbiAgICAgICAgICBpZiAoZXhwZWN0ZWRSZWNlaXZlcikge1xuICAgICAgICAgICAgLy8gU3RyaXAgP21lbW9JZCBzdWZmaXggaWYgcHJlc2VudCBpbiB0aGUgc3RvcmVkIGFkZHJlc3NcbiAgICAgICAgICAgIGNvbnN0IFtleHBlY3RlZFJlY2VpdmVyQmFzZV0gPSBleHBlY3RlZFJlY2VpdmVyLnNwbGl0KCc/bWVtb0lkPScpO1xuICAgICAgICAgICAgaWYgKHR4RGF0YS5yZWNlaXZlciAhPT0gZXhwZWN0ZWRSZWNlaXZlckJhc2UpIHtcbiAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgICAgICAgIGBPbmVTdGVwUHJlQXBwcm92YWwgcmVjZWl2ZXIgbWlzbWF0Y2g6IGV4cGVjdGVkICcke2V4cGVjdGVkUmVjZWl2ZXJCYXNlfScsIGdvdCAnJHt0eERhdGEucmVjZWl2ZXJ9J2BcbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKHR4RGF0YS50b2tlbiAhPT0gdW5kZWZpbmVkICYmIHR4RGF0YS50b2tlbiAhPT0gZW5hYmxlVG9rZW4ubmFtZSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgICAgICBgT25lU3RlcFByZUFwcHJvdmFsIHRva2VuIG5hbWUgbWlzbWF0Y2g6IGV4cGVjdGVkICcke2VuYWJsZVRva2VuLm5hbWV9JywgZ290ICcke3R4RGF0YS50b2tlbn0nYFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICBjYXNlIFRyYW5zYWN0aW9uVHlwZS5TZW5kOlxuICAgICAgICBpZiAodHhQYXJhbXMucmVjaXBpZW50cyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgY29uc3QgZmlsdGVyZWRSZWNpcGllbnRzID0gdHhQYXJhbXMucmVjaXBpZW50cz8ubWFwKChyZWNpcGllbnQpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHsgYWRkcmVzcywgYW1vdW50LCB0b2tlbk5hbWUgfSA9IHJlY2lwaWVudDtcbiAgICAgICAgICAgIGNvbnN0IFthZGRyZXNzUGFydCwgbWVtb0lkXSA9IGFkZHJlc3Muc3BsaXQoJz9tZW1vSWQ9Jyk7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICBhZGRyZXNzOiBhZGRyZXNzUGFydCxcbiAgICAgICAgICAgICAgYW1vdW50LFxuICAgICAgICAgICAgICAuLi4obWVtb0lkICYmIHsgbWVtbzogbWVtb0lkIH0pLFxuICAgICAgICAgICAgICAuLi4odG9rZW5OYW1lICYmIHsgdG9rZW5OYW1lIH0pLFxuICAgICAgICAgICAgfTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgICBjb25zdCBmaWx0ZXJlZE91dHB1dHMgPSBleHBsYWluZWRUeC5vdXRwdXRzPy5tYXAoKG91dHB1dCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgeyBhZGRyZXNzLCBhbW91bnQsIHRva2VuTmFtZSwgbWVtbyB9ID0gb3V0cHV0O1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgYWRkcmVzcyxcbiAgICAgICAgICAgICAgYW1vdW50LFxuICAgICAgICAgICAgICAuLi4obWVtbyAmJiB7IG1lbW8gfSksXG4gICAgICAgICAgICAgIC4uLih0b2tlbk5hbWUgJiYgeyB0b2tlbk5hbWUgfSksXG4gICAgICAgICAgICB9O1xuICAgICAgICAgIH0pO1xuICAgICAgICAgIGlmIChKU09OLnN0cmluZ2lmeShmaWx0ZXJlZFJlY2lwaWVudHMpICE9PSBKU09OLnN0cmluZ2lmeShmaWx0ZXJlZE91dHB1dHMpKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1R4IG91dHB1dHMgZG8gbm90IG1hdGNoIHdpdGggZXhwZWN0ZWQgdHhQYXJhbXMgcmVjaXBpZW50cycpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGB1bmtub3duIHRyYW5zYWN0aW9uIHR5cGUsICR7dHJhbnNhY3Rpb24udHlwZX1gKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHZlcmlmeUNhbnRvbkNvbW1hbmRUcmFuc2FjdGlvbihcbiAgICB0cmFuc2FjdGlvbjogQmFzZVRyYW5zYWN0aW9uLFxuICAgIHVzZXJQYXJhbXM6IENhbnRvbkNvbW1hbmRQYXJhbXMgfCB1bmRlZmluZWRcbiAgKTogYm9vbGVhbiB7XG4gICAgaWYgKCF1c2VyUGFyYW1zKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICBjb25zdCBjYW50b25UeCA9IHRyYW5zYWN0aW9uIGFzIFRyYW5zYWN0aW9uO1xuICAgIGNvbnN0IHJhd1ByZXBhcmVkID0gY2FudG9uVHgucHJlcGFyZUNvbW1hbmQ/LnByZXBhcmVkVHJhbnNhY3Rpb247XG4gICAgaWYgKCFyYXdQcmVwYXJlZCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdDYW50b25Db21tYW5kIHZlcmlmeVRyYW5zYWN0aW9uOiBtaXNzaW5nIHByZXBhcmVkVHJhbnNhY3Rpb24gcHJvdG9idWYgb24gdHggcHJlYnVpbGQnKTtcbiAgICB9XG5cbiAgICBjb25zdCBkZWNvZGVkQ29tbWFuZCA9IHV0aWxzLmV4dHJhY3RDYW50b25Db21tYW5kSW5mbyhyYXdQcmVwYXJlZCk7XG4gICAgY29uc3QgdXNlckNvbW1hbmQgPSB1c2VyUGFyYW1zLmNvbW1hbmQgYXMgUGFydGlhbDxDYW50b25Db21tYW5kPjtcblxuICAgIC8vIElucHV0IHNoYXBlIGlzIGVuZm9yY2VkIGJ5IG1wY1V0aWxzIGF0IGJ1aWxkIHRpbWU7IGhlcmUgd2UgcmVzb2x2ZSB3aGljaCBicmFuY2ggaXMgcHJlc2VudC5cbiAgICBjb25zdCBoYXNDcmVhdGUgPSAnQ3JlYXRlQ29tbWFuZCcgaW4gdXNlckNvbW1hbmQgJiYgdXRpbHMuaXNQbGFpbk9iamVjdCh1c2VyQ29tbWFuZC5DcmVhdGVDb21tYW5kKTtcbiAgICBjb25zdCBoYXNFeGVyY2lzZSA9ICdFeGVyY2lzZUNvbW1hbmQnIGluIHVzZXJDb21tYW5kICYmIHV0aWxzLmlzUGxhaW5PYmplY3QodXNlckNvbW1hbmQuRXhlcmNpc2VDb21tYW5kKTtcbiAgICBpZiAoIWhhc0NyZWF0ZSAmJiAhaGFzRXhlcmNpc2UpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgYENhbnRvbkNvbW1hbmQgdmVyaWZ5VHJhbnNhY3Rpb246IGNvbW1hbmQgbXVzdCBjb250YWluIGEgQ3JlYXRlQ29tbWFuZCBvciBFeGVyY2lzZUNvbW1hbmQgd3JhcHBlcmBcbiAgICAgICk7XG4gICAgfVxuICAgIGlmIChoYXNDcmVhdGUgJiYgaGFzRXhlcmNpc2UpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgYENhbnRvbkNvbW1hbmQgdmVyaWZ5VHJhbnNhY3Rpb246IGNvbW1hbmQgbXVzdCBjb250YWluIGV4YWN0bHkgb25lIG9mIENyZWF0ZUNvbW1hbmQgb3IgRXhlcmNpc2VDb21tYW5kLCBub3QgYm90aGBcbiAgICAgICk7XG4gICAgfVxuICAgIGNvbnN0IHVzZXJLaW5kOiBDYW50b25Db21tYW5kS2luZCA9IGhhc0NyZWF0ZSA/ICdDcmVhdGVDb21tYW5kJyA6ICdFeGVyY2lzZUNvbW1hbmQnO1xuICAgIGlmIChkZWNvZGVkQ29tbWFuZC5raW5kICE9PSB1c2VyS2luZCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICBgQ2FudG9uQ29tbWFuZCB2ZXJpZnlUcmFuc2FjdGlvbjogY29tbWFuZCBraW5kIG1pc21hdGNoIOKAlCBleHBlY3RlZCAke3VzZXJLaW5kfSwgZ290ICR7ZGVjb2RlZENvbW1hbmQua2luZH1gXG4gICAgICApO1xuICAgIH1cblxuICAgIGNvbnN0IHVzZXJJbm5lciA9XG4gICAgICB1c2VyS2luZCA9PT0gJ0NyZWF0ZUNvbW1hbmQnXG4gICAgICAgID8gKHVzZXJDb21tYW5kIGFzIENhbnRvbkNyZWF0ZUNvbW1hbmQpLkNyZWF0ZUNvbW1hbmRcbiAgICAgICAgOiAodXNlckNvbW1hbmQgYXMgQ2FudG9uRXhlcmNpc2VDb21tYW5kKS5FeGVyY2lzZUNvbW1hbmQ7XG5cbiAgICBpZiAoIXVzZXJJbm5lcj8udGVtcGxhdGVJZCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBDYW50b25Db21tYW5kIHZlcmlmeVRyYW5zYWN0aW9uOiAke3VzZXJLaW5kfS50ZW1wbGF0ZUlkIG11c3QgYmUgYSBub24tZW1wdHkgc3RyaW5nYCk7XG4gICAgfVxuXG4gICAgLy8gdGVtcGxhdGVJZCAobW9kdWxlTmFtZSArIGVudGl0eU5hbWU7IHBhY2thZ2UgaWQgaXMgbXV0YWJsZSwgc28gaWdub3JlZClcbiAgICBjb25zdCBwYXJzZWQgPSB1dGlscy5wYXJzZUNhbnRvblRlbXBsYXRlSWQodXNlcklubmVyLnRlbXBsYXRlSWQpO1xuICAgIGlmICghcGFyc2VkKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgIGBDYW50b25Db21tYW5kIHZlcmlmeVRyYW5zYWN0aW9uOiBpbnZhbGlkIHVzZXIgdGVtcGxhdGVJZCAnJHt1c2VySW5uZXIudGVtcGxhdGVJZH0nIOKAlCBleHBlY3RlZCBmb3JtYXQgJ1BrZzpNb2R1bGU6RW50aXR5J2BcbiAgICAgICk7XG4gICAgfVxuICAgIGlmIChcbiAgICAgIGRlY29kZWRDb21tYW5kLnRlbXBsYXRlSWQubW9kdWxlTmFtZSAhPT0gcGFyc2VkLm1vZHVsZU5hbWUgfHxcbiAgICAgIGRlY29kZWRDb21tYW5kLnRlbXBsYXRlSWQuZW50aXR5TmFtZSAhPT0gcGFyc2VkLmVudGl0eU5hbWVcbiAgICApIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgYENhbnRvbkNvbW1hbmQgdmVyaWZ5VHJhbnNhY3Rpb246IHRlbXBsYXRlSWQgbWlzbWF0Y2gg4oCUIGV4cGVjdGVkICcke3BhcnNlZC5tb2R1bGVOYW1lfToke3BhcnNlZC5lbnRpdHlOYW1lfScsIGdvdCAnJHtkZWNvZGVkQ29tbWFuZC50ZW1wbGF0ZUlkLm1vZHVsZU5hbWV9OiR7ZGVjb2RlZENvbW1hbmQudGVtcGxhdGVJZC5lbnRpdHlOYW1lfSdgXG4gICAgICApO1xuICAgIH1cblxuICAgIC8vIEJ1aWxkIHRoZSBpbmplY3QtYXMgc2tpcCBzZXQgb25jZSBmb3IgdXNlIGFjcm9zcyB0aGUgY29udHJhY3RJZCBhbmQgYXJndW1lbnQgY2hlY2tzXG4gICAgY29uc3Qgc2tpcFBhdGhzID0gdXRpbHMubm9ybWFsaXplSW5qZWN0QXModXNlclBhcmFtcy5yZXNvbHZlQ29udHJhY3RzKTtcblxuICAgIC8vIG1ldGFkYXRhLnN1Ym1pdHRlckluZm8uYWN0QXMgbXVzdCBjb250YWluIGV4YWN0bHkgdGhlIHNhbWUgcGFydGllcyBhcyB0aGUgdXNlcidzIGFjdEFzXG4gICAgaWYgKCFBcnJheS5pc0FycmF5KHVzZXJQYXJhbXMuYWN0QXMpIHx8IHVzZXJQYXJhbXMuYWN0QXMubGVuZ3RoID09PSAwKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYENhbnRvbkNvbW1hbmQgdmVyaWZ5VHJhbnNhY3Rpb246IGFjdEFzIG11c3QgYmUgYSBub24tZW1wdHkgYXJyYXkgb2YgcGFydHkgSURzYCk7XG4gICAgfVxuICAgIGlmICghdXNlclBhcmFtcy5hY3RBcy5ldmVyeSgocCkgPT4gdHlwZW9mIHAgPT09ICdzdHJpbmcnICYmIHAudHJpbSgpICE9PSAnJykpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgQ2FudG9uQ29tbWFuZCB2ZXJpZnlUcmFuc2FjdGlvbjogYWxsIGFjdEFzIGVudHJpZXMgbXVzdCBiZSBub24tZW1wdHkgc3RyaW5nc2ApO1xuICAgIH1cbiAgICBjb25zdCBzdWJtaXR0ZXJBY3RBcyA9IGNhbnRvblR4LmNhbnRvbkNvbW1hbmRBY3RBc1BhcnRpZXMgPz8gW107XG4gICAgaWYgKCF1dGlscy5zYW1lRWxlbWVudHMoc3VibWl0dGVyQWN0QXMsIHVzZXJQYXJhbXMuYWN0QXMpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgIGBDYW50b25Db21tYW5kIHZlcmlmeVRyYW5zYWN0aW9uOiBzdWJtaXR0ZXJJbmZvLmFjdEFzIFske3N1Ym1pdHRlckFjdEFzLmpvaW4oXG4gICAgICAgICAgJywgJ1xuICAgICAgICApfV0gZG9lcyBub3QgbWF0Y2ggdXNlciBhY3RBcyBbJHt1c2VyUGFyYW1zLmFjdEFzLmpvaW4oJywgJyl9XWBcbiAgICAgICk7XG4gICAgfVxuXG4gICAgaWYgKHVzZXJLaW5kID09PSAnRXhlcmNpc2VDb21tYW5kJykge1xuICAgICAgY29uc3QgZXhlcmNpc2VJbm5lciA9IHVzZXJJbm5lciBhcyBDYW50b25FeGVyY2lzZUNvbW1hbmRbJ0V4ZXJjaXNlQ29tbWFuZCddO1xuXG4gICAgICAvLyBjaG9pY2UgaWRcbiAgICAgIGlmIChkZWNvZGVkQ29tbWFuZC5jaG9pY2UgIT09IGV4ZXJjaXNlSW5uZXIuY2hvaWNlKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICBgQ2FudG9uQ29tbWFuZCB2ZXJpZnlUcmFuc2FjdGlvbjogY2hvaWNlIG1pc21hdGNoIOKAlCBleHBlY3RlZCAnJHtleGVyY2lzZUlubmVyLmNob2ljZX0nLCBnb3QgJyR7XG4gICAgICAgICAgICBkZWNvZGVkQ29tbWFuZC5jaG9pY2UgPz8gJydcbiAgICAgICAgICB9J2BcbiAgICAgICAgKTtcbiAgICAgIH1cblxuICAgICAgLy8gZXZlcnkgb24tY2hhaW4gYWN0aW5nUGFydHkgbXVzdCBiZSBpbiB0aGUgdXNlcidzIGFjdEFzIChwcmV2ZW50cyBwcml2aWxlZ2UgZXNjYWxhdGlvbilcbiAgICAgIGNvbnN0IG9uQ2hhaW5BY3RvcnMgPSBkZWNvZGVkQ29tbWFuZC5hY3RpbmdQYXJ0aWVzID8/IFtdO1xuICAgICAgZm9yIChjb25zdCBhY3RvciBvZiBvbkNoYWluQWN0b3JzKSB7XG4gICAgICAgIGlmICghdXNlclBhcmFtcy5hY3RBcy5pbmNsdWRlcyhhY3RvcikpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgICBgQ2FudG9uQ29tbWFuZCB2ZXJpZnlUcmFuc2FjdGlvbjogdW5hdXRob3JpemVkIGFjdGluZyBwYXJ0eSAnJHthY3Rvcn0nIG9uIHJvb3QgZXhlcmNpc2UgKG5vdCBpbiB1c2VyIGFjdEFzKWBcbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIC8vIGNvbnRyYWN0SWQg4oCUIHNraXAgd2hlbiBhYnNlbnQvZW1wdHkgb3Igd2hlbiBJTVMgd2lsbCBpbmplY3QgaXQgdmlhIHJlc29sdmVDb250cmFjdHNcbiAgICAgIGlmIChcbiAgICAgICAgZXhlcmNpc2VJbm5lci5jb250cmFjdElkICE9PSB1bmRlZmluZWQgJiZcbiAgICAgICAgZXhlcmNpc2VJbm5lci5jb250cmFjdElkICE9PSAnJyAmJlxuICAgICAgICAhc2tpcFBhdGhzLmhhcygnRXhlcmNpc2VDb21tYW5kLmNvbnRyYWN0SWQnKVxuICAgICAgKSB7XG4gICAgICAgIGlmIChkZWNvZGVkQ29tbWFuZC5jb250cmFjdElkICE9PSBleGVyY2lzZUlubmVyLmNvbnRyYWN0SWQpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgICBgQ2FudG9uQ29tbWFuZCB2ZXJpZnlUcmFuc2FjdGlvbjogY29udHJhY3RJZCBtaXNtYXRjaCDigJQgZXhwZWN0ZWQgJyR7ZXhlcmNpc2VJbm5lci5jb250cmFjdElkfScsIGdvdCAnJHtcbiAgICAgICAgICAgICAgZGVjb2RlZENvbW1hbmQuY29udHJhY3RJZCA/PyAnJ1xuICAgICAgICAgICAgfSdgXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAvLyBkZWVwIGFyZ3VtZW50IGNvbXBhcmVcbiAgICAgIGNvbnN0IGFyZ3VtZW50U2tpcFBhdGhzID0gdGhpcy5yZWxhdGl2ZVNraXBQYXRocyhza2lwUGF0aHMsICdFeGVyY2lzZUNvbW1hbmQuY2hvaWNlQXJndW1lbnQuJyk7XG4gICAgICB1dGlscy5hc3NlcnREZWVwQ2FudG9uTWF0Y2goZXhlcmNpc2VJbm5lci5jaG9pY2VBcmd1bWVudCwgZGVjb2RlZENvbW1hbmQuYXJndW1lbnQsIGFyZ3VtZW50U2tpcFBhdGhzKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgY3JlYXRlSW5uZXIgPSB1c2VySW5uZXIgYXMgQ2FudG9uQ3JlYXRlQ29tbWFuZFsnQ3JlYXRlQ29tbWFuZCddO1xuXG4gICAgICAvLyBkZWVwIGFyZ3VtZW50IGNvbXBhcmVcbiAgICAgIGNvbnN0IGFyZ3VtZW50U2tpcFBhdGhzID0gdGhpcy5yZWxhdGl2ZVNraXBQYXRocyhza2lwUGF0aHMsICdDcmVhdGVDb21tYW5kLmNyZWF0ZUFyZ3VtZW50cy4nKTtcbiAgICAgIHV0aWxzLmFzc2VydERlZXBDYW50b25NYXRjaChjcmVhdGVJbm5lci5jcmVhdGVBcmd1bWVudHMsIGRlY29kZWRDb21tYW5kLmFyZ3VtZW50LCBhcmd1bWVudFNraXBQYXRocyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICBwcml2YXRlIHJlbGF0aXZlU2tpcFBhdGhzKHNraXBQYXRoczogU2V0PHN0cmluZz4sIHByZWZpeDogc3RyaW5nKTogU2V0PHN0cmluZz4ge1xuICAgIGNvbnN0IG91dCA9IG5ldyBTZXQ8c3RyaW5nPigpO1xuICAgIGZvciAoY29uc3QgcCBvZiBza2lwUGF0aHMpIHtcbiAgICAgIGlmIChwLnN0YXJ0c1dpdGgocHJlZml4KSkge1xuICAgICAgICBjb25zdCBzdHJpcHBlZCA9IHAuc2xpY2UocHJlZml4Lmxlbmd0aCk7XG4gICAgICAgIGlmIChzdHJpcHBlZCkgb3V0LmFkZChzdHJpcHBlZCk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBvdXQ7XG4gIH1cblxuICAvKiogQGluaGVyaXREb2MgKi9cbiAgYXN5bmMgaXNXYWxsZXRBZGRyZXNzKHBhcmFtczogVHNzVmVyaWZ5QWRkcmVzc09wdGlvbnMpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICAvLyBUT0RPOiByZWZhY3RvciB0aGlzIGFuZCB1c2UgdGhlIGB2ZXJpZnlFZGRzYU1lbW9CYXNlZFdhbGxldEFkZHJlc3NgIG9uY2UgcHVibGlzaGVkIGZyb20gc2RrLWNvcmVcbiAgICAvLyBodHRwczovL2JpdGdvaW5jLmF0bGFzc2lhbi5uZXQvYnJvd3NlL0NPSU4tNjM0N1xuICAgIGNvbnN0IHsga2V5Y2hhaW5zLCBhZGRyZXNzOiBuZXdBZGRyZXNzLCBpbmRleCB9ID0gcGFyYW1zO1xuICAgIGNvbnN0IFthZGRyZXNzUGFydCwgbWVtb0lkXSA9IG5ld0FkZHJlc3Muc3BsaXQoJz9tZW1vSWQ9Jyk7XG4gICAgaWYgKCF0aGlzLmlzVmFsaWRBZGRyZXNzKGFkZHJlc3NQYXJ0KSkge1xuICAgICAgdGhyb3cgbmV3IEludmFsaWRBZGRyZXNzRXJyb3IoYGludmFsaWQgYWRkcmVzczogJHtuZXdBZGRyZXNzfWApO1xuICAgIH1cbiAgICBpZiAobWVtb0lkICYmIG1lbW9JZCAhPT0gYCR7aW5kZXh9YCkge1xuICAgICAgdGhyb3cgbmV3IEludmFsaWRBZGRyZXNzRXJyb3IoYGludmFsaWQgbWVtb0lkIGluZGV4OiAke21lbW9JZH1gKTtcbiAgICB9XG4gICAgY29uc3QgY29tbW9uS2V5Y2hhaW4gPSBleHRyYWN0Q29tbW9uS2V5Y2hhaW4oa2V5Y2hhaW5zKTtcbiAgICBjb25zdCBNUEMgPSBhd2FpdCBFRERTQU1ldGhvZHMuZ2V0SW5pdGlhbGl6ZWRNcGNJbnN0YW5jZSgpO1xuICAgIGNvbnN0IGRlcml2YXRpb25QYXRoID0gJ20vMCc7XG4gICAgY29uc3QgZGVyaXZlZFB1YmxpY0tleSA9IE1QQy5kZXJpdmVVbmhhcmRlbmVkKGNvbW1vbktleWNoYWluLCBkZXJpdmF0aW9uUGF0aCkuc2xpY2UoMCwgNjQpO1xuICAgIGNvbnN0IHB1YmxpY0tleUJhc2U2NCA9IEJ1ZmZlci5mcm9tKGRlcml2ZWRQdWJsaWNLZXksICdoZXgnKS50b1N0cmluZygnYmFzZTY0Jyk7XG4gICAgY29uc3Qgcm9vdEFkZHJlc3NGaW5nZXJwcmludCA9IHV0aWxzLmdldEFkZHJlc3NGcm9tUHVibGljS2V5KHB1YmxpY0tleUJhc2U2NCk7XG4gICAgY29uc3Qgcm9vdEFkZHJlc3MgPSBgJHtyb290QWRkcmVzc0ZpbmdlcnByaW50LnNsaWNlKDAsIDUpfTo6JHtyb290QWRkcmVzc0ZpbmdlcnByaW50fWA7XG4gICAgcmV0dXJuIGFkZHJlc3NQYXJ0ID09PSByb290QWRkcmVzcztcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdERvYyAqL1xuICBhc3luYyBwYXJzZVRyYW5zYWN0aW9uKHBhcmFtczogUGFyc2VUcmFuc2FjdGlvbk9wdGlvbnMpOiBQcm9taXNlPFBhcnNlZFRyYW5zYWN0aW9uPiB7XG4gICAgY29uc3QgdHhIZXggPSBwYXJhbXMudHhIZXggYXMgc3RyaW5nIHwgdW5kZWZpbmVkO1xuICAgIGlmICghdHhIZXgpIHtcbiAgICAgIC8vIE1lc3NhZ2Utb25seSBzaWduaW5nIHJlcXVlc3RzIChlLmcuIENBTlRPTl9TSUdOX1RSQU5TQUNUSU9OLCBDQU5UT05fU0lHTl9UT1BPTE9HWSlcbiAgICAgIC8vIGhhdmUgbm8gdHJhbnNhY3Rpb24gaGV4IHRvIHBhcnNlIOKAlCByZXR1cm4gYW4gZW1wdHkgcmVzdWx0LlxuICAgICAgcmV0dXJuIHt9O1xuICAgIH1cbiAgICBjb25zdCB0cmFuc2FjdGlvbkV4cGxhbmF0aW9uID0gYXdhaXQgdGhpcy5leHBsYWluVHJhbnNhY3Rpb24oeyB0eEhleCB9KTtcbiAgICBpZiAoIXRyYW5zYWN0aW9uRXhwbGFuYXRpb24pIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignSW52YWxpZCB0cmFuc2FjdGlvbicpO1xuICAgIH1cbiAgICByZXR1cm4gdHJhbnNhY3Rpb25FeHBsYW5hdGlvbiBhcyB1bmtub3duIGFzIFBhcnNlZFRyYW5zYWN0aW9uO1xuICB9XG5cbiAgLyoqIEBpbmhlcml0RG9jICovXG4gIGdlbmVyYXRlS2V5UGFpcihzZWVkPzogQnVmZmVyKTogS2V5UGFpciB7XG4gICAgY29uc3Qga2V5UGFpciA9IHNlZWQgPyBuZXcgQ2FudG9uS2V5UGFpcih7IHNlZWQgfSkgOiBuZXcgQ2FudG9uS2V5UGFpcigpO1xuICAgIGNvbnN0IGtleXMgPSBrZXlQYWlyLmdldEtleXMoKTtcbiAgICBpZiAoIWtleXMucHJ2KSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ01pc3NpbmcgcHJ2IGluIGtleSBnZW5lcmF0aW9uLicpO1xuICAgIH1cbiAgICByZXR1cm4ge1xuICAgICAgcHViOiBrZXlzLnB1YixcbiAgICAgIHBydjoga2V5cy5wcnYsXG4gICAgfTtcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdERvYyAqL1xuICBleHBsYWluVHJhbnNhY3Rpb24ocGFyYW1zOiBFeHBsYWluVHJhbnNhY3Rpb25PcHRpb25zKTogUHJvbWlzZTxUcmFuc2FjdGlvbkV4cGxhbmF0aW9uPiB7XG4gICAgY29uc3QgZmFjdG9yeSA9IHRoaXMuZ2V0QnVpbGRlcigpO1xuICAgIGxldCByZWJ1aWx0VHJhbnNhY3Rpb246IEJhc2VUcmFuc2FjdGlvbjtcbiAgICBjb25zdCB0eFJhdyA9IHBhcmFtcy50eEhleDtcbiAgICB0cnkge1xuICAgICAgY29uc3QgdHhCdWlsZGVyID0gZmFjdG9yeS5mcm9tKHR4UmF3KTtcbiAgICAgIHJlYnVpbHRUcmFuc2FjdGlvbiA9IHR4QnVpbGRlci50cmFuc2FjdGlvbjtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgdHJhbnNhY3Rpb24nKTtcbiAgICB9XG4gICAgcmV0dXJuIHJlYnVpbHRUcmFuc2FjdGlvbi5leHBsYWluVHJhbnNhY3Rpb24oKTtcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdERvYyAqL1xuICBpc1ZhbGlkUHViKHB1Yjogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHV0aWxzLmlzVmFsaWRQdWJsaWNLZXkocHViKTtcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdERvYyAqL1xuICBpc1ZhbGlkQWRkcmVzcyhhZGRyZXNzOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICAvLyBjYW50b24gYWRkcmVzc2VzIGFyZSBvZiB0aGUgZm9ybSwgcGFydHlIaW50OjpmaW5nZXJwcmludFxuICAgIC8vIHdoZXJlIHBhcnR5SGludCBpcyBvZiBsZW5ndGggNSBhbmQgZmluZ2VycHJpbnQgaXMgNjggY2hhcmFjdGVycyBsb25nXG4gICAgcmV0dXJuIHV0aWxzLmlzVmFsaWRBZGRyZXNzKGFkZHJlc3MpO1xuICB9XG5cbiAgLyoqIEBpbmhlcml0RG9jICovXG4gIGdldFRva2VuRW5hYmxlbWVudENvbmZpZygpOiBUb2tlbkVuYWJsZW1lbnRDb25maWcge1xuICAgIHJldHVybiB7XG4gICAgICByZXF1aXJlc1Rva2VuRW5hYmxlbWVudDogdHJ1ZSxcbiAgICAgIHN1cHBvcnRzTXVsdGlwbGVUb2tlbkVuYWJsZW1lbnRzOiBmYWxzZSxcbiAgICB9O1xuICB9XG5cbiAgZ2V0QWRkcmVzc0Zyb21QdWJsaWNLZXkocHVibGljS2V5SGV4OiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIGNvbnN0IHB1YmxpY0tleUJhc2U2NCA9IEJ1ZmZlci5mcm9tKHB1YmxpY0tleUhleCwgJ2hleCcpLnRvU3RyaW5nKCdiYXNlNjQnKTtcbiAgICByZXR1cm4gdXRpbHMuZ2V0QWRkcmVzc0Zyb21QdWJsaWNLZXkocHVibGljS2V5QmFzZTY0KTtcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdERvYyAqL1xuICBzaWduVHJhbnNhY3Rpb24ocGFyYW1zOiBTaWduVHJhbnNhY3Rpb25PcHRpb25zKTogUHJvbWlzZTxTaWduZWRUcmFuc2FjdGlvbj4ge1xuICAgIHRocm93IG5ldyBFcnJvcignTWV0aG9kIG5vdCBpbXBsZW1lbnRlZC4nKTtcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdERvYyAqL1xuICBhdWRpdERlY3J5cHRlZEtleSh7IG11bHRpU2lnVHlwZSwgcHJ2LCBwdWJsaWNLZXkgfTogQXVkaXREZWNyeXB0ZWRLZXlQYXJhbXMpOiB2b2lkIHtcbiAgICBpZiAobXVsdGlTaWdUeXBlICE9PSBtdWx0aXNpZ1R5cGVzLnRzcykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdVbnN1cHBvcnRlZCBtdWx0aVNpZ1R5cGUnKTtcbiAgICB9XG4gICAgYXVkaXRFZGRzYVByaXZhdGVLZXkocHJ2LCBwdWJsaWNLZXkgPz8gJycpO1xuICB9XG5cbiAgLyoqIEBpbmhlcml0RG9jICovXG4gIHNldENvaW5TcGVjaWZpY0ZpZWxkc0luSW50ZW50KGludGVudDogUG9wdWxhdGVkSW50ZW50LCBwYXJhbXM6IFByZWJ1aWxkVHJhbnNhY3Rpb25XaXRoSW50ZW50T3B0aW9ucyk6IHZvaWQge1xuICAgIGlmIChwYXJhbXMudHhSZXF1ZXN0SWQpIHtcbiAgICAgIGludGVudC50eFJlcXVlc3RJZCA9IHBhcmFtcy50eFJlcXVlc3RJZDtcbiAgICB9XG4gICAgaWYgKHBhcmFtcy50cmFuc2Zlck9mZmVySWQpIHtcbiAgICAgIGludGVudC50cmFuc2Zlck9mZmVySWQgPSBwYXJhbXMudHJhbnNmZXJPZmZlcklkO1xuICAgIH1cbiAgICBpZiAocGFyYW1zLnVuc3BlbnRzKSB7XG4gICAgICBpbnRlbnQudW5zcGVudHMgPSBwYXJhbXMudW5zcGVudHM7XG4gICAgfVxuICAgIGlmIChwYXJhbXMuY2FudG9uQ29tbWFuZFBhcmFtcykge1xuICAgICAgaW50ZW50LmNhbnRvbkNvbW1hbmRQYXJhbXMgPSBwYXJhbXMuY2FudG9uQ29tbWFuZFBhcmFtcztcbiAgICB9XG4gICAgaWYgKHBhcmFtcy5lbmRJbnZlc3RvclBhcnR5SWQpIHtcbiAgICAgIGludGVudC5lbmRJbnZlc3RvclBhcnR5SWQgPSBwYXJhbXMuZW5kSW52ZXN0b3JQYXJ0eUlkO1xuICAgIH1cbiAgICBpZiAocGFyYW1zLnJlYXNvbikge1xuICAgICAgaW50ZW50LnJlYXNvbiA9IHBhcmFtcy5yZWFzb247XG4gICAgfVxuICAgIGlmIChwYXJhbXMub3BlcmF0b3IpIHtcbiAgICAgIGludGVudC5vcGVyYXRvciA9IHBhcmFtcy5vcGVyYXRvcjtcbiAgICB9XG4gICAgaWYgKHBhcmFtcy5wcm92aWRlcikge1xuICAgICAgaW50ZW50LnByb3ZpZGVyID0gcGFyYW1zLnByb3ZpZGVyO1xuICAgIH1cbiAgICBpZiAocGFyYW1zLmNvbXBsaWFuY2UpIHtcbiAgICAgIGludGVudC5jb21wbGlhbmNlID0gcGFyYW1zLmNvbXBsaWFuY2U7XG4gICAgfVxuICAgIGlmIChwYXJhbXMucmVnaXN0cmFyKSB7XG4gICAgICBpbnRlbnQucmVnaXN0cmFyID0gcGFyYW1zLnJlZ2lzdHJhcjtcbiAgICB9XG4gICAgaWYgKHBhcmFtcy5jbGllbnRPbmJvYXJkZXIpIHtcbiAgICAgIGludGVudC5jbGllbnRPbmJvYXJkZXIgPSBwYXJhbXMuY2xpZW50T25ib2FyZGVyO1xuICAgIH1cbiAgICBpZiAocGFyYW1zLmV4cGlyYXRpb25Jc28pIHtcbiAgICAgIGludGVudC5leHBpcmF0aW9uSXNvID0gcGFyYW1zLmV4cGlyYXRpb25Jc287XG4gICAgfVxuICB9XG59XG4iXX0=
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"transaction.d.ts","sourceRoot":"","sources":["../../../../src/lib/transaction/transaction.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,OAAO,EACP,eAAe,EAIf,eAAe,EAChB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,QAAQ,IAAI,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAC7D,OAAO,EACL,iBAAiB,EAEjB,4BAA4B,EAC5B,wBAAwB,EACxB,8BAA8B,EAK9B,sBAAsB,EACtB,mBAAmB,EACnB,MAAM,EACP,MAAM,UAAU,CAAC;AAIlB,qBAAa,WAAY,SAAQ,eAAe;IAC9C,OAAO,CAAC,eAAe,CAA+B;IACtD,OAAO,CAAC,kBAAkB,CAAS;IACnC,OAAO,CAAC,gBAAgB,CAAsB;IAC9C,OAAO,CAAC,6BAA6B,CAA2B;IAChE,OAAO,CAAC,sBAAsB,CAAoB;IAClD,OAAO,CAAC,+BAA+B,CAAiC;IACxE,OAAO,CAAC,mBAAmB,CAAW;gBAE1B,UAAU,EAAE,QAAQ,CAAC,UAAU,CAAC;IAI5C,IAAI,cAAc,IAAI,4BAA4B,CAEjD;IAED,IAAI,cAAc,CAAC,WAAW,EAAE,4BAA4B,EAE3D;IAED,IAAI,eAAe,CAAC,eAAe,EAAE,eAAe,EAEnD;IAED,IAAI,eAAe,CAAC,IAAI,EAAE,mBAAmB,EAE5C;IAED,IAAI,4BAA4B,CAAC,IAAI,EAAE,wBAAwB,EAE9D;IAED,IAAI,qBAAqB,CAAC,IAAI,EAAE,iBAAiB,EAEhD;IAED,IAAI,8BAA8B,CAAC,IAAI,EAAE,8BAA8B,EAEtE;IAED,IAAI,kBAAkB,CAAC,OAAO,EAAE,MAAM,EAAE,EAEvC;IAED,IAAI,EAAE,IAAI,MAAM,CAKf;IAED,IAAI,EAAE,CAAC,EAAE,EAAE,MAAM,EAEhB;IAED,OAAO,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO;IAI9B,IAAI,UAAU,CAAC,SAAS,EAAE,MAAM,EAE/B;IAED,IAAI,iBAAiB,CAAC,WAAW,EAAE,MAAM,EAExC;IAED,iBAAiB,IAAI,MAAM;IAsG3B,MAAM,IAAI,MAAM;IAoEhB,IAAI,eAAe,IAAI,MAAM,CAa5B;IAED,IAAI,yBAAyB,IAAI,MAAM,EAAE,CAExC;IAED,kBAAkB,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAyCvC;;;OAGG;IACH,oBAAoB,IAAI,IAAI;IAoB5B,kBAAkB,IAAI,sBAAsB;
|
|
1
|
+
{"version":3,"file":"transaction.d.ts","sourceRoot":"","sources":["../../../../src/lib/transaction/transaction.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,OAAO,EACP,eAAe,EAIf,eAAe,EAChB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,QAAQ,IAAI,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAC7D,OAAO,EACL,iBAAiB,EAEjB,4BAA4B,EAC5B,wBAAwB,EACxB,8BAA8B,EAK9B,sBAAsB,EACtB,mBAAmB,EACnB,MAAM,EACP,MAAM,UAAU,CAAC;AAIlB,qBAAa,WAAY,SAAQ,eAAe;IAC9C,OAAO,CAAC,eAAe,CAA+B;IACtD,OAAO,CAAC,kBAAkB,CAAS;IACnC,OAAO,CAAC,gBAAgB,CAAsB;IAC9C,OAAO,CAAC,6BAA6B,CAA2B;IAChE,OAAO,CAAC,sBAAsB,CAAoB;IAClD,OAAO,CAAC,+BAA+B,CAAiC;IACxE,OAAO,CAAC,mBAAmB,CAAW;gBAE1B,UAAU,EAAE,QAAQ,CAAC,UAAU,CAAC;IAI5C,IAAI,cAAc,IAAI,4BAA4B,CAEjD;IAED,IAAI,cAAc,CAAC,WAAW,EAAE,4BAA4B,EAE3D;IAED,IAAI,eAAe,CAAC,eAAe,EAAE,eAAe,EAEnD;IAED,IAAI,eAAe,CAAC,IAAI,EAAE,mBAAmB,EAE5C;IAED,IAAI,4BAA4B,CAAC,IAAI,EAAE,wBAAwB,EAE9D;IAED,IAAI,qBAAqB,CAAC,IAAI,EAAE,iBAAiB,EAEhD;IAED,IAAI,8BAA8B,CAAC,IAAI,EAAE,8BAA8B,EAEtE;IAED,IAAI,kBAAkB,CAAC,OAAO,EAAE,MAAM,EAAE,EAEvC;IAED,IAAI,EAAE,IAAI,MAAM,CAKf;IAED,IAAI,EAAE,CAAC,EAAE,EAAE,MAAM,EAEhB;IAED,OAAO,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO;IAI9B,IAAI,UAAU,CAAC,SAAS,EAAE,MAAM,EAE/B;IAED,IAAI,iBAAiB,CAAC,WAAW,EAAE,MAAM,EAExC;IAED,iBAAiB,IAAI,MAAM;IAsG3B,MAAM,IAAI,MAAM;IAoEhB,IAAI,eAAe,IAAI,MAAM,CAa5B;IAED,IAAI,yBAAyB,IAAI,MAAM,EAAE,CAExC;IAED,kBAAkB,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAyCvC;;;OAGG;IACH,oBAAoB,IAAI,IAAI;IAoB5B,kBAAkB,IAAI,sBAAsB;IAgH5C,OAAO,CAAC,yBAAyB;CAoBlC"}
|
|
@@ -353,7 +353,8 @@ class Transaction extends sdk_core_1.BaseTransaction {
|
|
|
353
353
|
outputAmount = txData.amount;
|
|
354
354
|
break;
|
|
355
355
|
}
|
|
356
|
-
case sdk_core_1.TransactionType.TransferOfferWithdrawn:
|
|
356
|
+
case sdk_core_1.TransactionType.TransferOfferWithdrawn:
|
|
357
|
+
case sdk_core_1.TransactionType.AllocationAllocateWithdrawn: {
|
|
357
358
|
const txData = this.toJson();
|
|
358
359
|
const input = {
|
|
359
360
|
address: txData.receiver,
|
|
@@ -439,4 +440,4 @@ class Transaction extends sdk_core_1.BaseTransaction {
|
|
|
439
440
|
}
|
|
440
441
|
}
|
|
441
442
|
exports.Transaction = Transaction;
|
|
442
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNhY3Rpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbGliL3RyYW5zYWN0aW9uL3RyYW5zYWN0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLG1EQU84QjtBQWdCOUIscURBQTZCO0FBQzdCLDBDQUE2RztBQUU3RyxNQUFhLFdBQVksU0FBUSwwQkFBZTtJQVM5QyxZQUFZLFVBQWdDO1FBQzFDLEtBQUssQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUNwQixDQUFDO0lBRUQsSUFBSSxjQUFjO1FBQ2hCLE9BQU8sSUFBSSxDQUFDLGVBQWUsQ0FBQztJQUM5QixDQUFDO0lBRUQsSUFBSSxjQUFjLENBQUMsV0FBeUM7UUFDMUQsSUFBSSxDQUFDLGVBQWUsR0FBRyxXQUFXLENBQUM7SUFDckMsQ0FBQztJQUVELElBQUksZUFBZSxDQUFDLGVBQWdDO1FBQ2xELElBQUksQ0FBQyxLQUFLLEdBQUcsZUFBZSxDQUFDO0lBQy9CLENBQUM7SUFFRCxJQUFJLGVBQWUsQ0FBQyxJQUF5QjtRQUMzQyxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDO0lBQy9CLENBQUM7SUFFRCxJQUFJLDRCQUE0QixDQUFDLElBQThCO1FBQzdELElBQUksQ0FBQyw2QkFBNkIsR0FBRyxJQUFJLENBQUM7SUFDNUMsQ0FBQztJQUVELElBQUkscUJBQXFCLENBQUMsSUFBdUI7UUFDL0MsSUFBSSxDQUFDLHNCQUFzQixHQUFHLElBQUksQ0FBQztJQUNyQyxDQUFDO0lBRUQsSUFBSSw4QkFBOEIsQ0FBQyxJQUFvQztRQUNyRSxJQUFJLENBQUMsK0JBQStCLEdBQUcsSUFBSSxDQUFDO0lBQzlDLENBQUM7SUFFRCxJQUFJLGtCQUFrQixDQUFDLE9BQWlCO1FBQ3RDLElBQUksQ0FBQyxtQkFBbUIsR0FBRyxPQUFPLENBQUM7SUFDckMsQ0FBQztJQUVELElBQUksRUFBRTtRQUNKLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUM7WUFDZCxNQUFNLElBQUksa0NBQXVCLENBQUMsMkJBQTJCLENBQUMsQ0FBQztRQUNqRSxDQUFDO1FBQ0QsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDO0lBQ2xCLENBQUM7SUFFRCxJQUFJLEVBQUUsQ0FBQyxFQUFVO1FBQ2YsSUFBSSxDQUFDLEdBQUcsR0FBRyxFQUFFLENBQUM7SUFDaEIsQ0FBQztJQUVELE9BQU8sQ0FBQyxHQUFZO1FBQ2xCLE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztJQUVELElBQUksVUFBVSxDQUFDLFNBQWlCO1FBQzlCLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQ25DLENBQUM7SUFFRCxJQUFJLGlCQUFpQixDQUFDLFdBQW1CO1FBQ3ZDLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxXQUFXLENBQUM7SUFDeEMsQ0FBQztJQUVELGlCQUFpQjtRQUNmLElBQUksSUFBSSxDQUFDLEtBQUssS0FBSyxTQUFTLEVBQUUsQ0FBQztZQUM3QixNQUFNLElBQUksa0NBQXVCLENBQUMsNkJBQTZCLENBQUMsQ0FBQztRQUNuRSxDQUFDO1FBQ0QsSUFBSSxJQUFJLENBQUMsS0FBSyxLQUFLLDBCQUFlLENBQUMsbUJBQW1CLEVBQUUsQ0FBQztZQUN2RCxJQUFJLENBQUMsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7Z0JBQzNCLE1BQU0sSUFBSSxrQ0FBdUIsQ0FBQyw0QkFBNEIsQ0FBQyxDQUFDO1lBQ2xFLENBQUM7WUFDRCxNQUFNLE9BQU8sR0FBNkI7Z0JBQ3hDLE1BQU0sRUFBRSwwQkFBZSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUM7Z0JBQ25DLFlBQVksRUFBRSxJQUFJLENBQUMsRUFBRTtnQkFDckIsZUFBZSxFQUFFLElBQUksQ0FBQyxnQkFBZ0I7YUFDdkMsQ0FBQztZQUNGLE9BQU8sTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ2pFLENBQUM7UUFDRCxJQUFJLElBQUksQ0FBQyxLQUFLLEtBQUssMEJBQWUsQ0FBQyx3QkFBd0IsRUFBRSxDQUFDO1lBQzVELElBQUksQ0FBQyxJQUFJLENBQUMsNkJBQTZCLEVBQUUsQ0FBQztnQkFDeEMsTUFBTSxJQUFJLGtDQUF1QixDQUFDLHlDQUF5QyxDQUFDLENBQUM7WUFDL0UsQ0FBQztZQUNELE1BQU0sT0FBTyxHQUE2QjtnQkFDeEMsTUFBTSxFQUFFLDBCQUFlLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQztnQkFDbkMsWUFBWSxFQUFFLElBQUksQ0FBQyxFQUFFO2dCQUNyQiw0QkFBNEIsRUFBRSxJQUFJLENBQUMsNkJBQTZCO2FBQ2pFLENBQUM7WUFDRixPQUFPLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUNqRSxDQUFDO1FBQ0QsSUFBSSxJQUFJLENBQUMsS0FBSyxLQUFLLDBCQUFlLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztZQUNyRCxJQUFJLENBQUMsSUFBSSxDQUFDLHNCQUFzQixFQUFFLENBQUM7Z0JBQ2pDLE1BQU0sSUFBSSxrQ0FBdUIsQ0FBQyxrQ0FBa0MsQ0FBQyxDQUFDO1lBQ3hFLENBQUM7WUFDRCxNQUFNLE9BQU8sR0FBNkI7Z0JBQ3hDLE1BQU0sRUFBRSwwQkFBZSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUM7Z0JBQ25DLFlBQVksRUFBRSxJQUFJLENBQUMsRUFBRTtnQkFDckIscUJBQXFCLEVBQUUsSUFBSSxDQUFDLHNCQUFzQjthQUNuRCxDQUFDO1lBQ0YsT0FBTyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDakUsQ0FBQztRQUNELElBQUksSUFBSSxDQUFDLEtBQUssS0FBSywwQkFBZSxDQUFDLDBCQUEwQixFQUFFLENBQUM7WUFDOUQsSUFBSSxDQUFDLElBQUksQ0FBQywrQkFBK0IsRUFBRSxDQUFDO2dCQUMxQyxNQUFNLElBQUksa0NBQXVCLENBQUMsMkNBQTJDLENBQUMsQ0FBQztZQUNqRixDQUFDO1lBQ0QsTUFBTSxPQUFPLEdBQTZCO2dCQUN4QyxNQUFNLEVBQUUsMEJBQWUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDO2dCQUNuQyxZQUFZLEVBQUUsSUFBSSxDQUFDLEVBQUU7Z0JBQ3JCLDhCQUE4QixFQUFFLElBQUksQ0FBQywrQkFBK0I7YUFDckUsQ0FBQztZQUNGLE9BQU8sTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ2pFLENBQUM7UUFDRCxJQUFJLENBQUMsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO1lBQzFCLE1BQU0sSUFBSSxrQ0FBdUIsQ0FBQyx3QkFBd0IsQ0FBQyxDQUFDO1FBQzlELENBQUM7UUFDRCxNQUFNLGVBQWUsR0FBcUIsRUFBRSxDQUFDO1FBQzdDLE1BQU0sSUFBSSxHQUE2QjtZQUNyQyxzQkFBc0IsRUFBRSxJQUFJLENBQUMsZUFBZTtZQUM1QyxNQUFNLEVBQUUsSUFBSSxDQUFDLEtBQUssS0FBSyxTQUFTLENBQUMsQ0FBQyxDQUFDLDBCQUFlLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFO1lBQ25FLG1CQUFtQixFQUFFLEVBQUU7WUFDdkIsZUFBZSxFQUFFO2dCQUNmLFVBQVUsRUFBRSxlQUFlO2FBQzVCO1lBQ0QsbUJBQW1CLEVBQUU7Z0JBQ25CLEtBQUssRUFBRSxFQUFFO2FBQ1Y7WUFDRCxZQUFZLEVBQUUsSUFBSSxDQUFDLEVBQUU7WUFDckIsb0JBQW9CLEVBQUUsaUNBQXNCO1lBQzVDLGFBQWEsRUFBRTtnQkFDYixJQUFJLEVBQUU7b0JBQ0osS0FBSyxFQUFFLEVBQUU7aUJBQ1Y7YUFDRjtTQUNGLENBQUM7UUFDRixNQUFNLFVBQVUsR0FBeUIsRUFBRSxDQUFDO1FBQzVDLElBQUksSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxJQUFJLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO1lBQzNELElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLENBQUMsU0FBUyxFQUFFLEVBQUU7Z0JBQy9CLE1BQU0sWUFBWSxHQUF1QjtvQkFDdkMsTUFBTSxFQUFFLDJCQUFnQjtvQkFDeEIsU0FBUyxFQUFFLFNBQVM7b0JBQ3BCLFFBQVEsRUFBRSxJQUFJLENBQUMsa0JBQWtCO29CQUNqQyxvQkFBb0IsRUFBRSxtQ0FBd0I7aUJBQy9DLENBQUM7Z0JBQ0YsVUFBVSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQztZQUNoQyxDQUFDLENBQUMsQ0FBQztZQUNILDJJQUEySTtZQUMzSSxJQUFJLElBQUksQ0FBQyxLQUFLLEtBQUssMEJBQWUsQ0FBQyxhQUFhLEVBQUUsQ0FBQztnQkFDakQsSUFBSSxDQUFDLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxNQUFNLEVBQUUsQ0FBQztvQkFDdEMsTUFBTSxJQUFJLGtDQUF1QixDQUMvQixpRkFBaUYsQ0FDbEYsQ0FBQztnQkFDSixDQUFDO2dCQUNELEtBQUssTUFBTSxLQUFLLElBQUksSUFBSSxDQUFDLG1CQUFtQixFQUFFLENBQUM7b0JBQzdDLElBQUksQ0FBQyxlQUFlLEVBQUUsVUFBVSxDQUFDLElBQUksQ0FBQyxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQUUsQ0FBQyxDQUFDO2dCQUMvRCxDQUFDO1lBQ0gsQ0FBQztpQkFBTSxDQUFDO2dCQUNOLE1BQU0sYUFBYSxHQUFHLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEtBQUssSUFBSSxDQUFDLGtCQUFrQixFQUFFLENBQUM7Z0JBQzNGLElBQUksQ0FBQyxlQUFlLEVBQUUsVUFBVSxDQUFDLElBQUksQ0FBQyxFQUFFLEtBQUssRUFBRSxhQUFhLEVBQUUsVUFBVSxFQUFFLENBQUMsQ0FBQztZQUM5RSxDQUFDO1lBQ0QsSUFBSSxDQUFDLG1CQUFtQixHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsbUJBQW1CO2dCQUNqRSxDQUFDLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxtQkFBbUI7Z0JBQzFDLENBQUMsQ0FBQyxFQUFFLENBQUM7UUFDVCxDQUFDO1FBQ0QsT0FBTyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDOUQsQ0FBQztJQUVELE1BQU07UUFDSixNQUFNLE1BQU0sR0FBVztZQUNyQixFQUFFLEVBQUUsSUFBSSxDQUFDLEVBQUU7WUFDWCxJQUFJLEVBQUUsSUFBSSxDQUFDLEtBQXdCO1lBQ25DLE1BQU0sRUFBRSxFQUFFO1lBQ1YsUUFBUSxFQUFFLEVBQUU7WUFDWixNQUFNLEVBQUUsRUFBRTtTQUNYLENBQUM7UUFDRixJQUFJLElBQUksQ0FBQyxLQUFLLEtBQUssMEJBQWUsQ0FBQyxtQkFBbUIsRUFBRSxDQUFDO1lBQ3ZELElBQUksQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztnQkFDM0IsTUFBTSxJQUFJLGtDQUF1QixDQUFDLDRCQUE0QixDQUFDLENBQUM7WUFDbEUsQ0FBQztZQUNELE1BQU0sQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDO1lBQy9DLE9BQU8sTUFBTSxDQUFDO1FBQ2hCLENBQUM7UUFDRCxJQUFJLElBQUksQ0FBQyxLQUFLLEtBQUssMEJBQWUsQ0FBQyx3QkFBd0IsRUFBRSxDQUFDO1lBQzVELElBQUksQ0FBQyxJQUFJLENBQUMsNkJBQTZCLEVBQUUsQ0FBQztnQkFDeEMsTUFBTSxJQUFJLGtDQUF1QixDQUFDLHlDQUF5QyxDQUFDLENBQUM7WUFDL0UsQ0FBQztZQUNELE1BQU0sQ0FBQyw0QkFBNEIsR0FBRyxJQUFJLENBQUMsNkJBQTZCLENBQUM7WUFDekUsT0FBTyxNQUFNLENBQUM7UUFDaEIsQ0FBQztRQUNELElBQUksSUFBSSxDQUFDLEtBQUssS0FBSywwQkFBZSxDQUFDLGlCQUFpQixFQUFFLENBQUM7WUFDckQsSUFBSSxDQUFDLElBQUksQ0FBQyxzQkFBc0IsRUFBRSxDQUFDO2dCQUNqQyxNQUFNLElBQUksa0NBQXVCLENBQUMsa0NBQWtDLENBQUMsQ0FBQztZQUN4RSxDQUFDO1lBQ0QsTUFBTSxDQUFDLHFCQUFxQixHQUFHLElBQUksQ0FBQyxzQkFBc0IsQ0FBQztZQUMzRCxPQUFPLE1BQU0sQ0FBQztRQUNoQixDQUFDO1FBQ0QsSUFBSSxJQUFJLENBQUMsS0FBSyxLQUFLLDBCQUFlLENBQUMsMEJBQTBCLEVBQUUsQ0FBQztZQUM5RCxJQUFJLENBQUMsSUFBSSxDQUFDLCtCQUErQixFQUFFLENBQUM7Z0JBQzFDLE1BQU0sSUFBSSxrQ0FBdUIsQ0FBQywyQ0FBMkMsQ0FBQyxDQUFDO1lBQ2pGLENBQUM7WUFDRCxNQUFNLENBQUMsOEJBQThCLEdBQUcsSUFBSSxDQUFDLCtCQUErQixDQUFDO1lBQzdFLE9BQU8sTUFBTSxDQUFDO1FBQ2hCLENBQUM7UUFDRCxJQUFJLElBQUksQ0FBQyxLQUFLLEtBQUssMEJBQWUsQ0FBQyxhQUFhLEVBQUUsQ0FBQztZQUNqRCxJQUFJLENBQUMsSUFBSSxDQUFDLGVBQWUsRUFBRSxtQkFBbUIsRUFBRSxDQUFDO2dCQUMvQyxNQUFNLElBQUksa0NBQXVCLENBQUMsd0JBQXdCLENBQUMsQ0FBQztZQUM5RCxDQUFDO1lBQ0QsTUFBTSxjQUFjLEdBQUcsSUFBSSxDQUFDLHlCQUF5QixFQUFFLENBQUM7WUFDeEQsSUFBSSxjQUFjLEVBQUUsQ0FBQztnQkFDbkIsTUFBTSxDQUFDLGFBQWEsR0FBRyxjQUFjLENBQUM7WUFDeEMsQ0FBQztZQUNELE9BQU8sTUFBTSxDQUFDO1FBQ2hCLENBQUM7UUFDRCxJQUFJLENBQUMsSUFBSSxDQUFDLGVBQWUsSUFBSSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsbUJBQW1CLEVBQUUsQ0FBQztZQUN2RSxNQUFNLElBQUksa0NBQXVCLENBQUMsd0JBQXdCLENBQUMsQ0FBQztRQUM5RCxDQUFDO1FBQ0Qsa0ZBQWtGO1FBQ2xGLElBQUksVUFBaUMsQ0FBQztRQUN0QyxJQUFJLENBQUM7WUFDSCxVQUFVLEdBQUcsZUFBSyxDQUFDLDZCQUE2QixDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsbUJBQW1CLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3hHLENBQUM7UUFBQyxPQUFPLENBQUMsRUFBRSxDQUFDO1lBQ1gsTUFBTSxJQUFJLGtDQUF1QixDQUFDLHFDQUFxQyxDQUFDLFlBQVksS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQy9HLENBQUM7UUFDRCxNQUFNLENBQUMsTUFBTSxHQUFHLFVBQVUsQ0FBQyxNQUFNLENBQUM7UUFDbEMsTUFBTSxDQUFDLFFBQVEsR0FBRyxVQUFVLENBQUMsUUFBUSxDQUFDO1FBQ3RDLE1BQU0sQ0FBQyxNQUFNLEdBQUcsVUFBVSxDQUFDLE1BQU0sQ0FBQztRQUNsQyxJQUFJLFVBQVUsQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUN0QixNQUFNLENBQUMsTUFBTSxHQUFHLFVBQVUsQ0FBQyxNQUFNLENBQUM7UUFDcEMsQ0FBQztRQUNELElBQUksVUFBVSxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQ3JCLE1BQU0sQ0FBQyxLQUFLLEdBQUcsVUFBVSxDQUFDLEtBQUssQ0FBQztRQUNsQyxDQUFDO1FBQ0QsT0FBTyxNQUFNLENBQUM7SUFDaEIsQ0FBQztJQUVELElBQUksZUFBZTtRQUNqQixJQUNFLElBQUksQ0FBQyxLQUFLLEtBQUssMEJBQWUsQ0FBQyxtQkFBbUI7WUFDbEQsSUFBSSxDQUFDLEtBQUssS0FBSywwQkFBZSxDQUFDLHdCQUF3QjtZQUN2RCxJQUFJLENBQUMsS0FBSyxLQUFLLDBCQUFlLENBQUMsaUJBQWlCO1lBQ2hELElBQUksQ0FBQyxLQUFLLEtBQUssMEJBQWUsQ0FBQywwQkFBMEIsRUFDekQsQ0FBQztZQUNELE9BQU8sTUFBTSxDQUFDLElBQUksQ0FBQyxxQkFBVSxFQUFFLFFBQVEsQ0FBQyxDQUFDO1FBQzNDLENBQUM7UUFDRCxJQUFJLENBQUMsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO1lBQzFCLE1BQU0sSUFBSSxrQ0FBdUIsQ0FBQyx3QkFBd0IsQ0FBQyxDQUFDO1FBQzlELENBQUM7UUFDRCxPQUFPLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyx1QkFBdUIsRUFBRSxRQUFRLENBQUMsQ0FBQztJQUM3RSxDQUFDO0lBRUQsSUFBSSx5QkFBeUI7UUFDM0IsT0FBTyxJQUFJLENBQUMsbUJBQW1CLElBQUksRUFBRSxDQUFDO0lBQ3hDLENBQUM7SUFFRCxrQkFBa0IsQ0FBQyxLQUFhO1FBQzlCLElBQUksQ0FBQztZQUNILE1BQU0sT0FBTyxHQUE2QixJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLFFBQVEsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO1lBQ3BHLElBQUksQ0FBQyxFQUFFLEdBQUcsT0FBTyxDQUFDLFlBQVksQ0FBQztZQUMvQixJQUFJLENBQUMsZUFBZSxHQUFHLDBCQUFlLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBQ3ZELElBQUksSUFBSSxDQUFDLElBQUksS0FBSywwQkFBZSxDQUFDLG1CQUFtQixFQUFFLENBQUM7Z0JBQ3RELElBQUksT0FBTyxDQUFDLGVBQWUsRUFBRSxDQUFDO29CQUM1QixJQUFJLENBQUMsZUFBZSxHQUFHLE9BQU8sQ0FBQyxlQUFlLENBQUM7Z0JBQ2pELENBQUM7WUFDSCxDQUFDO2lCQUFNLElBQUksSUFBSSxDQUFDLElBQUksS0FBSywwQkFBZSxDQUFDLHdCQUF3QixFQUFFLENBQUM7Z0JBQ2xFLElBQUksT0FBTyxDQUFDLDRCQUE0QixFQUFFLENBQUM7b0JBQ3pDLElBQUksQ0FBQyw0QkFBNEIsR0FBRyxPQUFPLENBQUMsNEJBQTRCLENBQUM7Z0JBQzNFLENBQUM7WUFDSCxDQUFDO2lCQUFNLElBQUksSUFBSSxDQUFDLElBQUksS0FBSywwQkFBZSxDQUFDLGlCQUFpQixFQUFFLENBQUM7Z0JBQzNELElBQUksT0FBTyxDQUFDLHFCQUFxQixFQUFFLENBQUM7b0JBQ2xDLElBQUksQ0FBQyxxQkFBcUIsR0FBRyxPQUFPLENBQUMscUJBQXFCLENBQUM7Z0JBQzdELENBQUM7WUFDSCxDQUFDO2lCQUFNLElBQUksSUFBSSxDQUFDLElBQUksS0FBSywwQkFBZSxDQUFDLDBCQUEwQixFQUFFLENBQUM7Z0JBQ3BFLElBQUksT0FBTyxDQUFDLDhCQUE4QixFQUFFLENBQUM7b0JBQzNDLElBQUksQ0FBQyw4QkFBOEIsR0FBRyxPQUFPLENBQUMsOEJBQThCLENBQUM7Z0JBQy9FLENBQUM7WUFDSCxDQUFDO2lCQUFNLENBQUM7Z0JBQ04sSUFBSSxPQUFPLENBQUMsc0JBQXNCLEVBQUUsQ0FBQztvQkFDbkMsSUFBSSxDQUFDLGNBQWMsR0FBRyxPQUFPLENBQUMsc0JBQXNCLENBQUM7b0JBQ3JELElBQUksSUFBSSxDQUFDLElBQUksS0FBSywwQkFBZSxDQUFDLGFBQWEsRUFBRSxDQUFDO3dCQUNoRCxJQUFJLENBQUMsb0JBQW9CLEVBQUUsQ0FBQztvQkFDOUIsQ0FBQztnQkFDSCxDQUFDO2dCQUNELElBQUksT0FBTyxDQUFDLGVBQWUsSUFBSSxPQUFPLENBQUMsZUFBZSxDQUFDLFVBQVUsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUM7b0JBQzdFLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxPQUFPLENBQUMsZUFBZSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO29CQUNwRixJQUFJLENBQUMsVUFBVSxHQUFHLE9BQU8sQ0FBQyxlQUFlLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUM7Z0JBQ2xGLENBQUM7Z0JBQ0QsSUFBSSxJQUFJLENBQUMsSUFBSSxLQUFLLDBCQUFlLENBQUMsYUFBYSxJQUFJLE9BQU8sQ0FBQyxzQkFBc0IsRUFBRSxtQkFBbUIsRUFBRSxDQUFDO29CQUN2RyxJQUFJLENBQUMsa0JBQWtCLEdBQUcsZUFBSyxDQUFDLHFCQUFxQixDQUFDLE9BQU8sQ0FBQyxzQkFBc0IsQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO2dCQUM1RyxDQUFDO1lBQ0gsQ0FBQztRQUNILENBQUM7UUFBQyxPQUFPLENBQUMsRUFBRSxDQUFDO1lBQ1gsTUFBTSxJQUFJLGtDQUF1QixDQUFDLHNDQUFzQyxDQUFDLENBQUM7UUFDNUUsQ0FBQztJQUNILENBQUM7SUFFRDs7O09BR0c7SUFDSCxvQkFBb0I7UUFDbEIsTUFBTSxPQUFPLEdBQVksRUFBRSxDQUFDO1FBQzVCLE1BQU0sTUFBTSxHQUFZLEVBQUUsQ0FBQztRQUMzQixNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7UUFDN0IsTUFBTSxLQUFLLEdBQVU7WUFDbkIsT0FBTyxFQUFFLE1BQU0sQ0FBQyxNQUFNO1lBQ3RCLEtBQUssRUFBRSxNQUFNLENBQUMsTUFBTTtZQUNwQixJQUFJLEVBQUUsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJO1NBQzFELENBQUM7UUFDRixNQUFNLE1BQU0sR0FBVTtZQUNwQixPQUFPLEVBQUUsTUFBTSxDQUFDLFFBQVE7WUFDeEIsS0FBSyxFQUFFLE1BQU0sQ0FBQyxNQUFNO1lBQ3BCLElBQUksRUFBRSxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUk7U0FDMUQsQ0FBQztRQUNGLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDbkIsT0FBTyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUNyQixJQUFJLENBQUMsT0FBTyxHQUFHLE1BQU0sQ0FBQztRQUN0QixJQUFJLENBQUMsUUFBUSxHQUFHLE9BQU8sQ0FBQztJQUMxQixDQUFDO0lBRUQsa0JBQWtCO1FBQ2hCLE1BQU0sWUFBWSxHQUFHO1lBQ25CLElBQUk7WUFDSixTQUFTO1lBQ1QsY0FBYztZQUNkLFFBQVE7WUFDUixhQUFhO1lBQ2IsZUFBZTtZQUNmLGNBQWM7WUFDZCxLQUFLO1lBQ0wsTUFBTTtTQUNQLENBQUM7UUFDRixNQUFNLE1BQU0sR0FBNEIsRUFBRSxDQUFDO1FBQzNDLE1BQU0sT0FBTyxHQUE0QixFQUFFLENBQUM7UUFDNUMsSUFBSSxXQUFXLEdBQUcsR0FBRyxDQUFDO1FBQ3RCLElBQUksWUFBWSxHQUFHLEdBQUcsQ0FBQztRQUN2QixRQUFRLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUNsQixLQUFLLDBCQUFlLENBQUMsc0JBQXNCLENBQUM7WUFDNUMsS0FBSywwQkFBZSxDQUFDLGNBQWMsQ0FBQztZQUNwQyxLQUFLLDBCQUFlLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQztnQkFDcEMsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO2dCQUM3QixNQUFNLEtBQUssR0FBMEI7b0JBQ25DLE9BQU8sRUFBRSxNQUFNLENBQUMsTUFBTTtvQkFDdEIsTUFBTSxFQUFFLE1BQU0sQ0FBQyxNQUFNO2lCQUN0QixDQUFDO2dCQUNGLElBQUksTUFBTSxDQUFDLEtBQUssRUFBRSxDQUFDO29CQUNqQixLQUFLLENBQUMsU0FBUyxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUM7Z0JBQ2pDLENBQUM7Z0JBQ0QsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztnQkFDbkIsV0FBVyxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUM7Z0JBQzVCLE1BQU07WUFDUixDQUFDO1lBQ0QsS0FBSywwQkFBZSxDQUFDLGtCQUFrQixDQUFDO1lBQ3hDLEtBQUssMEJBQWUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO2dCQUMxQixNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7Z0JBQzdCLE1BQU0sTUFBTSxHQUEwQjtvQkFDcEMsT0FBTyxFQUFFLE1BQU0sQ0FBQyxRQUFRO29CQUN4QixNQUFNLEVBQUUsTUFBTSxDQUFDLE1BQU07aUJBQ3RCLENBQUM7Z0JBQ0YsSUFBSSxNQUFNLENBQUMsTUFBTSxFQUFFLENBQUM7b0JBQ2xCLE1BQU0sQ0FBQyxJQUFJLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQztnQkFDOUIsQ0FBQztnQkFDRCxJQUFJLE1BQU0sQ0FBQyxLQUFLLEVBQUUsQ0FBQztvQkFDakIsTUFBTSxDQUFDLFNBQVMsR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDO2dCQUNsQyxDQUFDO2dCQUNELE9BQU8sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7Z0JBQ3JCLFlBQVksR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDO2dCQUM3QixNQUFNO1lBQ1IsQ0FBQztZQUNELEtBQUssMEJBQWUsQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDLENBQUM7Z0JBQzVDLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztnQkFDN0IsTUFBTSxLQUFLLEdBQTBCO29CQUNuQyxPQUFPLEVBQUUsTUFBTSxDQUFDLFFBQVE7b0JBQ3hCLE1BQU0sRUFBRSxNQUFNLENBQUMsTUFBTTtpQkFDdEIsQ0FBQztnQkFDRixJQUFJLE1BQU0sQ0FBQyxLQUFLLEVBQUUsQ0FBQztvQkFDakIsS0FBSyxDQUFDLFNBQVMsR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDO2dCQUNqQyxDQUFDO2dCQUNELE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7Z0JBQ25CLFdBQVcsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDO2dCQUM1QixNQUFNO1lBQ1IsQ0FBQztZQUNELEtBQUssMEJBQWUsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDO2dCQUNuQyxNQUFNLGNBQWMsR0FBRyxJQUFJLENBQUMseUJBQXlCLEVBQUUsQ0FBQztnQkFDeEQsTUFBTSxXQUFXLEdBQTJCO29CQUMxQyxFQUFFLEVBQUUsSUFBSSxDQUFDLEVBQUU7b0JBQ1gsWUFBWTtvQkFDWixPQUFPLEVBQUUsT0FBTztvQkFDaEIsWUFBWSxFQUFFLFlBQVk7b0JBQzFCLE1BQU0sRUFBRSxNQUFNO29CQUNkLFdBQVcsRUFBRSxXQUFXO29CQUN4QixhQUFhLEVBQUUsRUFBRTtvQkFDakIsWUFBWSxFQUFFLEdBQUc7b0JBQ2pCLEdBQUcsRUFBRSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUU7b0JBQ2pCLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSTtpQkFDaEIsQ0FBQztnQkFDRixJQUFJLGNBQWMsRUFBRSxDQUFDO29CQUNuQixXQUFXLENBQUMsYUFBYSxHQUFHLGNBQWMsQ0FBQztnQkFDN0MsQ0FBQztnQkFDRCxPQUFPLFdBQVcsQ0FBQztZQUNyQixDQUFDO1lBQ0QsS0FBSywwQkFBZSxDQUFDLDBCQUEwQixDQUFDLENBQUMsQ0FBQztnQkFDaEQsZ0ZBQWdGO2dCQUNoRixPQUFPO29CQUNMLEVBQUUsRUFBRSxJQUFJLENBQUMsRUFBRTtvQkFDWCxZQUFZO29CQUNaLE9BQU8sRUFBRSxFQUFFO29CQUNYLFlBQVksRUFBRSxHQUFHO29CQUNqQixNQUFNLEVBQUUsRUFBRTtvQkFDVixXQUFXLEVBQUUsR0FBRztvQkFDaEIsYUFBYSxFQUFFLEVBQUU7b0JBQ2pCLFlBQVksRUFBRSxHQUFHO29CQUNqQixHQUFHLEVBQUUsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFO29CQUNqQixJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUk7aUJBQ2hCLENBQUM7WUFDSixDQUFDO1FBQ0gsQ0FBQztRQUNELE9BQU87WUFDTCxFQUFFLEVBQUUsSUFBSSxDQUFDLEVBQUU7WUFDWCxZQUFZO1lBQ1osT0FBTyxFQUFFLE9BQU87WUFDaEIsWUFBWSxFQUFFLFlBQVk7WUFDMUIsTUFBTSxFQUFFLE1BQU07WUFDZCxXQUFXLEVBQUUsV0FBVztZQUN4QixhQUFhLEVBQUUsRUFBRTtZQUNqQixZQUFZLEVBQUUsR0FBRztZQUNqQixHQUFHLEVBQUUsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFO1lBQ2pCLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSTtTQUNoQixDQUFDO0lBQ0osQ0FBQztJQUVPLHlCQUF5QjtRQUMvQixNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsZUFBZSxFQUFFLG1CQUFtQixDQUFDO1FBQzlELElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUNqQixPQUFPLFNBQVMsQ0FBQztRQUNuQixDQUFDO1FBQ0QsSUFBSSxDQUFDO1lBQ0gsTUFBTSxJQUFJLEdBQUcsZUFBSyxDQUFDLHdCQUF3QixDQUFDLFdBQVcsQ0FBQyxDQUFDO1lBQ3pELE1BQU0sYUFBYSxHQUFHLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxTQUFTLElBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQyxVQUFVLElBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQyxVQUFVLEVBQUUsQ0FBQztZQUNqSCxNQUFNLE9BQU8sR0FBeUI7Z0JBQ3BDLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSTtnQkFDZixVQUFVLEVBQUUsYUFBYTtnQkFDekIsS0FBSyxFQUFFLElBQUksQ0FBQyxtQkFBbUIsSUFBSSxFQUFFO2FBQ3RDLENBQUM7WUFDRixJQUFJLElBQUksQ0FBQyxNQUFNLEtBQUssU0FBUztnQkFBRSxPQUFPLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUM7WUFDNUQsSUFBSSxJQUFJLENBQUMsVUFBVSxLQUFLLFNBQVMsSUFBSSxJQUFJLENBQUMsVUFBVSxLQUFLLEVBQUU7Z0JBQUUsT0FBTyxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDO1lBQ2xHLE9BQU8sT0FBTyxDQUFDO1FBQ2pCLENBQUM7UUFBQyxNQUFNLENBQUM7WUFDUCxPQUFPLFNBQVMsQ0FBQztRQUNuQixDQUFDO0lBQ0gsQ0FBQztDQUNGO0FBcmNELGtDQXFjQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEJhc2VLZXksXG4gIEJhc2VUcmFuc2FjdGlvbixcbiAgRW50cnksXG4gIEludmFsaWRUcmFuc2FjdGlvbkVycm9yLFxuICBJVHJhbnNhY3Rpb25SZWNpcGllbnQsXG4gIFRyYW5zYWN0aW9uVHlwZSxcbn0gZnJvbSAnQGJpdGdvLWJldGEvc2RrLWNvcmUnO1xuaW1wb3J0IHsgQmFzZUNvaW4gYXMgQ29pbkNvbmZpZyB9IGZyb20gJ0BiaXRnby1iZXRhL3N0YXRpY3MnO1xuaW1wb3J0IHtcbiAgQWxsb2NhdGlvblJlcXVlc3QsXG4gIENhbnRvbkNvbW1hbmRFeHBsYWluLFxuICBDYW50b25QcmVwYXJlQ29tbWFuZFJlc3BvbnNlLFxuICBDb3NpZ25EZWxlZ2F0aW9uUHJvcG9zYWwsXG4gIEVuZEludmVzdG9yT25ib2FyZGluZ09mZmVyRGF0YSxcbiAgTXVsdGlIYXNoU2lnbmF0dXJlLFxuICBQYXJ0eVNpZ25hdHVyZSxcbiAgUHJlcGFyZWRUeG5QYXJzZWRJbmZvLFxuICBUcmFuc2FjdGlvbkJyb2FkY2FzdERhdGEsXG4gIFRyYW5zYWN0aW9uRXhwbGFuYXRpb24sXG4gIFRyYW5zZmVyQWNrbm93bGVkZ2UsXG4gIFR4RGF0YSxcbn0gZnJvbSAnLi4vaWZhY2UnO1xuaW1wb3J0IHV0aWxzIGZyb20gJy4uL3V0aWxzJztcbmltcG9ydCB7IERVTU1ZX0hBU0gsIEhBU0hJTkdfU0NIRU1FX1ZFUlNJT04sIFNJR05BVFVSRV9BTEdPUklUSE1fU1BFQywgU0lHTkFUVVJFX0ZPUk1BVCB9IGZyb20gJy4uL2NvbnN0YW50JztcblxuZXhwb3J0IGNsYXNzIFRyYW5zYWN0aW9uIGV4dGVuZHMgQmFzZVRyYW5zYWN0aW9uIHtcbiAgcHJpdmF0ZSBfcHJlcGFyZUNvbW1hbmQ6IENhbnRvblByZXBhcmVDb21tYW5kUmVzcG9uc2U7XG4gIHByaXZhdGUgX3NpZ25lckZpbmdlcnByaW50OiBzdHJpbmc7XG4gIHByaXZhdGUgX2Fja25vd2xlZGdlRGF0YTogVHJhbnNmZXJBY2tub3dsZWRnZTtcbiAgcHJpdmF0ZSBfY29zaWduRGVsZWdhdGlvblByb3Bvc2FsRGF0YTogQ29zaWduRGVsZWdhdGlvblByb3Bvc2FsO1xuICBwcml2YXRlIF9hbGxvY2F0aW9uUmVxdWVzdERhdGE6IEFsbG9jYXRpb25SZXF1ZXN0O1xuICBwcml2YXRlIF9lbmRJbnZlc3Rvck9uYm9hcmRpbmdPZmZlckRhdGE6IEVuZEludmVzdG9yT25ib2FyZGluZ09mZmVyRGF0YTtcbiAgcHJpdmF0ZSBfY2FudG9uQ29tbWFuZEFjdEFzOiBzdHJpbmdbXTtcblxuICBjb25zdHJ1Y3Rvcihjb2luQ29uZmlnOiBSZWFkb25seTxDb2luQ29uZmlnPikge1xuICAgIHN1cGVyKGNvaW5Db25maWcpO1xuICB9XG5cbiAgZ2V0IHByZXBhcmVDb21tYW5kKCk6IENhbnRvblByZXBhcmVDb21tYW5kUmVzcG9uc2Uge1xuICAgIHJldHVybiB0aGlzLl9wcmVwYXJlQ29tbWFuZDtcbiAgfVxuXG4gIHNldCBwcmVwYXJlQ29tbWFuZCh0cmFuc2FjdGlvbjogQ2FudG9uUHJlcGFyZUNvbW1hbmRSZXNwb25zZSkge1xuICAgIHRoaXMuX3ByZXBhcmVDb21tYW5kID0gdHJhbnNhY3Rpb247XG4gIH1cblxuICBzZXQgdHJhbnNhY3Rpb25UeXBlKHRyYW5zYWN0aW9uVHlwZTogVHJhbnNhY3Rpb25UeXBlKSB7XG4gICAgdGhpcy5fdHlwZSA9IHRyYW5zYWN0aW9uVHlwZTtcbiAgfVxuXG4gIHNldCBhY2tub3dsZWRnZURhdGEoZGF0YTogVHJhbnNmZXJBY2tub3dsZWRnZSkge1xuICAgIHRoaXMuX2Fja25vd2xlZGdlRGF0YSA9IGRhdGE7XG4gIH1cblxuICBzZXQgY29zaWduRGVsZWdhdGlvblByb3Bvc2FsRGF0YShkYXRhOiBDb3NpZ25EZWxlZ2F0aW9uUHJvcG9zYWwpIHtcbiAgICB0aGlzLl9jb3NpZ25EZWxlZ2F0aW9uUHJvcG9zYWxEYXRhID0gZGF0YTtcbiAgfVxuXG4gIHNldCBhbGxvY2F0aW9uUmVxdWVzdERhdGEoZGF0YTogQWxsb2NhdGlvblJlcXVlc3QpIHtcbiAgICB0aGlzLl9hbGxvY2F0aW9uUmVxdWVzdERhdGEgPSBkYXRhO1xuICB9XG5cbiAgc2V0IGVuZEludmVzdG9yT25ib2FyZGluZ09mZmVyRGF0YShkYXRhOiBFbmRJbnZlc3Rvck9uYm9hcmRpbmdPZmZlckRhdGEpIHtcbiAgICB0aGlzLl9lbmRJbnZlc3Rvck9uYm9hcmRpbmdPZmZlckRhdGEgPSBkYXRhO1xuICB9XG5cbiAgc2V0IGNhbnRvbkNvbW1hbmRBY3RBcyhwYXJ0aWVzOiBzdHJpbmdbXSkge1xuICAgIHRoaXMuX2NhbnRvbkNvbW1hbmRBY3RBcyA9IHBhcnRpZXM7XG4gIH1cblxuICBnZXQgaWQoKTogc3RyaW5nIHtcbiAgICBpZiAoIXRoaXMuX2lkKSB7XG4gICAgICB0aHJvdyBuZXcgSW52YWxpZFRyYW5zYWN0aW9uRXJyb3IoJ3RyYW5zYWN0aW9uIGlzIGlzIG5vdCBzZXQnKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuX2lkO1xuICB9XG5cbiAgc2V0IGlkKGlkOiBzdHJpbmcpIHtcbiAgICB0aGlzLl9pZCA9IGlkO1xuICB9XG5cbiAgY2FuU2lnbihrZXk6IEJhc2VLZXkpOiBib29sZWFuIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBzZXQgc2lnbmF0dXJlcyhzaWduYXR1cmU6IHN0cmluZykge1xuICAgIHRoaXMuX3NpZ25hdHVyZXMucHVzaChzaWduYXR1cmUpO1xuICB9XG5cbiAgc2V0IHNpZ25lckZpbmdlcnByaW50KGZpbmdlcnByaW50OiBzdHJpbmcpIHtcbiAgICB0aGlzLl9zaWduZXJGaW5nZXJwcmludCA9IGZpbmdlcnByaW50O1xuICB9XG5cbiAgdG9Ccm9hZGNhc3RGb3JtYXQoKTogc3RyaW5nIHtcbiAgICBpZiAodGhpcy5fdHlwZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aHJvdyBuZXcgSW52YWxpZFRyYW5zYWN0aW9uRXJyb3IoJ1RyYW5zYWN0aW9uIHR5cGUgaXMgbm90IHNldCcpO1xuICAgIH1cbiAgICBpZiAodGhpcy5fdHlwZSA9PT0gVHJhbnNhY3Rpb25UeXBlLlRyYW5zZmVyQWNrbm93bGVkZ2UpIHtcbiAgICAgIGlmICghdGhpcy5fYWNrbm93bGVkZ2VEYXRhKSB7XG4gICAgICAgIHRocm93IG5ldyBJbnZhbGlkVHJhbnNhY3Rpb25FcnJvcignQWNrbm93bGVkZ2VEYXRhIGlzIG5vdCBzZXQnKTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IG1pbkRhdGE6IFRyYW5zYWN0aW9uQnJvYWRjYXN0RGF0YSA9IHtcbiAgICAgICAgdHhUeXBlOiBUcmFuc2FjdGlvblR5cGVbdGhpcy5fdHlwZV0sXG4gICAgICAgIHN1Ym1pc3Npb25JZDogdGhpcy5pZCxcbiAgICAgICAgYWNrbm93bGVkZ2VEYXRhOiB0aGlzLl9hY2tub3dsZWRnZURhdGEsXG4gICAgICB9O1xuICAgICAgcmV0dXJuIEJ1ZmZlci5mcm9tKEpTT04uc3RyaW5naWZ5KG1pbkRhdGEpKS50b1N0cmluZygnYmFzZTY0Jyk7XG4gICAgfVxuICAgIGlmICh0aGlzLl90eXBlID09PSBUcmFuc2FjdGlvblR5cGUuQ29zaWduRGVsZWdhdGlvblByb3Bvc2FsKSB7XG4gICAgICBpZiAoIXRoaXMuX2Nvc2lnbkRlbGVnYXRpb25Qcm9wb3NhbERhdGEpIHtcbiAgICAgICAgdGhyb3cgbmV3IEludmFsaWRUcmFuc2FjdGlvbkVycm9yKCdDb3NpZ25EZWxlZ2F0aW9uUHJvcG9zYWxEYXRhIGlzIG5vdCBzZXQnKTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IG1pbkRhdGE6IFRyYW5zYWN0aW9uQnJvYWRjYXN0RGF0YSA9IHtcbiAgICAgICAgdHhUeXBlOiBUcmFuc2FjdGlvblR5cGVbdGhpcy5fdHlwZV0sXG4gICAgICAgIHN1Ym1pc3Npb25JZDogdGhpcy5pZCxcbiAgICAgICAgY29zaWduRGVsZWdhdGlvblByb3Bvc2FsRGF0YTogdGhpcy5fY29zaWduRGVsZWdhdGlvblByb3Bvc2FsRGF0YSxcbiAgICAgIH07XG4gICAgICByZXR1cm4gQnVmZmVyLmZyb20oSlNPTi5zdHJpbmdpZnkobWluRGF0YSkpLnRvU3RyaW5nKCdiYXNlNjQnKTtcbiAgICB9XG4gICAgaWYgKHRoaXMuX3R5cGUgPT09IFRyYW5zYWN0aW9uVHlwZS5BbGxvY2F0aW9uUmVxdWVzdCkge1xuICAgICAgaWYgKCF0aGlzLl9hbGxvY2F0aW9uUmVxdWVzdERhdGEpIHtcbiAgICAgICAgdGhyb3cgbmV3IEludmFsaWRUcmFuc2FjdGlvbkVycm9yKCdBbGxvY2F0aW9uUmVxdWVzdERhdGEgaXMgbm90IHNldCcpO1xuICAgICAgfVxuICAgICAgY29uc3QgbWluRGF0YTogVHJhbnNhY3Rpb25Ccm9hZGNhc3REYXRhID0ge1xuICAgICAgICB0eFR5cGU6IFRyYW5zYWN0aW9uVHlwZVt0aGlzLl90eXBlXSxcbiAgICAgICAgc3VibWlzc2lvbklkOiB0aGlzLmlkLFxuICAgICAgICBhbGxvY2F0aW9uUmVxdWVzdERhdGE6IHRoaXMuX2FsbG9jYXRpb25SZXF1ZXN0RGF0YSxcbiAgICAgIH07XG4gICAgICByZXR1cm4gQnVmZmVyLmZyb20oSlNPTi5zdHJpbmdpZnkobWluRGF0YSkpLnRvU3RyaW5nKCdiYXNlNjQnKTtcbiAgICB9XG4gICAgaWYgKHRoaXMuX3R5cGUgPT09IFRyYW5zYWN0aW9uVHlwZS5FbmRJbnZlc3Rvck9uYm9hcmRpbmdPZmZlcikge1xuICAgICAgaWYgKCF0aGlzLl9lbmRJbnZlc3Rvck9uYm9hcmRpbmdPZmZlckRhdGEpIHtcbiAgICAgICAgdGhyb3cgbmV3IEludmFsaWRUcmFuc2FjdGlvbkVycm9yKCdFbmRJbnZlc3Rvck9uYm9hcmRpbmdPZmZlckRhdGEgaXMgbm90IHNldCcpO1xuICAgICAgfVxuICAgICAgY29uc3QgbWluRGF0YTogVHJhbnNhY3Rpb25Ccm9hZGNhc3REYXRhID0ge1xuICAgICAgICB0eFR5cGU6IFRyYW5zYWN0aW9uVHlwZVt0aGlzLl90eXBlXSxcbiAgICAgICAgc3VibWlzc2lvbklkOiB0aGlzLmlkLFxuICAgICAgICBlbmRJbnZlc3Rvck9uYm9hcmRpbmdPZmZlckRhdGE6IHRoaXMuX2VuZEludmVzdG9yT25ib2FyZGluZ09mZmVyRGF0YSxcbiAgICAgIH07XG4gICAgICByZXR1cm4gQnVmZmVyLmZyb20oSlNPTi5zdHJpbmdpZnkobWluRGF0YSkpLnRvU3RyaW5nKCdiYXNlNjQnKTtcbiAgICB9XG4gICAgaWYgKCF0aGlzLl9wcmVwYXJlQ29tbWFuZCkge1xuICAgICAgdGhyb3cgbmV3IEludmFsaWRUcmFuc2FjdGlvbkVycm9yKCdFbXB0eSB0cmFuc2FjdGlvbiBkYXRhJyk7XG4gICAgfVxuICAgIGNvbnN0IHBhcnR5U2lnbmF0dXJlczogUGFydHlTaWduYXR1cmVbXSA9IFtdO1xuICAgIGNvbnN0IGRhdGE6IFRyYW5zYWN0aW9uQnJvYWRjYXN0RGF0YSA9IHtcbiAgICAgIHByZXBhcmVDb21tYW5kUmVzcG9uc2U6IHRoaXMuX3ByZXBhcmVDb21tYW5kLFxuICAgICAgdHhUeXBlOiB0aGlzLl90eXBlICE9PSB1bmRlZmluZWQgPyBUcmFuc2FjdGlvblR5cGVbdGhpcy5fdHlwZV0gOiAnJyxcbiAgICAgIHByZXBhcmVkVHJhbnNhY3Rpb246ICcnLFxuICAgICAgcGFydHlTaWduYXR1cmVzOiB7XG4gICAgICAgIHNpZ25hdHVyZXM6IHBhcnR5U2lnbmF0dXJlcyxcbiAgICAgIH0sXG4gICAgICBkZWR1cGxpY2F0aW9uUGVyaW9kOiB7XG4gICAgICAgIEVtcHR5OiB7fSxcbiAgICAgIH0sXG4gICAgICBzdWJtaXNzaW9uSWQ6IHRoaXMuaWQsXG4gICAgICBoYXNoaW5nU2NoZW1lVmVyc2lvbjogSEFTSElOR19TQ0hFTUVfVkVSU0lPTixcbiAgICAgIG1pbkxlZGdlclRpbWU6IHtcbiAgICAgICAgdGltZToge1xuICAgICAgICAgIEVtcHR5OiB7fSxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgfTtcbiAgICBjb25zdCBzaWduYXR1cmVzOiBNdWx0aUhhc2hTaWduYXR1cmVbXSA9IFtdO1xuICAgIGlmICh0aGlzLl9zaWduYXR1cmVzLmxlbmd0aCA+IDAgJiYgdGhpcy5fc2lnbmVyRmluZ2VycHJpbnQpIHtcbiAgICAgIHRoaXMuc2lnbmF0dXJlLm1hcCgoc2lnbmF0dXJlKSA9PiB7XG4gICAgICAgIGNvbnN0IHNpZ25hdHVyZU9iajogTXVsdGlIYXNoU2lnbmF0dXJlID0ge1xuICAgICAgICAgIGZvcm1hdDogU0lHTkFUVVJFX0ZPUk1BVCxcbiAgICAgICAgICBzaWduYXR1cmU6IHNpZ25hdHVyZSxcbiAgICAgICAgICBzaWduZWRCeTogdGhpcy5fc2lnbmVyRmluZ2VycHJpbnQsXG4gICAgICAgICAgc2lnbmluZ0FsZ29yaXRobVNwZWM6IFNJR05BVFVSRV9BTEdPUklUSE1fU1BFQyxcbiAgICAgICAgfTtcbiAgICAgICAgc2lnbmF0dXJlcy5wdXNoKHNpZ25hdHVyZU9iaik7XG4gICAgICB9KTtcbiAgICAgIC8vIENhbnRvbkNvbW1hbmQ6IHRoZSBDYW50b24gcHJvdG9jb2wgcmVxdWlyZXMgb25lIHBhcnR5U2lnbmF0dXJlcyBlbnRyeSBwZXIgYWN0QXMgcGFydHk7IGFsbCBwYXJ0aWVzIHNoYXJlIHRoZSBzYW1lIFRTUyBrZXkgYW5kIHNpZ25hdHVyZS5cbiAgICAgIGlmICh0aGlzLl90eXBlID09PSBUcmFuc2FjdGlvblR5cGUuQ2FudG9uQ29tbWFuZCkge1xuICAgICAgICBpZiAoIXRoaXMuX2NhbnRvbkNvbW1hbmRBY3RBcz8ubGVuZ3RoKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEludmFsaWRUcmFuc2FjdGlvbkVycm9yKFxuICAgICAgICAgICAgJ0NhbnRvbkNvbW1hbmQgdHJhbnNhY3Rpb24gaXMgbWlzc2luZyBhY3RBcyBwYXJ0aWVzIHJlcXVpcmVkIGZvciBwYXJ0eVNpZ25hdHVyZXMnXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgICBmb3IgKGNvbnN0IHBhcnR5IG9mIHRoaXMuX2NhbnRvbkNvbW1hbmRBY3RBcykge1xuICAgICAgICAgIGRhdGEucGFydHlTaWduYXR1cmVzPy5zaWduYXR1cmVzLnB1c2goeyBwYXJ0eSwgc2lnbmF0dXJlcyB9KTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc3Qgc2lnbmVyUGFydHlJZCA9IGAke3RoaXMuX3NpZ25lckZpbmdlcnByaW50LnNsaWNlKDAsIDUpfTo6JHt0aGlzLl9zaWduZXJGaW5nZXJwcmludH1gO1xuICAgICAgICBkYXRhLnBhcnR5U2lnbmF0dXJlcz8uc2lnbmF0dXJlcy5wdXNoKHsgcGFydHk6IHNpZ25lclBhcnR5SWQsIHNpZ25hdHVyZXMgfSk7XG4gICAgICB9XG4gICAgICBkYXRhLnByZXBhcmVkVHJhbnNhY3Rpb24gPSB0aGlzLl9wcmVwYXJlQ29tbWFuZC5wcmVwYXJlZFRyYW5zYWN0aW9uXG4gICAgICAgID8gdGhpcy5fcHJlcGFyZUNvbW1hbmQucHJlcGFyZWRUcmFuc2FjdGlvblxuICAgICAgICA6ICcnO1xuICAgIH1cbiAgICByZXR1cm4gQnVmZmVyLmZyb20oSlNPTi5zdHJpbmdpZnkoZGF0YSkpLnRvU3RyaW5nKCdiYXNlNjQnKTtcbiAgfVxuXG4gIHRvSnNvbigpOiBUeERhdGEge1xuICAgIGNvbnN0IHJlc3VsdDogVHhEYXRhID0ge1xuICAgICAgaWQ6IHRoaXMuaWQsXG4gICAgICB0eXBlOiB0aGlzLl90eXBlIGFzIFRyYW5zYWN0aW9uVHlwZSxcbiAgICAgIHNlbmRlcjogJycsXG4gICAgICByZWNlaXZlcjogJycsXG4gICAgICBhbW91bnQ6ICcnLFxuICAgIH07XG4gICAgaWYgKHRoaXMuX3R5cGUgPT09IFRyYW5zYWN0aW9uVHlwZS5UcmFuc2ZlckFja25vd2xlZGdlKSB7XG4gICAgICBpZiAoIXRoaXMuX2Fja25vd2xlZGdlRGF0YSkge1xuICAgICAgICB0aHJvdyBuZXcgSW52YWxpZFRyYW5zYWN0aW9uRXJyb3IoJ0Fja25vd2xlZGdlRGF0YSBpcyBub3Qgc2V0Jyk7XG4gICAgICB9XG4gICAgICByZXN1bHQuYWNrbm93bGVkZ2VEYXRhID0gdGhpcy5fYWNrbm93bGVkZ2VEYXRhO1xuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG4gICAgaWYgKHRoaXMuX3R5cGUgPT09IFRyYW5zYWN0aW9uVHlwZS5Db3NpZ25EZWxlZ2F0aW9uUHJvcG9zYWwpIHtcbiAgICAgIGlmICghdGhpcy5fY29zaWduRGVsZWdhdGlvblByb3Bvc2FsRGF0YSkge1xuICAgICAgICB0aHJvdyBuZXcgSW52YWxpZFRyYW5zYWN0aW9uRXJyb3IoJ0Nvc2lnbkRlbGVnYXRpb25Qcm9wb3NhbERhdGEgaXMgbm90IHNldCcpO1xuICAgICAgfVxuICAgICAgcmVzdWx0LmNvc2lnbkRlbGVnYXRpb25Qcm9wb3NhbERhdGEgPSB0aGlzLl9jb3NpZ25EZWxlZ2F0aW9uUHJvcG9zYWxEYXRhO1xuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG4gICAgaWYgKHRoaXMuX3R5cGUgPT09IFRyYW5zYWN0aW9uVHlwZS5BbGxvY2F0aW9uUmVxdWVzdCkge1xuICAgICAgaWYgKCF0aGlzLl9hbGxvY2F0aW9uUmVxdWVzdERhdGEpIHtcbiAgICAgICAgdGhyb3cgbmV3IEludmFsaWRUcmFuc2FjdGlvbkVycm9yKCdBbGxvY2F0aW9uUmVxdWVzdERhdGEgaXMgbm90IHNldCcpO1xuICAgICAgfVxuICAgICAgcmVzdWx0LmFsbG9jYXRpb25SZXF1ZXN0RGF0YSA9IHRoaXMuX2FsbG9jYXRpb25SZXF1ZXN0RGF0YTtcbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuICAgIGlmICh0aGlzLl90eXBlID09PSBUcmFuc2FjdGlvblR5cGUuRW5kSW52ZXN0b3JPbmJvYXJkaW5nT2ZmZXIpIHtcbiAgICAgIGlmICghdGhpcy5fZW5kSW52ZXN0b3JPbmJvYXJkaW5nT2ZmZXJEYXRhKSB7XG4gICAgICAgIHRocm93IG5ldyBJbnZhbGlkVHJhbnNhY3Rpb25FcnJvcignRW5kSW52ZXN0b3JPbmJvYXJkaW5nT2ZmZXJEYXRhIGlzIG5vdCBzZXQnKTtcbiAgICAgIH1cbiAgICAgIHJlc3VsdC5lbmRJbnZlc3Rvck9uYm9hcmRpbmdPZmZlckRhdGEgPSB0aGlzLl9lbmRJbnZlc3Rvck9uYm9hcmRpbmdPZmZlckRhdGE7XG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cbiAgICBpZiAodGhpcy5fdHlwZSA9PT0gVHJhbnNhY3Rpb25UeXBlLkNhbnRvbkNvbW1hbmQpIHtcbiAgICAgIGlmICghdGhpcy5fcHJlcGFyZUNvbW1hbmQ/LnByZXBhcmVkVHJhbnNhY3Rpb24pIHtcbiAgICAgICAgdGhyb3cgbmV3IEludmFsaWRUcmFuc2FjdGlvbkVycm9yKCdFbXB0eSB0cmFuc2FjdGlvbiBkYXRhJyk7XG4gICAgICB9XG4gICAgICBjb25zdCBjb21tYW5kU3VtbWFyeSA9IHRoaXMuYnVpbGRDYW50b25Db21tYW5kU3VtbWFyeSgpO1xuICAgICAgaWYgKGNvbW1hbmRTdW1tYXJ5KSB7XG4gICAgICAgIHJlc3VsdC5jYW50b25Db21tYW5kID0gY29tbWFuZFN1bW1hcnk7XG4gICAgICB9XG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cbiAgICBpZiAoIXRoaXMuX3ByZXBhcmVDb21tYW5kIHx8ICF0aGlzLl9wcmVwYXJlQ29tbWFuZC5wcmVwYXJlZFRyYW5zYWN0aW9uKSB7XG4gICAgICB0aHJvdyBuZXcgSW52YWxpZFRyYW5zYWN0aW9uRXJyb3IoJ0VtcHR5IHRyYW5zYWN0aW9uIGRhdGEnKTtcbiAgICB9XG4gICAgLy8gVE9ETzogZXh0cmFjdCBvdGhlciByZXF1aXJlZCBkYXRhICh1dHhvIHVzZWQsIHJlcXVlc3QgdGltZSwgZXhlY3V0ZSBiZWZvcmUgZXRjKVxuICAgIGxldCBwYXJzZWRJbmZvOiBQcmVwYXJlZFR4blBhcnNlZEluZm87XG4gICAgdHJ5IHtcbiAgICAgIHBhcnNlZEluZm8gPSB1dGlscy5wYXJzZVJhd0NhbnRvblRyYW5zYWN0aW9uRGF0YSh0aGlzLl9wcmVwYXJlQ29tbWFuZC5wcmVwYXJlZFRyYW5zYWN0aW9uLCB0aGlzLnR5cGUpO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHRocm93IG5ldyBJbnZhbGlkVHJhbnNhY3Rpb25FcnJvcihgRmFpbGVkIHRvIHBhcnNlIHRyYW5zYWN0aW9uIGhhc2g6ICR7ZSBpbnN0YW5jZW9mIEVycm9yID8gZS5tZXNzYWdlIDogZX1gKTtcbiAgICB9XG4gICAgcmVzdWx0LnNlbmRlciA9IHBhcnNlZEluZm8uc2VuZGVyO1xuICAgIHJlc3VsdC5yZWNlaXZlciA9IHBhcnNlZEluZm8ucmVjZWl2ZXI7XG4gICAgcmVzdWx0LmFtb3VudCA9IHBhcnNlZEluZm8uYW1vdW50O1xuICAgIGlmIChwYXJzZWRJbmZvLm1lbW9JZCkge1xuICAgICAgcmVzdWx0Lm1lbW9JZCA9IHBhcnNlZEluZm8ubWVtb0lkO1xuICAgIH1cbiAgICBpZiAocGFyc2VkSW5mby50b2tlbikge1xuICAgICAgcmVzdWx0LnRva2VuID0gcGFyc2VkSW5mby50b2tlbjtcbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIGdldCBzaWduYWJsZVBheWxvYWQoKTogQnVmZmVyIHtcbiAgICBpZiAoXG4gICAgICB0aGlzLl90eXBlID09PSBUcmFuc2FjdGlvblR5cGUuVHJhbnNmZXJBY2tub3dsZWRnZSB8fFxuICAgICAgdGhpcy5fdHlwZSA9PT0gVHJhbnNhY3Rpb25UeXBlLkNvc2lnbkRlbGVnYXRpb25Qcm9wb3NhbCB8fFxuICAgICAgdGhpcy5fdHlwZSA9PT0gVHJhbnNhY3Rpb25UeXBlLkFsbG9jYXRpb25SZXF1ZXN0IHx8XG4gICAgICB0aGlzLl90eXBlID09PSBUcmFuc2FjdGlvblR5cGUuRW5kSW52ZXN0b3JPbmJvYXJkaW5nT2ZmZXJcbiAgICApIHtcbiAgICAgIHJldHVybiBCdWZmZXIuZnJvbShEVU1NWV9IQVNILCAnYmFzZTY0Jyk7XG4gICAgfVxuICAgIGlmICghdGhpcy5fcHJlcGFyZUNvbW1hbmQpIHtcbiAgICAgIHRocm93IG5ldyBJbnZhbGlkVHJhbnNhY3Rpb25FcnJvcignRW1wdHkgdHJhbnNhY3Rpb24gZGF0YScpO1xuICAgIH1cbiAgICByZXR1cm4gQnVmZmVyLmZyb20odGhpcy5fcHJlcGFyZUNvbW1hbmQucHJlcGFyZWRUcmFuc2FjdGlvbkhhc2gsICdiYXNlNjQnKTtcbiAgfVxuXG4gIGdldCBjYW50b25Db21tYW5kQWN0QXNQYXJ0aWVzKCk6IHN0cmluZ1tdIHtcbiAgICByZXR1cm4gdGhpcy5fY2FudG9uQ29tbWFuZEFjdEFzID8/IFtdO1xuICB9XG5cbiAgZnJvbVJhd1RyYW5zYWN0aW9uKHJhd1R4OiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0cnkge1xuICAgICAgY29uc3QgZGVjb2RlZDogVHJhbnNhY3Rpb25Ccm9hZGNhc3REYXRhID0gSlNPTi5wYXJzZShCdWZmZXIuZnJvbShyYXdUeCwgJ2Jhc2U2NCcpLnRvU3RyaW5nKCd1dGY4JykpO1xuICAgICAgdGhpcy5pZCA9IGRlY29kZWQuc3VibWlzc2lvbklkO1xuICAgICAgdGhpcy50cmFuc2FjdGlvblR5cGUgPSBUcmFuc2FjdGlvblR5cGVbZGVjb2RlZC50eFR5cGVdO1xuICAgICAgaWYgKHRoaXMudHlwZSA9PT0gVHJhbnNhY3Rpb25UeXBlLlRyYW5zZmVyQWNrbm93bGVkZ2UpIHtcbiAgICAgICAgaWYgKGRlY29kZWQuYWNrbm93bGVkZ2VEYXRhKSB7XG4gICAgICAgICAgdGhpcy5hY2tub3dsZWRnZURhdGEgPSBkZWNvZGVkLmFja25vd2xlZGdlRGF0YTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIGlmICh0aGlzLnR5cGUgPT09IFRyYW5zYWN0aW9uVHlwZS5Db3NpZ25EZWxlZ2F0aW9uUHJvcG9zYWwpIHtcbiAgICAgICAgaWYgKGRlY29kZWQuY29zaWduRGVsZWdhdGlvblByb3Bvc2FsRGF0YSkge1xuICAgICAgICAgIHRoaXMuY29zaWduRGVsZWdhdGlvblByb3Bvc2FsRGF0YSA9IGRlY29kZWQuY29zaWduRGVsZWdhdGlvblByb3Bvc2FsRGF0YTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIGlmICh0aGlzLnR5cGUgPT09IFRyYW5zYWN0aW9uVHlwZS5BbGxvY2F0aW9uUmVxdWVzdCkge1xuICAgICAgICBpZiAoZGVjb2RlZC5hbGxvY2F0aW9uUmVxdWVzdERhdGEpIHtcbiAgICAgICAgICB0aGlzLmFsbG9jYXRpb25SZXF1ZXN0RGF0YSA9IGRlY29kZWQuYWxsb2NhdGlvblJlcXVlc3REYXRhO1xuICAgICAgICB9XG4gICAgICB9IGVsc2UgaWYgKHRoaXMudHlwZSA9PT0gVHJhbnNhY3Rpb25UeXBlLkVuZEludmVzdG9yT25ib2FyZGluZ09mZmVyKSB7XG4gICAgICAgIGlmIChkZWNvZGVkLmVuZEludmVzdG9yT25ib2FyZGluZ09mZmVyRGF0YSkge1xuICAgICAgICAgIHRoaXMuZW5kSW52ZXN0b3JPbmJvYXJkaW5nT2ZmZXJEYXRhID0gZGVjb2RlZC5lbmRJbnZlc3Rvck9uYm9hcmRpbmdPZmZlckRhdGE7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGlmIChkZWNvZGVkLnByZXBhcmVDb21tYW5kUmVzcG9uc2UpIHtcbiAgICAgICAgICB0aGlzLnByZXBhcmVDb21tYW5kID0gZGVjb2RlZC5wcmVwYXJlQ29tbWFuZFJlc3BvbnNlO1xuICAgICAgICAgIGlmICh0aGlzLnR5cGUgIT09IFRyYW5zYWN0aW9uVHlwZS5DYW50b25Db21tYW5kKSB7XG4gICAgICAgICAgICB0aGlzLmxvYWRJbnB1dHNBbmRPdXRwdXRzKCk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmIChkZWNvZGVkLnBhcnR5U2lnbmF0dXJlcyAmJiBkZWNvZGVkLnBhcnR5U2lnbmF0dXJlcy5zaWduYXR1cmVzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICB0aGlzLnNpZ25lckZpbmdlcnByaW50ID0gZGVjb2RlZC5wYXJ0eVNpZ25hdHVyZXMuc2lnbmF0dXJlc1swXS5wYXJ0eS5zcGxpdCgnOjonKVsxXTtcbiAgICAgICAgICB0aGlzLnNpZ25hdHVyZXMgPSBkZWNvZGVkLnBhcnR5U2lnbmF0dXJlcy5zaWduYXR1cmVzWzBdLnNpZ25hdHVyZXNbMF0uc2lnbmF0dXJlO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLnR5cGUgPT09IFRyYW5zYWN0aW9uVHlwZS5DYW50b25Db21tYW5kICYmIGRlY29kZWQucHJlcGFyZUNvbW1hbmRSZXNwb25zZT8ucHJlcGFyZWRUcmFuc2FjdGlvbikge1xuICAgICAgICAgIHRoaXMuY2FudG9uQ29tbWFuZEFjdEFzID0gdXRpbHMuZXh0cmFjdFN1Ym1pdHRlckFjdEFzKGRlY29kZWQucHJlcGFyZUNvbW1hbmRSZXNwb25zZS5wcmVwYXJlZFRyYW5zYWN0aW9uKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHRocm93IG5ldyBJbnZhbGlkVHJhbnNhY3Rpb25FcnJvcignVW5hYmxlIHRvIHBhcnNlIHJhdyB0cmFuc2FjdGlvbiBkYXRhJyk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIExvYWRzIHRoZSBpbnB1dCAmIG91dHB1dCBmaWVsZHMgZm9yIHRoZSB0cmFuc2FjdGlvblxuICAgKlxuICAgKi9cbiAgbG9hZElucHV0c0FuZE91dHB1dHMoKTogdm9pZCB7XG4gICAgY29uc3Qgb3V0cHV0czogRW50cnlbXSA9IFtdO1xuICAgIGNvbnN0IGlucHV0czogRW50cnlbXSA9IFtdO1xuICAgIGNvbnN0IHR4RGF0YSA9IHRoaXMudG9Kc29uKCk7XG4gICAgY29uc3QgaW5wdXQ6IEVudHJ5ID0ge1xuICAgICAgYWRkcmVzczogdHhEYXRhLnNlbmRlcixcbiAgICAgIHZhbHVlOiB0eERhdGEuYW1vdW50LFxuICAgICAgY29pbjogdHhEYXRhLnRva2VuID8gdHhEYXRhLnRva2VuIDogdGhpcy5fY29pbkNvbmZpZy5uYW1lLFxuICAgIH07XG4gICAgY29uc3Qgb3V0cHV0OiBFbnRyeSA9IHtcbiAgICAgIGFkZHJlc3M6IHR4RGF0YS5yZWNlaXZlcixcbiAgICAgIHZhbHVlOiB0eERhdGEuYW1vdW50LFxuICAgICAgY29pbjogdHhEYXRhLnRva2VuID8gdHhEYXRhLnRva2VuIDogdGhpcy5fY29pbkNvbmZpZy5uYW1lLFxuICAgIH07XG4gICAgaW5wdXRzLnB1c2goaW5wdXQpO1xuICAgIG91dHB1dHMucHVzaChvdXRwdXQpO1xuICAgIHRoaXMuX2lucHV0cyA9IGlucHV0cztcbiAgICB0aGlzLl9vdXRwdXRzID0gb3V0cHV0cztcbiAgfVxuXG4gIGV4cGxhaW5UcmFuc2FjdGlvbigpOiBUcmFuc2FjdGlvbkV4cGxhbmF0aW9uIHtcbiAgICBjb25zdCBkaXNwbGF5T3JkZXIgPSBbXG4gICAgICAnaWQnLFxuICAgICAgJ291dHB1dHMnLFxuICAgICAgJ291dHB1dEFtb3VudCcsXG4gICAgICAnaW5wdXRzJyxcbiAgICAgICdpbnB1dEFtb3VudCcsXG4gICAgICAnY2hhbmdlT3V0cHV0cycsXG4gICAgICAnY2hhbmdlQW1vdW50JyxcbiAgICAgICdmZWUnLFxuICAgICAgJ3R5cGUnLFxuICAgIF07XG4gICAgY29uc3QgaW5wdXRzOiBJVHJhbnNhY3Rpb25SZWNpcGllbnRbXSA9IFtdO1xuICAgIGNvbnN0IG91dHB1dHM6IElUcmFuc2FjdGlvblJlY2lwaWVudFtdID0gW107XG4gICAgbGV0IGlucHV0QW1vdW50ID0gJzAnO1xuICAgIGxldCBvdXRwdXRBbW91bnQgPSAnMCc7XG4gICAgc3dpdGNoICh0aGlzLnR5cGUpIHtcbiAgICAgIGNhc2UgVHJhbnNhY3Rpb25UeXBlLkNvc2lnbkRlbGVnYXRpb25BY2NlcHQ6XG4gICAgICBjYXNlIFRyYW5zYWN0aW9uVHlwZS5UcmFuc2ZlckFjY2VwdDpcbiAgICAgIGNhc2UgVHJhbnNhY3Rpb25UeXBlLlRyYW5zZmVyUmVqZWN0OiB7XG4gICAgICAgIGNvbnN0IHR4RGF0YSA9IHRoaXMudG9Kc29uKCk7XG4gICAgICAgIGNvbnN0IGlucHV0OiBJVHJhbnNhY3Rpb25SZWNpcGllbnQgPSB7XG4gICAgICAgICAgYWRkcmVzczogdHhEYXRhLnNlbmRlcixcbiAgICAgICAgICBhbW91bnQ6IHR4RGF0YS5hbW91bnQsXG4gICAgICAgIH07XG4gICAgICAgIGlmICh0eERhdGEudG9rZW4pIHtcbiAgICAgICAgICBpbnB1dC50b2tlbk5hbWUgPSB0eERhdGEudG9rZW47XG4gICAgICAgIH1cbiAgICAgICAgaW5wdXRzLnB1c2goaW5wdXQpO1xuICAgICAgICBpbnB1dEFtb3VudCA9IHR4RGF0YS5hbW91bnQ7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSBUcmFuc2FjdGlvblR5cGUuQWxsb2NhdGlvbkFsbG9jYXRlOlxuICAgICAgY2FzZSBUcmFuc2FjdGlvblR5cGUuU2VuZDoge1xuICAgICAgICBjb25zdCB0eERhdGEgPSB0aGlzLnRvSnNvbigpO1xuICAgICAgICBjb25zdCBvdXRwdXQ6IElUcmFuc2FjdGlvblJlY2lwaWVudCA9IHtcbiAgICAgICAgICBhZGRyZXNzOiB0eERhdGEucmVjZWl2ZXIsXG4gICAgICAgICAgYW1vdW50OiB0eERhdGEuYW1vdW50LFxuICAgICAgICB9O1xuICAgICAgICBpZiAodHhEYXRhLm1lbW9JZCkge1xuICAgICAgICAgIG91dHB1dC5tZW1vID0gdHhEYXRhLm1lbW9JZDtcbiAgICAgICAgfVxuICAgICAgICBpZiAodHhEYXRhLnRva2VuKSB7XG4gICAgICAgICAgb3V0cHV0LnRva2VuTmFtZSA9IHR4RGF0YS50b2tlbjtcbiAgICAgICAgfVxuICAgICAgICBvdXRwdXRzLnB1c2gob3V0cHV0KTtcbiAgICAgICAgb3V0cHV0QW1vdW50ID0gdHhEYXRhLmFtb3VudDtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjYXNlIFRyYW5zYWN0aW9uVHlwZS5UcmFuc2Zlck9mZmVyV2l0aGRyYXduOiB7XG4gICAgICAgIGNvbnN0IHR4RGF0YSA9IHRoaXMudG9Kc29uKCk7XG4gICAgICAgIGNvbnN0IGlucHV0OiBJVHJhbnNhY3Rpb25SZWNpcGllbnQgPSB7XG4gICAgICAgICAgYWRkcmVzczogdHhEYXRhLnJlY2VpdmVyLFxuICAgICAgICAgIGFtb3VudDogdHhEYXRhLmFtb3VudCxcbiAgICAgICAgfTtcbiAgICAgICAgaWYgKHR4RGF0YS50b2tlbikge1xuICAgICAgICAgIGlucHV0LnRva2VuTmFtZSA9IHR4RGF0YS50b2tlbjtcbiAgICAgICAgfVxuICAgICAgICBpbnB1dHMucHVzaChpbnB1dCk7XG4gICAgICAgIGlucHV0QW1vdW50ID0gdHhEYXRhLmFtb3VudDtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjYXNlIFRyYW5zYWN0aW9uVHlwZS5DYW50b25Db21tYW5kOiB7XG4gICAgICAgIGNvbnN0IGNvbW1hbmRTdW1tYXJ5ID0gdGhpcy5idWlsZENhbnRvbkNvbW1hbmRTdW1tYXJ5KCk7XG4gICAgICAgIGNvbnN0IGV4cGxhbmF0aW9uOiBUcmFuc2FjdGlvbkV4cGxhbmF0aW9uID0ge1xuICAgICAgICAgIGlkOiB0aGlzLmlkLFxuICAgICAgICAgIGRpc3BsYXlPcmRlcixcbiAgICAgICAgICBvdXRwdXRzOiBvdXRwdXRzLFxuICAgICAgICAgIG91dHB1dEFtb3VudDogb3V0cHV0QW1vdW50LFxuICAgICAgICAgIGlucHV0czogaW5wdXRzLFxuICAgICAgICAgIGlucHV0QW1vdW50OiBpbnB1dEFtb3VudCxcbiAgICAgICAgICBjaGFuZ2VPdXRwdXRzOiBbXSxcbiAgICAgICAgICBjaGFuZ2VBbW91bnQ6ICcwJyxcbiAgICAgICAgICBmZWU6IHsgZmVlOiAnMCcgfSxcbiAgICAgICAgICB0eXBlOiB0aGlzLnR5cGUsXG4gICAgICAgIH07XG4gICAgICAgIGlmIChjb21tYW5kU3VtbWFyeSkge1xuICAgICAgICAgIGV4cGxhbmF0aW9uLmNhbnRvbkNvbW1hbmQgPSBjb21tYW5kU3VtbWFyeTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZXhwbGFuYXRpb247XG4gICAgICB9XG4gICAgICBjYXNlIFRyYW5zYWN0aW9uVHlwZS5FbmRJbnZlc3Rvck9uYm9hcmRpbmdPZmZlcjoge1xuICAgICAgICAvLyBOb24tc2lnbmFibGUgbm90aWZpY2F0aW9uIHJlY29yZCDigJQgbm8gaW5wdXRzLCBvdXRwdXRzLCBvciBhbW91bnRzIHRvIGV4cGxhaW4uXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgaWQ6IHRoaXMuaWQsXG4gICAgICAgICAgZGlzcGxheU9yZGVyLFxuICAgICAgICAgIG91dHB1dHM6IFtdLFxuICAgICAgICAgIG91dHB1dEFtb3VudDogJzAnLFxuICAgICAgICAgIGlucHV0czogW10sXG4gICAgICAgICAgaW5wdXRBbW91bnQ6ICcwJyxcbiAgICAgICAgICBjaGFuZ2VPdXRwdXRzOiBbXSxcbiAgICAgICAgICBjaGFuZ2VBbW91bnQ6ICcwJyxcbiAgICAgICAgICBmZWU6IHsgZmVlOiAnMCcgfSxcbiAgICAgICAgICB0eXBlOiB0aGlzLnR5cGUsXG4gICAgICAgIH07XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB7XG4gICAgICBpZDogdGhpcy5pZCxcbiAgICAgIGRpc3BsYXlPcmRlcixcbiAgICAgIG91dHB1dHM6IG91dHB1dHMsXG4gICAgICBvdXRwdXRBbW91bnQ6IG91dHB1dEFtb3VudCxcbiAgICAgIGlucHV0czogaW5wdXRzLFxuICAgICAgaW5wdXRBbW91bnQ6IGlucHV0QW1vdW50LFxuICAgICAgY2hhbmdlT3V0cHV0czogW10sXG4gICAgICBjaGFuZ2VBbW91bnQ6ICcwJyxcbiAgICAgIGZlZTogeyBmZWU6ICcwJyB9LFxuICAgICAgdHlwZTogdGhpcy50eXBlLFxuICAgIH07XG4gIH1cblxuICBwcml2YXRlIGJ1aWxkQ2FudG9uQ29tbWFuZFN1bW1hcnkoKTogQ2FudG9uQ29tbWFuZEV4cGxhaW4gfCB1bmRlZmluZWQge1xuICAgIGNvbnN0IHJhd1ByZXBhcmVkID0gdGhpcy5fcHJlcGFyZUNvbW1hbmQ/LnByZXBhcmVkVHJhbnNhY3Rpb247XG4gICAgaWYgKCFyYXdQcmVwYXJlZCkge1xuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IGluZm8gPSB1dGlscy5leHRyYWN0Q2FudG9uQ29tbWFuZEluZm8ocmF3UHJlcGFyZWQpO1xuICAgICAgY29uc3QgdGVtcGxhdGVJZFN0ciA9IGAke2luZm8udGVtcGxhdGVJZC5wYWNrYWdlSWR9OiR7aW5mby50ZW1wbGF0ZUlkLm1vZHVsZU5hbWV9OiR7aW5mby50ZW1wbGF0ZUlkLmVudGl0eU5hbWV9YDtcbiAgICAgIGNvbnN0IHN1bW1hcnk6IENhbnRvbkNvbW1hbmRFeHBsYWluID0ge1xuICAgICAgICBraW5kOiBpbmZvLmtpbmQsXG4gICAgICAgIHRlbXBsYXRlSWQ6IHRlbXBsYXRlSWRTdHIsXG4gICAgICAgIGFjdEFzOiB0aGlzLl9jYW50b25Db21tYW5kQWN0QXMgPz8gW10sXG4gICAgICB9O1xuICAgICAgaWYgKGluZm8uY2hvaWNlICE9PSB1bmRlZmluZWQpIHN1bW1hcnkuY2hvaWNlID0gaW5mby5jaG9pY2U7XG4gICAgICBpZiAoaW5mby5jb250cmFjdElkICE9PSB1bmRlZmluZWQgJiYgaW5mby5jb250cmFjdElkICE9PSAnJykgc3VtbWFyeS5jb250cmFjdElkID0gaW5mby5jb250cmFjdElkO1xuICAgICAgcmV0dXJuIHN1bW1hcnk7XG4gICAgfSBjYXRjaCB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cbiAgfVxufVxuIl19
|
|
443
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNhY3Rpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbGliL3RyYW5zYWN0aW9uL3RyYW5zYWN0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLG1EQU84QjtBQWdCOUIscURBQTZCO0FBQzdCLDBDQUE2RztBQUU3RyxNQUFhLFdBQVksU0FBUSwwQkFBZTtJQVM5QyxZQUFZLFVBQWdDO1FBQzFDLEtBQUssQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUNwQixDQUFDO0lBRUQsSUFBSSxjQUFjO1FBQ2hCLE9BQU8sSUFBSSxDQUFDLGVBQWUsQ0FBQztJQUM5QixDQUFDO0lBRUQsSUFBSSxjQUFjLENBQUMsV0FBeUM7UUFDMUQsSUFBSSxDQUFDLGVBQWUsR0FBRyxXQUFXLENBQUM7SUFDckMsQ0FBQztJQUVELElBQUksZUFBZSxDQUFDLGVBQWdDO1FBQ2xELElBQUksQ0FBQyxLQUFLLEdBQUcsZUFBZSxDQUFDO0lBQy9CLENBQUM7SUFFRCxJQUFJLGVBQWUsQ0FBQyxJQUF5QjtRQUMzQyxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDO0lBQy9CLENBQUM7SUFFRCxJQUFJLDRCQUE0QixDQUFDLElBQThCO1FBQzdELElBQUksQ0FBQyw2QkFBNkIsR0FBRyxJQUFJLENBQUM7SUFDNUMsQ0FBQztJQUVELElBQUkscUJBQXFCLENBQUMsSUFBdUI7UUFDL0MsSUFBSSxDQUFDLHNCQUFzQixHQUFHLElBQUksQ0FBQztJQUNyQyxDQUFDO0lBRUQsSUFBSSw4QkFBOEIsQ0FBQyxJQUFvQztRQUNyRSxJQUFJLENBQUMsK0JBQStCLEdBQUcsSUFBSSxDQUFDO0lBQzlDLENBQUM7SUFFRCxJQUFJLGtCQUFrQixDQUFDLE9BQWlCO1FBQ3RDLElBQUksQ0FBQyxtQkFBbUIsR0FBRyxPQUFPLENBQUM7SUFDckMsQ0FBQztJQUVELElBQUksRUFBRTtRQUNKLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxF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Q29udGVudCI6WyJpbXBvcnQge1xuICBCYXNlS2V5LFxuICBCYXNlVHJhbnNhY3Rpb24sXG4gIEVudHJ5LFxuICBJbnZhbGlkVHJhbnNhY3Rpb25FcnJvcixcbiAgSVRyYW5zYWN0aW9uUmVjaXBpZW50LFxuICBUcmFuc2FjdGlvblR5cGUsXG59IGZyb20gJ0BiaXRnby1iZXRhL3Nkay1jb3JlJztcbmltcG9ydCB7IEJhc2VDb2luIGFzIENvaW5Db25maWcgfSBmcm9tICdAYml0Z28tYmV0YS9zdGF0aWNzJztcbmltcG9ydCB7XG4gIEFsbG9jYXRpb25SZXF1ZXN0LFxuICBDYW50b25Db21tYW5kRXhwbGFpbixcbiAgQ2FudG9uUHJlcGFyZUNvbW1hbmRSZXNwb25zZSxcbiAgQ29zaWduRGVsZWdhdGlvblByb3Bvc2FsLFxuICBFbmRJbnZlc3Rvck9uYm9hcmRpbmdPZmZlckRhdGEsXG4gIE11bHRpSGFzaFNpZ25hdHVyZSxcbiAgUGFydHlTaWduYXR1cmUsXG4gIFByZXBhcmVkVHhuUGFyc2VkSW5mbyxcbiAgVHJhbnNhY3Rpb25Ccm9hZGNhc3REYXRhLFxuICBUcmFuc2FjdGlvbkV4cGxhbmF0aW9uLFxuICBUcmFuc2ZlckFja25vd2xlZGdlLFxuICBUeERhdGEsXG59IGZyb20gJy4uL2lmYWNlJztcbmltcG9ydCB1dGlscyBmcm9tICcuLi91dGlscyc7XG5pbXBvcnQgeyBEVU1NWV9IQVNILCBIQVNISU5HX1NDSEVNRV9WRVJTSU9OLCBTSUdOQVRVUkVfQUxHT1JJVEhNX1NQRUMsIFNJR05BVFVSRV9GT1JNQVQgfSBmcm9tICcuLi9jb25zdGFudCc7XG5cbmV4cG9ydCBjbGFzcyBUcmFuc2FjdGlvbiBleHRlbmRzIEJhc2VUcmFuc2FjdGlvbiB7XG4gIHByaXZhdGUgX3ByZXBhcmVDb21tYW5kOiBDYW50b25QcmVwYXJlQ29tbWFuZFJlc3BvbnNlO1xuICBwcml2YXRlIF9zaWduZXJGaW5nZXJwcmludDogc3RyaW5nO1xuICBwcml2YXRlIF9hY2tub3dsZWRnZURhdGE6IFRyYW5zZmVyQWNrbm93bGVkZ2U7XG4gIHByaXZhdGUgX2Nvc2lnbkRlbGVnYXRpb25Qcm9wb3NhbERhdGE6IENvc2lnbkRlbGVnYXRpb25Qcm9wb3NhbDtcbiAgcHJpdmF0ZSBfYWxsb2NhdGlvblJlcXVlc3REYXRhOiBBbGxvY2F0aW9uUmVxdWVzdDtcbiAgcHJpdmF0ZSBfZW5kSW52ZXN0b3JPbmJvYXJkaW5nT2ZmZXJEYXRhOiBFbmRJbnZlc3Rvck9uYm9hcmRpbmdPZmZlckRhdGE7XG4gIHByaXZhdGUgX2NhbnRvbkNvbW1hbmRBY3RBczogc3RyaW5nW107XG5cbiAgY29uc3RydWN0b3IoY29pbkNvbmZpZzogUmVhZG9ubHk8Q29pbkNvbmZpZz4pIHtcbiAgICBzdXBlcihjb2luQ29uZmlnKTtcbiAgfVxuXG4gIGdldCBwcmVwYXJlQ29tbWFuZCgpOiBDYW50b25QcmVwYXJlQ29tbWFuZFJlc3BvbnNlIHtcbiAgICByZXR1cm4gdGhpcy5fcHJlcGFyZUNvbW1hbmQ7XG4gIH1cblxuICBzZXQgcHJlcGFyZUNvbW1hbmQodHJhbnNhY3Rpb246IENhbnRvblByZXBhcmVDb21tYW5kUmVzcG9uc2UpIHtcbiAgICB0aGlzLl9wcmVwYXJlQ29tbWFuZCA9IHRyYW5zYWN0aW9uO1xuICB9XG5cbiAgc2V0IHRyYW5zYWN0aW9uVHlwZSh0cmFuc2FjdGlvblR5cGU6IFRyYW5zYWN0aW9uVHlwZSkge1xuICAgIHRoaXMuX3R5cGUgPSB0cmFuc2FjdGlvblR5cGU7XG4gIH1cblxuICBzZXQgYWNrbm93bGVkZ2VEYXRhKGRhdGE6IFRyYW5zZmVyQWNrbm93bGVkZ2UpIHtcbiAgICB0aGlzLl9hY2tub3dsZWRnZURhdGEgPSBkYXRhO1xuICB9XG5cbiAgc2V0IGNvc2lnbkRlbGVnYXRpb25Qcm9wb3NhbERhdGEoZGF0YTogQ29zaWduRGVsZWdhdGlvblByb3Bvc2FsKSB7XG4gICAgdGhpcy5fY29zaWduRGVsZWdhdGlvblByb3Bvc2FsRGF0YSA9IGRhdGE7XG4gIH1cblxuICBzZXQgYWxsb2NhdGlvblJlcXVlc3REYXRhKGRhdGE6IEFsbG9jYXRpb25SZXF1ZXN0KSB7XG4gICAgdGhpcy5fYWxsb2NhdGlvblJlcXVlc3REYXRhID0gZGF0YTtcbiAgfVxuXG4gIHNldCBlbmRJbnZlc3Rvck9uYm9hcmRpbmdPZmZlckRhdGEoZGF0YTogRW5kSW52ZXN0b3JPbmJvYXJkaW5nT2ZmZXJEYXRhKSB7XG4gICAgdGhpcy5fZW5kSW52ZXN0b3JPbmJvYXJkaW5nT2ZmZXJEYXRhID0gZGF0YTtcbiAgfVxuXG4gIHNldCBjYW50b25Db21tYW5kQWN0QXMocGFydGllczogc3RyaW5nW10pIHtcbiAgICB0aGlzLl9jYW50b25Db21tYW5kQWN0QXMgPSBwYXJ0aWVzO1xuICB9XG5cbiAgZ2V0IGlkKCk6IHN0cmluZyB7XG4gICAgaWYgKCF0aGlzLl9pZCkge1xuICAgICAgdGhyb3cgbmV3IEludmFsaWRUcmFuc2FjdGlvbkVycm9yKCd0cmFuc2FjdGlvbiBpcyBpcyBub3Qgc2V0Jyk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLl9pZDtcbiAgfVxuXG4gIHNldCBpZChpZDogc3RyaW5nKSB7XG4gICAgdGhpcy5faWQgPSBpZDtcbiAgfVxuXG4gIGNhblNpZ24oa2V5OiBCYXNlS2V5KTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgc2V0IHNpZ25hdHVyZXMoc2lnbmF0dXJlOiBzdHJpbmcpIHtcbiAgICB0aGlzLl9zaWduYXR1cmVzLnB1c2goc2lnbmF0dXJlKTtcbiAgfVxuXG4gIHNldCBzaWduZXJGaW5nZXJwcmludChmaW5nZXJwcmludDogc3RyaW5nKSB7XG4gICAgdGhpcy5fc2lnbmVyRmluZ2VycHJpbnQgPSBmaW5nZXJwcmludDtcbiAgfVxuXG4gIHRvQnJvYWRjYXN0Rm9ybWF0KCk6IHN0cmluZyB7XG4gICAgaWYgKHRoaXMuX3R5cGUgPT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhyb3cgbmV3IEludmFsaWRUcmFuc2FjdGlvbkVycm9yKCdUcmFuc2FjdGlvbiB0eXBlIGlzIG5vdCBzZXQnKTtcbiAgICB9XG4gICAgaWYgKHRoaXMuX3R5cGUgPT09IFRyYW5zYWN0aW9uVHlwZS5UcmFuc2ZlckFja25vd2xlZGdlKSB7XG4gICAgICBpZiAoIXRoaXMuX2Fja25vd2xlZGdlRGF0YSkge1xuICAgICAgICB0aHJvdyBuZXcgSW52YWxpZFRyYW5zYWN0aW9uRXJyb3IoJ0Fja25vd2xlZGdlRGF0YSBpcyBub3Qgc2V0Jyk7XG4gICAgICB9XG4gICAgICBjb25zdCBtaW5EYXRhOiBUcmFuc2FjdGlvbkJyb2FkY2FzdERhdGEgPSB7XG4gICAgICAgIHR4VHlwZTogVHJhbnNhY3Rpb25UeXBlW3RoaXMuX3R5cGVdLFxuICAgICAgICBzdWJtaXNzaW9uSWQ6IHRoaXMuaWQsXG4gICAgICAgIGFja25vd2xlZGdlRGF0YTogdGhpcy5fYWNrbm93bGVkZ2VEYXRhLFxuICAgICAgfTtcbiAgICAgIHJldHVybiBCdWZmZXIuZnJvbShKU09OLnN0cmluZ2lmeShtaW5EYXRhKSkudG9TdHJpbmcoJ2Jhc2U2NCcpO1xuICAgIH1cbiAgICBpZiAodGhpcy5fdHlwZSA9PT0gVHJhbnNhY3Rpb25UeXBlLkNvc2lnbkRlbGVnYXRpb25Qcm9wb3NhbCkge1xuICAgICAgaWYgKCF0aGlzLl9jb3NpZ25EZWxlZ2F0aW9uUHJvcG9zYWxEYXRhKSB7XG4gICAgICAgIHRocm93IG5ldyBJbnZhbGlkVHJhbnNhY3Rpb25FcnJvcignQ29zaWduRGVsZWdhdGlvblByb3Bvc2FsRGF0YSBpcyBub3Qgc2V0Jyk7XG4gICAgICB9XG4gICAgICBjb25zdCBtaW5EYXRhOiBUcmFuc2FjdGlvbkJyb2FkY2FzdERhdGEgPSB7XG4gICAgICAgIHR4VHlwZTogVHJhbnNhY3Rpb25UeXBlW3RoaXMuX3R5cGVdLFxuICAgICAgICBzdWJtaXNzaW9uSWQ6IHRoaXMuaWQsXG4gICAgICAgIGNvc2lnbkRlbGVnYXRpb25Qcm9wb3NhbERhdGE6IHRoaXMuX2Nvc2lnbkRlbGVnYXRpb25Qcm9wb3NhbERhdGEsXG4gICAgICB9O1xuICAgICAgcmV0dXJuIEJ1ZmZlci5mcm9tKEpTT04uc3RyaW5naWZ5KG1pbkRhdGEpKS50b1N0cmluZygnYmFzZTY0Jyk7XG4gICAgfVxuICAgIGlmICh0aGlzLl90eXBlID09PSBUcmFuc2FjdGlvblR5cGUuQWxsb2NhdGlvblJlcXVlc3QpIHtcbiAgICAgIGlmICghdGhpcy5fYWxsb2NhdGlvblJlcXVlc3REYXRhKSB7XG4gICAgICAgIHRocm93IG5ldyBJbnZhbGlkVHJhbnNhY3Rpb25FcnJvcignQWxsb2NhdGlvblJlcXVlc3REYXRhIGlzIG5vdCBzZXQnKTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IG1pbkRhdGE6IFRyYW5zYWN0aW9uQnJvYWRjYXN0RGF0YSA9IHtcbiAgICAgICAgdHhUeXBlOiBUcmFuc2FjdGlvblR5cGVbdGhpcy5fdHlwZV0sXG4gICAgICAgIHN1Ym1pc3Npb25JZDogdGhpcy5pZCxcbiAgICAgICAgYWxsb2NhdGlvblJlcXVlc3REYXRhOiB0aGlzLl9hbGxvY2F0aW9uUmVxdWVzdERhdGEsXG4gICAgICB9O1xuICAgICAgcmV0dXJuIEJ1ZmZlci5mcm9tKEpTT04uc3RyaW5naWZ5KG1pbkRhdGEpKS50b1N0cmluZygnYmFzZTY0Jyk7XG4gICAgfVxuICAgIGlmICh0aGlzLl90eXBlID09PSBUcmFuc2FjdGlvblR5cGUuRW5kSW52ZXN0b3JPbmJvYXJkaW5nT2ZmZXIpIHtcbiAgICAgIGlmICghdGhpcy5fZW5kSW52ZXN0b3JPbmJvYXJkaW5nT2ZmZXJEYXRhKSB7XG4gICAgICAgIHRocm93IG5ldyBJbnZhbGlkVHJhbnNhY3Rpb25FcnJvcignRW5kSW52ZXN0b3JPbmJvYXJkaW5nT2ZmZXJEYXRhIGlzIG5vdCBzZXQnKTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IG1pbkRhdGE6IFRyYW5zYWN0aW9uQnJvYWRjYXN0RGF0YSA9IHtcbiAgICAgICAgdHhUeXBlOiBUcmFuc2FjdGlvblR5cGVbdGhpcy5fdHlwZV0sXG4gICAgICAgIHN1Ym1pc3Npb25JZDogdGhpcy5pZCxcbiAgICAgICAgZW5kSW52ZXN0b3JPbmJvYXJkaW5nT2ZmZXJEYXRhOiB0aGlzLl9lbmRJbnZlc3Rvck9uYm9hcmRpbmdPZmZlckRhdGEsXG4gICAgICB9O1xuICAgICAgcmV0dXJuIEJ1ZmZlci5mcm9tKEpTT04uc3RyaW5naWZ5KG1pbkRhdGEpKS50b1N0cmluZygnYmFzZTY0Jyk7XG4gICAgfVxuICAgIGlmICghdGhpcy5fcHJlcGFyZUNvbW1hbmQpIHtcbiAgICAgIHRocm93IG5ldyBJbnZhbGlkVHJhbnNhY3Rpb25FcnJvcignRW1wdHkgdHJhbnNhY3Rpb24gZGF0YScpO1xuICAgIH1cbiAgICBjb25zdCBwYXJ0eVNpZ25hdHVyZXM6IFBhcnR5U2lnbmF0dXJlW10gPSBbXTtcbiAgICBjb25zdCBkYXRhOiBUcmFuc2FjdGlvbkJyb2FkY2FzdERhdGEgPSB7XG4gICAgICBwcmVwYXJlQ29tbWFuZFJlc3BvbnNlOiB0aGlzLl9wcmVwYXJlQ29tbWFuZCxcbiAgICAgIHR4VHlwZTogdGhpcy5fdHlwZSAhPT0gdW5kZWZpbmVkID8gVHJhbnNhY3Rpb25UeXBlW3RoaXMuX3R5cGVdIDogJycsXG4gICAgICBwcmVwYXJlZFRyYW5zYWN0aW9uOiAnJyxcbiAgICAgIHBhcnR5U2lnbmF0dXJlczoge1xuICAgICAgICBzaWduYXR1cmVzOiBwYXJ0eVNpZ25hdHVyZXMsXG4gICAgICB9LFxuICAgICAgZGVkdXBsaWNhdGlvblBlcmlvZDoge1xuICAgICAgICBFbXB0eToge30sXG4gICAgICB9LFxuICAgICAgc3VibWlzc2lvbklkOiB0aGlzLmlkLFxuICAgICAgaGFzaGluZ1NjaGVtZVZlcnNpb246IEhBU0hJTkdfU0NIRU1FX1ZFUlNJT04sXG4gICAgICBtaW5MZWRnZXJUaW1lOiB7XG4gICAgICAgIHRpbWU6IHtcbiAgICAgICAgICBFbXB0eToge30sXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgIH07XG4gICAgY29uc3Qgc2lnbmF0dXJlczogTXVsdGlIYXNoU2lnbmF0dXJlW10gPSBbXTtcbiAgICBpZiAodGhpcy5fc2lnbmF0dXJlcy5sZW5ndGggPiAwICYmIHRoaXMuX3NpZ25lckZpbmdlcnByaW50KSB7XG4gICAgICB0aGlzLnNpZ25hdHVyZS5tYXAoKHNpZ25hdHVyZSkgPT4ge1xuICAgICAgICBjb25zdCBzaWduYXR1cmVPYmo6IE11bHRpSGFzaFNpZ25hdHVyZSA9IHtcbiAgICAgICAgICBmb3JtYXQ6IFNJR05BVFVSRV9GT1JNQVQsXG4gICAgICAgICAgc2lnbmF0dXJlOiBzaWduYXR1cmUsXG4gICAgICAgICAgc2lnbmVkQnk6IHRoaXMuX3NpZ25lckZpbmdlcnByaW50LFxuICAgICAgICAgIHNpZ25pbmdBbGdvcml0aG1TcGVjOiBTSUdOQVRVUkVfQUxHT1JJVEhNX1NQRUMsXG4gICAgICAgIH07XG4gICAgICAgIHNpZ25hdHVyZXMucHVzaChzaWduYXR1cmVPYmopO1xuICAgICAgfSk7XG4gICAgICAvLyBDYW50b25Db21tYW5kOiB0aGUgQ2FudG9uIHByb3RvY29sIHJlcXVpcmVzIG9uZSBwYXJ0eVNpZ25hdHVyZXMgZW50cnkgcGVyIGFjdEFzIHBhcnR5OyBhbGwgcGFydGllcyBzaGFyZSB0aGUgc2FtZSBUU1Mga2V5IGFuZCBzaWduYXR1cmUuXG4gICAgICBpZiAodGhpcy5fdHlwZSA9PT0gVHJhbnNhY3Rpb25UeXBlLkNhbnRvbkNvbW1hbmQpIHtcbiAgICAgICAgaWYgKCF0aGlzLl9jYW50b25Db21tYW5kQWN0QXM/Lmxlbmd0aCkge1xuICAgICAgICAgIHRocm93IG5ldyBJbnZhbGlkVHJhbnNhY3Rpb25FcnJvcihcbiAgICAgICAgICAgICdDYW50b25Db21tYW5kIHRyYW5zYWN0aW9uIGlzIG1pc3NpbmcgYWN0QXMgcGFydGllcyByZXF1aXJlZCBmb3IgcGFydHlTaWduYXR1cmVzJ1xuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgICAgZm9yIChjb25zdCBwYXJ0eSBvZiB0aGlzLl9jYW50b25Db21tYW5kQWN0QXMpIHtcbiAgICAgICAgICBkYXRhLnBhcnR5U2lnbmF0dXJlcz8uc2lnbmF0dXJlcy5wdXNoKHsgcGFydHksIHNpZ25hdHVyZXMgfSk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnN0IHNpZ25lclBhcnR5SWQgPSBgJHt0aGlzLl9zaWduZXJGaW5nZXJwcmludC5zbGljZSgwLCA1KX06OiR7dGhpcy5fc2lnbmVyRmluZ2VycHJpbnR9YDtcbiAgICAgICAgZGF0YS5wYXJ0eVNpZ25hdHVyZXM/LnNpZ25hdHVyZXMucHVzaCh7IHBhcnR5OiBzaWduZXJQYXJ0eUlkLCBzaWduYXR1cmVzIH0pO1xuICAgICAgfVxuICAgICAgZGF0YS5wcmVwYXJlZFRyYW5zYWN0aW9uID0gdGhpcy5fcHJlcGFyZUNvbW1hbmQucHJlcGFyZWRUcmFuc2FjdGlvblxuICAgICAgICA/IHRoaXMuX3ByZXBhcmVDb21tYW5kLnByZXBhcmVkVHJhbnNhY3Rpb25cbiAgICAgICAgOiAnJztcbiAgICB9XG4gICAgcmV0dXJuIEJ1ZmZlci5mcm9tKEpTT04uc3RyaW5naWZ5KGRhdGEpKS50b1N0cmluZygnYmFzZTY0Jyk7XG4gIH1cblxuICB0b0pzb24oKTogVHhEYXRhIHtcbiAgICBjb25zdCByZXN1bHQ6IFR4RGF0YSA9IHtcbiAgICAgIGlkOiB0aGlzLmlkLFxuICAgICAgdHlwZTogdGhpcy5fdHlwZSBhcyBUcmFuc2FjdGlvblR5cGUsXG4gICAgICBzZW5kZXI6ICcnLFxuICAgICAgcmVjZWl2ZXI6ICcnLFxuICAgICAgYW1vdW50OiAnJyxcbiAgICB9O1xuICAgIGlmICh0aGlzLl90eXBlID09PSBUcmFuc2FjdGlvblR5cGUuVHJhbnNmZXJBY2tub3dsZWRnZSkge1xuICAgICAgaWYgKCF0aGlzLl9hY2tub3dsZWRnZURhdGEpIHtcbiAgICAgICAgdGhyb3cgbmV3IEludmFsaWRUcmFuc2FjdGlvbkVycm9yKCdBY2tub3dsZWRnZURhdGEgaXMgbm90IHNldCcpO1xuICAgICAgfVxuICAgICAgcmVzdWx0LmFja25vd2xlZGdlRGF0YSA9IHRoaXMuX2Fja25vd2xlZGdlRGF0YTtcbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuICAgIGlmICh0aGlzLl90eXBlID09PSBUcmFuc2FjdGlvblR5cGUuQ29zaWduRGVsZWdhdGlvblByb3Bvc2FsKSB7XG4gICAgICBpZiAoIXRoaXMuX2Nvc2lnbkRlbGVnYXRpb25Qcm9wb3NhbERhdGEpIHtcbiAgICAgICAgdGhyb3cgbmV3IEludmFsaWRUcmFuc2FjdGlvbkVycm9yKCdDb3NpZ25EZWxlZ2F0aW9uUHJvcG9zYWxEYXRhIGlzIG5vdCBzZXQnKTtcbiAgICAgIH1cbiAgICAgIHJlc3VsdC5jb3NpZ25EZWxlZ2F0aW9uUHJvcG9zYWxEYXRhID0gdGhpcy5fY29zaWduRGVsZWdhdGlvblByb3Bvc2FsRGF0YTtcbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuICAgIGlmICh0aGlzLl90eXBlID09PSBUcmFuc2FjdGlvblR5cGUuQWxsb2NhdGlvblJlcXVlc3QpIHtcbiAgICAgIGlmICghdGhpcy5fYWxsb2NhdGlvblJlcXVlc3REYXRhKSB7XG4gICAgICAgIHRocm93IG5ldyBJbnZhbGlkVHJhbnNhY3Rpb25FcnJvcignQWxsb2NhdGlvblJlcXVlc3REYXRhIGlzIG5vdCBzZXQnKTtcbiAgICAgIH1cbiAgICAgIHJlc3VsdC5hbGxvY2F0aW9uUmVxdWVzdERhdGEgPSB0aGlzLl9hbGxvY2F0aW9uUmVxdWVzdERhdGE7XG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cbiAgICBpZiAodGhpcy5fdHlwZSA9PT0gVHJhbnNhY3Rpb25UeXBlLkVuZEludmVzdG9yT25ib2FyZGluZ09mZmVyKSB7XG4gICAgICBpZiAoIXRoaXMuX2VuZEludmVzdG9yT25ib2FyZGluZ09mZmVyRGF0YSkge1xuICAgICAgICB0aHJvdyBuZXcgSW52YWxpZFRyYW5zYWN0aW9uRXJyb3IoJ0VuZEludmVzdG9yT25ib2FyZGluZ09mZmVyRGF0YSBpcyBub3Qgc2V0Jyk7XG4gICAgICB9XG4gICAgICByZXN1bHQuZW5kSW52ZXN0b3JPbmJvYXJkaW5nT2ZmZXJEYXRhID0gdGhpcy5fZW5kSW52ZXN0b3JPbmJvYXJkaW5nT2ZmZXJEYXRhO1xuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG4gICAgaWYgKHRoaXMuX3R5cGUgPT09IFRyYW5zYWN0aW9uVHlwZS5DYW50b25Db21tYW5kKSB7XG4gICAgICBpZiAoIXRoaXMuX3ByZXBhcmVDb21tYW5kPy5wcmVwYXJlZFRyYW5zYWN0aW9uKSB7XG4gICAgICAgIHRocm93IG5ldyBJbnZhbGlkVHJhbnNhY3Rpb25FcnJvcignRW1wdHkgdHJhbnNhY3Rpb24gZGF0YScpO1xuICAgICAgfVxuICAgICAgY29uc3QgY29tbWFuZFN1bW1hcnkgPSB0aGlzLmJ1aWxkQ2FudG9uQ29tbWFuZFN1bW1hcnkoKTtcbiAgICAgIGlmIChjb21tYW5kU3VtbWFyeSkge1xuICAgICAgICByZXN1bHQuY2FudG9uQ29tbWFuZCA9IGNvbW1hbmRTdW1tYXJ5O1xuICAgICAgfVxuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG4gICAgaWYgKCF0aGlzLl9wcmVwYXJlQ29tbWFuZCB8fCAhdGhpcy5fcHJlcGFyZUNvbW1hbmQucHJlcGFyZWRUcmFuc2FjdGlvbikge1xuICAgICAgdGhyb3cgbmV3IEludmFsaWRUcmFuc2FjdGlvbkVycm9yKCdFbXB0eSB0cmFuc2FjdGlvbiBkYXRhJyk7XG4gICAgfVxuICAgIC8vIFRPRE86IGV4dHJhY3Qgb3RoZXIgcmVxdWlyZWQgZGF0YSAodXR4byB1c2VkLCByZXF1ZXN0IHRpbWUsIGV4ZWN1dGUgYmVmb3JlIGV0YylcbiAgICBsZXQgcGFyc2VkSW5mbzogUHJlcGFyZWRUeG5QYXJzZWRJbmZvO1xuICAgIHRyeSB7XG4gICAgICBwYXJzZWRJbmZvID0gdXRpbHMucGFyc2VSYXdDYW50b25UcmFuc2FjdGlvbkRhdGEodGhpcy5fcHJlcGFyZUNvbW1hbmQucHJlcGFyZWRUcmFuc2FjdGlvbiwgdGhpcy50eXBlKTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICB0aHJvdyBuZXcgSW52YWxpZFRyYW5zYWN0aW9uRXJyb3IoYEZhaWxlZCB0byBwYXJzZSB0cmFuc2FjdGlvbiBoYXNoOiAke2UgaW5zdGFuY2VvZiBFcnJvciA/IGUubWVzc2FnZSA6IGV9YCk7XG4gICAgfVxuICAgIHJlc3VsdC5zZW5kZXIgPSBwYXJzZWRJbmZvLnNlbmRlcjtcbiAgICByZXN1bHQucmVjZWl2ZXIgPSBwYXJzZWRJbmZvLnJlY2VpdmVyO1xuICAgIHJlc3VsdC5hbW91bnQgPSBwYXJzZWRJbmZvLmFtb3VudDtcbiAgICBpZiAocGFyc2VkSW5mby5tZW1vSWQpIHtcbiAgICAgIHJlc3VsdC5tZW1vSWQgPSBwYXJzZWRJbmZvLm1lbW9JZDtcbiAgICB9XG4gICAgaWYgKHBhcnNlZEluZm8udG9rZW4pIHtcbiAgICAgIHJlc3VsdC50b2tlbiA9IHBhcnNlZEluZm8udG9rZW47XG4gICAgfVxuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICBnZXQgc2lnbmFibGVQYXlsb2FkKCk6IEJ1ZmZlciB7XG4gICAgaWYgKFxuICAgICAgdGhpcy5fdHlwZSA9PT0gVHJhbnNhY3Rpb25UeXBlLlRyYW5zZmVyQWNrbm93bGVkZ2UgfHxcbiAgICAgIHRoaXMuX3R5cGUgPT09IFRyYW5zYWN0aW9uVHlwZS5Db3NpZ25EZWxlZ2F0aW9uUHJvcG9zYWwgfHxcbiAgICAgIHRoaXMuX3R5cGUgPT09IFRyYW5zYWN0aW9uVHlwZS5BbGxvY2F0aW9uUmVxdWVzdCB8fFxuICAgICAgdGhpcy5fdHlwZSA9PT0gVHJhbnNhY3Rpb25UeXBlLkVuZEludmVzdG9yT25ib2FyZGluZ09mZmVyXG4gICAgKSB7XG4gICAgICByZXR1cm4gQnVmZmVyLmZyb20oRFVNTVlfSEFTSCwgJ2Jhc2U2NCcpO1xuICAgIH1cbiAgICBpZiAoIXRoaXMuX3ByZXBhcmVDb21tYW5kKSB7XG4gICAgICB0aHJvdyBuZXcgSW52YWxpZFRyYW5zYWN0aW9uRXJyb3IoJ0VtcHR5IHRyYW5zYWN0aW9uIGRhdGEnKTtcbiAgICB9XG4gICAgcmV0dXJuIEJ1ZmZlci5mcm9tKHRoaXMuX3ByZXBhcmVDb21tYW5kLnByZXBhcmVkVHJhbnNhY3Rpb25IYXNoLCAnYmFzZTY0Jyk7XG4gIH1cblxuICBnZXQgY2FudG9uQ29tbWFuZEFjdEFzUGFydGllcygpOiBzdHJpbmdbXSB7XG4gICAgcmV0dXJuIHRoaXMuX2NhbnRvbkNvbW1hbmRBY3RBcyA/PyBbXTtcbiAgfVxuXG4gIGZyb21SYXdUcmFuc2FjdGlvbihyYXdUeDogc3RyaW5nKTogdm9pZCB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IGRlY29kZWQ6IFRyYW5zYWN0aW9uQnJvYWRjYXN0RGF0YSA9IEpTT04ucGFyc2UoQnVmZmVyLmZyb20ocmF3VHgsICdiYXNlNjQnKS50b1N0cmluZygndXRmOCcpKTtcbiAgICAgIHRoaXMuaWQgPSBkZWNvZGVkLnN1Ym1pc3Npb25JZDtcbiAgICAgIHRoaXMudHJhbnNhY3Rpb25UeXBlID0gVHJhbnNhY3Rpb25UeXBlW2RlY29kZWQudHhUeXBlXTtcbiAgICAgIGlmICh0aGlzLnR5cGUgPT09IFRyYW5zYWN0aW9uVHlwZS5UcmFuc2ZlckFja25vd2xlZGdlKSB7XG4gICAgICAgIGlmIChkZWNvZGVkLmFja25vd2xlZGdlRGF0YSkge1xuICAgICAgICAgIHRoaXMuYWNrbm93bGVkZ2VEYXRhID0gZGVjb2RlZC5hY2tub3dsZWRnZURhdGE7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAodGhpcy50eXBlID09PSBUcmFuc2FjdGlvblR5cGUuQ29zaWduRGVsZWdhdGlvblByb3Bvc2FsKSB7XG4gICAgICAgIGlmIChkZWNvZGVkLmNvc2lnbkRlbGVnYXRpb25Qcm9wb3NhbERhdGEpIHtcbiAgICAgICAgICB0aGlzLmNvc2lnbkRlbGVnYXRpb25Qcm9wb3NhbERhdGEgPSBkZWNvZGVkLmNvc2lnbkRlbGVnYXRpb25Qcm9wb3NhbERhdGE7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAodGhpcy50eXBlID09PSBUcmFuc2FjdGlvblR5cGUuQWxsb2NhdGlvblJlcXVlc3QpIHtcbiAgICAgICAgaWYgKGRlY29kZWQuYWxsb2NhdGlvblJlcXVlc3REYXRhKSB7XG4gICAgICAgICAgdGhpcy5hbGxvY2F0aW9uUmVxdWVzdERhdGEgPSBkZWNvZGVkLmFsbG9jYXRpb25SZXF1ZXN0RGF0YTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIGlmICh0aGlzLnR5cGUgPT09IFRyYW5zYWN0aW9uVHlwZS5FbmRJbnZlc3Rvck9uYm9hcmRpbmdPZmZlcikge1xuICAgICAgICBpZiAoZGVjb2RlZC5lbmRJbnZlc3Rvck9uYm9hcmRpbmdPZmZlckRhdGEpIHtcbiAgICAgICAgICB0aGlzLmVuZEludmVzdG9yT25ib2FyZGluZ09mZmVyRGF0YSA9IGRlY29kZWQuZW5kSW52ZXN0b3JPbmJvYXJkaW5nT2ZmZXJEYXRhO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpZiAoZGVjb2RlZC5wcmVwYXJlQ29tbWFuZFJlc3BvbnNlKSB7XG4gICAgICAgICAgdGhpcy5wcmVwYXJlQ29tbWFuZCA9IGRlY29kZWQucHJlcGFyZUNvbW1hbmRSZXNwb25zZTtcbiAgICAgICAgICBpZiAodGhpcy50eXBlICE9PSBUcmFuc2FjdGlvblR5cGUuQ2FudG9uQ29tbWFuZCkge1xuICAgICAgICAgICAgdGhpcy5sb2FkSW5wdXRzQW5kT3V0cHV0cygpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAoZGVjb2RlZC5wYXJ0eVNpZ25hdHVyZXMgJiYgZGVjb2RlZC5wYXJ0eVNpZ25hdHVyZXMuc2lnbmF0dXJlcy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgdGhpcy5zaWduZXJGaW5nZXJwcmludCA9IGRlY29kZWQucGFydHlTaWduYXR1cmVzLnNpZ25hdHVyZXNbMF0ucGFydHkuc3BsaXQoJzo6JylbMV07XG4gICAgICAgICAgdGhpcy5zaWduYXR1cmVzID0gZGVjb2RlZC5wYXJ0eVNpZ25hdHVyZXMuc2lnbmF0dXJlc1swXS5zaWduYXR1cmVzWzBdLnNpZ25hdHVyZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy50eXBlID09PSBUcmFuc2FjdGlvblR5cGUuQ2FudG9uQ29tbWFuZCAmJiBkZWNvZGVkLnByZXBhcmVDb21tYW5kUmVzcG9uc2U/LnByZXBhcmVkVHJhbnNhY3Rpb24pIHtcbiAgICAgICAgICB0aGlzLmNhbnRvbkNvbW1hbmRBY3RBcyA9IHV0aWxzLmV4dHJhY3RTdWJtaXR0ZXJBY3RBcyhkZWNvZGVkLnByZXBhcmVDb21tYW5kUmVzcG9uc2UucHJlcGFyZWRUcmFuc2FjdGlvbik7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICB0aHJvdyBuZXcgSW52YWxpZFRyYW5zYWN0aW9uRXJyb3IoJ1VuYWJsZSB0byBwYXJzZSByYXcgdHJhbnNhY3Rpb24gZGF0YScpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBMb2FkcyB0aGUgaW5wdXQgJiBvdXRwdXQgZmllbGRzIGZvciB0aGUgdHJhbnNhY3Rpb25cbiAgICpcbiAgICovXG4gIGxvYWRJbnB1dHNBbmRPdXRwdXRzKCk6IHZvaWQge1xuICAgIGNvbnN0IG91dHB1dHM6IEVudHJ5W10gPSBbXTtcbiAgICBjb25zdCBpbnB1dHM6IEVudHJ5W10gPSBbXTtcbiAgICBjb25zdCB0eERhdGEgPSB0aGlzLnRvSnNvbigpO1xuICAgIGNvbnN0IGlucHV0OiBFbnRyeSA9IHtcbiAgICAgIGFkZHJlc3M6IHR4RGF0YS5zZW5kZXIsXG4gICAgICB2YWx1ZTogdHhEYXRhLmFtb3VudCxcbiAgICAgIGNvaW46IHR4RGF0YS50b2tlbiA/IHR4RGF0YS50b2tlbiA6IHRoaXMuX2NvaW5Db25maWcubmFtZSxcbiAgICB9O1xuICAgIGNvbnN0IG91dHB1dDogRW50cnkgPSB7XG4gICAgICBhZGRyZXNzOiB0eERhdGEucmVjZWl2ZXIsXG4gICAgICB2YWx1ZTogdHhEYXRhLmFtb3VudCxcbiAgICAgIGNvaW46IHR4RGF0YS50b2tlbiA/IHR4RGF0YS50b2tlbiA6IHRoaXMuX2NvaW5Db25maWcubmFtZSxcbiAgICB9O1xuICAgIGlucHV0cy5wdXNoKGlucHV0KTtcbiAgICBvdXRwdXRzLnB1c2gob3V0cHV0KTtcbiAgICB0aGlzLl9pbnB1dHMgPSBpbnB1dHM7XG4gICAgdGhpcy5fb3V0cHV0cyA9IG91dHB1dHM7XG4gIH1cblxuICBleHBsYWluVHJhbnNhY3Rpb24oKTogVHJhbnNhY3Rpb25FeHBsYW5hdGlvbiB7XG4gICAgY29uc3QgZGlzcGxheU9yZGVyID0gW1xuICAgICAgJ2lkJyxcbiAgICAgICdvdXRwdXRzJyxcbiAgICAgICdvdXRwdXRBbW91bnQnLFxuICAgICAgJ2lucHV0cycsXG4gICAgICAnaW5wdXRBbW91bnQnLFxuICAgICAgJ2NoYW5nZU91dHB1dHMnLFxuICAgICAgJ2NoYW5nZUFtb3VudCcsXG4gICAgICAnZmVlJyxcbiAgICAgICd0eXBlJyxcbiAgICBdO1xuICAgIGNvbnN0IGlucHV0czogSVRyYW5zYWN0aW9uUmVjaXBpZW50W10gPSBbXTtcbiAgICBjb25zdCBvdXRwdXRzOiBJVHJhbnNhY3Rpb25SZWNpcGllbnRbXSA9IFtdO1xuICAgIGxldCBpbnB1dEFtb3VudCA9ICcwJztcbiAgICBsZXQgb3V0cHV0QW1vdW50ID0gJzAnO1xuICAgIHN3aXRjaCAodGhpcy50eXBlKSB7XG4gICAgICBjYXNlIFRyYW5zYWN0aW9uVHlwZS5Db3NpZ25EZWxlZ2F0aW9uQWNjZXB0OlxuICAgICAgY2FzZSBUcmFuc2FjdGlvblR5cGUuVHJhbnNmZXJBY2NlcHQ6XG4gICAgICBjYXNlIFRyYW5zYWN0aW9uVHlwZS5UcmFuc2ZlclJlamVjdDoge1xuICAgICAgICBjb25zdCB0eERhdGEgPSB0aGlzLnRvSnNvbigpO1xuICAgICAgICBjb25zdCBpbnB1dDogSVRyYW5zYWN0aW9uUmVjaXBpZW50ID0ge1xuICAgICAgICAgIGFkZHJlc3M6IHR4RGF0YS5zZW5kZXIsXG4gICAgICAgICAgYW1vdW50OiB0eERhdGEuYW1vdW50LFxuICAgICAgICB9O1xuICAgICAgICBpZiAodHhEYXRhLnRva2VuKSB7XG4gICAgICAgICAgaW5wdXQudG9rZW5OYW1lID0gdHhEYXRhLnRva2VuO1xuICAgICAgICB9XG4gICAgICAgIGlucHV0cy5wdXNoKGlucHV0KTtcbiAgICAgICAgaW5wdXRBbW91bnQgPSB0eERhdGEuYW1vdW50O1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgVHJhbnNhY3Rpb25UeXBlLkFsbG9jYXRpb25BbGxvY2F0ZTpcbiAgICAgIGNhc2UgVHJhbnNhY3Rpb25UeXBlLlNlbmQ6IHtcbiAgICAgICAgY29uc3QgdHhEYXRhID0gdGhpcy50b0pzb24oKTtcbiAgICAgICAgY29uc3Qgb3V0cHV0OiBJVHJhbnNhY3Rpb25SZWNpcGllbnQgPSB7XG4gICAgICAgICAgYWRkcmVzczogdHhEYXRhLnJlY2VpdmVyLFxuICAgICAgICAgIGFtb3VudDogdHhEYXRhLmFtb3VudCxcbiAgICAgICAgfTtcbiAgICAgICAgaWYgKHR4RGF0YS5tZW1vSWQpIHtcbiAgICAgICAgICBvdXRwdXQubWVtbyA9IHR4RGF0YS5tZW1vSWQ7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHR4RGF0YS50b2tlbikge1xuICAgICAgICAgIG91dHB1dC50b2tlbk5hbWUgPSB0eERhdGEudG9rZW47XG4gICAgICAgIH1cbiAgICAgICAgb3V0cHV0cy5wdXNoKG91dHB1dCk7XG4gICAgICAgIG91dHB1dEFtb3VudCA9IHR4RGF0YS5hbW91bnQ7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSBUcmFuc2FjdGlvblR5cGUuVHJhbnNmZXJPZmZlcldpdGhkcmF3bjpcbiAgICAgIGNhc2UgVHJhbnNhY3Rpb25UeXBlLkFsbG9jYXRpb25BbGxvY2F0ZVdpdGhkcmF3bjoge1xuICAgICAgICBjb25zdCB0eERhdGEgPSB0aGlzLnRvSnNvbigpO1xuICAgICAgICBjb25zdCBpbnB1dDogSVRyYW5zYWN0aW9uUmVjaXBpZW50ID0ge1xuICAgICAgICAgIGFkZHJlc3M6IHR4RGF0YS5yZWNlaXZlcixcbiAgICAgICAgICBhbW91bnQ6IHR4RGF0YS5hbW91bnQsXG4gICAgICAgIH07XG4gICAgICAgIGlmICh0eERhdGEudG9rZW4pIHtcbiAgICAgICAgICBpbnB1dC50b2tlbk5hbWUgPSB0eERhdGEudG9rZW47XG4gICAgICAgIH1cbiAgICAgICAgaW5wdXRzLnB1c2goaW5wdXQpO1xuICAgICAgICBpbnB1dEFtb3VudCA9IHR4RGF0YS5hbW91bnQ7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSBUcmFuc2FjdGlvblR5cGUuQ2FudG9uQ29tbWFuZDoge1xuICAgICAgICBjb25zdCBjb21tYW5kU3VtbWFyeSA9IHRoaXMuYnVpbGRDYW50b25Db21tYW5kU3VtbWFyeSgpO1xuICAgICAgICBjb25zdCBleHBsYW5hdGlvbjogVHJhbnNhY3Rpb25FeHBsYW5hdGlvbiA9IHtcbiAgICAgICAgICBpZDogdGhpcy5pZCxcbiAgICAgICAgICBkaXNwbGF5T3JkZXIsXG4gICAgICAgICAgb3V0cHV0czogb3V0cHV0cyxcbiAgICAgICAgICBvdXRwdXRBbW91bnQ6IG91dHB1dEFtb3VudCxcbiAgICAgICAgICBpbnB1dHM6IGlucHV0cyxcbiAgICAgICAgICBpbnB1dEFtb3VudDogaW5wdXRBbW91bnQsXG4gICAgICAgICAgY2hhbmdlT3V0cHV0czogW10sXG4gICAgICAgICAgY2hhbmdlQW1vdW50OiAnMCcsXG4gICAgICAgICAgZmVlOiB7IGZlZTogJzAnIH0sXG4gICAgICAgICAgdHlwZTogdGhpcy50eXBlLFxuICAgICAgICB9O1xuICAgICAgICBpZiAoY29tbWFuZFN1bW1hcnkpIHtcbiAgICAgICAgICBleHBsYW5hdGlvbi5jYW50b25Db21tYW5kID0gY29tbWFuZFN1bW1hcnk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGV4cGxhbmF0aW9uO1xuICAgICAgfVxuICAgICAgY2FzZSBUcmFuc2FjdGlvblR5cGUuRW5kSW52ZXN0b3JPbmJvYXJkaW5nT2ZmZXI6IHtcbiAgICAgICAgLy8gTm9uLXNpZ25hYmxlIG5vdGlmaWNhdGlvbiByZWNvcmQg4oCUIG5vIGlucHV0cywgb3V0cHV0cywgb3IgYW1vdW50cyB0byBleHBsYWluLlxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIGlkOiB0aGlzLmlkLFxuICAgICAgICAgIGRpc3BsYXlPcmRlcixcbiAgICAgICAgICBvdXRwdXRzOiBbXSxcbiAgICAgICAgICBvdXRwdXRBbW91bnQ6ICcwJyxcbiAgICAgICAgICBpbnB1dHM6IFtdLFxuICAgICAgICAgIGlucHV0QW1vdW50OiAnMCcsXG4gICAgICAgICAgY2hhbmdlT3V0cHV0czogW10sXG4gICAgICAgICAgY2hhbmdlQW1vdW50OiAnMCcsXG4gICAgICAgICAgZmVlOiB7IGZlZTogJzAnIH0sXG4gICAgICAgICAgdHlwZTogdGhpcy50eXBlLFxuICAgICAgICB9O1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4ge1xuICAgICAgaWQ6IHRoaXMuaWQsXG4gICAgICBkaXNwbGF5T3JkZXIsXG4gICAgICBvdXRwdXRzOiBvdXRwdXRzLFxuICAgICAgb3V0cHV0QW1vdW50OiBvdXRwdXRBbW91bnQsXG4gICAgICBpbnB1dHM6IGlucHV0cyxcbiAgICAgIGlucHV0QW1vdW50OiBpbnB1dEFtb3VudCxcbiAgICAgIGNoYW5nZU91dHB1dHM6IFtdLFxuICAgICAgY2hhbmdlQW1vdW50OiAnMCcsXG4gICAgICBmZWU6IHsgZmVlOiAnMCcgfSxcbiAgICAgIHR5cGU6IHRoaXMudHlwZSxcbiAgICB9O1xuICB9XG5cbiAgcHJpdmF0ZSBidWlsZENhbnRvbkNvbW1hbmRTdW1tYXJ5KCk6IENhbnRvbkNvbW1hbmRFeHBsYWluIHwgdW5kZWZpbmVkIHtcbiAgICBjb25zdCByYXdQcmVwYXJlZCA9IHRoaXMuX3ByZXBhcmVDb21tYW5kPy5wcmVwYXJlZFRyYW5zYWN0aW9uO1xuICAgIGlmICghcmF3UHJlcGFyZWQpIHtcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuICAgIHRyeSB7XG4gICAgICBjb25zdCBpbmZvID0gdXRpbHMuZXh0cmFjdENhbnRvbkNvbW1hbmRJbmZvKHJhd1ByZXBhcmVkKTtcbiAgICAgIGNvbnN0IHRlbXBsYXRlSWRTdHIgPSBgJHtpbmZvLnRlbXBsYXRlSWQucGFja2FnZUlkfToke2luZm8udGVtcGxhdGVJZC5tb2R1bGVOYW1lfToke2luZm8udGVtcGxhdGVJZC5lbnRpdHlOYW1lfWA7XG4gICAgICBjb25zdCBzdW1tYXJ5OiBDYW50b25Db21tYW5kRXhwbGFpbiA9IHtcbiAgICAgICAga2luZDogaW5mby5raW5kLFxuICAgICAgICB0ZW1wbGF0ZUlkOiB0ZW1wbGF0ZUlkU3RyLFxuICAgICAgICBhY3RBczogdGhpcy5fY2FudG9uQ29tbWFuZEFjdEFzID8/IFtdLFxuICAgICAgfTtcbiAgICAgIGlmIChpbmZvLmNob2ljZSAhPT0gdW5kZWZpbmVkKSBzdW1tYXJ5LmNob2ljZSA9IGluZm8uY2hvaWNlO1xuICAgICAgaWYgKGluZm8uY29udHJhY3RJZCAhPT0gdW5kZWZpbmVkICYmIGluZm8uY29udHJhY3RJZCAhPT0gJycpIHN1bW1hcnkuY29udHJhY3RJZCA9IGluZm8uY29udHJhY3RJZDtcbiAgICAgIHJldHVybiBzdW1tYXJ5O1xuICAgIH0gY2F0Y2gge1xuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
|