@kaspernj/api-maker 1.0.2160 → 1.0.2162

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 (524) hide show
  1. package/build/api.d.ts +46 -34
  2. package/build/api.d.ts.map +1 -1
  3. package/build/api.js +32 -25
  4. package/build/attribute-not-loaded-error.d.ts.map +1 -1
  5. package/build/attribute-not-loaded-error.js +2 -1
  6. package/build/base-error.d.ts +49 -60
  7. package/build/base-error.d.ts.map +1 -1
  8. package/build/base-error.js +3 -2
  9. package/build/base-model/column.d.ts +2 -2
  10. package/build/base-model/column.d.ts.map +1 -1
  11. package/build/base-model/column.js +3 -2
  12. package/build/base-model/reflection.d.ts +8 -3
  13. package/build/base-model/reflection.d.ts.map +1 -1
  14. package/build/base-model/reflection.js +8 -3
  15. package/build/base-model/scope.d.ts +1 -1
  16. package/build/base-model/scope.d.ts.map +1 -1
  17. package/build/base-model/scope.js +3 -2
  18. package/build/base-model.d.ts +3801 -117
  19. package/build/base-model.d.ts.map +1 -1
  20. package/build/base-model.js +271 -143
  21. package/build/bootstrap/attribute-row.d.ts +12 -0
  22. package/build/bootstrap/attribute-row.d.ts.map +1 -1
  23. package/build/bootstrap/attribute-row.js +23 -5
  24. package/build/bootstrap/attribute-rows.d.ts +8 -0
  25. package/build/bootstrap/attribute-rows.d.ts.map +1 -1
  26. package/build/bootstrap/attribute-rows.js +14 -5
  27. package/build/bootstrap/card.d.ts +17 -0
  28. package/build/bootstrap/card.d.ts.map +1 -1
  29. package/build/bootstrap/card.js +30 -10
  30. package/build/bootstrap/checkbox.d.ts +16 -0
  31. package/build/bootstrap/checkbox.d.ts.map +1 -1
  32. package/build/bootstrap/checkbox.js +20 -2
  33. package/build/bootstrap/checkboxes.d.ts +31 -0
  34. package/build/bootstrap/checkboxes.d.ts.map +1 -1
  35. package/build/bootstrap/checkboxes.js +35 -3
  36. package/build/bootstrap/index.js +2 -1
  37. package/build/bootstrap/input.d.ts +24 -0
  38. package/build/bootstrap/input.d.ts.map +1 -1
  39. package/build/bootstrap/input.js +27 -2
  40. package/build/bootstrap/invalid-feedback.d.ts.map +1 -1
  41. package/build/bootstrap/invalid-feedback.js +2 -1
  42. package/build/bootstrap/paginate.d.ts +5 -0
  43. package/build/bootstrap/paginate.d.ts.map +1 -1
  44. package/build/bootstrap/paginate.js +9 -4
  45. package/build/bootstrap/radio-buttons.js +2 -1
  46. package/build/bootstrap/select.js +2 -1
  47. package/build/bootstrap/sort-link.d.ts +10 -0
  48. package/build/bootstrap/sort-link.d.ts.map +1 -1
  49. package/build/bootstrap/sort-link.js +15 -4
  50. package/build/cable-connection-pool.d.ts +201 -24
  51. package/build/cable-connection-pool.d.ts.map +1 -1
  52. package/build/cable-connection-pool.js +76 -16
  53. package/build/cable-subscription-pool.d.ts +186 -20
  54. package/build/cable-subscription-pool.d.ts.map +1 -1
  55. package/build/cable-subscription-pool.js +61 -22
  56. package/build/cable-subscription.d.ts.map +1 -1
  57. package/build/cable-subscription.js +3 -2
  58. package/build/cache-key-generator.d.ts +194 -20
  59. package/build/cache-key-generator.d.ts.map +1 -1
  60. package/build/cache-key-generator.js +63 -12
  61. package/build/can-can.d.ts +146 -29
  62. package/build/can-can.d.ts.map +1 -1
  63. package/build/can-can.js +105 -19
  64. package/build/channels-consumer.d.ts +23 -1
  65. package/build/channels-consumer.d.ts.map +1 -1
  66. package/build/channels-consumer.js +26 -8
  67. package/build/collection-loader.js +2 -1
  68. package/build/collection.d.ts +361 -370
  69. package/build/collection.d.ts.map +1 -1
  70. package/build/collection.js +59 -19
  71. package/build/command-execution.d.ts +50 -26
  72. package/build/command-execution.d.ts.map +1 -1
  73. package/build/command-execution.js +31 -13
  74. package/build/command-submit-data.d.ts +50 -37
  75. package/build/command-submit-data.d.ts.map +1 -1
  76. package/build/command-submit-data.js +35 -22
  77. package/build/commands-pool.d.ts +65 -27
  78. package/build/commands-pool.d.ts.map +1 -1
  79. package/build/commands-pool.js +67 -20
  80. package/build/compose.d.ts +8 -2
  81. package/build/compose.d.ts.map +1 -1
  82. package/build/compose.js +9 -2
  83. package/build/config.d.ts +31 -15
  84. package/build/config.d.ts.map +1 -1
  85. package/build/config.js +60 -23
  86. package/build/custom-error.d.ts.map +1 -1
  87. package/build/custom-error.js +2 -1
  88. package/build/data-set-to-attributes.d.ts +14 -2
  89. package/build/data-set-to-attributes.d.ts.map +1 -1
  90. package/build/data-set-to-attributes.js +12 -3
  91. package/build/deserializer.d.ts +116 -2
  92. package/build/deserializer.d.ts.map +1 -1
  93. package/build/deserializer.js +13 -2
  94. package/build/destroy-error.d.ts.map +1 -1
  95. package/build/destroy-error.js +2 -1
  96. package/build/devise.d.ts +638 -39
  97. package/build/devise.d.ts.map +1 -1
  98. package/build/devise.js +97 -28
  99. package/build/draggable-sort/controller.d.ts +126 -35
  100. package/build/draggable-sort/controller.d.ts.map +1 -1
  101. package/build/draggable-sort/controller.js +100 -28
  102. package/build/draggable-sort/index.d.ts +55 -0
  103. package/build/draggable-sort/index.d.ts.map +1 -1
  104. package/build/draggable-sort/index.js +71 -3
  105. package/build/draggable-sort/item.d.ts +54 -0
  106. package/build/draggable-sort/item.d.ts.map +1 -1
  107. package/build/draggable-sort/item.js +94 -6
  108. package/build/error-logger.d.ts +30 -14
  109. package/build/error-logger.d.ts.map +1 -1
  110. package/build/error-logger.js +22 -11
  111. package/build/event-connection.d.ts.map +1 -1
  112. package/build/event-connection.js +3 -2
  113. package/build/event-emitter-listener.d.ts.map +1 -1
  114. package/build/event-emitter-listener.js +2 -1
  115. package/build/event-model-class.d.ts.map +1 -1
  116. package/build/event-model-class.js +2 -1
  117. package/build/events.d.ts.map +1 -1
  118. package/build/events.js +2 -1
  119. package/build/form.d.ts +23 -0
  120. package/build/form.d.ts.map +1 -1
  121. package/build/form.js +16 -4
  122. package/build/history-expo.d.ts +6 -2
  123. package/build/history-expo.d.ts.map +1 -1
  124. package/build/history-expo.js +5 -2
  125. package/build/history-react-native.d.ts +6 -2
  126. package/build/history-react-native.d.ts.map +1 -1
  127. package/build/history-react-native.js +5 -2
  128. package/build/history.js +2 -1
  129. package/build/index.d.ts.map +1 -1
  130. package/build/index.js +2 -1
  131. package/build/inputs/attachment.d.ts +11 -0
  132. package/build/inputs/attachment.d.ts.map +1 -1
  133. package/build/inputs/attachment.js +17 -4
  134. package/build/inputs/auto-submit.d.ts +41 -13
  135. package/build/inputs/auto-submit.d.ts.map +1 -1
  136. package/build/inputs/auto-submit.js +16 -4
  137. package/build/inputs/checkbox.d.ts +15 -0
  138. package/build/inputs/checkbox.d.ts.map +1 -1
  139. package/build/inputs/checkbox.js +22 -6
  140. package/build/inputs/checkboxes.d.ts +16 -0
  141. package/build/inputs/checkboxes.d.ts.map +1 -1
  142. package/build/inputs/checkboxes.js +20 -4
  143. package/build/inputs/id-for-component.d.ts +21 -2
  144. package/build/inputs/id-for-component.d.ts.map +1 -1
  145. package/build/inputs/id-for-component.js +9 -2
  146. package/build/inputs/input-wrapper.d.ts.map +1 -1
  147. package/build/inputs/input-wrapper.js +2 -1
  148. package/build/inputs/input.d.ts +36 -0
  149. package/build/inputs/input.d.ts.map +1 -1
  150. package/build/inputs/input.js +26 -7
  151. package/build/inputs/money.d.ts +2 -0
  152. package/build/inputs/money.d.ts.map +1 -1
  153. package/build/inputs/money.js +6 -3
  154. package/build/inputs/name-for-component.d.ts +21 -2
  155. package/build/inputs/name-for-component.d.ts.map +1 -1
  156. package/build/inputs/name-for-component.js +9 -2
  157. package/build/inputs/select.d.ts +33 -0
  158. package/build/inputs/select.d.ts.map +1 -1
  159. package/build/inputs/select.js +21 -4
  160. package/build/instance-of-class-name.d.ts +7 -2
  161. package/build/instance-of-class-name.d.ts.map +1 -1
  162. package/build/instance-of-class-name.js +8 -4
  163. package/build/is-expo.d.ts.map +1 -1
  164. package/build/is-expo.js +2 -1
  165. package/build/key-value-store.d.ts +24 -14
  166. package/build/key-value-store.d.ts.map +1 -1
  167. package/build/key-value-store.js +22 -12
  168. package/build/link.d.ts +30 -0
  169. package/build/link.d.ts.map +1 -1
  170. package/build/link.js +76 -30
  171. package/build/logger.d.ts +10 -6
  172. package/build/logger.d.ts.map +1 -1
  173. package/build/logger.js +7 -4
  174. package/build/merge-styles.d.ts +10 -2
  175. package/build/merge-styles.d.ts.map +1 -1
  176. package/build/merge-styles.js +10 -3
  177. package/build/modal.d.ts +2 -0
  178. package/build/modal.d.ts.map +1 -1
  179. package/build/modal.js +6 -4
  180. package/build/model-class-require.d.ts +4 -2
  181. package/build/model-class-require.d.ts.map +1 -1
  182. package/build/model-class-require.js +4 -2
  183. package/build/model-events.d.ts +139 -346
  184. package/build/model-events.d.ts.map +1 -1
  185. package/build/model-events.js +21 -9
  186. package/build/model-name.d.ts +21 -7
  187. package/build/model-name.d.ts.map +1 -1
  188. package/build/model-name.js +12 -2
  189. package/build/model-prop-type.d.ts +533 -26
  190. package/build/model-prop-type.d.ts.map +1 -1
  191. package/build/model-prop-type.js +69 -11
  192. package/build/model-recipes-loader.d.ts +7 -3
  193. package/build/model-recipes-loader.d.ts.map +1 -1
  194. package/build/model-recipes-loader.js +4 -2
  195. package/build/model-recipes-model-loader.d.ts +189 -1493
  196. package/build/model-recipes-model-loader.d.ts.map +1 -1
  197. package/build/model-recipes-model-loader.js +119 -17
  198. package/build/models-response-reader.d.ts +600 -195
  199. package/build/models-response-reader.d.ts.map +1 -1
  200. package/build/models-response-reader.js +12 -4
  201. package/build/models.d.ts +438 -1
  202. package/build/models.d.ts.map +1 -1
  203. package/build/models.js +2 -1
  204. package/build/money-formatter.d.ts +25 -31
  205. package/build/money-formatter.d.ts.map +1 -1
  206. package/build/money-formatter.js +11 -8
  207. package/build/not-loaded-error.d.ts.map +1 -1
  208. package/build/not-loaded-error.js +2 -1
  209. package/build/params.d.ts +25 -17
  210. package/build/params.d.ts.map +1 -1
  211. package/build/params.js +19 -15
  212. package/build/preloaded.d.ts +61 -64
  213. package/build/preloaded.d.ts.map +1 -1
  214. package/build/preloaded.js +10 -4
  215. package/build/reset-realtime-runtime-state.d.ts.map +1 -1
  216. package/build/reset-realtime-runtime-state.js +2 -1
  217. package/build/resize-observer.d.ts.map +1 -1
  218. package/build/resize-observer.js +2 -1
  219. package/build/rest-props-validator.d.ts +2 -2
  220. package/build/rest-props-validator.d.ts.map +1 -1
  221. package/build/rest-props-validator.js +3 -2
  222. package/build/result.d.ts +142 -175
  223. package/build/result.d.ts.map +1 -1
  224. package/build/result.js +3 -2
  225. package/build/router/route.d.ts +50 -0
  226. package/build/router/route.d.ts.map +1 -1
  227. package/build/router/route.js +39 -10
  228. package/build/router/switch.d.ts +37 -1
  229. package/build/router/switch.d.ts.map +1 -1
  230. package/build/router/switch.js +29 -7
  231. package/build/router.d.ts +20 -0
  232. package/build/router.d.ts.map +1 -1
  233. package/build/router.js +15 -4
  234. package/build/routes-native.d.ts +13 -13
  235. package/build/routes-native.d.ts.map +1 -1
  236. package/build/routes-native.js +23 -11
  237. package/build/routes.d.ts +17 -9
  238. package/build/routes.d.ts.map +1 -1
  239. package/build/routes.js +7 -2
  240. package/build/run-last.d.ts.map +1 -1
  241. package/build/run-last.js +2 -1
  242. package/build/serializer.d.ts +44 -12
  243. package/build/serializer.d.ts.map +1 -1
  244. package/build/serializer.js +36 -7
  245. package/build/services.d.ts +29 -4
  246. package/build/services.d.ts.map +1 -1
  247. package/build/services.js +16 -4
  248. package/build/session-status-updater.d.ts +73 -25
  249. package/build/session-status-updater.d.ts.map +1 -1
  250. package/build/session-status-updater.js +52 -14
  251. package/build/source-maps-loader.d.ts +88 -33
  252. package/build/source-maps-loader.d.ts.map +1 -1
  253. package/build/source-maps-loader.js +74 -18
  254. package/build/super-admin/config-reader.d.ts.map +1 -1
  255. package/build/super-admin/config-reader.js +11 -16
  256. package/build/super-admin/edit-page/edit-attribute-checkbox.d.ts +10 -0
  257. package/build/super-admin/edit-page/edit-attribute-checkbox.d.ts.map +1 -1
  258. package/build/super-admin/edit-page/edit-attribute-checkbox.js +16 -4
  259. package/build/super-admin/edit-page/edit-attribute-content.d.ts +9 -0
  260. package/build/super-admin/edit-page/edit-attribute-content.d.ts.map +1 -1
  261. package/build/super-admin/edit-page/edit-attribute-content.js +15 -4
  262. package/build/super-admin/edit-page/edit-attribute-input.d.ts +8 -0
  263. package/build/super-admin/edit-page/edit-attribute-input.d.ts.map +1 -1
  264. package/build/super-admin/edit-page/edit-attribute-input.js +13 -4
  265. package/build/super-admin/edit-page/edit-attribute.d.ts +6 -0
  266. package/build/super-admin/edit-page/edit-attribute.d.ts.map +1 -1
  267. package/build/super-admin/edit-page/edit-attribute.js +11 -4
  268. package/build/super-admin/edit-page.d.ts +5 -0
  269. package/build/super-admin/edit-page.d.ts.map +1 -1
  270. package/build/super-admin/edit-page.js +11 -5
  271. package/build/super-admin/has-edit-config.d.ts.map +1 -1
  272. package/build/super-admin/has-edit-config.js +2 -1
  273. package/build/super-admin/index-page.d.ts +4 -0
  274. package/build/super-admin/index-page.d.ts.map +1 -1
  275. package/build/super-admin/index-page.js +9 -4
  276. package/build/super-admin/index.d.ts +4 -0
  277. package/build/super-admin/index.d.ts.map +1 -1
  278. package/build/super-admin/index.js +12 -6
  279. package/build/super-admin/layout/header/index.d.ts +4 -0
  280. package/build/super-admin/layout/header/index.d.ts.map +1 -1
  281. package/build/super-admin/layout/header/index.js +13 -8
  282. package/build/super-admin/layout/index.d.ts +24 -0
  283. package/build/super-admin/layout/index.d.ts.map +1 -1
  284. package/build/super-admin/layout/index.js +33 -5
  285. package/build/super-admin/layout/menu/index.d.ts +2 -0
  286. package/build/super-admin/layout/menu/index.d.ts.map +1 -1
  287. package/build/super-admin/layout/menu/index.js +8 -6
  288. package/build/super-admin/layout/menu/menu-content.d.ts +2 -0
  289. package/build/super-admin/layout/menu/menu-content.d.ts.map +1 -1
  290. package/build/super-admin/layout/menu/menu-content.js +6 -4
  291. package/build/super-admin/layout/menu/menu-item.d.ts +9 -0
  292. package/build/super-admin/layout/menu/menu-item.d.ts.map +1 -1
  293. package/build/super-admin/layout/menu/menu-item.js +15 -4
  294. package/build/super-admin/layout/no-access.d.ts +2 -0
  295. package/build/super-admin/layout/no-access.d.ts.map +1 -1
  296. package/build/super-admin/layout/no-access.js +7 -5
  297. package/build/super-admin/model-class-table.d.ts +4 -0
  298. package/build/super-admin/model-class-table.d.ts.map +1 -1
  299. package/build/super-admin/model-class-table.js +9 -4
  300. package/build/super-admin/models.d.ts.map +1 -1
  301. package/build/super-admin/models.js +2 -1
  302. package/build/super-admin/show-nav.d.ts +2 -0
  303. package/build/super-admin/show-nav.d.ts.map +1 -1
  304. package/build/super-admin/show-nav.js +6 -4
  305. package/build/super-admin/show-page/belongs-to-attribute-row.d.ts +17 -1
  306. package/build/super-admin/show-page/belongs-to-attribute-row.d.ts.map +1 -1
  307. package/build/super-admin/show-page/belongs-to-attribute-row.js +14 -5
  308. package/build/super-admin/show-page/index.d.ts +4 -0
  309. package/build/super-admin/show-page/index.d.ts.map +1 -1
  310. package/build/super-admin/show-page/index.js +9 -4
  311. package/build/super-admin/show-reflection-actions.d.ts +6 -0
  312. package/build/super-admin/show-reflection-actions.d.ts.map +1 -1
  313. package/build/super-admin/show-reflection-actions.js +11 -4
  314. package/build/super-admin/show-reflection-link.d.ts +4 -0
  315. package/build/super-admin/show-reflection-link.d.ts.map +1 -1
  316. package/build/super-admin/show-reflection-link.js +9 -4
  317. package/build/super-admin/show-reflection-page.d.ts +5 -0
  318. package/build/super-admin/show-reflection-page.d.ts.map +1 -1
  319. package/build/super-admin/show-reflection-page.js +10 -4
  320. package/build/table/column-content.d.ts +155 -19
  321. package/build/table/column-content.d.ts.map +1 -1
  322. package/build/table/column-content.js +55 -12
  323. package/build/table/column-identifier.d.ts +11 -2
  324. package/build/table/column-identifier.d.ts.map +1 -1
  325. package/build/table/column-identifier.js +7 -2
  326. package/build/table/column-visible.d.ts +11 -2
  327. package/build/table/column-visible.d.ts.map +1 -1
  328. package/build/table/column-visible.js +8 -2
  329. package/build/table/components/column.d.ts +2 -0
  330. package/build/table/components/column.d.ts.map +1 -1
  331. package/build/table/components/column.js +6 -4
  332. package/build/table/components/flat-list.d.ts +2 -0
  333. package/build/table/components/flat-list.d.ts.map +1 -1
  334. package/build/table/components/flat-list.js +6 -4
  335. package/build/table/components/header.d.ts +2 -0
  336. package/build/table/components/header.d.ts.map +1 -1
  337. package/build/table/components/header.js +6 -4
  338. package/build/table/components/row.d.ts +2 -0
  339. package/build/table/components/row.d.ts.map +1 -1
  340. package/build/table/components/row.js +6 -4
  341. package/build/table/filters/attribute-element.d.ts +2 -0
  342. package/build/table/filters/attribute-element.d.ts.map +1 -1
  343. package/build/table/filters/attribute-element.js +7 -7
  344. package/build/table/filters/filter-form.d.ts +58 -0
  345. package/build/table/filters/filter-form.d.ts.map +1 -1
  346. package/build/table/filters/filter-form.js +72 -9
  347. package/build/table/filters/filter.d.ts +2 -0
  348. package/build/table/filters/filter.d.ts.map +1 -1
  349. package/build/table/filters/filter.js +6 -4
  350. package/build/table/filters/index.d.ts +127 -0
  351. package/build/table/filters/index.d.ts.map +1 -1
  352. package/build/table/filters/index.js +21 -4
  353. package/build/table/filters/load-search-modal.d.ts +130 -0
  354. package/build/table/filters/load-search-modal.d.ts.map +1 -1
  355. package/build/table/filters/load-search-modal.js +28 -6
  356. package/build/table/filters/reflection-element.d.ts +2 -0
  357. package/build/table/filters/reflection-element.d.ts.map +1 -1
  358. package/build/table/filters/reflection-element.js +6 -4
  359. package/build/table/filters/save-search-modal.d.ts +134 -0
  360. package/build/table/filters/save-search-modal.d.ts.map +1 -1
  361. package/build/table/filters/save-search-modal.js +36 -5
  362. package/build/table/filters/scope-element.d.ts +6 -0
  363. package/build/table/filters/scope-element.d.ts.map +1 -1
  364. package/build/table/filters/scope-element.js +13 -8
  365. package/build/table/header-column-content.d.ts +7 -0
  366. package/build/table/header-column-content.d.ts.map +1 -1
  367. package/build/table/header-column-content.js +12 -4
  368. package/build/table/header-column.d.ts +50 -0
  369. package/build/table/header-column.d.ts.map +1 -1
  370. package/build/table/header-column.js +32 -5
  371. package/build/table/header-select.d.ts +18 -0
  372. package/build/table/header-select.d.ts.map +1 -1
  373. package/build/table/header-select.js +19 -4
  374. package/build/table/model-callback-args.d.ts +116 -3
  375. package/build/table/model-callback-args.d.ts.map +1 -1
  376. package/build/table/model-callback-args.js +10 -3
  377. package/build/table/model-column.d.ts +136 -0
  378. package/build/table/model-column.d.ts.map +1 -1
  379. package/build/table/model-column.js +27 -4
  380. package/build/table/model-row.d.ts +19 -0
  381. package/build/table/model-row.d.ts.map +1 -1
  382. package/build/table/model-row.js +24 -4
  383. package/build/table/select-calculator.d.ts +37 -2
  384. package/build/table/select-calculator.d.ts.map +1 -1
  385. package/build/table/select-calculator.js +29 -6
  386. package/build/table/settings/column-row.d.ts +6 -0
  387. package/build/table/settings/column-row.d.ts.map +1 -1
  388. package/build/table/settings/column-row.js +13 -12
  389. package/build/table/settings/download-action.d.ts +5 -0
  390. package/build/table/settings/download-action.d.ts.map +1 -1
  391. package/build/table/settings/download-action.js +10 -4
  392. package/build/table/settings/index.d.ts +5 -0
  393. package/build/table/settings/index.d.ts.map +1 -1
  394. package/build/table/settings/index.js +10 -4
  395. package/build/table/should-render-loading-content.d.ts +2 -2
  396. package/build/table/should-render-loading-content.d.ts.map +1 -1
  397. package/build/table/should-render-loading-content.js +3 -2
  398. package/build/table/table-settings.d.ts +236 -43
  399. package/build/table/table-settings.d.ts.map +1 -1
  400. package/build/table/table-settings.js +104 -20
  401. package/build/table/table.d.ts +271 -0
  402. package/build/table/table.d.ts.map +1 -1
  403. package/build/table/table.js +167 -16
  404. package/build/table/use-sorting.d.ts +10 -8
  405. package/build/table/use-sorting.d.ts.map +1 -1
  406. package/build/table/use-sorting.js +16 -8
  407. package/build/table/widths.d.ts +55 -8
  408. package/build/table/widths.d.ts.map +1 -1
  409. package/build/table/widths.js +25 -2
  410. package/build/table/worker-plugins-check-all-checkbox.d.ts +18 -0
  411. package/build/table/worker-plugins-check-all-checkbox.d.ts.map +1 -1
  412. package/build/table/worker-plugins-check-all-checkbox.js +25 -5
  413. package/build/table/worker-plugins-checkbox.d.ts +5 -0
  414. package/build/table/worker-plugins-checkbox.d.ts.map +1 -1
  415. package/build/table/worker-plugins-checkbox.js +10 -4
  416. package/build/translated-attributes.d.ts +7 -2
  417. package/build/translated-attributes.d.ts.map +1 -1
  418. package/build/translated-attributes.js +8 -2
  419. package/build/translated-collections.d.ts +11 -2
  420. package/build/translated-collections.d.ts.map +1 -1
  421. package/build/translated-collections.js +9 -3
  422. package/build/updated-attribute.d.ts.map +1 -1
  423. package/build/updated-attribute.js +2 -1
  424. package/build/url-encode.d.ts.map +1 -1
  425. package/build/url-encode.js +2 -1
  426. package/build/use-can-can.d.ts +2 -2
  427. package/build/use-can-can.d.ts.map +1 -1
  428. package/build/use-can-can.js +27 -12
  429. package/build/use-collection.d.ts +167 -121
  430. package/build/use-collection.d.ts.map +1 -1
  431. package/build/use-collection.js +113 -44
  432. package/build/use-created-event.d.ts +120 -11
  433. package/build/use-created-event.d.ts.map +1 -1
  434. package/build/use-created-event.js +10 -7
  435. package/build/use-current-user-context.d.ts +2 -2
  436. package/build/use-current-user-context.d.ts.map +1 -1
  437. package/build/use-current-user-context.js +3 -2
  438. package/build/use-current-user.d.ts +86 -70
  439. package/build/use-current-user.d.ts.map +1 -1
  440. package/build/use-current-user.js +36 -8
  441. package/build/use-destroyed-event.d.ts +117 -8
  442. package/build/use-destroyed-event.d.ts.map +1 -1
  443. package/build/use-destroyed-event.js +29 -22
  444. package/build/use-input.d.ts +74 -12
  445. package/build/use-input.d.ts.map +1 -1
  446. package/build/use-input.js +33 -5
  447. package/build/use-model-class-event.d.ts +124 -10
  448. package/build/use-model-class-event.d.ts.map +1 -1
  449. package/build/use-model-class-event.js +26 -16
  450. package/build/use-model-event.d.ts +121 -8
  451. package/build/use-model-event.d.ts.map +1 -1
  452. package/build/use-model-event.js +24 -19
  453. package/build/use-model.d.ts +162 -244
  454. package/build/use-model.d.ts.map +1 -1
  455. package/build/use-model.js +85 -32
  456. package/build/use-resize-observer.d.ts.map +1 -1
  457. package/build/use-resize-observer.js +2 -1
  458. package/build/use-router.d.ts.map +1 -1
  459. package/build/use-router.js +2 -1
  460. package/build/use-screen-layout.d.ts +7 -2
  461. package/build/use-screen-layout.d.ts.map +1 -1
  462. package/build/use-screen-layout.js +8 -5
  463. package/build/use-shape.js +2 -1
  464. package/build/use-styles.d.ts +11 -5
  465. package/build/use-styles.d.ts.map +1 -1
  466. package/build/use-styles.js +16 -9
  467. package/build/use-updated-event.d.ts +66 -182
  468. package/build/use-updated-event.d.ts.map +1 -1
  469. package/build/use-updated-event.js +22 -18
  470. package/build/use-validation-errors.d.ts.map +1 -1
  471. package/build/use-validation-errors.js +2 -1
  472. package/build/utils/button.d.ts +14 -0
  473. package/build/utils/button.d.ts.map +1 -1
  474. package/build/utils/button.js +24 -7
  475. package/build/utils/card.d.ts +9 -0
  476. package/build/utils/card.d.ts.map +1 -1
  477. package/build/utils/card.js +13 -2
  478. package/build/utils/checkbox.d.ts +12 -0
  479. package/build/utils/checkbox.d.ts.map +1 -1
  480. package/build/utils/checkbox.js +18 -4
  481. package/build/utils/checkboxes.d.ts +25 -0
  482. package/build/utils/checkboxes.d.ts.map +1 -1
  483. package/build/utils/checkboxes.js +29 -3
  484. package/build/utils/default-style.d.ts +10 -4
  485. package/build/utils/default-style.d.ts.map +1 -1
  486. package/build/utils/default-style.js +12 -4
  487. package/build/utils/header.d.ts +6 -1
  488. package/build/utils/header.d.ts.map +1 -1
  489. package/build/utils/header.js +4 -2
  490. package/build/utils/icon.d.ts +7 -6
  491. package/build/utils/icon.d.ts.map +1 -1
  492. package/build/utils/icon.js +12 -11
  493. package/build/utils/invalid-feedback.d.ts +4 -0
  494. package/build/utils/invalid-feedback.d.ts.map +1 -1
  495. package/build/utils/invalid-feedback.js +8 -2
  496. package/build/utils/modal.d.ts +2 -0
  497. package/build/utils/modal.d.ts.map +1 -1
  498. package/build/utils/modal.js +9 -7
  499. package/build/utils/text.d.ts +8 -1
  500. package/build/utils/text.d.ts.map +1 -1
  501. package/build/utils/text.js +9 -2
  502. package/build/validation-error.d.ts +5 -2
  503. package/build/validation-error.d.ts.map +1 -1
  504. package/build/validation-error.js +5 -2
  505. package/build/validation-errors.d.ts +57 -15
  506. package/build/validation-errors.d.ts.map +1 -1
  507. package/build/validation-errors.js +37 -8
  508. package/build/websocket-request-client.d.ts +61 -15
  509. package/build/websocket-request-client.d.ts.map +1 -1
  510. package/build/websocket-request-client.js +35 -9
  511. package/build/with-api-maker.d.ts.map +1 -1
  512. package/build/with-api-maker.js +2 -1
  513. package/build/with-collection.d.ts.map +1 -1
  514. package/build/with-collection.js +2 -1
  515. package/build/with-current-user.d.ts.map +1 -1
  516. package/build/with-current-user.js +2 -1
  517. package/build/with-model.d.ts.map +1 -1
  518. package/build/with-model.js +2 -1
  519. package/build/with-router.d.ts.map +1 -1
  520. package/build/with-router.js +2 -1
  521. package/package.json +4 -3
  522. package/build/base-component.d.ts +0 -5
  523. package/build/base-component.d.ts.map +0 -1
  524. package/build/base-component.js +0 -4
@@ -1,4 +1,6 @@
1
1
  declare const _default: React.NamedExoticComponent<Record<string, any>>;
2
2
  export default _default;
3
+ export type Props = Record<string, never>;
4
+ export type State = Record<string, never>;
3
5
  import React from "react";
4
6
  //# sourceMappingURL=row.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"row.d.ts","sourceRoot":"/src/","sources":["table/components/row.jsx"],"names":[],"mappings":";;kBAGkB,OAAO"}
1
+ {"version":3,"file":"row.d.ts","sourceRoot":"/src/","sources":["table/components/row.jsx"],"names":[],"mappings":";;oBAQc,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC;oBACrB,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC;kBANjB,OAAO"}
@@ -1,12 +1,14 @@
1
1
  import { jsx as _jsx } from "react/jsx-runtime";
2
+ // @ts-check
2
3
  /* eslint-disable sort-imports */
3
- import BaseComponent from "../../base-component";
4
4
  import memo from "set-state-compare/build/memo.js";
5
5
  import React from "react";
6
- import { shapeComponent } from "set-state-compare/build/shape-component.js";
6
+ import { ShapeComponent, shapeComponent } from "set-state-compare/build/shape-component.js";
7
7
  import { useBreakpoint } from "responsive-breakpoints";
8
8
  import { View } from "react-native";
9
- export default memo(shapeComponent(class SharedTableRow extends BaseComponent {
9
+ /** @typedef {Record<string, never>} Props */
10
+ /** @typedef {Record<string, never>} State */
11
+ export default memo(shapeComponent(/** @augments {ShapeComponent<Props, State>} */ class SharedTableRow extends ShapeComponent {
10
12
  render() {
11
13
  const { style, ...restProps } = this.props;
12
14
  const { name: breakpoint, smDown } = useBreakpoint();
@@ -17,4 +19,4 @@ export default memo(shapeComponent(class SharedTableRow extends BaseComponent {
17
19
  return (_jsx(View, { style: actualStyle, ...restProps }));
18
20
  }
19
21
  }));
20
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm93LmpzIiwic291cmNlUm9vdCI6Ii9zcmMvIiwic291cmNlcyI6WyJ0YWJsZS9jb21wb25lbnRzL3Jvdy5qc3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLGlDQUFpQztBQUNqQyxPQUFPLGFBQWEsTUFBTSxzQkFBc0IsQ0FBQTtBQUNoRCxPQUFPLElBQUksTUFBTSxpQ0FBaUMsQ0FBQTtBQUNsRCxPQUFPLEtBQUssTUFBTSxPQUFPLENBQUE7QUFDekIsT0FBTyxFQUFDLGNBQWMsRUFBQyxNQUFNLDRDQUE0QyxDQUFBO0FBQ3pFLE9BQU8sRUFBQyxhQUFhLEVBQUMsTUFBTSx3QkFBd0IsQ0FBQTtBQUNwRCxPQUFPLEVBQUMsSUFBSSxFQUFDLE1BQU0sY0FBYyxDQUFBO0FBRWpDLGVBQWUsSUFBSSxDQUFDLGNBQWMsQ0FBQyxNQUFNLGNBQWUsU0FBUSxhQUFhO0lBQzNFLE1BQU07UUFDSixNQUFNLEVBQUMsS0FBSyxFQUFFLEdBQUcsU0FBUyxFQUFDLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQTtRQUN4QyxNQUFNLEVBQUMsSUFBSSxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUMsR0FBRyxhQUFhLEVBQUUsQ0FBQTtRQUNsRCxNQUFNLFdBQVcsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFFLDJDQUEyQztRQUM1RTtZQUNFLGFBQWEsRUFBRSxVQUFVLElBQUksSUFBSSxJQUFJLE1BQU0sQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxLQUFLO1NBQy9ELEVBQ0QsS0FBSyxDQUNOLENBQUE7UUFFRCxPQUFPLENBQ0wsS0FBQyxJQUFJLElBQUMsS0FBSyxFQUFFLFdBQVcsS0FBTSxTQUFTLEdBQUksQ0FDNUMsQ0FBQTtJQUNILENBQUM7Q0FDRixDQUFDLENBQUMsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIHNvcnQtaW1wb3J0cyAqL1xuaW1wb3J0IEJhc2VDb21wb25lbnQgZnJvbSBcIi4uLy4uL2Jhc2UtY29tcG9uZW50XCJcbmltcG9ydCBtZW1vIGZyb20gXCJzZXQtc3RhdGUtY29tcGFyZS9idWlsZC9tZW1vLmpzXCJcbmltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIlxuaW1wb3J0IHtzaGFwZUNvbXBvbmVudH0gZnJvbSBcInNldC1zdGF0ZS1jb21wYXJlL2J1aWxkL3NoYXBlLWNvbXBvbmVudC5qc1wiXG5pbXBvcnQge3VzZUJyZWFrcG9pbnR9IGZyb20gXCJyZXNwb25zaXZlLWJyZWFrcG9pbnRzXCJcbmltcG9ydCB7Vmlld30gZnJvbSBcInJlYWN0LW5hdGl2ZVwiXG5cbmV4cG9ydCBkZWZhdWx0IG1lbW8oc2hhcGVDb21wb25lbnQoY2xhc3MgU2hhcmVkVGFibGVSb3cgZXh0ZW5kcyBCYXNlQ29tcG9uZW50IHtcbiAgcmVuZGVyKCkge1xuICAgIGNvbnN0IHtzdHlsZSwgLi4ucmVzdFByb3BzfSA9IHRoaXMucHJvcHNcbiAgICBjb25zdCB7bmFtZTogYnJlYWtwb2ludCwgc21Eb3dufSA9IHVzZUJyZWFrcG9pbnQoKVxuICAgIGNvbnN0IGFjdHVhbFN0eWxlID0gT2JqZWN0LmFzc2lnbiggLy8gZXNsaW50LWRpc2FibGUtbGluZSBwcmVmZXItb2JqZWN0LXNwcmVhZFxuICAgICAge1xuICAgICAgICBmbGV4RGlyZWN0aW9uOiBicmVha3BvaW50ID09IFwic21cIiB8fCBzbURvd24gPyBcImNvbHVtblwiIDogXCJyb3dcIlxuICAgICAgfSxcbiAgICAgIHN0eWxlXG4gICAgKVxuXG4gICAgcmV0dXJuIChcbiAgICAgIDxWaWV3IHN0eWxlPXthY3R1YWxTdHlsZX0gey4uLnJlc3RQcm9wc30gLz5cbiAgICApXG4gIH1cbn0pKVxuIl19
22
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm93LmpzIiwic291cmNlUm9vdCI6Ii9zcmMvIiwic291cmNlcyI6WyJ0YWJsZS9jb21wb25lbnRzL3Jvdy5qc3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLFlBQVk7QUFDWixpQ0FBaUM7QUFDakMsT0FBTyxJQUFJLE1BQU0saUNBQWlDLENBQUE7QUFDbEQsT0FBTyxLQUFLLE1BQU0sT0FBTyxDQUFBO0FBQ3pCLE9BQU8sRUFBQyxjQUFjLEVBQUUsY0FBYyxFQUFDLE1BQU0sNENBQTRDLENBQUE7QUFDekYsT0FBTyxFQUFDLGFBQWEsRUFBQyxNQUFNLHdCQUF3QixDQUFBO0FBQ3BELE9BQU8sRUFBQyxJQUFJLEVBQUMsTUFBTSxjQUFjLENBQUE7QUFFakMsNkNBQTZDO0FBQzdDLDZDQUE2QztBQUM3QyxlQUFlLElBQUksQ0FBQyxjQUFjLENBQUMsK0NBQStDLENBQUMsTUFBTSxjQUFlLFNBQVEsY0FBYztJQUM1SCxNQUFNO1FBQ0osTUFBTSxFQUFDLEtBQUssRUFBRSxHQUFHLFNBQVMsRUFBQyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUE7UUFDeEMsTUFBTSxFQUFDLElBQUksRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFDLEdBQUcsYUFBYSxFQUFFLENBQUE7UUFDbEQsTUFBTSxXQUFXLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBRSwyQ0FBMkM7UUFDNUU7WUFDRSxhQUFhLEVBQUUsVUFBVSxJQUFJLElBQUksSUFBSSxNQUFNLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsS0FBSztTQUMvRCxFQUNELEtBQUssQ0FDTixDQUFBO1FBRUQsT0FBTyxDQUNMLEtBQUMsSUFBSSxJQUFDLEtBQUssRUFBRSxXQUFXLEtBQU0sU0FBUyxHQUFJLENBQzVDLENBQUE7SUFDSCxDQUFDO0NBQ0YsQ0FBQyxDQUFDLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBAdHMtY2hlY2tcbi8qIGVzbGludC1kaXNhYmxlIHNvcnQtaW1wb3J0cyAqL1xuaW1wb3J0IG1lbW8gZnJvbSBcInNldC1zdGF0ZS1jb21wYXJlL2J1aWxkL21lbW8uanNcIlxuaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiXG5pbXBvcnQge1NoYXBlQ29tcG9uZW50LCBzaGFwZUNvbXBvbmVudH0gZnJvbSBcInNldC1zdGF0ZS1jb21wYXJlL2J1aWxkL3NoYXBlLWNvbXBvbmVudC5qc1wiXG5pbXBvcnQge3VzZUJyZWFrcG9pbnR9IGZyb20gXCJyZXNwb25zaXZlLWJyZWFrcG9pbnRzXCJcbmltcG9ydCB7Vmlld30gZnJvbSBcInJlYWN0LW5hdGl2ZVwiXG5cbi8qKiBAdHlwZWRlZiB7UmVjb3JkPHN0cmluZywgbmV2ZXI+fSBQcm9wcyAqL1xuLyoqIEB0eXBlZGVmIHtSZWNvcmQ8c3RyaW5nLCBuZXZlcj59IFN0YXRlICovXG5leHBvcnQgZGVmYXVsdCBtZW1vKHNoYXBlQ29tcG9uZW50KC8qKiBAYXVnbWVudHMge1NoYXBlQ29tcG9uZW50PFByb3BzLCBTdGF0ZT59ICovIGNsYXNzIFNoYXJlZFRhYmxlUm93IGV4dGVuZHMgU2hhcGVDb21wb25lbnQge1xuICByZW5kZXIoKSB7XG4gICAgY29uc3Qge3N0eWxlLCAuLi5yZXN0UHJvcHN9ID0gdGhpcy5wcm9wc1xuICAgIGNvbnN0IHtuYW1lOiBicmVha3BvaW50LCBzbURvd259ID0gdXNlQnJlYWtwb2ludCgpXG4gICAgY29uc3QgYWN0dWFsU3R5bGUgPSBPYmplY3QuYXNzaWduKCAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIHByZWZlci1vYmplY3Qtc3ByZWFkXG4gICAgICB7XG4gICAgICAgIGZsZXhEaXJlY3Rpb246IGJyZWFrcG9pbnQgPT0gXCJzbVwiIHx8IHNtRG93biA/IFwiY29sdW1uXCIgOiBcInJvd1wiXG4gICAgICB9LFxuICAgICAgc3R5bGVcbiAgICApXG5cbiAgICByZXR1cm4gKFxuICAgICAgPFZpZXcgc3R5bGU9e2FjdHVhbFN0eWxlfSB7Li4ucmVzdFByb3BzfSAvPlxuICAgIClcbiAgfVxufSkpXG4iXX0=
@@ -1,4 +1,6 @@
1
1
  declare const _default: React.NamedExoticComponent<Record<string, any>>;
2
2
  export default _default;
3
+ export type Props = Record<string, never>;
4
+ export type State = Record<string, never>;
3
5
  import React from "react";
4
6
  //# sourceMappingURL=attribute-element.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"attribute-element.d.ts","sourceRoot":"/src/","sources":["table/filters/attribute-element.jsx"],"names":[],"mappings":";;kBAOkB,OAAO"}
1
+ {"version":3,"file":"attribute-element.d.ts","sourceRoot":"/src/","sources":["table/filters/attribute-element.jsx"],"names":[],"mappings":";;oBAac,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC;oBACrB,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC;kBAPjB,OAAO"}
@@ -1,16 +1,18 @@
1
1
  import { jsx as _jsx } from "react/jsx-runtime";
2
+ // @ts-check
2
3
  /* eslint-disable new-cap, no-return-assign, sort-imports */
3
- import BaseComponent from "../../base-component";
4
4
  import { digg } from "diggerize";
5
5
  import PropTypes from "prop-types";
6
6
  import PropTypesExact from "prop-types-exact";
7
7
  import memo from "set-state-compare/build/memo.js";
8
8
  import { Pressable } from "react-native";
9
9
  import React from "react";
10
- import { shapeComponent } from "set-state-compare/build/shape-component.js";
10
+ import { ShapeComponent, shapeComponent } from "set-state-compare/build/shape-component.js";
11
11
  import Text from "../../utils/text";
12
12
  const dataSets = {};
13
- export default memo(shapeComponent(class AttributeElement extends BaseComponent {
13
+ /** @typedef {Record<string, never>} Props */
14
+ /** @typedef {Record<string, never>} State */
15
+ export default memo(shapeComponent(/** @augments {ShapeComponent<Props, State>} */ class AttributeElement extends ShapeComponent {
14
16
  static propTypes = PropTypesExact({
15
17
  active: PropTypes.bool.isRequired,
16
18
  attribute: PropTypes.object.isRequired,
@@ -20,9 +22,7 @@ export default memo(shapeComponent(class AttributeElement extends BaseComponent
20
22
  });
21
23
  render() {
22
24
  const { active, attribute, modelClassName } = this.p;
23
- const style = {};
24
- if (active)
25
- style.fontWeight = "bold";
25
+ const style = active ? /** @type {import("react-native").TextStyle} */ ({ fontWeight: "bold" }) : undefined;
26
26
  return (_jsx(Pressable, { dataSet: dataSets[`attribute-${digg(attribute, "attributeName")}-${modelClassName}`] ||= {
27
27
  class: "attribute-element",
28
28
  attributeName: digg(attribute, "attributeName"),
@@ -34,4 +34,4 @@ export default memo(shapeComponent(class AttributeElement extends BaseComponent
34
34
  this.p.onClick({ attribute: this.p.attribute });
35
35
  };
36
36
  }));
37
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXR0cmlidXRlLWVsZW1lbnQuanMiLCJzb3VyY2VSb290IjoiL3NyYy8iLCJzb3VyY2VzIjpbInRhYmxlL2ZpbHRlcnMvYXR0cmlidXRlLWVsZW1lbnQuanN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSw0REFBNEQ7QUFDNUQsT0FBTyxhQUFhLE1BQU0sc0JBQXNCLENBQUE7QUFDaEQsT0FBTyxFQUFDLElBQUksRUFBQyxNQUFNLFdBQVcsQ0FBQTtBQUM5QixPQUFPLFNBQVMsTUFBTSxZQUFZLENBQUE7QUFDbEMsT0FBTyxjQUFjLE1BQU0sa0JBQWtCLENBQUE7QUFDN0MsT0FBTyxJQUFJLE1BQU0saUNBQWlDLENBQUE7QUFDbEQsT0FBTyxFQUFDLFNBQVMsRUFBQyxNQUFNLGNBQWMsQ0FBQTtBQUN0QyxPQUFPLEtBQUssTUFBTSxPQUFPLENBQUE7QUFDekIsT0FBTyxFQUFDLGNBQWMsRUFBQyxNQUFNLDRDQUE0QyxDQUFBO0FBQ3pFLE9BQU8sSUFBSSxNQUFNLGtCQUFrQixDQUFBO0FBRW5DLE1BQU0sUUFBUSxHQUFHLEVBQUUsQ0FBQTtBQUVuQixlQUFlLElBQUksQ0FBQyxjQUFjLENBQUMsTUFBTSxnQkFBaUIsU0FBUSxhQUFhO0lBQzdFLE1BQU0sQ0FBQyxTQUFTLEdBQUcsY0FBYyxDQUFDO1FBQ2hDLE1BQU0sRUFBRSxTQUFTLENBQUMsSUFBSSxDQUFDLFVBQVU7UUFDakMsU0FBUyxFQUFFLFNBQVMsQ0FBQyxNQUFNLENBQUMsVUFBVTtRQUN0QyxjQUFjLEVBQUUsU0FBUyxDQUFDLE1BQU0sQ0FBQyxVQUFVO1FBQzNDLE1BQU0sRUFBRSxTQUFTLENBQUMsTUFBTTtRQUN4QixPQUFPLEVBQUUsU0FBUyxDQUFDLElBQUksQ0FBQyxVQUFVO0tBQ25DLENBQUMsQ0FBQTtJQUVGLE1BQU07UUFDSixNQUFNLEVBQUMsTUFBTSxFQUFFLFNBQVMsRUFBRSxjQUFjLEVBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFBO1FBQ2xELE1BQU0sS0FBSyxHQUFHLEVBQUUsQ0FBQTtRQUVoQixJQUFJLE1BQU07WUFBRSxLQUFLLENBQUMsVUFBVSxHQUFHLE1BQU0sQ0FBQTtRQUVyQyxPQUFPLENBQ0wsS0FBQyxTQUFTLElBQ1IsT0FBTyxFQUFFLFFBQVEsQ0FBQyxhQUFhLElBQUksQ0FBQyxTQUFTLEVBQUUsZUFBZSxDQUFDLElBQUksY0FBYyxFQUFFLENBQUMsS0FBSztnQkFDdkYsS0FBSyxFQUFFLG1CQUFtQjtnQkFDMUIsYUFBYSxFQUFFLElBQUksQ0FBQyxTQUFTLEVBQUUsZUFBZSxDQUFDO2dCQUMvQyxVQUFVLEVBQUUsY0FBYzthQUMzQixFQUNELE9BQU8sRUFBRSxJQUFJLENBQUMsRUFBRSxDQUFDLGtCQUFrQixZQUVuQyxLQUFDLElBQUksSUFBQyxLQUFLLEVBQUUsS0FBSyxZQUNmLElBQUksQ0FBQyxTQUFTLEVBQUUsV0FBVyxDQUFDLEdBQ3hCLEdBQ0csQ0FDYixDQUFBO0lBQ0gsQ0FBQztJQUVELGtCQUFrQixHQUFHLENBQUMsQ0FBQyxFQUFFLEVBQUU7UUFDekIsQ0FBQyxDQUFDLGNBQWMsRUFBRSxDQUFBO1FBRWxCLElBQUksQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLEVBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsU0FBUyxFQUFDLENBQUMsQ0FBQTtJQUMvQyxDQUFDLENBQUE7Q0FDRixDQUFDLENBQUMsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIG5ldy1jYXAsIG5vLXJldHVybi1hc3NpZ24sIHNvcnQtaW1wb3J0cyAqL1xuaW1wb3J0IEJhc2VDb21wb25lbnQgZnJvbSBcIi4uLy4uL2Jhc2UtY29tcG9uZW50XCJcbmltcG9ydCB7ZGlnZ30gZnJvbSBcImRpZ2dlcml6ZVwiXG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCJcbmltcG9ydCBQcm9wVHlwZXNFeGFjdCBmcm9tIFwicHJvcC10eXBlcy1leGFjdFwiXG5pbXBvcnQgbWVtbyBmcm9tIFwic2V0LXN0YXRlLWNvbXBhcmUvYnVpbGQvbWVtby5qc1wiXG5pbXBvcnQge1ByZXNzYWJsZX0gZnJvbSBcInJlYWN0LW5hdGl2ZVwiXG5pbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCJcbmltcG9ydCB7c2hhcGVDb21wb25lbnR9IGZyb20gXCJzZXQtc3RhdGUtY29tcGFyZS9idWlsZC9zaGFwZS1jb21wb25lbnQuanNcIlxuaW1wb3J0IFRleHQgZnJvbSBcIi4uLy4uL3V0aWxzL3RleHRcIlxuXG5jb25zdCBkYXRhU2V0cyA9IHt9XG5cbmV4cG9ydCBkZWZhdWx0IG1lbW8oc2hhcGVDb21wb25lbnQoY2xhc3MgQXR0cmlidXRlRWxlbWVudCBleHRlbmRzIEJhc2VDb21wb25lbnQge1xuICBzdGF0aWMgcHJvcFR5cGVzID0gUHJvcFR5cGVzRXhhY3Qoe1xuICAgIGFjdGl2ZTogUHJvcFR5cGVzLmJvb2wuaXNSZXF1aXJlZCxcbiAgICBhdHRyaWJ1dGU6IFByb3BUeXBlcy5vYmplY3QuaXNSZXF1aXJlZCxcbiAgICBtb2RlbENsYXNzTmFtZTogUHJvcFR5cGVzLnN0cmluZy5pc1JlcXVpcmVkLFxuICAgIGZpa3RlcjogUHJvcFR5cGVzLm9iamVjdCxcbiAgICBvbkNsaWNrOiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkXG4gIH0pXG5cbiAgcmVuZGVyKCkge1xuICAgIGNvbnN0IHthY3RpdmUsIGF0dHJpYnV0ZSwgbW9kZWxDbGFzc05hbWV9ID0gdGhpcy5wXG4gICAgY29uc3Qgc3R5bGUgPSB7fVxuXG4gICAgaWYgKGFjdGl2ZSkgc3R5bGUuZm9udFdlaWdodCA9IFwiYm9sZFwiXG5cbiAgICByZXR1cm4gKFxuICAgICAgPFByZXNzYWJsZVxuICAgICAgICBkYXRhU2V0PXtkYXRhU2V0c1tgYXR0cmlidXRlLSR7ZGlnZyhhdHRyaWJ1dGUsIFwiYXR0cmlidXRlTmFtZVwiKX0tJHttb2RlbENsYXNzTmFtZX1gXSB8fD0ge1xuICAgICAgICAgIGNsYXNzOiBcImF0dHJpYnV0ZS1lbGVtZW50XCIsXG4gICAgICAgICAgYXR0cmlidXRlTmFtZTogZGlnZyhhdHRyaWJ1dGUsIFwiYXR0cmlidXRlTmFtZVwiKSxcbiAgICAgICAgICBtb2RlbENsYXNzOiBtb2RlbENsYXNzTmFtZVxuICAgICAgICB9fVxuICAgICAgICBvblByZXNzPXt0aGlzLnR0Lm9uQXR0cmlidXRlQ2xpY2tlZH1cbiAgICAgID5cbiAgICAgICAgPFRleHQgc3R5bGU9e3N0eWxlfT5cbiAgICAgICAgICB7ZGlnZyhhdHRyaWJ1dGUsIFwiaHVtYW5OYW1lXCIpfVxuICAgICAgICA8L1RleHQ+XG4gICAgICA8L1ByZXNzYWJsZT5cbiAgICApXG4gIH1cblxuICBvbkF0dHJpYnV0ZUNsaWNrZWQgPSAoZSkgPT4ge1xuICAgIGUucHJldmVudERlZmF1bHQoKVxuXG4gICAgdGhpcy5wLm9uQ2xpY2soe2F0dHJpYnV0ZTogdGhpcy5wLmF0dHJpYnV0ZX0pXG4gIH1cbn0pKVxuIl19
37
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXR0cmlidXRlLWVsZW1lbnQuanMiLCJzb3VyY2VSb290IjoiL3NyYy8iLCJzb3VyY2VzIjpbInRhYmxlL2ZpbHRlcnMvYXR0cmlidXRlLWVsZW1lbnQuanN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxZQUFZO0FBQ1osNERBQTREO0FBQzVELE9BQU8sRUFBQyxJQUFJLEVBQUMsTUFBTSxXQUFXLENBQUE7QUFDOUIsT0FBTyxTQUFTLE1BQU0sWUFBWSxDQUFBO0FBQ2xDLE9BQU8sY0FBYyxNQUFNLGtCQUFrQixDQUFBO0FBQzdDLE9BQU8sSUFBSSxNQUFNLGlDQUFpQyxDQUFBO0FBQ2xELE9BQU8sRUFBQyxTQUFTLEVBQUMsTUFBTSxjQUFjLENBQUE7QUFDdEMsT0FBTyxLQUFLLE1BQU0sT0FBTyxDQUFBO0FBQ3pCLE9BQU8sRUFBQyxjQUFjLEVBQUUsY0FBYyxFQUFDLE1BQU0sNENBQTRDLENBQUE7QUFDekYsT0FBTyxJQUFJLE1BQU0sa0JBQWtCLENBQUE7QUFFbkMsTUFBTSxRQUFRLEdBQUcsRUFBRSxDQUFBO0FBRW5CLDZDQUE2QztBQUM3Qyw2Q0FBNkM7QUFDN0MsZUFBZSxJQUFJLENBQUMsY0FBYyxDQUFDLCtDQUErQyxDQUFDLE1BQU0sZ0JBQWlCLFNBQVEsY0FBYztJQUM5SCxNQUFNLENBQUMsU0FBUyxHQUFHLGNBQWMsQ0FBQztRQUNoQyxNQUFNLEVBQUUsU0FBUyxDQUFDLElBQUksQ0FBQyxVQUFVO1FBQ2pDLFNBQVMsRUFBRSxTQUFTLENBQUMsTUFBTSxDQUFDLFVBQVU7UUFDdEMsY0FBYyxFQUFFLFNBQVMsQ0FBQyxNQUFNLENBQUMsVUFBVTtRQUMzQyxNQUFNLEVBQUUsU0FBUyxDQUFDLE1BQU07UUFDeEIsT0FBTyxFQUFFLFNBQVMsQ0FBQyxJQUFJLENBQUMsVUFBVTtLQUNuQyxDQUFDLENBQUE7SUFFRixNQUFNO1FBQ0osTUFBTSxFQUFDLE1BQU0sRUFBRSxTQUFTLEVBQUUsY0FBYyxFQUFDLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQTtRQUNsRCxNQUFNLEtBQUssR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDLCtDQUErQyxDQUFDLENBQUMsRUFBQyxVQUFVLEVBQUUsTUFBTSxFQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFBO1FBRXpHLE9BQU8sQ0FDTCxLQUFDLFNBQVMsSUFDUixPQUFPLEVBQUUsUUFBUSxDQUFDLGFBQWEsSUFBSSxDQUFDLFNBQVMsRUFBRSxlQUFlLENBQUMsSUFBSSxjQUFjLEVBQUUsQ0FBQyxLQUFLO2dCQUN2RixLQUFLLEVBQUUsbUJBQW1CO2dCQUMxQixhQUFhLEVBQUUsSUFBSSxDQUFDLFNBQVMsRUFBRSxlQUFlLENBQUM7Z0JBQy9DLFVBQVUsRUFBRSxjQUFjO2FBQzNCLEVBQ0QsT0FBTyxFQUFFLElBQUksQ0FBQyxFQUFFLENBQUMsa0JBQWtCLFlBRW5DLEtBQUMsSUFBSSxJQUFDLEtBQUssRUFBRSxLQUFLLFlBQ2YsSUFBSSxDQUFDLFNBQVMsRUFBRSxXQUFXLENBQUMsR0FDeEIsR0FDRyxDQUNiLENBQUE7SUFDSCxDQUFDO0lBRUQsa0JBQWtCLEdBQUcsQ0FBQyxDQUFDLEVBQUUsRUFBRTtRQUN6QixDQUFDLENBQUMsY0FBYyxFQUFFLENBQUE7UUFFbEIsSUFBSSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsRUFBQyxTQUFTLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxTQUFTLEVBQUMsQ0FBQyxDQUFBO0lBQy9DLENBQUMsQ0FBQTtDQUNGLENBQUMsQ0FBQyxDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQHRzLWNoZWNrXG4vKiBlc2xpbnQtZGlzYWJsZSBuZXctY2FwLCBuby1yZXR1cm4tYXNzaWduLCBzb3J0LWltcG9ydHMgKi9cbmltcG9ydCB7ZGlnZ30gZnJvbSBcImRpZ2dlcml6ZVwiXG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCJcbmltcG9ydCBQcm9wVHlwZXNFeGFjdCBmcm9tIFwicHJvcC10eXBlcy1leGFjdFwiXG5pbXBvcnQgbWVtbyBmcm9tIFwic2V0LXN0YXRlLWNvbXBhcmUvYnVpbGQvbWVtby5qc1wiXG5pbXBvcnQge1ByZXNzYWJsZX0gZnJvbSBcInJlYWN0LW5hdGl2ZVwiXG5pbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCJcbmltcG9ydCB7U2hhcGVDb21wb25lbnQsIHNoYXBlQ29tcG9uZW50fSBmcm9tIFwic2V0LXN0YXRlLWNvbXBhcmUvYnVpbGQvc2hhcGUtY29tcG9uZW50LmpzXCJcbmltcG9ydCBUZXh0IGZyb20gXCIuLi8uLi91dGlscy90ZXh0XCJcblxuY29uc3QgZGF0YVNldHMgPSB7fVxuXG4vKiogQHR5cGVkZWYge1JlY29yZDxzdHJpbmcsIG5ldmVyPn0gUHJvcHMgKi9cbi8qKiBAdHlwZWRlZiB7UmVjb3JkPHN0cmluZywgbmV2ZXI+fSBTdGF0ZSAqL1xuZXhwb3J0IGRlZmF1bHQgbWVtbyhzaGFwZUNvbXBvbmVudCgvKiogQGF1Z21lbnRzIHtTaGFwZUNvbXBvbmVudDxQcm9wcywgU3RhdGU+fSAqLyBjbGFzcyBBdHRyaWJ1dGVFbGVtZW50IGV4dGVuZHMgU2hhcGVDb21wb25lbnQge1xuICBzdGF0aWMgcHJvcFR5cGVzID0gUHJvcFR5cGVzRXhhY3Qoe1xuICAgIGFjdGl2ZTogUHJvcFR5cGVzLmJvb2wuaXNSZXF1aXJlZCxcbiAgICBhdHRyaWJ1dGU6IFByb3BUeXBlcy5vYmplY3QuaXNSZXF1aXJlZCxcbiAgICBtb2RlbENsYXNzTmFtZTogUHJvcFR5cGVzLnN0cmluZy5pc1JlcXVpcmVkLFxuICAgIGZpa3RlcjogUHJvcFR5cGVzLm9iamVjdCxcbiAgICBvbkNsaWNrOiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkXG4gIH0pXG5cbiAgcmVuZGVyKCkge1xuICAgIGNvbnN0IHthY3RpdmUsIGF0dHJpYnV0ZSwgbW9kZWxDbGFzc05hbWV9ID0gdGhpcy5wXG4gICAgY29uc3Qgc3R5bGUgPSBhY3RpdmUgPyAvKiogQHR5cGUge2ltcG9ydChcInJlYWN0LW5hdGl2ZVwiKS5UZXh0U3R5bGV9ICovICh7Zm9udFdlaWdodDogXCJib2xkXCJ9KSA6IHVuZGVmaW5lZFxuXG4gICAgcmV0dXJuIChcbiAgICAgIDxQcmVzc2FibGVcbiAgICAgICAgZGF0YVNldD17ZGF0YVNldHNbYGF0dHJpYnV0ZS0ke2RpZ2coYXR0cmlidXRlLCBcImF0dHJpYnV0ZU5hbWVcIil9LSR7bW9kZWxDbGFzc05hbWV9YF0gfHw9IHtcbiAgICAgICAgICBjbGFzczogXCJhdHRyaWJ1dGUtZWxlbWVudFwiLFxuICAgICAgICAgIGF0dHJpYnV0ZU5hbWU6IGRpZ2coYXR0cmlidXRlLCBcImF0dHJpYnV0ZU5hbWVcIiksXG4gICAgICAgICAgbW9kZWxDbGFzczogbW9kZWxDbGFzc05hbWVcbiAgICAgICAgfX1cbiAgICAgICAgb25QcmVzcz17dGhpcy50dC5vbkF0dHJpYnV0ZUNsaWNrZWR9XG4gICAgICA+XG4gICAgICAgIDxUZXh0IHN0eWxlPXtzdHlsZX0+XG4gICAgICAgICAge2RpZ2coYXR0cmlidXRlLCBcImh1bWFuTmFtZVwiKX1cbiAgICAgICAgPC9UZXh0PlxuICAgICAgPC9QcmVzc2FibGU+XG4gICAgKVxuICB9XG5cbiAgb25BdHRyaWJ1dGVDbGlja2VkID0gKGUpID0+IHtcbiAgICBlLnByZXZlbnREZWZhdWx0KClcblxuICAgIHRoaXMucC5vbkNsaWNrKHthdHRyaWJ1dGU6IHRoaXMucC5hdHRyaWJ1dGV9KVxuICB9XG59KSlcbiJdfQ==
@@ -1,4 +1,62 @@
1
1
  declare const _default: React.NamedExoticComponent<Record<string, any>>;
2
2
  export default _default;
3
+ export type ApiMakerModelClassLike = typeof import("../../../src/base-model.js").default;
4
+ export type FilterAttribute = {
5
+ attributeName: string;
6
+ humanName: string;
7
+ };
8
+ export type FilterReflection = {
9
+ humanName: string;
10
+ modelClassName: string;
11
+ reflectionName: string;
12
+ resource: ApiMakerModelClassLike;
13
+ };
14
+ export type FilterPredicate = {
15
+ name: string;
16
+ };
17
+ export type AssociationsServiceResult = {
18
+ associations: {
19
+ human_name: string;
20
+ model_class_name: string;
21
+ reflection_name: string;
22
+ resource: ApiMakerModelClassLike;
23
+ }[];
24
+ ransackable_attributes: {
25
+ attribute_name: string;
26
+ human_name: string;
27
+ }[];
28
+ ransackable_scopes: string[];
29
+ };
30
+ export type FilterConfig = {
31
+ a?: string;
32
+ filterIndex: number;
33
+ p?: string[];
34
+ pre?: string;
35
+ sc?: string;
36
+ v?: string;
37
+ };
38
+ export type Props = {
39
+ filter: FilterConfig;
40
+ modelClass: ApiMakerModelClassLike;
41
+ onApplyClicked: () => void;
42
+ onRequestClose: () => void;
43
+ querySearchName: string;
44
+ };
45
+ export type State = {
46
+ actualCurrentModelClass: {
47
+ modelClass: ApiMakerModelClassLike;
48
+ };
49
+ associations: FilterReflection[] | null;
50
+ attribute: FilterAttribute | undefined;
51
+ loading: number;
52
+ modelClassName: string;
53
+ path: FilterReflection[];
54
+ predicate: FilterPredicate | undefined;
55
+ predicates: FilterPredicate[] | undefined;
56
+ ransackableAttributes: FilterAttribute[] | undefined;
57
+ ransackableScopes: string[] | undefined;
58
+ scope: string | undefined;
59
+ value: string | undefined;
60
+ };
3
61
  import React from "react";
4
62
  //# sourceMappingURL=filter-form.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"filter-form.d.ts","sourceRoot":"/src/","sources":["table/filters/filter-form.jsx"],"names":[],"mappings":";;kBAIqC,OAAO"}
1
+ {"version":3,"file":"filter-form.d.ts","sourceRoot":"/src/","sources":["table/filters/filter-form.jsx"],"names":[],"mappings":";;qCA8Bc,cAAc,4BAA4B,EAAE,OAAO;;mBAGnD,MAAM;eACN,MAAM;;;eAIN,MAAM;oBACL,MAAM;oBACN,MAAM;cACN,sBAAsB;;;UAIvB,MAAM;;;kBAIN;QAAC,UAAU,EAAE,MAAM,CAAC;QAAC,gBAAgB,EAAE,MAAM,CAAC;QAAC,eAAe,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,sBAAsB,CAAA;KAAC,EAAE;4BAC3G;QAAC,cAAc,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAA;KAAC,EAAE;wBAC9C,MAAM,EAAE;;;QAIR,MAAM;iBACN,MAAM;QACN,MAAM,EAAE;UACR,MAAM;SACN,MAAM;QACN,MAAM;;;YAIN,YAAY;gBACZ,sBAAsB;oBACtB,MAAM,IAAI;oBACV,MAAM,IAAI;qBACV,MAAM;;;6BAIN;QAAC,UAAU,EAAE,sBAAsB,CAAA;KAAC;kBACpC,gBAAgB,EAAE,GAAC,IAAI;eACvB,eAAe,GAAC,SAAS;aACzB,MAAM;oBACN,MAAM;UACN,gBAAgB,EAAE;eAClB,eAAe,GAAC,SAAS;gBACzB,eAAe,EAAE,GAAC,SAAS;2BAC3B,eAAe,EAAE,GAAC,SAAS;uBAC3B,MAAM,EAAE,GAAC,SAAS;WAClB,MAAM,GAAC,SAAS;WAChB,MAAM,GAAC,SAAS;;kBA9EO,OAAO"}
@@ -1,4 +1,5 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ // @ts-check
2
3
  /* eslint-disable comma-dangle, implicit-arrow-linebreak, import/no-named-as-default */
3
4
  /* eslint-disable complexity, new-cap, newline-per-chained-call, no-await-in-loop, no-return-assign */
4
5
  /* eslint-disable no-unused-vars, react/jsx-max-depth, react/jsx-no-literals */
@@ -6,7 +7,6 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
6
7
  import React, { useMemo, useRef } from "react";
7
8
  import { ActivityIndicator, View } from "react-native";
8
9
  import AttributeElement from "./attribute-element";
9
- import BaseComponent from "../../base-component";
10
10
  import Button from "../../utils/button";
11
11
  import Card from "../../utils/card";
12
12
  import { digg, digs } from "diggerize";
@@ -22,12 +22,67 @@ import ReflectionElement from "./reflection-element";
22
22
  import ScopeElement from "./scope-element";
23
23
  import Select from "../../inputs/select";
24
24
  import Services from "../../services.js";
25
- import { shapeComponent } from "set-state-compare/build/shape-component.js";
25
+ import { ShapeComponent, shapeComponent } from "set-state-compare/build/shape-component.js";
26
26
  import Text from "../../utils/text";
27
27
  import { useBreakpoint } from "responsive-breakpoints";
28
28
  import useI18n from "i18n-on-steroids/build/src/use-i18n.js";
29
29
  const styles = {};
30
- export default memo(shapeComponent(class ApiMakerTableFiltersFilterForm extends BaseComponent {
30
+ /** @typedef {typeof import("../../../src/base-model.js").default} ApiMakerModelClassLike */
31
+ /**
32
+ * @typedef {object} FilterAttribute
33
+ * @property {string} attributeName
34
+ * @property {string} humanName
35
+ */
36
+ /**
37
+ * @typedef {object} FilterReflection
38
+ * @property {string} humanName
39
+ * @property {string} modelClassName
40
+ * @property {string} reflectionName
41
+ * @property {ApiMakerModelClassLike} resource
42
+ */
43
+ /**
44
+ * @typedef {object} FilterPredicate
45
+ * @property {string} name
46
+ */
47
+ /**
48
+ * @typedef {object} AssociationsServiceResult
49
+ * @property {{human_name: string, model_class_name: string, reflection_name: string, resource: ApiMakerModelClassLike}[]} associations
50
+ * @property {{attribute_name: string, human_name: string}[]} ransackable_attributes
51
+ * @property {string[]} ransackable_scopes
52
+ */
53
+ /**
54
+ * @typedef {object} FilterConfig
55
+ * @property {string} [a]
56
+ * @property {number} filterIndex
57
+ * @property {string[]} [p]
58
+ * @property {string} [pre]
59
+ * @property {string} [sc]
60
+ * @property {string} [v]
61
+ */
62
+ /**
63
+ * @typedef {object} Props
64
+ * @property {FilterConfig} filter
65
+ * @property {ApiMakerModelClassLike} modelClass
66
+ * @property {() => void} onApplyClicked
67
+ * @property {() => void} onRequestClose
68
+ * @property {string} querySearchName
69
+ */
70
+ /**
71
+ * @typedef {object} State
72
+ * @property {{modelClass: ApiMakerModelClassLike}} actualCurrentModelClass
73
+ * @property {FilterReflection[]|null} associations
74
+ * @property {FilterAttribute|undefined} attribute
75
+ * @property {number} loading
76
+ * @property {string} modelClassName
77
+ * @property {FilterReflection[]} path
78
+ * @property {FilterPredicate|undefined} predicate
79
+ * @property {FilterPredicate[]|undefined} predicates
80
+ * @property {FilterAttribute[]|undefined} ransackableAttributes
81
+ * @property {string[]|undefined} ransackableScopes
82
+ * @property {string|undefined} scope
83
+ * @property {string|undefined} value
84
+ */
85
+ export default memo(shapeComponent(/** @augments {ShapeComponent<Props, State>} */ class ApiMakerTableFiltersFilterForm extends ShapeComponent {
31
86
  static propTypes = PropTypesExact({
32
87
  filter: PropTypes.object,
33
88
  modelClass: PropTypes.func.isRequired,
@@ -65,6 +120,11 @@ export default memo(shapeComponent(class ApiMakerTableFiltersFilterForm extends
65
120
  }, [this.s.modelClassName]);
66
121
  }
67
122
  currentModelClass = () => digg(this.s.actualCurrentModelClass, "modelClass");
123
+ /**
124
+ * Normalize association metadata returned from the backend filter service.
125
+ * @param {AssociationsServiceResult} result
126
+ * @returns {{associations: FilterReflection[], ransackableAttributes: FilterAttribute[], ransackableScopes: string[]}}
127
+ */
68
128
  parseAssociationData(result) {
69
129
  const associations = result.associations.map(({ human_name, model_class_name, reflection_name, resource }) => ({
70
130
  humanName: human_name,
@@ -83,7 +143,7 @@ export default memo(shapeComponent(class ApiMakerTableFiltersFilterForm extends
83
143
  try {
84
144
  if (!this.s.modelClassName)
85
145
  throw new Error("'modelClassName' not set in state");
86
- const result = await Services.current().sendRequest("Models::Associations", { model_class_name: this.s.modelClassName });
146
+ const result = /** @type {AssociationsServiceResult} */ (await Services.current().sendRequest("Models::Associations", { model_class_name: this.s.modelClassName }));
87
147
  const { associations, ransackableAttributes, ransackableScopes } = this.parseAssociationData(result);
88
148
  this.setState({ associations, ransackableAttributes, ransackableScopes });
89
149
  }
@@ -105,7 +165,7 @@ export default memo(shapeComponent(class ApiMakerTableFiltersFilterForm extends
105
165
  async loadInitialValues() {
106
166
  if (!this.s.modelClassName)
107
167
  throw new Error("'modelClassName' not set in state");
108
- let result = await Services.current().sendRequest("Models::Associations", { model_class_name: this.s.modelClassName });
168
+ let result = /** @type {AssociationsServiceResult} */ (await Services.current().sendRequest("Models::Associations", { model_class_name: this.s.modelClassName }));
109
169
  let data = this.parseAssociationData(result);
110
170
  let modelClassName = this.s.modelClassName;
111
171
  const path = [];
@@ -115,10 +175,10 @@ export default memo(shapeComponent(class ApiMakerTableFiltersFilterForm extends
115
175
  throw new Error(`Couldn't find association by that name ${this.s.modelClassName}#${pathPart}`);
116
176
  modelClassName = digg(reflection, "modelClassName");
117
177
  if (!modelClassName) {
118
- const pathNames = path.map((pathPart) => pathPart.name()).join(".");
119
- throw new Error(`No model class name from ${pathNames}.${reflection.name()}`);
178
+ const pathNames = path.map((pathPart) => pathPart.reflectionName).join(".");
179
+ throw new Error(`No model class name from ${pathNames}.${reflection.reflectionName}`);
120
180
  }
121
- result = await Services.current().sendRequest("Models::Associations", { model_class_name: modelClassName });
181
+ result = /** @type {AssociationsServiceResult} */ (await Services.current().sendRequest("Models::Associations", { model_class_name: modelClassName }));
122
182
  data = this.parseAssociationData(result);
123
183
  path.push(reflection);
124
184
  }
@@ -211,6 +271,7 @@ export default memo(shapeComponent(class ApiMakerTableFiltersFilterForm extends
211
271
  }
212
272
  return result;
213
273
  }
274
+ /** @param {{attribute: FilterAttribute}} root0 */
214
275
  onAttributeClicked = ({ attribute }) => {
215
276
  this.setState({
216
277
  attribute,
@@ -222,6 +283,7 @@ export default memo(shapeComponent(class ApiMakerTableFiltersFilterForm extends
222
283
  const predicate = this.s.predicates.find((predicate) => predicate.name == chosenPredicateName);
223
284
  this.setState({ predicate });
224
285
  };
286
+ /** @param {{reflection: FilterReflection}} root0 */
225
287
  onReflectionClicked = ({ reflection }) => {
226
288
  const newPath = this.s.path.concat([reflection]);
227
289
  this.setState({
@@ -233,6 +295,7 @@ export default memo(shapeComponent(class ApiMakerTableFiltersFilterForm extends
233
295
  predicate: undefined
234
296
  });
235
297
  };
298
+ /** @param {{scope: string}} root0 */
236
299
  onScopeClicked = ({ scope }) => {
237
300
  this.setState({
238
301
  attribute: undefined,
@@ -289,4 +352,4 @@ export default memo(shapeComponent(class ApiMakerTableFiltersFilterForm extends
289
352
  .localeCompare(digg(b, "humanName").toLowerCase()));
290
353
  }
291
354
  }));
292
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsdGVyLWZvcm0uanMiLCJzb3VyY2VSb290IjoiL3NyYy8iLCJzb3VyY2VzIjpbInRhYmxlL2ZpbHRlcnMvZmlsdGVyLWZvcm0uanN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSx1RkFBdUY7QUFDdkYsc0dBQXNHO0FBQ3RHLCtFQUErRTtBQUMvRSxpRkFBaUY7QUFDakYsT0FBTyxLQUFLLEVBQUUsRUFBQyxPQUFPLEVBQUUsTUFBTSxFQUFDLE1BQU0sT0FBTyxDQUFBO0FBQzVDLE9BQU8sRUFBQyxpQkFBaUIsRUFBRSxJQUFJLEVBQUMsTUFBTSxjQUFjLENBQUE7QUFDcEQsT0FBTyxnQkFBZ0IsTUFBTSxxQkFBcUIsQ0FBQTtBQUNsRCxPQUFPLGFBQWEsTUFBTSxzQkFBc0IsQ0FBQTtBQUNoRCxPQUFPLE1BQU0sTUFBTSxvQkFBb0IsQ0FBQTtBQUN2QyxPQUFPLElBQUksTUFBTSxrQkFBa0IsQ0FBQTtBQUNuQyxPQUFPLEVBQUMsSUFBSSxFQUFFLElBQUksRUFBQyxNQUFNLFdBQVcsQ0FBQTtBQUNwQyxPQUFPLEtBQUssVUFBVSxNQUFNLFlBQVksQ0FBQTtBQUN4QyxPQUFPLEVBQUMsSUFBSSxFQUFDLE1BQU0sWUFBWSxDQUFBO0FBQy9CLE9BQU8sTUFBTSxNQUFNLG9CQUFvQixDQUFBO0FBQ3ZDLE9BQU8sS0FBSyxNQUFNLG9CQUFvQixDQUFBO0FBQ3RDLE9BQU8sSUFBSSxNQUFNLGlDQUFpQyxDQUFBO0FBQ2xELE9BQU8sTUFBTSxNQUFNLGlCQUFpQixDQUFBO0FBQ3BDLE9BQU8sU0FBUyxNQUFNLFlBQVksQ0FBQTtBQUNsQyxPQUFPLGNBQWMsTUFBTSxrQkFBa0IsQ0FBQTtBQUM3QyxPQUFPLGlCQUFpQixNQUFNLHNCQUFzQixDQUFBO0FBQ3BELE9BQU8sWUFBWSxNQUFNLGlCQUFpQixDQUFBO0FBQzFDLE9BQU8sTUFBTSxNQUFNLHFCQUFxQixDQUFBO0FBQ3hDLE9BQU8sUUFBUSxNQUFNLG1CQUFtQixDQUFBO0FBQ3hDLE9BQU8sRUFBQyxj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QUFDLENBQUMsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIGNvbW1hLWRhbmdsZSwgaW1wbGljaXQtYXJyb3ctbGluZWJyZWFrLCBpbXBvcnQvbm8tbmFtZWQtYXMtZGVmYXVsdCAqL1xuLyogZXNsaW50LWRpc2FibGUgY29tcGxleGl0eSwgbmV3LWNhcCwgbmV3bGluZS1wZXItY2hhaW5lZC1jYWxsLCBuby1hd2FpdC1pbi1sb29wLCBuby1yZXR1cm4tYXNzaWduICovXG4vKiBlc2xpbnQtZGlzYWJsZSBuby11bnVzZWQtdmFycywgcmVhY3QvanN4LW1heC1kZXB0aCwgcmVhY3QvanN4LW5vLWxpdGVyYWxzICovXG4vKiBlc2xpbnQtZGlzYWJsZSByZWFjdC9qc3gtc29ydC1wcm9wcywgcmVhY3Qvbm8tYXJyYXktaW5kZXgta2V5LCBzb3J0LWltcG9ydHMgKi9cbmltcG9ydCBSZWFjdCwge3VzZU1lbW8sIHVzZVJlZn0gZnJvbSBcInJlYWN0XCJcbmltcG9ydCB7QWN0aXZpdHlJbmRpY2F0b3IsIFZpZXd9IGZyb20gXCJyZWFjdC1uYXRpdmVcIlxuaW1wb3J0IEF0dHJpYnV0ZUVsZW1lbnQgZnJvbSBcIi4vYXR0cmlidXRlLWVsZW1lbnRcIlxuaW1wb3J0IEJhc2VDb21wb25lbnQgZnJvbSBcIi4uLy4uL2Jhc2UtY29tcG9uZW50XCJcbmltcG9ydCBCdXR0b24gZnJvbSBcIi4uLy4uL3V0aWxzL2J1dHRvblwiXG5pbXBvcnQgQ2FyZCBmcm9tIFwiLi4vLi4vdXRpbHMvY2FyZFwiXG5pbXBvcnQge2RpZ2csIGRpZ3N9IGZyb20gXCJkaWdnZXJpemVcIlxuaW1wb3J0ICogYXMgaW5mbGVjdGlvbiBmcm9tIFwiaW5mbGVjdGlvblwiXG5pbXBvcnQge0Zvcm19IGZyb20gXCIuLi8uLi9mb3JtXCJcbmltcG9ydCBIZWFkZXIgZnJvbSBcIi4uLy4uL3V0aWxzL2hlYWRlclwiXG5pbXBvcnQgSW5wdXQgZnJvbSBcIi4uLy4uL2lucHV0cy9pbnB1dFwiXG5pbXBvcnQgbWVtbyBmcm9tIFwic2V0LXN0YXRlLWNvbXBhcmUvYnVpbGQvbWVtby5qc1wiXG5pbXBvcnQgUGFyYW1zIGZyb20gXCIuLi8uLi9wYXJhbXMuanNcIlxuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiXG5pbXBvcnQgUHJvcFR5cGVzRXhhY3QgZnJvbSBcInByb3AtdHlwZXMtZXhhY3RcIlxuaW1wb3J0IFJlZmxlY3Rpb25FbGVtZW50IGZyb20gXCIuL3JlZmxlY3Rpb24tZWxlbWVudFwiXG5pbXBvcnQgU2NvcGVFbGVtZW50IGZyb20gXCIuL3Njb3BlLWVsZW1lbnRcIlxuaW1wb3J0IFNlbGVjdCBmcm9tIFwiLi4vLi4vaW5wdXRzL3NlbGVjdFwiXG5pbXBvcnQgU2VydmljZXMgZnJvbSBcIi4uLy4uL3NlcnZpY2VzLmpzXCJcbmltcG9ydCB7c2hhcGVDb21wb25lbnR9IGZyb20gXCJzZXQtc3RhdGUtY29tcGFyZS9idWlsZC9zaGFwZS1jb21wb25lbnQuanNcIlxuaW1wb3J0IFRleHQgZnJvbSBcIi4uLy4uL3V0aWxzL3RleHRcIlxuaW1wb3J0IHt1c2VCcmVha3BvaW50fSBmcm9tIFwicmVzcG9uc2l2ZS1icmVha3BvaW50c1wiXG5pbXBvcnQgdXNlSTE4biBmcm9tIFwiaTE4bi1vbi1zdGVyb2lkcy9idWlsZC9zcmMvdXNlLWkxOG4uanNcIlxuXG5jb25zdCBzdHlsZXMgPSB7fVxuXG5leHBvcnQgZGVmYXVsdCBtZW1vKHNoYXBlQ29tcG9uZW50KGNsYXNzIEFwaU1ha2VyVGFibGVGaWx0ZXJzRmlsdGVyRm9ybSBleHRlbmRzIEJhc2VDb21wb25lbnQge1xuICBzdGF0aWMgcHJvcFR5cGVzID0gUHJvcFR5cGVzRXhhY3Qoe1xuICAgIGZpbHRlcjogUHJvcFR5cGVzLm9iamVjdCxcbiAgICBtb2RlbENsYXNzOiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkLFxuICAgIG9uQXBwbHlDbGlja2VkOiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkLFxuICAgIG9uUmVxdWVzdENsb3NlOiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkLFxuICAgIHF1ZXJ5U2VhcmNoTmFtZTogUHJvcFR5cGVzLnN0cmluZy5pc1JlcXVpcmVkXG4gIH0pXG5cbiAgc3RhdGUgPSB7XG4gICAgYXNzb2NpYXRpb25zOiBudWxsLFxuICAgIGF0dHJpYnV0ZTogdW5kZWZpbmVkLFxuICAgIGFjdHVhbEN1cnJlbnRNb2RlbENsYXNzOiB7bW9kZWxDbGFzczogdGhpcy5wLm1vZGVsQ2xhc3N9LFxuICAgIGxvYWRpbmc6IDAsXG4gICAgbW9kZWxDbGFzc05hbWU6IGRpZ2codGhpcy5wLm1vZGVsQ2xhc3MubW9kZWxDbGFzc0RhdGEoKSwgXCJjbGFzc05hbWVcIiksXG4gICAgcGF0aDogW10sXG4gICAgcHJlZGljYXRlOiB1bmRlZmluZWQsXG4gICAgcHJlZGljYXRlczogdW5kZWZpbmVkLFxuICAgIHJhbnNhY2thYmxlQXR0cmlidXRlczogdW5kZWZpbmVkLFxuICAgIHJhbnNhY2thYmxlU2NvcGVzOiB1bmRlZmluZWQsXG4gICAgc2NvcGU6IHRoaXMucHJvcHMuZmlsdGVyLnNjLFxuICAgIHZhbHVlOiB0aGlzLnByb3BzLmZpbHRlci52XG4gIH1cblxuICBzZXR1cCgpIHtcbiAgICBjb25zdCB7dH0gPSB1c2VJMThuKHtuYW1lc3BhY2U6IFwianMuYXBpX21ha2VyLnRhYmxlLmZpbHRlcnMuZmlsdGVyX2Zvcm1cIn0pXG5cbiAgICB0aGlzLmJyZWFrcG9pbnQgPSB1c2VCcmVha3BvaW50KClcbiAgICB0aGlzLnQgPSB0XG4gICAgdGhpcy52YWx1ZUlucHV0UmVmID0gdXNlUmVmKHVuZGVmaW5lZClcblxuICAgIHVzZU1lbW8oKCkgPT4ge1xuICAgICAgdGhpcy5sb2FkUmFuc2Fja1ByZWRpY2F0ZXMoKVxuXG4gICAgICBpZiAodGhpcy5wcm9wcy5maWx0ZXIudikge1xuICAgICAgICB0aGlzLmxvYWRJbml0aWFsVmFsdWVzV2l0aExvYWRpbmdJbmRpY2F0b3IoKVxuICAgICAgfVxuICAgIH0sIFtdKVxuXG4gICAgdXNlTWVtbygoKSA9PiB7XG4gICAgICB0aGlzLmxvYWRBc3NvY2lhdGlvbnMoKVxuICAgIH0sIFt0aGlzLnMubW9kZWxDbGFzc05hbWVdKVxuICB9XG5cbiAgY3VycmVudE1vZGVsQ2xhc3MgPSAoKSA9PiBkaWdnKHRoaXMucy5hY3R1YWxDdXJyZW50TW9kZWxDbGFzcywgXCJtb2RlbENsYXNzXCIpXG5cbiAgcGFyc2VBc3NvY2lhdGlvbkRhdGEocmVzdWx0KSB7XG4gICAgY29uc3QgYXNzb2NpYXRpb25zID0gcmVzdWx0LmFzc29jaWF0aW9ucy5tYXAoKHtodW1hbl9uYW1lLCBtb2RlbF9jbGFzc19uYW1lLCByZWZsZWN0aW9uX25hbWUsIHJlc291cmNlfSkgPT4gKHtcbiAgICAgIGh1bWFuTmFtZTogaHVtYW5fbmFtZSxcbiAgICAgIG1vZGVsQ2xhc3NOYW1lOiBtb2RlbF9jbGFzc19uYW1lLFxuICAgICAgcmVmbGVjdGlvbk5hbWU6IGluZmxlY3Rpb24uY2FtZWxpemUocmVmbGVjdGlvbl9uYW1lLCB0cnVlKSxcbiAgICAgIHJlc291cmNlXG4gICAgfSkpXG4gICAgY29uc3QgcmFuc2Fja2FibGVBdHRyaWJ1dGVzID0gZGlnZyhyZXN1bHQsIFwicmFuc2Fja2FibGVfYXR0cmlidXRlc1wiKS5tYXAoKHthdHRyaWJ1dGVfbmFtZTogYXR0cmlidXRlTmFtZSwgaHVtYW5fbmFtZTogaHVtYW5OYW1lfSkgPT4gKHtcbiAgICAgIGF0dHJpYnV0ZU5hbWUsIGh1bWFuTmFtZVxuICAgIH0pKVxuICAgIGNvbnN0IHJhbnNhY2thYmxlU2NvcGVzID0gZGlnZyhyZXN1bHQsIFwicmFuc2Fja2FibGVfc2NvcGVzXCIpXG5cbiAgICByZXR1cm4ge2Fzc29jaWF0aW9ucywgcmFuc2Fja2FibGVBdHRyaWJ1dGVzLCByYW5zYWNrYWJsZVNjb3Blc31cbiAgfVxuXG4gIGFzeW5jIGxvYWRBc3NvY2lhdGlvbnMoKSB7XG4gICAgdGhpcy5pbmNyZWFzZUxvYWRpbmcoKVxuXG4gICAgdHJ5IHtcbiAgICAgIGlmICghdGhpcy5zLm1vZGVsQ2xhc3NOYW1lKSB0aHJvdyBuZXcgRXJyb3IoXCInbW9kZWxDbGFzc05hbWUnIG5vdCBzZXQgaW4gc3RhdGVcIilcblxuICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgU2VydmljZXMuY3VycmVudCgpLnNlbmRSZXF1ZXN0KFwiTW9kZWxzOjpBc3NvY2lhdGlvbnNcIiwge21vZGVsX2NsYXNzX25hbWU6IHRoaXMucy5tb2RlbENsYXNzTmFtZX0pXG4gICAgICBjb25zdCB7YXNzb2NpYXRpb25zLCByYW5zYWNrYWJsZUF0dHJpYnV0ZXMsIHJhbnNhY2thYmxlU2NvcGVzfSA9IHRoaXMucGFyc2VBc3NvY2lhdGlvbkRhdGEocmVzdWx0KVxuXG4gICAgICB0aGlzLnNldFN0YXRlKHthc3NvY2lhdGlvbnMsIHJhbnNhY2thYmxlQXR0cmlidXRlcywgcmFuc2Fja2FibGVTY29wZXN9KVxuICAgIH0gZmluYWxseSB7XG4gICAgICB0aGlzLmRlY3JlYXNlTG9hZGluZygpXG4gICAgfVxuICB9XG5cbiAgZGVjcmVhc2VMb2FkaW5nID0gKCkgPT4gdGhpcy5zZXRTdGF0ZSgocHJldlN0YXRlKSA9PiAoe2xvYWRpbmc6IHByZXZTdGF0ZS5sb2FkaW5nIC0gMX0pKVxuICBpbmNyZWFzZUxvYWRpbmcgPSAoKSA9PiB0aGlzLnNldFN0YXRlKChwcmV2U3RhdGUpID0+ICh7bG9hZGluZzogcHJldlN0YXRlLmxvYWRpbmcgKyAxfSkpXG5cbiAgYXN5bmMgbG9hZEluaXRpYWxWYWx1ZXNXaXRoTG9hZGluZ0luZGljYXRvcigpIHtcbiAgICB0cnkge1xuICAgICAgdGhpcy5pbmNyZWFzZUxvYWRpbmcoKVxuICAgICAgYXdhaXQgdGhpcy5sb2FkSW5pdGlhbFZhbHVlcygpXG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIHRoaXMuZGVjcmVhc2VMb2FkaW5nKClcbiAgICB9XG4gIH1cblxuICBhc3luYyBsb2FkSW5pdGlhbFZhbHVlcygpIHtcbiAgICBpZiAoIXRoaXMucy5tb2RlbENsYXNzTmFtZSkgdGhyb3cgbmV3IEVycm9yKFwiJ21vZGVsQ2xhc3NOYW1lJyBub3Qgc2V0IGluIHN0YXRlXCIpXG5cbiAgICBsZXQgcmVzdWx0ID0gYXdhaXQgU2VydmljZXMuY3VycmVudCgpLnNlbmRSZXF1ZXN0KFwiTW9kZWxzOjpBc3NvY2lhdGlvbnNcIiwge21vZGVsX2NsYXNzX25hbWU6IHRoaXMucy5tb2RlbENsYXNzTmFtZX0pXG4gICAgbGV0IGRhdGEgPSB0aGlzLnBhcnNlQXNzb2NpYXRpb25EYXRhKHJlc3VsdClcbiAgICBsZXQgbW9kZWxDbGFzc05hbWUgPSB0aGlzLnMubW9kZWxDbGFzc05hbWVcbiAgICBjb25zdCBwYXRoID0gW11cblxuICAgIGZvciAoY29uc3QgcGF0aFBhcnQgb2YgdGhpcy5wcm9wcy5maWx0ZXIucCkge1xuICAgICAgY29uc3QgcmVmbGVjdGlvbiA9IGRhdGEuYXNzb2NpYXRpb25zLmZpbmQoKGFzc29jaWF0aW9uKSA9PiBkaWdnKGFzc29jaWF0aW9uLCBcInJlZmxlY3Rpb25OYW1lXCIpID09IGluZmxlY3Rpb24uY2FtZWxpemUocGF0aFBhcnQsIHRydWUpKVxuXG4gICAgICBpZiAoIXJlZmxlY3Rpb24pIHRocm93IG5ldyBFcnJvcihgQ291bGRuJ3QgZmluZCBhc3NvY2lhdGlvbiBieSB0aGF0IG5hbWUgJHt0aGlzLnMubW9kZWxDbGFzc05hbWV9IyR7cGF0aFBhcnR9YClcblxuICAgICAgbW9kZWxDbGFzc05hbWUgPSBkaWdnKHJlZmxlY3Rpb24sIFwibW9kZWxDbGFzc05hbWVcIilcblxuICAgICAgaWYgKCFtb2RlbENsYXNzTmFtZSkge1xuICAgICAgICBjb25zdCBwYXRoTmFtZXMgPSBwYXRoLm1hcCgocGF0aFBhcnQpID0+IHBhdGhQYXJ0Lm5hbWUoKSkuam9pbihcIi5cIilcblxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYE5vIG1vZGVsIGNsYXNzIG5hbWUgZnJvbSAke3BhdGhOYW1lc30uJHtyZWZsZWN0aW9uLm5hbWUoKX1gKVxuICAgICAgfVxuXG4gICAgICByZXN1bHQgPSBhd2FpdCBTZXJ2aWNlcy5jdXJyZW50KCkuc2VuZFJlcXVlc3QoXCJNb2RlbHM6OkFzc29jaWF0aW9uc1wiLCB7bW9kZWxfY2xhc3NfbmFtZTogbW9kZWxDbGFzc05hbWV9KVxuICAgICAgZGF0YSA9IHRoaXMucGFyc2VBc3NvY2lhdGlvbkRhdGEocmVzdWx0KVxuXG4gICAgICBwYXRoLnB1c2gocmVmbGVjdGlvbilcbiAgICB9XG5cbiAgICBjb25zdCB7cmFuc2Fja2FibGVBdHRyaWJ1dGVzfSA9IGRhdGFcbiAgICBjb25zdCBhdHRyaWJ1dGUgPSB0aGlzLnAuZmlsdGVyLmFcbiAgICBjb25zdCByYW5zYWNrYWJsZUF0dHJpYnV0ZSA9IHJhbnNhY2thYmxlQXR0cmlidXRlcy5maW5kKChyYW5zYWNrYWJsZUF0dHJpYnV0ZSkgPT4gZGlnZyhyYW5zYWNrYWJsZUF0dHJpYnV0ZSwgXCJhdHRyaWJ1dGVOYW1lXCIpID09IGF0dHJpYnV0ZSlcblxuICAgIHRoaXMuc2V0U3RhdGUoe2F0dHJpYnV0ZTogcmFuc2Fja2FibGVBdHRyaWJ1dGUsIG1vZGVsQ2xhc3NOYW1lLCBwYXRofSlcbiAgfVxuXG4gIGFzeW5jIGxvYWRSYW5zYWNrUHJlZGljYXRlcygpIHtcbiAgICB0aGlzLmluY3JlYXNlTG9hZGluZygpXG5cbiAgICB0cnkge1xuICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBTZXJ2aWNlcy5jdXJyZW50KCkuc2VuZFJlcXVlc3QoXCJSYW5zYWNrOjpQcmVkaWNhdGVzXCIpXG4gICAgICBjb25zdCBwcmVkaWNhdGVzID0gZGlnZyhyZXNwb25zZSwgXCJwcmVkaWNhdGVzXCIpXG4gICAgICBsZXQgY3VycmVudFByZWRpY2F0ZVxuXG4gICAgICBpZiAodGhpcy5wcm9wcy5maWx0ZXIucHJlKSB7XG4gICAgICAgIGN1cnJlbnRQcmVkaWNhdGUgPSBwcmVkaWNhdGVzLmZpbmQoKHByZWRpY2F0ZSkgPT4gcHJlZGljYXRlLm5hbWUgPT0gdGhpcy5wcm9wcy5maWx0ZXIucHJlKVxuICAgICAgfVxuXG4gICAgICB0aGlzLnNldFN0YXRlKHtcbiAgICAgICAgcHJlZGljYXRlOiBjdXJyZW50UHJlZGljYXRlLFxuICAgICAgICBwcmVkaWNhdGVzXG4gICAgICB9KVxuICAgIH0gZmluYWxseSB7XG4gICAgICB0aGlzLmRlY3JlYXNlTG9hZGluZygpXG4gICAgfVxuICB9XG5cbiAgcmVuZGVyKCkge1xuICAgIGNvbnN0IHticmVha3BvaW50LCB0LCB2YWx1ZUlucHV0UmVmfSA9IHRoaXMudHRcbiAgICBjb25zdCB7YXR0cmlidXRlLCBwYXRoLCBwcmVkaWNhdGUsIHByZWRpY2F0ZXMsIHNjb3BlLCB2YWx1ZX0gPSB0aGlzLnNcbiAgICBjb25zdCB7bWRVcH0gPSBicmVha3BvaW50XG4gICAgbGV0IHN1Ym1pdEVuYWJsZWQgPSBmYWxzZVxuXG4gICAgaWYgKGF0dHJpYnV0ZSAmJiBwcmVkaWNhdGUpIHtcbiAgICAgIHN1Ym1pdEVuYWJsZWQgPSB0cnVlXG4gICAgfSBlbHNlIGlmIChzY29wZSkge1xuICAgICAgc3VibWl0RW5hYmxlZCA9IHRydWVcbiAgICB9XG5cbiAgICByZXR1cm4gKFxuICAgICAgPENhcmRcbiAgICAgICAgdGVzdElEPVwiYXBpLW1ha2VyL3RhYmxlL2ZpbHRlcnMvZmlsdGVyLWZvcm1cIlxuICAgICAgICBzdHlsZT17c3R5bGVzW2BjYXJkLSR7bWRVcH1gXSB8fD0ge1xuICAgICAgICAgIHdpZHRoOiBtZFVwID8gdW5kZWZpbmVkIDogXCIxMDAlXCIsXG4gICAgICAgICAgbWluV2lkdGg6IDUwLFxuICAgICAgICAgIG1pbkhlaWdodDogNTBcbiAgICAgICAgfX1cbiAgICAgID5cbiAgICAgICAgPEZvcm0gb25TdWJtaXQ9e3RoaXMudHQub25TdWJtaXR9PlxuICAgICAgICAgIDxWaWV3IHN0eWxlPXtzdHlsZXMucGF0aFJvdyB8fD0ge2ZsZXhEaXJlY3Rpb246IFwicm93XCJ9fT5cbiAgICAgICAgICAgIHtwYXRoLm1hcCgoe2h1bWFuTmFtZSwgcmVmbGVjdGlvbk5hbWV9LCBwYXRoUGFydEluZGV4KSA9PlxuICAgICAgICAgICAgICA8VmlldyBrZXk9e2Ake3BhdGhQYXJ0SW5kZXh9LSR7cmVmbGVjdGlvbk5hbWV9YH0gc3R5bGU9e3N0eWxlcy5wYXRoSXRlbVJvdyB8fD0ge2ZsZXhEaXJlY3Rpb246IFwicm93XCJ9fT5cbiAgICAgICAgICAgICAgICB7cGF0aFBhcnRJbmRleCA+IDAgJiZcbiAgICAgICAgICAgICAgICAgIDxUZXh0IHN0eWxlPXtzdHlsZXMucGF0aFNlcGFyYXRvciB8fD0ge21hcmdpblJpZ2h0OiA1LCBtYXJnaW5MZWZ0OiA1fX0+XG4gICAgICAgICAgICAgICAgICAgIC1cbiAgICAgICAgICAgICAgICAgIDwvVGV4dD5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgPFRleHQ+XG4gICAgICAgICAgICAgICAgICB7aHVtYW5OYW1lfVxuICAgICAgICAgICAgICAgIDwvVGV4dD5cbiAgICAgICAgICAgICAgPC9WaWV3PlxuICAgICAgICAgICAgKX1cbiAgICAgICAgICA8L1ZpZXc+XG4gICAgICAgICAgPFZpZXcgc3R5bGU9e3N0eWxlc1tgZmlsdGVyc1Jvdy0ke21kVXB9YF0gfHw9IHtmbGV4RGlyZWN0aW9uOiBtZFVwID8gXCJyb3dcIiA6IFwiY29sdW1uXCJ9fT5cbiAgICAgICAgICAgIDxWaWV3IHN0eWxlPXtzdHlsZXNbYHJlbGF0aW9uc2hpcHNDb2x1bW4tJHttZFVwfWBdIHx8PSB7bWFyZ2luVG9wOiBtZFVwID8gdW5kZWZpbmVkIDogMjV9fT5cbiAgICAgICAgICAgICAgPEhlYWRlcj5cbiAgICAgICAgICAgICAgICB7dChcIi5yZWxhdGlvbnNoaXBzXCIsIHtkZWZhdWx0VmFsdWU6IFwiUmVsYXRpb25zaGlwc1wifSl9XG4gICAgICAgICAgICAgIDwvSGVhZGVyPlxuICAgICAgICAgICAgICB7dGhpcy5zLmFzc29jaWF0aW9ucyAmJiB0aGlzLnNvcnRlZFJlZmxlY3Rpb25zQnlOYW1lKHRoaXMucy5hc3NvY2lhdGlvbnMpLm1hcCgocmVmbGVjdGlvbikgPT5cbiAgICAgICAgICAgICAgICA8UmVmbGVjdGlvbkVsZW1lbnRcbiAgICAgICAgICAgICAgICAgIGtleT17cmVmbGVjdGlvbi5yZWZsZWN0aW9uTmFtZX1cbiAgICAgICAgICAgICAgICAgIG1vZGVsQ2xhc3NOYW1lPXt0aGlzLnMubW9kZWxDbGFzc05hbWV9XG4gICAgICAgICAgICAgICAgICBvbkNsaWNrPXt0aGlzLnR0Lm9uUmVmbGVjdGlvbkNsaWNrZWR9XG4gICAgICAgICAgICAgICAgICByZWZsZWN0aW9uPXtyZWZsZWN0aW9ufVxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICl9XG4gICAgICAgICAgICA8L1ZpZXc+XG4gICAgICAgICAgICA8VmlldyBzdHlsZT17c3R5bGVzW2BhdHRyaWJ1dGVzQ29sdW1uLSR7bWRVcH1gXSB8fD0ge21hcmdpblRvcDogbWRVcCA/IHVuZGVmaW5lZCA6IDI1fX0+XG4gICAgICAgICAgICAgIDxIZWFkZXI+XG4gICAgICAgICAgICAgICAge3QoXCIuYXR0cmlidXRlc1wiLCB7ZGVmYXVsdFZhbHVlOiBcIkF0dHJpYnV0ZXNcIn0pfVxuICAgICAgICAgICAgICA8L0hlYWRlcj5cbiAgICAgICAgICAgICAge3RoaXMucy5yYW5zYWNrYWJsZUF0dHJpYnV0ZXMgJiYgdGhpcy5zb3J0ZWRBdHRyaWJ1dGVzQnlOYW1lKHRoaXMucy5yYW5zYWNrYWJsZUF0dHJpYnV0ZXMpPy5tYXAoKGF0dHJpYnV0ZSkgPT5cbiAgICAgICAgICAgICAgICA8QXR0cmlidXRlRWxlbWVudFxuICAgICAgICAgICAgICAgICAgYWN0aXZlPXthdHRyaWJ1dGUuYXR0cmlidXRlTmFtZSA9PSB0aGlzLnMuYXR0cmlidXRlPy5hdHRyaWJ1dGVOYW1lfVxuICAgICAgICAgICAgICAgICAgYXR0cmlidXRlPXthdHRyaWJ1dGV9XG4gICAgICAgICAgICAgICAgICBrZXk9e2F0dHJpYnV0ZS5hdHRyaWJ1dGVOYW1lfVxuICAgICAgICAgICAgICAgICAgbW9kZWxDbGFzc05hbWU9e3RoaXMucy5tb2RlbENsYXNzTmFtZX1cbiAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9e3RoaXMudHQub25BdHRyaWJ1dGVDbGlja2VkfVxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgIHt0aGlzLnMucmFuc2Fja2FibGVTY29wZXM/Lm1hcCgoc2NvcGUpID0+XG4gICAgICAgICAgICAgICAgPFNjb3BlRWxlbWVudFxuICAgICAgICAgICAgICAgICAgYWN0aXZlPXtzY29wZSA9PSB0aGlzLnMuc2NvcGV9XG4gICAgICAgICAgICAgICAgICBrZXk9e3Njb3BlfVxuICAgICAgICAgICAgICAgICAgc2NvcGU9e3Njb3BlfVxuICAgICAgICAgICAgICAgICAgb25TY29wZUNsaWNrZWQ9e3RoaXMudHQub25TY29wZUNsaWNrZWR9XG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgIDwvVmlldz5cbiAgICAgICAgICAgIDxWaWV3IHN0eWxlPXtzdHlsZXNbYHNlYXJjaENvbHVtbi0ke21kVXB9YF0gfHw9IHttYXJnaW5Ub3A6IG1kVXAgPyB1bmRlZmluZWQgOiAyNX19PlxuICAgICAgICAgICAgICA8SGVhZGVyPlxuICAgICAgICAgICAgICAgIHt0KFwiLnNlYXJjaFwiLCB7ZGVmYXVsdFZhbHVlOiBcIlNlYXJjaFwifSl9XG4gICAgICAgICAgICAgIDwvSGVhZGVyPlxuICAgICAgICAgICAgICA8Vmlldz5cbiAgICAgICAgICAgICAgICB7cHJlZGljYXRlcyAmJiAhdGhpcy5zLnNjb3BlICYmXG4gICAgICAgICAgICAgICAgICA8U2VsZWN0XG4gICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cInByZWRpY2F0ZS1zZWxlY3RcIlxuICAgICAgICAgICAgICAgICAgICBkZWZhdWx0VmFsdWU9e3ByZWRpY2F0ZT8ubmFtZX1cbiAgICAgICAgICAgICAgICAgICAgaW5jbHVkZUJsYW5rXG4gICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXt0aGlzLnR0Lm9uUHJlZGljYXRlQ2hhbmdlZH1cbiAgICAgICAgICAgICAgICAgICAgb3B0aW9ucz17cHJlZGljYXRlcy5tYXAoKHByZWRpY2F0ZSkgPT4gZGlnZyhwcmVkaWNhdGUsIFwibmFtZVwiKSl9XG4gICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgPC9WaWV3PlxuICAgICAgICAgICAgICA8VmlldyBzdHlsZT17c3R5bGVzLnNlYXJjaElucHV0Q29udGFpbmVyIHx8PSB7bWFyZ2luVG9wOiAxMH19PlxuICAgICAgICAgICAgICAgIHsoKGF0dHJpYnV0ZSAmJiBwcmVkaWNhdGUpIHx8IHNjb3BlKSAmJlxuICAgICAgICAgICAgICAgICAgPElucHV0IGNsYXNzTmFtZT1cInZhbHVlLWlucHV0XCIgZGVmYXVsdFZhbHVlPXt2YWx1ZX0gaW5wdXRSZWY9e3ZhbHVlSW5wdXRSZWZ9IC8+XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICA8L1ZpZXc+XG4gICAgICAgICAgICA8L1ZpZXc+XG4gICAgICAgICAgPC9WaWV3PlxuICAgICAgICAgIDxWaWV3IHN0eWxlPXtzdHlsZXMuYWN0aW9uc1JvdyB8fD0ge2ZsZXhEaXJlY3Rpb246IFwicm93XCIsIGp1c3RpZnlDb250ZW50OiBcImVuZFwiLCBtYXJnaW5Ub3A6IDEwfX0+XG4gICAgICAgICAgICA8QnV0dG9uXG4gICAgICAgICAgICAgIGRhbmdlclxuICAgICAgICAgICAgICBpY29uPVwicmVtb3ZlXCJcbiAgICAgICAgICAgICAgbGFiZWw9e3QoXCIuY2FuY2VsXCIsIHtkZWZhdWx0VmFsdWU6IFwiQ2FuY2VsXCJ9KX1cbiAgICAgICAgICAgICAgb25QcmVzcz17dGhpcy5wLm9uUmVxdWVzdENsb3NlfVxuICAgICAgICAgICAgICBwcmVzc2FibGVQcm9wcz17dGhpcy5jYWNoZShcImNhbmNlbEJ1dHRvblByZXNzYWJsZVByb3BzXCIsIHtcbiAgICAgICAgICAgICAgICBtYXJnaW5SaWdodDogNVxuICAgICAgICAgICAgICB9KX1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8QnV0dG9uXG4gICAgICAgICAgICAgIGRpc2FibGVkPXshc3VibWl0RW5hYmxlZH1cbiAgICAgICAgICAgICAgaWNvbj1cImNoZWNrXCJcbiAgICAgICAgICAgICAgbGFiZWw9e3QoXCIuYXBwbHlcIiwge2RlZmF1bHRWYWx1ZTogXCJBcHBseVwifSl9XG4gICAgICAgICAgICAgIHByZXNzYWJsZVByb3BzPXt0aGlzLmNhY2hlKFwiYXBwbGVCdXR0b25QcmVzc2FibGVQcm9wc1wiLCB7XG4gICAgICAgICAgICAgICAgc3R5bGU6IHttYXJnaW5MZWZ0OiA1fSxcbiAgICAgICAgICAgICAgICB0ZXN0SUQ6IFwiYXBwbHktZmlsdGVyLWJ1dHRvblwiXG4gICAgICAgICAgICAgIH0pfVxuICAgICAgICAgICAgICBzdWJtaXRcbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgPC9WaWV3PlxuICAgICAgICA8L0Zvcm0+XG4gICAgICAgIHt0aGlzLnMubG9hZGluZyA+IDAgJiZcbiAgICAgICAgICA8Vmlld1xuICAgICAgICAgICAgc3R5bGU9e3N0eWxlcy5sb2FkaW5nT3ZlcmxheSB8fD0ge1xuICAgICAgICAgICAgICBhbGlnbkl0ZW1zOiBcImNlbnRlclwiLFxuICAgICAgICAgICAgICBqdXN0aWZ5Q29udGVudDogXCJjZW50ZXJcIixcbiAgICAgICAgICAgICAgcG9zaXRpb246IFwiYWJzb2x1dGVcIixcbiAgICAgICAgICAgICAgd2lkdGg6IFwiMTAwJVwiLFxuICAgICAgICAgICAgICBoZWlnaHQ6IFwiMTAwJVwiXG4gICAgICAgICAgICB9fVxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxBY3Rpdml0eUluZGljYXRvciBzaXplPVwibGFyZ2VcIiAvPlxuICAgICAgICAgIDwvVmlldz5cbiAgICAgICAgfVxuICAgICAgPC9DYXJkPlxuICAgIClcbiAgfVxuXG4gIGN1cnJlbnRNb2RlbENsYXNzRnJvbVBhdGgocGF0aCkge1xuICAgIGNvbnN0IHttb2RlbENsYXNzfSA9IHRoaXMucFxuICAgIGxldCBjdXJyZW50TW9kZWxDbGFzcyA9IG1vZGVsQ2xhc3NcblxuICAgIGZvciAoY29uc3QgcGF0aFBhcnQgb2YgcGF0aCkge1xuICAgICAgY29uc3QgY2FtZWxpemVkUGF0aFBhcnQgPSBpbmZsZWN0aW9uLmNhbWVsaXplKHBhdGhQYXJ0LCB0cnVlKVxuICAgICAgY29uc3QgYXNzb2NpYXRpb24gPSBjdXJyZW50TW9kZWxDbGFzcy5yYW5zYWNrYWJsZUFzc29jaWF0aW9ucygpLmZpbmQoKHJlZmxlY3Rpb24pID0+IHJlZmxlY3Rpb24ubmFtZSgpID09IGNhbWVsaXplZFBhdGhQYXJ0KVxuXG4gICAgICBpZiAoIWFzc29jaWF0aW9uKSB7XG4gICAgICAgIGNvbnN0IHJhbnNhY2thYmxlQXNzb2NpYXRpb25OYW1lcyA9IGN1cnJlbnRNb2RlbENsYXNzLnJhbnNhY2thYmxlQXNzb2NpYXRpb25zKCkubWFwKChyZWZsZWN0aW9uKSA9PiByZWZsZWN0aW9uLm5hbWUoKSkuam9pbihcIiwgXCIpXG5cbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBDb3VsZCBub3QgZmluZCBhIFJhbnNhY2thYmxlIGFzc29jaWF0aW9uIGJ5IHRoYXQgbmFtZTogJHtjYW1lbGl6ZWRQYXRoUGFydH0gaW4gJHtyYW5zYWNrYWJsZUFzc29jaWF0aW9uTmFtZXN9YClcbiAgICAgIH1cblxuICAgICAgY3VycmVudE1vZGVsQ2xhc3MgPSBhc3NvY2lhdGlvbi5tb2RlbENsYXNzKClcbiAgICB9XG5cbiAgICByZXR1cm4gY3VycmVudE1vZGVsQ2xhc3NcbiAgfVxuXG4gIGN1cnJlbnRQYXRoUGFydHMoKSB7XG4gICAgY29uc3Qge21vZGVsQ2xhc3N9ID0gdGhpcy5wXG4gICAgY29uc3Qge3BhdGh9ID0gdGhpcy5zXG4gICAgY29uc3QgcmVzdWx0ID0gW11cbiAgICBsZXQgY3VycmVudE1vZGVsQ2xhc3MgPSBtb2RlbENsYXNzXG5cbiAgICByZXN1bHQucHVzaCh7XG4gICAgICBtb2RlbENsYXNzLFxuICAgICAgdHJhbnNsYXRpb246IG1vZGVsQ2xhc3MubW9kZWxOYW1lKCkuaHVtYW4oe2NvdW50OiAyfSlcbiAgICB9KVxuXG4gICAgZm9yIChjb25zdCBwYXRoUGFydCBvZiBwYXRoKSB7XG4gICAgICBjb25zdCBjYW1lbGl6ZWRQYXRoUGFydCA9IGluZmxlY3Rpb24uY2FtZWxpemUocGF0aFBhcnQsIHRydWUpXG4gICAgICBjb25zdCBwYXRoUGFydFRyYW5zbGF0aW9uID0gY3VycmVudE1vZGVsQ2xhc3MuaHVtYW5BdHRyaWJ1dGVOYW1lKGNhbWVsaXplZFBhdGhQYXJ0KVxuXG4gICAgICBjdXJyZW50TW9kZWxDbGFzcyA9IGN1cnJlbnRNb2RlbENsYXNzLnJhbnNhY2thYmxlQXNzb2NpYXRpb25zKCkuZmluZCgocmVmbGVjdGlvbikgPT4gcmVmbGVjdGlvbi5uYW1lKCkgPT0gY2FtZWxpemVkUGF0aFBhcnQpLm1vZGVsQ2xhc3MoKVxuXG4gICAgICByZXN1bHQucHVzaCh7XG4gICAgICAgIG1vZGVsQ2xhc3M6IGN1cnJlbnRNb2RlbENsYXNzLFxuICAgICAgICB0cmFuc2xhdGlvbjogcGF0aFBhcnRUcmFuc2xhdGlvblxuICAgICAgfSlcbiAgICB9XG5cbiAgICByZXR1cm4gcmVzdWx0XG4gIH1cblxuICBvbkF0dHJpYnV0ZUNsaWNrZWQgPSAoe2F0dHJpYnV0ZX0pID0+IHtcbiAgICB0aGlzLnNldFN0YXRlKHtcbiAgICAgIGF0dHJpYnV0ZSxcbiAgICAgIHNjb3BlOiB1bmRlZmluZWRcbiAgICB9KVxuICB9XG5cbiAgb25QcmVkaWNhdGVDaGFuZ2VkID0gKGUpID0+IHtcbiAgICBjb25zdCBjaG9zZW5QcmVkaWNhdGVOYW1lID0gZGlnZyhlLCBcInRhcmdldFwiLCBcInZhbHVlXCIpXG4gICAgY29uc3QgcHJlZGljYXRlID0gdGhpcy5zLnByZWRpY2F0ZXMuZmluZCgocHJlZGljYXRlKSA9PiBwcmVkaWNhdGUubmFtZSA9PSBjaG9zZW5QcmVkaWNhdGVOYW1lKVxuXG4gICAgdGhpcy5zZXRTdGF0ZSh7cHJlZGljYXRlfSlcbiAgfVxuXG4gIG9uUmVmbGVjdGlvbkNsaWNrZWQgPSAoe3JlZmxlY3Rpb259KSA9PiB7XG4gICAgY29uc3QgbmV3UGF0aCA9IHRoaXMucy5wYXRoLmNvbmNhdChbcmVmbGVjdGlvbl0pXG5cbiAgICB0aGlzLnNldFN0YXRlKHtcbiAgICAgIGFzc29jaWF0aW9uczogbnVsbCxcbiAgICAgIGF0dHJpYnV0ZTogdW5kZWZpbmVkLFxuICAgICAgYWN0dWFsQ3VycmVudE1vZGVsQ2xhc3M6IHttb2RlbENsYXNzOiBkaWdnKHJlZmxlY3Rpb24sIFwicmVzb3VyY2VcIil9LFxuICAgICAgbW9kZWxDbGFzc05hbWU6IGRpZ2cocmVmbGVjdGlvbiwgXCJtb2RlbENsYXNzTmFtZVwiKSxcbiAgICAgIHBhdGg6IG5ld1BhdGgsXG4gICAgICBwcmVkaWNhdGU6IHVuZGVmaW5lZFxuICAgIH0pXG4gIH1cblxuICBvblNjb3BlQ2xpY2tlZCA9ICh7c2NvcGV9KSA9PiB7XG4gICAgdGhpcy5zZXRTdGF0ZSh7XG4gICAgICBhdHRyaWJ1dGU6IHVuZGVmaW5lZCxcbiAgICAgIHByZWRpY2F0ZTogdW5kZWZpbmVkLFxuICAgICAgc2NvcGVcbiAgICB9KVxuICB9XG5cbiAgb25TdWJtaXQgPSAoKSA9PiB7XG4gICAgY29uc3Qge2ZpbHRlciwgcXVlcnlTZWFyY2hOYW1lfSA9IHRoaXMucFxuICAgIGNvbnN0IHthdHRyaWJ1dGUsIHBhdGgsIHByZWRpY2F0ZSwgc2NvcGV9ID0gdGhpcy5zXG4gICAgY29uc3Qge2ZpbHRlckluZGV4fSA9IGRpZ3MoZmlsdGVyLCBcImZpbHRlckluZGV4XCIpXG4gICAgY29uc3Qgc2VhcmNoUGFyYW1zID0gUGFyYW1zLnBhcnNlKClbcXVlcnlTZWFyY2hOYW1lXSB8fCB7fVxuICAgIGNvbnN0IHZhbHVlID0gZGlnZyh0aGlzLnR0LnZhbHVlSW5wdXRSZWYsIFwiY3VycmVudFwiLCBcInZhbHVlXCIpXG4gICAgY29uc3QgcCA9IHBhdGgubWFwKChyZWZsZWN0aW9uKSA9PiBpbmZsZWN0aW9uLnVuZGVyc2NvcmUocmVmbGVjdGlvbi5yZWZsZWN0aW9uTmFtZSkpXG4gICAgY29uc3QgbmV3U2VhcmNoUGFyYW1zID0ge1xuICAgICAgcCxcbiAgICAgIHY6IHZhbHVlXG4gICAgfVxuXG4gICAgaWYgKGF0dHJpYnV0ZSkge1xuICAgICAgbmV3U2VhcmNoUGFyYW1zLmEgPSBkaWdnKGF0dHJpYnV0ZSwgXCJhdHRyaWJ1dGVOYW1lXCIpXG4gICAgICBuZXdTZWFyY2hQYXJhbXMucHJlID0gZGlnZyhwcmVkaWNhdGUsIFwibmFtZVwiKVxuICAgIH0gZWxzZSBpZiAoc2NvcGUpIHtcbiAgICAgIG5ld1NlYXJjaFBhcmFtcy5zYyA9IHNjb3BlXG4gICAgfSBlbHNlIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcIkRvbnQga25vdyBpZiBzaG91bGQgc2VhcmNoIGZvciBhdHRyaWJ1dGUgb3Igc2NvcGU/XCIpXG4gICAgfVxuXG4gICAgc2VhcmNoUGFyYW1zW2ZpbHRlckluZGV4XSA9IEpTT04uc3RyaW5naWZ5KG5ld1NlYXJjaFBhcmFtcylcblxuICAgIGNvbnN0IG5ld1BhcmFtcyA9IHt9XG5cbiAgICBuZXdQYXJhbXNbcXVlcnlTZWFyY2hOYW1lXSA9IHNlYXJjaFBhcmFtc1xuXG4gICAgUGFyYW1zLmNoYW5nZVBhcmFtcyhuZXdQYXJhbXMpXG5cbiAgICB0aGlzLnByb3BzLm9uQXBwbHlDbGlja2VkKClcbiAgfVxuXG4gIHJlZmxlY3Rpb25zV2l0aE1vZGVsQ2xhc3MocmVmbGVjdGlvbnMpIHtcbiAgICByZXR1cm4gcmVmbGVjdGlvbnMuZmlsdGVyKChyZWZsZWN0aW9uKSA9PiB7XG4gICAgICB0cnkge1xuICAgICAgICByZWZsZWN0aW9uLm1vZGVsQ2xhc3MoKVxuXG4gICAgICAgIHJldHVybiB0cnVlXG4gICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICByZXR1cm4gZmFsc2VcbiAgICAgIH1cbiAgICB9KVxuICB9XG5cbiAgc29ydGVkQXR0cmlidXRlc0J5TmFtZShhdHRyaWJ1dGVzKSB7XG4gICAgcmV0dXJuIGF0dHJpYnV0ZXMuc29ydCgoYSwgYikgPT5cbiAgICAgIGRpZ2coYSwgXCJodW1hbk5hbWVcIilcbiAgICAgICAgLnRvTG93ZXJDYXNlKClcbiAgICAgICAgLmxvY2FsZUNvbXBhcmUoXG4gICAgICAgICAgZGlnZyhiLCBcImh1bWFuTmFtZVwiKS50b0xvd2VyQ2FzZSgpXG4gICAgICAgIClcbiAgICApXG4gIH1cblxuICBzb3J0ZWRSZWZsZWN0aW9uc0J5TmFtZShyZWZsZWN0aW9ucykge1xuICAgIHJldHVybiByZWZsZWN0aW9ucy5zb3J0KChhLCBiKSA9PlxuICAgICAgZGlnZyhhLCBcImh1bWFuTmFtZVwiKVxuICAgICAgICAudG9Mb3dlckNhc2UoKVxuICAgICAgICAubG9jYWxlQ29tcGFyZShcbiAgICAgICAgICBkaWdnKGIsIFwiaHVtYW5OYW1lXCIpLnRvTG93ZXJDYXNlKClcbiAgICAgICAgKVxuICAgIClcbiAgfVxufSkpXG4iXX0=
355
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsdGVyLWZvcm0uanMiLCJzb3VyY2VSb290IjoiL3NyYy8iLCJzb3VyY2VzIjpbInRhYmxlL2ZpbHRlcnMvZmlsdGVyLWZvcm0uanN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxZQUFZO0FBQ1osdUZBQXVGO0FBQ3ZGLHNHQUFzRztBQUN0RywrRUFBK0U7QUFDL0UsaUZBQWlGO0FBQ2pGLE9BQU8sS0FBSyxFQUFFLEVBQUMsT0FBTyxFQUFFLE1BQU0sRUFBQyxNQUFNLE9BQU8sQ0FBQTtBQUM1QyxPQUFPLEVBQUMsaUJBQWlCLEVBQUUsSUFBSSxFQUFDLE1BQU0sY0FBYyxDQUFBO0FBQ3BELE9BQU8sZ0JBQWdCLE1BQU0scUJBQXFCLENBQUE7QUFDbEQsT0FBTyxNQUFNLE1BQU0sb0JBQW9CLENBQUE7QUFDdkMsT0FBTyxJQUFJLE1BQU0sa0JBQWtCLENBQUE7QUFDbkMsT0FBTyxFQUFDLElBQUksRUFBRSxJQUFJLEVBQUMsTUFBTSxXQUFXLENBQUE7QUFDcEMsT0FBTyxLQUFLLFVBQVUsTUFBTSxZQUFZLENBQUE7QUFDeEMsT0FBTyxFQUFDLElBQUksRUFBQyxNQUFNLFlBQVksQ0FBQTtBQUMvQixPQUFPLE1BQU0sTUFBTSxvQkFBb0IsQ0FBQTtBQUN2QyxPQUFPLEtBQUssTUFBTSxvQkFBb0IsQ0FBQTtBQUN0QyxPQUFPLElBQUksTUFBTSxpQ0FBaUMsQ0FBQTtBQUNsRCxPQUFPLE1BQU0sTUFBTSxpQkFBaUIsQ0FBQTtBQUNwQyxPQUFPLFNBQVMsTUFBTSxZQUFZLENBQUE7QUFDbEMsT0FBTyxjQUFjLE1BQU0sa0JBQWtCLENBQUE7QUFDN0MsT0FBTyxpQkFBaUIsTUFBTSxzQkFBc0IsQ0FBQTtBQUNwRCxPQUFPLFlBQVksTUFBTSxpQkFBaUIsQ0FBQTtBQUMxQyxPQUFPLE1BQU0sTUFBTSxxQkFBcUIsQ0FBQTtBQUN4QyxPQUFPLFFBQVEsTUFBTSxtQkFBbUIsQ0FBQTtBQUN4QyxPQUFPLEVBQUMsY0FBYyxFQUFFLGNBQWMsRUFBQyxNQUFN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LENBQUM7SUFFRCx1QkFBdUIsQ0FBQyxXQUFXO1FBQ2pDLE9BQU8sV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUMvQixJQUFJLENBQUMsQ0FBQyxFQUFFLFdBQVcsQ0FBQzthQUNqQixXQUFXLEVBQUU7YUFDYixhQUFhLENBQ1osSUFBSSxDQUFDLENBQUMsRUFBRSxXQUFXLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FDbkMsQ0FDSixDQUFBO0lBQ0gsQ0FBQztDQUNGLENBQUMsQ0FBQyxDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQHRzLWNoZWNrXG4vKiBlc2xpbnQtZGlzYWJsZSBjb21tYS1kYW5nbGUsIGltcGxpY2l0LWFycm93LWxpbmVicmVhaywgaW1wb3J0L25vLW5hbWVkLWFzLWRlZmF1bHQgKi9cbi8qIGVzbGludC1kaXNhYmxlIGNvbXBsZXhpdHksIG5ldy1jYXAsIG5ld2xpbmUtcGVyLWNoYWluZWQtY2FsbCwgbm8tYXdhaXQtaW4tbG9vcCwgbm8tcmV0dXJuLWFzc2lnbiAqL1xuLyogZXNsaW50LWRpc2FibGUgbm8tdW51c2VkLXZhcnMsIHJlYWN0L2pzeC1tYXgtZGVwdGgsIHJlYWN0L2pzeC1uby1saXRlcmFscyAqL1xuLyogZXNsaW50LWRpc2FibGUgcmVhY3QvanN4LXNvcnQtcHJvcHMsIHJlYWN0L25vLWFycmF5LWluZGV4LWtleSwgc29ydC1pbXBvcnRzICovXG5pbXBvcnQgUmVhY3QsIHt1c2VNZW1vLCB1c2VSZWZ9IGZyb20gXCJyZWFjdFwiXG5pbXBvcnQge0FjdGl2aXR5SW5kaWNhdG9yLCBWaWV3fSBmcm9tIFwicmVhY3QtbmF0aXZlXCJcbmltcG9ydCBBdHRyaWJ1dGVFbGVtZW50IGZyb20gXCIuL2F0dHJpYnV0ZS1lbGVtZW50XCJcbmltcG9ydCBCdXR0b24gZnJvbSBcIi4uLy4uL3V0aWxzL2J1dHRvblwiXG5pbXBvcnQgQ2FyZCBmcm9tIFwiLi4vLi4vdXRpbHMvY2FyZFwiXG5pbXBvcnQge2RpZ2csIGRpZ3N9IGZyb20gXCJkaWdnZXJpemVcIlxuaW1wb3J0ICogYXMgaW5mbGVjdGlvbiBmcm9tIFwiaW5mbGVjdGlvblwiXG5pbXBvcnQge0Zvcm19IGZyb20gXCIuLi8uLi9mb3JtXCJcbmltcG9ydCBIZWFkZXIgZnJvbSBcIi4uLy4uL3V0aWxzL2hlYWRlclwiXG5pbXBvcnQgSW5wdXQgZnJvbSBcIi4uLy4uL2lucHV0cy9pbnB1dFwiXG5pbXBvcnQgbWVtbyBmcm9tIFwic2V0LXN0YXRlLWNvbXBhcmUvYnVpbGQvbWVtby5qc1wiXG5pbXBvcnQgUGFyYW1zIGZyb20gXCIuLi8uLi9wYXJhbXMuanNcIlxuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiXG5pbXBvcnQgUHJvcFR5cGVzRXhhY3QgZnJvbSBcInByb3AtdHlwZXMtZXhhY3RcIlxuaW1wb3J0IFJlZmxlY3Rpb25FbGVtZW50IGZyb20gXCIuL3JlZmxlY3Rpb24tZWxlbWVudFwiXG5pbXBvcnQgU2NvcGVFbGVtZW50IGZyb20gXCIuL3Njb3BlLWVsZW1lbnRcIlxuaW1wb3J0IFNlbGVjdCBmcm9tIFwiLi4vLi4vaW5wdXRzL3NlbGVjdFwiXG5pbXBvcnQgU2VydmljZXMgZnJvbSBcIi4uLy4uL3NlcnZpY2VzLmpzXCJcbmltcG9ydCB7U2hhcGVDb21wb25lbnQsIHNoYXBlQ29tcG9uZW50fSBmcm9tIFwic2V0LXN0YXRlLWNvbXBhcmUvYnVpbGQvc2hhcGUtY29tcG9uZW50LmpzXCJcbmltcG9ydCBUZXh0IGZyb20gXCIuLi8uLi91dGlscy90ZXh0XCJcbmltcG9ydCB7dXNlQnJlYWtwb2ludH0gZnJvbSBcInJlc3BvbnNpdmUtYnJlYWtwb2ludHNcIlxuaW1wb3J0IHVzZUkxOG4gZnJvbSBcImkxOG4tb24tc3Rlcm9pZHMvYnVpbGQvc3JjL3VzZS1pMThuLmpzXCJcblxuY29uc3Qgc3R5bGVzID0ge31cblxuLyoqIEB0eXBlZGVmIHt0eXBlb2YgaW1wb3J0KFwiLi4vLi4vLi4vc3JjL2Jhc2UtbW9kZWwuanNcIikuZGVmYXVsdH0gQXBpTWFrZXJNb2RlbENsYXNzTGlrZSAqL1xuLyoqXG4gKiBAdHlwZWRlZiB7b2JqZWN0fSBGaWx0ZXJBdHRyaWJ1dGVcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBhdHRyaWJ1dGVOYW1lXG4gKiBAcHJvcGVydHkge3N0cmluZ30gaHVtYW5OYW1lXG4gKi9cbi8qKlxuICogQHR5cGVkZWYge29iamVjdH0gRmlsdGVyUmVmbGVjdGlvblxuICogQHByb3BlcnR5IHtzdHJpbmd9IGh1bWFuTmFtZVxuICAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBtb2RlbENsYXNzTmFtZVxuICAqIEBwcm9wZXJ0eSB7c3RyaW5nfSByZWZsZWN0aW9uTmFtZVxuICAqIEBwcm9wZXJ0eSB7QXBpTWFrZXJNb2RlbENsYXNzTGlrZX0gcmVzb3VyY2VcbiAqL1xuLyoqXG4gKiBAdHlwZWRlZiB7b2JqZWN0fSBGaWx0ZXJQcmVkaWNhdGVcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBuYW1lXG4gKi9cbi8qKlxuICogQHR5cGVkZWYge29iamVjdH0gQXNzb2NpYXRpb25zU2VydmljZVJlc3VsdFxuICogQHByb3BlcnR5IHt7aHVtYW5fbmFtZTogc3RyaW5nLCBtb2RlbF9jbGFzc19uYW1lOiBzdHJpbmcsIHJlZmxlY3Rpb25fbmFtZTogc3RyaW5nLCByZXNvdXJjZTogQXBpTWFrZXJNb2RlbENsYXNzTGlrZX1bXX0gYXNzb2NpYXRpb25zXG4gKiBAcHJvcGVydHkge3thdHRyaWJ1dGVfbmFtZTogc3RyaW5nLCBodW1hbl9uYW1lOiBzdHJpbmd9W119IHJhbnNhY2thYmxlX2F0dHJpYnV0ZXNcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nW119IHJhbnNhY2thYmxlX3Njb3Blc1xuICovXG4vKipcbiAqIEB0eXBlZGVmIHtvYmplY3R9IEZpbHRlckNvbmZpZ1xuICogQHByb3BlcnR5IHtzdHJpbmd9IFthXVxuICogQHByb3BlcnR5IHtudW1iZXJ9IGZpbHRlckluZGV4XG4gKiBAcHJvcGVydHkge3N0cmluZ1tdfSBbcF1cbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBbcHJlXVxuICogQHByb3BlcnR5IHtzdHJpbmd9IFtzY11cbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBbdl1cbiAqL1xuLyoqXG4gKiBAdHlwZWRlZiB7b2JqZWN0fSBQcm9wc1xuICogQHByb3BlcnR5IHtGaWx0ZXJDb25maWd9IGZpbHRlclxuICogQHByb3BlcnR5IHtBcGlNYWtlck1vZGVsQ2xhc3NMaWtlfSBtb2RlbENsYXNzXG4gKiBAcHJvcGVydHkgeygpID0+IHZvaWR9IG9uQXBwbHlDbGlja2VkXG4gKiBAcHJvcGVydHkgeygpID0+IHZvaWR9IG9uUmVxdWVzdENsb3NlXG4gKiBAcHJvcGVydHkge3N0cmluZ30gcXVlcnlTZWFyY2hOYW1lXG4gKi9cbi8qKlxuICogQHR5cGVkZWYge29iamVjdH0gU3RhdGVcbiAqIEBwcm9wZXJ0eSB7e21vZGVsQ2xhc3M6IEFwaU1ha2VyTW9kZWxDbGFzc0xpa2V9fSBhY3R1YWxDdXJyZW50TW9kZWxDbGFzc1xuICogQHByb3BlcnR5IHtGaWx0ZXJSZWZsZWN0aW9uW118bnVsbH0gYXNzb2NpYXRpb25zXG4gKiBAcHJvcGVydHkge0ZpbHRlckF0dHJpYnV0ZXx1bmRlZmluZWR9IGF0dHJpYnV0ZVxuICogQHByb3BlcnR5IHtudW1iZXJ9IGxvYWRpbmdcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBtb2RlbENsYXNzTmFtZVxuICogQHByb3BlcnR5IHtGaWx0ZXJSZWZsZWN0aW9uW119IHBhdGhcbiAqIEBwcm9wZXJ0eSB7RmlsdGVyUHJlZGljYXRlfHVuZGVmaW5lZH0gcHJlZGljYXRlXG4gKiBAcHJvcGVydHkge0ZpbHRlclByZWRpY2F0ZVtdfHVuZGVmaW5lZH0gcHJlZGljYXRlc1xuICogQHByb3BlcnR5IHtGaWx0ZXJBdHRyaWJ1dGVbXXx1bmRlZmluZWR9IHJhbnNhY2thYmxlQXR0cmlidXRlc1xuICogQHByb3BlcnR5IHtzdHJpbmdbXXx1bmRlZmluZWR9IHJhbnNhY2thYmxlU2NvcGVzXG4gKiBAcHJvcGVydHkge3N0cmluZ3x1bmRlZmluZWR9IHNjb3BlXG4gKiBAcHJvcGVydHkge3N0cmluZ3x1bmRlZmluZWR9IHZhbHVlXG4gKi9cbmV4cG9ydCBkZWZhdWx0IG1lbW8oc2hhcGVDb21wb25lbnQoLyoqIEBhdWdtZW50cyB7U2hhcGVDb21wb25lbnQ8UHJvcHMsIFN0YXRlPn0gKi8gY2xhc3MgQXBpTWFrZXJUYWJsZUZpbHRlcnNGaWx0ZXJGb3JtIGV4dGVuZHMgU2hhcGVDb21wb25lbnQge1xuICBzdGF0aWMgcHJvcFR5cGVzID0gUHJvcFR5cGVzRXhhY3Qoe1xuICAgIGZpbHRlcjogUHJvcFR5cGVzLm9iamVjdCxcbiAgICBtb2RlbENsYXNzOiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkLFxuICAgIG9uQXBwbHlDbGlja2VkOiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkLFxuICAgIG9uUmVxdWVzdENsb3NlOiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkLFxuICAgIHF1ZXJ5U2VhcmNoTmFtZTogUHJvcFR5cGVzLnN0cmluZy5pc1JlcXVpcmVkXG4gIH0pXG5cbiAgc3RhdGUgPSB7XG4gICAgYXNzb2NpYXRpb25zOiBudWxsLFxuICAgIGF0dHJpYnV0ZTogdW5kZWZpbmVkLFxuICAgIGFjdHVhbEN1cnJlbnRNb2RlbENsYXNzOiB7bW9kZWxDbGFzczogdGhpcy5wLm1vZGVsQ2xhc3N9LFxuICAgIGxvYWRpbmc6IDAsXG4gICAgbW9kZWxDbGFzc05hbWU6IGRpZ2codGhpcy5wLm1vZGVsQ2xhc3MubW9kZWxDbGFzc0RhdGEoKSwgXCJjbGFzc05hbWVcIiksXG4gICAgcGF0aDogW10sXG4gICAgcHJlZGljYXRlOiB1bmRlZmluZWQsXG4gICAgcHJlZGljYXRlczogdW5kZWZpbmVkLFxuICAgIHJhbnNhY2thYmxlQXR0cmlidXRlczogdW5kZWZpbmVkLFxuICAgIHJhbnNhY2thYmxlU2NvcGVzOiB1bmRlZmluZWQsXG4gICAgc2NvcGU6IHRoaXMucHJvcHMuZmlsdGVyLnNjLFxuICAgIHZhbHVlOiB0aGlzLnByb3BzLmZpbHRlci52XG4gIH1cblxuICBzZXR1cCgpIHtcbiAgICBjb25zdCB7dH0gPSB1c2VJMThuKHtuYW1lc3BhY2U6IFwianMuYXBpX21ha2VyLnRhYmxlLmZpbHRlcnMuZmlsdGVyX2Zvcm1cIn0pXG5cbiAgICB0aGlzLmJyZWFrcG9pbnQgPSB1c2VCcmVha3BvaW50KClcbiAgICB0aGlzLnQgPSB0XG4gICAgdGhpcy52YWx1ZUlucHV0UmVmID0gdXNlUmVmKHVuZGVmaW5lZClcblxuICAgIHVzZU1lbW8oKCkgPT4ge1xuICAgICAgdGhpcy5sb2FkUmFuc2Fja1ByZWRpY2F0ZXMoKVxuXG4gICAgICBpZiAodGhpcy5wcm9wcy5maWx0ZXIudikge1xuICAgICAgICB0aGlzLmxvYWRJbml0aWFsVmFsdWVzV2l0aExvYWRpbmdJbmRpY2F0b3IoKVxuICAgICAgfVxuICAgIH0sIFtdKVxuXG4gICAgdXNlTWVtbygoKSA9PiB7XG4gICAgICB0aGlzLmxvYWRBc3NvY2lhdGlvbnMoKVxuICAgIH0sIFt0aGlzLnMubW9kZWxDbGFzc05hbWVdKVxuICB9XG5cbiAgY3VycmVudE1vZGVsQ2xhc3MgPSAoKSA9PiBkaWdnKHRoaXMucy5hY3R1YWxDdXJyZW50TW9kZWxDbGFzcywgXCJtb2RlbENsYXNzXCIpXG5cbiAgLyoqXG4gICAqIE5vcm1hbGl6ZSBhc3NvY2lhdGlvbiBtZXRhZGF0YSByZXR1cm5lZCBmcm9tIHRoZSBiYWNrZW5kIGZpbHRlciBzZXJ2aWNlLlxuICAgKiBAcGFyYW0ge0Fzc29jaWF0aW9uc1NlcnZpY2VSZXN1bHR9IHJlc3VsdFxuICAgKiBAcmV0dXJucyB7e2Fzc29jaWF0aW9uczogRmlsdGVyUmVmbGVjdGlvbltdLCByYW5zYWNrYWJsZUF0dHJpYnV0ZXM6IEZpbHRlckF0dHJpYnV0ZVtdLCByYW5zYWNrYWJsZVNjb3Blczogc3RyaW5nW119fVxuICAgKi9cbiAgcGFyc2VBc3NvY2lhdGlvbkRhdGEocmVzdWx0KSB7XG4gICAgY29uc3QgYXNzb2NpYXRpb25zID0gcmVzdWx0LmFzc29jaWF0aW9ucy5tYXAoKHtodW1hbl9uYW1lLCBtb2RlbF9jbGFzc19uYW1lLCByZWZsZWN0aW9uX25hbWUsIHJlc291cmNlfSkgPT4gKHtcbiAgICAgIGh1bWFuTmFtZTogaHVtYW5fbmFtZSxcbiAgICAgIG1vZGVsQ2xhc3NOYW1lOiBtb2RlbF9jbGFzc19uYW1lLFxuICAgICAgcmVmbGVjdGlvbk5hbWU6IGluZmxlY3Rpb24uY2FtZWxpemUocmVmbGVjdGlvbl9uYW1lLCB0cnVlKSxcbiAgICAgIHJlc291cmNlXG4gICAgfSkpXG4gICAgY29uc3QgcmFuc2Fja2FibGVBdHRyaWJ1dGVzID0gZGlnZyhyZXN1bHQsIFwicmFuc2Fja2FibGVfYXR0cmlidXRlc1wiKS5tYXAoKHthdHRyaWJ1dGVfbmFtZTogYXR0cmlidXRlTmFtZSwgaHVtYW5fbmFtZTogaHVtYW5OYW1lfSkgPT4gKHtcbiAgICAgIGF0dHJpYnV0ZU5hbWUsIGh1bWFuTmFtZVxuICAgIH0pKVxuICAgIGNvbnN0IHJhbnNhY2thYmxlU2NvcGVzID0gZGlnZyhyZXN1bHQsIFwicmFuc2Fja2FibGVfc2NvcGVzXCIpXG5cbiAgICByZXR1cm4ge2Fzc29jaWF0aW9ucywgcmFuc2Fja2FibGVBdHRyaWJ1dGVzLCByYW5zYWNrYWJsZVNjb3Blc31cbiAgfVxuXG4gIGFzeW5jIGxvYWRBc3NvY2lhdGlvbnMoKSB7XG4gICAgdGhpcy5pbmNyZWFzZUxvYWRpbmcoKVxuXG4gICAgdHJ5IHtcbiAgICAgIGlmICghdGhpcy5zLm1vZGVsQ2xhc3NOYW1lKSB0aHJvdyBuZXcgRXJyb3IoXCInbW9kZWxDbGFzc05hbWUnIG5vdCBzZXQgaW4gc3RhdGVcIilcblxuICAgICAgY29uc3QgcmVzdWx0ID0gLyoqIEB0eXBlIHtBc3NvY2lhdGlvbnNTZXJ2aWNlUmVzdWx0fSAqLyAoXG4gICAgICAgIGF3YWl0IFNlcnZpY2VzLmN1cnJlbnQoKS5zZW5kUmVxdWVzdChcIk1vZGVsczo6QXNzb2NpYXRpb25zXCIsIHttb2RlbF9jbGFzc19uYW1lOiB0aGlzLnMubW9kZWxDbGFzc05hbWV9KVxuICAgICAgKVxuICAgICAgY29uc3Qge2Fzc29jaWF0aW9ucywgcmFuc2Fja2FibGVBdHRyaWJ1dGVzLCByYW5zYWNrYWJsZVNjb3Blc30gPSB0aGlzLnBhcnNlQXNzb2NpYXRpb25EYXRhKHJlc3VsdClcblxuICAgICAgdGhpcy5zZXRTdGF0ZSh7YXNzb2NpYXRpb25zLCByYW5zYWNrYWJsZUF0dHJpYnV0ZXMsIHJhbnNhY2thYmxlU2NvcGVzfSlcbiAgICB9IGZpbmFsbHkge1xuICAgICAgdGhpcy5kZWNyZWFzZUxvYWRpbmcoKVxuICAgIH1cbiAgfVxuXG4gIGRlY3JlYXNlTG9hZGluZyA9ICgpID0+IHRoaXMuc2V0U3RhdGUoKHByZXZTdGF0ZSkgPT4gKHtsb2FkaW5nOiBwcmV2U3RhdGUubG9hZGluZyAtIDF9KSlcbiAgaW5jcmVhc2VMb2FkaW5nID0gKCkgPT4gdGhpcy5zZXRTdGF0ZSgocHJldlN0YXRlKSA9PiAoe2xvYWRpbmc6IHByZXZTdGF0ZS5sb2FkaW5nICsgMX0pKVxuXG4gIGFzeW5jIGxvYWRJbml0aWFsVmFsdWVzV2l0aExvYWRpbmdJbmRpY2F0b3IoKSB7XG4gICAgdHJ5IHtcbiAgICAgIHRoaXMuaW5jcmVhc2VMb2FkaW5nKClcbiAgICAgIGF3YWl0IHRoaXMubG9hZEluaXRpYWxWYWx1ZXMoKVxuICAgIH0gZmluYWxseSB7XG4gICAgICB0aGlzLmRlY3JlYXNlTG9hZGluZygpXG4gICAgfVxuICB9XG5cbiAgYXN5bmMgbG9hZEluaXRpYWxWYWx1ZXMoKSB7XG4gICAgaWYgKCF0aGlzLnMubW9kZWxDbGFzc05hbWUpIHRocm93IG5ldyBFcnJvcihcIidtb2RlbENsYXNzTmFtZScgbm90IHNldCBpbiBzdGF0ZVwiKVxuXG4gICAgbGV0IHJlc3VsdCA9IC8qKiBAdHlwZSB7QXNzb2NpYXRpb25zU2VydmljZVJlc3VsdH0gKi8gKFxuICAgICAgYXdhaXQgU2VydmljZXMuY3VycmVudCgpLnNlbmRSZXF1ZXN0KFwiTW9kZWxzOjpBc3NvY2lhdGlvbnNcIiwge21vZGVsX2NsYXNzX25hbWU6IHRoaXMucy5tb2RlbENsYXNzTmFtZX0pXG4gICAgKVxuICAgIGxldCBkYXRhID0gdGhpcy5wYXJzZUFzc29jaWF0aW9uRGF0YShyZXN1bHQpXG4gICAgbGV0IG1vZGVsQ2xhc3NOYW1lID0gdGhpcy5zLm1vZGVsQ2xhc3NOYW1lXG4gICAgY29uc3QgcGF0aCA9IFtdXG5cbiAgICBmb3IgKGNvbnN0IHBhdGhQYXJ0IG9mIHRoaXMucHJvcHMuZmlsdGVyLnApIHtcbiAgICAgIGNvbnN0IHJlZmxlY3Rpb24gPSBkYXRhLmFzc29jaWF0aW9ucy5maW5kKChhc3NvY2lhdGlvbikgPT4gZGlnZyhhc3NvY2lhdGlvbiwgXCJyZWZsZWN0aW9uTmFtZVwiKSA9PSBpbmZsZWN0aW9uLmNhbWVsaXplKHBhdGhQYXJ0LCB0cnVlKSlcblxuICAgICAgaWYgKCFyZWZsZWN0aW9uKSB0aHJvdyBuZXcgRXJyb3IoYENvdWxkbid0IGZpbmQgYXNzb2NpYXRpb24gYnkgdGhhdCBuYW1lICR7dGhpcy5zLm1vZGVsQ2xhc3NOYW1lfSMke3BhdGhQYXJ0fWApXG5cbiAgICAgIG1vZGVsQ2xhc3NOYW1lID0gZGlnZyhyZWZsZWN0aW9uLCBcIm1vZGVsQ2xhc3NOYW1lXCIpXG5cbiAgICAgIGlmICghbW9kZWxDbGFzc05hbWUpIHtcbiAgICAgICAgY29uc3QgcGF0aE5hbWVzID0gcGF0aC5tYXAoKHBhdGhQYXJ0KSA9PiBwYXRoUGFydC5yZWZsZWN0aW9uTmFtZSkuam9pbihcIi5cIilcblxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYE5vIG1vZGVsIGNsYXNzIG5hbWUgZnJvbSAke3BhdGhOYW1lc30uJHtyZWZsZWN0aW9uLnJlZmxlY3Rpb25OYW1lfWApXG4gICAgICB9XG5cbiAgICAgIHJlc3VsdCA9IC8qKiBAdHlwZSB7QXNzb2NpYXRpb25zU2VydmljZVJlc3VsdH0gKi8gKFxuICAgICAgICBhd2FpdCBTZXJ2aWNlcy5jdXJyZW50KCkuc2VuZFJlcXVlc3QoXCJNb2RlbHM6OkFzc29jaWF0aW9uc1wiLCB7bW9kZWxfY2xhc3NfbmFtZTogbW9kZWxDbGFzc05hbWV9KVxuICAgICAgKVxuICAgICAgZGF0YSA9IHRoaXMucGFyc2VBc3NvY2lhdGlvbkRhdGEocmVzdWx0KVxuXG4gICAgICBwYXRoLnB1c2gocmVmbGVjdGlvbilcbiAgICB9XG5cbiAgICBjb25zdCB7cmFuc2Fja2FibGVBdHRyaWJ1dGVzfSA9IGRhdGFcbiAgICBjb25zdCBhdHRyaWJ1dGUgPSB0aGlzLnAuZmlsdGVyLmFcbiAgICBjb25zdCByYW5zYWNrYWJsZUF0dHJpYnV0ZSA9IHJhbnNhY2thYmxlQXR0cmlidXRlcy5maW5kKChyYW5zYWNrYWJsZUF0dHJpYnV0ZSkgPT4gZGlnZyhyYW5zYWNrYWJsZUF0dHJpYnV0ZSwgXCJhdHRyaWJ1dGVOYW1lXCIpID09IGF0dHJpYnV0ZSlcblxuICAgIHRoaXMuc2V0U3RhdGUoe2F0dHJpYnV0ZTogcmFuc2Fja2FibGVBdHRyaWJ1dGUsIG1vZGVsQ2xhc3NOYW1lLCBwYXRofSlcbiAgfVxuXG4gIGFzeW5jIGxvYWRSYW5zYWNrUHJlZGljYXRlcygpIHtcbiAgICB0aGlzLmluY3JlYXNlTG9hZGluZygpXG5cbiAgICB0cnkge1xuICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBTZXJ2aWNlcy5jdXJyZW50KCkuc2VuZFJlcXVlc3QoXCJSYW5zYWNrOjpQcmVkaWNhdGVzXCIpXG4gICAgICBjb25zdCBwcmVkaWNhdGVzID0gZGlnZyhyZXNwb25zZSwgXCJwcmVkaWNhdGVzXCIpXG4gICAgICBsZXQgY3VycmVudFByZWRpY2F0ZVxuXG4gICAgICBpZiAodGhpcy5wcm9wcy5maWx0ZXIucHJlKSB7XG4gICAgICAgIGN1cnJlbnRQcmVkaWNhdGUgPSBwcmVkaWNhdGVzLmZpbmQoKHByZWRpY2F0ZSkgPT4gcHJlZGljYXRlLm5hbWUgPT0gdGhpcy5wcm9wcy5maWx0ZXIucHJlKVxuICAgICAgfVxuXG4gICAgICB0aGlzLnNldFN0YXRlKHtcbiAgICAgICAgcHJlZGljYXRlOiBjdXJyZW50UHJlZGljYXRlLFxuICAgICAgICBwcmVkaWNhdGVzXG4gICAgICB9KVxuICAgIH0gZmluYWxseSB7XG4gICAgICB0aGlzLmRlY3JlYXNlTG9hZGluZygpXG4gICAgfVxuICB9XG5cbiAgcmVuZGVyKCkge1xuICAgIGNvbnN0IHticmVha3BvaW50LCB0LCB2YWx1ZUlucHV0UmVmfSA9IHRoaXMudHRcbiAgICBjb25zdCB7YXR0cmlidXRlLCBwYXRoLCBwcmVkaWNhdGUsIHByZWRpY2F0ZXMsIHNjb3BlLCB2YWx1ZX0gPSB0aGlzLnNcbiAgICBjb25zdCB7bWRVcH0gPSBicmVha3BvaW50XG4gICAgbGV0IHN1Ym1pdEVuYWJsZWQgPSBmYWxzZVxuXG4gICAgaWYgKGF0dHJpYnV0ZSAmJiBwcmVkaWNhdGUpIHtcbiAgICAgIHN1Ym1pdEVuYWJsZWQgPSB0cnVlXG4gICAgfSBlbHNlIGlmIChzY29wZSkge1xuICAgICAgc3VibWl0RW5hYmxlZCA9IHRydWVcbiAgICB9XG5cbiAgICByZXR1cm4gKFxuICAgICAgPENhcmRcbiAgICAgICAgdGVzdElEPVwiYXBpLW1ha2VyL3RhYmxlL2ZpbHRlcnMvZmlsdGVyLWZvcm1cIlxuICAgICAgICBzdHlsZT17c3R5bGVzW2BjYXJkLSR7bWRVcH1gXSB8fD0ge1xuICAgICAgICAgIHdpZHRoOiBtZFVwID8gdW5kZWZpbmVkIDogXCIxMDAlXCIsXG4gICAgICAgICAgbWluV2lkdGg6IDUwLFxuICAgICAgICAgIG1pbkhlaWdodDogNTBcbiAgICAgICAgfX1cbiAgICAgID5cbiAgICAgICAgPEZvcm0gb25TdWJtaXQ9e3RoaXMudHQub25TdWJtaXR9PlxuICAgICAgICAgIDxWaWV3IHN0eWxlPXtzdHlsZXMucGF0aFJvdyB8fD0ge2ZsZXhEaXJlY3Rpb246IFwicm93XCJ9fT5cbiAgICAgICAgICAgIHtwYXRoLm1hcCgoe2h1bWFuTmFtZSwgcmVmbGVjdGlvbk5hbWV9LCBwYXRoUGFydEluZGV4KSA9PlxuICAgICAgICAgICAgICA8VmlldyBrZXk9e2Ake3BhdGhQYXJ0SW5kZXh9LSR7cmVmbGVjdGlvbk5hbWV9YH0gc3R5bGU9e3N0eWxlcy5wYXRoSXRlbVJvdyB8fD0ge2ZsZXhEaXJlY3Rpb246IFwicm93XCJ9fT5cbiAgICAgICAgICAgICAgICB7cGF0aFBhcnRJbmRleCA+IDAgJiZcbiAgICAgICAgICAgICAgICAgIDxUZXh0IHN0eWxlPXtzdHlsZXMucGF0aFNlcGFyYXRvciB8fD0ge21hcmdpblJpZ2h0OiA1LCBtYXJnaW5MZWZ0OiA1fX0+XG4gICAgICAgICAgICAgICAgICAgIC1cbiAgICAgICAgICAgICAgICAgIDwvVGV4dD5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgPFRleHQ+XG4gICAgICAgICAgICAgICAgICB7aHVtYW5OYW1lfVxuICAgICAgICAgICAgICAgIDwvVGV4dD5cbiAgICAgICAgICAgICAgPC9WaWV3PlxuICAgICAgICAgICAgKX1cbiAgICAgICAgICA8L1ZpZXc+XG4gICAgICAgICAgPFZpZXcgc3R5bGU9e3N0eWxlc1tgZmlsdGVyc1Jvdy0ke21kVXB9YF0gfHw9IHtmbGV4RGlyZWN0aW9uOiBtZFVwID8gXCJyb3dcIiA6IFwiY29sdW1uXCJ9fT5cbiAgICAgICAgICAgIDxWaWV3IHN0eWxlPXtzdHlsZXNbYHJlbGF0aW9uc2hpcHNDb2x1bW4tJHttZFVwfWBdIHx8PSB7bWFyZ2luVG9wOiBtZFVwID8gdW5kZWZpbmVkIDogMjV9fT5cbiAgICAgICAgICAgICAgPEhlYWRlcj5cbiAgICAgICAgICAgICAgICB7dChcIi5yZWxhdGlvbnNoaXBzXCIsIHtkZWZhdWx0VmFsdWU6IFwiUmVsYXRpb25zaGlwc1wifSl9XG4gICAgICAgICAgICAgIDwvSGVhZGVyPlxuICAgICAgICAgICAgICB7dGhpcy5zLmFzc29jaWF0aW9ucyAmJiB0aGlzLnNvcnRlZFJlZmxlY3Rpb25zQnlOYW1lKHRoaXMucy5hc3NvY2lhdGlvbnMpLm1hcCgocmVmbGVjdGlvbikgPT5cbiAgICAgICAgICAgICAgICA8UmVmbGVjdGlvbkVsZW1lbnRcbiAgICAgICAgICAgICAgICAgIGtleT17cmVmbGVjdGlvbi5yZWZsZWN0aW9uTmFtZX1cbiAgICAgICAgICAgICAgICAgIG1vZGVsQ2xhc3NOYW1lPXt0aGlzLnMubW9kZWxDbGFzc05hbWV9XG4gICAgICAgICAgICAgICAgICBvbkNsaWNrPXt0aGlzLnR0Lm9uUmVmbGVjdGlvbkNsaWNrZWR9XG4gICAgICAgICAgICAgICAgICByZWZsZWN0aW9uPXtyZWZsZWN0aW9ufVxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICl9XG4gICAgICAgICAgICA8L1ZpZXc+XG4gICAgICAgICAgICA8VmlldyBzdHlsZT17c3R5bGVzW2BhdHRyaWJ1dGVzQ29sdW1uLSR7bWRVcH1gXSB8fD0ge21hcmdpblRvcDogbWRVcCA/IHVuZGVmaW5lZCA6IDI1fX0+XG4gICAgICAgICAgICAgIDxIZWFkZXI+XG4gICAgICAgICAgICAgICAge3QoXCIuYXR0cmlidXRlc1wiLCB7ZGVmYXVsdFZhbHVlOiBcIkF0dHJpYnV0ZXNcIn0pfVxuICAgICAgICAgICAgICA8L0hlYWRlcj5cbiAgICAgICAgICAgICAge3RoaXMucy5yYW5zYWNrYWJsZUF0dHJpYnV0ZXMgJiYgdGhpcy5zb3J0ZWRBdHRyaWJ1dGVzQnlOYW1lKHRoaXMucy5yYW5zYWNrYWJsZUF0dHJpYnV0ZXMpPy5tYXAoKGF0dHJpYnV0ZSkgPT5cbiAgICAgICAgICAgICAgICA8QXR0cmlidXRlRWxlbWVudFxuICAgICAgICAgICAgICAgICAgYWN0aXZlPXthdHRyaWJ1dGUuYXR0cmlidXRlTmFtZSA9PSB0aGlzLnMuYXR0cmlidXRlPy5hdHRyaWJ1dGVOYW1lfVxuICAgICAgICAgICAgICAgICAgYXR0cmlidXRlPXthdHRyaWJ1dGV9XG4gICAgICAgICAgICAgICAgICBrZXk9e2F0dHJpYnV0ZS5hdHRyaWJ1dGVOYW1lfVxuICAgICAgICAgICAgICAgICAgbW9kZWxDbGFzc05hbWU9e3RoaXMucy5tb2RlbENsYXNzTmFtZX1cbiAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9e3RoaXMudHQub25BdHRyaWJ1dGVDbGlja2VkfVxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgIHt0aGlzLnMucmFuc2Fja2FibGVTY29wZXM/Lm1hcCgoc2NvcGUpID0+XG4gICAgICAgICAgICAgICAgPFNjb3BlRWxlbWVudFxuICAgICAgICAgICAgICAgICAgYWN0aXZlPXtzY29wZSA9PSB0aGlzLnMuc2NvcGV9XG4gICAgICAgICAgICAgICAgICBrZXk9e3Njb3BlfVxuICAgICAgICAgICAgICAgICAgc2NvcGU9e3Njb3BlfVxuICAgICAgICAgICAgICAgICAgb25TY29wZUNsaWNrZWQ9e3RoaXMudHQub25TY29wZUNsaWNrZWR9XG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgIDwvVmlldz5cbiAgICAgICAgICAgIDxWaWV3IHN0eWxlPXtzdHlsZXNbYHNlYXJjaENvbHVtbi0ke21kVXB9YF0gfHw9IHttYXJnaW5Ub3A6IG1kVXAgPyB1bmRlZmluZWQgOiAyNX19PlxuICAgICAgICAgICAgICA8SGVhZGVyPlxuICAgICAgICAgICAgICAgIHt0KFwiLnNlYXJjaFwiLCB7ZGVmYXVsdFZhbHVlOiBcIlNlYXJjaFwifSl9XG4gICAgICAgICAgICAgIDwvSGVhZGVyPlxuICAgICAgICAgICAgICA8Vmlldz5cbiAgICAgICAgICAgICAgICB7cHJlZGljYXRlcyAmJiAhdGhpcy5zLnNjb3BlICYmXG4gICAgICAgICAgICAgICAgICA8U2VsZWN0XG4gICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cInByZWRpY2F0ZS1zZWxlY3RcIlxuICAgICAgICAgICAgICAgICAgICBkZWZhdWx0VmFsdWU9e3ByZWRpY2F0ZT8ubmFtZX1cbiAgICAgICAgICAgICAgICAgICAgaW5jbHVkZUJsYW5rXG4gICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXt0aGlzLnR0Lm9uUHJlZGljYXRlQ2hhbmdlZH1cbiAgICAgICAgICAgICAgICAgICAgb3B0aW9ucz17cHJlZGljYXRlcy5tYXAoKHByZWRpY2F0ZSkgPT4gZGlnZyhwcmVkaWNhdGUsIFwibmFtZVwiKSl9XG4gICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgPC9WaWV3PlxuICAgICAgICAgICAgICA8VmlldyBzdHlsZT17c3R5bGVzLnNlYXJjaElucHV0Q29udGFpbmVyIHx8PSB7bWFyZ2luVG9wOiAxMH19PlxuICAgICAgICAgICAgICAgIHsoKGF0dHJpYnV0ZSAmJiBwcmVkaWNhdGUpIHx8IHNjb3BlKSAmJlxuICAgICAgICAgICAgICAgICAgPElucHV0IGNsYXNzTmFtZT1cInZhbHVlLWlucHV0XCIgZGVmYXVsdFZhbHVlPXt2YWx1ZX0gaW5wdXRSZWY9e3ZhbHVlSW5wdXRSZWZ9IC8+XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICA8L1ZpZXc+XG4gICAgICAgICAgICA8L1ZpZXc+XG4gICAgICAgICAgPC9WaWV3PlxuICAgICAgICAgIDxWaWV3IHN0eWxlPXtzdHlsZXMuYWN0aW9uc1JvdyB8fD0ge2ZsZXhEaXJlY3Rpb246IFwicm93XCIsIGp1c3RpZnlDb250ZW50OiBcImVuZFwiLCBtYXJnaW5Ub3A6IDEwfX0+XG4gICAgICAgICAgICA8QnV0dG9uXG4gICAgICAgICAgICAgIGRhbmdlclxuICAgICAgICAgICAgICBpY29uPVwicmVtb3ZlXCJcbiAgICAgICAgICAgICAgbGFiZWw9e3QoXCIuY2FuY2VsXCIsIHtkZWZhdWx0VmFsdWU6IFwiQ2FuY2VsXCJ9KX1cbiAgICAgICAgICAgICAgb25QcmVzcz17dGhpcy5wLm9uUmVxdWVzdENsb3NlfVxuICAgICAgICAgICAgICBwcmVzc2FibGVQcm9wcz17dGhpcy5jYWNoZShcImNhbmNlbEJ1dHRvblByZXNzYWJsZVByb3BzXCIsIHtcbiAgICAgICAgICAgICAgICBtYXJnaW5SaWdodDogNVxuICAgICAgICAgICAgICB9KX1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8QnV0dG9uXG4gICAgICAgICAgICAgIGRpc2FibGVkPXshc3VibWl0RW5hYmxlZH1cbiAgICAgICAgICAgICAgaWNvbj1cImNoZWNrXCJcbiAgICAgICAgICAgICAgbGFiZWw9e3QoXCIuYXBwbHlcIiwge2RlZmF1bHRWYWx1ZTogXCJBcHBseVwifSl9XG4gICAgICAgICAgICAgIHByZXNzYWJsZVByb3BzPXt0aGlzLmNhY2hlKFwiYXBwbGVCdXR0b25QcmVzc2FibGVQcm9wc1wiLCB7XG4gICAgICAgICAgICAgICAgc3R5bGU6IHttYXJnaW5MZWZ0OiA1fSxcbiAgICAgICAgICAgICAgICB0ZXN0SUQ6IFwiYXBwbHktZmlsdGVyLWJ1dHRvblwiXG4gICAgICAgICAgICAgIH0pfVxuICAgICAgICAgICAgICBzdWJtaXRcbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgPC9WaWV3PlxuICAgICAgICA8L0Zvcm0+XG4gICAgICAgIHt0aGlzLnMubG9hZGluZyA+IDAgJiZcbiAgICAgICAgICA8Vmlld1xuICAgICAgICAgICAgc3R5bGU9e3N0eWxlcy5sb2FkaW5nT3ZlcmxheSB8fD0ge1xuICAgICAgICAgICAgICBhbGlnbkl0ZW1zOiBcImNlbnRlclwiLFxuICAgICAgICAgICAgICBqdXN0aWZ5Q29udGVudDogXCJjZW50ZXJcIixcbiAgICAgICAgICAgICAgcG9zaXRpb246IFwiYWJzb2x1dGVcIixcbiAgICAgICAgICAgICAgd2lkdGg6IFwiMTAwJVwiLFxuICAgICAgICAgICAgICBoZWlnaHQ6IFwiMTAwJVwiXG4gICAgICAgICAgICB9fVxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxBY3Rpdml0eUluZGljYXRvciBzaXplPVwibGFyZ2VcIiAvPlxuICAgICAgICAgIDwvVmlldz5cbiAgICAgICAgfVxuICAgICAgPC9DYXJkPlxuICAgIClcbiAgfVxuXG4gIGN1cnJlbnRNb2RlbENsYXNzRnJvbVBhdGgocGF0aCkge1xuICAgIGNvbnN0IHttb2RlbENsYXNzfSA9IHRoaXMucFxuICAgIGxldCBjdXJyZW50TW9kZWxDbGFzcyA9IG1vZGVsQ2xhc3NcblxuICAgIGZvciAoY29uc3QgcGF0aFBhcnQgb2YgcGF0aCkge1xuICAgICAgY29uc3QgY2FtZWxpemVkUGF0aFBhcnQgPSBpbmZsZWN0aW9uLmNhbWVsaXplKHBhdGhQYXJ0LCB0cnVlKVxuICAgICAgY29uc3QgYXNzb2NpYXRpb24gPSBjdXJyZW50TW9kZWxDbGFzcy5yYW5zYWNrYWJsZUFzc29jaWF0aW9ucygpLmZpbmQoKHJlZmxlY3Rpb24pID0+IHJlZmxlY3Rpb24ubmFtZSgpID09IGNhbWVsaXplZFBhdGhQYXJ0KVxuXG4gICAgICBpZiAoIWFzc29jaWF0aW9uKSB7XG4gICAgICAgIGNvbnN0IHJhbnNhY2thYmxlQXNzb2NpYXRpb25OYW1lcyA9IGN1cnJlbnRNb2RlbENsYXNzLnJhbnNhY2thYmxlQXNzb2NpYXRpb25zKCkubWFwKChyZWZsZWN0aW9uKSA9PiByZWZsZWN0aW9uLm5hbWUoKSkuam9pbihcIiwgXCIpXG5cbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBDb3VsZCBub3QgZmluZCBhIFJhbnNhY2thYmxlIGFzc29jaWF0aW9uIGJ5IHRoYXQgbmFtZTogJHtjYW1lbGl6ZWRQYXRoUGFydH0gaW4gJHtyYW5zYWNrYWJsZUFzc29jaWF0aW9uTmFtZXN9YClcbiAgICAgIH1cblxuICAgICAgY3VycmVudE1vZGVsQ2xhc3MgPSBhc3NvY2lhdGlvbi5tb2RlbENsYXNzKClcbiAgICB9XG5cbiAgICByZXR1cm4gY3VycmVudE1vZGVsQ2xhc3NcbiAgfVxuXG4gIGN1cnJlbnRQYXRoUGFydHMoKSB7XG4gICAgY29uc3Qge21vZGVsQ2xhc3N9ID0gdGhpcy5wXG4gICAgY29uc3Qge3BhdGh9ID0gdGhpcy5zXG4gICAgY29uc3QgcmVzdWx0ID0gW11cbiAgICBsZXQgY3VycmVudE1vZGVsQ2xhc3MgPSBtb2RlbENsYXNzXG5cbiAgICByZXN1bHQucHVzaCh7XG4gICAgICBtb2RlbENsYXNzLFxuICAgICAgdHJhbnNsYXRpb246IG1vZGVsQ2xhc3MubW9kZWxOYW1lKCkuaHVtYW4oe2NvdW50OiAyfSlcbiAgICB9KVxuXG4gICAgZm9yIChjb25zdCBwYXRoUGFydCBvZiBwYXRoKSB7XG4gICAgICBjb25zdCBjYW1lbGl6ZWRQYXRoUGFydCA9IGluZmxlY3Rpb24uY2FtZWxpemUocGF0aFBhcnQsIHRydWUpXG4gICAgICBjb25zdCBwYXRoUGFydFRyYW5zbGF0aW9uID0gY3VycmVudE1vZGVsQ2xhc3MuaHVtYW5BdHRyaWJ1dGVOYW1lKGNhbWVsaXplZFBhdGhQYXJ0KVxuXG4gICAgICBjdXJyZW50TW9kZWxDbGFzcyA9IGN1cnJlbnRNb2RlbENsYXNzLnJhbnNhY2thYmxlQXNzb2NpYXRpb25zKCkuZmluZCgocmVmbGVjdGlvbikgPT4gcmVmbGVjdGlvbi5uYW1lKCkgPT0gY2FtZWxpemVkUGF0aFBhcnQpLm1vZGVsQ2xhc3MoKVxuXG4gICAgICByZXN1bHQucHVzaCh7XG4gICAgICAgIG1vZGVsQ2xhc3M6IGN1cnJlbnRNb2RlbENsYXNzLFxuICAgICAgICB0cmFuc2xhdGlvbjogcGF0aFBhcnRUcmFuc2xhdGlvblxuICAgICAgfSlcbiAgICB9XG5cbiAgICByZXR1cm4gcmVzdWx0XG4gIH1cblxuICAvKiogQHBhcmFtIHt7YXR0cmlidXRlOiBGaWx0ZXJBdHRyaWJ1dGV9fSByb290MCAqL1xuICBvbkF0dHJpYnV0ZUNsaWNrZWQgPSAoe2F0dHJpYnV0ZX0pID0+IHtcbiAgICB0aGlzLnNldFN0YXRlKHtcbiAgICAgIGF0dHJpYnV0ZSxcbiAgICAgIHNjb3BlOiB1bmRlZmluZWRcbiAgICB9KVxuICB9XG5cbiAgb25QcmVkaWNhdGVDaGFuZ2VkID0gKGUpID0+IHtcbiAgICBjb25zdCBjaG9zZW5QcmVkaWNhdGVOYW1lID0gZGlnZyhlLCBcInRhcmdldFwiLCBcInZhbHVlXCIpXG4gICAgY29uc3QgcHJlZGljYXRlID0gdGhpcy5zLnByZWRpY2F0ZXMuZmluZCgocHJlZGljYXRlKSA9PiBwcmVkaWNhdGUubmFtZSA9PSBjaG9zZW5QcmVkaWNhdGVOYW1lKVxuXG4gICAgdGhpcy5zZXRTdGF0ZSh7cHJlZGljYXRlfSlcbiAgfVxuXG4gIC8qKiBAcGFyYW0ge3tyZWZsZWN0aW9uOiBGaWx0ZXJSZWZsZWN0aW9ufX0gcm9vdDAgKi9cbiAgb25SZWZsZWN0aW9uQ2xpY2tlZCA9ICh7cmVmbGVjdGlvbn0pID0+IHtcbiAgICBjb25zdCBuZXdQYXRoID0gdGhpcy5zLnBhdGguY29uY2F0KFtyZWZsZWN0aW9uXSlcblxuICAgIHRoaXMuc2V0U3RhdGUoe1xuICAgICAgYXNzb2NpYXRpb25zOiBudWxsLFxuICAgICAgYXR0cmlidXRlOiB1bmRlZmluZWQsXG4gICAgICBhY3R1YWxDdXJyZW50TW9kZWxDbGFzczoge21vZGVsQ2xhc3M6IGRpZ2cocmVmbGVjdGlvbiwgXCJyZXNvdXJjZVwiKX0sXG4gICAgICBtb2RlbENsYXNzTmFtZTogZGlnZyhyZWZsZWN0aW9uLCBcIm1vZGVsQ2xhc3NOYW1lXCIpLFxuICAgICAgcGF0aDogbmV3UGF0aCxcbiAgICAgIHByZWRpY2F0ZTogdW5kZWZpbmVkXG4gICAgfSlcbiAgfVxuXG4gIC8qKiBAcGFyYW0ge3tzY29wZTogc3RyaW5nfX0gcm9vdDAgKi9cbiAgb25TY29wZUNsaWNrZWQgPSAoe3Njb3BlfSkgPT4ge1xuICAgIHRoaXMuc2V0U3RhdGUoe1xuICAgICAgYXR0cmlidXRlOiB1bmRlZmluZWQsXG4gICAgICBwcmVkaWNhdGU6IHVuZGVmaW5lZCxcbiAgICAgIHNjb3BlXG4gICAgfSlcbiAgfVxuXG4gIG9uU3VibWl0ID0gKCkgPT4ge1xuICAgIGNvbnN0IHtmaWx0ZXIsIHF1ZXJ5U2VhcmNoTmFtZX0gPSB0aGlzLnBcbiAgICBjb25zdCB7YXR0cmlidXRlLCBwYXRoLCBwcmVkaWNhdGUsIHNjb3BlfSA9IHRoaXMuc1xuICAgIGNvbnN0IHtmaWx0ZXJJbmRleH0gPSBkaWdzKGZpbHRlciwgXCJmaWx0ZXJJbmRleFwiKVxuICAgIGNvbnN0IHNlYXJjaFBhcmFtcyA9IFBhcmFtcy5wYXJzZSgpW3F1ZXJ5U2VhcmNoTmFtZV0gfHwge31cbiAgICBjb25zdCB2YWx1ZSA9IGRpZ2codGhpcy50dC52YWx1ZUlucHV0UmVmLCBcImN1cnJlbnRcIiwgXCJ2YWx1ZVwiKVxuICAgIGNvbnN0IHAgPSBwYXRoLm1hcCgocmVmbGVjdGlvbikgPT4gaW5mbGVjdGlvbi51bmRlcnNjb3JlKHJlZmxlY3Rpb24ucmVmbGVjdGlvbk5hbWUpKVxuICAgIGNvbnN0IG5ld1NlYXJjaFBhcmFtcyA9IHtcbiAgICAgIHAsXG4gICAgICB2OiB2YWx1ZVxuICAgIH1cblxuICAgIGlmIChhdHRyaWJ1dGUpIHtcbiAgICAgIG5ld1NlYXJjaFBhcmFtcy5hID0gZGlnZyhhdHRyaWJ1dGUsIFwiYXR0cmlidXRlTmFtZVwiKVxuICAgICAgbmV3U2VhcmNoUGFyYW1zLnByZSA9IGRpZ2cocHJlZGljYXRlLCBcIm5hbWVcIilcbiAgICB9IGVsc2UgaWYgKHNjb3BlKSB7XG4gICAgICBuZXdTZWFyY2hQYXJhbXMuc2MgPSBzY29wZVxuICAgIH0gZWxzZSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCJEb250IGtub3cgaWYgc2hvdWxkIHNlYXJjaCBmb3IgYXR0cmlidXRlIG9yIHNjb3BlP1wiKVxuICAgIH1cblxuICAgIHNlYXJjaFBhcmFtc1tmaWx0ZXJJbmRleF0gPSBKU09OLnN0cmluZ2lmeShuZXdTZWFyY2hQYXJhbXMpXG5cbiAgICBjb25zdCBuZXdQYXJhbXMgPSB7fVxuXG4gICAgbmV3UGFyYW1zW3F1ZXJ5U2VhcmNoTmFtZV0gPSBzZWFyY2hQYXJhbXNcblxuICAgIFBhcmFtcy5jaGFuZ2VQYXJhbXMobmV3UGFyYW1zKVxuXG4gICAgdGhpcy5wcm9wcy5vbkFwcGx5Q2xpY2tlZCgpXG4gIH1cblxuICByZWZsZWN0aW9uc1dpdGhNb2RlbENsYXNzKHJlZmxlY3Rpb25zKSB7XG4gICAgcmV0dXJuIHJlZmxlY3Rpb25zLmZpbHRlcigocmVmbGVjdGlvbikgPT4ge1xuICAgICAgdHJ5IHtcbiAgICAgICAgcmVmbGVjdGlvbi5tb2RlbENsYXNzKClcblxuICAgICAgICByZXR1cm4gdHJ1ZVxuICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlXG4gICAgICB9XG4gICAgfSlcbiAgfVxuXG4gIHNvcnRlZEF0dHJpYnV0ZXNCeU5hbWUoYXR0cmlidXRlcykge1xuICAgIHJldHVybiBhdHRyaWJ1dGVzLnNvcnQoKGEsIGIpID0+XG4gICAgICBkaWdnKGEsIFwiaHVtYW5OYW1lXCIpXG4gICAgICAgIC50b0xvd2VyQ2FzZSgpXG4gICAgICAgIC5sb2NhbGVDb21wYXJlKFxuICAgICAgICAgIGRpZ2coYiwgXCJodW1hbk5hbWVcIikudG9Mb3dlckNhc2UoKVxuICAgICAgICApXG4gICAgKVxuICB9XG5cbiAgc29ydGVkUmVmbGVjdGlvbnNCeU5hbWUocmVmbGVjdGlvbnMpIHtcbiAgICByZXR1cm4gcmVmbGVjdGlvbnMuc29ydCgoYSwgYikgPT5cbiAgICAgIGRpZ2coYSwgXCJodW1hbk5hbWVcIilcbiAgICAgICAgLnRvTG93ZXJDYXNlKClcbiAgICAgICAgLmxvY2FsZUNvbXBhcmUoXG4gICAgICAgICAgZGlnZyhiLCBcImh1bWFuTmFtZVwiKS50b0xvd2VyQ2FzZSgpXG4gICAgICAgIClcbiAgICApXG4gIH1cbn0pKVxuIl19
@@ -1,4 +1,6 @@
1
1
  declare const _default: React.NamedExoticComponent<Record<string, any>>;
2
2
  export default _default;
3
+ export type Props = Record<string, never>;
4
+ export type State = Record<string, never>;
3
5
  import React from "react";
4
6
  //# sourceMappingURL=filter.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"filter.d.ts","sourceRoot":"/src/","sources":["table/filters/filter.jsx"],"names":[],"mappings":";;kBAOkB,OAAO"}
1
+ {"version":3,"file":"filter.d.ts","sourceRoot":"/src/","sources":["table/filters/filter.jsx"],"names":[],"mappings":";;oBAac,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC;oBACrB,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC;kBAPjB,OAAO"}
@@ -1,16 +1,18 @@
1
1
  import { jsxs as _jsxs, jsx as _jsx } from "react/jsx-runtime";
2
+ // @ts-check
2
3
  /* eslint-disable max-len, new-cap, no-return-assign, react/jsx-one-expression-per-line, sort-imports */
3
4
  import { Pressable, View } from "react-native";
4
- import BaseComponent from "../../base-component";
5
5
  import Icon from "../../utils/icon";
6
6
  import PropTypes from "prop-types";
7
7
  import PropTypesExact from "prop-types-exact";
8
8
  import memo from "set-state-compare/build/memo.js";
9
9
  import React from "react";
10
- import { shapeComponent } from "set-state-compare/build/shape-component.js";
10
+ import { ShapeComponent, shapeComponent } from "set-state-compare/build/shape-component.js";
11
11
  import Text from "../../utils/text";
12
12
  const dataSets = {};
13
- export default memo(shapeComponent(class ApiMakerTableFilter extends BaseComponent {
13
+ /** @typedef {Record<string, never>} Props */
14
+ /** @typedef {Record<string, never>} State */
15
+ export default memo(shapeComponent(/** @augments {ShapeComponent<Props, State>} */ class ApiMakerTableFilter extends ShapeComponent {
14
16
  static defaultProps = {
15
17
  a: null,
16
18
  pre: null
@@ -46,4 +48,4 @@ export default memo(shapeComponent(class ApiMakerTableFilter extends BaseCompone
46
48
  this.props.onRemoveClicked({ filterIndex: this.p.filterIndex });
47
49
  };
48
50
  }));
49
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsdGVyLmpzIiwic291cmNlUm9vdCI6Ii9zcmMvIiwic291cmNlcyI6WyJ0YWJsZS9maWx0ZXJzL2ZpbHRlci5qc3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLHdHQUF3RztBQUN4RyxPQUFPLEVBQUMsU0FBUyxFQUFFLElBQUksRUFBQyxNQUFNLGNBQWMsQ0FBQTtBQUM1QyxPQUFPLGFBQWEsTUFBTSxzQkFBc0IsQ0FBQTtBQUNoRCxPQUFPLElBQUksTUFBTSxrQkFBa0IsQ0FBQTtBQUNuQyxPQUFPLFNBQVMsTUFBTSxZQUFZLENBQUE7QUFDbEMsT0FBTyxjQUFjLE1BQU0sa0JBQWtCLENBQUE7QUFDN0MsT0FBTyxJQUFJLE1BQU0saUNBQWlDLENBQUE7QUFDbEQsT0FBTyxLQUFLLE1BQU0sT0FBTyxDQUFBO0FBQ3pCLE9BQU8sRUFBQyxjQUFjLEVBQUMsTUFBTSw0Q0FBNEMsQ0FBQTtBQUN6RSxPQUFPLElBQUksTUFBTSxrQkFBa0IsQ0FBQTtBQUVuQyxNQUFNLFFBQVEsR0FBRyxFQUFFLENBQUE7QUFFbkIsZUFBZSxJQUFJLENBQUMsY0FBYyxDQUFDLE1BQU0sbUJBQW9CLFNBQVEsYUFBYTtJQUNoRixNQUFNLENBQUMsWUFBWSxHQUFHO1FBQ3BCLENBQUMsRUFBRSxJQUFJO1FBQ1AsR0FBRyxFQUFFLElBQUk7S0FDVixDQUFBO0lBRUQsTUFBTSxDQUFDLFNBQVMsR0FBRyxjQUFjLENBQUM7UUFDaEMsQ0FBQyxFQUFFLFNBQVMsQ0FBQyxNQUFNO1FBQ25CLFdBQVcsRUFBRSxTQUFTLENBQUMsTUFBTSxDQUFDLFVBQVU7UUFDeEMsT0FBTyxFQUFFLFNBQVMsQ0FBQyxJQUFJLENBQUMsVUFBVTtRQUNsQyxlQUFlLEVBQUUsU0FBUyxDQUFDLElBQUksQ0FBQyxVQUFVO1FBQzFDLENBQUMsRUFBRSxTQUFTLENBQUMsS0FBSyxDQUFDLFVBQVU7UUFDN0IsR0FBRyxFQUFFLFNBQVMsQ0FBQyxNQUFNO1FBQ3JCLEVBQUUsRUFBRSxTQUFTLENBQUMsTUFBTTtRQUNwQixDQUFDLEVBQUUsU0FBUyxDQUFDLE1BQU0sQ0FBQyxVQUFVO0tBQy9CLENBQUMsQ0FBQTtJQUVGLE1BQU07UUFDSixNQUFNLEVBQUMsQ0FBQyxFQUFFLENBQUMsRUFBQyxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUE7UUFDckIsTUFBTSxFQUFDLENBQUMsRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFDLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQTtRQUUvQixPQUFPLENBQ0wsTUFBQyxJQUFJLElBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsZUFBZSxFQUFFLEVBQUMsVUFBVSxFQUFFLFFBQVEsRUFBRSxhQUFhLEVBQUUsS0FBSyxFQUFFLGVBQWUsRUFBRSxNQUFNLEVBQUUsZUFBZSxFQUFFLEVBQUUsRUFBRSxpQkFBaUIsRUFBRSxDQUFDLEVBQUMsQ0FBQyxhQUN4SixLQUFDLFNBQVMsSUFDUixPQUFPLEVBQUUsUUFBUSxDQUFDLGVBQWUsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLEtBQUs7d0JBQzlDLFNBQVMsRUFBRSxDQUFDO3dCQUNaLEtBQUssRUFBRSxjQUFjO3dCQUNyQixLQUFLLEVBQUUsRUFBRTtxQkFDVixFQUNELE9BQU8sRUFBRSxJQUFJLENBQUMsRUFBRSxDQUFDLGVBQWUsWUFFaEMsTUFBQyxJQUFJLGVBQ0YsQ0FBQyxDQUFDLE1BQU0sR0FBRyxDQUFDO2dDQUNYLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUVsQixDQUFDLE9BQUcsRUFBRSxPQUFHLEdBQUcsT0FBRyxDQUFDLElBQ1osR0FDRyxFQUNaLEtBQUMsU0FBUyxJQUNSLE9BQU8sRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLDJCQUEyQixFQUFFLEVBQUMsS0FBSyxFQUFFLHNCQUFzQixFQUFDLENBQUMsRUFDakYsT0FBTyxFQUFFLElBQUksQ0FBQyxFQUFFLENBQUMscUJBQXFCLEVBQ3RDLEtBQUssRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLHlCQUF5QixFQUFFLEVBQUMsVUFBVSxFQUFFLENBQUMsRUFBQyxDQUFDLFlBRTdELEtBQUMsSUFBSSxJQUFDLElBQUksRUFBQyxRQUFRLEdBQUcsR0FDWixJQUNQLENBQ1IsQ0FBQTtJQUNILENBQUM7SUFFRCxlQUFlLEdBQUcsQ0FBQyxDQUFDLEVBQUUsRUFBRTtRQUN0QixDQUFDLENBQUMsY0FBYyxFQUFFLENBQUE7UUFFbEIsTUFBTSxFQUFDLENBQUMsRUFBRSxXQUFXLEVBQUUsQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFBO1FBQzFDLE1BQU0sRUFBQyxFQUFFLEVBQUMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFBO1FBRXZCLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLEVBQUMsQ0FBQyxFQUFFLFdBQVcsRUFBRSxDQUFDLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUMsQ0FBQyxDQUFBO0lBQ3JELENBQUMsQ0FBQTtJQUVELHFCQUFxQixHQUFHLENBQUMsQ0FBQyxFQUFFLEVBQUU7UUFDNUIsQ0FBQyxDQUFDLGNBQWMsRUFBRSxDQUFBO1FBRWxCLElBQUksQ0FBQyxLQUFLLENBQUMsZUFBZSxDQUFDLEVBQUMsV0FBVyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsV0FBVyxFQUFDLENBQUMsQ0FBQTtJQUMvRCxDQUFDLENBQUE7Q0FDRixDQUFDLENBQUMsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIG1heC1sZW4sIG5ldy1jYXAsIG5vLXJldHVybi1hc3NpZ24sIHJlYWN0L2pzeC1vbmUtZXhwcmVzc2lvbi1wZXItbGluZSwgc29ydC1pbXBvcnRzICovXG5pbXBvcnQge1ByZXNzYWJsZSwgVmlld30gZnJvbSBcInJlYWN0LW5hdGl2ZVwiXG5pbXBvcnQgQmFzZUNvbXBvbmVudCBmcm9tIFwiLi4vLi4vYmFzZS1jb21wb25lbnRcIlxuaW1wb3J0IEljb24gZnJvbSBcIi4uLy4uL3V0aWxzL2ljb25cIlxuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiXG5pbXBvcnQgUHJvcFR5cGVzRXhhY3QgZnJvbSBcInByb3AtdHlwZXMtZXhhY3RcIlxuaW1wb3J0IG1lbW8gZnJvbSBcInNldC1zdGF0ZS1jb21wYXJlL2J1aWxkL21lbW8uanNcIlxuaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiXG5pbXBvcnQge3NoYXBlQ29tcG9uZW50fSBmcm9tIFwic2V0LXN0YXRlLWNvbXBhcmUvYnVpbGQvc2hhcGUtY29tcG9uZW50LmpzXCJcbmltcG9ydCBUZXh0IGZyb20gXCIuLi8uLi91dGlscy90ZXh0XCJcblxuY29uc3QgZGF0YVNldHMgPSB7fVxuXG5leHBvcnQgZGVmYXVsdCBtZW1vKHNoYXBlQ29tcG9uZW50KGNsYXNzIEFwaU1ha2VyVGFibGVGaWx0ZXIgZXh0ZW5kcyBCYXNlQ29tcG9uZW50IHtcbiAgc3RhdGljIGRlZmF1bHRQcm9wcyA9IHtcbiAgICBhOiBudWxsLFxuICAgIHByZTogbnVsbFxuICB9XG5cbiAgc3RhdGljIHByb3BUeXBlcyA9IFByb3BUeXBlc0V4YWN0KHtcbiAgICBhOiBQcm9wVHlwZXMuc3RyaW5nLFxuICAgIGZpbHRlckluZGV4OiBQcm9wVHlwZXMubnVtYmVyLmlzUmVxdWlyZWQsXG4gICAgb25DbGljazogUHJvcFR5cGVzLmZ1bmMuaXNSZXF1aXJlZCxcbiAgICBvblJlbW92ZUNsaWNrZWQ6IFByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWQsXG4gICAgcDogUHJvcFR5cGVzLmFycmF5LmlzUmVxdWlyZWQsXG4gICAgcHJlOiBQcm9wVHlwZXMuc3RyaW5nLFxuICAgIHNjOiBQcm9wVHlwZXMuc3RyaW5nLFxuICAgIHY6IFByb3BUeXBlcy5zdHJpbmcuaXNSZXF1aXJlZFxuICB9KVxuXG4gIHJlbmRlcigpIHtcbiAgICBjb25zdCB7cCwgdn0gPSB0aGlzLnBcbiAgICBjb25zdCB7YSwgcHJlLCBzY30gPSB0aGlzLnByb3BzXG5cbiAgICByZXR1cm4gKFxuICAgICAgPFZpZXcgc3R5bGU9e3RoaXMuY2FjaGUoXCJyb290Vmlld1N0eWxlXCIsIHthbGlnbkl0ZW1zOiBcImNlbnRlclwiLCBmbGV4RGlyZWN0aW9uOiBcInJvd1wiLCBiYWNrZ3JvdW5kQ29sb3I6IFwiZ3JleVwiLCBwYWRkaW5nVmVydGljYWw6IDEwLCBwYWRkaW5nSG9yaXpvbnRhbDogNn0pfT5cbiAgICAgICAgPFByZXNzYWJsZVxuICAgICAgICAgIGRhdGFTZXQ9e2RhdGFTZXRzW2BmaWx0ZXJMYWJlbC0ke2F9LSR7c2N9YF0gfHw9IHtcbiAgICAgICAgICAgIGF0dHJpYnV0ZTogYSxcbiAgICAgICAgICAgIGNsYXNzOiBcImZpbHRlci1sYWJlbFwiLFxuICAgICAgICAgICAgc2NvcGU6IHNjXG4gICAgICAgICAgfX1cbiAgICAgICAgICBvblByZXNzPXt0aGlzLnR0Lm9uRmlsdGVyUHJlc3NlZH1cbiAgICAgICAgPlxuICAgICAgICAgIDxUZXh0PlxuICAgICAgICAgICAge3AubGVuZ3RoID4gMCAmJlxuICAgICAgICAgICAgICBgJHtwLmpvaW4oXCIuXCIpfS5gXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB7YX0ge3NjfSB7cHJlfSB7dn1cbiAgICAgICAgICA8L1RleHQ+XG4gICAgICAgIDwvUHJlc3NhYmxlPlxuICAgICAgICA8UHJlc3NhYmxlXG4gICAgICAgICAgZGF0YVNldD17dGhpcy5jYWNoZShcInJlbW92ZUZpbHRlckJ1dHRvbkRhdGFTZXRcIiwge2NsYXNzOiBcInJlbW92ZS1maWx0ZXItYnV0dG9uXCJ9KX1cbiAgICAgICAgICBvblByZXNzPXt0aGlzLnR0Lm9uUmVtb3ZlRmlsdGVyUHJlc3NlZH1cbiAgICAgICAgICBzdHlsZT17dGhpcy5jYWNoZShcInJlbW92ZUZpbHRlckJ1dHRvblN0eWxlXCIsIHttYXJnaW5MZWZ0OiA2fSl9XG4gICAgICAgID5cbiAgICAgICAgICA8SWNvbiBuYW1lPVwicmVtb3ZlXCIgLz5cbiAgICAgICAgPC9QcmVzc2FibGU+XG4gICAgICA8L1ZpZXc+XG4gICAgKVxuICB9XG5cbiAgb25GaWx0ZXJQcmVzc2VkID0gKGUpID0+IHtcbiAgICBlLnByZXZlbnREZWZhdWx0KClcblxuICAgIGNvbnN0IHthLCBmaWx0ZXJJbmRleCwgcCwgcHJlLCB2fSA9IHRoaXMucFxuICAgIGNvbnN0IHtzY30gPSB0aGlzLnByb3BzXG5cbiAgICB0aGlzLnByb3BzLm9uQ2xpY2soe2EsIGZpbHRlckluZGV4LCBwLCBwcmUsIHNjLCB2fSlcbiAgfVxuXG4gIG9uUmVtb3ZlRmlsdGVyUHJlc3NlZCA9IChlKSA9PiB7XG4gICAgZS5wcmV2ZW50RGVmYXVsdCgpXG5cbiAgICB0aGlzLnByb3BzLm9uUmVtb3ZlQ2xpY2tlZCh7ZmlsdGVySW5kZXg6IHRoaXMucC5maWx0ZXJJbmRleH0pXG4gIH1cbn0pKVxuIl19
51
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsdGVyLmpzIiwic291cmNlUm9vdCI6Ii9zcmMvIiwic291cmNlcyI6WyJ0YWJsZS9maWx0ZXJzL2ZpbHRlci5qc3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLFlBQVk7QUFDWix3R0FBd0c7QUFDeEcsT0FBTyxFQUFDLFNBQVMsRUFBRSxJQUFJLEVBQUMsTUFBTSxjQUFjLENBQUE7QUFDNUMsT0FBTyxJQUFJLE1BQU0sa0JBQWtCLENBQUE7QUFDbkMsT0FBTyxTQUFTLE1BQU0sWUFBWSxDQUFBO0FBQ2xDLE9BQU8sY0FBYyxNQUFNLGtCQUFrQixDQUFBO0FBQzdDLE9BQU8sSUFBSSxNQUFNLGlDQUFpQyxDQUFBO0FBQ2xELE9BQU8sS0FBSyxNQUFNLE9BQU8sQ0FBQTtBQUN6QixPQUFPLEVBQUMsY0FBYyxFQUFFLGNBQWMsRUFBQyxNQUFNLDRDQUE0QyxDQUFBO0FBQ3pGLE9BQU8sSUFBSSxNQUFNLGtCQUFrQixDQUFBO0FBRW5DLE1BQU0sUUFBUSxHQUFHLEVBQUUsQ0FBQTtBQUVuQiw2Q0FBNkM7QUFDN0MsNkNBQTZDO0FBQzdDLGVBQWUsSUFBSSxDQUFDLGNBQWMsQ0FBQywrQ0FBK0MsQ0FBQyxNQUFNLG1CQUFvQixTQUFRLGNBQWM7SUFDakksTUFBTSxDQUFDLFlBQVksR0FBRztRQUNwQixDQUFDLEVBQUUsSUFBSTtRQUNQLEdBQUcsRUFBRSxJQUFJO0tBQ1YsQ0FBQTtJQUVELE1BQU0sQ0FBQyxTQUFTLEdBQUcsY0FBYyxDQUFDO1FBQ2hDLENBQUMsRUFBRSxTQUFTLENBQUMsTUFBTTtRQUNuQixXQUFXLEVBQUUsU0FBUyxDQUFDLE1BQU0sQ0FBQyxVQUFVO1FBQ3hDLE9BQU8sRUFBRSxTQUFTLENBQUMsSUFBSSxDQUFDLFVBQVU7UUFDbEMsZUFBZSxFQUFFLFNBQVMsQ0FBQyxJQUFJLENBQUMsVUFBVTtRQUMxQyxDQUFDLEVBQUUsU0FBUyxDQUFDLEtBQUssQ0FBQyxVQUFVO1FBQzdCLEdBQUcsRUFBRSxTQUFTLENBQUMsTUFBTTtRQUNyQixFQUFFLEVBQUUsU0FBUyxDQUFDLE1BQU07UUFDcEIsQ0FBQyxFQUFFLFNBQVMsQ0FBQyxNQUFNLENBQUMsVUFBVTtLQUMvQixDQUFDLENBQUE7SUFFRixNQUFNO1FBQ0osTUFBTSxFQUFDLENBQUMsRUFBRSxDQUFDLEVBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFBO1FBQ3JCLE1BQU0sRUFBQyxDQUFDLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBQyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUE7UUFFL0IsT0FBTyxDQUNMLE1BQUMsSUFBSSxJQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLGVBQWUsRUFBRSxFQUFDLFVBQVUsRUFBRSxRQUFRLEVBQUUsYUFBYSxFQUFFLEtBQUssRUFBRSxlQUFlLEVBQUUsTUFBTSxFQUFFLGVBQWUsRUFBRSxFQUFFLEVBQUUsaUJBQWlCLEVBQUUsQ0FBQyxFQUFDLENBQUMsYUFDeEosS0FBQyxTQUFTLElBQ1IsT0FBTyxFQUFFLFFBQVEsQ0FBQyxlQUFlLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxLQUFLO3dCQUM5QyxTQUFTLEVBQUUsQ0FBQzt3QkFDWixLQUFLLEVBQUUsY0FBYzt3QkFDckIsS0FBSyxFQUFFLEVBQUU7cUJBQ1YsRUFDRCxPQUFPLEVBQUUsSUFBSSxDQUFDLEVBQUUsQ0FBQyxlQUFlLFlBRWhDLE1BQUMsSUFBSSxlQUNGLENBQUMsQ0FBQyxNQUFNLEdBQUcsQ0FBQztnQ0FDWCxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFFbEIsQ0FBQyxPQUFHLEVBQUUsT0FBRyxHQUFHLE9BQUcsQ0FBQyxJQUNaLEdBQ0csRUFDWixLQUFDLFNBQVMsSUFDUixPQUFPLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQywyQkFBMkIsRUFBRSxFQUFDLEtBQUssRUFBRSxzQkFBc0IsRUFBQyxDQUFDLEVBQ2pGLE9BQU8sRUFBRSxJQUFJLENBQUMsRUFBRSxDQUFDLHFCQUFxQixFQUN0QyxLQUFLLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyx5QkFBeUIsRUFBRSxFQUFDLFVBQVUsRUFBRSxDQUFDLEVBQUMsQ0FBQyxZQUU3RCxLQUFDLElBQUksSUFBQyxJQUFJLEVBQUMsUUFBUSxHQUFHLEdBQ1osSUFDUCxDQUNSLENBQUE7SUFDSCxDQUFDO0lBRUQsZUFBZSxHQUFHLENBQUMsQ0FBQyxFQUFFLEVBQUU7UUFDdEIsQ0FBQyxDQUFDLGNBQWMsRUFBRSxDQUFBO1FBRWxCLE1BQU0sRUFBQyxDQUFDLEVBQUUsV0FBVyxFQUFFLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFDLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQTtRQUMxQyxNQUFNLEVBQUMsRUFBRSxFQUFDLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQTtRQUV2QixJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxFQUFDLENBQUMsRUFBRSxXQUFXLEVBQUUsQ0FBQyxFQUFFLEdBQUcsRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFDLENBQUMsQ0FBQTtJQUNyRCxDQUFDLENBQUE7SUFFRCxxQkFBcUIsR0FBRyxDQUFDLENBQUMsRUFBRSxFQUFFO1FBQzVCLENBQUMsQ0FBQyxjQUFjLEVBQUUsQ0FBQTtRQUVsQixJQUFJLENBQUMsS0FBSyxDQUFDLGVBQWUsQ0FBQyxFQUFDLFdBQVcsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLFdBQVcsRUFBQyxDQUFDLENBQUE7SUFDL0QsQ0FBQyxDQUFBO0NBQ0YsQ0FBQyxDQUFDLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBAdHMtY2hlY2tcbi8qIGVzbGludC1kaXNhYmxlIG1heC1sZW4sIG5ldy1jYXAsIG5vLXJldHVybi1hc3NpZ24sIHJlYWN0L2pzeC1vbmUtZXhwcmVzc2lvbi1wZXItbGluZSwgc29ydC1pbXBvcnRzICovXG5pbXBvcnQge1ByZXNzYWJsZSwgVmlld30gZnJvbSBcInJlYWN0LW5hdGl2ZVwiXG5pbXBvcnQgSWNvbiBmcm9tIFwiLi4vLi4vdXRpbHMvaWNvblwiXG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCJcbmltcG9ydCBQcm9wVHlwZXNFeGFjdCBmcm9tIFwicHJvcC10eXBlcy1leGFjdFwiXG5pbXBvcnQgbWVtbyBmcm9tIFwic2V0LXN0YXRlLWNvbXBhcmUvYnVpbGQvbWVtby5qc1wiXG5pbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCJcbmltcG9ydCB7U2hhcGVDb21wb25lbnQsIHNoYXBlQ29tcG9uZW50fSBmcm9tIFwic2V0LXN0YXRlLWNvbXBhcmUvYnVpbGQvc2hhcGUtY29tcG9uZW50LmpzXCJcbmltcG9ydCBUZXh0IGZyb20gXCIuLi8uLi91dGlscy90ZXh0XCJcblxuY29uc3QgZGF0YVNldHMgPSB7fVxuXG4vKiogQHR5cGVkZWYge1JlY29yZDxzdHJpbmcsIG5ldmVyPn0gUHJvcHMgKi9cbi8qKiBAdHlwZWRlZiB7UmVjb3JkPHN0cmluZywgbmV2ZXI+fSBTdGF0ZSAqL1xuZXhwb3J0IGRlZmF1bHQgbWVtbyhzaGFwZUNvbXBvbmVudCgvKiogQGF1Z21lbnRzIHtTaGFwZUNvbXBvbmVudDxQcm9wcywgU3RhdGU+fSAqLyBjbGFzcyBBcGlNYWtlclRhYmxlRmlsdGVyIGV4dGVuZHMgU2hhcGVDb21wb25lbnQge1xuICBzdGF0aWMgZGVmYXVsdFByb3BzID0ge1xuICAgIGE6IG51bGwsXG4gICAgcHJlOiBudWxsXG4gIH1cblxuICBzdGF0aWMgcHJvcFR5cGVzID0gUHJvcFR5cGVzRXhhY3Qoe1xuICAgIGE6IFByb3BUeXBlcy5zdHJpbmcsXG4gICAgZmlsdGVySW5kZXg6IFByb3BUeXBlcy5udW1iZXIuaXNSZXF1aXJlZCxcbiAgICBvbkNsaWNrOiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkLFxuICAgIG9uUmVtb3ZlQ2xpY2tlZDogUHJvcFR5cGVzLmZ1bmMuaXNSZXF1aXJlZCxcbiAgICBwOiBQcm9wVHlwZXMuYXJyYXkuaXNSZXF1aXJlZCxcbiAgICBwcmU6IFByb3BUeXBlcy5zdHJpbmcsXG4gICAgc2M6IFByb3BUeXBlcy5zdHJpbmcsXG4gICAgdjogUHJvcFR5cGVzLnN0cmluZy5pc1JlcXVpcmVkXG4gIH0pXG5cbiAgcmVuZGVyKCkge1xuICAgIGNvbnN0IHtwLCB2fSA9IHRoaXMucFxuICAgIGNvbnN0IHthLCBwcmUsIHNjfSA9IHRoaXMucHJvcHNcblxuICAgIHJldHVybiAoXG4gICAgICA8VmlldyBzdHlsZT17dGhpcy5jYWNoZShcInJvb3RWaWV3U3R5bGVcIiwge2FsaWduSXRlbXM6IFwiY2VudGVyXCIsIGZsZXhEaXJlY3Rpb246IFwicm93XCIsIGJhY2tncm91bmRDb2xvcjogXCJncmV5XCIsIHBhZGRpbmdWZXJ0aWNhbDogMTAsIHBhZGRpbmdIb3Jpem9udGFsOiA2fSl9PlxuICAgICAgICA8UHJlc3NhYmxlXG4gICAgICAgICAgZGF0YVNldD17ZGF0YVNldHNbYGZpbHRlckxhYmVsLSR7YX0tJHtzY31gXSB8fD0ge1xuICAgICAgICAgICAgYXR0cmlidXRlOiBhLFxuICAgICAgICAgICAgY2xhc3M6IFwiZmlsdGVyLWxhYmVsXCIsXG4gICAgICAgICAgICBzY29wZTogc2NcbiAgICAgICAgICB9fVxuICAgICAgICAgIG9uUHJlc3M9e3RoaXMudHQub25GaWx0ZXJQcmVzc2VkfVxuICAgICAgICA+XG4gICAgICAgICAgPFRleHQ+XG4gICAgICAgICAgICB7cC5sZW5ndGggPiAwICYmXG4gICAgICAgICAgICAgIGAke3Auam9pbihcIi5cIil9LmBcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHthfSB7c2N9IHtwcmV9IHt2fVxuICAgICAgICAgIDwvVGV4dD5cbiAgICAgICAgPC9QcmVzc2FibGU+XG4gICAgICAgIDxQcmVzc2FibGVcbiAgICAgICAgICBkYXRhU2V0PXt0aGlzLmNhY2hlKFwicmVtb3ZlRmlsdGVyQnV0dG9uRGF0YVNldFwiLCB7Y2xhc3M6IFwicmVtb3ZlLWZpbHRlci1idXR0b25cIn0pfVxuICAgICAgICAgIG9uUHJlc3M9e3RoaXMudHQub25SZW1vdmVGaWx0ZXJQcmVzc2VkfVxuICAgICAgICAgIHN0eWxlPXt0aGlzLmNhY2hlKFwicmVtb3ZlRmlsdGVyQnV0dG9uU3R5bGVcIiwge21hcmdpbkxlZnQ6IDZ9KX1cbiAgICAgICAgPlxuICAgICAgICAgIDxJY29uIG5hbWU9XCJyZW1vdmVcIiAvPlxuICAgICAgICA8L1ByZXNzYWJsZT5cbiAgICAgIDwvVmlldz5cbiAgICApXG4gIH1cblxuICBvbkZpbHRlclByZXNzZWQgPSAoZSkgPT4ge1xuICAgIGUucHJldmVudERlZmF1bHQoKVxuXG4gICAgY29uc3Qge2EsIGZpbHRlckluZGV4LCBwLCBwcmUsIHZ9ID0gdGhpcy5wXG4gICAgY29uc3Qge3NjfSA9IHRoaXMucHJvcHNcblxuICAgIHRoaXMucHJvcHMub25DbGljayh7YSwgZmlsdGVySW5kZXgsIHAsIHByZSwgc2MsIHZ9KVxuICB9XG5cbiAgb25SZW1vdmVGaWx0ZXJQcmVzc2VkID0gKGUpID0+IHtcbiAgICBlLnByZXZlbnREZWZhdWx0KClcblxuICAgIHRoaXMucHJvcHMub25SZW1vdmVDbGlja2VkKHtmaWx0ZXJJbmRleDogdGhpcy5wLmZpbHRlckluZGV4fSlcbiAgfVxufSkpXG4iXX0=