@bitgo/sdk-coin-canton 1.25.1 → 1.27.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (38) hide show
  1. package/dist/src/canton.d.ts.map +1 -1
  2. package/dist/src/canton.js +37 -3
  3. package/dist/src/lib/allocationAllocateBuilder.d.ts +1 -1
  4. package/dist/src/lib/allocationAllocateBuilder.d.ts.map +1 -1
  5. package/dist/src/lib/allocationAllocateBuilder.js +5 -5
  6. package/dist/src/lib/allocationAllocateWithdrawnBuilder.d.ts +67 -0
  7. package/dist/src/lib/allocationAllocateWithdrawnBuilder.d.ts.map +1 -0
  8. package/dist/src/lib/allocationAllocateWithdrawnBuilder.js +130 -0
  9. package/dist/src/lib/allocationRejectBuilder.d.ts +51 -0
  10. package/dist/src/lib/allocationRejectBuilder.d.ts.map +1 -0
  11. package/dist/src/lib/allocationRejectBuilder.js +107 -0
  12. package/dist/src/lib/allocationRequestBuilder.d.ts +1 -1
  13. package/dist/src/lib/allocationRequestBuilder.d.ts.map +1 -1
  14. package/dist/src/lib/allocationRequestBuilder.js +7 -5
  15. package/dist/src/lib/iface.d.ts +5 -2
  16. package/dist/src/lib/iface.d.ts.map +1 -1
  17. package/dist/src/lib/iface.js +1 -1
  18. package/dist/src/lib/index.d.ts +2 -0
  19. package/dist/src/lib/index.d.ts.map +1 -1
  20. package/dist/src/lib/index.js +6 -2
  21. package/dist/src/lib/transactionBuilderFactory.d.ts +4 -0
  22. package/dist/src/lib/transactionBuilderFactory.d.ts.map +1 -1
  23. package/dist/src/lib/transactionBuilderFactory.js +15 -1
  24. package/dist/src/lib/utils.d.ts.map +1 -1
  25. package/dist/src/lib/utils.js +68 -1
  26. package/dist/test/resources.d.ts +17 -0
  27. package/dist/test/resources.d.ts.map +1 -1
  28. package/dist/test/resources.js +19 -2
  29. package/dist/test/unit/builder/allocationAllocate/allocationAllocateBuilder.js +20 -1
  30. package/dist/test/unit/builder/allocationAllocateWithdrawn/allocationAllocateWithdrawnBuilder.d.ts +2 -0
  31. package/dist/test/unit/builder/allocationAllocateWithdrawn/allocationAllocateWithdrawnBuilder.d.ts.map +1 -0
  32. package/dist/test/unit/builder/allocationAllocateWithdrawn/allocationAllocateWithdrawnBuilder.js +133 -0
  33. package/dist/test/unit/builder/allocationReject/allocationRejectBuilder.d.ts +2 -0
  34. package/dist/test/unit/builder/allocationReject/allocationRejectBuilder.d.ts.map +1 -0
  35. package/dist/test/unit/builder/allocationReject/allocationRejectBuilder.js +121 -0
  36. package/dist/test/unit/builder/allocationRequest/allocationRequestBuilder.js +22 -1
  37. package/dist/tsconfig.tsbuildinfo +1 -1
  38. package/package.json +6 -6
@@ -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,iBAAiB,CAAC;AAEzB,OAAO,EAAE,QAAQ,IAAI,eAAe,EAAS,MAAM,gBAAgB,CAAC;AAOpE,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;IA6F3E,OAAO,CAAC,8BAA8B;IAoItC,OAAO,CAAC,iBAAiB;IAWzB,kBAAkB;IACZ,eAAe,CAAC,MAAM,EAAE,uBAAuB,GAAG,OAAO,CAAC,OAAO,CAAC;IAqBxE,kBAAkB;IAClB,gBAAgB,CAAC,MAAM,EAAE,uBAAuB,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAI7E,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;CAc3G"}
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,iBAAiB,CAAC;AAEzB,OAAO,EAAE,QAAQ,IAAI,eAAe,EAAS,MAAM,gBAAgB,CAAC;AAOpE,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;IA6F3E,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"}
@@ -261,8 +261,18 @@ class Canton extends sdk_core_1.BaseCoin {
261
261
  return addressPart === rootAddress;
262
262
  }
263
263
  /** @inheritDoc */
264
- parseTransaction(params) {
265
- throw new Error('Method not implemented.');
264
+ async parseTransaction(params) {
265
+ const txHex = params.txHex;
266
+ if (!txHex) {
267
+ // Message-only signing requests (e.g. CANTON_SIGN_TRANSACTION, CANTON_SIGN_TOPOLOGY)
268
+ // have no transaction hex to parse — return an empty result.
269
+ return {};
270
+ }
271
+ const transactionExplanation = await this.explainTransaction({ txHex });
272
+ if (!transactionExplanation) {
273
+ throw new Error('Invalid transaction');
274
+ }
275
+ return transactionExplanation;
266
276
  }
267
277
  /** @inheritDoc */
268
278
  generateKeyPair(seed) {
@@ -336,7 +346,31 @@ class Canton extends sdk_core_1.BaseCoin {
336
346
  if (params.cantonCommandParams) {
337
347
  intent.cantonCommandParams = params.cantonCommandParams;
338
348
  }
349
+ if (params.endInvestorPartyId) {
350
+ intent.endInvestorPartyId = params.endInvestorPartyId;
351
+ }
352
+ if (params.reason) {
353
+ intent.reason = params.reason;
354
+ }
355
+ if (params.operator) {
356
+ intent.operator = params.operator;
357
+ }
358
+ if (params.provider) {
359
+ intent.provider = params.provider;
360
+ }
361
+ if (params.compliance) {
362
+ intent.compliance = params.compliance;
363
+ }
364
+ if (params.registrar) {
365
+ intent.registrar = params.registrar;
366
+ }
367
+ if (params.clientOnboarder) {
368
+ intent.clientOnboarder = params.clientOnboarder;
369
+ }
370
+ if (params.expirationIso) {
371
+ intent.expirationIso = params.expirationIso;
372
+ }
339
373
  }
340
374
  }
341
375
  exports.Canton = Canton;
342
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FudG9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NhbnRvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSw4Q0E0QnlCO0FBQ3pCLG9EQUEwRDtBQUMxRCw0Q0FBb0U7QUFDcEUsK0JBQWtEO0FBQ2xELDJDQUF5RDtBQUd6RCx3REFBZ0M7QUFjaEMsTUFBYSxNQUFPLFNBQVEsbUJBQVE7SUFHbEMsWUFBc0IsS0FBZ0IsRUFBRSxXQUF1QztRQUM3RSxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7UUFFYixJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7WUFDakIsTUFBTSxJQUFJLEtBQUssQ0FBQyxvREFBb0QsQ0FBQyxDQUFDO1FBQ3hFLENBQUM7UUFFRCxJQUFJLENBQUMsWUFBWSxHQUFHLFdBQVcsQ0FBQztJQUNsQyxDQUFDO0lBRUQsTUFBTSxDQUFDLGNBQWMsQ0FBQyxLQUFnQixFQUFFLFdBQXVDO1FBQzdFLE9BQU8sSUFBSSxNQUFNLENBQUMsS0FBSyxFQUFFLFdBQVcsQ0FBQyxDQUFDO0lBQ3hDLENBQUM7SUFFTyxVQUFVO1FBQ2hCLE9BQU8sSUFBSSwrQkFBeUIsQ0FBQyxlQUFLLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDbkUsQ0FBQztJQUVELGtCQUFrQjtJQUNYLGFBQWE7UUFDbEIsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQsa0JBQWtCO0lBQ1gsUUFBUTtRQUNiLE9BQU8sUUFBUSxDQUFDO0lBQ2xCLENBQUM7SUFFRCxrQkFBa0I7SUFDWCxTQUFTO1FBQ2QsT0FBTyxRQUFRLENBQUM7SUFDbEIsQ0FBQztJQUVELGtCQUFrQjtJQUNYLFdBQVc7UUFDaEIsT0FBTyxRQUFRLENBQUM7SUFDbEIsQ0FBQztJQUVELGtCQUFrQjtJQUNsQixXQUFXO1FBQ1QsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQsa0JBQWtCO0lBQ2xCLHNC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QzNCLE1BQU0sQ0FBQyxlQUFlLEdBQUcsTUFBTSxDQUFDLGVBQWUsQ0FBQztRQUNsRCxDQUFDO1FBQ0QsSUFBSSxNQUFNLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDcEIsTUFBTSxDQUFDLFFBQVEsR0FBRyxNQUFNLENBQUMsUUFBUSxDQUFDO1FBQ3BDLENBQUM7UUFDRCxJQUFJLE1BQU0sQ0FBQyxtQkFBbUIsRUFBRSxDQUFDO1lBQy9CLE1BQU0sQ0FBQyxtQkFBbUIsR0FBRyxNQUFNLENBQUMsbUJBQW1CLENBQUM7UUFDMUQsQ0FBQztJQUNILENBQUM7Q0FDRjtBQXpaRCx3QkF5WkMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBdWRpdERlY3J5cHRlZEtleVBhcmFtcyxcbiAgQmFzZUNvaW4sXG4gIEJhc2VUcmFuc2FjdGlvbixcbiAgQml0R29CYXNlLFxuICBDYW50b25Db21tYW5kLFxuICBDYW50b25Db21tYW5kUGFyYW1zLFxuICBDYW50b25DcmVhdGVDb21tYW5kLFxuICBDYW50b25FeGVyY2lzZUNvbW1hbmQsXG4gIEVERFNBTWV0aG9kcyxcbiAgZXh0cmFjdENvbW1vbktleWNoYWluLFxuICBJbnZhbGlkQWRkcmVzc0Vycm9yLFxuICBLZXlQYWlyLFxuICBNUENBbGdvcml0aG0sXG4gIE11bHRpc2lnVHlwZSxcbiAgbXVsdGlzaWdUeXBlcyxcbiAgUGFyc2VkVHJhbnNhY3Rpb24sXG4gIFBhcnNlVHJhbnNhY3Rpb25PcHRpb25zLFxuICBQb3B1bGF0ZWRJbnRlbnQsXG4gIFByZWJ1aWxkVHJhbnNhY3Rpb25XaXRoSW50ZW50T3B0aW9ucyxcbiAgU2lnbmVkVHJhbnNhY3Rpb24sXG4gIFNpZ25UcmFuc2FjdGlvbk9wdGlvbnMsXG4gIFRva2VuRW5hYmxlbWVudENvbmZpZyxcbiAgVHJhbnNhY3Rpb25FeHBsYW5hdGlvbiBhcyBCYXNlVHJhbnNhY3Rpb25FeHBsYW5hdGlvbixcbiAgVHJhbnNhY3Rpb25QYXJhbXMsXG4gIFRyYW5zYWN0aW9uVHlwZSxcbiAgVHNzVmVyaWZ5QWRkcmVzc09wdGlvbnMsXG4gIFZlcmlmeVRyYW5zYWN0aW9uT3B0aW9ucyxcbn0gZnJvbSAnQGJpdGdvL3Nkay1jb3JlJztcbmltcG9ydCB7IGF1ZGl0RWRkc2FQcml2YXRlS2V5IH0gZnJvbSAnQGJpdGdvL3Nkay1saWItbXBjJztcbmltcG9ydCB7IEJhc2VDb2luIGFzIFN0YXRpY3NCYXNlQ29pbiwgY29pbnMgfSBmcm9tICdAYml0Z28vc3RhdGljcyc7XG5pbXBvcnQgeyBUcmFuc2FjdGlvbkJ1aWxkZXJGYWN0b3J5IH0gZnJvbSAnLi9saWInO1xuaW1wb3J0IHsgS2V5UGFpciBhcyBDYW50b25LZXlQYWlyIH0gZnJvbSAnLi9saWIva2V5UGFpcic7XG5pbXBvcnQgeyBDYW50b25Db21tYW5kS2luZCwgVHhEYXRhIH0gZnJvbSAnLi9saWIvaWZhY2UnO1xuaW1wb3J0IHsgVHJhbnNhY3Rpb24gfSBmcm9tICcuL2xpYi90cmFuc2FjdGlvbi90cmFuc2FjdGlvbic7XG5pbXBvcnQgdXRpbHMgZnJvbSAnLi9saWIvdXRpbHMnO1xuXG5leHBvcnQgaW50ZXJmYWNlIFRyYW5zYWN0aW9uRXhwbGFuYXRpb24gZXh0ZW5kcyBCYXNlVHJhbnNhY3Rpb25FeHBsYW5hdGlvbiB7XG4gIHR5cGU6IFRyYW5zYWN0aW9uVHlwZTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBFeHBsYWluVHJhbnNhY3Rpb25PcHRpb25zIHtcbiAgdHhIZXg6IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBDYW50b25UcmFuc2FjdGlvblBhcmFtcyBleHRlbmRzIFRyYW5zYWN0aW9uUGFyYW1zIHtcbiAgY2FudG9uQ29tbWFuZFBhcmFtcz86IENhbnRvbkNvbW1hbmRQYXJhbXM7XG59XG5cbmV4cG9ydCBjbGFzcyBDYW50b24gZXh0ZW5kcyBCYXNlQ29pbiB7XG4gIHByb3RlY3RlZCByZWFkb25seSBfc3RhdGljc0NvaW46IFJlYWRvbmx5PFN0YXRpY3NCYXNlQ29pbj47XG5cbiAgcHJvdGVjdGVkIGNvbnN0cnVjdG9yKGJpdGdvOiBCaXRHb0Jhc2UsIHN0YXRpY3NDb2luPzogUmVhZG9ubHk8U3RhdGljc0Jhc2VDb2luPikge1xuICAgIHN1cGVyKGJpdGdvKTtcblxuICAgIGlmICghc3RhdGljc0NvaW4pIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignbWlzc2luZyByZXF1aXJlZCBjb25zdHJ1Y3RvciBwYXJhbWV0ZXIgc3RhdGljc0NvaW4nKTtcbiAgICB9XG5cbiAgICB0aGlzLl9zdGF0aWNzQ29pbiA9IHN0YXRpY3NDb2luO1xuICB9XG5cbiAgc3RhdGljIGNyZWF0ZUluc3RhbmNlKGJpdGdvOiBCaXRHb0Jhc2UsIHN0YXRpY3NDb2luPzogUmVhZG9ubHk8U3RhdGljc0Jhc2VDb2luPik6IEJhc2VDb2luIHtcbiAgICByZXR1cm4gbmV3IENhbnRvbihiaXRnbywgc3RhdGljc0NvaW4pO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRCdWlsZGVyKCk6IFRyYW5zYWN0aW9uQnVpbGRlckZhY3Rvcnkge1xuICAgIHJldHVybiBuZXcgVHJhbnNhY3Rpb25CdWlsZGVyRmFjdG9yeShjb2lucy5nZXQodGhpcy5nZXRDaGFpbigpKSk7XG4gIH1cblxuICAvKiogQGluaGVyaXREb2MgKi9cbiAgcHVibGljIGdldEJhc2VGYWN0b3IoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gMWUxMDtcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdERvYyAqL1xuICBwdWJsaWMgZ2V0Q2hhaW4oKTogc3RyaW5nIHtcbiAgICByZXR1cm4gJ2NhbnRvbic7XG4gIH1cblxuICAvKiogQGluaGVyaXREb2MgKi9cbiAgcHVibGljIGdldEZhbWlseSgpOiBzdHJpbmcge1xuICAgIHJldHVybiAnY2FudG9uJztcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdERvYyAqL1xuICBwdWJsaWMgZ2V0RnVsbE5hbWUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gJ0NhbnRvbic7XG4gIH1cblxuICAvKiogQGluaGVyaXREb2MgKi9cbiAgc3VwcG9ydHNUc3MoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICAvKiogQGluaGVyaXREb2MgKi9cbiAgc3VwcG9ydHNNZXNzYWdlU2lnbmluZygpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIC8qKiBpbmhlcml0ZWQgZG9jICovXG4gIGdldERlZmF1bHRNdWx0aXNpZ1R5cGUoKTogTXVsdGlzaWdUeXBlIHtcbiAgICByZXR1cm4gbXVsdGlzaWdUeXBlcy50c3M7XG4gIH1cblxuICAvKiogaW5oZXJpdGVkIGRvYyAqL1xuICByZXF1aXJlc1dhbGxldEluaXRpYWxpemF0aW9uVHJhbnNhY3Rpb24oKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICBnZXRNUENBbGdvcml0aG0oKTogTVBDQWxnb3JpdGhtIHtcbiAgICByZXR1cm4gJ2VkZHNhJztcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdERvYyAqL1xuICBhc3luYyB2ZXJpZnlUcmFuc2FjdGlvbihwYXJhbXM6IFZlcmlmeVRyYW5zYWN0aW9uT3B0aW9ucyk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIGNvbnN0IGNvaW5Db25maWcgPSBjb2lucy5nZXQodGhpcy5nZXRDaGFpbigpKTtcbiAgICBjb25zdCB7IHR4UHJlYnVpbGQ6IHR4UHJlYnVpbGQsIHR4UGFyYW1zIH0gPSBwYXJhbXM7XG4gICAgY29uc3QgcmF3VHggPSB0eFByZWJ1aWxkLnR4SGV4O1xuICAgIGlmICghcmF3VHgpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignbWlzc2luZyByZXF1aXJlZCB0eCBwcmVidWlsZCBwcm9wZXJ0eSB0eEhleCcpO1xuICAgIH1cbiAgICBjb25zdCB0eEJ1aWxkZXIgPSBuZXcgVHJhbnNhY3Rpb25CdWlsZGVyRmFjdG9yeShjb2luQ29uZmlnKS5mcm9tKHJhd1R4KTtcbiAgICBjb25zdCB0cmFuc2FjdGlvbiA9IHR4QnVpbGRlci50cmFuc2FjdGlvbjtcbiAgICBjb25zdCBleHBsYWluZWRUeCA9IHRyYW5zYWN0aW9uLmV4cGxhaW5UcmFuc2FjdGlvbigpO1xuICAgIHN3aXRjaCAodHJhbnNhY3Rpb24udHlwZSkge1xuICAgICAgY2FzZSBUcmFuc2FjdGlvblR5cGUuV2FsbGV0SW5pdGlhbGl6YXRpb246XG4gICAgICBjYXNlIFRyYW5zYWN0aW9uVHlwZS5UcmFuc2ZlckFjY2VwdDpcbiAgICAgIGNhc2UgVHJhbnNhY3Rpb25UeXBlLlRyYW5zZmVyUmVqZWN0OlxuICAgICAgY2FzZSBUcmFuc2FjdGlvblR5cGUuVHJhbnNmZXJBY2tub3dsZWRnZTpcbiAgICAgIGNhc2UgVHJhbnNhY3Rpb25UeXBlLlRyYW5zZmVyT2ZmZXJXaXRoZHJhd246XG4gICAgICBjYXNlIFRyYW5zYWN0aW9uVHlwZS5Db3NpZ25EZWxlZ2F0aW9uQWNjZXB0OlxuICAgICAgY2FzZSBUcmFuc2FjdGlvblR5cGUuQ29zaWduRGVsZWdhdGlvblByb3Bvc2FsOlxuICAgICAgY2FzZSBUcmFuc2FjdGlvblR5cGUuQWxsb2NhdGlvbkFsbG9jYXRlOlxuICAgICAgY2FzZSBUcmFuc2FjdGlvblR5cGUuQWxsb2NhdGlvblJlcXVlc3Q6XG4gICAgICAgIC8vIFRoZXJlIGlzIG5vIHJlY2lwaWVudCBpbmZvIHRvIHZlcmlmeSBmb3IgdGhlc2UgdHJhbnNhY3Rpb24gdHlwZXMsIHNvIGFsd2F5cyByZXR1cm4gdHJ1ZS5cbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICBjYXNlIFRyYW5zYWN0aW9uVHlwZS5DYW50b25Db21tYW5kOlxuICAgICAgICByZXR1cm4gdGhpcy52ZXJpZnlDYW50b25Db21tYW5kVHJhbnNhY3Rpb24oXG4gICAgICAgICAgdHJhbnNhY3Rpb24sXG4gICAgICAgICAgKHR4UGFyYW1zIGFzIENhbnRvblRyYW5zYWN0aW9uUGFyYW1zKS5jYW50b25Db21tYW5kUGFyYW1zXG4gICAgICAgICk7XG4gICAgICBjYXNlIFRyYW5zYWN0aW9uVHlwZS5PbmVTdGVwUHJlQXBwcm92YWw6XG4gICAgICAgIC8vIENhbnRvbiBpcyBhbHdheXMgYSBUU1Mgd2FsbGV0LiBUaGUgU0RLJ3MgYnVpbGRUb2tlbkVuYWJsZW1lbnRzIHBhc3NlcyBlbmFibGVUb2tlbnNcbiAgICAgICAgLy8gdGhyb3VnaCB1bmNoYW5nZWQgZm9yIFRTUyB3YWxsZXRzIChubyBjb252ZXJzaW9uIHRvIHJlY2lwaWVudHMpLCBzbyB0eFBhcmFtcy5lbmFibGVUb2tlbnNcbiAgICAgICAgLy8gaXMgdGhlIG9ubHkgc291cmNlIG9mIHVzZXIgaW50ZW50IGhlcmUuXG4gICAgICAgIC8vXG4gICAgICAgIC8vIFJlY2VpdmVyIHZhbGlkYXRpb246IHRoZSByZWNlaXZlciBvZiBhIE9uZVN0ZXBQcmVBcHByb3ZhbCBpcyBhbHdheXMgdGhlIHdhbGxldCdzIHJvb3QgYWRkcmVzcy5cbiAgICAgICAgLy8gV2UgdXNlIGVuYWJsZVRva2VuLmFkZHJlc3MgaWYgZXhwbGljaXRseSBwcm92aWRlZCwgb3RoZXJ3aXNlIGZhbGwgYmFjayB0b1xuICAgICAgICAvLyB3YWxsZXQuY29pblNwZWNpZmljKCkucm9vdEFkZHJlc3MgKHRoZSBDYW50b24gcGFydHkgSUQgc3RvcmVkIGF0IHdhbGxldCBjcmVhdGlvbiB0aW1lKS5cbiAgICAgICAgLy8gVG9rZW4gbmFtZSB2YWxpZGF0aW9uOiBjaGVja2VkIHdoZW4gdGhlIHRva2VuIGlzIHJlc29sdmFibGUgZnJvbSBzdGF0aWNzLlxuICAgICAgICBpZiAoXG4gICAgICAgICAgdHhQYXJhbXMudHlwZSA9PT0gJ2VuYWJsZXRva2VuJyAmJlxuICAgICAgICAgIHR4UGFyYW1zLmVuYWJsZVRva2VucyAhPT0gdW5kZWZpbmVkICYmXG4gICAgICAgICAgdHhQYXJhbXMuZW5hYmxlVG9rZW5zLmxlbmd0aCA+IDBcbiAgICAgICAgKSB7XG4gICAgICAgICAgY29uc3QgdHhEYXRhID0gdHJhbnNhY3Rpb24udG9Kc29uKCkgYXMgVHhEYXRhO1xuICAgICAgICAgIGNvbnN0IGVuYWJsZVRva2VuID0gdHhQYXJhbXMuZW5hYmxlVG9rZW5zWzBdO1xuICAgICAgICAgIGNvbnN0IHdhbGxldFJvb3RBZGRyZXNzID0gcGFyYW1zLndhbGxldD8uY29pblNwZWNpZmljPy4oKT8ucm9vdEFkZHJlc3M7XG4gICAgICAgICAgY29uc3QgZXhwZWN0ZWRSZWNlaXZlciA9IGVuYWJsZVRva2VuLmFkZHJlc3MgPz8gd2FsbGV0Um9vdEFkZHJlc3M7XG4gICAgICAgICAgaWYgKGV4cGVjdGVkUmVjZWl2ZXIpIHtcbiAgICAgICAgICAgIC8vIFN0cmlwID9tZW1vSWQgc3VmZml4IGlmIHByZXNlbnQgaW4gdGhlIHN0b3JlZCBhZGRyZXNzXG4gICAgICAgICAgICBjb25zdCBbZXhwZWN0ZWRSZWNlaXZlckJhc2VdID0gZXhwZWN0ZWRSZWNlaXZlci5zcGxpdCgnP21lbW9JZD0nKTtcbiAgICAgICAgICAgIGlmICh0eERhdGEucmVjZWl2ZXIgIT09IGV4cGVjdGVkUmVjZWl2ZXJCYXNlKSB7XG4gICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICAgICAgICBgT25lU3RlcFByZUFwcHJvdmFsIHJlY2VpdmVyIG1pc21hdGNoOiBleHBlY3RlZCAnJHtleHBlY3RlZFJlY2VpdmVyQmFzZX0nLCBnb3QgJyR7dHhEYXRhLnJlY2VpdmVyfSdgXG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmICh0eERhdGEudG9rZW4gIT09IHVuZGVmaW5lZCAmJiB0eERhdGEudG9rZW4gIT09IGVuYWJsZVRva2VuLm5hbWUpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICAgICAgYE9uZVN0ZXBQcmVBcHByb3ZhbCB0b2tlbiBuYW1lIG1pc21hdGNoOiBleHBlY3RlZCAnJHtlbmFibGVUb2tlbi5uYW1lfScsIGdvdCAnJHt0eERhdGEudG9rZW59J2BcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgY2FzZSBUcmFuc2FjdGlvblR5cGUuU2VuZDpcbiAgICAgICAgaWYgKHR4UGFyYW1zLnJlY2lwaWVudHMgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIGNvbnN0IGZpbHRlcmVkUmVjaXBpZW50cyA9IHR4UGFyYW1zLnJlY2lwaWVudHM/Lm1hcCgocmVjaXBpZW50KSA9PiB7XG4gICAgICAgICAgICBjb25zdCB7IGFkZHJlc3MsIGFtb3VudCwgdG9rZW5OYW1lIH0gPSByZWNpcGllbnQ7XG4gICAgICAgICAgICBjb25zdCBbYWRkcmVzc1BhcnQsIG1lbW9JZF0gPSBhZGRyZXNzLnNwbGl0KCc/bWVtb0lkPScpO1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgYWRkcmVzczogYWRkcmVzc1BhcnQsXG4gICAgICAgICAgICAgIGFtb3VudCxcbiAgICAgICAgICAgICAgLi4uKG1lbW9JZCAmJiB7IG1lbW86IG1lbW9JZCB9KSxcbiAgICAgICAgICAgICAgLi4uKHRva2VuTmFtZSAmJiB7IHRva2VuTmFtZSB9KSxcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgfSk7XG4gICAgICAgICAgY29uc3QgZmlsdGVyZWRPdXRwdXRzID0gZXhwbGFpbmVkVHgub3V0cHV0cz8ubWFwKChvdXRwdXQpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHsgYWRkcmVzcywgYW1vdW50LCB0b2tlbk5hbWUsIG1lbW8gfSA9IG91dHB1dDtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgIGFkZHJlc3MsXG4gICAgICAgICAgICAgIGFtb3VudCxcbiAgICAgICAgICAgICAgLi4uKG1lbW8gJiYgeyBtZW1vIH0pLFxuICAgICAgICAgICAgICAuLi4odG9rZW5OYW1lICYmIHsgdG9rZW5OYW1lIH0pLFxuICAgICAgICAgICAgfTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgICBpZiAoSlNPTi5zdHJpbmdpZnkoZmlsdGVyZWRSZWNpcGllbnRzKSAhPT0gSlNPTi5zdHJpbmdpZnkoZmlsdGVyZWRPdXRwdXRzKSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdUeCBvdXRwdXRzIGRvIG5vdCBtYXRjaCB3aXRoIGV4cGVjdGVkIHR4UGFyYW1zIHJlY2lwaWVudHMnKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgdW5rbm93biB0cmFuc2FjdGlvbiB0eXBlLCAke3RyYW5zYWN0aW9uLnR5cGV9YCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSB2ZXJpZnlDYW50b25Db21tYW5kVHJhbnNhY3Rpb24oXG4gICAgdHJhbnNhY3Rpb246IEJhc2VUcmFuc2FjdGlvbixcbiAgICB1c2VyUGFyYW1zOiBDYW50b25Db21tYW5kUGFyYW1zIHwgdW5kZWZpbmVkXG4gICk6IGJvb2xlYW4ge1xuICAgIGlmICghdXNlclBhcmFtcykge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgY29uc3QgY2FudG9uVHggPSB0cmFuc2FjdGlvbiBhcyBUcmFuc2FjdGlvbjtcbiAgICBjb25zdCByYXdQcmVwYXJlZCA9IGNhbnRvblR4LnByZXBhcmVDb21tYW5kPy5wcmVwYXJlZFRyYW5zYWN0aW9uO1xuICAgIGlmICghcmF3UHJlcGFyZWQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignQ2FudG9uQ29tbWFuZCB2ZXJpZnlUcmFuc2FjdGlvbjogbWlzc2luZyBwcmVwYXJlZFRyYW5zYWN0aW9uIHByb3RvYnVmIG9uIHR4IHByZWJ1aWxkJyk7XG4gICAgfVxuXG4gICAgY29uc3QgZGVjb2RlZENvbW1hbmQgPSB1dGlscy5leHRyYWN0Q2FudG9uQ29tbWFuZEluZm8ocmF3UHJlcGFyZWQpO1xuICAgIGNvbnN0IHVzZXJDb21tYW5kID0gdXNlclBhcmFtcy5jb21tYW5kIGFzIFBhcnRpYWw8Q2FudG9uQ29tbWFuZD47XG5cbiAgICAvLyBJbnB1dCBzaGFwZSBpcyBlbmZvcmNlZCBieSBtcGNVdGlscyBhdCBidWlsZCB0aW1lOyBoZXJlIHdlIHJlc29sdmUgd2hpY2ggYnJhbmNoIGlzIHByZXNlbnQuXG4gICAgY29uc3QgaGFzQ3JlYXRlID0gJ0NyZWF0ZUNvbW1hbmQnIGluIHVzZXJDb21tYW5kICYmIHV0aWxzLmlzUGxhaW5PYmplY3QodXNlckNvbW1hbmQuQ3JlYXRlQ29tbWFuZCk7XG4gICAgY29uc3QgaGFzRXhlcmNpc2UgPSAnRXhlcmNpc2VDb21tYW5kJyBpbiB1c2VyQ29tbWFuZCAmJiB1dGlscy5pc1BsYWluT2JqZWN0KHVzZXJDb21tYW5kLkV4ZXJjaXNlQ29tbWFuZCk7XG4gICAgaWYgKCFoYXNDcmVhdGUgJiYgIWhhc0V4ZXJjaXNlKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgIGBDYW50b25Db21tYW5kIHZlcmlmeVRyYW5zYWN0aW9uOiBjb21tYW5kIG11c3QgY29udGFpbiBhIENyZWF0ZUNvbW1hbmQgb3IgRXhlcmNpc2VDb21tYW5kIHdyYXBwZXJgXG4gICAgICApO1xuICAgIH1cbiAgICBpZiAoaGFzQ3JlYXRlICYmIGhhc0V4ZXJjaXNlKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgIGBDYW50b25Db21tYW5kIHZlcmlmeVRyYW5zYWN0aW9uOiBjb21tYW5kIG11c3QgY29udGFpbiBleGFjdGx5IG9uZSBvZiBDcmVhdGVDb21tYW5kIG9yIEV4ZXJjaXNlQ29tbWFuZCwgbm90IGJvdGhgXG4gICAgICApO1xuICAgIH1cbiAgICBjb25zdCB1c2VyS2luZDogQ2FudG9uQ29tbWFuZEtpbmQgPSBoYXNDcmVhdGUgPyAnQ3JlYXRlQ29tbWFuZCcgOiAnRXhlcmNpc2VDb21tYW5kJztcbiAgICBpZiAoZGVjb2RlZENvbW1hbmQua2luZCAhPT0gdXNlcktpbmQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgYENhbnRvbkNvbW1hbmQgdmVyaWZ5VHJhbnNhY3Rpb246IGNvbW1hbmQga2luZCBtaXNtYXRjaCDigJQgZXhwZWN0ZWQgJHt1c2VyS2luZH0sIGdvdCAke2RlY29kZWRDb21tYW5kLmtpbmR9YFxuICAgICAgKTtcbiAgICB9XG5cbiAgICBjb25zdCB1c2VySW5uZXIgPVxuICAgICAgdXNlcktpbmQgPT09ICdDcmVhdGVDb21tYW5kJ1xuICAgICAgICA/ICh1c2VyQ29tbWFuZCBhcyBDYW50b25DcmVhdGVDb21tYW5kKS5DcmVhdGVDb21tYW5kXG4gICAgICAgIDogKHVzZXJDb21tYW5kIGFzIENhbnRvbkV4ZXJjaXNlQ29tbWFuZCkuRXhlcmNpc2VDb21tYW5kO1xuXG4gICAgaWYgKCF1c2VySW5uZXI/LnRlbXBsYXRlSWQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgQ2FudG9uQ29tbWFuZCB2ZXJpZnlUcmFuc2FjdGlvbjogJHt1c2VyS2luZH0udGVtcGxhdGVJZCBtdXN0IGJlIGEgbm9uLWVtcHR5IHN0cmluZ2ApO1xuICAgIH1cblxuICAgIC8vIHRlbXBsYXRlSWQgKG1vZHVsZU5hbWUgKyBlbnRpdHlOYW1lOyBwYWNrYWdlIGlkIGlzIG11dGFibGUsIHNvIGlnbm9yZWQpXG4gICAgY29uc3QgcGFyc2VkID0gdXRpbHMucGFyc2VDYW50b25UZW1wbGF0ZUlkKHVzZXJJbm5lci50ZW1wbGF0ZUlkKTtcbiAgICBpZiAoIXBhcnNlZCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICBgQ2FudG9uQ29tbWFuZCB2ZXJpZnlUcmFuc2FjdGlvbjogaW52YWxpZCB1c2VyIHRlbXBsYXRlSWQgJyR7dXNlcklubmVyLnRlbXBsYXRlSWR9JyDigJQgZXhwZWN0ZWQgZm9ybWF0ICdQa2c6TW9kdWxlOkVudGl0eSdgXG4gICAgICApO1xuICAgIH1cbiAgICBpZiAoXG4gICAgICBkZWNvZGVkQ29tbWFuZC50ZW1wbGF0ZUlkLm1vZHVsZU5hbWUgIT09IHBhcnNlZC5tb2R1bGVOYW1lIHx8XG4gICAgICBkZWNvZGVkQ29tbWFuZC50ZW1wbGF0ZUlkLmVudGl0eU5hbWUgIT09IHBhcnNlZC5lbnRpdHlOYW1lXG4gICAgKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgIGBDYW50b25Db21tYW5kIHZlcmlmeVRyYW5zYWN0aW9uOiB0ZW1wbGF0ZUlkIG1pc21hdGNoIOKAlCBleHBlY3RlZCAnJHtwYXJzZWQubW9kdWxlTmFtZX06JHtwYXJzZWQuZW50aXR5TmFtZX0nLCBnb3QgJyR7ZGVjb2RlZENvbW1hbmQudGVtcGxhdGVJZC5tb2R1bGVOYW1lfToke2RlY29kZWRDb21tYW5kLnRlbXBsYXRlSWQuZW50aXR5TmFtZX0nYFxuICAgICAgKTtcbiAgICB9XG5cbiAgICAvLyBCdWlsZCB0aGUgaW5qZWN0LWFzIHNraXAgc2V0IG9uY2UgZm9yIHVzZSBhY3Jvc3MgdGhlIGNvbnRyYWN0SWQgYW5kIGFyZ3VtZW50IGNoZWNrc1xuICAgIGNvbnN0IHNraXBQYXRocyA9IHV0aWxzLm5vcm1hbGl6ZUluamVjdEFzKHVzZXJQYXJhbXMucmVzb2x2ZUNvbnRyYWN0cyk7XG5cbiAgICAvLyBtZXRhZGF0YS5zdWJtaXR0ZXJJbmZvLmFjdEFzIG11c3QgY29udGFpbiBleGFjdGx5IHRoZSBzYW1lIHBhcnRpZXMgYXMgdGhlIHVzZXIncyBhY3RBc1xuICAgIGlmICghQXJyYXkuaXNBcnJheSh1c2VyUGFyYW1zLmFjdEFzKSB8fCB1c2VyUGFyYW1zLmFjdEFzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBDYW50b25Db21tYW5kIHZlcmlmeVRyYW5zYWN0aW9uOiBhY3RBcyBtdXN0IGJlIGEgbm9uLWVtcHR5IGFycmF5IG9mIHBhcnR5IElEc2ApO1xuICAgIH1cbiAgICBpZiAoIXVzZXJQYXJhbXMuYWN0QXMuZXZlcnkoKHApID0+IHR5cGVvZiBwID09PSAnc3RyaW5nJyAmJiBwLnRyaW0oKSAhPT0gJycpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYENhbnRvbkNvbW1hbmQgdmVyaWZ5VHJhbnNhY3Rpb246IGFsbCBhY3RBcyBlbnRyaWVzIG11c3QgYmUgbm9uLWVtcHR5IHN0cmluZ3NgKTtcbiAgICB9XG4gICAgY29uc3Qgc3VibWl0dGVyQWN0QXMgPSBjYW50b25UeC5jYW50b25Db21tYW5kQWN0QXNQYXJ0aWVzID8/IFtdO1xuICAgIGlmICghdXRpbHMuc2FtZUVsZW1lbnRzKHN1Ym1pdHRlckFjdEFzLCB1c2VyUGFyYW1zLmFjdEFzKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICBgQ2FudG9uQ29tbWFuZCB2ZXJpZnlUcmFuc2FjdGlvbjogc3VibWl0dGVySW5mby5hY3RBcyBbJHtzdWJtaXR0ZXJBY3RBcy5qb2luKFxuICAgICAgICAgICcsICdcbiAgICAgICAgKX1dIGRvZXMgbm90IG1hdGNoIHVzZXIgYWN0QXMgWyR7dXNlclBhcmFtcy5hY3RBcy5qb2luKCcsICcpfV1gXG4gICAgICApO1xuICAgIH1cblxuICAgIGlmICh1c2VyS2luZCA9PT0gJ0V4ZXJjaXNlQ29tbWFuZCcpIHtcbiAgICAgIGNvbnN0IGV4ZXJjaXNlSW5uZXIgPSB1c2VySW5uZXIgYXMgQ2FudG9uRXhlcmNpc2VDb21tYW5kWydFeGVyY2lzZUNvbW1hbmQnXTtcblxuICAgICAgLy8gY2hvaWNlIGlkXG4gICAgICBpZiAoZGVjb2RlZENvbW1hbmQuY2hvaWNlICE9PSBleGVyY2lzZUlubmVyLmNob2ljZSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgYENhbnRvbkNvbW1hbmQgdmVyaWZ5VHJhbnNhY3Rpb246IGNob2ljZSBtaXNtYXRjaCDigJQgZXhwZWN0ZWQgJyR7ZXhlcmNpc2VJbm5lci5jaG9pY2V9JywgZ290ICcke1xuICAgICAgICAgICAgZGVjb2RlZENvbW1hbmQuY2hvaWNlID8/ICcnXG4gICAgICAgICAgfSdgXG4gICAgICAgICk7XG4gICAgICB9XG5cbiAgICAgIC8vIGV2ZXJ5IG9uLWNoYWluIGFjdGluZ1BhcnR5IG11c3QgYmUgaW4gdGhlIHVzZXIncyBhY3RBcyAocHJldmVudHMgcHJpdmlsZWdlIGVzY2FsYXRpb24pXG4gICAgICBjb25zdCBvbkNoYWluQWN0b3JzID0gZGVjb2RlZENvbW1hbmQuYWN0aW5nUGFydGllcyA/PyBbXTtcbiAgICAgIGZvciAoY29uc3QgYWN0b3Igb2Ygb25DaGFpbkFjdG9ycykge1xuICAgICAgICBpZiAoIXVzZXJQYXJhbXMuYWN0QXMuaW5jbHVkZXMoYWN0b3IpKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgICAgYENhbnRvbkNvbW1hbmQgdmVyaWZ5VHJhbnNhY3Rpb246IHVuYXV0aG9yaXplZCBhY3RpbmcgcGFydHkgJyR7YWN0b3J9JyBvbiByb290IGV4ZXJjaXNlIChub3QgaW4gdXNlciBhY3RBcylgXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAvLyBjb250cmFjdElkIOKAlCBza2lwIHdoZW4gYWJzZW50L2VtcHR5IG9yIHdoZW4gSU1TIHdpbGwgaW5qZWN0IGl0IHZpYSByZXNvbHZlQ29udHJhY3RzXG4gICAgICBpZiAoXG4gICAgICAgIGV4ZXJjaXNlSW5uZXIuY29udHJhY3RJZCAhPT0gdW5kZWZpbmVkICYmXG4gICAgICAgIGV4ZXJjaXNlSW5uZXIuY29udHJhY3RJZCAhPT0gJycgJiZcbiAgICAgICAgIXNraXBQYXRocy5oYXMoJ0V4ZXJjaXNlQ29tbWFuZC5jb250cmFjdElkJylcbiAgICAgICkge1xuICAgICAgICBpZiAoZGVjb2RlZENvbW1hbmQuY29udHJhY3RJZCAhPT0gZXhlcmNpc2VJbm5lci5jb250cmFjdElkKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgICAgYENhbnRvbkNvbW1hbmQgdmVyaWZ5VHJhbnNhY3Rpb246IGNvbnRyYWN0SWQgbWlzbWF0Y2gg4oCUIGV4cGVjdGVkICcke2V4ZXJjaXNlSW5uZXIuY29udHJhY3RJZH0nLCBnb3QgJyR7XG4gICAgICAgICAgICAgIGRlY29kZWRDb21tYW5kLmNvbnRyYWN0SWQgPz8gJydcbiAgICAgICAgICAgIH0nYFxuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgLy8gZGVlcCBhcmd1bWVudCBjb21wYXJlXG4gICAgICBjb25zdCBhcmd1bWVudFNraXBQYXRocyA9IHRoaXMucmVsYXRpdmVTa2lwUGF0aHMoc2tpcFBhdGhzLCAnRXhlcmNpc2VDb21tYW5kLmNob2ljZUFyZ3VtZW50LicpO1xuICAgICAgdXRpbHMuYXNzZXJ0RGVlcENhbnRvbk1hdGNoKGV4ZXJjaXNlSW5uZXIuY2hvaWNlQXJndW1lbnQsIGRlY29kZWRDb21tYW5kLmFyZ3VtZW50LCBhcmd1bWVudFNraXBQYXRocyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IGNyZWF0ZUlubmVyID0gdXNlcklubmVyIGFzIENhbnRvbkNyZWF0ZUNvbW1hbmRbJ0NyZWF0ZUNvbW1hbmQnXTtcblxuICAgICAgLy8gZGVlcCBhcmd1bWVudCBjb21wYXJlXG4gICAgICBjb25zdCBhcmd1bWVudFNraXBQYXRocyA9IHRoaXMucmVsYXRpdmVTa2lwUGF0aHMoc2tpcFBhdGhzLCAnQ3JlYXRlQ29tbWFuZC5jcmVhdGVBcmd1bWVudHMuJyk7XG4gICAgICB1dGlscy5hc3NlcnREZWVwQ2FudG9uTWF0Y2goY3JlYXRlSW5uZXIuY3JlYXRlQXJndW1lbnRzLCBkZWNvZGVkQ29tbWFuZC5hcmd1bWVudCwgYXJndW1lbnRTa2lwUGF0aHMpO1xuICAgIH1cblxuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgcHJpdmF0ZSByZWxhdGl2ZVNraXBQYXRocyhza2lwUGF0aHM6IFNldDxzdHJpbmc+LCBwcmVmaXg6IHN0cmluZyk6IFNldDxzdHJpbmc+IHtcbiAgICBjb25zdCBvdXQgPSBuZXcgU2V0PHN0cmluZz4oKTtcbiAgICBmb3IgKGNvbnN0IHAgb2Ygc2tpcFBhdGhzKSB7XG4gICAgICBpZiAocC5zdGFydHNXaXRoKHByZWZpeCkpIHtcbiAgICAgICAgY29uc3Qgc3RyaXBwZWQgPSBwLnNsaWNlKHByZWZpeC5sZW5ndGgpO1xuICAgICAgICBpZiAoc3RyaXBwZWQpIG91dC5hZGQoc3RyaXBwZWQpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gb3V0O1xuICB9XG5cbiAgLyoqIEBpbmhlcml0RG9jICovXG4gIGFzeW5jIGlzV2FsbGV0QWRkcmVzcyhwYXJhbXM6IFRzc1ZlcmlmeUFkZHJlc3NPcHRpb25zKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgLy8gVE9ETzogcmVmYWN0b3IgdGhpcyBhbmQgdXNlIHRoZSBgdmVyaWZ5RWRkc2FNZW1vQmFzZWRXYWxsZXRBZGRyZXNzYCBvbmNlIHB1Ymxpc2hlZCBmcm9tIHNkay1jb3JlXG4gICAgLy8gaHR0cHM6Ly9iaXRnb2luYy5hdGxhc3NpYW4ubmV0L2Jyb3dzZS9DT0lOLTYzNDdcbiAgICBjb25zdCB7IGtleWNoYWlucywgYWRkcmVzczogbmV3QWRkcmVzcywgaW5kZXggfSA9IHBhcmFtcztcbiAgICBjb25zdCBbYWRkcmVzc1BhcnQsIG1lbW9JZF0gPSBuZXdBZGRyZXNzLnNwbGl0KCc/bWVtb0lkPScpO1xuICAgIGlmICghdGhpcy5pc1ZhbGlkQWRkcmVzcyhhZGRyZXNzUGFydCkpIHtcbiAgICAgIHRocm93IG5ldyBJbnZhbGlkQWRkcmVzc0Vycm9yKGBpbnZhbGlkIGFkZHJlc3M6ICR7bmV3QWRkcmVzc31gKTtcbiAgICB9XG4gICAgaWYgKG1lbW9JZCAmJiBtZW1vSWQgIT09IGAke2luZGV4fWApIHtcbiAgICAgIHRocm93IG5ldyBJbnZhbGlkQWRkcmVzc0Vycm9yKGBpbnZhbGlkIG1lbW9JZCBpbmRleDogJHttZW1vSWR9YCk7XG4gICAgfVxuICAgIGNvbnN0IGNvbW1vbktleWNoYWluID0gZXh0cmFjdENvbW1vbktleWNoYWluKGtleWNoYWlucyk7XG4gICAgY29uc3QgTVBDID0gYXdhaXQgRUREU0FNZXRob2RzLmdldEluaXRpYWxpemVkTXBjSW5zdGFuY2UoKTtcbiAgICBjb25zdCBkZXJpdmF0aW9uUGF0aCA9ICdtLzAnO1xuICAgIGNvbnN0IGRlcml2ZWRQdWJsaWNLZXkgPSBNUEMuZGVyaXZlVW5oYXJkZW5lZChjb21tb25LZXljaGFpbiwgZGVyaXZhdGlvblBhdGgpLnNsaWNlKDAsIDY0KTtcbiAgICBjb25zdCBwdWJsaWNLZXlCYXNlNjQgPSBCdWZmZXIuZnJvbShkZXJpdmVkUHVibGljS2V5LCAnaGV4JykudG9TdHJpbmcoJ2Jhc2U2NCcpO1xuICAgIGNvbnN0IHJvb3RBZGRyZXNzRmluZ2VycHJpbnQgPSB1dGlscy5nZXRBZGRyZXNzRnJvbVB1YmxpY0tleShwdWJsaWNLZXlCYXNlNjQpO1xuICAgIGNvbnN0IHJvb3RBZGRyZXNzID0gYCR7cm9vdEFkZHJlc3NGaW5nZXJwcmludC5zbGljZSgwLCA1KX06OiR7cm9vdEFkZHJlc3NGaW5nZXJwcmludH1gO1xuICAgIHJldHVybiBhZGRyZXNzUGFydCA9PT0gcm9vdEFkZHJlc3M7XG4gIH1cblxuICAvKiogQGluaGVyaXREb2MgKi9cbiAgcGFyc2VUcmFuc2FjdGlvbihwYXJhbXM6IFBhcnNlVHJhbnNhY3Rpb25PcHRpb25zKTogUHJvbWlzZTxQYXJzZWRUcmFuc2FjdGlvbj4ge1xuICAgIHRocm93IG5ldyBFcnJvcignTWV0aG9kIG5vdCBpbXBsZW1lbnRlZC4nKTtcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdERvYyAqL1xuICBnZW5lcmF0ZUtleVBhaXIoc2VlZD86IEJ1ZmZlcik6IEtleVBhaXIge1xuICAgIGNvbnN0IGtleVBhaXIgPSBzZWVkID8gbmV3IENhbnRvbktleVBhaXIoeyBzZWVkIH0pIDogbmV3IENhbnRvbktleVBhaXIoKTtcbiAgICBjb25zdCBrZXlzID0ga2V5UGFpci5nZXRLZXlzKCk7XG4gICAgaWYgKCFrZXlzLnBydikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdNaXNzaW5nIHBydiBpbiBrZXkgZ2VuZXJhdGlvbi4nKTtcbiAgICB9XG4gICAgcmV0dXJuIHtcbiAgICAgIHB1Yjoga2V5cy5wdWIsXG4gICAgICBwcnY6IGtleXMucHJ2LFxuICAgIH07XG4gIH1cblxuICAvKiogQGluaGVyaXREb2MgKi9cbiAgZXhwbGFpblRyYW5zYWN0aW9uKHBhcmFtczogRXhwbGFpblRyYW5zYWN0aW9uT3B0aW9ucyk6IFByb21pc2U8VHJhbnNhY3Rpb25FeHBsYW5hdGlvbj4ge1xuICAgIGNvbnN0IGZhY3RvcnkgPSB0aGlzLmdldEJ1aWxkZXIoKTtcbiAgICBsZXQgcmVidWlsdFRyYW5zYWN0aW9uOiBCYXNlVHJhbnNhY3Rpb247XG4gICAgY29uc3QgdHhSYXcgPSBwYXJhbXMudHhIZXg7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHR4QnVpbGRlciA9IGZhY3RvcnkuZnJvbSh0eFJhdyk7XG4gICAgICByZWJ1aWx0VHJhbnNhY3Rpb24gPSB0eEJ1aWxkZXIudHJhbnNhY3Rpb247XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIHRyYW5zYWN0aW9uJyk7XG4gICAgfVxuICAgIHJldHVybiByZWJ1aWx0VHJhbnNhY3Rpb24uZXhwbGFpblRyYW5zYWN0aW9uKCk7XG4gIH1cblxuICAvKiogQGluaGVyaXREb2MgKi9cbiAgaXNWYWxpZFB1YihwdWI6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB1dGlscy5pc1ZhbGlkUHVibGljS2V5KHB1Yik7XG4gIH1cblxuICAvKiogQGluaGVyaXREb2MgKi9cbiAgaXNWYWxpZEFkZHJlc3MoYWRkcmVzczogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgLy8gY2FudG9uIGFkZHJlc3NlcyBhcmUgb2YgdGhlIGZvcm0sIHBhcnR5SGludDo6ZmluZ2VycHJpbnRcbiAgICAvLyB3aGVyZSBwYXJ0eUhpbnQgaXMgb2YgbGVuZ3RoIDUgYW5kIGZpbmdlcnByaW50IGlzIDY4IGNoYXJhY3RlcnMgbG9uZ1xuICAgIHJldHVybiB1dGlscy5pc1ZhbGlkQWRkcmVzcyhhZGRyZXNzKTtcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdERvYyAqL1xuICBnZXRUb2tlbkVuYWJsZW1lbnRDb25maWcoKTogVG9rZW5FbmFibGVtZW50Q29uZmlnIHtcbiAgICByZXR1cm4ge1xuICAgICAgcmVxdWlyZXNUb2tlbkVuYWJsZW1lbnQ6IHRydWUsXG4gICAgICBzdXBwb3J0c011bHRpcGxlVG9rZW5FbmFibGVtZW50czogZmFsc2UsXG4gICAgfTtcbiAgfVxuXG4gIGdldEFkZHJlc3NGcm9tUHVibGljS2V5KHB1YmxpY0tleUhleDogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBjb25zdCBwdWJsaWNLZXlCYXNlNjQgPSBCdWZmZXIuZnJvbShwdWJsaWNLZXlIZXgsICdoZXgnKS50b1N0cmluZygnYmFzZTY0Jyk7XG4gICAgcmV0dXJuIHV0aWxzLmdldEFkZHJlc3NGcm9tUHVibGljS2V5KHB1YmxpY0tleUJhc2U2NCk7XG4gIH1cblxuICAvKiogQGluaGVyaXREb2MgKi9cbiAgc2lnblRyYW5zYWN0aW9uKHBhcmFtczogU2lnblRyYW5zYWN0aW9uT3B0aW9ucyk6IFByb21pc2U8U2lnbmVkVHJhbnNhY3Rpb24+IHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ01ldGhvZCBub3QgaW1wbGVtZW50ZWQuJyk7XG4gIH1cblxuICAvKiogQGluaGVyaXREb2MgKi9cbiAgYXVkaXREZWNyeXB0ZWRLZXkoeyBtdWx0aVNpZ1R5cGUsIHBydiwgcHVibGljS2V5IH06IEF1ZGl0RGVjcnlwdGVkS2V5UGFyYW1zKTogdm9pZCB7XG4gICAgaWYgKG11bHRpU2lnVHlwZSAhPT0gbXVsdGlzaWdUeXBlcy50c3MpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignVW5zdXBwb3J0ZWQgbXVsdGlTaWdUeXBlJyk7XG4gICAgfVxuICAgIGF1ZGl0RWRkc2FQcml2YXRlS2V5KHBydiwgcHVibGljS2V5ID8/ICcnKTtcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdERvYyAqL1xuICBzZXRDb2luU3BlY2lmaWNGaWVsZHNJbkludGVudChpbnRlbnQ6IFBvcHVsYXRlZEludGVudCwgcGFyYW1zOiBQcmVidWlsZFRyYW5zYWN0aW9uV2l0aEludGVudE9wdGlvbnMpOiB2b2lkIHtcbiAgICBpZiAocGFyYW1zLnR4UmVxdWVzdElkKSB7XG4gICAgICBpbnRlbnQudHhSZXF1ZXN0SWQgPSBwYXJhbXMudHhSZXF1ZXN0SWQ7XG4gICAgfVxuICAgIGlmIChwYXJhbXMudHJhbnNmZXJPZmZlcklkKSB7XG4gICAgICBpbnRlbnQudHJhbnNmZXJPZmZlcklkID0gcGFyYW1zLnRyYW5zZmVyT2ZmZXJJZDtcbiAgICB9XG4gICAgaWYgKHBhcmFtcy51bnNwZW50cykge1xuICAgICAgaW50ZW50LnVuc3BlbnRzID0gcGFyYW1zLnVuc3BlbnRzO1xuICAgIH1cbiAgICBpZiAocGFyYW1zLmNhbnRvbkNvbW1hbmRQYXJhbXMpIHtcbiAgICAgIGludGVudC5jYW50b25Db21tYW5kUGFyYW1zID0gcGFyYW1zLmNhbnRvbkNvbW1hbmRQYXJhbXM7XG4gICAgfVxuICB9XG59XG4iXX0=
376
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FudG9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NhbnRvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSw4Q0E0QnlCO0FBQ3pCLG9EQUEwRDtBQUMxRCw0Q0FBb0U7QUFDcEUsK0JBQWtEO0FBQ2xELDJDQUF5RDtBQUd6RCx3REFBZ0M7QUFjaEMsTUFBYSxNQUFPLFNBQVEsbUJBQVE7SUFHbEMsWUFBc0IsS0FBZ0IsRUFBRSxXQUF1QztRQUM3RSxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7UUFFYixJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7WUFDakIsTUFBTSxJQUFJLEtBQUssQ0FBQyxvREFBb0QsQ0FBQyxDQUFDO1FBQ3hFLENBQUM7UUFFRCxJQUFJLENBQUMsWUFBWSxHQUFHLFdBQVcsQ0FBQztJQUNsQyxDQUFDO0lBRUQsTUFBTSxDQUFDLGNBQWMsQ0FBQyxLQUFnQixFQUFFLFdBQXVDO1FBQzdFLE9BQU8sSUFBSSxNQUFNLENBQUMsS0FBSyxFQUFFLFdBQVcsQ0FBQyxDQUFDO0lBQ3hDLENBQUM7SUFFTyxVQUFVO1FBQ2hCLE9BQU8sSUFBSSwrQkFBeUIsQ0FBQyxlQUFLLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDbkUsQ0FBQztJQUVELGtCQUFrQjtJQUNYLGFBQWE7UUFDbEIsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQsa0JBQWtCO0lBQ1gsUUFBUTtRQUNiLE9BQU8sUUFBUSxDQUFDO0lBQ2xCLENBQUM7SUFFRCxrQkFBa0I7SUFDWCxTQUFTO1FBQ2QsT0FBTyxRQUFRLENBQUM7SUFDbEIsQ0FBQztJQUVELGtCQUFrQjtJQUNYLFdBQVc7UUFDaEIsT0FBTyxRQUFRLENBQUM7SUFDbEIsQ0FBQztJQUVELGtCQUFrQjtJQUNsQixXQUFXO1FBQ1QsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQsa0JBQWtCO0lBQ2xCLHNC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Q0QsSUFBSSxNQUFNLENBQUMsVUFBVSxFQUFFLENBQUM7WUFDdEIsTUFBTSxDQUFDLFVBQVUsR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDO1FBQ3hDLENBQUM7UUFDRCxJQUFJLE1BQU0sQ0FBQyxTQUFTLEVBQUUsQ0FBQztZQUNyQixNQUFNLENBQUMsU0FBUyxHQUFHLE1BQU0sQ0FBQyxTQUFTLENBQUM7UUFDdEMsQ0FBQztRQUNELElBQUksTUFBTSxDQUFDLGVBQWUsRUFBRSxDQUFDO1lBQzNCLE1BQU0sQ0FBQyxlQUFlLEdBQUcsTUFBTSxDQUFDLGVBQWUsQ0FBQztRQUNsRCxDQUFDO1FBQ0QsSUFBSSxNQUFNLENBQUMsYUFBYSxFQUFFLENBQUM7WUFDekIsTUFBTSxDQUFDLGFBQWEsR0FBRyxNQUFNLENBQUMsYUFBYSxDQUFDO1FBQzlDLENBQUM7SUFDSCxDQUFDO0NBQ0Y7QUEzYkQsd0JBMmJDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQXVkaXREZWNyeXB0ZWRLZXlQYXJhbXMsXG4gIEJhc2VDb2luLFxuICBCYXNlVHJhbnNhY3Rpb24sXG4gIEJpdEdvQmFzZSxcbiAgQ2FudG9uQ29tbWFuZCxcbiAgQ2FudG9uQ29tbWFuZFBhcmFtcyxcbiAgQ2FudG9uQ3JlYXRlQ29tbWFuZCxcbiAgQ2FudG9uRXhlcmNpc2VDb21tYW5kLFxuICBFRERTQU1ldGhvZHMsXG4gIGV4dHJhY3RDb21tb25LZXljaGFpbixcbiAgSW52YWxpZEFkZHJlc3NFcnJvcixcbiAgS2V5UGFpcixcbiAgTVBDQWxnb3JpdGhtLFxuICBNdWx0aXNpZ1R5cGUsXG4gIG11bHRpc2lnVHlwZXMsXG4gIFBhcnNlZFRyYW5zYWN0aW9uLFxuICBQYXJzZVRyYW5zYWN0aW9uT3B0aW9ucyxcbiAgUG9wdWxhdGVkSW50ZW50LFxuICBQcmVidWlsZFRyYW5zYWN0aW9uV2l0aEludGVudE9wdGlvbnMsXG4gIFNpZ25lZFRyYW5zYWN0aW9uLFxuICBTaWduVHJhbnNhY3Rpb25PcHRpb25zLFxuICBUb2tlbkVuYWJsZW1lbnRDb25maWcsXG4gIFRyYW5zYWN0aW9uRXhwbGFuYXRpb24gYXMgQmFzZVRyYW5zYWN0aW9uRXhwbGFuYXRpb24sXG4gIFRyYW5zYWN0aW9uUGFyYW1zLFxuICBUcmFuc2FjdGlvblR5cGUsXG4gIFRzc1ZlcmlmeUFkZHJlc3NPcHRpb25zLFxuICBWZXJpZnlUcmFuc2FjdGlvbk9wdGlvbnMsXG59IGZyb20gJ0BiaXRnby9zZGstY29yZSc7XG5pbXBvcnQgeyBhdWRpdEVkZHNhUHJpdmF0ZUtleSB9IGZyb20gJ0BiaXRnby9zZGstbGliLW1wYyc7XG5pbXBvcnQgeyBCYXNlQ29pbiBhcyBTdGF0aWNzQmFzZUNvaW4sIGNvaW5zIH0gZnJvbSAnQGJpdGdvL3N0YXRpY3MnO1xuaW1wb3J0IHsgVHJhbnNhY3Rpb25CdWlsZGVyRmFjdG9yeSB9IGZyb20gJy4vbGliJztcbmltcG9ydCB7IEtleVBhaXIgYXMgQ2FudG9uS2V5UGFpciB9IGZyb20gJy4vbGliL2tleVBhaXInO1xuaW1wb3J0IHsgQ2FudG9uQ29tbWFuZEtpbmQsIFR4RGF0YSB9IGZyb20gJy4vbGliL2lmYWNlJztcbmltcG9ydCB7IFRyYW5zYWN0aW9uIH0gZnJvbSAnLi9saWIvdHJhbnNhY3Rpb24vdHJhbnNhY3Rpb24nO1xuaW1wb3J0IHV0aWxzIGZyb20gJy4vbGliL3V0aWxzJztcblxuZXhwb3J0IGludGVyZmFjZSBUcmFuc2FjdGlvbkV4cGxhbmF0aW9uIGV4dGVuZHMgQmFzZVRyYW5zYWN0aW9uRXhwbGFuYXRpb24ge1xuICB0eXBlOiBUcmFuc2FjdGlvblR5cGU7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRXhwbGFpblRyYW5zYWN0aW9uT3B0aW9ucyB7XG4gIHR4SGV4OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ2FudG9uVHJhbnNhY3Rpb25QYXJhbXMgZXh0ZW5kcyBUcmFuc2FjdGlvblBhcmFtcyB7XG4gIGNhbnRvbkNvbW1hbmRQYXJhbXM/OiBDYW50b25Db21tYW5kUGFyYW1zO1xufVxuXG5leHBvcnQgY2xhc3MgQ2FudG9uIGV4dGVuZHMgQmFzZUNvaW4ge1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgX3N0YXRpY3NDb2luOiBSZWFkb25seTxTdGF0aWNzQmFzZUNvaW4+O1xuXG4gIHByb3RlY3RlZCBjb25zdHJ1Y3RvcihiaXRnbzogQml0R29CYXNlLCBzdGF0aWNzQ29pbj86IFJlYWRvbmx5PFN0YXRpY3NCYXNlQ29pbj4pIHtcbiAgICBzdXBlcihiaXRnbyk7XG5cbiAgICBpZiAoIXN0YXRpY3NDb2luKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ21pc3NpbmcgcmVxdWlyZWQgY29uc3RydWN0b3IgcGFyYW1ldGVyIHN0YXRpY3NDb2luJyk7XG4gICAgfVxuXG4gICAgdGhpcy5fc3RhdGljc0NvaW4gPSBzdGF0aWNzQ29pbjtcbiAgfVxuXG4gIHN0YXRpYyBjcmVhdGVJbnN0YW5jZShiaXRnbzogQml0R29CYXNlLCBzdGF0aWNzQ29pbj86IFJlYWRvbmx5PFN0YXRpY3NCYXNlQ29pbj4pOiBCYXNlQ29pbiB7XG4gICAgcmV0dXJuIG5ldyBDYW50b24oYml0Z28sIHN0YXRpY3NDb2luKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0QnVpbGRlcigpOiBUcmFuc2FjdGlvbkJ1aWxkZXJGYWN0b3J5IHtcbiAgICByZXR1cm4gbmV3IFRyYW5zYWN0aW9uQnVpbGRlckZhY3RvcnkoY29pbnMuZ2V0KHRoaXMuZ2V0Q2hhaW4oKSkpO1xuICB9XG5cbiAgLyoqIEBpbmhlcml0RG9jICovXG4gIHB1YmxpYyBnZXRCYXNlRmFjdG9yKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIDFlMTA7XG4gIH1cblxuICAvKiogQGluaGVyaXREb2MgKi9cbiAgcHVibGljIGdldENoYWluKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuICdjYW50b24nO1xuICB9XG5cbiAgLyoqIEBpbmhlcml0RG9jICovXG4gIHB1YmxpYyBnZXRGYW1pbHkoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gJ2NhbnRvbic7XG4gIH1cblxuICAvKiogQGluaGVyaXREb2MgKi9cbiAgcHVibGljIGdldEZ1bGxOYW1lKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuICdDYW50b24nO1xuICB9XG5cbiAgLyoqIEBpbmhlcml0RG9jICovXG4gIHN1cHBvcnRzVHNzKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgLyoqIEBpbmhlcml0RG9jICovXG4gIHN1cHBvcnRzTWVzc2FnZVNpZ25pbmcoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICAvKiogaW5oZXJpdGVkIGRvYyAqL1xuICBnZXREZWZhdWx0TXVsdGlzaWdUeXBlKCk6IE11bHRpc2lnVHlwZSB7XG4gICAgcmV0dXJuIG11bHRpc2lnVHlwZXMudHNzO1xuICB9XG5cbiAgLyoqIGluaGVyaXRlZCBkb2MgKi9cbiAgcmVxdWlyZXNXYWxsZXRJbml0aWFsaXphdGlvblRyYW5zYWN0aW9uKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgZ2V0TVBDQWxnb3JpdGhtKCk6IE1QQ0FsZ29yaXRobSB7XG4gICAgcmV0dXJuICdlZGRzYSc7XG4gIH1cblxuICAvKiogQGluaGVyaXREb2MgKi9cbiAgYXN5bmMgdmVyaWZ5VHJhbnNhY3Rpb24ocGFyYW1zOiBWZXJpZnlUcmFuc2FjdGlvbk9wdGlvbnMpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICBjb25zdCBjb2luQ29uZmlnID0gY29pbnMuZ2V0KHRoaXMuZ2V0Q2hhaW4oKSk7XG4gICAgY29uc3QgeyB0eFByZWJ1aWxkOiB0eFByZWJ1aWxkLCB0eFBhcmFtcyB9ID0gcGFyYW1zO1xuICAgIGNvbnN0IHJhd1R4ID0gdHhQcmVidWlsZC50eEhleDtcbiAgICBpZiAoIXJhd1R4KSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ21pc3NpbmcgcmVxdWlyZWQgdHggcHJlYnVpbGQgcHJvcGVydHkgdHhIZXgnKTtcbiAgICB9XG4gICAgY29uc3QgdHhCdWlsZGVyID0gbmV3IFRyYW5zYWN0aW9uQnVpbGRlckZhY3RvcnkoY29pbkNvbmZpZykuZnJvbShyYXdUeCk7XG4gICAgY29uc3QgdHJhbnNhY3Rpb24gPSB0eEJ1aWxkZXIudHJhbnNhY3Rpb247XG4gICAgY29uc3QgZXhwbGFpbmVkVHggPSB0cmFuc2FjdGlvbi5leHBsYWluVHJhbnNhY3Rpb24oKTtcbiAgICBzd2l0Y2ggKHRyYW5zYWN0aW9uLnR5cGUpIHtcbiAgICAgIGNhc2UgVHJhbnNhY3Rpb25UeXBlLldhbGxldEluaXRpYWxpemF0aW9uOlxuICAgICAgY2FzZSBUcmFuc2FjdGlvblR5cGUuVHJhbnNmZXJBY2NlcHQ6XG4gICAgICBjYXNlIFRyYW5zYWN0aW9uVHlwZS5UcmFuc2ZlclJlamVjdDpcbiAgICAgIGNhc2UgVHJhbnNhY3Rpb25UeXBlLlRyYW5zZmVyQWNrbm93bGVkZ2U6XG4gICAgICBjYXNlIFRyYW5zYWN0aW9uVHlwZS5UcmFuc2Zlck9mZmVyV2l0aGRyYXduOlxuICAgICAgY2FzZSBUcmFuc2FjdGlvblR5cGUuQ29zaWduRGVsZWdhdGlvbkFjY2VwdDpcbiAgICAgIGNhc2UgVHJhbnNhY3Rpb25UeXBlLkNvc2lnbkRlbGVnYXRpb25Qcm9wb3NhbDpcbiAgICAgIGNhc2UgVHJhbnNhY3Rpb25UeXBlLkFsbG9jYXRpb25BbGxvY2F0ZTpcbiAgICAgIGNhc2UgVHJhbnNhY3Rpb25UeXBlLkFsbG9jYXRpb25SZXF1ZXN0OlxuICAgICAgICAvLyBUaGVyZSBpcyBubyByZWNpcGllbnQgaW5mbyB0byB2ZXJpZnkgZm9yIHRoZXNlIHRyYW5zYWN0aW9uIHR5cGVzLCBzbyBhbHdheXMgcmV0dXJuIHRydWUuXG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgY2FzZSBUcmFuc2FjdGlvblR5cGUuQ2FudG9uQ29tbWFuZDpcbiAgICAgICAgcmV0dXJuIHRoaXMudmVyaWZ5Q2FudG9uQ29tbWFuZFRyYW5zYWN0aW9uKFxuICAgICAgICAgIHRyYW5zYWN0aW9uLFxuICAgICAgICAgICh0eFBhcmFtcyBhcyBDYW50b25UcmFuc2FjdGlvblBhcmFtcykuY2FudG9uQ29tbWFuZFBhcmFtc1xuICAgICAgICApO1xuICAgICAgY2FzZSBUcmFuc2FjdGlvblR5cGUuT25lU3RlcFByZUFwcHJvdmFsOlxuICAgICAgICAvLyBDYW50b24gaXMgYWx3YXlzIGEgVFNTIHdhbGxldC4gVGhlIFNESydzIGJ1aWxkVG9rZW5FbmFibGVtZW50cyBwYXNzZXMgZW5hYmxlVG9rZW5zXG4gICAgICAgIC8vIHRocm91Z2ggdW5jaGFuZ2VkIGZvciBUU1Mgd2FsbGV0cyAobm8gY29udmVyc2lvbiB0byByZWNpcGllbnRzKSwgc28gdHhQYXJhbXMuZW5hYmxlVG9rZW5zXG4gICAgICAgIC8vIGlzIHRoZSBvbmx5IHNvdXJjZSBvZiB1c2VyIGludGVudCBoZXJlLlxuICAgICAgICAvL1xuICAgICAgICAvLyBSZWNlaXZlciB2YWxpZGF0aW9uOiB0aGUgcmVjZWl2ZXIgb2YgYSBPbmVTdGVwUHJlQXBwcm92YWwgaXMgYWx3YXlzIHRoZSB3YWxsZXQncyByb290IGFkZHJlc3MuXG4gICAgICAgIC8vIFdlIHVzZSBlbmFibGVUb2tlbi5hZGRyZXNzIGlmIGV4cGxpY2l0bHkgcHJvdmlkZWQsIG90aGVyd2lzZSBmYWxsIGJhY2sgdG9cbiAgICAgICAgLy8gd2FsbGV0LmNvaW5TcGVjaWZpYygpLnJvb3RBZGRyZXNzICh0aGUgQ2FudG9uIHBhcnR5IElEIHN0b3JlZCBhdCB3YWxsZXQgY3JlYXRpb24gdGltZSkuXG4gICAgICAgIC8vIFRva2VuIG5hbWUgdmFsaWRhdGlvbjogY2hlY2tlZCB3aGVuIHRoZSB0b2tlbiBpcyByZXNvbHZhYmxlIGZyb20gc3RhdGljcy5cbiAgICAgICAgaWYgKFxuICAgICAgICAgIHR4UGFyYW1zLnR5cGUgPT09ICdlbmFibGV0b2tlbicgJiZcbiAgICAgICAgICB0eFBhcmFtcy5lbmFibGVUb2tlbnMgIT09IHVuZGVmaW5lZCAmJlxuICAgICAgICAgIHR4UGFyYW1zLmVuYWJsZVRva2Vucy5sZW5ndGggPiAwXG4gICAgICAgICkge1xuICAgICAgICAgIGNvbnN0IHR4RGF0YSA9IHRyYW5zYWN0aW9uLnRvSnNvbigpIGFzIFR4RGF0YTtcbiAgICAgICAgICBjb25zdCBlbmFibGVUb2tlbiA9IHR4UGFyYW1zLmVuYWJsZVRva2Vuc1swXTtcbiAgICAgICAgICBjb25zdCB3YWxsZXRSb290QWRkcmVzcyA9IHBhcmFtcy53YWxsZXQ/LmNvaW5TcGVjaWZpYz8uKCk/LnJvb3RBZGRyZXNzO1xuICAgICAgICAgIGNvbnN0IGV4cGVjdGVkUmVjZWl2ZXIgPSBlbmFibGVUb2tlbi5hZGRyZXNzID8/IHdhbGxldFJvb3RBZGRyZXNzO1xuICAgICAgICAgIGlmIChleHBlY3RlZFJlY2VpdmVyKSB7XG4gICAgICAgICAgICAvLyBTdHJpcCA/bWVtb0lkIHN1ZmZpeCBpZiBwcmVzZW50IGluIHRoZSBzdG9yZWQgYWRkcmVzc1xuICAgICAgICAgICAgY29uc3QgW2V4cGVjdGVkUmVjZWl2ZXJCYXNlXSA9IGV4cGVjdGVkUmVjZWl2ZXIuc3BsaXQoJz9tZW1vSWQ9Jyk7XG4gICAgICAgICAgICBpZiAodHhEYXRhLnJlY2VpdmVyICE9PSBleHBlY3RlZFJlY2VpdmVyQmFzZSkge1xuICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgICAgICAgYE9uZVN0ZXBQcmVBcHByb3ZhbCByZWNlaXZlciBtaXNtYXRjaDogZXhwZWN0ZWQgJyR7ZXhwZWN0ZWRSZWNlaXZlckJhc2V9JywgZ290ICcke3R4RGF0YS5yZWNlaXZlcn0nYFxuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAodHhEYXRhLnRva2VuICE9PSB1bmRlZmluZWQgJiYgdHhEYXRhLnRva2VuICE9PSBlbmFibGVUb2tlbi5uYW1lKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgICAgIGBPbmVTdGVwUHJlQXBwcm92YWwgdG9rZW4gbmFtZSBtaXNtYXRjaDogZXhwZWN0ZWQgJyR7ZW5hYmxlVG9rZW4ubmFtZX0nLCBnb3QgJyR7dHhEYXRhLnRva2VufSdgXG4gICAgICAgICAgICApO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIGNhc2UgVHJhbnNhY3Rpb25UeXBlLlNlbmQ6XG4gICAgICAgIGlmICh0eFBhcmFtcy5yZWNpcGllbnRzICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICBjb25zdCBmaWx0ZXJlZFJlY2lwaWVudHMgPSB0eFBhcmFtcy5yZWNpcGllbnRzPy5tYXAoKHJlY2lwaWVudCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgeyBhZGRyZXNzLCBhbW91bnQsIHRva2VuTmFtZSB9ID0gcmVjaXBpZW50O1xuICAgICAgICAgICAgY29uc3QgW2FkZHJlc3NQYXJ0LCBtZW1vSWRdID0gYWRkcmVzcy5zcGxpdCgnP21lbW9JZD0nKTtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgIGFkZHJlc3M6IGFkZHJlc3NQYXJ0LFxuICAgICAgICAgICAgICBhbW91bnQsXG4gICAgICAgICAgICAgIC4uLihtZW1vSWQgJiYgeyBtZW1vOiBtZW1vSWQgfSksXG4gICAgICAgICAgICAgIC4uLih0b2tlbk5hbWUgJiYgeyB0b2tlbk5hbWUgfSksXG4gICAgICAgICAgICB9O1xuICAgICAgICAgIH0pO1xuICAgICAgICAgIGNvbnN0IGZpbHRlcmVkT3V0cHV0cyA9IGV4cGxhaW5lZFR4Lm91dHB1dHM/Lm1hcCgob3V0cHV0KSA9PiB7XG4gICAgICAgICAgICBjb25zdCB7IGFkZHJlc3MsIGFtb3VudCwgdG9rZW5OYW1lLCBtZW1vIH0gPSBvdXRwdXQ7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICBhZGRyZXNzLFxuICAgICAgICAgICAgICBhbW91bnQsXG4gICAgICAgICAgICAgIC4uLihtZW1vICYmIHsgbWVtbyB9KSxcbiAgICAgICAgICAgICAgLi4uKHRva2VuTmFtZSAmJiB7IHRva2VuTmFtZSB9KSxcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgfSk7XG4gICAgICAgICAgaWYgKEpTT04uc3RyaW5naWZ5KGZpbHRlcmVkUmVjaXBpZW50cykgIT09IEpTT04uc3RyaW5naWZ5KGZpbHRlcmVkT3V0cHV0cykpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignVHggb3V0cHV0cyBkbyBub3QgbWF0Y2ggd2l0aCBleHBlY3RlZCB0eFBhcmFtcyByZWNpcGllbnRzJyk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgZGVmYXVsdDoge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYHVua25vd24gdHJhbnNhY3Rpb24gdHlwZSwgJHt0cmFuc2FjdGlvbi50eXBlfWApO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgdmVyaWZ5Q2FudG9uQ29tbWFuZFRyYW5zYWN0aW9uKFxuICAgIHRyYW5zYWN0aW9uOiBCYXNlVHJhbnNhY3Rpb24sXG4gICAgdXNlclBhcmFtczogQ2FudG9uQ29tbWFuZFBhcmFtcyB8IHVuZGVmaW5lZFxuICApOiBib29sZWFuIHtcbiAgICBpZiAoIXVzZXJQYXJhbXMpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIGNvbnN0IGNhbnRvblR4ID0gdHJhbnNhY3Rpb24gYXMgVHJhbnNhY3Rpb247XG4gICAgY29uc3QgcmF3UHJlcGFyZWQgPSBjYW50b25UeC5wcmVwYXJlQ29tbWFuZD8ucHJlcGFyZWRUcmFuc2FjdGlvbjtcbiAgICBpZiAoIXJhd1ByZXBhcmVkKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0NhbnRvbkNvbW1hbmQgdmVyaWZ5VHJhbnNhY3Rpb246IG1pc3NpbmcgcHJlcGFyZWRUcmFuc2FjdGlvbiBwcm90b2J1ZiBvbiB0eCBwcmVidWlsZCcpO1xuICAgIH1cblxuICAgIGNvbnN0IGRlY29kZWRDb21tYW5kID0gdXRpbHMuZXh0cmFjdENhbnRvbkNvbW1hbmRJbmZvKHJhd1ByZXBhcmVkKTtcbiAgICBjb25zdCB1c2VyQ29tbWFuZCA9IHVzZXJQYXJhbXMuY29tbWFuZCBhcyBQYXJ0aWFsPENhbnRvbkNvbW1hbmQ+O1xuXG4gICAgLy8gSW5wdXQgc2hhcGUgaXMgZW5mb3JjZWQgYnkgbXBjVXRpbHMgYXQgYnVpbGQgdGltZTsgaGVyZSB3ZSByZXNvbHZlIHdoaWNoIGJyYW5jaCBpcyBwcmVzZW50LlxuICAgIGNvbnN0IGhhc0NyZWF0ZSA9ICdDcmVhdGVDb21tYW5kJyBpbiB1c2VyQ29tbWFuZCAmJiB1dGlscy5pc1BsYWluT2JqZWN0KHVzZXJDb21tYW5kLkNyZWF0ZUNvbW1hbmQpO1xuICAgIGNvbnN0IGhhc0V4ZXJjaXNlID0gJ0V4ZXJjaXNlQ29tbWFuZCcgaW4gdXNlckNvbW1hbmQgJiYgdXRpbHMuaXNQbGFpbk9iamVjdCh1c2VyQ29tbWFuZC5FeGVyY2lzZUNvbW1hbmQpO1xuICAgIGlmICghaGFzQ3JlYXRlICYmICFoYXNFeGVyY2lzZSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICBgQ2FudG9uQ29tbWFuZCB2ZXJpZnlUcmFuc2FjdGlvbjogY29tbWFuZCBtdXN0IGNvbnRhaW4gYSBDcmVhdGVDb21tYW5kIG9yIEV4ZXJjaXNlQ29tbWFuZCB3cmFwcGVyYFxuICAgICAgKTtcbiAgICB9XG4gICAgaWYgKGhhc0NyZWF0ZSAmJiBoYXNFeGVyY2lzZSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICBgQ2FudG9uQ29tbWFuZCB2ZXJpZnlUcmFuc2FjdGlvbjogY29tbWFuZCBtdXN0IGNvbnRhaW4gZXhhY3RseSBvbmUgb2YgQ3JlYXRlQ29tbWFuZCBvciBFeGVyY2lzZUNvbW1hbmQsIG5vdCBib3RoYFxuICAgICAgKTtcbiAgICB9XG4gICAgY29uc3QgdXNlcktpbmQ6IENhbnRvbkNvbW1hbmRLaW5kID0gaGFzQ3JlYXRlID8gJ0NyZWF0ZUNvbW1hbmQnIDogJ0V4ZXJjaXNlQ29tbWFuZCc7XG4gICAgaWYgKGRlY29kZWRDb21tYW5kLmtpbmQgIT09IHVzZXJLaW5kKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgIGBDYW50b25Db21tYW5kIHZlcmlmeVRyYW5zYWN0aW9uOiBjb21tYW5kIGtpbmQgbWlzbWF0Y2gg4oCUIGV4cGVjdGVkICR7dXNlcktpbmR9LCBnb3QgJHtkZWNvZGVkQ29tbWFuZC5raW5kfWBcbiAgICAgICk7XG4gICAgfVxuXG4gICAgY29uc3QgdXNlcklubmVyID1cbiAgICAgIHVzZXJLaW5kID09PSAnQ3JlYXRlQ29tbWFuZCdcbiAgICAgICAgPyAodXNlckNvbW1hbmQgYXMgQ2FudG9uQ3JlYXRlQ29tbWFuZCkuQ3JlYXRlQ29tbWFuZFxuICAgICAgICA6ICh1c2VyQ29tbWFuZCBhcyBDYW50b25FeGVyY2lzZUNvbW1hbmQpLkV4ZXJjaXNlQ29tbWFuZDtcblxuICAgIGlmICghdXNlcklubmVyPy50ZW1wbGF0ZUlkKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYENhbnRvbkNvbW1hbmQgdmVyaWZ5VHJhbnNhY3Rpb246ICR7dXNlcktpbmR9LnRlbXBsYXRlSWQgbXVzdCBiZSBhIG5vbi1lbXB0eSBzdHJpbmdgKTtcbiAgICB9XG5cbiAgICAvLyB0ZW1wbGF0ZUlkIChtb2R1bGVOYW1lICsgZW50aXR5TmFtZTsgcGFja2FnZSBpZCBpcyBtdXRhYmxlLCBzbyBpZ25vcmVkKVxuICAgIGNvbnN0IHBhcnNlZCA9IHV0aWxzLnBhcnNlQ2FudG9uVGVtcGxhdGVJZCh1c2VySW5uZXIudGVtcGxhdGVJZCk7XG4gICAgaWYgKCFwYXJzZWQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgYENhbnRvbkNvbW1hbmQgdmVyaWZ5VHJhbnNhY3Rpb246IGludmFsaWQgdXNlciB0ZW1wbGF0ZUlkICcke3VzZXJJbm5lci50ZW1wbGF0ZUlkfScg4oCUIGV4cGVjdGVkIGZvcm1hdCAnUGtnOk1vZHVsZTpFbnRpdHknYFxuICAgICAgKTtcbiAgICB9XG4gICAgaWYgKFxuICAgICAgZGVjb2RlZENvbW1hbmQudGVtcGxhdGVJZC5tb2R1bGVOYW1lICE9PSBwYXJzZWQubW9kdWxlTmFtZSB8fFxuICAgICAgZGVjb2RlZENvbW1hbmQudGVtcGxhdGVJZC5lbnRpdHlOYW1lICE9PSBwYXJzZWQuZW50aXR5TmFtZVxuICAgICkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICBgQ2FudG9uQ29tbWFuZCB2ZXJpZnlUcmFuc2FjdGlvbjogdGVtcGxhdGVJZCBtaXNtYXRjaCDigJQgZXhwZWN0ZWQgJyR7cGFyc2VkLm1vZHVsZU5hbWV9OiR7cGFyc2VkLmVudGl0eU5hbWV9JywgZ290ICcke2RlY29kZWRDb21tYW5kLnRlbXBsYXRlSWQubW9kdWxlTmFtZX06JHtkZWNvZGVkQ29tbWFuZC50ZW1wbGF0ZUlkLmVudGl0eU5hbWV9J2BcbiAgICAgICk7XG4gICAgfVxuXG4gICAgLy8gQnVpbGQgdGhlIGluamVjdC1hcyBza2lwIHNldCBvbmNlIGZvciB1c2UgYWNyb3NzIHRoZSBjb250cmFjdElkIGFuZCBhcmd1bWVudCBjaGVja3NcbiAgICBjb25zdCBza2lwUGF0aHMgPSB1dGlscy5ub3JtYWxpemVJbmplY3RBcyh1c2VyUGFyYW1zLnJlc29sdmVDb250cmFjdHMpO1xuXG4gICAgLy8gbWV0YWRhdGEuc3VibWl0dGVySW5mby5hY3RBcyBtdXN0IGNvbnRhaW4gZXhhY3RseSB0aGUgc2FtZSBwYXJ0aWVzIGFzIHRoZSB1c2VyJ3MgYWN0QXNcbiAgICBpZiAoIUFycmF5LmlzQXJyYXkodXNlclBhcmFtcy5hY3RBcykgfHwgdXNlclBhcmFtcy5hY3RBcy5sZW5ndGggPT09IDApIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgQ2FudG9uQ29tbWFuZCB2ZXJpZnlUcmFuc2FjdGlvbjogYWN0QXMgbXVzdCBiZSBhIG5vbi1lbXB0eSBhcnJheSBvZiBwYXJ0eSBJRHNgKTtcbiAgICB9XG4gICAgaWYgKCF1c2VyUGFyYW1zLmFjdEFzLmV2ZXJ5KChwKSA9PiB0eXBlb2YgcCA9PT0gJ3N0cmluZycgJiYgcC50cmltKCkgIT09ICcnKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBDYW50b25Db21tYW5kIHZlcmlmeVRyYW5zYWN0aW9uOiBhbGwgYWN0QXMgZW50cmllcyBtdXN0IGJlIG5vbi1lbXB0eSBzdHJpbmdzYCk7XG4gICAgfVxuICAgIGNvbnN0IHN1Ym1pdHRlckFjdEFzID0gY2FudG9uVHguY2FudG9uQ29tbWFuZEFjdEFzUGFydGllcyA/PyBbXTtcbiAgICBpZiAoIXV0aWxzLnNhbWVFbGVtZW50cyhzdWJtaXR0ZXJBY3RBcywgdXNlclBhcmFtcy5hY3RBcykpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgYENhbnRvbkNvbW1hbmQgdmVyaWZ5VHJhbnNhY3Rpb246IHN1Ym1pdHRlckluZm8uYWN0QXMgWyR7c3VibWl0dGVyQWN0QXMuam9pbihcbiAgICAgICAgICAnLCAnXG4gICAgICAgICl9XSBkb2VzIG5vdCBtYXRjaCB1c2VyIGFjdEFzIFske3VzZXJQYXJhbXMuYWN0QXMuam9pbignLCAnKX1dYFxuICAgICAgKTtcbiAgICB9XG5cbiAgICBpZiAodXNlcktpbmQgPT09ICdFeGVyY2lzZUNvbW1hbmQnKSB7XG4gICAgICBjb25zdCBleGVyY2lzZUlubmVyID0gdXNlcklubmVyIGFzIENhbnRvbkV4ZXJjaXNlQ29tbWFuZFsnRXhlcmNpc2VDb21tYW5kJ107XG5cbiAgICAgIC8vIGNob2ljZSBpZFxuICAgICAgaWYgKGRlY29kZWRDb21tYW5kLmNob2ljZSAhPT0gZXhlcmNpc2VJbm5lci5jaG9pY2UpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgIGBDYW50b25Db21tYW5kIHZlcmlmeVRyYW5zYWN0aW9uOiBjaG9pY2UgbWlzbWF0Y2gg4oCUIGV4cGVjdGVkICcke2V4ZXJjaXNlSW5uZXIuY2hvaWNlfScsIGdvdCAnJHtcbiAgICAgICAgICAgIGRlY29kZWRDb21tYW5kLmNob2ljZSA/PyAnJ1xuICAgICAgICAgIH0nYFxuICAgICAgICApO1xuICAgICAgfVxuXG4gICAgICAvLyBldmVyeSBvbi1jaGFpbiBhY3RpbmdQYXJ0eSBtdXN0IGJlIGluIHRoZSB1c2VyJ3MgYWN0QXMgKHByZXZlbnRzIHByaXZpbGVnZSBlc2NhbGF0aW9uKVxuICAgICAgY29uc3Qgb25DaGFpbkFjdG9ycyA9IGRlY29kZWRDb21tYW5kLmFjdGluZ1BhcnRpZXMgPz8gW107XG4gICAgICBmb3IgKGNvbnN0IGFjdG9yIG9mIG9uQ2hhaW5BY3RvcnMpIHtcbiAgICAgICAgaWYgKCF1c2VyUGFyYW1zLmFjdEFzLmluY2x1ZGVzKGFjdG9yKSkge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICAgIGBDYW50b25Db21tYW5kIHZlcmlmeVRyYW5zYWN0aW9uOiB1bmF1dGhvcml6ZWQgYWN0aW5nIHBhcnR5ICcke2FjdG9yfScgb24gcm9vdCBleGVyY2lzZSAobm90IGluIHVzZXIgYWN0QXMpYFxuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgLy8gY29udHJhY3RJZCDigJQgc2tpcCB3aGVuIGFic2VudC9lbXB0eSBvciB3aGVuIElNUyB3aWxsIGluamVjdCBpdCB2aWEgcmVzb2x2ZUNvbnRyYWN0c1xuICAgICAgaWYgKFxuICAgICAgICBleGVyY2lzZUlubmVyLmNvbnRyYWN0SWQgIT09IHVuZGVmaW5lZCAmJlxuICAgICAgICBleGVyY2lzZUlubmVyLmNvbnRyYWN0SWQgIT09ICcnICYmXG4gICAgICAgICFza2lwUGF0aHMuaGFzKCdFeGVyY2lzZUNvbW1hbmQuY29udHJhY3RJZCcpXG4gICAgICApIHtcbiAgICAgICAgaWYgKGRlY29kZWRDb21tYW5kLmNvbnRyYWN0SWQgIT09IGV4ZXJjaXNlSW5uZXIuY29udHJhY3RJZCkge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICAgIGBDYW50b25Db21tYW5kIHZlcmlmeVRyYW5zYWN0aW9uOiBjb250cmFjdElkIG1pc21hdGNoIOKAlCBleHBlY3RlZCAnJHtleGVyY2lzZUlubmVyLmNvbnRyYWN0SWR9JywgZ290ICcke1xuICAgICAgICAgICAgICBkZWNvZGVkQ29tbWFuZC5jb250cmFjdElkID8/ICcnXG4gICAgICAgICAgICB9J2BcbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIC8vIGRlZXAgYXJndW1lbnQgY29tcGFyZVxuICAgICAgY29uc3QgYXJndW1lbnRTa2lwUGF0aHMgPSB0aGlzLnJlbGF0aXZlU2tpcFBhdGhzKHNraXBQYXRocywgJ0V4ZXJjaXNlQ29tbWFuZC5jaG9pY2VBcmd1bWVudC4nKTtcbiAgICAgIHV0aWxzLmFzc2VydERlZXBDYW50b25NYXRjaChleGVyY2lzZUlubmVyLmNob2ljZUFyZ3VtZW50LCBkZWNvZGVkQ29tbWFuZC5hcmd1bWVudCwgYXJndW1lbnRTa2lwUGF0aHMpO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBjcmVhdGVJbm5lciA9IHVzZXJJbm5lciBhcyBDYW50b25DcmVhdGVDb21tYW5kWydDcmVhdGVDb21tYW5kJ107XG5cbiAgICAgIC8vIGRlZXAgYXJndW1lbnQgY29tcGFyZVxuICAgICAgY29uc3QgYXJndW1lbnRTa2lwUGF0aHMgPSB0aGlzLnJlbGF0aXZlU2tpcFBhdGhzKHNraXBQYXRocywgJ0NyZWF0ZUNvbW1hbmQuY3JlYXRlQXJndW1lbnRzLicpO1xuICAgICAgdXRpbHMuYXNzZXJ0RGVlcENhbnRvbk1hdGNoKGNyZWF0ZUlubmVyLmNyZWF0ZUFyZ3VtZW50cywgZGVjb2RlZENvbW1hbmQuYXJndW1lbnQsIGFyZ3VtZW50U2tpcFBhdGhzKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIHByaXZhdGUgcmVsYXRpdmVTa2lwUGF0aHMoc2tpcFBhdGhzOiBTZXQ8c3RyaW5nPiwgcHJlZml4OiBzdHJpbmcpOiBTZXQ8c3RyaW5nPiB7XG4gICAgY29uc3Qgb3V0ID0gbmV3IFNldDxzdHJpbmc+KCk7XG4gICAgZm9yIChjb25zdCBwIG9mIHNraXBQYXRocykge1xuICAgICAgaWYgKHAuc3RhcnRzV2l0aChwcmVmaXgpKSB7XG4gICAgICAgIGNvbnN0IHN0cmlwcGVkID0gcC5zbGljZShwcmVmaXgubGVuZ3RoKTtcbiAgICAgICAgaWYgKHN0cmlwcGVkKSBvdXQuYWRkKHN0cmlwcGVkKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIG91dDtcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdERvYyAqL1xuICBhc3luYyBpc1dhbGxldEFkZHJlc3MocGFyYW1zOiBUc3NWZXJpZnlBZGRyZXNzT3B0aW9ucyk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIC8vIFRPRE86IHJlZmFjdG9yIHRoaXMgYW5kIHVzZSB0aGUgYHZlcmlmeUVkZHNhTWVtb0Jhc2VkV2FsbGV0QWRkcmVzc2Agb25jZSBwdWJsaXNoZWQgZnJvbSBzZGstY29yZVxuICAgIC8vIGh0dHBzOi8vYml0Z29pbmMuYXRsYXNzaWFuLm5ldC9icm93c2UvQ09JTi02MzQ3XG4gICAgY29uc3QgeyBrZXljaGFpbnMsIGFkZHJlc3M6IG5ld0FkZHJlc3MsIGluZGV4IH0gPSBwYXJhbXM7XG4gICAgY29uc3QgW2FkZHJlc3NQYXJ0LCBtZW1vSWRdID0gbmV3QWRkcmVzcy5zcGxpdCgnP21lbW9JZD0nKTtcbiAgICBpZiAoIXRoaXMuaXNWYWxpZEFkZHJlc3MoYWRkcmVzc1BhcnQpKSB7XG4gICAgICB0aHJvdyBuZXcgSW52YWxpZEFkZHJlc3NFcnJvcihgaW52YWxpZCBhZGRyZXNzOiAke25ld0FkZHJlc3N9YCk7XG4gICAgfVxuICAgIGlmIChtZW1vSWQgJiYgbWVtb0lkICE9PSBgJHtpbmRleH1gKSB7XG4gICAgICB0aHJvdyBuZXcgSW52YWxpZEFkZHJlc3NFcnJvcihgaW52YWxpZCBtZW1vSWQgaW5kZXg6ICR7bWVtb0lkfWApO1xuICAgIH1cbiAgICBjb25zdCBjb21tb25LZXljaGFpbiA9IGV4dHJhY3RDb21tb25LZXljaGFpbihrZXljaGFpbnMpO1xuICAgIGNvbnN0IE1QQyA9IGF3YWl0IEVERFNBTWV0aG9kcy5nZXRJbml0aWFsaXplZE1wY0luc3RhbmNlKCk7XG4gICAgY29uc3QgZGVyaXZhdGlvblBhdGggPSAnbS8wJztcbiAgICBjb25zdCBkZXJpdmVkUHVibGljS2V5ID0gTVBDLmRlcml2ZVVuaGFyZGVuZWQoY29tbW9uS2V5Y2hhaW4sIGRlcml2YXRpb25QYXRoKS5zbGljZSgwLCA2NCk7XG4gICAgY29uc3QgcHVibGljS2V5QmFzZTY0ID0gQnVmZmVyLmZyb20oZGVyaXZlZFB1YmxpY0tleSwgJ2hleCcpLnRvU3RyaW5nKCdiYXNlNjQnKTtcbiAgICBjb25zdCByb290QWRkcmVzc0ZpbmdlcnByaW50ID0gdXRpbHMuZ2V0QWRkcmVzc0Zyb21QdWJsaWNLZXkocHVibGljS2V5QmFzZTY0KTtcbiAgICBjb25zdCByb290QWRkcmVzcyA9IGAke3Jvb3RBZGRyZXNzRmluZ2VycHJpbnQuc2xpY2UoMCwgNSl9Ojoke3Jvb3RBZGRyZXNzRmluZ2VycHJpbnR9YDtcbiAgICByZXR1cm4gYWRkcmVzc1BhcnQgPT09IHJvb3RBZGRyZXNzO1xuICB9XG5cbiAgLyoqIEBpbmhlcml0RG9jICovXG4gIGFzeW5jIHBhcnNlVHJhbnNhY3Rpb24ocGFyYW1zOiBQYXJzZVRyYW5zYWN0aW9uT3B0aW9ucyk6IFByb21pc2U8UGFyc2VkVHJhbnNhY3Rpb24+IHtcbiAgICBjb25zdCB0eEhleCA9IHBhcmFtcy50eEhleCBhcyBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gICAgaWYgKCF0eEhleCkge1xuICAgICAgLy8gTWVzc2FnZS1vbmx5IHNpZ25pbmcgcmVxdWVzdHMgKGUuZy4gQ0FOVE9OX1NJR05fVFJBTlNBQ1RJT04sIENBTlRPTl9TSUdOX1RPUE9MT0dZKVxuICAgICAgLy8gaGF2ZSBubyB0cmFuc2FjdGlvbiBoZXggdG8gcGFyc2Ug4oCUIHJldHVybiBhbiBlbXB0eSByZXN1bHQuXG4gICAgICByZXR1cm4ge307XG4gICAgfVxuICAgIGNvbnN0IHRyYW5zYWN0aW9uRXhwbGFuYXRpb24gPSBhd2FpdCB0aGlzLmV4cGxhaW5UcmFuc2FjdGlvbih7IHR4SGV4IH0pO1xuICAgIGlmICghdHJhbnNhY3Rpb25FeHBsYW5hdGlvbikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIHRyYW5zYWN0aW9uJyk7XG4gICAgfVxuICAgIHJldHVybiB0cmFuc2FjdGlvbkV4cGxhbmF0aW9uIGFzIHVua25vd24gYXMgUGFyc2VkVHJhbnNhY3Rpb247XG4gIH1cblxuICAvKiogQGluaGVyaXREb2MgKi9cbiAgZ2VuZXJhdGVLZXlQYWlyKHNlZWQ/OiBCdWZmZXIpOiBLZXlQYWlyIHtcbiAgICBjb25zdCBrZXlQYWlyID0gc2VlZCA/IG5ldyBDYW50b25LZXlQYWlyKHsgc2VlZCB9KSA6IG5ldyBDYW50b25LZXlQYWlyKCk7XG4gICAgY29uc3Qga2V5cyA9IGtleVBhaXIuZ2V0S2V5cygpO1xuICAgIGlmICgha2V5cy5wcnYpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignTWlzc2luZyBwcnYgaW4ga2V5IGdlbmVyYXRpb24uJyk7XG4gICAgfVxuICAgIHJldHVybiB7XG4gICAgICBwdWI6IGtleXMucHViLFxuICAgICAgcHJ2OiBrZXlzLnBydixcbiAgICB9O1xuICB9XG5cbiAgLyoqIEBpbmhlcml0RG9jICovXG4gIGV4cGxhaW5UcmFuc2FjdGlvbihwYXJhbXM6IEV4cGxhaW5UcmFuc2FjdGlvbk9wdGlvbnMpOiBQcm9taXNlPFRyYW5zYWN0aW9uRXhwbGFuYXRpb24+IHtcbiAgICBjb25zdCBmYWN0b3J5ID0gdGhpcy5nZXRCdWlsZGVyKCk7XG4gICAgbGV0IHJlYnVpbHRUcmFuc2FjdGlvbjogQmFzZVRyYW5zYWN0aW9uO1xuICAgIGNvbnN0IHR4UmF3ID0gcGFyYW1zLnR4SGV4O1xuICAgIHRyeSB7XG4gICAgICBjb25zdCB0eEJ1aWxkZXIgPSBmYWN0b3J5LmZyb20odHhSYXcpO1xuICAgICAgcmVidWlsdFRyYW5zYWN0aW9uID0gdHhCdWlsZGVyLnRyYW5zYWN0aW9uO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignSW52YWxpZCB0cmFuc2FjdGlvbicpO1xuICAgIH1cbiAgICByZXR1cm4gcmVidWlsdFRyYW5zYWN0aW9uLmV4cGxhaW5UcmFuc2FjdGlvbigpO1xuICB9XG5cbiAgLyoqIEBpbmhlcml0RG9jICovXG4gIGlzVmFsaWRQdWIocHViOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdXRpbHMuaXNWYWxpZFB1YmxpY0tleShwdWIpO1xuICB9XG5cbiAgLyoqIEBpbmhlcml0RG9jICovXG4gIGlzVmFsaWRBZGRyZXNzKGFkZHJlc3M6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIC8vIGNhbnRvbiBhZGRyZXNzZXMgYXJlIG9mIHRoZSBmb3JtLCBwYXJ0eUhpbnQ6OmZpbmdlcnByaW50XG4gICAgLy8gd2hlcmUgcGFydHlIaW50IGlzIG9mIGxlbmd0aCA1IGFuZCBmaW5nZXJwcmludCBpcyA2OCBjaGFyYWN0ZXJzIGxvbmdcbiAgICByZXR1cm4gdXRpbHMuaXNWYWxpZEFkZHJlc3MoYWRkcmVzcyk7XG4gIH1cblxuICAvKiogQGluaGVyaXREb2MgKi9cbiAgZ2V0VG9rZW5FbmFibGVtZW50Q29uZmlnKCk6IFRva2VuRW5hYmxlbWVudENvbmZpZyB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHJlcXVpcmVzVG9rZW5FbmFibGVtZW50OiB0cnVlLFxuICAgICAgc3VwcG9ydHNNdWx0aXBsZVRva2VuRW5hYmxlbWVudHM6IGZhbHNlLFxuICAgIH07XG4gIH1cblxuICBnZXRBZGRyZXNzRnJvbVB1YmxpY0tleShwdWJsaWNLZXlIZXg6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgY29uc3QgcHVibGljS2V5QmFzZTY0ID0gQnVmZmVyLmZyb20ocHVibGljS2V5SGV4LCAnaGV4JykudG9TdHJpbmcoJ2Jhc2U2NCcpO1xuICAgIHJldHVybiB1dGlscy5nZXRBZGRyZXNzRnJvbVB1YmxpY0tleShwdWJsaWNLZXlCYXNlNjQpO1xuICB9XG5cbiAgLyoqIEBpbmhlcml0RG9jICovXG4gIHNpZ25UcmFuc2FjdGlvbihwYXJhbXM6IFNpZ25UcmFuc2FjdGlvbk9wdGlvbnMpOiBQcm9taXNlPFNpZ25lZFRyYW5zYWN0aW9uPiB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdNZXRob2Qgbm90IGltcGxlbWVudGVkLicpO1xuICB9XG5cbiAgLyoqIEBpbmhlcml0RG9jICovXG4gIGF1ZGl0RGVjcnlwdGVkS2V5KHsgbXVsdGlTaWdUeXBlLCBwcnYsIHB1YmxpY0tleSB9OiBBdWRpdERlY3J5cHRlZEtleVBhcmFtcyk6IHZvaWQge1xuICAgIGlmIChtdWx0aVNpZ1R5cGUgIT09IG11bHRpc2lnVHlwZXMudHNzKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1Vuc3VwcG9ydGVkIG11bHRpU2lnVHlwZScpO1xuICAgIH1cbiAgICBhdWRpdEVkZHNhUHJpdmF0ZUtleShwcnYsIHB1YmxpY0tleSA/PyAnJyk7XG4gIH1cblxuICAvKiogQGluaGVyaXREb2MgKi9cbiAgc2V0Q29pblNwZWNpZmljRmllbGRzSW5JbnRlbnQoaW50ZW50OiBQb3B1bGF0ZWRJbnRlbnQsIHBhcmFtczogUHJlYnVpbGRUcmFuc2FjdGlvbldpdGhJbnRlbnRPcHRpb25zKTogdm9pZCB7XG4gICAgaWYgKHBhcmFtcy50eFJlcXVlc3RJZCkge1xuICAgICAgaW50ZW50LnR4UmVxdWVzdElkID0gcGFyYW1zLnR4UmVxdWVzdElkO1xuICAgIH1cbiAgICBpZiAocGFyYW1zLnRyYW5zZmVyT2ZmZXJJZCkge1xuICAgICAgaW50ZW50LnRyYW5zZmVyT2ZmZXJJZCA9IHBhcmFtcy50cmFuc2Zlck9mZmVySWQ7XG4gICAgfVxuICAgIGlmIChwYXJhbXMudW5zcGVudHMpIHtcbiAgICAgIGludGVudC51bnNwZW50cyA9IHBhcmFtcy51bnNwZW50cztcbiAgICB9XG4gICAgaWYgKHBhcmFtcy5jYW50b25Db21tYW5kUGFyYW1zKSB7XG4gICAgICBpbnRlbnQuY2FudG9uQ29tbWFuZFBhcmFtcyA9IHBhcmFtcy5jYW50b25Db21tYW5kUGFyYW1zO1xuICAgIH1cbiAgICBpZiAocGFyYW1zLmVuZEludmVzdG9yUGFydHlJZCkge1xuICAgICAgaW50ZW50LmVuZEludmVzdG9yUGFydHlJZCA9IHBhcmFtcy5lbmRJbnZlc3RvclBhcnR5SWQ7XG4gICAgfVxuICAgIGlmIChwYXJhbXMucmVhc29uKSB7XG4gICAgICBpbnRlbnQucmVhc29uID0gcGFyYW1zLnJlYXNvbjtcbiAgICB9XG4gICAgaWYgKHBhcmFtcy5vcGVyYXRvcikge1xuICAgICAgaW50ZW50Lm9wZXJhdG9yID0gcGFyYW1zLm9wZXJhdG9yO1xuICAgIH1cbiAgICBpZiAocGFyYW1zLnByb3ZpZGVyKSB7XG4gICAgICBpbnRlbnQucHJvdmlkZXIgPSBwYXJhbXMucHJvdmlkZXI7XG4gICAgfVxuICAgIGlmIChwYXJhbXMuY29tcGxpYW5jZSkge1xuICAgICAgaW50ZW50LmNvbXBsaWFuY2UgPSBwYXJhbXMuY29tcGxpYW5jZTtcbiAgICB9XG4gICAgaWYgKHBhcmFtcy5yZWdpc3RyYXIpIHtcbiAgICAgIGludGVudC5yZWdpc3RyYXIgPSBwYXJhbXMucmVnaXN0cmFyO1xuICAgIH1cbiAgICBpZiAocGFyYW1zLmNsaWVudE9uYm9hcmRlcikge1xuICAgICAgaW50ZW50LmNsaWVudE9uYm9hcmRlciA9IHBhcmFtcy5jbGllbnRPbmJvYXJkZXI7XG4gICAgfVxuICAgIGlmIChwYXJhbXMuZXhwaXJhdGlvbklzbykge1xuICAgICAgaW50ZW50LmV4cGlyYXRpb25Jc28gPSBwYXJhbXMuZXhwaXJhdGlvbklzbztcbiAgICB9XG4gIH1cbn1cbiJdfQ==
@@ -59,7 +59,7 @@ export declare class AllocationAllocateBuilder extends TransactionBuilder {
59
59
  * @returns The current builder instance for chaining.
60
60
  * @throws Error if id is empty.
61
61
  */
62
- contractId(id: string): this;
62
+ contractId(id: string | null): this;
63
63
  /**
64
64
  * Sets the trade id
65
65
  * @param id - trade id
@@ -1 +1 @@
1
- {"version":3,"file":"allocationAllocateBuilder.d.ts","sourceRoot":"","sources":["../../../src/lib/allocationAllocateBuilder.ts"],"names":[],"mappings":"AAAA,OAAO,EAA2B,SAAS,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AACtF,OAAO,EAAE,QAAQ,IAAI,UAAU,EAAE,MAAM,gBAAgB,CAAC;AACxD,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AACxD,OAAO,EAAE,+BAA+B,EAAE,4BAA4B,EAAE,MAAM,SAAS,CAAC;AAGxF,qBAAa,yBAA0B,SAAQ,kBAAkB;IAC/D,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,cAAc,CAAS;IAC/B,OAAO,CAAC,eAAe,CAAS;IAChC,OAAO,CAAC,aAAa,CAAS;IAC9B,OAAO,CAAC,gBAAgB,CAAS;IACjC,OAAO,CAAC,cAAc,CAAS;IAC/B,OAAO,CAAC,QAAQ,CAAC,CAAS;gBAEd,WAAW,EAAE,QAAQ,CAAC,UAAU,CAAC;IAI7C,WAAW,CAAC,EAAE,EAAE,WAAW,GAAG,IAAI;IAKlC,IAAI,eAAe,IAAI,eAAe,CAErC;IAED,kBAAkB,IAAI,IAAI;IAI1B,cAAc,CAAC,WAAW,EAAE,4BAA4B,GAAG,IAAI;IAI/D,kBAAkB;IAClB,YAAY,CAAC,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,GAAG,IAAI;IAU3D;;;;;;;OAOG;IACH,SAAS,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI;IAS3B;;;;;OAKG;IACH,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAQ5B;;;;;OAKG;IACH,KAAK,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAQ1B;;;;;OAKG;IACH,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI;IAQ5B;;;;;OAKG;IACH,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI;IAQ5B;;;;;OAKG;IACH,OAAO,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI;IAQzB;;;;;OAKG;IACH,aAAa,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI;IAQ/B;;;;;OAKG;IACH,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;IAQtC;;;;;OAKG;IACH,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;IAQpC;;;;;OAKG;IACH,aAAa,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI;IAQ/B;;;;;OAKG;IACH,eAAe,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI;IAQjC;;;;OAIG;IACH,OAAO,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAK9B;;;;;OAKG;IACH,eAAe,IAAI,+BAA+B;IAqBlD;;;;;OAKG;IACH,OAAO,CAAC,QAAQ;CAajB"}
1
+ {"version":3,"file":"allocationAllocateBuilder.d.ts","sourceRoot":"","sources":["../../../src/lib/allocationAllocateBuilder.ts"],"names":[],"mappings":"AAAA,OAAO,EAA2B,SAAS,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AACtF,OAAO,EAAE,QAAQ,IAAI,UAAU,EAAE,MAAM,gBAAgB,CAAC;AACxD,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AACxD,OAAO,EAAE,+BAA+B,EAAE,4BAA4B,EAAE,MAAM,SAAS,CAAC;AAGxF,qBAAa,yBAA0B,SAAQ,kBAAkB;IAC/D,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,WAAW,CAA4B;IAC/C,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,cAAc,CAAS;IAC/B,OAAO,CAAC,eAAe,CAAS;IAChC,OAAO,CAAC,aAAa,CAAS;IAC9B,OAAO,CAAC,gBAAgB,CAAS;IACjC,OAAO,CAAC,cAAc,CAAS;IAC/B,OAAO,CAAC,QAAQ,CAAC,CAAS;gBAEd,WAAW,EAAE,QAAQ,CAAC,UAAU,CAAC;IAI7C,WAAW,CAAC,EAAE,EAAE,WAAW,GAAG,IAAI;IAKlC,IAAI,eAAe,IAAI,eAAe,CAErC;IAED,kBAAkB,IAAI,IAAI;IAI1B,cAAc,CAAC,WAAW,EAAE,4BAA4B,GAAG,IAAI;IAI/D,kBAAkB;IAClB,YAAY,CAAC,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,GAAG,IAAI;IAU3D;;;;;;;OAOG;IACH,SAAS,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI;IAS3B;;;;;OAKG;IACH,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAQ5B;;;;;OAKG;IACH,KAAK,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAQ1B;;;;;OAKG;IACH,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI;IAQ5B;;;;;OAKG;IACH,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI;IAQnC;;;;;OAKG;IACH,OAAO,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI;IAQzB;;;;;OAKG;IACH,aAAa,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI;IAQ/B;;;;;OAKG;IACH,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;IAQtC;;;;;OAKG;IACH,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;IAQpC;;;;;OAKG;IACH,aAAa,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI;IAQ/B;;;;;OAKG;IACH,eAAe,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI;IAQjC;;;;OAIG;IACH,OAAO,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAK9B;;;;;OAKG;IACH,eAAe,IAAI,+BAA+B;IAqBlD;;;;;OAKG;IACH,OAAO,CAAC,QAAQ;CAajB"}
@@ -96,10 +96,10 @@ class AllocationAllocateBuilder extends transactionBuilder_1.TransactionBuilder
96
96
  * @throws Error if id is empty.
97
97
  */
98
98
  contractId(id) {
99
- if (!id || !id.trim()) {
99
+ if (id !== null && (!id || !id.trim())) {
100
100
  throw new Error('contractId must be a non-empty string');
101
101
  }
102
- this._contractId = id.trim();
102
+ this._contractId = id === null ? null : id.trim();
103
103
  return this;
104
104
  }
105
105
  /**
@@ -202,7 +202,7 @@ class AllocationAllocateBuilder extends transactionBuilder_1.TransactionBuilder
202
202
  amount: this._amount,
203
203
  token: this._token,
204
204
  operatorId: this._operatorId,
205
- contractId: this._contractId,
205
+ ...(this._contractId !== null && this._contractId !== undefined && { contractId: this._contractId }),
206
206
  tradeId: this._tradeId,
207
207
  transferLegId: this._transferLegId,
208
208
  allocateBefore: this._allocateBefore,
@@ -230,7 +230,7 @@ class AllocationAllocateBuilder extends transactionBuilder_1.TransactionBuilder
230
230
  throw new Error('token is missing');
231
231
  if (!this._operatorId)
232
232
  throw new Error('operatorId is missing');
233
- if (!this._contractId)
233
+ if (this._contractId === undefined)
234
234
  throw new Error('contractId is missing');
235
235
  if (!this._tradeId)
236
236
  throw new Error('tradeId is missing');
@@ -247,4 +247,4 @@ class AllocationAllocateBuilder extends transactionBuilder_1.TransactionBuilder
247
247
  }
248
248
  }
249
249
  exports.AllocationAllocateBuilder = AllocationAllocateBuilder;
250
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWxsb2NhdGlvbkFsbG9jYXRlQnVpbGRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9saWIvYWxsb2NhdGlvbkFsbG9jYXRlQnVpbGRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSw4Q0FBc0Y7QUFFdEYsNkRBQTBEO0FBRzFELG9EQUE0QjtBQUU1QixNQUFhLHlCQUEwQixTQUFRLHVDQUFrQjtJQWMvRCxZQUFZLFdBQWlDO1FBQzNDLEtBQUssQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUNyQixDQUFDO0lBRUQsV0FBVyxDQUFDLEVBQWU7UUFDekIsS0FBSyxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUN0QixJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztJQUM1QixDQUFDO0lBRUQsSUFBSSxlQUFlO1FBQ2pCLE9BQU8sMEJBQWUsQ0FBQyxrQkFBa0IsQ0FBQztJQUM1QyxDQUFDO0lBRUQsa0JBQWtCO1FBQ2hCLElBQUksQ0FBQyxXQUFXLENBQUMsZUFBZSxHQUFHLDBCQUFlLENBQUMsa0JBQWtCLENBQUM7SUFDeEUsQ0FBQztJQUVELGNBQWMsQ0FBQyxXQUF5QztRQUN0RCxJQUFJLENBQUMsV0FBVyxDQUFDLGNBQWMsR0FBRyxXQUFXLENBQUM7SUFDaEQsQ0FBQztJQUVELGtCQUFrQjtJQUNsQixZQUFZLENBQUMsU0FBb0IsRUFBRSxTQUFpQjtRQUNsRCxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQ3RCLE1BQU0sSUFBSSxrQ0FBdUIsQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDO1FBQzdELENBQUM7UUFDRCxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsQ0FBQyxDQUFDO1FBQ2hELE1BQU0sWUFBWSxHQUFHLGVBQUssQ0FBQyxnQkFBZ0IsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDM0QsSUFBSSxD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Q0FBQyxrQkFBa0IsQ0FBQyxDQUFDO1FBQ3RELElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVztZQUFFLE1BQU0sSUFBSSxLQUFLLENBQUMsdUJBQXVCLENBQUMsQ0FBQztRQUNoRSxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVc7WUFBRSxNQUFNLElBQUksS0FBSyxDQUFDLHVCQUF1QixDQUFDLENBQUM7UUFDaEUsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRO1lBQUUsTUFBTSxJQUFJLEtBQUssQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO1FBQzFELElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYztZQUFFLE1BQU0sSUFBSSxLQUFLLENBQUMsMEJBQTBCLENBQUMsQ0FBQztRQUN0RSxJQUFJLENBQUMsSUFBSSxDQUFDLGVBQWU7WUFBRSxNQUFNLElBQUksS0FBSyxDQUFDLDJCQUEyQixDQUFDLENBQUM7UUFDeEUsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhO1lBQUUsTUFBTSxJQUFJLEtBQUssQ0FBQyx5QkFBeUIsQ0FBQyxDQUFDO1FBQ3BFLElBQUksQ0FBQyxJQUFJLENBQUMsZ0JBQWdCO1lBQUUsTUFBTSxJQUFJLEtBQUssQ0FBQyw0QkFBNEIsQ0FBQyxDQUFDO1FBQzFFLElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYztZQUFFLE1BQU0sSUFBSSxLQUFLLENBQUMsMEJBQTBCLENBQUMsQ0FBQztJQUN4RSxDQUFDO0NBQ0Y7QUFuUUQsOERBbVFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW52YWxpZFRyYW5zYWN0aW9uRXJyb3IsIFB1YmxpY0tleSwgVHJhbnNhY3Rpb25UeXBlIH0gZnJvbSAnQGJpdGdvL3Nkay1jb3JlJztcbmltcG9ydCB7IEJhc2VDb2luIGFzIENvaW5Db25maWcgfSBmcm9tICdAYml0Z28vc3RhdGljcyc7XG5pbXBvcnQgeyBUcmFuc2FjdGlvbkJ1aWxkZXIgfSBmcm9tICcuL3RyYW5zYWN0aW9uQnVpbGRlcic7XG5pbXBvcnQgeyBUcmFuc2FjdGlvbiB9IGZyb20gJy4vdHJhbnNhY3Rpb24vdHJhbnNhY3Rpb24nO1xuaW1wb3J0IHsgQ2FudG9uQWxsb2NhdGlvbkFsbG9jYXRlUmVxdWVzdCwgQ2FudG9uUHJlcGFyZUNvbW1hbmRSZXNwb25zZSB9IGZyb20gJy4vaWZhY2UnO1xuaW1wb3J0IHV0aWxzIGZyb20gJy4vdXRpbHMnO1xuXG5leHBvcnQgY2xhc3MgQWxsb2NhdGlvbkFsbG9jYXRlQnVpbGRlciBleHRlbmRzIFRyYW5zYWN0aW9uQnVpbGRlciB7XG4gIHByaXZhdGUgX2NvbW1hbmRJZDogc3RyaW5nO1xuICBwcml2YXRlIF9hbW91bnQ6IG51bWJlcjtcbiAgcHJpdmF0ZSBfdG9rZW46IHN0cmluZztcbiAgcHJpdmF0ZSBfb3BlcmF0b3JJZDogc3RyaW5nO1xuICBwcml2YXRlIF9jb250cmFjdElkOiBzdHJpbmc7XG4gIHByaXZhdGUgX3RyYWRlSWQ6IHN0cmluZztcbiAgcHJpdmF0ZSBfdHJhbnNmZXJMZWdJZDogc3RyaW5nO1xuICBwcml2YXRlIF9hbGxvY2F0ZUJlZm9yZTogc3RyaW5nO1xuICBwcml2YXRlIF9zZXR0bGVCZWZvcmU6IHN0cmluZztcbiAgcHJpdmF0ZSBfcmVjZWl2ZXJQYXJ0eUlkOiBzdHJpbmc7XG4gIHByaXZhdGUgX3NlbmRlclBhcnR5SWQ6IHN0cmluZztcbiAgcHJpdmF0ZSBfY29tbWVudD86IHN0cmluZztcblxuICBjb25zdHJ1Y3RvcihfY29pbkNvbmZpZzogUmVhZG9ubHk8Q29pbkNvbmZpZz4pIHtcbiAgICBzdXBlcihfY29pbkNvbmZpZyk7XG4gIH1cblxuICBpbml0QnVpbGRlcih0eDogVHJhbnNhY3Rpb24pOiB2b2lkIHtcbiAgICBzdXBlci5pbml0QnVpbGRlcih0eCk7XG4gICAgdGhpcy5zZXRUcmFuc2FjdGlvblR5cGUoKTtcbiAgfVxuXG4gIGdldCB0cmFuc2FjdGlvblR5cGUoKTogVHJhbnNhY3Rpb25UeXBlIHtcbiAgICByZXR1cm4gVHJhbnNhY3Rpb25UeXBlLkFsbG9jYXRpb25BbGxvY2F0ZTtcbiAgfVxuXG4gIHNldFRyYW5zYWN0aW9uVHlwZSgpOiB2b2lkIHtcbiAgICB0aGlzLnRyYW5zYWN0aW9uLnRyYW5zYWN0aW9uVHlwZSA9IFRyYW5zYWN0aW9uVHlwZS5BbGxvY2F0aW9uQWxsb2NhdGU7XG4gIH1cblxuICBzZXRUcmFuc2FjdGlvbih0cmFuc2FjdGlvbjogQ2FudG9uUHJlcGFyZUNvbW1hbmRSZXNwb25zZSk6IHZvaWQge1xuICAgIHRoaXMudHJhbnNhY3Rpb24ucHJlcGFyZUNvbW1hbmQgPSB0cmFuc2FjdGlvbjtcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdERvYyAqL1xuICBhZGRTaWduYXR1cmUocHVibGljS2V5OiBQdWJsaWNLZXksIHNpZ25hdHVyZTogQnVmZmVyKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLnRyYW5zYWN0aW9uKSB7XG4gICAgICB0aHJvdyBuZXcgSW52YWxpZFRyYW5zYWN0aW9uRXJyb3IoJ3RyYW5zYWN0aW9uIGlzIGVtcHR5IScpO1xuICAgIH1cbiAgICB0aGlzLl9zaWduYXR1cmVzLnB1c2goeyBwdWJsaWNLZXksIHNpZ25hdHVyZSB9KTtcbiAgICBjb25zdCBwdWJLZXlCYXNlNjQgPSB1dGlscy5nZXRCYXNlNjRGcm9tSGV4KHB1YmxpY0tleS5wdWIpO1xuICAgIHRoaXMudHJhbnNhY3Rpb24uc2lnbmVyRmluZ2VycHJpbnQgPSB1dGlscy5nZXRBZGRyZXNzRnJvbVB1YmxpY0tleShwdWJLZXlCYXNlNjQpO1xuICAgIHRoaXMudHJhbnNhY3Rpb24uc2lnbmF0dXJlcyA9IHNpZ25hdHVyZS50b1N0cmluZygnYmFzZTY0Jyk7XG4gIH1cblxuICAvKipcbiAgICogU2V0cyB0aGUgdW5pcXVlIGNvbW1hbmQgaWQgZm9yIHRoZSBhbGxvY2F0aW9uXG4gICAqIEFsc28gc2V0cyB0aGUgX2lkIG9mIHRoZSB0cmFuc2FjdGlvblxuICAgKlxuICAgKiBAcGFyYW0gaWQgLSBBIHV1aWRcbiAgICogQHJldHVybnMgVGhlIGN1cnJlbnQgYnVpbGRlciBpbnN0YW5jZSBmb3IgY2hhaW5pbmcuXG4gICAqIEB0aHJvd3MgRXJyb3IgaWYgaWQgaXMgZW1wdHkuXG4gICAqL1xuICBjb21tYW5kSWQoaWQ6IHN0cmluZyk6IHRoaXMge1xuICAgIGlmICghaWQgfHwgIWlkLnRyaW0oKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdjb21tYW5kSWQgbXVzdCBiZSBhIG5vbi1lbXB0eSBzdHJpbmcnKTtcbiAgICB9XG4gICAgdGhpcy5fY29tbWFuZElkID0gaWQudHJpbSgpO1xuICAgIHRoaXMudHJhbnNhY3Rpb24uaWQgPSBpZC50cmltKCk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKipcbiAgICogU2V0cyB0aGUgYWxsb2NhdGlvbiBhbW91bnRcbiAgICogQHBhcmFtIGFtb3VudCAtIGFsbG9jYXRpb24gYW1vdW50XG4gICAqIEByZXR1cm5zIFRoZSBjdXJyZW50IGJ1aWxkZXIgaW5zdGFuY2UgZm9yIGNoYWluaW5nLlxuICAgKiBAdGhyb3dzIEVycm9yIGlmIGFtb3VudCBpcyBub3QgcG9zaXRpdmVcbiAgICovXG4gIGFtb3VudChhbW91bnQ6IG51bWJlcik6IHRoaXMge1xuICAgIGlmICghYW1vdW50IHx8IGFtb3VudCA8IDApIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignYW1vdW50IG11c3QgYmUgYSBwb3NpdGl2ZSBudW1iZXInKTtcbiAgICB9XG4gICAgdGhpcy5fYW1vdW50ID0gYW1vdW50O1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldHMgdGhlIHRva2VuIGZvciB0aGUgYWxsb2NhdGlvblxuICAgKiBAcGFyYW0gdG9rZW4gLSB0b2tlbiBpZGVudGlmaWVyXG4gICAqIEByZXR1cm5zIFRoZSBjdXJyZW50IGJ1aWxkZXIgaW5zdGFuY2UgZm9yIGNoYWluaW5nLlxuICAgKiBAdGhyb3dzIEVycm9yIGlmIHRva2VuIGlzIGVtcHR5LlxuICAgKi9cbiAgdG9rZW4odG9rZW46IHN0cmluZyk6IHRoaXMge1xuICAgIGlmICghdG9rZW4gfHwgIXRva2VuLnRyaW0oKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCd0b2tlbiBtdXN0IGJlIGEgbm9uLWVtcHR5IHN0cmluZycpO1xuICAgIH1cbiAgICB0aGlzLl90b2tlbiA9IHRva2VuLnRyaW0oKTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXRzIHRoZSBvcGVyYXRvciBwYXJ0eSBpZFxuICAgKiBAcGFyYW0gaWQgLSBvcGVyYXRvciBwYXJ0eSBpZFxuICAgKiBAcmV0dXJucyBUaGUgY3VycmVudCBidWlsZGVyIGluc3RhbmNlIGZvciBjaGFpbmluZy5cbiAgICogQHRocm93cyBFcnJvciBpZiBpZCBpcyBlbXB0eS5cbiAgICovXG4gIG9wZXJhdG9ySWQoaWQ6IHN0cmluZyk6IHRoaXMge1xuICAgIGlmICghaWQgfHwgIWlkLnRyaW0oKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdvcGVyYXRvcklkIG11c3QgYmUgYSBub24tZW1wdHkgc3RyaW5nJyk7XG4gICAgfVxuICAgIHRoaXMuX29wZXJhdG9ySWQgPSBpZC50cmltKCk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKipcbiAgICogU2V0cyB0aGUgY29udHJhY3QgaWRcbiAgICogQHBhcmFtIGlkIC0gY2FudG9uIGNvbnRyYWN0IGlkXG4gICAqIEByZXR1cm5zIFRoZSBjdXJyZW50IGJ1aWxkZXIgaW5zdGFuY2UgZm9yIGNoYWluaW5nLlxuICAgKiBAdGhyb3dzIEVycm9yIGlmIGlkIGlzIGVtcHR5LlxuICAgKi9cbiAgY29udHJhY3RJZChpZDogc3RyaW5nKTogdGhpcyB7XG4gICAgaWYgKCFpZCB8fCAhaWQudHJpbSgpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ2NvbnRyYWN0SWQgbXVzdCBiZSBhIG5vbi1lbXB0eSBzdHJpbmcnKTtcbiAgICB9XG4gICAgdGhpcy5fY29udHJhY3RJZCA9IGlkLnRyaW0oKTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXRzIHRoZSB0cmFkZSBpZFxuICAgKiBAcGFyYW0gaWQgLSB0cmFkZSBpZFxuICAgKiBAcmV0dXJucyBUaGUgY3VycmVudCBidWlsZGVyIGluc3RhbmNlIGZvciBjaGFpbmluZy5cbiAgICogQHRocm93cyBFcnJvciBpZiBpZCBpcyBlbXB0eS5cbiAgICovXG4gIHRyYWRlSWQoaWQ6IHN0cmluZyk6IHRoaXMge1xuICAgIGlmICghaWQgfHwgIWlkLnRyaW0oKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCd0cmFkZUlkIG11c3QgYmUgYSBub24tZW1wdHkgc3RyaW5nJyk7XG4gICAgfVxuICAgIHRoaXMuX3RyYWRlSWQgPSBpZC50cmltKCk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKipcbiAgICogU2V0cyB0aGUgdHJhbnNmZXIgbGVnIGlkIChlLmcuIGAke3RyYWRlSWR9LXNlY3VyaXR5LWxlZ2Agb3IgYCR7dHJhZGVJZH0tY2FzaC1sZWdgKVxuICAgKiBAcGFyYW0gaWQgLSB0cmFuc2ZlciBsZWcgaWRcbiAgICogQHJldHVybnMgVGhlIGN1cnJlbnQgYnVpbGRlciBpbnN0YW5jZSBmb3IgY2hhaW5pbmcuXG4gICAqIEB0aHJvd3MgRXJyb3IgaWYgaWQgaXMgZW1wdHkuXG4gICAqL1xuICB0cmFuc2ZlckxlZ0lkKGlkOiBzdHJpbmcpOiB0aGlzIHtcbiAgICBpZiAoIWlkIHx8ICFpZC50cmltKCkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcigndHJhbnNmZXJMZWdJZCBtdXN0IGJlIGEgbm9uLWVtcHR5IHN0cmluZycpO1xuICAgIH1cbiAgICB0aGlzLl90cmFuc2ZlckxlZ0lkID0gaWQudHJpbSgpO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldHMgdGhlIGFsbG9jYXRlLWJlZm9yZSBkZWFkbGluZSAoSVNPIDg2MDEpXG4gICAqIEBwYXJhbSBkZWFkbGluZSAtIGFsbG9jYXRpb24gZGVhZGxpbmVcbiAgICogQHJldHVybnMgVGhlIGN1cnJlbnQgYnVpbGRlciBpbnN0YW5jZSBmb3IgY2hhaW5pbmcuXG4gICAqIEB0aHJvd3MgRXJyb3IgaWYgZGVhZGxpbmUgaXMgZW1wdHkuXG4gICAqL1xuICBhbGxvY2F0ZUJlZm9yZShkZWFkbGluZTogc3RyaW5nKTogdGhpcyB7XG4gICAgaWYgKCFkZWFkbGluZSB8fCAhZGVhZGxpbmUudHJpbSgpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ2FsbG9jYXRlQmVmb3JlIG11c3QgYmUgYSBub24tZW1wdHkgc3RyaW5nJyk7XG4gICAgfVxuICAgIHRoaXMuX2FsbG9jYXRlQmVmb3JlID0gZGVhZGxpbmUudHJpbSgpO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldHMgdGhlIHNldHRsZS1iZWZvcmUgZGVhZGxpbmUgKElTTyA4NjAxKVxuICAgKiBAcGFyYW0gZGVhZGxpbmUgLSBzZXR0bGVtZW50IGRlYWRsaW5lXG4gICAqIEByZXR1cm5zIFRoZSBjdXJyZW50IGJ1aWxkZXIgaW5zdGFuY2UgZm9yIGNoYWluaW5nLlxuICAgKiBAdGhyb3dzIEVycm9yIGlmIGRlYWRsaW5lIGlzIGVtcHR5LlxuICAgKi9cbiAgc2V0dGxlQmVmb3JlKGRlYWRsaW5lOiBzdHJpbmcpOiB0aGlzIHtcbiAgICBpZiAoIWRlYWRsaW5lIHx8ICFkZWFkbGluZS50cmltKCkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignc2V0dGxlQmVmb3JlIG11c3QgYmUgYSBub24tZW1wdHkgc3RyaW5nJyk7XG4gICAgfVxuICAgIHRoaXMuX3NldHRsZUJlZm9yZSA9IGRlYWRsaW5lLnRyaW0oKTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXRzIHRoZSBzZW5kZXIgcGFydHkgaWRcbiAgICogQHBhcmFtIGlkIC0gc2VuZGVyIHBhcnR5IGlkXG4gICAqIEByZXR1cm5zIFRoZSBjdXJyZW50IGJ1aWxkZXIgaW5zdGFuY2UgZm9yIGNoYWluaW5nLlxuICAgKiBAdGhyb3dzIEVycm9yIGlmIGlkIGlzIGVtcHR5LlxuICAgKi9cbiAgc2VuZGVyUGFydHlJZChpZDogc3RyaW5nKTogdGhpcyB7XG4gICAgaWYgKCFpZCB8fCAhaWQudHJpbSgpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ3NlbmRlclBhcnR5SWQgbXVzdCBiZSBhIG5vbi1lbXB0eSBzdHJpbmcnKTtcbiAgICB9XG4gICAgdGhpcy5fc2VuZGVyUGFydHlJZCA9IGlkLnRyaW0oKTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXRzIHRoZSByZWNlaXZlciBwYXJ0eSBpZFxuICAgKiBAcGFyYW0gaWQgLSByZWNlaXZlciBwYXJ0eSBpZFxuICAgKiBAcmV0dXJucyBUaGUgY3VycmVudCBidWlsZGVyIGluc3RhbmNlIGZvciBjaGFpbmluZy5cbiAgICogQHRocm93cyBFcnJvciBpZiBpZCBpcyBlbXB0eS5cbiAgICovXG4gIHJlY2VpdmVyUGFydHlJZChpZDogc3RyaW5nKTogdGhpcyB7XG4gICAgaWYgKCFpZCB8fCAhaWQudHJpbSgpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ3JlY2VpdmVyUGFydHlJZCBtdXN0IGJlIGEgbm9uLWVtcHR5IHN0cmluZycpO1xuICAgIH1cbiAgICB0aGlzLl9yZWNlaXZlclBhcnR5SWQgPSBpZC50cmltKCk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKipcbiAgICogU2V0cyB0aGUgb3B0aW9uYWwgY29tbWVudFxuICAgKiBAcGFyYW0gY29tbWVudCAtIGZyZWUtZm9ybSBjb21tZW50XG4gICAqIEByZXR1cm5zIFRoZSBjdXJyZW50IGJ1aWxkZXIgaW5zdGFuY2UgZm9yIGNoYWluaW5nLlxuICAgKi9cbiAgY29tbWVudChjb21tZW50OiBzdHJpbmcpOiB0aGlzIHtcbiAgICB0aGlzLl9jb21tZW50ID0gY29tbWVudDtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKlxuICAgKiBCdWlsZHMgYW5kIHJldHVybnMgdGhlIENhbnRvbkFsbG9jYXRpb25BbGxvY2F0ZVJlcXVlc3Qgb2JqZWN0IGZyb20gdGhlIGJ1aWxkZXIncyBpbnRlcm5hbCBzdGF0ZS5cbiAgICpcbiAgICogQHJldHVybnMge0NhbnRvbkFsbG9jYXRpb25BbGxvY2F0ZVJlcXVlc3R9IC0gQSBmdWxseSBjb25zdHJ1Y3RlZCBhbmQgdmFsaWRhdGVkIHJlcXVlc3Qgb2JqZWN0LlxuICAgKiBAdGhyb3dzIHtFcnJvcn0gSWYgYW55IHJlcXVpcmVkIGZpZWxkIGlzIG1pc3Npbmcgb3IgZmFpbHMgdmFsaWRhdGlvbi5cbiAgICovXG4gIHRvUmVxdWVzdE9iamVjdCgpOiBDYW50b25BbGxvY2F0aW9uQWxsb2NhdGVSZXF1ZXN0IHtcbiAgICB0aGlzLnZhbGlkYXRlKCk7XG4gICAgY29uc3QgcmVzdWx0OiBDYW50b25BbGxvY2F0aW9uQWxsb2NhdGVSZXF1ZXN0ID0ge1xuICAgICAgY29tbWFuZElkOiB0aGlzLl9jb21tYW5kSWQsXG4gICAgICBhbW91bnQ6IHRoaXMuX2Ftb3VudCxcbiAgICAgIHRva2VuOiB0aGlzLl90b2tlbixcbiAgICAgIG9wZXJhdG9ySWQ6IHRoaXMuX29wZXJhdG9ySWQsXG4gICAgICBjb250cmFjdElkOiB0aGlzLl9jb250cmFjdElkLFxuICAgICAgdHJhZGVJZDogdGhpcy5fdHJhZGVJZCxcbiAgICAgIHRyYW5zZmVyTGVnSWQ6IHRoaXMuX3RyYW5zZmVyTGVnSWQsXG4gICAgICBhbGxvY2F0ZUJlZm9yZTogdGhpcy5fYWxsb2NhdGVCZWZvcmUsXG4gICAgICBzZXR0bGVCZWZvcmU6IHRoaXMuX3NldHRsZUJlZm9yZSxcbiAgICAgIHJlY2VpdmVyUGFydHlJZDogdGhpcy5fcmVjZWl2ZXJQYXJ0eUlkLFxuICAgICAgc2VuZGVyUGFydHlJZDogdGhpcy5fc2VuZGVyUGFydHlJZCxcbiAgICB9O1xuICAgIGlmICh0aGlzLl9jb21tZW50ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHJlc3VsdC5jb21tZW50ID0gdGhpcy5fY29tbWVudDtcbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIC8qKlxuICAgKiBWYWxpZGF0ZXMgdGhlIGludGVybmFsIHN0YXRlIG9mIHRoZSBidWlsZGVyIGJlZm9yZSBidWlsZGluZyB0aGUgcmVxdWVzdCBvYmplY3QuXG4gICAqXG4gICAqIEBwcml2YXRlXG4gICAqIEB0aHJvd3Mge0Vycm9yfSBJZiBhbnkgcmVxdWlyZWQgZmllbGQgaXMgbWlzc2luZy5cbiAgICovXG4gIHByaXZhdGUgdmFsaWRhdGUoKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLl9jb21tYW5kSWQpIHRocm93IG5ldyBFcnJvcignY29tbWFuZElkIGlzIG1pc3NpbmcnKTtcbiAgICBpZiAoIXRoaXMuX2Ftb3VudCkgdGhyb3cgbmV3IEVycm9yKCdhbW91bnQgaXMgbWlzc2luZycpO1xuICAgIGlmICghdGhpcy5fdG9rZW4pIHRocm93IG5ldyBFcnJvcigndG9rZW4gaXMgbWlzc2luZycpO1xuICAgIGlmICghdGhpcy5fb3BlcmF0b3JJZCkgdGhyb3cgbmV3IEVycm9yKCdvcGVyYXRvcklkIGlzIG1pc3NpbmcnKTtcbiAgICBpZiAoIXRoaXMuX2NvbnRyYWN0SWQpIHRocm93IG5ldyBFcnJvcignY29udHJhY3RJZCBpcyBtaXNzaW5nJyk7XG4gICAgaWYgKCF0aGlzLl90cmFkZUlkKSB0aHJvdyBuZXcgRXJyb3IoJ3RyYWRlSWQgaXMgbWlzc2luZycpO1xuICAgIGlmICghdGhpcy5fdHJhbnNmZXJMZWdJZCkgdGhyb3cgbmV3IEVycm9yKCd0cmFuc2ZlckxlZ0lkIGlzIG1pc3NpbmcnKTtcbiAgICBpZiAoIXRoaXMuX2FsbG9jYXRlQmVmb3JlKSB0aHJvdyBuZXcgRXJyb3IoJ2FsbG9jYXRlQmVmb3JlIGlzIG1pc3NpbmcnKTtcbiAgICBpZiAoIXRoaXMuX3NldHRsZUJlZm9yZSkgdGhyb3cgbmV3IEVycm9yKCdzZXR0bGVCZWZvcmUgaXMgbWlzc2luZycpO1xuICAgIGlmICghdGhpcy5fcmVjZWl2ZXJQYXJ0eUlkKSB0aHJvdyBuZXcgRXJyb3IoJ3JlY2VpdmVyUGFydHlJZCBpcyBtaXNzaW5nJyk7XG4gICAgaWYgKCF0aGlzLl9zZW5kZXJQYXJ0eUlkKSB0aHJvdyBuZXcgRXJyb3IoJ3NlbmRlclBhcnR5SWQgaXMgbWlzc2luZycpO1xuICB9XG59XG4iXX0=
250
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWxsb2NhdGlvbkFsbG9jYXRlQnVpbGRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9saWIvYWxsb2NhdGlvbkFsbG9jYXRlQnVpbGRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSw4Q0FBc0Y7QUFFdEYsNkRBQTBEO0FBRzFELG9EQUE0QjtBQUU1QixNQUFhLHlCQUEwQixTQUFRLHVDQUFrQjtJQWMvRCxZQUFZLFdBQWlDO1FBQzNDLEtBQUssQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUNyQixDQUFDO0lBRUQsV0FBVyxDQUFDLEVBQWU7UUFDekIsS0FBSyxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUN0QixJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztJQUM1QixDQUFDO0lBRUQsSUFBSSxlQUFlO1FBQ2pCLE9BQU8sMEJBQWUsQ0FBQyxrQkFBa0IsQ0FBQztJQUM1QyxDQUFDO0lBRUQsa0JBQWtCO1FBQ2hCLElBQUksQ0FBQyxXQUFXLENBQUMsZUFBZSxHQUFHLDBCQUFlLENBQUMsa0JBQWtCLENBQUM7SUFDeEUsQ0FBQztJQUVELGNBQWMsQ0FBQyxXQUF5QztRQUN0RCxJQUFJLENBQUMsV0FBVyxDQUFDLGNBQWMsR0FBRyxXQUFXLENBQUM7SUFDaEQsQ0FBQztJQUVELGtCQUFrQjtJQUNsQixZQUFZLENBQUMsU0FBb0IsRUFBRSxTQUFpQjtRQUNsRCxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQ3RCLE1BQU0sSUFBSSxrQ0FBdUIsQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDO1FBQzdELENBQUM7UUFDRCxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsQ0FBQyxDQUFDO1FBQ2hELE1BQU0sWUFBWSxHQUFHLGVBQUssQ0FBQyxnQkFBZ0IsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDM0QsSUFBSSxD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WUFBRSxNQUFNLElBQUksS0FBSyxDQUFDLHNCQUFzQixDQUFDLENBQUM7UUFDOUQsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPO1lBQUUsTUFBTSxJQUFJLEtBQUssQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO1FBQ3hELElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTTtZQUFFLE1BQU0sSUFBSSxLQUFLLENBQUMsa0JBQWtCLENBQUMsQ0FBQztRQUN0RCxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVc7WUFBRSxNQUFNLElBQUksS0FBSyxDQUFDLHVCQUF1QixDQUFDLENBQUM7UUFDaEUsSUFBSSxJQUFJLENBQUMsV0FBVyxLQUFLLFNBQVM7WUFBRSxNQUFNLElBQUksS0FBSyxDQUFDLHVCQUF1QixDQUFDLENBQUM7UUFDN0UsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRO1lBQUUsTUFBTSxJQUFJLEtBQUssQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO1FBQzFELElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYztZQUFFLE1BQU0sSUFBSSxLQUFLLENBQUMsMEJBQTBCLENBQUMsQ0FBQztRQUN0RSxJQUFJLENBQUMsSUFBSSxDQUFDLGVBQWU7WUFBRSxNQUFNLElBQUksS0FBSyxDQUFDLDJCQUEyQixDQUFDLENBQUM7UUFDeEUsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhO1lBQUUsTUFBTSxJQUFJLEtBQUssQ0FBQyx5QkFBeUIsQ0FBQyxDQUFDO1FBQ3BFLElBQUksQ0FBQyxJQUFJLENBQUMsZ0JBQWdCO1lBQUUsTUFBTSxJQUFJLEtBQUssQ0FBQyw0QkFBNEIsQ0FBQyxDQUFDO1FBQzFFLElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYztZQUFFLE1BQU0sSUFBSSxLQUFLLENBQUMsMEJBQTBCLENBQUMsQ0FBQztJQUN4RSxDQUFDO0NBQ0Y7QUFuUUQsOERBbVFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW52YWxpZFRyYW5zYWN0aW9uRXJyb3IsIFB1YmxpY0tleSwgVHJhbnNhY3Rpb25UeXBlIH0gZnJvbSAnQGJpdGdvL3Nkay1jb3JlJztcbmltcG9ydCB7IEJhc2VDb2luIGFzIENvaW5Db25maWcgfSBmcm9tICdAYml0Z28vc3RhdGljcyc7XG5pbXBvcnQgeyBUcmFuc2FjdGlvbkJ1aWxkZXIgfSBmcm9tICcuL3RyYW5zYWN0aW9uQnVpbGRlcic7XG5pbXBvcnQgeyBUcmFuc2FjdGlvbiB9IGZyb20gJy4vdHJhbnNhY3Rpb24vdHJhbnNhY3Rpb24nO1xuaW1wb3J0IHsgQ2FudG9uQWxsb2NhdGlvbkFsbG9jYXRlUmVxdWVzdCwgQ2FudG9uUHJlcGFyZUNvbW1hbmRSZXNwb25zZSB9IGZyb20gJy4vaWZhY2UnO1xuaW1wb3J0IHV0aWxzIGZyb20gJy4vdXRpbHMnO1xuXG5leHBvcnQgY2xhc3MgQWxsb2NhdGlvbkFsbG9jYXRlQnVpbGRlciBleHRlbmRzIFRyYW5zYWN0aW9uQnVpbGRlciB7XG4gIHByaXZhdGUgX2NvbW1hbmRJZDogc3RyaW5nO1xuICBwcml2YXRlIF9hbW91bnQ6IG51bWJlcjtcbiAgcHJpdmF0ZSBfdG9rZW46IHN0cmluZztcbiAgcHJpdmF0ZSBfb3BlcmF0b3JJZDogc3RyaW5nO1xuICBwcml2YXRlIF9jb250cmFjdElkOiBzdHJpbmcgfCBudWxsIHwgdW5kZWZpbmVkO1xuICBwcml2YXRlIF90cmFkZUlkOiBzdHJpbmc7XG4gIHByaXZhdGUgX3RyYW5zZmVyTGVnSWQ6IHN0cmluZztcbiAgcHJpdmF0ZSBfYWxsb2NhdGVCZWZvcmU6IHN0cmluZztcbiAgcHJpdmF0ZSBfc2V0dGxlQmVmb3JlOiBzdHJpbmc7XG4gIHByaXZhdGUgX3JlY2VpdmVyUGFydHlJZDogc3RyaW5nO1xuICBwcml2YXRlIF9zZW5kZXJQYXJ0eUlkOiBzdHJpbmc7XG4gIHByaXZhdGUgX2NvbW1lbnQ/OiBzdHJpbmc7XG5cbiAgY29uc3RydWN0b3IoX2NvaW5Db25maWc6IFJlYWRvbmx5PENvaW5Db25maWc+KSB7XG4gICAgc3VwZXIoX2NvaW5Db25maWcpO1xuICB9XG5cbiAgaW5pdEJ1aWxkZXIodHg6IFRyYW5zYWN0aW9uKTogdm9pZCB7XG4gICAgc3VwZXIuaW5pdEJ1aWxkZXIodHgpO1xuICAgIHRoaXMuc2V0VHJhbnNhY3Rpb25UeXBlKCk7XG4gIH1cblxuICBnZXQgdHJhbnNhY3Rpb25UeXBlKCk6IFRyYW5zYWN0aW9uVHlwZSB7XG4gICAgcmV0dXJuIFRyYW5zYWN0aW9uVHlwZS5BbGxvY2F0aW9uQWxsb2NhdGU7XG4gIH1cblxuICBzZXRUcmFuc2FjdGlvblR5cGUoKTogdm9pZCB7XG4gICAgdGhpcy50cmFuc2FjdGlvbi50cmFuc2FjdGlvblR5cGUgPSBUcmFuc2FjdGlvblR5cGUuQWxsb2NhdGlvbkFsbG9jYXRlO1xuICB9XG5cbiAgc2V0VHJhbnNhY3Rpb24odHJhbnNhY3Rpb246IENhbnRvblByZXBhcmVDb21tYW5kUmVzcG9uc2UpOiB2b2lkIHtcbiAgICB0aGlzLnRyYW5zYWN0aW9uLnByZXBhcmVDb21tYW5kID0gdHJhbnNhY3Rpb247XG4gIH1cblxuICAvKiogQGluaGVyaXREb2MgKi9cbiAgYWRkU2lnbmF0dXJlKHB1YmxpY0tleTogUHVibGljS2V5LCBzaWduYXR1cmU6IEJ1ZmZlcik6IHZvaWQge1xuICAgIGlmICghdGhpcy50cmFuc2FjdGlvbikge1xuICAgICAgdGhyb3cgbmV3IEludmFsaWRUcmFuc2FjdGlvbkVycm9yKCd0cmFuc2FjdGlvbiBpcyBlbXB0eSEnKTtcbiAgICB9XG4gICAgdGhpcy5fc2lnbmF0dXJlcy5wdXNoKHsgcHVibGljS2V5LCBzaWduYXR1cmUgfSk7XG4gICAgY29uc3QgcHViS2V5QmFzZTY0ID0gdXRpbHMuZ2V0QmFzZTY0RnJvbUhleChwdWJsaWNLZXkucHViKTtcbiAgICB0aGlzLnRyYW5zYWN0aW9uLnNpZ25lckZpbmdlcnByaW50ID0gdXRpbHMuZ2V0QWRkcmVzc0Zyb21QdWJsaWNLZXkocHViS2V5QmFzZTY0KTtcbiAgICB0aGlzLnRyYW5zYWN0aW9uLnNpZ25hdHVyZXMgPSBzaWduYXR1cmUudG9TdHJpbmcoJ2Jhc2U2NCcpO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldHMgdGhlIHVuaXF1ZSBjb21tYW5kIGlkIGZvciB0aGUgYWxsb2NhdGlvblxuICAgKiBBbHNvIHNldHMgdGhlIF9pZCBvZiB0aGUgdHJhbnNhY3Rpb25cbiAgICpcbiAgICogQHBhcmFtIGlkIC0gQSB1dWlkXG4gICAqIEByZXR1cm5zIFRoZSBjdXJyZW50IGJ1aWxkZXIgaW5zdGFuY2UgZm9yIGNoYWluaW5nLlxuICAgKiBAdGhyb3dzIEVycm9yIGlmIGlkIGlzIGVtcHR5LlxuICAgKi9cbiAgY29tbWFuZElkKGlkOiBzdHJpbmcpOiB0aGlzIHtcbiAgICBpZiAoIWlkIHx8ICFpZC50cmltKCkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignY29tbWFuZElkIG11c3QgYmUgYSBub24tZW1wdHkgc3RyaW5nJyk7XG4gICAgfVxuICAgIHRoaXMuX2NvbW1hbmRJZCA9IGlkLnRyaW0oKTtcbiAgICB0aGlzLnRyYW5zYWN0aW9uLmlkID0gaWQudHJpbSgpO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldHMgdGhlIGFsbG9jYXRpb24gYW1vdW50XG4gICAqIEBwYXJhbSBhbW91bnQgLSBhbGxvY2F0aW9uIGFtb3VudFxuICAgKiBAcmV0dXJucyBUaGUgY3VycmVudCBidWlsZGVyIGluc3RhbmNlIGZvciBjaGFpbmluZy5cbiAgICogQHRocm93cyBFcnJvciBpZiBhbW91bnQgaXMgbm90IHBvc2l0aXZlXG4gICAqL1xuICBhbW91bnQoYW1vdW50OiBudW1iZXIpOiB0aGlzIHtcbiAgICBpZiAoIWFtb3VudCB8fCBhbW91bnQgPCAwKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ2Ftb3VudCBtdXN0IGJlIGEgcG9zaXRpdmUgbnVtYmVyJyk7XG4gICAgfVxuICAgIHRoaXMuX2Ftb3VudCA9IGFtb3VudDtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXRzIHRoZSB0b2tlbiBmb3IgdGhlIGFsbG9jYXRpb25cbiAgICogQHBhcmFtIHRva2VuIC0gdG9rZW4gaWRlbnRpZmllclxuICAgKiBAcmV0dXJucyBUaGUgY3VycmVudCBidWlsZGVyIGluc3RhbmNlIGZvciBjaGFpbmluZy5cbiAgICogQHRocm93cyBFcnJvciBpZiB0b2tlbiBpcyBlbXB0eS5cbiAgICovXG4gIHRva2VuKHRva2VuOiBzdHJpbmcpOiB0aGlzIHtcbiAgICBpZiAoIXRva2VuIHx8ICF0b2tlbi50cmltKCkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcigndG9rZW4gbXVzdCBiZSBhIG5vbi1lbXB0eSBzdHJpbmcnKTtcbiAgICB9XG4gICAgdGhpcy5fdG9rZW4gPSB0b2tlbi50cmltKCk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKipcbiAgICogU2V0cyB0aGUgb3BlcmF0b3IgcGFydHkgaWRcbiAgICogQHBhcmFtIGlkIC0gb3BlcmF0b3IgcGFydHkgaWRcbiAgICogQHJldHVybnMgVGhlIGN1cnJlbnQgYnVpbGRlciBpbnN0YW5jZSBmb3IgY2hhaW5pbmcuXG4gICAqIEB0aHJvd3MgRXJyb3IgaWYgaWQgaXMgZW1wdHkuXG4gICAqL1xuICBvcGVyYXRvcklkKGlkOiBzdHJpbmcpOiB0aGlzIHtcbiAgICBpZiAoIWlkIHx8ICFpZC50cmltKCkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignb3BlcmF0b3JJZCBtdXN0IGJlIGEgbm9uLWVtcHR5IHN0cmluZycpO1xuICAgIH1cbiAgICB0aGlzLl9vcGVyYXRvcklkID0gaWQudHJpbSgpO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldHMgdGhlIGNvbnRyYWN0IGlkXG4gICAqIEBwYXJhbSBpZCAtIGNhbnRvbiBjb250cmFjdCBpZFxuICAgKiBAcmV0dXJucyBUaGUgY3VycmVudCBidWlsZGVyIGluc3RhbmNlIGZvciBjaGFpbmluZy5cbiAgICogQHRocm93cyBFcnJvciBpZiBpZCBpcyBlbXB0eS5cbiAgICovXG4gIGNvbnRyYWN0SWQoaWQ6IHN0cmluZyB8IG51bGwpOiB0aGlzIHtcbiAgICBpZiAoaWQgIT09IG51bGwgJiYgKCFpZCB8fCAhaWQudHJpbSgpKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdjb250cmFjdElkIG11c3QgYmUgYSBub24tZW1wdHkgc3RyaW5nJyk7XG4gICAgfVxuICAgIHRoaXMuX2NvbnRyYWN0SWQgPSBpZCA9PT0gbnVsbCA/IG51bGwgOiBpZC50cmltKCk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKipcbiAgICogU2V0cyB0aGUgdHJhZGUgaWRcbiAgICogQHBhcmFtIGlkIC0gdHJhZGUgaWRcbiAgICogQHJldHVybnMgVGhlIGN1cnJlbnQgYnVpbGRlciBpbnN0YW5jZSBmb3IgY2hhaW5pbmcuXG4gICAqIEB0aHJvd3MgRXJyb3IgaWYgaWQgaXMgZW1wdHkuXG4gICAqL1xuICB0cmFkZUlkKGlkOiBzdHJpbmcpOiB0aGlzIHtcbiAgICBpZiAoIWlkIHx8ICFpZC50cmltKCkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcigndHJhZGVJZCBtdXN0IGJlIGEgbm9uLWVtcHR5IHN0cmluZycpO1xuICAgIH1cbiAgICB0aGlzLl90cmFkZUlkID0gaWQudHJpbSgpO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldHMgdGhlIHRyYW5zZmVyIGxlZyBpZCAoZS5nLiBgJHt0cmFkZUlkfS1zZWN1cml0eS1sZWdgIG9yIGAke3RyYWRlSWR9LWNhc2gtbGVnYClcbiAgICogQHBhcmFtIGlkIC0gdHJhbnNmZXIgbGVnIGlkXG4gICAqIEByZXR1cm5zIFRoZSBjdXJyZW50IGJ1aWxkZXIgaW5zdGFuY2UgZm9yIGNoYWluaW5nLlxuICAgKiBAdGhyb3dzIEVycm9yIGlmIGlkIGlzIGVtcHR5LlxuICAgKi9cbiAgdHJhbnNmZXJMZWdJZChpZDogc3RyaW5nKTogdGhpcyB7XG4gICAgaWYgKCFpZCB8fCAhaWQudHJpbSgpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ3RyYW5zZmVyTGVnSWQgbXVzdCBiZSBhIG5vbi1lbXB0eSBzdHJpbmcnKTtcbiAgICB9XG4gICAgdGhpcy5fdHJhbnNmZXJMZWdJZCA9IGlkLnRyaW0oKTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXRzIHRoZSBhbGxvY2F0ZS1iZWZvcmUgZGVhZGxpbmUgKElTTyA4NjAxKVxuICAgKiBAcGFyYW0gZGVhZGxpbmUgLSBhbGxvY2F0aW9uIGRlYWRsaW5lXG4gICAqIEByZXR1cm5zIFRoZSBjdXJyZW50IGJ1aWxkZXIgaW5zdGFuY2UgZm9yIGNoYWluaW5nLlxuICAgKiBAdGhyb3dzIEVycm9yIGlmIGRlYWRsaW5lIGlzIGVtcHR5LlxuICAgKi9cbiAgYWxsb2NhdGVCZWZvcmUoZGVhZGxpbmU6IHN0cmluZyk6IHRoaXMge1xuICAgIGlmICghZGVhZGxpbmUgfHwgIWRlYWRsaW5lLnRyaW0oKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdhbGxvY2F0ZUJlZm9yZSBtdXN0IGJlIGEgbm9uLWVtcHR5IHN0cmluZycpO1xuICAgIH1cbiAgICB0aGlzLl9hbGxvY2F0ZUJlZm9yZSA9IGRlYWRsaW5lLnRyaW0oKTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXRzIHRoZSBzZXR0bGUtYmVmb3JlIGRlYWRsaW5lIChJU08gODYwMSlcbiAgICogQHBhcmFtIGRlYWRsaW5lIC0gc2V0dGxlbWVudCBkZWFkbGluZVxuICAgKiBAcmV0dXJucyBUaGUgY3VycmVudCBidWlsZGVyIGluc3RhbmNlIGZvciBjaGFpbmluZy5cbiAgICogQHRocm93cyBFcnJvciBpZiBkZWFkbGluZSBpcyBlbXB0eS5cbiAgICovXG4gIHNldHRsZUJlZm9yZShkZWFkbGluZTogc3RyaW5nKTogdGhpcyB7XG4gICAgaWYgKCFkZWFkbGluZSB8fCAhZGVhZGxpbmUudHJpbSgpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ3NldHRsZUJlZm9yZSBtdXN0IGJlIGEgbm9uLWVtcHR5IHN0cmluZycpO1xuICAgIH1cbiAgICB0aGlzLl9zZXR0bGVCZWZvcmUgPSBkZWFkbGluZS50cmltKCk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKipcbiAgICogU2V0cyB0aGUgc2VuZGVyIHBhcnR5IGlkXG4gICAqIEBwYXJhbSBpZCAtIHNlbmRlciBwYXJ0eSBpZFxuICAgKiBAcmV0dXJucyBUaGUgY3VycmVudCBidWlsZGVyIGluc3RhbmNlIGZvciBjaGFpbmluZy5cbiAgICogQHRocm93cyBFcnJvciBpZiBpZCBpcyBlbXB0eS5cbiAgICovXG4gIHNlbmRlclBhcnR5SWQoaWQ6IHN0cmluZyk6IHRoaXMge1xuICAgIGlmICghaWQgfHwgIWlkLnRyaW0oKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdzZW5kZXJQYXJ0eUlkIG11c3QgYmUgYSBub24tZW1wdHkgc3RyaW5nJyk7XG4gICAgfVxuICAgIHRoaXMuX3NlbmRlclBhcnR5SWQgPSBpZC50cmltKCk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKipcbiAgICogU2V0cyB0aGUgcmVjZWl2ZXIgcGFydHkgaWRcbiAgICogQHBhcmFtIGlkIC0gcmVjZWl2ZXIgcGFydHkgaWRcbiAgICogQHJldHVybnMgVGhlIGN1cnJlbnQgYnVpbGRlciBpbnN0YW5jZSBmb3IgY2hhaW5pbmcuXG4gICAqIEB0aHJvd3MgRXJyb3IgaWYgaWQgaXMgZW1wdHkuXG4gICAqL1xuICByZWNlaXZlclBhcnR5SWQoaWQ6IHN0cmluZyk6IHRoaXMge1xuICAgIGlmICghaWQgfHwgIWlkLnRyaW0oKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdyZWNlaXZlclBhcnR5SWQgbXVzdCBiZSBhIG5vbi1lbXB0eSBzdHJpbmcnKTtcbiAgICB9XG4gICAgdGhpcy5fcmVjZWl2ZXJQYXJ0eUlkID0gaWQudHJpbSgpO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldHMgdGhlIG9wdGlvbmFsIGNvbW1lbnRcbiAgICogQHBhcmFtIGNvbW1lbnQgLSBmcmVlLWZvcm0gY29tbWVudFxuICAgKiBAcmV0dXJucyBUaGUgY3VycmVudCBidWlsZGVyIGluc3RhbmNlIGZvciBjaGFpbmluZy5cbiAgICovXG4gIGNvbW1lbnQoY29tbWVudDogc3RyaW5nKTogdGhpcyB7XG4gICAgdGhpcy5fY29tbWVudCA9IGNvbW1lbnQ7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKipcbiAgICogQnVpbGRzIGFuZCByZXR1cm5zIHRoZSBDYW50b25BbGxvY2F0aW9uQWxsb2NhdGVSZXF1ZXN0IG9iamVjdCBmcm9tIHRoZSBidWlsZGVyJ3MgaW50ZXJuYWwgc3RhdGUuXG4gICAqXG4gICAqIEByZXR1cm5zIHtDYW50b25BbGxvY2F0aW9uQWxsb2NhdGVSZXF1ZXN0fSAtIEEgZnVsbHkgY29uc3RydWN0ZWQgYW5kIHZhbGlkYXRlZCByZXF1ZXN0IG9iamVjdC5cbiAgICogQHRocm93cyB7RXJyb3J9IElmIGFueSByZXF1aXJlZCBmaWVsZCBpcyBtaXNzaW5nIG9yIGZhaWxzIHZhbGlkYXRpb24uXG4gICAqL1xuICB0b1JlcXVlc3RPYmplY3QoKTogQ2FudG9uQWxsb2NhdGlvbkFsbG9jYXRlUmVxdWVzdCB7XG4gICAgdGhpcy52YWxpZGF0ZSgpO1xuICAgIGNvbnN0IHJlc3VsdDogQ2FudG9uQWxsb2NhdGlvbkFsbG9jYXRlUmVxdWVzdCA9IHtcbiAgICAgIGNvbW1hbmRJZDogdGhpcy5fY29tbWFuZElkLFxuICAgICAgYW1vdW50OiB0aGlzLl9hbW91bnQsXG4gICAgICB0b2tlbjogdGhpcy5fdG9rZW4sXG4gICAgICBvcGVyYXRvcklkOiB0aGlzLl9vcGVyYXRvcklkLFxuICAgICAgLi4uKHRoaXMuX2NvbnRyYWN0SWQgIT09IG51bGwgJiYgdGhpcy5fY29udHJhY3RJZCAhPT0gdW5kZWZpbmVkICYmIHsgY29udHJhY3RJZDogdGhpcy5fY29udHJhY3RJZCB9KSxcbiAgICAgIHRyYWRlSWQ6IHRoaXMuX3RyYWRlSWQsXG4gICAgICB0cmFuc2ZlckxlZ0lkOiB0aGlzLl90cmFuc2ZlckxlZ0lkLFxuICAgICAgYWxsb2NhdGVCZWZvcmU6IHRoaXMuX2FsbG9jYXRlQmVmb3JlLFxuICAgICAgc2V0dGxlQmVmb3JlOiB0aGlzLl9zZXR0bGVCZWZvcmUsXG4gICAgICByZWNlaXZlclBhcnR5SWQ6IHRoaXMuX3JlY2VpdmVyUGFydHlJZCxcbiAgICAgIHNlbmRlclBhcnR5SWQ6IHRoaXMuX3NlbmRlclBhcnR5SWQsXG4gICAgfTtcbiAgICBpZiAodGhpcy5fY29tbWVudCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICByZXN1bHQuY29tbWVudCA9IHRoaXMuX2NvbW1lbnQ7XG4gICAgfVxuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICAvKipcbiAgICogVmFsaWRhdGVzIHRoZSBpbnRlcm5hbCBzdGF0ZSBvZiB0aGUgYnVpbGRlciBiZWZvcmUgYnVpbGRpbmcgdGhlIHJlcXVlc3Qgb2JqZWN0LlxuICAgKlxuICAgKiBAcHJpdmF0ZVxuICAgKiBAdGhyb3dzIHtFcnJvcn0gSWYgYW55IHJlcXVpcmVkIGZpZWxkIGlzIG1pc3NpbmcuXG4gICAqL1xuICBwcml2YXRlIHZhbGlkYXRlKCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5fY29tbWFuZElkKSB0aHJvdyBuZXcgRXJyb3IoJ2NvbW1hbmRJZCBpcyBtaXNzaW5nJyk7XG4gICAgaWYgKCF0aGlzLl9hbW91bnQpIHRocm93IG5ldyBFcnJvcignYW1vdW50IGlzIG1pc3NpbmcnKTtcbiAgICBpZiAoIXRoaXMuX3Rva2VuKSB0aHJvdyBuZXcgRXJyb3IoJ3Rva2VuIGlzIG1pc3NpbmcnKTtcbiAgICBpZiAoIXRoaXMuX29wZXJhdG9ySWQpIHRocm93IG5ldyBFcnJvcignb3BlcmF0b3JJZCBpcyBtaXNzaW5nJyk7XG4gICAgaWYgKHRoaXMuX2NvbnRyYWN0SWQgPT09IHVuZGVmaW5lZCkgdGhyb3cgbmV3IEVycm9yKCdjb250cmFjdElkIGlzIG1pc3NpbmcnKTtcbiAgICBpZiAoIXRoaXMuX3RyYWRlSWQpIHRocm93IG5ldyBFcnJvcigndHJhZGVJZCBpcyBtaXNzaW5nJyk7XG4gICAgaWYgKCF0aGlzLl90cmFuc2ZlckxlZ0lkKSB0aHJvdyBuZXcgRXJyb3IoJ3RyYW5zZmVyTGVnSWQgaXMgbWlzc2luZycpO1xuICAgIGlmICghdGhpcy5fYWxsb2NhdGVCZWZvcmUpIHRocm93IG5ldyBFcnJvcignYWxsb2NhdGVCZWZvcmUgaXMgbWlzc2luZycpO1xuICAgIGlmICghdGhpcy5fc2V0dGxlQmVmb3JlKSB0aHJvdyBuZXcgRXJyb3IoJ3NldHRsZUJlZm9yZSBpcyBtaXNzaW5nJyk7XG4gICAgaWYgKCF0aGlzLl9yZWNlaXZlclBhcnR5SWQpIHRocm93IG5ldyBFcnJvcigncmVjZWl2ZXJQYXJ0eUlkIGlzIG1pc3NpbmcnKTtcbiAgICBpZiAoIXRoaXMuX3NlbmRlclBhcnR5SWQpIHRocm93IG5ldyBFcnJvcignc2VuZGVyUGFydHlJZCBpcyBtaXNzaW5nJyk7XG4gIH1cbn1cbiJdfQ==
@@ -0,0 +1,67 @@
1
+ import { PublicKey, TransactionType } from '@bitgo/sdk-core';
2
+ import { BaseCoin as CoinConfig } from '@bitgo/statics';
3
+ import { CantonAllocationAllocateWithdrawnRequest, CantonPrepareCommandResponse } from './iface';
4
+ import { TransactionBuilder } from './transactionBuilder';
5
+ import { Transaction } from './transaction/transaction';
6
+ export declare class AllocationAllocateWithdrawnBuilder extends TransactionBuilder {
7
+ private _commandId;
8
+ private _contractId;
9
+ private _actAsPartyId;
10
+ private _tokenName;
11
+ constructor(_coinConfig: Readonly<CoinConfig>);
12
+ initBuilder(tx: Transaction): void;
13
+ get transactionType(): TransactionType;
14
+ setTransactionType(): void;
15
+ setTransaction(transaction: CantonPrepareCommandResponse): void;
16
+ /** @inheritDoc */
17
+ addSignature(publicKey: PublicKey, signature: Buffer): void;
18
+ /**
19
+ * Sets the unique id for the allocation allocate withdrawn
20
+ * Also sets the _id of the transaction
21
+ *
22
+ * @param id - A uuid
23
+ * @returns The current builder instance for chaining.
24
+ * @throws Error if id is empty.
25
+ */
26
+ commandId(id: string): this;
27
+ /**
28
+ * Sets the contract id of the allocation to withdraw
29
+ * @param id - canton allocation contract id
30
+ * @returns The current builder instance for chaining.
31
+ * @throws Error if id is empty.
32
+ */
33
+ contractId(id: string): this;
34
+ /**
35
+ * The party withdrawing the allocation
36
+ *
37
+ * @param id - the sender party id
38
+ * @returns The current builder instance for chaining.
39
+ * @throws Error if id is empty.
40
+ */
41
+ actAs(id: string): this;
42
+ /**
43
+ * The token name for the allocation withdrawal
44
+ * @param name - the bitgo name of the asset
45
+ * @returns The current builder instance for chaining.
46
+ * @throws Error if name is empty.
47
+ */
48
+ tokenName(name: string): this;
49
+ /**
50
+ * Builds and returns the CantonAllocationAllocateWithdrawnRequest object from the builder's internal state.
51
+ *
52
+ * This method performs validation before constructing the object. If required fields are
53
+ * missing or invalid, it throws an error.
54
+ *
55
+ * @returns {CantonAllocationAllocateWithdrawnRequest} - A fully constructed and validated request object for allocation allocate withdrawal.
56
+ * @throws {Error} If any required field is missing or fails validation.
57
+ */
58
+ toRequestObject(): CantonAllocationAllocateWithdrawnRequest;
59
+ /**
60
+ * Validates the internal state of the builder before building the request object.
61
+ *
62
+ * @private
63
+ * @throws {Error} If any required field is missing or invalid.
64
+ */
65
+ private validate;
66
+ }
67
+ //# sourceMappingURL=allocationAllocateWithdrawnBuilder.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"allocationAllocateWithdrawnBuilder.d.ts","sourceRoot":"","sources":["../../../src/lib/allocationAllocateWithdrawnBuilder.ts"],"names":[],"mappings":"AAAA,OAAO,EAA2B,SAAS,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AACtF,OAAO,EAAE,QAAQ,IAAI,UAAU,EAAE,MAAM,gBAAgB,CAAC;AACxD,OAAO,EAAE,wCAAwC,EAAE,4BAA4B,EAAE,MAAM,SAAS,CAAC;AACjG,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AAGxD,qBAAa,kCAAmC,SAAQ,kBAAkB;IACxE,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,aAAa,CAAS;IAC9B,OAAO,CAAC,UAAU,CAAS;gBAEf,WAAW,EAAE,QAAQ,CAAC,UAAU,CAAC;IAI7C,WAAW,CAAC,EAAE,EAAE,WAAW,GAAG,IAAI;IAKlC,IAAI,eAAe,IAAI,eAAe,CAErC;IAED,kBAAkB,IAAI,IAAI;IAI1B,cAAc,CAAC,WAAW,EAAE,4BAA4B,GAAG,IAAI;IAI/D,kBAAkB;IAClB,YAAY,CAAC,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,GAAG,IAAI;IAU3D;;;;;;;OAOG;IACH,SAAS,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI;IAU3B;;;;;OAKG;IACH,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI;IAQ5B;;;;;;OAMG;IACH,KAAK,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI;IAQvB;;;;;OAKG;IACH,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAQ7B;;;;;;;;OAQG;IACH,eAAe,IAAI,wCAAwC;IAa3D;;;;;OAKG;IACH,OAAO,CAAC,QAAQ;CAKjB"}
@@ -0,0 +1,130 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.AllocationAllocateWithdrawnBuilder = void 0;
7
+ const sdk_core_1 = require("@bitgo/sdk-core");
8
+ const transactionBuilder_1 = require("./transactionBuilder");
9
+ const utils_1 = __importDefault(require("./utils"));
10
+ class AllocationAllocateWithdrawnBuilder extends transactionBuilder_1.TransactionBuilder {
11
+ constructor(_coinConfig) {
12
+ super(_coinConfig);
13
+ }
14
+ initBuilder(tx) {
15
+ super.initBuilder(tx);
16
+ this.setTransactionType();
17
+ }
18
+ get transactionType() {
19
+ return sdk_core_1.TransactionType.AllocationAllocateWithdrawn;
20
+ }
21
+ setTransactionType() {
22
+ this.transaction.transactionType = sdk_core_1.TransactionType.AllocationAllocateWithdrawn;
23
+ }
24
+ setTransaction(transaction) {
25
+ this.transaction.prepareCommand = transaction;
26
+ }
27
+ /** @inheritDoc */
28
+ addSignature(publicKey, signature) {
29
+ if (!this.transaction) {
30
+ throw new sdk_core_1.InvalidTransactionError('transaction is empty!');
31
+ }
32
+ this._signatures.push({ publicKey, signature });
33
+ const pubKeyBase64 = utils_1.default.getBase64FromHex(publicKey.pub);
34
+ this.transaction.signerFingerprint = utils_1.default.getAddressFromPublicKey(pubKeyBase64);
35
+ this.transaction.signatures = signature.toString('base64');
36
+ }
37
+ /**
38
+ * Sets the unique id for the allocation allocate withdrawn
39
+ * Also sets the _id of the transaction
40
+ *
41
+ * @param id - A uuid
42
+ * @returns The current builder instance for chaining.
43
+ * @throws Error if id is empty.
44
+ */
45
+ commandId(id) {
46
+ if (!id || !id.trim()) {
47
+ throw new Error('commandId must be a non-empty string');
48
+ }
49
+ this._commandId = id.trim();
50
+ // also set the transaction _id
51
+ this.transaction.id = id.trim();
52
+ return this;
53
+ }
54
+ /**
55
+ * Sets the contract id of the allocation to withdraw
56
+ * @param id - canton allocation contract id
57
+ * @returns The current builder instance for chaining.
58
+ * @throws Error if id is empty.
59
+ */
60
+ contractId(id) {
61
+ if (!id || !id.trim()) {
62
+ throw new Error('contractId must be a non-empty string');
63
+ }
64
+ this._contractId = id.trim();
65
+ return this;
66
+ }
67
+ /**
68
+ * The party withdrawing the allocation
69
+ *
70
+ * @param id - the sender party id
71
+ * @returns The current builder instance for chaining.
72
+ * @throws Error if id is empty.
73
+ */
74
+ actAs(id) {
75
+ if (!id || !id.trim()) {
76
+ throw new Error('actAsPartyId must be a non-empty string');
77
+ }
78
+ this._actAsPartyId = id.trim();
79
+ return this;
80
+ }
81
+ /**
82
+ * The token name for the allocation withdrawal
83
+ * @param name - the bitgo name of the asset
84
+ * @returns The current builder instance for chaining.
85
+ * @throws Error if name is empty.
86
+ */
87
+ tokenName(name) {
88
+ if (!name || !name.trim()) {
89
+ throw new Error('tokenName must be a non-empty string');
90
+ }
91
+ this._tokenName = name.trim();
92
+ return this;
93
+ }
94
+ /**
95
+ * Builds and returns the CantonAllocationAllocateWithdrawnRequest object from the builder's internal state.
96
+ *
97
+ * This method performs validation before constructing the object. If required fields are
98
+ * missing or invalid, it throws an error.
99
+ *
100
+ * @returns {CantonAllocationAllocateWithdrawnRequest} - A fully constructed and validated request object for allocation allocate withdrawal.
101
+ * @throws {Error} If any required field is missing or fails validation.
102
+ */
103
+ toRequestObject() {
104
+ this.validate();
105
+ return {
106
+ commandId: this._commandId,
107
+ contractId: this._contractId,
108
+ verboseHashing: false,
109
+ actAs: [this._actAsPartyId],
110
+ readAs: [],
111
+ tokenName: this._tokenName,
112
+ };
113
+ }
114
+ /**
115
+ * Validates the internal state of the builder before building the request object.
116
+ *
117
+ * @private
118
+ * @throws {Error} If any required field is missing or invalid.
119
+ */
120
+ validate() {
121
+ if (!this._commandId)
122
+ throw new Error('commandId is missing');
123
+ if (!this._contractId)
124
+ throw new Error('contractId is missing');
125
+ if (!this._actAsPartyId)
126
+ throw new Error('actAs partyId is missing');
127
+ }
128
+ }
129
+ exports.AllocationAllocateWithdrawnBuilder = AllocationAllocateWithdrawnBuilder;
130
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWxsb2NhdGlvbkFsbG9jYXRlV2l0aGRyYXduQnVpbGRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9saWIvYWxsb2NhdGlvbkFsbG9jYXRlV2l0aGRyYXduQnVpbGRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSw4Q0FBc0Y7QUFHdEYsNkRBQTBEO0FBRTFELG9EQUE0QjtBQUU1QixNQUFhLGtDQUFtQyxTQUFRLHVDQUFrQjtJQU14RSxZQUFZLFdBQWlDO1FBQzNDLEtBQUssQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUNyQixDQUFDO0lBRUQsV0FBVyxDQUFDLEVBQWU7UUFDekIsS0FBSyxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUN0QixJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztJQUM1QixDQUFDO0lBRUQsSUFBSSxlQUFlO1FBQ2pCLE9BQU8sMEJBQWUsQ0FBQywyQkFBMkIsQ0FBQztJQUNyRCxDQUFDO0lBRUQsa0JBQWtCO1FBQ2hCLElBQUksQ0FBQyxXQUFXLENBQUMsZUFBZSxHQUFHLDBCQUFlLENBQUMsMkJBQTJCLENBQUM7SUFDakYsQ0FBQztJQUVELGNBQWMsQ0FBQyxXQUF5QztRQUN0RCxJQUFJLENBQUMsV0FBVyxDQUFDLGNBQWMsR0FBRyxXQUFXLENBQUM7SUFDaEQsQ0FBQztJQUVELGtCQUFrQjtJQUNsQixZQUFZLENBQUMsU0FBb0IsRUFBRSxTQUFpQjtRQUNsRCxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQ3RCLE1BQU0sSUFBSSxrQ0FBdUIsQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDO1FBQzdELENBQUM7UUFDRCxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsQ0FBQyxDQUFDO1FBQ2hELE1BQU0sWUFBWSxHQUFHLGVBQUssQ0FBQyxnQkFBZ0IsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDM0QsSUFBSSxDQUFDLFdBQVcsQ0FBQyxpQkFBaUIsR0FBRyxlQUFLLENBQUMsdUJBQXVCLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDakYsSUFBSSxDQUFDLFdBQVcsQ0FBQyxVQUFVLEdBQUcsU0FBUyxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUM3RCxDQUFDO0lBRUQ7Ozs7Ozs7T0FPRztJQUNILFNBQVMsQ0FBQyxFQUFVO1FBQ2xCLElBQUksQ0FBQyxFQUFFLElBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQztZQUN0QixNQUFNLElBQUksS0FBSyxDQUFDLHNDQUFzQyxDQUFDLENBQUM7UUFDMUQsQ0FBQztRQUNELElBQUksQ0FBQyxVQUFVLEdBQUcsRUFBRSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQzVCLCtCQUErQjtRQUMvQixJQUFJLENBQUMsV0FBVyxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDaEMsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSCxVQUFVLENBQUMsRUFBVTtRQUNuQixJQUFJLENBQUMsRUFBRSxJQUFJLENBQUMsRUFBRSxDQUFDLElBQUksRUFBRSxFQUFFLENBQUM7WUFDdEIsTUFBTSxJQUFJLEtBQUssQ0FBQyx1Q0FBdUMsQ0FBQyxDQUFDO1FBQzNELENBQUM7UUFDRCxJQUFJLENBQUMsV0FBVyxHQUFHLEVBQUUsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUM3QixPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSCxLQUFLLENBQUMsRUFBVTtRQUNkLElBQUksQ0FBQyxFQUFFLElBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQztZQUN0QixNQUFNLElBQUksS0FBSyxDQUFDLHlDQUF5QyxDQUFDLENBQUM7UUFDN0QsQ0FBQztRQUNELElBQUksQ0FBQyxhQUFhLEdBQUcsRUFBRSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQy9CLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0gsU0FBUyxDQUFDLElBQVk7UUFDcEIsSUFBSSxDQUFDLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDO1lBQzFCLE1BQU0sSUFBSSxLQUFLLENBQUMsc0NBQXNDLENBQUMsQ0FBQztRQUMxRCxDQUFDO1FBQ0QsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDOUIsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQ7Ozs7Ozs7O09BUUc7SUFDSCxlQUFlO1FBQ2IsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBRWhCLE9BQU87WUFDTCxTQUFTLEVBQUUsSUFBSSxDQUFDLFVBQVU7WUFDMUIsVUFBVSxFQUFFLElBQUksQ0FBQyxXQUFXO1lBQzVCLGNBQWMsRUFBRSxLQUFLO1lBQ3JCLEtBQUssRUFBRSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUM7WUFDM0IsTUFBTSxFQUFFLEVBQUU7WUFDVixTQUFTLEVBQUUsSUFBSSxDQUFDLFVBQVU7U0FDM0IsQ0FBQztJQUNKLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNLLFFBQVE7UUFDZCxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVU7WUFBRSxNQUFNLElBQUksS0FBSyxDQUFDLHNCQUFzQixDQUFDLENBQUM7UUFDOUQsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXO1lBQUUsTUFBTSxJQUFJLEtBQUssQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDO1FBQ2hFLElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYTtZQUFFLE1BQU0sSUFBSSxLQUFLLENBQUMsMEJBQTBCLENBQUMsQ0FBQztJQUN2RSxDQUFDO0NBQ0Y7QUFwSUQsZ0ZBb0lDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW52YWxpZFRyYW5zYWN0aW9uRXJyb3IsIFB1YmxpY0tleSwgVHJhbnNhY3Rpb25UeXBlIH0gZnJvbSAnQGJpdGdvL3Nkay1jb3JlJztcbmltcG9ydCB7IEJhc2VDb2luIGFzIENvaW5Db25maWcgfSBmcm9tICdAYml0Z28vc3RhdGljcyc7XG5pbXBvcnQgeyBDYW50b25BbGxvY2F0aW9uQWxsb2NhdGVXaXRoZHJhd25SZXF1ZXN0LCBDYW50b25QcmVwYXJlQ29tbWFuZFJlc3BvbnNlIH0gZnJvbSAnLi9pZmFjZSc7XG5pbXBvcnQgeyBUcmFuc2FjdGlvbkJ1aWxkZXIgfSBmcm9tICcuL3RyYW5zYWN0aW9uQnVpbGRlcic7XG5pbXBvcnQgeyBUcmFuc2FjdGlvbiB9IGZyb20gJy4vdHJhbnNhY3Rpb24vdHJhbnNhY3Rpb24nO1xuaW1wb3J0IHV0aWxzIGZyb20gJy4vdXRpbHMnO1xuXG5leHBvcnQgY2xhc3MgQWxsb2NhdGlvbkFsbG9jYXRlV2l0aGRyYXduQnVpbGRlciBleHRlbmRzIFRyYW5zYWN0aW9uQnVpbGRlciB7XG4gIHByaXZhdGUgX2NvbW1hbmRJZDogc3RyaW5nO1xuICBwcml2YXRlIF9jb250cmFjdElkOiBzdHJpbmc7XG4gIHByaXZhdGUgX2FjdEFzUGFydHlJZDogc3RyaW5nO1xuICBwcml2YXRlIF90b2tlbk5hbWU6IHN0cmluZztcblxuICBjb25zdHJ1Y3RvcihfY29pbkNvbmZpZzogUmVhZG9ubHk8Q29pbkNvbmZpZz4pIHtcbiAgICBzdXBlcihfY29pbkNvbmZpZyk7XG4gIH1cblxuICBpbml0QnVpbGRlcih0eDogVHJhbnNhY3Rpb24pOiB2b2lkIHtcbiAgICBzdXBlci5pbml0QnVpbGRlcih0eCk7XG4gICAgdGhpcy5zZXRUcmFuc2FjdGlvblR5cGUoKTtcbiAgfVxuXG4gIGdldCB0cmFuc2FjdGlvblR5cGUoKTogVHJhbnNhY3Rpb25UeXBlIHtcbiAgICByZXR1cm4gVHJhbnNhY3Rpb25UeXBlLkFsbG9jYXRpb25BbGxvY2F0ZVdpdGhkcmF3bjtcbiAgfVxuXG4gIHNldFRyYW5zYWN0aW9uVHlwZSgpOiB2b2lkIHtcbiAgICB0aGlzLnRyYW5zYWN0aW9uLnRyYW5zYWN0aW9uVHlwZSA9IFRyYW5zYWN0aW9uVHlwZS5BbGxvY2F0aW9uQWxsb2NhdGVXaXRoZHJhd247XG4gIH1cblxuICBzZXRUcmFuc2FjdGlvbih0cmFuc2FjdGlvbjogQ2FudG9uUHJlcGFyZUNvbW1hbmRSZXNwb25zZSk6IHZvaWQge1xuICAgIHRoaXMudHJhbnNhY3Rpb24ucHJlcGFyZUNvbW1hbmQgPSB0cmFuc2FjdGlvbjtcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdERvYyAqL1xuICBhZGRTaWduYXR1cmUocHVibGljS2V5OiBQdWJsaWNLZXksIHNpZ25hdHVyZTogQnVmZmVyKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLnRyYW5zYWN0aW9uKSB7XG4gICAgICB0aHJvdyBuZXcgSW52YWxpZFRyYW5zYWN0aW9uRXJyb3IoJ3RyYW5zYWN0aW9uIGlzIGVtcHR5IScpO1xuICAgIH1cbiAgICB0aGlzLl9zaWduYXR1cmVzLnB1c2goeyBwdWJsaWNLZXksIHNpZ25hdHVyZSB9KTtcbiAgICBjb25zdCBwdWJLZXlCYXNlNjQgPSB1dGlscy5nZXRCYXNlNjRGcm9tSGV4KHB1YmxpY0tleS5wdWIpO1xuICAgIHRoaXMudHJhbnNhY3Rpb24uc2lnbmVyRmluZ2VycHJpbnQgPSB1dGlscy5nZXRBZGRyZXNzRnJvbVB1YmxpY0tleShwdWJLZXlCYXNlNjQpO1xuICAgIHRoaXMudHJhbnNhY3Rpb24uc2lnbmF0dXJlcyA9IHNpZ25hdHVyZS50b1N0cmluZygnYmFzZTY0Jyk7XG4gIH1cblxuICAvKipcbiAgICogU2V0cyB0aGUgdW5pcXVlIGlkIGZvciB0aGUgYWxsb2NhdGlvbiBhbGxvY2F0ZSB3aXRoZHJhd25cbiAgICogQWxzbyBzZXRzIHRoZSBfaWQgb2YgdGhlIHRyYW5zYWN0aW9uXG4gICAqXG4gICAqIEBwYXJhbSBpZCAtIEEgdXVpZFxuICAgKiBAcmV0dXJucyBUaGUgY3VycmVudCBidWlsZGVyIGluc3RhbmNlIGZvciBjaGFpbmluZy5cbiAgICogQHRocm93cyBFcnJvciBpZiBpZCBpcyBlbXB0eS5cbiAgICovXG4gIGNvbW1hbmRJZChpZDogc3RyaW5nKTogdGhpcyB7XG4gICAgaWYgKCFpZCB8fCAhaWQudHJpbSgpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ2NvbW1hbmRJZCBtdXN0IGJlIGEgbm9uLWVtcHR5IHN0cmluZycpO1xuICAgIH1cbiAgICB0aGlzLl9jb21tYW5kSWQgPSBpZC50cmltKCk7XG4gICAgLy8gYWxzbyBzZXQgdGhlIHRyYW5zYWN0aW9uIF9pZFxuICAgIHRoaXMudHJhbnNhY3Rpb24uaWQgPSBpZC50cmltKCk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKipcbiAgICogU2V0cyB0aGUgY29udHJhY3QgaWQgb2YgdGhlIGFsbG9jYXRpb24gdG8gd2l0aGRyYXdcbiAgICogQHBhcmFtIGlkIC0gY2FudG9uIGFsbG9jYXRpb24gY29udHJhY3QgaWRcbiAgICogQHJldHVybnMgVGhlIGN1cnJlbnQgYnVpbGRlciBpbnN0YW5jZSBmb3IgY2hhaW5pbmcuXG4gICAqIEB0aHJvd3MgRXJyb3IgaWYgaWQgaXMgZW1wdHkuXG4gICAqL1xuICBjb250cmFjdElkKGlkOiBzdHJpbmcpOiB0aGlzIHtcbiAgICBpZiAoIWlkIHx8ICFpZC50cmltKCkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignY29udHJhY3RJZCBtdXN0IGJlIGEgbm9uLWVtcHR5IHN0cmluZycpO1xuICAgIH1cbiAgICB0aGlzLl9jb250cmFjdElkID0gaWQudHJpbSgpO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSBwYXJ0eSB3aXRoZHJhd2luZyB0aGUgYWxsb2NhdGlvblxuICAgKlxuICAgKiBAcGFyYW0gaWQgLSB0aGUgc2VuZGVyIHBhcnR5IGlkXG4gICAqIEByZXR1cm5zIFRoZSBjdXJyZW50IGJ1aWxkZXIgaW5zdGFuY2UgZm9yIGNoYWluaW5nLlxuICAgKiBAdGhyb3dzIEVycm9yIGlmIGlkIGlzIGVtcHR5LlxuICAgKi9cbiAgYWN0QXMoaWQ6IHN0cmluZyk6IHRoaXMge1xuICAgIGlmICghaWQgfHwgIWlkLnRyaW0oKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdhY3RBc1BhcnR5SWQgbXVzdCBiZSBhIG5vbi1lbXB0eSBzdHJpbmcnKTtcbiAgICB9XG4gICAgdGhpcy5fYWN0QXNQYXJ0eUlkID0gaWQudHJpbSgpO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSB0b2tlbiBuYW1lIGZvciB0aGUgYWxsb2NhdGlvbiB3aXRoZHJhd2FsXG4gICAqIEBwYXJhbSBuYW1lIC0gdGhlIGJpdGdvIG5hbWUgb2YgdGhlIGFzc2V0XG4gICAqIEByZXR1cm5zIFRoZSBjdXJyZW50IGJ1aWxkZXIgaW5zdGFuY2UgZm9yIGNoYWluaW5nLlxuICAgKiBAdGhyb3dzIEVycm9yIGlmIG5hbWUgaXMgZW1wdHkuXG4gICAqL1xuICB0b2tlbk5hbWUobmFtZTogc3RyaW5nKTogdGhpcyB7XG4gICAgaWYgKCFuYW1lIHx8ICFuYW1lLnRyaW0oKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCd0b2tlbk5hbWUgbXVzdCBiZSBhIG5vbi1lbXB0eSBzdHJpbmcnKTtcbiAgICB9XG4gICAgdGhpcy5fdG9rZW5OYW1lID0gbmFtZS50cmltKCk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKipcbiAgICogQnVpbGRzIGFuZCByZXR1cm5zIHRoZSBDYW50b25BbGxvY2F0aW9uQWxsb2NhdGVXaXRoZHJhd25SZXF1ZXN0IG9iamVjdCBmcm9tIHRoZSBidWlsZGVyJ3MgaW50ZXJuYWwgc3RhdGUuXG4gICAqXG4gICAqIFRoaXMgbWV0aG9kIHBlcmZvcm1zIHZhbGlkYXRpb24gYmVmb3JlIGNvbnN0cnVjdGluZyB0aGUgb2JqZWN0LiBJZiByZXF1aXJlZCBmaWVsZHMgYXJlXG4gICAqIG1pc3Npbmcgb3IgaW52YWxpZCwgaXQgdGhyb3dzIGFuIGVycm9yLlxuICAgKlxuICAgKiBAcmV0dXJucyB7Q2FudG9uQWxsb2NhdGlvbkFsbG9jYXRlV2l0aGRyYXduUmVxdWVzdH0gLSBBIGZ1bGx5IGNvbnN0cnVjdGVkIGFuZCB2YWxpZGF0ZWQgcmVxdWVzdCBvYmplY3QgZm9yIGFsbG9jYXRpb24gYWxsb2NhdGUgd2l0aGRyYXdhbC5cbiAgICogQHRocm93cyB7RXJyb3J9IElmIGFueSByZXF1aXJlZCBmaWVsZCBpcyBtaXNzaW5nIG9yIGZhaWxzIHZhbGlkYXRpb24uXG4gICAqL1xuICB0b1JlcXVlc3RPYmplY3QoKTogQ2FudG9uQWxsb2NhdGlvbkFsbG9jYXRlV2l0aGRyYXduUmVxdWVzdCB7XG4gICAgdGhpcy52YWxpZGF0ZSgpO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIGNvbW1hbmRJZDogdGhpcy5fY29tbWFuZElkLFxuICAgICAgY29udHJhY3RJZDogdGhpcy5fY29udHJhY3RJZCxcbiAgICAgIHZlcmJvc2VIYXNoaW5nOiBmYWxzZSxcbiAgICAgIGFjdEFzOiBbdGhpcy5fYWN0QXNQYXJ0eUlkXSxcbiAgICAgIHJlYWRBczogW10sXG4gICAgICB0b2tlbk5hbWU6IHRoaXMuX3Rva2VuTmFtZSxcbiAgICB9O1xuICB9XG5cbiAgLyoqXG4gICAqIFZhbGlkYXRlcyB0aGUgaW50ZXJuYWwgc3RhdGUgb2YgdGhlIGJ1aWxkZXIgYmVmb3JlIGJ1aWxkaW5nIHRoZSByZXF1ZXN0IG9iamVjdC5cbiAgICpcbiAgICogQHByaXZhdGVcbiAgICogQHRocm93cyB7RXJyb3J9IElmIGFueSByZXF1aXJlZCBmaWVsZCBpcyBtaXNzaW5nIG9yIGludmFsaWQuXG4gICAqL1xuICBwcml2YXRlIHZhbGlkYXRlKCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5fY29tbWFuZElkKSB0aHJvdyBuZXcgRXJyb3IoJ2NvbW1hbmRJZCBpcyBtaXNzaW5nJyk7XG4gICAgaWYgKCF0aGlzLl9jb250cmFjdElkKSB0aHJvdyBuZXcgRXJyb3IoJ2NvbnRyYWN0SWQgaXMgbWlzc2luZycpO1xuICAgIGlmICghdGhpcy5fYWN0QXNQYXJ0eUlkKSB0aHJvdyBuZXcgRXJyb3IoJ2FjdEFzIHBhcnR5SWQgaXMgbWlzc2luZycpO1xuICB9XG59XG4iXX0=