@angular/core 7.1.0 → 7.1.4

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 (406) hide show
  1. package/bundles/core-testing.umd.js +1 -1
  2. package/bundles/core-testing.umd.js.map +1 -1
  3. package/bundles/core-testing.umd.min.js +1 -1
  4. package/bundles/core-testing.umd.min.js.map +1 -1
  5. package/bundles/core.umd.js +48 -33
  6. package/bundles/core.umd.js.map +1 -1
  7. package/bundles/core.umd.min.js +106 -98
  8. package/bundles/core.umd.min.js.map +1 -1
  9. package/core.metadata.json +1 -1
  10. package/esm2015/core.externs.js +44 -34
  11. package/esm2015/core.js +1 -2
  12. package/esm2015/index.js +3 -4
  13. package/esm2015/public_api.js +3 -5
  14. package/esm2015/src/application_init.js +6 -6
  15. package/esm2015/src/application_module.js +6 -5
  16. package/esm2015/src/application_ref.js +31 -22
  17. package/esm2015/src/application_tokens.js +21 -16
  18. package/esm2015/src/change_detection/change_detection.js +8 -7
  19. package/esm2015/src/change_detection/change_detection_util.js +2 -4
  20. package/esm2015/src/change_detection/change_detector_ref.js +2 -3
  21. package/esm2015/src/change_detection/constants.js +30 -32
  22. package/esm2015/src/change_detection/differs/default_iterable_differ.js +51 -15
  23. package/esm2015/src/change_detection/differs/default_keyvalue_differ.js +7 -6
  24. package/esm2015/src/change_detection/differs/iterable_differs.js +100 -90
  25. package/esm2015/src/change_detection/differs/keyvalue_differs.js +85 -73
  26. package/esm2015/src/change_detection/pipe_transform.js +10 -5
  27. package/esm2015/src/change_detection.js +7 -3
  28. package/esm2015/src/codegen_private_exports.js +2 -3
  29. package/esm2015/src/console.js +3 -3
  30. package/esm2015/src/core.js +3 -4
  31. package/esm2015/src/core_private_export.js +2 -3
  32. package/esm2015/src/core_render3_private_export.js +7 -4
  33. package/esm2015/src/debug/debug_node.js +4 -4
  34. package/esm2015/src/di/defs.js +59 -50
  35. package/esm2015/src/di/forward_ref.js +5 -6
  36. package/esm2015/src/di/injectable.js +11 -11
  37. package/esm2015/src/di/injection_token.js +6 -5
  38. package/esm2015/src/di/injector.js +55 -48
  39. package/esm2015/src/di/injector_compatibility.js +27 -20
  40. package/esm2015/src/di/metadata.js +22 -13
  41. package/esm2015/src/di/provider.js +137 -120
  42. package/esm2015/src/di/r3_injector.js +61 -38
  43. package/esm2015/src/di/reflective_errors.js +19 -13
  44. package/esm2015/src/di/reflective_injector.js +10 -15
  45. package/esm2015/src/di/reflective_key.js +3 -4
  46. package/esm2015/src/di/reflective_provider.js +21 -20
  47. package/esm2015/src/di/scope.js +5 -5
  48. package/esm2015/src/di/util.js +13 -14
  49. package/esm2015/src/di.js +3 -4
  50. package/esm2015/src/error_handler.js +5 -4
  51. package/esm2015/src/errors.js +7 -8
  52. package/esm2015/src/event_emitter.js +3 -3
  53. package/esm2015/src/i18n/tokens.js +12 -10
  54. package/esm2015/src/is_dev_mode.js +2 -3
  55. package/esm2015/src/ivy_switch.js +2 -3
  56. package/esm2015/src/linker/compiler.js +5 -8
  57. package/esm2015/src/linker/component_factory.js +2 -3
  58. package/esm2015/src/linker/component_factory_resolver.js +4 -5
  59. package/esm2015/src/linker/element_ref.js +5 -3
  60. package/esm2015/src/linker/ng_module_factory.js +6 -5
  61. package/esm2015/src/linker/ng_module_factory_loader.js +2 -3
  62. package/esm2015/src/linker/query_list.js +12 -13
  63. package/esm2015/src/linker/system_js_ng_module_factory_loader.js +2 -3
  64. package/esm2015/src/linker/template_ref.js +2 -3
  65. package/esm2015/src/linker/view_container_ref.js +2 -3
  66. package/esm2015/src/linker/view_ref.js +13 -7
  67. package/esm2015/src/linker.js +3 -3
  68. package/esm2015/src/metadata/di.js +22 -15
  69. package/esm2015/src/metadata/directives.js +34 -19
  70. package/esm2015/src/metadata/lifecycle_hooks.js +81 -66
  71. package/esm2015/src/metadata/ng_module.js +82 -68
  72. package/esm2015/src/metadata/resource_loading.js +4 -3
  73. package/esm2015/src/metadata/view.js +25 -26
  74. package/esm2015/src/metadata.js +6 -3
  75. package/esm2015/src/platform_core_providers.js +5 -5
  76. package/esm2015/src/profile/profile.js +17 -13
  77. package/esm2015/src/profile/wtf_impl.js +36 -16
  78. package/esm2015/src/r3_symbols.js +18 -5
  79. package/esm2015/src/reflection/platform_reflection_capabilities.js +81 -40
  80. package/esm2015/src/reflection/reflection.js +5 -5
  81. package/esm2015/src/reflection/reflection_capabilities.js +31 -26
  82. package/esm2015/src/reflection/reflector.js +2 -3
  83. package/esm2015/src/reflection/types.js +2 -12
  84. package/esm2015/src/render/api.js +67 -47
  85. package/esm2015/src/render.js +3 -3
  86. package/esm2015/src/render3/assert.js +5 -3
  87. package/esm2015/src/render3/component.js +66 -64
  88. package/esm2015/src/render3/component_ref.js +24 -21
  89. package/esm2015/src/render3/context_discovery.js +37 -17
  90. package/esm2015/src/render3/debug.js +9 -6
  91. package/esm2015/src/render3/definition.js +28 -28
  92. package/esm2015/src/render3/di.js +66 -39
  93. package/esm2015/src/render3/di_setup.js +34 -14
  94. package/esm2015/src/render3/discovery_utils.js +16 -17
  95. package/esm2015/src/render3/errors.js +2 -3
  96. package/esm2015/src/render3/features/inherit_definition_feature.js +12 -8
  97. package/esm2015/src/render3/features/ng_onchanges_feature.js +5 -6
  98. package/esm2015/src/render3/features/providers_feature.js +2 -3
  99. package/esm2015/src/render3/fields.js +5 -5
  100. package/esm2015/src/render3/global_utils.js +19 -6
  101. package/esm2015/src/render3/global_utils_api.js +12 -6
  102. package/esm2015/src/render3/hooks.js +4 -5
  103. package/esm2015/src/render3/i18n.js +112 -89
  104. package/esm2015/src/render3/index.js +11 -3
  105. package/esm2015/src/render3/instructions.js +201 -150
  106. package/esm2015/src/render3/interfaces/container.js +27 -5
  107. package/esm2015/src/render3/interfaces/context.js +38 -36
  108. package/esm2015/src/render3/interfaces/definition.js +234 -261
  109. package/esm2015/src/render3/interfaces/i18n.js +154 -126
  110. package/esm2015/src/render3/interfaces/injector.js +93 -10
  111. package/esm2015/src/render3/interfaces/node.js +369 -373
  112. package/esm2015/src/render3/interfaces/player.js +78 -37
  113. package/esm2015/src/render3/interfaces/projection.js +5 -10
  114. package/esm2015/src/render3/interfaces/query.js +66 -60
  115. package/esm2015/src/render3/interfaces/renderer.js +288 -117
  116. package/esm2015/src/render3/interfaces/sanitization.js +2 -6
  117. package/esm2015/src/render3/interfaces/styling.js +26 -6
  118. package/esm2015/src/render3/interfaces/view.js +326 -285
  119. package/esm2015/src/render3/jit/compiler_facade.js +10 -4
  120. package/esm2015/src/render3/jit/compiler_facade_interface.js +189 -152
  121. package/esm2015/src/render3/jit/directive.js +6 -6
  122. package/esm2015/src/render3/jit/environment.js +5 -5
  123. package/esm2015/src/render3/jit/injectable.js +6 -8
  124. package/esm2015/src/render3/jit/module.js +17 -13
  125. package/esm2015/src/render3/jit/pipe.js +2 -3
  126. package/esm2015/src/render3/jit/util.js +2 -3
  127. package/esm2015/src/render3/metadata.js +11 -10
  128. package/esm2015/src/render3/ng_dev_mode.js +5 -6
  129. package/esm2015/src/render3/ng_module_ref.js +11 -10
  130. package/esm2015/src/render3/node_assert.js +2 -3
  131. package/esm2015/src/render3/node_manipulation.js +86 -73
  132. package/esm2015/src/render3/node_selector_matcher.js +13 -12
  133. package/esm2015/src/render3/pipe.js +4 -5
  134. package/esm2015/src/render3/players.js +11 -5
  135. package/esm2015/src/render3/pure_function.js +29 -3
  136. package/esm2015/src/render3/query.js +74 -70
  137. package/esm2015/src/render3/state.js +44 -33
  138. package/esm2015/src/render3/styling/class_and_style_bindings.js +62 -43
  139. package/esm2015/src/render3/styling/core_player_handler.js +2 -3
  140. package/esm2015/src/render3/styling/player_factory.js +3 -4
  141. package/esm2015/src/render3/styling/util.js +18 -13
  142. package/esm2015/src/render3/tokens.js +7 -6
  143. package/esm2015/src/render3/util.js +18 -16
  144. package/esm2015/src/render3/view_engine_compatibility.js +18 -18
  145. package/esm2015/src/render3/view_engine_compatibility_prebound.js +2 -3
  146. package/esm2015/src/render3/view_ref.js +7 -10
  147. package/esm2015/src/sanitization/bypass.js +29 -6
  148. package/esm2015/src/sanitization/html_sanitizer.js +41 -15
  149. package/esm2015/src/sanitization/inert_body.js +14 -12
  150. package/esm2015/src/sanitization/sanitization.js +7 -7
  151. package/esm2015/src/sanitization/security.js +3 -4
  152. package/esm2015/src/sanitization/style_sanitizer.js +10 -7
  153. package/esm2015/src/sanitization/url_sanitizer.js +9 -7
  154. package/esm2015/src/testability/testability.js +47 -37
  155. package/esm2015/src/type.js +6 -8
  156. package/esm2015/src/util/decorators.js +19 -14
  157. package/esm2015/src/util/lang.js +2 -3
  158. package/esm2015/src/util/noop.js +2 -3
  159. package/esm2015/src/util/property.js +3 -4
  160. package/esm2015/src/util.js +12 -4
  161. package/esm2015/src/version.js +6 -6
  162. package/esm2015/src/view/element.js +17 -17
  163. package/esm2015/src/view/entrypoint.js +7 -3
  164. package/esm2015/src/view/errors.js +4 -5
  165. package/esm2015/src/view/index.js +2 -3
  166. package/esm2015/src/view/ng_content.js +3 -4
  167. package/esm2015/src/view/ng_module.js +2 -3
  168. package/esm2015/src/view/provider.js +89 -24
  169. package/esm2015/src/view/pure_expression.js +14 -15
  170. package/esm2015/src/view/query.js +14 -14
  171. package/esm2015/src/view/refs.js +24 -22
  172. package/esm2015/src/view/services.js +41 -31
  173. package/esm2015/src/view/text.js +5 -6
  174. package/esm2015/src/view/types.js +386 -324
  175. package/esm2015/src/view/util.js +29 -24
  176. package/esm2015/src/view/view.js +43 -36
  177. package/esm2015/src/view/view_attach.js +9 -10
  178. package/esm2015/src/zone/ng_zone.js +29 -28
  179. package/esm2015/src/zone.js +3 -3
  180. package/esm2015/testing/index.js +2 -3
  181. package/esm2015/testing/public_api.js +4 -4
  182. package/esm2015/testing/src/async.js +2 -3
  183. package/esm2015/testing/src/async_fallback.js +8 -7
  184. package/esm2015/testing/src/async_test_completer.js +2 -3
  185. package/esm2015/testing/src/before_each.js +10 -4
  186. package/esm2015/testing/src/component_fixture.js +6 -7
  187. package/esm2015/testing/src/fake_async.js +9 -3
  188. package/esm2015/testing/src/fake_async_fallback.js +5 -5
  189. package/esm2015/testing/src/lang_utils.js +3 -4
  190. package/esm2015/testing/src/logger.js +2 -3
  191. package/esm2015/testing/src/metadata_override.js +2 -6
  192. package/esm2015/testing/src/metadata_overrider.js +5 -7
  193. package/esm2015/testing/src/ng_zone_mock.js +2 -3
  194. package/esm2015/testing/src/private_export_testing.js +2 -3
  195. package/esm2015/testing/src/r3_test_bed.js +34 -27
  196. package/esm2015/testing/src/resolvers.js +9 -5
  197. package/esm2015/testing/src/test_bed.js +38 -34
  198. package/esm2015/testing/src/test_bed_common.js +142 -85
  199. package/esm2015/testing/src/test_compiler.js +2 -3
  200. package/esm2015/testing/src/testing.js +3 -3
  201. package/esm2015/testing/src/testing_internal.js +8 -9
  202. package/esm2015/testing/testing.js +1 -2
  203. package/esm5/core.js +1 -2
  204. package/esm5/index.js +1 -2
  205. package/esm5/public_api.js +1 -2
  206. package/esm5/src/application_init.js +1 -2
  207. package/esm5/src/application_module.js +1 -2
  208. package/esm5/src/application_ref.js +1 -2
  209. package/esm5/src/application_tokens.js +1 -2
  210. package/esm5/src/change_detection/change_detection.js +1 -2
  211. package/esm5/src/change_detection/change_detection_util.js +1 -2
  212. package/esm5/src/change_detection/change_detector_ref.js +1 -2
  213. package/esm5/src/change_detection/constants.js +1 -2
  214. package/esm5/src/change_detection/differs/default_iterable_differ.js +1 -2
  215. package/esm5/src/change_detection/differs/default_keyvalue_differ.js +1 -2
  216. package/esm5/src/change_detection/differs/iterable_differs.js +1 -2
  217. package/esm5/src/change_detection/differs/keyvalue_differs.js +1 -2
  218. package/esm5/src/change_detection/pipe_transform.js +1 -2
  219. package/esm5/src/change_detection.js +1 -2
  220. package/esm5/src/codegen_private_exports.js +1 -2
  221. package/esm5/src/console.js +1 -2
  222. package/esm5/src/core.js +1 -2
  223. package/esm5/src/core_private_export.js +1 -2
  224. package/esm5/src/core_render3_private_export.js +1 -2
  225. package/esm5/src/debug/debug_node.js +1 -2
  226. package/esm5/src/di/defs.js +1 -2
  227. package/esm5/src/di/forward_ref.js +1 -2
  228. package/esm5/src/di/injectable.js +1 -2
  229. package/esm5/src/di/injection_token.js +1 -2
  230. package/esm5/src/di/injector.js +7 -8
  231. package/esm5/src/di/injector_compatibility.js +30 -10
  232. package/esm5/src/di/metadata.js +1 -2
  233. package/esm5/src/di/provider.js +1 -2
  234. package/esm5/src/di/r3_injector.js +5 -6
  235. package/esm5/src/di/reflective_errors.js +1 -2
  236. package/esm5/src/di/reflective_injector.js +1 -2
  237. package/esm5/src/di/reflective_key.js +1 -2
  238. package/esm5/src/di/reflective_provider.js +1 -2
  239. package/esm5/src/di/scope.js +1 -2
  240. package/esm5/src/di/util.js +1 -2
  241. package/esm5/src/di.js +2 -3
  242. package/esm5/src/error_handler.js +1 -2
  243. package/esm5/src/errors.js +1 -2
  244. package/esm5/src/event_emitter.js +1 -2
  245. package/esm5/src/i18n/tokens.js +1 -2
  246. package/esm5/src/is_dev_mode.js +1 -2
  247. package/esm5/src/ivy_switch.js +1 -2
  248. package/esm5/src/linker/compiler.js +1 -2
  249. package/esm5/src/linker/component_factory.js +1 -2
  250. package/esm5/src/linker/component_factory_resolver.js +1 -2
  251. package/esm5/src/linker/element_ref.js +1 -2
  252. package/esm5/src/linker/ng_module_factory.js +1 -2
  253. package/esm5/src/linker/ng_module_factory_loader.js +1 -2
  254. package/esm5/src/linker/query_list.js +1 -2
  255. package/esm5/src/linker/system_js_ng_module_factory_loader.js +1 -2
  256. package/esm5/src/linker/template_ref.js +1 -2
  257. package/esm5/src/linker/view_container_ref.js +1 -2
  258. package/esm5/src/linker/view_ref.js +1 -2
  259. package/esm5/src/linker.js +1 -2
  260. package/esm5/src/metadata/di.js +1 -2
  261. package/esm5/src/metadata/directives.js +1 -2
  262. package/esm5/src/metadata/lifecycle_hooks.js +1 -2
  263. package/esm5/src/metadata/ng_module.js +1 -2
  264. package/esm5/src/metadata/resource_loading.js +1 -2
  265. package/esm5/src/metadata/view.js +1 -2
  266. package/esm5/src/metadata.js +1 -2
  267. package/esm5/src/platform_core_providers.js +1 -2
  268. package/esm5/src/profile/profile.js +1 -2
  269. package/esm5/src/profile/wtf_impl.js +1 -2
  270. package/esm5/src/r3_symbols.js +1 -2
  271. package/esm5/src/reflection/platform_reflection_capabilities.js +1 -2
  272. package/esm5/src/reflection/reflection.js +1 -2
  273. package/esm5/src/reflection/reflection_capabilities.js +1 -2
  274. package/esm5/src/reflection/reflector.js +1 -2
  275. package/esm5/src/reflection/types.js +1 -2
  276. package/esm5/src/render/api.js +1 -2
  277. package/esm5/src/render.js +1 -2
  278. package/esm5/src/render3/assert.js +1 -2
  279. package/esm5/src/render3/component.js +1 -2
  280. package/esm5/src/render3/component_ref.js +1 -2
  281. package/esm5/src/render3/context_discovery.js +1 -2
  282. package/esm5/src/render3/debug.js +1 -2
  283. package/esm5/src/render3/definition.js +1 -2
  284. package/esm5/src/render3/di.js +12 -13
  285. package/esm5/src/render3/di_setup.js +1 -2
  286. package/esm5/src/render3/discovery_utils.js +1 -2
  287. package/esm5/src/render3/errors.js +1 -2
  288. package/esm5/src/render3/features/inherit_definition_feature.js +1 -2
  289. package/esm5/src/render3/features/ng_onchanges_feature.js +1 -2
  290. package/esm5/src/render3/features/providers_feature.js +1 -2
  291. package/esm5/src/render3/fields.js +1 -2
  292. package/esm5/src/render3/global_utils.js +1 -2
  293. package/esm5/src/render3/global_utils_api.js +1 -2
  294. package/esm5/src/render3/hooks.js +1 -2
  295. package/esm5/src/render3/i18n.js +1 -2
  296. package/esm5/src/render3/index.js +1 -2
  297. package/esm5/src/render3/instructions.js +3 -3
  298. package/esm5/src/render3/interfaces/container.js +1 -2
  299. package/esm5/src/render3/interfaces/context.js +1 -2
  300. package/esm5/src/render3/interfaces/definition.js +1 -2
  301. package/esm5/src/render3/interfaces/i18n.js +1 -2
  302. package/esm5/src/render3/interfaces/injector.js +1 -2
  303. package/esm5/src/render3/interfaces/node.js +1 -2
  304. package/esm5/src/render3/interfaces/player.js +1 -2
  305. package/esm5/src/render3/interfaces/projection.js +1 -2
  306. package/esm5/src/render3/interfaces/query.js +1 -2
  307. package/esm5/src/render3/interfaces/renderer.js +1 -2
  308. package/esm5/src/render3/interfaces/sanitization.js +1 -2
  309. package/esm5/src/render3/interfaces/styling.js +1 -2
  310. package/esm5/src/render3/interfaces/view.js +1 -2
  311. package/esm5/src/render3/jit/compiler_facade.js +1 -2
  312. package/esm5/src/render3/jit/compiler_facade_interface.js +1 -2
  313. package/esm5/src/render3/jit/directive.js +1 -2
  314. package/esm5/src/render3/jit/environment.js +1 -2
  315. package/esm5/src/render3/jit/injectable.js +1 -2
  316. package/esm5/src/render3/jit/module.js +1 -2
  317. package/esm5/src/render3/jit/pipe.js +1 -2
  318. package/esm5/src/render3/jit/util.js +1 -2
  319. package/esm5/src/render3/metadata.js +1 -2
  320. package/esm5/src/render3/ng_dev_mode.js +1 -2
  321. package/esm5/src/render3/ng_module_ref.js +1 -2
  322. package/esm5/src/render3/node_assert.js +1 -2
  323. package/esm5/src/render3/node_manipulation.js +1 -2
  324. package/esm5/src/render3/node_selector_matcher.js +1 -2
  325. package/esm5/src/render3/pipe.js +1 -2
  326. package/esm5/src/render3/players.js +1 -2
  327. package/esm5/src/render3/pure_function.js +1 -2
  328. package/esm5/src/render3/query.js +1 -2
  329. package/esm5/src/render3/state.js +1 -2
  330. package/esm5/src/render3/styling/class_and_style_bindings.js +1 -2
  331. package/esm5/src/render3/styling/core_player_handler.js +1 -2
  332. package/esm5/src/render3/styling/player_factory.js +1 -2
  333. package/esm5/src/render3/styling/util.js +1 -2
  334. package/esm5/src/render3/tokens.js +1 -2
  335. package/esm5/src/render3/util.js +1 -2
  336. package/esm5/src/render3/view_engine_compatibility.js +3 -3
  337. package/esm5/src/render3/view_engine_compatibility_prebound.js +1 -2
  338. package/esm5/src/render3/view_ref.js +1 -2
  339. package/esm5/src/sanitization/bypass.js +1 -2
  340. package/esm5/src/sanitization/html_sanitizer.js +1 -2
  341. package/esm5/src/sanitization/inert_body.js +1 -2
  342. package/esm5/src/sanitization/sanitization.js +1 -2
  343. package/esm5/src/sanitization/security.js +1 -2
  344. package/esm5/src/sanitization/style_sanitizer.js +1 -2
  345. package/esm5/src/sanitization/url_sanitizer.js +1 -2
  346. package/esm5/src/testability/testability.js +1 -2
  347. package/esm5/src/type.js +1 -2
  348. package/esm5/src/util/decorators.js +1 -2
  349. package/esm5/src/util/lang.js +1 -2
  350. package/esm5/src/util/noop.js +1 -2
  351. package/esm5/src/util/property.js +1 -2
  352. package/esm5/src/util.js +1 -2
  353. package/esm5/src/version.js +2 -3
  354. package/esm5/src/view/element.js +1 -2
  355. package/esm5/src/view/entrypoint.js +1 -2
  356. package/esm5/src/view/errors.js +1 -2
  357. package/esm5/src/view/index.js +1 -2
  358. package/esm5/src/view/ng_content.js +1 -2
  359. package/esm5/src/view/ng_module.js +1 -2
  360. package/esm5/src/view/provider.js +1 -2
  361. package/esm5/src/view/pure_expression.js +1 -2
  362. package/esm5/src/view/query.js +1 -2
  363. package/esm5/src/view/refs.js +5 -5
  364. package/esm5/src/view/services.js +1 -2
  365. package/esm5/src/view/text.js +1 -2
  366. package/esm5/src/view/types.js +1 -2
  367. package/esm5/src/view/util.js +1 -2
  368. package/esm5/src/view/view.js +1 -2
  369. package/esm5/src/view/view_attach.js +1 -2
  370. package/esm5/src/zone/ng_zone.js +1 -2
  371. package/esm5/src/zone.js +1 -2
  372. package/esm5/testing/index.js +1 -2
  373. package/esm5/testing/public_api.js +1 -2
  374. package/esm5/testing/src/async.js +1 -2
  375. package/esm5/testing/src/async_fallback.js +1 -2
  376. package/esm5/testing/src/async_test_completer.js +1 -2
  377. package/esm5/testing/src/before_each.js +1 -2
  378. package/esm5/testing/src/component_fixture.js +1 -2
  379. package/esm5/testing/src/fake_async.js +1 -2
  380. package/esm5/testing/src/fake_async_fallback.js +1 -2
  381. package/esm5/testing/src/lang_utils.js +1 -2
  382. package/esm5/testing/src/logger.js +1 -2
  383. package/esm5/testing/src/metadata_override.js +1 -2
  384. package/esm5/testing/src/metadata_overrider.js +1 -2
  385. package/esm5/testing/src/ng_zone_mock.js +1 -2
  386. package/esm5/testing/src/private_export_testing.js +1 -2
  387. package/esm5/testing/src/r3_test_bed.js +1 -2
  388. package/esm5/testing/src/resolvers.js +1 -2
  389. package/esm5/testing/src/test_bed.js +1 -2
  390. package/esm5/testing/src/test_bed_common.js +1 -2
  391. package/esm5/testing/src/test_compiler.js +1 -2
  392. package/esm5/testing/src/testing.js +1 -2
  393. package/esm5/testing/src/testing_internal.js +1 -2
  394. package/esm5/testing/testing.js +1 -2
  395. package/fesm2015/core.js +2040 -1354
  396. package/fesm2015/core.js.map +1 -1
  397. package/fesm2015/testing.js +123 -89
  398. package/fesm2015/testing.js.map +1 -1
  399. package/fesm5/core.js +55 -34
  400. package/fesm5/core.js.map +1 -1
  401. package/fesm5/testing.js +1 -1
  402. package/fesm5/testing.js.map +1 -1
  403. package/package.json +1 -1
  404. package/src/di/injector_compatibility.d.ts +1 -1
  405. package/testing.d.ts +5 -0
  406. package/npm_package.es6/external/ngdeps/node_modules/tslib/tslib.d.ts +0 -33
@@ -1,6 +1,6 @@
1
1
  /**
2
2
  * @fileoverview added by tsickle
3
- * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc
3
+ * @suppress {checkTypes,extraRequire,missingReturn,uselessCode} checked by tsc
4
4
  */
5
5
  /**
6
6
  * @license
@@ -9,17 +9,22 @@
9
9
  * Use of this source code is governed by an MIT-style license that can be
10
10
  * found in the LICENSE file at https://angular.io/license
11
11
  */
12
+ /**
13
+ * The goal here is to make sure that the browser DOM API is the Renderer.
14
+ * We do this by defining a subset of DOM API to be the renderer and than
15
+ * use that time for rendering.
16
+ *
17
+ * At runtime we can than use the DOM api directly, in server or web-worker
18
+ * it will be easy to implement such API.
19
+ */
12
20
  /** @enum {number} */
13
- var RendererStyleFlags3 = {
21
+ const RendererStyleFlags3 = {
14
22
  Important: 1,
15
23
  DashCase: 2,
16
24
  };
17
25
  export { RendererStyleFlags3 };
18
26
  RendererStyleFlags3[RendererStyleFlags3.Important] = 'Important';
19
27
  RendererStyleFlags3[RendererStyleFlags3.DashCase] = 'DashCase';
20
- /** @typedef {?} */
21
- var Renderer3;
22
- export { Renderer3 };
23
28
  /**
24
29
  * Object Oriented style of API needed to create elements and text nodes.
25
30
  *
@@ -30,23 +35,41 @@ export { Renderer3 };
30
35
  * @record
31
36
  */
32
37
  export function ObjectOrientedRenderer3() { }
33
- /** @type {?} */
34
- ObjectOrientedRenderer3.prototype.createComment;
35
- /** @type {?} */
36
- ObjectOrientedRenderer3.prototype.createElement;
37
- /** @type {?} */
38
- ObjectOrientedRenderer3.prototype.createElementNS;
39
- /** @type {?} */
40
- ObjectOrientedRenderer3.prototype.createTextNode;
41
- /** @type {?} */
42
- ObjectOrientedRenderer3.prototype.querySelector;
38
+ if (false) {
39
+ /**
40
+ * @param {?} data
41
+ * @return {?}
42
+ */
43
+ ObjectOrientedRenderer3.prototype.createComment = function (data) { };
44
+ /**
45
+ * @param {?} tagName
46
+ * @return {?}
47
+ */
48
+ ObjectOrientedRenderer3.prototype.createElement = function (tagName) { };
49
+ /**
50
+ * @param {?} namespace
51
+ * @param {?} tagName
52
+ * @return {?}
53
+ */
54
+ ObjectOrientedRenderer3.prototype.createElementNS = function (namespace, tagName) { };
55
+ /**
56
+ * @param {?} data
57
+ * @return {?}
58
+ */
59
+ ObjectOrientedRenderer3.prototype.createTextNode = function (data) { };
60
+ /**
61
+ * @param {?} selectors
62
+ * @return {?}
63
+ */
64
+ ObjectOrientedRenderer3.prototype.querySelector = function (selectors) { };
65
+ }
43
66
  /**
44
67
  * Returns whether the `renderer` is a `ProceduralRenderer3`
45
68
  * @param {?} renderer
46
69
  * @return {?}
47
70
  */
48
71
  export function isProceduralRenderer(renderer) {
49
- return !!((/** @type {?} */ (renderer)).listen);
72
+ return !!(((/** @type {?} */ (renderer))).listen);
50
73
  }
51
74
  /**
52
75
  * Procedural style of API needed to create elements and text nodes.
@@ -57,61 +80,151 @@ export function isProceduralRenderer(renderer) {
57
80
  * @record
58
81
  */
59
82
  export function ProceduralRenderer3() { }
60
- /** @type {?} */
61
- ProceduralRenderer3.prototype.destroy;
62
- /** @type {?} */
63
- ProceduralRenderer3.prototype.createComment;
64
- /** @type {?} */
65
- ProceduralRenderer3.prototype.createElement;
66
- /** @type {?} */
67
- ProceduralRenderer3.prototype.createText;
68
- /**
69
- * This property is allowed to be null / undefined,
70
- * in which case the view engine won't call it.
71
- * This is used as a performance optimization for production mode.
72
- * @type {?|undefined}
73
- */
74
- ProceduralRenderer3.prototype.destroyNode;
75
- /** @type {?} */
76
- ProceduralRenderer3.prototype.appendChild;
77
- /** @type {?} */
78
- ProceduralRenderer3.prototype.insertBefore;
79
- /** @type {?} */
80
- ProceduralRenderer3.prototype.removeChild;
81
- /** @type {?} */
82
- ProceduralRenderer3.prototype.selectRootElement;
83
- /** @type {?} */
84
- ProceduralRenderer3.prototype.parentNode;
85
- /** @type {?} */
86
- ProceduralRenderer3.prototype.nextSibling;
87
- /** @type {?} */
88
- ProceduralRenderer3.prototype.setAttribute;
89
- /** @type {?} */
90
- ProceduralRenderer3.prototype.removeAttribute;
91
- /** @type {?} */
92
- ProceduralRenderer3.prototype.addClass;
93
- /** @type {?} */
94
- ProceduralRenderer3.prototype.removeClass;
95
- /** @type {?} */
96
- ProceduralRenderer3.prototype.setStyle;
97
- /** @type {?} */
98
- ProceduralRenderer3.prototype.removeStyle;
99
- /** @type {?} */
100
- ProceduralRenderer3.prototype.setProperty;
101
- /** @type {?} */
102
- ProceduralRenderer3.prototype.setValue;
103
- /** @type {?} */
104
- ProceduralRenderer3.prototype.listen;
83
+ if (false) {
84
+ /**
85
+ * This property is allowed to be null / undefined,
86
+ * in which case the view engine won't call it.
87
+ * This is used as a performance optimization for production mode.
88
+ * @type {?|undefined}
89
+ */
90
+ ProceduralRenderer3.prototype.destroyNode;
91
+ /**
92
+ * @return {?}
93
+ */
94
+ ProceduralRenderer3.prototype.destroy = function () { };
95
+ /**
96
+ * @param {?} value
97
+ * @return {?}
98
+ */
99
+ ProceduralRenderer3.prototype.createComment = function (value) { };
100
+ /**
101
+ * @param {?} name
102
+ * @param {?=} namespace
103
+ * @return {?}
104
+ */
105
+ ProceduralRenderer3.prototype.createElement = function (name, namespace) { };
106
+ /**
107
+ * @param {?} value
108
+ * @return {?}
109
+ */
110
+ ProceduralRenderer3.prototype.createText = function (value) { };
111
+ /**
112
+ * @param {?} parent
113
+ * @param {?} newChild
114
+ * @return {?}
115
+ */
116
+ ProceduralRenderer3.prototype.appendChild = function (parent, newChild) { };
117
+ /**
118
+ * @param {?} parent
119
+ * @param {?} newChild
120
+ * @param {?} refChild
121
+ * @return {?}
122
+ */
123
+ ProceduralRenderer3.prototype.insertBefore = function (parent, newChild, refChild) { };
124
+ /**
125
+ * @param {?} parent
126
+ * @param {?} oldChild
127
+ * @return {?}
128
+ */
129
+ ProceduralRenderer3.prototype.removeChild = function (parent, oldChild) { };
130
+ /**
131
+ * @param {?} selectorOrNode
132
+ * @return {?}
133
+ */
134
+ ProceduralRenderer3.prototype.selectRootElement = function (selectorOrNode) { };
135
+ /**
136
+ * @param {?} node
137
+ * @return {?}
138
+ */
139
+ ProceduralRenderer3.prototype.parentNode = function (node) { };
140
+ /**
141
+ * @param {?} node
142
+ * @return {?}
143
+ */
144
+ ProceduralRenderer3.prototype.nextSibling = function (node) { };
145
+ /**
146
+ * @param {?} el
147
+ * @param {?} name
148
+ * @param {?} value
149
+ * @param {?=} namespace
150
+ * @return {?}
151
+ */
152
+ ProceduralRenderer3.prototype.setAttribute = function (el, name, value, namespace) { };
153
+ /**
154
+ * @param {?} el
155
+ * @param {?} name
156
+ * @param {?=} namespace
157
+ * @return {?}
158
+ */
159
+ ProceduralRenderer3.prototype.removeAttribute = function (el, name, namespace) { };
160
+ /**
161
+ * @param {?} el
162
+ * @param {?} name
163
+ * @return {?}
164
+ */
165
+ ProceduralRenderer3.prototype.addClass = function (el, name) { };
166
+ /**
167
+ * @param {?} el
168
+ * @param {?} name
169
+ * @return {?}
170
+ */
171
+ ProceduralRenderer3.prototype.removeClass = function (el, name) { };
172
+ /**
173
+ * @param {?} el
174
+ * @param {?} style
175
+ * @param {?} value
176
+ * @param {?=} flags
177
+ * @return {?}
178
+ */
179
+ ProceduralRenderer3.prototype.setStyle = function (el, style, value, flags) { };
180
+ /**
181
+ * @param {?} el
182
+ * @param {?} style
183
+ * @param {?=} flags
184
+ * @return {?}
185
+ */
186
+ ProceduralRenderer3.prototype.removeStyle = function (el, style, flags) { };
187
+ /**
188
+ * @param {?} el
189
+ * @param {?} name
190
+ * @param {?} value
191
+ * @return {?}
192
+ */
193
+ ProceduralRenderer3.prototype.setProperty = function (el, name, value) { };
194
+ /**
195
+ * @param {?} node
196
+ * @param {?} value
197
+ * @return {?}
198
+ */
199
+ ProceduralRenderer3.prototype.setValue = function (node, value) { };
200
+ /**
201
+ * @param {?} target
202
+ * @param {?} eventName
203
+ * @param {?} callback
204
+ * @return {?}
205
+ */
206
+ ProceduralRenderer3.prototype.listen = function (target, eventName, callback) { };
207
+ }
105
208
  /**
106
209
  * @record
107
210
  */
108
211
  export function RendererFactory3() { }
109
- /** @type {?} */
110
- RendererFactory3.prototype.createRenderer;
111
- /** @type {?|undefined} */
112
- RendererFactory3.prototype.begin;
113
- /** @type {?|undefined} */
114
- RendererFactory3.prototype.end;
212
+ if (false) {
213
+ /**
214
+ * @param {?} hostElement
215
+ * @param {?} rendererType
216
+ * @return {?}
217
+ */
218
+ RendererFactory3.prototype.createRenderer = function (hostElement, rendererType) { };
219
+ /**
220
+ * @return {?}
221
+ */
222
+ RendererFactory3.prototype.begin = function () { };
223
+ /**
224
+ * @return {?}
225
+ */
226
+ RendererFactory3.prototype.end = function () { };
227
+ }
115
228
  /** @type {?} */
116
229
  export const domRendererFactory3 = {
117
230
  createRenderer: (hostElement, rendererType) => { return document; }
@@ -121,77 +234,135 @@ export const domRendererFactory3 = {
121
234
  * @record
122
235
  */
123
236
  export function RNode() { }
124
- /** @type {?} */
125
- RNode.prototype.parentNode;
126
- /** @type {?} */
127
- RNode.prototype.nextSibling;
128
- /** @type {?} */
129
- RNode.prototype.removeChild;
130
- /**
131
- * Insert a child node.
132
- *
133
- * Used exclusively for adding View root nodes into ViewAnchor location.
134
- * @type {?}
135
- */
136
- RNode.prototype.insertBefore;
137
- /**
138
- * Append a child node.
139
- *
140
- * Used exclusively for building up DOM which are static (ie not View roots)
141
- * @type {?}
142
- */
143
- RNode.prototype.appendChild;
237
+ if (false) {
238
+ /** @type {?} */
239
+ RNode.prototype.parentNode;
240
+ /** @type {?} */
241
+ RNode.prototype.nextSibling;
242
+ /**
243
+ * @param {?} oldChild
244
+ * @return {?}
245
+ */
246
+ RNode.prototype.removeChild = function (oldChild) { };
247
+ /**
248
+ * Insert a child node.
249
+ *
250
+ * Used exclusively for adding View root nodes into ViewAnchor location.
251
+ * @param {?} newChild
252
+ * @param {?} refChild
253
+ * @param {?} isViewRoot
254
+ * @return {?}
255
+ */
256
+ RNode.prototype.insertBefore = function (newChild, refChild, isViewRoot) { };
257
+ /**
258
+ * Append a child node.
259
+ *
260
+ * Used exclusively for building up DOM which are static (ie not View roots)
261
+ * @param {?} newChild
262
+ * @return {?}
263
+ */
264
+ RNode.prototype.appendChild = function (newChild) { };
265
+ }
144
266
  /**
145
267
  * Subset of API needed for writing attributes, properties, and setting up
146
268
  * listeners on Element.
147
269
  * @record
148
270
  */
149
271
  export function RElement() { }
150
- /** @type {?} */
151
- RElement.prototype.style;
152
- /** @type {?} */
153
- RElement.prototype.classList;
154
- /** @type {?} */
155
- RElement.prototype.className;
156
- /** @type {?} */
157
- RElement.prototype.setAttribute;
158
- /** @type {?} */
159
- RElement.prototype.removeAttribute;
160
- /** @type {?} */
161
- RElement.prototype.setAttributeNS;
162
- /** @type {?} */
163
- RElement.prototype.addEventListener;
164
- /** @type {?} */
165
- RElement.prototype.removeEventListener;
166
- /** @type {?|undefined} */
167
- RElement.prototype.setProperty;
272
+ if (false) {
273
+ /** @type {?} */
274
+ RElement.prototype.style;
275
+ /** @type {?} */
276
+ RElement.prototype.classList;
277
+ /** @type {?} */
278
+ RElement.prototype.className;
279
+ /**
280
+ * @param {?} name
281
+ * @param {?} value
282
+ * @return {?}
283
+ */
284
+ RElement.prototype.setAttribute = function (name, value) { };
285
+ /**
286
+ * @param {?} name
287
+ * @return {?}
288
+ */
289
+ RElement.prototype.removeAttribute = function (name) { };
290
+ /**
291
+ * @param {?} namespaceURI
292
+ * @param {?} qualifiedName
293
+ * @param {?} value
294
+ * @return {?}
295
+ */
296
+ RElement.prototype.setAttributeNS = function (namespaceURI, qualifiedName, value) { };
297
+ /**
298
+ * @param {?} type
299
+ * @param {?} listener
300
+ * @param {?=} useCapture
301
+ * @return {?}
302
+ */
303
+ RElement.prototype.addEventListener = function (type, listener, useCapture) { };
304
+ /**
305
+ * @param {?} type
306
+ * @param {?=} listener
307
+ * @param {?=} options
308
+ * @return {?}
309
+ */
310
+ RElement.prototype.removeEventListener = function (type, listener, options) { };
311
+ /**
312
+ * @param {?} name
313
+ * @param {?} value
314
+ * @return {?}
315
+ */
316
+ RElement.prototype.setProperty = function (name, value) { };
317
+ }
168
318
  /**
169
319
  * @record
170
320
  */
171
321
  export function RCssStyleDeclaration() { }
172
- /** @type {?} */
173
- RCssStyleDeclaration.prototype.removeProperty;
174
- /** @type {?} */
175
- RCssStyleDeclaration.prototype.setProperty;
322
+ if (false) {
323
+ /**
324
+ * @param {?} propertyName
325
+ * @return {?}
326
+ */
327
+ RCssStyleDeclaration.prototype.removeProperty = function (propertyName) { };
328
+ /**
329
+ * @param {?} propertyName
330
+ * @param {?} value
331
+ * @param {?=} priority
332
+ * @return {?}
333
+ */
334
+ RCssStyleDeclaration.prototype.setProperty = function (propertyName, value, priority) { };
335
+ }
176
336
  /**
177
337
  * @record
178
338
  */
179
339
  export function RDomTokenList() { }
180
- /** @type {?} */
181
- RDomTokenList.prototype.add;
182
- /** @type {?} */
183
- RDomTokenList.prototype.remove;
340
+ if (false) {
341
+ /**
342
+ * @param {?} token
343
+ * @return {?}
344
+ */
345
+ RDomTokenList.prototype.add = function (token) { };
346
+ /**
347
+ * @param {?} token
348
+ * @return {?}
349
+ */
350
+ RDomTokenList.prototype.remove = function (token) { };
351
+ }
184
352
  /**
185
353
  * @record
186
354
  */
187
355
  export function RText() { }
188
- /** @type {?} */
189
- RText.prototype.textContent;
356
+ if (false) {
357
+ /** @type {?} */
358
+ RText.prototype.textContent;
359
+ }
190
360
  /**
191
361
  * @record
192
362
  */
193
363
  export function RComment() { }
364
+ // Note: This hack is necessary so we don't erroneously get a circular dependency
365
+ // failure based on types.
194
366
  /** @type {?} */
195
367
  export const unusedValueExportToPlacateAjd = 1;
196
-
197
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVuZGVyZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb3JlL3NyYy9yZW5kZXIzL2ludGVyZmFjZXMvcmVuZGVyZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7OztJQXNCRSxZQUFrQjtJQUNsQixXQUFpQjs7O3dDQURqQixTQUFTO3dDQUNULFFBQVE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBc0JWLE1BQU0sVUFBVSxvQkFBb0IsQ0FBQyxRQUF1RDtJQUUxRixPQUFPLENBQUMsQ0FBQyxDQUFDLG1CQUFDLFFBQWUsRUFBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0NBQ3JDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFpREQsYUFBYSxtQkFBbUIsR0FBcUI7SUFDbkQsY0FBYyxFQUFFLENBQUMsV0FBNEIsRUFBRSxZQUFrQyxFQUNuRCxFQUFFLEdBQUcsT0FBTyxRQUFRLENBQUMsRUFBQztDQUNyRCxDQUFDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQTBERixhQUFhLDZCQUE2QixHQUFHLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBHb29nbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlXG4gKi9cblxuLyoqXG4gKiBUaGUgZ29hbCBoZXJlIGlzIHRvIG1ha2Ugc3VyZSB0aGF0IHRoZSBicm93c2VyIERPTSBBUEkgaXMgdGhlIFJlbmRlcmVyLlxuICogV2UgZG8gdGhpcyBieSBkZWZpbmluZyBhIHN1YnNldCBvZiBET00gQVBJIHRvIGJlIHRoZSByZW5kZXJlciBhbmQgdGhhblxuICogdXNlIHRoYXQgdGltZSBmb3IgcmVuZGVyaW5nLlxuICpcbiAqIEF0IHJ1bnRpbWUgd2UgY2FuIHRoYW4gdXNlIHRoZSBET00gYXBpIGRpcmVjdGx5LCBpbiBzZXJ2ZXIgb3Igd2ViLXdvcmtlclxuICogaXQgd2lsbCBiZSBlYXN5IHRvIGltcGxlbWVudCBzdWNoIEFQSS5cbiAqL1xuXG5pbXBvcnQge1JlbmRlcmVyU3R5bGVGbGFnczIsIFJlbmRlcmVyVHlwZTJ9IGZyb20gJy4uLy4uL3JlbmRlci9hcGknO1xuXG5cbi8vIFRPRE86IGNsZWFudXAgb25jZSB0aGUgY29kZSBpcyBtZXJnZWQgaW4gYW5ndWxhci9hbmd1bGFyXG5leHBvcnQgZW51bSBSZW5kZXJlclN0eWxlRmxhZ3MzIHtcbiAgSW1wb3J0YW50ID0gMSA8PCAwLFxuICBEYXNoQ2FzZSA9IDEgPDwgMVxufVxuXG5leHBvcnQgdHlwZSBSZW5kZXJlcjMgPSBPYmplY3RPcmllbnRlZFJlbmRlcmVyMyB8IFByb2NlZHVyYWxSZW5kZXJlcjM7XG5cbi8qKlxuICogT2JqZWN0IE9yaWVudGVkIHN0eWxlIG9mIEFQSSBuZWVkZWQgdG8gY3JlYXRlIGVsZW1lbnRzIGFuZCB0ZXh0IG5vZGVzLlxuICpcbiAqIFRoaXMgaXMgdGhlIG5hdGl2ZSBicm93c2VyIEFQSSBzdHlsZSwgZS5nLiBvcGVyYXRpb25zIGFyZSBtZXRob2RzIG9uIGluZGl2aWR1YWwgb2JqZWN0c1xuICogbGlrZSBIVE1MRWxlbWVudC4gV2l0aCB0aGlzIHN0eWxlLCBubyBhZGRpdGlvbmFsIGNvZGUgaXMgbmVlZGVkIGFzIGEgZmFjYWRlXG4gKiAocmVkdWNpbmcgcGF5bG9hZCBzaXplKS5cbiAqICovXG5leHBvcnQgaW50ZXJmYWNlIE9iamVjdE9yaWVudGVkUmVuZGVyZXIzIHtcbiAgY3JlYXRlQ29tbWVudChkYXRhOiBzdHJpbmcpOiBSQ29tbWVudDtcbiAgY3JlYXRlRWxlbWVudCh0YWdOYW1lOiBzdHJpbmcpOiBSRWxlbWVudDtcbiAgY3JlYXRlRWxlbWVudE5TKG5hbWVzcGFjZTogc3RyaW5nLCB0YWdOYW1lOiBzdHJpbmcpOiBSRWxlbWVudDtcbiAgY3JlYXRlVGV4dE5vZGUoZGF0YTogc3RyaW5nKTogUlRleHQ7XG5cbiAgcXVlcnlTZWxlY3RvcihzZWxlY3RvcnM6IHN0cmluZyk6IFJFbGVtZW50fG51bGw7XG59XG5cbi8qKiBSZXR1cm5zIHdoZXRoZXIgdGhlIGByZW5kZXJlcmAgaXMgYSBgUHJvY2VkdXJhbFJlbmRlcmVyM2AgKi9cbmV4cG9ydCBmdW5jdGlvbiBpc1Byb2NlZHVyYWxSZW5kZXJlcihyZW5kZXJlcjogUHJvY2VkdXJhbFJlbmRlcmVyMyB8IE9iamVjdE9yaWVudGVkUmVuZGVyZXIzKTpcbiAgICByZW5kZXJlciBpcyBQcm9jZWR1cmFsUmVuZGVyZXIzIHtcbiAgcmV0dXJuICEhKChyZW5kZXJlciBhcyBhbnkpLmxpc3Rlbik7XG59XG5cbi8qKlxuICogUHJvY2VkdXJhbCBzdHlsZSBvZiBBUEkgbmVlZGVkIHRvIGNyZWF0ZSBlbGVtZW50cyBhbmQgdGV4dCBub2Rlcy5cbiAqXG4gKiBJbiBub24tbmF0aXZlIGJyb3dzZXIgZW52aXJvbm1lbnRzIChlLmcuIHBsYXRmb3JtcyBzdWNoIGFzIHdlYi13b3JrZXJzKSwgdGhpcyBpcyB0aGVcbiAqIGZhY2FkZSB0aGF0IGVuYWJsZXMgZWxlbWVudCBtYW5pcHVsYXRpb24uIFRoaXMgYWxzbyBmYWNpbGl0YXRlcyBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eVxuICogd2l0aCBSZW5kZXJlcjIuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUHJvY2VkdXJhbFJlbmRlcmVyMyB7XG4gIGRlc3Ryb3koKTogdm9pZDtcbiAgY3JlYXRlQ29tbWVudCh2YWx1ZTogc3RyaW5nKTogUkNvbW1lbnQ7XG4gIGNyZWF0ZUVsZW1lbnQobmFtZTogc3RyaW5nLCBuYW1lc3BhY2U/OiBzdHJpbmd8bnVsbCk6IFJFbGVtZW50O1xuICBjcmVhdGVUZXh0KHZhbHVlOiBzdHJpbmcpOiBSVGV4dDtcbiAgLyoqXG4gICAqIFRoaXMgcHJvcGVydHkgaXMgYWxsb3dlZCB0byBiZSBudWxsIC8gdW5kZWZpbmVkLFxuICAgKiBpbiB3aGljaCBjYXNlIHRoZSB2aWV3IGVuZ2luZSB3b24ndCBjYWxsIGl0LlxuICAgKiBUaGlzIGlzIHVzZWQgYXMgYSBwZXJmb3JtYW5jZSBvcHRpbWl6YXRpb24gZm9yIHByb2R1Y3Rpb24gbW9kZS5cbiAgICovXG4gIGRlc3Ryb3lOb2RlPzogKChub2RlOiBSTm9kZSkgPT4gdm9pZCl8bnVsbDtcbiAgYXBwZW5kQ2hpbGQocGFyZW50OiBSRWxlbWVudCwgbmV3Q2hpbGQ6IFJOb2RlKTogdm9pZDtcbiAgaW5zZXJ0QmVmb3JlKHBhcmVudDogUk5vZGUsIG5ld0NoaWxkOiBSTm9kZSwgcmVmQ2hpbGQ6IFJOb2RlfG51bGwpOiB2b2lkO1xuICByZW1vdmVDaGlsZChwYXJlbnQ6IFJFbGVtZW50LCBvbGRDaGlsZDogUk5vZGUpOiB2b2lkO1xuICBzZWxlY3RSb290RWxlbWVudChzZWxlY3Rvck9yTm9kZTogc3RyaW5nfGFueSk6IFJFbGVtZW50O1xuXG4gIHBhcmVudE5vZGUobm9kZTogUk5vZGUpOiBSRWxlbWVudHxudWxsO1xuICBuZXh0U2libGluZyhub2RlOiBSTm9kZSk6IFJOb2RlfG51bGw7XG5cbiAgc2V0QXR0cmlidXRlKGVsOiBSRWxlbWVudCwgbmFtZTogc3RyaW5nLCB2YWx1ZTogc3RyaW5nLCBuYW1lc3BhY2U/OiBzdHJpbmd8bnVsbCk6IHZvaWQ7XG4gIHJlbW92ZUF0dHJpYnV0ZShlbDogUkVsZW1lbnQsIG5hbWU6IHN0cmluZywgbmFtZXNwYWNlPzogc3RyaW5nfG51bGwpOiB2b2lkO1xuICBhZGRDbGFzcyhlbDogUkVsZW1lbnQsIG5hbWU6IHN0cmluZyk6IHZvaWQ7XG4gIHJlbW92ZUNsYXNzKGVsOiBSRWxlbWVudCwgbmFtZTogc3RyaW5nKTogdm9pZDtcbiAgc2V0U3R5bGUoXG4gICAgICBlbDogUkVsZW1lbnQsIHN0eWxlOiBzdHJpbmcsIHZhbHVlOiBhbnksXG4gICAgICBmbGFncz86IFJlbmRlcmVyU3R5bGVGbGFnczJ8UmVuZGVyZXJTdHlsZUZsYWdzMyk6IHZvaWQ7XG4gIHJlbW92ZVN0eWxlKGVsOiBSRWxlbWVudCwgc3R5bGU6IHN0cmluZywgZmxhZ3M/OiBSZW5kZXJlclN0eWxlRmxhZ3MyfFJlbmRlcmVyU3R5bGVGbGFnczMpOiB2b2lkO1xuICBzZXRQcm9wZXJ0eShlbDogUkVsZW1lbnQsIG5hbWU6IHN0cmluZywgdmFsdWU6IGFueSk6IHZvaWQ7XG4gIHNldFZhbHVlKG5vZGU6IFJUZXh0LCB2YWx1ZTogc3RyaW5nKTogdm9pZDtcblxuICAvLyBUT0RPKG1pc2tvKTogRGVwcmVjYXRlIGluIGZhdm9yIG9mIGFkZEV2ZW50TGlzdGVuZXIvcmVtb3ZlRXZlbnRMaXN0ZW5lclxuICBsaXN0ZW4odGFyZ2V0OiBSTm9kZSwgZXZlbnROYW1lOiBzdHJpbmcsIGNhbGxiYWNrOiAoZXZlbnQ6IGFueSkgPT4gYm9vbGVhbiB8IHZvaWQpOiAoKSA9PiB2b2lkO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFJlbmRlcmVyRmFjdG9yeTMge1xuICBjcmVhdGVSZW5kZXJlcihob3N0RWxlbWVudDogUkVsZW1lbnR8bnVsbCwgcmVuZGVyZXJUeXBlOiBSZW5kZXJlclR5cGUyfG51bGwpOiBSZW5kZXJlcjM7XG4gIGJlZ2luPygpOiB2b2lkO1xuICBlbmQ/KCk6IHZvaWQ7XG59XG5cbmV4cG9ydCBjb25zdCBkb21SZW5kZXJlckZhY3RvcnkzOiBSZW5kZXJlckZhY3RvcnkzID0ge1xuICBjcmVhdGVSZW5kZXJlcjogKGhvc3RFbGVtZW50OiBSRWxlbWVudCB8IG51bGwsIHJlbmRlcmVyVHlwZTogUmVuZGVyZXJUeXBlMiB8IG51bGwpOlxuICAgICAgICAgICAgICAgICAgICAgIFJlbmRlcmVyMyA9PiB7IHJldHVybiBkb2N1bWVudDt9XG59O1xuXG4vKiogU3Vic2V0IG9mIEFQSSBuZWVkZWQgZm9yIGFwcGVuZGluZyBlbGVtZW50cyBhbmQgdGV4dCBub2Rlcy4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUk5vZGUge1xuICBwYXJlbnROb2RlOiBSTm9kZXxudWxsO1xuXG4gIG5leHRTaWJsaW5nOiBSTm9kZXxudWxsO1xuXG4gIHJlbW92ZUNoaWxkKG9sZENoaWxkOiBSTm9kZSk6IHZvaWQ7XG5cbiAgLyoqXG4gICAqIEluc2VydCBhIGNoaWxkIG5vZGUuXG4gICAqXG4gICAqIFVzZWQgZXhjbHVzaXZlbHkgZm9yIGFkZGluZyBWaWV3IHJvb3Qgbm9kZXMgaW50byBWaWV3QW5jaG9yIGxvY2F0aW9uLlxuICAgKi9cbiAgaW5zZXJ0QmVmb3JlKG5ld0NoaWxkOiBSTm9kZSwgcmVmQ2hpbGQ6IFJOb2RlfG51bGwsIGlzVmlld1Jvb3Q6IGJvb2xlYW4pOiB2b2lkO1xuXG4gIC8qKlxuICAgKiBBcHBlbmQgYSBjaGlsZCBub2RlLlxuICAgKlxuICAgKiBVc2VkIGV4Y2x1c2l2ZWx5IGZvciBidWlsZGluZyB1cCBET00gd2hpY2ggYXJlIHN0YXRpYyAoaWUgbm90IFZpZXcgcm9vdHMpXG4gICAqL1xuICBhcHBlbmRDaGlsZChuZXdDaGlsZDogUk5vZGUpOiBSTm9kZTtcbn1cblxuLyoqXG4gKiBTdWJzZXQgb2YgQVBJIG5lZWRlZCBmb3Igd3JpdGluZyBhdHRyaWJ1dGVzLCBwcm9wZXJ0aWVzLCBhbmQgc2V0dGluZyB1cFxuICogbGlzdGVuZXJzIG9uIEVsZW1lbnQuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUkVsZW1lbnQgZXh0ZW5kcyBSTm9kZSB7XG4gIHN0eWxlOiBSQ3NzU3R5bGVEZWNsYXJhdGlvbjtcbiAgY2xhc3NMaXN0OiBSRG9tVG9rZW5MaXN0O1xuICBjbGFzc05hbWU6IHN0cmluZztcbiAgc2V0QXR0cmlidXRlKG5hbWU6IHN0cmluZywgdmFsdWU6IHN0cmluZyk6IHZvaWQ7XG4gIHJlbW92ZUF0dHJpYnV0ZShuYW1lOiBzdHJpbmcpOiB2b2lkO1xuICBzZXRBdHRyaWJ1dGVOUyhuYW1lc3BhY2VVUkk6IHN0cmluZywgcXVhbGlmaWVkTmFtZTogc3RyaW5nLCB2YWx1ZTogc3RyaW5nKTogdm9pZDtcbiAgYWRkRXZlbnRMaXN0ZW5lcih0eXBlOiBzdHJpbmcsIGxpc3RlbmVyOiBFdmVudExpc3RlbmVyLCB1c2VDYXB0dXJlPzogYm9vbGVhbik6IHZvaWQ7XG4gIHJlbW92ZUV2ZW50TGlzdGVuZXIodHlwZTogc3RyaW5nLCBsaXN0ZW5lcj86IEV2ZW50TGlzdGVuZXIsIG9wdGlvbnM/OiBib29sZWFuKTogdm9pZDtcblxuICBzZXRQcm9wZXJ0eT8obmFtZTogc3RyaW5nLCB2YWx1ZTogYW55KTogdm9pZDtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBSQ3NzU3R5bGVEZWNsYXJhdGlvbiB7XG4gIHJlbW92ZVByb3BlcnR5KHByb3BlcnR5TmFtZTogc3RyaW5nKTogc3RyaW5nO1xuICBzZXRQcm9wZXJ0eShwcm9wZXJ0eU5hbWU6IHN0cmluZywgdmFsdWU6IHN0cmluZ3xudWxsLCBwcmlvcml0eT86IHN0cmluZyk6IHZvaWQ7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUkRvbVRva2VuTGlzdCB7XG4gIGFkZCh0b2tlbjogc3RyaW5nKTogdm9pZDtcbiAgcmVtb3ZlKHRva2VuOiBzdHJpbmcpOiB2b2lkO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFJUZXh0IGV4dGVuZHMgUk5vZGUgeyB0ZXh0Q29udGVudDogc3RyaW5nfG51bGw7IH1cblxuZXhwb3J0IGludGVyZmFjZSBSQ29tbWVudCBleHRlbmRzIFJOb2RlIHt9XG5cbi8vIE5vdGU6IFRoaXMgaGFjayBpcyBuZWNlc3Nhcnkgc28gd2UgZG9uJ3QgZXJyb25lb3VzbHkgZ2V0IGEgY2lyY3VsYXIgZGVwZW5kZW5jeVxuLy8gZmFpbHVyZSBiYXNlZCBvbiB0eXBlcy5cbmV4cG9ydCBjb25zdCB1bnVzZWRWYWx1ZUV4cG9ydFRvUGxhY2F0ZUFqZCA9IDE7XG4iXX0=
368
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVuZGVyZXIuanMiLCJzb3VyY2VSb290IjoiLi4vLi4vIiwic291cmNlcyI6WyJwYWNrYWdlcy9jb3JlL3NyYy9yZW5kZXIzL2ludGVyZmFjZXMvcmVuZGVyZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0lBc0JFLFlBQWtCO0lBQ2xCLFdBQWlCOzs7Ozs7Ozs7Ozs7OztBQVluQiw2Q0FPQzs7Ozs7O0lBTkMsc0VBQXNDOzs7OztJQUN0Qyx5RUFBeUM7Ozs7OztJQUN6QyxzRkFBOEQ7Ozs7O0lBQzlELHVFQUFvQzs7Ozs7SUFFcEMsMkVBQWdEOzs7Ozs7O0FBSWxELE1BQU0sVUFBVSxvQkFBb0IsQ0FBQyxRQUF1RDtJQUUxRixPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsbUJBQUEsUUFBUSxFQUFPLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQztBQUN0QyxDQUFDOzs7Ozs7Ozs7QUFTRCx5Q0FnQ0M7Ozs7Ozs7O0lBdEJDLDBDQUEyQzs7OztJQVQzQyx3REFBZ0I7Ozs7O0lBQ2hCLG1FQUF1Qzs7Ozs7O0lBQ3ZDLDZFQUErRDs7Ozs7SUFDL0QsZ0VBQWlDOzs7Ozs7SUFPakMsNEVBQXFEOzs7Ozs7O0lBQ3JELHVGQUF5RTs7Ozs7O0lBQ3pFLDRFQUFxRDs7Ozs7SUFDckQsZ0ZBQXdEOzs7OztJQUV4RCwrREFBdUM7Ozs7O0lBQ3ZDLGdFQUFxQzs7Ozs7Ozs7SUFFckMsdUZBQXVGOzs7Ozs7O0lBQ3ZGLG1GQUEyRTs7Ozs7O0lBQzNFLGlFQUEyQzs7Ozs7O0lBQzNDLG9FQUE4Qzs7Ozs7Ozs7SUFDOUMsZ0ZBRTJEOzs7Ozs7O0lBQzNELDRFQUFnRzs7Ozs7OztJQUNoRywyRUFBMEQ7Ozs7OztJQUMxRCxvRUFBMkM7Ozs7Ozs7SUFHM0Msa0ZBQStGOzs7OztBQUdqRyxzQ0FJQzs7Ozs7OztJQUhDLHFGQUF3Rjs7OztJQUN4RixtREFBZTs7OztJQUNmLGlEQUFhOzs7QUFHZixNQUFNLE9BQU8sbUJBQW1CLEdBQXFCO0lBQ25ELGNBQWMsRUFBRSxDQUFDLFdBQTRCLEVBQUUsWUFBa0MsRUFDbkQsRUFBRSxHQUFHLE9BQU8sUUFBUSxDQUFDLENBQUEsQ0FBQztDQUNyRDs7Ozs7QUFHRCwyQkFvQkM7OztJQW5CQywyQkFBdUI7O0lBRXZCLDRCQUF3Qjs7Ozs7SUFFeEIsc0RBQW1DOzs7Ozs7Ozs7O0lBT25DLDZFQUErRTs7Ozs7Ozs7SUFPL0Usc0RBQW9DOzs7Ozs7O0FBT3RDLDhCQVdDOzs7SUFWQyx5QkFBNEI7O0lBQzVCLDZCQUF5Qjs7SUFDekIsNkJBQWtCOzs7Ozs7SUFDbEIsNkRBQWdEOzs7OztJQUNoRCx5REFBb0M7Ozs7Ozs7SUFDcEMsc0ZBQWlGOzs7Ozs7O0lBQ2pGLGdGQUFvRjs7Ozs7OztJQUNwRixnRkFBcUY7Ozs7OztJQUVyRiw0REFBNkM7Ozs7O0FBRy9DLDBDQUdDOzs7Ozs7SUFGQyw0RUFBNkM7Ozs7Ozs7SUFDN0MsMEZBQStFOzs7OztBQUdqRixtQ0FHQzs7Ozs7O0lBRkMsbURBQXlCOzs7OztJQUN6QixzREFBNEI7Ozs7O0FBRzlCLDJCQUFrRTs7O0lBQTNCLDRCQUF5Qjs7Ozs7QUFFaEUsOEJBQTBDOzs7O0FBSTFDLE1BQU0sT0FBTyw2QkFBNkIsR0FBRyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmVcbiAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2VcbiAqL1xuXG4vKipcbiAqIFRoZSBnb2FsIGhlcmUgaXMgdG8gbWFrZSBzdXJlIHRoYXQgdGhlIGJyb3dzZXIgRE9NIEFQSSBpcyB0aGUgUmVuZGVyZXIuXG4gKiBXZSBkbyB0aGlzIGJ5IGRlZmluaW5nIGEgc3Vic2V0IG9mIERPTSBBUEkgdG8gYmUgdGhlIHJlbmRlcmVyIGFuZCB0aGFuXG4gKiB1c2UgdGhhdCB0aW1lIGZvciByZW5kZXJpbmcuXG4gKlxuICogQXQgcnVudGltZSB3ZSBjYW4gdGhhbiB1c2UgdGhlIERPTSBhcGkgZGlyZWN0bHksIGluIHNlcnZlciBvciB3ZWItd29ya2VyXG4gKiBpdCB3aWxsIGJlIGVhc3kgdG8gaW1wbGVtZW50IHN1Y2ggQVBJLlxuICovXG5cbmltcG9ydCB7UmVuZGVyZXJTdHlsZUZsYWdzMiwgUmVuZGVyZXJUeXBlMn0gZnJvbSAnLi4vLi4vcmVuZGVyL2FwaSc7XG5cblxuLy8gVE9ETzogY2xlYW51cCBvbmNlIHRoZSBjb2RlIGlzIG1lcmdlZCBpbiBhbmd1bGFyL2FuZ3VsYXJcbmV4cG9ydCBlbnVtIFJlbmRlcmVyU3R5bGVGbGFnczMge1xuICBJbXBvcnRhbnQgPSAxIDw8IDAsXG4gIERhc2hDYXNlID0gMSA8PCAxXG59XG5cbmV4cG9ydCB0eXBlIFJlbmRlcmVyMyA9IE9iamVjdE9yaWVudGVkUmVuZGVyZXIzIHwgUHJvY2VkdXJhbFJlbmRlcmVyMztcblxuLyoqXG4gKiBPYmplY3QgT3JpZW50ZWQgc3R5bGUgb2YgQVBJIG5lZWRlZCB0byBjcmVhdGUgZWxlbWVudHMgYW5kIHRleHQgbm9kZXMuXG4gKlxuICogVGhpcyBpcyB0aGUgbmF0aXZlIGJyb3dzZXIgQVBJIHN0eWxlLCBlLmcuIG9wZXJhdGlvbnMgYXJlIG1ldGhvZHMgb24gaW5kaXZpZHVhbCBvYmplY3RzXG4gKiBsaWtlIEhUTUxFbGVtZW50LiBXaXRoIHRoaXMgc3R5bGUsIG5vIGFkZGl0aW9uYWwgY29kZSBpcyBuZWVkZWQgYXMgYSBmYWNhZGVcbiAqIChyZWR1Y2luZyBwYXlsb2FkIHNpemUpLlxuICogKi9cbmV4cG9ydCBpbnRlcmZhY2UgT2JqZWN0T3JpZW50ZWRSZW5kZXJlcjMge1xuICBjcmVhdGVDb21tZW50KGRhdGE6IHN0cmluZyk6IFJDb21tZW50O1xuICBjcmVhdGVFbGVtZW50KHRhZ05hbWU6IHN0cmluZyk6IFJFbGVtZW50O1xuICBjcmVhdGVFbGVtZW50TlMobmFtZXNwYWNlOiBzdHJpbmcsIHRhZ05hbWU6IHN0cmluZyk6IFJFbGVtZW50O1xuICBjcmVhdGVUZXh0Tm9kZShkYXRhOiBzdHJpbmcpOiBSVGV4dDtcblxuICBxdWVyeVNlbGVjdG9yKHNlbGVjdG9yczogc3RyaW5nKTogUkVsZW1lbnR8bnVsbDtcbn1cblxuLyoqIFJldHVybnMgd2hldGhlciB0aGUgYHJlbmRlcmVyYCBpcyBhIGBQcm9jZWR1cmFsUmVuZGVyZXIzYCAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzUHJvY2VkdXJhbFJlbmRlcmVyKHJlbmRlcmVyOiBQcm9jZWR1cmFsUmVuZGVyZXIzIHwgT2JqZWN0T3JpZW50ZWRSZW5kZXJlcjMpOlxuICAgIHJlbmRlcmVyIGlzIFByb2NlZHVyYWxSZW5kZXJlcjMge1xuICByZXR1cm4gISEoKHJlbmRlcmVyIGFzIGFueSkubGlzdGVuKTtcbn1cblxuLyoqXG4gKiBQcm9jZWR1cmFsIHN0eWxlIG9mIEFQSSBuZWVkZWQgdG8gY3JlYXRlIGVsZW1lbnRzIGFuZCB0ZXh0IG5vZGVzLlxuICpcbiAqIEluIG5vbi1uYXRpdmUgYnJvd3NlciBlbnZpcm9ubWVudHMgKGUuZy4gcGxhdGZvcm1zIHN1Y2ggYXMgd2ViLXdvcmtlcnMpLCB0aGlzIGlzIHRoZVxuICogZmFjYWRlIHRoYXQgZW5hYmxlcyBlbGVtZW50IG1hbmlwdWxhdGlvbi4gVGhpcyBhbHNvIGZhY2lsaXRhdGVzIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5XG4gKiB3aXRoIFJlbmRlcmVyMi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBQcm9jZWR1cmFsUmVuZGVyZXIzIHtcbiAgZGVzdHJveSgpOiB2b2lkO1xuICBjcmVhdGVDb21tZW50KHZhbHVlOiBzdHJpbmcpOiBSQ29tbWVudDtcbiAgY3JlYXRlRWxlbWVudChuYW1lOiBzdHJpbmcsIG5hbWVzcGFjZT86IHN0cmluZ3xudWxsKTogUkVsZW1lbnQ7XG4gIGNyZWF0ZVRleHQodmFsdWU6IHN0cmluZyk6IFJUZXh0O1xuICAvKipcbiAgICogVGhpcyBwcm9wZXJ0eSBpcyBhbGxvd2VkIHRvIGJlIG51bGwgLyB1bmRlZmluZWQsXG4gICAqIGluIHdoaWNoIGNhc2UgdGhlIHZpZXcgZW5naW5lIHdvbid0IGNhbGwgaXQuXG4gICAqIFRoaXMgaXMgdXNlZCBhcyBhIHBlcmZvcm1hbmNlIG9wdGltaXphdGlvbiBmb3IgcHJvZHVjdGlvbiBtb2RlLlxuICAgKi9cbiAgZGVzdHJveU5vZGU/OiAoKG5vZGU6IFJOb2RlKSA9PiB2b2lkKXxudWxsO1xuICBhcHBlbmRDaGlsZChwYXJlbnQ6IFJFbGVtZW50LCBuZXdDaGlsZDogUk5vZGUpOiB2b2lkO1xuICBpbnNlcnRCZWZvcmUocGFyZW50OiBSTm9kZSwgbmV3Q2hpbGQ6IFJOb2RlLCByZWZDaGlsZDogUk5vZGV8bnVsbCk6IHZvaWQ7XG4gIHJlbW92ZUNoaWxkKHBhcmVudDogUkVsZW1lbnQsIG9sZENoaWxkOiBSTm9kZSk6IHZvaWQ7XG4gIHNlbGVjdFJvb3RFbGVtZW50KHNlbGVjdG9yT3JOb2RlOiBzdHJpbmd8YW55KTogUkVsZW1lbnQ7XG5cbiAgcGFyZW50Tm9kZShub2RlOiBSTm9kZSk6IFJFbGVtZW50fG51bGw7XG4gIG5leHRTaWJsaW5nKG5vZGU6IFJOb2RlKTogUk5vZGV8bnVsbDtcblxuICBzZXRBdHRyaWJ1dGUoZWw6IFJFbGVtZW50LCBuYW1lOiBzdHJpbmcsIHZhbHVlOiBzdHJpbmcsIG5hbWVzcGFjZT86IHN0cmluZ3xudWxsKTogdm9pZDtcbiAgcmVtb3ZlQXR0cmlidXRlKGVsOiBSRWxlbWVudCwgbmFtZTogc3RyaW5nLCBuYW1lc3BhY2U/OiBzdHJpbmd8bnVsbCk6IHZvaWQ7XG4gIGFkZENsYXNzKGVsOiBSRWxlbWVudCwgbmFtZTogc3RyaW5nKTogdm9pZDtcbiAgcmVtb3ZlQ2xhc3MoZWw6IFJFbGVtZW50LCBuYW1lOiBzdHJpbmcpOiB2b2lkO1xuICBzZXRTdHlsZShcbiAgICAgIGVsOiBSRWxlbWVudCwgc3R5bGU6IHN0cmluZywgdmFsdWU6IGFueSxcbiAgICAgIGZsYWdzPzogUmVuZGVyZXJTdHlsZUZsYWdzMnxSZW5kZXJlclN0eWxlRmxhZ3MzKTogdm9pZDtcbiAgcmVtb3ZlU3R5bGUoZWw6IFJFbGVtZW50LCBzdHlsZTogc3RyaW5nLCBmbGFncz86IFJlbmRlcmVyU3R5bGVGbGFnczJ8UmVuZGVyZXJTdHlsZUZsYWdzMyk6IHZvaWQ7XG4gIHNldFByb3BlcnR5KGVsOiBSRWxlbWVudCwgbmFtZTogc3RyaW5nLCB2YWx1ZTogYW55KTogdm9pZDtcbiAgc2V0VmFsdWUobm9kZTogUlRleHQsIHZhbHVlOiBzdHJpbmcpOiB2b2lkO1xuXG4gIC8vIFRPRE8obWlza28pOiBEZXByZWNhdGUgaW4gZmF2b3Igb2YgYWRkRXZlbnRMaXN0ZW5lci9yZW1vdmVFdmVudExpc3RlbmVyXG4gIGxpc3Rlbih0YXJnZXQ6IFJOb2RlLCBldmVudE5hbWU6IHN0cmluZywgY2FsbGJhY2s6IChldmVudDogYW55KSA9PiBib29sZWFuIHwgdm9pZCk6ICgpID0+IHZvaWQ7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUmVuZGVyZXJGYWN0b3J5MyB7XG4gIGNyZWF0ZVJlbmRlcmVyKGhvc3RFbGVtZW50OiBSRWxlbWVudHxudWxsLCByZW5kZXJlclR5cGU6IFJlbmRlcmVyVHlwZTJ8bnVsbCk6IFJlbmRlcmVyMztcbiAgYmVnaW4/KCk6IHZvaWQ7XG4gIGVuZD8oKTogdm9pZDtcbn1cblxuZXhwb3J0IGNvbnN0IGRvbVJlbmRlcmVyRmFjdG9yeTM6IFJlbmRlcmVyRmFjdG9yeTMgPSB7XG4gIGNyZWF0ZVJlbmRlcmVyOiAoaG9zdEVsZW1lbnQ6IFJFbGVtZW50IHwgbnVsbCwgcmVuZGVyZXJUeXBlOiBSZW5kZXJlclR5cGUyIHwgbnVsbCk6XG4gICAgICAgICAgICAgICAgICAgICAgUmVuZGVyZXIzID0+IHsgcmV0dXJuIGRvY3VtZW50O31cbn07XG5cbi8qKiBTdWJzZXQgb2YgQVBJIG5lZWRlZCBmb3IgYXBwZW5kaW5nIGVsZW1lbnRzIGFuZCB0ZXh0IG5vZGVzLiAqL1xuZXhwb3J0IGludGVyZmFjZSBSTm9kZSB7XG4gIHBhcmVudE5vZGU6IFJOb2RlfG51bGw7XG5cbiAgbmV4dFNpYmxpbmc6IFJOb2RlfG51bGw7XG5cbiAgcmVtb3ZlQ2hpbGQob2xkQ2hpbGQ6IFJOb2RlKTogdm9pZDtcblxuICAvKipcbiAgICogSW5zZXJ0IGEgY2hpbGQgbm9kZS5cbiAgICpcbiAgICogVXNlZCBleGNsdXNpdmVseSBmb3IgYWRkaW5nIFZpZXcgcm9vdCBub2RlcyBpbnRvIFZpZXdBbmNob3IgbG9jYXRpb24uXG4gICAqL1xuICBpbnNlcnRCZWZvcmUobmV3Q2hpbGQ6IFJOb2RlLCByZWZDaGlsZDogUk5vZGV8bnVsbCwgaXNWaWV3Um9vdDogYm9vbGVhbik6IHZvaWQ7XG5cbiAgLyoqXG4gICAqIEFwcGVuZCBhIGNoaWxkIG5vZGUuXG4gICAqXG4gICAqIFVzZWQgZXhjbHVzaXZlbHkgZm9yIGJ1aWxkaW5nIHVwIERPTSB3aGljaCBhcmUgc3RhdGljIChpZSBub3QgVmlldyByb290cylcbiAgICovXG4gIGFwcGVuZENoaWxkKG5ld0NoaWxkOiBSTm9kZSk6IFJOb2RlO1xufVxuXG4vKipcbiAqIFN1YnNldCBvZiBBUEkgbmVlZGVkIGZvciB3cml0aW5nIGF0dHJpYnV0ZXMsIHByb3BlcnRpZXMsIGFuZCBzZXR0aW5nIHVwXG4gKiBsaXN0ZW5lcnMgb24gRWxlbWVudC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBSRWxlbWVudCBleHRlbmRzIFJOb2RlIHtcbiAgc3R5bGU6IFJDc3NTdHlsZURlY2xhcmF0aW9uO1xuICBjbGFzc0xpc3Q6IFJEb21Ub2tlbkxpc3Q7XG4gIGNsYXNzTmFtZTogc3RyaW5nO1xuICBzZXRBdHRyaWJ1dGUobmFtZTogc3RyaW5nLCB2YWx1ZTogc3RyaW5nKTogdm9pZDtcbiAgcmVtb3ZlQXR0cmlidXRlKG5hbWU6IHN0cmluZyk6IHZvaWQ7XG4gIHNldEF0dHJpYnV0ZU5TKG5hbWVzcGFjZVVSSTogc3RyaW5nLCBxdWFsaWZpZWROYW1lOiBzdHJpbmcsIHZhbHVlOiBzdHJpbmcpOiB2b2lkO1xuICBhZGRFdmVudExpc3RlbmVyKHR5cGU6IHN0cmluZywgbGlzdGVuZXI6IEV2ZW50TGlzdGVuZXIsIHVzZUNhcHR1cmU/OiBib29sZWFuKTogdm9pZDtcbiAgcmVtb3ZlRXZlbnRMaXN0ZW5lcih0eXBlOiBzdHJpbmcsIGxpc3RlbmVyPzogRXZlbnRMaXN0ZW5lciwgb3B0aW9ucz86IGJvb2xlYW4pOiB2b2lkO1xuXG4gIHNldFByb3BlcnR5PyhuYW1lOiBzdHJpbmcsIHZhbHVlOiBhbnkpOiB2b2lkO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFJDc3NTdHlsZURlY2xhcmF0aW9uIHtcbiAgcmVtb3ZlUHJvcGVydHkocHJvcGVydHlOYW1lOiBzdHJpbmcpOiBzdHJpbmc7XG4gIHNldFByb3BlcnR5KHByb3BlcnR5TmFtZTogc3RyaW5nLCB2YWx1ZTogc3RyaW5nfG51bGwsIHByaW9yaXR5Pzogc3RyaW5nKTogdm9pZDtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBSRG9tVG9rZW5MaXN0IHtcbiAgYWRkKHRva2VuOiBzdHJpbmcpOiB2b2lkO1xuICByZW1vdmUodG9rZW46IHN0cmluZyk6IHZvaWQ7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUlRleHQgZXh0ZW5kcyBSTm9kZSB7IHRleHRDb250ZW50OiBzdHJpbmd8bnVsbDsgfVxuXG5leHBvcnQgaW50ZXJmYWNlIFJDb21tZW50IGV4dGVuZHMgUk5vZGUge31cblxuLy8gTm90ZTogVGhpcyBoYWNrIGlzIG5lY2Vzc2FyeSBzbyB3ZSBkb24ndCBlcnJvbmVvdXNseSBnZXQgYSBjaXJjdWxhciBkZXBlbmRlbmN5XG4vLyBmYWlsdXJlIGJhc2VkIG9uIHR5cGVzLlxuZXhwb3J0IGNvbnN0IHVudXNlZFZhbHVlRXhwb3J0VG9QbGFjYXRlQWpkID0gMTtcbiJdfQ==
@@ -1,6 +1,6 @@
1
1
  /**
2
2
  * @fileoverview added by tsickle
3
- * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc
3
+ * @suppress {checkTypes,extraRequire,missingReturn,uselessCode} checked by tsc
4
4
  */
5
5
  /**
6
6
  * @license
@@ -9,8 +9,4 @@
9
9
  * Use of this source code is governed by an MIT-style license that can be
10
10
  * found in the LICENSE file at https://angular.io/license
11
11
  */
12
- /** @typedef {?} */
13
- var SanitizerFn;
14
- export { SanitizerFn };
15
-
16
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2FuaXRpemF0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29yZS9zcmMvcmVuZGVyMy9pbnRlcmZhY2VzL3Nhbml0aXphdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmVcbiAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2VcbiAqL1xuXG4vKipcbiAqIEZ1bmN0aW9uIHVzZWQgdG8gc2FuaXRpemUgdGhlIHZhbHVlIGJlZm9yZSB3cml0aW5nIGl0IGludG8gdGhlIHJlbmRlcmVyLlxuICovXG5leHBvcnQgdHlwZSBTYW5pdGl6ZXJGbiA9ICh2YWx1ZTogYW55KSA9PiBzdHJpbmc7XG4iXX0=
12
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2FuaXRpemF0aW9uLmpzIiwic291cmNlUm9vdCI6Ii4uLy4uLyIsInNvdXJjZXMiOlsicGFja2FnZXMvY29yZS9zcmMvcmVuZGVyMy9pbnRlcmZhY2VzL3Nhbml0aXphdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmVcbiAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2VcbiAqL1xuXG4vKipcbiAqIEZ1bmN0aW9uIHVzZWQgdG8gc2FuaXRpemUgdGhlIHZhbHVlIGJlZm9yZSB3cml0aW5nIGl0IGludG8gdGhlIHJlbmRlcmVyLlxuICovXG5leHBvcnQgdHlwZSBTYW5pdGl6ZXJGbiA9ICh2YWx1ZTogYW55KSA9PiBzdHJpbmc7XG4iXX0=
@@ -1,6 +1,6 @@
1
1
  /**
2
2
  * @fileoverview added by tsickle
3
- * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc
3
+ * @suppress {checkTypes,extraRequire,missingReturn,uselessCode} checked by tsc
4
4
  */
5
5
  /**
6
6
  * The styling context acts as a styling manifest (shaped as an array) for determining which
@@ -109,6 +109,24 @@
109
109
  * @record
110
110
  */
111
111
  export function StylingContext() { }
112
+ if (false) {
113
+ /* Skipping unnamed member:
114
+ [StylingIndex.PlayerContext]: PlayerContext|null;*/
115
+ /* Skipping unnamed member:
116
+ [StylingIndex.StyleSanitizerPosition]: StyleSanitizeFn|null;*/
117
+ /* Skipping unnamed member:
118
+ [StylingIndex.InitialStylesPosition]: InitialStyles;*/
119
+ /* Skipping unnamed member:
120
+ [StylingIndex.MasterFlagPosition]: number;*/
121
+ /* Skipping unnamed member:
122
+ [StylingIndex.ClassOffsetPosition]: number;*/
123
+ /* Skipping unnamed member:
124
+ [StylingIndex.ElementPosition]: RElement|null;*/
125
+ /* Skipping unnamed member:
126
+ [StylingIndex.PreviousOrCachedMultiClassValue]: {[key: string]: any}|string|null;*/
127
+ /* Skipping unnamed member:
128
+ [StylingIndex.PreviousMultiStyleValue]: {[key: string]: any}|null;*/
129
+ }
112
130
  /**
113
131
  * The initial styles is populated whether or not there are any initial styles passed into
114
132
  * the context during allocation. The 0th value must be null so that index values of `0` within
@@ -119,8 +137,12 @@ export function StylingContext() { }
119
137
  * @record
120
138
  */
121
139
  export function InitialStyles() { }
140
+ if (false) {
141
+ /* Skipping unnamed member:
142
+ [0]: null;*/
143
+ }
122
144
  /** @enum {number} */
123
- var StylingFlags = {
145
+ const StylingFlags = {
124
146
  // Implies no configurations
125
147
  None: 0,
126
148
  // Whether or not the entry or context itself is dirty
@@ -141,7 +163,7 @@ var StylingFlags = {
141
163
  };
142
164
  export { StylingFlags };
143
165
  /** @enum {number} */
144
- var StylingIndex = {
166
+ const StylingIndex = {
145
167
  // Position of where the initial styles are stored in the styling context
146
168
  PlayerContext: 0,
147
169
  // Position of where the style sanitizer is stored within the styling context
@@ -171,10 +193,8 @@ var StylingIndex = {
171
193
  Size: 4,
172
194
  // Each flag has a binary digit length of this value
173
195
  BitCountSize: 14,
174
- // (32 - 4) / 2 = ~14
175
196
  // The binary digit value as a mask
176
197
  BitMask: 16383,
177
198
  };
178
199
  export { StylingIndex };
179
-
180
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3R5bGluZy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvcmUvc3JjL3JlbmRlcjMvaW50ZXJmYWNlcy9zdHlsaW5nLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SUF1TEUsT0FBYzs7SUFFZCxRQUFlOztJQUVmLFFBQWU7O0lBRWYsV0FBa0I7O0lBRWxCLHNCQUE2Qjs7O0lBRzdCLDRCQUFrQzs7SUFFbEMsZUFBZ0I7O0lBRWhCLFdBQWlCOzs7Ozs7SUFNakIsZ0JBQWlCOztJQUVqQix5QkFBMEI7O0lBRTFCLHdCQUF5Qjs7SUFFekIscUJBQXNCOztJQUV0QixzQkFBdUI7OztJQUd2QixrQkFBbUI7OztJQUduQixrQ0FBbUM7O0lBRW5DLDBCQUEyQjs7SUFFM0IsNEJBQTZCOztJQUU3QixjQUFlO0lBQ2YsaUJBQWtCO0lBQ2xCLGNBQWU7SUFDZiwyQkFBNEI7O0lBRTVCLE9BQVE7O0lBRVIsZ0JBQWlCOzs7SUFFakIsY0FBMEIiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZVxuICovXG5pbXBvcnQge1N0eWxlU2FuaXRpemVGbn0gZnJvbSAnLi4vLi4vc2FuaXRpemF0aW9uL3N0eWxlX3Nhbml0aXplcic7XG5pbXBvcnQge1JFbGVtZW50fSBmcm9tICcuLi9pbnRlcmZhY2VzL3JlbmRlcmVyJztcbmltcG9ydCB7UGxheWVyQ29udGV4dH0gZnJvbSAnLi9wbGF5ZXInO1xuXG5cbi8qKlxuICogVGhlIHN0eWxpbmcgY29udGV4dCBhY3RzIGFzIGEgc3R5bGluZyBtYW5pZmVzdCAoc2hhcGVkIGFzIGFuIGFycmF5KSBmb3IgZGV0ZXJtaW5pbmcgd2hpY2hcbiAqIHN0eWxpbmcgcHJvcGVydGllcyBoYXZlIGJlZW4gYXNzaWduZWQgdmlhIHRoZSBwcm92aWRlZCBgdXBkYXRlU3R5bGluZ01hcGAsIGB1cGRhdGVTdHlsZVByb3BgXG4gKiBhbmQgYHVwZGF0ZUNsYXNzUHJvcGAgZnVuY3Rpb25zLiBUaGVyZSBhcmUgYWxzbyB0d28gaW5pdGlhbGl6YXRpb24gZnVuY3Rpb25zXG4gKiBgYWxsb2NTdHlsaW5nQ29udGV4dGAgYW5kIGBjcmVhdGVTdHlsaW5nQ29udGV4dFRlbXBsYXRlYCB3aGljaCBhcmUgdXNlZCB0byBpbml0aWFsaXplXG4gKiBhbmQvb3IgY2xvbmUgdGhlIGNvbnRleHQuXG4gKlxuICogVGhlIGNvbnRleHQgaXMgYW4gYXJyYXkgd2hlcmUgdGhlIGZpcnN0IHR3byBjZWxscyBhcmUgdXNlZCBmb3Igc3RhdGljIGRhdGEgKGluaXRpYWwgc3R5bGluZylcbiAqIGFuZCBkaXJ0eSBmbGFncyAvIGluZGV4IG9mZnNldHMpLiBUaGUgcmVtYWluaW5nIHNldCBvZiBjZWxscyBpcyB1c2VkIGZvciBtdWx0aSAobWFwKSBhbmQgc2luZ2xlXG4gKiAocHJvcCkgc3R5bGUgdmFsdWVzLlxuICpcbiAqIGVhY2ggdmFsdWUgZnJvbSBoZXJlIG9ud2FyZHMgaXMgbWFwcGVkIGFzIHNvOlxuICogW2ldID0gbXV0YXRpb24vdHlwZSBmbGFnIGZvciB0aGUgc3R5bGUvY2xhc3MgdmFsdWVcbiAqIFtpICsgMV0gPSBwcm9wIHN0cmluZyAob3IgbnVsbCBpbmNhc2UgaXQgaGFzIGJlZW4gcmVtb3ZlZClcbiAqIFtpICsgMl0gPSB2YWx1ZSBzdHJpbmcgKG9yIG51bGwgaW5jYXNlIGl0IGhhcyBiZWVuIHJlbW92ZWQpXG4gKlxuICogVGhlcmUgYXJlIHRocmVlIHR5cGVzIG9mIHN0eWxpbmcgdHlwZXMgc3RvcmVkIGluIHRoaXMgY29udGV4dDpcbiAqICAgaW5pdGlhbDogYW55IHN0eWxlcyB0aGF0IGFyZSBwYXNzZWQgaW4gb25jZSB0aGUgY29udGV4dCBpcyBjcmVhdGVkXG4gKiAgICAgICAgICAgICh0aGVzZSBhcmUgc3RvcmVkIGluIHRoZSBmaXJzdCBjZWxsIG9mIHRoZSBhcnJheSBhbmQgdGhlIGZpcnN0XG4gKiAgICAgICAgICAgICB2YWx1ZSBvZiB0aGlzIGFycmF5IGlzIGFsd2F5cyBgbnVsbGAgZXZlbiBpZiBubyBpbml0aWFsIHN0eWxpbmcgZXhpc3RzLlxuICogICAgICAgICAgICAgdGhlIGBudWxsYCB2YWx1ZSBpcyB0aGVyZSBzbyB0aGF0IGFueSBuZXcgc3R5bGVzIGhhdmUgYSBwYXJlbnQgdG8gcG9pbnRcbiAqICAgICAgICAgICAgIHRvLiBUaGlzIHdheSB3ZSBjYW4gYWx3YXlzIGFzc3VtZSB0aGF0IHRoZXJlIGlzIGEgcGFyZW50LilcbiAqXG4gKiAgIHNpbmdsZTogYW55IHN0eWxlcyB0aGF0IGFyZSB1cGRhdGVkIHVzaW5nIGB1cGRhdGVTdHlsZVByb3BgIG9yIGB1cGRhdGVDbGFzc1Byb3BgIChmaXhlZCBzZXQpXG4gKlxuICogICBtdWx0aTogYW55IHN0eWxlcyB0aGF0IGFyZSB1cGRhdGVkIHVzaW5nIGB1cGRhdGVTdHlsaW5nTWFwYCAoZHluYW1pYyBzZXQpXG4gKlxuICogTm90ZSB0aGF0IGNvbnRleHQgaXMgb25seSB1c2VkIHRvIGNvbGxlY3Qgc3R5bGUgaW5mb3JtYXRpb24uIE9ubHkgd2hlbiBgcmVuZGVyU3R5bGluZ2BcbiAqIGlzIGNhbGxlZCBpcyB3aGVuIHRoZSBzdHlsaW5nIHBheWxvYWQgd2lsbCBiZSByZW5kZXJlZCAob3IgYnVpbHQgYXMgYSBrZXkvdmFsdWUgbWFwKS5cbiAqXG4gKiBXaGVuIHRoZSBjb250ZXh0IGlzIGNyZWF0ZWQsIGRlcGVuZGluZyBvbiB3aGF0IGluaXRpYWwgc3R5bGluZyB2YWx1ZXMgYXJlIHBhc3NlZCBpbiwgdGhlXG4gKiBjb250ZXh0IGl0c2VsZiB3aWxsIGJlIHByZS1maWxsZWQgd2l0aCBzbG90cyBiYXNlZCBvbiB0aGUgaW5pdGlhbCBzdHlsZSBwcm9wZXJ0aWVzLiBTYXlcbiAqIGZvciBleGFtcGxlIHdlIGhhdmUgYSBzZXJpZXMgb2YgaW5pdGlhbCBzdHlsZXMgdGhhdCBsb29rIGxpa2Ugc286XG4gKlxuICogICBzdHlsZT1cIndpZHRoOjEwMHB4OyBoZWlnaHQ6MjAwcHg7XCJcbiAqICAgY2xhc3M9XCJmb29cIlxuICpcbiAqIFRoZW4gdGhlIGluaXRpYWwgc3RhdGUgb2YgdGhlIGNvbnRleHQgKG9uY2UgaW5pdGlhbGl6ZWQpIHdpbGwgbG9vayBsaWtlIHNvOlxuICpcbiAqIGBgYFxuICogY29udGV4dCA9IFtcbiAqICAgZWxlbWVudCxcbiAqICAgcGxheWVyQ29udGV4dCB8IG51bGwsXG4gKiAgIHN0eWxlU2FuaXRpemVyIHwgbnVsbCxcbiAqICAgW251bGwsICcxMDBweCcsICcyMDBweCcsIHRydWVdLCAgLy8gcHJvcGVydHkgbmFtZXMgYXJlIG5vdCBuZWVkZWQgc2luY2UgdGhleSBoYXZlIGFscmVhZHkgYmVlblxuICogd3JpdHRlbiB0byBET00uXG4gKlxuICogICBjb25maWdNYXN0ZXJWYWwsXG4gKiAgIDEsIC8vIHRoaXMgaW5zdHJ1Y3RzIGhvdyBtYW55IGBzdHlsZWAgdmFsdWVzIHRoZXJlIGFyZSBzbyB0aGF0IGNsYXNzIGluZGV4IHZhbHVlcyBjYW4gYmVcbiAqIG9mZnNldHRlZFxuICogICB7IGNsYXNzT25lOiB0cnVlLCBjbGFzc1R3bzogZmFsc2UgfSB8ICdjbGFzc09uZSBjbGFzc1R3bycgfCBudWxsIC8vIGxhc3QgY2xhc3MgdmFsdWUgcHJvdmlkZWRcbiAqIGludG8gdXBkYXRlU3R5bGluZ01hcFxuICogICB7IHN0eWxlT25lOiAnMTAwcHgnLCBzdHlsZVR3bzogMCB9IHwgbnVsbCAvLyBsYXN0IHN0eWxlIHZhbHVlIHByb3ZpZGVkIGludG8gdXBkYXRlU3R5bGluZ01hcFxuICpcbiAqICAgLy8gOFxuICogICAnd2lkdGgnLFxuICogICBwb2ludGVycygxLCAxNSk7ICAvLyBQb2ludCB0byBzdGF0aWMgYHdpZHRoYDogYDEwMHB4YCBhbmQgbXVsdGkgYHdpZHRoYC5cbiAqICAgbnVsbCxcbiAqXG4gKiAgIC8vIDExXG4gKiAgICdoZWlnaHQnLFxuICogICBwb2ludGVycygyLCAxOCk7IC8vIFBvaW50IHRvIHN0YXRpYyBgaGVpZ2h0YDogYDIwMHB4YCBhbmQgbXVsdGkgYGhlaWdodGAuXG4gKiAgIG51bGwsXG4gKlxuICogICAvLyAxNFxuICogICAnZm9vJyxcbiAqICAgcG9pbnRlcnMoMSwgMjEpOyAgLy8gUG9pbnQgdG8gc3RhdGljIGBmb29gOiBgdHJ1ZWAgYW5kIG11bHRpIGBmb29gLlxuICogICBudWxsLFxuICpcbiAqICAgLy8gMTdcbiAqICAgJ3dpZHRoJyxcbiAqICAgcG9pbnRlcnMoMSwgNik7ICAvLyBQb2ludCB0byBzdGF0aWMgYHdpZHRoYDogYDEwMHB4YCBhbmQgc2luZ2xlIGB3aWR0aGAuXG4gKiAgIG51bGwsXG4gKlxuICogICAvLyAyMVxuICogICAnaGVpZ2h0JyxcbiAqICAgcG9pbnRlcnMoMiwgOSk7ICAvLyBQb2ludCB0byBzdGF0aWMgYGhlaWdodGA6IGAyMDBweGAgYW5kIHNpbmdsZSBgaGVpZ2h0YC5cbiAqICAgbnVsbCxcbiAqXG4gKiAgIC8vIDI0XG4gKiAgICdmb28nLFxuICogICBwb2ludGVycygzLCAxMik7ICAvLyBQb2ludCB0byBzdGF0aWMgYGZvb2A6IGB0cnVlYCBhbmQgc2luZ2xlIGBmb29gLlxuICogICBudWxsLFxuICogXVxuICpcbiAqIGZ1bmN0aW9uIHBvaW50ZXJzKHN0YXRpY0luZGV4OiBudW1iZXIsIGR5bmFtaWNJbmRleDogbnVtYmVyKSB7XG4gKiAgIC8vIGNvbWJpbmUgdGhlIHR3byBpbmRpY2VzIGludG8gYSBzaW5nbGUgd29yZC5cbiAqICAgcmV0dXJuIChzdGF0aWNJbmRleCA8PCBTdHlsaW5nRmxhZ3MuQml0Q291bnRTaXplKSB8XG4gKiAgICAgKGR5bmFtaWNJbmRleCA8PCAoU3R5bGluZ0luZGV4LkJpdENvdW50U2l6ZSArIFN0eWxpbmdGbGFncy5CaXRDb3VudFNpemUpKTtcbiAqIH1cbiAqIGBgYFxuICpcbiAqIFRoZSB2YWx1ZXMgYXJlIGR1cGxpY2F0ZWQgc28gdGhhdCBzcGFjZSBpcyBzZXQgYXNpZGUgZm9yIGJvdGggbXVsdGkgKFtzdHlsZV0gYW5kIFtjbGFzc10pXG4gKiBhbmQgc2luZ2xlIChbc3R5bGUucHJvcF0gb3IgW2NsYXNzLm5hbWVkXSkgdmFsdWVzLiBUaGUgcmVzcGVjdGl2ZSBjb25maWcgdmFsdWVzXG4gKiAoY29uZmlnVmFsQSwgY29uZmlnVmFsQiwgZXRjLi4uKSBhcmUgYSBjb21iaW5hdGlvbiBvZiB0aGUgU3R5bGluZ0ZsYWdzIHdpdGggdHdvIGluZGV4XG4gKiB2YWx1ZXM6IHRoZSBgaW5pdGlhbEluZGV4YCAod2hpY2ggcG9pbnRzIHRvIHRoZSBpbmRleCBsb2NhdGlvbiBvZiB0aGUgc3R5bGUgdmFsdWUgaW5cbiAqIHRoZSBpbml0aWFsIHN0eWxlcyBhcnJheSBpbiBzbG90IDApIGFuZCB0aGUgYGR5bmFtaWNJbmRleGAgKHdoaWNoIHBvaW50cyB0byB0aGVcbiAqIG1hdGNoaW5nIHNpbmdsZS9tdWx0aSBpbmRleCBwb3NpdGlvbiBpbiB0aGUgY29udGV4dCBhcnJheSBmb3IgdGhlIHNhbWUgcHJvcCkuXG4gKlxuICogVGhpcyBtZWFucyB0aGF0IGV2ZXJ5IHRpbWUgYHVwZGF0ZVN0eWxlUHJvcGAgb3IgYHVwZGF0ZUNsYXNzUHJvcGAgYXJlIGNhbGxlZCB0aGVuIHRoZXlcbiAqIG11c3QgYmUgY2FsbGVkIHVzaW5nIGFuIGluZGV4IHZhbHVlIChub3QgYSBwcm9wZXJ0eSBzdHJpbmcpIHdoaWNoIHJlZmVyZW5jZXMgdGhlIGluZGV4XG4gKiB2YWx1ZSBvZiB0aGUgaW5pdGlhbCBzdHlsZSBwcm9wL2NsYXNzIHdoZW4gdGhlIGNvbnRleHQgd2FzIGNyZWF0ZWQuIFRoaXMgYWxzbyBtZWFucyB0aGF0XG4gKiBgdXBkYXRlU3R5bGVQcm9wYCBvciBgdXBkYXRlQ2xhc3NQcm9wYCBjYW5ub3QgYmUgY2FsbGVkIHdpdGggYSBuZXcgcHJvcGVydHkgKG9ubHlcbiAqIGB1cGRhdGVTdHlsaW5nTWFwYCBjYW4gaW5jbHVkZSBuZXcgQ1NTIHByb3BlcnRpZXMgdGhhdCB3aWxsIGJlIGFkZGVkIHRvIHRoZSBjb250ZXh0KS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBTdHlsaW5nQ29udGV4dCBleHRlbmRzIEFycmF5PEluaXRpYWxTdHlsZXN8e1trZXk6IHN0cmluZ106IGFueX18bnVtYmVyfHN0cmluZ3xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sZWFufFJFbGVtZW50fFN0eWxlU2FuaXRpemVGbnxQbGF5ZXJDb250ZXh0fG51bGw+IHtcbiAgLyoqXG4gICAqIExvY2F0aW9uIG9mIGFuaW1hdGlvbiBjb250ZXh0ICh3aGljaCBjb250YWlucyB0aGUgYWN0aXZlIHBsYXllcnMpIGZvciB0aGlzIGVsZW1lbnQgc3R5bGluZ1xuICAgKiBjb250ZXh0LlxuICAgKi9cbiAgW1N0eWxpbmdJbmRleC5QbGF5ZXJDb250ZXh0XTogUGxheWVyQ29udGV4dHxudWxsO1xuXG4gIC8qKlxuICAgKiBUaGUgc3R5bGUgc2FuaXRpemVyIHRoYXQgaXMgdXNlZCB3aXRoaW4gdGhpcyBjb250ZXh0XG4gICAqL1xuICBbU3R5bGluZ0luZGV4LlN0eWxlU2FuaXRpemVyUG9zaXRpb25dOiBTdHlsZVNhbml0aXplRm58bnVsbDtcblxuICAvKipcbiAgICogTG9jYXRpb24gb2YgaW5pdGlhbCBkYXRhIHNoYXJlZCBieSBhbGwgaW5zdGFuY2VzIG9mIHRoaXMgc3R5bGUuXG4gICAqL1xuICBbU3R5bGluZ0luZGV4LkluaXRpYWxTdHlsZXNQb3NpdGlvbl06IEluaXRpYWxTdHlsZXM7XG5cbiAgLyoqXG4gICAqIEEgbnVtZXJpYyB2YWx1ZSByZXByZXNlbnRpbmcgdGhlIGNvbmZpZ3VyYXRpb24gc3RhdHVzICh3aGV0aGVyIHRoZSBjb250ZXh0IGlzIGRpcnR5IG9yIG5vdClcbiAgICogbWl4ZWQgdG9nZXRoZXIgKHVzaW5nIGJpdCBzaGlmdGluZykgd2l0aCBhIGluZGV4IHZhbHVlIHdoaWNoIHRlbGxzIHRoZSBzdGFydGluZyBpbmRleCB2YWx1ZVxuICAgKiBvZiB3aGVyZSB0aGUgbXVsdGkgc3R5bGUgZW50cmllcyBiZWdpbi5cbiAgICovXG4gIFtTdHlsaW5nSW5kZXguTWFzdGVyRmxhZ1Bvc2l0aW9uXTogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBBIG51bWVyaWMgdmFsdWUgcmVwcmVzZW50aW5nIHRoZSBjbGFzcyBpbmRleCBvZmZzZXQgdmFsdWUuIFdoZW5ldmVyIGEgc2luZ2xlIGNsYXNzIGlzXG4gICAqIGFwcGxpZWQgKHVzaW5nIGBlbGVtZW50Q2xhc3NQcm9wYCkgaXQgc2hvdWxkIGhhdmUgYW4gc3R5bGluZyBpbmRleCB2YWx1ZSB0aGF0IGRvZXNuJ3RcbiAgICogbmVlZCB0byB0YWtlIGludG8gYWNjb3VudCBhbnkgc3R5bGUgdmFsdWVzIHRoYXQgZXhpc3QgaW4gdGhlIGNvbnRleHQuXG4gICAqL1xuICBbU3R5bGluZ0luZGV4LkNsYXNzT2Zmc2V0UG9zaXRpb25dOiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIExvY2F0aW9uIG9mIGVsZW1lbnQgdGhhdCBpcyB1c2VkIGFzIGEgdGFyZ2V0IGZvciB0aGlzIGNvbnRleHQuXG4gICAqL1xuICBbU3R5bGluZ0luZGV4LkVsZW1lbnRQb3NpdGlvbl06IFJFbGVtZW50fG51bGw7XG5cbiAgLyoqXG4gICAqIFRoZSBsYXN0IGNsYXNzIHZhbHVlIHRoYXQgd2FzIGludGVycHJldGVkIGJ5IGVsZW1lbnRTdHlsaW5nTWFwLiBUaGlzIGlzIGNhY2hlZFxuICAgKiBTbyB0aGF0IHRoZSBhbGdvcml0aG0gY2FuIGV4aXQgZWFybHkgaW5jYXNlIHRoZSB2YWx1ZSBoYXMgbm90IGNoYW5nZWQuXG4gICAqL1xuICBbU3R5bGluZ0luZGV4LlByZXZpb3VzT3JDYWNoZWRNdWx0aUNsYXNzVmFsdWVdOiB7W2tleTogc3RyaW5nXTogYW55fXxzdHJpbmd8bnVsbDtcblxuICAvKipcbiAgICogVGhlIGxhc3Qgc3R5bGUgdmFsdWUgdGhhdCB3YXMgaW50ZXJwcmV0ZWQgYnkgZWxlbWVudFN0eWxpbmdNYXAuIFRoaXMgaXMgY2FjaGVkXG4gICAqIFNvIHRoYXQgdGhlIGFsZ29yaXRobSBjYW4gZXhpdCBlYXJseSBpbmNhc2UgdGhlIHZhbHVlIGhhcyBub3QgY2hhbmdlZC5cbiAgICovXG4gIFtTdHlsaW5nSW5kZXguUHJldmlvdXNNdWx0aVN0eWxlVmFsdWVdOiB7W2tleTogc3RyaW5nXTogYW55fXxudWxsO1xufVxuXG4vKipcbiAqIFRoZSBpbml0aWFsIHN0eWxlcyBpcyBwb3B1bGF0ZWQgd2hldGhlciBvciBub3QgdGhlcmUgYXJlIGFueSBpbml0aWFsIHN0eWxlcyBwYXNzZWQgaW50b1xuICogdGhlIGNvbnRleHQgZHVyaW5nIGFsbG9jYXRpb24uIFRoZSAwdGggdmFsdWUgbXVzdCBiZSBudWxsIHNvIHRoYXQgaW5kZXggdmFsdWVzIG9mIGAwYCB3aXRoaW5cbiAqIHRoZSBjb250ZXh0IGZsYWdzIGNhbiBhbHdheXMgcG9pbnQgdG8gYSBudWxsIHZhbHVlIHNhZmVseSB3aGVuIG5vdGhpbmcgaXMgc2V0LlxuICpcbiAqIEFsbCBvdGhlciBlbnRyaWVzIGluIHRoaXMgYXJyYXkgYXJlIG9mIGBzdHJpbmdgIHZhbHVlIGFuZCBjb3JyZXNwb25kIHRvIHRoZSB2YWx1ZXMgdGhhdFxuICogd2VyZSBleHRyYWN0ZWQgZnJvbSB0aGUgYHN0eWxlPVwiXCJgIGF0dHJpYnV0ZSBpbiB0aGUgSFRNTCBjb2RlIGZvciB0aGUgcHJvdmlkZWQgdGVtcGxhdGUuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSW5pdGlhbFN0eWxlcyBleHRlbmRzIEFycmF5PHN0cmluZ3xudWxsfGJvb2xlYW4+IHsgWzBdOiBudWxsOyB9XG5cbi8qKlxuICogVXNlZCB0byBzZXQgdGhlIGNvbnRleHQgdG8gYmUgZGlydHkgb3Igbm90IGJvdGggb24gdGhlIG1hc3RlciBmbGFnIChwb3NpdGlvbiAxKVxuICogb3IgZm9yIGVhY2ggc2luZ2xlL211bHRpIHByb3BlcnR5IHRoYXQgZXhpc3RzIGluIHRoZSBjb250ZXh0LlxuICovXG5leHBvcnQgY29uc3QgZW51bSBTdHlsaW5nRmxhZ3Mge1xuICAvLyBJbXBsaWVzIG5vIGNvbmZpZ3VyYXRpb25zXG4gIE5vbmUgPSAwYjAwMDAwLFxuICAvLyBXaGV0aGVyIG9yIG5vdCB0aGUgZW50cnkgb3IgY29udGV4dCBpdHNlbGYgaXMgZGlydHlcbiAgRGlydHkgPSAwYjAwMDAxLFxuICAvLyBXaGV0aGVyIG9yIG5vdCB0aGlzIGlzIGEgY2xhc3MtYmFzZWQgYXNzaWdubWVudFxuICBDbGFzcyA9IDBiMDAwMTAsXG4gIC8vIFdoZXRoZXIgb3Igbm90IGEgc2FuaXRpemVyIHdhcyBhcHBsaWVkIHRvIHRoaXMgcHJvcGVydHlcbiAgU2FuaXRpemUgPSAwYjAwMTAwLFxuICAvLyBXaGV0aGVyIG9yIG5vdCBhbnkgcGxheWVyIGJ1aWxkZXJzIHdpdGhpbiBuZWVkIHRvIHByb2R1Y2UgbmV3IHBsYXllcnNcbiAgUGxheWVyQnVpbGRlcnNEaXJ0eSA9IDBiMDEwMDAsXG4gIC8vIElmIE5nQ2xhc3MgaXMgcHJlc2VudCAob3Igc29tZSBvdGhlciBjbGFzcyBoYW5kbGVyKSB0aGVuIGl0IHdpbGwgaGFuZGxlIHRoZSBtYXAgZXhwcmVzc2lvbnMgYW5kXG4gIC8vIGluaXRpYWwgY2xhc3Nlc1xuICBPbmx5UHJvY2Vzc1NpbmdsZUNsYXNzZXMgPSAwYjEwMDAwLFxuICAvLyBUaGUgbWF4IGFtb3VudCBvZiBiaXRzIHVzZWQgdG8gcmVwcmVzZW50IHRoZXNlIGNvbmZpZ3VyYXRpb24gdmFsdWVzXG4gIEJpdENvdW50U2l6ZSA9IDUsXG4gIC8vIFRoZXJlIGFyZSBvbmx5IGZpdmUgYml0cyBoZXJlXG4gIEJpdE1hc2sgPSAwYjExMTExXG59XG5cbi8qKiBVc2VkIGFzIG51bWVyaWMgcG9pbnRlciB2YWx1ZXMgdG8gZGV0ZXJtaW5lIHdoYXQgY2VsbHMgdG8gdXBkYXRlIGluIHRoZSBgU3R5bGluZ0NvbnRleHRgICovXG5leHBvcnQgY29uc3QgZW51bSBTdHlsaW5nSW5kZXgge1xuICAvLyBQb3NpdGlvbiBvZiB3aGVyZSB0aGUgaW5pdGlhbCBzdHlsZXMgYXJlIHN0b3JlZCBpbiB0aGUgc3R5bGluZyBjb250ZXh0XG4gIFBsYXllckNvbnRleHQgPSAwLFxuICAvLyBQb3NpdGlvbiBvZiB3aGVyZSB0aGUgc3R5bGUgc2FuaXRpemVyIGlzIHN0b3JlZCB3aXRoaW4gdGhlIHN0eWxpbmcgY29udGV4dFxuICBTdHlsZVNhbml0aXplclBvc2l0aW9uID0gMSxcbiAgLy8gUG9zaXRpb24gb2Ygd2hlcmUgdGhlIGluaXRpYWwgc3R5bGVzIGFyZSBzdG9yZWQgaW4gdGhlIHN0eWxpbmcgY29udGV4dFxuICBJbml0aWFsU3R5bGVzUG9zaXRpb24gPSAyLFxuICAvLyBJbmRleCBvZiBsb2NhdGlvbiB3aGVyZSB0aGUgc3RhcnQgb2Ygc2luZ2xlIHByb3BlcnRpZXMgYXJlIHN0b3JlZC4gKGB1cGRhdGVTdHlsZVByb3BgKVxuICBNYXN0ZXJGbGFnUG9zaXRpb24gPSAzLFxuICAvLyBJbmRleCBvZiBsb2NhdGlvbiB3aGVyZSB0aGUgY2xhc3MgaW5kZXggb2Zmc2V0IHZhbHVlIGlzIGxvY2F0ZWRcbiAgQ2xhc3NPZmZzZXRQb3NpdGlvbiA9IDQsXG4gIC8vIFBvc2l0aW9uIG9mIHdoZXJlIHRoZSBpbml0aWFsIHN0eWxlcyBhcmUgc3RvcmVkIGluIHRoZSBzdHlsaW5nIGNvbnRleHRcbiAgLy8gVGhpcyBpbmRleCBtdXN0IGFsaWduIHdpdGggSE9TVCwgc2VlIGludGVyZmFjZXMvdmlldy50c1xuICBFbGVtZW50UG9zaXRpb24gPSA1LFxuICAvLyBQb3NpdGlvbiBvZiB3aGVyZSB0aGUgbGFzdCBzdHJpbmctYmFzZWQgQ1NTIGNsYXNzIHZhbHVlIHdhcyBzdG9yZWQgKG9yIGEgY2FjaGVkIHZlcnNpb24gb2YgdGhlXG4gIC8vIGluaXRpYWwgc3R5bGVzIHdoZW4gYSBbY2xhc3NdIGRpcmVjdGl2ZSBpcyBwcmVzZW50KVxuICBQcmV2aW91c09yQ2FjaGVkTXVsdGlDbGFzc1ZhbHVlID0gNixcbiAgLy8gUG9zaXRpb24gb2Ygd2hlcmUgdGhlIGxhc3Qgc3RyaW5nLWJhc2VkIENTUyBjbGFzcyB2YWx1ZSB3YXMgc3RvcmVkXG4gIFByZXZpb3VzTXVsdGlTdHlsZVZhbHVlID0gNyxcbiAgLy8gTG9jYXRpb24gb2Ygc2luZ2xlIChwcm9wKSB2YWx1ZSBlbnRyaWVzIGFyZSBzdG9yZWQgd2l0aGluIHRoZSBjb250ZXh0XG4gIFNpbmdsZVN0eWxlc1N0YXJ0UG9zaXRpb24gPSA4LFxuICAvLyBNdWx0aSBhbmQgc2luZ2xlIGVudHJpZXMgYXJlIHN0b3JlZCBpbiBgU3R5bGluZ0NvbnRleHRgIGFzOiBGbGFnOyBQcm9wZXJ0eU5hbWU7ICBQcm9wZXJ0eVZhbHVlXG4gIEZsYWdzT2Zmc2V0ID0gMCxcbiAgUHJvcGVydHlPZmZzZXQgPSAxLFxuICBWYWx1ZU9mZnNldCA9IDIsXG4gIFBsYXllckJ1aWxkZXJJbmRleE9mZnNldCA9IDMsXG4gIC8vIFNpemUgb2YgZWFjaCBtdWx0aSBvciBzaW5nbGUgZW50cnkgKGZsYWcgKyBwcm9wICsgdmFsdWUgKyBwbGF5ZXJCdWlsZGVySW5kZXgpXG4gIFNpemUgPSA0LFxuICAvLyBFYWNoIGZsYWcgaGFzIGEgYmluYXJ5IGRpZ2l0IGxlbmd0aCBvZiB0aGlzIHZhbHVlXG4gIEJpdENvdW50U2l6ZSA9IDE0LCAgLy8gKDMyIC0gNCkgLyAyID0gfjE0XG4gIC8vIFRoZSBiaW5hcnkgZGlnaXQgdmFsdWUgYXMgYSBtYXNrXG4gIEJpdE1hc2sgPSAwYjExMTExMTExMTExMTExLCAgLy8gMTQgYml0c1xufVxuIl19
200
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3R5bGluZy5qcyIsInNvdXJjZVJvb3QiOiIuLi8uLi8iLCJzb3VyY2VzIjpbInBhY2thZ2VzL2NvcmUvc3JjL3JlbmRlcjMvaW50ZXJmYWNlcy9zdHlsaW5nLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBcUhBLG9DQWdEQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQVVELG1DQUFnRjs7Ozs7OztJQU85RSw0QkFBNEI7SUFDNUIsT0FBYztJQUNkLHNEQUFzRDtJQUN0RCxRQUFlO0lBQ2Ysa0RBQWtEO0lBQ2xELFFBQWU7SUFDZiwwREFBMEQ7SUFDMUQsV0FBa0I7SUFDbEIsd0VBQXdFO0lBQ3hFLHNCQUE2QjtJQUM3QixrR0FBa0c7SUFDbEcsa0JBQWtCO0lBQ2xCLDRCQUFrQztJQUNsQyxzRUFBc0U7SUFDdEUsZUFBZ0I7SUFDaEIsZ0NBQWdDO0lBQ2hDLFdBQWlCOzs7OztJQUtqQix5RUFBeUU7SUFDekUsZ0JBQWlCO0lBQ2pCLDZFQUE2RTtJQUM3RSx5QkFBMEI7SUFDMUIseUVBQXlFO0lBQ3pFLHdCQUF5QjtJQUN6Qix5RkFBeUY7SUFDekYscUJBQXNCO0lBQ3RCLGtFQUFrRTtJQUNsRSxzQkFBdUI7SUFDdkIseUVBQXlFO0lBQ3pFLDBEQUEwRDtJQUMxRCxrQkFBbUI7SUFDbkIsaUdBQWlHO0lBQ2pHLHNEQUFzRDtJQUN0RCxrQ0FBbUM7SUFDbkMscUVBQXFFO0lBQ3JFLDBCQUEyQjtJQUMzQix3RUFBd0U7SUFDeEUsNEJBQTZCO0lBQzdCLGlHQUFpRztJQUNqRyxjQUFlO0lBQ2YsaUJBQWtCO0lBQ2xCLGNBQWU7SUFDZiwyQkFBNEI7SUFDNUIsZ0ZBQWdGO0lBQ2hGLE9BQVE7SUFDUixvREFBb0Q7SUFDcEQsZ0JBQWlCO0lBQ2pCLG1DQUFtQztJQUNuQyxjQUEwQiIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBHb29nbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlXG4gKi9cbmltcG9ydCB7U3R5bGVTYW5pdGl6ZUZufSBmcm9tICcuLi8uLi9zYW5pdGl6YXRpb24vc3R5bGVfc2FuaXRpemVyJztcbmltcG9ydCB7UkVsZW1lbnR9IGZyb20gJy4uL2ludGVyZmFjZXMvcmVuZGVyZXInO1xuaW1wb3J0IHtQbGF5ZXJDb250ZXh0fSBmcm9tICcuL3BsYXllcic7XG5cblxuLyoqXG4gKiBUaGUgc3R5bGluZyBjb250ZXh0IGFjdHMgYXMgYSBzdHlsaW5nIG1hbmlmZXN0IChzaGFwZWQgYXMgYW4gYXJyYXkpIGZvciBkZXRlcm1pbmluZyB3aGljaFxuICogc3R5bGluZyBwcm9wZXJ0aWVzIGhhdmUgYmVlbiBhc3NpZ25lZCB2aWEgdGhlIHByb3ZpZGVkIGB1cGRhdGVTdHlsaW5nTWFwYCwgYHVwZGF0ZVN0eWxlUHJvcGBcbiAqIGFuZCBgdXBkYXRlQ2xhc3NQcm9wYCBmdW5jdGlvbnMuIFRoZXJlIGFyZSBhbHNvIHR3byBpbml0aWFsaXphdGlvbiBmdW5jdGlvbnNcbiAqIGBhbGxvY1N0eWxpbmdDb250ZXh0YCBhbmQgYGNyZWF0ZVN0eWxpbmdDb250ZXh0VGVtcGxhdGVgIHdoaWNoIGFyZSB1c2VkIHRvIGluaXRpYWxpemVcbiAqIGFuZC9vciBjbG9uZSB0aGUgY29udGV4dC5cbiAqXG4gKiBUaGUgY29udGV4dCBpcyBhbiBhcnJheSB3aGVyZSB0aGUgZmlyc3QgdHdvIGNlbGxzIGFyZSB1c2VkIGZvciBzdGF0aWMgZGF0YSAoaW5pdGlhbCBzdHlsaW5nKVxuICogYW5kIGRpcnR5IGZsYWdzIC8gaW5kZXggb2Zmc2V0cykuIFRoZSByZW1haW5pbmcgc2V0IG9mIGNlbGxzIGlzIHVzZWQgZm9yIG11bHRpIChtYXApIGFuZCBzaW5nbGVcbiAqIChwcm9wKSBzdHlsZSB2YWx1ZXMuXG4gKlxuICogZWFjaCB2YWx1ZSBmcm9tIGhlcmUgb253YXJkcyBpcyBtYXBwZWQgYXMgc286XG4gKiBbaV0gPSBtdXRhdGlvbi90eXBlIGZsYWcgZm9yIHRoZSBzdHlsZS9jbGFzcyB2YWx1ZVxuICogW2kgKyAxXSA9IHByb3Agc3RyaW5nIChvciBudWxsIGluY2FzZSBpdCBoYXMgYmVlbiByZW1vdmVkKVxuICogW2kgKyAyXSA9IHZhbHVlIHN0cmluZyAob3IgbnVsbCBpbmNhc2UgaXQgaGFzIGJlZW4gcmVtb3ZlZClcbiAqXG4gKiBUaGVyZSBhcmUgdGhyZWUgdHlwZXMgb2Ygc3R5bGluZyB0eXBlcyBzdG9yZWQgaW4gdGhpcyBjb250ZXh0OlxuICogICBpbml0aWFsOiBhbnkgc3R5bGVzIHRoYXQgYXJlIHBhc3NlZCBpbiBvbmNlIHRoZSBjb250ZXh0IGlzIGNyZWF0ZWRcbiAqICAgICAgICAgICAgKHRoZXNlIGFyZSBzdG9yZWQgaW4gdGhlIGZpcnN0IGNlbGwgb2YgdGhlIGFycmF5IGFuZCB0aGUgZmlyc3RcbiAqICAgICAgICAgICAgIHZhbHVlIG9mIHRoaXMgYXJyYXkgaXMgYWx3YXlzIGBudWxsYCBldmVuIGlmIG5vIGluaXRpYWwgc3R5bGluZyBleGlzdHMuXG4gKiAgICAgICAgICAgICB0aGUgYG51bGxgIHZhbHVlIGlzIHRoZXJlIHNvIHRoYXQgYW55IG5ldyBzdHlsZXMgaGF2ZSBhIHBhcmVudCB0byBwb2ludFxuICogICAgICAgICAgICAgdG8uIFRoaXMgd2F5IHdlIGNhbiBhbHdheXMgYXNzdW1lIHRoYXQgdGhlcmUgaXMgYSBwYXJlbnQuKVxuICpcbiAqICAgc2luZ2xlOiBhbnkgc3R5bGVzIHRoYXQgYXJlIHVwZGF0ZWQgdXNpbmcgYHVwZGF0ZVN0eWxlUHJvcGAgb3IgYHVwZGF0ZUNsYXNzUHJvcGAgKGZpeGVkIHNldClcbiAqXG4gKiAgIG11bHRpOiBhbnkgc3R5bGVzIHRoYXQgYXJlIHVwZGF0ZWQgdXNpbmcgYHVwZGF0ZVN0eWxpbmdNYXBgIChkeW5hbWljIHNldClcbiAqXG4gKiBOb3RlIHRoYXQgY29udGV4dCBpcyBvbmx5IHVzZWQgdG8gY29sbGVjdCBzdHlsZSBpbmZvcm1hdGlvbi4gT25seSB3aGVuIGByZW5kZXJTdHlsaW5nYFxuICogaXMgY2FsbGVkIGlzIHdoZW4gdGhlIHN0eWxpbmcgcGF5bG9hZCB3aWxsIGJlIHJlbmRlcmVkIChvciBidWlsdCBhcyBhIGtleS92YWx1ZSBtYXApLlxuICpcbiAqIFdoZW4gdGhlIGNvbnRleHQgaXMgY3JlYXRlZCwgZGVwZW5kaW5nIG9uIHdoYXQgaW5pdGlhbCBzdHlsaW5nIHZhbHVlcyBhcmUgcGFzc2VkIGluLCB0aGVcbiAqIGNvbnRleHQgaXRzZWxmIHdpbGwgYmUgcHJlLWZpbGxlZCB3aXRoIHNsb3RzIGJhc2VkIG9uIHRoZSBpbml0aWFsIHN0eWxlIHByb3BlcnRpZXMuIFNheVxuICogZm9yIGV4YW1wbGUgd2UgaGF2ZSBhIHNlcmllcyBvZiBpbml0aWFsIHN0eWxlcyB0aGF0IGxvb2sgbGlrZSBzbzpcbiAqXG4gKiAgIHN0eWxlPVwid2lkdGg6MTAwcHg7IGhlaWdodDoyMDBweDtcIlxuICogICBjbGFzcz1cImZvb1wiXG4gKlxuICogVGhlbiB0aGUgaW5pdGlhbCBzdGF0ZSBvZiB0aGUgY29udGV4dCAob25jZSBpbml0aWFsaXplZCkgd2lsbCBsb29rIGxpa2Ugc286XG4gKlxuICogYGBgXG4gKiBjb250ZXh0ID0gW1xuICogICBlbGVtZW50LFxuICogICBwbGF5ZXJDb250ZXh0IHwgbnVsbCxcbiAqICAgc3R5bGVTYW5pdGl6ZXIgfCBudWxsLFxuICogICBbbnVsbCwgJzEwMHB4JywgJzIwMHB4JywgdHJ1ZV0sICAvLyBwcm9wZXJ0eSBuYW1lcyBhcmUgbm90IG5lZWRlZCBzaW5jZSB0aGV5IGhhdmUgYWxyZWFkeSBiZWVuXG4gKiB3cml0dGVuIHRvIERPTS5cbiAqXG4gKiAgIGNvbmZpZ01hc3RlclZhbCxcbiAqICAgMSwgLy8gdGhpcyBpbnN0cnVjdHMgaG93IG1hbnkgYHN0eWxlYCB2YWx1ZXMgdGhlcmUgYXJlIHNvIHRoYXQgY2xhc3MgaW5kZXggdmFsdWVzIGNhbiBiZVxuICogb2Zmc2V0dGVkXG4gKiAgIHsgY2xhc3NPbmU6IHRydWUsIGNsYXNzVHdvOiBmYWxzZSB9IHwgJ2NsYXNzT25lIGNsYXNzVHdvJyB8IG51bGwgLy8gbGFzdCBjbGFzcyB2YWx1ZSBwcm92aWRlZFxuICogaW50byB1cGRhdGVTdHlsaW5nTWFwXG4gKiAgIHsgc3R5bGVPbmU6ICcxMDBweCcsIHN0eWxlVHdvOiAwIH0gfCBudWxsIC8vIGxhc3Qgc3R5bGUgdmFsdWUgcHJvdmlkZWQgaW50byB1cGRhdGVTdHlsaW5nTWFwXG4gKlxuICogICAvLyA4XG4gKiAgICd3aWR0aCcsXG4gKiAgIHBvaW50ZXJzKDEsIDE1KTsgIC8vIFBvaW50IHRvIHN0YXRpYyBgd2lkdGhgOiBgMTAwcHhgIGFuZCBtdWx0aSBgd2lkdGhgLlxuICogICBudWxsLFxuICpcbiAqICAgLy8gMTFcbiAqICAgJ2hlaWdodCcsXG4gKiAgIHBvaW50ZXJzKDIsIDE4KTsgLy8gUG9pbnQgdG8gc3RhdGljIGBoZWlnaHRgOiBgMjAwcHhgIGFuZCBtdWx0aSBgaGVpZ2h0YC5cbiAqICAgbnVsbCxcbiAqXG4gKiAgIC8vIDE0XG4gKiAgICdmb28nLFxuICogICBwb2ludGVycygxLCAyMSk7ICAvLyBQb2ludCB0byBzdGF0aWMgYGZvb2A6IGB0cnVlYCBhbmQgbXVsdGkgYGZvb2AuXG4gKiAgIG51bGwsXG4gKlxuICogICAvLyAxN1xuICogICAnd2lkdGgnLFxuICogICBwb2ludGVycygxLCA2KTsgIC8vIFBvaW50IHRvIHN0YXRpYyBgd2lkdGhgOiBgMTAwcHhgIGFuZCBzaW5nbGUgYHdpZHRoYC5cbiAqICAgbnVsbCxcbiAqXG4gKiAgIC8vIDIxXG4gKiAgICdoZWlnaHQnLFxuICogICBwb2ludGVycygyLCA5KTsgIC8vIFBvaW50IHRvIHN0YXRpYyBgaGVpZ2h0YDogYDIwMHB4YCBhbmQgc2luZ2xlIGBoZWlnaHRgLlxuICogICBudWxsLFxuICpcbiAqICAgLy8gMjRcbiAqICAgJ2ZvbycsXG4gKiAgIHBvaW50ZXJzKDMsIDEyKTsgIC8vIFBvaW50IHRvIHN0YXRpYyBgZm9vYDogYHRydWVgIGFuZCBzaW5nbGUgYGZvb2AuXG4gKiAgIG51bGwsXG4gKiBdXG4gKlxuICogZnVuY3Rpb24gcG9pbnRlcnMoc3RhdGljSW5kZXg6IG51bWJlciwgZHluYW1pY0luZGV4OiBudW1iZXIpIHtcbiAqICAgLy8gY29tYmluZSB0aGUgdHdvIGluZGljZXMgaW50byBhIHNpbmdsZSB3b3JkLlxuICogICByZXR1cm4gKHN0YXRpY0luZGV4IDw8IFN0eWxpbmdGbGFncy5CaXRDb3VudFNpemUpIHxcbiAqICAgICAoZHluYW1pY0luZGV4IDw8IChTdHlsaW5nSW5kZXguQml0Q291bnRTaXplICsgU3R5bGluZ0ZsYWdzLkJpdENvdW50U2l6ZSkpO1xuICogfVxuICogYGBgXG4gKlxuICogVGhlIHZhbHVlcyBhcmUgZHVwbGljYXRlZCBzbyB0aGF0IHNwYWNlIGlzIHNldCBhc2lkZSBmb3IgYm90aCBtdWx0aSAoW3N0eWxlXSBhbmQgW2NsYXNzXSlcbiAqIGFuZCBzaW5nbGUgKFtzdHlsZS5wcm9wXSBvciBbY2xhc3MubmFtZWRdKSB2YWx1ZXMuIFRoZSByZXNwZWN0aXZlIGNvbmZpZyB2YWx1ZXNcbiAqIChjb25maWdWYWxBLCBjb25maWdWYWxCLCBldGMuLi4pIGFyZSBhIGNvbWJpbmF0aW9uIG9mIHRoZSBTdHlsaW5nRmxhZ3Mgd2l0aCB0d28gaW5kZXhcbiAqIHZhbHVlczogdGhlIGBpbml0aWFsSW5kZXhgICh3aGljaCBwb2ludHMgdG8gdGhlIGluZGV4IGxvY2F0aW9uIG9mIHRoZSBzdHlsZSB2YWx1ZSBpblxuICogdGhlIGluaXRpYWwgc3R5bGVzIGFycmF5IGluIHNsb3QgMCkgYW5kIHRoZSBgZHluYW1pY0luZGV4YCAod2hpY2ggcG9pbnRzIHRvIHRoZVxuICogbWF0Y2hpbmcgc2luZ2xlL211bHRpIGluZGV4IHBvc2l0aW9uIGluIHRoZSBjb250ZXh0IGFycmF5IGZvciB0aGUgc2FtZSBwcm9wKS5cbiAqXG4gKiBUaGlzIG1lYW5zIHRoYXQgZXZlcnkgdGltZSBgdXBkYXRlU3R5bGVQcm9wYCBvciBgdXBkYXRlQ2xhc3NQcm9wYCBhcmUgY2FsbGVkIHRoZW4gdGhleVxuICogbXVzdCBiZSBjYWxsZWQgdXNpbmcgYW4gaW5kZXggdmFsdWUgKG5vdCBhIHByb3BlcnR5IHN0cmluZykgd2hpY2ggcmVmZXJlbmNlcyB0aGUgaW5kZXhcbiAqIHZhbHVlIG9mIHRoZSBpbml0aWFsIHN0eWxlIHByb3AvY2xhc3Mgd2hlbiB0aGUgY29udGV4dCB3YXMgY3JlYXRlZC4gVGhpcyBhbHNvIG1lYW5zIHRoYXRcbiAqIGB1cGRhdGVTdHlsZVByb3BgIG9yIGB1cGRhdGVDbGFzc1Byb3BgIGNhbm5vdCBiZSBjYWxsZWQgd2l0aCBhIG5ldyBwcm9wZXJ0eSAob25seVxuICogYHVwZGF0ZVN0eWxpbmdNYXBgIGNhbiBpbmNsdWRlIG5ldyBDU1MgcHJvcGVydGllcyB0aGF0IHdpbGwgYmUgYWRkZWQgdG8gdGhlIGNvbnRleHQpLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFN0eWxpbmdDb250ZXh0IGV4dGVuZHMgQXJyYXk8SW5pdGlhbFN0eWxlc3x7W2tleTogc3RyaW5nXTogYW55fXxudW1iZXJ8c3RyaW5nfFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2xlYW58UkVsZW1lbnR8U3R5bGVTYW5pdGl6ZUZufFBsYXllckNvbnRleHR8bnVsbD4ge1xuICAvKipcbiAgICogTG9jYXRpb24gb2YgYW5pbWF0aW9uIGNvbnRleHQgKHdoaWNoIGNvbnRhaW5zIHRoZSBhY3RpdmUgcGxheWVycykgZm9yIHRoaXMgZWxlbWVudCBzdHlsaW5nXG4gICAqIGNvbnRleHQuXG4gICAqL1xuICBbU3R5bGluZ0luZGV4LlBsYXllckNvbnRleHRdOiBQbGF5ZXJDb250ZXh0fG51bGw7XG5cbiAgLyoqXG4gICAqIFRoZSBzdHlsZSBzYW5pdGl6ZXIgdGhhdCBpcyB1c2VkIHdpdGhpbiB0aGlzIGNvbnRleHRcbiAgICovXG4gIFtTdHlsaW5nSW5kZXguU3R5bGVTYW5pdGl6ZXJQb3NpdGlvbl06IFN0eWxlU2FuaXRpemVGbnxudWxsO1xuXG4gIC8qKlxuICAgKiBMb2NhdGlvbiBvZiBpbml0aWFsIGRhdGEgc2hhcmVkIGJ5IGFsbCBpbnN0YW5jZXMgb2YgdGhpcyBzdHlsZS5cbiAgICovXG4gIFtTdHlsaW5nSW5kZXguSW5pdGlhbFN0eWxlc1Bvc2l0aW9uXTogSW5pdGlhbFN0eWxlcztcblxuICAvKipcbiAgICogQSBudW1lcmljIHZhbHVlIHJlcHJlc2VudGluZyB0aGUgY29uZmlndXJhdGlvbiBzdGF0dXMgKHdoZXRoZXIgdGhlIGNvbnRleHQgaXMgZGlydHkgb3Igbm90KVxuICAgKiBtaXhlZCB0b2dldGhlciAodXNpbmcgYml0IHNoaWZ0aW5nKSB3aXRoIGEgaW5kZXggdmFsdWUgd2hpY2ggdGVsbHMgdGhlIHN0YXJ0aW5nIGluZGV4IHZhbHVlXG4gICAqIG9mIHdoZXJlIHRoZSBtdWx0aSBzdHlsZSBlbnRyaWVzIGJlZ2luLlxuICAgKi9cbiAgW1N0eWxpbmdJbmRleC5NYXN0ZXJGbGFnUG9zaXRpb25dOiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIEEgbnVtZXJpYyB2YWx1ZSByZXByZXNlbnRpbmcgdGhlIGNsYXNzIGluZGV4IG9mZnNldCB2YWx1ZS4gV2hlbmV2ZXIgYSBzaW5nbGUgY2xhc3MgaXNcbiAgICogYXBwbGllZCAodXNpbmcgYGVsZW1lbnRDbGFzc1Byb3BgKSBpdCBzaG91bGQgaGF2ZSBhbiBzdHlsaW5nIGluZGV4IHZhbHVlIHRoYXQgZG9lc24ndFxuICAgKiBuZWVkIHRvIHRha2UgaW50byBhY2NvdW50IGFueSBzdHlsZSB2YWx1ZXMgdGhhdCBleGlzdCBpbiB0aGUgY29udGV4dC5cbiAgICovXG4gIFtTdHlsaW5nSW5kZXguQ2xhc3NPZmZzZXRQb3NpdGlvbl06IG51bWJlcjtcblxuICAvKipcbiAgICogTG9jYXRpb24gb2YgZWxlbWVudCB0aGF0IGlzIHVzZWQgYXMgYSB0YXJnZXQgZm9yIHRoaXMgY29udGV4dC5cbiAgICovXG4gIFtTdHlsaW5nSW5kZXguRWxlbWVudFBvc2l0aW9uXTogUkVsZW1lbnR8bnVsbDtcblxuICAvKipcbiAgICogVGhlIGxhc3QgY2xhc3MgdmFsdWUgdGhhdCB3YXMgaW50ZXJwcmV0ZWQgYnkgZWxlbWVudFN0eWxpbmdNYXAuIFRoaXMgaXMgY2FjaGVkXG4gICAqIFNvIHRoYXQgdGhlIGFsZ29yaXRobSBjYW4gZXhpdCBlYXJseSBpbmNhc2UgdGhlIHZhbHVlIGhhcyBub3QgY2hhbmdlZC5cbiAgICovXG4gIFtTdHlsaW5nSW5kZXguUHJldmlvdXNPckNhY2hlZE11bHRpQ2xhc3NWYWx1ZV06IHtba2V5OiBzdHJpbmddOiBhbnl9fHN0cmluZ3xudWxsO1xuXG4gIC8qKlxuICAgKiBUaGUgbGFzdCBzdHlsZSB2YWx1ZSB0aGF0IHdhcyBpbnRlcnByZXRlZCBieSBlbGVtZW50U3R5bGluZ01hcC4gVGhpcyBpcyBjYWNoZWRcbiAgICogU28gdGhhdCB0aGUgYWxnb3JpdGhtIGNhbiBleGl0IGVhcmx5IGluY2FzZSB0aGUgdmFsdWUgaGFzIG5vdCBjaGFuZ2VkLlxuICAgKi9cbiAgW1N0eWxpbmdJbmRleC5QcmV2aW91c011bHRpU3R5bGVWYWx1ZV06IHtba2V5OiBzdHJpbmddOiBhbnl9fG51bGw7XG59XG5cbi8qKlxuICogVGhlIGluaXRpYWwgc3R5bGVzIGlzIHBvcHVsYXRlZCB3aGV0aGVyIG9yIG5vdCB0aGVyZSBhcmUgYW55IGluaXRpYWwgc3R5bGVzIHBhc3NlZCBpbnRvXG4gKiB0aGUgY29udGV4dCBkdXJpbmcgYWxsb2NhdGlvbi4gVGhlIDB0aCB2YWx1ZSBtdXN0IGJlIG51bGwgc28gdGhhdCBpbmRleCB2YWx1ZXMgb2YgYDBgIHdpdGhpblxuICogdGhlIGNvbnRleHQgZmxhZ3MgY2FuIGFsd2F5cyBwb2ludCB0byBhIG51bGwgdmFsdWUgc2FmZWx5IHdoZW4gbm90aGluZyBpcyBzZXQuXG4gKlxuICogQWxsIG90aGVyIGVudHJpZXMgaW4gdGhpcyBhcnJheSBhcmUgb2YgYHN0cmluZ2AgdmFsdWUgYW5kIGNvcnJlc3BvbmQgdG8gdGhlIHZhbHVlcyB0aGF0XG4gKiB3ZXJlIGV4dHJhY3RlZCBmcm9tIHRoZSBgc3R5bGU9XCJcImAgYXR0cmlidXRlIGluIHRoZSBIVE1MIGNvZGUgZm9yIHRoZSBwcm92aWRlZCB0ZW1wbGF0ZS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJbml0aWFsU3R5bGVzIGV4dGVuZHMgQXJyYXk8c3RyaW5nfG51bGx8Ym9vbGVhbj4geyBbMF06IG51bGw7IH1cblxuLyoqXG4gKiBVc2VkIHRvIHNldCB0aGUgY29udGV4dCB0byBiZSBkaXJ0eSBvciBub3QgYm90aCBvbiB0aGUgbWFzdGVyIGZsYWcgKHBvc2l0aW9uIDEpXG4gKiBvciBmb3IgZWFjaCBzaW5nbGUvbXVsdGkgcHJvcGVydHkgdGhhdCBleGlzdHMgaW4gdGhlIGNvbnRleHQuXG4gKi9cbmV4cG9ydCBjb25zdCBlbnVtIFN0eWxpbmdGbGFncyB7XG4gIC8vIEltcGxpZXMgbm8gY29uZmlndXJhdGlvbnNcbiAgTm9uZSA9IDBiMDAwMDAsXG4gIC8vIFdoZXRoZXIgb3Igbm90IHRoZSBlbnRyeSBvciBjb250ZXh0IGl0c2VsZiBpcyBkaXJ0eVxuICBEaXJ0eSA9IDBiMDAwMDEsXG4gIC8vIFdoZXRoZXIgb3Igbm90IHRoaXMgaXMgYSBjbGFzcy1iYXNlZCBhc3NpZ25tZW50XG4gIENsYXNzID0gMGIwMDAxMCxcbiAgLy8gV2hldGhlciBvciBub3QgYSBzYW5pdGl6ZXIgd2FzIGFwcGxpZWQgdG8gdGhpcyBwcm9wZXJ0eVxuICBTYW5pdGl6ZSA9IDBiMDAxMDAsXG4gIC8vIFdoZXRoZXIgb3Igbm90IGFueSBwbGF5ZXIgYnVpbGRlcnMgd2l0aGluIG5lZWQgdG8gcHJvZHVjZSBuZXcgcGxheWVyc1xuICBQbGF5ZXJCdWlsZGVyc0RpcnR5ID0gMGIwMTAwMCxcbiAgLy8gSWYgTmdDbGFzcyBpcyBwcmVzZW50IChvciBzb21lIG90aGVyIGNsYXNzIGhhbmRsZXIpIHRoZW4gaXQgd2lsbCBoYW5kbGUgdGhlIG1hcCBleHByZXNzaW9ucyBhbmRcbiAgLy8gaW5pdGlhbCBjbGFzc2VzXG4gIE9ubHlQcm9jZXNzU2luZ2xlQ2xhc3NlcyA9IDBiMTAwMDAsXG4gIC8vIFRoZSBtYXggYW1vdW50IG9mIGJpdHMgdXNlZCB0byByZXByZXNlbnQgdGhlc2UgY29uZmlndXJhdGlvbiB2YWx1ZXNcbiAgQml0Q291bnRTaXplID0gNSxcbiAgLy8gVGhlcmUgYXJlIG9ubHkgZml2ZSBiaXRzIGhlcmVcbiAgQml0TWFzayA9IDBiMTExMTFcbn1cblxuLyoqIFVzZWQgYXMgbnVtZXJpYyBwb2ludGVyIHZhbHVlcyB0byBkZXRlcm1pbmUgd2hhdCBjZWxscyB0byB1cGRhdGUgaW4gdGhlIGBTdHlsaW5nQ29udGV4dGAgKi9cbmV4cG9ydCBjb25zdCBlbnVtIFN0eWxpbmdJbmRleCB7XG4gIC8vIFBvc2l0aW9uIG9mIHdoZXJlIHRoZSBpbml0aWFsIHN0eWxlcyBhcmUgc3RvcmVkIGluIHRoZSBzdHlsaW5nIGNvbnRleHRcbiAgUGxheWVyQ29udGV4dCA9IDAsXG4gIC8vIFBvc2l0aW9uIG9mIHdoZXJlIHRoZSBzdHlsZSBzYW5pdGl6ZXIgaXMgc3RvcmVkIHdpdGhpbiB0aGUgc3R5bGluZyBjb250ZXh0XG4gIFN0eWxlU2FuaXRpemVyUG9zaXRpb24gPSAxLFxuICAvLyBQb3NpdGlvbiBvZiB3aGVyZSB0aGUgaW5pdGlhbCBzdHlsZXMgYXJlIHN0b3JlZCBpbiB0aGUgc3R5bGluZyBjb250ZXh0XG4gIEluaXRpYWxTdHlsZXNQb3NpdGlvbiA9IDIsXG4gIC8vIEluZGV4IG9mIGxvY2F0aW9uIHdoZXJlIHRoZSBzdGFydCBvZiBzaW5nbGUgcHJvcGVydGllcyBhcmUgc3RvcmVkLiAoYHVwZGF0ZVN0eWxlUHJvcGApXG4gIE1hc3RlckZsYWdQb3NpdGlvbiA9IDMsXG4gIC8vIEluZGV4IG9mIGxvY2F0aW9uIHdoZXJlIHRoZSBjbGFzcyBpbmRleCBvZmZzZXQgdmFsdWUgaXMgbG9jYXRlZFxuICBDbGFzc09mZnNldFBvc2l0aW9uID0gNCxcbiAgLy8gUG9zaXRpb24gb2Ygd2hlcmUgdGhlIGluaXRpYWwgc3R5bGVzIGFyZSBzdG9yZWQgaW4gdGhlIHN0eWxpbmcgY29udGV4dFxuICAvLyBUaGlzIGluZGV4IG11c3QgYWxpZ24gd2l0aCBIT1NULCBzZWUgaW50ZXJmYWNlcy92aWV3LnRzXG4gIEVsZW1lbnRQb3NpdGlvbiA9IDUsXG4gIC8vIFBvc2l0aW9uIG9mIHdoZXJlIHRoZSBsYXN0IHN0cmluZy1iYXNlZCBDU1MgY2xhc3MgdmFsdWUgd2FzIHN0b3JlZCAob3IgYSBjYWNoZWQgdmVyc2lvbiBvZiB0aGVcbiAgLy8gaW5pdGlhbCBzdHlsZXMgd2hlbiBhIFtjbGFzc10gZGlyZWN0aXZlIGlzIHByZXNlbnQpXG4gIFByZXZpb3VzT3JDYWNoZWRNdWx0aUNsYXNzVmFsdWUgPSA2LFxuICAvLyBQb3NpdGlvbiBvZiB3aGVyZSB0aGUgbGFzdCBzdHJpbmctYmFzZWQgQ1NTIGNsYXNzIHZhbHVlIHdhcyBzdG9yZWRcbiAgUHJldmlvdXNNdWx0aVN0eWxlVmFsdWUgPSA3LFxuICAvLyBMb2NhdGlvbiBvZiBzaW5nbGUgKHByb3ApIHZhbHVlIGVudHJpZXMgYXJlIHN0b3JlZCB3aXRoaW4gdGhlIGNvbnRleHRcbiAgU2luZ2xlU3R5bGVzU3RhcnRQb3NpdGlvbiA9IDgsXG4gIC8vIE11bHRpIGFuZCBzaW5nbGUgZW50cmllcyBhcmUgc3RvcmVkIGluIGBTdHlsaW5nQ29udGV4dGAgYXM6IEZsYWc7IFByb3BlcnR5TmFtZTsgIFByb3BlcnR5VmFsdWVcbiAgRmxhZ3NPZmZzZXQgPSAwLFxuICBQcm9wZXJ0eU9mZnNldCA9IDEsXG4gIFZhbHVlT2Zmc2V0ID0gMixcbiAgUGxheWVyQnVpbGRlckluZGV4T2Zmc2V0ID0gMyxcbiAgLy8gU2l6ZSBvZiBlYWNoIG11bHRpIG9yIHNpbmdsZSBlbnRyeSAoZmxhZyArIHByb3AgKyB2YWx1ZSArIHBsYXllckJ1aWxkZXJJbmRleClcbiAgU2l6ZSA9IDQsXG4gIC8vIEVhY2ggZmxhZyBoYXMgYSBiaW5hcnkgZGlnaXQgbGVuZ3RoIG9mIHRoaXMgdmFsdWVcbiAgQml0Q291bnRTaXplID0gMTQsICAvLyAoMzIgLSA0KSAvIDIgPSB+MTRcbiAgLy8gVGhlIGJpbmFyeSBkaWdpdCB2YWx1ZSBhcyBhIG1hc2tcbiAgQml0TWFzayA9IDBiMTExMTExMTExMTExMTEsICAvLyAxNCBiaXRzXG59XG4iXX0=