@gipisistemas/ng-core 1.0.68 → 1.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (782) hide show
  1. package/README.md +38 -0
  2. package/_ITSS-NG-CI-CD.yml +53 -0
  3. package/_ITSS-NG-CI-PR.yml +53 -0
  4. package/angular-cli.json +42 -0
  5. package/azure-pipelines.yml +35 -0
  6. package/package.json +83 -31
  7. package/projects/itss-ng/ng-package.json +7 -0
  8. package/projects/itss-ng/package.json +25 -0
  9. package/assets/styles/colors.scss +0 -261
  10. package/assets/styles/layout-grid.scss +0 -146
  11. package/assets/styles/styles.scss +0 -149
  12. package/assets/styles/theme.scss +0 -22
  13. package/assets/styles/typography.scss +0 -54
  14. package/assets/styles/variable.scss +0 -41
  15. package/bundles/gipisistemas-ng-core.umd.js +0 -28311
  16. package/bundles/gipisistemas-ng-core.umd.js.map +0 -1
  17. package/bundles/gipisistemas-ng-core.umd.min.js +0 -66
  18. package/bundles/gipisistemas-ng-core.umd.min.js.map +0 -1
  19. package/core/app-messages.d.ts +0 -9
  20. package/core/app.messages.d.ts +0 -4
  21. package/core/components/abstract-crud.component.d.ts +0 -27
  22. package/core/components/abstract-find.component.d.ts +0 -43
  23. package/core/components/abstract.component.d.ts +0 -23
  24. package/core/components/alert/alert.component.d.ts +0 -7
  25. package/core/core.module.d.ts +0 -17
  26. package/core/custom-breakpoints.d.ts +0 -7
  27. package/core/enums/local-time.enum.d.ts +0 -5
  28. package/core/extensions/string.extension.d.ts +0 -3
  29. package/core/gipi-components/components/abstract-crud.component.d.ts +0 -25
  30. package/core/gipi-components/components/abstract-find.component.d.ts +0 -73
  31. package/core/gipi-components/components/abstract.component.d.ts +0 -38
  32. package/core/gipi-components/decorators/autowired.decorator.d.ts +0 -7
  33. package/core/gipi-components/enums/sort-direction.enum.d.ts +0 -5
  34. package/core/gipi-components/interface/abstract-crud.interface.d.ts +0 -5
  35. package/core/gipi-components/interface/abstract-find.interface.d.ts +0 -12
  36. package/core/gipi-components/interface/abstract.interface.d.ts +0 -11
  37. package/core/gipi-components/interface/base-permission.interface.d.ts +0 -9
  38. package/core/gipi-components/models/abstract-filter.model.d.ts +0 -9
  39. package/core/gipi-components/models/abstract.model.d.ts +0 -7
  40. package/core/gipi-components/models/applied-filter.model.d.ts +0 -9
  41. package/core/gipi-components/models/dto/abstract.dto.d.ts +0 -7
  42. package/core/gipi-components/models/page-event.model.d.ts +0 -18
  43. package/core/gipi-components/models/page.model.d.ts +0 -7
  44. package/core/gipi-components/models/sort.model.d.ts +0 -6
  45. package/core/gipi-components/services/abstract-crud.service.d.ts +0 -83
  46. package/core/gipi-components/services/abstract.service.d.ts +0 -19
  47. package/core/gipi-components/services/base.service.d.ts +0 -35
  48. package/core/gipi-components/services/file.service.d.ts +0 -6
  49. package/core/gipi-components/services/session-storage.service.d.ts +0 -8
  50. package/core/gipi-components/types/generic.type.d.ts +0 -1
  51. package/core/gipi-components/types/uuid.type.d.ts +0 -1
  52. package/core/guards/auth.guard.d.ts +0 -11
  53. package/core/guards/permission.guard.d.ts +0 -14
  54. package/core/guards/public.guard.d.ts +0 -11
  55. package/core/interceptors/auth.interceptor.d.ts +0 -9
  56. package/core/interceptors/error.interceptor.d.ts +0 -11
  57. package/core/models/abstract.model.d.ts +0 -3
  58. package/core/models/archive.model.d.ts +0 -4
  59. package/core/models/authority.model.d.ts +0 -3
  60. package/core/models/base-user.model.d.ts +0 -12
  61. package/core/models/dto/abstract.dto.d.ts +0 -2
  62. package/core/models/dto/api-error.dto.d.ts +0 -9
  63. package/core/models/dto/api-sub-error.dto.d.ts +0 -7
  64. package/core/models/dto/chart.dto.d.ts +0 -5
  65. package/core/models/dto/confirmation.dto.d.ts +0 -10
  66. package/core/models/dto/dialog.dto.d.ts +0 -36
  67. package/core/models/dto/filter.dto.d.ts +0 -8
  68. package/core/models/dto/input-listbox.dto.d.ts +0 -6
  69. package/core/models/dto/menu.dto.d.ts +0 -15
  70. package/core/models/dto/message.dto.d.ts +0 -7
  71. package/core/models/dto/page.dto.d.ts +0 -8
  72. package/core/models/dto/sort.dto.d.ts +0 -7
  73. package/core/models/dto/tab.dto.d.ts +0 -12
  74. package/core/models/dto/table-column.dto.d.ts +0 -21
  75. package/core/models/dto/table-group-header.dto.d.ts +0 -7
  76. package/core/models/dto/table-page-event.dto.d.ts +0 -6
  77. package/core/models/dto/token.dto.d.ts +0 -8
  78. package/core/models/enums/criteria-operation.enum.d.ts +0 -13
  79. package/core/models/enums/criteria-sort-direction.enum.d.ts +0 -4
  80. package/core/models/enums/menu-type.enum.d.ts +0 -6
  81. package/core/models/enums/radio-button.enum.d.ts +0 -6
  82. package/core/models/enums/sort-direction.enum.d.ts +0 -4
  83. package/core/models/multitenant.model.d.ts +0 -4
  84. package/core/models/permission.model.d.ts +0 -8
  85. package/core/models/role.model.d.ts +0 -7
  86. package/core/pipes/local-time.pipe.d.ts +0 -6
  87. package/core/services/abstract-crud.service.d.ts +0 -15
  88. package/core/services/abstract-find.service.d.ts +0 -30
  89. package/core/services/abstract.service.d.ts +0 -13
  90. package/core/services/authentication.service.d.ts +0 -23
  91. package/core/services/breakpoint-observer.service.d.ts +0 -9
  92. package/core/services/confirmation.service.d.ts +0 -8
  93. package/core/services/dialog.service.d.ts +0 -8
  94. package/core/services/message.service.d.ts +0 -8
  95. package/core/services/nav.service.d.ts +0 -16
  96. package/core/services/svg-register.service.d.ts +0 -22
  97. package/core/types/local-time.type.d.ts +0 -5
  98. package/core/types/ng-class.type.d.ts +0 -10
  99. package/core/utils/array.util.d.ts +0 -14
  100. package/core/utils/browser.util.d.ts +0 -4
  101. package/core/utils/currency.util.d.ts +0 -6
  102. package/core/utils/date.util.d.ts +0 -39
  103. package/core/utils/document.util.d.ts +0 -11
  104. package/core/utils/email.util.d.ts +0 -4
  105. package/core/utils/number.util.d.ts +0 -8
  106. package/core/utils/object.util.d.ts +0 -20
  107. package/core/utils/password.util.d.ts +0 -11
  108. package/core/utils/phone.util.d.ts +0 -13
  109. package/core/utils/string.util.d.ts +0 -9
  110. package/core/utils/table-column-builder.d.ts +0 -40
  111. package/core/utils/time.util.d.ts +0 -9
  112. package/core/utils/url-params.util.d.ts +0 -7
  113. package/core/utils/uuid.util.d.ts +0 -5
  114. package/core/utils/zindex.util.d.ts +0 -7
  115. package/core.d.ts +0 -88
  116. package/esm2015/core/app-messages.js +0 -1
  117. package/esm2015/core/app.messages.js +0 -12
  118. package/esm2015/core/components/abstract-crud.component.js +0 -97
  119. package/esm2015/core/components/abstract-find.component.js +0 -189
  120. package/esm2015/core/components/abstract.component.js +0 -110
  121. package/esm2015/core/components/alert/alert.component.js +0 -24
  122. package/esm2015/core/core.module.js +0 -103
  123. package/esm2015/core/custom-breakpoints.js +0 -87
  124. package/esm2015/core/enums/local-time.enum.js +0 -6
  125. package/esm2015/core/extensions/string.extension.js +0 -37
  126. package/esm2015/core/gipi-components/components/abstract-crud.component.js +0 -110
  127. package/esm2015/core/gipi-components/components/abstract-find.component.js +0 -471
  128. package/esm2015/core/gipi-components/components/abstract.component.js +0 -140
  129. package/esm2015/core/gipi-components/decorators/autowired.decorator.js +0 -47
  130. package/esm2015/core/gipi-components/enums/sort-direction.enum.js +0 -6
  131. package/esm2015/core/gipi-components/interface/abstract-crud.interface.js +0 -1
  132. package/esm2015/core/gipi-components/interface/abstract-find.interface.js +0 -1
  133. package/esm2015/core/gipi-components/interface/abstract.interface.js +0 -1
  134. package/esm2015/core/gipi-components/interface/base-permission.interface.js +0 -1
  135. package/esm2015/core/gipi-components/models/abstract-filter.model.js +0 -3
  136. package/esm2015/core/gipi-components/models/abstract.model.js +0 -3
  137. package/esm2015/core/gipi-components/models/applied-filter.model.js +0 -19
  138. package/esm2015/core/gipi-components/models/dto/abstract.dto.js +0 -3
  139. package/esm2015/core/gipi-components/models/page-event.model.js +0 -35
  140. package/esm2015/core/gipi-components/models/page.model.js +0 -7
  141. package/esm2015/core/gipi-components/models/sort.model.js +0 -7
  142. package/esm2015/core/gipi-components/services/abstract-crud.service.js +0 -109
  143. package/esm2015/core/gipi-components/services/abstract.service.js +0 -47
  144. package/esm2015/core/gipi-components/services/base.service.js +0 -102
  145. package/esm2015/core/gipi-components/services/file.service.js +0 -51
  146. package/esm2015/core/gipi-components/services/session-storage.service.js +0 -44
  147. package/esm2015/core/gipi-components/types/generic.type.js +0 -1
  148. package/esm2015/core/gipi-components/types/uuid.type.js +0 -1
  149. package/esm2015/core/guards/auth.guard.js +0 -48
  150. package/esm2015/core/guards/permission.guard.js +0 -61
  151. package/esm2015/core/guards/public.guard.js +0 -45
  152. package/esm2015/core/interceptors/auth.interceptor.js +0 -28
  153. package/esm2015/core/interceptors/error.interceptor.js +0 -110
  154. package/esm2015/core/models/abstract.model.js +0 -3
  155. package/esm2015/core/models/archive.model.js +0 -3
  156. package/esm2015/core/models/authority.model.js +0 -3
  157. package/esm2015/core/models/base-user.model.js +0 -8
  158. package/esm2015/core/models/dto/abstract.dto.js +0 -3
  159. package/esm2015/core/models/dto/api-error.dto.js +0 -8
  160. package/esm2015/core/models/dto/api-sub-error.dto.js +0 -4
  161. package/esm2015/core/models/dto/chart.dto.js +0 -4
  162. package/esm2015/core/models/dto/confirmation.dto.js +0 -8
  163. package/esm2015/core/models/dto/dialog.dto.js +0 -4
  164. package/esm2015/core/models/dto/filter.dto.js +0 -4
  165. package/esm2015/core/models/dto/input-listbox.dto.js +0 -7
  166. package/esm2015/core/models/dto/menu.dto.js +0 -9
  167. package/esm2015/core/models/dto/message.dto.js +0 -4
  168. package/esm2015/core/models/dto/page.dto.js +0 -9
  169. package/esm2015/core/models/dto/sort.dto.js +0 -9
  170. package/esm2015/core/models/dto/tab.dto.js +0 -10
  171. package/esm2015/core/models/dto/table-column.dto.js +0 -24
  172. package/esm2015/core/models/dto/table-group-header.dto.js +0 -10
  173. package/esm2015/core/models/dto/table-page-event.dto.js +0 -7
  174. package/esm2015/core/models/dto/token.dto.js +0 -4
  175. package/esm2015/core/models/enums/criteria-operation.enum.js +0 -15
  176. package/esm2015/core/models/enums/criteria-sort-direction.enum.js +0 -6
  177. package/esm2015/core/models/enums/menu-type.enum.js +0 -7
  178. package/esm2015/core/models/enums/radio-button.enum.js +0 -8
  179. package/esm2015/core/models/enums/sort-direction.enum.js +0 -6
  180. package/esm2015/core/models/multitenant.model.js +0 -4
  181. package/esm2015/core/models/permission.model.js +0 -11
  182. package/esm2015/core/models/role.model.js +0 -8
  183. package/esm2015/core/pipes/local-time.pipe.js +0 -21
  184. package/esm2015/core/services/abstract-crud.service.js +0 -24
  185. package/esm2015/core/services/abstract-find.service.js +0 -65
  186. package/esm2015/core/services/abstract.service.js +0 -30
  187. package/esm2015/core/services/authentication.service.js +0 -100
  188. package/esm2015/core/services/breakpoint-observer.service.js +0 -42
  189. package/esm2015/core/services/confirmation.service.js +0 -55
  190. package/esm2015/core/services/dialog.service.js +0 -41
  191. package/esm2015/core/services/message.service.js +0 -33
  192. package/esm2015/core/services/nav.service.js +0 -48
  193. package/esm2015/core/services/svg-register.service.js +0 -55
  194. package/esm2015/core/types/local-time.type.js +0 -1
  195. package/esm2015/core/types/ng-class.type.js +0 -1
  196. package/esm2015/core/utils/array.util.js +0 -110
  197. package/esm2015/core/utils/browser.util.js +0 -13
  198. package/esm2015/core/utils/currency.util.js +0 -21
  199. package/esm2015/core/utils/date.util.js +0 -257
  200. package/esm2015/core/utils/document.util.js +0 -153
  201. package/esm2015/core/utils/email.util.js +0 -25
  202. package/esm2015/core/utils/number.util.js +0 -28
  203. package/esm2015/core/utils/object.util.js +0 -199
  204. package/esm2015/core/utils/password.util.js +0 -38
  205. package/esm2015/core/utils/phone.util.js +0 -125
  206. package/esm2015/core/utils/string.util.js +0 -40
  207. package/esm2015/core/utils/table-column-builder.js +0 -85
  208. package/esm2015/core/utils/time.util.js +0 -59
  209. package/esm2015/core/utils/url-params.util.js +0 -12
  210. package/esm2015/core/utils/uuid.util.js +0 -17
  211. package/esm2015/core/utils/zindex.util.js +0 -35
  212. package/esm2015/core.js +0 -89
  213. package/esm2015/gipi-components.js +0 -105
  214. package/esm2015/gipisistemas-ng-core.js +0 -21
  215. package/esm2015/public_api.js +0 -4
  216. package/esm2015/shared/api/generate-id-component.js +0 -12
  217. package/esm2015/shared/api/gipi-ng-config.js +0 -76
  218. package/esm2015/shared/api/overlay-message.js +0 -1
  219. package/esm2015/shared/api/throttle.js +0 -60
  220. package/esm2015/shared/api/translation.js +0 -1
  221. package/esm2015/shared/components/button/button.component.js +0 -110
  222. package/esm2015/shared/components/card/card.component.js +0 -44
  223. package/esm2015/shared/components/checkbox/checkbox.component.js +0 -79
  224. package/esm2015/shared/components/dom/connected-overlay-scroll-handler.js +0 -27
  225. package/esm2015/shared/components/dom/dom-handler.js +0 -538
  226. package/esm2015/shared/components/icon/icon.component.js +0 -35
  227. package/esm2015/shared/components/input/input.component.js +0 -235
  228. package/esm2015/shared/components/input-currency/input-currency.component.js +0 -115
  229. package/esm2015/shared/components/input-file/input-file.component.js +0 -161
  230. package/esm2015/shared/components/loading/loading.component.js +0 -15
  231. package/esm2015/shared/components/loading-overlay/loading-overlay.component.js +0 -21
  232. package/esm2015/shared/components/overlay-panel/overlay-panel.component.js +0 -361
  233. package/esm2015/shared/components/popover/popover-ref.js +0 -25
  234. package/esm2015/shared/components/popover/popover.component.js +0 -34
  235. package/esm2015/shared/components/popover/popover.service.js +0 -85
  236. package/esm2015/shared/components/radio-group-entity/radio-group-entity.component.js +0 -74
  237. package/esm2015/shared/components/radio-group-enum/radio-group-enum.component.js +0 -126
  238. package/esm2015/shared/components/select-button/select-button.component.js +0 -181
  239. package/esm2015/shared/components/select-entity/select-entity.component.js +0 -262
  240. package/esm2015/shared/components/select-entity-paged/select-entity-paged.component.js +0 -419
  241. package/esm2015/shared/components/select-entity-paged/shared/default-options.js +0 -35
  242. package/esm2015/shared/components/select-entity-paged/shared/select-button-add/select-button-add.component.js +0 -69
  243. package/esm2015/shared/components/select-entity-paged/shared/select-button-next-batch/select-button-next-batch.component.js +0 -59
  244. package/esm2015/shared/components/select-entity-paged/shared/select-no-entries-found.directive.js +0 -20
  245. package/esm2015/shared/components/select-entity-paged/shared/select-search/select-search.component.js +0 -547
  246. package/esm2015/shared/components/select-entity-paged/shared/select-search-clear.directive.js +0 -18
  247. package/esm2015/shared/components/select-enum/select-enum.component.js +0 -117
  248. package/esm2015/shared/components/select-month-period/select-month-period.component.js +0 -87
  249. package/esm2015/shared/components/slide-toggle/slide-toggle.component.js +0 -75
  250. package/esm2015/shared/components/stepper/stepper.component.js +0 -32
  251. package/esm2015/shared/components/tab/tab.component.js +0 -57
  252. package/esm2015/shared/components/tab-group/tab-group.component.js +0 -117
  253. package/esm2015/shared/components/table/table.component.js +0 -523
  254. package/esm2015/shared/components/table-scrolled/table-scrolled.component.js +0 -105
  255. package/esm2015/shared/components/textarea/textarea.component.js +0 -156
  256. package/esm2015/shared/directives/dynamic-tab.directive.js +0 -18
  257. package/esm2015/shared/directives/generic-template.directive.js +0 -30
  258. package/esm2015/shared/directives/input-select-infinite-scroll.directive.js +0 -109
  259. package/esm2015/shared/directives/lower-case.directive.js +0 -47
  260. package/esm2015/shared/directives/phone-mask.directive.js +0 -60
  261. package/esm2015/shared/directives/space-drop.directive.js +0 -47
  262. package/esm2015/shared/directives/upper-case.directive.js +0 -47
  263. package/esm2015/shared/gipi-components/abstract-form/abstract-form.component.js +0 -119
  264. package/esm2015/shared/gipi-components/action-row/action-row.component.js +0 -30
  265. package/esm2015/shared/gipi-components/badge/badge.component.js +0 -44
  266. package/esm2015/shared/gipi-components/button/button.component.js +0 -251
  267. package/esm2015/shared/gipi-components/chips/chips.component.js +0 -149
  268. package/esm2015/shared/gipi-components/confirmation-dialog/confirmation-dialog.component.js +0 -44
  269. package/esm2015/shared/gipi-components/datepicker/date-range-picker/date-range-picker.component.js +0 -324
  270. package/esm2015/shared/gipi-components/datepicker/date-range-picker/shared/max-range/max-range-selection-startegy.js +0 -41
  271. package/esm2015/shared/gipi-components/datepicker/date-range-picker/shared/max-range/max-range.directive.js +0 -35
  272. package/esm2015/shared/gipi-components/datepicker/date-range-picker/shared/preset-range/preset-range.component.js +0 -259
  273. package/esm2015/shared/gipi-components/datepicker/datepicker/datepicker.component.js +0 -218
  274. package/esm2015/shared/gipi-components/datepicker/datepicker.module.js +0 -130
  275. package/esm2015/shared/gipi-components/datepicker/mat-datepicker/calendar-body.js +0 -341
  276. package/esm2015/shared/gipi-components/datepicker/mat-datepicker/calendar.js +0 -397
  277. package/esm2015/shared/gipi-components/datepicker/mat-datepicker/date-range-input-parts.js +0 -325
  278. package/esm2015/shared/gipi-components/datepicker/mat-datepicker/date-range-input.js +0 -329
  279. package/esm2015/shared/gipi-components/datepicker/mat-datepicker/date-range-picker.js +0 -41
  280. package/esm2015/shared/gipi-components/datepicker/mat-datepicker/date-range-selection-strategy.js +0 -61
  281. package/esm2015/shared/gipi-components/datepicker/mat-datepicker/date-selection-model.js +0 -159
  282. package/esm2015/shared/gipi-components/datepicker/mat-datepicker/datepicker-animations.js +0 -35
  283. package/esm2015/shared/gipi-components/datepicker/mat-datepicker/datepicker-base.js +0 -555
  284. package/esm2015/shared/gipi-components/datepicker/mat-datepicker/datepicker-errors.js +0 -14
  285. package/esm2015/shared/gipi-components/datepicker/mat-datepicker/datepicker-input-base.js +0 -303
  286. package/esm2015/shared/gipi-components/datepicker/mat-datepicker/datepicker-input.js +0 -179
  287. package/esm2015/shared/gipi-components/datepicker/mat-datepicker/datepicker-intl.js +0 -51
  288. package/esm2015/shared/gipi-components/datepicker/mat-datepicker/datepicker-toggle.js +0 -124
  289. package/esm2015/shared/gipi-components/datepicker/mat-datepicker/datepicker.js +0 -29
  290. package/esm2015/shared/gipi-components/datepicker/mat-datepicker/month-view.js +0 -365
  291. package/esm2015/shared/gipi-components/datepicker/mat-datepicker/multi-year-view.js +0 -305
  292. package/esm2015/shared/gipi-components/datepicker/mat-datepicker/shared/adapter/date-adapter.js +0 -116
  293. package/esm2015/shared/gipi-components/datepicker/mat-datepicker/shared/adapter/date-formats.js +0 -10
  294. package/esm2015/shared/gipi-components/datepicker/mat-datepicker/shared/adapter/native-date-adapter.js +0 -294
  295. package/esm2015/shared/gipi-components/datepicker/mat-datepicker/shared/adapter/native-date-formats.js +0 -19
  296. package/esm2015/shared/gipi-components/datepicker/mat-datepicker/shared/adapter/platform.js +0 -81
  297. package/esm2015/shared/gipi-components/datepicker/mat-datepicker/year-view.js +0 -294
  298. package/esm2015/shared/gipi-components/dom/connected-overlay-scroll-handler.js +0 -27
  299. package/esm2015/shared/gipi-components/dom/dom-handler.js +0 -645
  300. package/esm2015/shared/gipi-components/dropdown-menu/dropdown-menu.component.js +0 -185
  301. package/esm2015/shared/gipi-components/expansion-panel/expansion-panel.component.js +0 -81
  302. package/esm2015/shared/gipi-components/file-drag-and-drop/file-drag-and-drop.component.js +0 -240
  303. package/esm2015/shared/gipi-components/file-drag-and-drop/shared/file-drag-and-drop.directive.js +0 -92
  304. package/esm2015/shared/gipi-components/footer/footer.component.js +0 -29
  305. package/esm2015/shared/gipi-components/form-field/form-field.component.js +0 -262
  306. package/esm2015/shared/gipi-components/helpful-tip/helpful-tip.component.js +0 -62
  307. package/esm2015/shared/gipi-components/infinite-scroll/infinite-scroll.directive.js +0 -103
  308. package/esm2015/shared/gipi-components/input-checkbox/input-checkbox.component.js +0 -112
  309. package/esm2015/shared/gipi-components/input-currency/input-currency.component.js +0 -197
  310. package/esm2015/shared/gipi-components/input-monthpicker/input-monthpicker.component.js +0 -408
  311. package/esm2015/shared/gipi-components/input-select/input-select.component.js +0 -655
  312. package/esm2015/shared/gipi-components/input-select-enum/input-select-enum.component.js +0 -311
  313. package/esm2015/shared/gipi-components/input-select-listbox/input-select-listbox.component.js +0 -422
  314. package/esm2015/shared/gipi-components/input-select-paged/input-search/input-search.component.js +0 -374
  315. package/esm2015/shared/gipi-components/input-select-paged/input-select-paged.component.js +0 -350
  316. package/esm2015/shared/gipi-components/input-select-radio/input-select-radio.component.js +0 -269
  317. package/esm2015/shared/gipi-components/layout-grid/col.directive.js +0 -161
  318. package/esm2015/shared/gipi-components/layout-grid/row.directive.js +0 -124
  319. package/esm2015/shared/gipi-components/layout-grid/services/breakpoint.service.js +0 -87
  320. package/esm2015/shared/gipi-components/layout-grid/services/resize.service.js +0 -64
  321. package/esm2015/shared/gipi-components/month-year-picker/calendar-month-year/calendar-month-year.component.js +0 -193
  322. package/esm2015/shared/gipi-components/month-year-picker/mont-year-picker.module.js +0 -47
  323. package/esm2015/shared/gipi-components/month-year-picker/month-year-picker.component.js +0 -460
  324. package/esm2015/shared/gipi-components/notification/notification.component.js +0 -104
  325. package/esm2015/shared/gipi-components/novelties/novelties.component.js +0 -109
  326. package/esm2015/shared/gipi-components/overlay/overlay.component.js +0 -565
  327. package/esm2015/shared/gipi-components/overlay/shared/overlay-service.js +0 -21
  328. package/esm2015/shared/gipi-components/overlay/shared/overlay_options.js +0 -1
  329. package/esm2015/shared/gipi-components/password-requeriments/password-requeriments.component.js +0 -127
  330. package/esm2015/shared/gipi-components/popover/popover.component.js +0 -397
  331. package/esm2015/shared/gipi-components/popover/shared/popover-animations.js +0 -29
  332. package/esm2015/shared/gipi-components/popover/shared/popover-errors.js +0 -27
  333. package/esm2015/shared/gipi-components/popover/shared/popover-interfaces.js +0 -1
  334. package/esm2015/shared/gipi-components/popover/shared/popover-target.js +0 -19
  335. package/esm2015/shared/gipi-components/popover/shared/popover-trigger.js +0 -514
  336. package/esm2015/shared/gipi-components/popover/shared/popover-types.js +0 -1
  337. package/esm2015/shared/gipi-components/radio-group/radio-group.component.js +0 -143
  338. package/esm2015/shared/gipi-components/range-page/range-page.component.js +0 -254
  339. package/esm2015/shared/gipi-components/range-slider/range-slider.component.js +0 -345
  340. package/esm2015/shared/gipi-components/select/select.component.js +0 -211
  341. package/esm2015/shared/gipi-components/select-button/select-button.component.js +0 -187
  342. package/esm2015/shared/gipi-components/sidebar/container/container.component.js +0 -83
  343. package/esm2015/shared/gipi-components/sidebar/sidenav/sidenav.component.js +0 -240
  344. package/esm2015/shared/gipi-components/stepper/stepper.component.js +0 -37
  345. package/esm2015/shared/gipi-components/table/components/table-body/table-body.component.js +0 -203
  346. package/esm2015/shared/gipi-components/table/components/table-footer/table-footer.component.js +0 -30
  347. package/esm2015/shared/gipi-components/table/components/table-header/table-header.component.js +0 -152
  348. package/esm2015/shared/gipi-components/table/components/table-pagination/shared/paginate.pipe.js +0 -122
  349. package/esm2015/shared/gipi-components/table/components/table-pagination/shared/pagination-controls.directive.js +0 -225
  350. package/esm2015/shared/gipi-components/table/components/table-pagination/shared/pagination-instance.js +0 -1
  351. package/esm2015/shared/gipi-components/table/components/table-pagination/shared/pagination.service.js +0 -105
  352. package/esm2015/shared/gipi-components/table/components/table-pagination/table-pagination.component.js +0 -102
  353. package/esm2015/shared/gipi-components/table/components/table-progress-bar/table-progress-bar.component.js +0 -30
  354. package/esm2015/shared/gipi-components/table/models/pipe-transform.model.js +0 -1
  355. package/esm2015/shared/gipi-components/table/models/sort.model.js +0 -19
  356. package/esm2015/shared/gipi-components/table/models/sorted-column.model.js +0 -2
  357. package/esm2015/shared/gipi-components/table/models/table-column-builder.model.js +0 -104
  358. package/esm2015/shared/gipi-components/table/models/table-column.model.js +0 -162
  359. package/esm2015/shared/gipi-components/table/table.component.js +0 -159
  360. package/esm2015/shared/gipi-components/table/types/sort-direction.type.js +0 -1
  361. package/esm2015/shared/gipi-components/table/types/sort.type.js +0 -1
  362. package/esm2015/shared/gipi-components/template/template.directive.js +0 -33
  363. package/esm2015/shared/gipi-components/toolbar/toolbar.component.js +0 -53
  364. package/esm2015/shared/gipi-components/top-nav/top-nav.component.js +0 -38
  365. package/esm2015/shared/gipi-components/user-profile/user-profile.component.js +0 -109
  366. package/esm2015/shared/material.module.js +0 -102
  367. package/esm2015/shared/shared.module.js +0 -339
  368. package/esm2015/shared.js +0 -36
  369. package/esm5/core/app-messages.js +0 -1
  370. package/esm5/core/app.messages.js +0 -12
  371. package/esm5/core/components/abstract-crud.component.js +0 -108
  372. package/esm5/core/components/abstract-find.component.js +0 -201
  373. package/esm5/core/components/abstract.component.js +0 -112
  374. package/esm5/core/components/alert/alert.component.js +0 -25
  375. package/esm5/core/core.module.js +0 -107
  376. package/esm5/core/custom-breakpoints.js +0 -87
  377. package/esm5/core/enums/local-time.enum.js +0 -6
  378. package/esm5/core/extensions/string.extension.js +0 -37
  379. package/esm5/core/gipi-components/components/abstract-crud.component.js +0 -122
  380. package/esm5/core/gipi-components/components/abstract-find.component.js +0 -507
  381. package/esm5/core/gipi-components/components/abstract.component.js +0 -152
  382. package/esm5/core/gipi-components/decorators/autowired.decorator.js +0 -52
  383. package/esm5/core/gipi-components/enums/sort-direction.enum.js +0 -6
  384. package/esm5/core/gipi-components/interface/abstract-crud.interface.js +0 -1
  385. package/esm5/core/gipi-components/interface/abstract-find.interface.js +0 -1
  386. package/esm5/core/gipi-components/interface/abstract.interface.js +0 -1
  387. package/esm5/core/gipi-components/interface/base-permission.interface.js +0 -1
  388. package/esm5/core/gipi-components/models/abstract-filter.model.js +0 -7
  389. package/esm5/core/gipi-components/models/abstract.model.js +0 -7
  390. package/esm5/core/gipi-components/models/applied-filter.model.js +0 -29
  391. package/esm5/core/gipi-components/models/dto/abstract.dto.js +0 -7
  392. package/esm5/core/gipi-components/models/page-event.model.js +0 -49
  393. package/esm5/core/gipi-components/models/page.model.js +0 -9
  394. package/esm5/core/gipi-components/models/sort.model.js +0 -9
  395. package/esm5/core/gipi-components/services/abstract-crud.service.js +0 -114
  396. package/esm5/core/gipi-components/services/abstract.service.js +0 -49
  397. package/esm5/core/gipi-components/services/base.service.js +0 -143
  398. package/esm5/core/gipi-components/services/file.service.js +0 -53
  399. package/esm5/core/gipi-components/services/session-storage.service.js +0 -45
  400. package/esm5/core/gipi-components/types/generic.type.js +0 -1
  401. package/esm5/core/gipi-components/types/uuid.type.js +0 -1
  402. package/esm5/core/guards/auth.guard.js +0 -50
  403. package/esm5/core/guards/permission.guard.js +0 -74
  404. package/esm5/core/guards/public.guard.js +0 -47
  405. package/esm5/core/interceptors/auth.interceptor.js +0 -29
  406. package/esm5/core/interceptors/error.interceptor.js +0 -129
  407. package/esm5/core/models/abstract.model.js +0 -7
  408. package/esm5/core/models/archive.model.js +0 -7
  409. package/esm5/core/models/authority.model.js +0 -7
  410. package/esm5/core/models/base-user.model.js +0 -13
  411. package/esm5/core/models/dto/abstract.dto.js +0 -7
  412. package/esm5/core/models/dto/api-error.dto.js +0 -13
  413. package/esm5/core/models/dto/api-sub-error.dto.js +0 -11
  414. package/esm5/core/models/dto/chart.dto.js +0 -11
  415. package/esm5/core/models/dto/confirmation.dto.js +0 -13
  416. package/esm5/core/models/dto/dialog.dto.js +0 -11
  417. package/esm5/core/models/dto/filter.dto.js +0 -11
  418. package/esm5/core/models/dto/input-listbox.dto.js +0 -11
  419. package/esm5/core/models/dto/menu.dto.js +0 -14
  420. package/esm5/core/models/dto/message.dto.js +0 -11
  421. package/esm5/core/models/dto/page.dto.js +0 -14
  422. package/esm5/core/models/dto/sort.dto.js +0 -14
  423. package/esm5/core/models/dto/tab.dto.js +0 -15
  424. package/esm5/core/models/dto/table-column.dto.js +0 -29
  425. package/esm5/core/models/dto/table-group-header.dto.js +0 -15
  426. package/esm5/core/models/dto/table-page-event.dto.js +0 -11
  427. package/esm5/core/models/dto/token.dto.js +0 -11
  428. package/esm5/core/models/enums/criteria-operation.enum.js +0 -15
  429. package/esm5/core/models/enums/criteria-sort-direction.enum.js +0 -6
  430. package/esm5/core/models/enums/menu-type.enum.js +0 -7
  431. package/esm5/core/models/enums/radio-button.enum.js +0 -8
  432. package/esm5/core/models/enums/sort-direction.enum.js +0 -6
  433. package/esm5/core/models/multitenant.model.js +0 -11
  434. package/esm5/core/models/permission.model.js +0 -16
  435. package/esm5/core/models/role.model.js +0 -13
  436. package/esm5/core/pipes/local-time.pipe.js +0 -26
  437. package/esm5/core/services/abstract-crud.service.js +0 -30
  438. package/esm5/core/services/abstract-find.service.js +0 -71
  439. package/esm5/core/services/abstract.service.js +0 -32
  440. package/esm5/core/services/authentication.service.js +0 -121
  441. package/esm5/core/services/breakpoint-observer.service.js +0 -52
  442. package/esm5/core/services/confirmation.service.js +0 -66
  443. package/esm5/core/services/dialog.service.js +0 -44
  444. package/esm5/core/services/message.service.js +0 -36
  445. package/esm5/core/services/nav.service.js +0 -51
  446. package/esm5/core/services/svg-register.service.js +0 -67
  447. package/esm5/core/types/local-time.type.js +0 -1
  448. package/esm5/core/types/ng-class.type.js +0 -1
  449. package/esm5/core/utils/array.util.js +0 -120
  450. package/esm5/core/utils/browser.util.js +0 -17
  451. package/esm5/core/utils/currency.util.js +0 -26
  452. package/esm5/core/utils/date.util.js +0 -269
  453. package/esm5/core/utils/document.util.js +0 -157
  454. package/esm5/core/utils/email.util.js +0 -29
  455. package/esm5/core/utils/number.util.js +0 -32
  456. package/esm5/core/utils/object.util.js +0 -204
  457. package/esm5/core/utils/password.util.js +0 -42
  458. package/esm5/core/utils/phone.util.js +0 -135
  459. package/esm5/core/utils/string.util.js +0 -44
  460. package/esm5/core/utils/table-column-builder.js +0 -87
  461. package/esm5/core/utils/time.util.js +0 -65
  462. package/esm5/core/utils/url-params.util.js +0 -16
  463. package/esm5/core/utils/uuid.util.js +0 -21
  464. package/esm5/core/utils/zindex.util.js +0 -35
  465. package/esm5/core.js +0 -89
  466. package/esm5/gipi-components.js +0 -105
  467. package/esm5/gipisistemas-ng-core.js +0 -21
  468. package/esm5/public_api.js +0 -4
  469. package/esm5/shared/api/generate-id-component.js +0 -16
  470. package/esm5/shared/api/gipi-ng-config.js +0 -77
  471. package/esm5/shared/api/overlay-message.js +0 -1
  472. package/esm5/shared/api/throttle.js +0 -60
  473. package/esm5/shared/api/translation.js +0 -1
  474. package/esm5/shared/components/button/button.component.js +0 -111
  475. package/esm5/shared/components/card/card.component.js +0 -45
  476. package/esm5/shared/components/checkbox/checkbox.component.js +0 -85
  477. package/esm5/shared/components/dom/connected-overlay-scroll-handler.js +0 -30
  478. package/esm5/shared/components/dom/dom-handler.js +0 -573
  479. package/esm5/shared/components/icon/icon.component.js +0 -38
  480. package/esm5/shared/components/input/input.component.js +0 -242
  481. package/esm5/shared/components/input-currency/input-currency.component.js +0 -121
  482. package/esm5/shared/components/input-file/input-file.component.js +0 -165
  483. package/esm5/shared/components/loading/loading.component.js +0 -18
  484. package/esm5/shared/components/loading-overlay/loading-overlay.component.js +0 -23
  485. package/esm5/shared/components/overlay-panel/overlay-panel.component.js +0 -366
  486. package/esm5/shared/components/popover/popover-ref.js +0 -28
  487. package/esm5/shared/components/popover/popover.component.js +0 -35
  488. package/esm5/shared/components/popover/popover.service.js +0 -88
  489. package/esm5/shared/components/radio-group-entity/radio-group-entity.component.js +0 -80
  490. package/esm5/shared/components/radio-group-enum/radio-group-enum.component.js +0 -138
  491. package/esm5/shared/components/select-button/select-button.component.js +0 -195
  492. package/esm5/shared/components/select-entity/select-entity.component.js +0 -269
  493. package/esm5/shared/components/select-entity-paged/select-entity-paged.component.js +0 -453
  494. package/esm5/shared/components/select-entity-paged/shared/default-options.js +0 -35
  495. package/esm5/shared/components/select-entity-paged/shared/select-button-add/select-button-add.component.js +0 -72
  496. package/esm5/shared/components/select-entity-paged/shared/select-button-next-batch/select-button-next-batch.component.js +0 -62
  497. package/esm5/shared/components/select-entity-paged/shared/select-no-entries-found.directive.js +0 -23
  498. package/esm5/shared/components/select-entity-paged/shared/select-search/select-search.component.js +0 -590
  499. package/esm5/shared/components/select-entity-paged/shared/select-search-clear.directive.js +0 -21
  500. package/esm5/shared/components/select-enum/select-enum.component.js +0 -124
  501. package/esm5/shared/components/select-month-period/select-month-period.component.js +0 -91
  502. package/esm5/shared/components/slide-toggle/slide-toggle.component.js +0 -81
  503. package/esm5/shared/components/stepper/stepper.component.js +0 -36
  504. package/esm5/shared/components/tab/tab.component.js +0 -58
  505. package/esm5/shared/components/tab-group/tab-group.component.js +0 -125
  506. package/esm5/shared/components/table/table.component.js +0 -538
  507. package/esm5/shared/components/table-scrolled/table-scrolled.component.js +0 -107
  508. package/esm5/shared/components/textarea/textarea.component.js +0 -174
  509. package/esm5/shared/directives/dynamic-tab.directive.js +0 -19
  510. package/esm5/shared/directives/generic-template.directive.js +0 -31
  511. package/esm5/shared/directives/input-select-infinite-scroll.directive.js +0 -113
  512. package/esm5/shared/directives/lower-case.directive.js +0 -48
  513. package/esm5/shared/directives/phone-mask.directive.js +0 -61
  514. package/esm5/shared/directives/space-drop.directive.js +0 -48
  515. package/esm5/shared/directives/upper-case.directive.js +0 -48
  516. package/esm5/shared/gipi-components/abstract-form/abstract-form.component.js +0 -141
  517. package/esm5/shared/gipi-components/action-row/action-row.component.js +0 -33
  518. package/esm5/shared/gipi-components/badge/badge.component.js +0 -46
  519. package/esm5/shared/gipi-components/button/button.component.js +0 -257
  520. package/esm5/shared/gipi-components/chips/chips.component.js +0 -159
  521. package/esm5/shared/gipi-components/confirmation-dialog/confirmation-dialog.component.js +0 -46
  522. package/esm5/shared/gipi-components/datepicker/date-range-picker/date-range-picker.component.js +0 -378
  523. package/esm5/shared/gipi-components/datepicker/date-range-picker/shared/max-range/max-range-selection-startegy.js +0 -42
  524. package/esm5/shared/gipi-components/datepicker/date-range-picker/shared/max-range/max-range.directive.js +0 -40
  525. package/esm5/shared/gipi-components/datepicker/date-range-picker/shared/preset-range/preset-range.component.js +0 -291
  526. package/esm5/shared/gipi-components/datepicker/datepicker/datepicker.component.js +0 -252
  527. package/esm5/shared/gipi-components/datepicker/datepicker.module.js +0 -133
  528. package/esm5/shared/gipi-components/datepicker/mat-datepicker/calendar-body.js +0 -349
  529. package/esm5/shared/gipi-components/datepicker/mat-datepicker/calendar.js +0 -441
  530. package/esm5/shared/gipi-components/datepicker/mat-datepicker/date-range-input-parts.js +0 -339
  531. package/esm5/shared/gipi-components/datepicker/mat-datepicker/date-range-input.js +0 -376
  532. package/esm5/shared/gipi-components/datepicker/mat-datepicker/date-range-picker.js +0 -46
  533. package/esm5/shared/gipi-components/datepicker/mat-datepicker/date-range-selection-strategy.js +0 -62
  534. package/esm5/shared/gipi-components/datepicker/mat-datepicker/date-selection-model.js +0 -167
  535. package/esm5/shared/gipi-components/datepicker/mat-datepicker/datepicker-animations.js +0 -35
  536. package/esm5/shared/gipi-components/datepicker/mat-datepicker/datepicker-base.js +0 -586
  537. package/esm5/shared/gipi-components/datepicker/mat-datepicker/datepicker-errors.js +0 -14
  538. package/esm5/shared/gipi-components/datepicker/mat-datepicker/datepicker-input-base.js +0 -327
  539. package/esm5/shared/gipi-components/datepicker/mat-datepicker/datepicker-input.js +0 -199
  540. package/esm5/shared/gipi-components/datepicker/mat-datepicker/datepicker-intl.js +0 -52
  541. package/esm5/shared/gipi-components/datepicker/mat-datepicker/datepicker-toggle.js +0 -133
  542. package/esm5/shared/gipi-components/datepicker/mat-datepicker/datepicker.js +0 -34
  543. package/esm5/shared/gipi-components/datepicker/mat-datepicker/month-view.js +0 -384
  544. package/esm5/shared/gipi-components/datepicker/mat-datepicker/multi-year-view.js +0 -324
  545. package/esm5/shared/gipi-components/datepicker/mat-datepicker/shared/adapter/date-adapter.js +0 -118
  546. package/esm5/shared/gipi-components/datepicker/mat-datepicker/shared/adapter/date-formats.js +0 -10
  547. package/esm5/shared/gipi-components/datepicker/mat-datepicker/shared/adapter/native-date-adapter.js +0 -300
  548. package/esm5/shared/gipi-components/datepicker/mat-datepicker/shared/adapter/native-date-formats.js +0 -19
  549. package/esm5/shared/gipi-components/datepicker/mat-datepicker/shared/adapter/platform.js +0 -82
  550. package/esm5/shared/gipi-components/datepicker/mat-datepicker/year-view.js +0 -313
  551. package/esm5/shared/gipi-components/dom/connected-overlay-scroll-handler.js +0 -30
  552. package/esm5/shared/gipi-components/dom/dom-handler.js +0 -681
  553. package/esm5/shared/gipi-components/dropdown-menu/dropdown-menu.component.js +0 -191
  554. package/esm5/shared/gipi-components/expansion-panel/expansion-panel.component.js +0 -83
  555. package/esm5/shared/gipi-components/file-drag-and-drop/file-drag-and-drop.component.js +0 -255
  556. package/esm5/shared/gipi-components/file-drag-and-drop/shared/file-drag-and-drop.directive.js +0 -93
  557. package/esm5/shared/gipi-components/footer/footer.component.js +0 -32
  558. package/esm5/shared/gipi-components/form-field/form-field.component.js +0 -276
  559. package/esm5/shared/gipi-components/helpful-tip/helpful-tip.component.js +0 -68
  560. package/esm5/shared/gipi-components/infinite-scroll/infinite-scroll.directive.js +0 -106
  561. package/esm5/shared/gipi-components/input-checkbox/input-checkbox.component.js +0 -118
  562. package/esm5/shared/gipi-components/input-currency/input-currency.component.js +0 -207
  563. package/esm5/shared/gipi-components/input-monthpicker/input-monthpicker.component.js +0 -426
  564. package/esm5/shared/gipi-components/input-select/input-select.component.js +0 -698
  565. package/esm5/shared/gipi-components/input-select-enum/input-select-enum.component.js +0 -351
  566. package/esm5/shared/gipi-components/input-select-listbox/input-select-listbox.component.js +0 -437
  567. package/esm5/shared/gipi-components/input-select-paged/input-search/input-search.component.js +0 -397
  568. package/esm5/shared/gipi-components/input-select-paged/input-select-paged.component.js +0 -384
  569. package/esm5/shared/gipi-components/input-select-radio/input-select-radio.component.js +0 -286
  570. package/esm5/shared/gipi-components/layout-grid/col.directive.js +0 -164
  571. package/esm5/shared/gipi-components/layout-grid/row.directive.js +0 -127
  572. package/esm5/shared/gipi-components/layout-grid/services/breakpoint.service.js +0 -90
  573. package/esm5/shared/gipi-components/layout-grid/services/resize.service.js +0 -68
  574. package/esm5/shared/gipi-components/month-year-picker/calendar-month-year/calendar-month-year.component.js +0 -200
  575. package/esm5/shared/gipi-components/month-year-picker/mont-year-picker.module.js +0 -50
  576. package/esm5/shared/gipi-components/month-year-picker/month-year-picker.component.js +0 -505
  577. package/esm5/shared/gipi-components/notification/notification.component.js +0 -106
  578. package/esm5/shared/gipi-components/novelties/novelties.component.js +0 -111
  579. package/esm5/shared/gipi-components/overlay/overlay.component.js +0 -670
  580. package/esm5/shared/gipi-components/overlay/shared/overlay-service.js +0 -22
  581. package/esm5/shared/gipi-components/overlay/shared/overlay_options.js +0 -1
  582. package/esm5/shared/gipi-components/password-requeriments/password-requeriments.component.js +0 -157
  583. package/esm5/shared/gipi-components/popover/popover.component.js +0 -473
  584. package/esm5/shared/gipi-components/popover/shared/popover-animations.js +0 -29
  585. package/esm5/shared/gipi-components/popover/shared/popover-errors.js +0 -21
  586. package/esm5/shared/gipi-components/popover/shared/popover-interfaces.js +0 -1
  587. package/esm5/shared/gipi-components/popover/shared/popover-target.js +0 -20
  588. package/esm5/shared/gipi-components/popover/shared/popover-trigger.js +0 -529
  589. package/esm5/shared/gipi-components/popover/shared/popover-types.js +0 -1
  590. package/esm5/shared/gipi-components/radio-group/radio-group.component.js +0 -155
  591. package/esm5/shared/gipi-components/range-page/range-page.component.js +0 -283
  592. package/esm5/shared/gipi-components/range-slider/range-slider.component.js +0 -364
  593. package/esm5/shared/gipi-components/select/select.component.js +0 -222
  594. package/esm5/shared/gipi-components/select-button/select-button.component.js +0 -206
  595. package/esm5/shared/gipi-components/sidebar/container/container.component.js +0 -96
  596. package/esm5/shared/gipi-components/sidebar/sidenav/sidenav.component.js +0 -267
  597. package/esm5/shared/gipi-components/stepper/stepper.component.js +0 -43
  598. package/esm5/shared/gipi-components/table/components/table-body/table-body.component.js +0 -209
  599. package/esm5/shared/gipi-components/table/components/table-footer/table-footer.component.js +0 -33
  600. package/esm5/shared/gipi-components/table/components/table-header/table-header.component.js +0 -155
  601. package/esm5/shared/gipi-components/table/components/table-pagination/shared/paginate.pipe.js +0 -123
  602. package/esm5/shared/gipi-components/table/components/table-pagination/shared/pagination-controls.directive.js +0 -228
  603. package/esm5/shared/gipi-components/table/components/table-pagination/shared/pagination-instance.js +0 -1
  604. package/esm5/shared/gipi-components/table/components/table-pagination/shared/pagination.service.js +0 -108
  605. package/esm5/shared/gipi-components/table/components/table-pagination/table-pagination.component.js +0 -116
  606. package/esm5/shared/gipi-components/table/components/table-progress-bar/table-progress-bar.component.js +0 -33
  607. package/esm5/shared/gipi-components/table/models/pipe-transform.model.js +0 -1
  608. package/esm5/shared/gipi-components/table/models/sort.model.js +0 -29
  609. package/esm5/shared/gipi-components/table/models/sorted-column.model.js +0 -2
  610. package/esm5/shared/gipi-components/table/models/table-column-builder.model.js +0 -106
  611. package/esm5/shared/gipi-components/table/models/table-column.model.js +0 -252
  612. package/esm5/shared/gipi-components/table/table.component.js +0 -161
  613. package/esm5/shared/gipi-components/table/types/sort-direction.type.js +0 -1
  614. package/esm5/shared/gipi-components/table/types/sort.type.js +0 -1
  615. package/esm5/shared/gipi-components/template/template.directive.js +0 -34
  616. package/esm5/shared/gipi-components/toolbar/toolbar.component.js +0 -56
  617. package/esm5/shared/gipi-components/top-nav/top-nav.component.js +0 -40
  618. package/esm5/shared/gipi-components/user-profile/user-profile.component.js +0 -115
  619. package/esm5/shared/material.module.js +0 -101
  620. package/esm5/shared/shared.module.js +0 -340
  621. package/esm5/shared.js +0 -36
  622. package/fesm2015/gipisistemas-ng-core.js +0 -25879
  623. package/fesm2015/gipisistemas-ng-core.js.map +0 -1
  624. package/fesm5/gipisistemas-ng-core.js +0 -27905
  625. package/fesm5/gipisistemas-ng-core.js.map +0 -1
  626. package/gipi-components.d.ts +0 -97
  627. package/gipisistemas-ng-core.d.ts +0 -20
  628. package/gipisistemas-ng-core.metadata.json +0 -1
  629. package/public_api.d.ts +0 -3
  630. package/shared/api/generate-id-component.d.ts +0 -3
  631. package/shared/api/gipi-ng-config.d.ts +0 -18
  632. package/shared/api/overlay-message.d.ts +0 -14
  633. package/shared/api/throttle.d.ts +0 -17
  634. package/shared/api/translation.d.ts +0 -45
  635. package/shared/components/button/button.component.d.ts +0 -26
  636. package/shared/components/card/card.component.d.ts +0 -10
  637. package/shared/components/checkbox/checkbox.component.d.ts +0 -20
  638. package/shared/components/dom/connected-overlay-scroll-handler.d.ts +0 -9
  639. package/shared/components/dom/dom-handler.d.ts +0 -74
  640. package/shared/components/icon/icon.component.d.ts +0 -9
  641. package/shared/components/input/input.component.d.ts +0 -52
  642. package/shared/components/input-currency/input-currency.component.d.ts +0 -29
  643. package/shared/components/input-file/input-file.component.d.ts +0 -28
  644. package/shared/components/loading/loading.component.d.ts +0 -4
  645. package/shared/components/loading-overlay/loading-overlay.component.d.ts +0 -6
  646. package/shared/components/overlay-panel/overlay-panel.component.d.ts +0 -67
  647. package/shared/components/popover/popover-ref.d.ts +0 -17
  648. package/shared/components/popover/popover.component.d.ts +0 -10
  649. package/shared/components/popover/popover.service.d.ts +0 -23
  650. package/shared/components/radio-group-entity/radio-group-entity.component.d.ts +0 -19
  651. package/shared/components/radio-group-enum/radio-group-enum.component.d.ts +0 -30
  652. package/shared/components/select-button/select-button.component.d.ts +0 -35
  653. package/shared/components/select-entity/select-entity.component.d.ts +0 -52
  654. package/shared/components/select-entity-paged/select-entity-paged.component.d.ts +0 -78
  655. package/shared/components/select-entity-paged/shared/default-options.d.ts +0 -25
  656. package/shared/components/select-entity-paged/shared/select-button-add/select-button-add.component.d.ts +0 -18
  657. package/shared/components/select-entity-paged/shared/select-button-next-batch/select-button-next-batch.component.d.ts +0 -16
  658. package/shared/components/select-entity-paged/shared/select-no-entries-found.directive.d.ts +0 -11
  659. package/shared/components/select-entity-paged/shared/select-search/select-search.component.d.ts +0 -119
  660. package/shared/components/select-entity-paged/shared/select-search-clear.directive.d.ts +0 -9
  661. package/shared/components/select-enum/select-enum.component.d.ts +0 -29
  662. package/shared/components/select-month-period/select-month-period.component.d.ts +0 -20
  663. package/shared/components/slide-toggle/slide-toggle.component.d.ts +0 -19
  664. package/shared/components/stepper/stepper.component.d.ts +0 -7
  665. package/shared/components/tab/tab.component.d.ts +0 -14
  666. package/shared/components/tab-group/tab-group.component.d.ts +0 -22
  667. package/shared/components/table/table.component.d.ts +0 -86
  668. package/shared/components/table-scrolled/table-scrolled.component.d.ts +0 -31
  669. package/shared/components/textarea/textarea.component.d.ts +0 -35
  670. package/shared/directives/dynamic-tab.directive.d.ts +0 -5
  671. package/shared/directives/generic-template.directive.d.ts +0 -8
  672. package/shared/directives/input-select-infinite-scroll.directive.d.ts +0 -35
  673. package/shared/directives/lower-case.directive.d.ts +0 -9
  674. package/shared/directives/phone-mask.directive.d.ts +0 -8
  675. package/shared/directives/space-drop.directive.d.ts +0 -9
  676. package/shared/directives/upper-case.directive.d.ts +0 -9
  677. package/shared/gipi-components/abstract-form/abstract-form.component.d.ts +0 -21
  678. package/shared/gipi-components/action-row/action-row.component.d.ts +0 -5
  679. package/shared/gipi-components/badge/badge.component.d.ts +0 -8
  680. package/shared/gipi-components/button/button.component.d.ts +0 -56
  681. package/shared/gipi-components/chips/chips.component.d.ts +0 -37
  682. package/shared/gipi-components/confirmation-dialog/confirmation-dialog.component.d.ts +0 -11
  683. package/shared/gipi-components/datepicker/date-range-picker/date-range-picker.component.d.ts +0 -71
  684. package/shared/gipi-components/datepicker/date-range-picker/shared/max-range/max-range-selection-startegy.d.ts +0 -11
  685. package/shared/gipi-components/datepicker/date-range-picker/shared/max-range/max-range.directive.d.ts +0 -6
  686. package/shared/gipi-components/datepicker/date-range-picker/shared/preset-range/preset-range.component.d.ts +0 -40
  687. package/shared/gipi-components/datepicker/datepicker/datepicker.component.d.ts +0 -49
  688. package/shared/gipi-components/datepicker/datepicker.module.d.ts +0 -2
  689. package/shared/gipi-components/datepicker/mat-datepicker/calendar-body.d.ts +0 -143
  690. package/shared/gipi-components/datepicker/mat-datepicker/calendar.d.ts +0 -152
  691. package/shared/gipi-components/datepicker/mat-datepicker/date-range-input-parts.d.ts +0 -102
  692. package/shared/gipi-components/datepicker/mat-datepicker/date-range-input.d.ts +0 -124
  693. package/shared/gipi-components/datepicker/mat-datepicker/date-range-picker.d.ts +0 -21
  694. package/shared/gipi-components/datepicker/mat-datepicker/date-range-selection-strategy.d.ts +0 -45
  695. package/shared/gipi-components/datepicker/mat-datepicker/date-selection-model.d.ts +0 -106
  696. package/shared/gipi-components/datepicker/mat-datepicker/datepicker-animations.d.ts +0 -16
  697. package/shared/gipi-components/datepicker/mat-datepicker/datepicker-base.d.ts +0 -209
  698. package/shared/gipi-components/datepicker/mat-datepicker/datepicker-errors.d.ts +0 -9
  699. package/shared/gipi-components/datepicker/mat-datepicker/datepicker-input-base.d.ts +0 -136
  700. package/shared/gipi-components/datepicker/mat-datepicker/datepicker-input.d.ts +0 -68
  701. package/shared/gipi-components/datepicker/mat-datepicker/datepicker-intl.d.ts +0 -38
  702. package/shared/gipi-components/datepicker/mat-datepicker/datepicker-toggle.d.ts +0 -39
  703. package/shared/gipi-components/datepicker/mat-datepicker/datepicker.d.ts +0 -11
  704. package/shared/gipi-components/datepicker/mat-datepicker/month-view.d.ts +0 -120
  705. package/shared/gipi-components/datepicker/mat-datepicker/multi-year-view.d.ts +0 -85
  706. package/shared/gipi-components/datepicker/mat-datepicker/shared/adapter/date-adapter.d.ts +0 -225
  707. package/shared/gipi-components/datepicker/mat-datepicker/shared/adapter/date-formats.d.ts +0 -20
  708. package/shared/gipi-components/datepicker/mat-datepicker/shared/adapter/native-date-adapter.d.ts +0 -76
  709. package/shared/gipi-components/datepicker/mat-datepicker/shared/adapter/native-date-formats.d.ts +0 -9
  710. package/shared/gipi-components/datepicker/mat-datepicker/shared/adapter/platform.d.ts +0 -33
  711. package/shared/gipi-components/datepicker/mat-datepicker/year-view.d.ts +0 -97
  712. package/shared/gipi-components/dom/connected-overlay-scroll-handler.d.ts +0 -9
  713. package/shared/gipi-components/dom/dom-handler.d.ts +0 -85
  714. package/shared/gipi-components/dropdown-menu/dropdown-menu.component.d.ts +0 -36
  715. package/shared/gipi-components/expansion-panel/expansion-panel.component.d.ts +0 -16
  716. package/shared/gipi-components/file-drag-and-drop/file-drag-and-drop.component.d.ts +0 -43
  717. package/shared/gipi-components/file-drag-and-drop/shared/file-drag-and-drop.directive.d.ts +0 -13
  718. package/shared/gipi-components/footer/footer.component.d.ts +0 -5
  719. package/shared/gipi-components/form-field/form-field.component.d.ts +0 -61
  720. package/shared/gipi-components/helpful-tip/helpful-tip.component.d.ts +0 -13
  721. package/shared/gipi-components/infinite-scroll/infinite-scroll.directive.d.ts +0 -27
  722. package/shared/gipi-components/input-checkbox/input-checkbox.component.d.ts +0 -28
  723. package/shared/gipi-components/input-currency/input-currency.component.d.ts +0 -48
  724. package/shared/gipi-components/input-monthpicker/input-monthpicker.component.d.ts +0 -89
  725. package/shared/gipi-components/input-select/input-select.component.d.ts +0 -120
  726. package/shared/gipi-components/input-select-enum/input-select-enum.component.d.ts +0 -65
  727. package/shared/gipi-components/input-select-listbox/input-select-listbox.component.d.ts +0 -85
  728. package/shared/gipi-components/input-select-paged/input-search/input-search.component.d.ts +0 -77
  729. package/shared/gipi-components/input-select-paged/input-select-paged.component.d.ts +0 -66
  730. package/shared/gipi-components/input-select-radio/input-select-radio.component.d.ts +0 -53
  731. package/shared/gipi-components/layout-grid/col.directive.d.ts +0 -38
  732. package/shared/gipi-components/layout-grid/row.directive.d.ts +0 -28
  733. package/shared/gipi-components/layout-grid/services/breakpoint.service.d.ts +0 -30
  734. package/shared/gipi-components/layout-grid/services/resize.service.d.ts +0 -17
  735. package/shared/gipi-components/month-year-picker/calendar-month-year/calendar-month-year.component.d.ts +0 -37
  736. package/shared/gipi-components/month-year-picker/mont-year-picker.module.d.ts +0 -2
  737. package/shared/gipi-components/month-year-picker/month-year-picker.component.d.ts +0 -104
  738. package/shared/gipi-components/notification/notification.component.d.ts +0 -21
  739. package/shared/gipi-components/novelties/novelties.component.d.ts +0 -22
  740. package/shared/gipi-components/overlay/overlay.component.d.ts +0 -113
  741. package/shared/gipi-components/overlay/shared/overlay-service.d.ts +0 -6
  742. package/shared/gipi-components/overlay/shared/overlay_options.d.ts +0 -50
  743. package/shared/gipi-components/password-requeriments/password-requeriments.component.d.ts +0 -27
  744. package/shared/gipi-components/popover/popover.component.d.ts +0 -133
  745. package/shared/gipi-components/popover/shared/popover-animations.d.ts +0 -13
  746. package/shared/gipi-components/popover/shared/popover-errors.d.ts +0 -14
  747. package/shared/gipi-components/popover/shared/popover-interfaces.d.ts +0 -43
  748. package/shared/gipi-components/popover/shared/popover-target.d.ts +0 -5
  749. package/shared/gipi-components/popover/shared/popover-trigger.d.ts +0 -140
  750. package/shared/gipi-components/popover/shared/popover-types.d.ts +0 -4
  751. package/shared/gipi-components/radio-group/radio-group.component.d.ts +0 -33
  752. package/shared/gipi-components/range-page/range-page.component.d.ts +0 -55
  753. package/shared/gipi-components/range-slider/range-slider.component.d.ts +0 -57
  754. package/shared/gipi-components/select/select.component.d.ts +0 -45
  755. package/shared/gipi-components/select-button/select-button.component.d.ts +0 -39
  756. package/shared/gipi-components/sidebar/container/container.component.d.ts +0 -15
  757. package/shared/gipi-components/sidebar/sidenav/sidenav.component.d.ts +0 -40
  758. package/shared/gipi-components/stepper/stepper.component.d.ts +0 -8
  759. package/shared/gipi-components/table/components/table-body/table-body.component.d.ts +0 -36
  760. package/shared/gipi-components/table/components/table-footer/table-footer.component.d.ts +0 -5
  761. package/shared/gipi-components/table/components/table-header/table-header.component.d.ts +0 -28
  762. package/shared/gipi-components/table/components/table-pagination/shared/paginate.pipe.d.ts +0 -40
  763. package/shared/gipi-components/table/components/table-pagination/shared/pagination-controls.directive.d.ts +0 -81
  764. package/shared/gipi-components/table/components/table-pagination/shared/pagination-instance.d.ts +0 -24
  765. package/shared/gipi-components/table/components/table-pagination/shared/pagination.service.d.ts +0 -45
  766. package/shared/gipi-components/table/components/table-pagination/table-pagination.component.d.ts +0 -21
  767. package/shared/gipi-components/table/components/table-progress-bar/table-progress-bar.component.d.ts +0 -5
  768. package/shared/gipi-components/table/models/pipe-transform.model.d.ts +0 -3
  769. package/shared/gipi-components/table/models/sort.model.d.ts +0 -10
  770. package/shared/gipi-components/table/models/sorted-column.model.d.ts +0 -6
  771. package/shared/gipi-components/table/models/table-column-builder.model.d.ts +0 -52
  772. package/shared/gipi-components/table/models/table-column.model.d.ts +0 -74
  773. package/shared/gipi-components/table/table.component.d.ts +0 -37
  774. package/shared/gipi-components/table/types/sort-direction.type.d.ts +0 -1
  775. package/shared/gipi-components/table/types/sort.type.d.ts +0 -1
  776. package/shared/gipi-components/template/template.directive.d.ts +0 -8
  777. package/shared/gipi-components/toolbar/toolbar.component.d.ts +0 -11
  778. package/shared/gipi-components/top-nav/top-nav.component.d.ts +0 -8
  779. package/shared/gipi-components/user-profile/user-profile.component.d.ts +0 -24
  780. package/shared/material.module.d.ts +0 -2
  781. package/shared/shared.module.d.ts +0 -6
  782. package/shared.d.ts +0 -35
@@ -1,507 +0,0 @@
1
- import { __decorate, __extends, __metadata } from "tslib";
2
- import { Component } from '@angular/core';
3
- import { ActivatedRoute } from '@angular/router';
4
- import { INJECTOR } from '../../../shared/shared.module';
5
- import { APP_MESSAGES } from '../../app.messages';
6
- import { ArrayUtil } from '../../utils/array.util';
7
- import { ObjectUtil } from '../../utils/object.util';
8
- import { StringUtil } from '../../utils/string.util';
9
- import { GIPIPageModel } from '../models/page.model';
10
- import { GIPISortModel } from '../models/sort.model';
11
- import { GIPIAbstractCrudService } from '../services/abstract-crud.service';
12
- import { GIPIBaseService } from '../services/base.service';
13
- import { GIPIAbstractComponent } from './abstract.component';
14
- var GIPIAbstractFindComponent = /** @class */ (function (_super) {
15
- __extends(GIPIAbstractFindComponent, _super);
16
- function GIPIAbstractFindComponent(abstractCrudService, baseService, activatedRoute) {
17
- var _this = _super.call(this, baseService, activatedRoute) || this;
18
- _this.abstractCrudService = abstractCrudService;
19
- _this.baseService = baseService;
20
- _this.activatedRoute = activatedRoute;
21
- _this._filter = null;
22
- _this._page = null;
23
- _this._columns = [];
24
- _this._appliedFilters = [];
25
- return _this;
26
- }
27
- Object.defineProperty(GIPIAbstractFindComponent.prototype, "filter", {
28
- get: function () {
29
- return this._filter;
30
- },
31
- set: function (value) {
32
- this._filter = value;
33
- },
34
- enumerable: false,
35
- configurable: true
36
- });
37
- Object.defineProperty(GIPIAbstractFindComponent.prototype, "page", {
38
- get: function () {
39
- return this._page;
40
- },
41
- set: function (value) {
42
- this._page = value;
43
- },
44
- enumerable: false,
45
- configurable: true
46
- });
47
- Object.defineProperty(GIPIAbstractFindComponent.prototype, "tablePageEventDTO", {
48
- get: function () {
49
- return this._tablePageEventDTO;
50
- },
51
- set: function (value) {
52
- this._tablePageEventDTO = value;
53
- },
54
- enumerable: false,
55
- configurable: true
56
- });
57
- Object.defineProperty(GIPIAbstractFindComponent.prototype, "columns", {
58
- get: function () {
59
- return this._columns;
60
- },
61
- set: function (value) {
62
- this._columns = value;
63
- },
64
- enumerable: false,
65
- configurable: true
66
- });
67
- Object.defineProperty(GIPIAbstractFindComponent.prototype, "appliedFilters", {
68
- get: function () {
69
- return this._appliedFilters;
70
- },
71
- set: function (value) {
72
- this._appliedFilters = value;
73
- },
74
- enumerable: false,
75
- configurable: true
76
- });
77
- GIPIAbstractFindComponent.prototype.ngOnInit = function () {
78
- _super.prototype.ngOnInit.call(this);
79
- if (ObjectUtil.isNull(this.basePermissionList)) {
80
- throw new Error('basePermissionList is required');
81
- }
82
- this._onInitFilter();
83
- this.columns = this.createTableColumns();
84
- };
85
- GIPIAbstractFindComponent.prototype.ngAfterViewInit = function () {
86
- _super.prototype.ngAfterViewInit.call(this);
87
- };
88
- GIPIAbstractFindComponent.prototype.ngOnDestroy = function () {
89
- _super.prototype.ngOnDestroy.call(this);
90
- };
91
- GIPIAbstractFindComponent.prototype.newPage = function () {
92
- return new GIPIPageModel();
93
- };
94
- GIPIAbstractFindComponent.prototype.createTableSorts = function () {
95
- return [];
96
- };
97
- GIPIAbstractFindComponent.prototype.preDelete = function (id) { };
98
- GIPIAbstractFindComponent.prototype.existInAppliedFilters = function (key) {
99
- return (!ArrayUtil.isEmpty(this.appliedFilters) &&
100
- (this.appliedFilters.findIndex(function (e) { return e.key === key; }) >= 0));
101
- };
102
- /** @Internal */
103
- GIPIAbstractFindComponent.prototype._onInitFilter = function () {
104
- this.page = this.newPage();
105
- this.filter = this.newFilter();
106
- if (!ObjectUtil.isNull(this.filter)) {
107
- this.setAppliedFilters();
108
- }
109
- var filterSessionStorage = this.baseService.sessionStorageService.get('filter');
110
- if (!ObjectUtil.isNull(filterSessionStorage)) {
111
- this.handleFilterSessionStorage();
112
- }
113
- };
114
- GIPIAbstractFindComponent.prototype.findAll = function (pageEvent) {
115
- var _this = this;
116
- try {
117
- this.loading = true;
118
- this.page = this.newPage();
119
- if (ObjectUtil.isNull(this.filter)) {
120
- this.filter = this.newFilter();
121
- }
122
- // if (ObjectUtil.isNull(pageEvent) && !ObjectUtil.isNull(this.tablePageEventDTO)) {
123
- // pageEvent = this.tablePageEventDTO;
124
- // }
125
- if (pageEvent) {
126
- this.tablePageEventDTO = pageEvent;
127
- this.filter.pageNumber = pageEvent.pageIndex;
128
- this.filter.pageSize = pageEvent.pageSize;
129
- this.filter.offset = pageEvent.pageIndex * pageEvent.pageSize;
130
- if (pageEvent.sort) {
131
- this.filter.sorts = [
132
- new GIPISortModel(pageEvent.sort.active, StringUtil.isEmpty(pageEvent.sort.direction) ? 'DESC' : pageEvent.sort.direction.toUpperCase())
133
- ];
134
- }
135
- }
136
- else {
137
- this.filter.pageNumber = 0;
138
- this.filter.offset = 0;
139
- this.filter.pageSize = 10;
140
- }
141
- this.abstractCrudService.findAll(this.filter).toPromise().then(function (page) {
142
- _this.page = page;
143
- _this.setAppliedFilters();
144
- _this.loading = false;
145
- }, function (error) {
146
- _this.loading = false;
147
- throw new Error(error);
148
- });
149
- }
150
- catch (e) {
151
- this.loading = false;
152
- throw new Error(e);
153
- }
154
- };
155
- GIPIAbstractFindComponent.prototype.newRegister = function (permission) {
156
- if (StringUtil.isEmpty(permission) && ObjectUtil.isNull(this.basePermissionList)) {
157
- this.setFilterSessionStorage();
158
- this.navigateByUrl(this.getPath(), [this.getPath(), 'new'], true);
159
- }
160
- else {
161
- if (StringUtil.isEmpty(permission) && !ObjectUtil.isNull(this.basePermissionList)) {
162
- permission = this.basePermissionList.MAKE;
163
- }
164
- if (!this.hasPermission(permission)) {
165
- this.addWarningMessage(INJECTOR.get(APP_MESSAGES).NOT_PERMISSION);
166
- return;
167
- }
168
- this.setFilterSessionStorage();
169
- this.navigateByUrl(this.getPath(), [this.getPath(), 'new'], true);
170
- }
171
- };
172
- GIPIAbstractFindComponent.prototype.editRegister = function (id, permission) {
173
- id = this.handleEntityId(id);
174
- if (ObjectUtil.isNull(id)) {
175
- return;
176
- }
177
- if (StringUtil.isEmpty(permission) && ObjectUtil.isNull(this.basePermissionList)) {
178
- this.setFilterSessionStorage();
179
- this.navigateByUrl(this.getPath(), [this.getPath(), 'edit'], true);
180
- }
181
- else {
182
- if (StringUtil.isEmpty(permission) && !ObjectUtil.isNull(this.basePermissionList)) {
183
- permission = this.basePermissionList.UPDATE;
184
- }
185
- if (!this.hasPermission(permission)) {
186
- this.addWarningMessage(INJECTOR.get(APP_MESSAGES).NOT_PERMISSION);
187
- return;
188
- }
189
- this.setFilterSessionStorage();
190
- this.navigateByUrl(this.getPath(), [this.getPath(), 'edit', id], true);
191
- }
192
- };
193
- GIPIAbstractFindComponent.prototype.deleteRegister = function (id, permission, fetchAgain) {
194
- if (fetchAgain === void 0) { fetchAgain = true; }
195
- try {
196
- id = this.handleEntityId(id);
197
- if (ObjectUtil.isNull(id)) {
198
- return;
199
- }
200
- if (StringUtil.isEmpty(permission) && ObjectUtil.isNull(this.basePermissionList)) {
201
- this._deleteRegister(id, fetchAgain);
202
- }
203
- else {
204
- if (StringUtil.isEmpty(permission) && !ObjectUtil.isNull(this.basePermissionList)) {
205
- permission = this.basePermissionList.DELETE;
206
- }
207
- if (!this.hasPermission(permission)) {
208
- this.addWarningMessage(INJECTOR.get(APP_MESSAGES).NOT_PERMISSION);
209
- return;
210
- }
211
- this._deleteRegister(id, fetchAgain);
212
- }
213
- }
214
- catch (e) {
215
- this.loading = false;
216
- if (this.isListing()) {
217
- this.clear();
218
- }
219
- throw new Error(e);
220
- }
221
- };
222
- /** @Internal */
223
- GIPIAbstractFindComponent.prototype._deleteRegister = function (id, fetchAgain) {
224
- var _this = this;
225
- if (fetchAgain === void 0) { fetchAgain = true; }
226
- try {
227
- this.baseService.confirmationService.confirm({
228
- title: 'Confirmação',
229
- message: INJECTOR.get(APP_MESSAGES).DELETE_CONFIRMATION,
230
- accept: function () {
231
- _this.setFilterSessionStorage();
232
- _this.loading = true;
233
- _this.page = _this.newPage();
234
- _this.preDelete(id);
235
- _this.abstractCrudService.delete(id).toPromise().then(function () {
236
- if (fetchAgain) {
237
- _this.findAll();
238
- }
239
- _this.loading = false;
240
- _this.addSuccessMessage(INJECTOR.get(APP_MESSAGES).SUCCESS);
241
- }, function (error) {
242
- throw new Error(error);
243
- });
244
- }
245
- });
246
- }
247
- catch (e) {
248
- this.loading = false;
249
- throw new Error(e);
250
- }
251
- };
252
- GIPIAbstractFindComponent.prototype.deleteAllRegister = function (idList, permission, fetchAgain) {
253
- if (fetchAgain === void 0) { fetchAgain = true; }
254
- try {
255
- idList = this.handleEntityIdList(idList);
256
- if (ObjectUtil.isNull(idList) || ArrayUtil.isEmpty(idList)) {
257
- return;
258
- }
259
- if (StringUtil.isEmpty(permission) && ObjectUtil.isNull(this.basePermissionList)) {
260
- this._deleteAllRegister(idList, fetchAgain);
261
- }
262
- else {
263
- if (StringUtil.isEmpty(permission) && !ObjectUtil.isNull(this.basePermissionList)) {
264
- permission = this.basePermissionList.DELETE;
265
- }
266
- if (!this.hasPermission(permission)) {
267
- this.addWarningMessage(INJECTOR.get(APP_MESSAGES).NOT_PERMISSION);
268
- return;
269
- }
270
- this._deleteAllRegister(idList, fetchAgain);
271
- }
272
- }
273
- catch (e) {
274
- this.loading = false;
275
- if (this.isListing()) {
276
- this.clear();
277
- }
278
- throw new Error(e);
279
- }
280
- };
281
- /** @Internal */
282
- GIPIAbstractFindComponent.prototype._deleteAllRegister = function (idList, fetchAgain) {
283
- var _this = this;
284
- if (fetchAgain === void 0) { fetchAgain = true; }
285
- try {
286
- this.baseService.confirmationService.confirm({
287
- title: 'Confirmação',
288
- message: INJECTOR.get(APP_MESSAGES).DELETE_CONFIRMATION,
289
- accept: function () {
290
- _this.setFilterSessionStorage();
291
- _this.loading = true;
292
- _this.page = _this.newPage();
293
- _this.preDelete();
294
- _this.abstractCrudService.deleteAll(idList).toPromise().then(function () {
295
- if (fetchAgain) {
296
- _this.findAll();
297
- }
298
- _this.loading = false;
299
- _this.addSuccessMessage(INJECTOR.get(APP_MESSAGES).SUCCESS);
300
- }, function (error) {
301
- throw new Error(error);
302
- });
303
- }
304
- });
305
- }
306
- catch (e) {
307
- this.loading = false;
308
- throw new Error(e);
309
- }
310
- };
311
- GIPIAbstractFindComponent.prototype.viewRegister = function (id, permission) {
312
- id = this.handleEntityId(id);
313
- if (ObjectUtil.isNull(id)) {
314
- return;
315
- }
316
- if (StringUtil.isEmpty(permission) && ObjectUtil.isNull(this.basePermissionList)) {
317
- this.setFilterSessionStorage();
318
- this.navigateByUrl(this.getPath(), [this.getPath(), 'view', id], true);
319
- }
320
- else {
321
- if (StringUtil.isEmpty(permission) && !ObjectUtil.isNull(this.basePermissionList)) {
322
- permission = this.basePermissionList.READ;
323
- }
324
- if (!this.hasPermission(permission)) {
325
- this.addWarningMessage(INJECTOR.get(APP_MESSAGES).NOT_PERMISSION);
326
- return;
327
- }
328
- this.setFilterSessionStorage();
329
- this.navigateByUrl(this.getPath(), [this.getPath(), 'view', id], true);
330
- }
331
- };
332
- GIPIAbstractFindComponent.prototype.editOrViewRegister = function (id, permission) {
333
- if (this.hasPermission(permission)) {
334
- this.editRegister(id, permission);
335
- }
336
- else {
337
- this.viewRegister(id, permission);
338
- }
339
- };
340
- GIPIAbstractFindComponent.prototype.enableOrDisableRegister = function (action, id, permission, fetchAgain) {
341
- if (fetchAgain === void 0) { fetchAgain = true; }
342
- try {
343
- id = this.handleEntityId(id);
344
- if (ObjectUtil.isNull(id)) {
345
- return;
346
- }
347
- if (StringUtil.isEmpty(permission) && ObjectUtil.isNull(this.basePermissionList)) {
348
- this._enableOrDisableRegister(action, id, fetchAgain);
349
- }
350
- else {
351
- if (StringUtil.isEmpty(permission) && !ObjectUtil.isNull(this.basePermissionList)) {
352
- permission = this.basePermissionList.UPDATE;
353
- }
354
- if (!this.hasPermission(permission)) {
355
- this.addWarningMessage(INJECTOR.get(APP_MESSAGES).NOT_PERMISSION);
356
- return;
357
- }
358
- this._enableOrDisableRegister(action, id, fetchAgain);
359
- }
360
- }
361
- catch (e) {
362
- this.loading = false;
363
- if (this.isListing()) {
364
- this.clear();
365
- }
366
- throw new Error(e);
367
- }
368
- };
369
- /** @Internal */
370
- GIPIAbstractFindComponent.prototype._enableOrDisableRegister = function (action, id, fetchAgain) {
371
- var _this = this;
372
- if (fetchAgain === void 0) { fetchAgain = true; }
373
- try {
374
- this.baseService.confirmationService.confirm({
375
- title: 'Confirmação',
376
- message: "Deseja realmente " + ((action === 'DISABLE') ? 'inativar' : 'ativar') + " este registro?",
377
- accept: function () {
378
- _this.setFilterSessionStorage();
379
- _this.loading = true;
380
- _this.page = _this.newPage();
381
- _this.abstractCrudService.enableOrDisable(id, action).toPromise().then(function () {
382
- if (fetchAgain) {
383
- _this.findAll();
384
- }
385
- _this.loading = false;
386
- _this.addSuccessMessage(INJECTOR.get(APP_MESSAGES).SUCCESS);
387
- }, function (error) {
388
- throw new Error(error);
389
- });
390
- }
391
- });
392
- }
393
- catch (e) {
394
- this.loading = false;
395
- throw new Error(e);
396
- }
397
- };
398
- GIPIAbstractFindComponent.prototype.enableAndDisableAllRegister = function (action, idList, permission, fetchAgain) {
399
- if (fetchAgain === void 0) { fetchAgain = true; }
400
- try {
401
- idList = this.handleEntityIdList(idList);
402
- if (ObjectUtil.isNull(idList) || ArrayUtil.isEmpty(idList)) {
403
- return;
404
- }
405
- if (StringUtil.isEmpty(permission) && ObjectUtil.isNull(this.basePermissionList)) {
406
- this._enableAndDisableAllRegister(action, idList, fetchAgain);
407
- }
408
- else {
409
- if (StringUtil.isEmpty(permission) && !ObjectUtil.isNull(this.basePermissionList)) {
410
- permission = this.basePermissionList.UPDATE;
411
- }
412
- if (!this.hasPermission(permission)) {
413
- this.addWarningMessage(INJECTOR.get(APP_MESSAGES).NOT_PERMISSION);
414
- return;
415
- }
416
- this._enableAndDisableAllRegister(action, idList, fetchAgain);
417
- }
418
- }
419
- catch (e) {
420
- this.loading = false;
421
- if (this.isListing()) {
422
- this.clear();
423
- }
424
- throw new Error(e);
425
- }
426
- };
427
- /** @Internal */
428
- GIPIAbstractFindComponent.prototype._enableAndDisableAllRegister = function (action, idList, fetchAgain) {
429
- var _this = this;
430
- if (fetchAgain === void 0) { fetchAgain = true; }
431
- try {
432
- this.baseService.confirmationService.confirm({
433
- title: 'Confirmação',
434
- message: "Deseja realmente " + ((action === 'DISABLE') ? 'inativar' : 'ativar') + " os registros selecionados?",
435
- accept: function () {
436
- _this.setFilterSessionStorage();
437
- _this.loading = true;
438
- _this.page = _this.newPage();
439
- _this.abstractCrudService.enableOrDisableAll(idList, action).toPromise().then(function () {
440
- if (fetchAgain) {
441
- _this.findAll();
442
- }
443
- _this.loading = false;
444
- _this.addSuccessMessage(INJECTOR.get(APP_MESSAGES).SUCCESS);
445
- }, function (error) {
446
- throw new Error(error);
447
- });
448
- }
449
- });
450
- }
451
- catch (e) {
452
- this.loading = false;
453
- throw new Error(e);
454
- }
455
- };
456
- GIPIAbstractFindComponent.prototype.clear = function () {
457
- this.baseService.sessionStorageService.remove('filter');
458
- this.page = this.newPage();
459
- this.filter = this.newFilter();
460
- this.clearAppliedFilters();
461
- this.findAll();
462
- };
463
- GIPIAbstractFindComponent.prototype.handleEntityId = function (id) {
464
- if (!this.UUIDIsValid(id)) {
465
- throw new Error('O identificador do registro não é válido');
466
- }
467
- if (ObjectUtil.isNull(id) && !ObjectUtil.isNull(this.page) && !ArrayUtil.isEmpty(this.page.content)) {
468
- var firstSeletected = this.page.content.filter(function (c) { return c.selected; })[0];
469
- if (ObjectUtil.isNull(firstSeletected)) {
470
- return null;
471
- }
472
- return firstSeletected.id;
473
- }
474
- return id;
475
- };
476
- GIPIAbstractFindComponent.prototype.handleEntityIdList = function (idList) {
477
- if (!ArrayUtil.isEmpty(idList)) {
478
- for (var i = 0; i < idList.length; i++) {
479
- if (!this.UUIDIsValid(idList[i])) {
480
- throw new Error('O identificador do registro não é válido');
481
- }
482
- }
483
- }
484
- if (ArrayUtil.isEmpty(idList) && !ObjectUtil.isNull(this.page) && !ArrayUtil.isEmpty(this.page.content)) {
485
- var listSelected = this.page.content.filter(function (p) { return p.selected; }).map(function (p) { return p.id; });
486
- if (ArrayUtil.isEmpty(listSelected)) {
487
- return null;
488
- }
489
- return listSelected;
490
- }
491
- return idList;
492
- };
493
- GIPIAbstractFindComponent.ctorParameters = function () { return [
494
- { type: GIPIAbstractCrudService },
495
- { type: GIPIBaseService },
496
- { type: ActivatedRoute }
497
- ]; };
498
- GIPIAbstractFindComponent = __decorate([
499
- Component({ template: '' }),
500
- __metadata("design:paramtypes", [GIPIAbstractCrudService,
501
- GIPIBaseService,
502
- ActivatedRoute])
503
- ], GIPIAbstractFindComponent);
504
- return GIPIAbstractFindComponent;
505
- }(GIPIAbstractComponent));
506
- export { GIPIAbstractFindComponent };
507
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWJzdHJhY3QtZmluZC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AZ2lwaXNpc3RlbWFzL25nLWNvcmUvIiwic291cmNlcyI6WyJjb3JlL2dpcGktY29tcG9uZW50cy9jb21wb25lbnRzL2Fic3RyYWN0LWZpbmQuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQWlCLFNBQVMsRUFBcUIsTUFBTSxlQUFlLENBQUM7QUFDNUUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRWpELE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUN6RCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFHbEQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ25ELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUNyRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFJckQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3JELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNyRCxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUM1RSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFFM0QsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFHN0Q7SUFBb0ksNkNBQXFCO0lBMENySixtQ0FDYyxtQkFBOEQsRUFDOUQsV0FBNEIsRUFDNUIsY0FBOEI7UUFINUMsWUFLSSxrQkFBTSxXQUFXLEVBQUUsY0FBYyxDQUFDLFNBQ3JDO1FBTGEseUJBQW1CLEdBQW5CLG1CQUFtQixDQUEyQztRQUM5RCxpQkFBVyxHQUFYLFdBQVcsQ0FBaUI7UUFDNUIsb0JBQWMsR0FBZCxjQUFjLENBQWdC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SUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRTtvQkFDOUIsTUFBTSxJQUFJLEtBQUssQ0FBQywwQ0FBMEMsQ0FBQyxDQUFDO2lCQUMvRDthQUNKO1NBQ0o7UUFFRCxJQUFJLFNBQVMsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsRUFBRTtZQUNyRyxJQUFNLFlBQVksR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsVUFBQSxDQUFDLElBQUksT0FBQSxDQUFDLENBQUMsUUFBUSxFQUFWLENBQVUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxVQUFBLENBQUMsSUFBSSxPQUFBLENBQUMsQ0FBQyxFQUFFLEVBQUosQ0FBSSxDQUFDLENBQUM7WUFDOUUsSUFBSSxTQUFTLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQyxFQUFFO2dCQUNqQyxPQUFPLElBQUksQ0FBQzthQUNmO1lBRUQsT0FBTyxZQUFZLENBQUM7U0FDdkI7UUFFRCxPQUFPLE1BQU0sQ0FBQztJQUNsQixDQUFDOztnQkFyZGtDLHVCQUF1QjtnQkFDL0IsZUFBZTtnQkFDWixjQUFjOztJQTdDMUIseUJBQXlCO1FBRDlDLFNBQVMsQ0FBQyxFQUFFLFFBQVEsRUFBRSxFQUFFLEVBQUUsQ0FBQzt5Q0E0Q1csdUJBQXVCO1lBQy9CLGVBQWU7WUFDWixjQUFjO09BN0MxQix5QkFBeUIsQ0FrZ0I5QztJQUFELGdDQUFDO0NBQUEsQUFsZ0JELENBQW9JLHFCQUFxQixHQWtnQnhKO1NBbGdCcUIseUJBQXlCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQWZ0ZXJWaWV3SW5pdCwgQ29tcG9uZW50LCBPbkRlc3Ryb3ksIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuXG5pbXBvcnQgeyBJTkpFQ1RPUiB9IGZyb20gJy4uLy4uLy4uL3NoYXJlZC9zaGFyZWQubW9kdWxlJztcbmltcG9ydCB7IEFQUF9NRVNTQUdFUyB9IGZyb20gJy4uLy4uL2FwcC5tZXNzYWdlcyc7XG5pbXBvcnQgeyBUYWJsZUNvbHVtbkRUTyB9IGZyb20gJy4uLy4uL21vZGVscy9kdG8vdGFibGUtY29sdW1uLmR0byc7XG5pbXBvcnQgeyBUYWJsZVBhZ2VFdmVudERUTyB9IGZyb20gJy4uLy4uL21vZGVscy9kdG8vdGFibGUtcGFnZS1ldmVudC5kdG8nO1xuaW1wb3J0IHsgQXJyYXlVdGlsIH0gZnJvbSAnLi4vLi4vdXRpbHMvYXJyYXkudXRpbCc7XG5pbXBvcnQgeyBPYmplY3RVdGlsIH0gZnJvbSAnLi4vLi4vdXRpbHMvb2JqZWN0LnV0aWwnO1xuaW1wb3J0IHsgU3RyaW5nVXRpbCB9IGZyb20gJy4uLy4uL3V0aWxzL3N0cmluZy51dGlsJztcbmltcG9ydCB7IEdJUElBYnN0cmFjdEZpbHRlck1vZGVsIH0gZnJvbSAnLi4vbW9kZWxzL2Fic3RyYWN0LWZpbHRlci5tb2RlbCc7XG5pbXBvcnQgeyBHSVBJQWJzdHJhY3RNb2RlbCB9IGZyb20gJy4uL21vZGVscy9hYnN0cmFjdC5tb2RlbCc7XG5pbXBvcnQgeyBHSVBJQXBwbGllZEZpbHRlciB9IGZyb20gJy4uL21vZGVscy9hcHBsaWVkLWZpbHRlci5tb2RlbCc7XG5pbXBvcnQgeyBHSVBJUGFnZU1vZGVsIH0gZnJvbSAnLi4vbW9kZWxzL3BhZ2UubW9kZWwnO1xuaW1wb3J0IHsgR0lQSVNvcnRNb2RlbCB9IGZyb20gJy4uL21vZGVscy9zb3J0Lm1vZGVsJztcbmltcG9ydCB7IEdJUElBYnN0cmFjdENydWRTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvYWJzdHJhY3QtY3J1ZC5zZXJ2aWNlJztcbmltcG9ydCB7IEdJUElCYXNlU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL2Jhc2Uuc2VydmljZSc7XG5pbXBvcnQgeyBHSVBJVXVpZCB9IGZyb20gJy4uL3R5cGVzL3V1aWQudHlwZSc7XG5pbXBvcnQgeyBHSVBJQWJzdHJhY3RDb21wb25lbnQgfSBmcm9tICcuL2Fic3RyYWN0LmNvbXBvbmVudCc7XG5cbkBDb21wb25lbnQoeyB0ZW1wbGF0ZTogJycgfSlcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBHSVBJQWJzdHJhY3RGaW5kQ29tcG9uZW50PFRFbnRpdHkgZXh0ZW5kcyBHSVBJQWJzdHJhY3RNb2RlbCwgVEZpbHRlciBleHRlbmRzIEdJUElBYnN0cmFjdEZpbHRlck1vZGVsPiBleHRlbmRzIEdJUElBYnN0cmFjdENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgQWZ0ZXJWaWV3SW5pdCwgT25EZXN0cm95IHtcblxuICAgIHByaXZhdGUgX2ZpbHRlcjogVEZpbHRlciA9IG51bGw7XG4gICAgcHVibGljIHNldCBmaWx0ZXIodmFsdWU6IFRGaWx0ZXIpIHtcbiAgICAgICAgdGhpcy5fZmlsdGVyID0gdmFsdWU7XG4gICAgfVxuICAgIHB1YmxpYyBnZXQgZmlsdGVyKCk6IFRGaWx0ZXIge1xuICAgICAgICByZXR1cm4gdGhpcy5fZmlsdGVyO1xuICAgIH1cblxuICAgIHByaXZhdGUgX3BhZ2U6IEdJUElQYWdlTW9kZWw8VEVudGl0eT4gPSBudWxsO1xuICAgIHB1YmxpYyBzZXQgcGFnZSh2YWx1ZTogR0lQSVBhZ2VNb2RlbDxURW50aXR5Pikge1xuICAgICAgICB0aGlzLl9wYWdlID0gdmFsdWU7XG4gICAgfVxuICAgIHB1YmxpYyBnZXQgcGFnZSgpOiBHSVBJUGFnZU1vZGVsPFRFbnRpdHk+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3BhZ2U7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfdGFibGVQYWdlRXZlbnREVE86IFRhYmxlUGFnZUV2ZW50RFRPO1xuICAgIHB1YmxpYyBzZXQgdGFibGVQYWdlRXZlbnREVE8odmFsdWU6IFRhYmxlUGFnZUV2ZW50RFRPKSB7XG4gICAgICAgIHRoaXMuX3RhYmxlUGFnZUV2ZW50RFRPID0gdmFsdWU7XG4gICAgfVxuICAgIHB1YmxpYyBnZXQgdGFibGVQYWdlRXZlbnREVE8oKTogVGFibGVQYWdlRXZlbnREVE8ge1xuICAgICAgICByZXR1cm4gdGhpcy5fdGFibGVQYWdlRXZlbnREVE87XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfY29sdW1uczogVGFibGVDb2x1bW5EVE9bXSA9IFtdO1xuICAgIHB1YmxpYyBzZXQgY29sdW1ucyh2YWx1ZTogVGFibGVDb2x1bW5EVE9bXSkge1xuICAgICAgICB0aGlzLl9jb2x1bW5zID0gdmFsdWU7XG4gICAgfVxuICAgIHB1YmxpYyBnZXQgY29sdW1ucygpOiBUYWJsZUNvbHVtbkRUT1tdIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2NvbHVtbnM7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfYXBwbGllZEZpbHRlcnM6IEdJUElBcHBsaWVkRmlsdGVyPGFueT5bXSA9IFtdO1xuICAgIHB1YmxpYyBzZXQgYXBwbGllZEZpbHRlcnModmFsdWU6IEdJUElBcHBsaWVkRmlsdGVyPGFueT5bXSkge1xuICAgICAgICB0aGlzLl9hcHBsaWVkRmlsdGVycyA9IHZhbHVlO1xuICAgIH1cbiAgICBwdWJsaWMgZ2V0IGFwcGxpZWRGaWx0ZXJzKCk6IEdJUElBcHBsaWVkRmlsdGVyPGFueT5bXSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9hcHBsaWVkRmlsdGVycztcbiAgICB9XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJvdGVjdGVkIGFic3RyYWN0Q3J1ZFNlcnZpY2U6IEdJUElBYnN0cmFjdENydWRTZXJ2aWNlPFRFbnRpdHksIFRGaWx0ZXI+LFxuICAgICAgICBwcm90ZWN0ZWQgYmFzZVNlcnZpY2U6IEdJUElCYXNlU2VydmljZSxcbiAgICAgICAgcHJvdGVjdGVkIGFjdGl2YXRlZFJvdXRlOiBBY3RpdmF0ZWRSb3V0ZSxcbiAgICApIHtcbiAgICAgICAgc3VwZXIoYmFzZVNlcnZpY2UsIGFjdGl2YXRlZFJvdXRlKTtcbiAgICB9XG5cbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgICAgc3VwZXIubmdPbkluaXQoKTtcblxuICAgICAgICBpZiAoT2JqZWN0VXRpbC5pc051bGwodGhpcy5iYXNlUGVybWlzc2lvbkxpc3QpKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ2Jhc2VQZXJtaXNzaW9uTGlzdCBpcyByZXF1aXJlZCcpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5fb25Jbml0RmlsdGVyKCk7XG4gICAgICAgIHRoaXMuY29sdW1ucyA9IHRoaXMuY3JlYXRlVGFibGVDb2x1bW5zKCk7XG4gICAgfVxuXG4gICAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgICAgICBzdXBlci5uZ0FmdGVyVmlld0luaXQoKTtcbiAgICB9XG5cbiAgICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICAgICAgc3VwZXIubmdPbkRlc3Ryb3koKTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgYWJzdHJhY3QgbmV3RmlsdGVyKCk6IFRGaWx0ZXI7XG5cbiAgICBwcm90ZWN0ZWQgYWJzdHJhY3QgY3JlYXRlVGFibGVDb2x1bW5zKCk6IFRhYmxlQ29sdW1uRFRPW107XG5cbiAgICBwcm90ZWN0ZWQgYWJzdHJhY3Qgc2V0QXBwbGllZEZpbHRlcnMoKTogdm9pZDtcblxuICAgIHByb3RlY3RlZCBhYnN0cmFjdCBjbGVhckFwcGxpZWRGaWx0ZXJzKCk6IHZvaWQ7XG5cbiAgICBwdWJsaWMgYWJzdHJhY3QgcmVtb3ZlQXBwbGllZEZpbHRlcnMoZmlsdGVyOiB7IGNoaXA6IEdJUElBcHBsaWVkRmlsdGVyPGFueT47IGluZGV4OiBudW1iZXI7IH0pOiB2b2lkO1xuXG4gICAgcHJvdGVjdGVkIGFic3RyYWN0IHNldEZpbHRlclNlc3Npb25TdG9yYWdlKCk6IHZvaWQ7XG5cbiAgICBwcm90ZWN0ZWQgYWJzdHJhY3QgaGFuZGxlRmlsdGVyU2Vzc2lvblN0b3JhZ2UoKTogdm9pZDtcblxuICAgIHByb3RlY3RlZCBuZXdQYWdlKCk6IEdJUElQYWdlTW9kZWw8VEVudGl0eT4ge1xuICAgICAgICByZXR1cm4gbmV3IEdJUElQYWdlTW9kZWw8VEVudGl0eT4oKTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgY3JlYXRlVGFibGVTb3J0cygpOiBHSVBJU29ydE1vZGVsW10ge1xuICAgICAgICByZXR1cm4gW107XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIHByZURlbGV0ZShpZD86IEdJUElVdWlkKTogdm9pZCB7IH1cblxuICAgIHByb3RlY3RlZCBleGlzdEluQXBwbGllZEZpbHRlcnM8VCA9IGFueT4oa2V5OiBUKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAhQXJyYXlVdGlsLmlzRW1wdHkodGhpcy5hcHBsaWVkRmlsdGVycykgJiZcbiAgICAgICAgICAgICh0aGlzLmFwcGxpZWRGaWx0ZXJzLmZpbmRJbmRleChlID0+IGUua2V5ID09PSBrZXkpID49IDApXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgLyoqIEBJbnRlcm5hbCAqL1xuICAgIHByb3RlY3RlZCBfb25Jbml0RmlsdGVyKCk6IHZvaWQge1xuICAgICAgICB0aGlzLnBhZ2UgPSB0aGlzLm5ld1BhZ2UoKTtcbiAgICAgICAgdGhpcy5maWx0ZXIgPSB0aGlzLm5ld0ZpbHRlcigpO1xuXG4gICAgICAgIGlmICghT2JqZWN0VXRpbC5pc051bGwodGhpcy5maWx0ZXIpKSB7XG4gICAgICAgICAgICB0aGlzLnNldEFwcGxpZWRGaWx0ZXJzKCk7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBmaWx0ZXJTZXNzaW9uU3RvcmFnZSA9IHRoaXMuYmFzZVNlcnZpY2Uuc2Vzc2lvblN0b3JhZ2VTZXJ2aWNlLmdldCgnZmlsdGVyJyk7XG4gICAgICAgIGlmICghT2JqZWN0VXRpbC5pc051bGwoZmlsdGVyU2Vzc2lvblN0b3JhZ2UpKSB7XG4gICAgICAgICAgICB0aGlzLmhhbmRsZUZpbHRlclNlc3Npb25TdG9yYWdlKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgZmluZEFsbChwYWdlRXZlbnQ/OiBhbnkpOiB2b2lkIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIHRoaXMubG9hZGluZyA9IHRydWU7XG5cbiAgICAgICAgICAgIHRoaXMucGFnZSA9IHRoaXMubmV3UGFnZSgpO1xuICAgICAgICAgICAgaWYgKE9iamVjdFV0aWwuaXNOdWxsKHRoaXMuZmlsdGVyKSkge1xuICAgICAgICAgICAgICAgIHRoaXMuZmlsdGVyID0gdGhpcy5uZXdGaWx0ZXIoKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLy8gaWYgKE9iamVjdFV0aWwuaXNOdWxsKHBhZ2VFdmVudCkgJiYgIU9iamVjdFV0aWwuaXNOdWxsKHRoaXMudGFibGVQYWdlRXZlbnREVE8pKSB7XG4gICAgICAgICAgICAvLyAgICAgcGFnZUV2ZW50ID0gdGhpcy50YWJsZVBhZ2VFdmVudERUTztcbiAgICAgICAgICAgIC8vIH1cblxuICAgICAgICAgICAgaWYgKHBhZ2VFdmVudCkge1xuICAgICAgICAgICAgICAgIHRoaXMudGFibGVQYWdlRXZlbnREVE8gPSBwYWdlRXZlbnQ7XG4gICAgICAgICAgICAgICAgdGhpcy5maWx0ZXIucGFnZU51bWJlciA9IHBhZ2VFdmVudC5wYWdlSW5kZXg7XG4gICAgICAgICAgICAgICAgdGhpcy5maWx0ZXIucGFnZVNpemUgPSBwYWdlRXZlbnQucGFnZVNpemU7XG4gICAgICAgICAgICAgICAgdGhpcy5maWx0ZXIub2Zmc2V0ID0gcGFnZUV2ZW50LnBhZ2VJbmRleCAqIHBhZ2VFdmVudC5wYWdlU2l6ZTtcblxuICAgICAgICAgICAgICAgIGlmIChwYWdlRXZlbnQuc29ydCkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmZpbHRlci5zb3J0cyA9IFtcbiAgICAgICAgICAgICAgICAgICAgICAgIG5ldyBHSVBJU29ydE1vZGVsKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhZ2VFdmVudC5zb3J0LmFjdGl2ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBTdHJpbmdVdGlsLmlzRW1wdHkocGFnZUV2ZW50LnNvcnQuZGlyZWN0aW9uKSA/ICdERVNDJyA6IHBhZ2VFdmVudC5zb3J0LmRpcmVjdGlvbi50b1VwcGVyQ2FzZSgpXG4gICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLmZpbHRlci5wYWdlTnVtYmVyID0gMDtcbiAgICAgICAgICAgICAgICB0aGlzLmZpbHRlci5vZmZzZXQgPSAwO1xuICAgICAgICAgICAgICAgIHRoaXMuZmlsdGVyLnBhZ2VTaXplID0gMTA7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRoaXMuYWJzdHJhY3RDcnVkU2VydmljZS5maW5kQWxsPFRGaWx0ZXIsIFRFbnRpdHk+KHRoaXMuZmlsdGVyKS50b1Byb21pc2UoKS50aGVuKHBhZ2UgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMucGFnZSA9IHBhZ2U7XG4gICAgICAgICAgICAgICAgdGhpcy5zZXRBcHBsaWVkRmlsdGVycygpO1xuICAgICAgICAgICAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xuICAgICAgICAgICAgfSwgZXJyb3IgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihlcnJvcik7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoZSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgbmV3UmVnaXN0ZXIocGVybWlzc2lvbj86IHN0cmluZyk6IHZvaWQge1xuICAgICAgICBpZiAoU3RyaW5nVXRpbC5pc0VtcHR5KHBlcm1pc3Npb24pICYmIE9iamVjdFV0aWwuaXNOdWxsKHRoaXMuYmFzZVBlcm1pc3Npb25MaXN0KSkge1xuICAgICAgICAgICAgdGhpcy5zZXRGaWx0ZXJTZXNzaW9uU3RvcmFnZSgpO1xuICAgICAgICAgICAgdGhpcy5uYXZpZ2F0ZUJ5VXJsKHRoaXMuZ2V0UGF0aCgpLCBbdGhpcy5nZXRQYXRoKCksICduZXcnXSwgdHJ1ZSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpZiAoU3RyaW5nVXRpbC5pc0VtcHR5KHBlcm1pc3Npb24pICYmICFPYmplY3RVdGlsLmlzTnVsbCh0aGlzLmJhc2VQZXJtaXNzaW9uTGlzdCkpIHtcbiAgICAgICAgICAgICAgICBwZXJtaXNzaW9uID0gdGhpcy5iYXNlUGVybWlzc2lvbkxpc3QuTUFLRTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICghdGhpcy5oYXNQZXJtaXNzaW9uKHBlcm1pc3Npb24pKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5hZGRXYXJuaW5nTWVzc2FnZShJTkpFQ1RPUi5nZXQoQVBQX01FU1NBR0VTKS5OT1RfUEVSTUlTU0lPTik7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0aGlzLnNldEZpbHRlclNlc3Npb25TdG9yYWdlKCk7XG4gICAgICAgICAgICB0aGlzLm5hdmlnYXRlQnlVcmwodGhpcy5nZXRQYXRoKCksIFt0aGlzLmdldFBhdGgoKSwgJ25ldyddLCB0cnVlKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBlZGl0UmVnaXN0ZXIoaWQ/OiBHSVBJVXVpZCwgcGVybWlzc2lvbj86IHN0cmluZyk6IHZvaWQge1xuICAgICAgICBpZCA9IHRoaXMuaGFuZGxlRW50aXR5SWQoaWQpO1xuICAgICAgICBpZiAoT2JqZWN0VXRpbC5pc051bGwoaWQpKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoU3RyaW5nVXRpbC5pc0VtcHR5KHBlcm1pc3Npb24pICYmIE9iamVjdFV0aWwuaXNOdWxsKHRoaXMuYmFzZVBlcm1pc3Npb25MaXN0KSkge1xuICAgICAgICAgICAgdGhpcy5zZXRGaWx0ZXJTZXNzaW9uU3RvcmFnZSgpO1xuICAgICAgICAgICAgdGhpcy5uYXZpZ2F0ZUJ5VXJsKHRoaXMuZ2V0UGF0aCgpLCBbdGhpcy5nZXRQYXRoKCksICdlZGl0J10sIHRydWUpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaWYgKFN0cmluZ1V0aWwuaXNFbXB0eShwZXJtaXNzaW9uKSAmJiAhT2JqZWN0VXRpbC5pc051bGwodGhpcy5iYXNlUGVybWlzc2lvbkxpc3QpKSB7XG4gICAgICAgICAgICAgICAgcGVybWlzc2lvbiA9IHRoaXMuYmFzZVBlcm1pc3Npb25MaXN0LlVQREFURTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICghdGhpcy5oYXNQZXJtaXNzaW9uKHBlcm1pc3Npb24pKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5hZGRXYXJuaW5nTWVzc2FnZShJTkpFQ1RPUi5nZXQoQVBQX01FU1NBR0VTKS5OT1RfUEVSTUlTU0lPTik7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0aGlzLnNldEZpbHRlclNlc3Npb25TdG9yYWdlKCk7XG4gICAgICAgICAgICB0aGlzLm5hdmlnYXRlQnlVcmwodGhpcy5nZXRQYXRoKCksIFt0aGlzLmdldFBhdGgoKSwgJ2VkaXQnLCBpZF0sIHRydWUpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIGRlbGV0ZVJlZ2lzdGVyKGlkPzogR0lQSVV1aWQsIHBlcm1pc3Npb24/OiBzdHJpbmcsIGZldGNoQWdhaW46IGJvb2xlYW4gPSB0cnVlKTogdm9pZCB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBpZCA9IHRoaXMuaGFuZGxlRW50aXR5SWQoaWQpO1xuICAgICAgICAgICAgaWYgKE9iamVjdFV0aWwuaXNOdWxsKGlkKSkge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKFN0cmluZ1V0aWwuaXNFbXB0eShwZXJtaXNzaW9uKSAmJiBPYmplY3RVdGlsLmlzTnVsbCh0aGlzLmJhc2VQZXJtaXNzaW9uTGlzdCkpIHtcbiAgICAgICAgICAgICAgICB0aGlzLl9kZWxldGVSZWdpc3RlcihpZCwgZmV0Y2hBZ2Fpbik7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGlmIChTdHJpbmdVdGlsLmlzRW1wdHkocGVybWlzc2lvbikgJiYgIU9iamVjdFV0aWwuaXNOdWxsKHRoaXMuYmFzZVBlcm1pc3Npb25MaXN0KSkge1xuICAgICAgICAgICAgICAgICAgICBwZXJtaXNzaW9uID0gdGhpcy5iYXNlUGVybWlzc2lvbkxpc3QuREVMRVRFO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAoIXRoaXMuaGFzUGVybWlzc2lvbihwZXJtaXNzaW9uKSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmFkZFdhcm5pbmdNZXNzYWdlKElOSkVDVE9SLmdldChBUFBfTUVTU0FHRVMpLk5PVF9QRVJNSVNTSU9OKTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHRoaXMuX2RlbGV0ZVJlZ2lzdGVyKGlkLCBmZXRjaEFnYWluKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XG4gICAgICAgICAgICBpZiAodGhpcy5pc0xpc3RpbmcoKSkge1xuICAgICAgICAgICAgICAgIHRoaXMuY2xlYXIoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihlKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBASW50ZXJuYWwgKi9cbiAgICBwcml2YXRlIF9kZWxldGVSZWdpc3RlcihpZDogR0lQSVV1aWQsIGZldGNoQWdhaW46IGJvb2xlYW4gPSB0cnVlKTogdm9pZCB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICB0aGlzLmJhc2VTZXJ2aWNlLmNvbmZpcm1hdGlvblNlcnZpY2UuY29uZmlybSh7XG4gICAgICAgICAgICAgICAgdGl0bGU6ICdDb25maXJtYcOnw6NvJyxcbiAgICAgICAgICAgICAgICBtZXNzYWdlOiBJTkpFQ1RPUi5nZXQoQVBQX01FU1NBR0VTKS5ERUxFVEVfQ09ORklSTUFUSU9OLFxuICAgICAgICAgICAgICAgIGFjY2VwdDogKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnNldEZpbHRlclNlc3Npb25TdG9yYWdlKCk7XG5cbiAgICAgICAgICAgICAgICAgICAgdGhpcy5sb2FkaW5nID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5wYWdlID0gdGhpcy5uZXdQYWdlKCk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMucHJlRGVsZXRlKGlkKTtcblxuICAgICAgICAgICAgICAgICAgICB0aGlzLmFic3RyYWN0Q3J1ZFNlcnZpY2UuZGVsZXRlPFRFbnRpdHk+KGlkKS50b1Byb21pc2UoKS50aGVuKCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChmZXRjaEFnYWluKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5maW5kQWxsKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuYWRkU3VjY2Vzc01lc3NhZ2UoSU5KRUNUT1IuZ2V0KEFQUF9NRVNTQUdFUykuU1VDQ0VTUyk7XG4gICAgICAgICAgICAgICAgICAgIH0sIGVycm9yID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihlcnJvcik7XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihlKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBkZWxldGVBbGxSZWdpc3RlcihpZExpc3Q/OiBHSVBJVXVpZFtdLCBwZXJtaXNzaW9uPzogc3RyaW5nLCBmZXRjaEFnYWluOiBib29sZWFuID0gdHJ1ZSk6IHZvaWQge1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgaWRMaXN0ID0gdGhpcy5oYW5kbGVFbnRpdHlJZExpc3QoaWRMaXN0KTtcbiAgICAgICAgICAgIGlmIChPYmplY3RVdGlsLmlzTnVsbChpZExpc3QpIHx8IEFycmF5VXRpbC5pc0VtcHR5KGlkTGlzdCkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChTdHJpbmdVdGlsLmlzRW1wdHkocGVybWlzc2lvbikgJiYgT2JqZWN0VXRpbC5pc051bGwodGhpcy5iYXNlUGVybWlzc2lvbkxpc3QpKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fZGVsZXRlQWxsUmVnaXN0ZXIoaWRMaXN0LCBmZXRjaEFnYWluKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgaWYgKFN0cmluZ1V0aWwuaXNFbXB0eShwZXJtaXNzaW9uKSAmJiAhT2JqZWN0VXRpbC5pc051bGwodGhpcy5iYXNlUGVybWlzc2lvbkxpc3QpKSB7XG4gICAgICAgICAgICAgICAgICAgIHBlcm1pc3Npb24gPSB0aGlzLmJhc2VQZXJtaXNzaW9uTGlzdC5ERUxFVEU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmICghdGhpcy5oYXNQZXJtaXNzaW9uKHBlcm1pc3Npb24pKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuYWRkV2FybmluZ01lc3NhZ2UoSU5KRUNUT1IuZ2V0KEFQUF9NRVNTQUdFUykuTk9UX1BFUk1JU1NJT04pO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgdGhpcy5fZGVsZXRlQWxsUmVnaXN0ZXIoaWRMaXN0LCBmZXRjaEFnYWluKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XG4gICAgICAgICAgICBpZiAodGhpcy5pc0xpc3RpbmcoKSkge1xuICAgICAgICAgICAgICAgIHRoaXMuY2xlYXIoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihlKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBASW50ZXJuYWwgKi9cbiAgICBwcml2YXRlIF9kZWxldGVBbGxSZWdpc3RlcihpZExpc3Q6IEdJUElVdWlkW10sIGZldGNoQWdhaW46IGJvb2xlYW4gPSB0cnVlKTogdm9pZCB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICB0aGlzLmJhc2VTZXJ2aWNlLmNvbmZpcm1hdGlvblNlcnZpY2UuY29uZmlybSh7XG4gICAgICAgICAgICAgICAgdGl0bGU6ICdDb25maXJtYcOnw6NvJyxcbiAgICAgICAgICAgICAgICBtZXNzYWdlOiBJTkpFQ1RPUi5nZXQoQVBQX01FU1NBR0VTKS5ERUxFVEVfQ09ORklSTUFUSU9OLFxuICAgICAgICAgICAgICAgIGFjY2VwdDogKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnNldEZpbHRlclNlc3Npb25TdG9yYWdlKCk7XG5cbiAgICAgICAgICAgICAgICAgICAgdGhpcy5sb2FkaW5nID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5wYWdlID0gdGhpcy5uZXdQYWdlKCk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMucHJlRGVsZXRlKCk7XG5cbiAgICAgICAgICAgICAgICAgICAgdGhpcy5hYnN0cmFjdENydWRTZXJ2aWNlLmRlbGV0ZUFsbChpZExpc3QpLnRvUHJvbWlzZSgpLnRoZW4oKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGZldGNoQWdhaW4pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmZpbmRBbGwoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5hZGRTdWNjZXNzTWVzc2FnZShJTkpFQ1RPUi5nZXQoQVBQX01FU1NBR0VTKS5TVUNDRVNTKTtcbiAgICAgICAgICAgICAgICAgICAgfSwgZXJyb3IgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGVycm9yKTtcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGUpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIHZpZXdSZWdpc3RlcihpZD86IEdJUElVdWlkLCBwZXJtaXNzaW9uPzogc3RyaW5nKTogdm9pZCB7XG4gICAgICAgIGlkID0gdGhpcy5oYW5kbGVFbnRpdHlJZChpZCk7XG4gICAgICAgIGlmIChPYmplY3RVdGlsLmlzTnVsbChpZCkpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChTdHJpbmdVdGlsLmlzRW1wdHkocGVybWlzc2lvbikgJiYgT2JqZWN0VXRpbC5pc051bGwodGhpcy5iYXNlUGVybWlzc2lvbkxpc3QpKSB7XG4gICAgICAgICAgICB0aGlzLnNldEZpbHRlclNlc3Npb25TdG9yYWdlKCk7XG4gICAgICAgICAgICB0aGlzLm5hdmlnYXRlQnlVcmwodGhpcy5nZXRQYXRoKCksIFt0aGlzLmdldFBhdGgoKSwgJ3ZpZXcnLCBpZF0sIHRydWUpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaWYgKFN0cmluZ1V0aWwuaXNFbXB0eShwZXJtaXNzaW9uKSAmJiAhT2JqZWN0VXRpbC5pc051bGwodGhpcy5iYXNlUGVybWlzc2lvbkxpc3QpKSB7XG4gICAgICAgICAgICAgICAgcGVybWlzc2lvbiA9IHRoaXMuYmFzZVBlcm1pc3Npb25MaXN0LlJFQUQ7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoIXRoaXMuaGFzUGVybWlzc2lvbihwZXJtaXNzaW9uKSkge1xuICAgICAgICAgICAgICAgIHRoaXMuYWRkV2FybmluZ01lc3NhZ2UoSU5KRUNUT1IuZ2V0KEFQUF9NRVNTQUdFUykuTk9UX1BFUk1JU1NJT04pO1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdGhpcy5zZXRGaWx0ZXJTZXNzaW9uU3RvcmFnZSgpO1xuICAgICAgICAgICAgdGhpcy5uYXZpZ2F0ZUJ5VXJsKHRoaXMuZ2V0UGF0aCgpLCBbdGhpcy5nZXRQYXRoKCksICd2aWV3JywgaWRdLCB0cnVlKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBlZGl0T3JWaWV3UmVnaXN0ZXIoaWQ6IEdJUElVdWlkLCBwZXJtaXNzaW9uOiBzdHJpbmcpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuaGFzUGVybWlzc2lvbihwZXJtaXNzaW9uKSkge1xuICAgICAgICAgICAgdGhpcy5lZGl0UmVnaXN0ZXIoaWQsIHBlcm1pc3Npb24pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy52aWV3UmVnaXN0ZXIoaWQsIHBlcm1pc3Npb24pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIGVuYWJsZU9yRGlzYWJsZVJlZ2lzdGVyKGFjdGlvbjogJ0RJU0FCTEUnIHwgJ0VOQUJMRScsIGlkPzogR0lQSVV1aWQsIHBlcm1pc3Npb24/OiBzdHJpbmcsIGZldGNoQWdhaW46IGJvb2xlYW4gPSB0cnVlKTogdm9pZCB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBpZCA9IHRoaXMuaGFuZGxlRW50aXR5SWQoaWQpO1xuICAgICAgICAgICAgaWYgKE9iamVjdFV0aWwuaXNOdWxsKGlkKSkge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKFN0cmluZ1V0aWwuaXNFbXB0eShwZXJtaXNzaW9uKSAmJiBPYmplY3RVdGlsLmlzTnVsbCh0aGlzLmJhc2VQZXJtaXNzaW9uTGlzdCkpIHtcbiAgICAgICAgICAgICAgICB0aGlzLl9lbmFibGVPckRpc2FibGVSZWdpc3RlcihhY3Rpb24sIGlkLCBmZXRjaEFnYWluKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgaWYgKFN0cmluZ1V0aWwuaXNFbXB0eShwZXJtaXNzaW9uKSAmJiAhT2JqZWN0VXRpbC5pc051bGwodGhpcy5iYXNlUGVybWlzc2lvbkxpc3QpKSB7XG4gICAgICAgICAgICAgICAgICAgIHBlcm1pc3Npb24gPSB0aGlzLmJhc2VQZXJtaXNzaW9uTGlzdC5VUERBVEU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmICghdGhpcy5oYXNQZXJtaXNzaW9uKHBlcm1pc3Npb24pKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuYWRkV2FybmluZ01lc3NhZ2UoSU5KRUNUT1IuZ2V0KEFQUF9NRVNTQUdFUykuTk9UX1BFUk1JU1NJT04pO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgdGhpcy5fZW5hYmxlT3JEaXNhYmxlUmVnaXN0ZXIoYWN0aW9uLCBpZCwgZmV0Y2hBZ2Fpbik7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xuICAgICAgICAgICAgaWYgKHRoaXMuaXNMaXN0aW5nKCkpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmNsZWFyKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoZSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogQEludGVybmFsICovXG4gICAgcHJpdmF0ZSBfZW5hYmxlT3JEaXNhYmxlUmVnaXN0ZXIoYWN0aW9uOiAnRElTQUJMRScgfCAnRU5BQkxFJywgaWQ6IEdJUElVdWlkLCBmZXRjaEFnYWluOiBib29sZWFuID0gdHJ1ZSk6IHZvaWQge1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgdGhpcy5iYXNlU2VydmljZS5jb25maXJtYXRpb25TZXJ2aWNlLmNvbmZpcm0oe1xuICAgICAgICAgICAgICAgIHRpdGxlOiAnQ29uZmlybWHDp8OjbycsXG4gICAgICAgICAgICAgICAgbWVzc2FnZTogYERlc2VqYSByZWFsbWVudGUgJHsoYWN0aW9uID09PSAnRElTQUJMRScpID8gJ2luYXRpdmFyJyA6ICdhdGl2YXInfSBlc3RlIHJlZ2lzdHJvP2AsXG4gICAgICAgICAgICAgICAgYWNjZXB0OiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0RmlsdGVyU2Vzc2lvblN0b3JhZ2UoKTtcblxuICAgICAgICAgICAgICAgICAgICB0aGlzLmxvYWRpbmcgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnBhZ2UgPSB0aGlzLm5ld1BhZ2UoKTtcblxuICAgICAgICAgICAgICAgICAgICB0aGlzLmFic3RyYWN0Q3J1ZFNlcnZpY2UuZW5hYmxlT3JEaXNhYmxlKGlkLCBhY3Rpb24pLnRvUHJvbWlzZSgpLnRoZW4oKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGZldGNoQWdhaW4pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmZpbmRBbGwoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5hZGRTdWNjZXNzTWVzc2FnZShJTkpFQ1RPUi5nZXQoQVBQX01FU1NBR0VTKS5TVUNDRVNTKTtcbiAgICAgICAgICAgICAgICAgICAgfSwgZXJyb3IgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGVycm9yKTtcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGUpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIGVuYWJsZUFuZERpc2FibGVBbGxSZWdpc3RlcihhY3Rpb246ICdESVNBQkxFJyB8ICdFTkFCTEUnLCBpZExpc3Q/OiBHSVBJVXVpZFtdLCBwZXJtaXNzaW9uPzogc3RyaW5nLCBmZXRjaEFnYWluOiBib29sZWFuID0gdHJ1ZSk6IHZvaWQge1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgaWRMaXN0ID0gdGhpcy5oYW5kbGVFbnRpdHlJZExpc3QoaWRMaXN0KTtcbiAgICAgICAgICAgIGlmIChPYmplY3RVdGlsLmlzTnVsbChpZExpc3QpIHx8IEFycmF5VXRpbC5pc0VtcHR5KGlkTGlzdCkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChTdHJpbmdVdGlsLmlzRW1wdHkocGVybWlzc2lvbikgJiYgT2JqZWN0VXRpbC5pc051bGwodGhpcy5iYXNlUGVybWlzc2lvbkxpc3QpKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fZW5hYmxlQW5kRGlzYWJsZUFsbFJlZ2lzdGVyKGFjdGlvbiwgaWRMaXN0LCBmZXRjaEFnYWluKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgaWYgKFN0cmluZ1V0aWwuaXNFbXB0eShwZXJtaXNzaW9uKSAmJiAhT2JqZWN0VXRpbC5pc051bGwodGhpcy5iYXNlUGVybWlzc2lvbkxpc3QpKSB7XG4gICAgICAgICAgICAgICAgICAgIHBlcm1pc3Npb24gPSB0aGlzLmJhc2VQZXJtaXNzaW9uTGlzdC5VUERBVEU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmICghdGhpcy5oYXNQZXJtaXNzaW9uKHBlcm1pc3Npb24pKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuYWRkV2FybmluZ01lc3NhZ2UoSU5KRUNUT1IuZ2V0KEFQUF9NRVNTQUdFUykuTk9UX1BFUk1JU1NJT04pO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgdGhpcy5fZW5hYmxlQW5kRGlzYWJsZUFsbFJlZ2lzdGVyKGFjdGlvbiwgaWRMaXN0LCBmZXRjaEFnYWluKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XG4gICAgICAgICAgICBpZiAodGhpcy5pc0xpc3RpbmcoKSkge1xuICAgICAgICAgICAgICAgIHRoaXMuY2xlYXIoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihlKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBASW50ZXJuYWwgKi9cbiAgICBwcml2YXRlIF9lbmFibGVBbmREaXNhYmxlQWxsUmVnaXN0ZXIoYWN0aW9uOiAnRElTQUJMRScgfCAnRU5BQkxFJywgaWRMaXN0OiBHSVBJVXVpZFtdLCBmZXRjaEFnYWluOiBib29sZWFuID0gdHJ1ZSk6IHZvaWQge1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgdGhpcy5iYXNlU2VydmljZS5jb25maXJtYXRpb25TZXJ2aWNlLmNvbmZpcm0oe1xuICAgICAgICAgICAgICAgIHRpdGxlOiAnQ29uZmlybWHDp8OjbycsXG4gICAgICAgICAgICAgICAgbWVzc2FnZTogYERlc2VqYSByZWFsbWVudGUgJHsoYWN0aW9uID09PSAnRElTQUJMRScpID8gJ2luYXRpdmFyJyA6ICdhdGl2YXInfSBvcyByZWdpc3Ryb3Mgc2VsZWNpb25hZG9zP2AsXG4gICAgICAgICAgICAgICAgYWNjZXB0OiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0RmlsdGVyU2Vzc2lvblN0b3JhZ2UoKTtcblxuICAgICAgICAgICAgICAgICAgICB0aGlzLmxvYWRpbmcgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnBhZ2UgPSB0aGlzLm5ld1BhZ2UoKTtcblxuICAgICAgICAgICAgICAgICAgICB0aGlzLmFic3RyYWN0Q3J1ZFNlcnZpY2UuZW5hYmxlT3JEaXNhYmxlQWxsKGlkTGlzdCwgYWN0aW9uKS50b1Byb21pc2UoKS50aGVuKCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChmZXRjaEFnYWluKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5maW5kQWxsKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuYWRkU3VjY2Vzc01lc3NhZ2UoSU5KRUNUT1IuZ2V0KEFQUF9NRVNTQUdFUykuU1VDQ0VTUyk7XG4gICAgICAgICAgICAgICAgICAgIH0sIGVycm9yID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihlcnJvcik7XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihlKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBjbGVhcigpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5iYXNlU2VydmljZS5zZXNzaW9uU3RvcmFnZVNlcnZpY2UucmVtb3ZlKCdmaWx0ZXInKTtcbiAgICAgICAgdGhpcy5wYWdlID0gdGhpcy5uZXdQYWdlKCk7XG4gICAgICAgIHRoaXMuZmlsdGVyID0gdGhpcy5uZXdGaWx0ZXIoKTtcbiAgICAgICAgdGhpcy5jbGVhckFwcGxpZWRGaWx0ZXJzKCk7XG4gICAgICAgIHRoaXMuZmluZEFsbCgpO1xuICAgIH1cblxuICAgIHB1YmxpYyBoYW5kbGVFbnRpdHlJZChpZDogR0lQSVV1aWQpOiBHSVBJVXVpZCB7XG4gICAgICAgIGlmICghdGhpcy5VVUlESXNWYWxpZChpZCkpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignTyBpZGVudGlmaWNhZG9yIGRvIHJlZ2lzdHJvIG7Do28gw6kgdsOhbGlkbycpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKE9iamVjdFV0aWwuaXNOdWxsKGlkKSAmJiAhT2JqZWN0VXRpbC5pc051bGwodGhpcy5wYWdlKSAmJiAhQXJyYXlVdGlsLmlzRW1wdHkodGhpcy5wYWdlLmNvbnRlbnQpKSB7XG4gICAgICAgICAgICBjb25zdCBmaXJzdFNlbGV0ZWN0ZWQgPSB0aGlzLnBhZ2UuY29udGVudC5maWx0ZXIoYyA9PiBjLnNlbGVjdGVkKVswXTtcbiAgICAgICAgICAgIGlmIChPYmplY3RVdGlsLmlzTnVsbChmaXJzdFNlbGV0ZWN0ZWQpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiBmaXJzdFNlbGV0ZWN0ZWQuaWQ7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gaWQ7XG4gICAgfVxuXG4gICAgcHVibGljIGhhbmRsZUVudGl0eUlkTGlzdChpZExpc3Q6IEdJUElVdWlkW10pOiBHSVBJVXVpZFtdIHtcbiAgICAgICAgaWYgKCFBcnJheVV0aWwuaXNFbXB0eShpZExpc3QpKSB7XG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGlkTGlzdC5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgICAgIGlmICghdGhpcy5VVUlESXNWYWxpZChpZExpc3RbaV0pKSB7XG4gICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignTyBpZGVudGlmaWNhZG9yIGRvIHJlZ2lzdHJvIG7Do28gw6kgdsOhbGlkbycpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChBcnJheVV0aWwuaXNFbXB0eShpZExpc3QpICYmICFPYmplY3RVdGlsLmlzTnVsbCh0aGlzLnBhZ2UpICYmICFBcnJheVV0aWwuaXNFbXB0eSh0aGlzLnBhZ2UuY29udGVudCkpIHtcbiAgICAgICAgICAgIGNvbnN0IGxpc3RTZWxlY3RlZCA9IHRoaXMucGFnZS5jb250ZW50LmZpbHRlcihwID0+IHAuc2VsZWN0ZWQpLm1hcChwID0+IHAuaWQpO1xuICAgICAgICAgICAgaWYgKEFycmF5VXRpbC5pc0VtcHR5KGxpc3RTZWxlY3RlZCkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIGxpc3RTZWxlY3RlZDtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBpZExpc3Q7XG4gICAgfVxuXG59XG4iXX0=