monkey-front-core 0.0.603 → 21.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (399) hide show
  1. package/README.md +3 -4
  2. package/fesm2022/monkey-front-core.mjs +5727 -0
  3. package/fesm2022/monkey-front-core.mjs.map +1 -0
  4. package/monkey-front-core-21.0.0.tgz +0 -0
  5. package/package.json +26 -39
  6. package/types/monkey-front-core.d.ts +1763 -0
  7. package/esm2020/lib/components/alerts/alerts.component.mjs +0 -45
  8. package/esm2020/lib/components/alerts/alerts.module.mjs +0 -21
  9. package/esm2020/lib/components/alerts/index.mjs +0 -3
  10. package/esm2020/lib/components/closed-to-maintenance/closed-to-maintenance.component.mjs +0 -29
  11. package/esm2020/lib/components/closed-to-maintenance/closed-to-maintenance.module.mjs +0 -43
  12. package/esm2020/lib/components/closed-to-maintenance/index.mjs +0 -3
  13. package/esm2020/lib/components/currency-config/currency-config.component.mjs +0 -39
  14. package/esm2020/lib/components/currency-config/currency-config.module.mjs +0 -39
  15. package/esm2020/lib/components/currency-config/index.mjs +0 -3
  16. package/esm2020/lib/components/index.mjs +0 -6
  17. package/esm2020/lib/components/progress-bar/index.mjs +0 -4
  18. package/esm2020/lib/components/progress-bar/progress-bar.component.mjs +0 -23
  19. package/esm2020/lib/components/progress-bar/progress-bar.module.mjs +0 -18
  20. package/esm2020/lib/components/progress-bar/progress-bar.service.mjs +0 -50
  21. package/esm2020/lib/components/version-changed/index.mjs +0 -3
  22. package/esm2020/lib/components/version-changed/version-changed.component.mjs +0 -24
  23. package/esm2020/lib/components/version-changed/version-changed.module.mjs +0 -39
  24. package/esm2020/lib/core/decorators/index.mjs +0 -5
  25. package/esm2020/lib/core/decorators/monkeyecx-charts-decorators.mjs +0 -40
  26. package/esm2020/lib/core/decorators/monkeyecx-decorators.mjs +0 -111
  27. package/esm2020/lib/core/decorators/monkeyecx-download-decorators.mjs +0 -26
  28. package/esm2020/lib/core/decorators/monkeyecx-upload-decorators.mjs +0 -26
  29. package/esm2020/lib/core/directives/index.mjs +0 -14
  30. package/esm2020/lib/core/directives/monkeyecx-directives-module.mjs +0 -78
  31. package/esm2020/lib/core/directives/monkeyecx-drag-drop.mjs +0 -57
  32. package/esm2020/lib/core/directives/monkeyecx-feature-by-program-directive.mjs +0 -54
  33. package/esm2020/lib/core/directives/monkeyecx-feature-directive.mjs +0 -68
  34. package/esm2020/lib/core/directives/monkeyecx-format-currency.mjs +0 -44
  35. package/esm2020/lib/core/directives/monkeyecx-format-upper.mjs +0 -67
  36. package/esm2020/lib/core/directives/monkeyecx-loading.mjs +0 -48
  37. package/esm2020/lib/core/directives/monkeyecx-only-alpha-numeric-directive.mjs +0 -28
  38. package/esm2020/lib/core/directives/monkeyecx-only-number-directive.mjs +0 -28
  39. package/esm2020/lib/core/directives/monkeyecx-popover-options.directive.mjs +0 -39
  40. package/esm2020/lib/core/directives/monkeyecx-popover.directive.mjs +0 -212
  41. package/esm2020/lib/core/directives/monkeyecx-security-directive.mjs +0 -75
  42. package/esm2020/lib/core/directives/monkeyecx-tooltip-directive.mjs +0 -123
  43. package/esm2020/lib/core/index.mjs +0 -11
  44. package/esm2020/lib/core/injectors/index.mjs +0 -8
  45. package/esm2020/lib/core/interceptors/index.mjs +0 -6
  46. package/esm2020/lib/core/interceptors/monkeyecx-http-config-error.interceptor.mjs +0 -49
  47. package/esm2020/lib/core/interceptors/monkeyecx-http-config-header.interceptor.mjs +0 -59
  48. package/esm2020/lib/core/interceptors/monkeyecx-http-config-interceptor.module.mjs +0 -47
  49. package/esm2020/lib/core/interceptors/monkeyecx-http-config-loading-in-progress.interceptor.mjs +0 -43
  50. package/esm2020/lib/core/interceptors/monkeyecx-http-config-queue.interceptor.mjs +0 -37
  51. package/esm2020/lib/core/interfaces/index.mjs +0 -37
  52. package/esm2020/lib/core/interfaces/monkeyecx-auth-credentials.mjs +0 -2
  53. package/esm2020/lib/core/interfaces/monkeyecx-company-pendencies.mjs +0 -2
  54. package/esm2020/lib/core/interfaces/monkeyecx-company.mjs +0 -2
  55. package/esm2020/lib/core/interfaces/monkeyecx-config-bootstrap.mjs +0 -2
  56. package/esm2020/lib/core/interfaces/monkeyecx-config.mjs +0 -2
  57. package/esm2020/lib/core/interfaces/monkeyecx-country-security.mjs +0 -2
  58. package/esm2020/lib/core/interfaces/monkeyecx-embedded.mjs +0 -2
  59. package/esm2020/lib/core/interfaces/monkeyecx-error-response.mjs +0 -2
  60. package/esm2020/lib/core/interfaces/monkeyecx-filter.mjs +0 -2
  61. package/esm2020/lib/core/interfaces/monkeyecx-group.mjs +0 -2
  62. package/esm2020/lib/core/interfaces/monkeyecx-handled-error-response.mjs +0 -2
  63. package/esm2020/lib/core/interfaces/monkeyecx-header-credentials.mjs +0 -2
  64. package/esm2020/lib/core/interfaces/monkeyecx-intercom-options.mjs +0 -2
  65. package/esm2020/lib/core/interfaces/monkeyecx-interface.mjs +0 -2
  66. package/esm2020/lib/core/interfaces/monkeyecx-me-credentials.mjs +0 -2
  67. package/esm2020/lib/core/interfaces/monkeyecx-navigation.mjs +0 -2
  68. package/esm2020/lib/core/interfaces/monkeyecx-pagination.mjs +0 -2
  69. package/esm2020/lib/core/interfaces/monkeyecx-program.mjs +0 -2
  70. package/esm2020/lib/core/interfaces/monkeyecx-releases.mjs +0 -2
  71. package/esm2020/lib/core/interfaces/monkeyecx-request-in-progress.mjs +0 -2
  72. package/esm2020/lib/core/interfaces/monkeyecx-request-paged.mjs +0 -2
  73. package/esm2020/lib/core/interfaces/monkeyecx-resolver.mjs +0 -2
  74. package/esm2020/lib/core/interfaces/monkeyecx-response-links.mjs +0 -2
  75. package/esm2020/lib/core/interfaces/monkeyecx-response-paged.mjs +0 -2
  76. package/esm2020/lib/core/interfaces/monkeyecx-saved-state.mjs +0 -2
  77. package/esm2020/lib/core/interfaces/monkeyecx-scroll-options.mjs +0 -2
  78. package/esm2020/lib/core/interfaces/monkeyecx-service-credentials.mjs +0 -2
  79. package/esm2020/lib/core/interfaces/monkeyecx-storage.mjs +0 -2
  80. package/esm2020/lib/core/interfaces/monkeyecx-store.mjs +0 -2
  81. package/esm2020/lib/core/interfaces/monkeyecx-support-options.mjs +0 -2
  82. package/esm2020/lib/core/interfaces/monkeyecx-token-credentials.mjs +0 -2
  83. package/esm2020/lib/core/interfaces/monkeyecx-translate-options.mjs +0 -2
  84. package/esm2020/lib/core/interfaces/request-download/index.mjs +0 -4
  85. package/esm2020/lib/core/interfaces/request-download/monkeyecx-request-download.mjs +0 -2
  86. package/esm2020/lib/core/interfaces/request-download/monkeyecx-request-downloaded.mjs +0 -2
  87. package/esm2020/lib/core/interfaces/request-download/monkeyecx-request-item-download.mjs +0 -2
  88. package/esm2020/lib/core/interfaces/request-queue/index.mjs +0 -4
  89. package/esm2020/lib/core/interfaces/request-queue/monkeyecx-request-item-queue.mjs +0 -2
  90. package/esm2020/lib/core/interfaces/request-queue/monkeyecx-request-progress-queue.mjs +0 -2
  91. package/esm2020/lib/core/interfaces/request-queue/monkeyecx-request-queue.mjs +0 -2
  92. package/esm2020/lib/core/interfaces/request-upload/index.mjs +0 -3
  93. package/esm2020/lib/core/interfaces/request-upload/monkeyecx-request-item-upload.mjs +0 -2
  94. package/esm2020/lib/core/interfaces/request-upload/monkeyecx-request-upload.mjs +0 -2
  95. package/esm2020/lib/core/interfaces/schedules/index.mjs +0 -2
  96. package/esm2020/lib/core/interfaces/schedules/monkeyecx-request-schedule.mjs +0 -2
  97. package/esm2020/lib/core/model/index.mjs +0 -3
  98. package/esm2020/lib/core/model/monkeyecx-links.model.mjs +0 -8
  99. package/esm2020/lib/core/model/monkeyecx-model.mjs +0 -26
  100. package/esm2020/lib/core/pipes/index.mjs +0 -24
  101. package/esm2020/lib/core/pipes/monkeyecx-blob-secure.mjs +0 -26
  102. package/esm2020/lib/core/pipes/monkeyecx-currency-code.mjs +0 -30
  103. package/esm2020/lib/core/pipes/monkeyecx-display-first-name.mjs +0 -19
  104. package/esm2020/lib/core/pipes/monkeyecx-display-initials.mjs +0 -21
  105. package/esm2020/lib/core/pipes/monkeyecx-display-support-phone.mjs +0 -33
  106. package/esm2020/lib/core/pipes/monkeyecx-format-address.mjs +0 -20
  107. package/esm2020/lib/core/pipes/monkeyecx-format-beautify-json.mjs +0 -38
  108. package/esm2020/lib/core/pipes/monkeyecx-format-currency.mjs +0 -48
  109. package/esm2020/lib/core/pipes/monkeyecx-format-date-group.mjs +0 -45
  110. package/esm2020/lib/core/pipes/monkeyecx-format-date-timelapse.mjs +0 -32
  111. package/esm2020/lib/core/pipes/monkeyecx-format-date-unix-timelapse.mjs +0 -36
  112. package/esm2020/lib/core/pipes/monkeyecx-format-date.mjs +0 -30
  113. package/esm2020/lib/core/pipes/monkeyecx-format-document.mjs +0 -20
  114. package/esm2020/lib/core/pipes/monkeyecx-format-number.mjs +0 -20
  115. package/esm2020/lib/core/pipes/monkeyecx-format-phone.mjs +0 -42
  116. package/esm2020/lib/core/pipes/monkeyecx-format-size.mjs +0 -20
  117. package/esm2020/lib/core/pipes/monkeyecx-format-tax.mjs +0 -23
  118. package/esm2020/lib/core/pipes/monkeyecx-format-type-document.mjs +0 -19
  119. package/esm2020/lib/core/pipes/monkeyecx-format-value.mjs +0 -19
  120. package/esm2020/lib/core/pipes/monkeyecx-format-zipcode.mjs +0 -19
  121. package/esm2020/lib/core/pipes/monkeyecx-pipes.module.mjs +0 -127
  122. package/esm2020/lib/core/pipes/monkeyecx-text-truncate.mjs +0 -23
  123. package/esm2020/lib/core/pipes/monkeyecx-truncate-qtd.mjs +0 -16
  124. package/esm2020/lib/core/services/alerts/index.mjs +0 -2
  125. package/esm2020/lib/core/services/alerts/monkeyecx-alerts.service.mjs +0 -88
  126. package/esm2020/lib/core/services/auth/index.mjs +0 -6
  127. package/esm2020/lib/core/services/auth/monkeyecx-auth-guard-company.service.mjs +0 -28
  128. package/esm2020/lib/core/services/auth/monkeyecx-auth-guard-login.service.mjs +0 -27
  129. package/esm2020/lib/core/services/auth/monkeyecx-auth-guard-role.service.mjs +0 -77
  130. package/esm2020/lib/core/services/auth/monkeyecx-auth-guard.service.mjs +0 -26
  131. package/esm2020/lib/core/services/auth/monkeyecx-authentication.service.mjs +0 -79
  132. package/esm2020/lib/core/services/commons/index.mjs +0 -4
  133. package/esm2020/lib/core/services/commons/monkeyecx-commons-resolve-base.service.mjs +0 -109
  134. package/esm2020/lib/core/services/commons/monkeyecx-commons-resolve.service.mjs +0 -127
  135. package/esm2020/lib/core/services/commons/monkeyecx-commons.service.mjs +0 -362
  136. package/esm2020/lib/core/services/config/monkeyecx-alerts-config.service.mjs +0 -43
  137. package/esm2020/lib/core/services/config/monkeyecx-config.module.mjs +0 -28
  138. package/esm2020/lib/core/services/config/monkeyecx-config.service.mjs +0 -107
  139. package/esm2020/lib/core/services/config/monkeyecx-currency-config.service.mjs +0 -84
  140. package/esm2020/lib/core/services/config/monkeyecx-error-config.service.mjs +0 -85
  141. package/esm2020/lib/core/services/config/monkeyecx-feature-toggle.service.mjs +0 -77
  142. package/esm2020/lib/core/services/config/monkeyecx-gtm-config.service.mjs +0 -47
  143. package/esm2020/lib/core/services/config/monkeyecx-i18n-config.service.mjs +0 -162
  144. package/esm2020/lib/core/services/config/monkeyecx-logs-config.service.mjs +0 -84
  145. package/esm2020/lib/core/services/config/monkeyecx-maintenance-config.service.mjs +0 -37
  146. package/esm2020/lib/core/services/config/monkeyecx-security-console-config.service.mjs +0 -48
  147. package/esm2020/lib/core/services/config/monkeyecx-service-worker-config.service.mjs +0 -55
  148. package/esm2020/lib/core/services/error/index.mjs +0 -5
  149. package/esm2020/lib/core/services/error/monkeyecx-error-handling.module.mjs +0 -27
  150. package/esm2020/lib/core/services/error/monkeyecx-error-handling.service.mjs +0 -37
  151. package/esm2020/lib/core/services/error/monkeyecx-http-error-handling.service.mjs +0 -149
  152. package/esm2020/lib/core/services/error/monkeyecx-others-errors-handling.service.mjs +0 -49
  153. package/esm2020/lib/core/services/index.mjs +0 -27
  154. package/esm2020/lib/core/services/l/index.mjs +0 -2
  155. package/esm2020/lib/core/services/l/l.service.mjs +0 -45
  156. package/esm2020/lib/core/services/logged/index.mjs +0 -2
  157. package/esm2020/lib/core/services/logged/monkeyecx-logged-handling.service.mjs +0 -40
  158. package/esm2020/lib/core/services/monkeyecx-handling.service.mjs +0 -50
  159. package/esm2020/lib/core/services/monkeyecx-service.service.mjs +0 -109
  160. package/esm2020/lib/core/services/pagination/index.mjs +0 -2
  161. package/esm2020/lib/core/services/pagination/monkeyecx-pagination.service.mjs +0 -29
  162. package/esm2020/lib/core/services/request-download/index.mjs +0 -3
  163. package/esm2020/lib/core/services/request-download/monkeyecx-request-download-handling.service.mjs +0 -93
  164. package/esm2020/lib/core/services/request-download/monkeyecx-request-downloaded-handling.service.mjs +0 -61
  165. package/esm2020/lib/core/services/request-paged/index.mjs +0 -2
  166. package/esm2020/lib/core/services/request-paged/monkeyecx-request-request-paged-handling.mjs +0 -42
  167. package/esm2020/lib/core/services/request-queue/index.mjs +0 -3
  168. package/esm2020/lib/core/services/request-queue/monkeyecx-request-queue-handling.service.mjs +0 -114
  169. package/esm2020/lib/core/services/request-queue/monkeyecx-request-queue-modal-handling.service.mjs +0 -119
  170. package/esm2020/lib/core/services/routes/index.mjs +0 -2
  171. package/esm2020/lib/core/services/routes/monkeyecx-dicovery-params.service.mjs +0 -54
  172. package/esm2020/lib/core/services/schedules/index.mjs +0 -2
  173. package/esm2020/lib/core/services/schedules/monkeyecx-request-schedule.service.mjs +0 -188
  174. package/esm2020/lib/core/services/storage/index.mjs +0 -3
  175. package/esm2020/lib/core/services/storage/monkeyecx-cookie-storage.service.mjs +0 -32
  176. package/esm2020/lib/core/services/storage/monkeyecx-token-storage.service.mjs +0 -237
  177. package/esm2020/lib/core/services/store/index.mjs +0 -5
  178. package/esm2020/lib/core/services/store/monkeyecx-store-base.service.mjs +0 -174
  179. package/esm2020/lib/core/services/store/monkeyecx-store.actions.mjs +0 -26
  180. package/esm2020/lib/core/services/store/monkeyecx-store.selector.mjs +0 -87
  181. package/esm2020/lib/core/services/store/monkeyecx-store.service.mjs +0 -195
  182. package/esm2020/lib/core/specification-search/index.mjs +0 -2
  183. package/esm2020/lib/core/specification-search/monkeyecx-specification-search.mjs +0 -108
  184. package/esm2020/lib/core/utils/decorators-utils.mjs +0 -40
  185. package/esm2020/lib/core/utils/index.mjs +0 -8
  186. package/esm2020/lib/core/utils/statics.mjs +0 -47
  187. package/esm2020/lib/core/utils/utils.mjs +0 -469
  188. package/esm2020/lib/core/utils/validate-utils.mjs +0 -219
  189. package/esm2020/lib/core/utils/validators.mjs +0 -327
  190. package/esm2020/lib/monkey-front-core.module.mjs +0 -71
  191. package/esm2020/lib/store/actions/index.mjs +0 -2
  192. package/esm2020/lib/store/actions/monkeyecx-storage.actions.mjs +0 -8
  193. package/esm2020/lib/store/index.mjs +0 -4
  194. package/esm2020/lib/store/reducers/index.mjs +0 -3
  195. package/esm2020/lib/store/reducers/monkeyecx-seeder.reducer.mjs +0 -53
  196. package/esm2020/lib/store/reducers/monkeyecx-storage.reducer.mjs +0 -40
  197. package/esm2020/lib/store/selectors/index.mjs +0 -2
  198. package/esm2020/lib/store/selectors/monkeyecx-storage.selector.mjs +0 -17
  199. package/esm2020/monkey-front-core.mjs +0 -5
  200. package/esm2020/public-api.mjs +0 -8
  201. package/fesm2015/monkey-front-core.mjs +0 -7239
  202. package/fesm2015/monkey-front-core.mjs.map +0 -1
  203. package/fesm2020/monkey-front-core.mjs +0 -7249
  204. package/fesm2020/monkey-front-core.mjs.map +0 -1
  205. package/lib/components/alerts/alerts.component.d.ts +0 -22
  206. package/lib/components/alerts/alerts.module.d.ts +0 -10
  207. package/lib/components/alerts/index.d.ts +0 -2
  208. package/lib/components/closed-to-maintenance/closed-to-maintenance.component.d.ts +0 -13
  209. package/lib/components/closed-to-maintenance/closed-to-maintenance.module.d.ts +0 -11
  210. package/lib/components/closed-to-maintenance/index.d.ts +0 -2
  211. package/lib/components/currency-config/currency-config.component.d.ts +0 -17
  212. package/lib/components/currency-config/currency-config.module.d.ts +0 -10
  213. package/lib/components/currency-config/index.d.ts +0 -2
  214. package/lib/components/index.d.ts +0 -5
  215. package/lib/components/progress-bar/index.d.ts +0 -3
  216. package/lib/components/progress-bar/progress-bar.component.d.ts +0 -11
  217. package/lib/components/progress-bar/progress-bar.module.d.ts +0 -8
  218. package/lib/components/progress-bar/progress-bar.service.d.ts +0 -14
  219. package/lib/components/version-changed/index.d.ts +0 -2
  220. package/lib/components/version-changed/version-changed.component.d.ts +0 -9
  221. package/lib/components/version-changed/version-changed.module.d.ts +0 -10
  222. package/lib/core/decorators/index.d.ts +0 -4
  223. package/lib/core/decorators/monkeyecx-charts-decorators.d.ts +0 -1
  224. package/lib/core/decorators/monkeyecx-decorators.d.ts +0 -7
  225. package/lib/core/decorators/monkeyecx-download-decorators.d.ts +0 -2
  226. package/lib/core/decorators/monkeyecx-upload-decorators.d.ts +0 -2
  227. package/lib/core/directives/index.d.ts +0 -13
  228. package/lib/core/directives/monkeyecx-directives-module.d.ts +0 -20
  229. package/lib/core/directives/monkeyecx-drag-drop.d.ts +0 -12
  230. package/lib/core/directives/monkeyecx-feature-by-program-directive.d.ts +0 -16
  231. package/lib/core/directives/monkeyecx-feature-directive.d.ts +0 -17
  232. package/lib/core/directives/monkeyecx-format-currency.d.ts +0 -16
  233. package/lib/core/directives/monkeyecx-format-upper.d.ts +0 -18
  234. package/lib/core/directives/monkeyecx-loading.d.ts +0 -16
  235. package/lib/core/directives/monkeyecx-only-alpha-numeric-directive.d.ts +0 -9
  236. package/lib/core/directives/monkeyecx-only-number-directive.d.ts +0 -9
  237. package/lib/core/directives/monkeyecx-popover-options.directive.d.ts +0 -19
  238. package/lib/core/directives/monkeyecx-popover.directive.d.ts +0 -43
  239. package/lib/core/directives/monkeyecx-security-directive.d.ts +0 -18
  240. package/lib/core/directives/monkeyecx-tooltip-directive.d.ts +0 -23
  241. package/lib/core/index.d.ts +0 -10
  242. package/lib/core/injectors/index.d.ts +0 -7
  243. package/lib/core/interceptors/index.d.ts +0 -5
  244. package/lib/core/interceptors/monkeyecx-http-config-error.interceptor.d.ts +0 -18
  245. package/lib/core/interceptors/monkeyecx-http-config-header.interceptor.d.ts +0 -16
  246. package/lib/core/interceptors/monkeyecx-http-config-interceptor.module.d.ts +0 -9
  247. package/lib/core/interceptors/monkeyecx-http-config-loading-in-progress.interceptor.d.ts +0 -12
  248. package/lib/core/interceptors/monkeyecx-http-config-queue.interceptor.d.ts +0 -14
  249. package/lib/core/interfaces/index.d.ts +0 -36
  250. package/lib/core/interfaces/monkeyecx-auth-credentials.d.ts +0 -15
  251. package/lib/core/interfaces/monkeyecx-company-pendencies.d.ts +0 -14
  252. package/lib/core/interfaces/monkeyecx-company.d.ts +0 -10
  253. package/lib/core/interfaces/monkeyecx-config-bootstrap.d.ts +0 -14
  254. package/lib/core/interfaces/monkeyecx-config.d.ts +0 -132
  255. package/lib/core/interfaces/monkeyecx-country-security.d.ts +0 -4
  256. package/lib/core/interfaces/monkeyecx-embedded.d.ts +0 -7
  257. package/lib/core/interfaces/monkeyecx-error-response.d.ts +0 -5
  258. package/lib/core/interfaces/monkeyecx-filter.d.ts +0 -42
  259. package/lib/core/interfaces/monkeyecx-group.d.ts +0 -13
  260. package/lib/core/interfaces/monkeyecx-handled-error-response.d.ts +0 -10
  261. package/lib/core/interfaces/monkeyecx-header-credentials.d.ts +0 -4
  262. package/lib/core/interfaces/monkeyecx-intercom-options.d.ts +0 -4
  263. package/lib/core/interfaces/monkeyecx-interface.d.ts +0 -11
  264. package/lib/core/interfaces/monkeyecx-me-credentials.d.ts +0 -20
  265. package/lib/core/interfaces/monkeyecx-navigation.d.ts +0 -30
  266. package/lib/core/interfaces/monkeyecx-pagination.d.ts +0 -26
  267. package/lib/core/interfaces/monkeyecx-program.d.ts +0 -10
  268. package/lib/core/interfaces/monkeyecx-releases.d.ts +0 -9
  269. package/lib/core/interfaces/monkeyecx-request-in-progress.d.ts +0 -3
  270. package/lib/core/interfaces/monkeyecx-request-paged.d.ts +0 -23
  271. package/lib/core/interfaces/monkeyecx-resolver.d.ts +0 -39
  272. package/lib/core/interfaces/monkeyecx-response-links.d.ts +0 -11
  273. package/lib/core/interfaces/monkeyecx-response-paged.d.ts +0 -6
  274. package/lib/core/interfaces/monkeyecx-saved-state.d.ts +0 -5
  275. package/lib/core/interfaces/monkeyecx-scroll-options.d.ts +0 -5
  276. package/lib/core/interfaces/monkeyecx-service-credentials.d.ts +0 -12
  277. package/lib/core/interfaces/monkeyecx-storage.d.ts +0 -35
  278. package/lib/core/interfaces/monkeyecx-store.d.ts +0 -45
  279. package/lib/core/interfaces/monkeyecx-support-options.d.ts +0 -4
  280. package/lib/core/interfaces/monkeyecx-token-credentials.d.ts +0 -30
  281. package/lib/core/interfaces/monkeyecx-translate-options.d.ts +0 -4
  282. package/lib/core/interfaces/request-download/index.d.ts +0 -3
  283. package/lib/core/interfaces/request-download/monkeyecx-request-download.d.ts +0 -10
  284. package/lib/core/interfaces/request-download/monkeyecx-request-downloaded.d.ts +0 -7
  285. package/lib/core/interfaces/request-download/monkeyecx-request-item-download.d.ts +0 -7
  286. package/lib/core/interfaces/request-queue/index.d.ts +0 -3
  287. package/lib/core/interfaces/request-queue/monkeyecx-request-item-queue.d.ts +0 -7
  288. package/lib/core/interfaces/request-queue/monkeyecx-request-progress-queue.d.ts +0 -6
  289. package/lib/core/interfaces/request-queue/monkeyecx-request-queue.d.ts +0 -8
  290. package/lib/core/interfaces/request-upload/index.d.ts +0 -2
  291. package/lib/core/interfaces/request-upload/monkeyecx-request-item-upload.d.ts +0 -5
  292. package/lib/core/interfaces/request-upload/monkeyecx-request-upload.d.ts +0 -10
  293. package/lib/core/interfaces/schedules/index.d.ts +0 -1
  294. package/lib/core/interfaces/schedules/monkeyecx-request-schedule.d.ts +0 -13
  295. package/lib/core/model/index.d.ts +0 -2
  296. package/lib/core/model/monkeyecx-links.model.d.ts +0 -4
  297. package/lib/core/model/monkeyecx-model.d.ts +0 -14
  298. package/lib/core/pipes/index.d.ts +0 -23
  299. package/lib/core/pipes/monkeyecx-blob-secure.d.ts +0 -13
  300. package/lib/core/pipes/monkeyecx-currency-code.d.ts +0 -9
  301. package/lib/core/pipes/monkeyecx-display-first-name.d.ts +0 -7
  302. package/lib/core/pipes/monkeyecx-display-initials.d.ts +0 -7
  303. package/lib/core/pipes/monkeyecx-display-support-phone.d.ts +0 -18
  304. package/lib/core/pipes/monkeyecx-format-address.d.ts +0 -14
  305. package/lib/core/pipes/monkeyecx-format-beautify-json.d.ts +0 -8
  306. package/lib/core/pipes/monkeyecx-format-currency.d.ts +0 -12
  307. package/lib/core/pipes/monkeyecx-format-date-group.d.ts +0 -11
  308. package/lib/core/pipes/monkeyecx-format-date-timelapse.d.ts +0 -7
  309. package/lib/core/pipes/monkeyecx-format-date-unix-timelapse.d.ts +0 -7
  310. package/lib/core/pipes/monkeyecx-format-date.d.ts +0 -12
  311. package/lib/core/pipes/monkeyecx-format-document.d.ts +0 -7
  312. package/lib/core/pipes/monkeyecx-format-number.d.ts +0 -7
  313. package/lib/core/pipes/monkeyecx-format-phone.d.ts +0 -7
  314. package/lib/core/pipes/monkeyecx-format-size.d.ts +0 -7
  315. package/lib/core/pipes/monkeyecx-format-tax.d.ts +0 -7
  316. package/lib/core/pipes/monkeyecx-format-type-document.d.ts +0 -7
  317. package/lib/core/pipes/monkeyecx-format-value.d.ts +0 -7
  318. package/lib/core/pipes/monkeyecx-format-zipcode.d.ts +0 -7
  319. package/lib/core/pipes/monkeyecx-pipes.module.d.ts +0 -28
  320. package/lib/core/pipes/monkeyecx-text-truncate.d.ts +0 -7
  321. package/lib/core/pipes/monkeyecx-truncate-qtd.d.ts +0 -7
  322. package/lib/core/services/alerts/index.d.ts +0 -1
  323. package/lib/core/services/alerts/monkeyecx-alerts.service.d.ts +0 -49
  324. package/lib/core/services/auth/index.d.ts +0 -5
  325. package/lib/core/services/auth/monkeyecx-auth-guard-company.service.d.ts +0 -10
  326. package/lib/core/services/auth/monkeyecx-auth-guard-login.service.d.ts +0 -10
  327. package/lib/core/services/auth/monkeyecx-auth-guard-role.service.d.ts +0 -16
  328. package/lib/core/services/auth/monkeyecx-auth-guard.service.d.ts +0 -10
  329. package/lib/core/services/auth/monkeyecx-authentication.service.d.ts +0 -35
  330. package/lib/core/services/commons/index.d.ts +0 -3
  331. package/lib/core/services/commons/monkeyecx-commons-resolve-base.service.d.ts +0 -46
  332. package/lib/core/services/commons/monkeyecx-commons-resolve.service.d.ts +0 -60
  333. package/lib/core/services/commons/monkeyecx-commons.service.d.ts +0 -120
  334. package/lib/core/services/config/monkeyecx-alerts-config.service.d.ts +0 -11
  335. package/lib/core/services/config/monkeyecx-config.module.d.ts +0 -9
  336. package/lib/core/services/config/monkeyecx-config.service.d.ts +0 -36
  337. package/lib/core/services/config/monkeyecx-currency-config.service.d.ts +0 -15
  338. package/lib/core/services/config/monkeyecx-error-config.service.d.ts +0 -8
  339. package/lib/core/services/config/monkeyecx-feature-toggle.service.d.ts +0 -17
  340. package/lib/core/services/config/monkeyecx-gtm-config.service.d.ts +0 -8
  341. package/lib/core/services/config/monkeyecx-i18n-config.service.d.ts +0 -24
  342. package/lib/core/services/config/monkeyecx-logs-config.service.d.ts +0 -14
  343. package/lib/core/services/config/monkeyecx-maintenance-config.service.d.ts +0 -13
  344. package/lib/core/services/config/monkeyecx-security-console-config.service.d.ts +0 -12
  345. package/lib/core/services/config/monkeyecx-service-worker-config.service.d.ts +0 -16
  346. package/lib/core/services/error/index.d.ts +0 -4
  347. package/lib/core/services/error/monkeyecx-error-handling.module.d.ts +0 -9
  348. package/lib/core/services/error/monkeyecx-error-handling.service.d.ts +0 -9
  349. package/lib/core/services/error/monkeyecx-http-error-handling.service.d.ts +0 -26
  350. package/lib/core/services/error/monkeyecx-others-errors-handling.service.d.ts +0 -11
  351. package/lib/core/services/index.d.ts +0 -26
  352. package/lib/core/services/l/index.d.ts +0 -1
  353. package/lib/core/services/l/l.service.d.ts +0 -11
  354. package/lib/core/services/logged/index.d.ts +0 -1
  355. package/lib/core/services/logged/monkeyecx-logged-handling.service.d.ts +0 -14
  356. package/lib/core/services/monkeyecx-handling.service.d.ts +0 -22
  357. package/lib/core/services/monkeyecx-service.service.d.ts +0 -19
  358. package/lib/core/services/pagination/index.d.ts +0 -1
  359. package/lib/core/services/pagination/monkeyecx-pagination.service.d.ts +0 -9
  360. package/lib/core/services/request-download/index.d.ts +0 -2
  361. package/lib/core/services/request-download/monkeyecx-request-download-handling.service.d.ts +0 -18
  362. package/lib/core/services/request-download/monkeyecx-request-downloaded-handling.service.d.ts +0 -16
  363. package/lib/core/services/request-paged/index.d.ts +0 -1
  364. package/lib/core/services/request-paged/monkeyecx-request-request-paged-handling.d.ts +0 -11
  365. package/lib/core/services/request-queue/index.d.ts +0 -2
  366. package/lib/core/services/request-queue/monkeyecx-request-queue-handling.service.d.ts +0 -21
  367. package/lib/core/services/request-queue/monkeyecx-request-queue-modal-handling.service.d.ts +0 -23
  368. package/lib/core/services/routes/index.d.ts +0 -1
  369. package/lib/core/services/routes/monkeyecx-dicovery-params.service.d.ts +0 -13
  370. package/lib/core/services/schedules/index.d.ts +0 -1
  371. package/lib/core/services/schedules/monkeyecx-request-schedule.service.d.ts +0 -47
  372. package/lib/core/services/storage/index.d.ts +0 -2
  373. package/lib/core/services/storage/monkeyecx-cookie-storage.service.d.ts +0 -11
  374. package/lib/core/services/storage/monkeyecx-token-storage.service.d.ts +0 -30
  375. package/lib/core/services/store/index.d.ts +0 -4
  376. package/lib/core/services/store/monkeyecx-store-base.service.d.ts +0 -47
  377. package/lib/core/services/store/monkeyecx-store.actions.d.ts +0 -42
  378. package/lib/core/services/store/monkeyecx-store.selector.d.ts +0 -32
  379. package/lib/core/services/store/monkeyecx-store.service.d.ts +0 -50
  380. package/lib/core/specification-search/index.d.ts +0 -1
  381. package/lib/core/specification-search/monkeyecx-specification-search.d.ts +0 -20
  382. package/lib/core/utils/decorators-utils.d.ts +0 -5
  383. package/lib/core/utils/index.d.ts +0 -6
  384. package/lib/core/utils/statics.d.ts +0 -36
  385. package/lib/core/utils/utils.d.ts +0 -39
  386. package/lib/core/utils/validate-utils.d.ts +0 -71
  387. package/lib/core/utils/validators.d.ts +0 -43
  388. package/lib/monkey-front-core.module.d.ts +0 -19
  389. package/lib/store/actions/index.d.ts +0 -1
  390. package/lib/store/actions/monkeyecx-storage.actions.d.ts +0 -23
  391. package/lib/store/index.d.ts +0 -3
  392. package/lib/store/reducers/index.d.ts +0 -2
  393. package/lib/store/reducers/monkeyecx-seeder.reducer.d.ts +0 -2
  394. package/lib/store/reducers/monkeyecx-storage.reducer.d.ts +0 -13
  395. package/lib/store/selectors/index.d.ts +0 -1
  396. package/lib/store/selectors/monkeyecx-storage.selector.d.ts +0 -8
  397. package/monkey-front-core-0.0.603.tgz +0 -0
  398. package/monkey-front-core.d.ts +0 -5
  399. package/public-api.d.ts +0 -4
@@ -1,219 +0,0 @@
1
- import * as moment_ from 'moment';
2
- import { MonkeyEcxUtils } from './utils';
3
- const moment = moment_;
4
- export class DateValidator {
5
- static do(control) {
6
- if (!control.parent || !control)
7
- return null;
8
- if (control && control.value) {
9
- const dateFormat = 'MM-DD-YYYY';
10
- if (!moment
11
- .default(moment.default(control.value).format(dateFormat), ['DD/MM/YYYY', 'MM-DD-YYYY', 'YYYY-MM-DD'], true)
12
- .isValid()) {
13
- return {
14
- invalidDate: true
15
- };
16
- }
17
- }
18
- return null;
19
- }
20
- }
21
- export class DocumentValidator {
22
- static do(control) {
23
- if (!control.parent || !control)
24
- return null;
25
- if (control && control.value) {
26
- if (!MonkeyEcxUtils.isCPFCNPJValid(control.value)) {
27
- return {
28
- invalidCpfCnpj: true
29
- };
30
- }
31
- }
32
- return null;
33
- }
34
- }
35
- export class DocumentRutValidator {
36
- static do(control) {
37
- if (!control.parent || !control)
38
- return null;
39
- if (control && control.value) {
40
- if (!MonkeyEcxUtils.isValidRUT(control.value)) {
41
- return {
42
- invalidRut: true
43
- };
44
- }
45
- }
46
- return null;
47
- }
48
- }
49
- export class DocumentRFCValidator {
50
- static do(control) {
51
- if (!control.parent || !control)
52
- return null;
53
- if (control && control.value) {
54
- if (!MonkeyEcxUtils.isValidRFC(control.value)) {
55
- return {
56
- invalidRfc: true
57
- };
58
- }
59
- }
60
- return null;
61
- }
62
- }
63
- export class ZipCodeValidator {
64
- static do(control) {
65
- if (!control.parent || !control)
66
- return null;
67
- if (control && control.value) {
68
- if (!MonkeyEcxUtils.isValidZipCode(control.value)) {
69
- return {
70
- invalidZipCode: true
71
- };
72
- }
73
- }
74
- return null;
75
- }
76
- }
77
- export class ComboValidator {
78
- static do(control) {
79
- if (!control.parent || !control)
80
- return null;
81
- if (control && control.value !== '0')
82
- return null;
83
- return {
84
- invalidCombo: true
85
- };
86
- }
87
- }
88
- export class isTrueValidator {
89
- static do(control) {
90
- if (!control.parent || !control)
91
- return null;
92
- if (control && control.value !== false)
93
- return null;
94
- return {
95
- invalidTrue: true
96
- };
97
- }
98
- }
99
- export class PasswordMatchValidation {
100
- static do(control) {
101
- if (!control.parent || !control)
102
- return null;
103
- const { parent } = control;
104
- const password = parent?.get('password')?.value;
105
- const passwordConfirm = parent?.get('passwordConfirm')?.value;
106
- if (!password || !passwordConfirm)
107
- return null;
108
- if (password === passwordConfirm)
109
- return null;
110
- return {
111
- passwordsNotMatching: true
112
- };
113
- }
114
- }
115
- export class UrlValidator {
116
- static do(control) {
117
- if (!control.parent || !control)
118
- return null;
119
- if (control && control.value) {
120
- if (!MonkeyEcxUtils.isValidUrl(control.value)) {
121
- return {
122
- invalidUrl: true
123
- };
124
- }
125
- }
126
- return null;
127
- }
128
- }
129
- export class CustomDatesStartValidator {
130
- static do(control) {
131
- if (!control.parent || !control)
132
- return null;
133
- const { parent } = control;
134
- const valueStart = parent?.get('dateStart')?.value;
135
- const valueEnd = parent?.get('dateEnd')?.value;
136
- let dateStart = null;
137
- let dateEnd = null;
138
- if (valueStart) {
139
- dateStart = new Date(valueStart);
140
- }
141
- if (valueEnd) {
142
- dateEnd = new Date(valueEnd);
143
- }
144
- if (!dateStart || !dateEnd)
145
- return null;
146
- if (dateStart > dateEnd) {
147
- return {
148
- dateStartMustBeLessThanAnd: true
149
- };
150
- }
151
- return null;
152
- }
153
- }
154
- export class CustomDatesEndValidator {
155
- static do(control) {
156
- if (!control.parent || !control)
157
- return null;
158
- const { parent } = control;
159
- const valueStart = parent?.get('dateStart')?.value;
160
- const valueEnd = parent?.get('dateEnd')?.value;
161
- let dateStart = null;
162
- let dateEnd = null;
163
- if (valueStart) {
164
- dateStart = new Date(valueStart);
165
- }
166
- if (valueEnd) {
167
- dateEnd = new Date(valueEnd);
168
- }
169
- if (!dateEnd || !dateStart)
170
- return null;
171
- if (dateEnd < dateStart) {
172
- return {
173
- dateEndMustBeGreaterThanStart: true
174
- };
175
- }
176
- return null;
177
- }
178
- }
179
- export class UnlockRegisterBuyerValidator {
180
- static do(control) {
181
- if (!control.parent || !control)
182
- return null;
183
- if (control && control.value !== '#MONKEYBUYER') {
184
- return {
185
- invalidUnlockRegister: true
186
- };
187
- }
188
- return null;
189
- }
190
- }
191
- export class UnlockRegisterSponsorValidator {
192
- static do(control) {
193
- if (!control.parent || !control)
194
- return null;
195
- if (control && control.value !== '#MONKEYSPONSOR') {
196
- return {
197
- invalidUnlockRegister: true
198
- };
199
- }
200
- return null;
201
- }
202
- }
203
- export class DateRangeValidator {
204
- static do(control) {
205
- if (!control.parent || !control) {
206
- return null;
207
- }
208
- const dates = control?.parent?.get('dates')?.value;
209
- if (dates &&
210
- (!MonkeyEcxUtils.persistNullEmptyUndefined(dates.startDate) ||
211
- !MonkeyEcxUtils.persistNullEmptyUndefined(dates.endDate))) {
212
- return {
213
- invalidDateRange: true
214
- };
215
- }
216
- return null;
217
- }
218
- }
219
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFsaWRhdGUtdXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9tb25rZXktZnJvbnQtY29yZS9zcmMvbGliL2NvcmUvdXRpbHMvdmFsaWRhdGUtdXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsT0FBTyxLQUFLLE9BQU8sTUFBTSxRQUFRLENBQUM7QUFDbEMsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLFNBQVMsQ0FBQztBQUV6QyxNQUFNLE1BQU0sR0FBUSxPQUFPLENBQUM7QUFFNUIsTUFBTSxPQUFPLGFBQWE7SUFDeEIsTUFBTSxDQUFDLEVBQUUsQ0FBQyxPQUF3QjtRQUNoQyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sSUFBSSxDQUFDLE9BQU87WUFBRSxPQUFPLElBQUksQ0FBQztRQUM3QyxJQUFJLE9BQU8sSUFBSSxPQUFPLENBQUMsS0FBSyxFQUFFO1lBQzVCLE1BQU0sVUFBVSxHQUFHLFlBQVksQ0FBQztZQUNoQyxJQUNFLENBQUMsTUFBTTtpQkFDSixPQUFPLENBQ04sTUFBTSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxFQUNoRCxDQUFDLFlBQVksRUFBRSxZQUFZLEVBQUUsWUFBWSxDQUFDLEVBQzFDLElBQUksQ0FDTDtpQkFDQSxPQUFPLEVBQUUsRUFDWjtnQkFDQSxPQUFPO29CQUNMLFdBQVcsRUFBRSxJQUFJO2lCQUNsQixDQUFDO2FBQ0g7U0FDRjtRQUNELE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztDQUNGO0FBRUQsTUFBTSxPQUFPLGlCQUFpQjtJQUM1QixNQUFNLENBQUMsRUFBRSxDQUFDLE9BQXdCO1FBQ2hDLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxJQUFJLENBQUMsT0FBTztZQUFFLE9BQU8sSUFBSSxDQUFDO1FBQzdDLElBQUksT0FBTyxJQUFJLE9BQU8sQ0FBQyxLQUFLLEVB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QixDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxFQUMzRDtZQUNBLE9BQU87Z0JBQ0wsZ0JBQWdCLEVBQUUsSUFBSTthQUN2QixDQUFDO1NBQ0g7UUFFRCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIG1heC1jbGFzc2VzLXBlci1maWxlICovXG5pbXBvcnQgeyBBYnN0cmFjdENvbnRyb2wgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgKiBhcyBtb21lbnRfIGZyb20gJ21vbWVudCc7XG5pbXBvcnQgeyBNb25rZXlFY3hVdGlscyB9IGZyb20gJy4vdXRpbHMnO1xuXG5jb25zdCBtb21lbnQ6IGFueSA9IG1vbWVudF87XG5cbmV4cG9ydCBjbGFzcyBEYXRlVmFsaWRhdG9yIHtcbiAgc3RhdGljIGRvKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCkge1xuICAgIGlmICghY29udHJvbC5wYXJlbnQgfHwgIWNvbnRyb2wpIHJldHVybiBudWxsO1xuICAgIGlmIChjb250cm9sICYmIGNvbnRyb2wudmFsdWUpIHtcbiAgICAgIGNvbnN0IGRhdGVGb3JtYXQgPSAnTU0tREQtWVlZWSc7XG4gICAgICBpZiAoXG4gICAgICAgICFtb21lbnRcbiAgICAgICAgICAuZGVmYXVsdChcbiAgICAgICAgICAgIG1vbWVudC5kZWZhdWx0KGNvbnRyb2wudmFsdWUpLmZvcm1hdChkYXRlRm9ybWF0KSxcbiAgICAgICAgICAgIFsnREQvTU0vWVlZWScsICdNTS1ERC1ZWVlZJywgJ1lZWVktTU0tREQnXSxcbiAgICAgICAgICAgIHRydWVcbiAgICAgICAgICApXG4gICAgICAgICAgLmlzVmFsaWQoKVxuICAgICAgKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgaW52YWxpZERhdGU6IHRydWVcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIERvY3VtZW50VmFsaWRhdG9yIHtcbiAgc3RhdGljIGRvKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCkge1xuICAgIGlmICghY29udHJvbC5wYXJlbnQgfHwgIWNvbnRyb2wpIHJldHVybiBudWxsO1xuICAgIGlmIChjb250cm9sICYmIGNvbnRyb2wudmFsdWUpIHtcbiAgICAgIGlmICghTW9ua2V5RWN4VXRpbHMuaXNDUEZDTlBKVmFsaWQoY29udHJvbC52YWx1ZSkpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBpbnZhbGlkQ3BmQ25wajogdHJ1ZVxuICAgICAgICB9O1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gbnVsbDtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgRG9jdW1lbnRSdXRWYWxpZGF0b3Ige1xuICBzdGF0aWMgZG8oY29udHJvbDogQWJzdHJhY3RDb250cm9sKSB7XG4gICAgaWYgKCFjb250cm9sLnBhcmVudCB8fCAhY29udHJvbCkgcmV0dXJuIG51bGw7XG4gICAgaWYgKGNvbnRyb2wgJiYgY29udHJvbC52YWx1ZSkge1xuICAgICAgaWYgKCFNb25rZXlFY3hVdGlscy5pc1ZhbGlkUlVUKGNvbnRyb2wudmFsdWUpKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgaW52YWxpZFJ1dDogdHJ1ZVxuICAgICAgICB9O1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gbnVsbDtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgRG9jdW1lbnRSRkNWYWxpZGF0b3Ige1xuICBzdGF0aWMgZG8oY29udHJvbDogQWJzdHJhY3RDb250cm9sKSB7XG4gICAgaWYgKCFjb250cm9sLnBhcmVudCB8fCAhY29udHJvbCkgcmV0dXJuIG51bGw7XG4gICAgaWYgKGNvbnRyb2wgJiYgY29udHJvbC52YWx1ZSkge1xuICAgICAgaWYgKCFNb25rZXlFY3hVdGlscy5pc1ZhbGlkUkZDKGNvbnRyb2wudmFsdWUpKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgaW52YWxpZFJmYzogdHJ1ZVxuICAgICAgICB9O1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gbnVsbDtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgWmlwQ29kZVZhbGlkYXRvciB7XG4gIHN0YXRpYyBkbyhjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpIHtcbiAgICBpZiAoIWNvbnRyb2wucGFyZW50IHx8ICFjb250cm9sKSByZXR1cm4gbnVsbDtcbiAgICBpZiAoY29udHJvbCAmJiBjb250cm9sLnZhbHVlKSB7XG4gICAgICBpZiAoIU1vbmtleUVjeFV0aWxzLmlzVmFsaWRaaXBDb2RlKGNvbnRyb2wudmFsdWUpKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgaW52YWxpZFppcENvZGU6IHRydWVcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIENvbWJvVmFsaWRhdG9yIHtcbiAgc3RhdGljIGRvKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCkge1xuICAgIGlmICghY29udHJvbC5wYXJlbnQgfHwgIWNvbnRyb2wpIHJldHVybiBudWxsO1xuICAgIGlmIChjb250cm9sICYmIGNvbnRyb2wudmFsdWUgIT09ICcwJykgcmV0dXJuIG51bGw7XG4gICAgcmV0dXJuIHtcbiAgICAgIGludmFsaWRDb21ibzogdHJ1ZVxuICAgIH07XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIGlzVHJ1ZVZhbGlkYXRvciB7XG4gIHN0YXRpYyBkbyhjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpIHtcbiAgICBpZiAoIWNvbnRyb2wucGFyZW50IHx8ICFjb250cm9sKSByZXR1cm4gbnVsbDtcbiAgICBpZiAoY29udHJvbCAmJiBjb250cm9sLnZhbHVlICE9PSBmYWxzZSkgcmV0dXJuIG51bGw7XG4gICAgcmV0dXJuIHtcbiAgICAgIGludmFsaWRUcnVlOiB0cnVlXG4gICAgfTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgUGFzc3dvcmRNYXRjaFZhbGlkYXRpb24ge1xuICBzdGF0aWMgZG8oY29udHJvbDogQWJzdHJhY3RDb250cm9sKSB7XG4gICAgaWYgKCFjb250cm9sLnBhcmVudCB8fCAhY29udHJvbCkgcmV0dXJuIG51bGw7XG4gICAgY29uc3QgeyBwYXJlbnQgfSA9IGNvbnRyb2w7XG4gICAgY29uc3QgcGFzc3dvcmQgPSBwYXJlbnQ/LmdldCgncGFzc3dvcmQnKT8udmFsdWU7XG4gICAgY29uc3QgcGFzc3dvcmRDb25maXJtID0gcGFyZW50Py5nZXQoJ3Bhc3N3b3JkQ29uZmlybScpPy52YWx1ZTtcbiAgICBpZiAoIXBhc3N3b3JkIHx8ICFwYXNzd29yZENvbmZpcm0pIHJldHVybiBudWxsO1xuICAgIGlmIChwYXNzd29yZCA9PT0gcGFzc3dvcmRDb25maXJtKSByZXR1cm4gbnVsbDtcbiAgICByZXR1cm4ge1xuICAgICAgcGFzc3dvcmRzTm90TWF0Y2hpbmc6IHRydWVcbiAgICB9O1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBVcmxWYWxpZGF0b3Ige1xuICBzdGF0aWMgZG8oY29udHJvbDogQWJzdHJhY3RDb250cm9sKSB7XG4gICAgaWYgKCFjb250cm9sLnBhcmVudCB8fCAhY29udHJvbCkgcmV0dXJuIG51bGw7XG4gICAgaWYgKGNvbnRyb2wgJiYgY29udHJvbC52YWx1ZSkge1xuICAgICAgaWYgKCFNb25rZXlFY3hVdGlscy5pc1ZhbGlkVXJsKGNvbnRyb2wudmFsdWUpKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgaW52YWxpZFVybDogdHJ1ZVxuICAgICAgICB9O1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gbnVsbDtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgQ3VzdG9tRGF0ZXNTdGFydFZhbGlkYXRvciB7XG4gIHN0YXRpYyBkbyhjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpIHtcbiAgICBpZiAoIWNvbnRyb2wucGFyZW50IHx8ICFjb250cm9sKSByZXR1cm4gbnVsbDtcbiAgICBjb25zdCB7IHBhcmVudCB9ID0gY29udHJvbDtcblxuICAgIGNvbnN0IHZhbHVlU3RhcnQgPSBwYXJlbnQ/LmdldCgnZGF0ZVN0YXJ0Jyk/LnZhbHVlO1xuICAgIGNvbnN0IHZhbHVlRW5kID0gcGFyZW50Py5nZXQoJ2RhdGVFbmQnKT8udmFsdWU7XG4gICAgbGV0IGRhdGVTdGFydDogRGF0ZSB8IG51bGwgPSBudWxsO1xuICAgIGxldCBkYXRlRW5kOiBEYXRlIHwgbnVsbCA9IG51bGw7XG4gICAgaWYgKHZhbHVlU3RhcnQpIHtcbiAgICAgIGRhdGVTdGFydCA9IG5ldyBEYXRlKHZhbHVlU3RhcnQpO1xuICAgIH1cbiAgICBpZiAodmFsdWVFbmQpIHtcbiAgICAgIGRhdGVFbmQgPSBuZXcgRGF0ZSh2YWx1ZUVuZCk7XG4gICAgfVxuXG4gICAgaWYgKCFkYXRlU3RhcnQgfHwgIWRhdGVFbmQpIHJldHVybiBudWxsO1xuICAgIGlmIChkYXRlU3RhcnQgPiBkYXRlRW5kKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBkYXRlU3RhcnRNdXN0QmVMZXNzVGhhbkFuZDogdHJ1ZVxuICAgICAgfTtcbiAgICB9XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIEN1c3RvbURhdGVzRW5kVmFsaWRhdG9yIHtcbiAgc3RhdGljIGRvKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCkge1xuICAgIGlmICghY29udHJvbC5wYXJlbnQgfHwgIWNvbnRyb2wpIHJldHVybiBudWxsO1xuICAgIGNvbnN0IHsgcGFyZW50IH0gPSBjb250cm9sO1xuXG4gICAgY29uc3QgdmFsdWVTdGFydCA9IHBhcmVudD8uZ2V0KCdkYXRlU3RhcnQnKT8udmFsdWU7XG4gICAgY29uc3QgdmFsdWVFbmQgPSBwYXJlbnQ/LmdldCgnZGF0ZUVuZCcpPy52YWx1ZTtcbiAgICBsZXQgZGF0ZVN0YXJ0OiBEYXRlIHwgbnVsbCA9IG51bGw7XG4gICAgbGV0IGRhdGVFbmQ6IERhdGUgfCBudWxsID0gbnVsbDtcbiAgICBpZiAodmFsdWVTdGFydCkge1xuICAgICAgZGF0ZVN0YXJ0ID0gbmV3IERhdGUodmFsdWVTdGFydCk7XG4gICAgfVxuICAgIGlmICh2YWx1ZUVuZCkge1xuICAgICAgZGF0ZUVuZCA9IG5ldyBEYXRlKHZhbHVlRW5kKTtcbiAgICB9XG5cbiAgICBpZiAoIWRhdGVFbmQgfHwgIWRhdGVTdGFydCkgcmV0dXJuIG51bGw7XG4gICAgaWYgKGRhdGVFbmQgPCBkYXRlU3RhcnQpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGRhdGVFbmRNdXN0QmVHcmVhdGVyVGhhblN0YXJ0OiB0cnVlXG4gICAgICB9O1xuICAgIH1cbiAgICByZXR1cm4gbnVsbDtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgVW5sb2NrUmVnaXN0ZXJCdXllclZhbGlkYXRvciB7XG4gIHN0YXRpYyBkbyhjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpIHtcbiAgICBpZiAoIWNvbnRyb2wucGFyZW50IHx8ICFjb250cm9sKSByZXR1cm4gbnVsbDtcblxuICAgIGlmIChjb250cm9sICYmIGNvbnRyb2wudmFsdWUgIT09ICcjTU9OS0VZQlVZRVInKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBpbnZhbGlkVW5sb2NrUmVnaXN0ZXI6IHRydWVcbiAgICAgIH07XG4gICAgfVxuXG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIFVubG9ja1JlZ2lzdGVyU3BvbnNvclZhbGlkYXRvciB7XG4gIHN0YXRpYyBkbyhjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpIHtcbiAgICBpZiAoIWNvbnRyb2wucGFyZW50IHx8ICFjb250cm9sKSByZXR1cm4gbnVsbDtcblxuICAgIGlmIChjb250cm9sICYmIGNvbnRyb2wudmFsdWUgIT09ICcjTU9OS0VZU1BPTlNPUicpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGludmFsaWRVbmxvY2tSZWdpc3RlcjogdHJ1ZVxuICAgICAgfTtcbiAgICB9XG5cbiAgICByZXR1cm4gbnVsbDtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgRGF0ZVJhbmdlVmFsaWRhdG9yIHtcbiAgc3RhdGljIGRvKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCkge1xuICAgIGlmICghY29udHJvbC5wYXJlbnQgfHwgIWNvbnRyb2wpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIGNvbnN0IGRhdGVzID0gY29udHJvbD8ucGFyZW50Py5nZXQoJ2RhdGVzJyk/LnZhbHVlO1xuXG4gICAgaWYgKFxuICAgICAgZGF0ZXMgJiZcbiAgICAgICghTW9ua2V5RWN4VXRpbHMucGVyc2lzdE51bGxFbXB0eVVuZGVmaW5lZChkYXRlcy5zdGFydERhdGUpIHx8XG4gICAgICAgICFNb25rZXlFY3hVdGlscy5wZXJzaXN0TnVsbEVtcHR5VW5kZWZpbmVkKGRhdGVzLmVuZERhdGUpKVxuICAgICkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgaW52YWxpZERhdGVSYW5nZTogdHJ1ZVxuICAgICAgfTtcbiAgICB9XG5cbiAgICByZXR1cm4gbnVsbDtcbiAgfVxufVxuIl19
@@ -1,327 +0,0 @@
1
- import * as moment_ from 'moment';
2
- import { MonkeyEcxUtils } from './utils';
3
- const moment = moment_;
4
- const EMAIL_REGEXP = /^[\w-.]+@([\w-]+\.)+[\w-]{1,64}$/;
5
- function isEmptyInputValue(value) {
6
- return value == null || value.length === 0;
7
- }
8
- export function emailValidator(control) {
9
- if (!control.parent || !control || isEmptyInputValue(control.value)) {
10
- return null;
11
- }
12
- const test = EMAIL_REGEXP.test(control.value);
13
- if (test)
14
- return null;
15
- return {
16
- email: true
17
- };
18
- }
19
- export function dateRangeValidator(control) {
20
- if (!control.parent || !control || isEmptyInputValue(control.value)) {
21
- return null;
22
- }
23
- const dates = control?.parent?.get('dates')?.value;
24
- if (dates &&
25
- (!MonkeyEcxUtils.persistNullEmptyUndefined(dates?.startDate) ||
26
- !MonkeyEcxUtils.persistNullEmptyUndefined(dates?.endDate))) {
27
- return {
28
- dateRange: true
29
- };
30
- }
31
- return null;
32
- }
33
- export function registerValidator(control, type) {
34
- if (!control.parent || !control || isEmptyInputValue(control.value)) {
35
- return null;
36
- }
37
- if (control && control.value !== `#MONKEY${type}`.toUpperCase()) {
38
- return {
39
- invalidUnlockRegister: true
40
- };
41
- }
42
- return null;
43
- }
44
- export function dateStartEndValidator(control) {
45
- if (!control.parent || !control) {
46
- return null;
47
- }
48
- const { parent } = control;
49
- const valueStart = parent?.get('dateStart')?.value;
50
- const valueEnd = parent?.get('dateEnd')?.value;
51
- let dateStart = null;
52
- let dateEnd = null;
53
- if (valueStart) {
54
- dateStart = new Date(valueStart);
55
- }
56
- if (valueEnd) {
57
- dateEnd = new Date(valueEnd);
58
- }
59
- if (!dateEnd || !dateStart)
60
- return null;
61
- if (dateStart > dateEnd) {
62
- return {
63
- dateStartMustBeLessThanAnd: true
64
- };
65
- }
66
- return null;
67
- }
68
- export function urlValidator(control) {
69
- if (!control.parent || !control || isEmptyInputValue(control.value))
70
- return null;
71
- if (!MonkeyEcxUtils.isValidUrl(control.value)) {
72
- return {
73
- url: true
74
- };
75
- }
76
- return null;
77
- }
78
- export function passwordConfirmValidator(control) {
79
- if (!control.parent || !control || isEmptyInputValue(control.value))
80
- return null;
81
- const { parent } = control;
82
- const password = parent?.get('password')?.value;
83
- const passwordConfirm = parent?.get('passwordConfirm')?.value;
84
- if (!password || !passwordConfirm)
85
- return null;
86
- if (password === passwordConfirm)
87
- return null;
88
- return {
89
- passwordsNotMatching: true
90
- };
91
- }
92
- export function trueValidator(control) {
93
- if (!control.parent || !control)
94
- return null;
95
- if (control && control.value !== false)
96
- return null;
97
- return {
98
- invalidTrue: true
99
- };
100
- }
101
- export function comboValidator(control) {
102
- if (!control.parent || !control)
103
- return null;
104
- if (control && control.value !== '0')
105
- return null;
106
- return {
107
- invalidCombo: true
108
- };
109
- }
110
- export function zipCodeValidator(control, country) {
111
- if (!control.parent || !control || isEmptyInputValue(control.value))
112
- return null;
113
- if (control && control.value) {
114
- if (!MonkeyEcxUtils.isValidZipCode(control.value, country)) {
115
- return {
116
- invalidZipCode: true
117
- };
118
- }
119
- }
120
- return null;
121
- }
122
- export function documentValidator(control, country) {
123
- if (!control.parent || !control || isEmptyInputValue(control.value))
124
- return null;
125
- country = `${country}`.toUpperCase();
126
- if (country === 'BR') {
127
- if (!MonkeyEcxUtils.isCPFCNPJValid(control.value)) {
128
- return {
129
- invalidCpfCnpj: true
130
- };
131
- }
132
- }
133
- else if (country === 'CL') {
134
- if (!MonkeyEcxUtils.isValidRUT(control.value)) {
135
- return {
136
- invalidCpfCnpj: true
137
- };
138
- }
139
- }
140
- else if (country === 'MX') {
141
- if (!MonkeyEcxUtils.isValidRFC(control.value)) {
142
- return {
143
- invalidCpfCnpj: true
144
- };
145
- }
146
- }
147
- return null;
148
- }
149
- export function minYearsValidator(param, control) {
150
- if (!control.parent || !control || isEmptyInputValue(control.value))
151
- return null;
152
- const date = moment.default(control.value);
153
- const dif = moment.default().diff(date, 'years');
154
- if (dif < param) {
155
- return {
156
- invalidMinYears: {
157
- year: param
158
- }
159
- };
160
- }
161
- return null;
162
- }
163
- export function dateValidator(control) {
164
- if (!control.parent || !control || isEmptyInputValue(control.value))
165
- return null;
166
- const dateFormat = 'MM-DD-YYYY';
167
- if (!moment
168
- .default(moment.default(control.value).format(dateFormat), ['DD/MM/YYYY', 'MM-DD-YYYY', 'YYYY-MM-DD'], true)
169
- .isValid()) {
170
- return {
171
- invalidDate: true
172
- };
173
- }
174
- return null;
175
- }
176
- export function valueGreaterThanZero(control) {
177
- if (!control.parent || !control || isEmptyInputValue(control.value))
178
- return null;
179
- if (control && `${control?.value}` === '0') {
180
- return {
181
- invalidValueGreaterThanZero: true
182
- };
183
- }
184
- return null;
185
- }
186
- export function requiredWithTrimValidator(control) {
187
- if (!control.parent || !control)
188
- return null;
189
- if (control && !`${control?.value}`.trim()) {
190
- return {
191
- required: true
192
- };
193
- }
194
- return null;
195
- }
196
- export function differentFromZero(control) {
197
- if (!control.parent || !control)
198
- return null;
199
- const handled = `${control?.value}`.trim().replace(/0/g, '');
200
- if (control && !handled) {
201
- return {
202
- differentFromZero: true
203
- };
204
- }
205
- return null;
206
- }
207
- export function documentValidatorByType(type, control) {
208
- if (!control.parent || !control || isEmptyInputValue(control.value))
209
- return null;
210
- const handle = MonkeyEcxUtils.handleOnlyNumbers(control.value);
211
- let valid = false;
212
- if (type === 'CPF' || type === 'CNPJ') {
213
- if ((type === 'CNPJ' && `${handle}`.length !== 14) ||
214
- (type === 'CPF' && `${handle}`.length !== 11)) {
215
- valid = false;
216
- }
217
- else {
218
- valid = MonkeyEcxUtils.isCPFCNPJValid(control.value);
219
- }
220
- }
221
- else if (type === 'RUT') {
222
- valid = MonkeyEcxUtils.isValidRUT(control.value);
223
- }
224
- else if (type === 'RFC') {
225
- valid = MonkeyEcxUtils.isValidRFC(control.value);
226
- }
227
- if (!valid) {
228
- return {
229
- [`invalid${MonkeyEcxUtils.capitalize(type.toLowerCase())}`]: true
230
- };
231
- }
232
- return null;
233
- }
234
- export function validateFullName(control) {
235
- const value = control.value?.trim();
236
- if (!value)
237
- return null;
238
- const fullName = value.split(/\s+/);
239
- const hasShortPart = fullName.filter((part) => {
240
- return part.length >= 2;
241
- }).length;
242
- if (hasShortPart < 2) {
243
- return { fullName: true };
244
- }
245
- return null;
246
- }
247
- export function containsNumber(control) {
248
- const value = control.value?.trim();
249
- if (!value)
250
- return null;
251
- return /\d/.test(value) ? { containsNumber: true } : null;
252
- }
253
- export class Validators {
254
- static email(control) {
255
- return emailValidator(control);
256
- }
257
- static dateRange(control) {
258
- return dateRangeValidator(control);
259
- }
260
- static unlockSponsorRegister(control) {
261
- return registerValidator(control, 'sponsor');
262
- }
263
- static unlockBuyerRegister(control) {
264
- return registerValidator(control, 'buyer');
265
- }
266
- static dateStartEnd(control) {
267
- return dateStartEndValidator(control);
268
- }
269
- static url(control) {
270
- return urlValidator(control);
271
- }
272
- static passwordConfirm(control) {
273
- return passwordConfirmValidator(control);
274
- }
275
- static true(control) {
276
- return trueValidator(control);
277
- }
278
- static combo(control) {
279
- return comboValidator(control);
280
- }
281
- static zipCode(control) {
282
- return zipCodeValidator(control);
283
- }
284
- static zipCodeByCountry(country) {
285
- return (control) => {
286
- return zipCodeValidator(control, country);
287
- };
288
- }
289
- static documentBR(control) {
290
- return documentValidator(control, 'BR');
291
- }
292
- static documentCL(control) {
293
- return documentValidator(control, 'CL');
294
- }
295
- static documentMX(control) {
296
- return documentValidator(control, 'MX');
297
- }
298
- static date(control) {
299
- return dateValidator(control);
300
- }
301
- static minYears(param) {
302
- return (control) => {
303
- return minYearsValidator(param, control);
304
- };
305
- }
306
- static greaterThanZero(control) {
307
- return valueGreaterThanZero(control);
308
- }
309
- static required(control) {
310
- return requiredWithTrimValidator(control);
311
- }
312
- static differentFromZero(control) {
313
- return differentFromZero(control);
314
- }
315
- static documentValidatorByType(type) {
316
- return (control) => {
317
- return documentValidatorByType(type, control);
318
- };
319
- }
320
- static validateFullName(control) {
321
- return validateFullName(control);
322
- }
323
- static containsNumber(control) {
324
- return containsNumber(control);
325
- }
326
- }
327
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFsaWRhdG9ycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL21vbmtleS1mcm9udC1jb3JlL3NyYy9saWIvY29yZS91dGlscy92YWxpZGF0b3JzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sS0FBSyxPQUFPLE1BQU0sUUFBUSxDQUFDO0FBQ2xDLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxTQUFTLENBQUM7QUFFekMsTUFBTSxNQUFNLEdBQVEsT0FBTyxDQUFDO0FBRTVCLE1BQU0sWUFBWSxHQUFHLGtDQUFrQyxDQUFDO0FBRXhELFNBQVMsaUJBQWlCLENBQUMsS0FBVTtJQUNuQyxPQUFPLEtBQUssSUFBSSxJQUFJLElBQUksS0FBSyxDQUFDLE1BQU0sS0FBSyxDQUFDLENBQUM7QUFDN0MsQ0FBQztBQUVELE1BQU0sVUFBVSxjQUFjLENBQUMsT0FBd0I7SUFDckQsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLElBQUksQ0FBQyxPQUFPLElBQUksaUJBQWlCLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxFQUFFO1FBQ25FLE9BQU8sSUFBSSxDQUFDO0tBQ2I7SUFDRCxNQUFNLElBQUksR0FBRyxZQUFZLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUM5QyxJQUFJLElBQUk7UUFBRSxPQUFPLElBQUksQ0FBQztJQUN0QixPQUFPO1FBQ0wsS0FBSyxFQUFFLElBQUk7S0FDWixDQUFDO0FBQ0osQ0FBQztBQUVELE1BQU0sVUFBVSxrQkFBa0IsQ0FBQyxPQUF3QjtJQUN6RCxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sSUFBSSxDQUFDLE9BQU8sSUFBSSxpQkFBaUIsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLEVBQUU7UUFDbkUsT0FBTyxJQUFJLENBQUM7S0FDYjtJQUVELE1BQU0sS0FBSyxHQUFHLE9BQU8sRUFBRSxNQUFNLEVBQUUsR0FBRyxDQUFD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RCxNQUFNLENBQUMsZUFBZSxDQUFDLE9BQXdCO1FBQzdDLE9BQU8sb0JBQW9CLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDdkMsQ0FBQztJQUVELE1BQU0sQ0FBQyxRQUFRLENBQUMsT0FBd0I7UUFDdEMsT0FBTyx5QkFBeUIsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUM1QyxDQUFDO0lBRUQsTUFBTSxDQUFDLGlCQUFpQixDQUFDLE9BQXdCO1FBQy9DLE9BQU8saUJBQWlCLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDcEMsQ0FBQztJQUVELE1BQU0sQ0FBQyx1QkFBdUIsQ0FBQyxJQUFZO1FBQ3pDLE9BQU8sQ0FBQyxPQUF3QixFQUEyQixFQUFFO1lBQzNELE9BQU8sdUJBQXVCLENBQUMsSUFBSSxFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBQ2hELENBQUMsQ0FBQztJQUNKLENBQUM7SUFFRCxNQUFNLENBQUMsZ0JBQWdCLENBQUMsT0FBd0I7UUFDOUMsT0FBTyxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUNuQyxDQUFDO0lBRUQsTUFBTSxDQUFDLGNBQWMsQ0FBQyxPQUF3QjtRQUM1QyxPQUFPLGNBQWMsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUNqQyxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBYnN0cmFjdENvbnRyb2wsIFZhbGlkYXRpb25FcnJvcnMgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgKiBhcyBtb21lbnRfIGZyb20gJ21vbWVudCc7XG5pbXBvcnQgeyBNb25rZXlFY3hVdGlscyB9IGZyb20gJy4vdXRpbHMnO1xuXG5jb25zdCBtb21lbnQ6IGFueSA9IG1vbWVudF87XG5cbmNvbnN0IEVNQUlMX1JFR0VYUCA9IC9eW1xcdy0uXStAKFtcXHctXStcXC4pK1tcXHctXXsxLDY0fSQvO1xuXG5mdW5jdGlvbiBpc0VtcHR5SW5wdXRWYWx1ZSh2YWx1ZTogYW55KTogYm9vbGVhbiB7XG4gIHJldHVybiB2YWx1ZSA9PSBudWxsIHx8IHZhbHVlLmxlbmd0aCA9PT0gMDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGVtYWlsVmFsaWRhdG9yKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCk6IFZhbGlkYXRpb25FcnJvcnMgfCBudWxsIHtcbiAgaWYgKCFjb250cm9sLnBhcmVudCB8fCAhY29udHJvbCB8fCBpc0VtcHR5SW5wdXRWYWx1ZShjb250cm9sLnZhbHVlKSkge1xuICAgIHJldHVybiBudWxsO1xuICB9XG4gIGNvbnN0IHRlc3QgPSBFTUFJTF9SRUdFWFAudGVzdChjb250cm9sLnZhbHVlKTtcbiAgaWYgKHRlc3QpIHJldHVybiBudWxsO1xuICByZXR1cm4ge1xuICAgIGVtYWlsOiB0cnVlXG4gIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBkYXRlUmFuZ2VWYWxpZGF0b3IoY29udHJvbDogQWJzdHJhY3RDb250cm9sKTogVmFsaWRhdGlvbkVycm9ycyB8IG51bGwge1xuICBpZiAoIWNvbnRyb2wucGFyZW50IHx8ICFjb250cm9sIHx8IGlzRW1wdHlJbnB1dFZhbHVlKGNvbnRyb2wudmFsdWUpKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBjb25zdCBkYXRlcyA9IGNvbnRyb2w/LnBhcmVudD8uZ2V0KCdkYXRlcycpPy52YWx1ZTtcbiAgaWYgKFxuICAgIGRhdGVzICYmXG4gICAgKCFNb25rZXlFY3hVdGlscy5wZXJzaXN0TnVsbEVtcHR5VW5kZWZpbmVkKGRhdGVzPy5zdGFydERhdGUpIHx8XG4gICAgICAhTW9ua2V5RWN4VXRpbHMucGVyc2lzdE51bGxFbXB0eVVuZGVmaW5lZChkYXRlcz8uZW5kRGF0ZSkpXG4gICkge1xuICAgIHJldHVybiB7XG4gICAgICBkYXRlUmFuZ2U6IHRydWVcbiAgICB9O1xuICB9XG5cbiAgcmV0dXJuIG51bGw7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiByZWdpc3RlclZhbGlkYXRvcihjb250cm9sOiBBYnN0cmFjdENvbnRyb2wsIHR5cGU6IHN0cmluZyk6IFZhbGlkYXRpb25FcnJvcnMgfCBudWxsIHtcbiAgaWYgKCFjb250cm9sLnBhcmVudCB8fCAhY29udHJvbCB8fCBpc0VtcHR5SW5wdXRWYWx1ZShjb250cm9sLnZhbHVlKSkge1xuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgaWYgKGNvbnRyb2wgJiYgY29udHJvbC52YWx1ZSAhPT0gYCNNT05LRVkke3R5cGV9YC50b1VwcGVyQ2FzZSgpKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGludmFsaWRVbmxvY2tSZWdpc3RlcjogdHJ1ZVxuICAgIH07XG4gIH1cblxuICByZXR1cm4gbnVsbDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRhdGVTdGFydEVuZFZhbGlkYXRvcihjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpOiBWYWxpZGF0aW9uRXJyb3JzIHwgbnVsbCB7XG4gIGlmICghY29udHJvbC5wYXJlbnQgfHwgIWNvbnRyb2wpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIGNvbnN0IHsgcGFyZW50IH0gPSBjb250cm9sO1xuXG4gIGNvbnN0IHZhbHVlU3RhcnQgPSBwYXJlbnQ/LmdldCgnZGF0ZVN0YXJ0Jyk/LnZhbHVlO1xuICBjb25zdCB2YWx1ZUVuZCA9IHBhcmVudD8uZ2V0KCdkYXRlRW5kJyk/LnZhbHVlO1xuICBsZXQgZGF0ZVN0YXJ0OiBEYXRlIHwgbnVsbCA9IG51bGw7XG4gIGxldCBkYXRlRW5kOiBEYXRlIHwgbnVsbCA9IG51bGw7XG4gIGlmICh2YWx1ZVN0YXJ0KSB7XG4gICAgZGF0ZVN0YXJ0ID0gbmV3IERhdGUodmFsdWVTdGFydCk7XG4gIH1cbiAgaWYgKHZhbHVlRW5kKSB7XG4gICAgZGF0ZUVuZCA9IG5ldyBEYXRlKHZhbHVlRW5kKTtcbiAgfVxuXG4gIGlmICghZGF0ZUVuZCB8fCAhZGF0ZVN0YXJ0KSByZXR1cm4gbnVsbDtcbiAgaWYgKGRhdGVTdGFydCA+IGRhdGVFbmQpIHtcbiAgICByZXR1cm4ge1xuICAgICAgZGF0ZVN0YXJ0TXVzdEJlTGVzc1RoYW5BbmQ6IHRydWVcbiAgICB9O1xuICB9XG5cbiAgcmV0dXJuIG51bGw7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB1cmxWYWxpZGF0b3IoY29udHJvbDogQWJzdHJhY3RDb250cm9sKTogVmFsaWRhdGlvbkVycm9ycyB8IG51bGwge1xuICBpZiAoIWNvbnRyb2wucGFyZW50IHx8ICFjb250cm9sIHx8IGlzRW1wdHlJbnB1dFZhbHVlKGNvbnRyb2wudmFsdWUpKSByZXR1cm4gbnVsbDtcblxuICBpZiAoIU1vbmtleUVjeFV0aWxzLmlzVmFsaWRVcmwoY29udHJvbC52YWx1ZSkpIHtcbiAgICByZXR1cm4ge1xuICAgICAgdXJsOiB0cnVlXG4gICAgfTtcbiAgfVxuXG4gIHJldHVybiBudWxsO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcGFzc3dvcmRDb25maXJtVmFsaWRhdG9yKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCk6IFZhbGlkYXRpb25FcnJvcnMgfCBudWxsIHtcbiAgaWYgKCFjb250cm9sLnBhcmVudCB8fCAhY29udHJvbCB8fCBpc0VtcHR5SW5wdXRWYWx1ZShjb250cm9sLnZhbHVlKSkgcmV0dXJuIG51bGw7XG5cbiAgY29uc3QgeyBwYXJlbnQgfSA9IGNvbnRyb2w7XG4gIGNvbnN0IHBhc3N3b3JkID0gcGFyZW50Py5nZXQoJ3Bhc3N3b3JkJyk/LnZhbHVlO1xuICBjb25zdCBwYXNzd29yZENvbmZpcm0gPSBwYXJlbnQ/LmdldCgncGFzc3dvcmRDb25maXJtJyk/LnZhbHVlO1xuICBpZiAoIXBhc3N3b3JkIHx8ICFwYXNzd29yZENvbmZpcm0pIHJldHVybiBudWxsO1xuICBpZiAocGFzc3dvcmQgPT09IHBhc3N3b3JkQ29uZmlybSkgcmV0dXJuIG51bGw7XG5cbiAgcmV0dXJuIHtcbiAgICBwYXNzd29yZHNOb3RNYXRjaGluZzogdHJ1ZVxuICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdHJ1ZVZhbGlkYXRvcihjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpOiBWYWxpZGF0aW9uRXJyb3JzIHwgbnVsbCB7XG4gIGlmICghY29udHJvbC5wYXJlbnQgfHwgIWNvbnRyb2wpIHJldHVybiBudWxsO1xuICBpZiAoY29udHJvbCAmJiBjb250cm9sLnZhbHVlICE9PSBmYWxzZSkgcmV0dXJuIG51bGw7XG5cbiAgcmV0dXJuIHtcbiAgICBpbnZhbGlkVHJ1ZTogdHJ1ZVxuICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY29tYm9WYWxpZGF0b3IoY29udHJvbDogQWJzdHJhY3RDb250cm9sKTogVmFsaWRhdGlvbkVycm9ycyB8IG51bGwge1xuICBpZiAoIWNvbnRyb2wucGFyZW50IHx8ICFjb250cm9sKSByZXR1cm4gbnVsbDtcbiAgaWYgKGNvbnRyb2wgJiYgY29udHJvbC52YWx1ZSAhPT0gJzAnKSByZXR1cm4gbnVsbDtcblxuICByZXR1cm4ge1xuICAgIGludmFsaWRDb21ibzogdHJ1ZVxuICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gemlwQ29kZVZhbGlkYXRvcihcbiAgY29udHJvbDogQWJzdHJhY3RDb250cm9sLFxuICBjb3VudHJ5Pzogc3RyaW5nXG4pOiBWYWxpZGF0aW9uRXJyb3JzIHwgbnVsbCB7XG4gIGlmICghY29udHJvbC5wYXJlbnQgfHwgIWNvbnRyb2wgfHwgaXNFbXB0eUlucHV0VmFsdWUoY29udHJvbC52YWx1ZSkpIHJldHVybiBudWxsO1xuICBpZiAoY29udHJvbCAmJiBjb250cm9sLnZhbHVlKSB7XG4gICAgaWYgKCFNb25rZXlFY3hVdGlscy5pc1ZhbGlkWmlwQ29kZShjb250cm9sLnZhbHVlLCBjb3VudHJ5KSkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgaW52YWxpZFppcENvZGU6IHRydWVcbiAgICAgIH07XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIG51bGw7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBkb2N1bWVudFZhbGlkYXRvcihcbiAgY29udHJvbDogQWJzdHJhY3RDb250cm9sLFxuICBjb3VudHJ5OiBzdHJpbmdcbik6IFZhbGlkYXRpb25FcnJvcnMgfCBudWxsIHtcbiAgaWYgKCFjb250cm9sLnBhcmVudCB8fCAhY29udHJvbCB8fCBpc0VtcHR5SW5wdXRWYWx1ZShjb250cm9sLnZhbHVlKSkgcmV0dXJuIG51bGw7XG4gIGNvdW50cnkgPSBgJHtjb3VudHJ5fWAudG9VcHBlckNhc2UoKTtcbiAgaWYgKGNvdW50cnkgPT09ICdCUicpIHtcbiAgICBpZiAoIU1vbmtleUVjeFV0aWxzLmlzQ1BGQ05QSlZhbGlkKGNvbnRyb2wudmFsdWUpKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBpbnZhbGlkQ3BmQ25wajogdHJ1ZVxuICAgICAgfTtcbiAgICB9XG4gIH0gZWxzZSBpZiAoY291bnRyeSA9PT0gJ0NMJykge1xuICAgIGlmICghTW9ua2V5RWN4VXRpbHMuaXNWYWxpZFJVVChjb250cm9sLnZhbHVlKSkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgaW52YWxpZENwZkNucGo6IHRydWVcbiAgICAgIH07XG4gICAgfVxuICB9IGVsc2UgaWYgKGNvdW50cnkgPT09ICdNWCcpIHtcbiAgICBpZiAoIU1vbmtleUVjeFV0aWxzLmlzVmFsaWRSRkMoY29udHJvbC52YWx1ZSkpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGludmFsaWRDcGZDbnBqOiB0cnVlXG4gICAgICB9O1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBudWxsO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbWluWWVhcnNWYWxpZGF0b3IoXG4gIHBhcmFtOiBudW1iZXIsXG4gIGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbFxuKTogVmFsaWRhdGlvbkVycm9ycyB8IG51bGwge1xuICBpZiAoIWNvbnRyb2wucGFyZW50IHx8ICFjb250cm9sIHx8IGlzRW1wdHlJbnB1dFZhbHVlKGNvbnRyb2wudmFsdWUpKSByZXR1cm4gbnVsbDtcblxuICBjb25zdCBkYXRlID0gbW9tZW50LmRlZmF1bHQoY29udHJvbC52YWx1ZSk7XG4gIGNvbnN0IGRpZiA9IG1vbWVudC5kZWZhdWx0KCkuZGlmZihkYXRlLCAneWVhcnMnKTtcblxuICBpZiAoZGlmIDwgcGFyYW0pIHtcbiAgICByZXR1cm4ge1xuICAgICAgaW52YWxpZE1pblllYXJzOiB7XG4gICAgICAgIHllYXI6IHBhcmFtXG4gICAgICB9XG4gICAgfTtcbiAgfVxuICByZXR1cm4gbnVsbDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRhdGVWYWxpZGF0b3IoY29udHJvbDogQWJzdHJhY3RDb250cm9sKTogVmFsaWRhdGlvbkVycm9ycyB8IG51bGwge1xuICBpZiAoIWNvbnRyb2wucGFyZW50IHx8ICFjb250cm9sIHx8IGlzRW1wdHlJbnB1dFZhbHVlKGNvbnRyb2wudmFsdWUpKSByZXR1cm4gbnVsbDtcblxuICBjb25zdCBkYXRlRm9ybWF0ID0gJ01NLURELVlZWVknO1xuICBpZiAoXG4gICAgIW1vbWVudFxuICAgICAgLmRlZmF1bHQoXG4gICAgICAgIG1vbWVudC5kZWZhdWx0KGNvbnRyb2wudmFsdWUpLmZvcm1hdChkYXRlRm9ybWF0KSxcbiAgICAgICAgWydERC9NTS9ZWVlZJywgJ01NLURELVlZWVknLCAnWVlZWS1NTS1ERCddLFxuICAgICAgICB0cnVlXG4gICAgICApXG4gICAgICAuaXNWYWxpZCgpXG4gICkge1xuICAgIHJldHVybiB7XG4gICAgICBpbnZhbGlkRGF0ZTogdHJ1ZVxuICAgIH07XG4gIH1cbiAgcmV0dXJuIG51bGw7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB2YWx1ZUdyZWF0ZXJUaGFuWmVybyhjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpOiBWYWxpZGF0aW9uRXJyb3JzIHwgbnVsbCB7XG4gIGlmICghY29udHJvbC5wYXJlbnQgfHwgIWNvbnRyb2wgfHwgaXNFbXB0eUlucHV0VmFsdWUoY29udHJvbC52YWx1ZSkpIHJldHVybiBudWxsO1xuXG4gIGlmIChjb250cm9sICYmIGAke2NvbnRyb2w/LnZhbHVlfWAgPT09ICcwJykge1xuICAgIHJldHVybiB7XG4gICAgICBpbnZhbGlkVmFsdWVHcmVhdGVyVGhhblplcm86IHRydWVcbiAgICB9O1xuICB9XG4gIHJldHVybiBudWxsO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcmVxdWlyZWRXaXRoVHJpbVZhbGlkYXRvcihjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpOiBWYWxpZGF0aW9uRXJyb3JzIHwgbnVsbCB7XG4gIGlmICghY29udHJvbC5wYXJlbnQgfHwgIWNvbnRyb2wpIHJldHVybiBudWxsO1xuXG4gIGlmIChjb250cm9sICYmICFgJHtjb250cm9sPy52YWx1ZX1gLnRyaW0oKSkge1xuICAgIHJldHVybiB7XG4gICAgICByZXF1aXJlZDogdHJ1ZVxuICAgIH07XG4gIH1cbiAgcmV0dXJuIG51bGw7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBkaWZmZXJlbnRGcm9tWmVybyhjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpOiBWYWxpZGF0aW9uRXJyb3JzIHwgbnVsbCB7XG4gIGlmICghY29udHJvbC5wYXJlbnQgfHwgIWNvbnRyb2wpIHJldHVybiBudWxsO1xuXG4gIGNvbnN0IGhhbmRsZWQgPSBgJHtjb250cm9sPy52YWx1ZX1gLnRyaW0oKS5yZXBsYWNlKC8wL2csICcnKTtcbiAgaWYgKGNvbnRyb2wgJiYgIWhhbmRsZWQpIHtcbiAgICByZXR1cm4ge1xuICAgICAgZGlmZmVyZW50RnJvbVplcm86IHRydWVcbiAgICB9O1xuICB9XG5cbiAgcmV0dXJuIG51bGw7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBkb2N1bWVudFZhbGlkYXRvckJ5VHlwZShcbiAgdHlwZTogc3RyaW5nLFxuICBjb250cm9sOiBBYnN0cmFjdENvbnRyb2xcbik6IFZhbGlkYXRpb25FcnJvcnMgfCBudWxsIHtcbiAgaWYgKCFjb250cm9sLnBhcmVudCB8fCAhY29udHJvbCB8fCBpc0VtcHR5SW5wdXRWYWx1ZShjb250cm9sLnZhbHVlKSkgcmV0dXJuIG51bGw7XG5cbiAgY29uc3QgaGFuZGxlID0gTW9ua2V5RWN4VXRpbHMuaGFuZGxlT25seU51bWJlcnMoY29udHJvbC52YWx1ZSk7XG4gIGxldCB2YWxpZCA9IGZhbHNlO1xuICBpZiAodHlwZSA9PT0gJ0NQRicgfHwgdHlwZSA9PT0gJ0NOUEonKSB7XG4gICAgaWYgKCh0eXBlID09PSAnQ05QSicgJiYgYCR7aGFuZGxlfWAubGVuZ3RoICE9PSAxNCkgfHxcbiAgICAgICh0eXBlID09PSAnQ1BGJyAmJiBgJHtoYW5kbGV9YC5sZW5ndGggIT09IDExKSkge1xuICAgICAgdmFsaWQgPSBmYWxzZTtcbiAgICB9IGVsc2Uge1xuICAgICAgdmFsaWQgPSBNb25rZXlFY3hVdGlscy5pc0NQRkNOUEpWYWxpZChjb250cm9sLnZhbHVlKTtcbiAgICB9XG4gIH0gZWxzZSBpZiAodHlwZSA9PT0gJ1JVVCcpIHtcbiAgICB2YWxpZCA9IE1vbmtleUVjeFV0aWxzLmlzVmFsaWRSVVQoY29udHJvbC52YWx1ZSk7XG4gIH0gZWxzZSBpZiAodHlwZSA9PT0gJ1JGQycpIHtcbiAgICB2YWxpZCA9IE1vbmtleUVjeFV0aWxzLmlzVmFsaWRSRkMoY29udHJvbC52YWx1ZSk7XG4gIH1cblxuICBpZiAoIXZhbGlkKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIFtgaW52YWxpZCR7TW9ua2V5RWN4VXRpbHMuY2FwaXRhbGl6ZSh0eXBlLnRvTG93ZXJDYXNlKCkpfWBdOiB0cnVlXG4gICAgfTtcbiAgfVxuXG4gIHJldHVybiBudWxsO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdmFsaWRhdGVGdWxsTmFtZShjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpOiBWYWxpZGF0aW9uRXJyb3JzIHwgbnVsbCB7XG4gIGNvbnN0IHZhbHVlID0gY29udHJvbC52YWx1ZT8udHJpbSgpO1xuICBpZiAoIXZhbHVlKSByZXR1cm4gbnVsbDtcblxuICBjb25zdCBmdWxsTmFtZSA9IHZhbHVlLnNwbGl0KC9cXHMrLyk7XG4gIGNvbnN0IGhhc1Nob3J0UGFydCA9IGZ1bGxOYW1lLmZpbHRlcigocGFydDogYW55KSA9PiB7XG4gICAgcmV0dXJuIHBhcnQubGVuZ3RoID49IDI7XG4gIH0pLmxlbmd0aDtcblxuICBpZiAoaGFzU2hvcnRQYXJ0IDwgMikge1xuICAgIHJldHVybiB7IGZ1bGxOYW1lOiB0cnVlIH07XG4gIH1cblxuICByZXR1cm4gbnVsbDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNvbnRhaW5zTnVtYmVyKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCk6IFZhbGlkYXRpb25FcnJvcnMgfCBudWxsIHtcbiAgY29uc3QgdmFsdWUgPSBjb250cm9sLnZhbHVlPy50cmltKCk7XG4gIGlmICghdmFsdWUpIHJldHVybiBudWxsO1xuXG4gIHJldHVybiAvXFxkLy50ZXN0KHZhbHVlKSA/IHsgY29udGFpbnNOdW1iZXI6IHRydWUgfSA6IG51bGw7XG59XG5cbmV4cG9ydCBjbGFzcyBWYWxpZGF0b3JzIHtcbiAgc3RhdGljIGVtYWlsKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCk6IFZhbGlkYXRpb25FcnJvcnMgfCBudWxsIHtcbiAgICByZXR1cm4gZW1haWxWYWxpZGF0b3IoY29udHJvbCk7XG4gIH1cblxuICBzdGF0aWMgZGF0ZVJhbmdlKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCk6IFZhbGlkYXRpb25FcnJvcnMgfCBudWxsIHtcbiAgICByZXR1cm4gZGF0ZVJhbmdlVmFsaWRhdG9yKGNvbnRyb2wpO1xuICB9XG5cbiAgc3RhdGljIHVubG9ja1Nwb25zb3JSZWdpc3Rlcihjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpOiBWYWxpZGF0aW9uRXJyb3JzIHwgbnVsbCB7XG4gICAgcmV0dXJuIHJlZ2lzdGVyVmFsaWRhdG9yKGNvbnRyb2wsICdzcG9uc29yJyk7XG4gIH1cblxuICBzdGF0aWMgdW5sb2NrQnV5ZXJSZWdpc3Rlcihjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpOiBWYWxpZGF0aW9uRXJyb3JzIHwgbnVsbCB7XG4gICAgcmV0dXJuIHJlZ2lzdGVyVmFsaWRhdG9yKGNvbnRyb2wsICdidXllcicpO1xuICB9XG5cbiAgc3RhdGljIGRhdGVTdGFydEVuZChjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpOiBWYWxpZGF0aW9uRXJyb3JzIHwgbnVsbCB7XG4gICAgcmV0dXJuIGRhdGVTdGFydEVuZFZhbGlkYXRvcihjb250cm9sKTtcbiAgfVxuXG4gIHN0YXRpYyB1cmwoY29udHJvbDogQWJzdHJhY3RDb250cm9sKTogVmFsaWRhdGlvbkVycm9ycyB8IG51bGwge1xuICAgIHJldHVybiB1cmxWYWxpZGF0b3IoY29udHJvbCk7XG4gIH1cblxuICBzdGF0aWMgcGFzc3dvcmRDb25maXJtKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCk6IFZhbGlkYXRpb25FcnJvcnMgfCBudWxsIHtcbiAgICByZXR1cm4gcGFzc3dvcmRDb25maXJtVmFsaWRhdG9yKGNvbnRyb2wpO1xuICB9XG5cbiAgc3RhdGljIHRydWUoY29udHJvbDogQWJzdHJhY3RDb250cm9sKTogVmFsaWRhdGlvbkVycm9ycyB8IG51bGwge1xuICAgIHJldHVybiB0cnVlVmFsaWRhdG9yKGNvbnRyb2wpO1xuICB9XG5cbiAgc3RhdGljIGNvbWJvKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCk6IFZhbGlkYXRpb25FcnJvcnMgfCBudWxsIHtcbiAgICByZXR1cm4gY29tYm9WYWxpZGF0b3IoY29udHJvbCk7XG4gIH1cblxuICBzdGF0aWMgemlwQ29kZShjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpOiBWYWxpZGF0aW9uRXJyb3JzIHwgbnVsbCB7XG4gICAgcmV0dXJuIHppcENvZGVWYWxpZGF0b3IoY29udHJvbCk7XG4gIH1cblxuICBzdGF0aWMgemlwQ29kZUJ5Q291bnRyeShjb3VudHJ5OiBzdHJpbmcpIHtcbiAgICByZXR1cm4gKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCk6IFZhbGlkYXRpb25FcnJvcnMgfCBudWxsID0+IHtcbiAgICAgIHJldHVybiB6aXBDb2RlVmFsaWRhdG9yKGNvbnRyb2wsIGNvdW50cnkpO1xuICAgIH07XG4gIH1cblxuICBzdGF0aWMgZG9jdW1lbnRCUihjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpOiBWYWxpZGF0aW9uRXJyb3JzIHwgbnVsbCB7XG4gICAgcmV0dXJuIGRvY3VtZW50VmFsaWRhdG9yKGNvbnRyb2wsICdCUicpO1xuICB9XG5cbiAgc3RhdGljIGRvY3VtZW50Q0woY29udHJvbDogQWJzdHJhY3RDb250cm9sKTogVmFsaWRhdGlvbkVycm9ycyB8IG51bGwge1xuICAgIHJldHVybiBkb2N1bWVudFZhbGlkYXRvcihjb250cm9sLCAnQ0wnKTtcbiAgfVxuXG4gIHN0YXRpYyBkb2N1bWVudE1YKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCk6IFZhbGlkYXRpb25FcnJvcnMgfCBudWxsIHtcbiAgICByZXR1cm4gZG9jdW1lbnRWYWxpZGF0b3IoY29udHJvbCwgJ01YJyk7XG4gIH1cblxuICBzdGF0aWMgZGF0ZShjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpOiBWYWxpZGF0aW9uRXJyb3JzIHwgbnVsbCB7XG4gICAgcmV0dXJuIGRhdGVWYWxpZGF0b3IoY29udHJvbCk7XG4gIH1cblxuICBzdGF0aWMgbWluWWVhcnMocGFyYW06IG51bWJlcik6IFZhbGlkYXRpb25FcnJvcnMgfCBudWxsIHtcbiAgICByZXR1cm4gKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCk6IFZhbGlkYXRpb25FcnJvcnMgfCBudWxsID0+IHtcbiAgICAgIHJldHVybiBtaW5ZZWFyc1ZhbGlkYXRvcihwYXJhbSwgY29udHJvbCk7XG4gICAgfTtcbiAgfVxuXG4gIHN0YXRpYyBncmVhdGVyVGhhblplcm8oY29udHJvbDogQWJzdHJhY3RDb250cm9sKTogVmFsaWRhdGlvbkVycm9ycyB8IG51bGwge1xuICAgIHJldHVybiB2YWx1ZUdyZWF0ZXJUaGFuWmVybyhjb250cm9sKTtcbiAgfVxuXG4gIHN0YXRpYyByZXF1aXJlZChjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpOiBWYWxpZGF0aW9uRXJyb3JzIHwgbnVsbCB7XG4gICAgcmV0dXJuIHJlcXVpcmVkV2l0aFRyaW1WYWxpZGF0b3IoY29udHJvbCk7XG4gIH1cblxuICBzdGF0aWMgZGlmZmVyZW50RnJvbVplcm8oY29udHJvbDogQWJzdHJhY3RDb250cm9sKTogVmFsaWRhdGlvbkVycm9ycyB8IG51bGwge1xuICAgIHJldHVybiBkaWZmZXJlbnRGcm9tWmVybyhjb250cm9sKTtcbiAgfVxuXG4gIHN0YXRpYyBkb2N1bWVudFZhbGlkYXRvckJ5VHlwZSh0eXBlOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCk6IFZhbGlkYXRpb25FcnJvcnMgfCBudWxsID0+IHtcbiAgICAgIHJldHVybiBkb2N1bWVudFZhbGlkYXRvckJ5VHlwZSh0eXBlLCBjb250cm9sKTtcbiAgICB9O1xuICB9XG5cbiAgc3RhdGljIHZhbGlkYXRlRnVsbE5hbWUoY29udHJvbDogQWJzdHJhY3RDb250cm9sKTogVmFsaWRhdGlvbkVycm9ycyB8IG51bGwge1xuICAgIHJldHVybiB2YWxpZGF0ZUZ1bGxOYW1lKGNvbnRyb2wpO1xuICB9XG5cbiAgc3RhdGljIGNvbnRhaW5zTnVtYmVyKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCk6IFZhbGlkYXRpb25FcnJvcnMgfCBudWxsIHtcbiAgICByZXR1cm4gY29udGFpbnNOdW1iZXIoY29udHJvbCk7XG4gIH1cbn1cbiJdfQ==