@airtable/blocks 1.9.0 → 1.10.0-experimental-48096ae-20211116

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 (291) hide show
  1. package/CHANGELOG.md +10 -1
  2. package/dist/cjs/color_utils.js +2 -1
  3. package/dist/cjs/colors.js +2 -1
  4. package/dist/cjs/error_utils.js +19 -1
  5. package/dist/cjs/event_tracker.js +2 -1
  6. package/dist/cjs/global_config.js +2 -1
  7. package/dist/cjs/index.js +2 -1
  8. package/dist/cjs/injected/airtable_interface.js +2 -1
  9. package/dist/cjs/models/abstract_model.js +2 -1
  10. package/dist/cjs/models/abstract_model_with_async_data.js +2 -1
  11. package/dist/cjs/models/base.js +4 -2
  12. package/dist/cjs/models/create_aggregators.js +2 -1
  13. package/dist/cjs/models/cursor.js +4 -1
  14. package/dist/cjs/models/field.js +5 -14
  15. package/dist/cjs/models/grouped_record_query_result.js +7 -15
  16. package/dist/cjs/models/linked_records_query_result.js +77 -28
  17. package/dist/cjs/models/models.js +2 -1
  18. package/dist/cjs/models/mutation_constants.js +2 -1
  19. package/dist/cjs/models/mutations.js +20 -163
  20. package/dist/cjs/models/object_pool.js +2 -1
  21. package/dist/cjs/models/query_manager.js +328 -0
  22. package/dist/cjs/models/record.js +310 -56
  23. package/dist/cjs/models/record_coloring.js +2 -1
  24. package/dist/cjs/models/record_query_result.js +6 -2
  25. package/dist/cjs/models/record_store.js +556 -766
  26. package/dist/cjs/models/session.js +2 -1
  27. package/dist/cjs/models/table.js +10 -8
  28. package/dist/cjs/models/table_or_view_query_result.js +482 -415
  29. package/dist/cjs/models/view.js +2 -1
  30. package/dist/cjs/models/view_data_store.js +245 -296
  31. package/dist/cjs/models/view_metadata_query_result.js +2 -1
  32. package/dist/cjs/perform_record_action.js +2 -1
  33. package/dist/cjs/private_utils.js +42 -1
  34. package/dist/cjs/sdk.js +13 -2
  35. package/dist/cjs/settings_button.js +2 -1
  36. package/dist/cjs/stats/block_stats.js +2 -1
  37. package/dist/cjs/testing/abstract_mock_airtable_interface.js +57 -11
  38. package/dist/cjs/types/aggregators.js +2 -1
  39. package/dist/cjs/types/airtable_interface.js +2 -1
  40. package/dist/cjs/types/attachment.js +2 -1
  41. package/dist/cjs/types/backend_fetch_types.js +2 -1
  42. package/dist/cjs/types/base.js +2 -1
  43. package/dist/cjs/types/block.js +2 -1
  44. package/dist/cjs/types/block_query_spec.js +86 -0
  45. package/dist/cjs/types/collaborator.js +2 -1
  46. package/dist/cjs/types/cursor.js +2 -1
  47. package/dist/cjs/types/field.js +2 -1
  48. package/dist/cjs/types/global_config.js +2 -1
  49. package/dist/cjs/types/mutations.js +2 -1
  50. package/dist/cjs/types/permission_levels.js +2 -1
  51. package/dist/cjs/types/record.js +2 -1
  52. package/dist/cjs/types/record_action_data.js +2 -1
  53. package/dist/cjs/types/stat.js +2 -1
  54. package/dist/cjs/types/table.js +2 -1
  55. package/dist/cjs/types/undo_redo.js +2 -1
  56. package/dist/cjs/types/view.js +2 -1
  57. package/dist/cjs/types/viewport.js +2 -1
  58. package/dist/cjs/ui/base_provider.js +2 -1
  59. package/dist/cjs/ui/baymax_utils.js +2 -1
  60. package/dist/cjs/ui/block_wrapper.js +2 -1
  61. package/dist/cjs/ui/box.js +2 -1
  62. package/dist/cjs/ui/button.js +2 -1
  63. package/dist/cjs/ui/cell_renderer.js +2 -1
  64. package/dist/cjs/ui/choice_token.js +2 -1
  65. package/dist/cjs/ui/collaborator_token.js +2 -1
  66. package/dist/cjs/ui/color_palette.js +2 -1
  67. package/dist/cjs/ui/color_palette_synced.js +2 -1
  68. package/dist/cjs/ui/confirmation_dialog.js +2 -1
  69. package/dist/cjs/ui/control_sizes.js +2 -1
  70. package/dist/cjs/ui/create_detect_element_resize.js +2 -1
  71. package/dist/cjs/ui/css_helpers.js +2 -1
  72. package/dist/cjs/ui/dialog.js +2 -1
  73. package/dist/cjs/ui/dialog_close_button.js +2 -1
  74. package/dist/cjs/ui/expand_record.js +2 -1
  75. package/dist/cjs/ui/expand_record_list.js +2 -1
  76. package/dist/cjs/ui/expand_record_picker_async.js +2 -1
  77. package/dist/cjs/ui/field_icon.js +2 -1
  78. package/dist/cjs/ui/field_picker.js +2 -1
  79. package/dist/cjs/ui/field_picker_synced.js +2 -1
  80. package/dist/cjs/ui/form_field.js +2 -1
  81. package/dist/cjs/ui/geometry/geometry.js +2 -1
  82. package/dist/cjs/ui/geometry/point.js +2 -1
  83. package/dist/cjs/ui/geometry/rect.js +2 -1
  84. package/dist/cjs/ui/geometry/size.js +2 -1
  85. package/dist/cjs/ui/global_alert.js +2 -1
  86. package/dist/cjs/ui/global_config_synced_component_helpers.js +2 -1
  87. package/dist/cjs/ui/heading.js +2 -1
  88. package/dist/cjs/ui/icon.js +2 -1
  89. package/dist/cjs/ui/icon_config.js +6 -3
  90. package/dist/cjs/ui/initialize_block.js +2 -1
  91. package/dist/cjs/ui/input.js +2 -1
  92. package/dist/cjs/ui/input_synced.js +2 -1
  93. package/dist/cjs/ui/key_codes.js +2 -1
  94. package/dist/cjs/ui/label.js +2 -1
  95. package/dist/cjs/ui/link.js +2 -1
  96. package/dist/cjs/ui/loader.js +2 -1
  97. package/dist/cjs/ui/modal.js +2 -1
  98. package/dist/cjs/ui/model_picker_select.js +2 -1
  99. package/dist/cjs/ui/popover.js +2 -1
  100. package/dist/cjs/ui/progress_bar.js +2 -1
  101. package/dist/cjs/ui/record_card.js +2 -1
  102. package/dist/cjs/ui/record_card_list.js +2 -1
  103. package/dist/cjs/ui/remote_utils.js +2 -1
  104. package/dist/cjs/ui/sdk_context.js +2 -1
  105. package/dist/cjs/ui/select.js +2 -1
  106. package/dist/cjs/ui/select_and_select_buttons_helpers.js +2 -1
  107. package/dist/cjs/ui/select_buttons.js +2 -1
  108. package/dist/cjs/ui/select_buttons_synced.js +2 -1
  109. package/dist/cjs/ui/select_synced.js +2 -1
  110. package/dist/cjs/ui/switch.js +2 -1
  111. package/dist/cjs/ui/switch_synced.js +2 -1
  112. package/dist/cjs/ui/synced.js +2 -1
  113. package/dist/cjs/ui/system/all_styles_set.js +2 -1
  114. package/dist/cjs/ui/system/appearance/appearance_set.js +2 -1
  115. package/dist/cjs/ui/system/appearance/background_color.js +2 -1
  116. package/dist/cjs/ui/system/appearance/border.js +2 -1
  117. package/dist/cjs/ui/system/appearance/border_radius.js +2 -1
  118. package/dist/cjs/ui/system/appearance/box_shadow.js +2 -1
  119. package/dist/cjs/ui/system/appearance/opacity.js +2 -1
  120. package/dist/cjs/ui/system/dimensions/dimensions_set.js +2 -1
  121. package/dist/cjs/ui/system/dimensions/height.js +2 -1
  122. package/dist/cjs/ui/system/dimensions/max_height.js +2 -1
  123. package/dist/cjs/ui/system/dimensions/max_width.js +2 -1
  124. package/dist/cjs/ui/system/dimensions/min_height.js +2 -1
  125. package/dist/cjs/ui/system/dimensions/min_width.js +2 -1
  126. package/dist/cjs/ui/system/dimensions/width.js +2 -1
  127. package/dist/cjs/ui/system/display.js +2 -1
  128. package/dist/cjs/ui/system/flex_container/align_content.js +2 -1
  129. package/dist/cjs/ui/system/flex_container/align_items.js +2 -1
  130. package/dist/cjs/ui/system/flex_container/flex_container_set.js +2 -1
  131. package/dist/cjs/ui/system/flex_container/flex_direction.js +2 -1
  132. package/dist/cjs/ui/system/flex_container/flex_wrap.js +2 -1
  133. package/dist/cjs/ui/system/flex_container/justify_content.js +2 -1
  134. package/dist/cjs/ui/system/flex_container/justify_items.js +2 -1
  135. package/dist/cjs/ui/system/flex_item/align_self.js +2 -1
  136. package/dist/cjs/ui/system/flex_item/flex.js +2 -1
  137. package/dist/cjs/ui/system/flex_item/flex_basis.js +2 -1
  138. package/dist/cjs/ui/system/flex_item/flex_grow.js +2 -1
  139. package/dist/cjs/ui/system/flex_item/flex_item_set.js +2 -1
  140. package/dist/cjs/ui/system/flex_item/flex_shrink.js +2 -1
  141. package/dist/cjs/ui/system/flex_item/justify_self.js +2 -1
  142. package/dist/cjs/ui/system/flex_item/order.js +2 -1
  143. package/dist/cjs/ui/system/index.js +2 -1
  144. package/dist/cjs/ui/system/overflow.js +2 -1
  145. package/dist/cjs/ui/system/position/bottom.js +2 -1
  146. package/dist/cjs/ui/system/position/left.js +2 -1
  147. package/dist/cjs/ui/system/position/position.js +2 -1
  148. package/dist/cjs/ui/system/position/position_set.js +2 -1
  149. package/dist/cjs/ui/system/position/right.js +2 -1
  150. package/dist/cjs/ui/system/position/top.js +2 -1
  151. package/dist/cjs/ui/system/position/z_index.js +2 -1
  152. package/dist/cjs/ui/system/spacing/margin.js +2 -1
  153. package/dist/cjs/ui/system/spacing/padding.js +2 -1
  154. package/dist/cjs/ui/system/spacing/spacing_set.js +2 -1
  155. package/dist/cjs/ui/system/typography/font_family.js +2 -1
  156. package/dist/cjs/ui/system/typography/font_size.js +2 -1
  157. package/dist/cjs/ui/system/typography/font_style.js +2 -1
  158. package/dist/cjs/ui/system/typography/font_weight.js +2 -1
  159. package/dist/cjs/ui/system/typography/letter_spacing.js +2 -1
  160. package/dist/cjs/ui/system/typography/line_height.js +2 -1
  161. package/dist/cjs/ui/system/typography/text_align.js +2 -1
  162. package/dist/cjs/ui/system/typography/text_color.js +2 -1
  163. package/dist/cjs/ui/system/typography/text_decoration.js +2 -1
  164. package/dist/cjs/ui/system/typography/text_transform.js +2 -1
  165. package/dist/cjs/ui/system/typography/typography_set.js +2 -1
  166. package/dist/cjs/ui/system/utils/create_responsive_prop_type.js +2 -1
  167. package/dist/cjs/ui/system/utils/create_style_prop_types.js +2 -1
  168. package/dist/cjs/ui/system/utils/csstype.js +2 -1
  169. package/dist/cjs/ui/system/utils/ensure_numbers_are_within_scale.js +2 -1
  170. package/dist/cjs/ui/system/utils/get_style_props_for_responsive_prop.js +2 -1
  171. package/dist/cjs/ui/system/utils/types.js +2 -1
  172. package/dist/cjs/ui/table_picker.js +2 -1
  173. package/dist/cjs/ui/table_picker_synced.js +2 -1
  174. package/dist/cjs/ui/text.js +2 -1
  175. package/dist/cjs/ui/text_button.js +2 -1
  176. package/dist/cjs/ui/theme/default_theme/button_variants.js +2 -1
  177. package/dist/cjs/ui/theme/default_theme/control_sizes.js +2 -1
  178. package/dist/cjs/ui/theme/default_theme/heading_styles.js +2 -1
  179. package/dist/cjs/ui/theme/default_theme/index.js +2 -1
  180. package/dist/cjs/ui/theme/default_theme/input_variants.js +2 -1
  181. package/dist/cjs/ui/theme/default_theme/link_variants.js +2 -1
  182. package/dist/cjs/ui/theme/default_theme/select_buttons_variants.js +2 -1
  183. package/dist/cjs/ui/theme/default_theme/select_variants.js +2 -1
  184. package/dist/cjs/ui/theme/default_theme/switch_variants.js +2 -1
  185. package/dist/cjs/ui/theme/default_theme/text_button_variants.js +2 -1
  186. package/dist/cjs/ui/theme/default_theme/text_styles.js +2 -1
  187. package/dist/cjs/ui/theme/default_theme/tokens.js +2 -1
  188. package/dist/cjs/ui/theme/theme_context.js +2 -1
  189. package/dist/cjs/ui/theme/use_theme.js +2 -1
  190. package/dist/cjs/ui/tooltip.js +2 -1
  191. package/dist/cjs/ui/types/aria_props.js +2 -1
  192. package/dist/cjs/ui/types/data_attributes_prop.js +2 -1
  193. package/dist/cjs/ui/types/tooltip_anchor_props.js +2 -1
  194. package/dist/cjs/ui/ui.js +2 -1
  195. package/dist/cjs/ui/unstable_standalone_ui.js +2 -1
  196. package/dist/cjs/ui/use_array_identity.js +2 -1
  197. package/dist/cjs/ui/use_base.js +2 -1
  198. package/dist/cjs/ui/use_cursor.js +2 -1
  199. package/dist/cjs/ui/use_form_field.js +2 -1
  200. package/dist/cjs/ui/use_global_config.js +3 -2
  201. package/dist/cjs/ui/use_loadable.js +2 -1
  202. package/dist/cjs/ui/use_record_action_data.js +2 -1
  203. package/dist/cjs/ui/use_records.js +7 -2
  204. package/dist/cjs/ui/use_session.js +2 -1
  205. package/dist/cjs/ui/use_settings_button.js +2 -1
  206. package/dist/cjs/ui/use_styled_system.js +2 -1
  207. package/dist/cjs/ui/use_synced.js +2 -1
  208. package/dist/cjs/ui/use_text_color_for_background_color.js +2 -1
  209. package/dist/cjs/ui/use_view_metadata.js +2 -1
  210. package/dist/cjs/ui/use_viewport.js +2 -1
  211. package/dist/cjs/ui/use_watchable.js +2 -1
  212. package/dist/cjs/ui/view_picker.js +2 -1
  213. package/dist/cjs/ui/view_picker_synced.js +2 -1
  214. package/dist/cjs/ui/viewport_constraint.js +2 -1
  215. package/dist/cjs/ui/with_hooks.js +2 -1
  216. package/dist/cjs/ui/with_styled_system.js +2 -1
  217. package/dist/cjs/undo_redo.js +2 -1
  218. package/dist/cjs/unstable_private_utils.js +2 -1
  219. package/dist/cjs/unstable_testing_utils.js +2 -1
  220. package/dist/cjs/viewport.js +2 -1
  221. package/dist/cjs/warning.js +2 -1
  222. package/dist/cjs/watchable.js +17 -2
  223. package/dist/types/src/models/base.d.ts +2 -1
  224. package/dist/types/src/models/base.d.ts.map +1 -1
  225. package/dist/types/src/models/cursor.d.ts +2 -0
  226. package/dist/types/src/models/cursor.d.ts.map +1 -1
  227. package/dist/types/src/models/field.d.ts +3 -13
  228. package/dist/types/src/models/field.d.ts.map +1 -1
  229. package/dist/types/src/models/grouped_record_query_result.d.ts +3 -3
  230. package/dist/types/src/models/grouped_record_query_result.d.ts.map +1 -1
  231. package/dist/types/src/models/linked_records_query_result.d.ts.map +1 -1
  232. package/dist/types/src/models/mutations.d.ts.map +1 -1
  233. package/dist/types/src/models/query_manager.d.ts +2 -0
  234. package/dist/types/src/models/query_manager.d.ts.map +1 -0
  235. package/dist/types/src/models/record.d.ts +12 -3
  236. package/dist/types/src/models/record.d.ts.map +1 -1
  237. package/dist/types/src/models/record_query_result.d.ts +3 -2
  238. package/dist/types/src/models/record_query_result.d.ts.map +1 -1
  239. package/dist/types/src/models/record_store.d.ts.map +1 -1
  240. package/dist/types/src/models/table.d.ts +2 -1
  241. package/dist/types/src/models/table.d.ts.map +1 -1
  242. package/dist/types/src/models/table_or_view_query_result.d.ts +3 -5
  243. package/dist/types/src/models/table_or_view_query_result.d.ts.map +1 -1
  244. package/dist/types/src/models/view_data_store.d.ts +0 -1
  245. package/dist/types/src/models/view_data_store.d.ts.map +1 -1
  246. package/dist/types/src/models/view_metadata_query_result.d.ts +1 -1
  247. package/dist/types/src/models/view_metadata_query_result.d.ts.map +1 -1
  248. package/dist/types/src/private_utils.d.ts +24 -1
  249. package/dist/types/src/private_utils.d.ts.map +1 -1
  250. package/dist/types/src/sdk.d.ts.map +1 -1
  251. package/dist/types/src/testing/abstract_mock_airtable_interface.d.ts +11 -11
  252. package/dist/types/src/testing/abstract_mock_airtable_interface.d.ts.map +1 -1
  253. package/dist/types/src/types/airtable_interface.d.ts +48 -20
  254. package/dist/types/src/types/airtable_interface.d.ts.map +1 -1
  255. package/dist/types/src/types/block_query_spec.d.ts +139 -0
  256. package/dist/types/src/types/block_query_spec.d.ts.map +1 -0
  257. package/dist/types/src/types/field.d.ts +7 -1
  258. package/dist/types/src/types/field.d.ts.map +1 -1
  259. package/dist/types/src/types/table.d.ts +0 -2
  260. package/dist/types/src/types/table.d.ts.map +1 -1
  261. package/dist/types/src/types/view.d.ts +3 -8
  262. package/dist/types/src/types/view.d.ts.map +1 -1
  263. package/dist/types/src/ui/cell_renderer.d.ts +1 -1
  264. package/dist/types/src/ui/color_palette.d.ts +1 -1
  265. package/dist/types/src/ui/control_sizes.d.ts +1 -1
  266. package/dist/types/src/ui/field_icon.d.ts +1 -1
  267. package/dist/types/src/ui/heading.d.ts +1 -1
  268. package/dist/types/src/ui/icon.d.ts +1 -1
  269. package/dist/types/src/ui/icon_config.d.ts +33 -31
  270. package/dist/types/src/ui/icon_config.d.ts.map +1 -1
  271. package/dist/types/src/ui/input.d.ts +10 -10
  272. package/dist/types/src/ui/link.d.ts +1 -1
  273. package/dist/types/src/ui/link.d.ts.map +1 -1
  274. package/dist/types/src/ui/record_card.d.ts +1 -1
  275. package/dist/types/src/ui/system/utils/create_style_prop_types.d.ts +1 -1
  276. package/dist/types/src/ui/system/utils/create_style_prop_types.d.ts.map +1 -1
  277. package/dist/types/src/ui/text.d.ts +1 -1
  278. package/dist/types/src/ui/theme/default_theme/index.d.ts +1 -1
  279. package/dist/types/src/ui/theme/theme_context.d.ts +1 -1
  280. package/dist/types/src/ui/theme/use_theme.d.ts +1 -1
  281. package/dist/types/src/ui/use_global_config.d.ts +1 -1
  282. package/dist/types/src/watchable.d.ts.map +1 -1
  283. package/dist/types/test/airtable_interface_mocks/fixture_data.d.ts +7 -5
  284. package/dist/types/test/airtable_interface_mocks/fixture_data.d.ts.map +1 -1
  285. package/dist/types/test/airtable_interface_mocks/mock_airtable_interface.d.ts +18 -11
  286. package/dist/types/test/airtable_interface_mocks/mock_airtable_interface.d.ts.map +1 -1
  287. package/dist/types/test/airtable_interface_mocks/mock_base_data_stores.d.ts +51 -0
  288. package/dist/types/test/airtable_interface_mocks/mock_base_data_stores.d.ts.map +1 -0
  289. package/dist/types/test/test_helpers.d.ts +2 -0
  290. package/dist/types/test/test_helpers.d.ts.map +1 -1
  291. package/package.json +2 -1
package/CHANGELOG.md CHANGED
@@ -9,10 +9,19 @@ Not every commit needs to result in a change to this file (e.g. docs and chore c
9
9
  commit that affects the code in a way that consumers might care about should include edits to the
10
10
  'Unreleased' section though. Breaking changes should be prefixed with `**BREAKING:**`.
11
11
 
12
- ## [Unreleased](https://github.com/airtable/blocks/compare/@airtable/blocks@1.9.0...HEAD)
12
+ ## [Unreleased](https://github.com/airtable/blocks/compare/@airtable/blocks@1.10.0...HEAD)
13
13
 
14
14
  No changes.
15
15
 
16
+ ## [1.10.0](https://github.com/airtable/blocks/compare/@airtable/blocks@1.9.0...@airtable/blocks@1.10.0) - 2021-11-03
17
+
18
+ - Fix typo in cursor.ts documentation - thanks @m2creates!
19
+ - Add new `calendarDay` icon (and micro variant)
20
+ - Update documentation to include attachment url guidance
21
+ - Update field metadata writes documentation to mention that `null` will be coerced to `''`
22
+ - Fix a bug when unloading data from a `linkedRecordQueryResult` after a table deletion
23
+ - Update `children` prop of `Link` component to be optional
24
+
16
25
  ## [1.9.0](https://github.com/airtable/blocks/compare/@airtable/blocks@1.8.0...@airtable/blocks@1.9.0) - 2021-09-15
17
26
 
18
27
  - Update documentation for `FieldType.CHECKBOX` cell read & write types to be more accurate.
@@ -64,4 +64,5 @@ var colorUtils = {
64
64
  }
65
65
  };
66
66
  var _default = colorUtils;
67
- exports.default = _default;
67
+ exports.default = _default;
68
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb2xvcl91dGlscy50cyJdLCJuYW1lcyI6WyJjb2xvclV0aWxzIiwiZ2V0SGV4Rm9yQ29sb3IiLCJjb2xvclN0cmluZyIsImNvbG9yIiwiQ29sb3JzIiwicmdiVHVwbGUiLCJyZ2JUdXBsZXNCeUNvbG9yIiwiaGV4TnVtYmVyIiwidG9TdHJpbmciLCJwYWRTdGFydCIsImdldFJnYkZvckNvbG9yIiwiciIsImciLCJiIiwic2hvdWxkVXNlTGlnaHRUZXh0T25Db2xvciIsInNob3VsZFVzZURhcmtUZXh0IiwiZW5kc1dpdGgiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQ0E7O0FBQ0E7O0FBRkE7O0FBQStDO0FBNEUvQyxJQUFNQSxVQUFzQixHQUFHO0FBQzNCQyxFQUFBQSxjQUFjLEVBQUlDLFdBQUQsSUFBd0M7QUFDckQsUUFBTUMsS0FBSyxHQUFHLHlDQUFxQkMsZUFBckIsRUFBNkJGLFdBQTdCLENBQWQ7O0FBQ0EsUUFBSSxDQUFDQyxLQUFMLEVBQVk7QUFDUixhQUFPLElBQVA7QUFDSDs7QUFDRCxRQUFNRSxRQUFRLEdBQUdDLHlCQUFpQkgsS0FBakIsQ0FBakI7QUFFQSxRQUFNSSxTQUFTLEdBQUlGLFFBQVEsQ0FBQyxDQUFELENBQVIsSUFBZSxFQUFoQixHQUF1QkEsUUFBUSxDQUFDLENBQUQsQ0FBUixJQUFlLENBQXRDLEdBQTJDQSxRQUFRLENBQUMsQ0FBRCxDQUFyRTtBQUNBLHNCQUFXRSxTQUFTLENBQUNDLFFBQVYsQ0FBbUIsRUFBbkIsRUFBdUJDLFFBQXZCLENBQWdDLENBQWhDLEVBQW1DLEdBQW5DLENBQVg7QUFDSCxHQVYwQjtBQVkzQkMsRUFBQUEsY0FBYyxFQUFJUixXQUFELElBQXFDO0FBQ2xELFFBQU1DLEtBQUssR0FBRyx5Q0FBcUJDLGVBQXJCLEVBQTZCRixXQUE3QixDQUFkOztBQUNBLFFBQUksQ0FBQ0MsS0FBTCxFQUFZO0FBQ1IsYUFBTyxJQUFQO0FBQ0g7O0FBQ0QsUUFBTUUsUUFBUSxHQUFHQyx5QkFBaUJILEtBQWpCLENBQWpCO0FBQ0EsV0FBTztBQUFDUSxNQUFBQSxDQUFDLEVBQUVOLFFBQVEsQ0FBQyxDQUFELENBQVo7QUFBaUJPLE1BQUFBLENBQUMsRUFBRVAsUUFBUSxDQUFDLENBQUQsQ0FBNUI7QUFBaUNRLE1BQUFBLENBQUMsRUFBRVIsUUFBUSxDQUFDLENBQUQ7QUFBNUMsS0FBUDtBQUNILEdBbkIwQjtBQXFCM0JTLEVBQUFBLHlCQUF5QixFQUFHWixXQUFELElBQWtDO0FBQ3pELFFBQUksQ0FBQyx3QkFBSUksd0JBQUosRUFBc0JKLFdBQXRCLENBQUwsRUFBeUM7QUFDckM7QUFDQTtBQUNBLGFBQU8sS0FBUDtBQUNILEtBTHdELENBT3pEO0FBQ0E7QUFDQTtBQUNBOzs7QUFDQSxRQUFNYSxpQkFBaUIsR0FBR2IsV0FBVyxDQUFDYyxRQUFaLENBQXFCLFFBQXJCLEtBQWtDZCxXQUFXLENBQUNjLFFBQVosQ0FBcUIsUUFBckIsQ0FBNUQ7QUFDQSxXQUFPLENBQUNELGlCQUFSO0FBQ0g7QUFsQzBCLENBQS9CO2VBcUNlZixVIiwic291cmNlc0NvbnRlbnQiOlsiLyoqIEBtb2R1bGUgQGFpcnRhYmxlL2Jsb2Nrcy91aTogY29sb3JVdGlscyAqLyAvKiogKi9cbmltcG9ydCB7Z2V0RW51bVZhbHVlSWZFeGlzdHMsIGhhc30gZnJvbSAnLi9wcml2YXRlX3V0aWxzJztcbmltcG9ydCBDb2xvcnMsIHtDb2xvciwgcmdiVHVwbGVzQnlDb2xvcn0gZnJvbSAnLi9jb2xvcnMnO1xuXG4vKiogQSByZWQvZ3JlZW4vYmx1ZSBjb2xvciBvYmplY3QuIEVhY2ggcHJvcGVydHkgaXMgYSBudW1iZXIgZnJvbSAwIHRvIDI1NS4gKi9cbmludGVyZmFjZSBSR0Ige1xuICAgIC8qKiBUaGUgcmVkIGNvbXBvbmVudC4gKi9cbiAgICByOiBudW1iZXI7XG4gICAgLyoqIFRoZSBncmVlbiBjb21wb25lbnQuICovXG4gICAgZzogbnVtYmVyO1xuICAgIC8qKiBUaGUgYmx1ZSBjb21wb25lbnQuICovXG4gICAgYjogbnVtYmVyO1xufVxuXG4vKipcbiAqIFV0aWxpdGllcyBmb3Igd29ya2luZyB3aXRoIHtAbGluayBDb2xvcn0gbmFtZXMgZnJvbSB0aGUge0BsaW5rIGNvbG9yc30gZW51bS5cbiAqXG4gKiBAZG9jc1BhdGggVUkvdXRpbHMvY29sb3JVdGlsc1xuICovXG5pbnRlcmZhY2UgQ29sb3JVdGlscyB7XG4gICAgLyoqXG4gICAgICogR2l2ZW4gYSB7QGxpbmsgQ29sb3J9LCByZXR1cm4gdGhlIGhleCBjb2xvciB2YWx1ZSBmb3IgdGhhdCBjb2xvciwgb3IgbnVsbCBpZiB0aGUgdmFsdWUgaXNuJ3QgYSB7QGxpbmsgQ29sb3J9XG4gICAgICpcbiAgICAgKiBAcGFyYW0gY29sb3JTdHJpbmdcbiAgICAgKiBAZXhhbXBsZVxuICAgICAqIGBgYGpzXG4gICAgICogaW1wb3J0IHtjb2xvclV0aWxzLCBjb2xvcnN9IGZyb20gJ0BhaXJ0YWJsZS9ibG9ja3MvdWknO1xuICAgICAqXG4gICAgICogY29sb3JVdGlscy5nZXRIZXhGb3JDb2xvcihjb2xvcnMuUkVEKTtcbiAgICAgKiAvLyA9PiAnI2VmMzA2MSdcbiAgICAgKlxuICAgICAqIGNvbG9yVXRpbHMuZ2V0SGV4Rm9yQ29sb3IoJ3VuY29tZm9ydGFibGUgYmVpZ2UnKTtcbiAgICAgKiAvLyA9PiBudWxsXG4gICAgICogYGBgXG4gICAgICovXG4gICAgZ2V0SGV4Rm9yQ29sb3IoY29sb3JTdHJpbmc6IENvbG9yKTogc3RyaW5nO1xuICAgIC8qKiAqL1xuICAgIGdldEhleEZvckNvbG9yKGNvbG9yU3RyaW5nOiBzdHJpbmcpOiBudWxsIHwgc3RyaW5nO1xuXG4gICAgLyoqXG4gICAgICogR2l2ZW4gYSB7QGxpbmsgQ29sb3J9LCByZXR1cm4gYW4ge0BsaW5rIFJHQn0gb2JqZWN0IHJlcHJlc2VudGluZyBpdCwgb3IgbnVsbCBpZiB0aGUgdmFsdWUgaXNuJ3QgYSB7QGxpbmsgQ29sb3J9XG4gICAgICpcbiAgICAgKiBAcGFyYW0gY29sb3JTdHJpbmdcbiAgICAgKiBAZXhhbXBsZVxuICAgICAqIGBgYGpzXG4gICAgICogaW1wb3J0IHtjb2xvclV0aWxzLCBjb2xvcnN9IGZyb20gJ0BhaXJ0YWJsZS9ibG9ja3MvdWknO1xuICAgICAqXG4gICAgICogY29sb3JVdGlscy5nZXRSZ2JGb3JDb2xvcihjb2xvcnMuUFVSUExFX0RBUktfMSk7XG4gICAgICogLy8gPT4ge3I6IDEwNywgZzogMjgsIGI6IDE3Nn1cbiAgICAgKlxuICAgICAqIGNvbG9yVXRpbHMuZ2V0UmdiRm9yQ29sb3IoJ2Rpc2dydW50bGVkIHBpbmsnKTtcbiAgICAgKiAvLyA9PiBudWxsXG4gICAgICogYGBgXG4gICAgICovXG4gICAgZ2V0UmdiRm9yQ29sb3IoY29sb3JTdHJpbmc6IENvbG9yKTogUkdCO1xuICAgIC8qKiAqL1xuICAgIGdldFJnYkZvckNvbG9yKGNvbG9yU3RyaW5nOiBzdHJpbmcpOiBSR0IgfCBudWxsO1xuXG4gICAgLyoqXG4gICAgICogR2l2ZW4gYSB7QGxpbmsgQ29sb3J9LCByZXR1cm5zIHRydWUgb3IgZmFsc2UgdG8gaW5kaWNhdGUgd2hldGhlciB0aGF0IGNvbG9yIHNob3VsZCBoYXZlIGxpZ2h0IHRleHQgb24gdG9wIG9mIGl0IHdoZW4gdXNlZCBhcyBhIGJhY2tncm91bmQgY29sb3IuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gY29sb3JTdHJpbmdcbiAgICAgKiBAZXhhbXBsZVxuICAgICAqIGBgYGpzXG4gICAgICogaW1wb3J0IHtjb2xvclV0aWxzLCBjb2xvcnN9IGZyb20gJ0BhaXJ0YWJsZS9ibG9ja3MvdWknO1xuICAgICAqXG4gICAgICogY29sb3JVdGlscy5zaG91bGRVc2VMaWdodFRleHRPbkNvbG9yKGNvbG9ycy5QSU5LX0xJR0hUXzEpO1xuICAgICAqIC8vID0+IGZhbHNlXG4gICAgICpcbiAgICAgKiBjb2xvclV0aWxzLnNob3VsZFVzZUxpZ2h0VGV4dE9uQ29sb3IoY29sb3JzLlBJTktfREFSS18xKTtcbiAgICAgKiAvLyA9PiB0cnVlXG4gICAgICogYGBgXG4gICAgICovXG4gICAgc2hvdWxkVXNlTGlnaHRUZXh0T25Db2xvcihjb2xvclN0cmluZzogc3RyaW5nKTogYm9vbGVhbjtcbn1cblxuY29uc3QgY29sb3JVdGlsczogQ29sb3JVdGlscyA9IHtcbiAgICBnZXRIZXhGb3JDb2xvcjogKChjb2xvclN0cmluZzogc3RyaW5nKTogbnVsbCB8IHN0cmluZyA9PiB7XG4gICAgICAgIGNvbnN0IGNvbG9yID0gZ2V0RW51bVZhbHVlSWZFeGlzdHMoQ29sb3JzLCBjb2xvclN0cmluZyk7XG4gICAgICAgIGlmICghY29sb3IpIHtcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHJnYlR1cGxlID0gcmdiVHVwbGVzQnlDb2xvcltjb2xvcl07XG5cbiAgICAgICAgY29uc3QgaGV4TnVtYmVyID0gKHJnYlR1cGxlWzBdIDw8IDE2KSB8IChyZ2JUdXBsZVsxXSA8PCA4KSB8IHJnYlR1cGxlWzJdO1xuICAgICAgICByZXR1cm4gYCMke2hleE51bWJlci50b1N0cmluZygxNikucGFkU3RhcnQoNiwgJzAnKX1gO1xuICAgIH0pIGFzIENvbG9yVXRpbHNbJ2dldEhleEZvckNvbG9yJ10sXG5cbiAgICBnZXRSZ2JGb3JDb2xvcjogKChjb2xvclN0cmluZzogc3RyaW5nKTogUkdCIHwgbnVsbCA9PiB7XG4gICAgICAgIGNvbnN0IGNvbG9yID0gZ2V0RW51bVZhbHVlSWZFeGlzdHMoQ29sb3JzLCBjb2xvclN0cmluZyk7XG4gICAgICAgIGlmICghY29sb3IpIHtcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHJnYlR1cGxlID0gcmdiVHVwbGVzQnlDb2xvcltjb2xvcl07XG4gICAgICAgIHJldHVybiB7cjogcmdiVHVwbGVbMF0sIGc6IHJnYlR1cGxlWzFdLCBiOiByZ2JUdXBsZVsyXX07XG4gICAgfSkgYXMgQ29sb3JVdGlsc1snZ2V0UmdiRm9yQ29sb3InXSxcblxuICAgIHNob3VsZFVzZUxpZ2h0VGV4dE9uQ29sb3I6IChjb2xvclN0cmluZzogc3RyaW5nKTogYm9vbGVhbiA9PiB7XG4gICAgICAgIGlmICghaGFzKHJnYlR1cGxlc0J5Q29sb3IsIGNvbG9yU3RyaW5nKSkge1xuICAgICAgICAgICAgLy8gRG9uJ3QgaGF2ZSBhIGNvbG9yIGZvciB0aGlzLiBMZXQncyBqdXN0IHJldHVybiBmYWxzZSBhcyBhIGRlZmF1bHRcbiAgICAgICAgICAgIC8vIGluc3RlYWQgb2YgdGhyb3dpbmcuXG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBMaWdodDEgYW5kIExpZ2h0MiBjb2xvcnMgdXNlIGRhcmsgdGV4dC5cbiAgICAgICAgLy8gQnJpZ2h0LCBEYXJrMSBhbmQgbm8gc3VmZml4IGNvbG9ycyB1c2UgbGlnaHQgdGV4dC5cbiAgICAgICAgLy8gTk9URTogdXNlIHNob3VsZFVzZURhcmtUZXh0IGluc3RlYWQgb2Ygc2hvdWxkVXNlTGlnaHRUZXh0IGp1c3QgdG8gbWFrZVxuICAgICAgICAvLyBjaGVja2luZyB0aGUgc3VmZml4IGVhc2llciwgc2luY2Ugbm8gc3VmZml4IHVzZXMgbGlnaHQgdGV4dC5cbiAgICAgICAgY29uc3Qgc2hvdWxkVXNlRGFya1RleHQgPSBjb2xvclN0cmluZy5lbmRzV2l0aCgnTGlnaHQxJykgfHwgY29sb3JTdHJpbmcuZW5kc1dpdGgoJ0xpZ2h0MicpO1xuICAgICAgICByZXR1cm4gIXNob3VsZFVzZURhcmtUZXh0O1xuICAgIH0sXG59O1xuXG5leHBvcnQgZGVmYXVsdCBjb2xvclV0aWxzO1xuIl19
@@ -237,4 +237,5 @@ var rgbTuplesByColor = {
237
237
  [Colors.YELLOW_LIGHT_2]: [255, 234, 182],
238
238
  [Colors.YELLOW]: [224, 141, 0]
239
239
  };
240
- exports.rgbTuplesByColor = rgbTuplesByColor;
240
+ exports.rgbTuplesByColor = rgbTuplesByColor;
241
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb2xvcnMudHMiXSwibmFtZXMiOlsiQ29sb3JzIiwiQkxVRV9CUklHSFQiLCJCTFVFX0RBUktfMSIsIkJMVUVfTElHSFRfMSIsIkJMVUVfTElHSFRfMiIsIkJMVUUiLCJDWUFOX0JSSUdIVCIsIkNZQU5fREFSS18xIiwiQ1lBTl9MSUdIVF8xIiwiQ1lBTl9MSUdIVF8yIiwiQ1lBTiIsIkdSQVlfQlJJR0hUIiwiR1JBWV9EQVJLXzEiLCJHUkFZX0xJR0hUXzEiLCJHUkFZX0xJR0hUXzIiLCJHUkFZIiwiR1JFRU5fQlJJR0hUIiwiR1JFRU5fREFSS18xIiwiR1JFRU5fTElHSFRfMSIsIkdSRUVOX0xJR0hUXzIiLCJHUkVFTiIsIk9SQU5HRV9CUklHSFQiLCJPUkFOR0VfREFSS18xIiwiT1JBTkdFX0xJR0hUXzEiLCJPUkFOR0VfTElHSFRfMiIsIk9SQU5HRSIsIlBJTktfQlJJR0hUIiwiUElOS19EQVJLXzEiLCJQSU5LX0xJR0hUXzEiLCJQSU5LX0xJR0hUXzIiLCJQSU5LIiwiUFVSUExFX0JSSUdIVCIsIlBVUlBMRV9EQVJLXzEiLCJQVVJQTEVfTElHSFRfMSIsIlBVUlBMRV9MSUdIVF8yIiwiUFVSUExFIiwiUkVEX0JSSUdIVCIsIlJFRF9EQVJLXzEiLCJSRURfTElHSFRfMSIsIlJFRF9MSUdIVF8yIiwiUkVEIiwiVEVBTF9CUklHSFQiLCJURUFMX0RBUktfMSIsIlRFQUxfTElHSFRfMSIsIlRFQUxfTElHSFRfMiIsIlRFQUwiLCJZRUxMT1dfQlJJR0hUIiwiWUVMTE9XX0RBUktfMSIsIllFTExPV19MSUdIVF8xIiwiWUVMTE9XX0xJR0hUXzIiLCJZRUxMT1ciLCJyZ2JUdXBsZXNCeUNvbG9yIl0sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQUE7O0FBQTJDOztBQUUzQzs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFpQkEsSUFBTUEsTUFBTSxHQUFHO0FBQ1g7QUFDQUMsRUFBQUEsV0FBVyxFQUFFLFlBRkY7O0FBR1g7QUFDQUMsRUFBQUEsV0FBVyxFQUFF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LEVBQVcsR0FBWCxDQTlDTTtBQStDNUIsR0FBQ3ZDLE1BQU0sQ0FBQ3dDLEdBQVIsR0FBYyxDQUFDLEdBQUQsRUFBTSxFQUFOLEVBQVUsRUFBVixDQS9DYztBQWlENUIsR0FBQ3hDLE1BQU0sQ0FBQ3lDLFdBQVIsR0FBc0IsQ0FBQyxFQUFELEVBQUssR0FBTCxFQUFVLEdBQVYsQ0FqRE07QUFrRDVCLEdBQUN6QyxNQUFNLENBQUMwQyxXQUFSLEdBQXNCLENBQUMsQ0FBRCxFQUFJLEdBQUosRUFBUyxHQUFULENBbERNO0FBbUQ1QixHQUFDMUMsTUFBTSxDQUFDMkMsWUFBUixHQUF1QixDQUFDLEdBQUQsRUFBTSxHQUFOLEVBQVcsR0FBWCxDQW5ESztBQW9ENUIsR0FBQzNDLE1BQU0sQ0FBQzRDLFlBQVIsR0FBdUIsQ0FBQyxHQUFELEVBQU0sR0FBTixFQUFXLEdBQVgsQ0FwREs7QUFxRDVCLEdBQUM1QyxNQUFNLENBQUM2QyxJQUFSLEdBQWUsQ0FBQyxDQUFELEVBQUksR0FBSixFQUFTLEdBQVQsQ0FyRGE7QUF1RDVCLEdBQUM3QyxNQUFNLENBQUM4QyxhQUFSLEdBQXdCLENBQUMsR0FBRCxFQUFNLEdBQU4sRUFBVyxDQUFYLENBdkRJO0FBd0Q1QixHQUFDOUMsTUFBTSxDQUFDK0MsYUFBUixHQUF3QixDQUFDLEdBQUQsRUFBTSxHQUFOLEVBQVcsQ0FBWCxDQXhESTtBQXlENUIsR0FBQy9DLE1BQU0sQ0FBQ2dELGNBQVIsR0FBeUIsQ0FBQyxHQUFELEVBQU0sR0FBTixFQUFXLEdBQVgsQ0F6REc7QUEwRDVCLEdBQUNoRCxNQUFNLENBQUNpRCxjQUFSLEdBQXlCLENBQUMsR0FBRCxFQUFNLEdBQU4sRUFBVyxHQUFYLENBMURHO0FBMkQ1QixHQUFDakQsTUFBTSxDQUFDa0QsTUFBUixHQUFpQixDQUFDLEdBQUQsRUFBTSxHQUFOLEVBQVcsQ0FBWDtBQTNEVyxDQUF6QiIsInNvdXJjZXNDb250ZW50IjpbIi8qKiBAbW9kdWxlIEBhaXJ0YWJsZS9ibG9ja3MvdWk6IGNvbG9ycyAqLyAvKiogKi9cbmltcG9ydCB7T2JqZWN0VmFsdWVzfSBmcm9tICcuL3ByaXZhdGVfdXRpbHMnO1xuLyoqXG4gKiBBaXJ0YWJsZSBjb2xvciBuYW1lcy5cbiAqXG4gKiBUbyBnZXQgdGhlIGNvcnJlc3BvbmRpbmcgUkdCIG9yIEhFWCB2YWx1ZXMsIHVzZVxuICoge0BsaW5rIGdldFJnYkZvckNvbG9yfSBvciB7QGxpbmsgZ2V0SGV4Rm9yQ29sb3J9LlxuICpcbiAqIFlvdSBjYW4gYWxzbyBwYXNzIHRoZXNlIHZhbHVlcyBpbnRvIHRoZSBjb2xvciBwcm9wcyBmb3IgY29tcG9uZW50czpcbiAqXG4gKiBAZXhhbXBsZVxuICogYGBganNcbiAqIGltcG9ydCB7Qm94LCBjb2xvcnN9IGZyb20gJ0BhaXJ0YWJsZS9ibG9ja3MvdWknO1xuICpcbiAqIDxCb3ggYmFja2dyb3VuZENvbG9yPXtjb2xvcnMuQkxVRX0gLz5cbiAqIGBgYFxuICpcbiAqIEBkb2NzUGF0aCBVSS91dGlscy9jb2xvcnNcbiAqL1xuY29uc3QgQ29sb3JzID0ge1xuICAgIC8qKiBAZG9jc1BhdGggVUkvdXRpbHMvQ29sb3JzICovXG4gICAgQkxVRV9CUklHSFQ6ICdibHVlQnJpZ2h0JyBhcyBjb25zdCxcbiAgICAvKiogQGRvY3NQYXRoIFVJL3V0aWxzL0NvbG9ycyAqL1xuICAgIEJMVUVfREFSS18xOiAnYmx1ZURhcmsxJyBhcyBjb25zdCxcbiAgICAvKiogQGRvY3NQYXRoIFVJL3V0aWxzL0NvbG9ycyAqL1xuICAgIEJMVUVfTElHSFRfMTogJ2JsdWVMaWdodDEnIGFzIGNvbnN0LFxuICAgIC8qKiBAZG9jc1BhdGggVUkvdXRpbHMvQ29sb3JzICovXG4gICAgQkxVRV9MSUdIVF8yOiAnYmx1ZUxpZ2h0MicgYXMgY29uc3QsXG4gICAgLyoqIEBkb2NzUGF0aCBVSS91dGlscy9Db2xvcnMgKi9cbiAgICBCTFVFOiAnYmx1ZScgYXMgY29uc3QsXG5cbiAgICAvKiogQGRvY3NQYXRoIFVJL3V0aWxzL0NvbG9ycyAqL1xuICAgIENZQU5fQlJJR0hUOiAnY3lhbkJyaWdodCcgYXMgY29uc3QsXG4gICAgLyoqIEBkb2NzUGF0aCBVSS91dGlscy9Db2xvcnMgKi9cbiAgICBDWUFOX0RBUktfMTogJ2N5YW5EYXJrMScgYXMgY29uc3QsXG4gICAgLyoqIEBkb2NzUGF0aCBVSS91dGlscy9Db2xvcnMgKi9cbiAgICBDWUFOX0xJR0hUXzE6ICdjeWFuTGlnaHQxJyBhcyBjb25zdCxcbiAgICAvKiogQGRvY3NQYXRoIFVJL3V0aWxzL0NvbG9ycyAqL1xuICAgIENZQU5fTElHSFRfMjogJ2N5YW5MaWdodDInIGFzIGNvbnN0LFxuICAgIC8qKiBAZG9jc1BhdGggVUkvdXRpbHMvQ29sb3JzICovXG4gICAgQ1lBTjogJ2N5YW4nIGFzIGNvbnN0LFxuXG4gICAgLyoqIEBkb2NzUGF0aCBVSS91dGlscy9Db2xvcnMgKi9cbiAgICBHUkFZX0JSSUdIVDogJ2dyYXlCcmlnaHQnIGFzIGNvbnN0LFxuICAgIC8qKiBAZG9jc1BhdGggVUkvdXRpbHMvQ29sb3JzICovXG4gICAgR1JBWV9EQVJLXzE6ICdncmF5RGFyazEnIGFzIGNvbnN0LFxuICAgIC8qKiBAZG9jc1BhdGggVUkvdXRpbHMvQ29sb3JzICovXG4gICAgR1JBWV9MSUdIVF8xOiAnZ3JheUxpZ2h0MScgYXMgY29uc3QsXG4gICAgLyoqIEBkb2NzUGF0aCBVSS91dGlscy9Db2xvcnMgKi9cbiAgICBHUkFZX0xJR0hUXzI6ICdncmF5TGlnaHQyJyBhcyBjb25zdCxcbiAgICAvKiogQGRvY3NQYXRoIFVJL3V0aWxzL0NvbG9ycyAqL1xuICAgIEdSQVk6ICdncmF5JyBhcyBjb25zdCxcblxuICAgIC8qKiBAZG9jc1BhdGggVUkvdXRpbHMvQ29sb3JzICovXG4gICAgR1JFRU5fQlJJR0hUOiAnZ3JlZW5CcmlnaHQnIGFzIGNvbnN0LFxuICAgIC8qKiBAZG9jc1BhdGggVUkvdXRpbHMvQ29sb3JzICovXG4gICAgR1JFRU5fREFSS18xOiAnZ3JlZW5EYXJrMScgYXMgY29uc3QsXG4gICAgLyoqIEBkb2NzUGF0aCBVSS91dGlscy9Db2xvcnMgKi9cbiAgICBHUkVFTl9MSUdIVF8xOiAnZ3JlZW5MaWdodDEnIGFzIGNvbnN0LFxuICAgIC8qKiBAZG9jc1BhdGggVUkvdXRpbHMvQ29sb3JzICovXG4gICAgR1JFRU5fTElHSFRfMjogJ2dyZWVuTGlnaHQyJyBhcyBjb25zdCxcbiAgICAvKiogQGRvY3NQYXRoIFVJL3V0aWxzL0NvbG9ycyAqL1xuICAgIEdSRUVOOiAnZ3JlZW4nIGFzIGNvbnN0LFxuXG4gICAgLyoqIEBkb2NzUGF0aCBVSS91dGlscy9Db2xvcnMgKi9cbiAgICBPUkFOR0VfQlJJR0hUOiAnb3JhbmdlQnJpZ2h0JyBhcyBjb25zdCxcbiAgICAvKiogQGRvY3NQYXRoIFVJL3V0aWxzL0NvbG9ycyAqL1xuICAgIE9SQU5HRV9EQVJLXzE6ICdvcmFuZ2VEYXJrMScgYXMgY29uc3QsXG4gICAgLyoqIEBkb2NzUGF0aCBVSS91dGlscy9Db2xvcnMgKi9cbiAgICBPUkFOR0VfTElHSFRfMTogJ29yYW5nZUxpZ2h0MScgYXMgY29uc3QsXG4gICAgLyoqIEBkb2NzUGF0aCBVSS91dGlscy9Db2xvcnMgKi9cbiAgICBPUkFOR0VfTElHSFRfMjogJ29yYW5nZUxpZ2h0MicgYXMgY29uc3QsXG4gICAgLyoqIEBkb2NzUGF0aCBVSS91dGlscy9Db2xvcnMgKi9cbiAgICBPUkFOR0U6ICdvcmFuZ2UnIGFzIGNvbnN0LFxuXG4gICAgLyoqIEBkb2NzUGF0aCBVSS91dGlscy9Db2xvcnMgKi9cbiAgICBQSU5LX0JSSUdIVDogJ3BpbmtCcmlnaHQnIGFzIGNvbnN0LFxuICAgIC8qKiBAZG9jc1BhdGggVUkvdXRpbHMvQ29sb3JzICovXG4gICAgUElOS19EQVJLXzE6ICdwaW5rRGFyazEnIGFzIGNvbnN0LFxuICAgIC8qKiBAZG9jc1BhdGggVUkvdXRpbHMvQ29sb3JzICovXG4gICAgUElOS19MSUdIVF8xOiAncGlua0xpZ2h0MScgYXMgY29uc3QsXG4gICAgLyoqIEBkb2NzUGF0aCBVSS91dGlscy9Db2xvcnMgKi9cbiAgICBQSU5LX0xJR0hUXzI6ICdwaW5rTGlnaHQyJyBhcyBjb25zdCxcbiAgICAvKiogQGRvY3NQYXRoIFVJL3V0aWxzL0NvbG9ycyAqL1xuICAgIFBJTks6ICdwaW5rJyBhcyBjb25zdCxcblxuICAgIC8qKiBAZG9jc1BhdGggVUkvdXRpbHMvQ29sb3JzICovXG4gICAgUFVSUExFX0JSSUdIVDogJ3B1cnBsZUJyaWdodCcgYXMgY29uc3QsXG4gICAgLyoqIEBkb2NzUGF0aCBVSS91dGlscy9Db2xvcnMgKi9cbiAgICBQVVJQTEVfREFSS18xOiAncHVycGxlRGFyazEnIGFzIGNvbnN0LFxuICAgIC8qKiBAZG9jc1BhdGggVUkvdXRpbHMvQ29sb3JzICovXG4gICAgUFVSUExFX0xJR0hUXzE6ICdwdXJwbGVMaWdodDEnIGFzIGNvbnN0LFxuICAgIC8qKiBAZG9jc1BhdGggVUkvdXRpbHMvQ29sb3JzICovXG4gICAgUFVSUExFX0xJR0hUXzI6ICdwdXJwbGVMaWdodDInIGFzIGNvbnN0LFxuICAgIC8qKiBAZG9jc1BhdGggVUkvdXRpbHMvQ29sb3JzICovXG4gICAgUFVSUExFOiAncHVycGxlJyBhcyBjb25zdCxcblxuICAgIC8qKiBAZG9jc1BhdGggVUkvdXRpbHMvQ29sb3JzICovXG4gICAgUkVEX0JSSUdIVDogJ3JlZEJyaWdodCcgYXMgY29uc3QsXG4gICAgLyoqIEBkb2NzUGF0aCBVSS91dGlscy9Db2xvcnMgKi9cbiAgICBSRURfREFSS18xOiAncmVkRGFyazEnIGFzIGNvbnN0LFxuICAgIC8qKiBAZG9jc1BhdGggVUkvdXRpbHMvQ29sb3JzICovXG4gICAgUkVEX0xJR0hUXzE6ICdyZWRMaWdodDEnIGFzIGNvbnN0LFxuICAgIC8qKiBAZG9jc1BhdGggVUkvdXRpbHMvQ29sb3JzICovXG4gICAgUkVEX0xJR0hUXzI6ICdyZWRMaWdodDInIGFzIGNvbnN0LFxuICAgIC8qKiBAZG9jc1BhdGggVUkvdXRpbHMvQ29sb3JzICovXG4gICAgUkVEOiAncmVkJyBhcyBjb25zdCxcblxuICAgIC8qKiBAZG9jc1BhdGggVUkvdXRpbHMvQ29sb3JzICovXG4gICAgVEVBTF9CUklHSFQ6ICd0ZWFsQnJpZ2h0JyBhcyBjb25zdCxcbiAgICAvKiogQGRvY3NQYXRoIFVJL3V0aWxzL0NvbG9ycyAqL1xuICAgIFRFQUxfREFSS18xOiAndGVhbERhcmsxJyBhcyBjb25zdCxcbiAgICAvKiogQGRvY3NQYXRoIFVJL3V0aWxzL0NvbG9ycyAqL1xuICAgIFRFQUxfTElHSFRfMTogJ3RlYWxMaWdodDEnIGFzIGNvbnN0LFxuICAgIC8qKiBAZG9jc1BhdGggVUkvdXRpbHMvQ29sb3JzICovXG4gICAgVEVBTF9MSUdIVF8yOiAndGVhbExpZ2h0MicgYXMgY29uc3QsXG4gICAgLyoqIEBkb2NzUGF0aCBVSS91dGlscy9Db2xvcnMgKi9cbiAgICBURUFMOiAndGVhbCcgYXMgY29uc3QsXG5cbiAgICAvKiogQGRvY3NQYXRoIFVJL3V0aWxzL0NvbG9ycyAqL1xuICAgIFlFTExPV19CUklHSFQ6ICd5ZWxsb3dCcmlnaHQnIGFzIGNvbnN0LFxuICAgIC8qKiBAZG9jc1BhdGggVUkvdXRpbHMvQ29sb3JzICovXG4gICAgWUVMTE9XX0RBUktfMTogJ3llbGxvd0RhcmsxJyBhcyBjb25zdCxcbiAgICAvKiogQGRvY3NQYXRoIFVJL3V0aWxzL0NvbG9ycyAqL1xuICAgIFlFTExPV19MSUdIVF8xOiAneWVsbG93TGlnaHQxJyBhcyBjb25zdCxcbiAgICAvKiogQGRvY3NQYXRoIFVJL3V0aWxzL0NvbG9ycyAqL1xuICAgIFlFTExPV19MSUdIVF8yOiAneWVsbG93TGlnaHQyJyBhcyBjb25zdCxcbiAgICAvKiogQGRvY3NQYXRoIFVJL3V0aWxzL0NvbG9ycyAqL1xuICAgIFlFTExPVzogJ3llbGxvdycgYXMgY29uc3QsXG59O1xuXG5leHBvcnQgZGVmYXVsdCBDb2xvcnM7XG5cbi8qKlxuICogQSBjb2xvciBuYW1lIGZyb20gdGhlIGxpc3Qgb2Yge0BsaW5rIENvbG9yc30uXG4gKi9cbmV4cG9ydCB0eXBlIENvbG9yID0gT2JqZWN0VmFsdWVzPHR5cGVvZiBDb2xvcnM+O1xuXG4vKiogQGhpZGRlbiAqL1xuZXhwb3J0IGNvbnN0IHJnYlR1cGxlc0J5Q29sb3IgPSB7XG4gICAgW0NvbG9ycy5CTFVFX0JSSUdIVF06IFs0NSwgMTI3LCAyNDldLFxuICAgIFtDb2xvcnMuQkxVRV9EQVJLXzFdOiBbMzksIDgwLCAxNzRdLFxuICAgIFtDb2xvcnMuQkxVRV9MSUdIVF8xXTogWzE1NiwgMTk5LCAyNTVdLFxuICAgIFtDb2xvcnMuQkxVRV9MSUdIVF8yXTogWzIwNywgMjIzLCAyNTVdLFxuICAgIFtDb2xvcnMuQkxVRV06IFsxOCwgMTMxLCAyMThdLFxuXG4gICAgW0NvbG9ycy5DWUFOX0JSSUdIVF06IFsyNCwgMTkxLCAyNTVdLFxuICAgIFtDb2xvcnMuQ1lBTl9EQVJLXzFdOiBbMTEsIDExOCwgMTgzXSxcbiAgICBbQ29sb3JzLkNZQU5fTElHSFRfMV06IFsxMTksIDIwOSwgMjQzXSxcbiAgICBbQ29sb3JzLkNZQU5fTElHSFRfMl06IFsyMDgsIDI0MCwgMjUzXSxcbiAgICBbQ29sb3JzLkNZQU5dOiBbMSwgMTY5LCAyMTldLFxuXG4gICAgW0NvbG9ycy5HUkFZX0JSSUdIVF06IFsxMDIsIDEwMiwgMTAyXSxcbiAgICBbQ29sb3JzLkdSQVlfREFSS18xXTogWzY4LCA2OCwgNjhdLFxuICAgIFtDb2xvcnMuR1JBWV9MSUdIVF8xXTogWzIwNCwgMjA0LCAyMDRdLFxuICAgIFtDb2xvcnMuR1JBWV9MSUdIVF8yXTogWzIzOCwgMjM4LCAyMzhdLFxuICAgIFtDb2xvcnMuR1JBWV06IFsxMDIsIDEwMiwgMTAyXSxcblxuICAgIFtDb2xvcnMuR1JFRU5fQlJJR0hUXTogWzMyLCAyMDEsIDUxXSxcbiAgICBbQ29sb3JzLkdSRUVOX0RBUktfMV06IFs1MSwgMTM4LCAyM10sXG4gICAgW0NvbG9ycy5HUkVFTl9MSUdIVF8xXTogWzE0NywgMjI0LCAxMzZdLFxuICAgIFtDb2xvcnMuR1JFRU5fTElHSFRfMl06IFsyMDksIDI0NywgMTk2XSxcbiAgICBbQ29sb3JzLkdSRUVOXTogWzE3LCAxNzUsIDM0XSxcblxuICAgIFtDb2xvcnMuT1JBTkdFX0JSSUdIVF06IFsyNTUsIDExMSwgNDRdLFxuICAgIFtDb2xvcnMuT1JBTkdFX0RBUktfMV06IFsyMTUsIDc3LCAzOF0sXG4gICAgW0NvbG9ycy5PUkFOR0VfTElHSFRfMV06IFsyNTUsIDE2OSwgMTI5XSxcbiAgICBbQ29sb3JzLk9SQU5HRV9MSUdIVF8yXTogWzI1NCwgMjI2LCAyMTNdLFxuICAgIFtDb2xvcnMuT1JBTkdFXTogWzI0NywgMTAxLCA1OV0sXG5cbiAgICBbQ29sb3JzLlBJTktfQlJJR0hUXTogWzI1NSwgOCwgMTk0XSxcbiAgICBbQ29sb3JzLlBJTktfREFSS18xXTogWzE3OCwgMjEsIDEzOV0sXG4gICAgW0NvbG9ycy5QSU5LX0xJR0hUXzFdOiBbMjQ5LCAxNTcsIDIyNl0sXG4gICAgW0NvbG9ycy5QSU5LX0xJR0hUXzJdOiBbMjU1LCAyMTgsIDI0Nl0sXG4gICAgW0NvbG9ycy5QSU5LXTogWzIzMywgNDEsIDE4Nl0sXG5cbiAgICBbQ29sb3JzLlBVUlBMRV9CUklHSFRdOiBbMTM5LCA3MCwgMjU1XSxcbiAgICBbQ29sb3JzLlBVUlBMRV9EQVJLXzFdOiBbMTA3LCAyOCwgMTc2XSxcbiAgICBbQ29sb3JzLlBVUlBMRV9MSUdIVF8xXTogWzIwNSwgMTc2LCAyNTVdLFxuICAgIFtDb2xvcnMuUFVSUExFX0xJR0hUXzJdOiBbMjM3LCAyMjYsIDI1NF0sXG4gICAgW0NvbG9ycy5QVVJQTEVdOiBbMTI0LCA1NywgMjM3XSxcblxuICAgIFtDb2xvcnMuUkVEX0JSSUdIVF06IFsyNDgsIDQzLCA5Nl0sXG4gICAgW0NvbG9ycy5SRURfREFSS18xXTogWzE4NiwgMzAsIDY5XSxcbiAgICBbQ29sb3JzLlJFRF9MSUdIVF8xXTogWzI1NSwgMTU4LCAxODNdLFxuICAgIFtDb2xvcnMuUkVEX0xJR0hUXzJdOiBbMjU1LCAyMjAsIDIyOV0sXG4gICAgW0NvbG9ycy5SRURdOiBbMjM5LCA0OCwgOTddLFxuXG4gICAgW0NvbG9ycy5URUFMX0JSSUdIVF06IFszMiwgMjE3LCAyMTBdLFxuICAgIFtDb2xvcnMuVEVBTF9EQVJLXzFdOiBbNiwgMTYwLCAxNTVdLFxuICAgIFtDb2xvcnMuVEVBTF9MSUdIVF8xXTogWzExNCwgMjIxLCAxOTVdLFxuICAgIFtDb2xvcnMuVEVBTF9MSUdIVF8yXTogWzE5NCwgMjQ1LCAyMzNdLFxuICAgIFtDb2xvcnMuVEVBTF06IFsyLCAxNzAsIDE2NF0sXG5cbiAgICBbQ29sb3JzLllFTExPV19CUklHSFRdOiBbMjUyLCAxODAsIDBdLFxuICAgIFtDb2xvcnMuWUVMTE9XX0RBUktfMV06IFsxODQsIDExNywgM10sXG4gICAgW0NvbG9ycy5ZRUxMT1dfTElHSFRfMV06IFsyNTUsIDIxNCwgMTEwXSxcbiAgICBbQ29sb3JzLllFTExPV19MSUdIVF8yXTogWzI1NSwgMjM0LCAxODJdLFxuICAgIFtDb2xvcnMuWUVMTE9XXTogWzIyNCwgMTQxLCAwXSxcbn07XG4iXX0=
@@ -8,6 +8,7 @@ Object.defineProperty(exports, "__esModule", {
8
8
  exports.spawnError = spawnError;
9
9
  exports.invariant = invariant;
10
10
  exports.spawnUnknownSwitchCaseError = spawnUnknownSwitchCaseError;
11
+ exports.spawnExhaustiveSwitchError = spawnExhaustiveSwitchError;
11
12
  exports.spawnAbstractMethodError = spawnAbstractMethodError;
12
13
 
13
14
  // If errorOriginFn is specified, all frames above and including the call to errorOriginFn
@@ -79,6 +80,22 @@ function spawnUnknownSwitchCaseError(valueDescription, providedValue, key) {
79
80
  var providedValueKeyString = providedValueKey !== null && providedValueKey !== undefined ? providedValueKey : 'null';
80
81
  return spawnErrorWithOriginOmittedFromStackTrace('Unknown value %s for %s', [providedValueKeyString, valueDescription], spawnUnknownSwitchCaseError);
81
82
  }
83
+ /**
84
+ * Forces TypeScript to prove that calling this function is impossible at a
85
+ * type level by accepting `never`. In the unlikely case this function is
86
+ * called we infer a useful error message.
87
+ *
88
+ * @internal
89
+ */
90
+
91
+
92
+ function spawnExhaustiveSwitchError(impossibleValue) {
93
+ if (impossibleValue === null) {
94
+ return spawnErrorWithOriginOmittedFromStackTrace('Unexpected null in exhaustive switch', undefined, spawnExhaustiveSwitchError);
95
+ } else {
96
+ return spawnErrorWithOriginOmittedFromStackTrace("Unexpected %s in exhaustive switch", [typeof impossibleValue], spawnExhaustiveSwitchError);
97
+ }
98
+ }
82
99
  /**
83
100
  * @internal
84
101
  */
@@ -86,4 +103,5 @@ function spawnUnknownSwitchCaseError(valueDescription, providedValue, key) {
86
103
 
87
104
  function spawnAbstractMethodError() {
88
105
  return spawnErrorWithOriginOmittedFromStackTrace('Abstract method', undefined, spawnAbstractMethodError);
89
- }
106
+ }
107
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9lcnJvcl91dGlscy50cyJdLCJuYW1lcyI6WyJzcGF3bkVycm9yV2l0aE9yaWdpbk9taXR0ZWRGcm9tU3RhY2tUcmFjZSIsImVycm9yTWVzc2FnZUZvcm1hdCIsImVycm9yTWVzc2FnZUFyZ3MiLCJlcnJvck9yaWdpbkZuIiwic2FmZU1lc3NhZ2UiLCJhcmdJbmRleCIsImZvcm1hdHRlZE1lc3NhZ2UiLCJyZXBsYWNlIiwiYXJnIiwidW5kZWZpbmVkIiwiU3RyaW5nIiwiZXJyIiwiRXJyb3IiLCJjYXB0dXJlU3RhY2tUcmFjZSIsIk9iamVjdCIsImRlZmluZVByb3BlcnR5IiwiY29uZmlndXJhYmxlIiwiZW51bWVyYWJsZSIsInZhbHVlIiwid3JpdGFibGUiLCJzcGF3bkVycm9yIiwiaW52YXJpYW50IiwiY29uZGl0aW9uIiwic3Bhd25Vbmtub3duU3dpdGNoQ2FzZUVycm9yIiwidmFsdWVEZXNjcmlwdGlvbiIsInByb3ZpZGVkVmFsdWUiLCJrZXkiLCJwcm92aWRlZFZhbHVlS2V5IiwicHJvdmlkZWRWYWx1ZUtleVN0cmluZyIsInNwYXduRXhoYXVzdGl2ZVN3aXRjaEVycm9yIiwiaW1wb3NzaWJsZVZhbHVlIiwic3Bhd25BYnN0cmFjdE1ldGhvZEVycm9yIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7O0FBQUE7QUFDQTs7QUFDQTs7O0FBR0EsU0FBU0EseUNBQVQsQ0FDSUMsa0JBREosRUFFSUMsZ0JBRkosRUFHSUMsYUFISixFQUlTO0FBQ0wsTUFBTUMsV0FBVyxHQUFHSCxrQkFBcEI7QUFDQSxNQUFJSSxRQUFRLEdBQUcsQ0FBZjtBQUNBLE1BQU1DLGdCQUFnQixHQUFHTCxrQkFBa0IsQ0FBQ00sT0FBbkIsQ0FBMkIsS0FBM0IsRUFBa0MsTUFBTTtBQUM3RCxRQUFNQyxHQUFHLEdBQUdOLGdCQUFnQixHQUFHQSxnQkFBZ0IsQ0FBQ0csUUFBRCxDQUFuQixHQUFnQ0ksU0FBNUQ7QUFDQUosSUFBQUEsUUFBUTtBQUNSLFdBQU9LLE1BQU0sQ0FBQ0YsR0FBRCxDQUFiO0FBQ0gsR0FKd0IsQ0FBekI7QUFNQSxNQUFNRyxHQUFHLEdBQUcsSUFBSUMsS0FBSixDQUFVTixnQkFBVixDQUFaLENBVEssQ0FXTDtBQUNBO0FBQ0E7QUFDQTs7QUFDQSxNQUFJTSxLQUFLLENBQUNDLGlCQUFOLElBQTJCVixhQUEvQixFQUE4QztBQUMxQ1MsSUFBQUEsS0FBSyxDQUFDQyxpQkFBTixDQUF3QkYsR0FBeEIsRUFBNkJSLGFBQTdCO0FBQ0g7O0FBRURXLEVBQUFBLE1BQU0sQ0FBQ0MsY0FBUCxDQUFzQkosR0FBdEIsRUFBa0MsZUFBbEMsRUFBbUQ7QUFDL0NLLElBQUFBLFlBQVksRUFBRSxLQURpQztBQUUvQ0MsSUFBQUEsVUFBVSxFQUFFLEtBRm1DO0FBRy9DQyxJQUFBQSxLQUFLLEVBQUVkLFdBSHdDO0FBSS9DZSxJQUFBQSxRQUFRLEVBQUU7QUFKcUMsR0FBbkQ7QUFPQSxTQUFPUixHQUFQO0FBQ0g7QUFFRDs7Ozs7QUFHTyxTQUFTUyxVQUFULENBQ0huQixrQkFERyxFQUdMO0FBQUEsb0NBREtDLGdCQUNMO0FBREtBLElBQUFBLGdCQUNMO0FBQUE7O0FBQ0UsU0FBT0YseUNBQXlDLENBQzVDQyxrQkFENEMsRUFFNUNDLGdCQUY0QyxFQUc1Q2tCLFVBSDRDLENBQWhEO0FBS0g7QUFFRDs7Ozs7OztBQUtPLFNBQVNDLFNBQVQsQ0FDSEMsU0FERyxFQUVIckIsa0JBRkcsRUFJYztBQUNqQixNQUFJLENBQUNxQixTQUFMLEVBQWdCO0FBQUEsdUNBRmJwQixnQkFFYTtBQUZiQSxNQUFBQSxnQkFFYTtBQUFBOztBQUNaLFVBQU1GLHlDQUF5QyxDQUMzQ0Msa0JBRDJDLEVBRTNDQyxnQkFGMkMsRUFHM0NtQixTQUgyQyxDQUEvQztBQUtIO0FBQ0o7QUFFRDs7Ozs7QUFHTyxTQUFTRSwyQkFBVCxDQUNIQyxnQkFERyxFQUVIQyxhQUZHLEVBR0hDLEdBSEcsRUFJRTtBQUNMLE1BQU1DLGdCQUFnQixHQUFHRixhQUFhLENBQUNDLEdBQUQsQ0FBdEM7QUFDQSxNQUFNRSxzQkFBc0IsR0FDeEJELGdCQUFnQixLQUFLLElBQXJCLElBQTZCQSxnQkFBZ0IsS0FBS2xCLFNBQWxELEdBQThEa0IsZ0JBQTlELEdBQWlGLE1BRHJGO0FBRUEsU0FBTzNCLHlDQUF5QyxDQUM1Qyx5QkFENEMsRUFFNUMsQ0FBQzRCLHNCQUFELEVBQXlCSixnQkFBekIsQ0FGNEMsRUFHNUNELDJCQUg0QyxDQUFoRDtBQUtIO0FBRUQ7Ozs7Ozs7OztBQU9PLFNBQVNNLDBCQUFULENBQW9DQyxlQUFwQyxFQUFtRTtBQUN0RSxNQUFJQSxlQUFlLEtBQUssSUFBeEIsRUFBOEI7QUFDMUIsV0FBTzlCLHlDQUF5QyxDQUM1QyxzQ0FENEMsRUFFNUNTLFNBRjRDLEVBRzVDb0IsMEJBSDRDLENBQWhEO0FBS0gsR0FORCxNQU1PO0FBQ0gsV0FBTzdCLHlDQUF5Qyx1Q0FFNUMsQ0FBQyxPQUFPOEIsZUFBUixDQUY0QyxFQUc1Q0QsMEJBSDRDLENBQWhEO0FBS0g7QUFDSjtBQUVEOzs7OztBQUdPLFNBQVNFLHdCQUFULEdBQTJDO0FBQzlDLFNBQU8vQix5Q0FBeUMsQ0FDNUMsaUJBRDRDLEVBRTVDUyxTQUY0QyxFQUc1Q3NCLHdCQUg0QyxDQUFoRDtBQUtIIiwic291cmNlc0NvbnRlbnQiOlsiLy8gSWYgZXJyb3JPcmlnaW5GbiBpcyBzcGVjaWZpZWQsIGFsbCBmcmFtZXMgYWJvdmUgYW5kIGluY2x1ZGluZyB0aGUgY2FsbCB0byBlcnJvck9yaWdpbkZuXG4vLyB3aWxsIGJlIG9taXR0ZWQgZnJvbSB0aGUgc3RhY2sgdHJhY2UuXG4vKipcbiAqIEBpbnRlcm5hbFxuICovXG5mdW5jdGlvbiBzcGF3bkVycm9yV2l0aE9yaWdpbk9taXR0ZWRGcm9tU3RhY2tUcmFjZShcbiAgICBlcnJvck1lc3NhZ2VGb3JtYXQ6IHN0cmluZyxcbiAgICBlcnJvck1lc3NhZ2VBcmdzOiBSZWFkb25seUFycmF5PHVua25vd24+IHwgbnVsbCB8IHVuZGVmaW5lZCxcbiAgICBlcnJvck9yaWdpbkZuOiAoLi4uYXJnczogQXJyYXk8YW55PikgPT4gdW5rbm93bixcbik6IEVycm9yIHtcbiAgICBjb25zdCBzYWZlTWVzc2FnZSA9IGVycm9yTWVzc2FnZUZvcm1hdDtcbiAgICBsZXQgYXJnSW5kZXggPSAwO1xuICAgIGNvbnN0IGZvcm1hdHRlZE1lc3NhZ2UgPSBlcnJvck1lc3NhZ2VGb3JtYXQucmVwbGFjZSgvJXMvZywgKCkgPT4ge1xuICAgICAgICBjb25zdCBhcmcgPSBlcnJvck1lc3NhZ2VBcmdzID8gZXJyb3JNZXNzYWdlQXJnc1thcmdJbmRleF0gOiB1bmRlZmluZWQ7XG4gICAgICAgIGFyZ0luZGV4Kys7XG4gICAgICAgIHJldHVybiBTdHJpbmcoYXJnKTtcbiAgICB9KTtcblxuICAgIGNvbnN0IGVyciA9IG5ldyBFcnJvcihmb3JtYXR0ZWRNZXNzYWdlKTtcblxuICAgIC8vIGNhcHR1cmVTdGFja1RyYWNlIGlzIG9ubHkgYXZhaWxhYmxlIG9uIHY4LiBJdCBjYXB0dXJlcyB0aGUgY3VycmVudCBzdGFjayB0cmFjZVxuICAgIC8vIGFuZCBzZXRzIHRoZSAuc3RhY2sgcHJvcGVydHkgb2YgdGhlIGZpcnN0IGFyZ3VtZW50LiBJdCB3aWxsIG9taXQgYWxsIGZyYW1lcyBhYm92ZVxuICAgIC8vIGFuZCBpbmNsdWRpbmcgXCJlcnJvck9yaWdpbkZuXCIsIHdoaWNoIGlzIHVzZWZ1bCBmb3IgaGlkaW5nIGltcGxlbWVudGF0aW9uIGRldGFpbHMgb2Ygb3VyXG4gICAgLy8gZXJyb3IgdGhyb3dpbmcgaGVscGVycyAoZS5nLiBhc3NlcnQgYW5kIHNwYXduIHZhcmlhbnRzKS5cbiAgICBpZiAoRXJyb3IuY2FwdHVyZVN0YWNrVHJhY2UgJiYgZXJyb3JPcmlnaW5Gbikge1xuICAgICAgICBFcnJvci5jYXB0dXJlU3RhY2tUcmFjZShlcnIsIGVycm9yT3JpZ2luRm4pO1xuICAgIH1cblxuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlcnIgYXMgYW55LCAnX19zYWZlTWVzc2FnZScsIHtcbiAgICAgICAgY29uZmlndXJhYmxlOiBmYWxzZSxcbiAgICAgICAgZW51bWVyYWJsZTogZmFsc2UsXG4gICAgICAgIHZhbHVlOiBzYWZlTWVzc2FnZSxcbiAgICAgICAgd3JpdGFibGU6IGZhbHNlLFxuICAgIH0pO1xuXG4gICAgcmV0dXJuIGVycjtcbn1cblxuLyoqXG4gKiBAaGlkZGVuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzcGF3bkVycm9yKFxuICAgIGVycm9yTWVzc2FnZUZvcm1hdDogc3RyaW5nLFxuICAgIC4uLmVycm9yTWVzc2FnZUFyZ3M6IFJlYWRvbmx5QXJyYXk8dW5rbm93bj5cbikge1xuICAgIHJldHVybiBzcGF3bkVycm9yV2l0aE9yaWdpbk9taXR0ZWRGcm9tU3RhY2tUcmFjZShcbiAgICAgICAgZXJyb3JNZXNzYWdlRm9ybWF0LFxuICAgICAgICBlcnJvck1lc3NhZ2VBcmdzLFxuICAgICAgICBzcGF3bkVycm9yLFxuICAgICk7XG59XG5cbi8qKlxuICogQW4gYWx0ZXJuYXRpdmUgdG8gZmFjZWJvb2sncyBpbnZhcmlhbnQgdGhhdCdzIHNhZmUgdG8gdXNlIHdpdGggYmFzZSBkYXRhXG4gKlxuICogQGhpZGRlblxuICovXG5leHBvcnQgZnVuY3Rpb24gaW52YXJpYW50KFxuICAgIGNvbmRpdGlvbjogdW5rbm93bixcbiAgICBlcnJvck1lc3NhZ2VGb3JtYXQ6IHN0cmluZyxcbiAgICAuLi5lcnJvck1lc3NhZ2VBcmdzOiBBcnJheTx1bmtub3duPlxuKTogYXNzZXJ0cyBjb25kaXRpb24ge1xuICAgIGlmICghY29uZGl0aW9uKSB7XG4gICAgICAgIHRocm93IHNwYXduRXJyb3JXaXRoT3JpZ2luT21pdHRlZEZyb21TdGFja1RyYWNlKFxuICAgICAgICAgICAgZXJyb3JNZXNzYWdlRm9ybWF0LFxuICAgICAgICAgICAgZXJyb3JNZXNzYWdlQXJncyxcbiAgICAgICAgICAgIGludmFyaWFudCxcbiAgICAgICAgKTtcbiAgICB9XG59XG5cbi8qKlxuICogQGludGVybmFsXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzcGF3blVua25vd25Td2l0Y2hDYXNlRXJyb3IoXG4gICAgdmFsdWVEZXNjcmlwdGlvbjogc3RyaW5nLFxuICAgIHByb3ZpZGVkVmFsdWU6IG5ldmVyLFxuICAgIGtleTogc3RyaW5nLFxuKTogRXJyb3Ige1xuICAgIGNvbnN0IHByb3ZpZGVkVmFsdWVLZXkgPSBwcm92aWRlZFZhbHVlW2tleV07XG4gICAgY29uc3QgcHJvdmlkZWRWYWx1ZUtleVN0cmluZyA9XG4gICAgICAgIHByb3ZpZGVkVmFsdWVLZXkgIT09IG51bGwgJiYgcHJvdmlkZWRWYWx1ZUtleSAhPT0gdW5kZWZpbmVkID8gcHJvdmlkZWRWYWx1ZUtleSA6ICdudWxsJztcbiAgICByZXR1cm4gc3Bhd25FcnJvcldpdGhPcmlnaW5PbWl0dGVkRnJvbVN0YWNrVHJhY2UoXG4gICAgICAgICdVbmtub3duIHZhbHVlICVzIGZvciAlcycsXG4gICAgICAgIFtwcm92aWRlZFZhbHVlS2V5U3RyaW5nLCB2YWx1ZURlc2NyaXB0aW9uXSxcbiAgICAgICAgc3Bhd25Vbmtub3duU3dpdGNoQ2FzZUVycm9yIGFzIGFueSxcbiAgICApO1xufVxuXG4vKipcbiAqIEZvcmNlcyBUeXBlU2NyaXB0IHRvIHByb3ZlIHRoYXQgY2FsbGluZyB0aGlzIGZ1bmN0aW9uIGlzIGltcG9zc2libGUgYXQgYVxuICogdHlwZSBsZXZlbCBieSBhY2NlcHRpbmcgYG5ldmVyYC4gSW4gdGhlIHVubGlrZWx5IGNhc2UgdGhpcyBmdW5jdGlvbiBpc1xuICogY2FsbGVkIHdlIGluZmVyIGEgdXNlZnVsIGVycm9yIG1lc3NhZ2UuXG4gKlxuICogQGludGVybmFsXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzcGF3bkV4aGF1c3RpdmVTd2l0Y2hFcnJvcihpbXBvc3NpYmxlVmFsdWU6IG5ldmVyKTogRXJyb3Ige1xuICAgIGlmIChpbXBvc3NpYmxlVmFsdWUgPT09IG51bGwpIHtcbiAgICAgICAgcmV0dXJuIHNwYXduRXJyb3JXaXRoT3JpZ2luT21pdHRlZEZyb21TdGFja1RyYWNlKFxuICAgICAgICAgICAgJ1VuZXhwZWN0ZWQgbnVsbCBpbiBleGhhdXN0aXZlIHN3aXRjaCcsXG4gICAgICAgICAgICB1bmRlZmluZWQsXG4gICAgICAgICAgICBzcGF3bkV4aGF1c3RpdmVTd2l0Y2hFcnJvciBhcyBhbnksXG4gICAgICAgICk7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIHNwYXduRXJyb3JXaXRoT3JpZ2luT21pdHRlZEZyb21TdGFja1RyYWNlKFxuICAgICAgICAgICAgYFVuZXhwZWN0ZWQgJXMgaW4gZXhoYXVzdGl2ZSBzd2l0Y2hgLFxuICAgICAgICAgICAgW3R5cGVvZiBpbXBvc3NpYmxlVmFsdWVdLFxuICAgICAgICAgICAgc3Bhd25FeGhhdXN0aXZlU3dpdGNoRXJyb3IgYXMgYW55LFxuICAgICAgICApO1xuICAgIH1cbn1cblxuLyoqXG4gKiBAaW50ZXJuYWxcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHNwYXduQWJzdHJhY3RNZXRob2RFcnJvcigpOiBFcnJvciB7XG4gICAgcmV0dXJuIHNwYXduRXJyb3JXaXRoT3JpZ2luT21pdHRlZEZyb21TdGFja1RyYWNlKFxuICAgICAgICAnQWJzdHJhY3QgbWV0aG9kJyxcbiAgICAgICAgdW5kZWZpbmVkLFxuICAgICAgICBzcGF3bkFic3RyYWN0TWV0aG9kRXJyb3IsXG4gICAgKTtcbn1cbiJdfQ==
@@ -31,4 +31,5 @@ exports.RecordActionStatus = RecordActionStatus;
31
31
  RecordActionStatus["IGNORED"] = "IGNORED";
32
32
  RecordActionStatus["SETTINGS_INVALID"] = "SETTINGS_INVALID";
33
33
  RecordActionStatus["TABLE_MISMATCH"] = "TABLE_MISMATCH";
34
- })(RecordActionStatus || (exports.RecordActionStatus = RecordActionStatus = {}));
34
+ })(RecordActionStatus || (exports.RecordActionStatus = RecordActionStatus = {}));
35
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9ldmVudF90cmFja2VyLnRzIl0sIm5hbWVzIjpbInRyYWNrRXZlbnQiLCJldmVudFNjaGVtYU5hbWUiLCJldmVudERhdGEiLCJSZWNvcmRBY3Rpb25TdGF0dXMiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7QUFBQTs7QUFDQTtBQUNPLFNBQVNBLFVBQVQsQ0FBb0JDLGVBQXBCLEVBQXVGO0FBQUEsTUFBMUNDLFNBQTBDLHVFQUFKLEVBQUk7QUFDMUYscUNBQXVCRixVQUF2QixDQUFrQ0MsZUFBbEMsRUFBbURDLFNBQW5EO0FBQ0g7QUFFRDs7Ozs7Ozs7SUFNWUMsa0I7OztXQUFBQSxrQjtBQUFBQSxFQUFBQSxrQjtBQUFBQSxFQUFBQSxrQjtBQUFBQSxFQUFBQSxrQjtBQUFBQSxFQUFBQSxrQjtHQUFBQSxrQixrQ0FBQUEsa0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgZ2V0QWlydGFibGVJbnRlcmZhY2UgZnJvbSAnLi9pbmplY3RlZC9haXJ0YWJsZV9pbnRlcmZhY2UnO1xuLyoqIEBoaWRkZW4gKi9cbmV4cG9ydCBmdW5jdGlvbiB0cmFja0V2ZW50KGV2ZW50U2NoZW1hTmFtZTogc3RyaW5nLCBldmVudERhdGE6IHtba2V5OiBzdHJpbmddOiB1bmtub3dufSA9IHt9KSB7XG4gICAgZ2V0QWlydGFibGVJbnRlcmZhY2UoKS50cmFja0V2ZW50KGV2ZW50U2NoZW1hTmFtZSwgZXZlbnREYXRhKTtcbn1cblxuLyoqXG4gKiBVc2VkIGZvciBsb2dnaW5nIGJsb2NrSW5zdGFsbGF0aW9uLnBlcmZvcm1SZWNvcmRBY3Rpb24gZXZlbnRcbiAqIE1pcnJvcmVkIGZyb20gaHlwZXJiYXNlIGJsb2NrX2luc3RhbGxhdGlvbl9yZWNvcmRfYWN0aW9uX3N0YXR1cy50c3hcbiAqXG4gKiBAaGlkZGVuXG4gKiAqL1xuZXhwb3J0IGVudW0gUmVjb3JkQWN0aW9uU3RhdHVzIHtcbiAgICAvLyBUaGUgcmVjb3JkIHdhcyBzdWNjZXNzZnVsbHkgb3BlbmVkLlxuICAgIFNVQ0NFU1MgPSAnU1VDQ0VTUycsXG4gICAgLy8gVGhlIHJlcXVlc3Qgd2FzIGlnbm9yZWQsIGR1ZSB0byB0aGUgYmxvY2sgYmVpbmcgaW4gYSBzdGF0ZSB3aGVyZSBpdCBpc24ndCByZWFkeSB0byBoYW5kbGUgZXZlbnRzXG4gICAgLy8gZS5nLiBzZXR1cCwgc2V0dGluZ3NcbiAgICAvLyBOb3RlOiBpbiB0aGUgZnV0dXJlLCB3ZSBtYXkgaGFuZGxlIGV2ZW50cyBmcm9tIHNvbWUgb2YgdGhlc2Ugc3RhdGVzIG9yIHNob3cgdGhlIHVzZXIgYW4gZXJyb3JcbiAgICAvLyBtZXNzYWdlLlxuICAgIElHTk9SRUQgPSAnSUdOT1JFRCcsXG4gICAgLy8gRHVlIHRvIGludmFsaWQgc2V0dGluZ3MsIGl0IHdhc24ndCBwb3NzaWJsZSB0byBoYW5kbGUgdGhlIGV2ZW50LlxuICAgIC8vIFVubGlrZSBJR05PUkVELCB3ZSBzaG93IHRoZSB1c2VyIGFuIGVycm9yIG1lc3NhZ2UuXG4gICAgU0VUVElOR1NfSU5WQUxJRCA9ICdTRVRUSU5HU19JTlZBTElEJyxcbiAgICAvLyBUaGUgYmxvY2sgd2FzIG9wZW5lZCBmcm9tIGEgdGFibGUgZGlmZmVyZW50IHRvIHRoZSBvbmUgdGhlIGJsb2NrIGlzIGNvbmZpZ3VyZWQgdG8gdXNlLlxuICAgIC8vIFVubGlrZSBJR05PUkVELCB3ZSBzaG93IHRoZSB1c2VyIGFuIGVycm9yIG1lc3NhZ2UuXG4gICAgVEFCTEVfTUlTTUFUQ0ggPSAnVEFCTEVfTUlTTUFUQ0gnLFxufVxuIl19
@@ -584,4 +584,5 @@ function (_Watchable) {
584
584
 
585
585
  (0, _defineProperty2.default)(GlobalConfig, "_className", 'GlobalConfig');
586
586
  var _default = GlobalConfig;
587
- exports.default = _default;
587
+ exports.default = _default;
588
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9nbG9iYWxfY29uZmlnLnRzIl0sIm5hbWVzIjpbIkdsb2JhbENvbmZpZyIsImtleSIsImluaXRpYWxLdlZhbHVlc0J5S2V5Iiwic2RrIiwiX2t2U3RvcmUiLCJfc2RrIiwiX2FpcnRhYmxlSW50ZXJmYWNlIiwiX19haXJ0YWJsZUludGVyZmFjZSIsIkFycmF5IiwiaXNBcnJheSIsInBhdGgiLCJzdG9yZSIsInZhbGlkYXRpb24iLCJnbG9iYWxDb25maWdIZWxwZXJzIiwidmFsaWRhdGVQYXRoIiwiaXNWYWxpZCIsInJlYXNvbiIsIl9mb3JtYXRLZXlBc1BhdGgiLCJwYXRoVmFsaWRhdGlvblJlc3VsdCIsIl92YWxpZGF0ZVBhdGgiLCJ2YWx1ZSIsImNoZWNrUGVybWlzc2lvbnNGb3JTZXRQYXRocyIsInVuZGVmaW5lZCIsImNoZWNrUGVybWlzc2lvbnNGb3JTZXQiLCJoYXNQZXJtaXNzaW9uIiwic2V0UGF0aHNBc3luYyIsInVwZGF0ZXMiLCJfX211dGF0aW9ucyIsImNoZWNrUGVybWlzc2lvbnNGb3JNdXRhdGlvbiIsInR5cGUiLCJNdXRhdGlvblR5cGVzIiwiU0VUX01VTFRJUExFX0dMT0JBTF9DT05GSUdfUEFUSFMiLCJtYXAiLCJoYXNQZXJtaXNzaW9uVG9TZXRQYXRocyIsInVwZGF0ZSIsInBhdGhWYWxpZGF0aW9uIiwiYXBwbHlNdXRhdGlvbkFzeW5jIiwidmFsaWRhdGVBbmRBcHBseVVwZGF0ZXMiLCJuZXdLdlN0b3JlIiwiY2hhbmdlZFRvcExldmVsS2V5cyIsIl9vbkNoYW5nZSIsImxlbmd0aCIsIldhdGNoYWJsZSJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFDQTs7QUFFQTs7QUFXQTs7QUFDQTs7QUFmQTs7QUFBOEM7QUF1QjlDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUNBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0lBc0JNQSxZOzs7Ozs7O0FBQ0Y7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dUI7QUFFM0NMLGdCQUFBQTtBQUYyQyxlQUF6QyxDOzs7Ozs7Ozs7QUFLVjs7Ozs7Ozt5Q0FJcUJBLE8sRUFBNEM7QUFDN0Q7QUFDQTtBQUNBO0FBQ0E7QUFKNkQsa0NBUXpELEtBQUtwQixrQkFBTCxDQUF3Qk8sbUJBQXhCLENBQTRDd0IsdUJBQTVDLENBQ0FYLE9BREEsRUFFQSxLQUFLdEIsUUFGTCxDQVJ5RDtBQUFBLFVBTXpEa0MsVUFOeUQseUJBTXpEQSxVQU55RDtBQUFBLFVBT3pEQyxtQkFQeUQseUJBT3pEQSxtQkFQeUQsRUFhN0Q7OztBQUNBLFdBQUtuQyxRQUFMLEdBQWdCa0MsVUFBaEIsQ0FkNkQsQ0FnQjdEOztBQWhCNkQ7QUFBQTtBQUFBOztBQUFBO0FBaUI3RCw4QkFBa0JDLG1CQUFsQixtSUFBdUM7QUFBQSxjQUE1QnRDLEdBQTRCOztBQUNuQyxlQUFLdUMsU0FBTCxDQUFldkMsR0FBZjtBQUNIO0FBbkI0RDtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBOztBQW9CN0QsVUFBSXNDLG1CQUFtQixDQUFDRSxNQUF4QixFQUFnQztBQUM1QixhQUFLRCxTQUFMLENBQWUsR0FBZjtBQUNIO0FBQ0o7OztFQXpWc0JFLGtCOzs4QkFBckIxQyxZLGdCQUVrQixjO2VBMFZUQSxZIiwic291cmNlc0NvbnRlbnQiOlsiLyoqIEBtb2R1bGUgQGFpcnRhYmxlL2Jsb2NrczogZ2xvYmFsQ29uZmlnICovIC8qKiAqL1xuaW1wb3J0IFdhdGNoYWJsZSBmcm9tICcuL3dhdGNoYWJsZSc7XG5pbXBvcnQge0FpcnRhYmxlSW50ZXJmYWNlfSBmcm9tICcuL3R5cGVzL2FpcnRhYmxlX2ludGVyZmFjZSc7XG5pbXBvcnQge3NwYXduRXJyb3J9IGZyb20gJy4vZXJyb3JfdXRpbHMnO1xuaW1wb3J0IHtcbiAgICBHbG9iYWxDb25maWdQYXRoLFxuICAgIEdsb2JhbENvbmZpZ0tleSxcbiAgICBQYXJ0aWFsR2xvYmFsQ29uZmlnS2V5LFxuICAgIEdsb2JhbENvbmZpZ1ZhbHVlLFxuICAgIEdsb2JhbENvbmZpZ0RhdGEsXG4gICAgR2xvYmFsQ29uZmlnVXBkYXRlLFxuICAgIFBhcnRpYWxHbG9iYWxDb25maWdVcGRhdGUsXG4gICAgR2xvYmFsQ29uZmlnUGF0aFZhbGlkYXRpb25SZXN1bHQsXG59IGZyb20gJy4vdHlwZXMvZ2xvYmFsX2NvbmZpZyc7XG5pbXBvcnQge011dGF0aW9uVHlwZXMsIFBlcm1pc3Npb25DaGVja1Jlc3VsdH0gZnJvbSAnLi90eXBlcy9tdXRhdGlvbnMnO1xuaW1wb3J0IHtnZXRWYWx1ZUF0T3duUGF0aH0gZnJvbSAnLi9wcml2YXRlX3V0aWxzJztcbmltcG9ydCBTZGsgZnJvbSAnLi9zZGsnO1xuXG4vKipcbiAqIFlvdSBjYW4gd2F0Y2ggYW55IHRvcC1sZXZlbCBrZXkgaW4gZ2xvYmFsIGNvbmZpZy4gVXNlICcqJyB0byB3YXRjaCBldmVyeSBjaGFuZ2UuXG4gKi9cbnR5cGUgV2F0Y2hhYmxlR2xvYmFsQ29uZmlnS2V5ID0gc3RyaW5nO1xuXG4vLyBOT1RFOiBHbG9iYWxDb25maWcgaXMgZXNzZW50aWFsbHkgYSB3cmFwcGVyIGFyb3VuZCBhIGdlbmVyaWMga2V5LXZhbHVlIHN0b3JlLlxuLy8gSXQncyBjYWxsZWQgR2xvYmFsQ29uZmlnIGluIG9yZGVyIHRvIGNvbnZleSB0d28gbWFpbiBwb2ludHMgYWJvdXQgaXRzIGludGVuZGVkXG4vLyB1c2FnZTpcbi8vIDEpIHRoYXQgaXQgaXMgc3luY2VkICdnbG9iYWxseScgYWNyb3NzIGNsaWVudHMgKGF0IHNvbWUgcG9pbnQgd2UgbWlnaHQgbWFrZVxuLy8gICAgYSBVc2VyQ29uZmlnIHdoaWNoIHdvdWxkIGJlIHNjb3BlZCB0byBhbiBpbmRpdmlkdWFsIHVzZXIpLCBhbmRcbi8vIDIpIHRoYXQgaXMgc2hvdWxkIGJlIHVzZWQgbWFpbmx5IGZvciBjb25maWd1cmF0aW9uIG9mIHRoZSBibG9jayAoa3Ygc3RvcmVcbi8vICAgIGFzIGEgbmFtZSBzZWVtcyBhIGJpdCB0b28gdmFndWUgaW4gdGVybXMgb2YgaW50ZW5kZWQgdXNhZ2UpLlxuLyoqXG4gKiBBIGtleS12YWx1ZSBzdG9yZSBmb3IgcGVyc2lzdGluZyBjb25maWd1cmF0aW9uIG9wdGlvbnMgZm9yIGFuIGFwcCBpbnN0YWxsYXRpb24uXG4gKlxuICogVGhlIGNvbnRlbnRzIHdpbGwgYmUgc3luY2VkIGluIHJlYWwtdGltZSB0byBhbGwgbG9nZ2VkLWluIHVzZXJzIG9mIHRoZSBpbnN0YWxsYXRpb24uXG4gKiBDb250ZW50cyB3aWxsIG5vdCBiZSB1cGRhdGVkIGluIHJlYWwtdGltZSB3aGVuIHRoZSBpbnN0YWxsYXRpb24gaXMgcnVubmluZyBpblxuICogYSBwdWJsaWNseSBzaGFyZWQgYmFzZS5cbiAqXG4gKiBBbnkga2V5IGNhbiBiZSB3YXRjaGVkIHRvIGtub3cgd2hlbiB0aGUgdmFsdWUgb2YgdGhlIGtleSBjaGFuZ2VzLiBJZiB5b3Ugd2FudCB5b3VyXG4gKiBjb21wb25lbnQgdG8gYXV0b21hdGljYWxseSByZS1yZW5kZXIgd2hlbmV2ZXIgYW55IGtleSBvbiBHbG9iYWxDb25maWcgY2hhbmdlcywgdHJ5IHVzaW5nIHRoZVxuICoge0BsaW5rIHVzZUdsb2JhbENvbmZpZ30gaG9vay5cbiAqXG4gKiBZb3Ugc2hvdWxkIG5vdCBuZWVkIHRvIGNvbnN0cnVjdCB0aGlzIG9iamVjdCB5b3Vyc2VsZi5cbiAqXG4gKiBUaGUgbWF4aW11bSBhbGxvd2VkIHNpemUgZm9yIGEgZ2l2ZW4gR2xvYmFsQ29uZmlnIGluc3RhbmNlIGlzIDE1MGtCLlxuICogVGhlIG1heGltdW0gbnVtYmVyIG9mIGtleXMgZm9yIGEgZ2l2ZW4gR2xvYmFsQ29uZmlnIGluc3RhbmNlIGlzIDEwMDAuXG4gKlxuICogQGV4YW1wbGVcbiAqIGBgYGpzXG4gKiBpbXBvcnQge2dsb2JhbENvbmZpZ30gZnJvbSAnQGFpcnRhYmxlL2Jsb2Nrcyc7XG4gKiBgYGBcbiAqIEBkb2NzUGF0aCBtb2RlbHMvR2xvYmFsQ29uZmlnXG4gKi9cbmNsYXNzIEdsb2JhbENvbmZpZyBleHRlbmRzIFdhdGNoYWJsZTxXYXRjaGFibGVHbG9iYWxDb25maWdLZXk+IHtcbiAgICAvKiogQGludGVybmFsICovXG4gICAgc3RhdGljIF9jbGFzc05hbWUgPSAnR2xvYmFsQ29uZmlnJztcbiAgICAvKiogQGludGVybmFsICovXG4gICAgc3RhdGljIF9pc1dhdGNoYWJsZUtleShrZXk6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgICAgICAvLyBUaGUgdXNlciBjYW4gc3RvcmUgYW55IGFyYml0cmFyeSBrZXkgaW4gdGhlIGdsb2JhbCBjb25maWcsIHNvIHRoZXJlJ3NcbiAgICAgICAgLy8gbm90IG11Y2ggd2UgY2FuIGRvIGhlcmUgdG8gY2hlY2sgaWYgYSBrZXkgaXMgdmFsaWQuXG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICAvKiogQGludGVybmFsICovXG4gICAgX3NkazogU2RrO1xuICAgIC8qKiBAaW50ZXJuYWwgKi9cbiAgICBfa3ZTdG9yZTogR2xvYmFsQ29uZmlnRGF0YTtcbiAgICAvKiogQGludGVybmFsICovXG4gICAgX2FpcnRhYmxlSW50ZXJmYWNlOiBBaXJ0YWJsZUludGVyZmFjZTtcbiAgICAvKipcbiAgICAgKiBAaW50ZXJuYWxcbiAgICAgKi9cbiAgICBjb25zdHJ1Y3Rvcihpbml0aWFsS3ZWYWx1ZXNCeUtleTogR2xvYmFsQ29uZmlnRGF0YSwgc2RrOiBTZGspIHtcbiAgICAgICAgc3VwZXIoKTtcblxuICAgICAgICB0aGlzLl9rdlN0b3JlID0gaW5pdGlhbEt2VmFsdWVzQnlLZXk7XG4gICAgICAgIHRoaXMuX3NkayA9IHNkaztcbiAgICAgICAgdGhpcy5fYWlydGFibGVJbnRlcmZhY2UgPSBzZGsuX19haXJ0YWJsZUludGVyZmFjZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaW50ZXJuYWxcbiAgICAgKi9cbiAgICBfX2dldFRvcExldmVsS2V5KGtleTogR2xvYmFsQ29uZmlnS2V5KTogc3RyaW5nIHtcbiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoa2V5KSkge1xuICAgICAgICAgICAgcmV0dXJuIGtleVswXTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4ga2V5IGFzIHN0cmluZztcbiAgICB9XG4gICAgLyoqXG4gICAgICogQGludGVybmFsXG4gICAgICovXG4gICAgX2Zvcm1hdEtleUFzUGF0aDxUIGV4dGVuZHMgc3RyaW5nIHwgdW5kZWZpbmVkPihrZXk6IFJlYWRvbmx5QXJyYXk8VD4gfCBUKTogUmVhZG9ubHlBcnJheTxUPiB7XG4gICAgICAgIGlmICghQXJyYXkuaXNBcnJheShrZXkpKSB7XG4gICAgICAgICAgICByZXR1cm4gW2tleSBhcyBhbnldO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBrZXk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGludGVybmFsXG4gICAgICovXG4gICAgX3ZhbGlkYXRlUGF0aChcbiAgICAgICAgcGF0aDogR2xvYmFsQ29uZmlnUGF0aCxcbiAgICAgICAgc3RvcmU6IEdsb2JhbENvbmZpZ0RhdGEsXG4gICAgKTogR2xvYmFsQ29uZmlnUGF0aFZhbGlkYXRpb25SZXN1bHQge1xuICAgICAgICBjb25zdCB2YWxpZGF0aW9uID0gdGhpcy5fYWlydGFibGVJbnRlcmZhY2UuZ2xvYmFsQ29uZmlnSGVscGVycy52YWxpZGF0ZVBhdGgocGF0aCwgc3RvcmUpO1xuICAgICAgICBpZiAoIXZhbGlkYXRpb24uaXNWYWxpZCkge1xuICAgICAgICAgICAgcmV0dXJuIHZhbGlkYXRpb247XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHBhdGhbMF0gPT09ICcqJykge1xuICAgICAgICAgICAgcmV0dXJuIHtpc1ZhbGlkOiBmYWxzZSwgcmVhc29uOiBcImNhbm5vdCB1c2UgJyonIGFzIGEgdG9wLWxldmVsIGtleVwifTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4ge2lzVmFsaWQ6IHRydWV9O1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBHZXQgdGhlIHZhbHVlIGF0IGEgcGF0aC4gVGhyb3dzIGFuIGVycm9yIGlmIHRoZSBwYXRoIGlzIGludmFsaWQuXG4gICAgICpcbiAgICAgKiBSZXR1cm5zIHVuZGVmaW5lZCBpZiBubyB2YWx1ZSBleGlzdHMgYXQgdGhhdCBwYXRoLlxuICAgICAqXG4gICAgICogQHBhcmFtIGtleSBBIHN0cmluZyBmb3IgdGhlIHRvcC1sZXZlbCBrZXksIG9yIGFuIGFycmF5IG9mIHN0cmluZ3MgZGVzY3JpYmluZyB0aGUgcGF0aCB0byB0aGUgdmFsdWUuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKiBgYGBqc1xuICAgICAqIGltcG9ydCB7Z2xvYmFsQ29uZmlnfSBmcm9tICdAYWlydGFibGUvYmxvY2tzJztcbiAgICAgKlxuICAgICAqIGNvbnN0IHRvcExldmVsVmFsdWUgPSBnbG9iYWxDb25maWcuZ2V0KCd0b3BMZXZlbEtleScpO1xuICAgICAqIGNvbnN0IG5lc3RlZFZhbHVlID0gZ2xvYmFsQ29uZmlnLmdldChbJ3RvcExldmVsS2V5JywgJ25lc3RlZCcsICdkZWVwbHknXSk7XG4gICAgICogYGBgXG4gICAgICovXG4gICAgZ2V0KGtleTogR2xvYmFsQ29uZmlnS2V5KTogdW5rbm93biB7XG4gICAgICAgIGNvbnN0IHBhdGggPSB0aGlzLl9mb3JtYXRLZXlBc1BhdGgoa2V5KTtcblxuICAgICAgICBjb25zdCBwYXRoVmFsaWRhdGlvblJlc3VsdCA9IHRoaXMuX3ZhbGlkYXRlUGF0aChwYXRoLCB0aGlzLl9rdlN0b3JlKTtcbiAgICAgICAgaWYgKCFwYXRoVmFsaWRhdGlvblJlc3VsdC5pc1ZhbGlkKSB7XG4gICAgICAgICAgICB0aHJvdyBzcGF3bkVycm9yKCdJbnZhbGlkIGdsb2JhbENvbmZpZyBwYXRoOiAlcycsIHBhdGhWYWxpZGF0aW9uUmVzdWx0LnJlYXNvbik7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCB2YWx1ZSA9IGdldFZhbHVlQXRPd25QYXRoKHRoaXMuX2t2U3RvcmUsIHBhdGgpO1xuICAgICAgICAvLyB2YWx1ZSBpcyByZXR1cm5lZCBhcyBgdW5rbm93bmAgZnJvbSBnZXRWYWx1ZUF0T3duUGF0aCwgYnV0IHdlIGtub3cgaXQgbXVzdCBiZSBhIGBHbG9iYWxDb25maWdWYWx1ZSB8IHZvaWRgXG4gICAgICAgIHJldHVybiB2YWx1ZSBhcyBHbG9iYWxDb25maWdWYWx1ZSB8IHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDaGVja3Mgd2hldGhlciB0aGUgY3VycmVudCB1c2VyIGhhcyBwZXJtaXNzaW9uIHRvIHNldCB0aGUgZ2l2ZW4gZ2xvYmFsIGNvbmZpZyBrZXkuXG4gICAgICpcbiAgICAgKiBBY2NlcHRzIHBhcnRpYWwgaW5wdXQsIGluIHRoZSBzYW1lIGZvcm1hdCBhcyB7QGxpbmsgc2V0QXN5bmN9LlxuICAgICAqIFRoZSBtb3JlIGluZm9ybWF0aW9uIHByb3ZpZGVkLCB0aGUgbW9yZSBhY2N1cmF0ZSB0aGUgcGVybWlzc2lvbnMgY2hlY2sgd2lsbCBiZS5cbiAgICAgKlxuICAgICAqIFJldHVybnMgYHtoYXNQZXJtaXNzaW9uOiB0cnVlfWAgaWYgdGhlIGN1cnJlbnQgdXNlciBjYW4gc2V0IHRoZSBzcGVjaWZpZWQga2V5LFxuICAgICAqIGB7aGFzUGVybWlzc2lvbjogZmFsc2UsIHJlYXNvbkRpc3BsYXlTdHJpbmc6IHN0cmluZ31gIG90aGVyd2lzZS4gIGByZWFzb25EaXNwbGF5U3RyaW5nYCBtYXlcbiAgICAgKiBiZSB1c2VkIHRvIGRpc3BsYXkgYW4gZXJyb3IgbWVzc2FnZSB0byB0aGUgdXNlci5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBrZXkgQSBzdHJpbmcgZm9yIHRoZSB0b3AtbGV2ZWwga2V5LCBvciBhbiBhcnJheSBvZiBzdHJpbmdzIGRlc2NyaWJpbmcgdGhlIHBhdGggdG8gc2V0LlxuICAgICAqIEBwYXJhbSB2YWx1ZSBUaGUgdmFsdWUgdG8gc2V0IGF0IHRoZSBzcGVjaWZpZWQgcGF0aC4gVXNlIGB1bmRlZmluZWRgIHRvIGRlbGV0ZSB0aGUgdmFsdWUgYXQgdGhlIGdpdmVuIHBhdGguXG4gICAgICpcbiAgICAgKiBAZXhhbXBsZVxuICAgICAqIGBgYGpzXG4gICAgICogLy8gQ2hlY2sgaWYgdXNlciBjYW4gdXBkYXRlIGEgc3BlY2lmaWMga2V5IGFuZCB2YWx1ZS5cbiAgICAgKiBjb25zdCBzZXRDaGVja1Jlc3VsdCA9XG4gICAgICogICAgIGdsb2JhbENvbmZpZy5jaGVja1Blcm1pc3Npb25zRm9yU2V0KCdmYXZvcml0ZUNvbG9yJywgJ3B1cnBsZScpO1xuICAgICAqIGlmICghc2V0Q2hlY2tSZXN1bHQuaGFzUGVybWlzc2lvbikge1xuICAgICAqICAgICBhbGVydChzZXRDaGVja1Jlc3VsdC5yZWFzb25EaXNwbGF5U3RyaW5nKTtcbiAgICAgKiB9XG4gICAgICpcbiAgICAgKiAvLyBDaGVjayBpZiB1c2VyIGNhbiB1cGRhdGUgYSBzcGVjaWZpYyBrZXkgd2l0aG91dCBrbm93aW5nIHRoZSB2YWx1ZVxuICAgICAqIGNvbnN0IHNldEtleUNoZWNrUmVzdWx0ID1cbiAgICAgKiAgICAgZ2xvYmFsQ29uZmlnLmNoZWNrUGVybWlzc2lvbnNGb3JTZXQoJ2Zhdm9yaXRlQ29sb3InKTtcbiAgICAgKlxuICAgICAqIC8vIENoZWNrIGlmIHVzZXIgY2FuIHVwZGF0ZSBnbG9iYWxDb25maWcgd2l0aG91dCBrbm93aW5nIGtleSBvciB2YWx1ZVxuICAgICAqIGNvbnN0IHNldFVua25vd25LZXlDaGVja1Jlc3VsdCA9IGdsb2JhbENvbmZpZy5jaGVja1Blcm1pc3Npb25zRm9yU2V0KCk7XG4gICAgICogYGBgXG4gICAgICovXG4gICAgY2hlY2tQZXJtaXNzaW9uc0ZvclNldChcbiAgICAgICAga2V5PzogUGFydGlhbEdsb2JhbENvbmZpZ0tleSxcbiAgICAgICAgdmFsdWU/OiBHbG9iYWxDb25maWdWYWx1ZSxcbiAgICApOiBQZXJtaXNzaW9uQ2hlY2tSZXN1bHQge1xuICAgICAgICByZXR1cm4gdGhpcy5jaGVja1Blcm1pc3Npb25zRm9yU2V0UGF0aHMoW1xuICAgICAgICAgICAge3BhdGg6IGtleSA/IHRoaXMuX2Zvcm1hdEtleUFzUGF0aChrZXkpIDogdW5kZWZpbmVkLCB2YWx1ZX0sXG4gICAgICAgIF0pO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBBbiBhbGlhcyBmb3IgYGdsb2JhbENvbmZpZy5jaGVja1Blcm1pc3Npb25zRm9yU2V0KGtleSwgdmFsdWUpLmhhc1Blcm1pc3Npb25gLlxuICAgICAqXG4gICAgICogQ2hlY2tzIHdoZXRoZXIgdGhlIGN1cnJlbnQgdXNlciBoYXMgcGVybWlzc2lvbiB0byBzZXQgdGhlIGdpdmVuIGdsb2JhbCBjb25maWcga2V5LlxuICAgICAqXG4gICAgICogQWNjZXB0cyBwYXJ0aWFsIGlucHV0LCBpbiB0aGUgc2FtZSBmb3JtYXQgYXMge0BsaW5rIHNldEFzeW5jfS5cbiAgICAgKiBUaGUgbW9yZSBpbmZvcm1hdGlvbiBwcm92aWRlZCwgdGhlIG1vcmUgYWNjdXJhdGUgdGhlIHBlcm1pc3Npb25zIGNoZWNrIHdpbGwgYmUuXG4gICAgICpcbiAgICAgKiBAcGFyYW0ga2V5IEEgc3RyaW5nIGZvciB0aGUgdG9wLWxldmVsIGtleSwgb3IgYW4gYXJyYXkgb2Ygc3RyaW5ncyBkZXNjcmliaW5nIHRoZSBwYXRoIHRvIHNldC5cbiAgICAgKiBAcGFyYW0gdmFsdWUgVGhlIHZhbHVlIHRvIHNldCBhdCB0aGUgc3BlY2lmaWVkIHBhdGguIFVzZSBgdW5kZWZpbmVkYCB0byBkZWxldGUgdGhlIHZhbHVlIGF0IHRoZSBnaXZlbiBwYXRoLlxuICAgICAqXG4gICAgICogQGV4YW1wbGVcbiAgICAgKiBgYGBqc1xuICAgICAqIC8vIENoZWNrIGlmIHVzZXIgY2FuIHVwZGF0ZSBhIHNwZWNpZmljIGtleSBhbmQgdmFsdWUuXG4gICAgICogY29uc3QgY2FuU2V0RmF2b3JpdGVDb2xvclRvUHVycGxlID1cbiAgICAgKiAgICAgZ2xvYmFsQ29uZmlnLmhhc1Blcm1pc3Npb25Ub1NldCgnZmF2b3JpdGVDb2xvcicsICdwdXJwbGUnKTtcbiAgICAgKiBpZiAoIWNhblNldEZhdm9yaXRlQ29sb3JUb1B1cnBsZSkge1xuICAgICAqICAgICBhbGVydCgnTm90IGFsbG93ZWQhJyk7XG4gICAgICogfVxuICAgICAqXG4gICAgICogLy8gQ2hlY2sgaWYgdXNlciBjYW4gdXBkYXRlIGEgc3BlY2lmaWMga2V5IHdpdGhvdXQga25vd2luZyB0aGUgdmFsdWVcbiAgICAgKiBjb25zdCBjYW5TZXRGYXZvcml0ZUNvbG9yID0gZ2xvYmFsQ29uZmlnLmhhc1Blcm1pc3Npb25Ub1NldCgnZmF2b3JpdGVDb2xvcicpO1xuICAgICAqXG4gICAgICogLy8gQ2hlY2sgaWYgdXNlciBjYW4gdXBkYXRlIGdsb2JhbENvbmZpZyB3aXRob3V0IGtub3dpbmcga2V5IG9yIHZhbHVlXG4gICAgICogY29uc3QgY2FuU2V0R2xvYmFsQ29uZmlnID0gZ2xvYmFsQ29uZmlnLmhhc1Blcm1pc3Npb25Ub1NldCgpO1xuICAgICAqIGBgYFxuICAgICAqL1xuICAgIGhhc1Blcm1pc3Npb25Ub1NldChrZXk/OiBQYXJ0aWFsR2xvYmFsQ29uZmlnS2V5LCB2YWx1ZT86IEdsb2JhbENvbmZpZ1ZhbHVlKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLmNoZWNrUGVybWlzc2lvbnNGb3JTZXQoa2V5LCB2YWx1ZSkuaGFzUGVybWlzc2lvbjtcbiAgICB9XG4gICAgLyoqXG4gICAgICogU2V0cyBhIHZhbHVlIGF0IGEgcGF0aC4gVGhyb3dzIGFuIGVycm9yIGlmIHRoZSBwYXRoIG9yIHZhbHVlIGlzIGludmFsaWQuXG4gICAgICpcbiAgICAgKiBUaGlzIGFjdGlvbiBpcyBhc3luY2hyb25vdXM6IGBhd2FpdGAgdGhlIHJldHVybmVkIHByb21pc2UgaWYgeW91IHdpc2ggdG8gd2FpdCBmb3IgdGhlXG4gICAgICogdXBkYXRlIHRvIGJlIHBlcnNpc3RlZCB0byBBaXJ0YWJsZSBzZXJ2ZXJzLlxuICAgICAqXG4gICAgICogVXBkYXRlcyBhcmUgYXBwbGllZCBvcHRpbWlzdGljYWxseSBsb2NhbGx5LCBzbyB5b3VyIGNoYW5nZSB3aWxsIGJlIHJlZmxlY3RlZCBpblxuICAgICAqIHtAbGluayBHbG9iYWxDb25maWd9IGJlZm9yZSB0aGUgcHJvbWlzZSByZXNvbHZlcy5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBrZXkgQSBzdHJpbmcgZm9yIHRoZSB0b3AtbGV2ZWwga2V5LCBvciBhbiBhcnJheSBvZiBzdHJpbmdzIGRlc2NyaWJpbmcgdGhlIHBhdGggdG8gc2V0LlxuICAgICAqIEBwYXJhbSB2YWx1ZSBUaGUgdmFsdWUgdG8gc2V0IGF0IHRoZSBzcGVjaWZpZWQgcGF0aC4gVXNlIGB1bmRlZmluZWRgIHRvIGRlbGV0ZSB0aGUgdmFsdWUgYXQgdGhlIGdpdmVuIHBhdGguXG4gICAgICogQGV4YW1wbGVcbiAgICAgKiBgYGBqc1xuICAgICAqIGltcG9ydCB7Z2xvYmFsQ29uZmlnfSBmcm9tICdAYWlydGFibGUvYmxvY2tzJztcbiAgICAgKlxuICAgICAqIGZ1bmN0aW9uIHVwZGF0ZUZhdm9yaXRlQ29sb3JJZlBvc3NpYmxlKGNvbG9yKSB7XG4gICAgICogICAgIGlmIChnbG9iYWxDb25maWcuaGFzUGVybWlzc2lvblRvU2V0UGF0aHMoJ2Zhdm9yaXRlQ29sb3InLCBjb2xvcikpIHtcbiAgICAgKiAgICAgICAgIGdsb2JhbENvbmZpZy5zZXRBc3luYygnZmF2b3JpdGVDb2xvcicsIGNvbG9yKTtcbiAgICAgKiAgICAgfVxuICAgICAqICAgICAvLyBUaGUgdXBkYXRlIGlzIG5vdyBhcHBsaWVkIHdpdGhpbiB5b3VyIGFwcCAoZWcgd2lsbCBiZVxuICAgICAqICAgICAvLyByZWZsZWN0ZWQgaW4gZ2xvYmFsQ29uZmlnKSBidXQgYXJlIHN0aWxsIGJlaW5nIHNhdmVkIHRvXG4gICAgICogICAgIC8vIEFpcnRhYmxlIHNlcnZlcnMgKGUuZy4gbWF5IG5vdCBiZSB1cGRhdGVkIGZvciBvdGhlciB1c2VycyB5ZXQpXG4gICAgICogfVxuICAgICAqXG4gICAgICogYXN5bmMgZnVuY3Rpb24gdXBkYXRlRmF2b3JpdGVDb2xvcklmUG9zc2libGVBc3luYyhjb2xvcikge1xuICAgICAqICAgICBpZiAoZ2xvYmFsQ29uZmlnLmhhc1Blcm1pc3Npb25Ub1NldCgnZmF2b3JpdGVDb2xvcicsIGNvbG9yKSkge1xuICAgICAqICAgICAgICAgYXdhaXQgZ2xvYmFsQ29uZmlnLnNldEFzeW5jKCdmYXZvcml0ZUNvbG9yJywgY29sb3IpO1xuICAgICAqICAgICB9XG4gICAgICogICAgIC8vIGdsb2JhbENvbmZpZyB1cGRhdGVzIGhhdmUgYmVlbiBzYXZlZCB0byBBaXJ0YWJsZSBzZXJ2ZXJzLlxuICAgICAqICAgICBhbGVydCgnZmF2b3JpdGVDb2xvciBoYXMgYmVlbiB1cGRhdGVkJyk7XG4gICAgICogfVxuICAgICAqIGBgYFxuICAgICAqL1xuICAgIGFzeW5jIHNldEFzeW5jKGtleTogR2xvYmFsQ29uZmlnS2V5LCB2YWx1ZT86IEdsb2JhbENvbmZpZ1ZhbHVlKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIGNvbnN0IHBhdGggPSB0aGlzLl9mb3JtYXRLZXlBc1BhdGgoa2V5KTtcbiAgICAgICAgYXdhaXQgdGhpcy5zZXRQYXRoc0FzeW5jKFt7cGF0aCwgdmFsdWV9XSk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIENoZWNrcyB3aGV0aGVyIHRoZSBjdXJyZW50IHVzZXIgaGFzIHBlcm1pc3Npb24gdG8gcGVyZm9ybSB0aGUgc3BlY2lmaWVkIHVwZGF0ZXMgdG8gZ2xvYmFsIGNvbmZpZy5cbiAgICAgKlxuICAgICAqIEFjY2VwdHMgcGFydGlhbCBpbnB1dCwgaW4gdGhlIHNhbWUgZm9ybWF0IGFzIHtAbGluayBzZXRQYXRoc0FzeW5jfS5cbiAgICAgKiBUaGUgbW9yZSBpbmZvcm1hdGlvbiBwcm92aWRlZCwgdGhlIG1vcmUgYWNjdXJhdGUgdGhlIHBlcm1pc3Npb25zIGNoZWNrIHdpbGwgYmUuXG4gICAgICpcbiAgICAgKiBSZXR1cm5zIGB7aGFzUGVybWlzc2lvbjogdHJ1ZX1gIGlmIHRoZSBjdXJyZW50IHVzZXIgY2FuIHNldCB0aGUgc3BlY2lmaWVkIGtleSxcbiAgICAgKiBge2hhc1Blcm1pc3Npb246IGZhbHNlLCByZWFzb25EaXNwbGF5U3RyaW5nOiBzdHJpbmd9YCBvdGhlcndpc2UuIGByZWFzb25EaXNwbGF5U3RyaW5nYCBtYXkgYmVcbiAgICAgKiB1c2VkIHRvIGRpc3BsYXkgYW4gZXJyb3IgbWVzc2FnZSB0byB0aGUgdXNlci5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB1cGRhdGVzIFRoZSBwYXRocyBhbmQgdmFsdWVzIHRvIHNldC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqIGBgYGpzXG4gICAgICogLy8gQ2hlY2sgaWYgdXNlciBjYW4gdXBkYXRlIGEgc3BlY2lmaWMga2V5cyBhbmQgdmFsdWVzLlxuICAgICAqIGNvbnN0IHNldFBhdGhzQ2hlY2tSZXN1bHQgPSBnbG9iYWxDb25maWcuY2hlY2tQZXJtaXNzaW9uc0ZvclNldChbXG4gICAgICogICAgIHtwYXRoOiBbJ3RvcExldmVsS2V5MScsICduZXN0ZWRLZXkxJ10sIHZhbHVlOiAnZm9vJ30sXG4gICAgICogICAgIHtwYXRoOiBbJ3RvcExldmVsS2V5MicsICduZXN0ZWRLZXkyJ10sIHZhbHVlOiAnYmFyJ30sXG4gICAgICogXSk7XG4gICAgICogaWYgKCFzZXRQYXRoc0NoZWNrUmVzdWx0Lmhhc1Blcm1pc3Npb24pIHtcbiAgICAgKiAgICAgYWxlcnQoc2V0UGF0aHNDaGVja1Jlc3VsdC5yZWFzb25EaXNwbGF5U3RyaW5nKTtcbiAgICAgKiB9XG4gICAgICpcbiAgICAgKiAvLyBDaGVjayBpZiB1c2VyIGNvdWxkIHBvdGVudGlhbGx5IHNldCBnbG9iYWxDb25maWcgdmFsdWVzLlxuICAgICAqIC8vIEVxdWl2YWxlbnQgdG8gZ2xvYmFsQ29uZmlnLmNoZWNrUGVybWlzc2lvbnNGb3JTZXQoKVxuICAgICAqIGNvbnN0IHNldFVua25vd25QYXRoc0NoZWNrUmVzdWx0ID1cbiAgICAgKiAgICAgZ2xvYmFsQ29uZmlnLmNoZWNrUGVybWlzc2lvbnNGb3JTZXRQYXRocygpO1xuICAgICAqIGBgYFxuICAgICAqL1xuICAgIGNoZWNrUGVybWlzc2lvbnNGb3JTZXRQYXRocyhcbiAgICAgICAgdXBkYXRlcz86IFJlYWRvbmx5QXJyYXk8UGFydGlhbEdsb2JhbENvbmZpZ1VwZGF0ZT4sXG4gICAgKTogUGVybWlzc2lvbkNoZWNrUmVzdWx0IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3Nkay5fX211dGF0aW9ucy5jaGVja1Blcm1pc3Npb25zRm9yTXV0YXRpb24oe1xuICAgICAgICAgICAgdHlwZTogTXV0YXRpb25UeXBlcy5TRVRfTVVMVElQTEVfR0xPQkFMX0NPTkZJR19QQVRIUyxcbiAgICAgICAgICAgIHVwZGF0ZXM6IHVwZGF0ZXNcbiAgICAgICAgICAgICAgICA/IHVwZGF0ZXMubWFwKCh7cGF0aCwgdmFsdWV9KSA9PiAoe3BhdGg6IHBhdGggfHwgdW5kZWZpbmVkLCB2YWx1ZX0pKVxuICAgICAgICAgICAgICAgIDogdW5kZWZpbmVkLFxuICAgICAgICB9KTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogQW4gYWxpYXMgZm9yIGBnbG9iYWxDb25maWcuY2hlY2tQZXJtaXNzaW9uc0ZvclNldFBhdGhzKHVwZGF0ZXMpLmhhc1Blcm1pc3Npb25gLlxuICAgICAqXG4gICAgICogQ2hlY2tzIHdoZXRoZXIgdGhlIGN1cnJlbnQgdXNlciBoYXMgcGVybWlzc2lvbiB0byBwZXJmb3JtIHRoZSBzcGVjaWZpZWQgdXBkYXRlcyB0byBnbG9iYWxcbiAgICAgKiBjb25maWcuXG4gICAgICpcbiAgICAgKiBBY2NlcHRzIHBhcnRpYWwgaW5wdXQsIGluIHRoZSBzYW1lIGZvcm1hdCBhcyB7QGxpbmsgc2V0UGF0aHNBc3luY30uXG4gICAgICogVGhlIG1vcmUgaW5mb3JtYXRpb24gcHJvdmlkZWQsIHRoZSBtb3JlIGFjY3VyYXRlIHRoZSBwZXJtaXNzaW9ucyBjaGVjayB3aWxsIGJlLlxuICAgICAqXG4gICAgICogQHBhcmFtIHVwZGF0ZXMgVGhlIHBhdGhzIGFuZCB2YWx1ZXMgdG8gc2V0LlxuICAgICAqXG4gICAgICogQGV4YW1wbGVcbiAgICAgKiBgYGBqc1xuICAgICAqIC8vIENoZWNrIGlmIHVzZXIgY2FuIHVwZGF0ZSBhIHNwZWNpZmljIGtleXMgYW5kIHZhbHVlcy5cbiAgICAgKiBjb25zdCBjYW5TZXRQYXRocyA9IGdsb2JhbENvbmZpZy5oYXNQZXJtaXNzaW9uVG9TZXRQYXRocyhbXG4gICAgICogICAgIHtwYXRoOiBbJ3RvcExldmVsS2V5MScsICduZXN0ZWRLZXkxJ10sIHZhbHVlOiAnZm9vJ30sXG4gICAgICogICAgIHtwYXRoOiBbJ3RvcExldmVsS2V5MicsICduZXN0ZWRLZXkyJ10sIHZhbHVlOiAnYmFyJ30sXG4gICAgICogXSk7XG4gICAgICogaWYgKCFjYW5TZXRQYXRocykge1xuICAgICAqICAgICBhbGVydCgnbm90IGFsbG93ZWQhJyk7XG4gICAgICogfVxuICAgICAqXG4gICAgICogLy8gQ2hlY2sgaWYgdXNlciBjb3VsZCBwb3RlbnRpYWxseSBzZXQgZ2xvYmFsQ29uZmlnIHZhbHVlcy5cbiAgICAgKiAvLyBFcXVpdmFsZW50IHRvIGdsb2JhbENvbmZpZy5oYXNQZXJtaXNzaW9uVG9TZXQoKVxuICAgICAqIGNvbnN0IGNhblNldEFueVBhdGhzID0gZ2xvYmFsQ29uZmlnLmhhc1Blcm1pc3Npb25Ub1NldFBhdGhzKCk7XG4gICAgICogYGBgXG4gICAgICovXG4gICAgaGFzUGVybWlzc2lvblRvU2V0UGF0aHModXBkYXRlcz86IFJlYWRvbmx5QXJyYXk8UGFydGlhbEdsb2JhbENvbmZpZ1VwZGF0ZT4pOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY2hlY2tQZXJtaXNzaW9uc0ZvclNldFBhdGhzKHVwZGF0ZXMpLmhhc1Blcm1pc3Npb247XG4gICAgfVxuICAgIC8qKlxuICAgICAqIFNldHMgbXVsdGlwbGUgdmFsdWVzLiBUaHJvd3MgaWYgYW55IHBhdGggb3IgdmFsdWUgaXMgaW52YWxpZC5cbiAgICAgKlxuICAgICAqIFRoaXMgYWN0aW9uIGlzIGFzeW5jaHJvbm91czogYGF3YWl0YCB0aGUgcmV0dXJuZWQgcHJvbWlzZSBpZiB5b3Ugd2lzaCB0byB3YWl0IGZvciB0aGVcbiAgICAgKiB1cGRhdGVzIHRvIGJlIHBlcnNpc3RlZCB0byBBaXJ0YWJsZSBzZXJ2ZXJzLlxuICAgICAqIFVwZGF0ZXMgYXJlIGFwcGxpZWQgb3B0aW1pc3RpY2FsbHkgbG9jYWxseSwgc28geW91ciBjaGFuZ2VzIHdpbGwgYmUgcmVmbGVjdGVkIGluXG4gICAgICoge0BsaW5rIEdsb2JhbENvbmZpZ30gYmVmb3JlIHRoZSBwcm9taXNlIHJlc29sdmVzLlxuICAgICAqXG4gICAgICogQHBhcmFtIHVwZGF0ZXMgVGhlIHBhdGhzIGFuZCB2YWx1ZXMgdG8gc2V0LlxuICAgICAqIEBleGFtcGxlXG4gICAgICogYGBganNcbiAgICAgKiBpbXBvcnQge2dsb2JhbENvbmZpZ30gZnJvbSAnQGFpcnRhYmxlL2Jsb2Nrcyc7XG4gICAgICpcbiAgICAgKiBjb25zdCB1cGRhdGVzID0gW1xuICAgICAqICAgICB7cGF0aDogWyd0b3BMZXZlbEtleTEnLCAnbmVzdGVkS2V5MSddLCB2YWx1ZTogJ2Zvbyd9LFxuICAgICAqICAgICB7cGF0aDogWyd0b3BMZXZlbEtleTInLCAnbmVzdGVkS2V5MiddLCB2YWx1ZTogJ2Jhcid9LFxuICAgICAqIF07XG4gICAgICpcbiAgICAgKiBmdW5jdGlvbiBhcHBseVVwZGF0ZXNJZlBvc3NpYmxlKCkge1xuICAgICAqICAgICBpZiAoZ2xvYmFsQ29uZmlnLmhhc1Blcm1pc3Npb25Ub1NldFBhdGhzKHVwZGF0ZXMpKSB7XG4gICAgICogICAgICAgICBnbG9iYWxDb25maWcuc2V0UGF0aHNBc3luYyh1cGRhdGVzKTtcbiAgICAgKiAgICAgfVxuICAgICAqICAgICAvLyBUaGUgdXBkYXRlcyBhcmUgbm93IGFwcGxpZWQgd2l0aGluIHlvdXIgYXBwIChlZyB3aWxsIGJlIHJlZmxlY3RlZCBpblxuICAgICAqICAgICAvLyBnbG9iYWxDb25maWcpIGJ1dCBhcmUgc3RpbGwgYmVpbmcgc2F2ZWQgdG8gQWlydGFibGUgc2VydmVycyAoZS5nLiB0aGV5XG4gICAgICogICAgIC8vIG1heSBub3QgYmUgdXBkYXRlZCBmb3Igb3RoZXIgdXNlcnMgeWV0KVxuICAgICAqIH1cbiAgICAgKlxuICAgICAqIGFzeW5jIGZ1bmN0aW9uIGFwcGx5VXBkYXRlc0lmUG9zc2libGVBc3luYygpIHtcbiAgICAgKiAgICAgaWYgKGdsb2JhbENvbmZpZy5oYXNQZXJtaXNzaW9uVG9TZXRQYXRocyh1cGRhdGVzKSkge1xuICAgICAqICAgICAgICAgYXdhaXQgZ2xvYmFsQ29uZmlnLnNldFBhdGhzQXN5bmModXBkYXRlcyk7XG4gICAgICogICAgIH1cbiAgICAgKiAgICAgLy8gZ2xvYmFsQ29uZmlnIHVwZGF0ZXMgaGF2ZSBiZWVuIHNhdmVkIHRvIEFpcnRhYmxlIHNlcnZlcnMuXG4gICAgICogICAgIGFsZXJ0KCdnbG9iYWxDb25maWcgaGFzIGJlZW4gdXBkYXRlZCcpO1xuICAgICAqIH1cbiAgICAgKiBgYGBcbiAgICAgKi9cbiAgICBhc3luYyBzZXRQYXRoc0FzeW5jKHVwZGF0ZXM6IEFycmF5PEdsb2JhbENvbmZpZ1VwZGF0ZT4pOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgLy8gVmFsaWRhdGUgdGhlIHVwZGF0ZXMuIFVzdWFsbHkgYXBwbHlNdXRhdGlvbkFzeW5jIHBlcmZvcm1zIHZhbGlkYXRpb25zLCBidXQgZ2xvYmFsQ29uZmlnXG4gICAgICAgIC8vIHVwZGF0ZXMgYXJlIGEgc3BlY2lhbCBjYXNlIGJlY2F1c2UgaXQgcmVsaWVzIG9uIGludGVybmFsIGdsb2JhbENvbmZpZyBzdGF0ZSB0byB2YWxpZGF0ZS5cbiAgICAgICAgLy8gV2UgY2hlY2sgaGVyZSwgaW5zdGVhZCBvZiBkZWVwZXIgKGUuZy4gb24gdGhlIGxpdmVhcHAgc2lkZSkgc28gdGhlIHVzZXJcbiAgICAgICAgLy8gZ2V0cyBhIG1vcmUgdXNlZnVsIGVycm9yIHN0YWNrIHRyYWNlLlxuICAgICAgICBpZiAoIXRoaXMuaGFzUGVybWlzc2lvblRvU2V0UGF0aHModXBkYXRlcykpIHtcbiAgICAgICAgICAgIHRocm93IHNwYXduRXJyb3IoJ1lvdXIgcGVybWlzc2lvbiBsZXZlbCBkb2VzIG5vdCBhbGxvdyBzZXR0aW5nIGdsb2JhbENvbmZpZyB2YWx1ZXMnKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGZvciAoY29uc3QgdXBkYXRlIG9mIHVwZGF0ZXMpIHtcbiAgICAgICAgICAgIGNvbnN0IHBhdGhWYWxpZGF0aW9uID0gdGhpcy5fdmFsaWRhdGVQYXRoKHVwZGF0ZS5wYXRoLCB0aGlzLl9rdlN0b3JlKTtcbiAgICAgICAgICAgIGlmICghcGF0aFZhbGlkYXRpb24uaXNWYWxpZCkge1xuICAgICAgICAgICAgICAgIHRocm93IHNwYXduRXJyb3IoJ0ludmFsaWQgZ2xvYmFsQ29uZmlnIHBhdGg6ICVzJywgcGF0aFZhbGlkYXRpb24ucmVhc29uKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGF3YWl0IHRoaXMuX3Nkay5fX211dGF0aW9ucy5hcHBseU11dGF0aW9uQXN5bmMoe1xuICAgICAgICAgICAgdHlwZTogTXV0YXRpb25UeXBlcy5TRVRfTVVMVElQTEVfR0xPQkFMX0NPTkZJR19QQVRIUyxcbiAgICAgICAgICAgIHVwZGF0ZXMsXG4gICAgICAgIH0pO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBAaW50ZXJuYWxcbiAgICAgKiB0aGlzIHNob3VsZG4ndCBiZSBjYWxsZWQgZGlyZWN0bHkgLSBpbnN0ZWFkLCB1c2UgdGhpcy5fc2RrLl9fYXBwbHlHbG9iYWxDb25maWdVcGRhdGVzKClcbiAgICAgKi9cbiAgICBfX3NldE11bHRpcGxlS3ZQYXRocyh1cGRhdGVzOiBSZWFkb25seUFycmF5PEdsb2JhbENvbmZpZ1VwZGF0ZT4pIHtcbiAgICAgICAgLy8gVGhpcyBoZWxwZXIgdmFsaWRhdGVzIHVwZGF0ZXMgYW5kIHRocm93IGVycm9ycyBpZiBuZWNlc3NhcnkuXG4gICAgICAgIC8vIFRvIGF2b2lkIHRoZSBjYXNlIHdoZXJlIGFuIGVycm9yIGlzIGVuY291bnRlcmVkIGFmdGVyIHNvbWUgdXBkYXRlcyBoYXZlIGFscmVhZHkgYmVlblxuICAgICAgICAvLyBhcHBsaWVkICh3aGVyZSB3ZSdkIGhhdmUgdG8gY3Jhc2ggdGhlIGJsb2NrIGluc3RlYWQgb2YgbGV0dGluZyB0aGUgZGV2ZWxvcGVyIGNhdGNoIHRoZVxuICAgICAgICAvLyBlcnJvciksIGl0IGRvZXNuJ3QgbXV0YXRlIHRoZSBjdXJyZW50IHN0b3JlOiBpdCByZXR1cm5zIG5ld0t2U3RvcmUgd2l0aCBjaGFuZ2VzIGFwcGxpZWQuXG4gICAgICAgIGNvbnN0IHtcbiAgICAgICAgICAgIG5ld0t2U3RvcmUsXG4gICAgICAgICAgICBjaGFuZ2VkVG9wTGV2ZWxLZXlzLFxuICAgICAgICB9ID0gdGhpcy5fYWlydGFibGVJbnRlcmZhY2UuZ2xvYmFsQ29uZmlnSGVscGVycy52YWxpZGF0ZUFuZEFwcGx5VXBkYXRlcyhcbiAgICAgICAgICAgIHVwZGF0ZXMsXG4gICAgICAgICAgICB0aGlzLl9rdlN0b3JlLFxuICAgICAgICApO1xuXG4gICAgICAgIC8vIFRoZSB1cGRhdGVzIGFyZSBhbGwgZ29vZCEgUmVwbGFjZSBvdXIga3ZTdG9yZSB3aXRoIHRoZSBuZXcgdmVyc2lvbi5cbiAgICAgICAgdGhpcy5fa3ZTdG9yZSA9IG5ld0t2U3RvcmU7XG5cbiAgICAgICAgLy8gTm93IGxvb3Agb3ZlciB0aGUgdG9wIGxldmVsIGtleXMgdG8gZmlyZSBjaGFuZ2UgZXZlbnRzLlxuICAgICAgICBmb3IgKGNvbnN0IGtleSBvZiBjaGFuZ2VkVG9wTGV2ZWxLZXlzKSB7XG4gICAgICAgICAgICB0aGlzLl9vbkNoYW5nZShrZXkpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChjaGFuZ2VkVG9wTGV2ZWxLZXlzLmxlbmd0aCkge1xuICAgICAgICAgICAgdGhpcy5fb25DaGFuZ2UoJyonKTtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgR2xvYmFsQ29uZmlnO1xuIl19
package/dist/cjs/index.js CHANGED
@@ -113,4 +113,5 @@ function __reset() {
113
113
  (0, _warning.__injectSdkIntoWarning)(__sdk);
114
114
  }
115
115
 
116
- __reset();
116
+ __reset();
117
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9pbmRleC50cyJdLCJuYW1lcyI6WyJfX3NkayIsImJhc2UiLCJnbG9iYWxDb25maWciLCJpbnN0YWxsYXRpb25JZCIsInJlbG9hZCIsInJ1bkluZm8iLCJzZXR0aW5nc0J1dHRvbiIsInVuZG9SZWRvIiwidmlld3BvcnQiLCJ1bnN0YWJsZV9mZXRjaEFzeW5jIiwiY3Vyc29yIiwiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJtb2R1bGUiLCJleHBvcnRzIiwiZW51bWVyYWJsZSIsImdldCIsInNlc3Npb24iLCJyZXF1aXJlIiwiX19yZXNldCIsIlNkayJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7O0FBQUE7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBRUE7QUFDTyxJQUFJQSxLQUFKOzs7QUFDQSxJQUFJQyxJQUFKOztBQUNBLElBQUlDLFlBQUo7O0FBQ0EsSUFBSUMsY0FBSjs7QUFDQSxJQUFJQyxNQUFKOztBQUNBLElBQUlDLE9BQUo7O0FBQ0EsSUFBSUMsY0FBSjs7QUFDQSxJQUFJQyxRQUFKOztBQUNBLElBQUlDLFFBQUo7O0FBQ0EsSUFBSUMsbUJBQUosQyxDQUVQO0FBQ0E7QUFDQTs7O0FBQ08sSUFBSUMsTUFBSjs7QUFDUEMsTUFBTSxDQUFDQyxjQUFQLENBQXNCQyxNQUFNLENBQUNDLE9BQTdCLEVBQXNDLFFBQXRDLEVBQWdEO0FBQzVDQyxFQUFBQSxVQUFVLEVBQUUsSUFEZ0M7O0FBRTVDQyxFQUFBQSxHQUFHLEdBQUc7QUFDRiwwQkFDSSx1SEFESjtBQUlBLFdBQU9oQixLQUFLLENBQUNVLE1BQWI7QUFDSDs7QUFSMkMsQ0FBaEQsRSxDQVdBO0FBQ0E7QUFDQTs7QUFDTyxJQUFJTyxPQUFKOztBQUNQTixNQUFNLENBQUNDLGNBQVAsQ0FBc0JDLE1BQU0sQ0FBQ0MsT0FBN0IsRUFBc0MsU0FBdEMsRUFBaUQ7QUFDN0NDLEVBQUFBLFVBQVUsRUFBRSxJQURpQzs7QUFFN0NDLEVBQUFBLEdBQUcsR0FBRztBQUNGLDBCQUNJLHlIQURKO0FBSUEsV0FBT2hCLEtBQUssQ0FBQ2lCLE9BQWI7QUFDSDs7QUFSNEMsQ0FBakQ7QUFXQU4sTUFBTSxDQUFDQyxjQUFQLENBQXNCQyxNQUFNLENBQUNDLE9BQTdCLEVBQXNDLElBQXRDLEVBQTRDO0FBQ3hDQyxFQUFBQSxVQUFVLEVBQUUsSUFENEI7O0FBRXhDQyxFQUFBQSxHQUFHLEdBQUc7QUFDRiwwQkFDSSxrSEFESjtBQUlBLFdBQU9FLE9BQU8sQ0FBQyxTQUFELENBQWQ7QUFDSDs7QUFSdUMsQ0FBNUM7QUFXQVAsTUFBTSxDQUFDQyxjQUFQLENBQXNCQyxNQUFNLENBQUNDLE9BQTdCLEVBQXNDLFFBQXRDLEVBQWdEO0FBQzVDQyxFQUFBQSxVQUFVLEVBQUUsSUFEZ0M7O0FBRTVDQyxFQUFBQSxHQUFHLEdBQUc7QUFDRiwwQkFDSSxrSUFESjtBQUlBLFdBQU9FLE9BQU8sQ0FBQyxpQkFBRCxDQUFkO0FBQ0g7O0FBUjJDLENBQWhEO0FBV0E7O0FBQ08sU0FBU0MsT0FBVCxHQUFtQjtBQUN0QixrQkFBQW5CLEtBQUssR0FBRyxJQUFJb0IsYUFBSixDQUFRLGtDQUFSLENBQVI7QUFEc0IsYUFhbEJwQixLQWJrQjtBQUFBLGlCQUlsQkMsSUFKa0IsUUFJbEJBLElBSmtCO0FBQUEseUJBS2xCQyxZQUxrQixRQUtsQkEsWUFMa0I7QUFBQSwyQkFNbEJDLGNBTmtCLFFBTWxCQSxjQU5rQjtBQUFBLG1CQU9sQkMsTUFQa0IsUUFPbEJBLE1BUGtCO0FBQUEsb0JBUWxCQyxPQVJrQixRQVFsQkEsT0FSa0I7QUFBQSwyQkFTbEJDLGNBVGtCLFFBU2xCQSxjQVRrQjtBQUFBLHFCQVVsQkMsUUFWa0IsUUFVbEJBLFFBVmtCO0FBQUEscUJBV2xCQyxRQVhrQixRQVdsQkEsUUFYa0I7QUFBQSxnQ0FZbEJDLG1CQVprQixRQVlsQkEsbUJBWmtCO0FBZXRCO0FBQ0E7QUFDQTtBQUNBLDREQUFpQ1QsS0FBakM7QUFDQSxpRUFBbUNBLEtBQW5DO0FBQ0Esd0RBQStCQSxLQUEvQjtBQUNBLHVDQUF1QkEsS0FBdkI7QUFDSDs7QUFFRG1CLE9BQU8iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge19faW5qZWN0U2RrSW50b1BlcmZvcm1SZWNvcmRBY3Rpb259IGZyb20gJy4vcGVyZm9ybV9yZWNvcmRfYWN0aW9uJztcbmltcG9ydCB3YXJuLCB7X19pbmplY3RTZGtJbnRvV2FybmluZ30gZnJvbSAnLi93YXJuaW5nJztcbmltcG9ydCBnZXRBaXJ0YWJsZUludGVyZmFjZSBmcm9tICcuL2luamVjdGVkL2FpcnRhYmxlX2ludGVyZmFjZSc7XG5pbXBvcnQgU2RrIGZyb20gJy4vc2RrJztcbmltcG9ydCB7X19pbmplY3RTZGtJbnRvQ3JlYXRlQWdncmVnYXRvcnN9IGZyb20gJy4vbW9kZWxzL2NyZWF0ZV9hZ2dyZWdhdG9ycyc7XG5pbXBvcnQge19faW5qZWN0U2RrSW50b0luaXRpYWxpemVCbG9ja30gZnJvbSAnLi91aS9pbml0aWFsaXplX2Jsb2NrJztcblxuLyoqIEBpbnRlcm5hbCAqL1xuZXhwb3J0IGxldCBfX3NkazogU2RrO1xuZXhwb3J0IGxldCBiYXNlOiBTZGtbJ2Jhc2UnXTtcbmV4cG9ydCBsZXQgZ2xvYmFsQ29uZmlnOiBTZGtbJ2dsb2JhbENvbmZpZyddO1xuZXhwb3J0IGxldCBpbnN0YWxsYXRpb25JZDogU2RrWydpbnN0YWxsYXRpb25JZCddO1xuZXhwb3J0IGxldCByZWxvYWQ6IFNka1sncmVsb2FkJ107XG5leHBvcnQgbGV0IHJ1bkluZm86IFNka1sncnVuSW5mbyddO1xuZXhwb3J0IGxldCBzZXR0aW5nc0J1dHRvbjogU2RrWydzZXR0aW5nc0J1dHRvbiddO1xuZXhwb3J0IGxldCB1bmRvUmVkbzogU2RrWyd1bmRvUmVkbyddO1xuZXhwb3J0IGxldCB2aWV3cG9ydDogU2RrWyd2aWV3cG9ydCddO1xuZXhwb3J0IGxldCB1bnN0YWJsZV9mZXRjaEFzeW5jOiBTZGtbJ3Vuc3RhYmxlX2ZldGNoQXN5bmMnXTtcblxuLy8gVGhlIGBjdXJzb3JgIGJpbmRpbmcgaXMgZGVjbGFyZWQgb24gdGhlIGZvbGxvd2luZyBsaW5lIHNvbGVseSBhcyBhIHNpZ25hbCB0b1xuLy8gdGhlIFR5cGVTY3JpcHQgY29tcGlsZXIuIFRoZSBleHBvcnRlZCB2YWx1ZSBpcyBhY3R1YWxseSBjb250cm9sbGVkIGJ5IHRoZVxuLy8gc3Vic2VxdWVudCBDb21tb25KUyBtb2R1bGUgcHJvcGVydHkgZGVzY3JpcHRvci5cbmV4cG9ydCBsZXQgY3Vyc29yOiBTZGtbJ2N1cnNvciddO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KG1vZHVsZS5leHBvcnRzLCAnY3Vyc29yJywge1xuICAgIGVudW1lcmFibGU6IHRydWUsXG4gICAgZ2V0KCkge1xuICAgICAgICB3YXJuKFxuICAgICAgICAgICAgJ2BpbXBvcnQge2N1cnNvcn0gZnJvbSBcIkBhaXJ0YWJsZS9ibG9ja3NcImAgaXMgZGVwcmVjYXRlZC4gVXNlIGBpbXBvcnQge3VzZUN1cnNvcn0gZnJvbSBcIkBhaXJ0YWJsZS9ibG9ja3MvdWlcImAgaW5zdGVhZC4nLFxuICAgICAgICApO1xuXG4gICAgICAgIHJldHVybiBfX3Nkay5jdXJzb3I7XG4gICAgfSxcbn0pO1xuXG4vLyBUaGUgYHNlc3Npb25gIGJpbmRpbmcgaXMgZGVjbGFyZWQgb24gdGhlIGZvbGxvd2luZyBsaW5lIHNvbGVseSBhcyBhIHNpZ25hbFxuLy8gdG8gdGhlIFR5cGVTY3JpcHQgY29tcGlsZXIuIFRoZSBleHBvcnRlZCB2YWx1ZSBpcyBhY3R1YWxseSBjb250cm9sbGVkIGJ5IHRoZVxuLy8gc3Vic2VxdWVudCBDb21tb25KUyBtb2R1bGUgcHJvcGVydHkgZGVzY3JpcHRvci5cbmV4cG9ydCBsZXQgc2Vzc2lvbjogU2RrWydzZXNzaW9uJ107XG5PYmplY3QuZGVmaW5lUHJvcGVydHkobW9kdWxlLmV4cG9ydHMsICdzZXNzaW9uJywge1xuICAgIGVudW1lcmFibGU6IHRydWUsXG4gICAgZ2V0KCkge1xuICAgICAgICB3YXJuKFxuICAgICAgICAgICAgJ2BpbXBvcnQge3Nlc3Npb259IGZyb20gXCJAYWlydGFibGUvYmxvY2tzXCJgIGlzIGRlcHJlY2F0ZWQuIFVzZSBgaW1wb3J0IHt1c2VTZXNzaW9ufSBmcm9tIFwiQGFpcnRhYmxlL2Jsb2Nrcy91aVwiYCBpbnN0ZWFkLicsXG4gICAgICAgICk7XG5cbiAgICAgICAgcmV0dXJuIF9fc2RrLnNlc3Npb247XG4gICAgfSxcbn0pO1xuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkobW9kdWxlLmV4cG9ydHMsICdVSScsIHtcbiAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgIGdldCgpIHtcbiAgICAgICAgd2FybihcbiAgICAgICAgICAgICdgaW1wb3J0IHtVSX0gZnJvbSBcIkBhaXJ0YWJsZS9ibG9ja3NcImAgaXMgZGVwcmVjYXRlZC4gVXNlIGBpbXBvcnQgKiBhcyBVSSBmcm9tIFwiQGFpcnRhYmxlL2Jsb2Nrcy91aS91aVwiYCBpbnN0ZWFkLicsXG4gICAgICAgICk7XG5cbiAgICAgICAgcmV0dXJuIHJlcXVpcmUoJy4vdWkvdWknKTtcbiAgICB9LFxufSk7XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShtb2R1bGUuZXhwb3J0cywgJ21vZGVscycsIHtcbiAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgIGdldCgpIHtcbiAgICAgICAgd2FybihcbiAgICAgICAgICAgICdgaW1wb3J0IHttb2RlbHN9IGZyb20gXCJAYWlydGFibGUvYmxvY2tzXCJgIGlzIGRlcHJlY2F0ZWQuIFVzZSBgaW1wb3J0ICogYXMgbW9kZWxzIGZyb20gXCJAYWlydGFibGUvYmxvY2tzL21vZGVscy9tb2RlbHNcImAgaW5zdGVhZC4nLFxuICAgICAgICApO1xuXG4gICAgICAgIHJldHVybiByZXF1aXJlKCcuL21vZGVscy9tb2RlbHMnKTtcbiAgICB9LFxufSk7XG5cbi8qKiBAaW50ZXJuYWwgKi9cbmV4cG9ydCBmdW5jdGlvbiBfX3Jlc2V0KCkge1xuICAgIF9fc2RrID0gbmV3IFNkayhnZXRBaXJ0YWJsZUludGVyZmFjZSgpKTtcblxuICAgICh7XG4gICAgICAgIGJhc2UsXG4gICAgICAgIGdsb2JhbENvbmZpZyxcbiAgICAgICAgaW5zdGFsbGF0aW9uSWQsXG4gICAgICAgIHJlbG9hZCxcbiAgICAgICAgcnVuSW5mbyxcbiAgICAgICAgc2V0dGluZ3NCdXR0b24sXG4gICAgICAgIHVuZG9SZWRvLFxuICAgICAgICB2aWV3cG9ydCxcbiAgICAgICAgdW5zdGFibGVfZmV0Y2hBc3luYyxcbiAgICB9ID0gX19zZGspO1xuXG4gICAgLy8gVGhlIGZvbGxvd2luZyBpbmplY3Rpb25zIGFyZSBuZWNlc3NhcnkgdG8gYWxsb3cgdGhlIHJlZmVyZW5jZWQgbW9kdWxlc1xuICAgIC8vIHRvIGJlIGltcG9ydGVkIGRpcmVjdGx5IGJ5IGNvbnN1bWVyIGNvZGUgd2hpbGUgYWxzbyBhdm9pZGluZyBjeWNsZXMgaW5cbiAgICAvLyB0aGUgbW9kdWxlIGRlcGVuZGVuY3kgZ3JhcGguXG4gICAgX19pbmplY3RTZGtJbnRvQ3JlYXRlQWdncmVnYXRvcnMoX19zZGspO1xuICAgIF9faW5qZWN0U2RrSW50b1BlcmZvcm1SZWNvcmRBY3Rpb24oX19zZGspO1xuICAgIF9faW5qZWN0U2RrSW50b0luaXRpYWxpemVCbG9jayhfX3Nkayk7XG4gICAgX19pbmplY3RTZGtJbnRvV2FybmluZyhfX3Nkayk7XG59XG5cbl9fcmVzZXQoKTtcbiJdfQ==
@@ -24,4 +24,5 @@ function getAirtableInterface() {
24
24
  }
25
25
 
26
26
  return airtableInterface;
27
- }
27
+ }
28
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9pbmplY3RlZC9haXJ0YWJsZV9pbnRlcmZhY2UudHMiXSwibmFtZXMiOlsiQUlSVEFCTEVfSU5URVJGQUNFX1ZFUlNJT04iLCJhaXJ0YWJsZUludGVyZmFjZSIsIm1pc3NpbmdBaXJ0YWJsZUludGVyZmFjZUVycm9yTWVzc2FnZSIsImpvaW4iLCJnZXRBaXJ0YWJsZUludGVyZmFjZSIsImdldEFpcnRhYmxlSW50ZXJmYWNlQXRWZXJzaW9uIiwid2luZG93IiwiX19nZXRBaXJ0YWJsZUludGVyZmFjZUF0VmVyc2lvbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUFBOztBQUdBLElBQU1BLDBCQUEwQixHQUFHLENBQW5DO0FBRUEsSUFBSUMsaUJBQTJDLEdBQUcsSUFBbEQ7QUFFQSxJQUFNQyxvQ0FBb0MsR0FBRyxDQUN6QyxzQ0FEeUMsRUFFekMsTUFGeUMsRUFHekMseUVBSHlDLEVBSXpDLHlFQUp5QyxFQUt6QywwRUFMeUMsRUFNekMsK0RBTnlDLEVBT3pDLE1BUHlDLEVBUXpDLHdFQVJ5QyxFQVN6QyxzRUFUeUMsRUFVekMsNEJBVnlDLEVBVzNDQyxJQVgyQyxDQVd0QyxFQVhzQyxDQUE3QztBQWFBOztBQUNlLFNBQVNDLG9CQUFULEdBQW1EO0FBQzlELE1BQU1DLDZCQUVJLEdBQUlDLE1BQUQsQ0FBZ0JDLCtCQUY3Qjs7QUFJQSxNQUFJLENBQUNOLGlCQUFMLEVBQXdCO0FBQ3BCLFFBQUksQ0FBQ0ksNkJBQUwsRUFBb0M7QUFDaEMsWUFBTSw2QkFBV0gsb0NBQVgsQ0FBTjtBQUNIOztBQUVERCxJQUFBQSxpQkFBaUIsR0FBR0ksNkJBQTZCLENBQUNMLDBCQUFELENBQWpEO0FBQ0g7O0FBRUQsU0FBT0MsaUJBQVA7QUFDSCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7c3Bhd25FcnJvcn0gZnJvbSAnLi4vZXJyb3JfdXRpbHMnO1xuaW1wb3J0IHtBaXJ0YWJsZUludGVyZmFjZX0gZnJvbSAnLi4vdHlwZXMvYWlydGFibGVfaW50ZXJmYWNlJztcblxuY29uc3QgQUlSVEFCTEVfSU5URVJGQUNFX1ZFUlNJT04gPSAwO1xuXG5sZXQgYWlydGFibGVJbnRlcmZhY2U6IEFpcnRhYmxlSW50ZXJmYWNlIHwgbnVsbCA9IG51bGw7XG5cbmNvbnN0IG1pc3NpbmdBaXJ0YWJsZUludGVyZmFjZUVycm9yTWVzc2FnZSA9IFtcbiAgICAnRXJyb3I6IEFwcCBlbnZpcm9ubWVudCBtaXNjb25maWd1cmVkJyxcbiAgICAnXFxuXFxuJyxcbiAgICAnQWlydGFibGUgQXBwcyBjYW4gb25seSBydW4gaW4gdGhlIHByZXNlbmNlIG9mIGFuIEFpcnRhYmxlIEJhc2UuIElmIHlvdSAnLFxuICAgICdhcmUgdHJ5aW5nIHRvIHJ1biB5b3VyIEFwcCB3aXRoIGEgQmFzZSBob3N0ZWQgb24gYWlydGFibGUuY29tLCB0aGVuIGJlICcsXG4gICAgJ3N1cmUgeW91IGFyZSB1c2luZyB0aGUgQWlydGFibGUgQ0xJIHRvIHNlcnZlIHlvdXIgY29kZSBhbmQgYWNjZXNzaW5nIGl0ICcsXG4gICAgJ3Rocm91Z2ggYSBDdXN0b20gQXBwIGluc3RhbGxlZCBpbnNpZGUgYSBCYXNlIG9uIGFpcnRhYmxlLmNvbS4nLFxuICAgICdcXG5cXG4nLFxuICAgICdJZiB5b3UgYXJlIHRyeWluZyB0byBydW4gYXV0b21hdGVkIHRlc3RzIGZvciB5b3VyIEFwcCwgdGhlbiBtYWtlIHN1cmUgJyxcbiAgICAneW91IGhhdmUgbG9hZGVkIHRoZSBgQGFpcnRhYmxlL3Rlc3RpbmctbGlicmFyeWAgbW9kdWxlICpiZWZvcmUqIHRoZSAnLFxuICAgICdgQGFpcnRhYmxlL2Jsb2Nrc2AgbW9kdWxlLicsXG5dLmpvaW4oJycpO1xuXG4vKiogQGhpZGRlbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZ2V0QWlydGFibGVJbnRlcmZhY2UoKTogQWlydGFibGVJbnRlcmZhY2Uge1xuICAgIGNvbnN0IGdldEFpcnRhYmxlSW50ZXJmYWNlQXRWZXJzaW9uOlxuICAgICAgICB8ICgoYXJnMTogbnVtYmVyKSA9PiBBaXJ0YWJsZUludGVyZmFjZSlcbiAgICAgICAgfCB2b2lkID0gKHdpbmRvdyBhcyBhbnkpLl9fZ2V0QWlydGFibGVJbnRlcmZhY2VBdFZlcnNpb247XG5cbiAgICBpZiAoIWFpcnRhYmxlSW50ZXJmYWNlKSB7XG4gICAgICAgIGlmICghZ2V0QWlydGFibGVJbnRlcmZhY2VBdFZlcnNpb24pIHtcbiAgICAgICAgICAgIHRocm93IHNwYXduRXJyb3IobWlzc2luZ0FpcnRhYmxlSW50ZXJmYWNlRXJyb3JNZXNzYWdlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGFpcnRhYmxlSW50ZXJmYWNlID0gZ2V0QWlydGFibGVJbnRlcmZhY2VBdFZlcnNpb24oQUlSVEFCTEVfSU5URVJGQUNFX1ZFUlNJT04pO1xuICAgIH1cblxuICAgIHJldHVybiBhaXJ0YWJsZUludGVyZmFjZTtcbn1cbiJdfQ==
@@ -147,4 +147,5 @@ function (_Watchable) {
147
147
 
148
148
  (0, _defineProperty2.default)(AbstractModel, "_className", 'AbstractModel');
149
149
  var _default = AbstractModel;
150
- exports.default = _default;
150
+ exports.default = _default;
151
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9tb2RlbHMvYWJzdHJhY3RfbW9kZWwudHMiXSwibmFtZXMiOlsiQWJzdHJhY3RNb2RlbCIsImtleSIsInNkayIsIm1vZGVsSWQiLCJjb25zdHJ1Y3RvciIsIl9jbGFzc05hbWUiLCJfc2RrIiwiX2Jhc2VEYXRhIiwiX19haXJ0YWJsZUludGVyZmFjZSIsInNka0luaXREYXRhIiwiYmFzZURhdGEiLCJfaWQiLCJpZCIsImRhdGEiLCJfZGF0YU9yTnVsbElmRGVsZXRlZCIsIl9zcGF3bkVycm9yRm9yRGVsZXRpb24iLCJXYXRjaGFibGUiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFDQTs7QUFHQTs7QUFKQTs7QUFBd0Q7O0FBTXhEOzs7OztJQUtlQSxhOzs7Ozs7O0FBR1g7O0FBRUE7Ozs7Ozs7O0FBUUE7b0NBQ3VCQyxHLEVBQXNCO0FBQ3pDO0FBQ0EsYUFBTyxLQUFQO0FBQ0g7QUFDRDs7OztBQU1BOzs7QUFHQSx5QkFBWUMsR0FBWixFQUFzQkMsT0FBdEIsRUFBdUM7QUFBQTs7QUFBQTtBQUNuQztBQURtQztBQUFBO0FBQUE7QUFHbkMsZ0NBQ0ksT0FBT0EsT0FBUCxLQUFtQixRQUR2QixFQUVJLDBCQUZKLEVBR0ssTUFBS0MsV0FBTixDQUEyQ0MsVUFIL0M7QUFNQSxVQUFLQyxJQUFMLEdBQVlKLEdBQVo7QUFDQSxVQUFLSyxTQUFMLEdBQWlCTCxHQUFHLENBQUNNLG1CQUFKLENBQXdCQyxXQUF4QixDQUFvQ0MsUUFBckQ7QUFDQSxVQUFLQyxHQUFMLEdBQVdSLE9BQVg7QUFYbUM7QUFZdEM7QUFDRDs7Ozs7Ozs7QUFnQ0E7Ozs2Q0FHZ0M7QUFDNUIsYUFBTyw2QkFDSCxxQkFERyxFQUVGLEtBQUtDLFdBQU4sQ0FBMkNDLFVBRnhDLENBQVA7QUFJSDtBQUNEOzs7Ozs7K0JBR21CO0FBQ2Ysd0JBQVksS0FBS0QsV0FBTixDQUEyQ0MsVUFBdEQsY0FBb0UsS0FBS08sRUFBekU7QUFDSDs7O3dCQTNDZ0I7QUFDYixhQUFPLEtBQUtELEdBQVo7QUFDSDtBQUNEOzs7Ozs7O0FBSUE7Ozt3QkFHc0I7QUFDbEIsVUFBTUUsSUFBSSxHQUFHLEtBQUtDLG9CQUFsQjs7QUFDQSxVQUFJRCxJQUFJLEtBQUssSUFBYixFQUFtQjtBQUNmLGNBQU0sS0FBS0Usc0JBQUwsRUFBTjtBQUNIOztBQUNELGFBQU9GLElBQVA7QUFDSDtBQUNEOzs7Ozs7Ozs7Ozs7d0JBU3lCO0FBQ3JCLGFBQU8sS0FBS0Msb0JBQUwsS0FBOEIsSUFBckM7QUFDSDs7O0VBdkV1RUUsa0I7OzhCQUE3RGhCLGEsZ0JBSVMsZTtlQXFGVEEsYSIsInNvdXJjZXNDb250ZW50IjpbIi8qKiBAbW9kdWxlIEBhaXJ0YWJsZS9ibG9ja3MvbW9kZWxzOiBBYnN0cmFjdCBtb2RlbHMgKi8gLyoqICovXG5pbXBvcnQge2ludmFyaWFudCwgc3Bhd25FcnJvcn0gZnJvbSAnLi4vZXJyb3JfdXRpbHMnO1xuaW1wb3J0IFNkayBmcm9tICcuLi9zZGsnO1xuaW1wb3J0IHtCYXNlRGF0YX0gZnJvbSAnLi4vdHlwZXMvYmFzZSc7XG5pbXBvcnQgV2F0Y2hhYmxlIGZyb20gJy4uL3dhdGNoYWJsZSc7XG5cbi8qKlxuICogQWJzdHJhY3Qgc3VwZXJjbGFzcyBmb3IgYWxsIG1vZGVscy4gWW91IHdvbid0IHVzZSB0aGlzIGNsYXNzIGRpcmVjdGx5LlxuICpcbiAqIEBkb2NzUGF0aCBtb2RlbHMvYWR2YW5jZWQvQWJzdHJhY3RNb2RlbFxuICovXG5hYnN0cmFjdCBjbGFzcyBBYnN0cmFjdE1vZGVsPERhdGFUeXBlLCBXYXRjaGFibGVLZXkgZXh0ZW5kcyBzdHJpbmc+IGV4dGVuZHMgV2F0Y2hhYmxlPFxuICAgIFdhdGNoYWJsZUtleVxuPiB7XG4gICAgLyoqIEBpbnRlcm5hbCAqL1xuICAgIHN0YXRpYyBfY2xhc3NOYW1lID0gJ0Fic3RyYWN0TW9kZWwnO1xuICAgIC8qKlxuICAgICAqIFRoaXMgbWV0aG9kIGlzIGVzc2VudGlhbGx5IGFic3RyYWN0LCBidXQgYXMgb2YgdGhpcyB3cml0aW5nLCBUeXBlU2NyaXB0XG4gICAgICogZG9lcyBub3Qgc3VwcG9ydCBhYnN0cmFjdCBzdGF0aWMgbWV0aG9kcy4gVGhpcyBuZWNlc3NpdGF0ZXMgYSBjb25jcmV0ZVxuICAgICAqIGltcGxlbWVudGF0aW9uIHdoaWNoIG11c3QgYmUgZXhwbGljaXRseSBpZ25vcmVkIGJ5IHRoZSB0ZXN0IGNvdmVyYWdlXG4gICAgICogdG9vbGluZy5cbiAgICAgKlxuICAgICAqIEBpbnRlcm5hbFxuICAgICAqL1xuICAgIC8vIGlzdGFuYnVsIGlnbm9yZSBuZXh0XG4gICAgc3RhdGljIF9pc1dhdGNoYWJsZUtleShrZXk6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgICAgICAvLyBPdmVycmlkZSB0byByZXR1cm4gd2hldGhlciBga2V5YCBpcyBhIHZhbGlkIHdhdGNoYWJsZSBrZXkuXG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgLyoqIEBpbnRlcm5hbCAqL1xuICAgIF9iYXNlRGF0YTogQmFzZURhdGE7XG4gICAgLyoqIEBpbnRlcm5hbCAqL1xuICAgIF9pZDogc3RyaW5nO1xuICAgIC8qKiBAaW50ZXJuYWwgKi9cbiAgICBfc2RrOiBTZGs7XG4gICAgLyoqXG4gICAgICogQGludGVybmFsXG4gICAgICovXG4gICAgY29uc3RydWN0b3Ioc2RrOiBTZGssIG1vZGVsSWQ6IHN0cmluZykge1xuICAgICAgICBzdXBlcigpO1xuXG4gICAgICAgIGludmFyaWFudChcbiAgICAgICAgICAgIHR5cGVvZiBtb2RlbElkID09PSAnc3RyaW5nJyxcbiAgICAgICAgICAgICclcyBpZCBzaG91bGQgYmUgYSBzdHJpbmcnLFxuICAgICAgICAgICAgKHRoaXMuY29uc3RydWN0b3IgYXMgdHlwZW9mIEFic3RyYWN0TW9kZWwpLl9jbGFzc05hbWUsXG4gICAgICAgICk7XG5cbiAgICAgICAgdGhpcy5fc2RrID0gc2RrO1xuICAgICAgICB0aGlzLl9iYXNlRGF0YSA9IHNkay5fX2FpcnRhYmxlSW50ZXJmYWNlLnNka0luaXREYXRhLmJhc2VEYXRhO1xuICAgICAgICB0aGlzLl9pZCA9IG1vZGVsSWQ7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIFRoZSBJRCBmb3IgdGhpcyBtb2RlbC5cbiAgICAgKi9cbiAgICBnZXQgaWQoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2lkO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBAaW50ZXJuYWxcbiAgICAgKi9cbiAgICBhYnN0cmFjdCBnZXQgX2RhdGFPck51bGxJZkRlbGV0ZWQoKTogRGF0YVR5cGUgfCBudWxsO1xuICAgIC8qKlxuICAgICAqIEBpbnRlcm5hbFxuICAgICAqL1xuICAgIGdldCBfZGF0YSgpOiBEYXRhVHlwZSB7XG4gICAgICAgIGNvbnN0IGRhdGEgPSB0aGlzLl9kYXRhT3JOdWxsSWZEZWxldGVkO1xuICAgICAgICBpZiAoZGF0YSA9PT0gbnVsbCkge1xuICAgICAgICAgICAgdGhyb3cgdGhpcy5fc3Bhd25FcnJvckZvckRlbGV0aW9uKCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGRhdGE7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIGB0cnVlYCBpZiB0aGUgbW9kZWwgaGFzIGJlZW4gZGVsZXRlZCwgYW5kIGBmYWxzZWAgb3RoZXJ3aXNlLlxuICAgICAqXG4gICAgICogSW4gZ2VuZXJhbCwgaXQncyBiZXN0IHRvIGF2b2lkIGtlZXBpbmcgYSByZWZlcmVuY2UgdG8gYW4gb2JqZWN0IHBhc3QgdGhlXG4gICAgICogY3VycmVudCBldmVudCBsb29wLCBzaW5jZSBpdCBtYXkgYmUgZGVsZXRlZCBhbmQgdHJ5aW5nIHRvIGFjY2VzcyBhbnkgZGF0YVxuICAgICAqIG9mIGEgZGVsZXRlZCBvYmplY3QgKG90aGVyIHRoYW4gaXRzIElEKSB3aWxsIHRocm93LiBCdXQgaWYgeW91IGtlZXAgYVxuICAgICAqIHJlZmVyZW5jZSwgeW91IGNhbiB1c2UgYGlzRGVsZXRlZGAgdG8gY2hlY2sgdGhhdCBpdCdzIHNhZmUgdG8gYWNjZXNzIHRoZVxuICAgICAqIG1vZGVsJ3MgZGF0YS5cbiAgICAgKi9cbiAgICBnZXQgaXNEZWxldGVkKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fZGF0YU9yTnVsbElmRGVsZXRlZCA9PT0gbnVsbDtcbiAgICB9XG4gICAgLyoqXG4gICAgICogQGludGVybmFsXG4gICAgICovXG4gICAgX3NwYXduRXJyb3JGb3JEZWxldGlvbigpOiBFcnJvciB7XG4gICAgICAgIHJldHVybiBzcGF3bkVycm9yKFxuICAgICAgICAgICAgJyVzIGhhcyBiZWVuIGRlbGV0ZWQnLFxuICAgICAgICAgICAgKHRoaXMuY29uc3RydWN0b3IgYXMgdHlwZW9mIEFic3RyYWN0TW9kZWwpLl9jbGFzc05hbWUsXG4gICAgICAgICk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIEEgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBtb2RlbCBmb3IgdXNlIGluIGRlYnVnZ2luZy5cbiAgICAgKi9cbiAgICB0b1N0cmluZygpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gYFskeyh0aGlzLmNvbnN0cnVjdG9yIGFzIHR5cGVvZiBBYnN0cmFjdE1vZGVsKS5fY2xhc3NOYW1lfSAke3RoaXMuaWR9XWA7XG4gICAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCBBYnN0cmFjdE1vZGVsO1xuIl19
@@ -345,4 +345,5 @@ function (_AbstractModel) {
345
345
 
346
346
  (0, _defineProperty2.default)(AbstractModelWithAsyncData, "__DATA_UNLOAD_DELAY_MS", 1000);
347
347
  var _default = AbstractModelWithAsyncData;
348
- exports.default = _default;
348
+ exports.default = _default;
349
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9tb2RlbHMvYWJzdHJhY3RfbW9kZWxfd2l0aF9hc3luY19kYXRhLnRzIl0sIm5hbWVzIjpbIkFic3RyYWN0TW9kZWxXaXRoQXN5bmNEYXRhIiwia2V5Iiwic2RrIiwibW9kZWxJZCIsIl9pc0RhdGFMb2FkZWQiLCJfcGVuZGluZ0RhdGFMb2FkUHJvbWlzZSIsIl9kYXRhUmV0YWluQ291bnQiLCJfdW5sb2FkRGF0YVRpbWVvdXRJZCIsImtleXMiLCJjYWxsYmFjayIsImNvbnRleHQiLCJfYXNzZXJ0Tm90Rm9yY2VVbmxvYWRlZCIsInZhbGlkS2V5cyIsImNvbnN0cnVjdG9yIiwiX3Nob3VsZExvYWREYXRhRm9yS2V5IiwibG9hZERhdGFBc3luYyIsImJpbmQiLCJ1bmxvYWREYXRhIiwiY2xlYXJUaW1lb3V0IiwiX2xvYWREYXRhQXN5bmMiLCJ0aGVuIiwiY2hhbmdlZEtleXMiLCJfb25DaGFuZ2UiLCJfb25DaGFuZ2VJc0RhdGFMb2FkZWQiLCJfaXNGb3JjZVVubG9hZGVkIiwiY29uc29sZSIsIndhcm4iLCJfY2xhc3NOYW1lIiwic2V0VGltZW91dCIsIl91bmxvYWREYXRhIiwiX19EQVRBX1VOTE9BRF9ERUxBWV9NUyIsImlkIiwiaXNEZWxldGVkIiwiQWJzdHJhY3RNb2RlbCJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFFQTs7QUFDQTs7QUFDQTs7QUFKQTs7QUFBd0Q7O0FBTXhEOzs7OztJQUtlQSwwQjs7Ozs7OztBQUlYOztBQUVBOzBDQUM2QkMsRyxFQUFzQjtBQUMvQztBQUNBO0FBQ0EsYUFBTyxLQUFQO0FBQ0g7QUFDRDs7OztBQW9CQTtBQUNBLHNDQUFZQyxHQUFaLEVBQXNCQyxPQUF0QixFQUF1QztBQUFBOztBQUFBO0FBQ25DLGdJQUFNRCxHQUFOLEVBQVdDLE9BQVg7QUFEbUM7QUFBQTtBQUFBO0FBQUE7QUFBQSxtR0FGWCxLQUVXO0FBR25DLFVBQUtDLGFBQUws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LEdBQXdCLENBQXhCO0FBQ0g7O0FBQ0QsVUFBSSxLQUFLQSxnQkFBTCxLQUEwQixDQUE5QixFQUFpQztBQUM3QjtBQUNBO0FBQ0E7QUFDQSxhQUFLQyxvQkFBTCxHQUE0QnFCLFVBQVUsQ0FBQyxNQUFNO0FBQ3pDLHNDQUNJLEtBQUt0QixnQkFBTCxLQUEwQixDQUQ5QixFQUVJLHNEQUZKLEVBRHlDLENBTXpDO0FBQ0E7O0FBQ0EsZUFBS0YsYUFBTCxHQUFxQixLQUFyQjs7QUFDQSxlQUFLeUIsV0FBTDs7QUFDQSxlQUFLTixxQkFBTDtBQUNILFNBWHFDLEVBV25DdkIsMEJBQTBCLENBQUM4QixzQkFYUSxDQUF0QztBQVlIO0FBQ0o7OzttQ0FFYztBQUNYLGFBQU8sS0FBS3hCLGdCQUFMLEdBQXdCLENBQS9CLEVBQWtDO0FBQzlCLGFBQUtXLFVBQUw7QUFDSDs7QUFDRCxXQUFLTyxnQkFBTCxHQUF3QixJQUF4QjtBQUNIOzs7OENBRXlCO0FBQ3RCLGtDQUFVLENBQUMsS0FBS0EsZ0JBQWhCLEVBQWtDLGdDQUFsQyxFQUFvRSxLQUFLTyxFQUF6RTtBQUNIOzs7d0JBdkd3QjtBQUNyQixVQUFJLEtBQUtQLGdCQUFULEVBQTJCO0FBQ3ZCLGVBQU8sSUFBUDtBQUNIOztBQUNEO0FBQ0g7QUFDRDs7Ozt3QkFDNEI7QUFDeEIsVUFBSSxLQUFLUSxTQUFULEVBQW9CO0FBQ2hCLGVBQU8sS0FBUDtBQUNIOztBQUNELGFBQU8sS0FBSzVCLGFBQVo7QUFDSDtBQUNEOzs7O0VBdEdNNkIsdUI7OzhCQUhLakMsMEIsNEJBS3FCLEk7ZUFpTXJCQSwwQiIsInNvdXJjZXNDb250ZW50IjpbIi8qKiBAbW9kdWxlIEBhaXJ0YWJsZS9ibG9ja3MvbW9kZWxzOiBBYnN0cmFjdCBtb2RlbHMgKi8gLyoqICovXG5pbXBvcnQgU2RrIGZyb20gJy4uL3Nkayc7XG5pbXBvcnQge2ZpcmVBbmRGb3JnZXRQcm9taXNlLCBGbG93QW55RnVuY3Rpb24sIEZsb3dBbnlPYmplY3QsIFRpbWVvdXRJZH0gZnJvbSAnLi4vcHJpdmF0ZV91dGlscyc7XG5pbXBvcnQge2ludmFyaWFudH0gZnJvbSAnLi4vZXJyb3JfdXRpbHMnO1xuaW1wb3J0IEFic3RyYWN0TW9kZWwgZnJvbSAnLi9hYnN0cmFjdF9tb2RlbCc7XG5cbi8qKlxuICogQWJzdHJhY3Qgc3VwZXJjbGFzcyBmb3IgYWxsIEJsb2NrcyBTREsgbW9kZWxzIHRoYXQgbmVlZCB0byBmZXRjaCBhc3luYyBkYXRhLlxuICpcbiAqIEBkb2NzUGF0aCBtb2RlbHMvYWR2YW5jZWQvQWJzdHJhY3RNb2RlbFdpdGhBc3luY0RhdGFcbiAqL1xuYWJzdHJhY3QgY2xhc3MgQWJzdHJhY3RNb2RlbFdpdGhBc3luY0RhdGE8XG4gICAgRGF0YVR5cGUsXG4gICAgV2F0Y2hhYmxlS2V5IGV4dGVuZHMgc3RyaW5nXG4+IGV4dGVuZHMgQWJzdHJhY3RNb2RlbDxEYXRhVHlwZSwgV2F0Y2hhYmxlS2V5PiB7XG4gICAgLyoqIEBpbnRlcm5hbCAqL1xuICAgIHN0YXRpYyBfX0RBVEFfVU5MT0FEX0RFTEFZX01TID0gMTAwMDtcbiAgICAvKiogQGludGVybmFsICovXG4gICAgc3RhdGljIF9zaG91bGRMb2FkRGF0YUZvcktleShrZXk6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgICAgICAvLyBPdmVycmlkZSB0byByZXR1cm4gd2hldGhlciB3YXRjaGluZyB0aGUga2V5IHNob3VsZCB0cmlnZ2VyIHRoZVxuICAgICAgICAvLyBkYXRhIHRvIGJlIGxvYWRlZCBmb3IgdGhpcyBtb2RlbC5cbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICAvKiogQGludGVybmFsICovXG4gICAgX2lzRGF0YUxvYWRlZDogYm9vbGVhbjtcbiAgICAvKiogQGludGVybmFsICovXG4gICAgX3BlbmRpbmdEYXRhTG9hZFByb21pc2U6IFByb21pc2U8QXJyYXk8V2F0Y2hhYmxlS2V5Pj4gfCBudWxsO1xuICAgIC8qKiBAaW50ZXJuYWwgKi9cbiAgICBfZGF0YVJldGFpbkNvdW50OiBudW1iZXI7XG4gICAgLyoqIEBpbnRlcm5hbCAqL1xuICAgIF91bmxvYWREYXRhVGltZW91dElkOiBudWxsIHwgVGltZW91dElkO1xuICAgIC8qKlxuICAgICAqIFRoaXMgZmxhZyBpcyB1c2VkIHRvIGtlZXAgdHJhY2sgb2YgbW9kZWxzIHRoYXQgaGF2ZSBiZWVuXG4gICAgICogZm9yY2VkIHRvIHVubG9hZCAocmVnYXJkbGVzcyBvZiB0aGUgcmV0YWluIGNvdW50KS4gVGhlIGZvcmNlXG4gICAgICogdW5sb2FkIGhhcHBlbnMgdmlhIF9mb3JjZVVubG9hZCBtZXRob2QgYW5kIHRoZSBvbmx5IHByb3BlciB1c2VcbiAgICAgKiBvZiB0aGF0IGZ1bmN0aW9uIGlzIHdoZW4gdGhlIHVuZGVybHlpbmcgZGF0YSBnZXRzIGRlbGV0ZWQgd2hpbGVcbiAgICAgKiB0aGUgbW9kZWwgaXMgc3RpbGwgYWN0aXZlLiBlLmcuIHdoZW4gYSB0YWJsZSBpcyBkZWxldGVkIGluIHRoZVxuICAgICAqIG1haW4gYXBwIHdoaWxlIGFuIGluc3RhbmNlIG9mIHJlY29yZF9zdG9yZSBpcyBzdGlsbCBhbGl2ZS5cbiAgICAgKiBOT1RFOiBPbmNlIHNldCB0byB0cnVlLCBpdCBuZXZlciBnb2VzIGJhY2sgdG8gZmFsc2UuXG4gICAgICpcbiAgICAgKiBAaW50ZXJuYWxcbiAgICAgKi9cbiAgICBfaXNGb3JjZVVubG9hZGVkOiBib29sZWFuID0gZmFsc2U7XG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBjb25zdHJ1Y3RvcihzZGs6IFNkaywgbW9kZWxJZDogc3RyaW5nKSB7XG4gICAgICAgIHN1cGVyKHNkaywgbW9kZWxJZCk7XG5cbiAgICAgICAgdGhpcy5faXNEYXRhTG9hZGVkID0gZmFsc2U7XG4gICAgICAgIHRoaXMuX3BlbmRpbmdEYXRhTG9hZFByb21pc2UgPSBudWxsO1xuICAgICAgICB0aGlzLl9kYXRhUmV0YWluQ291bnQgPSAwO1xuICAgICAgICB0aGlzLl91bmxvYWREYXRhVGltZW91dElkID0gbnVsbDtcbiAgICB9XG4gICAgLyoqXG4gICAgICogV2F0Y2hpbmcgYSBrZXkgdGhhdCBuZWVkcyB0byBsb2FkIGRhdGEgYXN5bmNocm9ub3VzbHkgd2lsbCBhdXRvbWF0aWNhbGx5XG4gICAgICogY2F1c2UgdGhlIGRhdGEgdG8gYmUgZmV0Y2hlZC4gT25jZSB0aGUgZGF0YSBpcyBhdmFpbGFibGUsIHRoZSBjYWxsYmFja1xuICAgICAqIHdpbGwgYmUgY2FsbGVkLlxuICAgICAqXG4gICAgICogQGluaGVyaXRkb2NcbiAgICAgKi9cbiAgICB3YXRjaChcbiAgICAgICAga2V5czogV2F0Y2hhYmxlS2V5IHwgUmVhZG9ubHlBcnJheTxXYXRjaGFibGVLZXk+LFxuICAgICAgICBjYWxsYmFjazogRmxvd0FueUZ1bmN0aW9uLFxuICAgICAgICBjb250ZXh0PzogRmxvd0FueU9iamVjdCB8IG51bGwsXG4gICAgKTogQXJyYXk8V2F0Y2hhYmxlS2V5PiB7XG4gICAgICAgIHRoaXMuX2Fzc2VydE5vdEZvcmNlVW5sb2FkZWQoKTtcbiAgICAgICAgY29uc3QgdmFsaWRLZXlzID0gc3VwZXIud2F0Y2goa2V5cywgY2FsbGJhY2ssIGNvbnRleHQpO1xuICAgICAgICBmb3IgKGNvbnN0IGtleSBvZiB2YWxpZEtleXMpIHtcbiAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICAodGhpcy5jb25zdHJ1Y3RvciBhcyB0eXBlb2YgQWJzdHJhY3RNb2RlbFdpdGhBc3luY0RhdGEpLl9zaG91bGRMb2FkRGF0YUZvcktleShrZXkpXG4gICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAvLyBOb3RlOiBmb3Igc2ltcGxpY2l0eSwgd2Ugd2lsbCBjYWxsIGxvYWREYXRhIGZvciBldmVyeSBrZXkgdGhhdCBuZWVkc1xuICAgICAgICAgICAgICAgIC8vIG5lZWRzIGRhdGEsIHJlbHlpbmcgb24gdGhlIHJldGFpbiBjb3VudCB0byB1bmxvYWQgb25jZSBhbGwga2V5cyBoYXZlXG4gICAgICAgICAgICAgICAgLy8gYmVlbiB1bndhdGNoZWQuXG4gICAgICAgICAgICAgICAgZmlyZUFuZEZvcmdldFByb21pc2UodGhpcy5sb2FkRGF0YUFzeW5jLmJpbmQodGhpcykpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiB2YWxpZEtleXM7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIFVud2F0Y2hpbmcgYSBrZXkgdGhhdCBuZWVkcyB0byBsb2FkIGRhdGEgYXN5bmNocm9ub3VzbHkgd2lsbCBhdXRvbWF0aWNhbGx5XG4gICAgICogY2F1c2UgdGhlIGRhdGEgdG8gYmUgcmVsZWFzZWQuIE9uY2UgdGhlIGRhdGEgaXMgYXZhaWxhYmxlLCB0aGUgY2FsbGJhY2tcbiAgICAgKiB3aWxsIGJlIGNhbGxlZC5cbiAgICAgKlxuICAgICAqIEBpbmhlcml0ZG9jXG4gICAgICovXG4gICAgdW53YXRjaChcbiAgICAgICAga2V5czogV2F0Y2hhYmxlS2V5IHwgUmVhZG9ubHlBcnJheTxXYXRjaGFibGVLZXk+LFxuICAgICAgICBjYWxsYmFjazogRmxvd0FueUZ1bmN0aW9uLFxuICAgICAgICBjb250ZXh0PzogRmxvd0FueU9iamVjdCB8IG51bGwsXG4gICAgKTogQXJyYXk8V2F0Y2hhYmxlS2V5PiB7XG4gICAgICAgIGNvbnN0IHZhbGlkS2V5cyA9IHN1cGVyLnVud2F0Y2goa2V5cywgY2FsbGJhY2ssIGNvbnRleHQpO1xuICAgICAgICBmb3IgKGNvbnN0IGtleSBvZiB2YWxpZEtleXMpIHtcbiAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICAodGhpcy5jb25zdHJ1Y3RvciBhcyB0eXBlb2YgQWJzdHJhY3RNb2RlbFdpdGhBc3luY0RhdGEpLl9zaG91bGRMb2FkRGF0YUZvcktleShrZXkpXG4gICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAvLyBXZSBjYWxsZWQgbG9hZERhdGFBc3luYyBmb3IgZXZlcnkga2V5IHRoYXQgbmVlZHMgZGF0YSBzbyBjYWxsXG4gICAgICAgICAgICAgICAgLy8gdW5sb2FkRGF0YSBmb3IgZXZlcnkga2V5IHRvIGJhbGFuY2UgdGhlIHJldGFpbiBjb3VudC5cbiAgICAgICAgICAgICAgICB0aGlzLnVubG9hZERhdGEoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdmFsaWRLZXlzO1xuICAgIH1cbiAgICAvKiogQGluaGVyaXRkb2MgKi9cbiAgICBnZXQgaXNEZWxldGVkKCk6IGJvb2xlYW4ge1xuICAgICAgICBpZiAodGhpcy5faXNGb3JjZVVubG9hZGVkKSB7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gc3VwZXIuaXNEZWxldGVkO1xuICAgIH1cbiAgICAvKiogKi9cbiAgICBnZXQgaXNEYXRhTG9hZGVkKCk6IGJvb2xlYW4ge1xuICAgICAgICBpZiAodGhpcy5pc0RlbGV0ZWQpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy5faXNEYXRhTG9hZGVkO1xuICAgIH1cbiAgICAvKiogQGludGVybmFsICovXG4gICAgYWJzdHJhY3QgX29uQ2hhbmdlSXNEYXRhTG9hZGVkKCk6IHZvaWQ7XG4gICAgLyoqIEBpbnRlcm5hbCAqL1xuICAgIGFic3RyYWN0IF9sb2FkRGF0YUFzeW5jKCk6IFByb21pc2U8QXJyYXk8V2F0Y2hhYmxlS2V5Pj47XG4gICAgLyoqIEBpbnRlcm5hbCAqL1xuICAgIGFic3RyYWN0IF91bmxvYWREYXRhKCk6IHZvaWQ7XG4gICAgLy8gT3ZlcnJpZGUgdGhpcyBtZXRob2QgaWYgeW91ciBtb2RlbCBpcyBkZXBlbmRlbnQgb24gb3RoZXIgbW9kZWxzLlxuICAgIC8vIERvIE5PVCBsb2FkIG90aGVyIG1vZGVscycgZGF0YSBmcm9tIF9sb2FkRGF0YUFzeW5jLCBzaW5jZSBpdCBjYW4gbGVhZCB0b1xuICAgIC8vIHVuZXhwZWN0ZWQgYmVoYXZpb3IuXG4gICAgLy8gSU1QT1JUQU5UOiBhbHdheXMgY2FsbCBzdXBlci5sb2FkRGF0YUFzeW5jKCkgZnJvbSB5b3VyIG92ZXJyaWRlLlxuICAgIC8qKlxuICAgICAqIFdpbGwgY2F1c2UgYWxsIHRoZSBhc3luYyBkYXRhIHRvIGJlIGZldGNoZWQgYW5kIHJldGFpbmVkLiBFdmVyeSBjYWxsIHRvXG4gICAgICogYGxvYWREYXRhQXN5bmNgIHNob3VsZCBoYXZlIGEgbWF0Y2hpbmcgY2FsbCB0byBgdW5sb2FkRGF0YWAuXG4gICAgICpcbiAgICAgKiBSZXR1cm5zIGEgUHJvbWlzZSB0aGF0IHdpbGwgcmVzb2x2ZSBvbmNlIHRoZSBkYXRhIGlzIGxvYWRlZC5cbiAgICAgKi9cbiAgICBhc3luYyBsb2FkRGF0YUFzeW5jKCkge1xuICAgICAgICB0aGlzLl9hc3NlcnROb3RGb3JjZVVubG9hZGVkKCk7XG4gICAgICAgIGlmICh0aGlzLl91bmxvYWREYXRhVGltZW91dElkICE9PSBudWxsKSB7XG4gICAgICAgICAgICAvLyBJZiB3ZSBzZXQgYSB0aW1lb3V0IHRvIHVubG9hZCBkYXRhLCBjbGVhciBpdCBzaW5jZSB3ZSBhcmUgaW5jcmVtZW50aW5nXG4gICAgICAgICAgICAvLyB0aGUgcmV0YWluIGNvdW50IGFuZCBsb2FkaW5nIGRhdGEuXG4gICAgICAgICAgICBjbGVhclRpbWVvdXQodGhpcy5fdW5sb2FkRGF0YVRpbWVvdXRJZCk7XG4gICAgICAgICAgICB0aGlzLl91bmxvYWREYXRhVGltZW91dElkID0gbnVsbDtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIFdlIGtlZXAgYSBjb3VudCBvZiBob3cgbWFueSB0aGluZ3MgaGF2ZSBsb2FkZWQgdGhlIGRhdGEgc28gd2UgZG9uJ3RcbiAgICAgICAgLy8gYWN0dWFsbHkgdW5sb2FkIHRoZSBkYXRhIHVudGlsIHRoZSByZXRhaW4gY291bnQgY29tZXMgYmFjayBkb3duIHRvIHplcm8uXG4gICAgICAgIHRoaXMuX2RhdGFSZXRhaW5Db3VudCsrO1xuXG4gICAgICAgIGlmICh0aGlzLl9pc0RhdGFMb2FkZWQpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIXRoaXMuX3BlbmRpbmdEYXRhTG9hZFByb21pc2UpIHtcbiAgICAgICAgICAgIHRoaXMuX3BlbmRpbmdEYXRhTG9hZFByb21pc2UgPSB0aGlzLl9sb2FkRGF0YUFzeW5jKCkudGhlbihjaGFuZ2VkS2V5cyA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5faXNEYXRhTG9hZGVkID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB0aGlzLl9wZW5kaW5nRGF0YUxvYWRQcm9taXNlID0gbnVsbDtcblxuICAgICAgICAgICAgICAgIGZvciAoY29uc3Qga2V5IG9mIGNoYW5nZWRLZXlzKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX29uQ2hhbmdlKGtleSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHRoaXMuX29uQ2hhbmdlSXNEYXRhTG9hZGVkKCk7XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gY2hhbmdlZEtleXM7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICBhd2FpdCB0aGlzLl9wZW5kaW5nRGF0YUxvYWRQcm9taXNlO1xuICAgIH1cbiAgICAvLyBPdmVycmlkZSB0aGlzIG1ldGhvZCBpZiB5b3VyIG1vZGVsIGlzIGRlcGVuZGVudCBvbiBvdGhlciBtb2RlbHMuXG4gICAgLy8gRG8gTk9UIHVubG9hZCBvdGhlciBtb2RlbHMnIGRhdGEgZnJvbSBfdW5sb2FkRGF0YSwgc2luY2UgaXQgY2FuIGxlYWQgdG9cbiAgICAvLyB1bmV4cGVjdGVkIGJlaGF2aW9yLlxuICAgIC8vIElNUE9SVEFOVDogYWx3YXlzIGNhbGwgc3VwZXIudW5sb2FkRGF0YSgpIGZyb20geW91ciBvdmVycmlkZS5cbiAgICAvKiogKi9cbiAgICB1bmxvYWREYXRhKCkge1xuICAgICAgICBpZiAodGhpcy5faXNGb3JjZVVubG9hZGVkKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5fZGF0YVJldGFpbkNvdW50LS07XG5cbiAgICAgICAgaWYgKHRoaXMuX2RhdGFSZXRhaW5Db3VudCA8IDApIHtcbiAgICAgICAgICAgIGNvbnNvbGUud2FybihgQmxvY2sgJHsodGhpcy5jb25zdHJ1Y3RvciBhcyBhbnkpLl9jbGFzc05hbWV9IGRhdGEgb3Zlci1yZWxlYXNlZGApOyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIG5vLWNvbnNvbGVcbiAgICAgICAgICAgIHRoaXMuX2RhdGFSZXRhaW5Db3VudCA9IDA7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMuX2RhdGFSZXRhaW5Db3VudCA9PT0gMCkge1xuICAgICAgICAgICAgLy8gRG9uJ3QgdW5sb2FkIGltbWVkaWF0ZWx5LiBXYWl0IGEgd2hpbGUgaW4gY2FzZSBzb21ldGhpbmcgZWxzZVxuICAgICAgICAgICAgLy8gcmVxdWVzdHMgdGhlIGRhdGEsIHNvIHdlIGNhbiBhdm9pZCBnb2luZyBiYWNrIHRvIGxpdmVhcHAgb3JcbiAgICAgICAgICAgIC8vIHRoZSBuZXR3b3JrLlxuICAgICAgICAgICAgdGhpcy5fdW5sb2FkRGF0YVRpbWVvdXRJZCA9IHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgICAgIGludmFyaWFudChcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fZGF0YVJldGFpbkNvdW50ID09PSAwLFxuICAgICAgICAgICAgICAgICAgICAnVW5sb2FkIGRhdGEgdGltZW91dCBmaXJlZCB3aXRoIG5vbi16ZXJvIHJldGFpbiBjb3VudCcsXG4gICAgICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgICAgIC8vIFNldCBfaXNEYXRhTG9hZGVkIHRvIGZhbHNlIGJlZm9yZSBjYWxsaW5nIF91bmxvYWREYXRhIGluIGNhc2VcbiAgICAgICAgICAgICAgICAvLyBfdW5sb2FkRGF0YSByZWFkcyBmcm9tIGlzRGF0YUxvYWRlZC5cbiAgICAgICAgICAgICAgICB0aGlzLl9pc0RhdGFMb2FkZWQgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICB0aGlzLl91bmxvYWREYXRhKCk7XG4gICAgICAgICAgICAgICAgdGhpcy5fb25DaGFuZ2VJc0RhdGFMb2FkZWQoKTtcbiAgICAgICAgICAgIH0sIEFic3RyYWN0TW9kZWxXaXRoQXN5bmNEYXRhLl9fREFUQV9VTkxPQURfREVMQVlfTVMpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgX2ZvcmNlVW5sb2FkKCkge1xuICAgICAgICB3aGlsZSAodGhpcy5fZGF0YVJldGFpbkNvdW50ID4gMCkge1xuICAgICAgICAgICAgdGhpcy51bmxvYWREYXRhKCk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5faXNGb3JjZVVubG9hZGVkID0gdHJ1ZTtcbiAgICB9XG5cbiAgICBfYXNzZXJ0Tm90Rm9yY2VVbmxvYWRlZCgpIHtcbiAgICAgICAgaW52YXJpYW50KCF0aGlzLl9pc0ZvcmNlVW5sb2FkZWQsICdtb2RlbCAoJXMpIHBlcm1hbmVudGx5IGRlbGV0ZWQnLCB0aGlzLmlkKTtcbiAgICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IEFic3RyYWN0TW9kZWxXaXRoQXN5bmNEYXRhO1xuIl19
@@ -526,7 +526,8 @@ function (_AbstractModel) {
526
526
  * @param name name for the table. must be case-insensitive unique
527
527
  * @param fields array of fields to create in the table: see below for an example. `name` and
528
528
  * `type` must be specified for all fields, while `options` is only required for fields that
529
- * have field options. `description` is optional and will be empty if not specified.
529
+ * have field options. `description` is optional and will be `''` if not specified or if
530
+ * specified as `null`.
530
531
  *
531
532
  * @example
532
533
  * ```js
@@ -929,4 +930,5 @@ function (_AbstractModel) {
929
930
 
930
931
  (0, _defineProperty2.default)(Base, "_className", 'Base');
931
932
  var _default = Base;
932
- exports.default = _default;
933
+ exports.default = _default;
934
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9tb2RlbHMvYmFzZS50cyJdLCJuYW1lcyI6WyJXYXRjaGFibGVCYXNlS2V5cyIsIk9iamVjdCIsImZyZWV6ZSIsIm5hbWUiLCJ0YWJsZXMiLCJjb2xsYWJvcmF0b3JzIiwic2NoZW1hIiwiY29sb3IiLCJCYXNlIiwia2V5Iiwic2RrIiwiX19haXJ0YWJsZUludGVyZmFjZSIsInNka0luaXREYXRhIiwiYmFzZURhdGEiLCJpZCIsIl90YWJsZU1vZGVsc0J5SWQiLCJfX2JpbGxpbmdQbGFuR3JvdXBpbmciLCJiaWxsaW5nUGxhbkdyb3VwaW5nIiwiY29sbGFib3JhdG9ySWQiLCJjb2xsYWJvcmF0b3JzQnlJZCIsIl9kYXRhIiwiY29sbGFib3JhdG9yIiwiZ2V0Q29sbGFib3JhdG9yQnlJZElmRXhpc3RzIiwiaWRPck5hbWVPckVtYWlsIiwiY29sbGFib3JhdG9yQnlJZCIsIl9jb2xsYWJvcmF0b3JJZHNCeU5hbWVBbmRFbWFpbCIsIk1hcCIsImVtYWlsIiwic2V0IiwiaGFzIiwiaWRGb3JOYW1lT3JFbWFpbCIsImdldCIsInVuZGVmaW5lZCIsImdldENvbGxhYm9yYXRvckJ5SWQiLCJnZXRDb2xsYWJvcmF0b3JJZkV4aXN0cyIsInRhYmxlSWQiLCJfdGFibGVSZWNvcmRTdG9yZXNCeVRhYmxlSWQiLCJ0YWJsZXNCeUlkIiwibmV3UmVjb3JkU3RvcmUiLCJSZWNvcmRTdG9yZSIsIl9zZGsiLCJUYWJsZSIsIl9fZ2V0UmVjb3JkU3RvcmUiLCJ0YWJsZSIsImdldFRhYmxlQnlJZElmRXhpc3RzIiwidGFibGVOYW1lIiwidGFibGVEYXRhIiwiZ2V0VGFibGVCeU5hbWVJZkV4aXN0cyIsInRhYmxlSWRPck5hbWUiLCJnZXRUYWJsZUlmRXhpc3RzIiwiZmllbGRzIiwiX19tdXRhdGlvbnMiLCJjaGVja1Blcm1pc3Npb25zRm9yTXV0YXRpb24iLCJ0eXBlIiwiTXV0YXRpb25UeXBlcyIsIkNSRUFURV9TSU5HTEVfVEFCTEUiLCJtYXAiLCJmaWVsZCIsImNvbmZpZyIsIm9wdGlvbnMiLCJkZXNjcmlwdGlvbiIsImNoZWNrUGVybWlzc2lvbnNGb3JDcmVhdGVUYWJsZSIsImhhc1Blcm1pc3Npb24iLCJpZEdlbmVyYXRvciIsImdlbmVyYXRlVGFibGVJZCIsImFwcGx5TXV0YXRpb25Bc3luYyIsImdldFRhYmxlQnlJZCIsIm1heFJvd3NQZXJUYWJsZSIsImNoYW5nZWRQYXRocyIsImRpZFNjaGVtYUNoYW5nZSIsIl9vbkNoYW5nZSIsInRhYmxlT3JkZXIiLCJ0YWJsZU1vZGVsIiwiaXNEZWxldGVkIiwicmVjb3JkU3RvcmUiLCJfX29uRGF0YURlbGV0aW9uIiwiZGlydHlUYWJsZVBhdGhzIiwiZGlkVGFibGVTY2hlbWFDaGFuZ2UiLCJfX3RyaWdnZXJPbkNoYW5nZUZvckRpcnR5UGF0aHMiLCJhY3RpdmVDb2xsYWJvcmF0b3JJZHMiLCJhcHBJbnRlcmZhY2UiLCJjaGFuZ2VzIiwiY2hhbmdlIiwiX2FwcGx5Q2hhbmdlIiwicGF0aCIsInZhbHVlIiwiY2hhbmdlZFBhdGhzQnlSZWYiLCJkYXRhU3VidHJlZSIsImRpcnR5U3VidHJlZSIsImkiLCJsZW5ndGgiLCJwYXJ0IiwibGFzdFBhdGhQYXJ0IiwiZGlkQ2hhbmdlIiwiX2lzRGlydHkiLCJfYmFzZURhdGEiLCJmb3JFYWNoIiwicHVzaCIsIkFic3RyYWN0TW9kZWwiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUlBOztBQUVBOztBQUNBOztBQUVBOztBQUNBOztBQUNBOzs7Ozs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBLElBQU1BLGlCQUFpQixHQUFHQyxNQUFNLENBQUNDLE1BQVAsQ0FBYztBQUNwQ0MsRUFBQUEsSUFBSSxFQUFFLE1BRDhCO0FBRXBDQyxFQUFBQSxNQUFNLEVBQUUsUUFGNEI7QUFHcENDLEVBQUFBLGFBQWEsRUFBRSxlQUhx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Q3RDLGNBQWMsSUFDdEQsS0FBS2UsbUJBQUwsQ0FBeUJmLGNBQXpCLENBREcsQ0FBUDtBQUdIOzs7RUF4R2NnRix1Qjs7OEJBQWIxRixJLGdCQUVrQixNO2VBeWxCVEEsSSIsInNvdXJjZXNDb250ZW50IjpbIi8qKiBAbW9kdWxlIEBhaXJ0YWJsZS9ibG9ja3MvbW9kZWxzOiBCYXNlICovIC8qKiAqL1xuaW1wb3J0IHtCYXNlRGF0YSwgTW9kZWxDaGFuZ2V9IGZyb20gJy4uL3R5cGVzL2Jhc2UnO1xuaW1wb3J0IHtDb2xsYWJvcmF0b3JEYXRhLCBVc2VySWR9IGZyb20gJy4uL3R5cGVzL2NvbGxhYm9yYXRvcic7XG5pbXBvcnQge0ZpZWxkVHlwZX0gZnJvbSAnLi4vdHlwZXMvZmllbGQnO1xuaW1wb3J0IHtNdXRhdGlvblR5cGVzLCBQZXJtaXNzaW9uQ2hlY2tSZXN1bHR9IGZyb20gJy4uL3R5cGVzL211dGF0aW9ucyc7XG5pbXBvcnQge1RhYmxlSWR9IGZyb20gJy4uL3R5cGVzL3RhYmxlJztcbmltcG9ydCB7aXNFbnVtVmFsdWUsIGVudHJpZXMsIGlzRGVlcEVxdWFsLCBPYmplY3RWYWx1ZXMsIE9iamVjdE1hcCwgaGFzfSBmcm9tICcuLi9wcml2YXRlX3V0aWxzJztcbmltcG9ydCB7c3Bhd25FcnJvciwgaW52YXJpYW50fSBmcm9tICcuLi9lcnJvcl91dGlscyc7XG5pbXBvcnQgU2RrIGZyb20gJy4uL3Nkayc7XG5pbXBvcnQgVGFibGUgZnJvbSAnLi90YWJsZSc7XG5pbXBvcnQgUmVjb3JkU3RvcmUgZnJvbSAnLi9yZWNvcmRfc3RvcmUnO1xuaW1wb3J0IEFic3RyYWN0TW9kZWwgZnJvbSAnLi9hYnN0cmFjdF9tb2RlbCc7XG5cbi8vIEhvdyB0aGVzZSBtb2RlbCBjbGFzc2VzIHdvcms6XG4vL1xuLy8gVGhlIHNpbmdsZSBpbnN0YW5jZSBvZiB0aGUgQmFzZSBjbGFzcyBtYWludGFpbnMgYSByZWZlcmVuY2UgdG8gYSBwbGFpbiBKU1xuLy8gb2JqZWN0IHRoYXQgY29udGFpbnMgYWxsIHRoZSBkYXRhIChiYXNlRGF0YSkuIEFsbCB0aGUgb3RoZXIgbW9kZWwgY2xhc3Nlc1xuLy8gcmVjZWl2ZSBhIHJlZmVyZW5jZSB0byBiYXNlRGF0YSBhbmQgdHJhdmVyc2UgaXQgdG8gZXhwb3NlIHRoZSBkYXRhLlxuLy9cbi8vIEFzIGNoYW5nZXMgY29tZSBpbiBmcm9tIGxpdmVhcHAsIEJhc2Ugd2lsbCBhcHBseSB0aGVtIHRvIHRoZSBwbGFpbiBKUyBvYmplY3QuXG4vLyBTaW5jZSB0aGUgb3RoZXIgbW9kZWwgY2xhc3NlcyBoYXZlIGEgcmVmZXJlbmNlIHRvIHRoZSBzYW1lIG9iamVjdCwgdGhleSdsbFxuLy8gYWx3YXlzIGJlIGFjY2Vzc2luZyB0aGUgbW9zdCB1cC10by1kYXRlIHZhbHVlcy5cbi8vXG4vLyBCZSBjYXJlZnVsIG5vdCB0byByZXR1cm4gYSByZWZlcmVuY2UgdG8gYW55IG5vbi1wcmltaXRpdmUgc3VidHJlZSBvZiBiYXNlRGF0YSxcbi8vIHNpbmNlIHRoZSBibG9jayBkZXZlbG9wZXIgY291bGQgbXV0YXRlIGl0IGFuZCB3ZSdsbCBlbmQgdXAgb3V0IG9mIHN5bmMgd2l0aFxuLy8gbGl2ZWFwcC5cblxuY29uc3QgV2F0Y2hhYmxlQmFzZUtleXMgPSBPYmplY3QuZnJlZXplKHtcbiAgICBuYW1lOiAnbmFtZScgYXMgY29uc3QsXG4gICAgdGFibGVzOiAndGFibGVzJyBhcyBjb25zdCxcbiAgICBjb2xsYWJvcmF0b3JzOiAnY29sbGFib3JhdG9ycycgYXMgY29uc3QsXG4gICAgc2NoZW1hOiAnc2NoZW1hJyBhcyBjb25zdCxcbiAgICBjb2xvcjogJ2NvbG9yJyBhcyBjb25zdCxcbn0pO1xuXG4vKipcbiAqIEFueSBrZXkgaW4gYmFzZSB0aGF0IGNhbiBiZSB3YXRjaGVkOlxuICogLSBgbmFtZWA6IHRoZSBuYW1lIG9mIHRoZSBiYXNlXG4gKiAtIGB0YWJsZXNgOiB0aGUgb3JkZXIgb2YgdGFibGVzIGluIHRoZSBiYXNlXG4gKiAtIGBjb2xsYWJvcmF0b3JzYDogYWxsIHRoZSBjb2xsYWJvcmF0b3JzIGluIHRoZSBiYXNlXG4gKiAtIGBzY2hlbWFgOiB0aGUgYmFzZSBzY2hlbWEgKGVzc2VudGlhbGx5IGV2ZXJ5dGhpbmcgZXhjZXB0IGZvciByZWNvcmQgZGF0YSlcbiAqL1xudHlwZSBXYXRjaGFibGVCYXNlS2V5ID0gT2JqZWN0VmFsdWVzPHR5cGVvZiBXYXRjaGFibGVCYXNlS2V5cz47XG5cbi8qKiBAaW50ZXJuYWwgKi9cbnR5cGUgQ2hhbmdlZFBhdGhzRm9yT2JqZWN0PFQgZXh0ZW5kcyBvYmplY3Q+ID0ge1tLIGluIGtleW9mIFRdPzogQ2hhbmdlZFBhdGhzRm9yVHlwZTxUW0tdPn0gJiB7XG4gICAgX2lzRGlydHk/OiB0cnVlO1xufTtcbi8qKiBAaW50ZXJuYWwgKi9cbmV4cG9ydCB0eXBlIENoYW5nZWRQYXRoc0ZvclR5cGU8VD4gPSBUIGV4dGVuZHMge30gPyBDaGFuZ2VkUGF0aHNGb3JPYmplY3Q8VD4gOiB7X2lzRGlydHk/OiB0cnVlfTtcblxuLyoqXG4gKiBNb2RlbCBjbGFzcyByZXByZXNlbnRpbmcgYSBiYXNlLlxuICpcbiAqIElmIHlvdSB3YW50IHRoZSBiYXNlIG1vZGVsIHRvIGF1dG9tYXRpY2FsbHkgcmVjYWxjdWxhdGUgd2hlbmV2ZXIgdGhlIGJhc2Ugc2NoZW1hIGNoYW5nZXMsIHRyeSB0aGVcbiAqIHtAbGluayB1c2VCYXNlfSBob29rLiBBbHRlcm5hdGl2ZWx5LCB5b3UgY2FuIG1hbnVhbGx5IHN1YnNjcmliZSB0byBjaGFuZ2VzIHdpdGhcbiAqIHtAbGluayB1c2VXYXRjaGFibGV9IChyZWNvbW1lbmRlZCkgb3IgW0Jhc2Ujd2F0Y2hdKC9hcGkvbW9kZWxzL0Jhc2Ujd2F0Y2gpLlxuICpcbiAqIEBleGFtcGxlXG4gKiBgYGBqc1xuICogaW1wb3J0IHtiYXNlfSBmcm9tICdAYWlydGFibGUvYmxvY2tzJztcbiAqXG4gKiBjb25zb2xlLmxvZygnVGhlIG5hbWUgb2YgeW91ciBiYXNlIGlzJywgYmFzZS5uYW1lKTtcbiAqIGBgYFxuICogQGRvY3NQYXRoIG1vZGVscy9CYXNlXG4gKi9cbmNsYXNzIEJhc2UgZXh0ZW5kcyBBYnN0cmFjdE1vZGVsPEJhc2VEYXRhLCBXYXRjaGFibGVCYXNlS2V5PiB7XG4gICAgLyoqIEBpbnRlcm5hbCAqL1xuICAgIHN0YXRpYyBfY2xhc3NOYW1lID0gJ0Jhc2UnO1xuICAgIC8qKiBAaW50ZXJuYWwgKi9cbiAgICBzdGF0aWMgX2lzV2F0Y2hhYmxlS2V5KGtleTogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiBpc0VudW1WYWx1ZShXYXRjaGFibGVCYXNlS2V5cywga2V5KTtcbiAgICB9XG4gICAgLyoqIEBpbnRlcm5hbCAqL1xuICAgIF90YWJsZU1vZGVsc0J5SWQ6IHtba2V5OiBzdHJpbmddOiBUYWJsZX07XG4gICAgLyoqIEBpbnRlcm5hbCAqL1xuICAgIF90YWJsZVJlY29yZFN0b3Jlc0J5VGFibGVJZDogT2JqZWN0TWFwPFRhYmxlSWQsIFJlY29yZFN0b3JlPiA9IHt9O1xuICAgIC8qKiBAaW50ZXJuYWwgKi9cbiAgICBfX2JpbGxpbmdQbGFuR3JvdXBpbmc6IHN0cmluZztcbiAgICAvKiogQGludGVybmFsICovXG4gICAgX2NvbGxhYm9yYXRvcklkc0J5TmFtZUFuZEVtYWlsOiBNYXA8c3RyaW5nLCBzdHJpbmc+IHwgbnVsbCA9IG51bGw7XG4gICAgLyoqXG4gICAgICogQGludGVybmFsXG4gICAgICovXG4gICAgY29uc3RydWN0b3Ioc2RrOiBTZGspIHtcbiAgICAgICAgc3VwZXIoc2RrLCBzZGsuX19haXJ0YWJsZUludGVyZmFjZS5zZGtJbml0RGF0YS5iYXNlRGF0YS5pZCk7XG4gICAgICAgIHRoaXMuX3RhYmxlTW9kZWxzQnlJZCA9IHt9OyAvLyBUYWJsZSBpbnN0YW5jZXMgYXJlIGxhemlseSBjcmVhdGVkIGJ5IGdldFRhYmxlQnlJZC5cbiAgICAgICAgdGhpcy5fX2JpbGxpbmdQbGFuR3JvdXBpbmcgPVxuICAgICAgICAgICAgc2RrLl9fYWlydGFibGVJbnRlcmZhY2Uuc2RrSW5pdERhdGEuYmFzZURhdGEuYmlsbGluZ1BsYW5Hcm91cGluZztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBBbGlhc2VkIHRvIGNvbW11bmljYXRlIHN0YWJpbGl0eSBmb3IgaW50ZXJuYWwgdXNlIGJ5IFNkayBjb2RlLlxuICAgICAqXG4gICAgICogQGludGVybmFsXG4gICAgICovXG4gICAgZ2V0IF9fc2RrKCk6IFNkayB7XG4gICAgICAgIHJldHVybiB0aGlzLl9zZGs7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGludGVybmFsXG4gICAgICovXG4gICAgZ2V0IF9kYXRhT3JOdWxsSWZEZWxldGVkKCk6IEJhc2VEYXRhIHwgbnVsbCB7XG4gICAgICAgIHJldHVybiB0aGlzLl9iYXNlRGF0YTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogVGhlIG5hbWUgb2YgdGhlIGJhc2UuXG4gICAgICpcbiAgICAgKiBAZXhhbXBsZVxuICAgICAqIGBgYGpzXG4gICAgICogaW1wb3J0IHtiYXNlfSBmcm9tICdAYWlydGFibGUvYmxvY2tzJztcbiAgICAgKiBjb25zb2xlLmxvZygnVGhlIG5hbWUgb2YgeW91ciBiYXNlIGlzJywgYmFzZS5uYW1lKTtcbiAgICAgKiBgYGBcbiAgICAgKi9cbiAgICBnZXQgbmFtZSgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5fZGF0YS5uYW1lO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoZSBjb2xvciBvZiB0aGUgYmFzZS5cbiAgICAgKlxuICAgICAqIEBleGFtcGxlXG4gICAgICogYGBganNcbiAgICAgKiBpbXBvcnQge2Jhc2V9IGZyb20gJ0BhaXJ0YWJsZS9ibG9ja3MnO1xuICAgICAqIGltcG9ydCB7Qm94fSBmcm9tICdAYWlydGFibGUvYmxvY2tzL3VpJztcbiAgICAgKiBjb25zdCBleGFtcGxlQm94ID0gPEJveCBiYWNrZ3JvdW5kQ29sb3I9e2Jhc2UuY29sb3J9PiBUaGlzIGJveCdzIGJhY2tncm91bmQgaXMgdGhlIHNhbWUgY29sb3IgYXMgdGhlIGJhc2UgYmFja2dyb3VuZDwvQm94PlxuICAgICAqIGBgYFxuICAgICAqL1xuICAgIGdldCBjb2xvcigpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5fZGF0YS5jb2xvcjtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGUgdGFibGVzIGluIHRoaXMgYmFzZS4gQ2FuIGJlIHdhdGNoZWQgdG8ga25vdyB3aGVuIHRhYmxlcyBhcmUgY3JlYXRlZCwgZGVsZXRlZCwgb3IgcmVvcmRlcmVkIGluIHRoZSBiYXNlLlxuICAgICAqXG4gICAgICogQGV4YW1wbGVcbiAgICAgKiBgYGBqc1xuICAgICAqIGltcG9ydCB7YmFzZX0gZnJvbSAnQGFpcnRhYmxlL2Jsb2Nrcyc7XG4gICAgICogY29uc29sZS5sb2coYFlvdSBoYXZlICR7YmFzZS50YWJsZXMubGVuZ3RofSB0YWJsZXNgKTtcbiAgICAgKiBgYGBcbiAgICAgKi9cbiAgICBnZXQgdGFibGVzKCk6IEFycmF5PFRhYmxlPiB7XG4gICAgICAgIC8vIFRPRE8oa2FzcmEpOiBjYWNoZSBhbmQgZnJlZXplIHRoaXMgc28gaXQgaXNuJ3QgTyhuKVxuICAgICAgICBjb25zdCB0YWJsZXM6IEFycmF5PFRhYmxlPiA9IFtdO1xuICAgICAgICB0aGlzLl9kYXRhLnRhYmxlT3JkZXIuZm9yRWFjaCh0YWJsZUlkID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHRhYmxlID0gdGhpcy5nZXRUYWJsZUJ5SWRJZkV4aXN0cyh0YWJsZUlkKTtcbiAgICAgICAgICAgIC8vIE5PVEU6IEEgdGFibGUncyBJRCBtYXkgYmUgaW4gdGFibGVPcmRlciB3aXRob3V0IHRoZSB0YWJsZSBhcHBlYXJpbmdcbiAgICAgICAgICAgIC8vIGluIHRhYmxlc0J5SWQsIGluIHdoaWNoIGNhc2UgZ2V0VGFibGVCeUlkIHdpbGwgcmV0dXJuIG51bGwuIFRoaXNcbiAgICAgICAgICAgIC8vIGhhcHBlbnMgaWYgdGFibGUgd2FzIGp1c3QgY3JlYXRlZCBieSB0aGUgdXNlciwgc2luY2Ugd2VcbiAgICAgICAgICAgIC8vIHdhaXQgZm9yIHRoZSBwdXNoIHBheWxvYWQgdG8gZGVsaXZlciB0aGUgdGFibGUgc2NoZW1hLlxuICAgICAgICAgICAgaWYgKHRhYmxlKSB7XG4gICAgICAgICAgICAgICAgdGFibGVzLnB1c2godGFibGUpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHRhYmxlcztcbiAgICB9XG4gICAgLyoqXG4gICAgICogVGhlIHVzZXJzIHdobyBoYXZlIGFjY2VzcyB0byB0aGlzIGJhc2UuXG4gICAgICpcbiAgICAgKiBAZXhhbXBsZVxuICAgICAqIGBgYGpzXG4gICAgICogaW1wb3J0IHtiYXNlfSBmcm9tICdAYWlydGFibGUvYmxvY2tzJztcbiAgICAgKiBjb25zb2xlLmxvZyhiYXNlLmFjdGl2ZUNvbGxhYm9yYXRvcnNbMF0uZW1haWwpO1xuICAgICAqIGBgYFxuICAgICAqL1xuICAgIGdldCBhY3RpdmVDb2xsYWJvcmF0b3JzKCk6IEFycmF5PENvbGxhYm9yYXRvckRhdGE+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2RhdGEuYWN0aXZlQ29sbGFib3JhdG9ySWRzLm1hcChjb2xsYWJvcmF0b3JJZCA9PlxuICAgICAgICAgICAgdGhpcy5nZXRDb2xsYWJvcmF0b3JCeUlkKGNvbGxhYm9yYXRvcklkKSxcbiAgICAgICAgKTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogVGhlIHVzZXIgbWF0Y2hpbmcgdGhlIGdpdmVuIElELCBvciBgbnVsbGAgaWYgdGhhdCB1c2VyIGRvZXMgbm90IGV4aXN0IG9yIGRvZXMgbm90IGhhdmUgYWNjZXNzXG4gICAgICogdG8gdGhpcyBiYXNlLlxuICAgICAqXG4gICAgICogQHBhcmFtIGNvbGxhYm9yYXRvcklkIFRoZSBJRCBvZiB0aGUgdXNlci5cbiAgICAgKi9cbiAgICBnZXRDb2xsYWJvcmF0b3JCeUlkSWZFeGlzdHMoY29sbGFib3JhdG9ySWQ6IFVzZXJJZCk6IENvbGxhYm9yYXRvckRhdGEgfCBudWxsIHtcbiAgICAgICAgY29uc3QgY29sbGFib3JhdG9yc0J5SWQgPSB0aGlzLl9kYXRhLmNvbGxhYm9yYXRvcnNCeUlkO1xuICAgICAgICByZXR1cm4gaGFzKGNvbGxhYm9yYXRvcnNCeUlkLCBjb2xsYWJvcmF0b3JJZCkgPyBjb2xsYWJvcmF0b3JzQnlJZFtjb2xsYWJvcmF0b3JJZF0gOiBudWxsO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBUaGUgdXNlciBtYXRjaGluZyB0aGUgZ2l2ZW4gSUQuIFRocm93cyBpZiB0aGF0IHVzZXIgZG9lcyBub3QgZXhpc3RcbiAgICAgKiBvciBkb2VzIG5vdCBoYXZlIGFjY2VzcyB0byB0aGlzIGJhc2UuIFVzZSB7QGxpbmsgZ2V0Q29sbGFib3JhdG9yQnlJZElmRXhpc3RzfVxuICAgICAqIGluc3RlYWQgaWYgeW91IGFyZSB1bnN1cmUgd2hldGhlciBhIGNvbGxhYm9yYXRvciB3aXRoIHRoZSBnaXZlbiBJRCBleGlzdHNcbiAgICAgKiBhbmQgaGFzIGFjY2VzcyB0byB0aGlzIGJhc2UuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gY29sbGFib3JhdG9ySWQgVGhlIElEIG9mIHRoZSB1c2VyLlxuICAgICAqL1xuICAgIGdldENvbGxhYm9yYXRvckJ5SWQoY29sbGFib3JhdG9ySWQ6IFVzZXJJZCk6IENvbGxhYm9yYXRvckRhdGEge1xuICAgICAgICBjb25zdCBjb2xsYWJvcmF0b3IgPSB0aGlzLmdldENvbGxhYm9yYXRvckJ5SWRJZkV4aXN0cyhjb2xsYWJvcmF0b3JJZCk7XG4gICAgICAgIGlmICghY29sbGFib3JhdG9yKSB7XG4gICAgICAgICAgICB0aHJvdyBzcGF3bkVycm9yKFxuICAgICAgICAgICAgICAgIFwiTm8gY29sbGFib3JhdG9yIHdpdGggSUQgJXMgaGFzIGFjY2VzcyB0byBiYXNlICclcydcIixcbiAgICAgICAgICAgICAgICBjb2xsYWJvcmF0b3JJZCxcbiAgICAgICAgICAgICAgICB0aGlzLm5hbWUsXG4gICAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBjb2xsYWJvcmF0b3I7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIFRoZSB1c2VyIG1hdGNoaW5nIHRoZSBnaXZlbiBJRCwgbmFtZSwgb3IgZW1haWwgYWRkcmVzcy4gUmV0dXJucyBudWxsIGlmIHRoYXQgdXNlciBkb2VzIG5vdFxuICAgICAqIGV4aXN0IG9yIGRvZXMgbm90IGhhdmUgYWNjZXNzIHRvIHRoaXMgYmFzZS5cbiAgICAgKlxuICAgICAqIFRoaXMgbWV0aG9kIGlzIGNvbnZlbmllbnQgd2hlbiBidWlsZGluZyBhbiBhcHAgZm9yIGEgc3BlY2lmaWMgYmFzZSwgYnV0IGZvciBtb3JlIGdlbmVyaWNcbiAgICAgKiBhcHBzIHRoZSBiZXN0IHByYWN0aWNlIGlzIHRvIHVzZSB0aGUge0BsaW5rIGdldENvbGxhYm9yYXRvckJ5SWRJZkV4aXN0c30gbWV0aG9kIGluc3RlYWQuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gY29sbGFib3JhdG9ySWRPck5hbWVPckVtYWlsIFRoZSBJRCBvZiB0aGUgdXNlci5cbiAgICAgKi9cbiAgICBnZXRDb2xsYWJvcmF0b3JJZkV4aXN0cyhpZE9yTmFtZU9yRW1haWw6IFVzZXJJZCB8IHN0cmluZyk6IENvbGxhYm9yYXRvckRhdGEgfCBudWxsIHtcbiAgICAgICAgY29uc3QgY29sbGFib3JhdG9yQnlJZCA9IHRoaXMuZ2V0Q29sbGFib3JhdG9yQnlJZElmRXhpc3RzKGlkT3JOYW1lT3JFbWFpbCk7XG4gICAgICAgIGlmIChjb2xsYWJvcmF0b3JCeUlkKSB7XG4gICAgICAgICAgICByZXR1cm4gY29sbGFib3JhdG9yQnlJZDtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghdGhpcy5fY29sbGFib3JhdG9ySWRzQnlOYW1lQW5kRW1haWwpIHtcbiAgICAgICAgICAgIHRoaXMuX2NvbGxhYm9yYXRvcklkc0J5TmFtZUFuZEVtYWlsID0gbmV3IE1hcDxzdHJpbmcsIHN0cmluZz4oKTtcbiAgICAgICAgICAgIGZvciAoY29uc3QgW2lkLCB7ZW1haWwsIG5hbWV9XSBvZiBlbnRyaWVzKHRoaXMuX2RhdGEuY29sbGFib3JhdG9yc0J5SWQpKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fY29sbGFib3JhdG9ySWRzQnlOYW1lQW5kRW1haWwuc2V0KGVtYWlsLCBpZCk7XG4gICAgICAgICAgICAgICAgLy8gd2UgcHJldmVudCBgQGAgaW4gbmFtZXMgc28gdGhlb3JldGljYWxseSB3ZSBzaG91bGRuJ3QgZW5jb3VudGVyIGFueSBjb2xsaXNpb25zXG4gICAgICAgICAgICAgICAgLy8gYmV0d2VlbiBuYW1lcyBhbmQgZW1haWxzLCBidXQgbmFtZXMgdGhlbXNlbHZlcyBtYXkgbm90IGJlIHVuaXF1ZS4gYXMgd2UgYnVpbGQgdGhlXG4gICAgICAgICAgICAgICAgLy8gbmFtZSBoYXNoLCB3ZSBvbmx5IGFkZCBuZXcgdmFsdWVzIHJhdGhlciB0aGFuIG92ZXJ3cml0ZSBleGlzdGluZyBvbmVzLiB0aGlzIG1lYW5zXG4gICAgICAgICAgICAgICAgLy8gdGhhdCB3ZSdsbCBwcmVmZXIgZW1haWxzIHRvIG5hbWVzIGluIHRoZSBldmVudCBvZiBhIGNvbGxpc2lvbi5cbiAgICAgICAgICAgICAgICBpZiAobmFtZSAmJiAhdGhpcy5fY29sbGFib3JhdG9ySWRzQnlOYW1lQW5kRW1haWwuaGFzKG5hbWUpKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX2NvbGxhYm9yYXRvcklkc0J5TmFtZUFuZEVtYWlsLnNldChuYW1lLCBpZCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgaWRGb3JOYW1lT3JFbWFpbCA9IHRoaXMuX2NvbGxhYm9yYXRvcklkc0J5TmFtZUFuZEVtYWlsLmdldChpZE9yTmFtZU9yRW1haWwpO1xuICAgICAgICBpZiAoaWRGb3JOYW1lT3JFbWFpbCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5nZXRDb2xsYWJvcmF0b3JCeUlkKGlkRm9yTmFtZU9yRW1haWwpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIFRoZSB1c2VyIG1hdGNoaW5nIHRoZSBnaXZlbiBJRCwgbmFtZSwgb3IgZW1haWwgYWRkcmVzcy4gVGhyb3dzIGlmIHRoYXQgdXNlciBkb2VzIG5vdCBleGlzdFxuICAgICAqIG9yIGRvZXMgbm90IGhhdmUgYWNjZXNzIHRvIHRoaXMgYmFzZS4gVXNlIHtAbGluayBnZXRDb2xsYWJvcmF0b3JJZkV4aXN0c30gaW5zdGVhZCBpZiB5b3UgYXJlXG4gICAgICogdW5zdXJlIHdoZXRoZXIgYSBjb2xsYWJvcmF0b3Igd2l0aCB0aGUgZ2l2ZW4gSUQgZXhpc3RzIGFuZCBoYXMgYWNjZXNzIHRvIHRoaXMgYmFzZS5cbiAgICAgKlxuICAgICAqIFRoaXMgbWV0aG9kIGlzIGNvbnZlbmllbnQgd2hlbiBidWlsZGluZyBhbiBhcHAgZm9yIGEgc3BlY2lmaWMgYmFzZSwgYnV0IGZvciBtb3JlIGdlbmVyaWNcbiAgICAgKiBhcHBzIHRoZSBiZXN0IHByYWN0aWNlIGlzIHRvIHVzZSB0aGUge0BsaW5rIGdldENvbGxhYm9yYXRvckJ5SWR9IG1ldGhvZCBpbnN0ZWFkLlxuICAgICAqXG4gICAgICogQHBhcmFtIGNvbGxhYm9yYXRvcklkT3JOYW1lT3JFbWFpbCBUaGUgSUQgb2YgdGhlIHVzZXIuXG4gICAgICovXG4gICAgZ2V0Q29sbGFib3JhdG9yKGlkT3JOYW1lT3JFbWFpbDogVXNlcklkIHwgc3RyaW5nKTogQ29sbGFib3JhdG9yRGF0YSB8IG51bGwge1xuICAgICAgICBjb25zdCBjb2xsYWJvcmF0b3IgPSB0aGlzLmdldENvbGxhYm9yYXRvcklmRXhpc3RzKGlkT3JOYW1lT3JFbWFpbCk7XG4gICAgICAgIGlmICghY29sbGFib3JhdG9yKSB7XG4gICAgICAgICAgICB0aHJvdyBzcGF3bkVycm9yKFxuICAgICAgICAgICAgICAgIFwiTm8gY29sbGFib3JhdG9yIHdpdGggSUQsIG5hbWUsIG9yIGVtYWlsIG9mICclcycgaXMgaW4gYmFzZSAnJXMnXCIsXG4gICAgICAgICAgICAgICAgaWRPck5hbWVPckVtYWlsLFxuICAgICAgICAgICAgICAgIHRoaXMubmFtZSxcbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGNvbGxhYm9yYXRvcjtcbiAgICB9XG4gICAgLyoqXG4gICAgICogQGludGVybmFsXG4gICAgICovXG4gICAgX19nZXRSZWNvcmRTdG9yZSh0YWJsZUlkOiBUYWJsZUlkKTogUmVjb3JkU3RvcmUge1xuICAgICAgICBpZiAoaGFzKHRoaXMuX3RhYmxlUmVjb3JkU3RvcmVzQnlUYWJsZUlkLCB0YWJsZUlkKSkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuX3RhYmxlUmVjb3JkU3RvcmVzQnlUYWJsZUlkW3RhYmxlSWRdO1xuICAgICAgICB9XG4gICAgICAgIGludmFyaWFudCh0aGlzLl9kYXRhLnRhYmxlc0J5SWRbdGFibGVJZF0sICd0YWJsZSBtdXN0IGV4aXN0Jyk7XG4gICAgICAgIGNvbnN0IG5ld1JlY29yZFN0b3JlID0gbmV3IFJlY29yZFN0b3JlKHRoaXMuX3NkaywgdGFibGVJZCk7XG4gICAgICAgIHRoaXMuX3RhYmxlUmVjb3JkU3RvcmVzQnlUYWJsZUlkW3RhYmxlSWRdID0gbmV3UmVjb3JkU3RvcmU7XG4gICAgICAgIHJldHVybiBuZXdSZWNvcmRTdG9yZTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogQGludGVybmFsXG4gICAgICovXG4gICAgX19nZXRCYXNlRGF0YSgpOiBCYXNlRGF0YSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9kYXRhO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBUaGUgdGFibGUgbWF0Y2hpbmcgdGhlIGdpdmVuIElELCBvciBgbnVsbGAgaWYgdGhhdCB0YWJsZSBkb2VzIG5vdCBleGlzdCBpbiB0aGlzIGJhc2UuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gdGFibGVJZCBUaGUgSUQgb2YgdGhlIHRhYmxlLlxuICAgICAqL1xuICAgIGdldFRhYmxlQnlJZElmRXhpc3RzKHRhYmxlSWQ6IHN0cmluZyk6IFRhYmxlIHwgbnVsbCB7XG4gICAgICAgIGlmICghdGhpcy5fZGF0YS50YWJsZXNCeUlkW3RhYmxlSWRdKSB7XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGlmICghdGhpcy5fdGFibGVNb2RlbHNCeUlkW3RhYmxlSWRdKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fdGFibGVNb2RlbHNCeUlkW3RhYmxlSWRdID0gbmV3IFRhYmxlKFxuICAgICAgICAgICAgICAgICAgICB0aGlzLFxuICAgICAgICAgICAgICAgICAgICB0aGlzLl9fZ2V0UmVjb3JkU3RvcmUodGFibGVJZCksXG4gICAgICAgICAgICAgICAgICAgIHRhYmxlSWQsXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX3NkayxcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuX3RhYmxlTW9kZWxzQnlJZFt0YWJsZUlkXTtcbiAgICAgICAgfVxuICAgIH1cbiAgICAvKipcbiAgICAgKiBUaGUgdGFibGUgbWF0Y2hpbmcgdGhlIGdpdmVuIElELiBUaHJvd3MgaWYgdGhhdCB0YWJsZSBkb2VzIG5vdCBleGlzdCBpbiB0aGlzIGJhc2UuIFVzZVxuICAgICAqIHtAbGluayBnZXRUYWJsZUJ5SWRJZkV4aXN0c30gaW5zdGVhZCBpZiB5b3UgYXJlIHVuc3VyZSB3aGV0aGVyIGEgdGFibGUgZXhpc3RzIHdpdGggdGhlIGdpdmVuXG4gICAgICogSUQuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gdGFibGVJZCBUaGUgSUQgb2YgdGhlIHRhYmxlLlxuICAgICAqL1xuICAgIGdldFRhYmxlQnlJZCh0YWJsZUlkOiBzdHJpbmcpOiBUYWJsZSB7XG4gICAgICAgIGNvbnN0IHRhYmxlID0gdGhpcy5nZXRUYWJsZUJ5SWRJZkV4aXN0cyh0YWJsZUlkKTtcbiAgICAgICAgaWYgKCF0YWJsZSkge1xuICAgICAgICAgICAgdGhyb3cgc3Bhd25FcnJvcihcIk5vIHRhYmxlIHdpdGggSUQgJXMgaW4gYmFzZSAnJXMnXCIsIHRhYmxlSWQsIHRoaXMubmFtZSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRhYmxlO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBUaGUgdGFibGUgbWF0Y2hpbmcgdGhlIGdpdmVuIG5hbWUsIG9yIGBudWxsYCBpZiBubyB0YWJsZSBleGlzdHMgd2l0aCB0aGF0IG5hbWUgaW4gdGhpcyBiYXNlLlxuICAgICAqXG4gICAgICogQHBhcmFtIHRhYmxlTmFtZSBUaGUgbmFtZSBvZiB0aGUgdGFibGUgeW91J3JlIGxvb2tpbmcgZm9yLlxuICAgICAqL1xuICAgIGdldFRhYmxlQnlOYW1lSWZFeGlzdHModGFibGVOYW1lOiBzdHJpbmcpOiBUYWJsZSB8IG51bGwge1xuICAgICAgICBmb3IgKGNvbnN0IFt0YWJsZUlkLCB0YWJsZURhdGFdIG9mIGVudHJpZXModGhpcy5fZGF0YS50YWJsZXNCeUlkKSkge1xuICAgICAgICAgICAgaWYgKHRhYmxlRGF0YS5uYW1lID09PSB0YWJsZU5hbWUpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5nZXRUYWJsZUJ5SWRJZkV4aXN0cyh0YWJsZUlkKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgLyoqXG4gICAgICogVGhlIHRhYmxlIG1hdGNoaW5nIHRoZSBnaXZlbiBuYW1lLiBUaHJvd3MgaWYgbm8gdGFibGUgZXhpc3RzIHdpdGggdGhhdCBuYW1lIGluIHRoaXMgYmFzZS4gVXNlXG4gICAgICoge0BsaW5rIGdldFRhYmxlQnlOYW1lSWZFeGlzdHN9IGluc3RlYWQgaWYgeW91IGFyZSB1bnN1cmUgd2hldGhlciBhIHRhYmxlIGV4aXN0cyB3aXRoIHRoZVxuICAgICAqIGdpdmVuIG5hbWUuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gdGFibGVOYW1lIFRoZSBuYW1lIG9mIHRoZSB0YWJsZSB5b3UncmUgbG9va2luZyBmb3IuXG4gICAgICovXG4gICAgZ2V0VGFibGVCeU5hbWUodGFibGVOYW1lOiBzdHJpbmcpOiBUYWJsZSB7XG4gICAgICAgIGNvbnN0IHRhYmxlID0gdGhpcy5nZXRUYWJsZUJ5TmFtZUlmRXhpc3RzKHRhYmxlTmFtZSk7XG4gICAgICAgIGlmICghdGFibGUpIHtcbiAgICAgICAgICAgIHRocm93IHNwYXduRXJyb3IoXCJObyB0YWJsZSBuYW1lZCAnJXMnIGluIGJhc2UgJyVzJ1wiLCB0YWJsZU5hbWUsIHRoaXMubmFtZSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRhYmxlO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBUaGUgdGFibGUgbWF0Y2hpbmcgdGhlIGdpdmVuIElEIG9yIG5hbWUuIFJldHVybnMgYG51bGxgIGlmIG5vIG1hdGNoaW5nIHRhYmxlIGV4aXN0cyB3aXRoaW5cbiAgICAgKiB0aGlzIGJhc2UuXG4gICAgICpcbiAgICAgKiBUaGlzIG1ldGhvZCBpcyBjb252ZW5pZW50IHdoZW4gYnVpbGRpbmcgYW4gYXBwIGZvciBhIHNwZWNpZmljIGJhc2UsIGJ1dCBmb3IgbW9yZSBnZW5lcmljXG4gICAgICogYXBwcyB0aGUgYmVzdCBwcmFjdGljZSBpcyB0byB1c2UgdGhlIHtAbGluayBnZXRUYWJsZUJ5SWRJZkV4aXN0c30gb3JcbiAgICAgKiB7QGxpbmsgZ2V0VGFibGVCeU5hbWVJZkV4aXN0c30gbWV0aG9kcyBpbnN0ZWFkLlxuICAgICAqXG4gICAgICogQHBhcmFtIHRhYmxlSWRPck5hbWUgVGhlIElEIG9yIG5hbWUgb2YgdGhlIHRhYmxlIHlvdSdyZSBsb29raW5nIGZvci5cbiAgICAgKi9cbiAgICBnZXRUYWJsZUlmRXhpc3RzKHRhYmxlSWRPck5hbWU6IFRhYmxlSWQgfCBzdHJpbmcpOiBUYWJsZSB8IG51bGwge1xuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgdGhpcy5nZXRUYWJsZUJ5SWRJZkV4aXN0cyh0YWJsZUlkT3JOYW1lKSA/PyB0aGlzLmdldFRhYmxlQnlOYW1lSWZFeGlzdHModGFibGVJZE9yTmFtZSlcbiAgICAgICAgKTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogVGhlIHRhYmxlIG1hdGNoaW5nIHRoZSBnaXZlbiBJRCBvciBuYW1lLiBUaHJvd3MgaWYgbm8gbWF0Y2hpbmcgdGFibGUgZXhpc3RzIHdpdGhpbiB0aGlzIGJhc2UuXG4gICAgICogVXNlIHtAbGluayBnZXRUYWJsZUlmRXhpc3RzfSBpbnN0ZWFkIGlmIHlvdSBhcmUgdW5zdXJlIHdoZXRoZXIgYSB0YWJsZSBleGlzdHMgd2l0aCB0aGUgZ2l2ZW5cbiAgICAgKiBuYW1lL0lELlxuICAgICAqXG4gICAgICogVGhpcyBtZXRob2QgaXMgY29udmVuaWVudCB3aGVuIGJ1aWxkaW5nIGFuIGFwcCBmb3IgYSBzcGVjaWZpYyBiYXNlLCBidXQgZm9yIG1vcmUgZ2VuZXJpY1xuICAgICAqIGFwcHMgdGhlIGJlc3QgcHJhY3RpY2UgaXMgdG8gdXNlIHRoZSB7QGxpbmsgZ2V0VGFibGVCeUlkfSBvciB7QGxpbmsgZ2V0VGFibGVCeU5hbWV9IG1ldGhvZHNcbiAgICAgKiBpbnN0ZWFkLlxuICAgICAqXG4gICAgICogQHBhcmFtIHRhYmxlSWRPck5hbWUgVGhlIElEIG9yIG5hbWUgb2YgdGhlIHRhYmxlIHlvdSdyZSBsb29raW5nIGZvci5cbiAgICAgKi9cbiAgICBnZXRUYWJsZSh0YWJsZUlkT3JOYW1lOiBUYWJsZUlkIHwgc3RyaW5nKTogVGFibGUge1xuICAgICAgICBjb25zdCB0YWJsZSA9IHRoaXMuZ2V0VGFibGVJZkV4aXN0cyh0YWJsZUlkT3JOYW1lKTtcbiAgICAgICAgaWYgKCF0YWJsZSkge1xuICAgICAgICAgICAgdGhyb3cgc3Bhd25FcnJvcihcbiAgICAgICAgICAgICAgICBcIk5vIHRhYmxlIHdpdGggSUQgb3IgbmFtZSAnJXMnIGluIGJhc2UgJyVzJ1wiLFxuICAgICAgICAgICAgICAgIHRhYmxlSWRPck5hbWUsXG4gICAgICAgICAgICAgICAgdGhpcy5uYW1lLFxuICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGFibGU7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2hlY2tzIHdoZXRoZXIgdGhlIGN1cnJlbnQgdXNlciBoYXMgcGVybWlzc2lvbiB0byBjcmVhdGUgYSB0YWJsZS5cbiAgICAgKlxuICAgICAqIEFjY2VwdHMgcGFydGlhbCBpbnB1dCwgaW4gdGhlIHNhbWUgZm9ybWF0IGFzIHtAbGluayBjcmVhdGVUYWJsZUFzeW5jfS5cbiAgICAgKlxuICAgICAqIFJldHVybnMgYHtoYXNQZXJtaXNzaW9uOiB0cnVlfWAgaWYgdGhlIGN1cnJlbnQgdXNlciBjYW4gdXBkYXRlIHRoZSBzcGVjaWZpZWQgcmVjb3JkLFxuICAgICAqIGB7aGFzUGVybWlzc2lvbjogZmFsc2UsIHJlYXNvbkRpc3BsYXlTdHJpbmc6IHN0cmluZ31gIG90aGVyd2lzZS4gYHJlYXNvbkRpc3BsYXlTdHJpbmdgIG1heSBiZVxuICAgICAqIHVzZWQgdG8gZGlzcGxheSBhbiBlcnJvciBtZXNzYWdlIHRvIHRoZSB1c2VyLlxuICAgICAqXG4gICAgICogQHBhcmFtIG5hbWUgbmFtZSBmb3IgdGhlIHRhYmxlLiBtdXN0IGJlIGNhc2UtaW5zZW5zaXRpdmUgdW5pcXVlXG4gICAgICogQHBhcmFtIGZpZWxkcyBhcnJheSBvZiBmaWVsZHMgdG8gY3JlYXRlIGluIHRoZSB0YWJsZVxuICAgICAqXG4gICAgICogQGV4YW1wbGVcbiAgICAgKiBgYGBqc1xuICAgICAqIGNvbnN0IGNyZWF0ZVRhYmxlQ2hlY2tSZXN1bHQgPSBiYXNlLmNoZWNrUGVybWlzc2lvbnNGb3JDcmVhdGVUYWJsZSgpO1xuICAgICAqXG4gICAgICogaWYgKCFjcmVhdGVUYWJsZUNoZWNrUmVzdWx0Lmhhc1Blcm1pc3Npb24pIHtcbiAgICAgKiAgICAgYWxlcnQoY3JlYXRlVGFibGVDaGVja1Jlc3VsdC5yZWFzb25EaXNwbGF5U3RyaW5nKTtcbiAgICAgKiB9XG4gICAgICogYGBgXG4gICAgICovXG4gICAgY2hlY2tQZXJtaXNzaW9uc0ZvckNyZWF0ZVRhYmxlKFxuICAgICAgICBuYW1lPzogc3RyaW5nLFxuICAgICAgICBmaWVsZHM/OiBBcnJheTx7XG4gICAgICAgICAgICBuYW1lPzogc3RyaW5nO1xuICAgICAgICAgICAgdHlwZT86IEZpZWxkVHlwZTtcbiAgICAgICAgICAgIG9wdGlvbnM/OiB7W2tleTogc3RyaW5nXTogdW5rbm93bn0gfCBudWxsO1xuICAgICAgICAgICAgZGVzY3JpcHRpb24/OiBzdHJpbmcgfCBudWxsO1xuICAgICAgICB9PixcbiAgICApOiBQZXJtaXNzaW9uQ2hlY2tSZXN1bHQge1xuICAgICAgICByZXR1cm4gdGhpcy5fc2RrLl9fbXV0YXRpb25zLmNoZWNrUGVybWlzc2lvbnNGb3JNdXRhdGlvbih7XG4gICAgICAgICAgICB0eXBlOiBNdXRhdGlvblR5cGVzLkNSRUFURV9TSU5HTEVfVEFCTEUsXG4gICAgICAgICAgICBpZDogdW5kZWZpbmVkLCAvLyBHZW5lcmF0ZWQgaW4gY3JlYXRlVGFibGVBc3luYy5cbiAgICAgICAgICAgIG5hbWU6IG5hbWUsXG4gICAgICAgICAgICBmaWVsZHM6IGZpZWxkcz8ubWFwKGZpZWxkID0+IHtcbiAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICBuYW1lOiBmaWVsZC5uYW1lLFxuICAgICAgICAgICAgICAgICAgICBjb25maWc6IGZpZWxkLnR5cGVcbiAgICAgICAgICAgICAgICAgICAgICAgID8ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogZmllbGQudHlwZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEluIGZpZWxkLm9wdGlvbnMgd2UgdHJhbnNsYXRlIG9wdGlvbnMgdG8gbnVsbCB3aGVuIGl0J3MgdW5kZWZpbmVkIChubyBvcHRpb25zKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGJ1dCB0aGUgbXV0YXRpb24gZXhwZWN0cyBjb25maWcgdG8gbWF0Y2ggdGhlIFB1YmxpY0FwaUNvbmZpZywgd2hlcmUgaXQnc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gbm90IHByZXNlbnQgYXQgYWxsIChvcHRpb25zOiB1bmRlZmluZWQgd2lsbCBmYWlsIHZhbGlkYXRpb24pLlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uKGZpZWxkLm9wdGlvbnMgPyB7b3B0aW9uczogZmllbGQub3B0aW9uc30gOiBudWxsKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgOiB1bmRlZmluZWQsXG4gICAgICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBmaWVsZC5kZXNjcmlwdGlvbixcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgfSksXG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEFuIGFsaWFzIGZvciBgY2hlY2tQZXJtaXNzaW9uc0ZvckNyZWF0ZVRhYmxlKG5hbWUsIGZpZWxkcykuaGFzUGVybWlzc2lvbmAuXG4gICAgICpcbiAgICAgKiBDaGVja3Mgd2hldGhlciB0aGUgY3VycmVudCB1c2VyIGhhcyBwZXJtaXNzaW9uIHRvIGNyZWF0ZSBhIHRhYmxlLlxuICAgICAqXG4gICAgICogQWNjZXB0cyBwYXJ0aWFsIGlucHV0LCBpbiB0aGUgc2FtZSBmb3JtYXQgYXMge0BsaW5rIGNyZWF0ZVRhYmxlQXN5bmN9LlxuICAgICAqXG4gICAgICogQHBhcmFtIG5hbWUgbmFtZSBmb3IgdGhlIHRhYmxlLiBtdXN0IGJlIGNhc2UtaW5zZW5zaXRpdmUgdW5pcXVlXG4gICAgICogQHBhcmFtIGZpZWxkcyBhcnJheSBvZiBmaWVsZHMgdG8gY3JlYXRlIGluIHRoZSB0YWJsZVxuICAgICAqXG4gICAgICogQGV4YW1wbGVcbiAgICAgKiBgYGBqc1xuICAgICAqIGNvbnN0IGNhbkNyZWF0ZVRhYmxlID0gdGFibGUuaGFzUGVybWlzc2lvblRvQ3JlYXRlVGFibGUoKTtcbiAgICAgKlxuICAgICAqIGlmICghY2FuQ3JlYXRlVGFibGUpIHtcbiAgICAgKiAgICAgYWxlcnQoJ25vdCBhbGxvd2VkIScpO1xuICAgICAqIH1cbiAgICAgKiBgYGBcbiAgICAgKi9cbiAgICBoYXNQZXJtaXNzaW9uVG9DcmVhdGVUYWJsZShcbiAgICAgICAgbmFtZT86IHN0cmluZyxcbiAgICAgICAgZmllbGRzPzogQXJyYXk8e1xuICAgICAgICAgICAgbmFtZT86IHN0cmluZztcbiAgICAgICAgICAgIHR5cGU/OiBGaWVsZFR5cGU7XG4gICAgICAgICAgICBvcHRpb25zPzoge1trZXk6IHN0cmluZ106IHVua25vd259IHwgbnVsbDtcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uPzogc3RyaW5nIHwgbnVsbDtcbiAgICAgICAgfT4sXG4gICAgKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLmNoZWNrUGVybWlzc2lvbnNGb3JDcmVhdGVUYWJsZShuYW1lLCBmaWVsZHMpLmhhc1Blcm1pc3Npb247XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIG5ldyB0YWJsZS5cbiAgICAgKlxuICAgICAqIFRocm93cyBhbiBlcnJvciBpZiB0aGUgdXNlciBkb2VzIG5vdCBoYXZlIHBlcm1pc3Npb24gdG8gY3JlYXRlIGEgdGFibGUsIGlmIGFuIGludmFsaWRcbiAgICAgKiB0YWJsZSBuYW1lIGlzIHByb3ZpZGVkLCBvciBpZiBpbnZhbGlkIGZpZWxkcyBhcmUgcHJvdmlkZWQgKGludmFsaWQgbmFtZSwgdHlwZSwgb3B0aW9ucyBvclxuICAgICAqIGRlc2NyaXB0aW9uKS5cbiAgICAgKlxuICAgICAqIFJlZmVyIHRvIHtAbGluayBGaWVsZFR5cGV9IGZvciBzdXBwb3J0ZWQgZmllbGQgdHlwZXMsIHRoZSB3cml0ZSBmb3JtYXQgZm9yIGZpZWxkIG9wdGlvbnMsIGFuZFxuICAgICAqIG90aGVyIHNwZWNpZmljcyBmb3IgY2VydGFpbiBmaWVsZCB0eXBlcy5cbiAgICAgKlxuICAgICAqIEF0IGxlYXN0IG9uZSBmaWVsZCBtdXN0IGJlIHNwZWNpZmllZC4gVGhlIGZpcnN0IGZpZWxkIGluIHRoZSBgZmllbGRzYCBhcnJheSB3aWxsIGJlIHVzZWQgYXNcbiAgICAgKiB0aGUgdGFibGUncyBbcHJpbWFyeSBmaWVsZF0oaHR0cHM6Ly9zdXBwb3J0LmFpcnRhYmxlLmNvbS9oYy9lbi11cy9hcnRpY2xlcy8yMDI2MjQxNzktVGhlLU5hbWUtRmllbGQpXG4gICAgICogYW5kIG11c3QgYmUgYSBzdXBwb3J0ZWQgcHJpbWFyeSBmaWVsZCB0eXBlLiBGaWVsZHMgbXVzdCBoYXZlIGNhc2UtaW5zZW5zaXRpdmUgdW5pcXVlIG5hbWVzXG4gICAgICogd2l0aGluIHRoZSB0YWJsZS5cbiAgICAgKlxuICAgICAqIEEgZGVmYXVsdCBncmlkIHZpZXcgd2lsbCBiZSBjcmVhdGVkIHdpdGggYWxsIGZpZWxkcyB2aXNpYmxlLlxuICAgICAqXG4gICAgICogVGhpcyBhY3Rpb24gaXMgYXN5bmNocm9ub3VzLiBVbmxpa2UgbmV3IHJlY29yZHMsIG5ldyB0YWJsZXMgYXJlICoqbm90KiogY3JlYXRlZFxuICAgICAqIG9wdGltaXN0aWNhbGx5IGxvY2FsbHkuIFlvdSBtdXN0IGBhd2FpdGAgdGhlIHJldHVybmVkIHByb21pc2UgYmVmb3JlIHVzaW5nIHRoZSBuZXdcbiAgICAgKiB0YWJsZSBpbiB5b3VyIGFwcC5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBuYW1lIG5hbWUgZm9yIHRoZSB0YWJsZS4gbXVzdCBiZSBjYXNlLWluc2Vuc2l0aXZlIHVuaXF1ZVxuICAgICAqIEBwYXJhbSBmaWVsZHMgYXJyYXkgb2YgZmllbGRzIHRvIGNyZWF0ZSBpbiB0aGUgdGFibGU6IHNlZSBiZWxvdyBmb3IgYW4gZXhhbXBsZS4gYG5hbWVgIGFuZFxuICAgICAqIGB0eXBlYCBtdXN0IGJlIHNwZWNpZmllZCBmb3IgYWxsIGZpZWxkcywgd2hpbGUgYG9wdGlvbnNgIGlzIG9ubHkgcmVxdWlyZWQgZm9yIGZpZWxkcyB0aGF0XG4gICAgICogaGF2ZSBmaWVsZCBvcHRpb25zLiBgZGVzY3JpcHRpb25gIGlzIG9wdGlvbmFsIGFuZCB3aWxsIGJlIGAnJ2AgaWYgbm90IHNwZWNpZmllZCBvciBpZlxuICAgICAqIHNwZWNpZmllZCBhcyBgbnVsbGAuXG4gICAgICpcbiAgICAgKiBAZXhhbXBsZVxuICAgICAqIGBgYGpzXG4gICAgICogYXN5bmMgZnVuY3Rpb24gY3JlYXRlTmV3VGFibGUoKSB7XG4gICAgICogICAgIGNvbnN0IG5hbWUgPSAnTXkgbmV3IHRhYmxlJztcbiAgICAgKiAgICAgY29uc3QgZmllbGRzID0gW1xuICAgICAqICAgICAgICAgLy8gTmFtZSB3aWxsIGJlIHRoZSBwcmltYXJ5IGZpZWxkIG9mIHRoZSB0YWJsZS5cbiAgICAgKiAgICAgICAgIHtuYW1lOiAnTmFtZScsIHR5cGU6IEZpZWxkVHlwZS5TSU5HTEVfTElORV9URVhULCBkZXNjcmlwdGlvbjogJ1RoaXMgaXMgdGhlIHByaW1hcnkgZmllbGQnfSxcbiAgICAgKiAgICAgICAgIHtuYW1lOiAnTm90ZXMnLCB0eXBlOiBGaWVsZFR5cGUuUklDSF9URVhUfSxcbiAgICAgKiAgICAgICAgIHtuYW1lOiAnQXR0YWNobWVudHMnLCB0eXBlOiBGaWVsZFR5cGUuTVVMVElQTEVfQVRUQUNITUVOVFN9LFxuICAgICAqICAgICAgICAge25hbWU6ICdOdW1iZXInLCB0eXBlOiBGaWVsZFR5cGUuTlVNQkVSLCBvcHRpb25zOiB7XG4gICAgICogICAgICAgICAgICAgcHJlY2lzaW9uOiA4LFxuICAgICAqICAgICAgICAgfX0sXG4gICAgICogICAgICAgICB7bmFtZTogJ1NlbGVjdCcsIHR5cGU6IEZpZWxkVHlwZS5TSU5HTEVfU0VMRUNULCBvcHRpb25zOiB7XG4gICAgICogICAgICAgICAgICAgY2hvaWNlczogW1xuICAgICAqICAgICAgICAgICAgICAgICB7bmFtZTogJ0EnfSxcbiAgICAgKiAgICAgICAgICAgICAgICAge25hbWU6ICdCJ30sXG4gICAgICogICAgICAgICAgICAgXSxcbiAgICAgKiAgICAgICAgIH19LFxuICAgICAqICAgICBdO1xuICAgICAqXG4gICAgICogICAgIGlmIChiYXNlLmhhc1Blcm1pc3Npb25Ub0NyZWF0ZVRhYmxlKG5hbWUsIGZpZWxkcykpIHtcbiAgICAgKiAgICAgICAgIGF3YWl0IGJhc2UuY3JlYXRlVGFibGVBc3luYyhuYW1lLCBmaWVsZHMpO1xuICAgICAqICAgICB9XG4gICAgICogfVxuICAgICAqIGBgYFxuICAgICAqL1xuICAgIGFzeW5jIGNyZWF0ZVRhYmxlQXN5bmMoXG4gICAgICAgIG5hbWU6IHN0cmluZyxcbiAgICAgICAgZmllbGRzOiBBcnJheTx7XG4gICAgICAgICAgICBuYW1lOiBzdHJpbmc7XG4gICAgICAgICAgICB0eXBlOiBGaWVsZFR5cGU7XG4gICAgICAgICAgICBvcHRpb25zPzoge1trZXk6IHN0cmluZ106IHVua25vd259IHwgbnVsbDtcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uPzogc3RyaW5nIHwgbnVsbDtcbiAgICAgICAgfT4sXG4gICAgKTogUHJvbWlzZTxUYWJsZT4ge1xuICAgICAgICBjb25zdCB0YWJsZUlkID0gdGhpcy5fc2RrLl9fYWlydGFibGVJbnRlcmZhY2UuaWRHZW5lcmF0b3IuZ2VuZXJhdGVUYWJsZUlkKCk7XG5cbiAgICAgICAgYXdhaXQgdGhpcy5fc2RrLl9fbXV0YXRpb25zLmFwcGx5TXV0YXRpb25Bc3luYyh7XG4gICAgICAgICAgICBpZDogdGFibGVJZCxcbiAgICAgICAgICAgIHR5cGU6IE11dGF0aW9uVHlwZXMuQ1JFQVRFX1NJTkdMRV9UQUJMRSxcbiAgICAgICAgICAgIG5hbWUsXG4gICAgICAgICAgICBmaWVsZHM6IGZpZWxkcy5tYXAoZmllbGQgPT4ge1xuICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgIG5hbWU6IGZpZWxkLm5hbWUsXG4gICAgICAgICAgICAgICAgICAgIGNvbmZpZzoge1xuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogZmllbGQudHlwZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIEluIGZpZWxkLm9wdGlvbnMgd2UgdHJhbnNsYXRlIG9wdGlvbnMgdG8gbnVsbCB3aGVuIGl0J3MgdW5kZWZpbmVkIChubyBvcHRpb25zKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGJ1dCB0aGUgbXV0YXRpb24gZXhwZWN0cyBjb25maWcgdG8gbWF0Y2ggdGhlIFB1YmxpY0FwaUNvbmZpZywgd2hlcmUgaXQnc1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gbm90IHByZXNlbnQgYXQgYWxsIChvcHRpb25zOiB1bmRlZmluZWQgd2lsbCBmYWlsIHZhbGlkYXRpb24pLlxuICAgICAgICAgICAgICAgICAgICAgICAgLi4uKGZpZWxkLm9wdGlvbnMgPyB7b3B0aW9uczogZmllbGQub3B0aW9uc30gOiBudWxsKSxcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgLy8gQ29lcmNlIHVuZGVmaW5lZCB0byBudWxsIHNvIHRoYXQgb25seSBvbGQgU0RLcyBwYXNzIFwidW5kZWZpbmVkXCIgZm9yIGRlc2NyaXB0aW9uXG4gICAgICAgICAgICAgICAgICAgIC8vICcnIGlzIHBlcm1pdHRlZCwgYXMgd2UgYWxyZWFkeSBzZXQgZW1wdHkgZGVzY3JpcHRpb25zIHRvICcnIHdoZW4gZWRpdGluZyBkZXNjcmlwdGlvbnNcbiAgICAgICAgICAgICAgICAgICAgLy8gZnJvbSB0aGUgVUlcbiAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb246IGZpZWxkLmRlc2NyaXB0aW9uID8/IG51bGwsXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIH0pLFxuICAgICAgICB9KTtcblxuICAgICAgICByZXR1cm4gdGhpcy5nZXRUYWJsZUJ5SWQodGFibGVJZCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmV0dXJucyB0aGUgbWF4aW11bSBudW1iZXIgb2YgcmVjb3JkcyBhbGxvd2VkIGluIGVhY2ggdGFibGUgb2YgdGhpcyBiYXNlLlxuICAgICAqL1xuICAgIGdldE1heFJlY29yZHNQZXJUYWJsZSgpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gdGhpcy5fZGF0YS5tYXhSb3dzUGVyVGFibGUgPz8gNTAwMDA7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGludGVybmFsXG4gICAgICovXG4gICAgX190cmlnZ2VyT25DaGFuZ2VGb3JDaGFuZ2VkUGF0aHMoY2hhbmdlZFBhdGhzOiBDaGFuZ2VkUGF0aHNGb3JUeXBlPEJhc2VEYXRhPikge1xuICAgICAgICBsZXQgZGlkU2NoZW1hQ2hhbmdlID0gZmFsc2U7XG4gICAgICAgIGlmIChjaGFuZ2VkUGF0aHMubmFtZSkge1xuICAgICAgICAgICAgdGhpcy5fb25DaGFuZ2UoV2F0Y2hhYmxlQmFzZUtleXMubmFtZSk7XG4gICAgICAgICAgICBkaWRTY2hlbWFDaGFuZ2UgPSB0cnVlO1xuICAgICAgICB9XG4gICAgICAgIGlmIChjaGFuZ2VkUGF0aHMuY29sb3IpIHtcbiAgICAgICAgICAgIHRoaXMuX29uQ2hhbmdlKFdhdGNoYWJsZUJhc2VLZXlzLmNvbG9yKTtcbiAgICAgICAgICAgIGRpZFNjaGVtYUNoYW5nZSA9IHRydWU7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGNoYW5nZWRQYXRocy50YWJsZU9yZGVyKSB7XG4gICAgICAgICAgICB0aGlzLl9vbkNoYW5nZShXYXRjaGFibGVCYXNlS2V5cy50YWJsZXMpO1xuICAgICAgICAgICAgZGlkU2NoZW1hQ2hhbmdlID0gdHJ1ZTtcblxuICAgICAgICAgICAgLy8gQ2xlYW4gdXAgZGVsZXRlZCB0YWJsZXNcbiAgICAgICAgICAgIGZvciAoY29uc3QgW3RhYmxlSWQsIHRhYmxlTW9kZWxdIG9mIGVudHJpZXModGhpcy5fdGFibGVNb2RlbHNCeUlkKSkge1xuICAgICAgICAgICAgICAgIGlmICh0YWJsZU1vZGVsLmlzRGVsZXRlZCkge1xuICAgICAgICAgICAgICAgICAgICBkZWxldGUgdGhpcy5fdGFibGVNb2RlbHNCeUlkW3RhYmxlSWRdO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGZvciAoY29uc3QgW3RhYmxlSWQsIHJlY29yZFN0b3JlXSBvZiBlbnRyaWVzKHRoaXMuX3RhYmxlUmVjb3JkU3RvcmVzQnlUYWJsZUlkKSkge1xuICAgICAgICAgICAgICAgIGlmIChyZWNvcmRTdG9yZSAmJiByZWNvcmRTdG9yZS5pc0RlbGV0ZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgcmVjb3JkU3RvcmUuX19vbkRhdGFEZWxldGlvbigpO1xuICAgICAgICAgICAgICAgICAgICBkZWxldGUgdGhpcy5fdGFibGVSZWNvcmRTdG9yZXNCeVRhYmxlSWRbdGFibGVJZF07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHt0YWJsZXNCeUlkfSA9IGNoYW5nZWRQYXRocztcbiAgICAgICAgaWYgKHRhYmxlc0J5SWQpIHtcbiAgICAgICAgICAgIGZvciAoY29uc3QgW3RhYmxlSWQsIGRpcnR5VGFibGVQYXRoc10gb2YgZW50cmllcyh0YWJsZXNCeUlkKSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IHRhYmxlID0gdGhpcy5nZXRUYWJsZUJ5SWRJZkV4aXN0cyh0YWJsZUlkKTtcbiAgICAgICAgICAgICAgICBpZiAodGFibGUgJiYgZGlydHlUYWJsZVBhdGhzKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGRpZFRhYmxlU2NoZW1hQ2hhbmdlID0gdGFibGUuX190cmlnZ2VyT25DaGFuZ2VGb3JEaXJ0eVBhdGhzKFxuICAgICAgICAgICAgICAgICAgICAgICAgZGlydHlUYWJsZVBhdGhzLFxuICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICBpZiAoZGlkVGFibGVTY2hlbWFDaGFuZ2UpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGRpZFNjaGVtYUNoYW5nZSA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGNoYW5nZWRQYXRocy5jb2xsYWJvcmF0b3JzQnlJZCB8fCBjaGFuZ2VkUGF0aHMuYWN0aXZlQ29sbGFib3JhdG9ySWRzKSB7XG4gICAgICAgICAgICB0aGlzLl9vbkNoYW5nZShXYXRjaGFibGVCYXNlS2V5cy5jb2xsYWJvcmF0b3JzKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoY2hhbmdlZFBhdGhzLmFwcEludGVyZmFjZSkge1xuICAgICAgICAgICAgZGlkU2NoZW1hQ2hhbmdlID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoZGlkU2NoZW1hQ2hhbmdlKSB7XG4gICAgICAgICAgICB0aGlzLl9vbkNoYW5nZShXYXRjaGFibGVCYXNlS2V5cy5zY2hlbWEpO1xuICAgICAgICB9XG4gICAgfVxuICAgIC8qKlxuICAgICAqIEBpbnRlcm5hbFxuICAgICAqL1xuICAgIF9fYXBwbHlDaGFuZ2VzV2l0aG91dFRyaWdnZXJpbmdFdmVudHMoXG4gICAgICAgIGNoYW5nZXM6IFJlYWRvbmx5QXJyYXk8TW9kZWxDaGFuZ2U+LFxuICAgICk6IENoYW5nZWRQYXRoc0ZvclR5cGU8QmFzZURhdGE+IHtcbiAgICAgICAgLy8gSW50ZXJuYWwgbWV0aG9kLlxuICAgICAgICAvLyBBZnRlciBhcHBseWluZyBhbGwgY2hhbmdlcywgY2hhbmdlZFBhdGhzIHdpbGwgaGF2ZSB0aGUgc2FtZSBzaGFwZSBhc1xuICAgICAgICAvLyB0aGUgc3Vic2V0IG9mIHRoaXMuX2RhdGEgdGhhdCBjaGFuZ2VkLiBGb3IgZXhhbXBsZSwgaWYgc29tZSB0YWJsZSdzXG4gICAgICAgIC8vIG5hbWUgY2hhbmdlcywgY2hhbmdlZFBhdGhzIHdpbGwgYmUge3RhYmxlc0J5SWQ6IHt0YmwxMjM6IG5hbWU6IHtfaXNEaXJ0eTogdHJ1ZX19fS5cbiAgICAgICAgLy8gVXNlIGl0IHRvIGNhbGwgX190cmlnZ2VyT25DaGFuZ2VGb3JDaGFuZ2VkUGF0aHMgdG8gdHJpZ2dlciBjaGFuZ2UgZXZlbnRzIGZvclxuICAgICAgICAvLyBlZmZlY3RlZCBtb2RlbHNcbiAgICAgICAgY29uc3QgY2hhbmdlZFBhdGhzID0ge307XG4gICAgICAgIGZvciAoY29uc3QgY2hhbmdlIG9mIGNoYW5nZXMpIHtcbiAgICAgICAgICAgIHRoaXMuX2FwcGx5Q2hhbmdlKGNoYW5nZS5wYXRoLCBjaGFuZ2UudmFsdWUsIGNoYW5nZWRQYXRocyk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGNoYW5nZWRQYXRocztcbiAgICB9XG4gICAgLyoqXG4gICAgICogQGludGVybmFsXG4gICAgICovXG4gICAgX2FwcGx5Q2hhbmdlKFxuICAgICAgICBwYXRoOiBBcnJheTxzdHJpbmc+LFxuICAgICAgICB2YWx1ZTogdW5rbm93bixcbiAgICAgICAgY2hhbmdlZFBhdGhzQnlSZWY6IENoYW5nZWRQYXRoc0ZvclR5cGU8QmFzZURhdGE+LFxuICAgICkge1xuICAgICAgICBsZXQgZGF0YVN1YnRyZWUgPSB0aGlzLl9kYXRhIGFzIGFueTtcbiAgICAgICAgbGV0IGRpcnR5U3VidHJlZSA9IGNoYW5nZWRQYXRoc0J5UmVmIGFzIGFueTtcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBwYXRoLmxlbmd0aCAtIDE7IGkrKykge1xuICAgICAgICAgICAgY29uc3QgcGFydCA9IHBhdGhbaV07XG5cbiAgICAgICAgICAgIGlmICghZGF0YVN1YnRyZWVbcGFydF0pIHtcbiAgICAgICAgICAgICAgICAvLyBDZXJ0YWluIGZpZWxkcyBhcmUgc3RvcmVkIHNwYXJzZWx5IChlLmcuIGNlbGxWYWx1ZXNCeUZpZWxkSWQpLFxuICAgICAgICAgICAgICAgIC8vIHNvIGNyZWF0ZSBhbiBvYmplY3Qgb24gZGVtYW5kIGlmIG5lZWRlZC5cbiAgICAgICAgICAgICAgICBkYXRhU3VidHJlZVtwYXJ0XSA9IHt9O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZGF0YVN1YnRyZWUgPSBkYXRhU3VidHJlZVtwYXJ0XTtcblxuICAgICAgICAgICAgaWYgKCFkaXJ0eVN1YnRyZWVbcGFydF0pIHtcbiAgICAgICAgICAgICAgICBkaXJ0eVN1YnRyZWVbcGFydF0gPSB7fTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGludmFyaWFudChkaXJ0eVN1YnRyZWVbcGFydF0sICdkaXJ0eVN1YnRyZWUnKTtcbiAgICAgICAgICAgIGRpcnR5U3VidHJlZSA9IGRpcnR5U3VidHJlZVtwYXJ0XTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBsYXN0UGF0aFBhcnQgPSBwYXRoW3BhdGgubGVuZ3RoIC0gMV07XG4gICAgICAgIGNvbnN0IGRpZENoYW5nZSA9ICFpc0RlZXBFcXVhbChkYXRhU3VidHJlZVtsYXN0UGF0aFBhcnRdLCB2YWx1ZSk7XG4gICAgICAgIGlmICh2YWx1ZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICBkZWxldGUgZGF0YVN1YnRyZWVbbGFzdFBhdGhQYXJ0XTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGRhdGFTdWJ0cmVlW2xhc3RQYXRoUGFydF0gPSB2YWx1ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChkaWRDaGFuZ2UpIHtcbiAgICAgICAgICAgIGlmICghZGlydHlTdWJ0cmVlW2xhc3RQYXRoUGFydF0pIHtcbiAgICAgICAgICAgICAgICBkaXJ0eVN1YnRyZWVbbGFzdFBhdGhQYXJ0XSA9IHt9O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaW52YXJpYW50KGRpcnR5U3VidHJlZVtsYXN0UGF0aFBhcnRdLCAnZGlydHlTdWJ0cmVlJyk7XG4gICAgICAgICAgICBkaXJ0eVN1YnRyZWVbbGFzdFBhdGhQYXJ0XS5faXNEaXJ0eSA9IHRydWU7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IEJhc2U7XG4iXX0=
@@ -106,4 +106,5 @@ var sdk; // The application-level Sdk instance must be injected dynamically to a
106
106
 
107
107
  function __injectSdkIntoCreateAggregators(_sdk) {
108
108
  sdk = _sdk;
109
- }
109
+ }
110
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9tb2RlbHMvY3JlYXRlX2FnZ3JlZ2F0b3JzLnRzIl0sIm5hbWVzIjpbImFnZ3JlZ2F0ZSIsImFnZ3JlZ2F0b3JLZXkiLCJyZWNvcmRzIiwiZmllbGQiLCJpc0FnZ3JlZ2F0b3JBdmFpbGFibGUiLCJ0eXBlIiwic2RrIiwiYXBwSW50ZXJmYWNlIiwiX19hcHBJbnRlcmZhY2UiLCJhaXJ0YWJsZUludGVyZmFjZSIsIl9fYWlydGFibGVJbnRlcmZhY2UiLCJjZWxsVmFsdWVzIiwibWFwIiwicmVjb3JkIiwiX2dldFJhd0NlbGxWYWx1ZSIsImFnZ3JlZ2F0b3JzIiwiX2RhdGEiLCJhZ2dyZWdhdGVUb1N0cmluZyIsImNyZWF0ZUFnZ3JlZ2F0b3JzIiwiYWdncmVnYXRvcktleXMiLCJnZXRBbGxBdmFpbGFibGVBZ2dyZWdhdG9yS2V5cyIsImtleSIsImNvbmZpZyIsImdldEFnZ3JlZ2F0b3JDb25maWciLCJPYmplY3QiLCJmcmVlemUiLCJkaXNwbGF5TmFtZSIsInNob3J0RGlzcGxheU5hbWUiLCJiaW5kIiwiX19pbmplY3RTZGtJbnRvQ3JlYXRlQWdncmVnYXRvcnMiLCJfc2RrIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUdBOztBQUhBOztBQUNBOztBQUFvRDtBQXFEcEQsSUFBTUEsU0FBUyxHQUFHLENBQUNDLGFBQUQsRUFBK0JDLE9BQS9CLEVBQXVEQyxLQUF2RCxLQUF3RTtBQUN0RixNQUFJLENBQUNBLEtBQUssQ0FBQ0MscUJBQU4sQ0FBNEJILGFBQTVCLENBQUwsRUFBaUQ7QUFDN0MsVUFBTSw2QkFDRixrREFERSxFQUVGQSxhQUZFLEVBR0ZFLEtBQUssQ0FBQ0UsSUFISixDQUFOO0FBS0g7O0FBUHFGLGNBU1BDLEdBVE87QUFBQSxNQVMvREMsWUFUK0QsU0FTL0VDLGNBVCtFO0FBQUEsTUFTNUJDLGlCQVQ0QixTQVNqREMsbUJBVGlEO0FBVXRGLE1BQU1DLFVBQVUsR0FBR1QsT0FBTyxDQUFDVSxHQUFSLENBQVlDLE1BQU0sSUFBSUEsTUFBTSxDQUFDQyxnQkFBUCxDQUF3QlgsS0FBeEIsQ0FBdEIsQ0FBbkI7QUFDQSxTQUFPTSxpQkFBaUIsQ0FBQ00sV0FBbEIsQ0FBOEJmLFNBQTlCLENBQ0hPLFlBREcsRUFFSE4sYUFGRyxFQUdIVSxVQUhHLEVBSUhSLEtBQUssQ0FBQ2EsS0FKSCxDQUFQO0FBTUgsQ0FqQkQ7O0FBbUJBLElBQU1DLGlCQUFpQixHQUFHLENBQUNoQixhQUFELEVBQStCQyxPQUEvQixFQUF1REMsS0FBdkQsS0FBd0U7QUFDOUYsTUFBSSxDQUFDQSxLQUFLLENBQUNDLHFCQUFOLENBQTRCSCxhQUE1QixDQUFMLEVBQWlEO0FBQzdDLFVBQU0sNkJBQ0Ysa0RBREUsRUFFRkEsYUFGRSxFQUdGRSxLQUFLLENBQUNFLElBSEosQ0FBTjtBQUtIOztBQVA2RixjQVNmQyxHQVRlO0FBQUEsTUFTdkVDLFlBVHVFLFNBU3ZGQyxjQVR1RjtBQUFBLE1BU3BDQyxpQkFUb0MsU0FTekRDLG1CQVR5RDtBQVU5RixNQUFNQyxVQUFVLEdBQUdULE9BQU8sQ0FBQ1UsR0FBUixDQUFZQyxNQUFNLElBQUlBLE1BQU0sQ0FBQ0MsZ0JBQVAsQ0FBd0JYLEtBQXhCLENBQXRCLENBQW5CO0FBQ0EsU0FBT00saUJBQWlCLENBQUNNLFdBQWxCLENBQThCRSxpQkFBOUIsQ0FDSFYsWUFERyxFQUVITixhQUZHLEVBR0hVLFVBSEcsRUFJSFIsS0FBSyxDQUFDYSxLQUpILENBQVA7QUFNSCxDQWpCRDtBQW1CQTs7Ozs7Ozs7Ozs7OztBQVdlLFNBQVNFLGlCQUFULEdBQTZCO0FBQUEsY0FDU1osR0FEVDtBQUFBLE1BQ1pHLGlCQURZLFNBQ2pDQyxtQkFEaUM7QUFFeEMsTUFBTUssV0FBd0IsR0FBRyxFQUFqQztBQUNBLE1BQU1JLGNBQWMsR0FBR1YsaUJBQWlCLENBQUNNLFdBQWxCLENBQThCSyw2QkFBOUIsRUFBdkI7QUFId0M7QUFBQTtBQUFBOztBQUFBO0FBS3hDLHlCQUFrQkQsY0FBbEIsOEhBQWtDO0FBQUEsVUFBdkJFLElBQXVCO0FBQzlCLFVBQU1DLE1BQU0sR0FBR2IsaUJBQWlCLENBQUNNLFdBQWxCLENBQThCUSxtQkFBOUIsQ0FBa0RGLElBQWxELENBQWY7QUFDQU4sTUFBQUEsV0FBVyxDQUFDTSxJQUFELENBQVgsR0FBbUJHLE1BQU0sQ0FBQ0MsTUFBUCxDQUFjO0FBQzdCSixRQUFBQSxHQUFHLEVBQUhBLElBRDZCO0FBRTdCSyxRQUFBQSxXQUFXLEVBQUVKLE1BQU0sQ0FBQ0ksV0FGUztBQUc3QkMsUUFBQUEsZ0JBQWdCLEVBQUVMLE1BQU0sQ0FBQ0ssZ0JBSEk7QUFJN0IzQixRQUFBQSxTQUFTLEVBQUVBLFNBQVMsQ0FBQzRCLElBQVYsQ0FBZSxJQUFmLEVBQXFCUCxJQUFyQixDQUprQjtBQUs3QkosUUFBQUEsaUJBQWlCLEVBQUVBLGlCQUFpQixDQUFDVyxJQUFsQixDQUF1QixJQUF2QixFQUE2QlAsSUFBN0I7QUFMVSxPQUFkLENBQW5CO0FBT0g7QUFkdUM7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTs7QUFnQnhDRyxFQUFBQSxNQUFNLENBQUNDLE1BQVAsQ0FBY1YsV0FBZDtBQUVBLFNBQU9BLFdBQVA7QUFDSDs7QUFFRCxJQUFJVCxHQUFKLEMsQ0FFQTtBQUNBOztBQUNPLFNBQVN1QixnQ0FBVCxDQUEwQ0MsSUFBMUMsRUFBcUQ7QUFDeER4QixFQUFBQSxHQUFHLEdBQUd3QixJQUFOO0FBQ0giLCJzb3VyY2VzQ29udGVudCI6WyIvLyBpc3RhbmJ1bCBpZ25vcmUgZmlsZVxuLyoqIEBtb2R1bGUgQGFpcnRhYmxlL2Jsb2Nrcy9tb2RlbHM6IEFnZ3JlZ2F0b3JzICovIC8qKiAqL1xuaW1wb3J0IHtBZ2dyZWdhdG9yS2V5fSBmcm9tICcuLi90eXBlcy9hZ2dyZWdhdG9ycyc7XG5pbXBvcnQge3NwYXduRXJyb3J9IGZyb20gJy4uL2Vycm9yX3V0aWxzJztcbmltcG9ydCBTZGsgZnJvbSAnLi4vc2RrJztcbmltcG9ydCBSZWNvcmQgZnJvbSAnLi9yZWNvcmQnO1xuaW1wb3J0IEZpZWxkIGZyb20gJy4vZmllbGQnO1xuXG4vKipcbiAqIEFnZ3JlZ2F0b3JzIGNhbiBiZSB1c2VkIHRvIGNvbXB1dGUgYWdncmVnYXRlcyBmb3IgY2VsbCB2YWx1ZXMuXG4gKlxuICogQGV4YW1wbGVcbiAqIGBgYGpzXG4gKiBpbXBvcnQge2FnZ3JlZ2F0b3JzfSBmcm9tICdAYWlydGFibGUvYmxvY2tzL21vZGVscyc7XG4gKlxuICogLy8gVG8gZ2V0IGEgbGlzdCBvZiBhZ2dyZWdhdG9ycyBzdXBwb3J0ZWQgZm9yIGEgc3BlY2lmaWMgZmllbGQ6XG4gKiBjb25zdCBmaWVsZEFnZ3JlZ2F0b3JzID0gbXlGaWVsZC5hdmFpbGFibGVBZ2dyZWdhdG9ycztcbiAqXG4gKiAvLyBUbyBjb21wdXRlIHRoZSB0b3RhbCBhdHRhY2htZW50IHNpemUgb2YgYW4gYXR0YWNobWVudCBmaWVsZDpcbiAqIGNvbnN0IGFnZ3JlZ2F0b3IgPSBhZ2dyZWdhdG9ycy50b3RhbEF0dGFjaG1lbnRTaXplO1xuICogY29uc3QgdmFsdWUgPSBhZ2dyZWdhdG9yLmFnZ3JlZ2F0ZShteVJlY29yZHMsIG15QXR0YWNobWVudEZpZWxkKTtcbiAqIGNvbnN0IHZhbHVlQXNTdHJpbmcgPSBhZ2dyZWdhdGUuYWdncmVnYXRlVG9TdHJpbmcobXlSZWNvcmRzLCBteUF0dGFjaG1lbnRGaWVsZCk7XG4gKiBgYGBcbiAqIEBkb2NzUGF0aCBtb2RlbHMvQWdncmVnYXRvclxuICovXG5leHBvcnQgaW50ZXJmYWNlIEFnZ3JlZ2F0b3Ige1xuICAgIC8qKiBBIHVuaXF1ZSBrZXkgZm9yIHRoaXMgYWdncmVnYXRvciB0aGF0IGNhbiBiZSB1c2VkIHRvIGlkZW50aWZ5IGl0IGluIGNvZGUuICovXG4gICAga2V5OiBBZ2dyZWdhdG9yS2V5O1xuICAgIC8qKiBBIHVzZXIgZnJpZW5kbHkgbmFtZSBmb3IgdGhpcyBhZ2dyZWdhdG9yIHRoYXQgY2FuIGJlIGRpc3BsYXllZCB0byB1c2Vycy4gKi9cbiAgICBkaXNwbGF5TmFtZTogc3RyaW5nO1xuICAgIC8qKiBBIHNob3J0IHVzZXIgZnJpZW5kbHkgbmFtZSBmb3IgdGhpcyBhZ2dyZWdhdG9yIHRoYXQgY2FuIGJlIGRpc3BsYXllZCB0byB1c2Vycy4gKi9cbiAgICBzaG9ydERpc3BsYXlOYW1lOiBzdHJpbmc7XG5cbiAgICAvLyBUT0RPKGpiKTogYWRkIGJldHRlciBmbG93IHR5cGVzIGZvciB0aGUgcmVzdWx0IG9mIHRoZXNlIGZ1bmN0aW9ucy4gVGhpcyB3b3VsZFxuICAgIC8vIHJlcXVpcmUgbWFudWFsbHkgZGVmaW5pbmcgZWFjaCBhZ2dyZWdhdGlvbiBmdW5jdGlvbiBiZWxvdyByYXRoZXIgdGhhbiBkb2luZyBpdFxuICAgIC8vIGR5bmFtaWNhbGx5IG9uIGxvYWQuXG4gICAgLyoqIEFnZ3JlZ2F0ZXMgdGhlIHZhbHVlIG9mIGBmaWVsZGAgaW4gZWFjaCBvZiBgcmVjb3Jkc2AgdG8gcHJvZHVjZSBhIHNpbmdsZSB2YWx1ZS4gKi9cbiAgICBhZ2dyZWdhdGUocmVjb3JkczogQXJyYXk8UmVjb3JkPiwgZmllbGQ6IEZpZWxkKTogdW5rbm93bjtcbiAgICAvKiogQWdncmVnYXRlcyB0aGUgdmFsdWUgb2YgYGZpZWxkYCBpbiBlYWNoIG9mIGByZWNvcmRzYCB0byBwcm9kdWNlIGEgc2luZ2xlIHZhbHVlLCBmb3JtYXR0ZWQgYXMgYSBzdHJpbmcuICovXG4gICAgYWdncmVnYXRlVG9TdHJpbmcocmVjb3JkczogQXJyYXk8UmVjb3JkPiwgZmllbGQ6IEZpZWxkKTogc3RyaW5nO1xufVxuXG4vKipcbiAqIE5vdGU6IHRoaXMgaXMgaGlkZGVuIGluc3RlYWQgb2YgaW50ZXJuYWwgYXMgaXQgaXMgdGhlIHR5cGUgb2YgdGhlIHB1YmxpYyBtb2RlbHMuYWdncmVnYXRvcnMuXG4gKlxuICogSWYgaXRzIGludGVybmFsLCB0eXBlc2NyaXB0IHdvbid0IGtub3cgYWJvdXQgaXQgc2luY2UgdGhlIHR5cGVzIHdpbGwgYmUgc3RyaXBwZWQsIGFuZCB0eXBlc2NyaXB0XG4gKiBibG9ja3Mgd2lsbCBlcnJvciBkdWUgdG8gaW5jb21wbGV0ZSB0eXBlIGRlZmluaXRpb25zLlxuICpcbiAqIEBoaWRkZW5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBBZ2dyZWdhdG9ycyB7XG4gICAgW2tleTogc3RyaW5nXTogQWdncmVnYXRvcjtcbn1cblxuY29uc3QgYWdncmVnYXRlID0gKGFnZ3JlZ2F0b3JLZXk6IEFnZ3JlZ2F0b3JLZXksIHJlY29yZHM6IEFycmF5PFJlY29yZD4sIGZpZWxkOiBGaWVsZCkgPT4ge1xuICAgIGlmICghZmllbGQuaXNBZ2dyZWdhdG9yQXZhaWxhYmxlKGFnZ3JlZ2F0b3JLZXkpKSB7XG4gICAgICAgIHRocm93IHNwYXduRXJyb3IoXG4gICAgICAgICAgICAnVGhlICVzIGFnZ3JlZ2F0b3IgaXMgbm90IGF2YWlsYWJsZSBmb3IgJXMgZmllbGRzJyxcbiAgICAgICAgICAgIGFnZ3JlZ2F0b3JLZXksXG4gICAgICAgICAgICBmaWVsZC50eXBlLFxuICAgICAgICApO1xuICAgIH1cblxuICAgIGNvbnN0IHtfX2FwcEludGVyZmFjZTogYXBwSW50ZXJmYWNlLCBfX2FpcnRhYmxlSW50ZXJmYWNlOiBhaXJ0YWJsZUludGVyZmFjZX0gPSBzZGs7XG4gICAgY29uc3QgY2VsbFZhbHVlcyA9IHJlY29yZHMubWFwKHJlY29yZCA9PiByZWNvcmQuX2dldFJhd0NlbGxWYWx1ZShmaWVsZCkpO1xuICAgIHJldHVybiBhaXJ0YWJsZUludGVyZmFjZS5hZ2dyZWdhdG9ycy5hZ2dyZWdhdGUoXG4gICAgICAgIGFwcEludGVyZmFjZSxcbiAgICAgICAgYWdncmVnYXRvcktleSxcbiAgICAgICAgY2VsbFZhbHVlcyxcbiAgICAgICAgZmllbGQuX2RhdGEsXG4gICAgKTtcbn07XG5cbmNvbnN0IGFnZ3JlZ2F0ZVRvU3RyaW5nID0gKGFnZ3JlZ2F0b3JLZXk6IEFnZ3JlZ2F0b3JLZXksIHJlY29yZHM6IEFycmF5PFJlY29yZD4sIGZpZWxkOiBGaWVsZCkgPT4ge1xuICAgIGlmICghZmllbGQuaXNBZ2dyZWdhdG9yQXZhaWxhYmxlKGFnZ3JlZ2F0b3JLZXkpKSB7XG4gICAgICAgIHRocm93IHNwYXduRXJyb3IoXG4gICAgICAgICAgICAnVGhlICVzIGFnZ3JlZ2F0b3IgaXMgbm90IGF2YWlsYWJsZSBmb3IgJXMgZmllbGRzJyxcbiAgICAgICAgICAgIGFnZ3JlZ2F0b3JLZXksXG4gICAgICAgICAgICBmaWVsZC50eXBlLFxuICAgICAgICApO1xuICAgIH1cblxuICAgIGNvbnN0IHtfX2FwcEludGVyZmFjZTogYXBwSW50ZXJmYWNlLCBfX2FpcnRhYmxlSW50ZXJmYWNlOiBhaXJ0YWJsZUludGVyZmFjZX0gPSBzZGs7XG4gICAgY29uc3QgY2VsbFZhbHVlcyA9IHJlY29yZHMubWFwKHJlY29yZCA9PiByZWNvcmQuX2dldFJhd0NlbGxWYWx1ZShmaWVsZCkpO1xuICAgIHJldHVybiBhaXJ0YWJsZUludGVyZmFjZS5hZ2dyZWdhdG9ycy5hZ2dyZWdhdGVUb1N0cmluZyhcbiAgICAgICAgYXBwSW50ZXJmYWNlLFxuICAgICAgICBhZ2dyZWdhdG9yS2V5LFxuICAgICAgICBjZWxsVmFsdWVzLFxuICAgICAgICBmaWVsZC5fZGF0YSxcbiAgICApO1xufTtcblxuLyoqXG4gKiBOb3RlOiB0aGlzIGlzIGhpZGRlbiBpbnN0ZWFkIG9mIGludGVybmFsIGFzIGl0IGlzIHVzZWQgdG8gZGV0ZXJtaW5lIHRoZSB0eXBlIG9mIHRoZSBwdWJsaWNcbiAqIG1vZGVscy5hZ2dyZWdhdG9ycy5cbiAqXG4gKiBJZiBpdHMgaW50ZXJuYWwsIHR5cGVzY3JpcHQgd29uJ3Qga25vdyBhYm91dCBpdCBzaW5jZSB0aGUgdHlwZXMgd2lsbCBiZSBzdHJpcHBlZCwgYW5kIHR5cGVzY3JpcHRcbiAqIGJsb2NrcyB3aWxsIGVycm9yIGR1ZSB0byBpbmNvbXBsZXRlIHR5cGUgZGVmaW5pdGlvbnMuXG4gKlxuICogVE9ETzogdGhpcyBzaG91bGQgYmUgbWFkZSBsZXNzIGJyaXR0bGUuXG4gKlxuICogQGhpZGRlblxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBjcmVhdGVBZ2dyZWdhdG9ycygpIHtcbiAgICBjb25zdCB7X19haXJ0YWJsZUludGVyZmFjZTogYWlydGFibGVJbnRlcmZhY2V9ID0gc2RrO1xuICAgIGNvbnN0IGFnZ3JlZ2F0b3JzOiBBZ2dyZWdhdG9ycyA9IHt9O1xuICAgIGNvbnN0IGFnZ3JlZ2F0b3JLZXlzID0gYWlydGFibGVJbnRlcmZhY2UuYWdncmVnYXRvcnMuZ2V0QWxsQXZhaWxhYmxlQWdncmVnYXRvcktleXMoKTtcblxuICAgIGZvciAoY29uc3Qga2V5IG9mIGFnZ3JlZ2F0b3JLZXlzKSB7XG4gICAgICAgIGNvbnN0IGNvbmZpZyA9IGFpcnRhYmxlSW50ZXJmYWNlLmFnZ3JlZ2F0b3JzLmdldEFnZ3JlZ2F0b3JDb25maWcoa2V5KTtcbiAgICAgICAgYWdncmVnYXRvcnNba2V5XSA9IE9iamVjdC5mcmVlemUoe1xuICAgICAgICAgICAga2V5LFxuICAgICAgICAgICAgZGlzcGxheU5hbWU6IGNvbmZpZy5kaXNwbGF5TmFtZSxcbiAgICAgICAgICAgIHNob3J0RGlzcGxheU5hbWU6IGNvbmZpZy5zaG9ydERpc3BsYXlOYW1lLFxuICAgICAgICAgICAgYWdncmVnYXRlOiBhZ2dyZWdhdGUuYmluZChudWxsLCBrZXkpLFxuICAgICAgICAgICAgYWdncmVnYXRlVG9TdHJpbmc6IGFnZ3JlZ2F0ZVRvU3RyaW5nLmJpbmQobnVsbCwga2V5KSxcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgT2JqZWN0LmZyZWV6ZShhZ2dyZWdhdG9ycyk7XG5cbiAgICByZXR1cm4gYWdncmVnYXRvcnM7XG59XG5cbmxldCBzZGs6IFNkaztcblxuLy8gVGhlIGFwcGxpY2F0aW9uLWxldmVsIFNkayBpbnN0YW5jZSBtdXN0IGJlIGluamVjdGVkIGR5bmFtaWNhbGx5IHRvIGF2b2lkXG4vLyBjaXJjdWxhciBkZXBlbmRlbmNpZXMgYXQgdGhlIHRpbWUgb2YgbW9kdWxlIHJlc29sdXRpb24uXG5leHBvcnQgZnVuY3Rpb24gX19pbmplY3RTZGtJbnRvQ3JlYXRlQWdncmVnYXRvcnMoX3NkazogU2RrKSB7XG4gICAgc2RrID0gX3Nkaztcbn1cbiJdfQ==
@@ -89,6 +89,7 @@ var WatchableCursorKeys = Object.freeze({
89
89
  * return (
90
90
  * <div>
91
91
  * Active table: {cursor.activeTableId}
92
+ * <br />
92
93
  * Active view: {cursor.activeViewId}
93
94
  * </div>
94
95
  * );
@@ -109,6 +110,7 @@ var WatchableCursorKeys = Object.freeze({
109
110
  * return (
110
111
  * <div>
111
112
  * Selected records: {cursor.selectedRecordIds.join(', ')}
113
+ * <br />
112
114
  * Selected fields: {cursor.selectedFieldIds.join(', ')}
113
115
  * </div>
114
116
  * );
@@ -466,4 +468,5 @@ function (_AbstractModelWithAsy) {
466
468
 
467
469
  (0, _defineProperty2.default)(Cursor, "_className", 'Cursor');
468
470
  var _default = Cursor;
469
- exports.default = _default;
471
+ exports.default = _default;
472
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9tb2RlbHMvY3Vyc29yLnRzIl0sIm5hbWVzIjpbIldhdGNoYWJsZUN1cnNvcktleXMiLCJPYmplY3QiLCJmcmVlemUiLCJzZWxlY3RlZFJlY29yZElkcyIsInNlbGVjdGVkRmllbGRJZHMiLCJhY3RpdmVUYWJsZUlkIiwiYWN0aXZlVmlld0lkIiwiaXNEYXRhTG9hZGVkIiwiQ3Vyc29yIiwia2V5Iiwic2RrIiwiYmFzZURhdGEiLCJfX2FpcnRhYmxlSW50ZXJmYWNlIiwic2RrSW5pdERhdGEiLCJzZWxlY3RlZFJlY29yZElkU2V0IiwiY3Vyc29yRGF0YSIsInNlbGVjdGVkRmllbGRJZFNldCIsImFjdGl2ZVRhYmxlIiwidGFibGVzQnlJZCIsIl9jdXJzb3JEYXRhIiwic2VhbCIsIl9vbkNoYW5nZSIsIl9zZGsiLCJmZXRjaEFuZFN1YnNjcmliZVRvQ3Vyc29yRGF0YUFzeW5jIiwidW5zdWJzY3JpYmVGcm9tQ3Vyc29yRGF0YSIsInJlY29yZE9yUmVjb3JkSWQiLCJfZGF0YSIsInJlY29yZElkIiwiUmVjb3JkIiwiaWQiLCJ0YWJsZU9yVGFibGVJZCIsInRhYmxlSWQiLCJUYWJsZSIsInNldEFjdGl2ZVZpZXdPclRhYmxlIiwidmlld09yVmlld0lkIiwidmlld0lkIiwiVmlldyIsImNoYW5nZXMiLCJjaGFuZ2VkS2V5cyIsInBhdGgiLCJ2YWx1ZSIsImxlbmd0aCIsImRpZENoYW5nZSIsImtleXMiLCJBYnN0cmFjdE1vZGVsV2l0aEFzeW5jRGF0YSJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFPQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFaQTs7QUFBK0M7QUFjL0MsSUFBTUEsbUJBQW1CLEdBQUdDLE1BQU0sQ0FBQ0MsTUFBUCxDQUFjO0FBQ3RDQyxFQUFBQSxpQkFBaUIsRUFBRSxtQkFEbUI7QUFFdENDLEVBQUFBLGdCQUFnQixFQUFFLGtCQUZvQjtBQUd0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Ozs7Ozs7Ozs7O3dCQVVrQztBQUM5QixhQUFPLEtBQUtxQixLQUFMLENBQVdwQixZQUFsQjtBQUNIOzs7RUF4SWdCc0MsdUM7OzhCQUFmcEMsTSxnQkFFa0IsUTtlQTJPVEEsTSIsInNvdXJjZXNDb250ZW50IjpbIi8qKiBAbW9kdWxlIEBhaXJ0YWJsZS9ibG9ja3MvbW9kZWxzOiBDdXJzb3IgKi8gLyoqICovXG5pbXBvcnQgU2RrIGZyb20gJy4uL3Nkayc7XG5pbXBvcnQge01vZGVsQ2hhbmdlfSBmcm9tICcuLi90eXBlcy9iYXNlJztcbmltcG9ydCB7UmVjb3JkSWR9IGZyb20gJy4uL3R5cGVzL3JlY29yZCc7XG5pbXBvcnQge1RhYmxlSWR9IGZyb20gJy4uL3R5cGVzL3RhYmxlJztcbmltcG9ydCB7Vmlld0lkfSBmcm9tICcuLi90eXBlcy92aWV3JztcbmltcG9ydCB7RmllbGRJZH0gZnJvbSAnLi4vdHlwZXMvZmllbGQnO1xuaW1wb3J0IHtpc0VudW1WYWx1ZSwgZW50cmllcywgT2JqZWN0VmFsdWVzLCBPYmplY3RNYXB9IGZyb20gJy4uL3ByaXZhdGVfdXRpbHMnO1xuaW1wb3J0IHtpbnZhcmlhbnR9IGZyb20gJy4uL2Vycm9yX3V0aWxzJztcbmltcG9ydCBBYnN0cmFjdE1vZGVsV2l0aEFzeW5jRGF0YSBmcm9tICcuL2Fic3RyYWN0X21vZGVsX3dpdGhfYXN5bmNfZGF0YSc7XG5pbXBvcnQgVGFibGUgZnJvbSAnLi90YWJsZSc7XG5pbXBvcnQgVmlldyBmcm9tICcuL3ZpZXcnO1xuaW1wb3J0IFJlY29yZCBmcm9tICcuL3JlY29yZCc7XG5cbmNvbnN0IFdhdGNoYWJsZUN1cnNvcktleXMgPSBPYmplY3QuZnJlZXplKHtcbiAgICBzZWxlY3RlZFJlY29yZElkczogJ3NlbGVjdGVkUmVjb3JkSWRzJyBhcyBjb25zdCxcbiAgICBzZWxlY3RlZEZpZWxkSWRzOiAnc2VsZWN0ZWRGaWVsZElkcycgYXMgY29uc3QsXG4gICAgYWN0aXZlVGFibGVJZDogJ2FjdGl2ZVRhYmxlSWQnIGFzIGNvbnN0LFxuICAgIGFjdGl2ZVZpZXdJZDogJ2FjdGl2ZVZpZXdJZCcgYXMgY29uc3QsXG4gICAgaXNEYXRhTG9hZGVkOiAnaXNEYXRhTG9hZGVkJyBhcyBjb25zdCxcbn0pO1xuXG4vKipcbiAqIFdhdGNoYWJsZSBrZXlzIGluIHtAbGluayBDdXJzb3J9LlxuICogLSBgc2VsZWN0ZWRSZWNvcmRJZHNgXG4gKiAtIGBzZWxlY3RlZEZpZWxkSWRzYFxuICogLSBgYWN0aXZlVGFibGVJZGBcbiAqIC0gYGFjdGl2ZVZpZXdJZGBcbiAqIC0gYGlzRGF0YUxvYWRlZGBcbiAqL1xudHlwZSBXYXRjaGFibGVDdXJzb3JLZXkgPSBPYmplY3RWYWx1ZXM8dHlwZW9mIFdhdGNoYWJsZUN1cnNvcktleXM+O1xuXG4vKiogQGhpZGRlbiAqL1xuaW50ZXJmYWNlIEN1cnNvckRhdGEge1xuICAgIHNlbGVjdGVkUmVjb3JkSWRTZXQ6IE9iamVjdE1hcDxSZWNvcmRJZCwgYm9vbGVhbj4gfCBudWxsO1xuICAgIHNlbGVjdGVkRmllbGRJZFNldDogT2JqZWN0TWFwPEZpZWxkSWQsIGJvb2xlYW4+IHwgbnVsbDtcbiAgICBhY3RpdmVUYWJsZUlkOiBUYWJsZUlkIHwgbnVsbDtcbiAgICBhY3RpdmVWaWV3SWQ6IFZpZXdJZCB8IG51bGw7XG59XG5cbi8vIE5PVEU6IGN1cnNvciBpcyBhbiBBYnN0cmFjdE1vZGVsIGJlY2F1c2UgaXQgaW5jbHVkZXMgbG9hZGFibGUgZGF0YS5cbi8qKlxuICogTW9kZWwgY2xhc3MgY29udGFpbmluZyBpbmZvcm1hdGlvbiBhYm91dCB0aGUgc3RhdGUgb2YgdGhlIHVzZXIncyBjdXJyZW50IGludGVyYWN0aW9ucyBpblxuICogQWlydGFibGUgLSBzcGVjaWZpY2FsbHksIHRoZWlyIGFjdGl2ZSB0YWJsZSwgYWN0aXZlIHZpZXcsIHNlbGVjdGVkIHJlY29yZHMgYW5kIHNlbGVjdGVkIGZpZWxkcy5cbiAqIEFsc28gYWxsb3dzIHlvdSB0byBzZXQgdGhlIGFjdGl2ZSB0YWJsZSBhbmQgYWN0aXZlIHZpZXcuXG4gKlxuICogU2VsZWN0ZWQgcmVjb3JkcyBhbmQgZmllbGRzIGFyZSBub3QgbG9hZGVkIGJ5IGRlZmF1bHQgYW5kIHRoZSBjdXJzb3IgbXVzdCBiZSBsb2FkZWQgd2l0aFxuICoge0BsaW5rIHVzZUxvYWRhYmxlfSB0byBhY2Nlc3MgdGhlbS5cbiAqXG4gKiBgYGBqc1xuICogaW1wb3J0IHt1c2VDdXJzb3IsIHVzZVdhdGNoYWJsZX0gZnJvbSAnQGFpcnRhYmxlL2Jsb2Nrcy91aSc7XG4gKlxuICogIGZ1bmN0aW9uIEFjdGl2ZVRhYmxlQW5kVmlldygpIHtcbiAqICAgICAgY29uc3QgY3Vyc29yID0gdXNlQ3Vyc29yKCk7XG4gKlxuICogICAgICByZXR1cm4gKFxuICogICAgICAgICAgPGRpdj5cbiAqICAgICAgICAgICAgICBBY3RpdmUgdGFibGU6IHtjdXJzb3IuYWN0aXZlVGFibGVJZH1cbiAqICAgICAgICAgICAgICA8YnIgLz5cbiAqICAgICAgICAgICAgICBBY3RpdmUgdmlldzoge2N1cnNvci5hY3RpdmVWaWV3SWR9XG4gKiAgICAgICAgICA8L2Rpdj5cbiAqICAgICAgKTtcbiAqICB9XG4gKiBgYGBcbiAqXG4gKiBgYGBqc1xuICogaW1wb3J0IHt1c2VDdXJzb3IsIHVzZUxvYWRhYmxlLCB1c2VXYXRjaGFibGV9IGZyb20gJ0BhaXJ0YWJsZS9ibG9ja3MvdWknO1xuICpcbiAqICBmdW5jdGlvbiBTZWxlY3RlZFJlY29yZEFuZEZpZWxkSWRzKCkge1xuICogICAgICBjb25zdCBjdXJzb3IgPSB1c2VDdXJzb3IoKTtcbiAqICAgICAgLy8gbG9hZCBzZWxlY3RlZCByZWNvcmRzIGFuZCBmaWVsZHNcbiAqICAgICAgdXNlTG9hZGFibGUoY3Vyc29yKTtcbiAqXG4gKiAgICAgIC8vIHJlLXJlbmRlciB3aGVuZXZlciB0aGUgbGlzdCBvZiBzZWxlY3RlZCByZWNvcmRzIG9yIGZpZWxkcyBjaGFuZ2VzXG4gKiAgICAgIHVzZVdhdGNoYWJsZShjdXJzb3IsIFsnc2VsZWN0ZWRSZWNvcmRJZHMnLCAnc2VsZWN0ZWRGaWVsZElkcyddKTtcbiAqXG4gKiAgICAgIHJldHVybiAoXG4gKiAgICAgICAgICA8ZGl2PlxuICogICAgICAgICAgICAgIFNlbGVjdGVkIHJlY29yZHM6IHtjdXJzb3Iuc2VsZWN0ZWRSZWNvcmRJZHMuam9pbignLCAnKX1cbiAqICAgICAgICAgICAgICA8YnIgLz5cbiAqICAgICAgICAgICAgICBTZWxlY3RlZCBmaWVsZHM6IHtjdXJzb3Iuc2VsZWN0ZWRGaWVsZElkcy5qb2luKCcsICcpfVxuICogICAgICAgICAgPC9kaXY+XG4gKiAgICAgICk7XG4gKiAgfVxuICogYGBgXG4gKlxuICogQGRvY3NQYXRoIG1vZGVscy9DdXJzb3JcbiAqL1xuY2xhc3MgQ3Vyc29yIGV4dGVuZHMgQWJzdHJhY3RNb2RlbFdpdGhBc3luY0RhdGE8Q3Vyc29yRGF0YSwgV2F0Y2hhYmxlQ3Vyc29yS2V5PiB7XG4gICAgLyoqIEBpbnRlcm5hbCAqL1xuICAgIHN0YXRpYyBfY2xhc3NOYW1lID0gJ0N1cnNvcic7XG4gICAgLyoqIEBpbnRlcm5hbCAqL1xuICAgIHN0YXRpYyBfaXNXYXRjaGFibGVLZXkoa2V5OiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIGlzRW51bVZhbHVlKFdhdGNoYWJsZUN1cnNvcktleXMsIGtleSk7XG4gICAgfVxuICAgIC8qKiBAaW50ZXJuYWwgKi9cbiAgICBzdGF0aWMgX3Nob3VsZExvYWREYXRhRm9yS2V5KGtleTogV2F0Y2hhYmxlQ3Vyc29yS2V5KTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICAvKiogQGludGVybmFsICovXG4gICAgX2N1cnNvckRhdGE6IEN1cnNvckRhdGE7XG5cbiAgICAvKiogQGludGVybmFsICovXG4gICAgY29uc3RydWN0b3Ioc2RrOiBTZGspIHtcbiAgICAgICAgc3VwZXIoc2RrLCAnY3Vyc29yJyk7XG5cbiAgICAgICAgY29uc3QgYmFzZURhdGEgPSBzZGsuX19haXJ0YWJsZUludGVyZmFjZS5zZGtJbml0RGF0YS5iYXNlRGF0YTtcbiAgICAgICAgY29uc3Qgc2VsZWN0ZWRSZWNvcmRJZFNldCA9IGJhc2VEYXRhLmN1cnNvckRhdGE/LnNlbGVjdGVkUmVjb3JkSWRTZXQgPz8gbnVsbDtcbiAgICAgICAgY29uc3Qgc2VsZWN0ZWRGaWVsZElkU2V0ID0gYmFzZURhdGEuY3Vyc29yRGF0YT8uc2VsZWN0ZWRGaWVsZElkU2V0ID8/IG51bGw7XG4gICAgICAgIGNvbnN0IGFjdGl2ZVRhYmxlSWQgPSBiYXNlRGF0YS5hY3RpdmVUYWJsZUlkO1xuICAgICAgICBjb25zdCBhY3RpdmVUYWJsZSA9IGFjdGl2ZVRhYmxlSWQgPyBiYXNlRGF0YS50YWJsZXNCeUlkW2FjdGl2ZVRhYmxlSWRdIDogbnVsbDtcbiAgICAgICAgY29uc3QgYWN0aXZlVmlld0lkID0gYWN0aXZlVGFibGU/LmFjdGl2ZVZpZXdJZCA/PyBudWxsO1xuXG4gICAgICAgIHRoaXMuX2N1cnNvckRhdGEgPSB7XG4gICAgICAgICAgICBzZWxlY3RlZFJlY29yZElkU2V0LFxuICAgICAgICAgICAgc2VsZWN0ZWRGaWVsZElkU2V0LFxuICAgICAgICAgICAgYWN0aXZlVGFibGVJZCxcbiAgICAgICAgICAgIGFjdGl2ZVZpZXdJZCxcbiAgICAgICAgfTtcblxuICAgICAgICBPYmplY3Quc2VhbCh0aGlzKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaW50ZXJuYWxcbiAgICAgKi9cbiAgICBnZXQgX2RhdGFPck51bGxJZkRlbGV0ZWQoKTogQ3Vyc29yRGF0YSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9jdXJzb3JEYXRhO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBAaW50ZXJuYWxcbiAgICAgKi9cbiAgICBfb25DaGFuZ2VJc0RhdGFMb2FkZWQoKSB7XG4gICAgICAgIHRoaXMuX29uQ2hhbmdlKFdhdGNoYWJsZUN1cnNvcktleXMuaXNEYXRhTG9hZGVkKTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogQGludGVybmFsXG4gICAgICovXG4gICAgYXN5bmMgX2xvYWREYXRhQXN5bmMoKTogUHJvbWlzZTxBcnJheTxXYXRjaGFibGVDdXJzb3JLZXk+PiB7XG4gICAgICAgIGNvbnN0IGN1cnNvckRhdGEgPSBhd2FpdCB0aGlzLl9zZGsuX19haXJ0YWJsZUludGVyZmFjZS5mZXRjaEFuZFN1YnNjcmliZVRvQ3Vyc29yRGF0YUFzeW5jKCk7XG4gICAgICAgIHRoaXMuX2N1cnNvckRhdGEuc2VsZWN0ZWRSZWNvcmRJZFNldCA9IGN1cnNvckRhdGEuc2VsZWN0ZWRSZWNvcmRJZFNldDtcbiAgICAgICAgdGhpcy5fY3Vyc29yRGF0YS5zZWxlY3RlZEZpZWxkSWRTZXQgPSBjdXJzb3JEYXRhLnNlbGVjdGVkRmllbGRJZFNldDtcblxuICAgICAgICByZXR1cm4gW1dhdGNoYWJsZUN1cnNvcktleXMuc2VsZWN0ZWRSZWNvcmRJZHMsIFdhdGNoYWJsZUN1cnNvcktleXMuc2VsZWN0ZWRGaWVsZElkc107XG4gICAgfVxuICAgIC8qKlxuICAgICAqIEBpbnRlcm5hbFxuICAgICAqL1xuICAgIF91bmxvYWREYXRhKCkge1xuICAgICAgICB0aGlzLl9zZGsuX19haXJ0YWJsZUludGVyZmFjZS51bnN1YnNjcmliZUZyb21DdXJzb3JEYXRhKCk7XG4gICAgICAgIHRoaXMuX2N1cnNvckRhdGEuc2VsZWN0ZWRSZWNvcmRJZFNldCA9IG51bGw7XG4gICAgICAgIHRoaXMuX2N1cnNvckRhdGEuc2VsZWN0ZWRGaWVsZElkU2V0ID0gbnVsbDtcbiAgICB9XG4gICAgLyoqXG4gICAgICogVGhlIHJlY29yZCBJRHMgb2YgYWxsIGN1cnJlbnRseSBzZWxlY3RlZCByZWNvcmRzLCBvciBhbiBlbXB0eSBhcnJheSBpZiBubyByZWNvcmRzIGFyZSBzZWxlY3RlZC5cbiAgICAgKlxuICAgICAqIE5vdCBsb2FkZWQgYnkgZGVmYXVsdC4gWW91IG11c3QgbG9hZCBjdXJzb3IgZGF0YSB3aXRoIGB1c2VMb2FkYWJsZShjdXJzb3IpYCAocmVjb21tZW5kZWQpIG9yXG4gICAgICogYGN1cnNvci5sb2FkRGF0YUFzeW5jKClgIGJlZm9yZSB1c2UuXG4gICAgICpcbiAgICAgKiBDYW4gYmUgd2F0Y2hlZC5cbiAgICAgKi9cbiAgICBnZXQgc2VsZWN0ZWRSZWNvcmRJZHMoKTogQXJyYXk8UmVjb3JkSWQ+IHtcbiAgICAgICAgY29uc3Qge3NlbGVjdGVkUmVjb3JkSWRTZXR9ID0gdGhpcy5fZGF0YTtcbiAgICAgICAgaW52YXJpYW50KHNlbGVjdGVkUmVjb3JkSWRTZXQsICdDdXJzb3IgZGF0YSBpcyBub3QgbG9hZGVkJyk7XG4gICAgICAgIGNvbnN0IHNlbGVjdGVkUmVjb3JkSWRzID0gT2JqZWN0LmtleXMoc2VsZWN0ZWRSZWNvcmRJZFNldCk7XG4gICAgICAgIHJldHVybiBzZWxlY3RlZFJlY29yZElkcztcbiAgICB9XG4gICAgLyoqXG4gICAgICogVGhlIGZpZWxkIElEcyBvZiBhbGwgY3VycmVudGx5IHNlbGVjdGVkIGZpZWxkcywgb3IgYW4gZW1wdHkgYXJyYXkgaWYgbm8gZmllbGRzIGFyZSBzZWxlY3RlZC5cbiAgICAgKlxuICAgICAqIE5vdCBsb2FkZWQgYnkgZGVmYXVsdDogeW91IG11c3QgbG9hZCBjdXJzb3IgZGF0YSB3aXRoIGB1c2VMb2FkYWJsZShjdXJzb3IpYCAocmVjb21tZW5kZWQpIG9yXG4gICAgICogYGN1cnNvci5sb2FkRGF0YUFzeW5jKClgIGJlZm9yZSB1c2UuXG4gICAgICpcbiAgICAgKiBDYW4gYmUgd2F0Y2hlZC5cbiAgICAgKi9cbiAgICBnZXQgc2VsZWN0ZWRGaWVsZElkcygpOiBBcnJheTxSZWNvcmRJZD4ge1xuICAgICAgICBjb25zdCB7c2VsZWN0ZWRGaWVsZElkU2V0fSA9IHRoaXMuX2RhdGE7XG4gICAgICAgIGludmFyaWFudChzZWxlY3RlZEZpZWxkSWRTZXQsICdDdXJzb3IgZGF0YSBpcyBub3QgbG9hZGVkJyk7XG4gICAgICAgIGNvbnN0IHNlbGVjdGVkUmVjb3JkSWRzID0gT2JqZWN0LmtleXMoc2VsZWN0ZWRGaWVsZElkU2V0KTtcbiAgICAgICAgcmV0dXJuIHNlbGVjdGVkUmVjb3JkSWRzO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBDaGVja3Mgd2hldGhlciBhIGdpdmVuIHJlY29yZCBpcyBzZWxlY3RlZC5cbiAgICAgKlxuICAgICAqIFNlbGVjdGVkIHJlY29yZHMgYXJlIG5vdCBsb2FkZWQgYnkgZGVmYXVsdC4gWW91IG11c3QgbG9hZCBjdXJzb3IgZGF0YSB3aXRoXG4gICAgICogYHVzZUxvYWRhYmxlKGN1cnNvcilgIChyZWNvbW1lbmRlZCkgb3IgYGN1cnNvci5sb2FkRGF0YUFzeW5jKClgIGJlZm9yZSB1c2UuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gcmVjb3JkT3JSZWNvcmRJZCBUaGUgcmVjb3JkIG9yIHJlY29yZCBJRCB0byBjaGVjayBmb3IuXG4gICAgICovXG4gICAgaXNSZWNvcmRTZWxlY3RlZChyZWNvcmRPclJlY29yZElkOiBSZWNvcmQgfCBzdHJpbmcpOiBib29sZWFuIHtcbiAgICAgICAgY29uc3Qge3NlbGVjdGVkUmVjb3JkSWRTZXR9ID0gdGhpcy5fZGF0YTtcbiAgICAgICAgaW52YXJpYW50KHNlbGVjdGVkUmVjb3JkSWRTZXQsICdDdXJzb3IgZGF0YSBpcyBub3QgbG9hZGVkJyk7XG4gICAgICAgIGxldCByZWNvcmRJZDogc3RyaW5nO1xuICAgICAgICBpZiAocmVjb3JkT3JSZWNvcmRJZCBpbnN0YW5jZW9mIFJlY29yZCkge1xuICAgICAgICAgICAgcmVjb3JkSWQgPSByZWNvcmRPclJlY29yZElkLmlkO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmVjb3JkSWQgPSByZWNvcmRPclJlY29yZElkO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiAhIXNlbGVjdGVkUmVjb3JkSWRTZXRbcmVjb3JkSWRdO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBUaGUgY3VycmVudGx5IGFjdGl2ZSB0YWJsZSBJRC4gQ2FuIGJlIG51bGwgd2hlbiB0aGUgYWN0aXZlIHRhYmxlIGhhcyBjaGFuZ2VkIGFuZCBpcyBub3QgeWV0XG4gICAgICogbG9hZGVkLCBhbmQgY2FuIGFsc28gcmVmZXIgdG8gYSB0YWJsZSB0aGF0IGlzIG5vdCB5ZXQgbG9hZGVkLlxuICAgICAqXG4gICAgICogV2hlbiBmZXRjaGluZyB0aGUge0BsaW5rIFRhYmxlfSwgdXNlIGBiYXNlLmdldFRhYmxlQnlJZElmRXhpc3RzKGN1cnNvci5hY3RpdmVUYWJsZUlkKWAgYW5kXG4gICAgICogY2hlY2sgdGhlIHJldHVybiB2YWx1ZSBpcyBub3QgYG51bGxgIHRvIGJlIHJlc2lsaWVudCB0byB0aG9zZSBjYXNlcy5cbiAgICAgKlxuICAgICAqIENhbiBiZSB3YXRjaGVkLlxuICAgICAqL1xuICAgIGdldCBhY3RpdmVUYWJsZUlkKCk6IFRhYmxlSWQgfCBudWxsIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2RhdGEuYWN0aXZlVGFibGVJZDtcbiAgICB9XG4gICAgLyoqXG4gICAgICogVGhlIGN1cnJlbnRseSBhY3RpdmUgdmlldyBJRC4gVGhpcyB3aWxsIGFsd2F5cyBiZSBhIHZpZXcgYmVsb25naW5nIHRvIGBhY3RpdmVUYWJsZUlkYC4gQ2FuIGJlXG4gICAgICogbnVsbCB3aGVuIHRoZSBhY3RpdmUgdmlldyBoYXMgY2hhbmdlZCBhbmQgaXMgbm90IHlldCBsb2FkZWQsIGFuZCBjYW4gYWxzbyByZWZlciB0byBhIHZpZXdcbiAgICAgKiB0aGF0IGlzIG5vdCB5ZXQgbG9hZGVkLlxuICAgICAqXG4gICAgICogV2hlbiBmZXRjaGluZyB0aGUge0BsaW5rIFZpZXd9LCB1c2UgYHRhYmxlLmdldFZpZXdCeUlkSWZFeGlzdHMoY3Vyc29yLmFjdGl2ZVZpZXdJZClgIGFuZFxuICAgICAqIGNoZWNrIHRoZSByZXR1cm4gdmFsdWUgaXMgbm90IGBudWxsYCB0byBiZSByZXNpbGllbnQgdG8gdGhvc2UgY2FzZXMuXG4gICAgICpcbiAgICAgKiBDYW4gYmUgd2F0Y2hlZC5cbiAgICAgKi9cbiAgICBnZXQgYWN0aXZlVmlld0lkKCk6IFZpZXdJZCB8IG51bGwge1xuICAgICAgICByZXR1cm4gdGhpcy5fZGF0YS5hY3RpdmVWaWV3SWQ7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIFNldHMgdGhlIHNwZWNpZmllZCB0YWJsZSB0byBhY3RpdmUgaW4gdGhlIEFpcnRhYmxlIFVJLiBJZiB0aGUgYXBwcyBwYW5lIGlzIGZ1bGxzY3JlZW4sIHRoZVxuICAgICAqIHRhYmxlIHdpbGwgc3RpbGwgYmUgc2V0IGFzIGFjdGl2ZSwgYnV0IHRoZSBhcHBzIHBhbmUgd2lsbCBjb250aW51ZSB0byBiZSBkaXNwbGF5ZWRcbiAgICAgKiBmdWxsc2NyZWVuLlxuICAgICAqXG4gICAgICogQHBhcmFtIHRhYmxlT3JUYWJsZUlkIFRoZSB0YXJnZXQgdGFibGUgb3IgdGFibGUgSUQgdG8gc2V0IGFzIGFjdGl2ZSBpbiB0aGUgQWlydGFibGUgbWFpbiBwYWdlLlxuICAgICAqL1xuICAgIHNldEFjdGl2ZVRhYmxlKHRhYmxlT3JUYWJsZUlkOiBUYWJsZSB8IFRhYmxlSWQpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgdGFibGVJZCA9IHRhYmxlT3JUYWJsZUlkIGluc3RhbmNlb2YgVGFibGUgPyB0YWJsZU9yVGFibGVJZC5pZCA6IHRhYmxlT3JUYWJsZUlkO1xuICAgICAgICB0aGlzLl9zZGsuX19haXJ0YWJsZUludGVyZmFjZS5zZXRBY3RpdmVWaWV3T3JUYWJsZSh0YWJsZUlkKTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogU2V0cyB0aGUgc3BlY2lmaWVkIHZpZXcgKGFuZCBjb3JyZXNwb25kaW5nIHRhYmxlKSB0byBhY3RpdmUgaW4gdGhlIEFpcnRhYmxlIFVJLiBJZiB0aGUgYXBwc1xuICAgICAqIHBhbmUgaXMgZnVsbHNjcmVlbiwgdGhlIHZpZXcgd2lsbCBzdGlsbCBiZSBzZXQgYXMgYWN0aXZlLCBidXQgdGhlIGFwcHMgcGFuZSB3aWxsIGNvbnRpbnVlXG4gICAgICogdG8gYmUgZGlzcGxheWVkIGZ1bGxzY3JlZW4uXG4gICAgICpcbiAgICAgKiBAcGFyYW0gdGFibGVPclRhYmxlSWQgVGhlIHRhYmxlIG9yIHRhYmxlIElEIHRoYXQgdGhlIHRhcmdldCB2aWV3IGJlbG9uZ3MgdG8uXG4gICAgICogQHBhcmFtIHZpZXdPclZpZXdJZCBUaGUgdGFyZ2V0IHZpZXcgb3IgdmlldyBJRCB0byBzZXQgYXMgYWN0aXZlIGluIHRoZSBBaXJ0YWJsZSBtYWluIHBhZ2UuXG4gICAgICovXG4gICAgc2V0QWN0aXZlVmlldyh0YWJsZU9yVGFibGVJZDogVGFibGUgfCBUYWJsZUlkLCB2aWV3T3JWaWV3SWQ6IFZpZXcgfCBWaWV3SWQpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgdGFibGVJZCA9IHRhYmxlT3JUYWJsZUlkIGluc3RhbmNlb2YgVGFibGUgPyB0YWJsZU9yVGFibGVJZC5pZCA6IHRhYmxlT3JUYWJsZUlkO1xuICAgICAgICBjb25zdCB2aWV3SWQgPSB2aWV3T3JWaWV3SWQgaW5zdGFuY2VvZiBWaWV3ID8gdmlld09yVmlld0lkLmlkIDogdmlld09yVmlld0lkO1xuICAgICAgICB0aGlzLl9zZGsuX19haXJ0YWJsZUludGVyZmFjZS5zZXRBY3RpdmVWaWV3T3JUYWJsZSh0YWJsZUlkLCB2aWV3SWQpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBpbnRlcm5hbFxuICAgICAqL1xuICAgIF9fYXBwbHlDaGFuZ2VzV2l0aG91dFRyaWdnZXJpbmdFdmVudHMoXG4gICAgICAgIGNoYW5nZXM6IFJlYWRvbmx5QXJyYXk8TW9kZWxDaGFuZ2U+LFxuICAgICk6IE9iamVjdE1hcDxXYXRjaGFibGVDdXJzb3JLZXksIGJvb2xlYW4+IHtcbiAgICAgICAgbGV0IGNoYW5nZWRLZXlzID0ge1xuICAgICAgICAgICAgW1dhdGNoYWJsZUN1cnNvcktleXMuc2VsZWN0ZWRSZWNvcmRJZHNdOiBmYWxzZSxcbiAgICAgICAgICAgIFtXYXRjaGFibGVDdXJzb3JLZXlzLmFjdGl2ZVRhYmxlSWRdOiBmYWxzZSxcbiAgICAgICAgICAgIFtXYXRjaGFibGVDdXJzb3JLZXlzLmFjdGl2ZVZpZXdJZF06IGZhbHNlLFxuICAgICAgICB9IGFzIE9iamVjdE1hcDxXYXRjaGFibGVDdXJzb3JLZXksIGJvb2xlYW4+O1xuICAgICAgICBmb3IgKGNvbnN0IHtwYXRoLCB2YWx1ZX0gb2YgY2hhbmdlcykge1xuICAgICAgICAgICAgaWYgKHBhdGhbMF0gPT09ICdjdXJzb3JEYXRhJykge1xuICAgICAgICAgICAgICAgIHN3aXRjaCAocGF0aFsxXSkge1xuICAgICAgICAgICAgICAgICAgICBjYXNlICdzZWxlY3RlZFJlY29yZElkU2V0Jzoge1xuICAgICAgICAgICAgICAgICAgICAgICAgaW52YXJpYW50KHBhdGgubGVuZ3RoID09PSAyLCAnY2Fubm90IHNldCB3aXRoaW4gc2VsZWN0ZWRSZWNvcmRJZFNldCcpO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fY3Vyc29yRGF0YS5zZWxlY3RlZFJlY29yZElkU2V0ID0gdmFsdWUgYXMgYW55O1xuICAgICAgICAgICAgICAgICAgICAgICAgY2hhbmdlZEtleXNbV2F0Y2hhYmxlQ3Vyc29yS2V5cy5zZWxlY3RlZFJlY29yZElkc10gPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgY2FzZSAnc2VsZWN0ZWRGaWVsZElkU2V0Jzoge1xuICAgICAgICAgICAgICAgICAgICAgICAgaW52YXJpYW50KHBhdGgubGVuZ3RoID09PSAyLCAnY2Fubm90IHNldCB3aXRoaW4gc2VsZWN0ZWRGaWVsZElkU2V0Jyk7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9jdXJzb3JEYXRhLnNlbGVjdGVkRmllbGRJZFNldCA9IHZhbHVlIGFzIGFueTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNoYW5nZWRLZXlzW1dhdGNoYWJsZUN1cnNvcktleXMuc2VsZWN0ZWRGaWVsZElkc10gPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAgICAgLy8gTm8tb3AgZm9yIGZ1dHVyZSB1bmtub3duIHBhdGhzLlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKHBhdGhbMF0gPT09ICdhY3RpdmVUYWJsZUlkJykge1xuICAgICAgICAgICAgICAgIGludmFyaWFudChcbiAgICAgICAgICAgICAgICAgICAgdmFsdWUgPT09IG51bGwgfHwgdHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJyxcbiAgICAgICAgICAgICAgICAgICAgJ2FjdGl2ZVRhYmxlSWQgbXVzdCBiZSBzdHJpbmcgb3IgbnVsbCcsXG4gICAgICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgICAgIHRoaXMuX2N1cnNvckRhdGEuYWN0aXZlVGFibGVJZCA9IHZhbHVlO1xuICAgICAgICAgICAgICAgIGNoYW5nZWRLZXlzW1dhdGNoYWJsZUN1cnNvcktleXMuYWN0aXZlVGFibGVJZF0gPSB0cnVlO1xuXG4gICAgICAgICAgICAgICAgaWYgKHZhbHVlID09PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX2N1cnNvckRhdGEuYWN0aXZlVmlld0lkID0gbnVsbDtcbiAgICAgICAgICAgICAgICAgICAgY2hhbmdlZEtleXNbV2F0Y2hhYmxlQ3Vyc29yS2V5cy5hY3RpdmVWaWV3SWRdID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICBwYXRoWzBdID09PSAndGFibGVzQnlJZCcgJiZcbiAgICAgICAgICAgICAgICBwYXRoWzFdID09PSB0aGlzLmFjdGl2ZVRhYmxlSWQgJiZcbiAgICAgICAgICAgICAgICBwYXRoWzJdID09PSAnYWN0aXZlVmlld0lkJ1xuICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgaW52YXJpYW50KFxuICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9PT0gbnVsbCB8fCB0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnLFxuICAgICAgICAgICAgICAgICAgICAnYWN0aXZlVGFibGVJZCBtdXN0IGJlIHN0cmluZyBvciBudWxsJyxcbiAgICAgICAgICAgICAgICApO1xuXG4gICAgICAgICAgICAgICAgdGhpcy5fY3Vyc29yRGF0YS5hY3RpdmVWaWV3SWQgPSB2YWx1ZTtcbiAgICAgICAgICAgICAgICBjaGFuZ2VkS2V5c1tXYXRjaGFibGVDdXJzb3JLZXlzLmFjdGl2ZVZpZXdJZF0gPSB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGNoYW5nZWRLZXlzO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBAaW50ZXJuYWxcbiAgICAgKi9cbiAgICBfX3RyaWdnZXJPbkNoYW5nZUZvckNoYW5nZWRLZXlzKGNoYW5nZWRLZXlzOiBPYmplY3RNYXA8V2F0Y2hhYmxlQ3Vyc29yS2V5LCBib29sZWFuPikge1xuICAgICAgICBmb3IgKGNvbnN0IFtrZXksIGRpZENoYW5nZV0gb2YgZW50cmllcyhjaGFuZ2VkS2V5cykpIHtcbiAgICAgICAgICAgIGlmIChkaWRDaGFuZ2UpIHtcbiAgICAgICAgICAgICAgICB0aGlzLl9vbkNoYW5nZShrZXkpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCBDdXJzb3I7XG4iXX0=