raise-common-lib 0.0.205 → 0.0.207

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 (228) hide show
  1. package/bundles/raise-common-lib.umd.js +28147 -1277
  2. package/bundles/raise-common-lib.umd.js.map +1 -1
  3. package/bundles/raise-common-lib.umd.min.js +1 -1
  4. package/bundles/raise-common-lib.umd.min.js.map +1 -1
  5. package/esm2015/lib/dashboard/api.js +46 -0
  6. package/esm2015/lib/dashboard/bar-charts/bar-charts.component.js +638 -0
  7. package/esm2015/lib/dashboard/bar-charts/utils.js +40 -0
  8. package/esm2015/lib/dashboard/dashboard-properties/data-mart-new/data-mart-new.component.js +700 -0
  9. package/esm2015/lib/dashboard/dashboard.service.js +650 -0
  10. package/esm2015/lib/dashboard/dashboardPorlets.service.js +3107 -0
  11. package/esm2015/lib/dashboard/dialog-group/download/index.component.js +358 -0
  12. package/esm2015/lib/dashboard/dialog-group/empty-icon-prompt/empty-icon-prompt.component.js +67 -0
  13. package/esm2015/lib/dashboard/gadget-group/gadget-pivot/gadget-pivot.component.js +4443 -0
  14. package/esm2015/lib/dashboard/gadget-group/gadget-pivot-chart/gadget-pivot.component.js +4293 -0
  15. package/esm2015/lib/dashboard/gadget-group/gadget-table/gadget-table.component.js +1553 -0
  16. package/esm2015/lib/dashboard/gadget-group/gadget-transpose/gadget-transpose.component.js +857 -0
  17. package/esm2015/lib/dashboard/pane-group-new.component.js +2930 -0
  18. package/esm2015/lib/dashboard/sidebar-iconlist/field-filter/field-filter.component.js +1016 -0
  19. package/esm2015/lib/dashboard/sidebar-iconlist/field-format/field-format.component.js +1003 -0
  20. package/esm2015/lib/dashboard/sidebar-iconlist/portlet-type-new/portlet-type-new.component.js +319 -0
  21. package/esm2015/lib/dashboard/sidebar-iconlist/sidebar-iconlist-new.component.js +1638 -0
  22. package/esm2015/lib/layout/rs-stepper/index.component.js +175 -9
  23. package/esm2015/lib/raise-common-lib.module.js +56 -3
  24. package/esm2015/lib/service/InjectionToken.js +13 -0
  25. package/esm2015/public-api.js +3 -1
  26. package/esm2015/raise-common-lib.js +22 -6
  27. package/esm5/lib/dashboard/api.js +48 -0
  28. package/esm5/lib/dashboard/bar-charts/bar-charts.component.js +733 -0
  29. package/esm5/lib/dashboard/bar-charts/utils.js +45 -0
  30. package/esm5/lib/dashboard/dashboard-properties/data-mart-new/data-mart-new.component.js +772 -0
  31. package/esm5/lib/dashboard/dashboard.service.js +846 -0
  32. package/esm5/lib/dashboard/dashboardPorlets.service.js +3536 -0
  33. package/esm5/lib/dashboard/dialog-group/download/index.component.js +441 -0
  34. package/esm5/lib/dashboard/dialog-group/empty-icon-prompt/empty-icon-prompt.component.js +78 -0
  35. package/esm5/lib/dashboard/gadget-group/gadget-pivot/gadget-pivot.component.js +4940 -0
  36. package/esm5/lib/dashboard/gadget-group/gadget-pivot-chart/gadget-pivot.component.js +4751 -0
  37. package/esm5/lib/dashboard/gadget-group/gadget-table/gadget-table.component.js +1683 -0
  38. package/esm5/lib/dashboard/gadget-group/gadget-transpose/gadget-transpose.component.js +931 -0
  39. package/esm5/lib/dashboard/pane-group-new.component.js +3307 -0
  40. package/esm5/lib/dashboard/sidebar-iconlist/field-filter/field-filter.component.js +1138 -0
  41. package/esm5/lib/dashboard/sidebar-iconlist/field-format/field-format.component.js +1184 -0
  42. package/esm5/lib/dashboard/sidebar-iconlist/portlet-type-new/portlet-type-new.component.js +354 -0
  43. package/esm5/lib/dashboard/sidebar-iconlist/sidebar-iconlist-new.component.js +1792 -0
  44. package/esm5/lib/layout/rs-stepper/index.component.js +206 -12
  45. package/esm5/lib/raise-common-lib.module.js +56 -3
  46. package/esm5/lib/service/InjectionToken.js +13 -0
  47. package/esm5/public-api.js +3 -1
  48. package/esm5/raise-common-lib.js +22 -6
  49. package/fesm2015/raise-common-lib.js +24917 -1169
  50. package/fesm2015/raise-common-lib.js.map +1 -1
  51. package/fesm5/raise-common-lib.js +27944 -1267
  52. package/fesm5/raise-common-lib.js.map +1 -1
  53. package/lib/dashboard/api.d.ts +21 -0
  54. package/lib/dashboard/bar-charts/bar-charts.component.d.ts +60 -0
  55. package/lib/dashboard/bar-charts/utils.d.ts +1 -0
  56. package/lib/dashboard/dashboard-properties/data-mart-new/data-mart-new.component.d.ts +49 -0
  57. package/lib/dashboard/dashboard.service.d.ts +149 -0
  58. package/lib/dashboard/dashboardPorlets.service.d.ts +211 -0
  59. package/lib/dashboard/dialog-group/download/index.component.d.ts +33 -0
  60. package/lib/dashboard/dialog-group/empty-icon-prompt/empty-icon-prompt.component.d.ts +12 -0
  61. package/lib/dashboard/gadget-group/gadget-pivot/gadget-pivot.component.d.ts +125 -0
  62. package/lib/dashboard/gadget-group/gadget-pivot-chart/gadget-pivot.component.d.ts +128 -0
  63. package/lib/dashboard/gadget-group/gadget-table/gadget-table.component.d.ts +74 -0
  64. package/lib/dashboard/gadget-group/gadget-transpose/gadget-transpose.component.d.ts +44 -0
  65. package/lib/dashboard/pane-group-new.component.d.ts +165 -0
  66. package/lib/dashboard/sidebar-iconlist/field-filter/field-filter.component.d.ts +53 -0
  67. package/lib/dashboard/sidebar-iconlist/field-format/field-format.component.d.ts +59 -0
  68. package/lib/dashboard/sidebar-iconlist/portlet-type-new/portlet-type-new.component.d.ts +27 -0
  69. package/lib/dashboard/sidebar-iconlist/sidebar-iconlist-new.component.d.ts +147 -0
  70. package/lib/layout/rs-stepper/index.component.d.ts +17 -4
  71. package/lib/service/InjectionToken.d.ts +4 -0
  72. package/package.json +1 -1
  73. package/public-api.d.ts +2 -0
  74. package/raise-common-lib.d.ts +20 -4
  75. package/raise-common-lib.metadata.json +1 -1
  76. package/src/assets/img/dashboard_icon/AddPerson.svg +4 -0
  77. package/src/assets/img/dashboard_icon/Angle-double-left.svg +12 -0
  78. package/src/assets/img/dashboard_icon/Angle-double-right.svg +12 -0
  79. package/src/assets/img/dashboard_icon/Arrow_collapse.svg +3 -0
  80. package/src/assets/img/dashboard_icon/Arrow_expand.svg +3 -0
  81. package/src/assets/img/dashboard_icon/Close.svg +4 -0
  82. package/src/assets/img/dashboard_icon/Edit_label.svg +3 -0
  83. package/src/assets/img/dashboard_icon/RemoveMini.svg +3 -0
  84. package/src/assets/img/dashboard_icon/ShareTo.svg +3 -0
  85. package/src/assets/img/dashboard_icon/add-dashboard.svg +4 -0
  86. package/src/assets/img/dashboard_icon/add-tab.svg +4 -0
  87. package/src/assets/img/dashboard_icon/angle-left.svg +12 -0
  88. package/src/assets/img/dashboard_icon/angle-right.svg +12 -0
  89. package/src/assets/img/dashboard_icon/area-white.svg +3 -0
  90. package/src/assets/img/dashboard_icon/area.svg +3 -0
  91. package/src/assets/img/dashboard_icon/bar-white.svg +14 -0
  92. package/src/assets/img/dashboard_icon/bar.svg +14 -0
  93. package/src/assets/img/dashboard_icon/basic-icon-filter.svg +14 -0
  94. package/src/assets/img/dashboard_icon/chart-combined-active.svg +7 -0
  95. package/src/assets/img/dashboard_icon/chart-combined.svg +7 -0
  96. package/src/assets/img/dashboard_icon/column-white.svg +14 -0
  97. package/src/assets/img/dashboard_icon/column.svg +26 -0
  98. package/src/assets/img/dashboard_icon/customize.png +0 -0
  99. package/src/assets/img/dashboard_icon/dashboard-description.svg +18 -0
  100. package/src/assets/img/dashboard_icon/dashboard-download.svg +18 -0
  101. package/src/assets/img/dashboard_icon/dashboard-drag.svg +28 -0
  102. package/src/assets/img/dashboard_icon/dashboard-duplicate.svg +24 -0
  103. package/src/assets/img/dashboard_icon/dashboard-icon.svg +12 -0
  104. package/src/assets/img/dashboard_icon/dashboard-properties.svg +18 -0
  105. package/src/assets/img/dashboard_icon/dashboard-rename.svg +18 -0
  106. package/src/assets/img/dashboard_icon/dashboard-share.svg +20 -0
  107. package/src/assets/img/dashboard_icon/dashboard-tab-delete.svg +4 -0
  108. package/src/assets/img/dashboard_icon/dashboard_Share.svg +3 -0
  109. package/src/assets/img/dashboard_icon/dashboard_ToolsHide.svg +4 -0
  110. package/src/assets/img/dashboard_icon/datamart_.svg +5 -0
  111. package/src/assets/img/dashboard_icon/datamart_Admin.svg +3 -0
  112. package/src/assets/img/dashboard_icon/datamart_Asset Portfolio.svg +4 -0
  113. package/src/assets/img/dashboard_icon/datamart_Bank.svg +3 -0
  114. package/src/assets/img/dashboard_icon/datamart_CRM.svg +6 -0
  115. package/src/assets/img/dashboard_icon/datamart_Company.svg +6 -0
  116. package/src/assets/img/dashboard_icon/datamart_Compliance.svg +3 -0
  117. package/src/assets/img/dashboard_icon/datamart_Contact.svg +3 -0
  118. package/src/assets/img/dashboard_icon/datamart_DASHBOARD.svg +4 -0
  119. package/src/assets/img/dashboard_icon/datamart_DOCX.svg +4 -0
  120. package/src/assets/img/dashboard_icon/datamart_ESG.svg +4 -0
  121. package/src/assets/img/dashboard_icon/datamart_Financials - Company.svg +3 -0
  122. package/src/assets/img/dashboard_icon/datamart_Fund.svg +4 -0
  123. package/src/assets/img/dashboard_icon/datamart_FundFinancial.svg +4 -0
  124. package/src/assets/img/dashboard_icon/datamart_HTML.svg +4 -0
  125. package/src/assets/img/dashboard_icon/datamart_Logs.svg +8 -0
  126. package/src/assets/img/dashboard_icon/datamart_PDF.svg +5 -0
  127. package/src/assets/img/dashboard_icon/datamart_Project.svg +3 -0
  128. package/src/assets/img/dashboard_icon/datamart_Templates.svg +7 -0
  129. package/src/assets/img/dashboard_icon/datamart_Track Change.svg +3 -0
  130. package/src/assets/img/dashboard_icon/datamart_VirtualGroup.svg +5 -0
  131. package/src/assets/img/dashboard_icon/datamart_XLS.svg +4 -0
  132. package/src/assets/img/dashboard_icon/desktop_selected.svg +10 -0
  133. package/src/assets/img/dashboard_icon/desktop_unselected.svg +10 -0
  134. package/src/assets/img/dashboard_icon/favourite-grey.svg +3 -0
  135. package/src/assets/img/dashboard_icon/favourite-yellow.svg +3 -0
  136. package/src/assets/img/dashboard_icon/forms-checkbox-square-tick.svg +3 -0
  137. package/src/assets/img/dashboard_icon/ftable-white.svg +24 -0
  138. package/src/assets/img/dashboard_icon/ftable.svg +24 -0
  139. package/src/assets/img/dashboard_icon/gadget-basic-arrow-down.svg +14 -0
  140. package/src/assets/img/dashboard_icon/gadget-basic-format.svg +21 -0
  141. package/src/assets/img/dashboard_icon/gadget-basic-sub-total.svg +18 -0
  142. package/src/assets/img/dashboard_icon/gadget-basic-total-1.svg +9 -0
  143. package/src/assets/img/dashboard_icon/gadget-basic-total.svg +16 -0
  144. package/src/assets/img/dashboard_icon/gadget-columns.svg +12 -0
  145. package/src/assets/img/dashboard_icon/gadget-delete.svg +18 -0
  146. package/src/assets/img/dashboard_icon/gadget-download.svg +18 -0
  147. package/src/assets/img/dashboard_icon/gadget-duplicate.svg +24 -0
  148. package/src/assets/img/dashboard_icon/gadget-edit.svg +18 -0
  149. package/src/assets/img/dashboard_icon/gadget-filters-light.svg +9 -0
  150. package/src/assets/img/dashboard_icon/gadget-filters.svg +9 -0
  151. package/src/assets/img/dashboard_icon/gadget-format-0.svg +8 -0
  152. package/src/assets/img/dashboard_icon/gadget-format-1.svg +8 -0
  153. package/src/assets/img/dashboard_icon/gadget-format.svg +19 -0
  154. package/src/assets/img/dashboard_icon/gadget-fullscreen.svg +30 -0
  155. package/src/assets/img/dashboard_icon/gadget-settings.svg +18 -0
  156. package/src/assets/img/dashboard_icon/gadget-sub-total-0.svg +18 -0
  157. package/src/assets/img/dashboard_icon/gadget-sub-total-1.svg +18 -0
  158. package/src/assets/img/dashboard_icon/gadget-thumbnail.svg +12 -0
  159. package/src/assets/img/dashboard_icon/gadget-type-light.svg +15 -0
  160. package/src/assets/img/dashboard_icon/gadget-type.svg +16 -0
  161. package/src/assets/img/dashboard_icon/geo-white.svg +14 -0
  162. package/src/assets/img/dashboard_icon/geo.svg +14 -0
  163. package/src/assets/img/dashboard_icon/historic-IRR-white.svg +9 -0
  164. package/src/assets/img/dashboard_icon/historic-IRR.svg +5 -0
  165. package/src/assets/img/dashboard_icon/information-1.png +0 -0
  166. package/src/assets/img/dashboard_icon/information-grey.svg +4 -0
  167. package/src/assets/img/dashboard_icon/menu-change-group.svg +3 -0
  168. package/src/assets/img/dashboard_icon/menu-close.svg +20 -0
  169. package/src/assets/img/dashboard_icon/menu-delete.svg +18 -0
  170. package/src/assets/img/dashboard_icon/menu-description.svg +19 -0
  171. package/src/assets/img/dashboard_icon/menu-download.svg +24 -0
  172. package/src/assets/img/dashboard_icon/menu-drag.svg +28 -0
  173. package/src/assets/img/dashboard_icon/menu-duplicate.svg +26 -0
  174. package/src/assets/img/dashboard_icon/menu-properties.svg +18 -0
  175. package/src/assets/img/dashboard_icon/menu-rename.svg +23 -0
  176. package/src/assets/img/dashboard_icon/menu-share.svg +20 -0
  177. package/src/assets/img/dashboard_icon/menu-toolbar.svg +10 -0
  178. package/src/assets/img/dashboard_icon/mobile_selected.svg +10 -0
  179. package/src/assets/img/dashboard_icon/mobile_unselected.svg +10 -0
  180. package/src/assets/img/dashboard_icon/more_Save.svg +3 -0
  181. package/src/assets/img/dashboard_icon/more_View.svg +3 -0
  182. package/src/assets/img/dashboard_icon/multi-series-white.svg +20 -0
  183. package/src/assets/img/dashboard_icon/multi-series.svg +6 -0
  184. package/src/assets/img/dashboard_icon/paint-bucket.svg +6 -0
  185. package/src/assets/img/dashboard_icon/pie-white.svg +16 -0
  186. package/src/assets/img/dashboard_icon/pie.svg +16 -0
  187. package/src/assets/img/dashboard_icon/pivot-chart-active.svg +8 -0
  188. package/src/assets/img/dashboard_icon/pivot-chart.svg +8 -0
  189. package/src/assets/img/dashboard_icon/pivot-white.svg +8 -0
  190. package/src/assets/img/dashboard_icon/pivot.svg +8 -0
  191. package/src/assets/img/dashboard_icon/pivot_column.svg +9 -0
  192. package/src/assets/img/dashboard_icon/pivot_column_active.svg +9 -0
  193. package/src/assets/img/dashboard_icon/pivot_line.svg +12 -0
  194. package/src/assets/img/dashboard_icon/pivot_line_active.svg +12 -0
  195. package/src/assets/img/dashboard_icon/print-A2.svg +3 -0
  196. package/src/assets/img/dashboard_icon/radar-white.svg +19 -0
  197. package/src/assets/img/dashboard_icon/radar.svg +19 -0
  198. package/src/assets/img/dashboard_icon/saveAs.svg +3 -0
  199. package/src/assets/img/dashboard_icon/search_input.svg +4 -0
  200. package/src/assets/img/dashboard_icon/table-3-white.svg +16 -0
  201. package/src/assets/img/dashboard_icon/table-3.svg +16 -0
  202. package/src/assets/img/dashboard_icon/table-filter-off.svg +5 -0
  203. package/src/assets/img/dashboard_icon/table-filter-on.svg +5 -0
  204. package/src/assets/img/dashboard_icon/tag_dashboard_selected.svg +3 -0
  205. package/src/assets/img/dashboard_icon/tag_dashboard_unselected.svg +3 -0
  206. package/src/assets/img/dashboard_icon/tag_share_selected.svg +3 -0
  207. package/src/assets/img/dashboard_icon/tag_share_unselected.svg +3 -0
  208. package/src/assets/img/dashboard_icon/tick.svg +26 -0
  209. package/src/assets/img/dashboard_icon/toolbar_AddDashboard.svg +5 -0
  210. package/src/assets/img/dashboard_icon/toolbar_AddGroup.svg +3 -0
  211. package/src/assets/img/dashboard_icon/toolbar_AddReport.svg +3 -0
  212. package/src/assets/img/dashboard_icon/toolbar_CollapseAll.svg +3 -0
  213. package/src/assets/img/dashboard_icon/toolbar_Customize.svg +3 -0
  214. package/src/assets/img/dashboard_icon/toolbar_DeleteDark.svg +3 -0
  215. package/src/assets/img/dashboard_icon/toolbar_Duplicate.svg +3 -0
  216. package/src/assets/img/dashboard_icon/toolbar_Edit.svg +3 -0
  217. package/src/assets/img/dashboard_icon/toolbar_ExpandAll.svg +3 -0
  218. package/src/assets/img/dashboard_icon/toolbar_Search.svg +3 -0
  219. package/src/assets/img/dashboard_icon/topbar-menu.svg +33 -0
  220. package/src/assets/img/dashboard_icon/topbar-refresh.svg +17 -0
  221. package/src/assets/img/dashboard_icon/topbar-tool-off.svg +12 -0
  222. package/src/assets/img/dashboard_icon/topbar-tool-on.svg +12 -0
  223. package/src/assets/img/dashboard_icon/trade-up-white.svg +14 -0
  224. package/src/assets/img/dashboard_icon/trade-up.svg +14 -0
  225. package/src/assets/img/dashboard_icon/transpose-white.svg +16 -0
  226. package/src/assets/img/dashboard_icon/transpose.svg +16 -0
  227. package/src/assets/style/reset/mat-dialog.scss +11 -5
  228. package/src/assets/style/style.scss +14 -4
@@ -0,0 +1,772 @@
1
+ /**
2
+ * @fileoverview added by tsickle
3
+ * Generated from: lib/dashboard/dashboard-properties/data-mart-new/data-mart-new.component.ts
4
+ * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
5
+ */
6
+ import * as tslib_1 from "tslib";
7
+ import { Component, Inject, ChangeDetectorRef, Optional, } from "@angular/core";
8
+ import { MatDialog, MatDialogRef, MAT_DIALOG_DATA } from "@angular/material";
9
+ import { ApiList } from "../../api";
10
+ import { DashboardService } from "../../dashboard.service";
11
+ import { DashboardPorletsService } from "../../dashboardPorlets.service";
12
+ import { throttle } from "lodash";
13
+ import { API_SERVICE_TOKEN, PBF_TOKEN } from "../../../service/InjectionToken";
14
+ import { DialogService } from "../../../service/dialog.service";
15
+ var DataMartNewComponent = /** @class */ (function () {
16
+ function DataMartNewComponent(data, dialogRef, dialogService, dialog, api, dashboardService, DashboardPorletsService, ref, pbf, http) {
17
+ var _this = this;
18
+ this.data = data;
19
+ this.dialogRef = dialogRef;
20
+ this.dialogService = dialogService;
21
+ this.dialog = dialog;
22
+ this.api = api;
23
+ this.dashboardService = dashboardService;
24
+ this.DashboardPorletsService = DashboardPorletsService;
25
+ this.ref = ref;
26
+ this.pbf = pbf;
27
+ this.http = http;
28
+ this.fatherList = [];
29
+ this.sonList = [];
30
+ this.grandsonList = [];
31
+ this.fatherId = "";
32
+ this.sonIds = [];
33
+ this.selectedAll = false;
34
+ this.orginGrandData = [];
35
+ this.disabled = false;
36
+ this.cacheEntityType = "";
37
+ this.isSelectAllDisabled = false;
38
+ this.doFilter = throttle((/**
39
+ * @param {?} val
40
+ * @return {?}
41
+ */
42
+ function (val) { return _this.doSearch(val); }), 200);
43
+ }
44
+ /**
45
+ * @return {?}
46
+ */
47
+ DataMartNewComponent.prototype.ngOnInit = /**
48
+ * @return {?}
49
+ */
50
+ function () {
51
+ this.getInfo();
52
+ this.getSources();
53
+ };
54
+ /**
55
+ * @return {?}
56
+ */
57
+ DataMartNewComponent.prototype.ngAfterViewInit = /**
58
+ * @return {?}
59
+ */
60
+ function () {
61
+ this.pbf.introStep.next("next");
62
+ };
63
+ /**
64
+ * @return {?}
65
+ */
66
+ DataMartNewComponent.prototype.getInfo = /**
67
+ * @return {?}
68
+ */
69
+ function () {
70
+ this.translation = JSON.parse(localStorage.getItem("translation"));
71
+ this.userInfo = JSON.parse(localStorage.getItem("userInfo"));
72
+ this.lang = this.pbf.getLanguageParams();
73
+ this.config =
74
+ this.data && this.data.dashboard
75
+ ? JSON.parse(this.data.dashboard.config)
76
+ : {};
77
+ };
78
+ /**
79
+ * @return {?}
80
+ */
81
+ DataMartNewComponent.prototype.getSources = /**
82
+ * @return {?}
83
+ */
84
+ function () {
85
+ var _this = this;
86
+ /** @type {?} */
87
+ var dataObj = {
88
+ accountId: this.userInfo.accountId,
89
+ language: this.lang,
90
+ dashboardVersion: 2,
91
+ };
92
+ this.pbf.pageLoading = true;
93
+ this.pbf.pageLoading_.next(true);
94
+ this.http.post(this.api.urlList.GetSources, dataObj, (/**
95
+ * @param {?} res
96
+ * @return {?}
97
+ */
98
+ function (res) {
99
+ _this.pbf.pageLoading = false;
100
+ _this.pbf.pageLoading_.next(true);
101
+ if (res) {
102
+ _this.DashboardPorletsService.sourcesData[_this.data.dashboard.id] = res;
103
+ _this.DashboardPorletsService.GetSourcesRes = res;
104
+ _this.fatherList = res;
105
+ if (_this.config.datamartId) {
106
+ // this.disabled = true;
107
+ _this.fatherId = _this.config.datamartId;
108
+ _this.sonIds = _this.config.datamartViewId
109
+ ? _this.config.datamartViewId.split(",")
110
+ : _this.config.views
111
+ ? _this.config.views.map((/**
112
+ * @param {?} item
113
+ * @return {?}
114
+ */
115
+ function (item) { return item.datamartViewId; }))
116
+ : [];
117
+ /** @type {?} */
118
+ var datasource = res.find((/**
119
+ * @param {?} el
120
+ * @return {?}
121
+ */
122
+ function (el) { return el.id == _this.fatherId; }));
123
+ if (datasource) {
124
+ _this.getdataMart(datasource, true);
125
+ if (!_this.cacheEntityType && _this.config.datamartId) {
126
+ _this.cacheEntityType = _this.entityType;
127
+ }
128
+ /** @type {?} */
129
+ var dataview = datasource.views.filter((/**
130
+ * @param {?} el
131
+ * @return {?}
132
+ */
133
+ function (el) {
134
+ return _this.sonIds.includes(el.id);
135
+ }));
136
+ _this.handleItemChange(dataview, true);
137
+ _this.getSelectedAllStatus();
138
+ }
139
+ }
140
+ }
141
+ }));
142
+ };
143
+ /**
144
+ * @return {?}
145
+ */
146
+ DataMartNewComponent.prototype.getSelectedAllStatus = /**
147
+ * @return {?}
148
+ */
149
+ function () {
150
+ /** @type {?} */
151
+ var num = 0;
152
+ this.sonList.forEach((/**
153
+ * @param {?} son
154
+ * @return {?}
155
+ */
156
+ function (son) {
157
+ if (son.checked && son.langCode !== "FINANCIAL_FIGURES") {
158
+ num++;
159
+ }
160
+ }));
161
+ if (num === this.sonList.length - 1)
162
+ this.selectedAll = true;
163
+ else
164
+ this.selectedAll = false;
165
+ };
166
+ /**
167
+ * @return {?}
168
+ */
169
+ DataMartNewComponent.prototype.nextStep = /**
170
+ * @return {?}
171
+ */
172
+ function () {
173
+ this.pbf.introStep.next("next");
174
+ };
175
+ /**
176
+ * @param {?} item
177
+ * @param {?=} isInit
178
+ * @return {?}
179
+ */
180
+ DataMartNewComponent.prototype.getdataMart = /**
181
+ * @param {?} item
182
+ * @param {?=} isInit
183
+ * @return {?}
184
+ */
185
+ function (item, isInit) {
186
+ var _this = this;
187
+ if (isInit === void 0) { isInit = false; }
188
+ if (this.cacheEntityType && this.cacheEntityType === item.entityType) {
189
+ return;
190
+ }
191
+ if (!isInit &&
192
+ this.cacheEntityType &&
193
+ this.cacheEntityType !== item.entityType) {
194
+ /** @type {?} */
195
+ var _title = this.translation.ARE_YOU_SURE_TO_CHANGE_DATA_MART ||
196
+ ".Are you sure to change entity type of data mart? Dashboard will be reset since entity type is changed.";
197
+ /** @type {?} */
198
+ var _no = this.translation.NO || ".NO";
199
+ /** @type {?} */
200
+ var _yes = this.translation.YES || ".YES";
201
+ // const dialogRef = this.layoutUtilsService.alertElement(
202
+ // this.translation.WARNING || ".WARNING",
203
+ // _title,
204
+ // _no,
205
+ // _yes,
206
+ // true,
207
+ // true,
208
+ // "480px",
209
+ // "324px"
210
+ // );
211
+ /** @type {?} */
212
+ var dialogRef = this.dialogService.showCommonDilaog({
213
+ title: this.translation.WARNING || ".WARNING",
214
+ description: _title,
215
+ saveBtnLabel: _yes,
216
+ cancelBtnLabel: _no,
217
+ });
218
+ dialogRef.afterClosed().subscribe((/**
219
+ * @param {?} res
220
+ * @return {?}
221
+ */
222
+ function (res) {
223
+ if (!res) {
224
+ return;
225
+ }
226
+ _this.setFatherId(item, isInit);
227
+ }));
228
+ return;
229
+ }
230
+ if (!item) {
231
+ return;
232
+ }
233
+ this.setFatherId(item, isInit);
234
+ };
235
+ /**
236
+ * @private
237
+ * @param {?} item
238
+ * @param {?} isInit
239
+ * @return {?}
240
+ */
241
+ DataMartNewComponent.prototype.setFatherId = /**
242
+ * @private
243
+ * @param {?} item
244
+ * @param {?} isInit
245
+ * @return {?}
246
+ */
247
+ function (item, isInit) {
248
+ var _this = this;
249
+ this.fatherId = item.id;
250
+ this.entityType = item.entityType;
251
+ /** @type {?} */
252
+ var isFiguresChecked = false;
253
+ /** @type {?} */
254
+ var isOtherChecked = false;
255
+ if (item.views.find((/**
256
+ * @param {?} item
257
+ * @return {?}
258
+ */
259
+ function (item) {
260
+ return item.langCode === "FINANCIAL_FIGURES" && _this.sonIds.includes(item.id);
261
+ }))) {
262
+ isFiguresChecked = true;
263
+ this.isSelectAllDisabled = true;
264
+ }
265
+ if (item.views.find((/**
266
+ * @param {?} item
267
+ * @return {?}
268
+ */
269
+ function (item) {
270
+ return item.langCode !== "FINANCIAL_FIGURES" && _this.sonIds.includes(item.id);
271
+ })))
272
+ isOtherChecked = true;
273
+ this.sonList = item.views.map((/**
274
+ * @param {?} item
275
+ * @return {?}
276
+ */
277
+ function (item) {
278
+ /** @type {?} */
279
+ var isDisabled = (isFiguresChecked && item.langCode !== "FINANCIAL_FIGURES") ||
280
+ (item.langCode === "FINANCIAL_FIGURES" && isOtherChecked);
281
+ return tslib_1.__assign({}, item, { checked: _this.cacheEntityType && _this.cacheEntityType !== _this.entityType
282
+ ? false
283
+ : _this.sonIds.includes(item.id), disabled: _this.cacheEntityType && _this.cacheEntityType !== _this.entityType
284
+ ? false
285
+ : isDisabled });
286
+ }));
287
+ this.cacheEntityType = item.entityType;
288
+ if (!isInit) {
289
+ this.sonIds = [];
290
+ this.grandsonList = [];
291
+ this.orginGrandData = [];
292
+ this.selectedAll = false;
293
+ this.isSelectAllDisabled = false;
294
+ if (this.cacheEntityType && this.cacheEntityType !== item.entityType) {
295
+ this.sonList = item.views.map((/**
296
+ * @param {?} item
297
+ * @return {?}
298
+ */
299
+ function (item) {
300
+ return tslib_1.__assign({}, item, { checked: false, disabled: false });
301
+ }));
302
+ }
303
+ }
304
+ };
305
+ /**
306
+ * @param {?} data
307
+ * @param {?=} val
308
+ * @return {?}
309
+ */
310
+ DataMartNewComponent.prototype.handleItemChange = /**
311
+ * @param {?} data
312
+ * @param {?=} val
313
+ * @return {?}
314
+ */
315
+ function (data, val) {
316
+ var _this = this;
317
+ if (!data)
318
+ return false;
319
+ if (val) {
320
+ if (Array.isArray(data)) {
321
+ data.forEach((/**
322
+ * @param {?} item
323
+ * @return {?}
324
+ */
325
+ function (item) {
326
+ if (!_this.sonIds.includes(item.id)) {
327
+ _this.sonIds.push(item.id);
328
+ }
329
+ if (Array.isArray(item.tables)) {
330
+ item.tables.forEach((/**
331
+ * @param {?} child
332
+ * @return {?}
333
+ */
334
+ function (child) {
335
+ if (!_this.grandsonList.some((/**
336
+ * @param {?} el
337
+ * @return {?}
338
+ */
339
+ function (el) { return el.id === child.id; }))) {
340
+ _this.grandsonList.push(tslib_1.__assign({}, child));
341
+ }
342
+ }));
343
+ }
344
+ }));
345
+ }
346
+ else {
347
+ // financial figures can’t be selected together with other groups
348
+ if (data.langCode !== "FINANCIAL_FIGURES") {
349
+ this.sonList.forEach((/**
350
+ * @param {?} item
351
+ * @return {?}
352
+ */
353
+ function (item) {
354
+ if (item.langCode === "FINANCIAL_FIGURES")
355
+ item.disabled = true;
356
+ }));
357
+ }
358
+ else {
359
+ if (!this.sonList.find((/**
360
+ * @param {?} item
361
+ * @return {?}
362
+ */
363
+ function (item) { return item.checked && item.langCode !== "FINANCIAL_FIGURES"; }))) {
364
+ this.sonList.forEach((/**
365
+ * @param {?} item
366
+ * @return {?}
367
+ */
368
+ function (item) {
369
+ if (item.langCode !== "FINANCIAL_FIGURES")
370
+ item.disabled = true;
371
+ }));
372
+ this.isSelectAllDisabled = true;
373
+ }
374
+ }
375
+ data.tables.forEach((/**
376
+ * @param {?} item
377
+ * @return {?}
378
+ */
379
+ function (item) {
380
+ if (!_this.grandsonList.some((/**
381
+ * @param {?} el
382
+ * @return {?}
383
+ */
384
+ function (el) { return el.id === item.id; }))) {
385
+ _this.grandsonList.push(tslib_1.__assign({}, item));
386
+ }
387
+ }));
388
+ if (!this.sonIds.includes(data.id)) {
389
+ this.sonIds.push(data.id);
390
+ }
391
+ }
392
+ }
393
+ else {
394
+ this.grandsonList = [];
395
+ this.sonList.forEach((/**
396
+ * @param {?} item
397
+ * @return {?}
398
+ */
399
+ function (item) {
400
+ if (data.langCode === "FINANCIAL_FIGURES") {
401
+ item.disabled = false;
402
+ _this.isSelectAllDisabled = false;
403
+ }
404
+ if (item.id == data.id) {
405
+ item.checked = val;
406
+ }
407
+ if (item.checked) {
408
+ item.tables.forEach((/**
409
+ * @param {?} sonItem
410
+ * @return {?}
411
+ */
412
+ function (sonItem) {
413
+ if (!_this.grandsonList.some((/**
414
+ * @param {?} el
415
+ * @return {?}
416
+ */
417
+ function (el) { return el.id === sonItem.id; }))) {
418
+ _this.grandsonList.push(tslib_1.__assign({}, sonItem));
419
+ }
420
+ }));
421
+ }
422
+ }));
423
+ if (data.langCode !== "FINANCIAL_FIGURES" &&
424
+ !this.sonList.find((/**
425
+ * @param {?} item
426
+ * @return {?}
427
+ */
428
+ function (item) { return item.checked && item.langCode !== "FINANCIAL_FIGURES"; }))) {
429
+ this.sonList.forEach((/**
430
+ * @param {?} obj
431
+ * @return {?}
432
+ */
433
+ function (obj) {
434
+ if (obj.langCode === "FINANCIAL_FIGURES")
435
+ obj.disabled = false;
436
+ }));
437
+ }
438
+ this.sonIds = this.sonIds.filter((/**
439
+ * @param {?} item
440
+ * @return {?}
441
+ */
442
+ function (item) { return item != data.id; }));
443
+ }
444
+ this.getSelectedAllStatus();
445
+ this.orginGrandData = JSON.parse(JSON.stringify(this.grandsonList));
446
+ if (!this.ref["destroyed"]) {
447
+ this.ref.markForCheck();
448
+ this.ref.detectChanges;
449
+ }
450
+ };
451
+ /**
452
+ * @param {?} val
453
+ * @return {?}
454
+ */
455
+ DataMartNewComponent.prototype.selectAll = /**
456
+ * @param {?} val
457
+ * @return {?}
458
+ */
459
+ function (val) {
460
+ var _this = this;
461
+ if (!val) {
462
+ this.orginGrandData = [];
463
+ }
464
+ this.grandsonList = [];
465
+ this.sonIds = [];
466
+ this.sonList.forEach((/**
467
+ * @param {?} item
468
+ * @return {?}
469
+ */
470
+ function (item) {
471
+ if (item.langCode !== "FINANCIAL_FIGURES")
472
+ item.checked = val;
473
+ if (val) {
474
+ if (item.langCode === "FINANCIAL_FIGURES") {
475
+ item.disabled = true;
476
+ return;
477
+ }
478
+ _this.sonIds.push(item.id);
479
+ item.tables.forEach((/**
480
+ * @param {?} sonItem
481
+ * @return {?}
482
+ */
483
+ function (sonItem) {
484
+ if (!_this.grandsonList.some((/**
485
+ * @param {?} el
486
+ * @return {?}
487
+ */
488
+ function (el) { return el.id === sonItem.id; }))) {
489
+ _this.grandsonList.push(tslib_1.__assign({}, sonItem));
490
+ }
491
+ }));
492
+ }
493
+ else {
494
+ if (item.langCode === "FINANCIAL_FIGURES")
495
+ item.disabled = false;
496
+ }
497
+ }));
498
+ this.orginGrandData = JSON.parse(JSON.stringify(this.grandsonList));
499
+ };
500
+ /**
501
+ * @param {?} val
502
+ * @return {?}
503
+ */
504
+ DataMartNewComponent.prototype.doSearch = /**
505
+ * @param {?} val
506
+ * @return {?}
507
+ */
508
+ function (val) {
509
+ /** @type {?} */
510
+ var tempList = JSON.parse(JSON.stringify(this.orginGrandData));
511
+ if (val) {
512
+ this.grandsonList = tempList.filter((/**
513
+ * @param {?} item
514
+ * @return {?}
515
+ */
516
+ function (item) {
517
+ return item.langValue.toLowerCase().includes(val.toLowerCase());
518
+ }));
519
+ }
520
+ else {
521
+ this.grandsonList = tempList;
522
+ }
523
+ };
524
+ // 保存弹窗筛选数据
525
+ // 保存弹窗筛选数据
526
+ /**
527
+ * @return {?}
528
+ */
529
+ DataMartNewComponent.prototype.saveData =
530
+ // 保存弹窗筛选数据
531
+ /**
532
+ * @return {?}
533
+ */
534
+ function () {
535
+ var _this = this;
536
+ this.pbf.introStep.next("complete");
537
+ this.pbf.pageLoading = true;
538
+ /** @type {?} */
539
+ var config;
540
+ /** @type {?} */
541
+ var datamartViewCode = this.sonList.filter((/**
542
+ * @param {?} el
543
+ * @return {?}
544
+ */
545
+ function (el) {
546
+ return _this.sonIds.includes(el.id);
547
+ }));
548
+ config = {
549
+ datamartId: this.fatherId,
550
+ datamartViewId: this.sonIds.join(","),
551
+ views: datamartViewCode.map((/**
552
+ * @param {?} e
553
+ * @return {?}
554
+ */
555
+ function (e) {
556
+ return {
557
+ datamartViewId: e.id,
558
+ datamartViewCode: e.langCode,
559
+ };
560
+ })),
561
+ };
562
+ /** @type {?} */
563
+ var entityList = this.data.dashboard.entityType === this.entityType
564
+ ? this.DashboardPorletsService.entityList
565
+ : [];
566
+ /** @type {?} */
567
+ var dataObj = {
568
+ entityList: entityList,
569
+ accountId: this.userInfo.accountId,
570
+ userId: this.userInfo.id,
571
+ dashboardId: this.data.dashboardId,
572
+ dataMartTables: this.grandsonList,
573
+ entityType: this.entityType || this.data.dashboard.entityType,
574
+ config: JSON.stringify(config),
575
+ };
576
+ this.http.post(this.api.urlList.AddDataMartTables, dataObj, (/**
577
+ * @param {?} res
578
+ * @return {?}
579
+ */
580
+ function (res) {
581
+ if (res.status === "SUCCESS") {
582
+ /** @type {?} */
583
+ var _saveMessage = _this.translation.DASHBOARD_PROPERTIES_SAVED ||
584
+ ".DASHBOARD_PROPERTIES_SAVED";
585
+ _this.showToast(_saveMessage, "Success");
586
+ _this.config.datamartViewId = _this.sonIds.join(",");
587
+ _this.config.views = [];
588
+ _this.sonList.forEach((/**
589
+ * @param {?} item
590
+ * @return {?}
591
+ */
592
+ function (item) {
593
+ _this.sonIds.forEach((/**
594
+ * @param {?} sonId
595
+ * @return {?}
596
+ */
597
+ function (sonId) {
598
+ if (item.id === sonId) {
599
+ _this.config.views.push({
600
+ datamartViewCode: item.langCode,
601
+ datamartViewId: item.id,
602
+ });
603
+ }
604
+ }));
605
+ }));
606
+ _this.data.dashboard.config = JSON.stringify(_this.config);
607
+ if (_this.data.edit) {
608
+ _this.DashboardPorletsService.portletFields_Temp = {};
609
+ }
610
+ if (entityList &&
611
+ entityList.length &&
612
+ _this.data.dashboard.entityType === _this.entityType) {
613
+ _this.pbf.triggerDashboardRefresh.next({
614
+ entityList: entityList,
615
+ id: _this.data.dashboard.id,
616
+ });
617
+ _this.dialogRef.close();
618
+ return;
619
+ }
620
+ _this.DashboardPorletsService.GetDashboardV1(_this.data.dashboardId, true, (/**
621
+ * @param {?} res
622
+ * @param {?=} portlets
623
+ * @return {?}
624
+ */
625
+ function (res, portlets) {
626
+ if (portlets === void 0) { portlets = []; }
627
+ _this.dashboardService.changelayout.next({
628
+ status: "true",
629
+ id: _this.data.dashboard.id,
630
+ });
631
+ _this.pbf.pageLoading = false;
632
+ _this.dialogRef.close({
633
+ push_btn: false,
634
+ portlet: {},
635
+ portlets: portlets,
636
+ dashboard: res,
637
+ });
638
+ _this.ref.markForCheck();
639
+ }));
640
+ }
641
+ else {
642
+ _this.pbf.pageLoading = false;
643
+ _this.pbf.pageLoading_.next(true);
644
+ _this.ref.markForCheck();
645
+ /** @type {?} */
646
+ var _saveMessage = res.messages[0].message || "error";
647
+ _this.showToast(_saveMessage, "Error");
648
+ }
649
+ }));
650
+ };
651
+ // toast msg
652
+ // toast msg
653
+ /**
654
+ * @param {?} msg
655
+ * @param {?} status
656
+ * @return {?}
657
+ */
658
+ DataMartNewComponent.prototype.showToast =
659
+ // toast msg
660
+ /**
661
+ * @param {?} msg
662
+ * @param {?} status
663
+ * @return {?}
664
+ */
665
+ function (msg, status) {
666
+ this.dialogService.showNotification(msg, {
667
+ status: status,
668
+ });
669
+ };
670
+ // 关闭弹窗
671
+ // 关闭弹窗
672
+ /**
673
+ * @return {?}
674
+ */
675
+ DataMartNewComponent.prototype.closePopup =
676
+ // 关闭弹窗
677
+ /**
678
+ * @return {?}
679
+ */
680
+ function () {
681
+ this.dialogRef.close();
682
+ };
683
+ DataMartNewComponent.decorators = [
684
+ { type: Component, args: [{
685
+ selector: "kt-data-mart-new",
686
+ 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",
687
+ 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}"]
688
+ }] }
689
+ ];
690
+ /** @nocollapse */
691
+ DataMartNewComponent.ctorParameters = function () { return [
692
+ { type: undefined, decorators: [{ type: Inject, args: [MAT_DIALOG_DATA,] }] },
693
+ { type: MatDialogRef },
694
+ { type: DialogService },
695
+ { type: MatDialog },
696
+ { type: ApiList },
697
+ { type: DashboardService },
698
+ { type: DashboardPorletsService },
699
+ { type: ChangeDetectorRef },
700
+ { type: undefined, decorators: [{ type: Optional }, { type: Inject, args: [PBF_TOKEN,] }] },
701
+ { type: undefined, decorators: [{ type: Optional }, { type: Inject, args: [API_SERVICE_TOKEN,] }] }
702
+ ]; };
703
+ return DataMartNewComponent;
704
+ }());
705
+ export { DataMartNewComponent };
706
+ if (false) {
707
+ /** @type {?} */
708
+ DataMartNewComponent.prototype.translation;
709
+ /** @type {?} */
710
+ DataMartNewComponent.prototype.userInfo;
711
+ /** @type {?} */
712
+ DataMartNewComponent.prototype.lang;
713
+ /** @type {?} */
714
+ DataMartNewComponent.prototype.entityType;
715
+ /** @type {?} */
716
+ DataMartNewComponent.prototype.config;
717
+ /** @type {?} */
718
+ DataMartNewComponent.prototype.fatherList;
719
+ /** @type {?} */
720
+ DataMartNewComponent.prototype.sonList;
721
+ /** @type {?} */
722
+ DataMartNewComponent.prototype.grandsonList;
723
+ /** @type {?} */
724
+ DataMartNewComponent.prototype.fatherId;
725
+ /** @type {?} */
726
+ DataMartNewComponent.prototype.sonIds;
727
+ /** @type {?} */
728
+ DataMartNewComponent.prototype.selectedAll;
729
+ /** @type {?} */
730
+ DataMartNewComponent.prototype.orginGrandData;
731
+ /** @type {?} */
732
+ DataMartNewComponent.prototype.disabled;
733
+ /** @type {?} */
734
+ DataMartNewComponent.prototype.cacheEntityType;
735
+ /** @type {?} */
736
+ DataMartNewComponent.prototype.isSelectAllDisabled;
737
+ /** @type {?} */
738
+ DataMartNewComponent.prototype.doFilter;
739
+ /** @type {?} */
740
+ DataMartNewComponent.prototype.data;
741
+ /** @type {?} */
742
+ DataMartNewComponent.prototype.dialogRef;
743
+ /**
744
+ * @type {?}
745
+ * @private
746
+ */
747
+ DataMartNewComponent.prototype.dialogService;
748
+ /** @type {?} */
749
+ DataMartNewComponent.prototype.dialog;
750
+ /**
751
+ * @type {?}
752
+ * @private
753
+ */
754
+ DataMartNewComponent.prototype.api;
755
+ /** @type {?} */
756
+ DataMartNewComponent.prototype.dashboardService;
757
+ /** @type {?} */
758
+ DataMartNewComponent.prototype.DashboardPorletsService;
759
+ /**
760
+ * @type {?}
761
+ * @private
762
+ */
763
+ DataMartNewComponent.prototype.ref;
764
+ /** @type {?} */
765
+ DataMartNewComponent.prototype.pbf;
766
+ /**
767
+ * @type {?}
768
+ * @private
769
+ */
770
+ DataMartNewComponent.prototype.http;
771
+ }
772
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YS1tYXJ0LW5ldy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9yYWlzZS1jb21tb24tbGliLyIsInNvdXJjZXMiOlsibGliL2Rhc2hib2FyZC9kYXNoYm9hcmQtcHJvcGVydGllcy9kYXRhLW1hcnQtbmV3L2RhdGEtbWFydC1uZXcuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLE9BQU8sRUFDTCxTQUFTLEVBRVQsTUFBTSxFQUNOLGlCQUFpQixFQUVqQixRQUFRLEdBQ1QsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsZUFBZSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDN0UsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUNwQyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUN6RSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sUUFBUSxDQUFDO0FBQ2xDLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxTQUFTLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUMvRSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFFaEU7SUF1QkUsOEJBQ2tDLElBQVMsRUFDbEMsU0FBNkMsRUFDNUMsYUFBNEIsRUFDN0IsTUFBaUIsRUFDaEIsR0FBWSxFQUNiLGdCQUFrQyxFQUNsQyx1QkFBZ0QsRUFDL0MsR0FBc0IsRUFDUSxHQUFRLEVBQ0MsSUFBUztRQVYxRCxpQkFXSTtRQVY4QixTQUFJLEdBQUosSUFBSSxDQUFLO1FBQ2xDLGNBQVMsR0FBVCxTQUFTLENBQW9DO1FBQzVDLGtCQUFhLEdBQWIsYUFBYSxDQUFlO1FBQzdCLFdBQU0sR0FBTixNQUFNLENBQVc7UUFDaEIsUUFBRyxHQUFILEdBQUcsQ0FBUztRQUNiLHFCQUFnQixHQUFo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Z0JBQ1AsZ0JBQWdCO2dCQUNoQix1QkFBdUI7Z0JBUDlCLGlCQUFpQjtnREE0Q2QsUUFBUSxZQUFJLE1BQU0sU0FBQyxTQUFTO2dEQUM1QixRQUFRLFlBQUksTUFBTSxTQUFDLGlCQUFpQjs7SUEwWnpDLDJCQUFDO0NBQUEsQUEzYkQsSUEyYkM7U0F0Ylksb0JBQW9COzs7SUFDL0IsMkNBQVk7O0lBQ1osd0NBQVM7O0lBQ1Qsb0NBQUs7O0lBQ0wsMENBQVc7O0lBQ1gsc0NBQU87O0lBRVAsMENBQXVCOztJQUN2Qix1Q0FBb0I7O0lBQ3BCLDRDQUF5Qjs7SUFDekIsd0NBQXFCOztJQUNyQixzQ0FBbUI7O0lBQ25CLDJDQUEyQjs7SUFDM0IsOENBQTJCOztJQUMzQix3Q0FBd0I7O0lBQ3hCLCtDQUE0Qjs7SUFDNUIsbURBQW1DOztJQWlUbkMsd0NBQTZEOztJQTlTM0Qsb0NBQXlDOztJQUN6Qyx5Q0FBb0Q7Ozs7O0lBQ3BELDZDQUFvQzs7SUFDcEMsc0NBQXdCOzs7OztJQUN4QixtQ0FBb0I7O0lBQ3BCLGdEQUF5Qzs7SUFDekMsdURBQXVEOzs7OztJQUN2RCxtQ0FBOEI7O0lBQzlCLG1DQUE4Qzs7Ozs7SUFDOUMsb0NBQXdEIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICBDb21wb25lbnQsXHJcbiAgT25Jbml0LFxyXG4gIEluamVjdCxcclxuICBDaGFuZ2VEZXRlY3RvclJlZixcclxuICBBZnRlclZpZXdJbml0LFxyXG4gIE9wdGlvbmFsLFxyXG59IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7IE1hdERpYWxvZywgTWF0RGlhbG9nUmVmLCBNQVRfRElBTE9HX0RBVEEgfSBmcm9tIFwiQGFuZ3VsYXIvbWF0ZXJpYWxcIjtcclxuaW1wb3J0IHsgQXBpTGlzdCB9IGZyb20gXCIuLi8uLi9hcGlcIjtcclxuaW1wb3J0IHsgRGFzaGJvYXJkU2VydmljZSB9IGZyb20gXCIuLi8uLi9kYXNoYm9hcmQuc2VydmljZVwiO1xyXG5pbXBvcnQgeyBEYXNoYm9hcmRQb3JsZXRzU2VydmljZSB9IGZyb20gXCIuLi8uLi9kYXNoYm9hcmRQb3JsZXRzLnNlcnZpY2VcIjtcclxuaW1wb3J0IHsgdGhyb3R0bGUgfSBmcm9tIFwibG9kYXNoXCI7XHJcbmltcG9ydCB7IEFQSV9TRVJWSUNFX1RPS0VOLCBQQkZfVE9LRU4gfSBmcm9tIFwiLi4vLi4vLi4vc2VydmljZS9JbmplY3Rpb25Ub2tlblwiO1xyXG5pbXBvcnQgeyBEaWFsb2dTZXJ2aWNlIH0gZnJvbSBcIi4uLy4uLy4uL3NlcnZpY2UvZGlhbG9nLnNlcnZpY2VcIjtcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiBcImt0LWRhdGEtbWFydC1uZXdcIixcclxuICB0ZW1wbGF0ZVVybDogXCIuL2RhdGEtbWFydC1uZXcuY29tcG9uZW50Lmh0bWxcIixcclxuICBzdHlsZVVybHM6IFtcIi4vZGF0YS1tYXJ0LW5ldy5jb21wb25lbnQuc2Nzc1wiXSxcclxufSlcclxuZXhwb3J0IGNsYXNzIERhdGFNYXJ0TmV3Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBBZnRlclZpZXdJbml0IHtcclxuICB0cmFuc2xhdGlvbjtcclxuICB1c2VySW5mbztcclxuICBsYW5nO1xyXG4gIGVudGl0eVR5cGU7XHJcbiAgY29uZmlnO1xyXG5cclxuICBwdWJsaWMgZmF0aGVyTGlzdCA9IFtdO1xyXG4gIHB1YmxpYyBzb25MaXN0ID0gW107XHJcbiAgcHVibGljIGdyYW5kc29uTGlzdCA9IFtdO1xyXG4gIHB1YmxpYyBmYXRoZXJJZCA9IFwiXCI7XHJcbiAgcHVibGljIHNvbklkcyA9IFtdO1xyXG4gIHB1YmxpYyBzZWxlY3RlZEFsbCA9IGZhbHNlO1xyXG4gIHB1YmxpYyBvcmdpbkdyYW5kRGF0YSA9IFtdO1xyXG4gIHB1YmxpYyBkaXNhYmxlZCA9IGZhbHNlO1xyXG4gIHB1YmxpYyBjYWNoZUVudGl0eVR5cGUgPSBcIlwiO1xyXG4gIHB1YmxpYyBpc1NlbGVjdEFsbERpc2FibGVkID0gZmFsc2U7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgQEluamVjdChNQVRfRElBTE9HX0RBVEEpIHB1YmxpYyBkYXRhOiBhbnksXHJcbiAgICBwdWJsaWMgZGlhbG9nUmVmOiBNYXREaWFsb2dSZWY8RGF0YU1hcnROZXdDb21wb25lbnQ+LFxyXG4gICAgcHJpdmF0ZSBkaWFsb2dTZXJ2aWNlOiBEaWFsb2dTZXJ2aWNlLFxyXG4gICAgcHVibGljIGRpYWxvZzogTWF0RGlhbG9nLFxyXG4gICAgcHJpdmF0ZSBhcGk6IEFwaUxpc3QsXHJcbiAgICBwdWJsaWMgZGFzaGJvYXJkU2VydmljZTogRGFzaGJvYXJkU2VydmljZSxcclxuICAgIHB1YmxpYyBEYXNoYm9hcmRQb3JsZXRzU2VydmljZTogRGFzaGJvYXJkUG9ybGV0c1NlcnZpY2UsXHJcbiAgICBwcml2YXRlIHJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcbiAgICBAT3B0aW9uYWwoKSBASW5qZWN0KFBCRl9UT0tFTikgcHVibGljIHBiZjogYW55LFxyXG4gICAgQE9wdGlvbmFsKCkgQEluamVjdChBUElfU0VSVklDRV9UT0tFTikgcHJpdmF0ZSBodHRwOiBhbnlcclxuICApIHt9XHJcbiAgbmdPbkluaXQoKSB7XHJcbiAgICB0aGlzLmdldEluZm8oKTtcclxuICAgIHRoaXMuZ2V0U291cmNlcygpO1xyXG4gIH1cclxuXHJcbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5wYmYuaW50cm9TdGVwLm5leHQoXCJuZXh0XCIpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldEluZm8oKSB7XHJcbiAgICB0aGlzLnRyYW5zbGF0aW9uID0gSlNPTi5wYXJzZShsb2NhbFN0b3JhZ2UuZ2V0SXRlbShcInRyYW5zbGF0aW9uXCIpKTtcclxuICAgIHRoaXMudXNlckluZm8gPSBKU09OLnBhcnNlKGxvY2FsU3RvcmFnZS5nZXRJdGVtKFwidXNlckluZm9cIikpO1xyXG4gICAgdGhpcy5sYW5nID0gdGhpcy5wYmYuZ2V0TGFuZ3VhZ2VQYXJhbXMoKTtcclxuICAgIHRoaXMuY29uZmlnID1cclxuICAgICAgdGhpcy5kYXRhICYmIHRoaXMuZGF0YS5kYXNoYm9hcmRcclxuICAgICAgICA/IEpTT04ucGFyc2UodGhpcy5kYXRhLmRhc2hib2FyZC5jb25maWcpXHJcbiAgICAgICAgOiB7fTtcclxuICB9XHJcbiAgZ2V0U291cmNlcygpIHtcclxuICAgIGNvbnN0IGRhdGFPYmogPSB7XHJcbiAgICAgIGFjY291bnRJZDogdGhpcy51c2VySW5mby5hY2NvdW50SWQsXHJcbiAgICAgIGxhbmd1YWdlOiB0aGlzLmxhbmcsXHJcbiAgICAgIGRhc2hib2FyZFZlcnNpb246IDIsXHJcbiAgICB9O1xyXG4gICAgdGhpcy5wYmYucGFnZUxvYWRpbmcgPSB0cnVlO1xyXG4gICAgdGhpcy5wYmYucGFnZUxvYWRpbmdfLm5leHQodHJ1ZSk7XHJcbiAgICB0aGlzLmh0dHAucG9zdCh0aGlzLmFwaS51cmxMaXN0LkdldFNvdXJjZXMsIGRhdGFPYmosIChyZXMpID0+IHtcclxuICAgICAgdGhpcy5wYmYucGFnZUxvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgdGhpcy5wYmYucGFnZUxvYWRpbmdfLm5leHQodHJ1ZSk7XHJcbiAgICAgIGlmIChyZXMpIHtcclxuICAgICAgICB0aGlzLkRhc2hib2FyZFBvcmxldHNTZXJ2aWNlLnNvdXJjZXNEYXRhW3RoaXMuZGF0YS5kYXNoYm9hcmQuaWRdID0gcmVzO1xyXG4gICAgICAgIHRoaXMuRGFzaGJvYXJkUG9ybGV0c1NlcnZpY2UuR2V0U291cmNlc1JlcyA9IHJlcztcclxuICAgICAgICB0aGlzLmZhdGhlckxpc3QgPSByZXM7XHJcblxyXG4gICAgICAgIGlmICh0aGlzLmNvbmZpZy5kYXRhbWFydElkKSB7XHJcbiAgICAgICAgICAvLyB0aGlzLmRpc2FibGVkID0gdHJ1ZTtcclxuICAgICAgICAgIHRoaXMuZmF0aGVySWQgPSB0aGlzLmNvbmZpZy5kYXRhbWFydElkO1xyXG4gICAgICAgICAgdGhpcy5zb25JZHMgPSB0aGlzLmNvbmZpZy5kYXRhbWFydFZpZXdJZFxyXG4gICAgICAgICAgICA/IHRoaXMuY29uZmlnLmRhdGFtYXJ0Vmlld0lkLnNwbGl0KFwiLFwiKVxyXG4gICAgICAgICAgICA6IHRoaXMuY29uZmlnLnZpZXdzXHJcbiAgICAgICAgICAgID8gdGhpcy5jb25maWcudmlld3MubWFwKChpdGVtKSA9PiBpdGVtLmRhdGFtYXJ0Vmlld0lkKVxyXG4gICAgICAgICAgICA6IFtdO1xyXG4gICAgICAgICAgbGV0IGRhdGFzb3VyY2UgPSByZXMuZmluZCgoZWwpID0+IGVsLmlkID09IHRoaXMuZmF0aGVySWQpO1xyXG4gICAgICAgICAgaWYgKGRhdGFzb3VyY2UpIHtcclxuICAgICAgICAgICAgdGhpcy5nZXRkYXRhTWFydChkYXRhc291cmNlLCB0cnVlKTtcclxuICAgICAgICAgICAgaWYgKCF0aGlzLmNhY2hlRW50aXR5VHlwZSAmJiB0aGlzLmNvbmZpZy5kYXRhbWFydElkKSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5jYWNoZUVudGl0eVR5cGUgPSB0aGlzLmVudGl0eVR5cGU7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIGxldCBkYXRhdmlldyA9IGRhdGFzb3VyY2Uudmlld3MuZmlsdGVyKChlbCkgPT5cclxuICAgICAgICAgICAgICB0aGlzLnNvbklkcy5pbmNsdWRlcyhlbC5pZClcclxuICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgdGhpcy5oYW5kbGVJdGVtQ2hhbmdlKGRhdGF2aWV3LCB0cnVlKTtcclxuICAgICAgICAgICAgdGhpcy5nZXRTZWxlY3RlZEFsbFN0YXR1cygpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG4gIGdldFNlbGVjdGVkQWxsU3RhdHVzKCkge1xyXG4gICAgbGV0IG51bSA9IDA7XHJcbiAgICB0aGlzLnNvbkxpc3QuZm9yRWFjaCgoc29uKSA9PiB7XHJcbiAgICAgIGlmIChzb24uY2hlY2tlZCAmJiBzb24ubGFuZ0NvZGUgIT09IFwiRklOQU5DSUFMX0ZJR1VSRVNcIikge1xyXG4gICAgICAgIG51bSsrO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICAgIGlmIChudW0gPT09IHRoaXMuc29uTGlzdC5sZW5ndGggLSAxKSB0aGlzLnNlbGVjdGVkQWxsID0gdHJ1ZTtcclxuICAgIGVsc2UgdGhpcy5zZWxlY3RlZEFsbCA9IGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgbmV4dFN0ZXAoKSB7XHJcbiAgICB0aGlzLnBiZi5pbnRyb1N0ZXAubmV4dChcIm5leHRcIik7XHJcbiAgfVxyXG5cclxuICBnZXRkYXRhTWFydChpdGVtLCBpc0luaXQgPSBmYWxzZSkge1xyXG4gICAgaWYgKHRoaXMuY2FjaGVFbnRpdHlUeXBlICYmIHRoaXMuY2FjaGVFbnRpdHlUeXBlID09PSBpdGVtLmVudGl0eVR5cGUpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgaWYgKFxyXG4gICAgICAhaXNJbml0ICYmXHJcbiAgICAgIHRoaXMuY2FjaGVFbnRpdHlUeXBlICYmXHJcbiAgICAgIHRoaXMuY2FjaGVFbnRpdHlUeXBlICE9PSBpdGVtLmVudGl0eVR5cGVcclxuICAgICkge1xyXG4gICAgICBjb25zdCBfdGl0bGUgPVxyXG4gICAgICAgIHRoaXMudHJhbnNsYXRpb24uQVJFX1lPVV9TVVJFX1RPX0NIQU5HRV9EQVRBX01BUlQgfHxcclxuICAgICAgICBcIi5BcmUgeW91IHN1cmUgdG8gY2hhbmdlIGVudGl0eSB0eXBlIG9mIGRhdGEgbWFydD8gRGFzaGJvYXJkIHdpbGwgYmUgcmVzZXQgc2luY2UgZW50aXR5IHR5cGUgaXMgY2hhbmdlZC5cIjtcclxuICAgICAgY29uc3QgX25vID0gdGhpcy50cmFuc2xhdGlvbi5OTyB8fCBcIi5OT1wiO1xyXG4gICAgICBjb25zdCBfeWVzID0gdGhpcy50cmFuc2xhdGlvbi5ZRVMgfHwgXCIuWUVTXCI7XHJcbiAgICAgIC8vIGNvbnN0IGRpYWxvZ1JlZiA9IHRoaXMubGF5b3V0VXRpbHNTZXJ2aWNlLmFsZXJ0RWxlbWVudChcclxuICAgICAgLy8gXHR0aGlzLnRyYW5zbGF0aW9uLldBUk5JTkcgfHwgXCIuV0FSTklOR1wiLFxyXG4gICAgICAvLyBcdF90aXRsZSxcclxuICAgICAgLy8gXHRfbm8sXHJcbiAgICAgIC8vIFx0X3llcyxcclxuICAgICAgLy8gXHR0cnVlLFxyXG4gICAgICAvLyBcdHRydWUsXHJcbiAgICAgIC8vIFx0XCI0ODBweFwiLFxyXG4gICAgICAvLyBcdFwiMzI0cHhcIlxyXG4gICAgICAvLyApO1xyXG4gICAgICBjb25zdCBkaWFsb2dSZWYgPSB0aGlzLmRpYWxvZ1NlcnZpY2Uuc2hvd0NvbW1vbkRpbGFvZyh7XHJcbiAgICAgICAgdGl0bGU6IHRoaXMudHJhbnNsYXRpb24uV0FSTklORyB8fCBcIi5XQVJOSU5HXCIsXHJcbiAgICAgICAgZGVzY3JpcHRpb246IF90aXRsZSxcclxuICAgICAgICBzYXZlQnRuTGFiZWw6IF95ZXMsXHJcbiAgICAgICAgY2FuY2VsQnRuTGFiZWw6IF9ubyxcclxuICAgICAgfSk7XHJcbiAgICAgIGRpYWxvZ1JlZi5hZnRlckNsb3NlZCgpLnN1YnNjcmliZSgocmVzKSA9PiB7XHJcbiAgICAgICAgaWYgKCFyZXMpIHtcclxuICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5zZXRGYXRoZXJJZChpdGVtLCBpc0luaXQpO1xyXG4gICAgICB9KTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgaWYgKCFpdGVtKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIHRoaXMuc2V0RmF0aGVySWQoaXRlbSwgaXNJbml0KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgc2V0RmF0aGVySWQoaXRlbSwgaXNJbml0KSB7XHJcbiAgICB0aGlzLmZhdGhlcklkID0gaXRlbS5pZDtcclxuICAgIHRoaXMuZW50aXR5VHlwZSA9IGl0ZW0uZW50aXR5VHlwZTtcclxuICAgIGxldCBpc0ZpZ3VyZXNDaGVja2VkID0gZmFsc2U7XHJcbiAgICBsZXQgaXNPdGhlckNoZWNrZWQgPSBmYWxzZTtcclxuICAgIGlmIChcclxuICAgICAgaXRlbS52aWV3cy5maW5kKFxyXG4gICAgICAgIChpdGVtKSA9PlxyXG4gICAgICAgICAgaXRlbS5sYW5nQ29kZSA9PT0gXCJGSU5BTkNJQUxfRklHVVJFU1wiICYmIHRoaXMuc29uSWRzLmluY2x1ZGVzKGl0ZW0uaWQpXHJcbiAgICAgIClcclxuICAgICkge1xyXG4gICAgICBpc0ZpZ3VyZXNDaGVja2VkID0gdHJ1ZTtcclxuICAgICAgdGhpcy5pc1NlbGVjdEFsbERpc2FibGVkID0gdHJ1ZTtcclxuICAgIH1cclxuICAgIGlmIChcclxuICAgICAgaXRlbS52aWV3cy5maW5kKFxyXG4gICAgICAgIChpdGVtKSA9PlxyXG4gICAgICAgICAgaXRlbS5sYW5nQ29kZSAhPT0gXCJGSU5BTkNJQUxfRklHVVJFU1wiICYmIHRoaXMuc29uSWRzLmluY2x1ZGVzKGl0ZW0uaWQpXHJcbiAgICAgIClcclxuICAgIClcclxuICAgICAgaXNPdGhlckNoZWNrZWQgPSB0cnVlO1xyXG5cclxuICAgIHRoaXMuc29uTGlzdCA9IGl0ZW0udmlld3MubWFwKChpdGVtKSA9PiB7XHJcbiAgICAgIGxldCBpc0Rpc2FibGVkID1cclxuICAgICAgICAoaXNGaWd1cmVzQ2hlY2tlZCAmJiBpdGVtLmxhbmdDb2RlICE9PSBcIkZJTkFOQ0lBTF9GSUdVUkVTXCIpIHx8XHJcbiAgICAgICAgKGl0ZW0ubGFuZ0NvZGUgPT09IFwiRklOQU5DSUFMX0ZJR1VSRVNcIiAmJiBpc090aGVyQ2hlY2tlZCk7XHJcbiAgICAgIHJldHVybiB7XHJcbiAgICAgICAgLi4uaXRlbSxcclxuICAgICAgICBjaGVja2VkOlxyXG4gICAgICAgICAgdGhpcy5jYWNoZUVudGl0eVR5cGUgJiYgdGhpcy5jYWNoZUVudGl0eVR5cGUgIT09IHRoaXMuZW50aXR5VHlwZVxyXG4gICAgICAgICAgICA/IGZhbHNlXHJcbiAgICAgICAgICAgIDogdGhpcy5zb25JZHMuaW5jbHVkZXMoaXRlbS5pZCksXHJcbiAgICAgICAgZGlzYWJsZWQ6XHJcbiAgICAgICAgICB0aGlzLmNhY2hlRW50aXR5VHlwZSAmJiB0aGlzLmNhY2hlRW50aXR5VHlwZSAhPT0gdGhpcy5lbnRpdHlUeXBlXHJcbiAgICAgICAgICAgID8gZmFsc2VcclxuICAgICAgICAgICAgOiBpc0Rpc2FibGVkLFxyXG4gICAgICB9O1xyXG4gICAgfSk7XHJcblxyXG4gICAgdGhpcy5jYWNoZUVudGl0eVR5cGUgPSBpdGVtLmVudGl0eVR5cGU7XHJcblxyXG4gICAgaWYgKCFpc0luaXQpIHtcclxuICAgICAgdGhpcy5zb25JZHMgPSBbXTtcclxuICAgICAgdGhpcy5ncmFuZHNvbkxpc3QgPSBbXTtcclxuICAgICAgdGhpcy5vcmdpbkdyYW5kRGF0YSA9IFtdO1xyXG4gICAgICB0aGlzLnNlbGVjdGVkQWxsID0gZmFsc2U7XHJcbiAgICAgIHRoaXMuaXNTZWxlY3RBbGxEaXNhYmxlZCA9IGZhbHNlO1xyXG4gICAgICBpZiAodGhpcy5jYWNoZUVudGl0eVR5cGUgJiYgdGhpcy5jYWNoZUVudGl0eVR5cGUgIT09IGl0ZW0uZW50aXR5VHlwZSkge1xyXG4gICAgICAgIHRoaXMuc29uTGlzdCA9IGl0ZW0udmlld3MubWFwKChpdGVtKSA9PiB7XHJcbiAgICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICAuLi5pdGVtLFxyXG4gICAgICAgICAgICBjaGVja2VkOiBmYWxzZSxcclxuICAgICAgICAgICAgZGlzYWJsZWQ6IGZhbHNlLFxyXG4gICAgICAgICAgfTtcclxuICAgICAgICB9KTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgaGFuZGxlSXRlbUNoYW5nZShkYXRhLCB2YWw/OiBib29sZWFuKSB7XHJcbiAgICBpZiAoIWRhdGEpIHJldHVybiBmYWxzZTtcclxuICAgIGlmICh2YWwpIHtcclxuICAgICAgaWYgKEFycmF5LmlzQXJyYXkoZGF0YSkpIHtcclxuICAgICAgICBkYXRhLmZvckVhY2goKGl0ZW0pID0+IHtcclxuICAgICAgICAgIGlmICghdGhpcy5zb25JZHMuaW5jbHVkZXMoaXRlbS5pZCkpIHtcclxuICAgICAgICAgICAgdGhpcy5zb25JZHMucHVzaChpdGVtLmlkKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KGl0ZW0udGFibGVzKSkge1xyXG4gICAgICAgICAgICBpdGVtLnRhYmxlcy5mb3JFYWNoKChjaGlsZCkgPT4ge1xyXG4gICAgICAgICAgICAgIGlmICghdGhpcy5ncmFuZHNvbkxpc3Quc29tZSgoZWwpID0+IGVsLmlkID09PSBjaGlsZC5pZCkpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuZ3JhbmRzb25MaXN0LnB1c2goe1xyXG4gICAgICAgICAgICAgICAgICAuLi5jaGlsZCxcclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgLy8gZmluYW5jaWFsIGZpZ3VyZXMgY2Fu4oCZdCBiZSBzZWxlY3RlZCB0b2dldGhlciB3aXRoIG90aGVyIGdyb3Vwc1xyXG4gICAgICAgIGlmIChkYXRhLmxhbmdDb2RlICE9PSBcIkZJTkFOQ0lBTF9GSUdVUkVTXCIpIHtcclxuICAgICAgICAgIHRoaXMuc29uTGlzdC5mb3JFYWNoKChpdGVtKSA9PiB7XHJcbiAgICAgICAgICAgIGlmIChpdGVtLmxhbmdDb2RlID09PSBcIkZJTkFOQ0lBTF9GSUdVUkVTXCIpIGl0ZW0uZGlzYWJsZWQgPSB0cnVlO1xyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIGlmIChcclxuICAgICAgICAgICAgIXRoaXMuc29uTGlzdC5maW5kKFxyXG4gICAgICAgICAgICAgIChpdGVtKSA9PiBpdGVtLmNoZWNrZWQgJiYgaXRlbS5sYW5nQ29kZSAhPT0gXCJGSU5BTkNJQUxfRklHVVJFU1wiXHJcbiAgICAgICAgICAgIClcclxuICAgICAgICAgICkge1xyXG4gICAgICAgICAgICB0aGlzLnNvbkxpc3QuZm9yRWFjaCgoaXRlbSkgPT4ge1xyXG4gICAgICAgICAgICAgIGlmIChpdGVtLmxhbmdDb2RlICE9PSBcIkZJTkFOQ0lBTF9GSUdVUkVTXCIpIGl0ZW0uZGlzYWJsZWQgPSB0cnVlO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgdGhpcy5pc1NlbGVjdEFsbERpc2FibGVkID0gdHJ1ZTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgZGF0YS50YWJsZXMuZm9yRWFjaCgoaXRlbSkgPT4ge1xyXG4gICAgICAgICAgaWYgKCF0aGlzLmdyYW5kc29uTGlzdC5zb21lKChlbCkgPT4gZWwuaWQgPT09IGl0ZW0uaWQpKSB7XHJcbiAgICAgICAgICAgIHRoaXMuZ3JhbmRzb25MaXN0LnB1c2goe1xyXG4gICAgICAgICAgICAgIC4uLml0ZW0sXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIGlmICghdGhpcy5zb25JZHMuaW5jbHVkZXMoZGF0YS5pZCkpIHtcclxuICAgICAgICAgIHRoaXMuc29uSWRzLnB1c2goZGF0YS5pZCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmdyYW5kc29uTGlzdCA9IFtdO1xyXG4gICAgICB0aGlzLnNvbkxpc3QuZm9yRWFjaCgoaXRlbSkgPT4ge1xyXG4gICAgICAgIGlmIChkYXRhLmxhbmdDb2RlID09PSBcIkZJTkFOQ0lBTF9GSUdVUkVTXCIpIHtcclxuICAgICAgICAgIGl0ZW0uZGlzYWJsZWQgPSBmYWxzZTtcclxuICAgICAgICAgIHRoaXMuaXNTZWxlY3RBbGxEaXNhYmxlZCA9IGZhbHNlO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoaXRlbS5pZCA9PSBkYXRhLmlkKSB7XHJcbiAgICAgICAgICBpdGVtLmNoZWNrZWQgPSB2YWw7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChpdGVtLmNoZWNrZWQpIHtcclxuICAgICAgICAgIGl0ZW0udGFibGVzLmZvckVhY2goKHNvbkl0ZW0pID0+IHtcclxuICAgICAgICAgICAgaWYgKCF0aGlzLmdyYW5kc29uTGlzdC5zb21lKChlbCkgPT4gZWwuaWQgPT09IHNvbkl0ZW0uaWQpKSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5ncmFuZHNvbkxpc3QucHVzaCh7XHJcbiAgICAgICAgICAgICAgICAuLi5zb25JdGVtLFxyXG4gICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgICBpZiAoXHJcbiAgICAgICAgZGF0YS5sYW5nQ29kZSAhPT0gXCJGSU5BTkNJQUxfRklHVVJFU1wiICYmXHJcbiAgICAgICAgIXRoaXMuc29uTGlzdC5maW5kKFxyXG4gICAgICAgICAgKGl0ZW0pID0+IGl0ZW0uY2hlY2tlZCAmJiBpdGVtLmxhbmdDb2RlICE9PSBcIkZJTkFOQ0lBTF9GSUdVUkVTXCJcclxuICAgICAgICApXHJcbiAgICAgICkge1xyXG4gICAgICAgIHRoaXMuc29uTGlzdC5mb3JFYWNoKChvYmopID0+IHtcclxuICAgICAgICAgIGlmIChvYmoubGFuZ0NvZGUgPT09IFwiRklOQU5DSUFMX0ZJR1VSRVNcIikgb2JqLmRpc2FibGVkID0gZmFsc2U7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5zb25JZHMgPSB0aGlzLnNvbklkcy5maWx0ZXIoKGl0ZW0pID0+IGl0ZW0gIT0gZGF0YS5pZCk7XHJcbiAgICB9XHJcbiAgICB0aGlzLmdldFNlbGVjdGVkQWxsU3RhdHVzKCk7XHJcbiAgICB0aGlzLm9yZ2luR3JhbmREYXRhID0gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeSh0aGlzLmdyYW5kc29uTGlzdCkpO1xyXG4gICAgaWYgKCF0aGlzLnJlZltcImRlc3Ryb3llZFwiXSkge1xyXG4gICAgICB0aGlzLnJlZi5tYXJrRm9yQ2hlY2soKTtcclxuICAgICAgdGhpcy5yZWYuZGV0ZWN0Q2hhbmdlcztcclxuICAgIH1cclxuICB9XHJcbiAgc2VsZWN0QWxsKHZhbCkge1xyXG4gICAgaWYgKCF2YWwpIHtcclxuICAgICAgdGhpcy5vcmdpbkdyYW5kRGF0YSA9IFtdO1xyXG4gICAgfVxyXG4gICAgdGhpcy5ncmFuZHNvbkxpc3QgPSBbXTtcclxuICAgIHRoaXMuc29uSWRzID0gW107XHJcbiAgICB0aGlzLnNvbkxpc3QuZm9yRWFjaCgoaXRlbSkgPT4ge1xyXG4gICAgICBpZiAoaXRlbS5sYW5nQ29kZSAhPT0gXCJGSU5BTkNJQUxfRklHVVJFU1wiKSBpdGVtLmNoZWNrZWQgPSB2YWw7XHJcbiAgICAgIGlmICh2YWwpIHtcclxuICAgICAgICBpZiAoaXRlbS5sYW5nQ29kZSA9PT0gXCJGSU5BTkNJQUxfRklHVVJFU1wiKSB7XHJcbiAgICAgICAgICBpdGVtLmRpc2FibGVkID0gdHJ1ZTtcclxuICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5zb25JZHMucHVzaChpdGVtLmlkKTtcclxuICAgICAgICBpdGVtLnRhYmxlcy5mb3JFYWNoKChzb25JdGVtKSA9PiB7XHJcbiAgICAgICAgICBpZiAoIXRoaXMuZ3JhbmRzb25MaXN0LnNvbWUoKGVsKSA9PiBlbC5pZCA9PT0gc29uSXRlbS5pZCkpIHtcclxuICAgICAgICAgICAgdGhpcy5ncmFuZHNvbkxpc3QucHVzaCh7XHJcbiAgICAgICAgICAgICAgLi4uc29uSXRlbSxcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgaWYgKGl0ZW0ubGFuZ0NvZGUgPT09IFwiRklOQU5DSUFMX0ZJR1VSRVNcIikgaXRlbS5kaXNhYmxlZCA9IGZhbHNlO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICAgIHRoaXMub3JnaW5HcmFuZERhdGEgPSBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KHRoaXMuZ3JhbmRzb25MaXN0KSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZG9GaWx0ZXIgPSB0aHJvdHRsZSgodmFsKSA9PiB0aGlzLmRvU2VhcmNoKHZhbCksIDIwMCk7XHJcbiAgcHVibGljIGRvU2VhcmNoKHZhbCkge1xyXG4gICAgbGV0IHRlbXBMaXN0ID0gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeSh0aGlzLm9yZ2luR3JhbmREYXRhKSk7XHJcbiAgICBpZiAodmFsKSB7XHJcbiAgICAgIHRoaXMuZ3JhbmRzb25MaXN0ID0gdGVtcExpc3QuZmlsdGVyKChpdGVtKSA9PlxyXG4gICAgICAgIGl0ZW0ubGFuZ1ZhbHVlLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXModmFsLnRvTG93ZXJDYXNlKCkpXHJcbiAgICAgICk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmdyYW5kc29uTGlzdCA9IHRlbXBMaXN0O1xyXG4gICAgfVxyXG4gIH1cclxuICAvLyDkv53lrZjlvLnnqpfnrZvpgInmlbDmja5cclxuICBzYXZlRGF0YSgpIHtcclxuICAgIHRoaXMucGJmLmludHJvU3RlcC5uZXh0KFwiY29tcGxldGVcIik7XHJcbiAgICB0aGlzLnBiZi5wYWdlTG9hZGluZyA9IHRydWU7XHJcbiAgICBsZXQgY29uZmlnO1xyXG4gICAgbGV0IGRhdGFtYXJ0Vmlld0NvZGUgPSB0aGlzLnNvbkxpc3QuZmlsdGVyKChlbCkgPT5cclxuICAgICAgdGhpcy5zb25JZHMuaW5jbHVkZXMoZWwuaWQpXHJcbiAgICApO1xyXG4gICAgY29uZmlnID0ge1xyXG4gICAgICBkYXRhbWFydElkOiB0aGlzLmZhdGhlcklkLFxyXG4gICAgICBkYXRhbWFydFZpZXdJZDogdGhpcy5zb25JZHMuam9pbihcIixcIiksXHJcbiAgICAgIHZpZXdzOiBkYXRhbWFydFZpZXdDb2RlLm1hcCgoZSkgPT4ge1xyXG4gICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICBkYXRhbWFydFZpZXdJZDogZS5pZCxcclxuICAgICAgICAgIGRhdGFtYXJ0Vmlld0NvZGU6IGUubGFuZ0NvZGUsXHJcbiAgICAgICAgfTtcclxuICAgICAgfSksXHJcbiAgICB9O1xyXG4gICAgY29uc3QgZW50aXR5TGlzdCA9XHJcbiAgICAgIHRoaXMuZGF0YS5kYXNoYm9hcmQuZW50aXR5VHlwZSA9PT0gdGhpcy5lbnRpdHlUeXBlXHJcbiAgICAgICAgPyB0aGlzLkRhc2hib2FyZFBvcmxldHNTZXJ2aWNlLmVudGl0eUxpc3RcclxuICAgICAgICA6IFtdO1xyXG5cclxuICAgIGNvbnN0IGRhdGFPYmogPSB7XHJcbiAgICAgIGVudGl0eUxpc3QsXHJcbiAgICAgIGFjY291bnRJZDogdGhpcy51c2VySW5mby5hY2NvdW50SWQsXHJcbiAgICAgIHVzZXJJZDogdGhpcy51c2VySW5mby5pZCxcclxuICAgICAgZGFzaGJvYXJkSWQ6IHRoaXMuZGF0YS5kYXNoYm9hcmRJZCxcclxuICAgICAgZGF0YU1hcnRUYWJsZXM6IHRoaXMuZ3JhbmRzb25MaXN0LFxyXG4gICAgICBlbnRpdHlUeXBlOiB0aGlzLmVudGl0eVR5cGUgfHwgdGhpcy5kYXRhLmRhc2hib2FyZC5lbnRpdHlUeXBlLFxyXG4gICAgICBjb25maWc6IEpTT04uc3RyaW5naWZ5KGNvbmZpZyksXHJcbiAgICB9O1xyXG5cclxuICAgIHRoaXMuaHR0cC5wb3N0KHRoaXMuYXBpLnVybExpc3QuQWRkRGF0YU1hcnRUYWJsZXMsIGRhdGFPYmosIChyZXMpID0+IHtcclxuICAgICAgaWYgKHJlcy5zdGF0dXMgPT09IFwiU1VDQ0VTU1wiKSB7XHJcbiAgICAgICAgY29uc3QgX3NhdmVNZXNzYWdlID1cclxuICAgICAgICAgIHRoaXMudHJhbnNsYXRpb24uREFTSEJPQVJEX1BST1BFUlRJRVNfU0FWRUQgfHxcclxuICAgICAgICAgIFwiLkRBU0hCT0FSRF9QUk9QRVJUSUVTX1NBVkVEXCI7XHJcbiAgICAgICAgdGhpcy5zaG93VG9hc3QoX3NhdmVNZXNzYWdlLCBcIlN1Y2Nlc3NcIik7XHJcbiAgICAgICAgdGhpcy5jb25maWcuZGF0YW1hcnRWaWV3SWQgPSB0aGlzLnNvbklkcy5qb2luKFwiLFwiKTtcclxuICAgICAgICB0aGlzLmNvbmZpZy52aWV3cyA9IFtdO1xyXG4gICAgICAgIHRoaXMuc29uTGlzdC5mb3JFYWNoKChpdGVtKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLnNvbklkcy5mb3JFYWNoKChzb25JZCkgPT4ge1xyXG4gICAgICAgICAgICBpZiAoaXRlbS5pZCA9PT0gc29uSWQpIHtcclxuICAgICAgICAgICAgICB0aGlzLmNvbmZpZy52aWV3cy5wdXNoKHtcclxuICAgICAgICAgICAgICAgIGRhdGFtYXJ0Vmlld0NvZGU6IGl0ZW0ubGFuZ0NvZGUsXHJcbiAgICAgICAgICAgICAgICBkYXRhbWFydFZpZXdJZDogaXRlbS5pZCxcclxuICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIHRoaXMuZGF0YS5kYXNoYm9hcmQuY29uZmlnID0gSlNPTi5zdHJpbmdpZnkodGhpcy5jb25maWcpO1xyXG4gICAgICAgIGlmICh0aGlzLmRhdGEuZWRpdCkge1xyXG4gICAgICAgICAgdGhpcy5EYXNoYm9hcmRQb3JsZXRzU2VydmljZS5wb3J0bGV0RmllbGRzX1RlbXAgPSB7fTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKFxyXG4gICAgICAgICAgZW50aXR5TGlzdCAmJlxyXG4gICAgICAgICAgZW50aXR5TGlzdC5sZW5ndGggJiZcclxuICAgICAgICAgIHRoaXMuZGF0YS5kYXNoYm9hcmQuZW50aXR5VHlwZSA9PT0gdGhpcy5lbnRpdHlUeXBlXHJcbiAgICAgICAgKSB7XHJcbiAgICAgICAgICB0aGlzLnBiZi50cmlnZ2VyRGFzaGJvYXJkUmVmcmVzaC5uZXh0KHtcclxuICAgICAgICAgICAgZW50aXR5TGlzdCxcclxuICAgICAgICAgICAgaWQ6IHRoaXMuZGF0YS5kYXNoYm9hcmQuaWQsXHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICAgIHRoaXMuZGlhbG9nUmVmLmNsb3NlKCk7XHJcbiAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB0aGlzLkRhc2hib2FyZFBvcmxldHNTZXJ2aWNlLkdldERhc2hib2FyZFYxKFxyXG4gICAgICAgICAgdGhpcy5kYXRhLmRhc2hib2FyZElkLFxyXG4gICAgICAgICAgdHJ1ZSxcclxuICAgICAgICAgIChyZXMsIHBvcnRsZXRzID0gW10pID0+IHtcclxuICAgICAgICAgICAgdGhpcy5kYXNoYm9hcmRTZXJ2aWNlLmNoYW5nZWxheW91dC5uZXh0KHtcclxuICAgICAgICAgICAgICBzdGF0dXM6IFwidHJ1ZVwiLFxyXG4gICAgICAgICAgICAgIGlkOiB0aGlzLmRhdGEuZGFzaGJvYXJkLmlkLFxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgdGhpcy5wYmYucGFnZUxvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICAgICAgdGhpcy5kaWFsb2dSZWYuY2xvc2Uoe1xyXG4gICAgICAgICAgICAgIHB1c2hfYnRuOiBmYWxzZSxcclxuICAgICAgICAgICAgICBwb3J0bGV0OiB7fSxcclxuICAgICAgICAgICAgICBwb3J0bGV0cyxcclxuICAgICAgICAgICAgICBkYXNoYm9hcmQ6IHJlcyxcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIHRoaXMucmVmLm1hcmtGb3JDaGVjaygpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5wYmYucGFnZUxvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLnBiZi5wYWdlTG9hZGluZ18ubmV4dCh0cnVlKTtcclxuICAgICAgICB0aGlzLnJlZi5tYXJrRm9yQ2hlY2soKTtcclxuICAgICAgICBjb25zdCBfc2F2ZU1lc3NhZ2UgPSByZXMubWVzc2FnZXNbMF0ubWVzc2FnZSB8fCBcImVycm9yXCI7XHJcbiAgICAgICAgdGhpcy5zaG93VG9hc3QoX3NhdmVNZXNzYWdlLCBcIkVycm9yXCIpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcbiAgLy8gdG9hc3QgbXNnXHJcbiAgcHVibGljIHNob3dUb2FzdChtc2csIHN0YXR1czogXCJTdWNjZXNzXCIgfCBcIkVycm9yXCIpIHtcclxuICAgIHRoaXMuZGlhbG9nU2VydmljZS5zaG93Tm90aWZpY2F0aW9uKG1zZywge1xyXG4gICAgICBzdGF0dXMsXHJcbiAgICB9KTtcclxuICB9XHJcbiAgLy8g5YWz6Zet5by556qXXHJcbiAgcHVibGljIGNsb3NlUG9wdXAoKSB7XHJcbiAgICB0aGlzLmRpYWxvZ1JlZi5jbG9zZSgpO1xyXG4gIH1cclxufVxyXG4iXX0=