@ptsecurity/mosaic 17.2.14 → 17.2.16

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/core/locales/index.d.ts +1 -0
  2. package/core/locales/locale-service.d.ts +62 -0
  3. package/core/locales/tk-TM.d.ts +64 -0
  4. package/core/pop-up/constants.d.ts +0 -4
  5. package/core/pop-up/pop-up-trigger.d.ts +1 -1
  6. package/dropdown/dropdown-trigger.directive.d.ts +1 -1
  7. package/esm2022/core/locales/en-US.mjs +2 -2
  8. package/esm2022/core/locales/es-LA.mjs +2 -2
  9. package/esm2022/core/locales/fa-IR.mjs +2 -2
  10. package/esm2022/core/locales/index.mjs +2 -1
  11. package/esm2022/core/locales/locale-service.mjs +6 -3
  12. package/esm2022/core/locales/pt-BR.mjs +2 -2
  13. package/esm2022/core/locales/ru-RU.mjs +2 -2
  14. package/esm2022/core/locales/tk-TM.mjs +63 -0
  15. package/esm2022/core/locales/zh-CN.mjs +2 -2
  16. package/esm2022/core/pop-up/constants.mjs +1 -5
  17. package/esm2022/core/pop-up/pop-up-trigger.mjs +8 -9
  18. package/esm2022/core/version.mjs +2 -2
  19. package/esm2022/dropdown/dropdown-trigger.directive.mjs +2 -2
  20. package/esm2022/popover/popover.component.mjs +6 -1
  21. package/esm2022/select/select.component.mjs +4 -3
  22. package/esm2022/tooltip/tooltip.component.mjs +6 -1
  23. package/esm2022/tree-select/tree-select.component.mjs +3 -3
  24. package/fesm2022/ptsecurity-mosaic-core.mjs +81 -21
  25. package/fesm2022/ptsecurity-mosaic-core.mjs.map +1 -1
  26. package/fesm2022/ptsecurity-mosaic-dropdown.mjs +1 -1
  27. package/fesm2022/ptsecurity-mosaic-dropdown.mjs.map +1 -1
  28. package/fesm2022/ptsecurity-mosaic-popover.mjs +5 -0
  29. package/fesm2022/ptsecurity-mosaic-popover.mjs.map +1 -1
  30. package/fesm2022/ptsecurity-mosaic-select.mjs +3 -2
  31. package/fesm2022/ptsecurity-mosaic-select.mjs.map +1 -1
  32. package/fesm2022/ptsecurity-mosaic-tooltip.mjs +5 -0
  33. package/fesm2022/ptsecurity-mosaic-tooltip.mjs.map +1 -1
  34. package/fesm2022/ptsecurity-mosaic-tree-select.mjs +2 -2
  35. package/fesm2022/ptsecurity-mosaic-tree-select.mjs.map +1 -1
  36. package/package.json +5 -5
  37. package/popover/popover.component.d.ts +5 -0
  38. package/tooltip/tooltip.component.d.ts +5 -0
@@ -130,6 +130,11 @@ export class McTooltipTrigger extends McPopUpTrigger {
130
130
  constructor() {
131
131
  super();
132
132
  this.parentPopup = inject(MC_PARENT_POPUP, { optional: true });
133
+ /**
134
+ * default offset + arrow position shift
135
+ * @docs-private
136
+ */
137
+ this.arrowOffset = 19.5;
133
138
  /**
134
139
  * Positions the tooltip relative to the mouse cursor. Only available for top and bottom mcPlacement.
135
140
  * Does not work with mcPlacementPriority.
@@ -345,4 +350,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.0", ngImpor
345
350
  type: Input,
346
351
  args: ['mcTooltipHeader']
347
352
  }] } });
348
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9vbHRpcC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9tb3NhaWMvdG9vbHRpcC90b29sdGlwLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uL3BhY2thZ2VzL21vc2FpYy90b29sdGlwL3Rvb2x0aXAuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ2pELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBRTlELE9BQU8sRUFDSCxPQUFPLEVBR1YsTUFBTSxzQkFBc0IsQ0FBQztBQUM5QixPQUFPLEVBQ0gsZ0JBQWdCLEVBQ2hCLHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsU0FBUyxFQUNULFlBQVksRUFDWixNQUFNLEVBQ04sTUFBTSxFQUNOLGNBQWMsRUFDZCxLQUFLLEVBRUwsTUFBTSxFQUdOLGlCQUFpQixFQUNwQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQWlCLE9BQU8sRUFBRSxjQUFjLEVBQUUsZUFBZSxFQUFFLGVBQWUsRUFBRSxhQUFhLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUN2SixPQUFPLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUVwQyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQzs7O0FBRzNELE1BQU0sQ0FBTixJQUFZLGVBSVg7QUFKRCxXQUFZLGVBQWU7SUFDdkIsc0NBQW1CLENBQUE7SUFDbkIsc0NBQW1CLENBQUE7SUFDbkIsd0NBQXFCLENBQUE7QUFDekIsQ0FBQyxFQUpXLGVBQWUsS0FBZixlQUFlLFFBSTFCO0FBRUQsTUFBTSxDQUFDLE1BQU0sb0JBQW9CLEdBQUcsSUFBSSxjQUFjLENBQXVCLHNCQUFzQixDQUFDLENBQUM7QUFFckcsb0JBQW9CO0FB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Z0JBWXRCLE1BQU07c0JBRFQsS0FBSzt1QkFBQyxpQkFBaUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBGb2N1c01vbml0b3IgfSBmcm9tICdAYW5ndWxhci9jZGsvYTExeSc7XG5pbXBvcnQgeyBjb2VyY2VCb29sZWFuUHJvcGVydHkgfSBmcm9tICdAYW5ndWxhci9jZGsvY29lcmNpb24nO1xuaW1wb3J0IHsgUG9pbnQgfSBmcm9tICdAYW5ndWxhci9jZGsvZHJhZy1kcm9wJztcbmltcG9ydCB7XG4gICAgT3ZlcmxheSxcbiAgICBTY3JvbGxTdHJhdGVneSxcbiAgICBPdmVybGF5Q29uZmlnXG59IGZyb20gJ0Bhbmd1bGFyL2Nkay9vdmVybGF5JztcbmltcG9ydCB7XG4gICAgYm9vbGVhbkF0dHJpYnV0ZSxcbiAgICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgICBDb21wb25lbnQsXG4gICAgRGlyZWN0aXZlLFxuICAgIEV2ZW50RW1pdHRlcixcbiAgICBpbmplY3QsXG4gICAgSW5qZWN0LFxuICAgIEluamVjdGlvblRva2VuLFxuICAgIElucHV0LFxuICAgIE9uRGVzdHJveSxcbiAgICBPdXRwdXQsXG4gICAgVGVtcGxhdGVSZWYsXG4gICAgVHlwZSxcbiAgICBWaWV3RW5jYXBzdWxhdGlvblxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE1jUGFyZW50UG9wdXAsIE1jUG9wVXAsIE1jUG9wVXBUcmlnZ2VyLCBNQ19QQVJFTlRfUE9QVVAsIFBvcFVwUGxhY2VtZW50cywgUG9wVXBUcmlnZ2VycywgUE9TSVRJT05fVE9fQ1NTX01BUCB9IGZyb20gJ0BwdHNlY3VyaXR5L21vc2FpYy9jb3JlJztcbmltcG9ydCB7IEVNUFRZLCBtZXJnZSB9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQgeyBtY1Rvb2x0aXBBbmltYXRpb25zIH0gZnJvbSAnLi90b29sdGlwLmFuaW1hdGlvbnMnO1xuXG5cbmV4cG9ydCBlbnVtIFRvb2x0aXBNb2RpZmllciB7XG4gICAgRGVmYXVsdCA9ICdkZWZhdWx0JyxcbiAgICBXYXJuaW5nID0gJ3dhcm5pbmcnLFxuICAgIEV4dGVuZGVkID0gJ2V4dGVuZGVkJ1xufVxuXG5leHBvcnQgY29uc3QgTUNfVE9PTFRJUF9PUEVOX1RJTUUgPSBuZXcgSW5qZWN0aW9uVG9rZW48KCkgPT4gU2Nyb2xsU3RyYXRlZ3k+KCdtYy10b29sdGlwLW9wZW4tdGltZScpO1xuXG4vKiogQGRvY3MtcHJpdmF0ZSAqL1xuZXhwb3J0IGNvbnN0IE1DX1RPT0xUSVBfT1BFTl9USU1FX1BST1ZJREVSID0ge1xuICAgIHByb3ZpZGU6IE1DX1RPT0xUSVBfT1BFTl9USU1FLFxuICAgIHVzZVZhbHVlOiB7IHZhbHVlOiAwIH1cbn07XG5cbmV4cG9ydCBjb25zdCBNSU5fVElNRV9GT1JfREVMQVkgPSAyMDAwO1xuXG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnbWMtdG9vbHRpcC1jb21wb25lbnQnLFxuICAgIGFuaW1hdGlvbnM6IFttY1Rvb2x0aXBBbmltYXRpb25zLnRvb2x0aXBTdGF0ZV0sXG4gICAgdGVtcGxhdGVVcmw6ICcuL3Rvb2x0aXAuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL3Rvb2x0aXAuc2NzcyddLFxuICAgIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gICAgcHJvdmlkZXJzOiBbTUNfVE9PTFRJUF9PUEVOX1RJTUVfUFJPVklERVJdXG59KVxuZXhwb3J0IGNsYXNzIE1jVG9vbHRpcENvbXBvbmVudCBleHRlbmRzIE1jUG9wVXAge1xuICAgIHByZWZpeCA9ICdtYy10b29sdGlwJztcblxuICAgIGNvbnN0cnVjdG9yKEBJbmplY3QoTUNfVE9PTFRJUF9PUEVOX1RJTUUpIHByaXZhdGUgb3BlblRpbWUpIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICB9XG5cbiAgICBzaG93KGRlbGF5OiBudW1iZXIpIHtcbiAgICAgICAgaWYgKCF0aGlzLmNvbnRlbnQpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTpuby1tYWdpYy1udW1iZXJzXG4gICAgICAgIHN1cGVyLnNob3coRGF0ZS5ub3coKSAtIHRoaXMub3BlblRpbWUudmFsdWUgPCBNSU5fVElNRV9GT1JfREVMQVkgPyAwIDogZGVsYXkpO1xuXG4gICAgICAgIHRoaXMub3BlblRpbWUudmFsdWUgPSBEYXRlLm5vdygpO1xuICAgIH1cblxuICAgIHVwZGF0ZUNsYXNzTWFwKHBsYWNlbWVudDogc3RyaW5nLCBjdXN0b21DbGFzczogc3RyaW5nLCB7IG1vZGlmaWVyIH0pIHtcbiAgICAgICAgY29uc3QgY2xhc3NNYXAgPSB7XG4gICAgICAgICAgICBbYCR7dGhpcy5wcmVmaXh9XyR7bW9kaWZpZXJ9YF06IHRydWVcbiAgICAgICAgfTtcblxuICAgICAgICBzdXBlci51cGRhdGVDbGFzc01hcChwbGFjZW1lbnQsIGN1c3RvbUNsYXNzLCBjbGFzc01hcCk7XG4gICAgfVxufVxuXG5leHBvcnQgY29uc3QgTUNfVE9PTFRJUF9TQ1JPTExfU1RSQVRFR1kgPVxuICAgIG5ldyBJbmplY3Rpb25Ub2tlbjwoKSA9PiBTY3JvbGxTdHJhdGVneT4oJ21jLXRvb2x0aXAtc2Nyb2xsLXN0cmF0ZWd5Jyk7XG5cbi8qKiBAZG9jcy1wcml2YXRlICovXG5leHBvcnQgZnVuY3Rpb24gbWNUb29sdGlwU2Nyb2xsU3RyYXRlZ3lGYWN0b3J5KG92ZXJsYXk6IE92ZXJsYXkpOiAoKSA9PiBTY3JvbGxTdHJhdGVneSB7XG4gICAgcmV0dXJuICgpID0+IG92ZXJsYXkuc2Nyb2xsU3RyYXRlZ2llcy5jbG9zZSgpO1xufVxuXG4vKiogQGRvY3MtcHJpdmF0ZSAqL1xuZXhwb3J0IGNvbnN0IE1DX1RPT0xUSVBfU0NST0xMX1NUUkFURUdZX0ZBQ1RPUllfUFJPVklERVIgPSB7XG4gICAgcHJvdmlkZTogTUNfVE9PTFRJUF9TQ1JPTExfU1RSQVRFR1ksXG4gICAgZGVwczogW092ZXJsYXldLFxuICAgIHVzZUZhY3Rvcnk6IG1jVG9vbHRpcFNjcm9sbFN0cmF0ZWd5RmFjdG9yeVxufTtcblxuQERpcmVjdGl2ZSh7XG4gICAgc2VsZWN0b3I6ICdbbWNUb29sdGlwXScsXG4gICAgZXhwb3J0QXM6ICdtY1Rvb2x0aXAnLFxuICAgIGhvc3Q6IHtcbiAgICAgICAgJ1tjbGFzcy5tYy10b29sdGlwX29wZW5dJzogJ2lzT3BlbicsXG5cbiAgICAgICAgJyhrZXlkb3duKSc6ICdoYW5kbGVLZXlkb3duKCRldmVudCknLFxuICAgICAgICAnKHRvdWNoZW5kKSc6ICdoYW5kbGVUb3VjaGVuZCgpJ1xuICAgIH1cbn0pXG5leHBvcnQgY2xhc3MgTWNUb29sdGlwVHJpZ2dlciBleHRlbmRzIE1jUG9wVXBUcmlnZ2VyPE1jVG9vbHRpcENvbXBvbmVudD4gaW1wbGVtZW50cyBPbkRlc3Ryb3kge1xuICAgIHBhcmVudFBvcHVwID0gaW5qZWN0PE1jUGFyZW50UG9wdXA+KE1DX1BBUkVOVF9QT1BVUCwgeyBvcHRpb25hbDogdHJ1ZSB9KTtcblxuICAgIEBJbnB1dCgnbWNWaXNpYmxlJylcbiAgICBnZXQgdG9vbHRpcFZpc2libGUoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLnZpc2libGU7XG4gICAgfVxuXG4gICAgc2V0IHRvb2x0aXBWaXNpYmxlKHZhbHVlOiBib29sZWFuKSB7XG4gICAgICAgIHN1cGVyLnVwZGF0ZVZpc2libGUodmFsdWUpO1xuICAgIH1cblxuICAgIEBJbnB1dCgnbWNQbGFjZW1lbnQnKVxuICAgIGdldCB0b29sdGlwUGxhY2VtZW50KCk6IFBvcFVwUGxhY2VtZW50cyB7XG4gICAgICAgIHJldHVybiB0aGlzLnBsYWNlbWVudDtcbiAgICB9XG5cbiAgICBzZXQgdG9vbHRpcFBsYWNlbWVudCh2YWx1ZTogUG9wVXBQbGFjZW1lbnRzKSB7XG4gICAgICAgIHN1cGVyLnVwZGF0ZVBsYWNlbWVudCh2YWx1ZSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUG9zaXRpb25zIHRoZSB0b29sdGlwIHJlbGF0aXZlIHRvIHRoZSBtb3VzZSBjdXJzb3IuIE9ubHkgYXZhaWxhYmxlIGZvciB0b3AgYW5kIGJvdHRvbSBtY1BsYWNlbWVudC5cbiAgICAgKiBEb2VzIG5vdCB3b3JrIHdpdGggbWNQbGFjZW1lbnRQcmlvcml0eS5cbiAgICAgKi9cbiAgICBASW5wdXQoeyBhbGlhczogJ21jUmVsYXRpdmVUb1BvaW50ZXInLCB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSkgcmVsYXRpdmVUb1BvaW50ZXI6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAgIEBJbnB1dCgnbWNQbGFjZW1lbnRQcmlvcml0eScpXG4gICAgZ2V0IHRvb2x0aXBQbGFjZW1lbnRQcmlvcml0eSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucGxhY2VtZW50UHJpb3JpdHk7XG4gICAgfVxuXG4gICAgc2V0IHRvb2x0aXBQbGFjZW1lbnRQcmlvcml0eSh2YWx1ZSkge1xuICAgICAgICBzdXBlci51cGRhdGVQbGFjZW1lbnRQcmlvcml0eSh2YWx1ZSk7XG4gICAgfVxuXG4gICAgQElucHV0KCdtY1Rvb2x0aXAnKVxuICAgIGdldCBjb250ZW50KCk6IHN0cmluZyB8IFRlbXBsYXRlUmVmPGFueT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fY29udGVudDtcbiAgICB9XG5cbiAgICBzZXQgY29udGVudChjb250ZW50OiBzdHJpbmcgfCBUZW1wbGF0ZVJlZjxhbnk+KSB7XG4gICAgICAgIHRoaXMuX2NvbnRlbnQgPSBjb250ZW50O1xuXG4gICAgICAgIHRoaXMudXBkYXRlRGF0YSgpO1xuICAgIH1cblxuICAgIEBJbnB1dCgnbWNUb29sdGlwRGlzYWJsZWQnKVxuICAgIGdldCBkaXNhYmxlZCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2Rpc2FibGVkO1xuICAgIH1cblxuICAgIHNldCBkaXNhYmxlZCh2YWx1ZSkge1xuICAgICAgICB0aGlzLl9kaXNhYmxlZCA9IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSh2YWx1ZSk7XG4gICAgfVxuXG4gICAgQElucHV0KCdtY0VudGVyRGVsYXknKSBlbnRlckRlbGF5ID0gNDAwO1xuICAgIEBJbnB1dCgnbWNMZWF2ZURlbGF5JykgbGVhdmVEZWxheSA9IDA7XG5cbiAgICBASW5wdXQoJ21jVHJpZ2dlcicpXG4gICAgZ2V0IHRyaWdnZXIoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3RyaWdnZXI7XG4gICAgfVxuXG4gICAgc2V0IHRyaWdnZXIodmFsdWU6IHN0cmluZykge1xuICAgICAgICBpZiAodmFsdWUpIHtcbiAgICAgICAgICAgIHRoaXMuX3RyaWdnZXIgPSB2YWx1ZTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuX3RyaWdnZXIgPSBgJHtQb3BVcFRyaWdnZXJzLkhvdmVyfSwgJHtQb3BVcFRyaWdnZXJzLkZvY3VzfWA7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmluaXRMaXN0ZW5lcnMoKTtcbiAgICB9XG5cbiAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6bmFtaW5nLWNvbnZlbnRpb25cbiAgICBwcm90ZWN0ZWQgX3RyaWdnZXIgPSBgJHtQb3BVcFRyaWdnZXJzLkhvdmVyfSwgJHtQb3BVcFRyaWdnZXJzLkZvY3VzfWA7XG5cbiAgICBASW5wdXQoJ21jVG9vbHRpcENsYXNzJylcbiAgICBnZXQgY3VzdG9tQ2xhc3MoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2N1c3RvbUNsYXNzO1xuICAgIH1cblxuICAgIHNldCBjdXN0b21DbGFzcyh2YWx1ZTogc3RyaW5nKSB7XG4gICAgICAgIGlmICh2YWx1ZSkge1xuICAgICAgICAgICAgdGhpcy5fY3VzdG9tQ2xhc3MgPSB2YWx1ZTtcblxuICAgICAgICAgICAgdGhpcy51cGRhdGVDbGFzc01hcCgpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5fY3VzdG9tQ2xhc3MgPSAnJztcbiAgICAgICAgfVxuICAgIH1cblxuICAgIEBJbnB1dCgnbWNUb29sdGlwQ29udGV4dCcpXG4gICAgZ2V0IGNvbnRleHQoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9jb250ZXh0O1xuICAgIH1cblxuICAgIHNldCBjb250ZXh0KGN0eCkge1xuICAgICAgICB0aGlzLl9jb250ZXh0ID0gY3R4O1xuICAgICAgICB0aGlzLnVwZGF0ZURhdGEoKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIF9jb250ZXh0OiBhbnkgPSBudWxsO1xuXG5cbiAgICBAT3V0cHV0KCdtY1BsYWNlbWVudENoYW5nZScpIHBsYWNlbWVudENoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICAgIEBPdXRwdXQoJ21jVmlzaWJsZUNoYW5nZScpIHZpc2libGVDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XG5cbiAgICBwcml2YXRlIGdldCBoYXNDbGlja0luVHJpZ2dlcigpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudHJpZ2dlci5pbmNsdWRlcyhQb3BVcFRyaWdnZXJzLkNsaWNrKTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgc2Nyb2xsU3RyYXRlZ3k6ICgpID0+IFNjcm9sbFN0cmF0ZWd5ID0gaW5qZWN0KE1DX1RPT0xUSVBfU0NST0xMX1NUUkFURUdZKTtcbiAgICBwcm90ZWN0ZWQgZm9jdXNNb25pdG9yOiBGb2N1c01vbml0b3IgPSBpbmplY3QoRm9jdXNNb25pdG9yKTtcblxuICAgIHByb3RlY3RlZCBvcmlnaW5TZWxlY3RvciA9ICcubWMtdG9vbHRpcCc7XG5cbiAgICBwcm90ZWN0ZWQgb3ZlcmxheUNvbmZpZzogT3ZlcmxheUNvbmZpZyA9IHtcbiAgICAgICAgcGFuZWxDbGFzczogJ21jLXRvb2x0aXAtcGFuZWwnXG4gICAgfTtcblxuICAgIHByb3RlY3RlZCBtb2RpZmllcjogVG9vbHRpcE1vZGlmaWVyID0gVG9vbHRpcE1vZGlmaWVyLkRlZmF1bHQ7XG5cbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgc3VwZXIoKTtcblxuICAgICAgICB0aGlzLmZvY3VzTW9uaXRvcj8ubW9uaXRvcih0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCk7XG4gICAgICAgIHRoaXMucGFyZW50UG9wdXA/LmNsb3NlZFN0cmVhbS5zdWJzY3JpYmUoKCkgPT4gdGhpcy5oaWRlKCkpO1xuICAgIH1cblxuICAgIG5nT25EZXN0cm95KCkge1xuICAgICAgICB0aGlzLmZvY3VzTW9uaXRvcj8uc3RvcE1vbml0b3JpbmcodGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQpO1xuXG4gICAgICAgIHN1cGVyLm5nT25EZXN0cm95KCk7XG4gICAgfVxuXG4gICAgc2hvdyhkZWxheTogbnVtYmVyID0gdGhpcy5lbnRlckRlbGF5KSB7XG4gICAgICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTpuby1zdHJpbmctbGl0ZXJhbFxuICAgICAgICBpZiAodGhpcy50cmlnZ2VyTmFtZSA9PT0gJ2ZvY3VzJyAmJiB0aGlzLmZvY3VzTW9uaXRvclsnX2xhc3RGb2N1c09yaWdpbiddICE9PSAna2V5Ym9hcmQnKSB7IHJldHVybjsgfVxuXG4gICAgICAgIHN1cGVyLnNob3coZGVsYXkpO1xuXG4gICAgICAgIGlmICh0aGlzLnJlbGF0aXZlVG9Qb2ludGVyKSB7XG4gICAgICAgICAgICB0aGlzLmFwcGx5UmVsYXRpdmVUb1BvaW50ZXIoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHNob3dGb3JFbGVtZW50KGVsZW1lbnQ6IEhUTUxFbGVtZW50KSB7XG4gICAgICAgIHRoaXMuc2hvdygpO1xuICAgICAgICB0aGlzLnN0cmF0ZWd5LnNldE9yaWdpbihlbGVtZW50KTtcbiAgICB9XG5cbiAgICB1cGRhdGVEYXRhKCkge1xuICAgICAgICBpZiAoIXRoaXMuaW5zdGFuY2UpIHsgcmV0dXJuOyB9XG5cbiAgICAgICAgdGhpcy5pbnN0YW5jZS5jb250ZW50ID0gdGhpcy5jb250ZW50O1xuICAgICAgICB0aGlzLmluc3RhbmNlLmNvbnRleHQgPSB0aGlzLmNvbnRleHQgJiYgeyAkaW1wbGljaXQ6IHRoaXMuY29udGV4dCB9O1xuICAgICAgICB0aGlzLmluc3RhbmNlLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgdGhpcy51cGRhdGVQb3NpdGlvbih0cnVlKTtcbiAgICB9XG5cbiAgICBjbG9zaW5nQWN0aW9ucygpIHtcbiAgICAgICAgcmV0dXJuIG1lcmdlKFxuICAgICAgICAgICAgdGhpcy5oYXNDbGlja0luVHJpZ2dlciA/IHRoaXMub3ZlcmxheVJlZiEub3V0c2lkZVBvaW50ZXJFdmVudHMoKSA6IEVNUFRZLFxuICAgICAgICAgICAgdGhpcy5vdmVybGF5UmVmIS5kZXRhY2htZW50cygpXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgZ2V0T3ZlcmxheUhhbmRsZUNvbXBvbmVudFR5cGUoKTogVHlwZTxNY1Rvb2x0aXBDb21wb25lbnQ+IHtcbiAgICAgICAgcmV0dXJuIE1jVG9vbHRpcENvbXBvbmVudDtcbiAgICB9XG5cbiAgICB1cGRhdGVDbGFzc01hcChuZXdQbGFjZW1lbnQ6IHN0cmluZyA9IHRoaXMucGxhY2VtZW50KSB7XG4gICAgICAgIGlmICghdGhpcy5pbnN0YW5jZSkgeyByZXR1cm47IH1cblxuICAgICAgICB0aGlzLmluc3RhbmNlLnVwZGF0ZUNsYXNzTWFwKFxuICAgICAgICAgICAgUE9TSVRJT05fVE9fQ1NTX01BUFtuZXdQbGFjZW1lbnRdLFxuICAgICAgICAgICAgdGhpcy5jdXN0b21DbGFzcyxcbiAgICAgICAgICAgIHsgbW9kaWZpZXI6IHRoaXMubW9kaWZpZXIgfVxuICAgICAgICApO1xuICAgICAgICB0aGlzLmluc3RhbmNlLm1hcmtGb3JDaGVjaygpO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBhcHBseVJlbGF0aXZlVG9Qb2ludGVyKCkge1xuICAgICAgICBpZiAoXG4gICAgICAgICAgICAhdGhpcy5zdHJhdGVneSB8fFxuICAgICAgICAgICAgIVtQb3BVcFBsYWNlbWVudHMuVG9wLCBQb3BVcFBsYWNlbWVudHMuQm90dG9tXS5pbmNsdWRlcyh0aGlzLnBsYWNlbWVudCkgfHxcbiAgICAgICAgICAgIHRoaXMudHJpZ2dlck5hbWUgIT09ICdtb3VzZWVudGVyJ1xuICAgICAgICApIHtcbiAgICAgICAgICAgIHRoaXMucmVzZXRPcmlnaW4oKTtcblxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgdHJpZ2dlclJlY3RzOiBET01SZWN0ID0gdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgICAgIGNvbnN0IHBvaW50OiBQb2ludCA9IHsgeDogMCwgeTogMCB9O1xuXG4gICAgICAgIGlmICh0aGlzLnBsYWNlbWVudCA9PT0gUG9wVXBQbGFjZW1lbnRzLlRvcCkge1xuICAgICAgICAgICAgcG9pbnQueCA9IHRoaXMubW91c2VFdmVudCEueDtcbiAgICAgICAgICAgIHBvaW50LnkgPSB0cmlnZ2VyUmVjdHMueTtcbiAgICAgICAgICAgIHRoaXMucGxhY2VtZW50UHJpb3JpdHkgPSBbUG9wVXBQbGFjZW1lbnRzLlRvcCwgUG9wVXBQbGFjZW1lbnRzLkxlZnQsIFBvcFVwUGxhY2VtZW50cy5SaWdodF07XG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy5wbGFjZW1lbnQgPT09IFBvcFVwUGxhY2VtZW50cy5Cb3R0b20pIHtcbiAgICAgICAgICAgIHBvaW50LnggPSB0aGlzLm1vdXNlRXZlbnQhLng7XG4gICAgICAgICAgICBwb2ludC55ID0gdHJpZ2dlclJlY3RzLnkgKyB0cmlnZ2VyUmVjdHMuaGVpZ2h0O1xuICAgICAgICAgICAgdGhpcy5wbGFjZW1lbnRQcmlvcml0eSA9IFtQb3BVcFBsYWNlbWVudHMuQm90dG9tLCBQb3BVcFBsYWNlbWVudHMuTGVmdCwgUG9wVXBQbGFjZW1lbnRzLlJpZ2h0XTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMudXBkYXRlUG9zaXRpb24odHJ1ZSk7XG4gICAgICAgIHRoaXMuc3RyYXRlZ3kuc2V0T3JpZ2luKHBvaW50KTtcbiAgICB9XG59XG5cblxuQERpcmVjdGl2ZSh7XG4gICAgc2VsZWN0b3I6ICdbbWNXYXJuaW5nVG9vbHRpcF0nLFxuICAgIGV4cG9ydEFzOiAnbWNXYXJuaW5nVG9vbHRpcCcsXG4gICAgaG9zdDoge1xuICAgICAgICAnW2NsYXNzLm1jLXRvb2x0aXBfb3Blbl0nOiAnaXNPcGVuJyxcblxuICAgICAgICAnKGtleWRvd24pJzogJ2hhbmRsZUtleWRvd24oJGV2ZW50KScsXG4gICAgICAgICcodG91Y2hlbmQpJzogJ2hhbmRsZVRvdWNoZW5kKCknXG4gICAgfVxufSlcbmV4cG9ydCBjbGFzcyBNY1dhcm5pbmdUb29sdGlwVHJpZ2dlciBleHRlbmRzIE1jVG9vbHRpcFRyaWdnZXIge1xuICAgIEBJbnB1dCgnbWNXYXJuaW5nVG9vbHRpcCcpXG4gICAgZ2V0IGNvbnRlbnQoKTogc3RyaW5nIHwgVGVtcGxhdGVSZWY8YW55PiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9jb250ZW50O1xuICAgIH1cblxuICAgIHNldCBjb250ZW50KGNvbnRlbnQ6IHN0cmluZyB8IFRlbXBsYXRlUmVmPGFueT4pIHtcbiAgICAgICAgdGhpcy5fY29udGVudCA9IGNvbnRlbnQ7XG5cbiAgICAgICAgdGhpcy51cGRhdGVEYXRhKCk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIG1vZGlmaWVyOiBUb29sdGlwTW9kaWZpZXIgPSBUb29sdGlwTW9kaWZpZXIuV2FybmluZztcbn1cblxuQERpcmVjdGl2ZSh7XG4gICAgc2VsZWN0b3I6ICdbbWNFeHRlbmRlZFRvb2x0aXBdJyxcbiAgICBleHBvcnRBczogJ21jRXh0ZW5kZWRUb29sdGlwJyxcbiAgICBob3N0OiB7XG4gICAgICAgICdbY2xhc3MubWMtdG9vbHRpcF9vcGVuXSc6ICdpc09wZW4nLFxuXG4gICAgICAgICcoa2V5ZG93biknOiAnaGFuZGxlS2V5ZG93bigkZXZlbnQpJyxcbiAgICAgICAgJyh0b3VjaGVuZCknOiAnaGFuZGxlVG91Y2hlbmQoKSdcbiAgICB9XG59KVxuZXhwb3J0IGNsYXNzIE1jRXh0ZW5kZWRUb29sdGlwVHJpZ2dlciBleHRlbmRzIE1jVG9vbHRpcFRyaWdnZXIge1xuICAgIEBJbnB1dCgnbWNFeHRlbmRlZFRvb2x0aXAnKVxuICAgIGdldCBjb250ZW50KCk6IHN0cmluZyB8IFRlbXBsYXRlUmVmPGFueT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fY29udGVudDtcbiAgICB9XG5cbiAgICBzZXQgY29udGVudChjb250ZW50OiBzdHJpbmcgfCBUZW1wbGF0ZVJlZjxhbnk+KSB7XG4gICAgICAgIHRoaXMuX2NvbnRlbnQgPSBjb250ZW50O1xuXG4gICAgICAgIHRoaXMudXBkYXRlRGF0YSgpO1xuICAgIH1cblxuICAgIEBJbnB1dCgnbWNUb29sdGlwSGVhZGVyJylcbiAgICBnZXQgaGVhZGVyKCk6IHN0cmluZyB8IFRlbXBsYXRlUmVmPGFueT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5faGVhZGVyO1xuICAgIH1cblxuICAgIHNldCBoZWFkZXIoaGVhZGVyOiBzdHJpbmcgfCBUZW1wbGF0ZVJlZjxhbnk+KSB7XG4gICAgICAgIHRoaXMuX2hlYWRlciA9IGhlYWRlcjtcblxuICAgICAgICB0aGlzLnVwZGF0ZURhdGEoKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIF9oZWFkZXI6IHN0cmluZyB8IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgICBwcm90ZWN0ZWQgbW9kaWZpZXI6IFRvb2x0aXBNb2RpZmllciA9IFRvb2x0aXBNb2RpZmllci5FeHRlbmRlZDtcblxuICAgIHVwZGF0ZURhdGEoKSB7XG4gICAgICAgIGlmICghdGhpcy5pbnN0YW5jZSkgeyByZXR1cm47IH1cblxuICAgICAgICBzdXBlci51cGRhdGVEYXRhKCk7XG4gICAgICAgIHRoaXMuaW5zdGFuY2UuaGVhZGVyID0gdGhpcy5oZWFkZXI7XG4gICAgfVxufVxuIiwiPGRpdiBjbGFzcz1cIm1jLXRvb2x0aXBcIlxuICAgICBbbmdDbGFzc109XCJjbGFzc01hcFwiXG4gICAgIFtAc3RhdGVdPVwidmlzaWJpbGl0eVwiXG4gICAgIChAc3RhdGUuc3RhcnQpPVwiYW5pbWF0aW9uU3RhcnQoKVwiXG4gICAgIChAc3RhdGUuZG9uZSk9XCJhbmltYXRpb25Eb25lKCRldmVudClcIj5cblxuICAgIDxkaXYgY2xhc3M9XCJtYy10b29sdGlwX19pbm5lclwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwibWMtdG9vbHRpcF9fYXJyb3dcIj48L2Rpdj5cblxuICAgICAgICA8ZGl2IGNsYXNzPVwibWMtdG9vbHRpcF9faGVhZGVyXCIgKm5nSWY9XCJoZWFkZXJcIj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJpc1RlbXBsYXRlUmVmKGhlYWRlcilcIiBbbmdUZW1wbGF0ZU91dGxldF09XCIkYW55KGhlYWRlcilcIiBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwiY29udGV4dFwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFpc1RlbXBsYXRlUmVmKGhlYWRlcilcIj5cbiAgICAgICAgICAgICAgICA8ZGl2Pnt7IGhlYWRlciB9fTwvZGl2PlxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwibWMtdG9vbHRpcF9fY29udGVudFwiPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImlzVGVtcGxhdGVSZWYoY29udGVudClcIiBbbmdUZW1wbGF0ZU91dGxldF09XCIkYW55KGNvbnRlbnQpXCIgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cImNvbnRleHRcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhaXNUZW1wbGF0ZVJlZihjb250ZW50KVwiPlxuICAgICAgICAgICAgICAgIDxkaXY+e3sgY29udGVudCB9fTwvZGl2PlxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuPC9kaXY+XG4iXX0=
353
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9vbHRpcC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9tb3NhaWMvdG9vbHRpcC90b29sdGlwLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uL3BhY2thZ2VzL21vc2FpYy90b29sdGlwL3Rvb2x0aXAuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ2pELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBRTlELE9BQU8sRUFDSCxPQUFPLEVBR1YsTUFBTSxzQkFBc0IsQ0FBQztBQUM5QixPQUFPLEVBQ0gsZ0JBQWdCLEVBQ2hCLHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsU0FBUyxFQUNULFlBQVksRUFDWixNQUFNLEVBQ04sTUFBTSxFQUNOLGNBQWMsRUFDZCxLQUFLLEVBRUwsTUFBTSxFQUdOLGlCQUFpQixFQUNwQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQWlCLE9BQU8sRUFBRSxjQUFjLEVBQUUsZUFBZSxFQUFFLGVBQWUsRUFBRSxhQUFhLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUN2SixPQUFPLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUVwQyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQzs7O0FBRzNELE1BQU0sQ0FBTixJQUFZLGVBSVg7QUFKRCxXQUFZLGVBQWU7SUFDdkIsc0NBQW1CLENBQUE7SUFDbkIsc0NBQW1CLENBQUE7SUFDbkIsd0NBQXFCLENBQUE7QUFDekIsQ0FBQyxFQUpXLGVBQWUsS0FBZixlQUFlLFFBSTFCO0FBRUQsTUFBTSxDQUFDLE1BQU0sb0JBQW9CLEdBQUcsSUFBSSxjQUFjLENBQXVCLHNCQUFzQixDQUFDLENBQUM7QUFFckcsb0JBQW9CO0FB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QUNKOzhCQUdPLE9BQU87c0JBRFYsS0FBSzt1QkFBQyxtQkFBbUI7Z0JBWXRCLE1BQU07c0JBRFQsS0FBSzt1QkFBQyxpQkFBaUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBGb2N1c01vbml0b3IgfSBmcm9tICdAYW5ndWxhci9jZGsvYTExeSc7XG5pbXBvcnQgeyBjb2VyY2VCb29sZWFuUHJvcGVydHkgfSBmcm9tICdAYW5ndWxhci9jZGsvY29lcmNpb24nO1xuaW1wb3J0IHsgUG9pbnQgfSBmcm9tICdAYW5ndWxhci9jZGsvZHJhZy1kcm9wJztcbmltcG9ydCB7XG4gICAgT3ZlcmxheSxcbiAgICBTY3JvbGxTdHJhdGVneSxcbiAgICBPdmVybGF5Q29uZmlnXG59IGZyb20gJ0Bhbmd1bGFyL2Nkay9vdmVybGF5JztcbmltcG9ydCB7XG4gICAgYm9vbGVhbkF0dHJpYnV0ZSxcbiAgICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgICBDb21wb25lbnQsXG4gICAgRGlyZWN0aXZlLFxuICAgIEV2ZW50RW1pdHRlcixcbiAgICBpbmplY3QsXG4gICAgSW5qZWN0LFxuICAgIEluamVjdGlvblRva2VuLFxuICAgIElucHV0LFxuICAgIE9uRGVzdHJveSxcbiAgICBPdXRwdXQsXG4gICAgVGVtcGxhdGVSZWYsXG4gICAgVHlwZSxcbiAgICBWaWV3RW5jYXBzdWxhdGlvblxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE1jUGFyZW50UG9wdXAsIE1jUG9wVXAsIE1jUG9wVXBUcmlnZ2VyLCBNQ19QQVJFTlRfUE9QVVAsIFBvcFVwUGxhY2VtZW50cywgUG9wVXBUcmlnZ2VycywgUE9TSVRJT05fVE9fQ1NTX01BUCB9IGZyb20gJ0BwdHNlY3VyaXR5L21vc2FpYy9jb3JlJztcbmltcG9ydCB7IEVNUFRZLCBtZXJnZSB9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQgeyBtY1Rvb2x0aXBBbmltYXRpb25zIH0gZnJvbSAnLi90b29sdGlwLmFuaW1hdGlvbnMnO1xuXG5cbmV4cG9ydCBlbnVtIFRvb2x0aXBNb2RpZmllciB7XG4gICAgRGVmYXVsdCA9ICdkZWZhdWx0JyxcbiAgICBXYXJuaW5nID0gJ3dhcm5pbmcnLFxuICAgIEV4dGVuZGVkID0gJ2V4dGVuZGVkJ1xufVxuXG5leHBvcnQgY29uc3QgTUNfVE9PTFRJUF9PUEVOX1RJTUUgPSBuZXcgSW5qZWN0aW9uVG9rZW48KCkgPT4gU2Nyb2xsU3RyYXRlZ3k+KCdtYy10b29sdGlwLW9wZW4tdGltZScpO1xuXG4vKiogQGRvY3MtcHJpdmF0ZSAqL1xuZXhwb3J0IGNvbnN0IE1DX1RPT0xUSVBfT1BFTl9USU1FX1BST1ZJREVSID0ge1xuICAgIHByb3ZpZGU6IE1DX1RPT0xUSVBfT1BFTl9USU1FLFxuICAgIHVzZVZhbHVlOiB7IHZhbHVlOiAwIH1cbn07XG5cbmV4cG9ydCBjb25zdCBNSU5fVElNRV9GT1JfREVMQVkgPSAyMDAwO1xuXG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnbWMtdG9vbHRpcC1jb21wb25lbnQnLFxuICAgIGFuaW1hdGlvbnM6IFttY1Rvb2x0aXBBbmltYXRpb25zLnRvb2x0aXBTdGF0ZV0sXG4gICAgdGVtcGxhdGVVcmw6ICcuL3Rvb2x0aXAuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL3Rvb2x0aXAuc2NzcyddLFxuICAgIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gICAgcHJvdmlkZXJzOiBbTUNfVE9PTFRJUF9PUEVOX1RJTUVfUFJPVklERVJdXG59KVxuZXhwb3J0IGNsYXNzIE1jVG9vbHRpcENvbXBvbmVudCBleHRlbmRzIE1jUG9wVXAge1xuICAgIHByZWZpeCA9ICdtYy10b29sdGlwJztcblxuICAgIGNvbnN0cnVjdG9yKEBJbmplY3QoTUNfVE9PTFRJUF9PUEVOX1RJTUUpIHByaXZhdGUgb3BlblRpbWUpIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICB9XG5cbiAgICBzaG93KGRlbGF5OiBudW1iZXIpIHtcbiAgICAgICAgaWYgKCF0aGlzLmNvbnRlbnQpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTpuby1tYWdpYy1udW1iZXJzXG4gICAgICAgIHN1cGVyLnNob3coRGF0ZS5ub3coKSAtIHRoaXMub3BlblRpbWUudmFsdWUgPCBNSU5fVElNRV9GT1JfREVMQVkgPyAwIDogZGVsYXkpO1xuXG4gICAgICAgIHRoaXMub3BlblRpbWUudmFsdWUgPSBEYXRlLm5vdygpO1xuICAgIH1cblxuICAgIHVwZGF0ZUNsYXNzTWFwKHBsYWNlbWVudDogc3RyaW5nLCBjdXN0b21DbGFzczogc3RyaW5nLCB7IG1vZGlmaWVyIH0pIHtcbiAgICAgICAgY29uc3QgY2xhc3NNYXAgPSB7XG4gICAgICAgICAgICBbYCR7dGhpcy5wcmVmaXh9XyR7bW9kaWZpZXJ9YF06IHRydWVcbiAgICAgICAgfTtcblxuICAgICAgICBzdXBlci51cGRhdGVDbGFzc01hcChwbGFjZW1lbnQsIGN1c3RvbUNsYXNzLCBjbGFzc01hcCk7XG4gICAgfVxufVxuXG5leHBvcnQgY29uc3QgTUNfVE9PTFRJUF9TQ1JPTExfU1RSQVRFR1kgPVxuICAgIG5ldyBJbmplY3Rpb25Ub2tlbjwoKSA9PiBTY3JvbGxTdHJhdGVneT4oJ21jLXRvb2x0aXAtc2Nyb2xsLXN0cmF0ZWd5Jyk7XG5cbi8qKiBAZG9jcy1wcml2YXRlICovXG5leHBvcnQgZnVuY3Rpb24gbWNUb29sdGlwU2Nyb2xsU3RyYXRlZ3lGYWN0b3J5KG92ZXJsYXk6IE92ZXJsYXkpOiAoKSA9PiBTY3JvbGxTdHJhdGVneSB7XG4gICAgcmV0dXJuICgpID0+IG92ZXJsYXkuc2Nyb2xsU3RyYXRlZ2llcy5jbG9zZSgpO1xufVxuXG4vKiogQGRvY3MtcHJpdmF0ZSAqL1xuZXhwb3J0IGNvbnN0IE1DX1RPT0xUSVBfU0NST0xMX1NUUkFURUdZX0ZBQ1RPUllfUFJPVklERVIgPSB7XG4gICAgcHJvdmlkZTogTUNfVE9PTFRJUF9TQ1JPTExfU1RSQVRFR1ksXG4gICAgZGVwczogW092ZXJsYXldLFxuICAgIHVzZUZhY3Rvcnk6IG1jVG9vbHRpcFNjcm9sbFN0cmF0ZWd5RmFjdG9yeVxufTtcblxuQERpcmVjdGl2ZSh7XG4gICAgc2VsZWN0b3I6ICdbbWNUb29sdGlwXScsXG4gICAgZXhwb3J0QXM6ICdtY1Rvb2x0aXAnLFxuICAgIGhvc3Q6IHtcbiAgICAgICAgJ1tjbGFzcy5tYy10b29sdGlwX29wZW5dJzogJ2lzT3BlbicsXG5cbiAgICAgICAgJyhrZXlkb3duKSc6ICdoYW5kbGVLZXlkb3duKCRldmVudCknLFxuICAgICAgICAnKHRvdWNoZW5kKSc6ICdoYW5kbGVUb3VjaGVuZCgpJ1xuICAgIH1cbn0pXG5leHBvcnQgY2xhc3MgTWNUb29sdGlwVHJpZ2dlciBleHRlbmRzIE1jUG9wVXBUcmlnZ2VyPE1jVG9vbHRpcENvbXBvbmVudD4gaW1wbGVtZW50cyBPbkRlc3Ryb3kge1xuICAgIHBhcmVudFBvcHVwID0gaW5qZWN0PE1jUGFyZW50UG9wdXA+KE1DX1BBUkVOVF9QT1BVUCwgeyBvcHRpb25hbDogdHJ1ZSB9KTtcbiAgICAvKipcbiAgICAgKiBkZWZhdWx0IG9mZnNldCArIGFycm93IHBvc2l0aW9uIHNoaWZ0XG4gICAgICogQGRvY3MtcHJpdmF0ZVxuICAgICAqL1xuICAgIGFycm93T2Zmc2V0ID0gMTkuNTtcblxuICAgIEBJbnB1dCgnbWNWaXNpYmxlJylcbiAgICBnZXQgdG9vbHRpcFZpc2libGUoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLnZpc2libGU7XG4gICAgfVxuXG4gICAgc2V0IHRvb2x0aXBWaXNpYmxlKHZhbHVlOiBib29sZWFuKSB7XG4gICAgICAgIHN1cGVyLnVwZGF0ZVZpc2libGUodmFsdWUpO1xuICAgIH1cblxuICAgIEBJbnB1dCgnbWNQbGFjZW1lbnQnKVxuICAgIGdldCB0b29sdGlwUGxhY2VtZW50KCk6IFBvcFVwUGxhY2VtZW50cyB7XG4gICAgICAgIHJldHVybiB0aGlzLnBsYWNlbWVudDtcbiAgICB9XG5cbiAgICBzZXQgdG9vbHRpcFBsYWNlbWVudCh2YWx1ZTogUG9wVXBQbGFjZW1lbnRzKSB7XG4gICAgICAgIHN1cGVyLnVwZGF0ZVBsYWNlbWVudCh2YWx1ZSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUG9zaXRpb25zIHRoZSB0b29sdGlwIHJlbGF0aXZlIHRvIHRoZSBtb3VzZSBjdXJzb3IuIE9ubHkgYXZhaWxhYmxlIGZvciB0b3AgYW5kIGJvdHRvbSBtY1BsYWNlbWVudC5cbiAgICAgKiBEb2VzIG5vdCB3b3JrIHdpdGggbWNQbGFjZW1lbnRQcmlvcml0eS5cbiAgICAgKi9cbiAgICBASW5wdXQoeyBhbGlhczogJ21jUmVsYXRpdmVUb1BvaW50ZXInLCB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSkgcmVsYXRpdmVUb1BvaW50ZXI6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAgIEBJbnB1dCgnbWNQbGFjZW1lbnRQcmlvcml0eScpXG4gICAgZ2V0IHRvb2x0aXBQbGFjZW1lbnRQcmlvcml0eSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucGxhY2VtZW50UHJpb3JpdHk7XG4gICAgfVxuXG4gICAgc2V0IHRvb2x0aXBQbGFjZW1lbnRQcmlvcml0eSh2YWx1ZSkge1xuICAgICAgICBzdXBlci51cGRhdGVQbGFjZW1lbnRQcmlvcml0eSh2YWx1ZSk7XG4gICAgfVxuXG4gICAgQElucHV0KCdtY1Rvb2x0aXAnKVxuICAgIGdldCBjb250ZW50KCk6IHN0cmluZyB8IFRlbXBsYXRlUmVmPGFueT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fY29udGVudDtcbiAgICB9XG5cbiAgICBzZXQgY29udGVudChjb250ZW50OiBzdHJpbmcgfCBUZW1wbGF0ZVJlZjxhbnk+KSB7XG4gICAgICAgIHRoaXMuX2NvbnRlbnQgPSBjb250ZW50O1xuXG4gICAgICAgIHRoaXMudXBkYXRlRGF0YSgpO1xuICAgIH1cblxuICAgIEBJbnB1dCgnbWNUb29sdGlwRGlzYWJsZWQnKVxuICAgIGdldCBkaXNhYmxlZCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2Rpc2FibGVkO1xuICAgIH1cblxuICAgIHNldCBkaXNhYmxlZCh2YWx1ZSkge1xuICAgICAgICB0aGlzLl9kaXNhYmxlZCA9IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSh2YWx1ZSk7XG4gICAgfVxuXG4gICAgQElucHV0KCdtY0VudGVyRGVsYXknKSBlbnRlckRlbGF5ID0gNDAwO1xuICAgIEBJbnB1dCgnbWNMZWF2ZURlbGF5JykgbGVhdmVEZWxheSA9IDA7XG5cbiAgICBASW5wdXQoJ21jVHJpZ2dlcicpXG4gICAgZ2V0IHRyaWdnZXIoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3RyaWdnZXI7XG4gICAgfVxuXG4gICAgc2V0IHRyaWdnZXIodmFsdWU6IHN0cmluZykge1xuICAgICAgICBpZiAodmFsdWUpIHtcbiAgICAgICAgICAgIHRoaXMuX3RyaWdnZXIgPSB2YWx1ZTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuX3RyaWdnZXIgPSBgJHtQb3BVcFRyaWdnZXJzLkhvdmVyfSwgJHtQb3BVcFRyaWdnZXJzLkZvY3VzfWA7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmluaXRMaXN0ZW5lcnMoKTtcbiAgICB9XG5cbiAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6bmFtaW5nLWNvbnZlbnRpb25cbiAgICBwcm90ZWN0ZWQgX3RyaWdnZXIgPSBgJHtQb3BVcFRyaWdnZXJzLkhvdmVyfSwgJHtQb3BVcFRyaWdnZXJzLkZvY3VzfWA7XG5cbiAgICBASW5wdXQoJ21jVG9vbHRpcENsYXNzJylcbiAgICBnZXQgY3VzdG9tQ2xhc3MoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2N1c3RvbUNsYXNzO1xuICAgIH1cblxuICAgIHNldCBjdXN0b21DbGFzcyh2YWx1ZTogc3RyaW5nKSB7XG4gICAgICAgIGlmICh2YWx1ZSkge1xuICAgICAgICAgICAgdGhpcy5fY3VzdG9tQ2xhc3MgPSB2YWx1ZTtcblxuICAgICAgICAgICAgdGhpcy51cGRhdGVDbGFzc01hcCgpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5fY3VzdG9tQ2xhc3MgPSAnJztcbiAgICAgICAgfVxuICAgIH1cblxuICAgIEBJbnB1dCgnbWNUb29sdGlwQ29udGV4dCcpXG4gICAgZ2V0IGNvbnRleHQoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9jb250ZXh0O1xuICAgIH1cblxuICAgIHNldCBjb250ZXh0KGN0eCkge1xuICAgICAgICB0aGlzLl9jb250ZXh0ID0gY3R4O1xuICAgICAgICB0aGlzLnVwZGF0ZURhdGEoKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIF9jb250ZXh0OiBhbnkgPSBudWxsO1xuXG5cbiAgICBAT3V0cHV0KCdtY1BsYWNlbWVudENoYW5nZScpIHBsYWNlbWVudENoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICAgIEBPdXRwdXQoJ21jVmlzaWJsZUNoYW5nZScpIHZpc2libGVDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XG5cbiAgICBwcml2YXRlIGdldCBoYXNDbGlja0luVHJpZ2dlcigpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudHJpZ2dlci5pbmNsdWRlcyhQb3BVcFRyaWdnZXJzLkNsaWNrKTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgc2Nyb2xsU3RyYXRlZ3k6ICgpID0+IFNjcm9sbFN0cmF0ZWd5ID0gaW5qZWN0KE1DX1RPT0xUSVBfU0NST0xMX1NUUkFURUdZKTtcbiAgICBwcm90ZWN0ZWQgZm9jdXNNb25pdG9yOiBGb2N1c01vbml0b3IgPSBpbmplY3QoRm9jdXNNb25pdG9yKTtcblxuICAgIHByb3RlY3RlZCBvcmlnaW5TZWxlY3RvciA9ICcubWMtdG9vbHRpcCc7XG5cbiAgICBwcm90ZWN0ZWQgb3ZlcmxheUNvbmZpZzogT3ZlcmxheUNvbmZpZyA9IHtcbiAgICAgICAgcGFuZWxDbGFzczogJ21jLXRvb2x0aXAtcGFuZWwnXG4gICAgfTtcblxuICAgIHByb3RlY3RlZCBtb2RpZmllcjogVG9vbHRpcE1vZGlmaWVyID0gVG9vbHRpcE1vZGlmaWVyLkRlZmF1bHQ7XG5cbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgc3VwZXIoKTtcblxuICAgICAgICB0aGlzLmZvY3VzTW9uaXRvcj8ubW9uaXRvcih0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCk7XG4gICAgICAgIHRoaXMucGFyZW50UG9wdXA/LmNsb3NlZFN0cmVhbS5zdWJzY3JpYmUoKCkgPT4gdGhpcy5oaWRlKCkpO1xuICAgIH1cblxuICAgIG5nT25EZXN0cm95KCkge1xuICAgICAgICB0aGlzLmZvY3VzTW9uaXRvcj8uc3RvcE1vbml0b3JpbmcodGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQpO1xuXG4gICAgICAgIHN1cGVyLm5nT25EZXN0cm95KCk7XG4gICAgfVxuXG4gICAgc2hvdyhkZWxheTogbnVtYmVyID0gdGhpcy5lbnRlckRlbGF5KSB7XG4gICAgICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTpuby1zdHJpbmctbGl0ZXJhbFxuICAgICAgICBpZiAodGhpcy50cmlnZ2VyTmFtZSA9PT0gJ2ZvY3VzJyAmJiB0aGlzLmZvY3VzTW9uaXRvclsnX2xhc3RGb2N1c09yaWdpbiddICE9PSAna2V5Ym9hcmQnKSB7IHJldHVybjsgfVxuXG4gICAgICAgIHN1cGVyLnNob3coZGVsYXkpO1xuXG4gICAgICAgIGlmICh0aGlzLnJlbGF0aXZlVG9Qb2ludGVyKSB7XG4gICAgICAgICAgICB0aGlzLmFwcGx5UmVsYXRpdmVUb1BvaW50ZXIoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHNob3dGb3JFbGVtZW50KGVsZW1lbnQ6IEhUTUxFbGVtZW50KSB7XG4gICAgICAgIHRoaXMuc2hvdygpO1xuICAgICAgICB0aGlzLnN0cmF0ZWd5LnNldE9yaWdpbihlbGVtZW50KTtcbiAgICB9XG5cbiAgICB1cGRhdGVEYXRhKCkge1xuICAgICAgICBpZiAoIXRoaXMuaW5zdGFuY2UpIHsgcmV0dXJuOyB9XG5cbiAgICAgICAgdGhpcy5pbnN0YW5jZS5jb250ZW50ID0gdGhpcy5jb250ZW50O1xuICAgICAgICB0aGlzLmluc3RhbmNlLmNvbnRleHQgPSB0aGlzLmNvbnRleHQgJiYgeyAkaW1wbGljaXQ6IHRoaXMuY29udGV4dCB9O1xuICAgICAgICB0aGlzLmluc3RhbmNlLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgdGhpcy51cGRhdGVQb3NpdGlvbih0cnVlKTtcbiAgICB9XG5cbiAgICBjbG9zaW5nQWN0aW9ucygpIHtcbiAgICAgICAgcmV0dXJuIG1lcmdlKFxuICAgICAgICAgICAgdGhpcy5oYXNDbGlja0luVHJpZ2dlciA/IHRoaXMub3ZlcmxheVJlZiEub3V0c2lkZVBvaW50ZXJFdmVudHMoKSA6IEVNUFRZLFxuICAgICAgICAgICAgdGhpcy5vdmVybGF5UmVmIS5kZXRhY2htZW50cygpXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgZ2V0T3ZlcmxheUhhbmRsZUNvbXBvbmVudFR5cGUoKTogVHlwZTxNY1Rvb2x0aXBDb21wb25lbnQ+IHtcbiAgICAgICAgcmV0dXJuIE1jVG9vbHRpcENvbXBvbmVudDtcbiAgICB9XG5cbiAgICB1cGRhdGVDbGFzc01hcChuZXdQbGFjZW1lbnQ6IHN0cmluZyA9IHRoaXMucGxhY2VtZW50KSB7XG4gICAgICAgIGlmICghdGhpcy5pbnN0YW5jZSkgeyByZXR1cm47IH1cblxuICAgICAgICB0aGlzLmluc3RhbmNlLnVwZGF0ZUNsYXNzTWFwKFxuICAgICAgICAgICAgUE9TSVRJT05fVE9fQ1NTX01BUFtuZXdQbGFjZW1lbnRdLFxuICAgICAgICAgICAgdGhpcy5jdXN0b21DbGFzcyxcbiAgICAgICAgICAgIHsgbW9kaWZpZXI6IHRoaXMubW9kaWZpZXIgfVxuICAgICAgICApO1xuICAgICAgICB0aGlzLmluc3RhbmNlLm1hcmtGb3JDaGVjaygpO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBhcHBseVJlbGF0aXZlVG9Qb2ludGVyKCkge1xuICAgICAgICBpZiAoXG4gICAgICAgICAgICAhdGhpcy5zdHJhdGVneSB8fFxuICAgICAgICAgICAgIVtQb3BVcFBsYWNlbWVudHMuVG9wLCBQb3BVcFBsYWNlbWVudHMuQm90dG9tXS5pbmNsdWRlcyh0aGlzLnBsYWNlbWVudCkgfHxcbiAgICAgICAgICAgIHRoaXMudHJpZ2dlck5hbWUgIT09ICdtb3VzZWVudGVyJ1xuICAgICAgICApIHtcbiAgICAgICAgICAgIHRoaXMucmVzZXRPcmlnaW4oKTtcblxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgdHJpZ2dlclJlY3RzOiBET01SZWN0ID0gdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgICAgIGNvbnN0IHBvaW50OiBQb2ludCA9IHsgeDogMCwgeTogMCB9O1xuXG4gICAgICAgIGlmICh0aGlzLnBsYWNlbWVudCA9PT0gUG9wVXBQbGFjZW1lbnRzLlRvcCkge1xuICAgICAgICAgICAgcG9pbnQueCA9IHRoaXMubW91c2VFdmVudCEueDtcbiAgICAgICAgICAgIHBvaW50LnkgPSB0cmlnZ2VyUmVjdHMueTtcbiAgICAgICAgICAgIHRoaXMucGxhY2VtZW50UHJpb3JpdHkgPSBbUG9wVXBQbGFjZW1lbnRzLlRvcCwgUG9wVXBQbGFjZW1lbnRzLkxlZnQsIFBvcFVwUGxhY2VtZW50cy5SaWdodF07XG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy5wbGFjZW1lbnQgPT09IFBvcFVwUGxhY2VtZW50cy5Cb3R0b20pIHtcbiAgICAgICAgICAgIHBvaW50LnggPSB0aGlzLm1vdXNlRXZlbnQhLng7XG4gICAgICAgICAgICBwb2ludC55ID0gdHJpZ2dlclJlY3RzLnkgKyB0cmlnZ2VyUmVjdHMuaGVpZ2h0O1xuICAgICAgICAgICAgdGhpcy5wbGFjZW1lbnRQcmlvcml0eSA9IFtQb3BVcFBsYWNlbWVudHMuQm90dG9tLCBQb3BVcFBsYWNlbWVudHMuTGVmdCwgUG9wVXBQbGFjZW1lbnRzLlJpZ2h0XTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMudXBkYXRlUG9zaXRpb24odHJ1ZSk7XG4gICAgICAgIHRoaXMuc3RyYXRlZ3kuc2V0T3JpZ2luKHBvaW50KTtcbiAgICB9XG59XG5cblxuQERpcmVjdGl2ZSh7XG4gICAgc2VsZWN0b3I6ICdbbWNXYXJuaW5nVG9vbHRpcF0nLFxuICAgIGV4cG9ydEFzOiAnbWNXYXJuaW5nVG9vbHRpcCcsXG4gICAgaG9zdDoge1xuICAgICAgICAnW2NsYXNzLm1jLXRvb2x0aXBfb3Blbl0nOiAnaXNPcGVuJyxcblxuICAgICAgICAnKGtleWRvd24pJzogJ2hhbmRsZUtleWRvd24oJGV2ZW50KScsXG4gICAgICAgICcodG91Y2hlbmQpJzogJ2hhbmRsZVRvdWNoZW5kKCknXG4gICAgfVxufSlcbmV4cG9ydCBjbGFzcyBNY1dhcm5pbmdUb29sdGlwVHJpZ2dlciBleHRlbmRzIE1jVG9vbHRpcFRyaWdnZXIge1xuICAgIEBJbnB1dCgnbWNXYXJuaW5nVG9vbHRpcCcpXG4gICAgZ2V0IGNvbnRlbnQoKTogc3RyaW5nIHwgVGVtcGxhdGVSZWY8YW55PiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9jb250ZW50O1xuICAgIH1cblxuICAgIHNldCBjb250ZW50KGNvbnRlbnQ6IHN0cmluZyB8IFRlbXBsYXRlUmVmPGFueT4pIHtcbiAgICAgICAgdGhpcy5fY29udGVudCA9IGNvbnRlbnQ7XG5cbiAgICAgICAgdGhpcy51cGRhdGVEYXRhKCk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIG1vZGlmaWVyOiBUb29sdGlwTW9kaWZpZXIgPSBUb29sdGlwTW9kaWZpZXIuV2FybmluZztcbn1cblxuQERpcmVjdGl2ZSh7XG4gICAgc2VsZWN0b3I6ICdbbWNFeHRlbmRlZFRvb2x0aXBdJyxcbiAgICBleHBvcnRBczogJ21jRXh0ZW5kZWRUb29sdGlwJyxcbiAgICBob3N0OiB7XG4gICAgICAgICdbY2xhc3MubWMtdG9vbHRpcF9vcGVuXSc6ICdpc09wZW4nLFxuXG4gICAgICAgICcoa2V5ZG93biknOiAnaGFuZGxlS2V5ZG93bigkZXZlbnQpJyxcbiAgICAgICAgJyh0b3VjaGVuZCknOiAnaGFuZGxlVG91Y2hlbmQoKSdcbiAgICB9XG59KVxuZXhwb3J0IGNsYXNzIE1jRXh0ZW5kZWRUb29sdGlwVHJpZ2dlciBleHRlbmRzIE1jVG9vbHRpcFRyaWdnZXIge1xuICAgIEBJbnB1dCgnbWNFeHRlbmRlZFRvb2x0aXAnKVxuICAgIGdldCBjb250ZW50KCk6IHN0cmluZyB8IFRlbXBsYXRlUmVmPGFueT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fY29udGVudDtcbiAgICB9XG5cbiAgICBzZXQgY29udGVudChjb250ZW50OiBzdHJpbmcgfCBUZW1wbGF0ZVJlZjxhbnk+KSB7XG4gICAgICAgIHRoaXMuX2NvbnRlbnQgPSBjb250ZW50O1xuXG4gICAgICAgIHRoaXMudXBkYXRlRGF0YSgpO1xuICAgIH1cblxuICAgIEBJbnB1dCgnbWNUb29sdGlwSGVhZGVyJylcbiAgICBnZXQgaGVhZGVyKCk6IHN0cmluZyB8IFRlbXBsYXRlUmVmPGFueT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5faGVhZGVyO1xuICAgIH1cblxuICAgIHNldCBoZWFkZXIoaGVhZGVyOiBzdHJpbmcgfCBUZW1wbGF0ZVJlZjxhbnk+KSB7XG4gICAgICAgIHRoaXMuX2hlYWRlciA9IGhlYWRlcjtcblxuICAgICAgICB0aGlzLnVwZGF0ZURhdGEoKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIF9oZWFkZXI6IHN0cmluZyB8IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgICBwcm90ZWN0ZWQgbW9kaWZpZXI6IFRvb2x0aXBNb2RpZmllciA9IFRvb2x0aXBNb2RpZmllci5FeHRlbmRlZDtcblxuICAgIHVwZGF0ZURhdGEoKSB7XG4gICAgICAgIGlmICghdGhpcy5pbnN0YW5jZSkgeyByZXR1cm47IH1cblxuICAgICAgICBzdXBlci51cGRhdGVEYXRhKCk7XG4gICAgICAgIHRoaXMuaW5zdGFuY2UuaGVhZGVyID0gdGhpcy5oZWFkZXI7XG4gICAgfVxufVxuIiwiPGRpdiBjbGFzcz1cIm1jLXRvb2x0aXBcIlxuICAgICBbbmdDbGFzc109XCJjbGFzc01hcFwiXG4gICAgIFtAc3RhdGVdPVwidmlzaWJpbGl0eVwiXG4gICAgIChAc3RhdGUuc3RhcnQpPVwiYW5pbWF0aW9uU3RhcnQoKVwiXG4gICAgIChAc3RhdGUuZG9uZSk9XCJhbmltYXRpb25Eb25lKCRldmVudClcIj5cblxuICAgIDxkaXYgY2xhc3M9XCJtYy10b29sdGlwX19pbm5lclwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwibWMtdG9vbHRpcF9fYXJyb3dcIj48L2Rpdj5cblxuICAgICAgICA8ZGl2IGNsYXNzPVwibWMtdG9vbHRpcF9faGVhZGVyXCIgKm5nSWY9XCJoZWFkZXJcIj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJpc1RlbXBsYXRlUmVmKGhlYWRlcilcIiBbbmdUZW1wbGF0ZU91dGxldF09XCIkYW55KGhlYWRlcilcIiBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwiY29udGV4dFwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFpc1RlbXBsYXRlUmVmKGhlYWRlcilcIj5cbiAgICAgICAgICAgICAgICA8ZGl2Pnt7IGhlYWRlciB9fTwvZGl2PlxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwibWMtdG9vbHRpcF9fY29udGVudFwiPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImlzVGVtcGxhdGVSZWYoY29udGVudClcIiBbbmdUZW1wbGF0ZU91dGxldF09XCIkYW55KGNvbnRlbnQpXCIgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cImNvbnRleHRcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhaXNUZW1wbGF0ZVJlZihjb250ZW50KVwiPlxuICAgICAgICAgICAgICAgIDxkaXY+e3sgY29udGVudCB9fTwvZGl2PlxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuPC9kaXY+XG4iXX0=