raise-common-lib 0.0.213 → 0.0.215

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 (84) hide show
  1. package/README.md +57 -57
  2. package/bundles/raise-common-lib.umd.js +122 -31
  3. package/bundles/raise-common-lib.umd.js.map +1 -1
  4. package/bundles/raise-common-lib.umd.min.js +1 -1
  5. package/bundles/raise-common-lib.umd.min.js.map +1 -1
  6. package/esm2015/lib/dashboard/bar-charts/bar-charts.component.js +2 -2
  7. package/esm2015/lib/dashboard/dashboard-properties/data-mart-new/data-mart-new.component.js +3 -3
  8. package/esm2015/lib/dashboard/dialog-group/download/index.component.js +3 -3
  9. package/esm2015/lib/dashboard/dialog-group/empty-icon-prompt/empty-icon-prompt.component.js +3 -3
  10. package/esm2015/lib/dashboard/gadget-group/gadget-pivot/gadget-pivot.component.js +2 -2
  11. package/esm2015/lib/dashboard/gadget-group/gadget-pivot-chart/gadget-pivot.component.js +2 -2
  12. package/esm2015/lib/dashboard/gadget-group/gadget-table/gadget-table.component.js +2 -2
  13. package/esm2015/lib/dashboard/gadget-group/gadget-transpose/gadget-transpose.component.js +3 -3
  14. package/esm2015/lib/dashboard/pane-group-new.component.js +1 -1
  15. package/esm2015/lib/dashboard/sidebar-iconlist/field-filter/field-filter.component.js +2 -2
  16. package/esm2015/lib/dashboard/sidebar-iconlist/field-format/field-format.component.js +3 -3
  17. package/esm2015/lib/dashboard/sidebar-iconlist/portlet-type-new/portlet-type-new.component.js +3 -3
  18. package/esm2015/lib/dashboard/sidebar-iconlist/sidebar-iconlist-new.component.js +4 -4
  19. package/esm2015/lib/dialog/new-action-notification/new-action-notification.component.js +1 -1
  20. package/esm2015/lib/float-box/index.component.js +97 -6
  21. package/esm2015/lib/form/drawer-form/drawer-form.component.js +1 -1
  22. package/esm2015/lib/form/richtexteditor/index.component.js +1 -1
  23. package/esm2015/lib/layout/drawer/index.component.js +1 -1
  24. package/esm2015/lib/layout/page-tab/index.component.js +1 -1
  25. package/esm5/lib/dashboard/bar-charts/bar-charts.component.js +2 -2
  26. package/esm5/lib/dashboard/dashboard-properties/data-mart-new/data-mart-new.component.js +3 -3
  27. package/esm5/lib/dashboard/dialog-group/download/index.component.js +3 -3
  28. package/esm5/lib/dashboard/dialog-group/empty-icon-prompt/empty-icon-prompt.component.js +3 -3
  29. package/esm5/lib/dashboard/gadget-group/gadget-pivot/gadget-pivot.component.js +2 -2
  30. package/esm5/lib/dashboard/gadget-group/gadget-pivot-chart/gadget-pivot.component.js +2 -2
  31. package/esm5/lib/dashboard/gadget-group/gadget-table/gadget-table.component.js +2 -2
  32. package/esm5/lib/dashboard/gadget-group/gadget-transpose/gadget-transpose.component.js +3 -3
  33. package/esm5/lib/dashboard/pane-group-new.component.js +1 -1
  34. package/esm5/lib/dashboard/sidebar-iconlist/field-filter/field-filter.component.js +2 -2
  35. package/esm5/lib/dashboard/sidebar-iconlist/field-format/field-format.component.js +3 -3
  36. package/esm5/lib/dashboard/sidebar-iconlist/portlet-type-new/portlet-type-new.component.js +3 -3
  37. package/esm5/lib/dashboard/sidebar-iconlist/sidebar-iconlist-new.component.js +4 -4
  38. package/esm5/lib/dialog/new-action-notification/new-action-notification.component.js +1 -1
  39. package/esm5/lib/float-box/index.component.js +97 -6
  40. package/esm5/lib/form/drawer-form/drawer-form.component.js +1 -1
  41. package/esm5/lib/form/richtexteditor/index.component.js +1 -1
  42. package/esm5/lib/layout/drawer/index.component.js +1 -1
  43. package/esm5/lib/layout/page-tab/index.component.js +1 -1
  44. package/fesm2015/raise-common-lib.js +122 -31
  45. package/fesm2015/raise-common-lib.js.map +1 -1
  46. package/fesm5/raise-common-lib.js +122 -31
  47. package/fesm5/raise-common-lib.js.map +1 -1
  48. package/lib/float-box/index.component.d.ts +1 -0
  49. package/package.json +1 -1
  50. package/raise-common-lib.metadata.json +1 -1
  51. package/src/assets/img/arrow_right.svg +4 -4
  52. package/src/assets/img/calendar-disabled.svg +6 -6
  53. package/src/assets/img/calendar.svg +6 -6
  54. package/src/assets/img/calendar_arrow_left.svg +3 -3
  55. package/src/assets/img/calendar_arrow_right.svg +3 -3
  56. package/src/assets/img/checked-vector.svg +3 -3
  57. package/src/assets/img/dialog-close.svg +4 -4
  58. package/src/assets/img/dialog-grow.svg +6 -6
  59. package/src/assets/img/dialog-shrink.svg +6 -6
  60. package/src/assets/img/plus.svg +4 -4
  61. package/src/assets/img/search.svg +4 -4
  62. package/src/assets/img/shrink-icon.svg +6 -6
  63. package/src/assets/img/time-disabled.svg +4 -4
  64. package/src/assets/img/time.svg +4 -4
  65. package/src/assets/img/toolbar-action-addFolder.svg +17 -17
  66. package/src/assets/img/toolbar-action-calculator.svg +11 -11
  67. package/src/assets/img/toolbar-action-collapse.svg +7 -7
  68. package/src/assets/img/toolbar-action-combine.svg +4 -4
  69. package/src/assets/img/toolbar-action-edit.svg +4 -4
  70. package/src/assets/img/toolbar-action-expand.svg +7 -7
  71. package/src/assets/img/toolbar-action-folderMove.svg +8 -8
  72. package/src/assets/img/toolbar-action-lock.svg +6 -6
  73. package/src/assets/img/toolbar-action-preview.svg +7 -7
  74. package/src/assets/img/toolbar-action-publish.svg +5 -5
  75. package/src/assets/img/toolbar-action-reminders.svg +10 -10
  76. package/src/assets/img/toolbar-action-rename.svg +7 -7
  77. package/src/assets/img/toolbar-action-saveSequence.svg +5 -5
  78. package/src/assets/img/toolbar-action-send-file.svg +5 -5
  79. package/src/assets/img/toolbar-action-settle.svg +7 -7
  80. package/src/assets/img/toolbar-action-share.svg +5 -5
  81. package/src/assets/img/toolbar-action-submitForApproval.svg +4 -4
  82. package/src/assets/img/toolbar-action-sync.svg +4 -4
  83. package/src/assets/img/toolbar-action-template.svg +6 -6
  84. package/src/assets/img/toolbar-action-workflow.svg +9 -9
@@ -525,7 +525,7 @@ export class BarChartsComponent {
525
525
  }
526
526
  BarChartsComponent.decorators = [
527
527
  { type: Component, args: [{
528
- selector: "kt-bar-charts",
528
+ selector: "rs-bar-charts",
529
529
  template: "<div\r\n\tclass=\"content\"\r\n\t#chartContent\r\n\tid=\"chartContent\"\r\n\t*ngIf=\"dataColumn || dataLine\"\r\n>\r\n\t<ejs-chart\r\n\t\t#chart\r\n\t\tstyle=\"display: block\"\r\n\t\talign=\"center\"\r\n\t\t[title]=\"title\"\r\n\t\t[primaryXAxis]=\"primaryXAxis\"\r\n\t\t[primaryYAxis]=\"primaryYAxis\"\r\n\t\t[tooltip]=\"tooltip\"\r\n\t\t(load)=\"load($event)\"\r\n\t\t[chartArea]=\"chartArea\"\r\n\t\twidth=\"100%\"\r\n\t\t[height]=\"height\"\r\n\t\t[width]=\"width\"\r\n\t\t[zoomSettings]=\"zoomSettings\"\r\n\t\t[legendSettings]=\"legend\"\r\n\t\t[palettes]=\"customPalette\"\r\n\t\t(pointRender)=\"onPointRender($event)\"\r\n\t\t[enableAnimation]=\"false\"\r\n\t\t(textRender)=\"textRender($event)\"\r\n\t\t(tooltipRender)=\"tooltipRender($event)\"\r\n\t\t(axisLabelRender)=\"OnChartAxisLabeRender($event)\"\r\n\t>\r\n\t\t<e-series-collection>\r\n\t\t\t<ng-container *ngIf=\"dataColumn && dataColumn.length > 0\">\r\n\t\t\t\t<e-series\r\n\t\t\t\t\t*ngFor=\"let i of column\"\r\n\t\t\t\t\t[dataSource]=\"dataColumn\"\r\n\t\t\t\t\ttype=\"Column\"\r\n\t\t\t\t\t[xName]=\"i.xName\"\r\n\t\t\t\t\t[marker]=\"marker\"\r\n\t\t\t\t\t[yName]=\"i.yName\"\r\n\t\t\t\t\t[name]=\"i.name\"\r\n\t\t\t\t\tcolumnSpacing=\"0.1\"\r\n\t\t\t\t\twidth=\"2\"\r\n\t\t\t\t\topacity=\"1\"\r\n\t\t\t\t>\r\n\t\t\t\t</e-series>\r\n\t\t\t</ng-container>\r\n\r\n\t\t\t<!-- \u53EA\u9009\u7B2C\u4E8C\u4E2AY\u8F74\u65F6\uFF0C\u663E\u793A\u6298\u7EBF\u56FE -->\r\n\t\t\t<ng-container\r\n\t\t\t\t*ngIf=\"\r\n\t\t\t\t\tdataLine &&\r\n\t\t\t\t\tdataLine.length > 0 &&\r\n\t\t\t\t\tdataColumn &&\r\n\t\t\t\t\tdataColumn.length <= 0\r\n\t\t\t\t\"\r\n\t\t\t>\r\n\t\t\t\t<e-series\r\n\t\t\t\t\t*ngFor=\"let i of columnLine\"\r\n\t\t\t\t\t[dataSource]=\"dataLine\"\r\n\t\t\t\t\ttype=\"Spline\"\r\n\t\t\t\t\t[xName]=\"i.xName\"\r\n\t\t\t\t\t[yName]=\"i.yName\"\r\n\t\t\t\t\t[marker]=\"marker\"\r\n\t\t\t\t\t[name]=\"i.name\"\r\n\t\t\t\t\tcolumnSpacing=\"0.1\"\r\n\t\t\t\t\twidth=\"2\"\r\n\t\t\t\t\topacity=\"1\"\r\n\t\t\t\t>\r\n\t\t\t\t</e-series>\r\n\t\t\t</ng-container>\r\n\r\n\t\t\t<!-- \u5982\u679C\u4E24\u4E2AY\u8F74\u662F\u540C\u7C7B\u578B\u6570\u636E\uFF0C\u5171\u7528\u4E00\u4E2AY\u8F74 -->\r\n\t\t\t<ng-container\r\n\t\t\t\t*ngIf=\"\r\n\t\t\t\t\tdataColumn &&\r\n\t\t\t\t\tdataColumn.length > 0 &&\r\n\t\t\t\t\tdataLine &&\r\n\t\t\t\t\tdataLine.length > 0 &&\r\n\t\t\t\t\tcolumnType == lineType\r\n\t\t\t\t\"\r\n\t\t\t>\r\n\t\t\t\t<e-series\r\n\t\t\t\t\t*ngFor=\"let i of columnLine\"\r\n\t\t\t\t\t[dataSource]=\"dataLine\"\r\n\t\t\t\t\ttype=\"Spline\"\r\n\t\t\t\t\t[xName]=\"i.xName\"\r\n\t\t\t\t\t[yName]=\"i.yName\"\r\n\t\t\t\t\t[name]=\"i.name\"\r\n\t\t\t\t\t[marker]=\"marker\"\r\n\t\t\t\t\tcolumnSpacing=\"0.1\"\r\n\t\t\t\t\twidth=\"2\"\r\n\t\t\t\t\topacity=\"1\"\r\n\t\t\t\t>\r\n\t\t\t\t</e-series>\r\n\t\t\t</ng-container>\r\n\r\n\t\t\t<!-- \u5982\u679C\u4E24\u4E2AY\u8F74\u662F\u4E0D\u540C\u7C7B\u578B\u6570\u636E\uFF0C\u5C31\u7528\u4E24\u4E2AY\u8F74 -->\r\n\t\t\t<ng-container\r\n\t\t\t\t*ngIf=\"\r\n\t\t\t\t\tdataColumn &&\r\n\t\t\t\t\tdataColumn.length > 0 &&\r\n\t\t\t\t\tdataLine &&\r\n\t\t\t\t\tdataLine.length > 0 &&\r\n\t\t\t\t\tcolumnType != lineType\r\n\t\t\t\t\"\r\n\t\t\t>\r\n\t\t\t\t<e-series\r\n\t\t\t\t\t*ngFor=\"let i of columnLine\"\r\n\t\t\t\t\t[dataSource]=\"dataLine\"\r\n\t\t\t\t\ttype=\"Spline\"\r\n\t\t\t\t\t[xName]=\"i.xName\"\r\n\t\t\t\t\t[yName]=\"i.yName\"\r\n\t\t\t\t\t[marker]=\"marker\"\r\n\t\t\t\t\t[name]=\"i.name\"\r\n\t\t\t\t\twidth=\"2\"\r\n\t\t\t\t\topacity=\"1\"\r\n\t\t\t\t\tyAxisName=\"yAxis2\"\r\n\t\t\t\t>\r\n\t\t\t\t</e-series>\r\n\t\t\t</ng-container>\r\n\t\t</e-series-collection>\r\n\r\n\t\t<e-axes>\r\n\t\t\t<ng-container\r\n\t\t\t\t*ngIf=\"\r\n\t\t\t\t\tdataColumn &&\r\n\t\t\t\t\tdataColumn.length > 0 &&\r\n\t\t\t\t\tdataLine &&\r\n\t\t\t\t\tdataLine.length > 0\r\n\t\t\t\t\"\r\n\t\t\t>\r\n\t\t\t\t<e-axis\r\n\t\t\t\t\topposedPosition=\"true\"\r\n\t\t\t\t\trowIndex=\"0\"\r\n\t\t\t\t\tname=\"yAxis2\"\r\n\t\t\t\t\t[majorGridLines]=\"{ width: 0 }\"\r\n\t\t\t\t\ttitle=\"\"\r\n\t\t\t\t\t[lineStyle]=\"{ width: 0 }\"\r\n\t\t\t\t\t[majorTickLines]=\"{ width: 0 }\"\r\n\t\t\t\t>\r\n\t\t\t\t</e-axis>\r\n\t\t\t</ng-container>\r\n\t\t</e-axes>\r\n\t</ejs-chart>\r\n\t<div class=\"full-box-mask\" *ngIf=\"pageLoading\">\r\n\t\t<mat-spinner\r\n\t\t\tstyle=\"z-index: 999\"\r\n\t\t\tmode=\"indeterminate\"\r\n\t\t\t[diameter]=\"24\"\r\n\t\t></mat-spinner>\r\n\t</div>\r\n</div>\r\n",
530
530
  encapsulation: ViewEncapsulation.None,
531
531
  providers: [DecimalPipe],
@@ -635,4 +635,4 @@ if (false) {
635
635
  */
636
636
  BarChartsComponent.prototype.decimalPipe;
637
637
  }
638
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFyLWNoYXJ0cy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9yYWlzZS1jb21tb24tbGliLyIsInNvdXJjZXMiOlsibGliL2Rhc2hib2FyZC9iYXItY2hhcnRzL2Jhci1jaGFydHMuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLE9BQU8sRUFDTCxpQkFBaUIsRUFDakIsU0FBUyxFQUNULFVBQVUsRUFDVixLQUFLLEVBR0wsU0FBUyxFQUNULGlCQUFpQixHQUNsQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBR0wsY0FBYyxHQUVmLE1BQU0sZ0NBQWdDLENBQUM7QUFFeEMsT0FBTyxjQUFjLE1BQU0sMEJBQTBCLENBQUM7QUFDdEQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFFeEQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzlDLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxTQUFTLENBQUM7QUFTbkMsTUFBTSxPQUFPLGtCQUFrQjs7Ozs7O0lBNkY3QixZQUNVLEdBQXNCLEVBQ3ZCLGdCQUFrQyxFQUNqQyxXQUF3QjtRQUZ4QixRQUFHLEdBQUgsR0FBRyxDQUFtQjtRQUN2QixxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWtCO1FBQ2pDLGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBN0Z6QixlQUFVLEdBQVEsRUFBRSxDQUFDLENBQUMsVUFBVTs7UUFDaEMsYUFBUSxHQUFRLEVBQUUsQ0FBQyxDQUFDLFVBQVU7O1FBQzlCLHVCQUFrQixHQUFRLEVBQUUsQ0FBQyxDQUFDLFVBQVU7O1FBQ3hDLGVBQVUsR0FBUSxRQUFRLENBQUM7UUFDM0IsYUFBUSxHQUFRLFFBQVEsQ0FBQztRQUN6QixlQUFVLEdBQVEsSUFBSSxDQUFDO1FBQ3ZCLFlBQU8sR0FBUSxJQUFJLENBQUM7UUFDcEIsY0FBUyxHQUFRLElBQUksQ0FBQztRQUN4QixXQUFNLEdBQVUsRUFBRSxD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ICBDb21wb25lbnQsXHJcbiAgRWxlbWVudFJlZixcclxuICBJbnB1dCxcclxuICBPbkluaXQsXHJcbiAgU2ltcGxlQ2hhbmdlcyxcclxuICBWaWV3Q2hpbGQsXHJcbiAgVmlld0VuY2Fwc3VsYXRpb24sXHJcbn0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHtcclxuICBJTG9hZGVkRXZlbnRBcmdzLFxyXG4gIENoYXJ0VGhlbWUsXHJcbiAgQ2hhcnRDb21wb25lbnQsXHJcbiAgSVRvb2x0aXBSZW5kZXJFdmVudEFyZ3MsXHJcbn0gZnJvbSBcIkBzeW5jZnVzaW9uL2VqMi1hbmd1bGFyLWNoYXJ0c1wiO1xyXG5pbXBvcnQgeyBEcm9wRG93bkxpc3QgfSBmcm9tIFwiQHN5bmNmdXNpb24vZWoyLWFuZ3VsYXItZHJvcGRvd25zXCI7XHJcbmltcG9ydCBSZXNpemVPYnNlcnZlciBmcm9tIFwicmVzaXplLW9ic2VydmVyLXBvbHlmaWxsXCI7XHJcbmltcG9ydCB7IERhc2hib2FyZFNlcnZpY2UgfSBmcm9tIFwiLi4vZGFzaGJvYXJkLnNlcnZpY2VcIjtcclxuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSBcInJ4anNcIjtcclxuaW1wb3J0IHsgRGVjaW1hbFBpcGUgfSBmcm9tIFwiQGFuZ3VsYXIvY29tbW9uXCI7XHJcbmltcG9ydCB7IGRlYm91bmNlIH0gZnJvbSBcIi4vdXRpbHNcIjtcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiBcImt0LWJhci1jaGFydHNcIixcclxuICB0ZW1wbGF0ZVVybDogXCIuL2Jhci1jaGFydHMuY29tcG9uZW50Lmh0bWxcIixcclxuICBzdHlsZVVybHM6IFtcIi4vYmFyLWNoYXJ0cy5jb21wb25lbnQuc2Nzc1wiXSxcclxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxyXG4gIHByb3ZpZGVyczogW0RlY2ltYWxQaXBlXSxcclxufSlcclxuZXhwb3J0IGNsYXNzIEJhckNoYXJ0c0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcbiAgQFZpZXdDaGlsZChcImNoYXJ0Q29udGVudFwiLCB7IHN0YXRpYzogZmFsc2UgfSkgY29udGVudDogRWxlbWVudFJlZjtcclxuICBAVmlld0NoaWxkKFwiY2hhcnRcIiwgeyBzdGF0aWM6IGZhbHNlIH0pIGNoYXJ0OiBDaGFydENvbXBvbmVudDtcclxuICBASW5wdXQoKSBkYXRhQ29sdW1uOiBhbnkgPSBbXTsgLy8gIOafseeKtuWbvuaVsOaNrua6kFxyXG4gIEBJbnB1dCgpIGRhdGFMaW5lOiBhbnkgPSBbXTsgLy8gIOaKmOe6v+WbvuaVsOaNrua6kFxyXG4gIEBJbnB1dCgpIGRhdGFTdGFja2luZ0NvbHVtbjogYW55ID0gW107IC8vICDloIbnp6/lm77mlbDmja7mupBcclxuICBASW5wdXQoKSBjb2x1bW5UeXBlOiBhbnkgPSBcIm51bWJlclwiO1xyXG4gIEBJbnB1dCgpIGxpbmVUeXBlOiBhbnkgPSBcIm51bWJlclwiO1xyXG4gIEBJbnB1dCgpIHRoZW1lQ29sb3I6IGFueSA9IG51bGw7XHJcbiAgQElucHV0KCkgcG9ydGxldDogYW55ID0gbnVsbDtcclxuICBASW5wdXQoKSBkYXNoYm9hcmQ6IGFueSA9IG51bGw7XHJcbiAgcHVibGljIGNvbHVtbjogYW55W10gPSBbXTtcclxuICBwdWJsaWMgY29sdW1uTGluZTogYW55W10gPSBbXTtcclxuICBwdWJsaWMgY29uZmlnO1xyXG4gIHB1YmxpYyBfZGF0YVN0YWNraW5nQ29sdW1uID0gW107XHJcbiAgcHVibGljIG1hcmtlcjtcclxuICBwdWJsaWMgc3BlY2lhbEtleSA9IFtcIklSUlwiLCBcIkRQSVwiLCBcIk1PSUNcIiwgXCJQSUNcIiwgXCJSVlBJXCIsIFwiVFZQSVwiXTtcclxuICBwYWdlTG9hZGluZyA9IGZhbHNlO1xyXG5cclxuICBwdWJsaWMgem9vbVNldHRpbmdzOiBPYmplY3QgPSB7XHJcbiAgICAvLyBlbmFibGVNb3VzZVdoZWVsWm9vbWluZzogdHJ1ZSxcclxuICAgIC8vIGVuYWJsZVNlbGVjdGlvblpvb21pbmc6IHRydWUsXHJcbiAgICAvLyB0b29sYmFySXRlbXM6IFtdLFxyXG4gICAgLy8gZW5hYmxlUGFuOiB0cnVlLFxyXG4gICAgZW5hYmxlOiBmYWxzZSxcclxuICB9O1xyXG5cclxuICAvL0luaXRpYWxpemluZyBQcmltYXJ5IFggQXhpc1xyXG4gIHB1YmxpYyBwcmltYXJ5WEF4aXM6IE9iamVjdCA9IHtcclxuICAgIHZhbHVlVHlwZTogXCJDYXRlZ29yeVwiLFxyXG4gICAgbGFiZWxJbnRlcnNlY3RBY3Rpb246IFwiUm90YXRlNDVcIixcclxuICAgIG1ham9yR3JpZExpbmVzOiB7IHdpZHRoOiAwIH0sXHJcbiAgICBtYWpvclRpY2tMaW5lczogeyB3aWR0aDogMCB9LFxyXG4gICAgZWRnZUxhYmVsUGxhY2VtZW50OiBcIlNoaWZ0XCIsXHJcblxyXG4gICAgLy8gZW5hYmxlU2Nyb2xsYmFyOiB0cnVlLFxyXG4gICAgLy8gZW5hYmxlVHJpbTogdHJ1ZSxcclxuICAgIC8vIGVuYWJsZVBhbjogdHJ1ZSxcclxuICAgIC8vIHJvdGF0ZTogMCxcclxuICAgIGxhYmVsU3R5bGU6IHtcclxuICAgICAgZm9udFdlaWdodDogXCJub3JtYWxcIixcclxuICAgICAgY29sb3I6IFwiIzQ0NTY2Y1wiLFxyXG4gICAgICBmb250RmFtaWx5OiBcIkFyaWFsXCIsXHJcbiAgICAgIHNpemU6IFwiMTNweFwiLFxyXG4gICAgfSxcclxuICB9O1xyXG5cclxuICAvL0luaXRpYWxpemluZyBQcmltYXJ5IFkgQXhpc1xyXG4gIHB1YmxpYyBwcmltYXJ5WUF4aXM6IE9iamVjdCA9IHtcclxuICAgIHRpdGxlOiBcIlwiLCAvL0ZpcnN0IFlcclxuICAgIGxpbmVTdHlsZTogeyB3aWR0aDogMCB9LFxyXG4gICAgbWFqb3JUaWNrTGluZXM6IHsgd2lkdGg6IDAgfSxcclxuICAgIG1ham9yR3JpZExpbmVzOiB7IGNvbG9yOiBcIiNmMmYyZjJcIiB9LCAvLyDorr7nva7kuLvopoHnvZHmoLznur/popzoibJcclxuICAgIGxhYmVsRm9ybWF0OiBcIm4yXCIsXHJcbiAgfTtcclxuXHJcbiAgcHVibGljIGNoYXJ0QXJlYTogT2JqZWN0ID0ge1xyXG4gICAgYm9yZGVyOiB7XHJcbiAgICAgIHdpZHRoOiAwLFxyXG4gICAgfSxcclxuICB9O1xyXG5cclxuICAvLyDpvKDmoIfnp7vliLBiYXLkuIrpnaLmmL7npLrnmoRib3hcclxuICBwdWJsaWMgdG9vbHRpcDogT2JqZWN0ID0ge1xyXG4gICAgZW5hYmxlOiB0cnVlLFxyXG4gIH07XHJcblxyXG4gIC8vIOWbvuS+i+iuvue9rlxyXG4gIHB1YmxpYyBsZWdlbmQ6IE9iamVjdCA9IHtcclxuICAgIHZpc2libGU6IHRydWUsXHJcbiAgICBlbmFibGVIaWdobGlnaHQ6IHRydWUsXHJcbiAgfTtcclxuICAvLyBjdXN0b20gY29kZSBzdGFydFxyXG4gIHB1YmxpYyBsb2FkKGFyZ3M6IElMb2FkZWRFdmVudEFyZ3MpOiB2b2lkIHtcclxuICAgIGxldCBzZWxlY3RlZFRoZW1lOiBzdHJpbmcgPSBsb2NhdGlvbi5oYXNoLnNwbGl0KFwiL1wiKVsxXTtcclxuICAgIHNlbGVjdGVkVGhlbWUgPSBzZWxlY3RlZFRoZW1lID8gc2VsZWN0ZWRUaGVtZSA6IFwiTWF0ZXJpYWxcIjtcclxuICAgIGFyZ3MuY2hhcnQudGhlbWUgPSA8Q2hhcnRUaGVtZT4oXHJcbiAgICAgIChzZWxlY3RlZFRoZW1lLmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpICsgc2VsZWN0ZWRUaGVtZS5zbGljZSgxKSlcclxuICAgICAgICAucmVwbGFjZSgvLWRhcmsvaSwgXCJEYXJrXCIpXHJcbiAgICAgICAgLnJlcGxhY2UoL2NvbnRyYXN0L2ksIFwiQ29udHJhc3RcIilcclxuICAgICk7XHJcbiAgfVxyXG4gIC8vIGN1c3RvbSBjb2RlIGVuZFxyXG4gIHB1YmxpYyB0aXRsZTogc3RyaW5nID0gXCJcIjtcclxuXHJcbiAgaGVpZ2h0OiBzdHJpbmcgPSBcIjI1MHB4XCI7XHJcbiAgd2lkdGg6IHN0cmluZyA9IFwiMTAwJVwiO1xyXG5cclxuICBwdWJsaWMgY3VzdG9tUGFsZXR0ZTogc3RyaW5nW10gPSBbXTsgLy/pu5jorqTpopzoibLnu4RcclxuICBwcml2YXRlIHN1YnNjcmlwdGlvbnM6IFN1YnNjcmlwdGlvbltdID0gW107XHJcbiAgcHVibGljIGV4cG9ydFR5cGU6IERyb3BEb3duTGlzdDtcclxuICBwdWJsaWMgbWFya2VyRm9ybWF0ID0gXCJcIjtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIHJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcbiAgICBwdWJsaWMgZGFzaGJvYXJkU2VydmljZTogRGFzaGJvYXJkU2VydmljZSxcclxuICAgIHByaXZhdGUgZGVjaW1hbFBpcGU6IERlY2ltYWxQaXBlXHJcbiAgKSB7fVxyXG5cclxuICBuZ09uSW5pdCgpIHtcclxuICAgIHRoaXMuY29uZmlnID0gdGhpcy5wb3J0bGV0LmNvbmZpZyAmJiBKU09OLnBhcnNlKHRoaXMucG9ydGxldC5jb25maWcpO1xyXG4gICAgdGhpcy5pbml0TWFya2VyQ29uZmlnKCk7XHJcbiAgICB0aGlzLmluaXREYXRhKCk7XHJcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaChcclxuICAgICAgdGhpcy5kYXNoYm9hcmRTZXJ2aWNlLmdldFN3aXRjaENvbmZpZygpLnN1YnNjcmliZSgocmVzOiBhbnkpID0+IHtcclxuICAgICAgICBpZiAodGhpcy5wb3J0bGV0Lm5ld0lkID09PSByZXMuaWQpIHtcclxuICAgICAgICAgIHRoaXMuY29uZmlnLmhhc01hcmtlciA9IHJlcy5jaGVja2VkO1xyXG4gICAgICAgICAgdGhpcy5wb3J0bGV0LmNvbmZpZyA9IEpTT04uc3RyaW5naWZ5KHRoaXMuY29uZmlnKTtcclxuICAgICAgICAgIHRoaXMuaW5pdE1hcmtlckNvbmZpZygpO1xyXG4gICAgICAgICAgdGhpcy5jaGFydC5yZWZyZXNoKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KSxcclxuICAgICAgdGhpcy5kYXNoYm9hcmRTZXJ2aWNlLmdldE1hcmtlckZvcm1hdCgpLnN1YnNjcmliZSgocmVzOiBhbnkpID0+IHtcclxuICAgICAgICBpZiAodGhpcy5wb3J0bGV0Lm5ld0lkID09PSByZXMubmV3SWQpIHtcclxuICAgICAgICAgIHRoaXMuY29uZmlnLm1hcmtlckZvcm1hdCA9IHJlcy5tYXJrZXJGb3JtYXQ7XHJcbiAgICAgICAgICB0aGlzLnBvcnRsZXQuY29uZmlnID0gSlNPTi5zdHJpbmdpZnkodGhpcy5jb25maWcpO1xyXG4gICAgICAgICAgdGhpcy5tYXJrZXJGb3JtYXQgPSByZXMubWFya2VyRm9ybWF0O1xyXG4gICAgICAgICAgdGhpcy5pbml0TWFya2VyQ29uZmlnKCk7XHJcbiAgICAgICAgICB0aGlzLmNoYXJ0LnJlZnJlc2goKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBpbml0TWFya2VyQ29uZmlnKCkge1xyXG4gICAgY29uc3QgZm9ybWF0ID0gdGhpcy5jb25maWcucG9ydGxldFR5cGUgPT09IFwiaGlzdG9yaWNhbElSUlwiID8gXCJwMlwiIDogXCJuMlwiO1xyXG4gICAgdGhpcy5wYWdlTG9hZGluZyA9IGZhbHNlO1xyXG4gICAgY29uc3QgaGFzTWFya2VyID0gdGhpcy5jb25maWcgJiYgdGhpcy5jb25maWcuaGFzTWFya2VyO1xyXG4gICAgdGhpcy5tYXJrZXJGb3JtYXQgPSB0aGlzLmNvbmZpZyAmJiB0aGlzLmNvbmZpZy5tYXJrZXJGb3JtYXQ7XHJcbiAgICB0aGlzLm1hcmtlciA9IHtcclxuICAgICAgdmlzaWJsZTogaGFzTWFya2VyLFxyXG4gICAgICBkYXRhTGFiZWw6IHtcclxuICAgICAgICB2aXNpYmxlOiBoYXNNYXJrZXIsXHJcbiAgICAgICAgZm9ybWF0LFxyXG4gICAgICB9LFxyXG4gICAgfTtcclxuICB9XHJcbiAgdGV4dFJlbmRlcihlKSB7XHJcbiAgICB0aGlzLmRhdGFMaW5lLmZvckVhY2goKGRhdGEpID0+IHtcclxuICAgICAgT2JqZWN0LmtleXMoZGF0YSkuZm9yRWFjaCgoa2V5KSA9PiB7XHJcbiAgICAgICAgaWYgKHRoaXMuc3BlY2lhbEtleS5pbmNsdWRlcyhrZXkpKSB7XHJcbiAgICAgICAgICBpZiAoIWUudGV4dCkge1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBpZiAoZS50ZXh0ICE9IGRhdGFba2V5XSkge1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBpZiAoa2V5ID09PSBcIklSUlwiKSB7XHJcbiAgICAgICAgICAgIGUudGV4dCA9IChlLnRleHQgKiAxMDApLnRvRml4ZWQoMikgKyBcIiVcIjtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIGUudGV4dCA9IE51bWJlcihlLnRleHQpLnRvRml4ZWQoMikgKyBcInhcIjtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgfSk7XHJcbiAgICB0aGlzLmRhdGFDb2x1bW4uZm9yRWFjaCgoZGF0YSkgPT4ge1xyXG4gICAgICBPYmplY3Qua2V5cyhkYXRhKS5mb3JFYWNoKChrZXkpID0+IHtcclxuICAgICAgICBpZiAodGhpcy5zcGVjaWFsS2V5LmluY2x1ZGVzKGtleSkpIHtcclxuICAgICAgICAgIGlmICghZS50ZXh0KSB7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGlmIChlLnRleHQgIT0gZGF0YVtrZXldKSB7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICBpZiAoa2V5ID09PSBcIklSUlwiKSB7XHJcbiAgICAgICAgICAgIGUudGV4dCA9IChlLnRleHQgKiAxMDApLnRvRml4ZWQoMikgKyBcIiVcIjtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIGUudGV4dCA9IE51bWJlcihlLnRleHQpLnRvRml4ZWQoMikgKyBcInhcIjtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgfSk7XHJcbiAgICBpZiAoIWlzTmFOKGUudGV4dCkpIHtcclxuICAgICAgaWYgKGUudGV4dCAhPT0gMCkge1xyXG4gICAgICAgIHN3aXRjaCAodGhpcy5tYXJrZXJGb3JtYXQpIHtcclxuICAgICAgICAgIGNhc2UgXCJNXCI6XHJcbiAgICAgICAgICAgIGUudGV4dCA9XHJcbiAgICAgICAgICAgICAgdGhpcy5kZWNpbWFsUGlwZS50cmFuc2Zvcm0oZS50ZXh0IC8gMTAwMDAwMCwgXCIxLjItMlwiKSArIFwibVwiO1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICBjYXNlIFwiS1wiOlxyXG4gICAgICAgICAgICBlLnRleHQgPSB0aGlzLmRlY2ltYWxQaXBlLnRyYW5zZm9ybShlLnRleHQgLyAxMDAwLCBcIjEuMi0yXCIpICsgXCJrXCI7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgIGNhc2UgXCJiblwiOlxyXG4gICAgICAgICAgICBlLnRleHQgPVxyXG4gICAgICAgICAgICAgIHRoaXMuZGVjaW1hbFBpcGUudHJhbnNmb3JtKGUudGV4dCAvIDEwMDAwMDAwMDAsIFwiMS4yLTJcIikgKyBcImJcIjtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgY2FzZSBcIlRcIjpcclxuICAgICAgICAgICAgZS50ZXh0ID1cclxuICAgICAgICAgICAgICB0aGlzLmRlY2ltYWxQaXBlLnRyYW5zZm9ybShlLnRleHQgLyAxMDAwMDAwMDAwMDAwLCBcIjEuMi0yXCIpICsgXCJ0XCI7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgZS50ZXh0ID0gXCJcIjtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgaW5pdERhdGEoKSB7XHJcbiAgICB0aGlzLmNvbHVtbiA9IFtdO1xyXG4gICAgdGhpcy5jb2x1bW5MaW5lID0gW107XHJcbiAgICBpZiAodGhpcy5kYXRhQ29sdW1uICYmIHRoaXMuZGF0YUNvbHVtbi5sZW5ndGggPiAwKSB7XHJcbiAgICAgIGZvciAodmFyIGkgaW4gdGhpcy5kYXRhQ29sdW1uWzBdKSB7XHJcbiAgICAgICAgaWYgKGkgIT0gXCJwZXJpb2RcIikge1xyXG4gICAgICAgICAgdGhpcy5jb2x1bW4ucHVzaCh7XHJcbiAgICAgICAgICAgIHhOYW1lOiBcInBlcmlvZFwiLFxyXG4gICAgICAgICAgICB5TmFtZTogaSxcclxuICAgICAgICAgICAgbmFtZTogaSxcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLmRhdGFMaW5lICYmIHRoaXMuZGF0YUxpbmUubGVuZ3RoID4gMCkge1xyXG4gICAgICBmb3IgKHZhciBpIGluIHRoaXMuZGF0YUxpbmVbMF0pIHtcclxuICAgICAgICBpZiAoaSAhPSBcInBlcmlvZFwiKSB7XHJcbiAgICAgICAgICB0aGlzLmNvbHVtbkxpbmUucHVzaCh7XHJcbiAgICAgICAgICAgIHhOYW1lOiBcInBlcmlvZFwiLFxyXG4gICAgICAgICAgICB5TmFtZTogaSxcclxuICAgICAgICAgICAgbmFtZTogaSxcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLnRoZW1lQ29sb3IgJiYgdGhpcy50aGVtZUNvbG9yLmxlbmd0aCA+IDApIHtcclxuICAgICAgdGhpcy5jdXN0b21QYWxldHRlID0gdGhpcy50aGVtZUNvbG9yO1xyXG4gICAgfVxyXG4gICAgdGhpcy5yZWYubWFya0ZvckNoZWNrKCk7XHJcbiAgfVxyXG5cclxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKSB7XHJcbiAgICAvLyBpZiAoXHJcbiAgICAvLyBcdChjaGFuZ2VzLmRhdGFDb2x1bW4gJiZcclxuICAgIC8vIFx0XHQhdGhpcy5hcnJheXNBcmVFcXVhbChcclxuICAgIC8vIFx0XHRcdGNoYW5nZXMuZGF0YUNvbHVtbi5jdXJyZW50VmFsdWUsXHJcbiAgICAvLyBcdFx0XHRjaGFuZ2VzLmRhdGFDb2x1bW4ucHJldmlvdXNWYWx1ZVxyXG4gICAgLy8gXHRcdCkpIHx8XHJcbiAgICAvLyBcdChjaGFuZ2VzLmRhdGFMaW5lICYmXHJcbiAgICAvLyBcdFx0IXRoaXMuYXJyYXlzQXJlRXF1YWwoXHJcbiAgICAvLyBcdFx0XHRjaGFuZ2VzLmRhdGFMaW5lLmN1cnJlbnRWYWx1ZSxcclxuICAgIC8vIFx0XHRcdGNoYW5nZXMuZGF0YUxpbmUucHJldmlvdXNWYWx1ZVxyXG4gICAgLy8gXHRcdCkpIHx8XHJcbiAgICAvLyBcdCF0aGlzLmFycmF5c0FyZUVxdWFsKFxyXG4gICAgLy8gXHRcdGNoYW5nZXMudGhlbWVDb2xvciA/IGNoYW5nZXMudGhlbWVDb2xvci5jdXJyZW50VmFsdWUgOiBudWxsLFxyXG4gICAgLy8gXHRcdGNoYW5nZXMudGhlbWVDb2xvciA/IGNoYW5nZXMudGhlbWVDb2xvci5wcmV2aW91c1ZhbHVlIDogbnVsbFxyXG4gICAgLy8gXHQpXHJcbiAgICAvLyApIHtcclxuICAgIC8vIFx0dGhpcy5pbml0RGF0YSgpO1xyXG4gICAgLy8gfVxyXG4gIH1cclxuXHJcbiAgcmVmcmVzaENoYXJ0KCkge1xyXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgIGlmICh0aGlzLmNoYXJ0KSB0aGlzLmNoYXJ0LnJlZnJlc2goKTtcclxuICAgIH0sIDApO1xyXG4gIH1cclxuXHJcbiAgcmVzaXplT2JzZXJ2ZXI6IGFueTtcclxuICBuZ0FmdGVyVmlld0luaXQoKSB7XHJcbiAgICB0aGlzLnJlc2l6ZU9ic2VydmVyID0gbmV3IFJlc2l6ZU9ic2VydmVyKChlbnRyaWVzKSA9PiB7XHJcbiAgICAgIGZvciAobGV0IGVudHJ5IG9mIGVudHJpZXMpIHtcclxuICAgICAgICBjb25zdCB7IHdpZHRoLCBoZWlnaHQgfSA9IGVudHJ5LmNvbnRlbnRSZWN0O1xyXG4gICAgICAgIC8vIOWcqOi/memHjOaJp+ihjOS9oOaDs+imgeeahOaTjeS9nO+8jOavlOWmguabtOaWsOWbvuihqOaIluWFtuS7luebuOWFs+aTjeS9nFxyXG4gICAgICAgIHRoaXMuY2hhbmdlU2l6ZSh3aWR0aCwgaGVpZ2h0KTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgICBpZiAodGhpcy5jb250ZW50KSB7XHJcbiAgICAgIHRoaXMucmVzaXplT2JzZXJ2ZXIub2JzZXJ2ZSh0aGlzLmNvbnRlbnQubmF0aXZlRWxlbWVudCk7XHJcbiAgICB9XHJcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaChcclxuICAgICAgdGhpcy5kYXNoYm9hcmRTZXJ2aWNlLmdldFN0YXJ0UmVmcmVzaCgpLnN1YnNjcmliZSgoZGFzaGJvYXJkSWQpID0+IHtcclxuICAgICAgICBpZiAoZGFzaGJvYXJkSWQgPT09IHRoaXMuZGFzaGJvYXJkLmlkKSB7XHJcbiAgICAgICAgICB0aGlzLnBhZ2VMb2FkaW5nID0gdHJ1ZTtcclxuICAgICAgICAgIHRoaXMucmVmLm1hcmtGb3JDaGVjaygpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSlcclxuICAgICk7XHJcblxyXG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2goXHJcbiAgICAgIHRoaXMuZGFzaGJvYXJkU2VydmljZS5nZXRSZWZyZXNoR2FkZ2V0KCkuc3Vic2NyaWJlKChlKSA9PiB7XHJcbiAgICAgICAgaWYgKCFlKSB7XHJcbiAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNvbnN0IG5ld0lkID0gZVtcIm5ld0lkXCJdO1xyXG4gICAgICAgIGlmIChuZXdJZCA9PT0gdGhpcy5wb3J0bGV0Lm5ld0lkIHx8IG5ld0lkID09PSB0aGlzLnBvcnRsZXQuaWQpIHtcclxuICAgICAgICAgIHRoaXMuaW5pdE1hcmtlckNvbmZpZygpO1xyXG4gICAgICAgICAgdGhpcy5yZWZyZXNoQ2hhcnQoKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgbmdPbkRlc3Ryb3koKSB7XHJcbiAgICAvLyDlnKjnu4Tku7bplIDmr4Hml7blj5bmtojnm5HlkKxcclxuICAgIGlmICh0aGlzLnJlc2l6ZU9ic2VydmVyKSB7XHJcbiAgICAgIHRoaXMucmVzaXplT2JzZXJ2ZXIuZGlzY29ubmVjdCgpO1xyXG4gICAgfVxyXG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLmZvckVhY2goKGVsZSkgPT4gZWxlLnVuc3Vic2NyaWJlKCkpO1xyXG4gIH1cclxuXHJcbiAgQGRlYm91bmNlKDEwMClcclxuICBjaGFuZ2VTaXplKHdpZHRoLCBoZWlnaHQpIHtcclxuICAgIGlmICghd2lkdGggfHwgIWhlaWdodCkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICB0aGlzLndpZHRoID0gYCR7d2lkdGh9cHhgO1xyXG4gICAgdGhpcy5oZWlnaHQgPSBgJHtoZWlnaHQgLSAxMH1weGA7XHJcbiAgICB0aGlzLnJlZi5tYXJrRm9yQ2hlY2soKTtcclxuICB9XHJcblxyXG4gIGV4cG9ydENoYXJ0KCkge1xyXG4gICAgdGhpcy5jaGFydC5leHBvcnRNb2R1bGUuZXhwb3J0KFwiUE5HXCIsIFwiQ2hhcnRcIik7XHJcbiAgfVxyXG5cclxuICBPbkNoYXJ0QXhpc0xhYmVSZW5kZXIoYXJnczogYW55KSB7XHJcbiAgICBpZiAoYXJncy5heGlzLnByb3BOYW1lID09IFwicHJpbWFyeVlBeGlzXCIpIHtcclxuICAgICAgaWYgKFxyXG4gICAgICAgIHRoaXMuY29sdW1uVHlwZSA9PSBcInBlcmNlbnRcIiB8fFxyXG4gICAgICAgICh0aGlzLmRhdGFDb2x1bW4gJiZcclxuICAgICAgICAgIHRoaXMuZGF0YUNvbHVtbi5sZW5ndGggPD0gMCAmJlxyXG4gICAgICAgICAgdGhpcy5saW5lVHlwZSA9PSBcInBlcmNlbnRcIilcclxuICAgICAgKSB7XHJcbiAgICAgICAgYXJncy50ZXh0ID0gdGhpcy5mb3JtYXRQZXJjZW50YWdlKGFyZ3MudGV4dCk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgaWYgKGlzTmFOKGFyZ3MudGV4dCkpIHtcclxuICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgYXJncy50ZXh0ID1cclxuICAgICAgICAgIE51bWJlcihhcmdzLnRleHQpID49IDBcclxuICAgICAgICAgICAgPyB0aGlzLmdldFQoYXJncy50ZXh0KVxyXG4gICAgICAgICAgICA6IGAtJHt0aGlzLmdldFQoYXJncy50ZXh0KX1gO1xyXG4gICAgICB9XHJcbiAgICB9IGVsc2UgaWYgKGFyZ3MuYXhpcy5wcm9wTmFtZSA9PSBcInlBeGlzMlwiKSB7XHJcbiAgICAgIGlmIChcclxuICAgICAgICB0aGlzLmxpbmVUeXBlID09IFwicGVyY2VudFwiICYmXHJcbiAgICAgICAgdGhpcy5kYXRhQ29sdW1uICYmXHJcbiAgICAgICAgdGhpcy5kYXRhQ29sdW1uLmxlbmd0aCA+IDBcclxuICAgICAgKSB7XHJcbiAgICAgICAgYXJncy50ZXh0ID0gdGhpcy5mb3JtYXRQZXJjZW50YWdlKGFyZ3MudGV4dCk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgaWYgKGlzTmFOKGFyZ3MudGV4dCkpIHtcclxuICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgYXJncy50ZXh0ID1cclxuICAgICAgICAgIE51bWJlcihhcmdzLnRleHQpID49IDBcclxuICAgICAgICAgICAgPyB0aGlzLmdldFQoYXJncy50ZXh0KVxyXG4gICAgICAgICAgICA6IGAtJHt0aGlzLmdldFQoYXJncy50ZXh0KX1gO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBnZXRUKHZhbHVlKSB7XHJcbiAgICByZXR1cm4gU3RyaW5nKHZhbHVlKVxyXG4gICAgICAucmVwbGFjZSgvW14wLTkuXS9nLCBcIlwiKVxyXG4gICAgICAucmVwbGFjZSgvKFxcZCkoPz0oXFxkezN9KSsoPyFcXGQpKS9nLCBcIiQxLFwiKTtcclxuICAgIC8vIHJldHVybiB0aGlzLmRlY2ltYWxQaXBlLnRyYW5zZm9ybShOdW1iZXIodmFsdWUpLCBcIjEuMi0yXCIpO1xyXG4gIH1cclxuXHJcbiAgZm9ybWF0UGVyY2VudGFnZShkZWNpbWFsKSB7XHJcbiAgICBjb25zdCBwZXJjZW50YWdlID0gKGRlY2ltYWwgKiAxMDApLnRvRml4ZWQoMik7XHJcbiAgICByZXR1cm4gYCR7cGVyY2VudGFnZX0lYDtcclxuICB9XHJcblxyXG4gIGFycmF5c0FyZUVxdWFsKGFycjEsIGFycjIpIHtcclxuICAgIGlmICgoIWFycjEgJiYgYXJyMikgfHwgKGFycjEgJiYgIWFycjIpKSB7XHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoIWFycjEgJiYgIWFycjIpIHtcclxuICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKGFycjEubGVuZ3RoICE9PSBhcnIyLmxlbmd0aCkge1xyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcblxyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBhcnIxLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgIGNvbnN0IG9iajEgPSBhcnIxW2ldO1xyXG4gICAgICBjb25zdCBvYmoyID0gYXJyMltpXTtcclxuXHJcbiAgICAgIGlmICh0eXBlb2Ygb2JqMSAhPT0gXCJvYmplY3RcIiB8fCB0eXBlb2Ygb2JqMiAhPT0gXCJvYmplY3RcIikge1xyXG4gICAgICAgIGlmIChvYmoxICE9PSBvYmoyKSB7XHJcbiAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgfVxyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIGlmICghdGhpcy5vYmplY3RzQXJlRXF1YWwob2JqMSwgb2JqMikpIHtcclxuICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gdHJ1ZTtcclxuICB9XHJcblxyXG4gIG9iamVjdHNBcmVFcXVhbChvYmoxLCBvYmoyKSB7XHJcbiAgICBjb25zdCBrZXlzMSA9IE9iamVjdC5rZXlzKG9iajEpO1xyXG4gICAgY29uc3Qga2V5czIgPSBPYmplY3Qua2V5cyhvYmoyKTtcclxuXHJcbiAgICBpZiAoa2V5czEubGVuZ3RoICE9PSBrZXlzMi5sZW5ndGgpIHtcclxuICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG5cclxuICAgIGZvciAobGV0IGtleSBvZiBrZXlzMSkge1xyXG4gICAgICBpZiAob2JqMVtrZXldICE9PSBvYmoyW2tleV0pIHtcclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gdHJ1ZTtcclxuICB9XHJcblxyXG4gIG9uUG9pbnRSZW5kZXIoZSkge1xyXG4gICAgaWYgKGUucG9pbnQueSA9PSAwKSB7XHJcbiAgICAgIGUuY2FuY2VsID0gdHJ1ZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyB0b29sdGlwUmVuZGVyKGFyZ3M6IElUb29sdGlwUmVuZGVyRXZlbnRBcmdzIHwgYW55KTogdm9pZCB7XHJcbiAgICBpZiAoaXNOYU4oYXJncy5kYXRhLnBvaW50WSkpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMuY29uZmlnLnBvcnRsZXRUeXBlID09PSBcImhpc3RvcmljYWxJUlJcIikge1xyXG4gICAgICBhcmdzLnRleHQgPSBgJHthcmdzLmRhdGEucG9pbnRYfTogJHsoYXJncy5kYXRhLnBvaW50WSAqIDEwMCkudG9GaXhlZChcclxuICAgICAgICAyXHJcbiAgICAgICl9JWA7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGFyZ3MudGV4dCA9IGAke2FyZ3MuZGF0YS5wb2ludFh9OiAke3RoaXMuZGVjaW1hbFBpcGUudHJhbnNmb3JtKFxyXG4gICAgICBhcmdzLmRhdGEucG9pbnRZLFxyXG4gICAgICBcIjEuMi0yXCJcclxuICAgICl9YDtcclxuICB9XHJcbn1cclxuIl19
638
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFyLWNoYXJ0cy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9yYWlzZS1jb21tb24tbGliLyIsInNvdXJjZXMiOlsibGliL2Rhc2hib2FyZC9iYXItY2hhcnRzL2Jhci1jaGFydHMuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLE9BQU8sRUFDTCxpQkFBaUIsRUFDakIsU0FBUyxFQUNULFVBQVUsRUFDVixLQUFLLEVBR0wsU0FBUyxFQUNULGlCQUFpQixHQUNsQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBR0wsY0FBYyxHQUVmLE1BQU0sZ0NBQWdDLENBQUM7QUFFeEMsT0FBTyxjQUFjLE1BQU0sMEJBQTBCLENBQUM7QUFDdEQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFFeEQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzlDLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxTQUFTLENBQUM7QUFTbkMsTUFBTSxPQUFPLGtCQUFrQjs7Ozs7O0lBNkY3QixZQUNVLEdBQXNCLEVBQ3ZCLGdCQUFrQyxFQUNqQyxXQUF3QjtRQUZ4QixRQUFHLEdBQUgsR0FBRyxDQUFtQjtRQUN2QixxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWtCO1FBQ2pDLGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBN0Z6QixlQUFVLEdBQVEsRUFBRSxDQUFDLENBQUMsVUFBVTs7UUFDaEMsYUFBUSxHQUFRLEVBQUUsQ0FBQyxDQUFDLFVBQVU7O1FBQzlCLHVCQUFrQixHQUFRLEVBQUUsQ0FBQyxDQUFDLFVBQVU7O1FBQ3hDLGVBQVUsR0FBUSxRQUFRLENBQUM7UUFDM0IsYUFBUSxHQUFRLFFBQVEsQ0FBQztRQUN6QixlQUFVLEdBQVEsSUFBSSxDQUFDO1FBQ3ZCLFlBQU8sR0FBUSxJQUFJLENBQUM7UUFDcEIsY0FBUyxHQUFRLElBQUksQ0FBQztRQUN4QixXQUFNLEdBQVUsRUFBRSxD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ICBDb21wb25lbnQsXHJcbiAgRWxlbWVudFJlZixcclxuICBJbnB1dCxcclxuICBPbkluaXQsXHJcbiAgU2ltcGxlQ2hhbmdlcyxcclxuICBWaWV3Q2hpbGQsXHJcbiAgVmlld0VuY2Fwc3VsYXRpb24sXHJcbn0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHtcclxuICBJTG9hZGVkRXZlbnRBcmdzLFxyXG4gIENoYXJ0VGhlbWUsXHJcbiAgQ2hhcnRDb21wb25lbnQsXHJcbiAgSVRvb2x0aXBSZW5kZXJFdmVudEFyZ3MsXHJcbn0gZnJvbSBcIkBzeW5jZnVzaW9uL2VqMi1hbmd1bGFyLWNoYXJ0c1wiO1xyXG5pbXBvcnQgeyBEcm9wRG93bkxpc3QgfSBmcm9tIFwiQHN5bmNmdXNpb24vZWoyLWFuZ3VsYXItZHJvcGRvd25zXCI7XHJcbmltcG9ydCBSZXNpemVPYnNlcnZlciBmcm9tIFwicmVzaXplLW9ic2VydmVyLXBvbHlmaWxsXCI7XHJcbmltcG9ydCB7IERhc2hib2FyZFNlcnZpY2UgfSBmcm9tIFwiLi4vZGFzaGJvYXJkLnNlcnZpY2VcIjtcclxuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSBcInJ4anNcIjtcclxuaW1wb3J0IHsgRGVjaW1hbFBpcGUgfSBmcm9tIFwiQGFuZ3VsYXIvY29tbW9uXCI7XHJcbmltcG9ydCB7IGRlYm91bmNlIH0gZnJvbSBcIi4vdXRpbHNcIjtcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiBcInJzLWJhci1jaGFydHNcIixcclxuICB0ZW1wbGF0ZVVybDogXCIuL2Jhci1jaGFydHMuY29tcG9uZW50Lmh0bWxcIixcclxuICBzdHlsZVVybHM6IFtcIi4vYmFyLWNoYXJ0cy5jb21wb25lbnQuc2Nzc1wiXSxcclxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxyXG4gIHByb3ZpZGVyczogW0RlY2ltYWxQaXBlXSxcclxufSlcclxuZXhwb3J0IGNsYXNzIEJhckNoYXJ0c0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcbiAgQFZpZXdDaGlsZChcImNoYXJ0Q29udGVudFwiLCB7IHN0YXRpYzogZmFsc2UgfSkgY29udGVudDogRWxlbWVudFJlZjtcclxuICBAVmlld0NoaWxkKFwiY2hhcnRcIiwgeyBzdGF0aWM6IGZhbHNlIH0pIGNoYXJ0OiBDaGFydENvbXBvbmVudDtcclxuICBASW5wdXQoKSBkYXRhQ29sdW1uOiBhbnkgPSBbXTsgLy8gIOafseeKtuWbvuaVsOaNrua6kFxyXG4gIEBJbnB1dCgpIGRhdGFMaW5lOiBhbnkgPSBbXTsgLy8gIOaKmOe6v+WbvuaVsOaNrua6kFxyXG4gIEBJbnB1dCgpIGRhdGFTdGFja2luZ0NvbHVtbjogYW55ID0gW107IC8vICDloIbnp6/lm77mlbDmja7mupBcclxuICBASW5wdXQoKSBjb2x1bW5UeXBlOiBhbnkgPSBcIm51bWJlclwiO1xyXG4gIEBJbnB1dCgpIGxpbmVUeXBlOiBhbnkgPSBcIm51bWJlclwiO1xyXG4gIEBJbnB1dCgpIHRoZW1lQ29sb3I6IGFueSA9IG51bGw7XHJcbiAgQElucHV0KCkgcG9ydGxldDogYW55ID0gbnVsbDtcclxuICBASW5wdXQoKSBkYXNoYm9hcmQ6IGFueSA9IG51bGw7XHJcbiAgcHVibGljIGNvbHVtbjogYW55W10gPSBbXTtcclxuICBwdWJsaWMgY29sdW1uTGluZTogYW55W10gPSBbXTtcclxuICBwdWJsaWMgY29uZmlnO1xyXG4gIHB1YmxpYyBfZGF0YVN0YWNraW5nQ29sdW1uID0gW107XHJcbiAgcHVibGljIG1hcmtlcjtcclxuICBwdWJsaWMgc3BlY2lhbEtleSA9IFtcIklSUlwiLCBcIkRQSVwiLCBcIk1PSUNcIiwgXCJQSUNcIiwgXCJSVlBJXCIsIFwiVFZQSVwiXTtcclxuICBwYWdlTG9hZGluZyA9IGZhbHNlO1xyXG5cclxuICBwdWJsaWMgem9vbVNldHRpbmdzOiBPYmplY3QgPSB7XHJcbiAgICAvLyBlbmFibGVNb3VzZVdoZWVsWm9vbWluZzogdHJ1ZSxcclxuICAgIC8vIGVuYWJsZVNlbGVjdGlvblpvb21pbmc6IHRydWUsXHJcbiAgICAvLyB0b29sYmFySXRlbXM6IFtdLFxyXG4gICAgLy8gZW5hYmxlUGFuOiB0cnVlLFxyXG4gICAgZW5hYmxlOiBmYWxzZSxcclxuICB9O1xyXG5cclxuICAvL0luaXRpYWxpemluZyBQcmltYXJ5IFggQXhpc1xyXG4gIHB1YmxpYyBwcmltYXJ5WEF4aXM6IE9iamVjdCA9IHtcclxuICAgIHZhbHVlVHlwZTogXCJDYXRlZ29yeVwiLFxyXG4gICAgbGFiZWxJbnRlcnNlY3RBY3Rpb246IFwiUm90YXRlNDVcIixcclxuICAgIG1ham9yR3JpZExpbmVzOiB7IHdpZHRoOiAwIH0sXHJcbiAgICBtYWpvclRpY2tMaW5lczogeyB3aWR0aDogMCB9LFxyXG4gICAgZWRnZUxhYmVsUGxhY2VtZW50OiBcIlNoaWZ0XCIsXHJcblxyXG4gICAgLy8gZW5hYmxlU2Nyb2xsYmFyOiB0cnVlLFxyXG4gICAgLy8gZW5hYmxlVHJpbTogdHJ1ZSxcclxuICAgIC8vIGVuYWJsZVBhbjogdHJ1ZSxcclxuICAgIC8vIHJvdGF0ZTogMCxcclxuICAgIGxhYmVsU3R5bGU6IHtcclxuICAgICAgZm9udFdlaWdodDogXCJub3JtYWxcIixcclxuICAgICAgY29sb3I6IFwiIzQ0NTY2Y1wiLFxyXG4gICAgICBmb250RmFtaWx5OiBcIkFyaWFsXCIsXHJcbiAgICAgIHNpemU6IFwiMTNweFwiLFxyXG4gICAgfSxcclxuICB9O1xyXG5cclxuICAvL0luaXRpYWxpemluZyBQcmltYXJ5IFkgQXhpc1xyXG4gIHB1YmxpYyBwcmltYXJ5WUF4aXM6IE9iamVjdCA9IHtcclxuICAgIHRpdGxlOiBcIlwiLCAvL0ZpcnN0IFlcclxuICAgIGxpbmVTdHlsZTogeyB3aWR0aDogMCB9LFxyXG4gICAgbWFqb3JUaWNrTGluZXM6IHsgd2lkdGg6IDAgfSxcclxuICAgIG1ham9yR3JpZExpbmVzOiB7IGNvbG9yOiBcIiNmMmYyZjJcIiB9LCAvLyDorr7nva7kuLvopoHnvZHmoLznur/popzoibJcclxuICAgIGxhYmVsRm9ybWF0OiBcIm4yXCIsXHJcbiAgfTtcclxuXHJcbiAgcHVibGljIGNoYXJ0QXJlYTogT2JqZWN0ID0ge1xyXG4gICAgYm9yZGVyOiB7XHJcbiAgICAgIHdpZHRoOiAwLFxyXG4gICAgfSxcclxuICB9O1xyXG5cclxuICAvLyDpvKDmoIfnp7vliLBiYXLkuIrpnaLmmL7npLrnmoRib3hcclxuICBwdWJsaWMgdG9vbHRpcDogT2JqZWN0ID0ge1xyXG4gICAgZW5hYmxlOiB0cnVlLFxyXG4gIH07XHJcblxyXG4gIC8vIOWbvuS+i+iuvue9rlxyXG4gIHB1YmxpYyBsZWdlbmQ6IE9iamVjdCA9IHtcclxuICAgIHZpc2libGU6IHRydWUsXHJcbiAgICBlbmFibGVIaWdobGlnaHQ6IHRydWUsXHJcbiAgfTtcclxuICAvLyBjdXN0b20gY29kZSBzdGFydFxyXG4gIHB1YmxpYyBsb2FkKGFyZ3M6IElMb2FkZWRFdmVudEFyZ3MpOiB2b2lkIHtcclxuICAgIGxldCBzZWxlY3RlZFRoZW1lOiBzdHJpbmcgPSBsb2NhdGlvbi5oYXNoLnNwbGl0KFwiL1wiKVsxXTtcclxuICAgIHNlbGVjdGVkVGhlbWUgPSBzZWxlY3RlZFRoZW1lID8gc2VsZWN0ZWRUaGVtZSA6IFwiTWF0ZXJpYWxcIjtcclxuICAgIGFyZ3MuY2hhcnQudGhlbWUgPSA8Q2hhcnRUaGVtZT4oXHJcbiAgICAgIChzZWxlY3RlZFRoZW1lLmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpICsgc2VsZWN0ZWRUaGVtZS5zbGljZSgxKSlcclxuICAgICAgICAucmVwbGFjZSgvLWRhcmsvaSwgXCJEYXJrXCIpXHJcbiAgICAgICAgLnJlcGxhY2UoL2NvbnRyYXN0L2ksIFwiQ29udHJhc3RcIilcclxuICAgICk7XHJcbiAgfVxyXG4gIC8vIGN1c3RvbSBjb2RlIGVuZFxyXG4gIHB1YmxpYyB0aXRsZTogc3RyaW5nID0gXCJcIjtcclxuXHJcbiAgaGVpZ2h0OiBzdHJpbmcgPSBcIjI1MHB4XCI7XHJcbiAgd2lkdGg6IHN0cmluZyA9IFwiMTAwJVwiO1xyXG5cclxuICBwdWJsaWMgY3VzdG9tUGFsZXR0ZTogc3RyaW5nW10gPSBbXTsgLy/pu5jorqTpopzoibLnu4RcclxuICBwcml2YXRlIHN1YnNjcmlwdGlvbnM6IFN1YnNjcmlwdGlvbltdID0gW107XHJcbiAgcHVibGljIGV4cG9ydFR5cGU6IERyb3BEb3duTGlzdDtcclxuICBwdWJsaWMgbWFya2VyRm9ybWF0ID0gXCJcIjtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIHJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcbiAgICBwdWJsaWMgZGFzaGJvYXJkU2VydmljZTogRGFzaGJvYXJkU2VydmljZSxcclxuICAgIHByaXZhdGUgZGVjaW1hbFBpcGU6IERlY2ltYWxQaXBlXHJcbiAgKSB7fVxyXG5cclxuICBuZ09uSW5pdCgpIHtcclxuICAgIHRoaXMuY29uZmlnID0gdGhpcy5wb3J0bGV0LmNvbmZpZyAmJiBKU09OLnBhcnNlKHRoaXMucG9ydGxldC5jb25maWcpO1xyXG4gICAgdGhpcy5pbml0TWFya2VyQ29uZmlnKCk7XHJcbiAgICB0aGlzLmluaXREYXRhKCk7XHJcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaChcclxuICAgICAgdGhpcy5kYXNoYm9hcmRTZXJ2aWNlLmdldFN3aXRjaENvbmZpZygpLnN1YnNjcmliZSgocmVzOiBhbnkpID0+IHtcclxuICAgICAgICBpZiAodGhpcy5wb3J0bGV0Lm5ld0lkID09PSByZXMuaWQpIHtcclxuICAgICAgICAgIHRoaXMuY29uZmlnLmhhc01hcmtlciA9IHJlcy5jaGVja2VkO1xyXG4gICAgICAgICAgdGhpcy5wb3J0bGV0LmNvbmZpZyA9IEpTT04uc3RyaW5naWZ5KHRoaXMuY29uZmlnKTtcclxuICAgICAgICAgIHRoaXMuaW5pdE1hcmtlckNvbmZpZygpO1xyXG4gICAgICAgICAgdGhpcy5jaGFydC5yZWZyZXNoKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KSxcclxuICAgICAgdGhpcy5kYXNoYm9hcmRTZXJ2aWNlLmdldE1hcmtlckZvcm1hdCgpLnN1YnNjcmliZSgocmVzOiBhbnkpID0+IHtcclxuICAgICAgICBpZiAodGhpcy5wb3J0bGV0Lm5ld0lkID09PSByZXMubmV3SWQpIHtcclxuICAgICAgICAgIHRoaXMuY29uZmlnLm1hcmtlckZvcm1hdCA9IHJlcy5tYXJrZXJGb3JtYXQ7XHJcbiAgICAgICAgICB0aGlzLnBvcnRsZXQuY29uZmlnID0gSlNPTi5zdHJpbmdpZnkodGhpcy5jb25maWcpO1xyXG4gICAgICAgICAgdGhpcy5tYXJrZXJGb3JtYXQgPSByZXMubWFya2VyRm9ybWF0O1xyXG4gICAgICAgICAgdGhpcy5pbml0TWFya2VyQ29uZmlnKCk7XHJcbiAgICAgICAgICB0aGlzLmNoYXJ0LnJlZnJlc2goKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBpbml0TWFya2VyQ29uZmlnKCkge1xyXG4gICAgY29uc3QgZm9ybWF0ID0gdGhpcy5jb25maWcucG9ydGxldFR5cGUgPT09IFwiaGlzdG9yaWNhbElSUlwiID8gXCJwMlwiIDogXCJuMlwiO1xyXG4gICAgdGhpcy5wYWdlTG9hZGluZyA9IGZhbHNlO1xyXG4gICAgY29uc3QgaGFzTWFya2VyID0gdGhpcy5jb25maWcgJiYgdGhpcy5jb25maWcuaGFzTWFya2VyO1xyXG4gICAgdGhpcy5tYXJrZXJGb3JtYXQgPSB0aGlzLmNvbmZpZyAmJiB0aGlzLmNvbmZpZy5tYXJrZXJGb3JtYXQ7XHJcbiAgICB0aGlzLm1hcmtlciA9IHtcclxuICAgICAgdmlzaWJsZTogaGFzTWFya2VyLFxyXG4gICAgICBkYXRhTGFiZWw6IHtcclxuICAgICAgICB2aXNpYmxlOiBoYXNNYXJrZXIsXHJcbiAgICAgICAgZm9ybWF0LFxyXG4gICAgICB9LFxyXG4gICAgfTtcclxuICB9XHJcbiAgdGV4dFJlbmRlcihlKSB7XHJcbiAgICB0aGlzLmRhdGFMaW5lLmZvckVhY2goKGRhdGEpID0+IHtcclxuICAgICAgT2JqZWN0LmtleXMoZGF0YSkuZm9yRWFjaCgoa2V5KSA9PiB7XHJcbiAgICAgICAgaWYgKHRoaXMuc3BlY2lhbEtleS5pbmNsdWRlcyhrZXkpKSB7XHJcbiAgICAgICAgICBpZiAoIWUudGV4dCkge1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBpZiAoZS50ZXh0ICE9IGRhdGFba2V5XSkge1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBpZiAoa2V5ID09PSBcIklSUlwiKSB7XHJcbiAgICAgICAgICAgIGUudGV4dCA9IChlLnRleHQgKiAxMDApLnRvRml4ZWQoMikgKyBcIiVcIjtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIGUudGV4dCA9IE51bWJlcihlLnRleHQpLnRvRml4ZWQoMikgKyBcInhcIjtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgfSk7XHJcbiAgICB0aGlzLmRhdGFDb2x1bW4uZm9yRWFjaCgoZGF0YSkgPT4ge1xyXG4gICAgICBPYmplY3Qua2V5cyhkYXRhKS5mb3JFYWNoKChrZXkpID0+IHtcclxuICAgICAgICBpZiAodGhpcy5zcGVjaWFsS2V5LmluY2x1ZGVzKGtleSkpIHtcclxuICAgICAgICAgIGlmICghZS50ZXh0KSB7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGlmIChlLnRleHQgIT0gZGF0YVtrZXldKSB7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICBpZiAoa2V5ID09PSBcIklSUlwiKSB7XHJcbiAgICAgICAgICAgIGUudGV4dCA9IChlLnRleHQgKiAxMDApLnRvRml4ZWQoMikgKyBcIiVcIjtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIGUudGV4dCA9IE51bWJlcihlLnRleHQpLnRvRml4ZWQoMikgKyBcInhcIjtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgfSk7XHJcbiAgICBpZiAoIWlzTmFOKGUudGV4dCkpIHtcclxuICAgICAgaWYgKGUudGV4dCAhPT0gMCkge1xyXG4gICAgICAgIHN3aXRjaCAodGhpcy5tYXJrZXJGb3JtYXQpIHtcclxuICAgICAgICAgIGNhc2UgXCJNXCI6XHJcbiAgICAgICAgICAgIGUudGV4dCA9XHJcbiAgICAgICAgICAgICAgdGhpcy5kZWNpbWFsUGlwZS50cmFuc2Zvcm0oZS50ZXh0IC8gMTAwMDAwMCwgXCIxLjItMlwiKSArIFwibVwiO1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICBjYXNlIFwiS1wiOlxyXG4gICAgICAgICAgICBlLnRleHQgPSB0aGlzLmRlY2ltYWxQaXBlLnRyYW5zZm9ybShlLnRleHQgLyAxMDAwLCBcIjEuMi0yXCIpICsgXCJrXCI7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgIGNhc2UgXCJiblwiOlxyXG4gICAgICAgICAgICBlLnRleHQgPVxyXG4gICAgICAgICAgICAgIHRoaXMuZGVjaW1hbFBpcGUudHJhbnNmb3JtKGUudGV4dCAvIDEwMDAwMDAwMDAsIFwiMS4yLTJcIikgKyBcImJcIjtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgY2FzZSBcIlRcIjpcclxuICAgICAgICAgICAgZS50ZXh0ID1cclxuICAgICAgICAgICAgICB0aGlzLmRlY2ltYWxQaXBlLnRyYW5zZm9ybShlLnRleHQgLyAxMDAwMDAwMDAwMDAwLCBcIjEuMi0yXCIpICsgXCJ0XCI7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgZS50ZXh0ID0gXCJcIjtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgaW5pdERhdGEoKSB7XHJcbiAgICB0aGlzLmNvbHVtbiA9IFtdO1xyXG4gICAgdGhpcy5jb2x1bW5MaW5lID0gW107XHJcbiAgICBpZiAodGhpcy5kYXRhQ29sdW1uICYmIHRoaXMuZGF0YUNvbHVtbi5sZW5ndGggPiAwKSB7XHJcbiAgICAgIGZvciAodmFyIGkgaW4gdGhpcy5kYXRhQ29sdW1uWzBdKSB7XHJcbiAgICAgICAgaWYgKGkgIT0gXCJwZXJpb2RcIikge1xyXG4gICAgICAgICAgdGhpcy5jb2x1bW4ucHVzaCh7XHJcbiAgICAgICAgICAgIHhOYW1lOiBcInBlcmlvZFwiLFxyXG4gICAgICAgICAgICB5TmFtZTogaSxcclxuICAgICAgICAgICAgbmFtZTogaSxcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLmRhdGFMaW5lICYmIHRoaXMuZGF0YUxpbmUubGVuZ3RoID4gMCkge1xyXG4gICAgICBmb3IgKHZhciBpIGluIHRoaXMuZGF0YUxpbmVbMF0pIHtcclxuICAgICAgICBpZiAoaSAhPSBcInBlcmlvZFwiKSB7XHJcbiAgICAgICAgICB0aGlzLmNvbHVtbkxpbmUucHVzaCh7XHJcbiAgICAgICAgICAgIHhOYW1lOiBcInBlcmlvZFwiLFxyXG4gICAgICAgICAgICB5TmFtZTogaSxcclxuICAgICAgICAgICAgbmFtZTogaSxcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLnRoZW1lQ29sb3IgJiYgdGhpcy50aGVtZUNvbG9yLmxlbmd0aCA+IDApIHtcclxuICAgICAgdGhpcy5jdXN0b21QYWxldHRlID0gdGhpcy50aGVtZUNvbG9yO1xyXG4gICAgfVxyXG4gICAgdGhpcy5yZWYubWFya0ZvckNoZWNrKCk7XHJcbiAgfVxyXG5cclxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKSB7XHJcbiAgICAvLyBpZiAoXHJcbiAgICAvLyBcdChjaGFuZ2VzLmRhdGFDb2x1bW4gJiZcclxuICAgIC8vIFx0XHQhdGhpcy5hcnJheXNBcmVFcXVhbChcclxuICAgIC8vIFx0XHRcdGNoYW5nZXMuZGF0YUNvbHVtbi5jdXJyZW50VmFsdWUsXHJcbiAgICAvLyBcdFx0XHRjaGFuZ2VzLmRhdGFDb2x1bW4ucHJldmlvdXNWYWx1ZVxyXG4gICAgLy8gXHRcdCkpIHx8XHJcbiAgICAvLyBcdChjaGFuZ2VzLmRhdGFMaW5lICYmXHJcbiAgICAvLyBcdFx0IXRoaXMuYXJyYXlzQXJlRXF1YWwoXHJcbiAgICAvLyBcdFx0XHRjaGFuZ2VzLmRhdGFMaW5lLmN1cnJlbnRWYWx1ZSxcclxuICAgIC8vIFx0XHRcdGNoYW5nZXMuZGF0YUxpbmUucHJldmlvdXNWYWx1ZVxyXG4gICAgLy8gXHRcdCkpIHx8XHJcbiAgICAvLyBcdCF0aGlzLmFycmF5c0FyZUVxdWFsKFxyXG4gICAgLy8gXHRcdGNoYW5nZXMudGhlbWVDb2xvciA/IGNoYW5nZXMudGhlbWVDb2xvci5jdXJyZW50VmFsdWUgOiBudWxsLFxyXG4gICAgLy8gXHRcdGNoYW5nZXMudGhlbWVDb2xvciA/IGNoYW5nZXMudGhlbWVDb2xvci5wcmV2aW91c1ZhbHVlIDogbnVsbFxyXG4gICAgLy8gXHQpXHJcbiAgICAvLyApIHtcclxuICAgIC8vIFx0dGhpcy5pbml0RGF0YSgpO1xyXG4gICAgLy8gfVxyXG4gIH1cclxuXHJcbiAgcmVmcmVzaENoYXJ0KCkge1xyXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgIGlmICh0aGlzLmNoYXJ0KSB0aGlzLmNoYXJ0LnJlZnJlc2goKTtcclxuICAgIH0sIDApO1xyXG4gIH1cclxuXHJcbiAgcmVzaXplT2JzZXJ2ZXI6IGFueTtcclxuICBuZ0FmdGVyVmlld0luaXQoKSB7XHJcbiAgICB0aGlzLnJlc2l6ZU9ic2VydmVyID0gbmV3IFJlc2l6ZU9ic2VydmVyKChlbnRyaWVzKSA9PiB7XHJcbiAgICAgIGZvciAobGV0IGVudHJ5IG9mIGVudHJpZXMpIHtcclxuICAgICAgICBjb25zdCB7IHdpZHRoLCBoZWlnaHQgfSA9IGVudHJ5LmNvbnRlbnRSZWN0O1xyXG4gICAgICAgIC8vIOWcqOi/memHjOaJp+ihjOS9oOaDs+imgeeahOaTjeS9nO+8jOavlOWmguabtOaWsOWbvuihqOaIluWFtuS7luebuOWFs+aTjeS9nFxyXG4gICAgICAgIHRoaXMuY2hhbmdlU2l6ZSh3aWR0aCwgaGVpZ2h0KTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgICBpZiAodGhpcy5jb250ZW50KSB7XHJcbiAgICAgIHRoaXMucmVzaXplT2JzZXJ2ZXIub2JzZXJ2ZSh0aGlzLmNvbnRlbnQubmF0aXZlRWxlbWVudCk7XHJcbiAgICB9XHJcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaChcclxuICAgICAgdGhpcy5kYXNoYm9hcmRTZXJ2aWNlLmdldFN0YXJ0UmVmcmVzaCgpLnN1YnNjcmliZSgoZGFzaGJvYXJkSWQpID0+IHtcclxuICAgICAgICBpZiAoZGFzaGJvYXJkSWQgPT09IHRoaXMuZGFzaGJvYXJkLmlkKSB7XHJcbiAgICAgICAgICB0aGlzLnBhZ2VMb2FkaW5nID0gdHJ1ZTtcclxuICAgICAgICAgIHRoaXMucmVmLm1hcmtGb3JDaGVjaygpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSlcclxuICAgICk7XHJcblxyXG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2goXHJcbiAgICAgIHRoaXMuZGFzaGJvYXJkU2VydmljZS5nZXRSZWZyZXNoR2FkZ2V0KCkuc3Vic2NyaWJlKChlKSA9PiB7XHJcbiAgICAgICAgaWYgKCFlKSB7XHJcbiAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNvbnN0IG5ld0lkID0gZVtcIm5ld0lkXCJdO1xyXG4gICAgICAgIGlmIChuZXdJZCA9PT0gdGhpcy5wb3J0bGV0Lm5ld0lkIHx8IG5ld0lkID09PSB0aGlzLnBvcnRsZXQuaWQpIHtcclxuICAgICAgICAgIHRoaXMuaW5pdE1hcmtlckNvbmZpZygpO1xyXG4gICAgICAgICAgdGhpcy5yZWZyZXNoQ2hhcnQoKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgbmdPbkRlc3Ryb3koKSB7XHJcbiAgICAvLyDlnKjnu4Tku7bplIDmr4Hml7blj5bmtojnm5HlkKxcclxuICAgIGlmICh0aGlzLnJlc2l6ZU9ic2VydmVyKSB7XHJcbiAgICAgIHRoaXMucmVzaXplT2JzZXJ2ZXIuZGlzY29ubmVjdCgpO1xyXG4gICAgfVxyXG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLmZvckVhY2goKGVsZSkgPT4gZWxlLnVuc3Vic2NyaWJlKCkpO1xyXG4gIH1cclxuXHJcbiAgQGRlYm91bmNlKDEwMClcclxuICBjaGFuZ2VTaXplKHdpZHRoLCBoZWlnaHQpIHtcclxuICAgIGlmICghd2lkdGggfHwgIWhlaWdodCkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICB0aGlzLndpZHRoID0gYCR7d2lkdGh9cHhgO1xyXG4gICAgdGhpcy5oZWlnaHQgPSBgJHtoZWlnaHQgLSAxMH1weGA7XHJcbiAgICB0aGlzLnJlZi5tYXJrRm9yQ2hlY2soKTtcclxuICB9XHJcblxyXG4gIGV4cG9ydENoYXJ0KCkge1xyXG4gICAgdGhpcy5jaGFydC5leHBvcnRNb2R1bGUuZXhwb3J0KFwiUE5HXCIsIFwiQ2hhcnRcIik7XHJcbiAgfVxyXG5cclxuICBPbkNoYXJ0QXhpc0xhYmVSZW5kZXIoYXJnczogYW55KSB7XHJcbiAgICBpZiAoYXJncy5heGlzLnByb3BOYW1lID09IFwicHJpbWFyeVlBeGlzXCIpIHtcclxuICAgICAgaWYgKFxyXG4gICAgICAgIHRoaXMuY29sdW1uVHlwZSA9PSBcInBlcmNlbnRcIiB8fFxyXG4gICAgICAgICh0aGlzLmRhdGFDb2x1bW4gJiZcclxuICAgICAgICAgIHRoaXMuZGF0YUNvbHVtbi5sZW5ndGggPD0gMCAmJlxyXG4gICAgICAgICAgdGhpcy5saW5lVHlwZSA9PSBcInBlcmNlbnRcIilcclxuICAgICAgKSB7XHJcbiAgICAgICAgYXJncy50ZXh0ID0gdGhpcy5mb3JtYXRQZXJjZW50YWdlKGFyZ3MudGV4dCk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgaWYgKGlzTmFOKGFyZ3MudGV4dCkpIHtcclxuICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgYXJncy50ZXh0ID1cclxuICAgICAgICAgIE51bWJlcihhcmdzLnRleHQpID49IDBcclxuICAgICAgICAgICAgPyB0aGlzLmdldFQoYXJncy50ZXh0KVxyXG4gICAgICAgICAgICA6IGAtJHt0aGlzLmdldFQoYXJncy50ZXh0KX1gO1xyXG4gICAgICB9XHJcbiAgICB9IGVsc2UgaWYgKGFyZ3MuYXhpcy5wcm9wTmFtZSA9PSBcInlBeGlzMlwiKSB7XHJcbiAgICAgIGlmIChcclxuICAgICAgICB0aGlzLmxpbmVUeXBlID09IFwicGVyY2VudFwiICYmXHJcbiAgICAgICAgdGhpcy5kYXRhQ29sdW1uICYmXHJcbiAgICAgICAgdGhpcy5kYXRhQ29sdW1uLmxlbmd0aCA+IDBcclxuICAgICAgKSB7XHJcbiAgICAgICAgYXJncy50ZXh0ID0gdGhpcy5mb3JtYXRQZXJjZW50YWdlKGFyZ3MudGV4dCk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgaWYgKGlzTmFOKGFyZ3MudGV4dCkpIHtcclxuICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgYXJncy50ZXh0ID1cclxuICAgICAgICAgIE51bWJlcihhcmdzLnRleHQpID49IDBcclxuICAgICAgICAgICAgPyB0aGlzLmdldFQoYXJncy50ZXh0KVxyXG4gICAgICAgICAgICA6IGAtJHt0aGlzLmdldFQoYXJncy50ZXh0KX1gO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBnZXRUKHZhbHVlKSB7XHJcbiAgICByZXR1cm4gU3RyaW5nKHZhbHVlKVxyXG4gICAgICAucmVwbGFjZSgvW14wLTkuXS9nLCBcIlwiKVxyXG4gICAgICAucmVwbGFjZSgvKFxcZCkoPz0oXFxkezN9KSsoPyFcXGQpKS9nLCBcIiQxLFwiKTtcclxuICAgIC8vIHJldHVybiB0aGlzLmRlY2ltYWxQaXBlLnRyYW5zZm9ybShOdW1iZXIodmFsdWUpLCBcIjEuMi0yXCIpO1xyXG4gIH1cclxuXHJcbiAgZm9ybWF0UGVyY2VudGFnZShkZWNpbWFsKSB7XHJcbiAgICBjb25zdCBwZXJjZW50YWdlID0gKGRlY2ltYWwgKiAxMDApLnRvRml4ZWQoMik7XHJcbiAgICByZXR1cm4gYCR7cGVyY2VudGFnZX0lYDtcclxuICB9XHJcblxyXG4gIGFycmF5c0FyZUVxdWFsKGFycjEsIGFycjIpIHtcclxuICAgIGlmICgoIWFycjEgJiYgYXJyMikgfHwgKGFycjEgJiYgIWFycjIpKSB7XHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoIWFycjEgJiYgIWFycjIpIHtcclxuICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKGFycjEubGVuZ3RoICE9PSBhcnIyLmxlbmd0aCkge1xyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcblxyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBhcnIxLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgIGNvbnN0IG9iajEgPSBhcnIxW2ldO1xyXG4gICAgICBjb25zdCBvYmoyID0gYXJyMltpXTtcclxuXHJcbiAgICAgIGlmICh0eXBlb2Ygb2JqMSAhPT0gXCJvYmplY3RcIiB8fCB0eXBlb2Ygb2JqMiAhPT0gXCJvYmplY3RcIikge1xyXG4gICAgICAgIGlmIChvYmoxICE9PSBvYmoyKSB7XHJcbiAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgfVxyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIGlmICghdGhpcy5vYmplY3RzQXJlRXF1YWwob2JqMSwgb2JqMikpIHtcclxuICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gdHJ1ZTtcclxuICB9XHJcblxyXG4gIG9iamVjdHNBcmVFcXVhbChvYmoxLCBvYmoyKSB7XHJcbiAgICBjb25zdCBrZXlzMSA9IE9iamVjdC5rZXlzKG9iajEpO1xyXG4gICAgY29uc3Qga2V5czIgPSBPYmplY3Qua2V5cyhvYmoyKTtcclxuXHJcbiAgICBpZiAoa2V5czEubGVuZ3RoICE9PSBrZXlzMi5sZW5ndGgpIHtcclxuICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG5cclxuICAgIGZvciAobGV0IGtleSBvZiBrZXlzMSkge1xyXG4gICAgICBpZiAob2JqMVtrZXldICE9PSBvYmoyW2tleV0pIHtcclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gdHJ1ZTtcclxuICB9XHJcblxyXG4gIG9uUG9pbnRSZW5kZXIoZSkge1xyXG4gICAgaWYgKGUucG9pbnQueSA9PSAwKSB7XHJcbiAgICAgIGUuY2FuY2VsID0gdHJ1ZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyB0b29sdGlwUmVuZGVyKGFyZ3M6IElUb29sdGlwUmVuZGVyRXZlbnRBcmdzIHwgYW55KTogdm9pZCB7XHJcbiAgICBpZiAoaXNOYU4oYXJncy5kYXRhLnBvaW50WSkpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMuY29uZmlnLnBvcnRsZXRUeXBlID09PSBcImhpc3RvcmljYWxJUlJcIikge1xyXG4gICAgICBhcmdzLnRleHQgPSBgJHthcmdzLmRhdGEucG9pbnRYfTogJHsoYXJncy5kYXRhLnBvaW50WSAqIDEwMCkudG9GaXhlZChcclxuICAgICAgICAyXHJcbiAgICAgICl9JWA7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGFyZ3MudGV4dCA9IGAke2FyZ3MuZGF0YS5wb2ludFh9OiAke3RoaXMuZGVjaW1hbFBpcGUudHJhbnNmb3JtKFxyXG4gICAgICBhcmdzLmRhdGEucG9pbnRZLFxyXG4gICAgICBcIjEuMi0yXCJcclxuICAgICl9YDtcclxuICB9XHJcbn1cclxuIl19
@@ -613,9 +613,9 @@ export class DataMartNewComponent {
613
613
  }
614
614
  DataMartNewComponent.decorators = [
615
615
  { type: Component, args: [{
616
- selector: "kt-data-mart-new",
616
+ selector: "rs-data-mart-new",
617
617
  template: "<div class=\"new_mart_data_popup\">\r\n\t<div class=\"close_box\" (click)=\"closePopup()\">\r\n\t\t<img src=\"../../../../assets/img/dialog-close.svg\" class=\"deleteIcon\" />\r\n\t</div>\r\n\t<div class=\"popup_header\">\r\n\t\t<p class=\"popup_title\">{{ translation.DATA_MART || \".DATA_MART\" }}</p>\r\n\t\t<p class=\"popup_sub_title\">\r\n\t\t\t{{\r\n\t\t\t\ttranslation.PLS_SELECT_DATA_TABLES ||\r\n\t\t\t\t\t\".Please select data tables for this dashboard\"\r\n\t\t\t}}\r\n\t\t</p>\r\n\t</div>\r\n\t<div class=\"popup_main_container\">\r\n\t\t<div class=\"left_menu_container\" id=\"info-step-2\">\r\n\t\t\t<div\r\n\t\t\t\tclass=\"menu_item\"\r\n\t\t\t\t*ngFor=\"let item of fatherList\"\r\n\t\t\t\t[ngClass]=\"{ selectItem: fatherId === item.id }\"\r\n\t\t\t\t(click)=\"getdataMart(item, true)\"\r\n\t\t\t>\r\n\t\t\t\t<span class=\"activeLine\" *ngIf=\"fatherId === item.id\"></span>\r\n\t\t\t\t{{\r\n\t\t\t\t\titem.FromQB\r\n\t\t\t\t\t\t? item.langCode\r\n\t\t\t\t\t\t: translation[item.langCode] || \".\" + item.langCode\r\n\t\t\t\t}}\r\n\t\t\t</div>\r\n\t\t</div>\r\n\t\t<div class=\"table_container\" id=\"info-step-3\" (click)=\"nextStep()\">\r\n\t\t\t<div class=\"table_content\">\r\n\t\t\t\t<div class=\"group_data\">\r\n\t\t\t\t\t<div class=\"table_header\">\r\n\t\t\t\t\t\t<div class=\"div_group\">\r\n\t\t\t\t\t\t\t<mat-checkbox\r\n\t\t\t\t\t\t\t\t[disabled]=\"isSelectAllDisabled\"\r\n\t\t\t\t\t\t\t\t[color]=\"'primary'\"\r\n\t\t\t\t\t\t\t\t[(ngModel)]=\"selectedAll\"\r\n\t\t\t\t\t\t\t\t(ngModelChange)=\"selectAll($event)\"\r\n\t\t\t\t\t\t\t\t>{{\r\n\t\t\t\t\t\t\t\t\ttranslation[\"GROUP\"] || \".group\"\r\n\t\t\t\t\t\t\t\t}}</mat-checkbox\r\n\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t</div>\r\n\t\t\t\t\t<div class=\"group_item__box\" *ngFor=\"let item of sonList\">\r\n\t\t\t\t\t\t<mat-checkbox\r\n\t\t\t\t\t\t\t[disabled]=\"item.disabled\"\r\n\t\t\t\t\t\t\t[color]=\"'primary'\"\r\n\t\t\t\t\t\t\t[(ngModel)]=\"item.checked\"\r\n\t\t\t\t\t\t\t(ngModelChange)=\"handleItemChange(item, $event)\"\r\n\t\t\t\t\t\t\t>{{\r\n\t\t\t\t\t\t\t\titem.FromQB\r\n\t\t\t\t\t\t\t\t\t? item.langCode\r\n\t\t\t\t\t\t\t\t\t: translation[item.langCode] ||\r\n\t\t\t\t\t\t\t\t\t \".\" + item.langCode\r\n\t\t\t\t\t\t\t}}</mat-checkbox\r\n\t\t\t\t\t\t>\r\n\t\t\t\t\t\t<ejs-tooltip\r\n\t\t\t\t\t\t\t*ngIf=\"item.langCode === 'FINANCIAL_FIGURES'\"\r\n\t\t\t\t\t\t\tid=\"tooltip\"\r\n\t\t\t\t\t\t\tcssClass=\"figures-tooltip\"\r\n\t\t\t\t\t\t\t[content]=\"\r\n\t\t\t\t\t\t\t\ttranslation.DASHBOARD_FINANCIAL_FIGURES_TOOLTIPS ||\r\n\t\t\t\t\t\t\t\t'Financial Figures can\u2019t be selected together with other groups.'\r\n\t\t\t\t\t\t\t\"\r\n\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t<span></span>\r\n\t\t\t\t\t\t</ejs-tooltip>\r\n\t\t\t\t\t\t<!-- <ejs-tooltip\r\n\t\t\t\t\t\t\t*ngIf=\"\r\n\t\t\t\t\t\t\t\tDashboardPorletsService.checkIsQ2Q(item.tables)\r\n\t\t\t\t\t\t\t\"\r\n\t\t\t\t\t\t\tcssClass=\"figures-tooltip\"\r\n\t\t\t\t\t\t\tcontent=\"Q2Q\"\r\n\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t<span></span>\r\n\t\t\t\t\t\t</ejs-tooltip> -->\r\n\t\t\t\t\t</div>\r\n\t\t\t\t</div>\r\n\t\t\t\t<div class=\"table_data\">\r\n\t\t\t\t\t<div class=\"table_header\">\r\n\t\t\t\t\t\t<div class=\"data_table_box\">\r\n\t\t\t\t\t\t\t<div class=\"table_title\">\r\n\t\t\t\t\t\t\t\t{{ translation[\"DATA_TABLE\"] || \".Data Table\" }}\r\n\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t<div class=\"search_container\">\r\n\t\t\t\t\t\t\t\t<input\r\n\t\t\t\t\t\t\t\t\ttype=\"text\"\r\n\t\t\t\t\t\t\t\t\tmatInput\r\n\t\t\t\t\t\t\t\t\t[placeholder]=\"translation['SEARCH']\"\r\n\t\t\t\t\t\t\t\t\tclass=\"search_input\"\r\n\t\t\t\t\t\t\t\t\t(keyup)=\"doFilter($event.target.value)\"\r\n\t\t\t\t\t\t\t\t\tautocomplete=\"off\"\r\n\t\t\t\t\t\t\t\t\t(keydown)=\"\r\n\t\t\t\t\t\t\t\t\t\tpbf.disabledInputEnterEvent($event)\r\n\t\t\t\t\t\t\t\t\t\"\r\n\t\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t</div>\r\n\t\t\t\t\t<div class=\"table_main_content\" style=\"overflow: auto\">\r\n\t\t\t\t\t\t<div\r\n\t\t\t\t\t\t\t*ngFor=\"let item of grandsonList\"\r\n\t\t\t\t\t\t\t[ngClass]=\"{ maxBox: grandsonList.length >= 11 }\"\r\n\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t<div *ngIf=\"!item.isHide\" class=\"table_data_item\">\r\n\t\t\t\t\t\t\t\t{{\r\n\t\t\t\t\t\t\t\t\titem.FromQB\r\n\t\t\t\t\t\t\t\t\t\t? item.langCode\r\n\t\t\t\t\t\t\t\t\t\t: translation[item.langCode] ||\r\n\t\t\t\t\t\t\t\t\t\t \".\" + item.langCode\r\n\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t</div>\r\n\t\t\t\t</div>\r\n\t\t\t</div>\r\n\t\t</div>\r\n\t</div>\r\n\t<div class=\"popup_footer\">\r\n\t\t<button class=\"cancle_btn popup_btn\" (click)=\"closePopup()\">\r\n\t\t\t{{ translation[\"CANCEL\"] || \".CANCEL\" }}\r\n\t\t</button>\r\n\t\t<button\r\n\t\t\tclass=\"sure_btn popup_btn\"\r\n\t\t\tid=\"info-step-5\"\r\n\t\t\t(click)=\"saveData()\"\r\n\t\t\t[disabled]=\"disabled || !entityType || grandsonList.length == 0\"\r\n\t\t>\r\n\t\t\t{{ translation[\"SAVE\"] || \".SAVE\" }}\r\n\t\t</button>\r\n\t</div>\r\n</div>\r\n",
618
- styles: [".new_mart_data_popup{width:100%;position:relative;height:100%;padding:60px 74px;font-family:Arial;display:flex;flex-direction:column;overflow:hidden}.new_mart_data_popup .close_box{position:absolute;right:12px;top:12px;padding:10px;cursor:pointer}.new_mart_data_popup .close_box .deleteIcon{width:24px;height:24px}.new_mart_data_popup .popup_header{margin-bottom:32px}.new_mart_data_popup .popup_header .popup_title{font-size:24px;font-weight:700;text-align:center;color:#44566c;line-height:28px;margin-bottom:12px}.new_mart_data_popup .popup_header .popup_sub_title{font-size:13px;line-height:15px;color:#44566c;text-align:center}.new_mart_data_popup .popup_main_container{flex:1;width:100%;margin-bottom:40px;display:flex;overflow:hidden}.new_mart_data_popup .popup_main_container .left_menu_container{margin-right:30px;text-align:left}.new_mart_data_popup .popup_main_container .left_menu_container .menu_item{line-height:16px;margin-bottom:22px;color:#002c4f;font-size:13px;position:relative;max-width:160px;word-wrap:break-word;cursor:pointer;padding-left:15px}.new_mart_data_popup .popup_main_container .left_menu_container .menu_item.selectItem{font-weight:700}.new_mart_data_popup .popup_main_container .left_menu_container .menu_item .activeLine{display:block;position:absolute;left:0;top:0;width:2px;height:17px;background-color:#0081ff}.new_mart_data_popup .popup_main_container .table_container{flex:1;height:100%;overflow:hidden;border:1px solid #eaedf0;display:flex;flex-direction:column}.new_mart_data_popup .popup_main_container .table_container .table_header{height:40px;background-color:#f8fafb;display:flex;align-items:center}.new_mart_data_popup .popup_main_container .table_container .table_header::ng-deep .mat-checkbox .mat-checkbox-layout{color:#44566c;font-size:13px;font-weight:700}.new_mart_data_popup .popup_main_container .table_container .table_header .div_group{min-width:200px;padding-left:20px}.new_mart_data_popup .popup_main_container .table_container .table_header .data_table_box{flex:1;display:flex;align-items:center;justify-content:space-between;padding-left:20px;padding-right:5px}.new_mart_data_popup .popup_main_container .table_container .table_header .data_table_box .table_title{font-size:13px;font-weight:700;color:#44566c}.new_mart_data_popup .popup_main_container .table_container .table_header .data_table_box .search_container{width:190px;height:30px;position:relative}.new_mart_data_popup .popup_main_container .table_container .table_header .data_table_box .search_container .search_input{background-image:url(../../../../assets/img/search.svg);background-size:16px;background-repeat:no-repeat;background-position-y:center;background-position-x:10px;width:190px;height:30px;padding:7px 7px 6px 38px;border-radius:5px;background-color:#fff;transform:translateY(0);outline:0;border:none;font-weight:400!important;color:#44566c;font-size:12px!important}.new_mart_data_popup .popup_main_container .table_container .table_header .data_table_box .search_container .search_input::-webkit-input-placeholder{color:#adb5bd}.new_mart_data_popup .popup_main_container .table_container .table_header .data_table_box .search_container .search_input::-moz-placeholder{color:#adb5bd}.new_mart_data_popup .popup_main_container .table_container .table_header .data_table_box .search_container .search_input:-ms-input-placeholder{color:#adb5bd}.new_mart_data_popup .popup_main_container .table_container .table_header .data_table_box .search_container .search_input::-ms-input-placeholder{color:#adb5bd}.new_mart_data_popup .popup_main_container .table_container .table_header .data_table_box .search_container .search_input::placeholder{color:#adb5bd}.new_mart_data_popup .popup_main_container .table_container .table_content{display:flex;flex:1;overflow:hidden}.new_mart_data_popup .popup_main_container .table_container .table_content::ng-deep .mat-checkbox .mat-checkbox-layout{color:#44566c;font-size:13px;font-weight:400}.new_mart_data_popup .popup_main_container .table_container .table_content .group_data{height:100%;border-right:1px solid #eaedf0}.new_mart_data_popup .popup_main_container .table_container .table_content .group_data .group_item__box{display:flex;align-items:center;padding-left:20px;height:40px;border-bottom:1px solid #eaedf0;padding-right:10px}.new_mart_data_popup .popup_main_container .table_container .table_content .group_data .group_item__box .e-tooltip{margin-left:5px}.new_mart_data_popup .popup_main_container .table_container .table_content .group_data .group_item__box .e-tooltip span{display:inline-block;width:14px;height:14px;background-image:url(../../../../assets/img/dashboard_icon/information-grey.svg);background-size:contain;margin-top:5px;cursor:pointer}.new_mart_data_popup .popup_main_container .table_container .table_content .table_data{flex:1;display:flex;height:100%;flex-direction:column;overflow:hidden}.new_mart_data_popup .popup_main_container .table_container .table_content .table_data .table_main_content{flex:1;overflow:auto}.new_mart_data_popup .popup_main_container .table_container .table_content .table_data .maxBox:last-child .table_data_item{border-bottom:none}.new_mart_data_popup .popup_main_container .table_container .table_content .table_data .table_data_item{padding-right:5px;padding-left:20px;height:40px;line-height:40px;font-size:13px;color:#44566c;border-bottom:1px solid #eaedf0}.new_mart_data_popup .popup_main_container::ng-deep .mat-checkbox .mat-checkbox-background{border:1px solid #d1d1d1}.new_mart_data_popup .popup_main_container::ng-deep .mat-checkbox.mat-checkbox-checked .mat-checkbox-background{border:none}.new_mart_data_popup .disabled-button{pointer-events:none;opacity:.5}.new_mart_data_popup .popup_footer{height:40px;display:flex;align-items:center;justify-content:center}.new_mart_data_popup .popup_footer .popup_btn{width:200px;height:40px;line-height:40px;border:none;border-radius:5px;text-align:center;font-size:13px;font-weight:700}.new_mart_data_popup .popup_footer .popup_btn.cancle_btn{background-color:#eaedf0;color:#979797;margin-right:20px}.new_mart_data_popup .popup_footer .popup_btn.sure_btn{color:#fff;background-color:#1364b3}"]
618
+ styles: [".new_mart_data_popup{width:100%;position:relative;height:100%;padding:60px 74px;font-family:Arial;display:flex;flex-direction:column;overflow:hidden}.new_mart_data_popup .close_box{position:absolute;right:12px;top:12px;padding:10px;cursor:pointer}.new_mart_data_popup .close_box .deleteIcon{width:24px;height:24px}.new_mart_data_popup .popup_header{margin-bottom:32px}.new_mart_data_popup .popup_header .popup_title{font-size:24px;font-weight:700;text-align:center;color:#44566c;line-height:28px;margin-bottom:12px}.new_mart_data_popup .popup_header .popup_sub_title{font-size:13px;line-height:15px;color:#44566c;text-align:center}.new_mart_data_popup .popup_main_container{flex:1;width:100%;margin-bottom:40px;display:flex;overflow:hidden}.new_mart_data_popup .popup_main_container .left_menu_container{margin-right:30px;text-align:left}.new_mart_data_popup .popup_main_container .left_menu_container .menu_item{line-height:16px;margin-bottom:22px;color:#002c4f;font-size:13px;position:relative;max-width:160px;word-wrap:break-word;cursor:pointer;padding-left:15px}.new_mart_data_popup .popup_main_container .left_menu_container .menu_item.selectItem{font-weight:700}.new_mart_data_popup .popup_main_container .left_menu_container .menu_item .activeLine{display:block;position:absolute;left:0;top:0;width:2px;height:17px;background-color:#0081ff}.new_mart_data_popup .popup_main_container .table_container{flex:1;height:100%;overflow:hidden;border:1px solid #eaedf0;display:flex;flex-direction:column}.new_mart_data_popup .popup_main_container .table_container .table_header{height:40px;background-color:#f8fafb;display:flex;align-items:center}.new_mart_data_popup .popup_main_container .table_container .table_header::ng-deep .mat-checkbox .mat-checkbox-layout{color:#44566c;font-size:13px;font-weight:700}.new_mart_data_popup .popup_main_container .table_container .table_header .div_group{min-width:200px;padding-left:20px}.new_mart_data_popup .popup_main_container .table_container .table_header .data_table_box{flex:1;display:flex;align-items:center;justify-content:space-between;padding-left:20px;padding-right:5px}.new_mart_data_popup .popup_main_container .table_container .table_header .data_table_box .table_title{font-size:13px;font-weight:700;color:#44566c}.new_mart_data_popup .popup_main_container .table_container .table_header .data_table_box .search_container{width:190px;height:30px;position:relative}.new_mart_data_popup .popup_main_container .table_container .table_header .data_table_box .search_container .search_input{background-image:url(../../assets/img/search.svg);background-size:16px;background-repeat:no-repeat;background-position-y:center;background-position-x:10px;width:190px;height:30px;padding:7px 7px 6px 38px;border-radius:5px;background-color:#fff;transform:translateY(0);outline:0;border:none;font-weight:400!important;color:#44566c;font-size:12px!important}.new_mart_data_popup .popup_main_container .table_container .table_header .data_table_box .search_container .search_input::-webkit-input-placeholder{color:#adb5bd}.new_mart_data_popup .popup_main_container .table_container .table_header .data_table_box .search_container .search_input::-moz-placeholder{color:#adb5bd}.new_mart_data_popup .popup_main_container .table_container .table_header .data_table_box .search_container .search_input:-ms-input-placeholder{color:#adb5bd}.new_mart_data_popup .popup_main_container .table_container .table_header .data_table_box .search_container .search_input::-ms-input-placeholder{color:#adb5bd}.new_mart_data_popup .popup_main_container .table_container .table_header .data_table_box .search_container .search_input::placeholder{color:#adb5bd}.new_mart_data_popup .popup_main_container .table_container .table_content{display:flex;flex:1;overflow:hidden}.new_mart_data_popup .popup_main_container .table_container .table_content::ng-deep .mat-checkbox .mat-checkbox-layout{color:#44566c;font-size:13px;font-weight:400}.new_mart_data_popup .popup_main_container .table_container .table_content .group_data{height:100%;border-right:1px solid #eaedf0}.new_mart_data_popup .popup_main_container .table_container .table_content .group_data .group_item__box{display:flex;align-items:center;padding-left:20px;height:40px;border-bottom:1px solid #eaedf0;padding-right:10px}.new_mart_data_popup .popup_main_container .table_container .table_content .group_data .group_item__box .e-tooltip{margin-left:5px}.new_mart_data_popup .popup_main_container .table_container .table_content .group_data .group_item__box .e-tooltip span{display:inline-block;width:14px;height:14px;background-image:url(../../assets/img/dashboard_icon/information-grey.svg);background-size:contain;margin-top:5px;cursor:pointer}.new_mart_data_popup .popup_main_container .table_container .table_content .table_data{flex:1;display:flex;height:100%;flex-direction:column;overflow:hidden}.new_mart_data_popup .popup_main_container .table_container .table_content .table_data .table_main_content{flex:1;overflow:auto}.new_mart_data_popup .popup_main_container .table_container .table_content .table_data .maxBox:last-child .table_data_item{border-bottom:none}.new_mart_data_popup .popup_main_container .table_container .table_content .table_data .table_data_item{padding-right:5px;padding-left:20px;height:40px;line-height:40px;font-size:13px;color:#44566c;border-bottom:1px solid #eaedf0}.new_mart_data_popup .popup_main_container::ng-deep .mat-checkbox .mat-checkbox-background{border:1px solid #d1d1d1}.new_mart_data_popup .popup_main_container::ng-deep .mat-checkbox.mat-checkbox-checked .mat-checkbox-background{border:none}.new_mart_data_popup .disabled-button{pointer-events:none;opacity:.5}.new_mart_data_popup .popup_footer{height:40px;display:flex;align-items:center;justify-content:center}.new_mart_data_popup .popup_footer .popup_btn{width:200px;height:40px;line-height:40px;border:none;border-radius:5px;text-align:center;font-size:13px;font-weight:700}.new_mart_data_popup .popup_footer .popup_btn.cancle_btn{background-color:#eaedf0;color:#979797;margin-right:20px}.new_mart_data_popup .popup_footer .popup_btn.sure_btn{color:#fff;background-color:#1364b3}"]
619
619
  }] }
620
620
  ];
621
621
  /** @nocollapse */
@@ -697,4 +697,4 @@ if (false) {
697
697
  */
698
698
  DataMartNewComponent.prototype.http;
699
699
  }
700
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YS1tYXJ0LW5ldy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9yYWlzZS1jb21tb24tbGliLyIsInNvdXJjZXMiOlsibGliL2Rhc2hib2FyZC9kYXNoYm9hcmQtcHJvcGVydGllcy9kYXRhLW1hcnQtbmV3L2RhdGEtbWFydC1uZXcuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsT0FBTyxFQUNMLFNBQVMsRUFFVCxNQUFNLEVBQ04saUJBQWlCLEVBRWpCLFFBQVEsR0FDVCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxlQUFlLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUM3RSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQ3BDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQzNELE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ3pFLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxRQUFRLENBQUM7QUFDbEMsT0FBTyxFQUFFLGlCQUFpQixFQUFFLFNBQVMsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQy9FLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQU9oRSxNQUFNLE9BQU8sb0JBQW9COzs7Ozs7Ozs7Ozs7O0lBa0IvQixZQUNrQyxJQUFTLEVBQ2xDLFNBQTZDLEVBQzVDLGFBQTRCLEVBQzdCLE1BQWlCLEVBQ2hCLEdBQVksRUFDYixnQkFBa0MsRUFDbEMsdUJBQWdELEVBQy9DLEdBQXNCLEVBQ1EsR0FBUSxFQUNDLElBQVM7UUFUeEIsU0FBSSxHQUFKLElBQUksQ0FBSztRQUNsQyxjQUFTLEdBQVQsU0FBUyxDQUFvQztRQUM1QyxrQkFBYSxHQUFiLGFBQWEsQ0FBZTtRQUM3QixXQUFNLEdBQU4sTUFBTSxDQUFXO1FBQ2hCLFFBQUcsR0FBSCxHQUFHLENBQVM7UUFDYixxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWtCO1FBQ2xDLDRCQUF1QixHQUF2Qix1QkFBdUIsQ0FBeUI7UUFDL0MsUUFBRyxHQUFILEdBQUcsQ0FBbUI7UUFDUSxRQUFHLEdBQUgsR0FBRyxDQUFLO1FBQ0MsU0FBSSxHQUFKLElBQUksQ0FBSztRQXJCbkQsZUFBVSxHQUFHLEVBQUUsQ0FBQztRQUNoQixZQUFPLEdBQUcsRUFBRSxDQUFDO1FBQ2IsaUJBQVksR0FBRyxFQUFFLENBQUM7UUFDbEIsYUFBUSxHQUFHLEVBQUUsQ0FBQztRQUNkLFdBQU0sR0FBRyxFQUFFLENBQUM7UUFDWixnQkFBVyxHQUFHLEtBQUssQ0FBQztRQUNwQixtQkFBYyxHQUFHLEVBQUUsQ0FBQztRQUNwQixhQUFRLEdBQUcsS0FBSyxDQUFDO1FBQ2pCLG9CQUFlLEdBQUcsRUFBRSxDQUFDO1FBQ3JCLHdCQUFtQixHQUFHLEtBQUssQ0FBQztRQWlUNUIsYUFBUSxHQUFHLFFBQVE7Ozs7UUFBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsR0FBRSxHQUFHLENBQUMsQ0FBQztJQXBTMUQsQ0FBQzs7OztJQUNKLFFBQVE7UUFDTixJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDZixJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7SUFDcEIsQ0FBQzs7OztJQUVELGVBQWU7UUFDYixJQUFJLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDbEMsQ0FBQzs7OztJQUVNLE9BQU87UUFDWixJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDO1FBQ25FLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUM7UUFDN0QsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLGlCQUFpQixFQUFFLENBQUM7UUFDekMsSUFBSSxDQUFDLE1BQU07WUFDVCxJQUFJLENBQUMsSUFBSSxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUztnQkFDOUIsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDO2dCQUN4QyxDQUFDLENBQUMsRUFBRSxDQUFDO0lBQ1gsQ0FBQzs7OztJQUNELFVBQVU7O2NBQ0YsT0FBTyxHQUFHO1lBQ2QsU0FBUyxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsU0FBUztZQUNsQyxRQUFRLEVBQUUsSUFBSSxDQUFDLElBQUk7WUFDbkIsZ0JBQWdCLEVBQUUsQ0FBQztTQUNwQjtRQUNELElBQUksQ0FBQyxHQUFHLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQztRQUM1QixJQUFJLENBQUMsR0FBRyxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDakMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsVUFBVSxFQUFFLE9BQU87Ozs7UUFBRSxDQUFDLEdBQUcsRUFBRSxFQUFFO1lBQzNELElBQUksQ0FBQyxHQUFHLENBQUMsV0FBVyxHQUFHLEtBQUssQ0FBQztZQUM3QixJQUFJLENBQUMsR0FBRyxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDakMsSUFBSSxHQUFHLEVBQUU7Z0JBQ1AsSUFBSSxDQUFDLHVCQUF1QixDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsR0FBRyxHQUFHLENBQUM7Z0JBQ3ZFLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxhQUFhLEdBQUcsR0FBRyxDQUFDO2dCQUNqRCxJQUFJLENBQUMsVUFBVSxHQUFHLEdBQUcsQ0FBQztnQkFFdEIsSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLFVBQVUsRUFBRTtvQkFDMUIsd0JBQXdCO29CQUN4QixJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDO29CQUN2QyxJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsY0FBYzt3QkFDdEMsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUM7d0JBQ3ZDLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUs7NEJBQ25CLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxHQUFHOzs7OzRCQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsY0FBYyxFQUFDOzRCQUN0RCxDQUFDLENBQUMsRUFBRSxDQUFDOzt3QkFDSCxVQUFVLEdBQUcsR0FBRyxDQUFDLElBQUk7Ozs7b0JBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLElBQUksSUFBSSxDQUFDLFFBQVEsRUFBQztvQkFDekQsSUFBSSxVQUFVLEVBQUU7d0JBQ2QsSUFBSSxDQUFDLFdBQVcsQ0FBQyxVQUFVLEVBQUUsSUFBSSxDQUFDLENBQUM7d0JBQ25DLElBQUksQ0FBQyxJQUFJLENBQUMsZUFBZSxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsVUFBVSxFQUFFOzRCQUNuRCxJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUM7eUJBQ3hDOzs0QkFFRyxRQUFRLEdBQUcsVUFBVSxDQUFDLEtBQUssQ0FBQyxNQUFNOzs7O3dCQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FDNUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUM1Qjt3QkFDRCxJQUFJLENBQUMsZ0JBQWdCLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxDQUFDO3dCQUN0QyxJQUFJLENBQUMsb0JBQW9CLEVBQUUsQ0FBQztxQkFDN0I7aUJBQ0Y7YUFDRjtRQUNILENBQUMsRUFBQyxDQUFDO0lBQ0wsQ0FBQzs7OztJQUNELG9CQUFvQjs7WUFDZCxHQUFHLEdBQUcsQ0FBQztRQUNYLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTzs7OztRQUFDLENBQUMsR0FBRyxFQUFFLEVBQUU7WUFDM0IsSUFBSSxHQUFHLENBQUMsT0FBTyxJQUFJLEdBQUcsQ0FBQyxRQUFRLEtBQUssbUJBQW1CLEVBQUU7Z0JBQ3ZELEdBQUcsRUFBRSxDQUFDO2FBQ1A7UUFDSCxDQUFDLEVBQUMsQ0FBQztRQUNILElBQUksR0FBRyxLQUFLLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxHQUFHLENBQUM7WUFBRSxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQzs7WUFDeEQsSUFBSSxDQUFDLFdBQVcsR0FBRyxLQUFLLENBQUM7SUFDaEMsQ0FBQzs7OztJQUVELFFBQVE7UUFDTixJQUFJLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDbEMsQ0FBQzs7Ozs7O0lBRUQsV0FBVyxDQUFDLElBQUksRUFBRSxNQUFNLEdBQUcsS0FBSztRQUM5QixJQUFJLElBQUksQ0FBQyxlQUFlLElBQUksSUFBSSxDQUFDLGVBQWUsS0FBSyxJQUFJLENBQUMsVUFBVSxFQUFFO1lBQ3BFLE9BQU87U0FDUjtRQUNELElBQ0UsQ0FBQyxNQUFNO1lBQ1AsSUFBSSxDQUFDLGVBQWU7WUFDcEIsSUFBSSxDQUFDLGVBQWUsS0FBSyxJQUFJLENBQUMsVUFBVSxFQUN4Qzs7a0JBQ00sTUFBTSxHQUNWLElBQUksQ0FBQyxXQUFXLENBQUMsZ0NBQWdDO2dCQUNqRCx5R0FBeUc7O2tCQUNyRyxHQUFHLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxFQUFFLElBQUksS0FBSzs7a0JBQ2xDLElBQUksR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsSUFBSSxNQUFNOzs7Ozs7Ozs7Ozs7a0JBV3JDLFNBQVMsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLGdCQUFnQixDQUFDO2dCQUNwRCxLQUFLLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxPQUFPLElBQUksVUFBVTtnQkFDN0MsV0FBVyxFQUFFLE1BQU07Z0JBQ25CLFlBQVksRUFBRSxJQUFJO2dCQUNsQixjQUFjLEVBQUUsR0FBRzthQUNwQixDQUFDO1lBQ0YsU0FBUyxDQUFDLFdBQVcsRUFBRSxDQUFDLFNBQVM7Ozs7WUFBQyxDQUFDLEdBQUcsRUFBRSxFQUFFO2dCQUN4QyxJQUFJLENBQUMsR0FBRyxFQUFFO29CQUNSLE9BQU87aUJBQ1I7Z0JBQ0QsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDLENBQUM7WUFDakMsQ0FBQyxFQUFDLENBQUM7WUFDSCxPQUFPO1NBQ1I7UUFDRCxJQUFJLENBQUMsSUFBSSxFQUFFO1lBQ1QsT0FBTztTQUNSO1FBQ0QsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFDakMsQ0FBQzs7Ozs7OztJQUVPLFdBQVcsQ0FBQyxJQUFJLEVBQUUsTUFBTTtRQUM5QixJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxFQUFFLENBQUM7UUFDeEIsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDOztZQUM5QixnQkFBZ0IsR0FBRyxLQUFLOztZQUN4QixjQUFjLEdBQUcsS0FBSztRQUMxQixJQUNFLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSTs7OztRQUNiLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FDUCxJQUFJLENBQUMsUUFBUSxLQUFLLG1CQUFtQixJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsRUFDekUsRUFDRDtZQUNBLGdCQUFnQixHQUFHLElBQUksQ0FBQztZQUN4QixJQUFJLENBQUMsbUJBQW1CLEdBQUcsSUFBSSxDQUFDO1NBQ2pDO1FBQ0QsSUFDRSxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUk7Ozs7UUFDYixDQUFDLElBQUksRUFBRSxFQUFFLENBQ1AsSUFBSSxDQUFDLFFBQVEsS0FBSyxtQkFBbUIsSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLEVBQ3pFO1lBRUQsY0FBYyxHQUFHLElBQUksQ0FBQztRQUV4QixJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRzs7OztRQUFDLENBQUMsSUFBSSxFQUFFLEVBQUU7O2dCQUNqQyxVQUFVLEdBQ1osQ0FBQyxnQkFBZ0IsSUFBSSxJQUFJLENBQUMsUUFBUSxLQUFLLG1CQUFtQixDQUFDO2dCQUMzRCxDQUFDLElBQUksQ0FBQyxRQUFRLEtBQUssbUJBQW1CLElBQUksY0FBYyxDQUFDO1lBQzNELHlCQUNLLElBQUksSUFDUCxPQUFPLEVBQ0wsSUFBSSxDQUFDLGVBQWUsSUFBSSxJQUFJLENBQUMsZUFBZSxLQUFLLElBQUksQ0FBQyxVQUFVO29CQUM5RCxDQUFDLENBQUMsS0FBSztvQkFDUCxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxFQUNuQyxRQUFRLEVBQ04sSUFBSSxDQUFDLGVBQWUsSUFBSSxJQUFJLENBQUMsZUFBZSxLQUFLLElBQUksQ0FBQyxVQUFVO29CQUM5RCxDQUFDLENBQUMsS0FBSztvQkFDUCxDQUFDLENBQUMsVUFBVSxJQUNoQjtRQUNKLENBQUMsRUFBQyxDQUFDO1FBRUgsSUFBSSxDQUFDLGVBQWUsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDO1FBRXZDLElBQUksQ0FBQyxNQUFNLEVBQUU7WUFDWCxJQUFJLENBQUMsTUFBTSxHQUFHLEVBQUUsQ0FBQztZQUNqQixJQUFJLENBQUMsWUFBWSxHQUFHLEVBQUUsQ0FBQztZQUN2QixJQUFJLENBQUMsY0FBYyxHQUFHLEVBQUUsQ0FBQztZQUN6QixJQUFJLENBQUMsV0FBVyxHQUFHLEtBQUssQ0FBQztZQUN6QixJQUFJLENBQUMsbUJBQW1CLEdBQUcsS0FBSyxDQUFDO1lBQ2pDLElBQUksSUFBSSxDQUFDLGVBQWUsSUFBSSxJQUFJLENBQUMsZUFBZSxLQUFLLElBQUksQ0FBQyxVQUFVLEVBQUU7Z0JBQ3BFLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHOzs7O2dCQUFDLENBQUMsSUFBSSxFQUFFLEVBQUU7b0JBQ3JDLHlCQUNLLElBQUksSUFDUCxPQUFPLEVBQUUsS0FBSyxFQUNkLFFBQVEsRUFBRSxLQUFLLElBQ2Y7Z0JBQ0osQ0FBQyxFQUFDLENBQUM7YUFDSjtTQUNGO0lBQ0gsQ0FBQzs7Ozs7O0lBRUQsZ0JBQWdCLENBQUMsSUFBSSxFQUFFLEdBQWE7UUFDbEMsSUFBSSxDQUFDLElBQUk7WUFBRSxPQUFPLEtBQUssQ0FBQztRQUN4QixJQUFJLEdBQUcsRUFBRTtZQUNQLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsRUFBRTtnQkFDdkIsSUFBSSxDQUFDLE9BQU87Ozs7Z0JBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRTtvQkFDcEIsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsRUFBRTt3QkFDbEMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO3FCQUMzQjtvQkFDRCxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxFQUFFO3dCQUM5QixJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU87Ozs7d0JBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRTs0QkFDNUIsSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSTs7Ozs0QkFBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsS0FBSyxLQUFLLENBQUMsRUFBRSxFQUFDLEVBQUU7Z0NBQ3ZELElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxtQkFDakIsS0FBSyxFQUNSLENBQUM7NkJBQ0o7d0JBQ0gsQ0FBQyxFQUFDLENBQUM7cUJBQ0o7Z0JBQ0gsQ0FBQyxFQUFDLENBQUM7YUFDSjtpQkFBTTtnQkFDTCxpRUFBaUU7Z0JBQ2pFLElBQUksSUFBSSxDQUFDLFFBQVEsS0FBSyxtQkFBbUIsRUFBRTtvQkFDekMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPOzs7O29CQUFDLENBQUMsSUFBSSxFQUFFLEVBQUU7d0JBQzVCLElBQUksSUFBSSxDQUFDLFFBQVEsS0FBSyxtQkFBbUI7NEJBQUUsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUM7b0JBQ2xFLENBQUMsRUFBQyxDQUFDO2lCQUNKO3FCQUFNO29CQUNMLElBQ0UsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUk7Ozs7b0JBQ2hCLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsT0FBTyxJQUFJLElBQUksQ0FBQyxRQUFRLEtBQUssbUJBQW1CLEVBQ2hFLEVBQ0Q7d0JBQ0EsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPOzs7O3dCQUFDLENBQUMsSUFBSSxFQUFFLEVBQUU7NEJBQzVCLElBQUksSUFBSSxDQUFDLFFBQVEsS0FBSyxtQkFBbUI7Z0NBQUUsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUM7d0JBQ2xFLENBQUMsRUFBQyxDQUFDO3dCQUNILElBQUksQ0FBQyxtQkFBbUIsR0FBRyxJQUFJLENBQUM7cUJBQ2pDO2lCQUNGO2dCQUNELElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTzs7OztnQkFBQyxDQUFDLElBQUksRUFBRSxFQUFFO29CQUMzQixJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJOzs7O29CQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxLQUFLLElBQUksQ0FBQyxFQUFFLEVBQUMsRUFBRTt3QkFDdEQsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLG1CQUNqQixJQUFJLEVBQ1AsQ0FBQztxQkFDSjtnQkFDSCxDQUFDLEVBQUMsQ0FBQztnQkFDSCxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxFQUFFO29CQUNsQyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7aUJBQzNCO2FBQ0Y7U0FDRjthQUFNO1lBQ0wsSUFBSSxDQUFDLFlBQVksR0FBRyxFQUFFLENBQUM7WUFDdkIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPOzs7O1lBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRTtnQkFDNUIsSUFBSSxJQUFJLENBQUMsUUFBUSxLQUFLLG1CQUFtQixFQUFFO29CQUN6QyxJQUFJLENBQUMsUUFBUSxHQUFHLEtBQUssQ0FBQztvQkFDdEIsSUFBSSxDQUFDLG1CQUFtQixHQUFHLEtBQUssQ0FBQztpQkFDbEM7Z0JBQ0QsSUFBSSxJQUFJLENBQUMsRUFBRSxJQUFJLElBQUksQ0FBQyxFQUFFLEVBQUU7b0JBQ3RCLElBQUksQ0FBQyxPQUFPLEdBQUcsR0FBRyxDQUFDO2lCQUNwQjtnQkFDRCxJQUFJLElBQUksQ0FBQyxPQUFPLEVBQUU7b0JBQ2hCLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTzs7OztvQkFBQyxDQUFDLE9BQU8sRUFBRSxFQUFFO3dCQUM5QixJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJOzs7O3dCQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxLQUFLLE9BQU8sQ0FBQyxFQUFFLEVBQUMsRUFBRTs0QkFDekQsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLG1CQUNqQixPQUFPLEVBQ1YsQ0FBQzt5QkFDSjtvQkFDSCxDQUFDLEVBQUMsQ0FBQztpQkFDSjtZQUNILENBQUMsRUFBQyxDQUFDO1lBQ0gsSUFDRSxJQUFJLENBQUMsUUFBUSxLQUFLLG1CQUFtQjtnQkFDckMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUk7Ozs7Z0JBQ2hCLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsT0FBTyxJQUFJLElBQUksQ0FBQyxRQUFRLEtBQUssbUJBQW1CLEVBQ2hFLEVBQ0Q7Z0JBQ0EsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPOzs7O2dCQUFDLENBQUMsR0FBRyxFQUFFLEVBQUU7b0JBQzNCLElBQUksR0FBRyxDQUFDLFFBQVEsS0FBSyxtQkFBbUI7d0JBQUUsR0FBRyxDQUFDLFFBQVEsR0FBRyxLQUFLLENBQUM7Z0JBQ2pFLENBQUMsRUFBQyxDQUFDO2FBQ0o7WUFDRCxJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTTs7OztZQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxJQUFJLElBQUksSUFBSSxDQUFDLEVBQUUsRUFBQyxDQUFDO1NBQzdEO1FBQ0QsSUFBSSxDQUFDLG9CQUFvQixFQUFFLENBQUM7UUFDNUIsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUM7UUFDcEUsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsV0FBVyxDQUFDLEVBQUU7WUFDMUIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxZQUFZLEVBQUUsQ0FBQztZQUN4QixJQUFJLENBQUMsR0FBRyxDQUFDLGFBQWEsQ0FBQztTQUN4QjtJQUNILENBQUM7Ozs7O0lBQ0QsU0FBUyxDQUFDLEdBQUc7UUFDWCxJQUFJLENBQUMsR0FBRyxFQUFFO1lBQ1IsSUFBSSxDQUFDLGNBQWMsR0FBRyxFQUFFLENBQUM7U0FDMUI7UUFDRCxJQUFJLENBQUMsWUFBWSxHQUFHLEVBQUUsQ0FBQztRQUN2QixJQUFJLENBQUMsTUFBTSxHQUFHLEVBQUUsQ0FBQztRQUNqQixJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU87Ozs7UUFBQyxDQUFDLElBQUksRUFBRSxFQUFFO1lBQzVCLElBQUksSUFBSSxDQUFDLFFBQVEsS0FBSyxtQkFBbUI7Z0JBQUUsSUFBSSxDQUFDLE9BQU8sR0FBRyxHQUFHLENBQUM7WUFDOUQsSUFBSSxHQUFHLEVBQUU7Z0JBQ1AsSUFBSSxJQUFJLENBQUMsUUFBUSxLQUFLLG1CQUFtQixFQUFFO29CQUN6QyxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQztvQkFDckIsT0FBTztpQkFDUjtnQkFDRCxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7Z0JBQzFCLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTzs7OztnQkFBQyxDQUFDLE9BQU8sRUFBRSxFQUFFO29CQUM5QixJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJOzs7O29CQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxLQUFLLE9BQU8sQ0FBQyxFQUFFLEVBQUMsRUFBRTt3QkFDekQsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLG1CQUNqQixPQUFPLEVBQ1YsQ0FBQztxQkFDSjtnQkFDSCxDQUFDLEVBQUMsQ0FBQzthQUNKO2lCQUFNO2dCQUNMLElBQUksSUFBSSxDQUFDLFFBQVEsS0FBSyxtQkFBbUI7b0JBQUUsSUFBSSxDQUFDLFFBQVEsR0FBRyxLQUFLLENBQUM7YUFDbEU7UUFDSCxDQUFDLEVBQUMsQ0FBQztRQUNILElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDO0lBQ3RFLENBQUM7Ozs7O0lBR00sUUFBUSxDQUFDLEdBQUc7O1lBQ2IsUUFBUSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUM7UUFDOUQsSUFBSSxHQUFHLEVBQUU7WUFDUCxJQUFJLENBQUMsWUFBWSxHQUFHLFFBQVEsQ0FBQyxNQUFNOzs7O1lBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUMzQyxJQUFJLENBQUMsU0FBUyxDQUFDLFdBQVcsRUFBRSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsV0FBVyxFQUFFLENBQUMsRUFDekQsQ0FBQztTQUNIO2FBQU07WUFDTCxJQUFJLENBQUMsWUFBWSxHQUFHLFFBQVEsQ0FBQztTQUM5QjtJQUNILENBQUM7Ozs7O0lBRUQsUUFBUTtRQUNOLElBQUksQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUNwQyxJQUFJLENBQUMsR0FBRyxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUM7O1lBQ3hCLE1BQU07O1lBQ04sZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNOzs7O1FBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUNoRCxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQzVCO1FBQ0QsTUFBTSxHQUFHO1lBQ1AsVUFBVSxFQUFFLElBQUksQ0FBQyxRQUFRO1lBQ3pCLGNBQWMsRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUM7WUFDckMsS0FBSyxFQUFFLGdCQUFnQixDQUFDLEdBQUc7Ozs7WUFBQyxDQUFDLENBQUMsRUFBRSxFQUFFO2dCQUNoQyxPQUFPO29CQUNMLGNBQWMsRUFBRSxDQUFDLENBQUMsRUFBRTtvQkFDcEIsZ0JBQWdCLEVBQUUsQ0FBQyxDQUFDLFFBQVE7aUJBQzdCLENBQUM7WUFDSixDQUFDLEVBQUM7U0FDSCxDQUFDOztjQUNJLFVBQVUsR0FDZCxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxVQUFVLEtBQUssSUFBSSxDQUFDLFVBQVU7WUFDaEQsQ0FBQyxDQUFDLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxVQUFVO1lBQ3pDLENBQUMsQ0FBQyxFQUFFOztjQUVGLE9BQU8sR0FBRztZQUNkLFVBQVU7WUFDVixTQUFTLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxTQUFTO1lBQ2xDLE1BQU0sRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLEVBQUU7WUFDeEIsV0FBVyxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVztZQUNsQyxjQUFjLEVBQUUsSUFBSSxDQUFDLFlBQVk7WUFDakMsVUFBVSxFQUFFLElBQUksQ0FBQyxVQUFVLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsVUFBVTtZQUM3RCxNQUFNLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUM7U0FDL0I7UUFFRCxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxpQkFBaUIsRUFBRSxPQUFPOzs7O1FBQUUsQ0FBQyxHQUFHLEVBQUUsRUFBRTtZQUNsRSxJQUFJLEdBQUcsQ0FBQyxNQUFNLEtBQUssU0FBUyxFQUFFOztzQkFDdEIsWUFBWSxHQUNoQixJQUFJLENBQUMsV0FBVyxDQUFDLDBCQUEwQjtvQkFDM0MsNkJBQTZCO2dCQUMvQixJQUFJLENBQUMsU0FBUyxDQUFDLFlBQVksRUFBRSxTQUFTLENBQUMsQ0FBQztnQkFDeEMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7Z0JBQ25ELElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxHQUFHLEVBQUUsQ0FBQztnQkFDdkIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPOzs7O2dCQUFDLENBQUMsSUFBSSxFQUFFLEVBQUU7b0JBQzVCLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTzs7OztvQkFBQyxDQUFDLEtBQUssRUFBRSxFQUFFO3dCQUM1QixJQUFJLElBQUksQ0FBQyxFQUFFLEtBQUssS0FBSyxFQUFFOzRCQUNyQixJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUM7Z0NBQ3JCLGdCQUFnQixFQUFFLElBQUksQ0FBQyxRQUFRO2dDQUMvQixjQUFjLEVBQUUsSUFBSSxDQUFDLEVBQUU7NkJBQ3hCLENBQUMsQ0FBQzt5QkFDSjtvQkFDSCxDQUFDLEVBQUMsQ0FBQztnQkFDTCxDQUFDLEVBQUMsQ0FBQztnQkFFSCxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7Z0JBQ3pELElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUU7b0JBQ2xCLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxrQkFBa0IsR0FBRyxFQUFFLENBQUM7aUJBQ3REO2dCQUNELElBQ0UsVUFBVTtvQkFDVixVQUFVLENBQUMsTUFBTTtvQkFDakIsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsVUFBVSxLQUFLLElBQUksQ0FBQyxVQUFVLEVBQ2xEO29CQUNBLElBQUksQ0FBQyxHQUFHLENBQUMsdUJBQXVCLENBQUMsSUFBSSxDQUFDO3dCQUNwQyxVQUFVO3dCQUNWLEVBQUUsRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxFQUFFO3FCQUMzQixDQUFDLENBQUM7b0JBQ0gsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLEVBQUUsQ0FBQztvQkFDdkIsT0FBTztpQkFDUjtnQkFFRCxJQUFJLENBQUMsdUJBQXVCLENBQUMsY0FBYyxDQUN6QyxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFDckIsSUFBSTs7Ozs7Z0JBQ0osQ0FBQyxHQUFHLEVBQUUsUUFBUSxHQUFHLEVBQUUsRUFBRSxFQUFFO29CQUNyQixJQUFJLENBQUMsZ0JBQWdCLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQzt3QkFDdEMsTUFBTSxFQUFFLE1BQU07d0JBQ2QsRUFBRSxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLEVBQUU7cUJBQzNCLENBQUMsQ0FBQztvQkFDSCxJQUFJLENBQUMsR0FBRyxDQUFDLFdBQVcsR0FBRyxLQUFLLENBQUM7b0JBQzdCLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDO3dCQUNuQixRQUFRLEVBQUUsS0FBSzt3QkFDZixPQUFPLEVBQUUsRUFBRTt3QkFDWCxRQUFRO3dCQUNSLFNBQVMsRUFBRSxHQUFHO3FCQUNmLENBQUMsQ0FBQztvQkFDSCxJQUFJLENBQUMsR0FBRyxDQUFDLFlBQVksRUFBRSxDQUFDO2dCQUMxQixDQUFDLEVBQ0YsQ0FBQzthQUNIO2lCQUFNO2dCQUNMLElBQUksQ0FBQyxHQUFHLENBQUMsV0FBVyxHQUFHLEtBQUssQ0FBQztnQkFDN0IsSUFBSSxDQUFDLEdBQUcsQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO2dCQUNqQyxJQUFJLENBQUMsR0FBRyxDQUFDLFlBQVksRUFBRSxDQUFDOztzQkFDbEIsWUFBWSxHQUFHLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxJQUFJLE9BQU87Z0JBQ3ZELElBQUksQ0FBQyxTQUFTLENBQUMsWUFBWSxFQUFFLE9BQU8sQ0FBQyxDQUFDO2FBQ3ZDO1FBQ0gsQ0FBQyxFQUFDLENBQUM7SUFDTCxDQUFDOzs7Ozs7O0lBRU0sU0FBUyxDQUFDLEdBQUcsRUFBRSxNQUEyQjtRQUMvQyxJQUFJLENBQUMsYUFBYSxDQUFDLGdCQUFnQixDQUFDLEdBQUcsRUFBRTtZQUN2QyxNQUFNO1NBQ1AsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzs7Ozs7SUFFTSxVQUFVO1FBQ2YsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUN6QixDQUFDOzs7WUExYkYsU0FBUyxTQUFDO2dCQUNULFFBQVEsRUFBRSxrQkFBa0I7Z0JBQzVCLDY1SkFBNkM7O2FBRTlDOzs7OzRDQW9CSSxNQUFNLFNBQUMsZUFBZTtZQWhDUCxZQUFZO1lBTXZCLGFBQWE7WUFOYixTQUFTO1lBQ1QsT0FBTztZQUNQLGdCQUFnQjtZQUNoQix1QkFBdUI7WUFQOUIsaUJBQWlCOzRDQTRDZCxRQUFRLFlBQUksTUFBTSxTQUFDLFNBQVM7NENBQzVCLFFBQVEsWUFBSSxNQUFNLFNBQUMsaUJBQWlCOzs7O0lBM0J2QywyQ0FBWTs7SUFDWix3Q0FBUzs7SUFDVCxvQ0FBSzs7SUFDTCwwQ0FBVzs7SUFDWCxzQ0FBTzs7SUFFUCwwQ0FBdUI7O0lBQ3ZCLHVDQUFvQjs7SUFDcEIsNENBQXlCOztJQUN6Qix3Q0FBcUI7O0lBQ3JCLHNDQUFtQjs7SUFDbkIsMkNBQTJCOztJQUMzQiw4Q0FBMkI7O0lBQzNCLHdDQUF3Qjs7SUFDeEIsK0NBQTRCOztJQUM1QixtREFBbUM7O0lBaVRuQyx3Q0FBNkQ7O0lBOVMzRCxvQ0FBeUM7O0lBQ3pDLHlDQUFvRDs7Ozs7SUFDcEQsNkNBQW9DOztJQUNwQyxzQ0FBd0I7Ozs7O0lBQ3hCLG1DQUFvQjs7SUFDcEIsZ0RBQXlDOztJQUN6Qyx1REFBdUQ7Ozs7O0lBQ3ZELG1DQUE4Qjs7SUFDOUIsbUNBQThDOzs7OztJQUM5QyxvQ0FBd0QiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gIENvbXBvbmVudCxcclxuICBPbkluaXQsXHJcbiAgSW5qZWN0LFxyXG4gIENoYW5nZURldGVjdG9yUmVmLFxyXG4gIEFmdGVyVmlld0luaXQsXHJcbiAgT3B0aW9uYWwsXHJcbn0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHsgTWF0RGlhbG9nLCBNYXREaWFsb2dSZWYsIE1BVF9ESUFMT0dfREFUQSB9IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbFwiO1xyXG5pbXBvcnQgeyBBcGlMaXN0IH0gZnJvbSBcIi4uLy4uL2FwaVwiO1xyXG5pbXBvcnQgeyBEYXNoYm9hcmRTZXJ2aWNlIH0gZnJvbSBcIi4uLy4uL2Rhc2hib2FyZC5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7IERhc2hib2FyZFBvcmxldHNTZXJ2aWNlIH0gZnJvbSBcIi4uLy4uL2Rhc2hib2FyZFBvcmxldHMuc2VydmljZVwiO1xyXG5pbXBvcnQgeyB0aHJvdHRsZSB9IGZyb20gXCJsb2Rhc2hcIjtcclxuaW1wb3J0IHsgQVBJX1NFUlZJQ0VfVE9LRU4sIFBCRl9UT0tFTiB9IGZyb20gXCIuLi8uLi8uLi9zZXJ2aWNlL0luamVjdGlvblRva2VuXCI7XHJcbmltcG9ydCB7IERpYWxvZ1NlcnZpY2UgfSBmcm9tIFwiLi4vLi4vLi4vc2VydmljZS9kaWFsb2cuc2VydmljZVwiO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6IFwia3QtZGF0YS1tYXJ0LW5ld1wiLFxyXG4gIHRlbXBsYXRlVXJsOiBcIi4vZGF0YS1tYXJ0LW5ldy5jb21wb25lbnQuaHRtbFwiLFxyXG4gIHN0eWxlVXJsczogW1wiLi9kYXRhLW1hcnQtbmV3LmNvbXBvbmVudC5zY3NzXCJdLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgRGF0YU1hcnROZXdDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIEFmdGVyVmlld0luaXQge1xyXG4gIHRyYW5zbGF0aW9uO1xyXG4gIHVzZXJJbmZvO1xyXG4gIGxhbmc7XHJcbiAgZW50aXR5VHlwZTtcclxuICBjb25maWc7XHJcblxyXG4gIHB1YmxpYyBmYXRoZXJMaXN0ID0gW107XHJcbiAgcHVibGljIHNvbkxpc3QgPSBbXTtcclxuICBwdWJsaWMgZ3JhbmRzb25MaXN0ID0gW107XHJcbiAgcHVibGljIGZhdGhlcklkID0gXCJcIjtcclxuICBwdWJsaWMgc29uSWRzID0gW107XHJcbiAgcHVibGljIHNlbGVjdGVkQWxsID0gZmFsc2U7XHJcbiAgcHVibGljIG9yZ2luR3JhbmREYXRhID0gW107XHJcbiAgcHVibGljIGRpc2FibGVkID0gZmFsc2U7XHJcbiAgcHVibGljIGNhY2hlRW50aXR5VHlwZSA9IFwiXCI7XHJcbiAgcHVibGljIGlzU2VsZWN0QWxsRGlzYWJsZWQgPSBmYWxzZTtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBASW5qZWN0KE1BVF9ESUFMT0dfREFUQSkgcHVibGljIGRhdGE6IGFueSxcclxuICAgIHB1YmxpYyBkaWFsb2dSZWY6IE1hdERpYWxvZ1JlZjxEYXRhTWFydE5ld0NvbXBvbmVudD4sXHJcbiAgICBwcml2YXRlIGRpYWxvZ1NlcnZpY2U6IERpYWxvZ1NlcnZpY2UsXHJcbiAgICBwdWJsaWMgZGlhbG9nOiBNYXREaWFsb2csXHJcbiAgICBwcml2YXRlIGFwaTogQXBpTGlzdCxcclxuICAgIHB1YmxpYyBkYXNoYm9hcmRTZXJ2aWNlOiBEYXNoYm9hcmRTZXJ2aWNlLFxyXG4gICAgcHVibGljIERhc2hib2FyZFBvcmxldHNTZXJ2aWNlOiBEYXNoYm9hcmRQb3JsZXRzU2VydmljZSxcclxuICAgIHByaXZhdGUgcmVmOiBDaGFuZ2VEZXRlY3RvclJlZixcclxuICAgIEBPcHRpb25hbCgpIEBJbmplY3QoUEJGX1RPS0VOKSBwdWJsaWMgcGJmOiBhbnksXHJcbiAgICBAT3B0aW9uYWwoKSBASW5qZWN0KEFQSV9TRVJWSUNFX1RPS0VOKSBwcml2YXRlIGh0dHA6IGFueVxyXG4gICkge31cclxuICBuZ09uSW5pdCgpIHtcclxuICAgIHRoaXMuZ2V0SW5mbygpO1xyXG4gICAgdGhpcy5nZXRTb3VyY2VzKCk7XHJcbiAgfVxyXG5cclxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLnBiZi5pbnRyb1N0ZXAubmV4dChcIm5leHRcIik7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0SW5mbygpIHtcclxuICAgIHRoaXMudHJhbnNsYXRpb24gPSBKU09OLnBhcnNlKGxvY2FsU3RvcmFnZS5nZXRJdGVtKFwidHJhbnNsYXRpb25cIikpO1xyXG4gICAgdGhpcy51c2VySW5mbyA9IEpTT04ucGFyc2UobG9jYWxTdG9yYWdlLmdldEl0ZW0oXCJ1c2VySW5mb1wiKSk7XHJcbiAgICB0aGlzLmxhbmcgPSB0aGlzLnBiZi5nZXRMYW5ndWFnZVBhcmFtcygpO1xyXG4gICAgdGhpcy5jb25maWcgPVxyXG4gICAgICB0aGlzLmRhdGEgJiYgdGhpcy5kYXRhLmRhc2hib2FyZFxyXG4gICAgICAgID8gSlNPTi5wYXJzZSh0aGlzLmRhdGEuZGFzaGJvYXJkLmNvbmZpZylcclxuICAgICAgICA6IHt9O1xyXG4gIH1cclxuICBnZXRTb3VyY2VzKCkge1xyXG4gICAgY29uc3QgZGF0YU9iaiA9IHtcclxuICAgICAgYWNjb3VudElkOiB0aGlzLnVzZXJJbmZvLmFjY291bnRJZCxcclxuICAgICAgbGFuZ3VhZ2U6IHRoaXMubGFuZyxcclxuICAgICAgZGFzaGJvYXJkVmVyc2lvbjogMixcclxuICAgIH07XHJcbiAgICB0aGlzLnBiZi5wYWdlTG9hZGluZyA9IHRydWU7XHJcbiAgICB0aGlzLnBiZi5wYWdlTG9hZGluZ18ubmV4dCh0cnVlKTtcclxuICAgIHRoaXMuaHR0cC5wb3N0KHRoaXMuYXBpLnVybExpc3QuR2V0U291cmNlcywgZGF0YU9iaiwgKHJlcykgPT4ge1xyXG4gICAgICB0aGlzLnBiZi5wYWdlTG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICB0aGlzLnBiZi5wYWdlTG9hZGluZ18ubmV4dCh0cnVlKTtcclxuICAgICAgaWYgKHJlcykge1xyXG4gICAgICAgIHRoaXMuRGFzaGJvYXJkUG9ybGV0c1NlcnZpY2Uuc291cmNlc0RhdGFbdGhpcy5kYXRhLmRhc2hib2FyZC5pZF0gPSByZXM7XHJcbiAgICAgICAgdGhpcy5EYXNoYm9hcmRQb3JsZXRzU2VydmljZS5HZXRTb3VyY2VzUmVzID0gcmVzO1xyXG4gICAgICAgIHRoaXMuZmF0aGVyTGlzdCA9IHJlcztcclxuXHJcbiAgICAgICAgaWYgKHRoaXMuY29uZmlnLmRhdGFtYXJ0SWQpIHtcclxuICAgICAgICAgIC8vIHRoaXMuZGlzYWJsZWQgPSB0cnVlO1xyXG4gICAgICAgICAgdGhpcy5mYXRoZXJJZCA9IHRoaXMuY29uZmlnLmRhdGFtYXJ0SWQ7XHJcbiAgICAgICAgICB0aGlzLnNvbklkcyA9IHRoaXMuY29uZmlnLmRhdGFtYXJ0Vmlld0lkXHJcbiAgICAgICAgICAgID8gdGhpcy5jb25maWcuZGF0YW1hcnRWaWV3SWQuc3BsaXQoXCIsXCIpXHJcbiAgICAgICAgICAgIDogdGhpcy5jb25maWcudmlld3NcclxuICAgICAgICAgICAgPyB0aGlzLmNvbmZpZy52aWV3cy5tYXAoKGl0ZW0pID0+IGl0ZW0uZGF0YW1hcnRWaWV3SWQpXHJcbiAgICAgICAgICAgIDogW107XHJcbiAgICAgICAgICBsZXQgZGF0YXNvdXJjZSA9IHJlcy5maW5kKChlbCkgPT4gZWwuaWQgPT0gdGhpcy5mYXRoZXJJZCk7XHJcbiAgICAgICAgICBpZiAoZGF0YXNvdXJjZSkge1xyXG4gICAgICAgICAgICB0aGlzLmdldGRhdGFNYXJ0KGRhdGFzb3VyY2UsIHRydWUpO1xyXG4gICAgICAgICAgICBpZiAoIXRoaXMuY2FjaGVFbnRpdHlUeXBlICYmIHRoaXMuY29uZmlnLmRhdGFtYXJ0SWQpIHtcclxuICAgICAgICAgICAgICB0aGlzLmNhY2hlRW50aXR5VHlwZSA9IHRoaXMuZW50aXR5VHlwZTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgbGV0IGRhdGF2aWV3ID0gZGF0YXNvdXJjZS52aWV3cy5maWx0ZXIoKGVsKSA9PlxyXG4gICAgICAgICAgICAgIHRoaXMuc29uSWRzLmluY2x1ZGVzKGVsLmlkKVxyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgICAgICB0aGlzLmhhbmRsZUl0ZW1DaGFuZ2UoZGF0YXZpZXcsIHRydWUpO1xyXG4gICAgICAgICAgICB0aGlzLmdldFNlbGVjdGVkQWxsU3RhdHVzKCk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcbiAgZ2V0U2VsZWN0ZWRBbGxTdGF0dXMoKSB7XHJcbiAgICBsZXQgbnVtID0gMDtcclxuICAgIHRoaXMuc29uTGlzdC5mb3JFYWNoKChzb24pID0+IHtcclxuICAgICAgaWYgKHNvbi5jaGVja2VkICYmIHNvbi5sYW5nQ29kZSAhPT0gXCJGSU5BTkNJQUxfRklHVVJFU1wiKSB7XHJcbiAgICAgICAgbnVtKys7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gICAgaWYgKG51bSA9PT0gdGhpcy5zb25MaXN0Lmxlbmd0aCAtIDEpIHRoaXMuc2VsZWN0ZWRBbGwgPSB0cnVlO1xyXG4gICAgZWxzZSB0aGlzLnNlbGVjdGVkQWxsID0gZmFsc2U7XHJcbiAgfVxyXG5cclxuICBuZXh0U3RlcCgpIHtcclxuICAgIHRoaXMucGJmLmludHJvU3RlcC5uZXh0KFwibmV4dFwiKTtcclxuICB9XHJcblxyXG4gIGdldGRhdGFNYXJ0KGl0ZW0sIGlzSW5pdCA9IGZhbHNlKSB7XHJcbiAgICBpZiAodGhpcy5jYWNoZUVudGl0eVR5cGUgJiYgdGhpcy5jYWNoZUVudGl0eVR5cGUgPT09IGl0ZW0uZW50aXR5VHlwZSkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBpZiAoXHJcbiAgICAgICFpc0luaXQgJiZcclxuICAgICAgdGhpcy5jYWNoZUVudGl0eVR5cGUgJiZcclxuICAgICAgdGhpcy5jYWNoZUVudGl0eVR5cGUgIT09IGl0ZW0uZW50aXR5VHlwZVxyXG4gICAgKSB7XHJcbiAgICAgIGNvbnN0IF90aXRsZSA9XHJcbiAgICAgICAgdGhpcy50cmFuc2xhdGlvbi5BUkVfWU9VX1NVUkVfVE9fQ0hBTkdFX0RBVEFfTUFSVCB8fFxyXG4gICAgICAgIFwiLkFyZSB5b3Ugc3VyZSB0byBjaGFuZ2UgZW50aXR5IHR5cGUgb2YgZGF0YSBtYXJ0PyBEYXNoYm9hcmQgd2lsbCBiZSByZXNldCBzaW5jZSBlbnRpdHkgdHlwZSBpcyBjaGFuZ2VkLlwiO1xyXG4gICAgICBjb25zdCBfbm8gPSB0aGlzLnRyYW5zbGF0aW9uLk5PIHx8IFwiLk5PXCI7XHJcbiAgICAgIGNvbnN0IF95ZXMgPSB0aGlzLnRyYW5zbGF0aW9uLllFUyB8fCBcIi5ZRVNcIjtcclxuICAgICAgLy8gY29uc3QgZGlhbG9nUmVmID0gdGhpcy5sYXlvdXRVdGlsc1NlcnZpY2UuYWxlcnRFbGVtZW50KFxyXG4gICAgICAvLyBcdHRoaXMudHJhbnNsYXRpb24uV0FSTklORyB8fCBcIi5XQVJOSU5HXCIsXHJcbiAgICAgIC8vIFx0X3RpdGxlLFxyXG4gICAgICAvLyBcdF9ubyxcclxuICAgICAgLy8gXHRfeWVzLFxyXG4gICAgICAvLyBcdHRydWUsXHJcbiAgICAgIC8vIFx0dHJ1ZSxcclxuICAgICAgLy8gXHRcIjQ4MHB4XCIsXHJcbiAgICAgIC8vIFx0XCIzMjRweFwiXHJcbiAgICAgIC8vICk7XHJcbiAgICAgIGNvbnN0IGRpYWxvZ1JlZiA9IHRoaXMuZGlhbG9nU2VydmljZS5zaG93Q29tbW9uRGlsYW9nKHtcclxuICAgICAgICB0aXRsZTogdGhpcy50cmFuc2xhdGlvbi5XQVJOSU5HIHx8IFwiLldBUk5JTkdcIixcclxuICAgICAgICBkZXNjcmlwdGlvbjogX3RpdGxlLFxyXG4gICAgICAgIHNhdmVCdG5MYWJlbDogX3llcyxcclxuICAgICAgICBjYW5jZWxCdG5MYWJlbDogX25vLFxyXG4gICAgICB9KTtcclxuICAgICAgZGlhbG9nUmVmLmFmdGVyQ2xvc2VkKCkuc3Vic2NyaWJlKChyZXMpID0+IHtcclxuICAgICAgICBpZiAoIXJlcykge1xyXG4gICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLnNldEZhdGhlcklkKGl0ZW0sIGlzSW5pdCk7XHJcbiAgICAgIH0pO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBpZiAoIWl0ZW0pIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgdGhpcy5zZXRGYXRoZXJJZChpdGVtLCBpc0luaXQpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzZXRGYXRoZXJJZChpdGVtLCBpc0luaXQpIHtcclxuICAgIHRoaXMuZmF0aGVySWQgPSBpdGVtLmlkO1xyXG4gICAgdGhpcy5lbnRpdHlUeXBlID0gaXRlbS5lbnRpdHlUeXBlO1xyXG4gICAgbGV0IGlzRmlndXJlc0NoZWNrZWQgPSBmYWxzZTtcclxuICAgIGxldCBpc090aGVyQ2hlY2tlZCA9IGZhbHNlO1xyXG4gICAgaWYgKFxyXG4gICAgICBpdGVtLnZpZXdzLmZpbmQoXHJcbiAgICAgICAgKGl0ZW0pID0+XHJcbiAgICAgICAgICBpdGVtLmxhbmdDb2RlID09PSBcIkZJTkFOQ0lBTF9GSUdVUkVTXCIgJiYgdGhpcy5zb25JZHMuaW5jbHVkZXMoaXRlbS5pZClcclxuICAgICAgKVxyXG4gICAgKSB7XHJcbiAgICAgIGlzRmlndXJlc0NoZWNrZWQgPSB0cnVlO1xyXG4gICAgICB0aGlzLmlzU2VsZWN0QWxsRGlzYWJsZWQgPSB0cnVlO1xyXG4gICAgfVxyXG4gICAgaWYgKFxyXG4gICAgICBpdGVtLnZpZXdzLmZpbmQoXHJcbiAgICAgICAgKGl0ZW0pID0+XHJcbiAgICAgICAgICBpdGVtLmxhbmdDb2RlICE9PSBcIkZJTkFOQ0lBTF9GSUdVUkVTXCIgJiYgdGhpcy5zb25JZHMuaW5jbHVkZXMoaXRlbS5pZClcclxuICAgICAgKVxyXG4gICAgKVxyXG4gICAgICBpc090aGVyQ2hlY2tlZCA9IHRydWU7XHJcblxyXG4gICAgdGhpcy5zb25MaXN0ID0gaXRlbS52aWV3cy5tYXAoKGl0ZW0pID0+IHtcclxuICAgICAgbGV0IGlzRGlzYWJsZWQgPVxyXG4gICAgICAgIChpc0ZpZ3VyZXNDaGVja2VkICYmIGl0ZW0ubGFuZ0NvZGUgIT09IFwiRklOQU5DSUFMX0ZJR1VSRVNcIikgfHxcclxuICAgICAgICAoaXRlbS5sYW5nQ29kZSA9PT0gXCJGSU5BTkNJQUxfRklHVVJFU1wiICYmIGlzT3RoZXJDaGVja2VkKTtcclxuICAgICAgcmV0dXJuIHtcclxuICAgICAgICAuLi5pdGVtLFxyXG4gICAgICAgIGNoZWNrZWQ6XHJcbiAgICAgICAgICB0aGlzLmNhY2hlRW50aXR5VHlwZSAmJiB0aGlzLmNhY2hlRW50aXR5VHlwZSAhPT0gdGhpcy5lbnRpdHlUeXBlXHJcbiAgICAgICAgICAgID8gZmFsc2VcclxuICAgICAgICAgICAgOiB0aGlzLnNvbklkcy5pbmNsdWRlcyhpdGVtLmlkKSxcclxuICAgICAgICBkaXNhYmxlZDpcclxuICAgICAgICAgIHRoaXMuY2FjaGVFbnRpdHlUeXBlICYmIHRoaXMuY2FjaGVFbnRpdHlUeXBlICE9PSB0aGlzLmVudGl0eVR5cGVcclxuICAgICAgICAgICAgPyBmYWxzZVxyXG4gICAgICAgICAgICA6IGlzRGlzYWJsZWQsXHJcbiAgICAgIH07XHJcbiAgICB9KTtcclxuXHJcbiAgICB0aGlzLmNhY2hlRW50aXR5VHlwZSA9IGl0ZW0uZW50aXR5VHlwZTtcclxuXHJcbiAgICBpZiAoIWlzSW5pdCkge1xyXG4gICAgICB0aGlzLnNvbklkcyA9IFtdO1xyXG4gICAgICB0aGlzLmdyYW5kc29uTGlzdCA9IFtdO1xyXG4gICAgICB0aGlzLm9yZ2luR3JhbmREYXRhID0gW107XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRBbGwgPSBmYWxzZTtcclxuICAgICAgdGhpcy5pc1NlbGVjdEFsbERpc2FibGVkID0gZmFsc2U7XHJcbiAgICAgIGlmICh0aGlzLmNhY2hlRW50aXR5VHlwZSAmJiB0aGlzLmNhY2hlRW50aXR5VHlwZSAhPT0gaXRlbS5lbnRpdHlUeXBlKSB7XHJcbiAgICAgICAgdGhpcy5zb25MaXN0ID0gaXRlbS52aWV3cy5tYXAoKGl0ZW0pID0+IHtcclxuICAgICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgIC4uLml0ZW0sXHJcbiAgICAgICAgICAgIGNoZWNrZWQ6IGZhbHNlLFxyXG4gICAgICAgICAgICBkaXNhYmxlZDogZmFsc2UsXHJcbiAgICAgICAgICB9O1xyXG4gICAgICAgIH0pO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBoYW5kbGVJdGVtQ2hhbmdlKGRhdGEsIHZhbD86IGJvb2xlYW4pIHtcclxuICAgIGlmICghZGF0YSkgcmV0dXJuIGZhbHNlO1xyXG4gICAgaWYgKHZhbCkge1xyXG4gICAgICBpZiAoQXJyYXkuaXNBcnJheShkYXRhKSkge1xyXG4gICAgICAgIGRhdGEuZm9yRWFjaCgoaXRlbSkgPT4ge1xyXG4gICAgICAgICAgaWYgKCF0aGlzLnNvbklkcy5pbmNsdWRlcyhpdGVtLmlkKSkge1xyXG4gICAgICAgICAgICB0aGlzLnNvbklkcy5wdXNoKGl0ZW0uaWQpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoaXRlbS50YWJsZXMpKSB7XHJcbiAgICAgICAgICAgIGl0ZW0udGFibGVzLmZvckVhY2goKGNoaWxkKSA9PiB7XHJcbiAgICAgICAgICAgICAgaWYgKCF0aGlzLmdyYW5kc29uTGlzdC5zb21lKChlbCkgPT4gZWwuaWQgPT09IGNoaWxkLmlkKSkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5ncmFuZHNvbkxpc3QucHVzaCh7XHJcbiAgICAgICAgICAgICAgICAgIC4uLmNoaWxkLFxyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICAvLyBmaW5hbmNpYWwgZmlndXJlcyBjYW7igJl0IGJlIHNlbGVjdGVkIHRvZ2V0aGVyIHdpdGggb3RoZXIgZ3JvdXBzXHJcbiAgICAgICAgaWYgKGRhdGEubGFuZ0NvZGUgIT09IFwiRklOQU5DSUFMX0ZJR1VSRVNcIikge1xyXG4gICAgICAgICAgdGhpcy5zb25MaXN0LmZvckVhY2goKGl0ZW0pID0+IHtcclxuICAgICAgICAgICAgaWYgKGl0ZW0ubGFuZ0NvZGUgPT09IFwiRklOQU5DSUFMX0ZJR1VSRVNcIikgaXRlbS5kaXNhYmxlZCA9IHRydWU7XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgaWYgKFxyXG4gICAgICAgICAgICAhdGhpcy5zb25MaXN0LmZpbmQoXHJcbiAgICAgICAgICAgICAgKGl0ZW0pID0+IGl0ZW0uY2hlY2tlZCAmJiBpdGVtLmxhbmdDb2RlICE9PSBcIkZJTkFOQ0lBTF9GSUdVUkVTXCJcclxuICAgICAgICAgICAgKVxyXG4gICAgICAgICAgKSB7XHJcbiAgICAgICAgICAgIHRoaXMuc29uTGlzdC5mb3JFYWNoKChpdGVtKSA9PiB7XHJcbiAgICAgICAgICAgICAgaWYgKGl0ZW0ubGFuZ0NvZGUgIT09IFwiRklOQU5DSUFMX0ZJR1VSRVNcIikgaXRlbS5kaXNhYmxlZCA9IHRydWU7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB0aGlzLmlzU2VsZWN0QWxsRGlzYWJsZWQgPSB0cnVlO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBkYXRhLnRhYmxlcy5mb3JFYWNoKChpdGVtKSA9PiB7XHJcbiAgICAgICAgICBpZiAoIXRoaXMuZ3JhbmRzb25MaXN0LnNvbWUoKGVsKSA9PiBlbC5pZCA9PT0gaXRlbS5pZCkpIHtcclxuICAgICAgICAgICAgdGhpcy5ncmFuZHNvbkxpc3QucHVzaCh7XHJcbiAgICAgICAgICAgICAgLi4uaXRlbSxcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgaWYgKCF0aGlzLnNvbklkcy5pbmNsdWRlcyhkYXRhLmlkKSkge1xyXG4gICAgICAgICAgdGhpcy5zb25JZHMucHVzaChkYXRhLmlkKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuZ3JhbmRzb25MaXN0ID0gW107XHJcbiAgICAgIHRoaXMuc29uTGlzdC5mb3JFYWNoKChpdGVtKSA9PiB7XHJcbiAgICAgICAgaWYgKGRhdGEubGFuZ0NvZGUgPT09IFwiRklOQU5DSUFMX0ZJR1VSRVNcIikge1xyXG4gICAgICAgICAgaXRlbS5kaXNhYmxlZCA9IGZhbHNlO1xyXG4gICAgICAgICAgdGhpcy5pc1NlbGVjdEFsbERpc2FibGVkID0gZmFsc2U7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChpdGVtLmlkID09IGRhdGEuaWQpIHtcclxuICAgICAgICAgIGl0ZW0uY2hlY2tlZCA9IHZhbDtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKGl0ZW0uY2hlY2tlZCkge1xyXG4gICAgICAgICAgaXRlbS50YWJsZXMuZm9yRWFjaCgoc29uSXRlbSkgPT4ge1xyXG4gICAgICAgICAgICBpZiAoIXRoaXMuZ3JhbmRzb25MaXN0LnNvbWUoKGVsKSA9PiBlbC5pZCA9PT0gc29uSXRlbS5pZCkpIHtcclxuICAgICAgICAgICAgICB0aGlzLmdyYW5kc29uTGlzdC5wdXNoKHtcclxuICAgICAgICAgICAgICAgIC4uLnNvbkl0ZW0sXHJcbiAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICAgIGlmIChcclxuICAgICAgICBkYXRhLmxhbmdDb2RlICE9PSBcIkZJTkFOQ0lBTF9GSUdVUkVTXCIgJiZcclxuICAgICAgICAhdGhpcy5zb25MaXN0LmZpbmQoXHJcbiAgICAgICAgICAoaXRlbSkgPT4gaXRlbS5jaGVja2VkICYmIGl0ZW0ubGFuZ0NvZGUgIT09IFwiRklOQU5DSUFMX0ZJR1VSRVNcIlxyXG4gICAgICAgIClcclxuICAgICAgKSB7XHJcbiAgICAgICAgdGhpcy5zb25MaXN0LmZvckVhY2goKG9iaikgPT4ge1xyXG4gICAgICAgICAgaWYgKG9iai5sYW5nQ29kZSA9PT0gXCJGSU5BTkNJQUxfRklHVVJFU1wiKSBvYmouZGlzYWJsZWQgPSBmYWxzZTtcclxuICAgICAgICB9KTtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLnNvbklkcyA9IHRoaXMuc29uSWRzLmZpbHRlcigoaXRlbSkgPT4gaXRlbSAhPSBkYXRhLmlkKTtcclxuICAgIH1cclxuICAgIHRoaXMuZ2V0U2VsZWN0ZWRBbGxTdGF0dXMoKTtcclxuICAgIHRoaXMub3JnaW5HcmFuZERhdGEgPSBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KHRoaXMuZ3JhbmRzb25MaXN0KSk7XHJcbiAgICBpZiAoIXRoaXMucmVmW1wiZGVzdHJveWVkXCJdKSB7XHJcbiAgICAgIHRoaXMucmVmLm1hcmtGb3JDaGVjaygpO1xyXG4gICAgICB0aGlzLnJlZi5kZXRlY3RDaGFuZ2VzO1xyXG4gICAgfVxyXG4gIH1cclxuICBzZWxlY3RBbGwodmFsKSB7XHJcbiAgICBpZiAoIXZhbCkge1xyXG4gICAgICB0aGlzLm9yZ2luR3JhbmREYXRhID0gW107XHJcbiAgICB9XHJcbiAgICB0aGlzLmdyYW5kc29uTGlzdCA9IFtdO1xyXG4gICAgdGhpcy5zb25JZHMgPSBbXTtcclxuICAgIHRoaXMuc29uTGlzdC5mb3JFYWNoKChpdGVtKSA9PiB7XHJcbiAgICAgIGlmIChpdGVtLmxhbmdDb2RlICE9PSBcIkZJTkFOQ0lBTF9GSUdVUkVTXCIpIGl0ZW0uY2hlY2tlZCA9IHZhbDtcclxuICAgICAgaWYgKHZhbCkge1xyXG4gICAgICAgIGlmIChpdGVtLmxhbmdDb2RlID09PSBcIkZJTkFOQ0lBTF9GSUdVUkVTXCIpIHtcclxuICAgICAgICAgIGl0ZW0uZGlzYWJsZWQgPSB0cnVlO1xyXG4gICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLnNvbklkcy5wdXNoKGl0ZW0uaWQpO1xyXG4gICAgICAgIGl0ZW0udGFibGVzLmZvckVhY2goKHNvbkl0ZW0pID0+IHtcclxuICAgICAgICAgIGlmICghdGhpcy5ncmFuZHNvbkxpc3Quc29tZSgoZWwpID0+IGVsLmlkID09PSBzb25JdGVtLmlkKSkge1xyXG4gICAgICAgICAgICB0aGlzLmdyYW5kc29uTGlzdC5wdXNoKHtcclxuICAgICAgICAgICAgICAuLi5zb25JdGVtLFxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBpZiAoaXRlbS5sYW5nQ29kZSA9PT0gXCJGSU5BTkNJQUxfRklHVVJFU1wiKSBpdGVtLmRpc2FibGVkID0gZmFsc2U7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gICAgdGhpcy5vcmdpbkdyYW5kRGF0YSA9IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkodGhpcy5ncmFuZHNvbkxpc3QpKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBkb0ZpbHRlciA9IHRocm90dGxlKCh2YWwpID0+IHRoaXMuZG9TZWFyY2godmFsKSwgMjAwKTtcclxuICBwdWJsaWMgZG9TZWFyY2godmFsKSB7XHJcbiAgICBsZXQgdGVtcExpc3QgPSBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KHRoaXMub3JnaW5HcmFuZERhdGEpKTtcclxuICAgIGlmICh2YWwpIHtcclxuICAgICAgdGhpcy5ncmFuZHNvbkxpc3QgPSB0ZW1wTGlzdC5maWx0ZXIoKGl0ZW0pID0+XHJcbiAgICAgICAgaXRlbS5sYW5nVmFsdWUudG9Mb3dlckNhc2UoKS5pbmNsdWRlcyh2YWwudG9Mb3dlckNhc2UoKSlcclxuICAgICAgKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuZ3JhbmRzb25MaXN0ID0gdGVtcExpc3Q7XHJcbiAgICB9XHJcbiAgfVxyXG4gIC8vIOS/neWtmOW8ueeql+etm+mAieaVsOaNrlxyXG4gIHNhdmVEYXRhKCkge1xyXG4gICAgdGhpcy5wYmYuaW50cm9TdGVwLm5leHQoXCJjb21wbGV0ZVwiKTtcclxuICAgIHRoaXMucGJmLnBhZ2VMb2FkaW5nID0gdHJ1ZTtcclxuICAgIGxldCBjb25maWc7XHJcbiAgICBsZXQgZGF0YW1hcnRWaWV3Q29kZSA9IHRoaXMuc29uTGlzdC5maWx0ZXIoKGVsKSA9PlxyXG4gICAgICB0aGlzLnNvbklkcy5pbmNsdWRlcyhlbC5pZClcclxuICAgICk7XHJcbiAgICBjb25maWcgPSB7XHJcbiAgICAgIGRhdGFtYXJ0SWQ6IHRoaXMuZmF0aGVySWQsXHJcbiAgICAgIGRhdGFtYXJ0Vmlld0lkOiB0aGlzLnNvbklkcy5qb2luKFwiLFwiKSxcclxuICAgICAgdmlld3M6IGRhdGFtYXJ0Vmlld0NvZGUubWFwKChlKSA9PiB7XHJcbiAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgIGRhdGFtYXJ0Vmlld0lkOiBlLmlkLFxyXG4gICAgICAgICAgZGF0YW1hcnRWaWV3Q29kZTogZS5sYW5nQ29kZSxcclxuICAgICAgICB9O1xyXG4gICAgICB9KSxcclxuICAgIH07XHJcbiAgICBjb25zdCBlbnRpdHlMaXN0ID1cclxuICAgICAgdGhpcy5kYXRhLmRhc2hib2FyZC5lbnRpdHlUeXBlID09PSB0aGlzLmVudGl0eVR5cGVcclxuICAgICAgICA/IHRoaXMuRGFzaGJvYXJkUG9ybGV0c1NlcnZpY2UuZW50aXR5TGlzdFxyXG4gICAgICAgIDogW107XHJcblxyXG4gICAgY29uc3QgZGF0YU9iaiA9IHtcclxuICAgICAgZW50aXR5TGlzdCxcclxuICAgICAgYWNjb3VudElkOiB0aGlzLnVzZXJJbmZvLmFjY291bnRJZCxcclxuICAgICAgdXNlcklkOiB0aGlzLnVzZXJJbmZvLmlkLFxyXG4gICAgICBkYXNoYm9hcmRJZDogdGhpcy5kYXRhLmRhc2hib2FyZElkLFxyXG4gICAgICBkYXRhTWFydFRhYmxlczogdGhpcy5ncmFuZHNvbkxpc3QsXHJcbiAgICAgIGVudGl0eVR5cGU6IHRoaXMuZW50aXR5VHlwZSB8fCB0aGlzLmRhdGEuZGFzaGJvYXJkLmVudGl0eVR5cGUsXHJcbiAgICAgIGNvbmZpZzogSlNPTi5zdHJpbmdpZnkoY29uZmlnKSxcclxuICAgIH07XHJcblxyXG4gICAgdGhpcy5odHRwLnBvc3QodGhpcy5hcGkudXJsTGlzdC5BZGREYXRhTWFydFRhYmxlcywgZGF0YU9iaiwgKHJlcykgPT4ge1xyXG4gICAgICBpZiAocmVzLnN0YXR1cyA9PT0gXCJTVUNDRVNTXCIpIHtcclxuICAgICAgICBjb25zdCBfc2F2ZU1lc3NhZ2UgPVxyXG4gICAgICAgICAgdGhpcy50cmFuc2xhdGlvbi5EQVNIQk9BUkRfUFJPUEVSVElFU19TQVZFRCB8fFxyXG4gICAgICAgICAgXCIuREFTSEJPQVJEX1BST1BFUlRJRVNfU0FWRURcIjtcclxuICAgICAgICB0aGlzLnNob3dUb2FzdChfc2F2ZU1lc3NhZ2UsIFwiU3VjY2Vzc1wiKTtcclxuICAgICAgICB0aGlzLmNvbmZpZy5kYXRhbWFydFZpZXdJZCA9IHRoaXMuc29uSWRzLmpvaW4oXCIsXCIpO1xyXG4gICAgICAgIHRoaXMuY29uZmlnLnZpZXdzID0gW107XHJcbiAgICAgICAgdGhpcy5zb25MaXN0LmZvckVhY2goKGl0ZW0pID0+IHtcclxuICAgICAgICAgIHRoaXMuc29uSWRzLmZvckVhY2goKHNvbklkKSA9PiB7XHJcbiAgICAgICAgICAgIGlmIChpdGVtLmlkID09PSBzb25JZCkge1xyXG4gICAgICAgICAgICAgIHRoaXMuY29uZmlnLnZpZXdzLnB1c2goe1xyXG4gICAgICAgICAgICAgICAgZGF0YW1hcnRWaWV3Q29kZTogaXRlbS5sYW5nQ29kZSxcclxuICAgICAgICAgICAgICAgIGRhdGFtYXJ0Vmlld0lkOiBpdGVtLmlkLFxyXG4gICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgdGhpcy5kYXRhLmRhc2hib2FyZC5jb25maWcgPSBKU09OLnN0cmluZ2lmeSh0aGlzLmNvbmZpZyk7XHJcbiAgICAgICAgaWYgKHRoaXMuZGF0YS5lZGl0KSB7XHJcbiAgICAgICAgICB0aGlzLkRhc2hib2FyZFBvcmxldHNTZXJ2aWNlLnBvcnRsZXRGaWVsZHNfVGVtcCA9IHt9O1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoXHJcbiAgICAgICAgICBlbnRpdHlMaXN0ICYmXHJcbiAgICAgICAgICBlbnRpdHlMaXN0Lmxlbmd0aCAmJlxyXG4gICAgICAgICAgdGhpcy5kYXRhLmRhc2hib2FyZC5lbnRpdHlUeXBlID09PSB0aGlzLmVudGl0eVR5cGVcclxuICAgICAgICApIHtcclxuICAgICAgICAgIHRoaXMucGJmLnRyaWdnZXJEYXNoYm9hcmRSZWZyZXNoLm5leHQoe1xyXG4gICAgICAgICAgICBlbnRpdHlMaXN0LFxyXG4gICAgICAgICAgICBpZDogdGhpcy5kYXRhLmRhc2hib2FyZC5pZCxcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgdGhpcy5kaWFsb2dSZWYuY2xvc2UoKTtcclxuICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRoaXMuRGFzaGJvYXJkUG9ybGV0c1NlcnZpY2UuR2V0RGFzaGJvYXJkVjEoXHJcbiAgICAgICAgICB0aGlzLmRhdGEuZGFzaGJvYXJkSWQsXHJcbiAgICAgICAgICB0cnVlLFxyXG4gICAgICAgICAgKHJlcywgcG9ydGxldHMgPSBbXSkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLmRhc2hib2FyZFNlcnZpY2UuY2hhbmdlbGF5b3V0Lm5leHQoe1xyXG4gICAgICAgICAgICAgIHN0YXR1czogXCJ0cnVlXCIsXHJcbiAgICAgICAgICAgICAgaWQ6IHRoaXMuZGF0YS5kYXNoYm9hcmQuaWQsXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB0aGlzLnBiZi5wYWdlTG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICAgICAgICB0aGlzLmRpYWxvZ1JlZi5jbG9zZSh7XHJcbiAgICAgICAgICAgICAgcHVzaF9idG46IGZhbHNlLFxyXG4gICAgICAgICAgICAgIHBvcnRsZXQ6IHt9LFxyXG4gICAgICAgICAgICAgIHBvcnRsZXRzLFxyXG4gICAgICAgICAgICAgIGRhc2hib2FyZDogcmVzLFxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgdGhpcy5yZWYubWFya0ZvckNoZWNrKCk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLnBiZi5wYWdlTG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMucGJmLnBhZ2VMb2FkaW5nXy5uZXh0KHRydWUpO1xyXG4gICAgICAgIHRoaXMucmVmLm1hcmtGb3JDaGVjaygpO1xyXG4gICAgICAgIGNvbnN0IF9zYXZlTWVzc2FnZSA9IHJlcy5tZXNzYWdlc1swXS5tZXNzYWdlIHx8IFwiZXJyb3JcIjtcclxuICAgICAgICB0aGlzLnNob3dUb2FzdChfc2F2ZU1lc3NhZ2UsIFwiRXJyb3JcIik7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuICAvLyB0b2FzdCBtc2dcclxuICBwdWJsaWMgc2hvd1RvYXN0KG1zZywgc3RhdHVzOiBcIlN1Y2Nlc3NcIiB8IFwiRXJyb3JcIikge1xyXG4gICAgdGhpcy5kaWFsb2dTZXJ2aWNlLnNob3dOb3RpZmljYXRpb24obXNnLCB7XHJcbiAgICAgIHN0YXR1cyxcclxuICAgIH0pO1xyXG4gIH1cclxuICAvLyDlhbPpl63lvLnnqpdcclxuICBwdWJsaWMgY2xvc2VQb3B1cCgpIHtcclxuICAgIHRoaXMuZGlhbG9nUmVmLmNsb3NlKCk7XHJcbiAgfVxyXG59XHJcbiJdfQ==
700
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YS1tYXJ0LW5ldy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9yYWlzZS1jb21tb24tbGliLyIsInNvdXJjZXMiOlsibGliL2Rhc2hib2FyZC9kYXNoYm9hcmQtcHJvcGVydGllcy9kYXRhLW1hcnQtbmV3L2RhdGEtbWFydC1uZXcuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsT0FBTyxFQUNMLFNBQVMsRUFFVCxNQUFNLEVBQ04saUJBQWlCLEVBRWpCLFFBQVEsR0FDVCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxlQUFlLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUM3RSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQ3BDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQzNELE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ3pFLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxRQUFRLENBQUM7QUFDbEMsT0FBTyxFQUFFLGlCQUFpQixFQUFFLFNBQVMsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQy9FLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQU9oRSxNQUFNLE9BQU8sb0JBQW9COzs7Ozs7Ozs7Ozs7O0lBa0IvQixZQUNrQyxJQUFTLEVBQ2xDLFNBQTZDLEVBQzVDLGFBQTRCLEVBQzdCLE1BQWlCLEVBQ2hCLEdBQVksRUFDYixnQkFBa0MsRUFDbEMsdUJBQWdELEVBQy9DLEdBQXNCLEVBQ1EsR0FBUSxFQUNDLElBQVM7UUFUeEIsU0FBSSxHQUFKLElBQUksQ0FBSztRQUNsQyxjQUFTLEdBQVQsU0FBUyxDQUFvQztRQUM1QyxrQkFBYSxHQUFiLGFBQWEsQ0FBZTtRQUM3QixXQUFNLEdBQU4sTUFBTSxDQUFXO1FBQ2hCLFFBQUcsR0FBSCxHQUFHLENBQVM7UUFDYixxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWtCO1FBQ2xDLDRCQUF1QixHQUF2Qix1QkFBdUIsQ0FBeUI7UUFDL0MsUUFBRyxHQUFILEdBQUcsQ0FBbUI7UUFDUSxRQUFHLEdBQUgsR0FBRyxDQUFLO1FBQ0MsU0FBSSxHQUFKLElBQUksQ0FBSztRQXJCbkQsZUFBVSxHQUFHLEVBQUUsQ0FBQztRQUNoQixZQUFPLEdBQUcsRUFBRSxDQUFDO1FBQ2IsaUJBQVksR0FBRyxFQUFFLENBQUM7UUFDbEIsYUFBUSxHQUFHLEVBQUUsQ0FBQztRQUNkLFdBQU0sR0FBRyxFQUFFLENBQUM7UUFDWixnQkFBVyxHQUFHLEtBQUssQ0FBQztRQUNwQixtQkFBYyxHQUFHLEVBQUUsQ0FBQztRQUNwQixhQUFRLEdBQUcsS0FBSyxDQUFDO1FBQ2pCLG9CQUFlLEdBQUcsRUFBRSxDQUFDO1FBQ3JCLHdCQUFtQixHQUFHLEtBQUssQ0FBQztRQWlUNUIsYUFBUSxHQUFHLFFBQVE7Ozs7UUFBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsR0FBRSxHQUFHLENBQUMsQ0FBQztJQXBTMUQsQ0FBQzs7OztJQUNKLFFBQVE7UUFDTixJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDZixJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7SUFDcEIsQ0FBQzs7OztJQUVELGVBQWU7UUFDYixJQUFJLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDbEMsQ0FBQzs7OztJQUVNLE9BQU87UUFDWixJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDO1FBQ25FLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUM7UUFDN0QsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLGlCQUFpQixFQUFFLENBQUM7UUFDekMsSUFBSSxDQUFDLE1BQU07WUFDVCxJQUFJLENBQUMsSUFBSSxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUztnQkFDOUIsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDO2dCQUN4QyxDQUFDLENBQUMsRUFBRSxDQUFDO0lBQ1gsQ0FBQzs7OztJQUNELFVBQVU7O2NBQ0YsT0FBTyxHQUFHO1lBQ2QsU0FBUyxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsU0FBUztZQUNsQyxRQUFRLEVBQUUsSUFBSSxDQUFDLElBQUk7WUFDbkIsZ0JBQWdCLEVBQUUsQ0FBQztTQUNwQjtRQUNELElBQUksQ0FBQyxHQUFHLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQztRQUM1QixJQUFJLENBQUMsR0FBRyxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDakMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsVUFBVSxFQUFFLE9BQU87Ozs7UUFBRSxDQUFDLEdBQUcsRUFBRSxFQUFFO1lBQzNELElBQUksQ0FBQyxHQUFHLENBQUMsV0FBVyxHQUFHLEtBQUssQ0FBQztZQUM3QixJQUFJLENBQUMsR0FBRyxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDakMsSUFBSSxHQUFHLEVBQUU7Z0JBQ1AsSUFBSSxDQUFDLHVCQUF1QixDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsR0FBRyxHQUFHLENBQUM7Z0JBQ3ZFLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxhQUFhLEdBQUcsR0FBRyxDQUFDO2dCQUNqRCxJQUFJLENBQUMsVUFBVSxHQUFHLEdBQUcsQ0FBQztnQkFFdEIsSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLFVBQVUsRUFBRTtvQkFDMUIsd0JBQXdCO29CQUN4QixJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDO29CQUN2QyxJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsY0FBYzt3QkFDdEMsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUM7d0JBQ3ZDLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUs7NEJBQ25CLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxHQUFHOzs7OzRCQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsY0FBYyxFQUFDOzRCQUN0RCxDQUFDLENBQUMsRUFBRSxDQUFDOzt3QkFDSCxVQUFVLEdBQUcsR0FBRyxDQUFDLElBQUk7Ozs7b0JBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLElBQUksSUFBSSxDQUFDLFFBQVEsRUFBQztvQkFDekQsSUFBSSxVQUFVLEVBQUU7d0JBQ2QsSUFBSSxDQUFDLFdBQVcsQ0FBQyxVQUFVLEVBQUUsSUFBSSxDQUFDLENBQUM7d0JBQ25DLElBQUksQ0FBQyxJQUFJLENBQUMsZUFBZSxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsVUFBVSxFQUFFOzRCQUNuRCxJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUM7eUJBQ3hDOzs0QkFFRyxRQUFRLEdBQUcsVUFBVSxDQUFDLEtBQUssQ0FBQyxNQUFNOzs7O3dCQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FDNUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUM1Qjt3QkFDRCxJQUFJLENBQUMsZ0JBQWdCLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxDQUFDO3dCQUN0QyxJQUFJLENBQUMsb0JBQW9CLEVBQUUsQ0FBQztxQkFDN0I7aUJBQ0Y7YUFDRjtRQUNILENBQUMsRUFBQyxDQUFDO0lBQ0wsQ0FBQzs7OztJQUNELG9CQUFvQjs7WUFDZCxHQUFHLEdBQUcsQ0FBQztRQUNYLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTzs7OztRQUFDLENBQUMsR0FBRyxFQUFFLEVBQUU7WUFDM0IsSUFBSSxHQUFHLENBQUMsT0FBTyxJQUFJLEdBQUcsQ0FBQyxRQUFRLEtBQUssbUJBQW1CLEVBQUU7Z0JBQ3ZELEdBQUcsRUFBRSxDQUFDO2FBQ1A7UUFDSCxDQUFDLEVBQUMsQ0FBQztRQUNILElBQUksR0FBRyxLQUFLLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxHQUFHLENBQUM7WUFBRSxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQzs7WUFDeEQsSUFBSSxDQUFDLFdBQVcsR0FBRyxLQUFLLENBQUM7SUFDaEMsQ0FBQzs7OztJQUVELFFBQVE7UUFDTixJQUFJLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDbEMsQ0FBQzs7Ozs7O0lBRUQsV0FBVyxDQUFDLElBQUksRUFBRSxNQUFNLEdBQUcsS0FBSztRQUM5QixJQUFJLElBQUksQ0FBQyxlQUFlLElBQUksSUFBSSxDQUFDLGVBQWUsS0FBSyxJQUFJLENBQUMsVUFBVSxFQUFFO1lBQ3BFLE9BQU87U0FDUjtRQUNELElBQ0UsQ0FBQyxNQUFNO1lBQ1AsSUFBSSxDQUFDLGVBQWU7WUFDcEIsSUFBSSxDQUFDLGVBQWUsS0FBSyxJQUFJLENBQUMsVUFBVSxFQUN4Qzs7a0JBQ00sTUFBTSxHQUNWLElBQUksQ0FBQyxXQUFXLENBQUMsZ0NBQWdDO2dCQUNqRCx5R0FBeUc7O2tCQUNyRyxHQUFHLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxFQUFFLElBQUksS0FBSzs7a0JBQ2xDLElBQUksR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsSUFBSSxNQUFNOzs7Ozs7Ozs7Ozs7a0JBV3JDLFNBQVMsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLGdCQUFnQixDQUFDO2dCQUNwRCxLQUFLLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxPQUFPLElBQUksVUFBVTtnQkFDN0MsV0FBVyxFQUFFLE1BQU07Z0JBQ25CLFlBQVksRUFBRSxJQUFJO2dCQUNsQixjQUFjLEVBQUUsR0FBRzthQUNwQixDQUFDO1lBQ0YsU0FBUyxDQUFDLFdBQVcsRUFBRSxDQUFDLFNBQVM7Ozs7WUFBQyxDQUFDLEdBQUcsRUFBRSxFQUFFO2dCQUN4QyxJQUFJLENBQUMsR0FBRyxFQUFFO29CQUNSLE9BQU87aUJBQ1I7Z0JBQ0QsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDLENBQUM7WUFDakMsQ0FBQyxFQUFDLENBQUM7WUFDSCxPQUFPO1NBQ1I7UUFDRCxJQUFJLENBQUMsSUFBSSxFQUFFO1lBQ1QsT0FBTztTQUNSO1FBQ0QsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFDakMsQ0FBQzs7Ozs7OztJQUVPLFdBQVcsQ0FBQyxJQUFJLEVBQUUsTUFBTTtRQUM5QixJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxFQUFFLENBQUM7UUFDeEIsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDOztZQUM5QixnQkFBZ0IsR0FBRyxLQUFLOztZQUN4QixjQUFjLEdBQUcsS0FBSztRQUMxQixJQUNFLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSTs7OztRQUNiLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FDUCxJQUFJLENBQUMsUUFBUSxLQUFLLG1CQUFtQixJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsRUFDekUsRUFDRDtZQUNBLGdCQUFnQixHQUFHLElBQUksQ0FBQztZQUN4QixJQUFJLENBQUMsbUJBQW1CLEdBQUcsSUFBSSxDQUFDO1NBQ2pDO1FBQ0QsSUFDRSxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUk7Ozs7UUFDYixDQUFDLElBQUksRUFBRSxFQUFFLENBQ1AsSUFBSSxDQUFDLFFBQVEsS0FBSyxtQkFBbUIsSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLEVBQ3pFO1lBRUQsY0FBYyxHQUFHLElBQUksQ0FBQztRQUV4QixJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRzs7OztRQUFDLENBQUMsSUFBSSxFQUFFLEVBQUU7O2dCQUNqQyxVQUFVLEdBQ1osQ0FBQyxnQkFBZ0IsSUFBSSxJQUFJLENBQUMsUUFBUSxLQUFLLG1CQUFtQixDQUFDO2dCQUMzRCxDQUFDLElBQUksQ0FBQyxRQUFRLEtBQUssbUJBQW1CLElBQUksY0FBYyxDQUFDO1lBQzNELHlCQUNLLElBQUksSUFDUCxPQUFPLEVBQ0wsSUFBSSxDQUFDLGVBQWUsSUFBSSxJQUFJLENBQUMsZUFBZSxLQUFLLElBQUksQ0FBQyxVQUFVO29CQUM5RCxDQUFDLENBQUMsS0FBSztvQkFDUCxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxFQUNuQyxRQUFRLEVBQ04sSUFBSSxDQUFDLGVBQWUsSUFBSSxJQUFJLENBQUMsZUFBZSxLQUFLLElBQUksQ0FBQyxVQUFVO29CQUM5RCxDQUFDLENBQUMsS0FBSztvQkFDUCxDQUFDLENBQUMsVUFBVSxJQUNoQjtRQUNKLENBQUMsRUFBQyxDQUFDO1FBRUgsSUFBSSxDQUFDLGVBQWUsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDO1FBRXZDLElBQUksQ0FBQyxNQUFNLEVBQUU7WUFDWCxJQUFJLENBQUMsTUFBTSxHQUFHLEVBQUUsQ0FBQztZQUNqQixJQUFJLENBQUMsWUFBWSxHQUFHLEVBQUUsQ0FBQztZQUN2QixJQUFJLENBQUMsY0FBYyxHQUFHLEVBQUUsQ0FBQztZQUN6QixJQUFJLENBQUMsV0FBVyxHQUFHLEtBQUssQ0FBQztZQUN6QixJQUFJLENBQUMsbUJBQW1CLEdBQUcsS0FBSyxDQUFDO1lBQ2pDLElBQUksSUFBSSxDQUFDLGVBQWUsSUFBSSxJQUFJLENBQUMsZUFBZSxLQUFLLElBQUksQ0FBQyxVQUFVLEVBQUU7Z0JBQ3BFLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHOzs7O2dCQUFDLENBQUMsSUFBSSxFQUFFLEVBQUU7b0JBQ3JDLHlCQUNLLElBQUksSUFDUCxPQUFPLEVBQUUsS0FBSyxFQUNkLFFBQVEsRUFBRSxLQUFLLElBQ2Y7Z0JBQ0osQ0FBQyxFQUFDLENBQUM7YUFDSjtTQUNGO0lBQ0gsQ0FBQzs7Ozs7O0lBRUQsZ0JBQWdCLENBQUMsSUFBSSxFQUFFLEdBQWE7UUFDbEMsSUFBSSxDQUFDLElBQUk7WUFBRSxPQUFPLEtBQUssQ0FBQztRQUN4QixJQUFJLEdBQUcsRUFBRTtZQUNQLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsRUFBRTtnQkFDdkIsSUFBSSxDQUFDLE9BQU87Ozs7Z0JBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRTtvQkFDcEIsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsRUFBRTt3QkFDbEMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO3FCQUMzQjtvQkFDRCxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxFQUFFO3dCQUM5QixJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU87Ozs7d0JBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRTs0QkFDNUIsSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSTs7Ozs0QkFBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsS0FBSyxLQUFLLENBQUMsRUFBRSxFQUFDLEVBQUU7Z0NBQ3ZELElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxtQkFDakIsS0FBSyxFQUNSLENBQUM7NkJBQ0o7d0JBQ0gsQ0FBQyxFQUFDLENBQUM7cUJBQ0o7Z0JBQ0gsQ0FBQyxFQUFDLENBQUM7YUFDSjtpQkFBTTtnQkFDTCxpRUFBaUU7Z0JBQ2pFLElBQUksSUFBSSxDQUFDLFFBQVEsS0FBSyxtQkFBbUIsRUFBRTtvQkFDekMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPOzs7O29CQUFDLENBQUMsSUFBSSxFQUFFLEVBQUU7d0JBQzVCLElBQUksSUFBSSxDQUFDLFFBQVEsS0FBSyxtQkFBbUI7NEJBQUUsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUM7b0JBQ2xFLENBQUMsRUFBQyxDQUFDO2lCQUNKO3FCQUFNO29CQUNMLElBQ0UsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUk7Ozs7b0JBQ2hCLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsT0FBTyxJQUFJLElBQUksQ0FBQyxRQUFRLEtBQUssbUJBQW1CLEVBQ2hFLEVBQ0Q7d0JBQ0EsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPOzs7O3dCQUFDLENBQUMsSUFBSSxFQUFFLEVBQUU7NEJBQzVCLElBQUksSUFBSSxDQUFDLFFBQVEsS0FBSyxtQkFBbUI7Z0NBQUUsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUM7d0JBQ2xFLENBQUMsRUFBQyxDQUFDO3dCQUNILElBQUksQ0FBQyxtQkFBbUIsR0FBRyxJQUFJLENBQUM7cUJBQ2pDO2lCQUNGO2dCQUNELElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTzs7OztnQkFBQyxDQUFDLElBQUksRUFBRSxFQUFFO29CQUMzQixJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJOzs7O29CQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxLQUFLLElBQUksQ0FBQyxFQUFFLEVBQUMsRUFBRTt3QkFDdEQsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLG1CQUNqQixJQUFJLEVBQ1AsQ0FBQztxQkFDSjtnQkFDSCxDQUFDLEVBQUMsQ0FBQztnQkFDSCxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxFQUFFO29CQUNsQyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7aUJBQzNCO2FBQ0Y7U0FDRjthQUFNO1lBQ0wsSUFBSSxDQUFDLFlBQVksR0FBRyxFQUFFLENBQUM7WUFDdkIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPOzs7O1lBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRTtnQkFDNUIsSUFBSSxJQUFJLENBQUMsUUFBUSxLQUFLLG1CQUFtQixFQUFFO29CQUN6QyxJQUFJLENBQUMsUUFBUSxHQUFHLEtBQUssQ0FBQztvQkFDdEIsSUFBSSxDQUFDLG1CQUFtQixHQUFHLEtBQUssQ0FBQztpQkFDbEM7Z0JBQ0QsSUFBSSxJQUFJLENBQUMsRUFBRSxJQUFJLElBQUksQ0FBQyxFQUFFLEVBQUU7b0JBQ3RCLElBQUksQ0FBQyxPQUFPLEdBQUcsR0FBRyxDQUFDO2lCQUNwQjtnQkFDRCxJQUFJLElBQUksQ0FBQyxPQUFPLEVBQUU7b0JBQ2hCLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTzs7OztvQkFBQyxDQUFDLE9BQU8sRUFBRSxFQUFFO3dCQUM5QixJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJOzs7O3dCQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxLQUFLLE9BQU8sQ0FBQyxFQUFFLEVBQUMsRUFBRTs0QkFDekQsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLG1CQUNqQixPQUFPLEVBQ1YsQ0FBQzt5QkFDSjtvQkFDSCxDQUFDLEVBQUMsQ0FBQztpQkFDSjtZQUNILENBQUMsRUFBQyxDQUFDO1lBQ0gsSUFDRSxJQUFJLENBQUMsUUFBUSxLQUFLLG1CQUFtQjtnQkFDckMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUk7Ozs7Z0JBQ2hCLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsT0FBTyxJQUFJLElBQUksQ0FBQyxRQUFRLEtBQUssbUJBQW1CLEVBQ2hFLEVBQ0Q7Z0JBQ0EsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPOzs7O2dCQUFDLENBQUMsR0FBRyxFQUFFLEVBQUU7b0JBQzNCLElBQUksR0FBRyxDQUFDLFFBQVEsS0FBSyxtQkFBbUI7d0JBQUUsR0FBRyxDQUFDLFFBQVEsR0FBRyxLQUFLLENBQUM7Z0JBQ2pFLENBQUMsRUFBQyxDQUFDO2FBQ0o7WUFDRCxJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTTs7OztZQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxJQUFJLElBQUksSUFBSSxDQUFDLEVBQUUsRUFBQyxDQUFDO1NBQzdEO1FBQ0QsSUFBSSxDQUFDLG9CQUFvQixFQUFFLENBQUM7UUFDNUIsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUM7UUFDcEUsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsV0FBVyxDQUFDLEVBQUU7WUFDMUIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxZQUFZLEVBQUUsQ0FBQztZQUN4QixJQUFJLENBQUMsR0FBRyxDQUFDLGFBQWEsQ0FBQztTQUN4QjtJQUNILENBQUM7Ozs7O0lBQ0QsU0FBUyxDQUFDLEdBQUc7UUFDWCxJQUFJLENBQUMsR0FBRyxFQUFFO1lBQ1IsSUFBSSxDQUFDLGNBQWMsR0FBRyxFQUFFLENBQUM7U0FDMUI7UUFDRCxJQUFJLENBQUMsWUFBWSxHQUFHLEVBQUUsQ0FBQztRQUN2QixJQUFJLENBQUMsTUFBTSxHQUFHLEVBQUUsQ0FBQztRQUNqQixJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU87Ozs7UUFBQyxDQUFDLElBQUksRUFBRSxFQUFFO1lBQzVCLElBQUksSUFBSSxDQUFDLFFBQVEsS0FBSyxtQkFBbUI7Z0JBQUUsSUFBSSxDQUFDLE9BQU8sR0FBRyxHQUFHLENBQUM7WUFDOUQsSUFBSSxHQUFHLEVBQUU7Z0JBQ1AsSUFBSSxJQUFJLENBQUMsUUFBUSxLQUFLLG1CQUFtQixFQUFFO29CQUN6QyxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQztvQkFDckIsT0FBTztpQkFDUjtnQkFDRCxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7Z0JBQzFCLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTzs7OztnQkFBQyxDQUFDLE9BQU8sRUFBRSxFQUFFO29CQUM5QixJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJOzs7O29CQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxLQUFLLE9BQU8sQ0FBQyxFQUFFLEVBQUMsRUFBRTt3QkFDekQsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLG1CQUNqQixPQUFPLEVBQ1YsQ0FBQztxQkFDSjtnQkFDSCxDQUFDLEVBQUMsQ0FBQzthQUNKO2lCQUFNO2dCQUNMLElBQUksSUFBSSxDQUFDLFFBQVEsS0FBSyxtQkFBbUI7b0JBQUUsSUFBSSxDQUFDLFFBQVEsR0FBRyxLQUFLLENBQUM7YUFDbEU7UUFDSCxDQUFDLEVBQUMsQ0FBQztRQUNILElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDO0lBQ3RFLENBQUM7Ozs7O0lBR00sUUFBUSxDQUFDLEdBQUc7O1lBQ2IsUUFBUSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUM7UUFDOUQsSUFBSSxHQUFHLEVBQUU7WUFDUCxJQUFJLENBQUMsWUFBWSxHQUFHLFFBQVEsQ0FBQyxNQUFNOzs7O1lBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUMzQyxJQUFJLENBQUMsU0FBUyxDQUFDLFdBQVcsRUFBRSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsV0FBVyxFQUFFLENBQUMsRUFDekQsQ0FBQztTQUNIO2FBQU07WUFDTCxJQUFJLENBQUMsWUFBWSxHQUFHLFFBQVEsQ0FBQztTQUM5QjtJQUNILENBQUM7Ozs7O0lBRUQsUUFBUTtRQUNOLElBQUksQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUNwQyxJQUFJLENBQUMsR0FBRyxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUM7O1lBQ3hCLE1BQU07O1lBQ04sZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNOzs7O1FBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUNoRCxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQzVCO1FBQ0QsTUFBTSxHQUFHO1lBQ1AsVUFBVSxFQUFFLElBQUksQ0FBQyxRQUFRO1lBQ3pCLGNBQWMsRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUM7WUFDckMsS0FBSyxFQUFFLGdCQUFnQixDQUFDLEdBQUc7Ozs7WUFBQyxDQUFDLENBQUMsRUFBRSxFQUFFO2dCQUNoQyxPQUFPO29CQUNMLGNBQWMsRUFBRSxDQUFDLENBQUMsRUFBRTtvQkFDcEIsZ0JBQWdCLEVBQUUsQ0FBQyxDQUFDLFFBQVE7aUJBQzdCLENBQUM7WUFDSixDQUFDLEVBQUM7U0FDSCxDQUFDOztjQUNJLFVBQVUsR0FDZCxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxVQUFVLEtBQUssSUFBSSxDQUFDLFVBQVU7WUFDaEQsQ0FBQyxDQUFDLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxVQUFVO1lBQ3pDLENBQUMsQ0FBQyxFQUFFOztjQUVGLE9BQU8sR0FBRztZQUNkLFVBQVU7WUFDVixTQUFTLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxTQUFTO1lBQ2xDLE1BQU0sRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLEVBQUU7WUFDeEIsV0FBVyxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVztZQUNsQyxjQUFjLEVBQUUsSUFBSSxDQUFDLFlBQVk7WUFDakMsVUFBVSxFQUFFLElBQUksQ0FBQyxVQUFVLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsVUFBVTtZQUM3RCxNQUFNLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUM7U0FDL0I7UUFFRCxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxpQkFBaUIsRUFBRSxPQUFPOzs7O1FBQUUsQ0FBQyxHQUFHLEVBQUUsRUFBRTtZQUNsRSxJQUFJLEdBQUcsQ0FBQyxNQUFNLEtBQUssU0FBUyxFQUFFOztzQkFDdEIsWUFBWSxHQUNoQixJQUFJLENBQUMsV0FBVyxDQUFDLDBCQUEwQjtvQkFDM0MsNkJBQTZCO2dCQUMvQixJQUFJLENBQUMsU0FBUyxDQUFDLFlBQVksRUFBRSxTQUFTLENBQUMsQ0FBQztnQkFDeEMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7Z0JBQ25ELElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxHQUFHLEVBQUUsQ0FBQztnQkFDdkIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPOzs7O2dCQUFDLENBQUMsSUFBSSxFQUFFLEVBQUU7b0JBQzVCLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTzs7OztvQkFBQyxDQUFDLEtBQUssRUFBRSxFQUFFO3dCQUM1QixJQUFJLElBQUksQ0FBQyxFQUFFLEtBQUssS0FBSyxFQUFFOzRCQUNyQixJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUM7Z0NBQ3JCLGdCQUFnQixFQUFFLElBQUksQ0FBQyxRQUFRO2dDQUMvQixjQUFjLEVBQUUsSUFBSSxDQUFDLEVBQUU7NkJBQ3hCLENBQUMsQ0FBQzt5QkFDSjtvQkFDSCxDQUFDLEVBQUMsQ0FBQztnQkFDTCxDQUFDLEVBQUMsQ0FBQztnQkFFSCxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7Z0JBQ3pELElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUU7b0JBQ2xCLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxrQkFBa0IsR0FBRyxFQUFFLENBQUM7aUJBQ3REO2dCQUNELElBQ0UsVUFBVTtvQkFDVixVQUFVLENBQUMsTUFBTTtvQkFDakIsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsVUFBVSxLQUFLLElBQUksQ0FBQyxVQUFVLEVBQ2xEO29CQUNBLElBQUksQ0FBQyxHQUFHLENBQUMsdUJBQXVCLENBQUMsSUFBSSxDQUFDO3dCQUNwQyxVQUFVO3dCQUNWLEVBQUUsRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxFQUFFO3FCQUMzQixDQUFDLENBQUM7b0JBQ0gsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLEVBQUUsQ0FBQztvQkFDdkIsT0FBTztpQkFDUjtnQkFFRCxJQUFJLENBQUMsdUJBQXVCLENBQUMsY0FBYyxDQUN6QyxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFDckIsSUFBSTs7Ozs7Z0JBQ0osQ0FBQyxHQUFHLEVBQUUsUUFBUSxHQUFHLEVBQUUsRUFBRSxFQUFFO29CQUNyQixJQUFJLENBQUMsZ0JBQWdCLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQzt3QkFDdEMsTUFBTSxFQUFFLE1BQU07d0JBQ2QsRUFBRSxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLEVBQUU7cUJBQzNCLENBQUMsQ0FBQztvQkFDSCxJQUFJLENBQUMsR0FBRyxDQUFDLFdBQVcsR0FBRyxLQUFLLENBQUM7b0JBQzdCLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDO3dCQUNuQixRQUFRLEVBQUUsS0FBSzt3QkFDZixPQUFPLEVBQUUsRUFBRTt3QkFDWCxRQUFRO3dCQUNSLFNBQVMsRUFBRSxHQUFHO3FCQUNmLENBQUMsQ0FBQztvQkFDSCxJQUFJLENBQUMsR0FBRyxDQUFDLFlBQVksRUFBRSxDQUFDO2dCQUMxQixDQUFDLEVBQ0YsQ0FBQzthQUNIO2lCQUFNO2dCQUNMLElBQUksQ0FBQyxHQUFHLENBQUMsV0FBVyxHQUFHLEtBQUssQ0FBQztnQkFDN0IsSUFBSSxDQUFDLEdBQUcsQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO2dCQUNqQyxJQUFJLENBQUMsR0FBRyxDQUFDLFlBQVksRUFBRSxDQUFDOztzQkFDbEIsWUFBWSxHQUFHLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxJQUFJLE9BQU87Z0JBQ3ZELElBQUksQ0FBQyxTQUFTLENBQUMsWUFBWSxFQUFFLE9BQU8sQ0FBQyxDQUFDO2FBQ3ZDO1FBQ0gsQ0FBQyxFQUFDLENBQUM7SUFDTCxDQUFDOzs7Ozs7O0lBRU0sU0FBUyxDQUFDLEdBQUcsRUFBRSxNQUEyQjtRQUMvQyxJQUFJLENBQUMsYUFBYSxDQUFDLGdCQUFnQixDQUFDLEdBQUcsRUFBRTtZQUN2QyxNQUFNO1NBQ1AsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzs7Ozs7SUFFTSxVQUFVO1FBQ2YsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUN6QixDQUFDOzs7WUExYkYsU0FBUyxTQUFDO2dCQUNULFFBQVEsRUFBRSxrQkFBa0I7Z0JBQzVCLDY1SkFBNkM7O2FBRTlDOzs7OzRDQW9CSSxNQUFNLFNBQUMsZUFBZTtZQWhDUCxZQUFZO1lBTXZCLGFBQWE7WUFOYixTQUFTO1lBQ1QsT0FBTztZQUNQLGdCQUFnQjtZQUNoQix1QkFBdUI7WUFQOUIsaUJBQWlCOzRDQTRDZCxRQUFRLFlBQUksTUFBTSxTQUFDLFNBQVM7NENBQzVCLFFBQVEsWUFBSSxNQUFNLFNBQUMsaUJBQWlCOzs7O0lBM0J2QywyQ0FBWTs7SUFDWix3Q0FBUzs7SUFDVCxvQ0FBSzs7SUFDTCwwQ0FBVzs7SUFDWCxzQ0FBTzs7SUFFUCwwQ0FBdUI7O0lBQ3ZCLHVDQUFvQjs7SUFDcEIsNENBQXlCOztJQUN6Qix3Q0FBcUI7O0lBQ3JCLHNDQUFtQjs7SUFDbkIsMkNBQTJCOztJQUMzQiw4Q0FBMkI7O0lBQzNCLHdDQUF3Qjs7SUFDeEIsK0NBQTRCOztJQUM1QixtREFBbUM7O0lBaVRuQyx3Q0FBNkQ7O0lBOVMzRCxvQ0FBeUM7O0lBQ3pDLHlDQUFvRDs7Ozs7SUFDcEQsNkNBQW9DOztJQUNwQyxzQ0FBd0I7Ozs7O0lBQ3hCLG1DQUFvQjs7SUFDcEIsZ0RBQXlDOztJQUN6Qyx1REFBdUQ7Ozs7O0lBQ3ZELG1DQUE4Qjs7SUFDOUIsbUNBQThDOzs7OztJQUM5QyxvQ0FBd0QiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gIENvbXBvbmVudCxcclxuICBPbkluaXQsXHJcbiAgSW5qZWN0LFxyXG4gIENoYW5nZURldGVjdG9yUmVmLFxyXG4gIEFmdGVyVmlld0luaXQsXHJcbiAgT3B0aW9uYWwsXHJcbn0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHsgTWF0RGlhbG9nLCBNYXREaWFsb2dSZWYsIE1BVF9ESUFMT0dfREFUQSB9IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbFwiO1xyXG5pbXBvcnQgeyBBcGlMaXN0IH0gZnJvbSBcIi4uLy4uL2FwaVwiO1xyXG5pbXBvcnQgeyBEYXNoYm9hcmRTZXJ2aWNlIH0gZnJvbSBcIi4uLy4uL2Rhc2hib2FyZC5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7IERhc2hib2FyZFBvcmxldHNTZXJ2aWNlIH0gZnJvbSBcIi4uLy4uL2Rhc2hib2FyZFBvcmxldHMuc2VydmljZVwiO1xyXG5pbXBvcnQgeyB0aHJvdHRsZSB9IGZyb20gXCJsb2Rhc2hcIjtcclxuaW1wb3J0IHsgQVBJX1NFUlZJQ0VfVE9LRU4sIFBCRl9UT0tFTiB9IGZyb20gXCIuLi8uLi8uLi9zZXJ2aWNlL0luamVjdGlvblRva2VuXCI7XHJcbmltcG9ydCB7IERpYWxvZ1NlcnZpY2UgfSBmcm9tIFwiLi4vLi4vLi4vc2VydmljZS9kaWFsb2cuc2VydmljZVwiO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6IFwicnMtZGF0YS1tYXJ0LW5ld1wiLFxyXG4gIHRlbXBsYXRlVXJsOiBcIi4vZGF0YS1tYXJ0LW5ldy5jb21wb25lbnQuaHRtbFwiLFxyXG4gIHN0eWxlVXJsczogW1wiLi9kYXRhLW1hcnQtbmV3LmNvbXBvbmVudC5zY3NzXCJdLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgRGF0YU1hcnROZXdDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIEFmdGVyVmlld0luaXQge1xyXG4gIHRyYW5zbGF0aW9uO1xyXG4gIHVzZXJJbmZvO1xyXG4gIGxhbmc7XHJcbiAgZW50aXR5VHlwZTtcclxuICBjb25maWc7XHJcblxyXG4gIHB1YmxpYyBmYXRoZXJMaXN0ID0gW107XHJcbiAgcHVibGljIHNvbkxpc3QgPSBbXTtcclxuICBwdWJsaWMgZ3JhbmRzb25MaXN0ID0gW107XHJcbiAgcHVibGljIGZhdGhlcklkID0gXCJcIjtcclxuICBwdWJsaWMgc29uSWRzID0gW107XHJcbiAgcHVibGljIHNlbGVjdGVkQWxsID0gZmFsc2U7XHJcbiAgcHVibGljIG9yZ2luR3JhbmREYXRhID0gW107XHJcbiAgcHVibGljIGRpc2FibGVkID0gZmFsc2U7XHJcbiAgcHVibGljIGNhY2hlRW50aXR5VHlwZSA9IFwiXCI7XHJcbiAgcHVibGljIGlzU2VsZWN0QWxsRGlzYWJsZWQgPSBmYWxzZTtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBASW5qZWN0KE1BVF9ESUFMT0dfREFUQSkgcHVibGljIGRhdGE6IGFueSxcclxuICAgIHB1YmxpYyBkaWFsb2dSZWY6IE1hdERpYWxvZ1JlZjxEYXRhTWFydE5ld0NvbXBvbmVudD4sXHJcbiAgICBwcml2YXRlIGRpYWxvZ1NlcnZpY2U6IERpYWxvZ1NlcnZpY2UsXHJcbiAgICBwdWJsaWMgZGlhbG9nOiBNYXREaWFsb2csXHJcbiAgICBwcml2YXRlIGFwaTogQXBpTGlzdCxcclxuICAgIHB1YmxpYyBkYXNoYm9hcmRTZXJ2aWNlOiBEYXNoYm9hcmRTZXJ2aWNlLFxyXG4gICAgcHVibGljIERhc2hib2FyZFBvcmxldHNTZXJ2aWNlOiBEYXNoYm9hcmRQb3JsZXRzU2VydmljZSxcclxuICAgIHByaXZhdGUgcmVmOiBDaGFuZ2VEZXRlY3RvclJlZixcclxuICAgIEBPcHRpb25hbCgpIEBJbmplY3QoUEJGX1RPS0VOKSBwdWJsaWMgcGJmOiBhbnksXHJcbiAgICBAT3B0aW9uYWwoKSBASW5qZWN0KEFQSV9TRVJWSUNFX1RPS0VOKSBwcml2YXRlIGh0dHA6IGFueVxyXG4gICkge31cclxuICBuZ09uSW5pdCgpIHtcclxuICAgIHRoaXMuZ2V0SW5mbygpO1xyXG4gICAgdGhpcy5nZXRTb3VyY2VzKCk7XHJcbiAgfVxyXG5cclxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLnBiZi5pbnRyb1N0ZXAubmV4dChcIm5leHRcIik7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0SW5mbygpIHtcclxuICAgIHRoaXMudHJhbnNsYXRpb24gPSBKU09OLnBhcnNlKGxvY2FsU3RvcmFnZS5nZXRJdGVtKFwidHJhbnNsYXRpb25cIikpO1xyXG4gICAgdGhpcy51c2VySW5mbyA9IEpTT04ucGFyc2UobG9jYWxTdG9yYWdlLmdldEl0ZW0oXCJ1c2VySW5mb1wiKSk7XHJcbiAgICB0aGlzLmxhbmcgPSB0aGlzLnBiZi5nZXRMYW5ndWFnZVBhcmFtcygpO1xyXG4gICAgdGhpcy5jb25maWcgPVxyXG4gICAgICB0aGlzLmRhdGEgJiYgdGhpcy5kYXRhLmRhc2hib2FyZFxyXG4gICAgICAgID8gSlNPTi5wYXJzZSh0aGlzLmRhdGEuZGFzaGJvYXJkLmNvbmZpZylcclxuICAgICAgICA6IHt9O1xyXG4gIH1cclxuICBnZXRTb3VyY2VzKCkge1xyXG4gICAgY29uc3QgZGF0YU9iaiA9IHtcclxuICAgICAgYWNjb3VudElkOiB0aGlzLnVzZXJJbmZvLmFjY291bnRJZCxcclxuICAgICAgbGFuZ3VhZ2U6IHRoaXMubGFuZyxcclxuICAgICAgZGFzaGJvYXJkVmVyc2lvbjogMixcclxuICAgIH07XHJcbiAgICB0aGlzLnBiZi5wYWdlTG9hZGluZyA9IHRydWU7XHJcbiAgICB0aGlzLnBiZi5wYWdlTG9hZGluZ18ubmV4dCh0cnVlKTtcclxuICAgIHRoaXMuaHR0cC5wb3N0KHRoaXMuYXBpLnVybExpc3QuR2V0U291cmNlcywgZGF0YU9iaiwgKHJlcykgPT4ge1xyXG4gICAgICB0aGlzLnBiZi5wYWdlTG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICB0aGlzLnBiZi5wYWdlTG9hZGluZ18ubmV4dCh0cnVlKTtcclxuICAgICAgaWYgKHJlcykge1xyXG4gICAgICAgIHRoaXMuRGFzaGJvYXJkUG9ybGV0c1NlcnZpY2Uuc291cmNlc0RhdGFbdGhpcy5kYXRhLmRhc2hib2FyZC5pZF0gPSByZXM7XHJcbiAgICAgICAgdGhpcy5EYXNoYm9hcmRQb3JsZXRzU2VydmljZS5HZXRTb3VyY2VzUmVzID0gcmVzO1xyXG4gICAgICAgIHRoaXMuZmF0aGVyTGlzdCA9IHJlcztcclxuXHJcbiAgICAgICAgaWYgKHRoaXMuY29uZmlnLmRhdGFtYXJ0SWQpIHtcclxuICAgICAgICAgIC8vIHRoaXMuZGlzYWJsZWQgPSB0cnVlO1xyXG4gICAgICAgICAgdGhpcy5mYXRoZXJJZCA9IHRoaXMuY29uZmlnLmRhdGFtYXJ0SWQ7XHJcbiAgICAgICAgICB0aGlzLnNvbklkcyA9IHRoaXMuY29uZmlnLmRhdGFtYXJ0Vmlld0lkXHJcbiAgICAgICAgICAgID8gdGhpcy5jb25maWcuZGF0YW1hcnRWaWV3SWQuc3BsaXQoXCIsXCIpXHJcbiAgICAgICAgICAgIDogdGhpcy5jb25maWcudmlld3NcclxuICAgICAgICAgICAgPyB0aGlzLmNvbmZpZy52aWV3cy5tYXAoKGl0ZW0pID0+IGl0ZW0uZGF0YW1hcnRWaWV3SWQpXHJcbiAgICAgICAgICAgIDogW107XHJcbiAgICAgICAgICBsZXQgZGF0YXNvdXJjZSA9IHJlcy5maW5kKChlbCkgPT4gZWwuaWQgPT0gdGhpcy5mYXRoZXJJZCk7XHJcbiAgICAgICAgICBpZiAoZGF0YXNvdXJjZSkge1xyXG4gICAgICAgICAgICB0aGlzLmdldGRhdGFNYXJ0KGRhdGFzb3VyY2UsIHRydWUpO1xyXG4gICAgICAgICAgICBpZiAoIXRoaXMuY2FjaGVFbnRpdHlUeXBlICYmIHRoaXMuY29uZmlnLmRhdGFtYXJ0SWQpIHtcclxuICAgICAgICAgICAgICB0aGlzLmNhY2hlRW50aXR5VHlwZSA9IHRoaXMuZW50aXR5VHlwZTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgbGV0IGRhdGF2aWV3ID0gZGF0YXNvdXJjZS52aWV3cy5maWx0ZXIoKGVsKSA9PlxyXG4gICAgICAgICAgICAgIHRoaXMuc29uSWRzLmluY2x1ZGVzKGVsLmlkKVxyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgICAgICB0aGlzLmhhbmRsZUl0ZW1DaGFuZ2UoZGF0YXZpZXcsIHRydWUpO1xyXG4gICAgICAgICAgICB0aGlzLmdldFNlbGVjdGVkQWxsU3RhdHVzKCk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcbiAgZ2V0U2VsZWN0ZWRBbGxTdGF0dXMoKSB7XHJcbiAgICBsZXQgbnVtID0gMDtcclxuICAgIHRoaXMuc29uTGlzdC5mb3JFYWNoKChzb24pID0+IHtcclxuICAgICAgaWYgKHNvbi5jaGVja2VkICYmIHNvbi5sYW5nQ29kZSAhPT0gXCJGSU5BTkNJQUxfRklHVVJFU1wiKSB7XHJcbiAgICAgICAgbnVtKys7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gICAgaWYgKG51bSA9PT0gdGhpcy5zb25MaXN0Lmxlbmd0aCAtIDEpIHRoaXMuc2VsZWN0ZWRBbGwgPSB0cnVlO1xyXG4gICAgZWxzZSB0aGlzLnNlbGVjdGVkQWxsID0gZmFsc2U7XHJcbiAgfVxyXG5cclxuICBuZXh0U3RlcCgpIHtcclxuICAgIHRoaXMucGJmLmludHJvU3RlcC5uZXh0KFwibmV4dFwiKTtcclxuICB9XHJcblxyXG4gIGdldGRhdGFNYXJ0KGl0ZW0sIGlzSW5pdCA9IGZhbHNlKSB7XHJcbiAgICBpZiAodGhpcy5jYWNoZUVudGl0eVR5cGUgJiYgdGhpcy5jYWNoZUVudGl0eVR5cGUgPT09IGl0ZW0uZW50aXR5VHlwZSkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBpZiAoXHJcbiAgICAgICFpc0luaXQgJiZcclxuICAgICAgdGhpcy5jYWNoZUVudGl0eVR5cGUgJiZcclxuICAgICAgdGhpcy5jYWNoZUVudGl0eVR5cGUgIT09IGl0ZW0uZW50aXR5VHlwZVxyXG4gICAgKSB7XHJcbiAgICAgIGNvbnN0IF90aXRsZSA9XHJcbiAgICAgICAgdGhpcy50cmFuc2xhdGlvbi5BUkVfWU9VX1NVUkVfVE9fQ0hBTkdFX0RBVEFfTUFSVCB8fFxyXG4gICAgICAgIFwiLkFyZSB5b3Ugc3VyZSB0byBjaGFuZ2UgZW50aXR5IHR5cGUgb2YgZGF0YSBtYXJ0PyBEYXNoYm9hcmQgd2lsbCBiZSByZXNldCBzaW5jZSBlbnRpdHkgdHlwZSBpcyBjaGFuZ2VkLlwiO1xyXG4gICAgICBjb25zdCBfbm8gPSB0aGlzLnRyYW5zbGF0aW9uLk5PIHx8IFwiLk5PXCI7XHJcbiAgICAgIGNvbnN0IF95ZXMgPSB0aGlzLnRyYW5zbGF0aW9uLllFUyB8fCBcIi5ZRVNcIjtcclxuICAgICAgLy8gY29uc3QgZGlhbG9nUmVmID0gdGhpcy5sYXlvdXRVdGlsc1NlcnZpY2UuYWxlcnRFbGVtZW50KFxyXG4gICAgICAvLyBcdHRoaXMudHJhbnNsYXRpb24uV0FSTklORyB8fCBcIi5XQVJOSU5HXCIsXHJcbiAgICAgIC8vIFx0X3RpdGxlLFxyXG4gICAgICAvLyBcdF9ubyxcclxuICAgICAgLy8gXHRfeWVzLFxyXG4gICAgICAvLyBcdHRydWUsXHJcbiAgICAgIC8vIFx0dHJ1ZSxcclxuICAgICAgLy8gXHRcIjQ4MHB4XCIsXHJcbiAgICAgIC8vIFx0XCIzMjRweFwiXHJcbiAgICAgIC8vICk7XHJcbiAgICAgIGNvbnN0IGRpYWxvZ1JlZiA9IHRoaXMuZGlhbG9nU2VydmljZS5zaG93Q29tbW9uRGlsYW9nKHtcclxuICAgICAgICB0aXRsZTogdGhpcy50cmFuc2xhdGlvbi5XQVJOSU5HIHx8IFwiLldBUk5JTkdcIixcclxuICAgICAgICBkZXNjcmlwdGlvbjogX3RpdGxlLFxyXG4gICAgICAgIHNhdmVCdG5MYWJlbDogX3llcyxcclxuICAgICAgICBjYW5jZWxCdG5MYWJlbDogX25vLFxyXG4gICAgICB9KTtcclxuICAgICAgZGlhbG9nUmVmLmFmdGVyQ2xvc2VkKCkuc3Vic2NyaWJlKChyZXMpID0+IHtcclxuICAgICAgICBpZiAoIXJlcykge1xyXG4gICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLnNldEZhdGhlcklkKGl0ZW0sIGlzSW5pdCk7XHJcbiAgICAgIH0pO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBpZiAoIWl0ZW0pIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgdGhpcy5zZXRGYXRoZXJJZChpdGVtLCBpc0luaXQpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzZXRGYXRoZXJJZChpdGVtLCBpc0luaXQpIHtcclxuICAgIHRoaXMuZmF0aGVySWQgPSBpdGVtLmlkO1xyXG4gICAgdGhpcy5lbnRpdHlUeXBlID0gaXRlbS5lbnRpdHlUeXBlO1xyXG4gICAgbGV0IGlzRmlndXJlc0NoZWNrZWQgPSBmYWxzZTtcclxuICAgIGxldCBpc090aGVyQ2hlY2tlZCA9IGZhbHNlO1xyXG4gICAgaWYgKFxyXG4gICAgICBpdGVtLnZpZXdzLmZpbmQoXHJcbiAgICAgICAgKGl0ZW0pID0+XHJcbiAgICAgICAgICBpdGVtLmxhbmdDb2RlID09PSBcIkZJTkFOQ0lBTF9GSUdVUkVTXCIgJiYgdGhpcy5zb25JZHMuaW5jbHVkZXMoaXRlbS5pZClcclxuICAgICAgKVxyXG4gICAgKSB7XHJcbiAgICAgIGlzRmlndXJlc0NoZWNrZWQgPSB0cnVlO1xyXG4gICAgICB0aGlzLmlzU2VsZWN0QWxsRGlzYWJsZWQgPSB0cnVlO1xyXG4gICAgfVxyXG4gICAgaWYgKFxyXG4gICAgICBpdGVtLnZpZXdzLmZpbmQoXHJcbiAgICAgICAgKGl0ZW0pID0+XHJcbiAgICAgICAgICBpdGVtLmxhbmdDb2RlICE9PSBcIkZJTkFOQ0lBTF9GSUdVUkVTXCIgJiYgdGhpcy5zb25JZHMuaW5jbHVkZXMoaXRlbS5pZClcclxuICAgICAgKVxyXG4gICAgKVxyXG4gICAgICBpc090aGVyQ2hlY2tlZCA9IHRydWU7XHJcblxyXG4gICAgdGhpcy5zb25MaXN0ID0gaXRlbS52aWV3cy5tYXAoKGl0ZW0pID0+IHtcclxuICAgICAgbGV0IGlzRGlzYWJsZWQgPVxyXG4gICAgICAgIChpc0ZpZ3VyZXNDaGVja2VkICYmIGl0ZW0ubGFuZ0NvZGUgIT09IFwiRklOQU5DSUFMX0ZJR1VSRVNcIikgfHxcclxuICAgICAgICAoaXRlbS5sYW5nQ29kZSA9PT0gXCJGSU5BTkNJQUxfRklHVVJFU1wiICYmIGlzT3RoZXJDaGVja2VkKTtcclxuICAgICAgcmV0dXJuIHtcclxuICAgICAgICAuLi5pdGVtLFxyXG4gICAgICAgIGNoZWNrZWQ6XHJcbiAgICAgICAgICB0aGlzLmNhY2hlRW50aXR5VHlwZSAmJiB0aGlzLmNhY2hlRW50aXR5VHlwZSAhPT0gdGhpcy5lbnRpdHlUeXBlXHJcbiAgICAgICAgICAgID8gZmFsc2VcclxuICAgICAgICAgICAgOiB0aGlzLnNvbklkcy5pbmNsdWRlcyhpdGVtLmlkKSxcclxuICAgICAgICBkaXNhYmxlZDpcclxuICAgICAgICAgIHRoaXMuY2FjaGVFbnRpdHlUeXBlICYmIHRoaXMuY2FjaGVFbnRpdHlUeXBlICE9PSB0aGlzLmVudGl0eVR5cGVcclxuICAgICAgICAgICAgPyBmYWxzZVxyXG4gICAgICAgICAgICA6IGlzRGlzYWJsZWQsXHJcbiAgICAgIH07XHJcbiAgICB9KTtcclxuXHJcbiAgICB0aGlzLmNhY2hlRW50aXR5VHlwZSA9IGl0ZW0uZW50aXR5VHlwZTtcclxuXHJcbiAgICBpZiAoIWlzSW5pdCkge1xyXG4gICAgICB0aGlzLnNvbklkcyA9IFtdO1xyXG4gICAgICB0aGlzLmdyYW5kc29uTGlzdCA9IFtdO1xyXG4gICAgICB0aGlzLm9yZ2luR3JhbmREYXRhID0gW107XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRBbGwgPSBmYWxzZTtcclxuICAgICAgdGhpcy5pc1NlbGVjdEFsbERpc2FibGVkID0gZmFsc2U7XHJcbiAgICAgIGlmICh0aGlzLmNhY2hlRW50aXR5VHlwZSAmJiB0aGlzLmNhY2hlRW50aXR5VHlwZSAhPT0gaXRlbS5lbnRpdHlUeXBlKSB7XHJcbiAgICAgICAgdGhpcy5zb25MaXN0ID0gaXRlbS52aWV3cy5tYXAoKGl0ZW0pID0+IHtcclxuICAgICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgIC4uLml0ZW0sXHJcbiAgICAgICAgICAgIGNoZWNrZWQ6IGZhbHNlLFxyXG4gICAgICAgICAgICBkaXNhYmxlZDogZmFsc2UsXHJcbiAgICAgICAgICB9O1xyXG4gICAgICAgIH0pO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBoYW5kbGVJdGVtQ2hhbmdlKGRhdGEsIHZhbD86IGJvb2xlYW4pIHtcclxuICAgIGlmICghZGF0YSkgcmV0dXJuIGZhbHNlO1xyXG4gICAgaWYgKHZhbCkge1xyXG4gICAgICBpZiAoQXJyYXkuaXNBcnJheShkYXRhKSkge1xyXG4gICAgICAgIGRhdGEuZm9yRWFjaCgoaXRlbSkgPT4ge1xyXG4gICAgICAgICAgaWYgKCF0aGlzLnNvbklkcy5pbmNsdWRlcyhpdGVtLmlkKSkge1xyXG4gICAgICAgICAgICB0aGlzLnNvbklkcy5wdXNoKGl0ZW0uaWQpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoaXRlbS50YWJsZXMpKSB7XHJcbiAgICAgICAgICAgIGl0ZW0udGFibGVzLmZvckVhY2goKGNoaWxkKSA9PiB7XHJcbiAgICAgICAgICAgICAgaWYgKCF0aGlzLmdyYW5kc29uTGlzdC5zb21lKChlbCkgPT4gZWwuaWQgPT09IGNoaWxkLmlkKSkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5ncmFuZHNvbkxpc3QucHVzaCh7XHJcbiAgICAgICAgICAgICAgICAgIC4uLmNoaWxkLFxyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICAvLyBmaW5hbmNpYWwgZmlndXJlcyBjYW7igJl0IGJlIHNlbGVjdGVkIHRvZ2V0aGVyIHdpdGggb3RoZXIgZ3JvdXBzXHJcbiAgICAgICAgaWYgKGRhdGEubGFuZ0NvZGUgIT09IFwiRklOQU5DSUFMX0ZJR1VSRVNcIikge1xyXG4gICAgICAgICAgdGhpcy5zb25MaXN0LmZvckVhY2goKGl0ZW0pID0+IHtcclxuICAgICAgICAgICAgaWYgKGl0ZW0ubGFuZ0NvZGUgPT09IFwiRklOQU5DSUFMX0ZJR1VSRVNcIikgaXRlbS5kaXNhYmxlZCA9IHRydWU7XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgaWYgKFxyXG4gICAgICAgICAgICAhdGhpcy5zb25MaXN0LmZpbmQoXHJcbiAgICAgICAgICAgICAgKGl0ZW0pID0+IGl0ZW0uY2hlY2tlZCAmJiBpdGVtLmxhbmdDb2RlICE9PSBcIkZJTkFOQ0lBTF9GSUdVUkVTXCJcclxuICAgICAgICAgICAgKVxyXG4gICAgICAgICAgKSB7XHJcbiAgICAgICAgICAgIHRoaXMuc29uTGlzdC5mb3JFYWNoKChpdGVtKSA9PiB7XHJcbiAgICAgICAgICAgICAgaWYgKGl0ZW0ubGFuZ0NvZGUgIT09IFwiRklOQU5DSUFMX0ZJR1VSRVNcIikgaXRlbS5kaXNhYmxlZCA9IHRydWU7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB0aGlzLmlzU2VsZWN0QWxsRGlzYWJsZWQgPSB0cnVlO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBkYXRhLnRhYmxlcy5mb3JFYWNoKChpdGVtKSA9PiB7XHJcbiAgICAgICAgICBpZiAoIXRoaXMuZ3JhbmRzb25MaXN0LnNvbWUoKGVsKSA9PiBlbC5pZCA9PT0gaXRlbS5pZCkpIHtcclxuICAgICAgICAgICAgdGhpcy5ncmFuZHNvbkxpc3QucHVzaCh7XHJcbiAgICAgICAgICAgICAgLi4uaXRlbSxcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgaWYgKCF0aGlzLnNvbklkcy5pbmNsdWRlcyhkYXRhLmlkKSkge1xyXG4gICAgICAgICAgdGhpcy5zb25JZHMucHVzaChkYXRhLmlkKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuZ3JhbmRzb25MaXN0ID0gW107XHJcbiAgICAgIHRoaXMuc29uTGlzdC5mb3JFYWNoKChpdGVtKSA9PiB7XHJcbiAgICAgICAgaWYgKGRhdGEubGFuZ0NvZGUgPT09IFwiRklOQU5DSUFMX0ZJR1VSRVNcIikge1xyXG4gICAgICAgICAgaXRlbS5kaXNhYmxlZCA9IGZhbHNlO1xyXG4gICAgICAgICAgdGhpcy5pc1NlbGVjdEFsbERpc2FibGVkID0gZmFsc2U7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChpdGVtLmlkID09IGRhdGEuaWQpIHtcclxuICAgICAgICAgIGl0ZW0uY2hlY2tlZCA9IHZhbDtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKGl0ZW0uY2hlY2tlZCkge1xyXG4gICAgICAgICAgaXRlbS50YWJsZXMuZm9yRWFjaCgoc29uSXRlbSkgPT4ge1xyXG4gICAgICAgICAgICBpZiAoIXRoaXMuZ3JhbmRzb25MaXN0LnNvbWUoKGVsKSA9PiBlbC5pZCA9PT0gc29uSXRlbS5pZCkpIHtcclxuICAgICAgICAgICAgICB0aGlzLmdyYW5kc29uTGlzdC5wdXNoKHtcclxuICAgICAgICAgICAgICAgIC4uLnNvbkl0ZW0sXHJcbiAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICAgIGlmIChcclxuICAgICAgICBkYXRhLmxhbmdDb2RlICE9PSBcIkZJTkFOQ0lBTF9GSUdVUkVTXCIgJiZcclxuICAgICAgICAhdGhpcy5zb25MaXN0LmZpbmQoXHJcbiAgICAgICAgICAoaXRlbSkgPT4gaXRlbS5jaGVja2VkICYmIGl0ZW0ubGFuZ0NvZGUgIT09IFwiRklOQU5DSUFMX0ZJR1VSRVNcIlxyXG4gICAgICAgIClcclxuICAgICAgKSB7XHJcbiAgICAgICAgdGhpcy5zb25MaXN0LmZvckVhY2goKG9iaikgPT4ge1xyXG4gICAgICAgICAgaWYgKG9iai5sYW5nQ29kZSA9PT0gXCJGSU5BTkNJQUxfRklHVVJFU1wiKSBvYmouZGlzYWJsZWQgPSBmYWxzZTtcclxuICAgICAgICB9KTtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLnNvbklkcyA9IHRoaXMuc29uSWRzLmZpbHRlcigoaXRlbSkgPT4gaXRlbSAhPSBkYXRhLmlkKTtcclxuICAgIH1cclxuICAgIHRoaXMuZ2V0U2VsZWN0ZWRBbGxTdGF0dXMoKTtcclxuICAgIHRoaXMub3JnaW5HcmFuZERhdGEgPSBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KHRoaXMuZ3JhbmRzb25MaXN0KSk7XHJcbiAgICBpZiAoIXRoaXMucmVmW1wiZGVzdHJveWVkXCJdKSB7XHJcbiAgICAgIHRoaXMucmVmLm1hcmtGb3JDaGVjaygpO1xyXG4gICAgICB0aGlzLnJlZi5kZXRlY3RDaGFuZ2VzO1xyXG4gICAgfVxyXG4gIH1cclxuICBzZWxlY3RBbGwodmFsKSB7XHJcbiAgICBpZiAoIXZhbCkge1xyXG4gICAgICB0aGlzLm9yZ2luR3JhbmREYXRhID0gW107XHJcbiAgICB9XHJcbiAgICB0aGlzLmdyYW5kc29uTGlzdCA9IFtdO1xyXG4gICAgdGhpcy5zb25JZHMgPSBbXTtcclxuICAgIHRoaXMuc29uTGlzdC5mb3JFYWNoKChpdGVtKSA9PiB7XHJcbiAgICAgIGlmIChpdGVtLmxhbmdDb2RlICE9PSBcIkZJTkFOQ0lBTF9GSUdVUkVTXCIpIGl0ZW0uY2hlY2tlZCA9IHZhbDtcclxuICAgICAgaWYgKHZhbCkge1xyXG4gICAgICAgIGlmIChpdGVtLmxhbmdDb2RlID09PSBcIkZJTkFOQ0lBTF9GSUdVUkVTXCIpIHtcclxuICAgICAgICAgIGl0ZW0uZGlzYWJsZWQgPSB0cnVlO1xyXG4gICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLnNvbklkcy5wdXNoKGl0ZW0uaWQpO1xyXG4gICAgICAgIGl0ZW0udGFibGVzLmZvckVhY2goKHNvbkl0ZW0pID0+IHtcclxuICAgICAgICAgIGlmICghdGhpcy5ncmFuZHNvbkxpc3Quc29tZSgoZWwpID0+IGVsLmlkID09PSBzb25JdGVtLmlkKSkge1xyXG4gICAgICAgICAgICB0aGlzLmdyYW5kc29uTGlzdC5wdXNoKHtcclxuICAgICAgICAgICAgICAuLi5zb25JdGVtLFxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBpZiAoaXRlbS5sYW5nQ29kZSA9PT0gXCJGSU5BTkNJQUxfRklHVVJFU1wiKSBpdGVtLmRpc2FibGVkID0gZmFsc2U7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gICAgdGhpcy5vcmdpbkdyYW5kRGF0YSA9IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkodGhpcy5ncmFuZHNvbkxpc3QpKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBkb0ZpbHRlciA9IHRocm90dGxlKCh2YWwpID0+IHRoaXMuZG9TZWFyY2godmFsKSwgMjAwKTtcclxuICBwdWJsaWMgZG9TZWFyY2godmFsKSB7XHJcbiAgICBsZXQgdGVtcExpc3QgPSBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KHRoaXMub3JnaW5HcmFuZERhdGEpKTtcclxuICAgIGlmICh2YWwpIHtcclxuICAgICAgdGhpcy5ncmFuZHNvbkxpc3QgPSB0ZW1wTGlzdC5maWx0ZXIoKGl0ZW0pID0+XHJcbiAgICAgICAgaXRlbS5sYW5nVmFsdWUudG9Mb3dlckNhc2UoKS5pbmNsdWRlcyh2YWwudG9Mb3dlckNhc2UoKSlcclxuICAgICAgKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuZ3JhbmRzb25MaXN0ID0gdGVtcExpc3Q7XHJcbiAgICB9XHJcbiAgfVxyXG4gIC8vIOS/neWtmOW8ueeql+etm+mAieaVsOaNrlxyXG4gIHNhdmVEYXRhKCkge1xyXG4gICAgdGhpcy5wYmYuaW50cm9TdGVwLm5leHQoXCJjb21wbGV0ZVwiKTtcclxuICAgIHRoaXMucGJmLnBhZ2VMb2FkaW5nID0gdHJ1ZTtcclxuICAgIGxldCBjb25maWc7XHJcbiAgICBsZXQgZGF0YW1hcnRWaWV3Q29kZSA9IHRoaXMuc29uTGlzdC5maWx0ZXIoKGVsKSA9PlxyXG4gICAgICB0aGlzLnNvbklkcy5pbmNsdWRlcyhlbC5pZClcclxuICAgICk7XHJcbiAgICBjb25maWcgPSB7XHJcbiAgICAgIGRhdGFtYXJ0SWQ6IHRoaXMuZmF0aGVySWQsXHJcbiAgICAgIGRhdGFtYXJ0Vmlld0lkOiB0aGlzLnNvbklkcy5qb2luKFwiLFwiKSxcclxuICAgICAgdmlld3M6IGRhdGFtYXJ0Vmlld0NvZGUubWFwKChlKSA9PiB7XHJcbiAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgIGRhdGFtYXJ0Vmlld0lkOiBlLmlkLFxyXG4gICAgICAgICAgZGF0YW1hcnRWaWV3Q29kZTogZS5sYW5nQ29kZSxcclxuICAgICAgICB9O1xyXG4gICAgICB9KSxcclxuICAgIH07XHJcbiAgICBjb25zdCBlbnRpdHlMaXN0ID1cclxuICAgICAgdGhpcy5kYXRhLmRhc2hib2FyZC5lbnRpdHlUeXBlID09PSB0aGlzLmVudGl0eVR5cGVcclxuICAgICAgICA/IHRoaXMuRGFzaGJvYXJkUG9ybGV0c1NlcnZpY2UuZW50aXR5TGlzdFxyXG4gICAgICAgIDogW107XHJcblxyXG4gICAgY29uc3QgZGF0YU9iaiA9IHtcclxuICAgICAgZW50aXR5TGlzdCxcclxuICAgICAgYWNjb3VudElkOiB0aGlzLnVzZXJJbmZvLmFjY291bnRJZCxcclxuICAgICAgdXNlcklkOiB0aGlzLnVzZXJJbmZvLmlkLFxyXG4gICAgICBkYXNoYm9hcmRJZDogdGhpcy5kYXRhLmRhc2hib2FyZElkLFxyXG4gICAgICBkYXRhTWFydFRhYmxlczogdGhpcy5ncmFuZHNvbkxpc3QsXHJcbiAgICAgIGVudGl0eVR5cGU6IHRoaXMuZW50aXR5VHlwZSB8fCB0aGlzLmRhdGEuZGFzaGJvYXJkLmVudGl0eVR5cGUsXHJcbiAgICAgIGNvbmZpZzogSlNPTi5zdHJpbmdpZnkoY29uZmlnKSxcclxuICAgIH07XHJcblxyXG4gICAgdGhpcy5odHRwLnBvc3QodGhpcy5hcGkudXJsTGlzdC5BZGREYXRhTWFydFRhYmxlcywgZGF0YU9iaiwgKHJlcykgPT4ge1xyXG4gICAgICBpZiAocmVzLnN0YXR1cyA9PT0gXCJTVUNDRVNTXCIpIHtcclxuICAgICAgICBjb25zdCBfc2F2ZU1lc3NhZ2UgPVxyXG4gICAgICAgICAgdGhpcy50cmFuc2xhdGlvbi5EQVNIQk9BUkRfUFJPUEVSVElFU19TQVZFRCB8fFxyXG4gICAgICAgICAgXCIuREFTSEJPQVJEX1BST1BFUlRJRVNfU0FWRURcIjtcclxuICAgICAgICB0aGlzLnNob3dUb2FzdChfc2F2ZU1lc3NhZ2UsIFwiU3VjY2Vzc1wiKTtcclxuICAgICAgICB0aGlzLmNvbmZpZy5kYXRhbWFydFZpZXdJZCA9IHRoaXMuc29uSWRzLmpvaW4oXCIsXCIpO1xyXG4gICAgICAgIHRoaXMuY29uZmlnLnZpZXdzID0gW107XHJcbiAgICAgICAgdGhpcy5zb25MaXN0LmZvckVhY2goKGl0ZW0pID0+IHtcclxuICAgICAgICAgIHRoaXMuc29uSWRzLmZvckVhY2goKHNvbklkKSA9PiB7XHJcbiAgICAgICAgICAgIGlmIChpdGVtLmlkID09PSBzb25JZCkge1xyXG4gICAgICAgICAgICAgIHRoaXMuY29uZmlnLnZpZXdzLnB1c2goe1xyXG4gICAgICAgICAgICAgICAgZGF0YW1hcnRWaWV3Q29kZTogaXRlbS5sYW5nQ29kZSxcclxuICAgICAgICAgICAgICAgIGRhdGFtYXJ0Vmlld0lkOiBpdGVtLmlkLFxyXG4gICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgdGhpcy5kYXRhLmRhc2hib2FyZC5jb25maWcgPSBKU09OLnN0cmluZ2lmeSh0aGlzLmNvbmZpZyk7XHJcbiAgICAgICAgaWYgKHRoaXMuZGF0YS5lZGl0KSB7XHJcbiAgICAgICAgICB0aGlzLkRhc2hib2FyZFBvcmxldHNTZXJ2aWNlLnBvcnRsZXRGaWVsZHNfVGVtcCA9IHt9O1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoXHJcbiAgICAgICAgICBlbnRpdHlMaXN0ICYmXHJcbiAgICAgICAgICBlbnRpdHlMaXN0Lmxlbmd0aCAmJlxyXG4gICAgICAgICAgdGhpcy5kYXRhLmRhc2hib2FyZC5lbnRpdHlUeXBlID09PSB0aGlzLmVudGl0eVR5cGVcclxuICAgICAgICApIHtcclxuICAgICAgICAgIHRoaXMucGJmLnRyaWdnZXJEYXNoYm9hcmRSZWZyZXNoLm5leHQoe1xyXG4gICAgICAgICAgICBlbnRpdHlMaXN0LFxyXG4gICAgICAgICAgICBpZDogdGhpcy5kYXRhLmRhc2hib2FyZC5pZCxcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgdGhpcy5kaWFsb2dSZWYuY2xvc2UoKTtcclxuICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRoaXMuRGFzaGJvYXJkUG9ybGV0c1NlcnZpY2UuR2V0RGFzaGJvYXJkVjEoXHJcbiAgICAgICAgICB0aGlzLmRhdGEuZGFzaGJvYXJkSWQsXHJcbiAgICAgICAgICB0cnVlLFxyXG4gICAgICAgICAgKHJlcywgcG9ydGxldHMgPSBbXSkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLmRhc2hib2FyZFNlcnZpY2UuY2hhbmdlbGF5b3V0Lm5leHQoe1xyXG4gICAgICAgICAgICAgIHN0YXR1czogXCJ0cnVlXCIsXHJcbiAgICAgICAgICAgICAgaWQ6IHRoaXMuZGF0YS5kYXNoYm9hcmQuaWQsXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB0aGlzLnBiZi5wYWdlTG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICAgICAgICB0aGlzLmRpYWxvZ1JlZi5jbG9zZSh7XHJcbiAgICAgICAgICAgICAgcHVzaF9idG46IGZhbHNlLFxyXG4gICAgICAgICAgICAgIHBvcnRsZXQ6IHt9LFxyXG4gICAgICAgICAgICAgIHBvcnRsZXRzLFxyXG4gICAgICAgICAgICAgIGRhc2hib2FyZDogcmVzLFxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgdGhpcy5yZWYubWFya0ZvckNoZWNrKCk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLnBiZi5wYWdlTG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMucGJmLnBhZ2VMb2FkaW5nXy5uZXh0KHRydWUpO1xyXG4gICAgICAgIHRoaXMucmVmLm1hcmtGb3JDaGVjaygpO1xyXG4gICAgICAgIGNvbnN0IF9zYXZlTWVzc2FnZSA9IHJlcy5tZXNzYWdlc1swXS5tZXNzYWdlIHx8IFwiZXJyb3JcIjtcclxuICAgICAgICB0aGlzLnNob3dUb2FzdChfc2F2ZU1lc3NhZ2UsIFwiRXJyb3JcIik7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuICAvLyB0b2FzdCBtc2dcclxuICBwdWJsaWMgc2hvd1RvYXN0KG1zZywgc3RhdHVzOiBcIlN1Y2Nlc3NcIiB8IFwiRXJyb3JcIikge1xyXG4gICAgdGhpcy5kaWFsb2dTZXJ2aWNlLnNob3dOb3RpZmljYXRpb24obXNnLCB7XHJcbiAgICAgIHN0YXR1cyxcclxuICAgIH0pO1xyXG4gIH1cclxuICAvLyDlhbPpl63lvLnnqpdcclxuICBwdWJsaWMgY2xvc2VQb3B1cCgpIHtcclxuICAgIHRoaXMuZGlhbG9nUmVmLmNsb3NlKCk7XHJcbiAgfVxyXG59XHJcbiJdfQ==
@@ -300,8 +300,8 @@ export class PaneDownloadComponent {
300
300
  }
301
301
  PaneDownloadComponent.decorators = [
302
302
  { type: Component, args: [{
303
- selector: "kt-pane-download",
304
- template: "<div class=\"container dashboard-download-container\">\r\n\t<div class=\"header\">\r\n\t\t<div class=\"header-label\">\r\n\t\t\t{{ translation.DOWNLOAD_PREVIEW || \".DOWNLOAD_PREVIEW\" }}\r\n\t\t</div>\r\n\t\t<mat-icon class=\"close\" (click)=\"close()\">close</mat-icon>\r\n\t</div>\r\n\t<div class=\"body\">\r\n\t\t<div class=\"portlet\" *ngFor=\"let item of portlets\">\r\n\t\t\t<kt-gadget-table\r\n\t\t\t\t#dtable\r\n\t\t\t\t*ngIf=\"getPortletType(item) == 'table'\"\r\n\t\t\t\t[portlets]=\"portlets\"\r\n\t\t\t\t[dashboard]=\"data.dashboard\"\r\n\t\t\t\t[portlet]=\"item\"\r\n\t\t\t>\r\n\t\t\t</kt-gadget-table>\r\n\t\t\t<kt-gadget-pivot\r\n\t\t\t\t#dpivot\r\n\t\t\t\t*ngIf=\"getPortletType(item) == 'pivot'\"\r\n\t\t\t\t[portlet]=\"item\"\r\n\t\t\t\t[dashboard]=\"data.dashboard\"\r\n\t\t\t\t[portlets]=\"portlets\"\r\n\t\t\t\t[themeColor]=\"item.themeColor\"\r\n\t\t\t>\r\n\t\t\t</kt-gadget-pivot>\r\n\t\t\t<kt-gadget-pivot-chart\r\n\t\t\t\t#dpivot\r\n\t\t\t\t*ngIf=\"getPortletType(item) == 'newchart'\"\r\n\t\t\t\t[portlet]=\"item\"\r\n\t\t\t\t[dashboard]=\"data.dashboard\"\r\n\t\t\t\t[portlets]=\"portlets\"\r\n\t\t\t\t[themeColor]=\"item.themeColor\"\r\n\t\t\t\t(updatePorletConfig)=\"updatePorletConfig($event)\"\r\n\t\t\t>\r\n\t\t\t</kt-gadget-pivot-chart>\r\n\t\t\t<kt-gadget-transpose\r\n\t\t\t\t#dtranspose\r\n\t\t\t\t*ngIf=\"getPortletType(item) == 'transpose'\"\r\n\t\t\t\t[portlets]=\"portlets\"\r\n\t\t\t\t[dashboard]=\"data.dashboard\"\r\n\t\t\t\t[portlet]=\"item\"\r\n\t\t\t>\r\n\t\t\t</kt-gadget-transpose>\r\n\t\t\t<kt-bar-charts\r\n\t\t\t\t*ngIf=\"\r\n\t\t\t\t\t['newcolumn', 'newline', 'newcolumnline'].includes(\r\n\t\t\t\t\t\tgetPortletType(item)\r\n\t\t\t\t\t)\r\n\t\t\t\t\"\r\n\t\t\t\t#dnewChart\r\n\t\t\t\t[dashboard]=\"data.dashboard\"\r\n\t\t\t\t[dataColumn]=\"item.dataColumn\"\r\n\t\t\t\t[dataLine]=\"item.dataLine\"\r\n\t\t\t\t[columnType]=\"item.columnType\"\r\n\t\t\t\t[lineType]=\"item.lineType\"\r\n\t\t\t\t[themeColor]=\"item.themeColor\"\r\n\t\t\t\t[portlet]=\"item\"\r\n\t\t\t></kt-bar-charts>\r\n\t\t</div>\r\n\t</div>\r\n\t<div class=\"footer\">\r\n\t\t<div class=\"btn btn-cancle\" (click)=\"close()\">\r\n\t\t\t{{ translation.CLOSE || \".CLOSE\" }}\r\n\t\t</div>\r\n\t\t<div class=\"btn btn-primary\" (click)=\"downloadAll()\">\r\n\t\t\t{{ translation.DOWNLOAD || \".DOWNLOAD\" }}\r\n\t\t</div>\r\n\t</div>\r\n</div>\r\n",
303
+ selector: "rs-pane-download",
304
+ template: "<div class=\"container dashboard-download-container\">\r\n\t<div class=\"header\">\r\n\t\t<div class=\"header-label\">\r\n\t\t\t{{ translation.DOWNLOAD_PREVIEW || \".DOWNLOAD_PREVIEW\" }}\r\n\t\t</div>\r\n\t\t<mat-icon class=\"close\" (click)=\"close()\">close</mat-icon>\r\n\t</div>\r\n\t<div class=\"body\">\r\n\t\t<div class=\"portlet\" *ngFor=\"let item of portlets\">\r\n\t\t\t<rs-gadget-table\r\n\t\t\t\t#dtable\r\n\t\t\t\t*ngIf=\"getPortletType(item) == 'table'\"\r\n\t\t\t\t[portlets]=\"portlets\"\r\n\t\t\t\t[dashboard]=\"data.dashboard\"\r\n\t\t\t\t[portlet]=\"item\"\r\n\t\t\t>\r\n\t\t\t</rs-gadget-table>\r\n\t\t\t<rs-gadget-pivot\r\n\t\t\t\t#dpivot\r\n\t\t\t\t*ngIf=\"getPortletType(item) == 'pivot'\"\r\n\t\t\t\t[portlet]=\"item\"\r\n\t\t\t\t[dashboard]=\"data.dashboard\"\r\n\t\t\t\t[portlets]=\"portlets\"\r\n\t\t\t\t[themeColor]=\"item.themeColor\"\r\n\t\t\t>\r\n\t\t\t</rs-gadget-pivot>\r\n\t\t\t<rs-gadget-pivot-chart\r\n\t\t\t\t#dpivot\r\n\t\t\t\t*ngIf=\"getPortletType(item) == 'newchart'\"\r\n\t\t\t\t[portlet]=\"item\"\r\n\t\t\t\t[dashboard]=\"data.dashboard\"\r\n\t\t\t\t[portlets]=\"portlets\"\r\n\t\t\t\t[themeColor]=\"item.themeColor\"\r\n\t\t\t\t(updatePorletConfig)=\"updatePorletConfig($event)\"\r\n\t\t\t>\r\n\t\t\t</rs-gadget-pivot-chart>\r\n\t\t\t<rs-gadget-transpose\r\n\t\t\t\t#dtranspose\r\n\t\t\t\t*ngIf=\"getPortletType(item) == 'transpose'\"\r\n\t\t\t\t[portlets]=\"portlets\"\r\n\t\t\t\t[dashboard]=\"data.dashboard\"\r\n\t\t\t\t[portlet]=\"item\"\r\n\t\t\t>\r\n\t\t\t</rs-gadget-transpose>\r\n\t\t\t<rs-bar-charts\r\n\t\t\t\t*ngIf=\"\r\n\t\t\t\t\t['newcolumn', 'newline', 'newcolumnline'].includes(\r\n\t\t\t\t\t\tgetPortletType(item)\r\n\t\t\t\t\t)\r\n\t\t\t\t\"\r\n\t\t\t\t#dnewChart\r\n\t\t\t\t[dashboard]=\"data.dashboard\"\r\n\t\t\t\t[dataColumn]=\"item.dataColumn\"\r\n\t\t\t\t[dataLine]=\"item.dataLine\"\r\n\t\t\t\t[columnType]=\"item.columnType\"\r\n\t\t\t\t[lineType]=\"item.lineType\"\r\n\t\t\t\t[themeColor]=\"item.themeColor\"\r\n\t\t\t\t[portlet]=\"item\"\r\n\t\t\t></rs-bar-charts>\r\n\t\t</div>\r\n\t</div>\r\n\t<div class=\"footer\">\r\n\t\t<div class=\"btn btn-cancle\" (click)=\"close()\">\r\n\t\t\t{{ translation.CLOSE || \".CLOSE\" }}\r\n\t\t</div>\r\n\t\t<div class=\"btn btn-primary\" (click)=\"downloadAll()\">\r\n\t\t\t{{ translation.DOWNLOAD || \".DOWNLOAD\" }}\r\n\t\t</div>\r\n\t</div>\r\n</div>\r\n",
305
305
  styles: [".dashboard-download-container.container{width:100%;height:100%;display:flex;flex-direction:column;gap:20px}.dashboard-download-container .header{display:flex;justify-content:space-between;align-items:center;height:24px}.dashboard-download-container .header .header-label{font-size:18px;font-weight:600;color:#44566c}.dashboard-download-container .body{flex:1;display:flex;overflow:auto;flex-direction:column;gap:20px;padding-right:12px}.dashboard-download-container .body .portlet{height:300px;min-height:300px}.dashboard-download-container .footer{width:100%;height:40px;display:flex;justify-content:center;gap:20px}.dashboard-download-container .footer .btn{width:calc((100% - 20px)/ 2);height:40px;border-radius:5px;font-size:13px;font-weight:700;text-align:center;cursor:pointer}.dashboard-download-container .footer .btn-cancle{background:#f2f3f7;color:#979797}.dashboard-download-container .footer .btn-primary{background:#1364b3;color:#fff}"]
306
306
  }] }
307
307
  ];
@@ -355,4 +355,4 @@ if (false) {
355
355
  */
356
356
  PaneDownloadComponent.prototype.ref;
357
357
  }
358
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vcmFpc2UtY29tbW9uLWxpYi8iLCJzb3VyY2VzIjpbImxpYi9kYXNoYm9hcmQvZGlhbG9nLWdyb3VwL2Rvd25sb2FkL2luZGV4LmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSxPQUFPLEVBQ04sU0FBUyxFQUVULE1BQU0sRUFDTixZQUFZLEVBQ1osU0FBUyxFQUNULGlCQUFpQixHQUNqQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsZUFBZSxFQUFFLFlBQVksRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ2xFLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ3pFLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNsRCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBTXBDLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxRQUFRLENBQUM7QUFZOUIsTUFBTSxPQUFPLHFCQUFxQjs7Ozs7Ozs7O0lBU2pDLFlBRVEsT0FBWTtRQUNsQixRQUFRLEVBQUUsRUFBRTtRQUNaLFNBQVMsRUFBRSxJQUFJO0tBQ2YsRUFDTSxTQUE4QyxFQUM3Qyx1QkFBZ0QsRUFDaEQsVUFBc0IsRUFDdEIsR0FBWSxFQUNaLEdBQXNCO1FBUnZCLFNBQUksR0FBSixJQUFJLENBR1Y7UUFDTSxjQUFTLEdBQVQsU0FBUyxDQUFxQztRQUM3Qyw0QkFBdUIsR0FBdkIsdUJBQXVCLENBQXlCO1FBQ2hELGVBQVUsR0FBVixVQUFVLENBQVk7UUFDdEIsUUFBRyxHQUFILEdBQUcsQ0FBUztRQUNaLFFBQUcsR0FBSCxHQUFHLENBQW1CO1FBWi9CLGFBQVEsR0FBRyxFQUFFLENBQUM7SUFhWCxDQUFDOzs7O0lBRUosUUFBUTtRQUNQLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxZQUFZLENBQUMs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bUU7O0lBQ25FLHlDQUFjOztJQUdiLHFDQUlDOztJQUNELDBDQUFxRDs7Ozs7SUFDckQsd0RBQXdEOzs7OztJQUN4RCwyQ0FBOEI7Ozs7O0lBQzlCLG9DQUFvQjs7Ozs7SUFDcEIsb0NBQThCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuXHRDb21wb25lbnQsXHJcblx0T25Jbml0LFxyXG5cdEluamVjdCxcclxuXHRWaWV3Q2hpbGRyZW4sXHJcblx0UXVlcnlMaXN0LFxyXG5cdENoYW5nZURldGVjdG9yUmVmLFxyXG59IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7IE1BVF9ESUFMT0dfREFUQSwgTWF0RGlhbG9nUmVmIH0gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsXCI7XHJcbmltcG9ydCB7IERhc2hib2FyZFBvcmxldHNTZXJ2aWNlIH0gZnJvbSBcIi4uLy4uL2Rhc2hib2FyZFBvcmxldHMuc2VydmljZVwiO1xyXG5pbXBvcnQgeyBIdHRwQ2xpZW50IH0gZnJvbSBcIkBhbmd1bGFyL2NvbW1vbi9odHRwXCI7XHJcbmltcG9ydCB7IEFwaUxpc3QgfSBmcm9tIFwiLi4vLi4vYXBpXCI7XHJcbmltcG9ydCB7XHJcblx0RXhjZWxFeHBvcnRQcm9wZXJ0aWVzLFxyXG5cdENvbHVtbk1vZGVsLFxyXG59IGZyb20gXCJAc3luY2Z1c2lvbi9lajItYW5ndWxhci1ncmlkc1wiO1xyXG5pbXBvcnQgeyBJQXhpc1NldCB9IGZyb20gXCJAc3luY2Z1c2lvbi9lajItYW5ndWxhci1waXZvdHZpZXdcIjtcclxuaW1wb3J0IHsgZmluZCB9IGZyb20gXCJsb2Rhc2hcIjtcclxuXHJcbmltcG9ydCB7IEdhZGdldFRhYmxlQ29tcG9uZW50IH0gZnJvbSBcIi4uLy4uL2dhZGdldC1ncm91cC9nYWRnZXQtdGFibGUvZ2FkZ2V0LXRhYmxlLmNvbXBvbmVudFwiO1xyXG5pbXBvcnQgeyBHYWRnZXRQaXZvdENoYXJ0Q29tcG9uZW50IH0gZnJvbSBcIi4uLy4uL2dhZGdldC1ncm91cC9nYWRnZXQtcGl2b3QtY2hhcnQvZ2FkZ2V0LXBpdm90LmNvbXBvbmVudFwiO1xyXG5pbXBvcnQgeyBHYWRnZXRQaXZvdENvbXBvbmVudCB9IGZyb20gXCIuLi8uLi9nYWRnZXQtZ3JvdXAvZ2FkZ2V0LXBpdm90L2dhZGdldC1waXZvdC5jb21wb25lbnRcIjtcclxuaW1wb3J0IHsgQmFyQ2hhcnRzQ29tcG9uZW50IH0gZnJvbSBcIi4uLy4uL2Jhci1jaGFydHMvYmFyLWNoYXJ0cy5jb21wb25lbnRcIjtcclxuXHJcbkBDb21wb25lbnQoe1xyXG5cdHNlbGVjdG9yOiBcImt0LXBhbmUtZG93bmxvYWRcIixcclxuXHR0ZW1wbGF0ZVVybDogXCIuL2luZGV4LmNvbXBvbmVudC5odG1sXCIsXHJcblx0c3R5bGVVcmxzOiBbXCIuL2luZGV4LmNvbXBvbmVudC5zY3NzXCJdLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgUGFuZURvd25sb2FkQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcclxuXHR0cmFuc2xhdGlvbjtcclxuXHRAVmlld0NoaWxkcmVuKFwiZHRhYmxlXCIpXHJcblx0cHVibGljIHRhYmxlOiBRdWVyeUxpc3Q8R2FkZ2V0VGFibGVDb21wb25lbnQ+O1xyXG5cdEBWaWV3Q2hpbGRyZW4oXCJkcGl2b3RcIilcclxuXHRwdWJsaWMgcGl2b3Q6IFF1ZXJ5TGlzdDxHYWRnZXRQaXZvdENvbXBvbmVudCB8IEdhZGdldFBpdm90Q2hhcnRDb21wb25lbnQ+O1xyXG5cdEBWaWV3Q2hpbGRyZW4oXCJkbmV3Q2hhcnRcIikgbmV3Q2hhcnQ6IFF1ZXJ5TGlzdDxCYXJDaGFydHNDb21wb25lbnQ+O1xyXG5cdHBvcnRsZXRzID0gW107XHJcblxyXG5cdGNvbnN0cnVjdG9yKFxyXG5cdFx0QEluamVjdChNQVRfRElBTE9HX0RBVEEpXHJcblx0XHRwdWJsaWMgZGF0YTogYW55ID0ge1xyXG5cdFx0XHRwb3J0bGV0czogW10sXHJcblx0XHRcdGRhc2hib2FyZDogbnVsbCxcclxuXHRcdH0sXHJcblx0XHRwdWJsaWMgZGlhbG9nUmVmOiBNYXREaWFsb2dSZWY8UGFuZURvd25sb2FkQ29tcG9uZW50PixcclxuXHRcdHByaXZhdGUgRGFzaGJvYXJkUG9ybGV0c1NlcnZpY2U6IERhc2hib2FyZFBvcmxldHNTZXJ2aWNlLFxyXG5cdFx0cHJpdmF0ZSBodHRwQ2xpZW50OiBIdHRwQ2xpZW50LFxyXG5cdFx0cHJpdmF0ZSBhcGk6IEFwaUxpc3QsXHJcblx0XHRwcml2YXRlIHJlZjogQ2hhbmdlRGV0ZWN0b3JSZWZcclxuXHQpIHt9XHJcblxyXG5cdG5nT25Jbml0KCkge1xyXG5cdFx0dGhpcy50cmFuc2xhdGlvbiA9IEpTT04ucGFyc2UobG9jYWxTdG9yYWdlLmdldEl0ZW0oXCJ0cmFuc2xhdGlvblwiKSk7XHJcblx0XHR0aGlzLnBvcnRsZXRzID0gdGhpcy5kYXRhLnBvcnRsZXRzLmZpbHRlcigoaXRlbSkgPT4ge1xyXG5cdFx0XHRjb25zdCB0eXBlID0gdGhpcy5nZXRQb3J0bGV0VHlwZShpdGVtKTtcclxuXHRcdFx0cmV0dXJuIHR5cGUgIT09IFwidHJhbnNwb3NlXCI7XHJcblx0XHR9KTtcclxuXHR9XHJcblxyXG5cdGNsb3NlKCkge1xyXG5cdFx0dGhpcy5kaWFsb2dSZWYuY2xvc2UoKTtcclxuXHR9XHJcblxyXG5cdGFzeW5jIGRvd25sb2FkQWxsKCkge1xyXG5cdFx0Zm9yIChsZXQgcG9ydGxldCBvZiB0aGlzLnBvcnRsZXRzKSB7XHJcblx0XHRcdGF3YWl0IHRoaXMuZG93bmxvYWQocG9ydGxldCk7XHJcblx0XHR9XHJcblx0XHRzZXRUaW1lb3V0KCgpID0+IHtcclxuXHRcdFx0dGhpcy5jbG9zZSgpO1xyXG5cdFx0fSwgMjAwKTtcclxuXHR9XHJcblxyXG5cdEdldGdhZGdldFRpdGxlKGNvbmZpZykge1xyXG5cdFx0aWYgKGNvbmZpZyAmJiBjb25maWcgIT09IFwibnVsbFwiKSB7XHJcblx0XHRcdGxldCBjb25maWdfID0gSlNPTi5wYXJzZShjb25maWcpO1xyXG5cdFx0XHRyZXR1cm4gY29uZmlnXy5nYWRnZXRUaXRsZTtcclxuXHRcdH0gZWxzZSB7XHJcblx0XHRcdHJldHVybiBcIlwiO1xyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0YXN5bmMgZG93bmxvYWQoaXRlbSkge1xyXG5cdFx0cmV0dXJuIG5ldyBQcm9taXNlKGFzeW5jIChyZXNvbHZlKSA9PiB7XHJcblx0XHRcdGNvbnN0IHBvcnRsZXRUeXBlID0gdGhpcy5nZXRQb3J0bGV0VHlwZShpdGVtKTtcclxuXHRcdFx0Y29uc3QgdGl0bGUgPSB0aGlzLkdldGdhZGdldFRpdGxlKGl0ZW0uY29uZmlnKTtcclxuXHRcdFx0c3dpdGNoIChwb3J0bGV0VHlwZSkge1xyXG5cdFx0XHRcdGNhc2UgXCJ0YWJsZVwiOlxyXG5cdFx0XHRcdFx0YXdhaXQgdGhpcy5kb3dubG9hZFRhYmxlKGl0ZW0sIHRpdGxlKTtcclxuXHRcdFx0XHRcdGJyZWFrO1xyXG5cdFx0XHRcdGNhc2UgXCJuZXdjaGFydFwiOlxyXG5cdFx0XHRcdGNhc2UgXCJwaXZvdFwiOlxyXG5cdFx0XHRcdFx0Y29uc3QgcGl2b3QgPSBmaW5kKFxyXG5cdFx0XHRcdFx0XHQodGhpcy5waXZvdCBhcyBhbnkpLl9yZXN1bHRzLFxyXG5cdFx0XHRcdFx0XHQoZWwpID0+IGVsLnBvcnRsZXQubmV3SWQgPT09IGl0ZW0ubmV3SWRcclxuXHRcdFx0XHRcdCk7XHJcblx0XHRcdFx0XHRjb25zdCBleGNlbEV4cG9ydFByb3BlcnRpZXNfcGl2b3Q6IEV4Y2VsRXhwb3J0UHJvcGVydGllcyA9IHtcclxuXHRcdFx0XHRcdFx0ZmlsZU5hbWU6IHRpdGxlXHJcblx0XHRcdFx0XHRcdFx0PyB0aXRsZSArIFwiLnhsc3hcIlxyXG5cdFx0XHRcdFx0XHRcdDogXCJQaXZvdC1cIiArIG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKSArIFwiLnhsc3hcIixcclxuXHRcdFx0XHRcdH07XHJcblx0XHRcdFx0XHRpZiAocGl2b3QucGl2b3RPYmouZGF0YVNvdXJjZVNldHRpbmdzLmZvcm1hdFNldHRpbmdzKSB7XHJcblx0XHRcdFx0XHRcdHBpdm90LnBpdm90T2JqLmRhdGFTb3VyY2VTZXR0aW5ncy5mb3JtYXRTZXR0aW5ncy5mb3JFYWNoKFxyXG5cdFx0XHRcdFx0XHRcdChzZXR0aW5nKSA9PiB7XHJcblx0XHRcdFx0XHRcdFx0XHQvLyBzeW5jZnVzaW9uIGZvcm1hdCB0cmFuc2Zvcm0gdG8gZXhjZWwgZm9ybWF0XHJcblx0XHRcdFx0XHRcdFx0XHRjb25zdCBtYXAgPSB7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFwiIywjIyMsLC4wOygjLCMjIywsLjApXCI6ICcwLjAsLFwiXCI7KDAuMCwsKScsXHJcblx0XHRcdFx0XHRcdFx0XHRcdCcwLjAsLFwiXCI7KDAuMCwsKSc6IFwiIywjIyMsLC4wOygjLCMjIywsLjApXCIsXHJcblx0XHRcdFx0XHRcdFx0XHRcdFwiIywjIyMsLDsoIywjIyMsLClcIjogJzAsLFwiXCI7KDAsLCknLFxyXG5cdFx0XHRcdFx0XHRcdFx0XHQnMCwsXCJcIjsoMCwsKSc6IFwiIywjIyMsLDsoIywjIyMsLClcIixcclxuXHRcdFx0XHRcdFx0XHRcdFx0XCIjLCMjIywsLjAwOygjLCMjIywsLjAwKVwiOlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdCcwLjAwLCxcIlwiOygwLjAwLCwpJyxcclxuXHRcdFx0XHRcdFx0XHRcdFx0JzAuMDAsLFwiXCI7KDAuMDAsLCknOlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFwiIywjIyMsLC4wMDsoIywjIyMsLC4wMClcIixcclxuXHRcdFx0XHRcdFx0XHRcdH07XHJcblxyXG5cdFx0XHRcdFx0XHRcdFx0aWYgKG1hcFtzZXR0aW5nLmZvcm1hdF0pIHtcclxuXHRcdFx0XHRcdFx0XHRcdFx0c2V0dGluZy5mb3JtYXQgPSBtYXBbc2V0dGluZy5mb3JtYXRdO1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRzZXRUaW1lb3V0KCgpID0+IHtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRzZXR0aW5nLmZvcm1hdCA9IG1hcFtzZXR0aW5nLmZvcm1hdF07XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0dGhpcy5yZWYubWFya0ZvckNoZWNrKCk7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0dGhpcy5yZWYuZGV0ZWN0Q2hhbmdlcygpO1xyXG5cdFx0XHRcdFx0XHRcdFx0XHR9KTtcclxuXHRcdFx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdCk7XHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHR0aGlzLnVwZGF0ZUZvcm1hdChcclxuXHRcdFx0XHRcdFx0cGl2b3QucGl2b3RPYmouZ3JpZC5jb2x1bW5zIGFzIENvbHVtbk1vZGVsW10sXHJcblx0XHRcdFx0XHRcdHBpdm90LnBpdm90T2JqXHJcblx0XHRcdFx0XHQpO1xyXG5cdFx0XHRcdFx0cGl2b3QucGl2b3RPYmouZXhjZWxFeHBvcnQoZXhjZWxFeHBvcnRQcm9wZXJ0aWVzX3Bpdm90KTtcclxuXHRcdFx0XHRcdGJyZWFrO1xyXG5cdFx0XHRcdGNhc2UgXCJuZXdjb2x1bW5cIjpcclxuXHRcdFx0XHRjYXNlIFwibmV3bGluZVwiOlxyXG5cdFx0XHRcdGNhc2UgXCJuZXdjb2x1bW5saW5lXCI6XHJcblx0XHRcdFx0XHRjb25zdCBjaGFydElkeCA9IHRoaXMuZ2V0Q2hhcnRJbmRleEluQWxsKGl0ZW0pO1xyXG5cdFx0XHRcdFx0Y29uc3Qgc2VsZWN0ZWRDb21wb25lbnQgPSB0aGlzLm5ld0NoYXJ0LnRvQXJyYXkoKVtjaGFydElkeF07XHJcblx0XHRcdFx0XHRzZWxlY3RlZENvbXBvbmVudC5leHBvcnRDaGFydCgpO1xyXG5cdFx0XHRcdFx0YnJlYWs7XHJcblx0XHRcdH1cclxuXHRcdFx0cmVzb2x2ZSh0cnVlKTtcclxuXHRcdH0pO1xyXG5cdH1cclxuXHJcblx0Ly8g5qC55o2uaWR46I635Y+W54K55Ye75Zu+6KGo5Zyo5Zu+6KGo5YiX6KGo6YeM55qE55yf5q2j6aG65bqPXHJcblx0Z2V0Q2hhcnRJbmRleEluQWxsKGl0ZW0pIHtcclxuXHRcdGNvbnN0IGNoYXJBcnIgPSB0aGlzLnBvcnRsZXRzLmZpbHRlcigoZSkgPT4ge1xyXG5cdFx0XHRyZXR1cm4gW1wibmV3Y29sdW1uXCIsIFwibmV3bGluZVwiLCBcIm5ld2NvbHVtbmxpbmVcIl0uaW5jbHVkZXMoXHJcblx0XHRcdFx0SlNPTi5wYXJzZShlLmNvbmZpZykucG9ydGxldFR5cGVcclxuXHRcdFx0KTtcclxuXHRcdH0pO1xyXG5cdFx0bGV0IHJlc3VsdElkeCA9IDA7XHJcblx0XHRpZiAoY2hhckFyci5sZW5ndGggPiAwKSB7XHJcblx0XHRcdGNoYXJBcnIuZm9yRWFjaCgoZSwgaWR4KSA9PiB7XHJcblx0XHRcdFx0aWYgKGUubmV3SWQgPT0gaXRlbS5uZXdJZCkge1xyXG5cdFx0XHRcdFx0cmVzdWx0SWR4ID0gaWR4O1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0fSk7XHJcblx0XHR9XHJcblx0XHRyZXR1cm4gcmVzdWx0SWR4O1xyXG5cdH1cclxuXHJcblx0cHVibGljIGRvd25sb2FkVGFibGUoaXRlbSwgdGl0bGUpIHtcclxuXHRcdC8vIFRhYmxlIOS4i+i9veWFqOmDqOaVsOaNrlxyXG5cdFx0bGV0IGNvbmZpZyA9IEpTT04ucGFyc2UoaXRlbS5jb25maWcpO1xyXG5cdFx0bGV0IHBhZ2VTZXR0aW5nID0gT2JqZWN0LmFzc2lnbihcclxuXHRcdFx0e1xyXG5cdFx0XHRcdGN1cnJlbnRQYWdlOiAxLFxyXG5cdFx0XHRcdHBhZ2VTaXplOiA5OTk5OTk5LFxyXG5cdFx0XHR9LFxyXG5cdFx0XHRjb25maWcgJiYgY29uZmlnLnRhYmxlU29ydFNldHRpbmdcclxuXHRcdCk7XHJcblx0XHRsZXQgcGFyYW1zID0gdGhpcy5EYXNoYm9hcmRQb3JsZXRzU2VydmljZS5nZXRQYXJhbXNCeVBvcnRsZXQoXHJcblx0XHRcdGl0ZW0sXHJcblx0XHRcdHBhZ2VTZXR0aW5nXHJcblx0XHQpO1xyXG5cdFx0cmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlKSA9PiB7XHJcblx0XHRcdC8vIGpzb24gYnVmZmVyXHJcblx0XHRcdHRoaXMuaHR0cENsaWVudFxyXG5cdFx0XHRcdC5wb3N0KFxyXG5cdFx0XHRcdFx0dGhpcy5hcGkuYmFzZXVybCArIHRoaXMuYXBpLnVybExpc3QuR2V0UG9ydGxldERhdGFWMixcclxuXHRcdFx0XHRcdHBhcmFtc1xyXG5cdFx0XHRcdClcclxuXHRcdFx0XHQuc3Vic2NyaWJlKFxyXG5cdFx0XHRcdFx0KHJlc3VsdCkgPT4ge1xyXG5cdFx0XHRcdFx0XHRpZiAocmVzdWx0KSB7XHJcblx0XHRcdFx0XHRcdFx0Y29uc3QgdGFibGUgPSBmaW5kKFxyXG5cdFx0XHRcdFx0XHRcdFx0KHRoaXMudGFibGUgYXMgYW55KS5fcmVzdWx0cyxcclxuXHRcdFx0XHRcdFx0XHRcdChlbCkgPT4gZWwucG9ydGxldC5uZXdJZCA9PT0gaXRlbS5uZXdJZFxyXG5cdFx0XHRcdFx0XHRcdCk7XHJcblx0XHRcdFx0XHRcdFx0Y29uc3QgZXhjZWxFeHBvcnRQcm9wZXJ0aWVzOiBFeGNlbEV4cG9ydFByb3BlcnRpZXMgPVxyXG5cdFx0XHRcdFx0XHRcdFx0e1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRmaWxlTmFtZTogdGl0bGVcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHQ/IHRpdGxlICsgXCIueGxzeFwiXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0OiBcIlRhYmxlLVwiICtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHQgIG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKSArXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0ICBcIi54bHN4XCIsXHJcblx0XHRcdFx0XHRcdFx0XHRcdC8vIEB0cy1pZ25vcmVcclxuXHRcdFx0XHRcdFx0XHRcdFx0ZGF0YVNvdXJjZTogcmVzdWx0LmRhdGEsXHJcblx0XHRcdFx0XHRcdFx0XHR9O1xyXG5cdFx0XHRcdFx0XHRcdGlmICh0YWJsZSkge1xyXG5cdFx0XHRcdFx0XHRcdFx0dGFibGUuZ3JpZC5leGNlbEV4cG9ydChleGNlbEV4cG9ydFByb3BlcnRpZXMpO1xyXG5cdFx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHRyZXNvbHZlKHRydWUpO1xyXG5cdFx0XHRcdFx0fSxcclxuXHRcdFx0XHRcdChyZXNwb25zZSkgPT4ge30sXHJcblx0XHRcdFx0XHQoKSA9PiB7fVxyXG5cdFx0XHRcdCk7XHJcblx0XHR9KTtcclxuXHR9XHJcblxyXG5cdHByaXZhdGUgdXBkYXRlRm9ybWF0KGNvbHVtbnM6IENvbHVtbk1vZGVsW10sIHBpdm90T2JqKSB7XHJcblx0XHR2YXIgZkxpc3QgPSBwaXZvdE9iai5yZW5kZXJNb2R1bGUuZ2V0Rm9ybWF0TGlzdCgpO1xyXG5cdFx0Zm9yICh2YXIgaSA9IDA7IGkgPCBjb2x1bW5zLmxlbmd0aDsgaSsrKSB7XHJcblx0XHRcdGlmIChcclxuXHRcdFx0XHQoY29sdW1uc1tpXSBhcyBDb2x1bW5Nb2RlbCkuY29sdW1ucyAmJlxyXG5cdFx0XHRcdChjb2x1bW5zW2ldIGFzIENvbHVtbk1vZGVsKS5jb2x1bW5zLmxlbmd0aCA+IDBcclxuXHRcdFx0KSB7XHJcblx0XHRcdFx0dGhpcy51cGRhdGVGb3JtYXQoXHJcblx0XHRcdFx0XHQoY29sdW1uc1tpXSBhcyBDb2x1bW5Nb2RlbCkuY29sdW1ucyBhcyBDb2x1bW5Nb2RlbFtdLFxyXG5cdFx0XHRcdFx0cGl2b3RPYmpcclxuXHRcdFx0XHQpO1xyXG5cdFx0XHR9IGVsc2Uge1xyXG5cdFx0XHRcdGlmIChcclxuXHRcdFx0XHRcdGNvbHVtbnNbaV0uY3VzdG9tQXR0cmlidXRlcyAmJlxyXG5cdFx0XHRcdFx0Zkxpc3RbXHJcblx0XHRcdFx0XHRcdChjb2x1bW5zW2ldLmN1c3RvbUF0dHJpYnV0ZXMuY2VsbCBhcyBJQXhpc1NldClcclxuXHRcdFx0XHRcdFx0XHQuYWN0dWFsVGV4dFxyXG5cdFx0XHRcdFx0XSA9PT0gXCJOXCJcclxuXHRcdFx0XHQpIHtcclxuXHRcdFx0XHRcdChjb2x1bW5zW2ldIGFzIENvbHVtbk1vZGVsKS5mb3JtYXQgPSB1bmRlZmluZWQ7XHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9XHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHRwdWJsaWMgZ2V0UG9ydGxldFR5cGUoaXRlbSkge1xyXG5cdFx0Y29uc3QgY29uZmlnID0gaXRlbSAmJiBpdGVtLmNvbmZpZyA/IEpTT04ucGFyc2UoaXRlbS5jb25maWcpIDoge307XHJcblx0XHRpZiAoY29uZmlnLnBvcnRsZXRUeXBlKSB7XHJcblx0XHRcdGlmIChjb25maWcucG9ydGxldFR5cGUgPT09IFwiaGlzdG9yaWNhbElSUlwiKSB7XHJcblx0XHRcdFx0cmV0dXJuIGNvbmZpZy5zZWxlY3RlZFZpc3VhbFR5cGU7XHJcblx0XHRcdH1cclxuXHRcdFx0cmV0dXJuIGNvbmZpZy5wb3J0bGV0VHlwZTtcclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdHVwZGF0ZVBvcmxldENvbmZpZyhldmVudCkge1xyXG5cdFx0Ly8g5aSE55CG6YWN572u5pu05pawXHJcblx0XHRjb25zb2xlLmxvZygndXBkYXRlUG9ybGV0Q29uZmlnIGNhbGxlZCB3aXRoOicsIGV2ZW50KTtcclxuXHR9XHJcbn1cclxuIl19
358
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vcmFpc2UtY29tbW9uLWxpYi8iLCJzb3VyY2VzIjpbImxpYi9kYXNoYm9hcmQvZGlhbG9nLWdyb3VwL2Rvd25sb2FkL2luZGV4LmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSxPQUFPLEVBQ04sU0FBUyxFQUVULE1BQU0sRUFDTixZQUFZLEVBQ1osU0FBUyxFQUNULGlCQUFpQixHQUNqQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsZUFBZSxFQUFFLFlBQVksRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ2xFLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ3pFLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNsRCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBTXBDLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxRQUFRLENBQUM7QUFZOUIsTUFBTSxPQUFPLHFCQUFxQjs7Ozs7Ozs7O0lBU2pDLFlBRVEsT0FBWTtRQUNsQixRQUFRLEVBQUUsRUFBRTtRQUNaLFNBQVMsRUFBRSxJQUFJO0tBQ2YsRUFDTSxTQUE4QyxFQUM3Qyx1QkFBZ0QsRUFDaEQsVUFBc0IsRUFDdEIsR0FBWSxFQUNaLEdBQXNCO1FBUnZCLFNBQUksR0FBSixJQUFJLENBR1Y7UUFDTSxjQUFTLEdBQVQsU0FBUyxDQUFxQztRQUM3Qyw0QkFBdUIsR0FBdkIsdUJBQXVCLENBQXlCO1FBQ2hELGVBQVUsR0FBVixVQUFVLENBQVk7UUFDdEIsUUFBRyxHQUFILEdBQUcsQ0FBUztRQUNaLFFBQUcsR0FBSCxHQUFHLENBQW1CO1FBWi9CLGFBQVEsR0FBRyxFQUFFLENBQUM7SUFhWCxDQUFDOzs7O0lBRUosUUFBUTtRQUNQLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxZQUFZLENBQUMs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bUU7O0lBQ25FLHlDQUFjOztJQUdiLHFDQUlDOztJQUNELDBDQUFxRDs7Ozs7SUFDckQsd0RBQXdEOzs7OztJQUN4RCwyQ0FBOEI7Ozs7O0lBQzlCLG9DQUFvQjs7Ozs7SUFDcEIsb0NBQThCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuXHRDb21wb25lbnQsXHJcblx0T25Jbml0LFxyXG5cdEluamVjdCxcclxuXHRWaWV3Q2hpbGRyZW4sXHJcblx0UXVlcnlMaXN0LFxyXG5cdENoYW5nZURldGVjdG9yUmVmLFxyXG59IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7IE1BVF9ESUFMT0dfREFUQSwgTWF0RGlhbG9nUmVmIH0gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsXCI7XHJcbmltcG9ydCB7IERhc2hib2FyZFBvcmxldHNTZXJ2aWNlIH0gZnJvbSBcIi4uLy4uL2Rhc2hib2FyZFBvcmxldHMuc2VydmljZVwiO1xyXG5pbXBvcnQgeyBIdHRwQ2xpZW50IH0gZnJvbSBcIkBhbmd1bGFyL2NvbW1vbi9odHRwXCI7XHJcbmltcG9ydCB7IEFwaUxpc3QgfSBmcm9tIFwiLi4vLi4vYXBpXCI7XHJcbmltcG9ydCB7XHJcblx0RXhjZWxFeHBvcnRQcm9wZXJ0aWVzLFxyXG5cdENvbHVtbk1vZGVsLFxyXG59IGZyb20gXCJAc3luY2Z1c2lvbi9lajItYW5ndWxhci1ncmlkc1wiO1xyXG5pbXBvcnQgeyBJQXhpc1NldCB9IGZyb20gXCJAc3luY2Z1c2lvbi9lajItYW5ndWxhci1waXZvdHZpZXdcIjtcclxuaW1wb3J0IHsgZmluZCB9IGZyb20gXCJsb2Rhc2hcIjtcclxuXHJcbmltcG9ydCB7IEdhZGdldFRhYmxlQ29tcG9uZW50IH0gZnJvbSBcIi4uLy4uL2dhZGdldC1ncm91cC9nYWRnZXQtdGFibGUvZ2FkZ2V0LXRhYmxlLmNvbXBvbmVudFwiO1xyXG5pbXBvcnQgeyBHYWRnZXRQaXZvdENoYXJ0Q29tcG9uZW50IH0gZnJvbSBcIi4uLy4uL2dhZGdldC1ncm91cC9nYWRnZXQtcGl2b3QtY2hhcnQvZ2FkZ2V0LXBpdm90LmNvbXBvbmVudFwiO1xyXG5pbXBvcnQgeyBHYWRnZXRQaXZvdENvbXBvbmVudCB9IGZyb20gXCIuLi8uLi9nYWRnZXQtZ3JvdXAvZ2FkZ2V0LXBpdm90L2dhZGdldC1waXZvdC5jb21wb25lbnRcIjtcclxuaW1wb3J0IHsgQmFyQ2hhcnRzQ29tcG9uZW50IH0gZnJvbSBcIi4uLy4uL2Jhci1jaGFydHMvYmFyLWNoYXJ0cy5jb21wb25lbnRcIjtcclxuXHJcbkBDb21wb25lbnQoe1xyXG5cdHNlbGVjdG9yOiBcInJzLXBhbmUtZG93bmxvYWRcIixcclxuXHR0ZW1wbGF0ZVVybDogXCIuL2luZGV4LmNvbXBvbmVudC5odG1sXCIsXHJcblx0c3R5bGVVcmxzOiBbXCIuL2luZGV4LmNvbXBvbmVudC5zY3NzXCJdLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgUGFuZURvd25sb2FkQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcclxuXHR0cmFuc2xhdGlvbjtcclxuXHRAVmlld0NoaWxkcmVuKFwiZHRhYmxlXCIpXHJcblx0cHVibGljIHRhYmxlOiBRdWVyeUxpc3Q8R2FkZ2V0VGFibGVDb21wb25lbnQ+O1xyXG5cdEBWaWV3Q2hpbGRyZW4oXCJkcGl2b3RcIilcclxuXHRwdWJsaWMgcGl2b3Q6IFF1ZXJ5TGlzdDxHYWRnZXRQaXZvdENvbXBvbmVudCB8IEdhZGdldFBpdm90Q2hhcnRDb21wb25lbnQ+O1xyXG5cdEBWaWV3Q2hpbGRyZW4oXCJkbmV3Q2hhcnRcIikgbmV3Q2hhcnQ6IFF1ZXJ5TGlzdDxCYXJDaGFydHNDb21wb25lbnQ+O1xyXG5cdHBvcnRsZXRzID0gW107XHJcblxyXG5cdGNvbnN0cnVjdG9yKFxyXG5cdFx0QEluamVjdChNQVRfRElBTE9HX0RBVEEpXHJcblx0XHRwdWJsaWMgZGF0YTogYW55ID0ge1xyXG5cdFx0XHRwb3J0bGV0czogW10sXHJcblx0XHRcdGRhc2hib2FyZDogbnVsbCxcclxuXHRcdH0sXHJcblx0XHRwdWJsaWMgZGlhbG9nUmVmOiBNYXREaWFsb2dSZWY8UGFuZURvd25sb2FkQ29tcG9uZW50PixcclxuXHRcdHByaXZhdGUgRGFzaGJvYXJkUG9ybGV0c1NlcnZpY2U6IERhc2hib2FyZFBvcmxldHNTZXJ2aWNlLFxyXG5cdFx0cHJpdmF0ZSBodHRwQ2xpZW50OiBIdHRwQ2xpZW50LFxyXG5cdFx0cHJpdmF0ZSBhcGk6IEFwaUxpc3QsXHJcblx0XHRwcml2YXRlIHJlZjogQ2hhbmdlRGV0ZWN0b3JSZWZcclxuXHQpIHt9XHJcblxyXG5cdG5nT25Jbml0KCkge1xyXG5cdFx0dGhpcy50cmFuc2xhdGlvbiA9IEpTT04ucGFyc2UobG9jYWxTdG9yYWdlLmdldEl0ZW0oXCJ0cmFuc2xhdGlvblwiKSk7XHJcblx0XHR0aGlzLnBvcnRsZXRzID0gdGhpcy5kYXRhLnBvcnRsZXRzLmZpbHRlcigoaXRlbSkgPT4ge1xyXG5cdFx0XHRjb25zdCB0eXBlID0gdGhpcy5nZXRQb3J0bGV0VHlwZShpdGVtKTtcclxuXHRcdFx0cmV0dXJuIHR5cGUgIT09IFwidHJhbnNwb3NlXCI7XHJcblx0XHR9KTtcclxuXHR9XHJcblxyXG5cdGNsb3NlKCkge1xyXG5cdFx0dGhpcy5kaWFsb2dSZWYuY2xvc2UoKTtcclxuXHR9XHJcblxyXG5cdGFzeW5jIGRvd25sb2FkQWxsKCkge1xyXG5cdFx0Zm9yIChsZXQgcG9ydGxldCBvZiB0aGlzLnBvcnRsZXRzKSB7XHJcblx0XHRcdGF3YWl0IHRoaXMuZG93bmxvYWQocG9ydGxldCk7XHJcblx0XHR9XHJcblx0XHRzZXRUaW1lb3V0KCgpID0+IHtcclxuXHRcdFx0dGhpcy5jbG9zZSgpO1xyXG5cdFx0fSwgMjAwKTtcclxuXHR9XHJcblxyXG5cdEdldGdhZGdldFRpdGxlKGNvbmZpZykge1xyXG5cdFx0aWYgKGNvbmZpZyAmJiBjb25maWcgIT09IFwibnVsbFwiKSB7XHJcblx0XHRcdGxldCBjb25maWdfID0gSlNPTi5wYXJzZShjb25maWcpO1xyXG5cdFx0XHRyZXR1cm4gY29uZmlnXy5nYWRnZXRUaXRsZTtcclxuXHRcdH0gZWxzZSB7XHJcblx0XHRcdHJldHVybiBcIlwiO1xyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0YXN5bmMgZG93bmxvYWQoaXRlbSkge1xyXG5cdFx0cmV0dXJuIG5ldyBQcm9taXNlKGFzeW5jIChyZXNvbHZlKSA9PiB7XHJcblx0XHRcdGNvbnN0IHBvcnRsZXRUeXBlID0gdGhpcy5nZXRQb3J0bGV0VHlwZShpdGVtKTtcclxuXHRcdFx0Y29uc3QgdGl0bGUgPSB0aGlzLkdldGdhZGdldFRpdGxlKGl0ZW0uY29uZmlnKTtcclxuXHRcdFx0c3dpdGNoIChwb3J0bGV0VHlwZSkge1xyXG5cdFx0XHRcdGNhc2UgXCJ0YWJsZVwiOlxyXG5cdFx0XHRcdFx0YXdhaXQgdGhpcy5kb3dubG9hZFRhYmxlKGl0ZW0sIHRpdGxlKTtcclxuXHRcdFx0XHRcdGJyZWFrO1xyXG5cdFx0XHRcdGNhc2UgXCJuZXdjaGFydFwiOlxyXG5cdFx0XHRcdGNhc2UgXCJwaXZvdFwiOlxyXG5cdFx0XHRcdFx0Y29uc3QgcGl2b3QgPSBmaW5kKFxyXG5cdFx0XHRcdFx0XHQodGhpcy5waXZvdCBhcyBhbnkpLl9yZXN1bHRzLFxyXG5cdFx0XHRcdFx0XHQoZWwpID0+IGVsLnBvcnRsZXQubmV3SWQgPT09IGl0ZW0ubmV3SWRcclxuXHRcdFx0XHRcdCk7XHJcblx0XHRcdFx0XHRjb25zdCBleGNlbEV4cG9ydFByb3BlcnRpZXNfcGl2b3Q6IEV4Y2VsRXhwb3J0UHJvcGVydGllcyA9IHtcclxuXHRcdFx0XHRcdFx0ZmlsZU5hbWU6IHRpdGxlXHJcblx0XHRcdFx0XHRcdFx0PyB0aXRsZSArIFwiLnhsc3hcIlxyXG5cdFx0XHRcdFx0XHRcdDogXCJQaXZvdC1cIiArIG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKSArIFwiLnhsc3hcIixcclxuXHRcdFx0XHRcdH07XHJcblx0XHRcdFx0XHRpZiAocGl2b3QucGl2b3RPYmouZGF0YVNvdXJjZVNldHRpbmdzLmZvcm1hdFNldHRpbmdzKSB7XHJcblx0XHRcdFx0XHRcdHBpdm90LnBpdm90T2JqLmRhdGFTb3VyY2VTZXR0aW5ncy5mb3JtYXRTZXR0aW5ncy5mb3JFYWNoKFxyXG5cdFx0XHRcdFx0XHRcdChzZXR0aW5nKSA9PiB7XHJcblx0XHRcdFx0XHRcdFx0XHQvLyBzeW5jZnVzaW9uIGZvcm1hdCB0cmFuc2Zvcm0gdG8gZXhjZWwgZm9ybWF0XHJcblx0XHRcdFx0XHRcdFx0XHRjb25zdCBtYXAgPSB7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFwiIywjIyMsLC4wOygjLCMjIywsLjApXCI6ICcwLjAsLFwiXCI7KDAuMCwsKScsXHJcblx0XHRcdFx0XHRcdFx0XHRcdCcwLjAsLFwiXCI7KDAuMCwsKSc6IFwiIywjIyMsLC4wOygjLCMjIywsLjApXCIsXHJcblx0XHRcdFx0XHRcdFx0XHRcdFwiIywjIyMsLDsoIywjIyMsLClcIjogJzAsLFwiXCI7KDAsLCknLFxyXG5cdFx0XHRcdFx0XHRcdFx0XHQnMCwsXCJcIjsoMCwsKSc6IFwiIywjIyMsLDsoIywjIyMsLClcIixcclxuXHRcdFx0XHRcdFx0XHRcdFx0XCIjLCMjIywsLjAwOygjLCMjIywsLjAwKVwiOlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdCcwLjAwLCxcIlwiOygwLjAwLCwpJyxcclxuXHRcdFx0XHRcdFx0XHRcdFx0JzAuMDAsLFwiXCI7KDAuMDAsLCknOlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFwiIywjIyMsLC4wMDsoIywjIyMsLC4wMClcIixcclxuXHRcdFx0XHRcdFx0XHRcdH07XHJcblxyXG5cdFx0XHRcdFx0XHRcdFx0aWYgKG1hcFtzZXR0aW5nLmZvcm1hdF0pIHtcclxuXHRcdFx0XHRcdFx0XHRcdFx0c2V0dGluZy5mb3JtYXQgPSBtYXBbc2V0dGluZy5mb3JtYXRdO1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRzZXRUaW1lb3V0KCgpID0+IHtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRzZXR0aW5nLmZvcm1hdCA9IG1hcFtzZXR0aW5nLmZvcm1hdF07XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0dGhpcy5yZWYubWFya0ZvckNoZWNrKCk7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0dGhpcy5yZWYuZGV0ZWN0Q2hhbmdlcygpO1xyXG5cdFx0XHRcdFx0XHRcdFx0XHR9KTtcclxuXHRcdFx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdCk7XHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHR0aGlzLnVwZGF0ZUZvcm1hdChcclxuXHRcdFx0XHRcdFx0cGl2b3QucGl2b3RPYmouZ3JpZC5jb2x1bW5zIGFzIENvbHVtbk1vZGVsW10sXHJcblx0XHRcdFx0XHRcdHBpdm90LnBpdm90T2JqXHJcblx0XHRcdFx0XHQpO1xyXG5cdFx0XHRcdFx0cGl2b3QucGl2b3RPYmouZXhjZWxFeHBvcnQoZXhjZWxFeHBvcnRQcm9wZXJ0aWVzX3Bpdm90KTtcclxuXHRcdFx0XHRcdGJyZWFrO1xyXG5cdFx0XHRcdGNhc2UgXCJuZXdjb2x1bW5cIjpcclxuXHRcdFx0XHRjYXNlIFwibmV3bGluZVwiOlxyXG5cdFx0XHRcdGNhc2UgXCJuZXdjb2x1bW5saW5lXCI6XHJcblx0XHRcdFx0XHRjb25zdCBjaGFydElkeCA9IHRoaXMuZ2V0Q2hhcnRJbmRleEluQWxsKGl0ZW0pO1xyXG5cdFx0XHRcdFx0Y29uc3Qgc2VsZWN0ZWRDb21wb25lbnQgPSB0aGlzLm5ld0NoYXJ0LnRvQXJyYXkoKVtjaGFydElkeF07XHJcblx0XHRcdFx0XHRzZWxlY3RlZENvbXBvbmVudC5leHBvcnRDaGFydCgpO1xyXG5cdFx0XHRcdFx0YnJlYWs7XHJcblx0XHRcdH1cclxuXHRcdFx0cmVzb2x2ZSh0cnVlKTtcclxuXHRcdH0pO1xyXG5cdH1cclxuXHJcblx0Ly8g5qC55o2uaWR46I635Y+W54K55Ye75Zu+6KGo5Zyo5Zu+6KGo5YiX6KGo6YeM55qE55yf5q2j6aG65bqPXHJcblx0Z2V0Q2hhcnRJbmRleEluQWxsKGl0ZW0pIHtcclxuXHRcdGNvbnN0IGNoYXJBcnIgPSB0aGlzLnBvcnRsZXRzLmZpbHRlcigoZSkgPT4ge1xyXG5cdFx0XHRyZXR1cm4gW1wibmV3Y29sdW1uXCIsIFwibmV3bGluZVwiLCBcIm5ld2NvbHVtbmxpbmVcIl0uaW5jbHVkZXMoXHJcblx0XHRcdFx0SlNPTi5wYXJzZShlLmNvbmZpZykucG9ydGxldFR5cGVcclxuXHRcdFx0KTtcclxuXHRcdH0pO1xyXG5cdFx0bGV0IHJlc3VsdElkeCA9IDA7XHJcblx0XHRpZiAoY2hhckFyci5sZW5ndGggPiAwKSB7XHJcblx0XHRcdGNoYXJBcnIuZm9yRWFjaCgoZSwgaWR4KSA9PiB7XHJcblx0XHRcdFx0aWYgKGUubmV3SWQgPT0gaXRlbS5uZXdJZCkge1xyXG5cdFx0XHRcdFx0cmVzdWx0SWR4ID0gaWR4O1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0fSk7XHJcblx0XHR9XHJcblx0XHRyZXR1cm4gcmVzdWx0SWR4O1xyXG5cdH1cclxuXHJcblx0cHVibGljIGRvd25sb2FkVGFibGUoaXRlbSwgdGl0bGUpIHtcclxuXHRcdC8vIFRhYmxlIOS4i+i9veWFqOmDqOaVsOaNrlxyXG5cdFx0bGV0IGNvbmZpZyA9IEpTT04ucGFyc2UoaXRlbS5jb25maWcpO1xyXG5cdFx0bGV0IHBhZ2VTZXR0aW5nID0gT2JqZWN0LmFzc2lnbihcclxuXHRcdFx0e1xyXG5cdFx0XHRcdGN1cnJlbnRQYWdlOiAxLFxyXG5cdFx0XHRcdHBhZ2VTaXplOiA5OTk5OTk5LFxyXG5cdFx0XHR9LFxyXG5cdFx0XHRjb25maWcgJiYgY29uZmlnLnRhYmxlU29ydFNldHRpbmdcclxuXHRcdCk7XHJcblx0XHRsZXQgcGFyYW1zID0gdGhpcy5EYXNoYm9hcmRQb3JsZXRzU2VydmljZS5nZXRQYXJhbXNCeVBvcnRsZXQoXHJcblx0XHRcdGl0ZW0sXHJcblx0XHRcdHBhZ2VTZXR0aW5nXHJcblx0XHQpO1xyXG5cdFx0cmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlKSA9PiB7XHJcblx0XHRcdC8vIGpzb24gYnVmZmVyXHJcblx0XHRcdHRoaXMuaHR0cENsaWVudFxyXG5cdFx0XHRcdC5wb3N0KFxyXG5cdFx0XHRcdFx0dGhpcy5hcGkuYmFzZXVybCArIHRoaXMuYXBpLnVybExpc3QuR2V0UG9ydGxldERhdGFWMixcclxuXHRcdFx0XHRcdHBhcmFtc1xyXG5cdFx0XHRcdClcclxuXHRcdFx0XHQuc3Vic2NyaWJlKFxyXG5cdFx0XHRcdFx0KHJlc3VsdCkgPT4ge1xyXG5cdFx0XHRcdFx0XHRpZiAocmVzdWx0KSB7XHJcblx0XHRcdFx0XHRcdFx0Y29uc3QgdGFibGUgPSBmaW5kKFxyXG5cdFx0XHRcdFx0XHRcdFx0KHRoaXMudGFibGUgYXMgYW55KS5fcmVzdWx0cyxcclxuXHRcdFx0XHRcdFx0XHRcdChlbCkgPT4gZWwucG9ydGxldC5uZXdJZCA9PT0gaXRlbS5uZXdJZFxyXG5cdFx0XHRcdFx0XHRcdCk7XHJcblx0XHRcdFx0XHRcdFx0Y29uc3QgZXhjZWxFeHBvcnRQcm9wZXJ0aWVzOiBFeGNlbEV4cG9ydFByb3BlcnRpZXMgPVxyXG5cdFx0XHRcdFx0XHRcdFx0e1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRmaWxlTmFtZTogdGl0bGVcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHQ/IHRpdGxlICsgXCIueGxzeFwiXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0OiBcIlRhYmxlLVwiICtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHQgIG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKSArXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0ICBcIi54bHN4XCIsXHJcblx0XHRcdFx0XHRcdFx0XHRcdC8vIEB0cy1pZ25vcmVcclxuXHRcdFx0XHRcdFx0XHRcdFx0ZGF0YVNvdXJjZTogcmVzdWx0LmRhdGEsXHJcblx0XHRcdFx0XHRcdFx0XHR9O1xyXG5cdFx0XHRcdFx0XHRcdGlmICh0YWJsZSkge1xyXG5cdFx0XHRcdFx0XHRcdFx0dGFibGUuZ3JpZC5leGNlbEV4cG9ydChleGNlbEV4cG9ydFByb3BlcnRpZXMpO1xyXG5cdFx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHRyZXNvbHZlKHRydWUpO1xyXG5cdFx0XHRcdFx0fSxcclxuXHRcdFx0XHRcdChyZXNwb25zZSkgPT4ge30sXHJcblx0XHRcdFx0XHQoKSA9PiB7fVxyXG5cdFx0XHRcdCk7XHJcblx0XHR9KTtcclxuXHR9XHJcblxyXG5cdHByaXZhdGUgdXBkYXRlRm9ybWF0KGNvbHVtbnM6IENvbHVtbk1vZGVsW10sIHBpdm90T2JqKSB7XHJcblx0XHR2YXIgZkxpc3QgPSBwaXZvdE9iai5yZW5kZXJNb2R1bGUuZ2V0Rm9ybWF0TGlzdCgpO1xyXG5cdFx0Zm9yICh2YXIgaSA9IDA7IGkgPCBjb2x1bW5zLmxlbmd0aDsgaSsrKSB7XHJcblx0XHRcdGlmIChcclxuXHRcdFx0XHQoY29sdW1uc1tpXSBhcyBDb2x1bW5Nb2RlbCkuY29sdW1ucyAmJlxyXG5cdFx0XHRcdChjb2x1bW5zW2ldIGFzIENvbHVtbk1vZGVsKS5jb2x1bW5zLmxlbmd0aCA+IDBcclxuXHRcdFx0KSB7XHJcblx0XHRcdFx0dGhpcy51cGRhdGVGb3JtYXQoXHJcblx0XHRcdFx0XHQoY29sdW1uc1tpXSBhcyBDb2x1bW5Nb2RlbCkuY29sdW1ucyBhcyBDb2x1bW5Nb2RlbFtdLFxyXG5cdFx0XHRcdFx0cGl2b3RPYmpcclxuXHRcdFx0XHQpO1xyXG5cdFx0XHR9IGVsc2Uge1xyXG5cdFx0XHRcdGlmIChcclxuXHRcdFx0XHRcdGNvbHVtbnNbaV0uY3VzdG9tQXR0cmlidXRlcyAmJlxyXG5cdFx0XHRcdFx0Zkxpc3RbXHJcblx0XHRcdFx0XHRcdChjb2x1bW5zW2ldLmN1c3RvbUF0dHJpYnV0ZXMuY2VsbCBhcyBJQXhpc1NldClcclxuXHRcdFx0XHRcdFx0XHQuYWN0dWFsVGV4dFxyXG5cdFx0XHRcdFx0XSA9PT0gXCJOXCJcclxuXHRcdFx0XHQpIHtcclxuXHRcdFx0XHRcdChjb2x1bW5zW2ldIGFzIENvbHVtbk1vZGVsKS5mb3JtYXQgPSB1bmRlZmluZWQ7XHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9XHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHRwdWJsaWMgZ2V0UG9ydGxldFR5cGUoaXRlbSkge1xyXG5cdFx0Y29uc3QgY29uZmlnID0gaXRlbSAmJiBpdGVtLmNvbmZpZyA/IEpTT04ucGFyc2UoaXRlbS5jb25maWcpIDoge307XHJcblx0XHRpZiAoY29uZmlnLnBvcnRsZXRUeXBlKSB7XHJcblx0XHRcdGlmIChjb25maWcucG9ydGxldFR5cGUgPT09IFwiaGlzdG9yaWNhbElSUlwiKSB7XHJcblx0XHRcdFx0cmV0dXJuIGNvbmZpZy5zZWxlY3RlZFZpc3VhbFR5cGU7XHJcblx0XHRcdH1cclxuXHRcdFx0cmV0dXJuIGNvbmZpZy5wb3J0bGV0VHlwZTtcclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdHVwZGF0ZVBvcmxldENvbmZpZyhldmVudCkge1xyXG5cdFx0Ly8g5aSE55CG6YWN572u5pu05pawXHJcblx0XHRjb25zb2xlLmxvZygndXBkYXRlUG9ybGV0Q29uZmlnIGNhbGxlZCB3aXRoOicsIGV2ZW50KTtcclxuXHR9XHJcbn1cclxuIl19
@@ -40,9 +40,9 @@ export class EmptyIconPromptComponent {
40
40
  }
41
41
  EmptyIconPromptComponent.decorators = [
42
42
  { type: Component, args: [{
43
- selector: "kt-empty-icon-prompt",
43
+ selector: "rs-empty-icon-prompt",
44
44
  template: "<div class=\"content\">\r\n\t<div class=\"card-body d-flex flex-column\">\r\n\t\t<div class=\"flex-grow-1\" style=\"position: relative\">\r\n\t\t\t<img src=\"../../../../assets/img/dashboard_icon/customize.png\" />\r\n\t\t</div>\r\n\t\t<div class=\"pt-5\">\r\n\t\t\t<p\r\n\t\t\t\tclass=\"text-center font-weight-normal font-size-lg pb-7\"\r\n\t\t\t\t*ngIf=\"displayCode == 'portlet'\"\r\n\t\t\t>\r\n\t\t\t\tThe chart you created will be shown here\u2026\r\n\t\t\t</p>\r\n\t\t\t<p\r\n\t\t\t\tclass=\"text-center font-weight-normal font-size-lg pb-7\"\r\n\t\t\t\t*ngIf=\"displayCode == 'dashboard'\"\r\n\t\t\t>\r\n\t\t\t\tCustomize the dashboard by\r\n\t\t\t\t<span class=\"createChart\" (click)=\"editProperties()\"\r\n\t\t\t\t\t>Editing dashboard properties</span\r\n\t\t\t\t>\r\n\t\t\t</p>\r\n\t\t\t<p\r\n\t\t\t\tclass=\"text-center font-weight-normal font-size-lg pb-7\"\r\n\t\t\t\t*ngIf=\"displayCode == 'dashboardGroup'\"\r\n\t\t\t>\r\n\t\t\t\tAdd new dashboard group by\r\n\t\t\t\t<span class=\"createChart\" (click)=\"createNewDashboard()\"\r\n\t\t\t\t\t>Creating new dashboard</span\r\n\t\t\t\t>\r\n\t\t\t</p>\r\n\t\t\t<p\r\n\t\t\t\tclass=\"text-center font-weight-normal font-size-lg pb-7\"\r\n\t\t\t\t*ngIf=\"displayCode == 'customize'\"\r\n\t\t\t>\r\n\t\t\t\tClick\r\n\t\t\t\t<span class=\"createChart\" (click)=\"customize()\">Customize</span>\r\n\t\t\t\tto edit your dashboard\r\n\t\t\t</p>\r\n\t\t</div>\r\n\t</div>\r\n</div>\r\n",
45
- styles: ["::ng-deep kt-empty-icon-prompt{height:100%!important}.content{width:100%;height:inherit;align-items:center;display:flex}.card-body.d-flex.flex-column{width:60%}.flex-grow-1{width:100%;text-align:center;justify-content:center!important;align-content:center}span.createChart{color:#5d78ff;cursor:pointer}p.text-center.font-weight-normal.font-size-lg.pb-7.ng-star-inserted{font-family:Arial;font-size:16px;color:rgba(0,0,0,.5)}"]
45
+ styles: ["::ng-deep rs-empty-icon-prompt{height:100%!important}.content{width:100%;height:inherit;align-items:center;display:flex}.card-body.d-flex.flex-column{width:60%}.flex-grow-1{width:100%;text-align:center;justify-content:center!important;align-content:center}span.createChart{color:#5d78ff;cursor:pointer}p.text-center.font-weight-normal.font-size-lg.pb-7.ng-star-inserted{font-family:Arial;font-size:16px;color:rgba(0,0,0,.5)}"]
46
46
  }] }
47
47
  ];
48
48
  /** @nocollapse */
@@ -64,4 +64,4 @@ if (false) {
64
64
  */
65
65
  EmptyIconPromptComponent.prototype.DashboardService;
66
66
  }
67
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW1wdHktaWNvbi1wcm9tcHQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vcmFpc2UtY29tbW9uLWxpYi8iLCJzb3VyY2VzIjpbImxpYi9kYXNoYm9hcmQvZGlhbG9nLWdyb3VwL2VtcHR5LWljb24tcHJvbXB0L2VtcHR5LWljb24tcHJvbXB0LmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQVUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBTzNELE1BQU0sT0FBTyx3QkFBd0I7Ozs7SUFHcEMsWUFBb0IsZ0JBQWtDO1FBQWxDLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBa0I7SUFBRyxDQUFDOzs7O0lBRTFELFFBQVEsS0FBSSxDQUFDOzs7O0lBQ04sY0FBYztRQUNwQixJQUFJLENBQUMsZ0JBQWdCLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQztZQUNyQyxNQUFNLEVBQUUsS0FBSztZQUNiLEVBQUUsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLEVBQUU7U0FDckIsQ0FBQyxDQUFDO0lBQ0osQ0FBQzs7OztJQUNNLGtCQUFrQjtRQUN4QixJQUFJLENBQUMsZ0JBQWdCLENBQUMsb0JBQW9CLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3ZELENBQUM7Ozs7SUFDTSxTQUFTO1FBQ2YsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUM7SUFDekMsQ0FBQzs7O1lBdEJELFNBQVMsU0FBQztnQkFDVixRQUFRLEVBQUUsc0JBQXNCO2dCQUNoQyw4NkNBQWlEOzthQUVqRDs7OztZQU5RLGdCQUFnQjs7OzBCQVF2QixLQUFLO3dCQUNMLEtBQUs7Ozs7SUFETiwrQ0FBcUI7O0lBQ3JCLDZDQUFtQjs7Ozs7SUFDUCxvREFBMEMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCwgSW5wdXQgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQgeyBEYXNoYm9hcmRTZXJ2aWNlIH0gZnJvbSBcIi4uLy4uL2Rhc2hib2FyZC5zZXJ2aWNlXCI7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuXHRzZWxlY3RvcjogXCJrdC1lbXB0eS1pY29uLXByb21wdFwiLFxyXG5cdHRlbXBsYXRlVXJsOiBcIi4vZW1wdHktaWNvbi1wcm9tcHQuY29tcG9uZW50Lmh0bWxcIixcclxuXHRzdHlsZVVybHM6IFtcIi4vZW1wdHktaWNvbi1wcm9tcHQuY29tcG9uZW50LnNjc3NcIl0sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBFbXB0eUljb25Qcm9tcHRDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xyXG5cdEBJbnB1dCgpIGRpc3BsYXlDb2RlO1xyXG5cdEBJbnB1dCgpIGRhc2hib2FyZDtcclxuXHRjb25zdHJ1Y3Rvcihwcml2YXRlIERhc2hib2FyZFNlcnZpY2U6IERhc2hib2FyZFNlcnZpY2UpIHt9XHJcblxyXG5cdG5nT25Jbml0KCkge31cclxuXHRwdWJsaWMgZWRpdFByb3BlcnRpZXMoKSB7XHJcblx0XHR0aGlzLkRhc2hib2FyZFNlcnZpY2UucHJvcGVydGllcy5uZXh0KHtcclxuXHRcdFx0c3RhdHVzOiBmYWxzZSxcclxuXHRcdFx0aWQ6IHRoaXMuZGFzaGJvYXJkLmlkLFxyXG5cdFx0fSk7XHJcblx0fVxyXG5cdHB1YmxpYyBjcmVhdGVOZXdEYXNoYm9hcmQoKSB7XHJcblx0XHR0aGlzLkRhc2hib2FyZFNlcnZpY2UuY3JlYXRlR3JvdXBEYXNoYm9hcmQubmV4dCh0cnVlKTtcclxuXHR9XHJcblx0cHVibGljIGN1c3RvbWl6ZSgpIHtcclxuXHRcdHRoaXMuRGFzaGJvYXJkU2VydmljZS5jdXN0b21pemVkID0gdHJ1ZTtcclxuXHR9XHJcbn1cclxuIl19
67
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW1wdHktaWNvbi1wcm9tcHQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vcmFpc2UtY29tbW9uLWxpYi8iLCJzb3VyY2VzIjpbImxpYi9kYXNoYm9hcmQvZGlhbG9nLWdyb3VwL2VtcHR5LWljb24tcHJvbXB0L2VtcHR5LWljb24tcHJvbXB0LmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQVUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBTzNELE1BQU0sT0FBTyx3QkFBd0I7Ozs7SUFHcEMsWUFBb0IsZ0JBQWtDO1FBQWxDLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBa0I7SUFBRyxDQUFDOzs7O0lBRTFELFFBQVEsS0FBSSxDQUFDOzs7O0lBQ04sY0FBYztRQUNwQixJQUFJLENBQUMsZ0JBQWdCLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQztZQUNyQyxNQUFNLEVBQUUsS0FBSztZQUNiLEVBQUUsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLEVBQUU7U0FDckIsQ0FBQyxDQUFDO0lBQ0osQ0FBQzs7OztJQUNNLGtCQUFrQjtRQUN4QixJQUFJLENBQUMsZ0JBQWdCLENBQUMsb0JBQW9CLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3ZELENBQUM7Ozs7SUFDTSxTQUFTO1FBQ2YsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUM7SUFDekMsQ0FBQzs7O1lBdEJELFNBQVMsU0FBQztnQkFDVixRQUFRLEVBQUUsc0JBQXNCO2dCQUNoQyw4NkNBQWlEOzthQUVqRDs7OztZQU5RLGdCQUFnQjs7OzBCQVF2QixLQUFLO3dCQUNMLEtBQUs7Ozs7SUFETiwrQ0FBcUI7O0lBQ3JCLDZDQUFtQjs7Ozs7SUFDUCxvREFBMEMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCwgSW5wdXQgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQgeyBEYXNoYm9hcmRTZXJ2aWNlIH0gZnJvbSBcIi4uLy4uL2Rhc2hib2FyZC5zZXJ2aWNlXCI7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuXHRzZWxlY3RvcjogXCJycy1lbXB0eS1pY29uLXByb21wdFwiLFxyXG5cdHRlbXBsYXRlVXJsOiBcIi4vZW1wdHktaWNvbi1wcm9tcHQuY29tcG9uZW50Lmh0bWxcIixcclxuXHRzdHlsZVVybHM6IFtcIi4vZW1wdHktaWNvbi1wcm9tcHQuY29tcG9uZW50LnNjc3NcIl0sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBFbXB0eUljb25Qcm9tcHRDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xyXG5cdEBJbnB1dCgpIGRpc3BsYXlDb2RlO1xyXG5cdEBJbnB1dCgpIGRhc2hib2FyZDtcclxuXHRjb25zdHJ1Y3Rvcihwcml2YXRlIERhc2hib2FyZFNlcnZpY2U6IERhc2hib2FyZFNlcnZpY2UpIHt9XHJcblxyXG5cdG5nT25Jbml0KCkge31cclxuXHRwdWJsaWMgZWRpdFByb3BlcnRpZXMoKSB7XHJcblx0XHR0aGlzLkRhc2hib2FyZFNlcnZpY2UucHJvcGVydGllcy5uZXh0KHtcclxuXHRcdFx0c3RhdHVzOiBmYWxzZSxcclxuXHRcdFx0aWQ6IHRoaXMuZGFzaGJvYXJkLmlkLFxyXG5cdFx0fSk7XHJcblx0fVxyXG5cdHB1YmxpYyBjcmVhdGVOZXdEYXNoYm9hcmQoKSB7XHJcblx0XHR0aGlzLkRhc2hib2FyZFNlcnZpY2UuY3JlYXRlR3JvdXBEYXNoYm9hcmQubmV4dCh0cnVlKTtcclxuXHR9XHJcblx0cHVibGljIGN1c3RvbWl6ZSgpIHtcclxuXHRcdHRoaXMuRGFzaGJvYXJkU2VydmljZS5jdXN0b21pemVkID0gdHJ1ZTtcclxuXHR9XHJcbn1cclxuIl19