@angular/compiler 18.0.0-next.5 → 18.0.0-rc.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (166) hide show
  1. package/esm2022/src/assertions.mjs +2 -2
  2. package/esm2022/src/chars.mjs +4 -4
  3. package/esm2022/src/compiler.mjs +12 -12
  4. package/esm2022/src/compiler_facade_interface.mjs +1 -1
  5. package/esm2022/src/config.mjs +2 -2
  6. package/esm2022/src/constant_pool.mjs +22 -16
  7. package/esm2022/src/core.mjs +19 -16
  8. package/esm2022/src/expression_parser/ast.mjs +1 -1
  9. package/esm2022/src/expression_parser/lexer.mjs +13 -10
  10. package/esm2022/src/expression_parser/parser.mjs +32 -30
  11. package/esm2022/src/i18n/digest.mjs +19 -14
  12. package/esm2022/src/i18n/extractor_merger.mjs +22 -22
  13. package/esm2022/src/i18n/i18n_ast.mjs +18 -16
  14. package/esm2022/src/i18n/i18n_html_parser.mjs +3 -5
  15. package/esm2022/src/i18n/i18n_parser.mjs +10 -10
  16. package/esm2022/src/i18n/message_bundle.mjs +11 -8
  17. package/esm2022/src/i18n/serializers/placeholder.mjs +5 -2
  18. package/esm2022/src/i18n/serializers/serializer.mjs +8 -7
  19. package/esm2022/src/i18n/serializers/xliff.mjs +45 -16
  20. package/esm2022/src/i18n/serializers/xliff2.mjs +33 -17
  21. package/esm2022/src/i18n/serializers/xmb.mjs +30 -11
  22. package/esm2022/src/i18n/serializers/xml_helper.mjs +5 -3
  23. package/esm2022/src/i18n/serializers/xtb.mjs +7 -7
  24. package/esm2022/src/i18n/translation_bundle.mjs +11 -9
  25. package/esm2022/src/injectable_compiler_2.mjs +10 -7
  26. package/esm2022/src/jit_compiler_facade.mjs +52 -53
  27. package/esm2022/src/ml_parser/ast.mjs +8 -8
  28. package/esm2022/src/ml_parser/defaults.mjs +1 -1
  29. package/esm2022/src/ml_parser/entities.mjs +2 -2
  30. package/esm2022/src/ml_parser/html_tags.mjs +55 -16
  31. package/esm2022/src/ml_parser/html_whitespaces.mjs +3 -4
  32. package/esm2022/src/ml_parser/icu_ast_expander.mjs +15 -8
  33. package/esm2022/src/ml_parser/lexer.mjs +49 -25
  34. package/esm2022/src/ml_parser/parser.mjs +16 -11
  35. package/esm2022/src/ml_parser/tags.mjs +1 -1
  36. package/esm2022/src/ml_parser/tokens.mjs +1 -1
  37. package/esm2022/src/ml_parser/xml_tags.mjs +1 -1
  38. package/esm2022/src/output/abstract_emitter.mjs +7 -6
  39. package/esm2022/src/output/abstract_js_emitter.mjs +8 -8
  40. package/esm2022/src/output/map_util.mjs +2 -2
  41. package/esm2022/src/output/output_ast.mjs +68 -50
  42. package/esm2022/src/output/output_jit.mjs +3 -6
  43. package/esm2022/src/output/output_jit_trusted_types.mjs +1 -1
  44. package/esm2022/src/output/source_map.mjs +8 -8
  45. package/esm2022/src/parse_util.mjs +7 -4
  46. package/esm2022/src/render3/partial/api.mjs +1 -1
  47. package/esm2022/src/render3/partial/class_metadata.mjs +5 -5
  48. package/esm2022/src/render3/partial/component.mjs +8 -7
  49. package/esm2022/src/render3/partial/directive.mjs +29 -22
  50. package/esm2022/src/render3/partial/factory.mjs +1 -1
  51. package/esm2022/src/render3/partial/injectable.mjs +2 -2
  52. package/esm2022/src/render3/partial/injector.mjs +2 -2
  53. package/esm2022/src/render3/partial/ng_module.mjs +4 -4
  54. package/esm2022/src/render3/partial/pipe.mjs +2 -2
  55. package/esm2022/src/render3/partial/util.mjs +3 -3
  56. package/esm2022/src/render3/r3_ast.mjs +4 -4
  57. package/esm2022/src/render3/r3_class_debug_info_compiler.mjs +4 -5
  58. package/esm2022/src/render3/r3_class_metadata_compiler.mjs +9 -7
  59. package/esm2022/src/render3/r3_control_flow.mjs +24 -19
  60. package/esm2022/src/render3/r3_deferred_blocks.mjs +2 -2
  61. package/esm2022/src/render3/r3_deferred_triggers.mjs +1 -1
  62. package/esm2022/src/render3/r3_factory.mjs +21 -17
  63. package/esm2022/src/render3/r3_identifiers.mjs +301 -76
  64. package/esm2022/src/render3/r3_injector_compiler.mjs +4 -2
  65. package/esm2022/src/render3/r3_jit.mjs +1 -1
  66. package/esm2022/src/render3/r3_module_compiler.mjs +13 -14
  67. package/esm2022/src/render3/r3_pipe_compiler.mjs +4 -2
  68. package/esm2022/src/render3/r3_template_transform.mjs +48 -34
  69. package/esm2022/src/render3/util.mjs +5 -4
  70. package/esm2022/src/render3/view/api.mjs +1 -1
  71. package/esm2022/src/render3/view/compiler.mjs +42 -31
  72. package/esm2022/src/render3/view/i18n/get_msg_utils.mjs +15 -16
  73. package/esm2022/src/render3/view/i18n/icu_serializer.mjs +6 -6
  74. package/esm2022/src/render3/view/i18n/localize_utils.mjs +6 -6
  75. package/esm2022/src/render3/view/i18n/meta.mjs +19 -14
  76. package/esm2022/src/render3/view/i18n/util.mjs +3 -3
  77. package/esm2022/src/render3/view/query_generation.mjs +14 -11
  78. package/esm2022/src/render3/view/t2_api.mjs +1 -1
  79. package/esm2022/src/render3/view/t2_binder.mjs +55 -51
  80. package/esm2022/src/render3/view/template.mjs +11 -8
  81. package/esm2022/src/render3/view/util.mjs +8 -8
  82. package/esm2022/src/resource_loader.mjs +1 -1
  83. package/esm2022/src/schema/dom_element_schema_registry.mjs +5 -5
  84. package/esm2022/src/schema/dom_security_schema.mjs +10 -7
  85. package/esm2022/src/schema/element_schema_registry.mjs +1 -1
  86. package/esm2022/src/schema/trusted_types_sinks.mjs +2 -3
  87. package/esm2022/src/selector.mjs +15 -11
  88. package/esm2022/src/shadow_css.mjs +63 -28
  89. package/esm2022/src/style_url_resolver.mjs +1 -1
  90. package/esm2022/src/template/pipeline/ir/src/enums.mjs +1 -1
  91. package/esm2022/src/template/pipeline/ir/src/expression.mjs +16 -17
  92. package/esm2022/src/template/pipeline/ir/src/handle.mjs +1 -1
  93. package/esm2022/src/template/pipeline/ir/src/operations.mjs +1 -1
  94. package/esm2022/src/template/pipeline/ir/src/ops/create.mjs +9 -5
  95. package/esm2022/src/template/pipeline/ir/src/ops/host.mjs +1 -1
  96. package/esm2022/src/template/pipeline/ir/src/ops/shared.mjs +1 -1
  97. package/esm2022/src/template/pipeline/ir/src/ops/update.mjs +3 -3
  98. package/esm2022/src/template/pipeline/ir/src/traits.mjs +1 -1
  99. package/esm2022/src/template/pipeline/ir/src/variable.mjs +1 -1
  100. package/esm2022/src/template/pipeline/src/compilation.mjs +1 -1
  101. package/esm2022/src/template/pipeline/src/conversion.mjs +9 -3
  102. package/esm2022/src/template/pipeline/src/emit.mjs +8 -18
  103. package/esm2022/src/template/pipeline/src/ingest.mjs +41 -36
  104. package/esm2022/src/template/pipeline/src/instruction.mjs +31 -46
  105. package/esm2022/src/template/pipeline/src/phases/any_cast.mjs +3 -2
  106. package/esm2022/src/template/pipeline/src/phases/apply_i18n_expressions.mjs +3 -3
  107. package/esm2022/src/template/pipeline/src/phases/assign_i18n_slot_dependencies.mjs +3 -2
  108. package/esm2022/src/template/pipeline/src/phases/attribute_extraction.mjs +11 -6
  109. package/esm2022/src/template/pipeline/src/phases/binding_specialization.mjs +1 -1
  110. package/esm2022/src/template/pipeline/src/phases/chaining.mjs +1 -1
  111. package/esm2022/src/template/pipeline/src/phases/collapse_singleton_interpolations.mjs +3 -2
  112. package/esm2022/src/template/pipeline/src/phases/conditionals.mjs +3 -5
  113. package/esm2022/src/template/pipeline/src/phases/const_collection.mjs +10 -7
  114. package/esm2022/src/template/pipeline/src/phases/convert_i18n_bindings.mjs +1 -1
  115. package/esm2022/src/template/pipeline/src/phases/create_i18n_contexts.mjs +1 -1
  116. package/esm2022/src/template/pipeline/src/phases/defer_configs.mjs +2 -3
  117. package/esm2022/src/template/pipeline/src/phases/defer_resolve_targets.mjs +1 -1
  118. package/esm2022/src/template/pipeline/src/phases/empty_elements.mjs +1 -1
  119. package/esm2022/src/template/pipeline/src/phases/expand_safe_reads.mjs +22 -17
  120. package/esm2022/src/template/pipeline/src/phases/extract_i18n_messages.mjs +17 -16
  121. package/esm2022/src/template/pipeline/src/phases/generate_advance.mjs +1 -1
  122. package/esm2022/src/template/pipeline/src/phases/generate_projection_def.mjs +2 -2
  123. package/esm2022/src/template/pipeline/src/phases/generate_variables.mjs +1 -1
  124. package/esm2022/src/template/pipeline/src/phases/has_const_expression_collection.mjs +2 -2
  125. package/esm2022/src/template/pipeline/src/phases/host_style_property_parsing.mjs +2 -2
  126. package/esm2022/src/template/pipeline/src/phases/i18n_const_collection.mjs +12 -10
  127. package/esm2022/src/template/pipeline/src/phases/i18n_text_extraction.mjs +4 -3
  128. package/esm2022/src/template/pipeline/src/phases/naming.mjs +4 -3
  129. package/esm2022/src/template/pipeline/src/phases/next_context_merging.mjs +3 -2
  130. package/esm2022/src/template/pipeline/src/phases/nonbindable.mjs +1 -1
  131. package/esm2022/src/template/pipeline/src/phases/nullish_coalescing.mjs +2 -2
  132. package/esm2022/src/template/pipeline/src/phases/ordering.mjs +19 -11
  133. package/esm2022/src/template/pipeline/src/phases/parse_extracted_styles.mjs +6 -4
  134. package/esm2022/src/template/pipeline/src/phases/phase_remove_content_selectors.mjs +1 -1
  135. package/esm2022/src/template/pipeline/src/phases/pipe_creation.mjs +1 -1
  136. package/esm2022/src/template/pipeline/src/phases/pipe_variadic.mjs +2 -2
  137. package/esm2022/src/template/pipeline/src/phases/propagate_i18n_blocks.mjs +2 -3
  138. package/esm2022/src/template/pipeline/src/phases/pure_function_extraction.mjs +3 -3
  139. package/esm2022/src/template/pipeline/src/phases/pure_literal_structures.mjs +1 -1
  140. package/esm2022/src/template/pipeline/src/phases/reify.mjs +8 -5
  141. package/esm2022/src/template/pipeline/src/phases/resolve_contexts.mjs +2 -2
  142. package/esm2022/src/template/pipeline/src/phases/resolve_defer_deps_fns.mjs +1 -1
  143. package/esm2022/src/template/pipeline/src/phases/resolve_dollar_event.mjs +1 -1
  144. package/esm2022/src/template/pipeline/src/phases/resolve_i18n_element_placeholders.mjs +1 -1
  145. package/esm2022/src/template/pipeline/src/phases/resolve_i18n_expression_placeholders.mjs +5 -5
  146. package/esm2022/src/template/pipeline/src/phases/resolve_names.mjs +2 -2
  147. package/esm2022/src/template/pipeline/src/phases/resolve_sanitizers.mjs +5 -3
  148. package/esm2022/src/template/pipeline/src/phases/save_restore_view.mjs +2 -2
  149. package/esm2022/src/template/pipeline/src/phases/style_binding_specialization.mjs +1 -1
  150. package/esm2022/src/template/pipeline/src/phases/temporary_variables.mjs +2 -3
  151. package/esm2022/src/template/pipeline/src/phases/track_fn_generation.mjs +2 -2
  152. package/esm2022/src/template/pipeline/src/phases/track_fn_optimization.mjs +7 -6
  153. package/esm2022/src/template/pipeline/src/phases/track_variables.mjs +2 -2
  154. package/esm2022/src/template/pipeline/src/phases/transform_two_way_binding_set.mjs +1 -1
  155. package/esm2022/src/template/pipeline/src/phases/var_counting.mjs +3 -3
  156. package/esm2022/src/template/pipeline/src/phases/variable_optimization.mjs +9 -8
  157. package/esm2022/src/template/pipeline/src/phases/wrap_icus.mjs +1 -1
  158. package/esm2022/src/template/pipeline/src/util/elements.mjs +1 -1
  159. package/esm2022/src/template_parser/binding_parser.mjs +22 -17
  160. package/esm2022/src/template_parser/template_preparser.mjs +2 -2
  161. package/esm2022/src/util.mjs +3 -3
  162. package/esm2022/src/version.mjs +1 -1
  163. package/fesm2022/compiler.mjs +1550 -1033
  164. package/fesm2022/compiler.mjs.map +1 -1
  165. package/index.d.ts +5 -15
  166. package/package.json +2 -2
@@ -110,4 +110,4 @@ class Scope {
110
110
  this.targets = new Map();
111
111
  }
112
112
  }
113
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVmZXJfcmVzb2x2ZV90YXJnZXRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29tcGlsZXIvc3JjL3RlbXBsYXRlL3BpcGVsaW5lL3NyYy9waGFzZXMvZGVmZXJfcmVzb2x2ZV90YXJnZXRzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7R0FNRztBQUVILE9BQU8sS0FBSyxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBRy9COzs7OztHQUtHO0FBQ0gsTUFBTSxVQUFVLHVCQUF1QixDQUFDLEdBQTRCO0lBQ2xFLE1BQU0sTUFBTSxHQUFHLElBQUksR0FBRyxFQUFvQixDQUFDO0lBRTNDLFNBQVMsZUFBZSxDQUFDLElBQXlCO1FBQ2hELElBQUksTUFBTSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztZQUMxQixPQUFPLE1BQU0sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBRSxDQUFDO1FBQ2hDLENBQUM7UUFFRCxNQUFNLEtBQUssR0FBRyxJQUFJLEtBQUssRUFBRSxDQUFDO1FBQzFCLEtBQUssTUFBTSxFQUFFLElBQUksSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQzdCLHlDQUF5QztZQUN6QyxJQUFJLENBQUMsRUFBRSxDQUFDLHNCQUFzQixDQUFDLEVBQUUsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxTQUFTLEtBQUssSUFBSSxFQUFFLENBQUM7Z0JBQzVELFNBQVM7WUFDWCxDQUFDO1lBQ0QsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUM7Z0JBQ2pDLE1BQU0sSUFBSSxLQUFLLENBQ1gsNkVBQTZFLENBQUMsQ0FBQztZQUNyRixDQUFDO1lBRUQsS0FBSyxNQUFNLEdBQUcsSUFBSSxFQUFFLENBQUMsU0FBUyxFQUFFLENBQUM7Z0JBQy9CLElBQUksR0FB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LENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDO29CQUN4QixNQUFNO2dCQUNSLEtBQUssRUFBRSxDQUFDLE1BQU0sQ0FBQyxPQUFPO29CQUNwQixNQUFNLE9BQU8sR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUUsQ0FBQztvQkFDdEMsY0FBYyxDQUFDLElBQUksRUFBRSxFQUFFLEVBQUUsT0FBTyxDQUFDLGVBQWUsQ0FBQyxDQUFDO29CQUNsRCxNQUFNO1lBQ1YsQ0FBQztRQUNILENBQUM7SUFDSCxDQUFDO0FBQ0gsQ0FBQztBQUVELE1BQU0sS0FBSztJQUFYO1FBQ0UsWUFBTyxHQUFHLElBQUksR0FBRyxFQUFrRCxDQUFDO0lBQ3RFLENBQUM7Q0FBQSIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmVcbiAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2VcbiAqL1xuXG5pbXBvcnQgKiBhcyBpciBmcm9tICcuLi8uLi9pcic7XG5pbXBvcnQgdHlwZSB7Q29tcG9uZW50Q29tcGlsYXRpb25Kb2IsIFZpZXdDb21waWxhdGlvblVuaXR9IGZyb20gJy4uL2NvbXBpbGF0aW9uJztcblxuLyoqXG4gKiBTb21lIGBkZWZlcmAgY29uZGl0aW9ucyBjYW4gcmVmZXJlbmNlIG90aGVyIGVsZW1lbnRzIGluIHRoZSB0ZW1wbGF0ZSwgdXNpbmcgdGhlaXIgbG9jYWwgcmVmZXJlbmNlXG4gKiBuYW1lcy4gSG93ZXZlciwgdGhlIHNlbWFudGljcyBhcmUgcXVpdGUgZGlmZmVyZW50IGZyb20gdGhlIG5vcm1hbCBsb2NhbCByZWZlcmVuY2Ugc3lzdGVtOiBpblxuICogcGFydGljdWxhciwgd2UgbmVlZCB0byBsb29rIGF0IGxvY2FsIHJlZmVyZW5jZSBuYW1lcyBpbiBlbmNsb3Npbmcgdmlld3MuIFRoaXMgcGhhc2UgcmVzb2x2ZXNcbiAqIGFsbCBzdWNoIHJlZmVyZW5jZXMgdG8gYWN0dWFsIHhyZWZzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gcmVzb2x2ZURlZmVyVGFyZ2V0TmFtZXMoam9iOiBDb21wb25lbnRDb21waWxhdGlvbkpvYik6IHZvaWQge1xuICBjb25zdCBzY29wZXMgPSBuZXcgTWFwPGlyLlhyZWZJZCwgU2NvcGU+KCk7XG5cbiAgZnVuY3Rpb24gZ2V0U2NvcGVGb3JWaWV3KHZpZXc6IFZpZXdDb21waWxhdGlvblVuaXQpOiBTY29wZSB7XG4gICAgaWYgKHNjb3Blcy5oYXModmlldy54cmVmKSkge1xuICAgICAgcmV0dXJuIHNjb3Blcy5nZXQodmlldy54cmVmKSE7XG4gICAgfVxuXG4gICAgY29uc3Qgc2NvcGUgPSBuZXcgU2NvcGUoKTtcbiAgICBmb3IgKGNvbnN0IG9wIG9mIHZpZXcuY3JlYXRlKSB7XG4gICAgICAvLyBhZGQgZXZlcnl0aGluZyB0aGF0IGNhbiBiZSByZWZlcmVuY2VkLlxuICAgICAgaWYgKCFpci5pc0VsZW1lbnRPckNvbnRhaW5lck9wKG9wKSB8fCBvcC5sb2NhbFJlZnMgPT09IG51bGwpIHtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG4gICAgICBpZiAoIUFycmF5LmlzQXJyYXkob3AubG9jYWxSZWZzKSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgICAnTG9jYWxSZWZzIHdlcmUgYWxyZWFkeSBwcm9jZXNzZWQsIGJ1dCB3ZXJlIG5lZWRlZCB0byByZXNvbHZlIGRlZmVyIHRhcmdldHMuJyk7XG4gICAgICB9XG5cbiAgICAgIGZvciAoY29uc3QgcmVmIG9mIG9wLmxvY2FsUmVmcykge1xuICAgICAgICBpZiAocmVmLnRhcmdldCAhPT0gJycpIHtcbiAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuICAgICAgICBzY29wZS50YXJnZXRzLnNldChyZWYubmFtZSwge3hyZWY6IG9wLnhyZWYsIHNsb3Q6IG9wLmhhbmRsZX0pO1xuICAgICAgfVxuICAgIH1cblxuICAgIHNjb3Blcy5zZXQodmlldy54cmVmLCBzY29wZSk7XG4gICAgcmV0dXJuIHNjb3BlO1xuICB9XG5cbiAgZnVuY3Rpb24gcmVzb2x2ZVRyaWdnZXIoXG4gICAgICBkZWZlck93bmVyVmlldzogVmlld0NvbXBpbGF0aW9uVW5pdCwgb3A6IGlyLkRlZmVyT25PcCxcbiAgICAgIHBsYWNlaG9sZGVyVmlldzogaXIuWHJlZklkfG51bGwpOiB2b2lkIHtcbiAgICBzd2l0Y2ggKG9wLnRyaWdnZXIua2luZCkge1xuICAgICAgY2FzZSBpci5EZWZlclRyaWdnZXJLaW5kLklkbGU6XG4gICAgICBjYXNlIGlyLkRlZmVyVHJpZ2dlcktpbmQuSW1tZWRpYXRlOlxuICAgICAgY2FzZSBpci5EZWZlclRyaWdnZXJLaW5kLlRpbWVyOlxuICAgICAgICByZXR1cm47XG4gICAgICBjYXNlIGlyLkRlZmVyVHJpZ2dlcktpbmQuSG92ZXI6XG4gICAgICBjYXNlIGlyLkRlZmVyVHJpZ2dlcktpbmQuSW50ZXJhY3Rpb246XG4gICAgICBjYXNlIGlyLkRlZmVyVHJpZ2dlcktpbmQuVmlld3BvcnQ6XG4gICAgICAgIGlmIChvcC50cmlnZ2VyLnRhcmdldE5hbWUgPT09IG51bGwpIHtcbiAgICAgICAgICAvLyBBIGBudWxsYCB0YXJnZXQgbmFtZSBpbmRpY2F0ZXMgd2Ugc2hvdWxkIGRlZmF1bHQgdG8gdGhlIGZpcnN0IGVsZW1lbnQgaW4gdGhlXG4gICAgICAgICAgLy8gcGxhY2Vob2xkZXIgYmxvY2suXG4gICAgICAgICAgaWYgKHBsYWNlaG9sZGVyVmlldyA9PT0gbnVsbCkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdkZWZlciBvbiB0cmlnZ2VyIHdpdGggbm8gdGFyZ2V0IG5hbWUgbXVzdCBoYXZlIGEgcGxhY2Vob2xkZXIgYmxvY2snKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgY29uc3QgcGxhY2Vob2xkZXIgPSBqb2Iudmlld3MuZ2V0KHBsYWNlaG9sZGVyVmlldyk7XG4gICAgICAgICAgaWYgKHBsYWNlaG9sZGVyID09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdBc3NlcnRpb25FcnJvcjogY291bGQgbm90IGZpbmQgcGxhY2Vob2xkZXIgdmlldyBmb3IgZGVmZXIgb24gdHJpZ2dlcicpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBmb3IgKGNvbnN0IHBsYWNlaG9sZGVyT3Agb2YgcGxhY2Vob2xkZXIuY3JlYXRlKSB7XG4gICAgICAgICAgICBpZiAoaXIuaGFzQ29uc3VtZXNTbG90VHJhaXQocGxhY2Vob2xkZXJPcCkgJiZcbiAgICAgICAgICAgICAgICAoaXIuaXNFbGVtZW50T3JDb250YWluZXJPcChwbGFjZWhvbGRlck9wKSB8fFxuICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlck9wLmtpbmQgPT09IGlyLk9wS2luZC5Qcm9qZWN0aW9uKSkge1xuICAgICAgICAgICAgICBvcC50cmlnZ2VyLnRhcmdldFhyZWYgPSBwbGFjZWhvbGRlck9wLnhyZWY7XG4gICAgICAgICAgICAgIG9wLnRyaWdnZXIudGFyZ2V0VmlldyA9IHBsYWNlaG9sZGVyVmlldztcbiAgICAgICAgICAgICAgb3AudHJpZ2dlci50YXJnZXRTbG90Vmlld1N0ZXBzID0gLTE7XG4gICAgICAgICAgICAgIG9wLnRyaWdnZXIudGFyZ2V0U2xvdCA9IHBsYWNlaG9sZGVyT3AuaGFuZGxlO1xuICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBsZXQgdmlldzogVmlld0NvbXBpbGF0aW9uVW5pdHxudWxsID1cbiAgICAgICAgICAgIHBsYWNlaG9sZGVyVmlldyAhPT0gbnVsbCA/IGpvYi52aWV3cy5nZXQocGxhY2Vob2xkZXJWaWV3KSEgOiBkZWZlck93bmVyVmlldztcbiAgICAgICAgbGV0IHN0ZXAgPSBwbGFjZWhvbGRlclZpZXcgIT09IG51bGwgPyAtMSA6IDA7XG5cbiAgICAgICAgd2hpbGUgKHZpZXcgIT09IG51bGwpIHtcbiAgICAgICAgICBjb25zdCBzY29wZSA9IGdldFNjb3BlRm9yVmlldyh2aWV3KTtcbiAgICAgICAgICBpZiAoc2NvcGUudGFyZ2V0cy5oYXMob3AudHJpZ2dlci50YXJnZXROYW1lKSkge1xuICAgICAgICAgICAgY29uc3Qge3hyZWYsIHNsb3R9ID0gc2NvcGUudGFyZ2V0cy5nZXQob3AudHJpZ2dlci50YXJnZXROYW1lKSE7XG5cbiAgICAgICAgICAgIG9wLnRyaWdnZXIudGFyZ2V0WHJlZiA9IHhyZWY7XG4gICAgICAgICAgICBvcC50cmlnZ2VyLnRhcmdldFZpZXcgPSB2aWV3LnhyZWY7XG4gICAgICAgICAgICBvcC50cmlnZ2VyLnRhcmdldFNsb3RWaWV3U3RlcHMgPSBzdGVwO1xuICAgICAgICAgICAgb3AudHJpZ2dlci50YXJnZXRTbG90ID0gc2xvdDtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICB2aWV3ID0gdmlldy5wYXJlbnQgIT09IG51bGwgPyBqb2Iudmlld3MuZ2V0KHZpZXcucGFyZW50KSEgOiBudWxsO1xuICAgICAgICAgIHN0ZXArKztcbiAgICAgICAgfVxuICAgICAgICBicmVhaztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgVHJpZ2dlciBraW5kICR7KG9wLnRyaWdnZXIgYXMgYW55KS5raW5kfSBub3QgaGFuZGxlZGApO1xuICAgIH1cbiAgfVxuXG4gIC8vIEZpbmQgdGhlIGRlZmVyIG9wcywgYW5kIGFzc2lnbiB0aGUgZGF0YSBhYm91dCB0aGVpciB0YXJnZXRzLlxuICBmb3IgKGNvbnN0IHVuaXQgb2Ygam9iLnVuaXRzKSB7XG4gICAgY29uc3QgZGVmZXJzID0gbmV3IE1hcDxpci5YcmVmSWQsIGlyLkRlZmVyT3A+KCk7XG4gICAgZm9yIChjb25zdCBvcCBvZiB1bml0LmNyZWF0ZSkge1xuICAgICAgc3dpdGNoIChvcC5raW5kKSB7XG4gICAgICAgIGNhc2UgaXIuT3BLaW5kLkRlZmVyOlxuICAgICAgICAgIGRlZmVycy5zZXQob3AueHJlZiwgb3ApO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIGlyLk9wS2luZC5EZWZlck9uOlxuICAgICAgICAgIGNvbnN0IGRlZmVyT3AgPSBkZWZlcnMuZ2V0KG9wLmRlZmVyKSE7XG4gICAgICAgICAgcmVzb2x2ZVRyaWdnZXIodW5pdCwgb3AsIGRlZmVyT3AucGxhY2Vob2xkZXJWaWV3KTtcbiAgICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxuY2xhc3MgU2NvcGUge1xuICB0YXJnZXRzID0gbmV3IE1hcDxzdHJpbmcsIHt4cmVmOiBpci5YcmVmSWQsIHNsb3Q6IGlyLlNsb3RIYW5kbGV9PigpO1xufVxuIl19
113
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVmZXJfcmVzb2x2ZV90YXJnZXRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29tcGlsZXIvc3JjL3RlbXBsYXRlL3BpcGVsaW5lL3NyYy9waGFzZXMvZGVmZXJfcmVzb2x2ZV90YXJnZXRzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7R0FNRztBQUVILE9BQU8sS0FBSyxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBRy9COzs7OztHQUtHO0FBQ0gsTUFBTSxVQUFVLHVCQUF1QixDQUFDLEdBQTRCO0lBQ2xFLE1BQU0sTUFBTSxHQUFHLElBQUksR0FBRyxFQUFvQixDQUFDO0lBRTNDLFNBQVMsZUFBZSxDQUFDLElBQXlCO1FBQ2hELElBQUksTUFBTSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztZQUMxQixPQUFPLE1BQU0sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBRSxDQUFDO1FBQ2hDLENBQUM7UUFFRCxNQUFNLEtBQUssR0FBRyxJQUFJLEtBQUssRUFBRSxDQUFDO1FBQzFCLEtBQUssTUFBTSxFQUFFLElBQUksSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQzdCLHlDQUF5QztZQUN6QyxJQUFJLENBQUMsRUFBRSxDQUFDLHNCQUFzQixDQUFDLEVBQUUsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxTQUFTLEtBQUssSUFBSSxFQUFFLENBQUM7Z0JBQzVELFNBQVM7WUFDWCxDQUFDO1lBQ0QsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUM7Z0JBQ2pDLE1BQU0sSUFBSSxLQUFLLENBQ2IsNkVBQTZFLENBQzlFLENBQUM7WUFDSixDQUFDO1lBRUQsS0FBSyxNQUFNLEdBQUcsSUFBSSxFQUFFLENBQUMsU0FBUyxFQUFFLENBQUM7Z0JBQy9CLElBQUksR0FB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RSxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQztvQkFDeEIsTUFBTTtnQkFDUixLQUFLLEVBQUUsQ0FBQyxNQUFNLENBQUMsT0FBTztvQkFDcEIsTUFBTSxPQUFPLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFFLENBQUM7b0JBQ3RDLGNBQWMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxFQUFFLE9BQU8sQ0FBQyxlQUFlLENBQUMsQ0FBQztvQkFDbEQsTUFBTTtZQUNWLENBQUM7UUFDSCxDQUFDO0lBQ0gsQ0FBQztBQUNILENBQUM7QUFFRCxNQUFNLEtBQUs7SUFBWDtRQUNFLFlBQU8sR0FBRyxJQUFJLEdBQUcsRUFBa0QsQ0FBQztJQUN0RSxDQUFDO0NBQUEiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlXG4gKi9cblxuaW1wb3J0ICogYXMgaXIgZnJvbSAnLi4vLi4vaXInO1xuaW1wb3J0IHR5cGUge0NvbXBvbmVudENvbXBpbGF0aW9uSm9iLCBWaWV3Q29tcGlsYXRpb25Vbml0fSBmcm9tICcuLi9jb21waWxhdGlvbic7XG5cbi8qKlxuICogU29tZSBgZGVmZXJgIGNvbmRpdGlvbnMgY2FuIHJlZmVyZW5jZSBvdGhlciBlbGVtZW50cyBpbiB0aGUgdGVtcGxhdGUsIHVzaW5nIHRoZWlyIGxvY2FsIHJlZmVyZW5jZVxuICogbmFtZXMuIEhvd2V2ZXIsIHRoZSBzZW1hbnRpY3MgYXJlIHF1aXRlIGRpZmZlcmVudCBmcm9tIHRoZSBub3JtYWwgbG9jYWwgcmVmZXJlbmNlIHN5c3RlbTogaW5cbiAqIHBhcnRpY3VsYXIsIHdlIG5lZWQgdG8gbG9vayBhdCBsb2NhbCByZWZlcmVuY2UgbmFtZXMgaW4gZW5jbG9zaW5nIHZpZXdzLiBUaGlzIHBoYXNlIHJlc29sdmVzXG4gKiBhbGwgc3VjaCByZWZlcmVuY2VzIHRvIGFjdHVhbCB4cmVmcy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlc29sdmVEZWZlclRhcmdldE5hbWVzKGpvYjogQ29tcG9uZW50Q29tcGlsYXRpb25Kb2IpOiB2b2lkIHtcbiAgY29uc3Qgc2NvcGVzID0gbmV3IE1hcDxpci5YcmVmSWQsIFNjb3BlPigpO1xuXG4gIGZ1bmN0aW9uIGdldFNjb3BlRm9yVmlldyh2aWV3OiBWaWV3Q29tcGlsYXRpb25Vbml0KTogU2NvcGUge1xuICAgIGlmIChzY29wZXMuaGFzKHZpZXcueHJlZikpIHtcbiAgICAgIHJldHVybiBzY29wZXMuZ2V0KHZpZXcueHJlZikhO1xuICAgIH1cblxuICAgIGNvbnN0IHNjb3BlID0gbmV3IFNjb3BlKCk7XG4gICAgZm9yIChjb25zdCBvcCBvZiB2aWV3LmNyZWF0ZSkge1xuICAgICAgLy8gYWRkIGV2ZXJ5dGhpbmcgdGhhdCBjYW4gYmUgcmVmZXJlbmNlZC5cbiAgICAgIGlmICghaXIuaXNFbGVtZW50T3JDb250YWluZXJPcChvcCkgfHwgb3AubG9jYWxSZWZzID09PSBudWxsKSB7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuICAgICAgaWYgKCFBcnJheS5pc0FycmF5KG9wLmxvY2FsUmVmcykpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgICdMb2NhbFJlZnMgd2VyZSBhbHJlYWR5IHByb2Nlc3NlZCwgYnV0IHdlcmUgbmVlZGVkIHRvIHJlc29sdmUgZGVmZXIgdGFyZ2V0cy4nLFxuICAgICAgICApO1xuICAgICAgfVxuXG4gICAgICBmb3IgKGNvbnN0IHJlZiBvZiBvcC5sb2NhbFJlZnMpIHtcbiAgICAgICAgaWYgKHJlZi50YXJnZXQgIT09ICcnKSB7XG4gICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cbiAgICAgICAgc2NvcGUudGFyZ2V0cy5zZXQocmVmLm5hbWUsIHt4cmVmOiBvcC54cmVmLCBzbG90OiBvcC5oYW5kbGV9KTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBzY29wZXMuc2V0KHZpZXcueHJlZiwgc2NvcGUpO1xuICAgIHJldHVybiBzY29wZTtcbiAgfVxuXG4gIGZ1bmN0aW9uIHJlc29sdmVUcmlnZ2VyKFxuICAgIGRlZmVyT3duZXJWaWV3OiBWaWV3Q29tcGlsYXRpb25Vbml0LFxuICAgIG9wOiBpci5EZWZlck9uT3AsXG4gICAgcGxhY2Vob2xkZXJWaWV3OiBpci5YcmVmSWQgfCBudWxsLFxuICApOiB2b2lkIHtcbiAgICBzd2l0Y2ggKG9wLnRyaWdnZXIua2luZCkge1xuICAgICAgY2FzZSBpci5EZWZlclRyaWdnZXJLaW5kLklkbGU6XG4gICAgICBjYXNlIGlyLkRlZmVyVHJpZ2dlcktpbmQuSW1tZWRpYXRlOlxuICAgICAgY2FzZSBpci5EZWZlclRyaWdnZXJLaW5kLlRpbWVyOlxuICAgICAgICByZXR1cm47XG4gICAgICBjYXNlIGlyLkRlZmVyVHJpZ2dlcktpbmQuSG92ZXI6XG4gICAgICBjYXNlIGlyLkRlZmVyVHJpZ2dlcktpbmQuSW50ZXJhY3Rpb246XG4gICAgICBjYXNlIGlyLkRlZmVyVHJpZ2dlcktpbmQuVmlld3BvcnQ6XG4gICAgICAgIGlmIChvcC50cmlnZ2VyLnRhcmdldE5hbWUgPT09IG51bGwpIHtcbiAgICAgICAgICAvLyBBIGBudWxsYCB0YXJnZXQgbmFtZSBpbmRpY2F0ZXMgd2Ugc2hvdWxkIGRlZmF1bHQgdG8gdGhlIGZpcnN0IGVsZW1lbnQgaW4gdGhlXG4gICAgICAgICAgLy8gcGxhY2Vob2xkZXIgYmxvY2suXG4gICAgICAgICAgaWYgKHBsYWNlaG9sZGVyVmlldyA9PT0gbnVsbCkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdkZWZlciBvbiB0cmlnZ2VyIHdpdGggbm8gdGFyZ2V0IG5hbWUgbXVzdCBoYXZlIGEgcGxhY2Vob2xkZXIgYmxvY2snKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgY29uc3QgcGxhY2Vob2xkZXIgPSBqb2Iudmlld3MuZ2V0KHBsYWNlaG9sZGVyVmlldyk7XG4gICAgICAgICAgaWYgKHBsYWNlaG9sZGVyID09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdBc3NlcnRpb25FcnJvcjogY291bGQgbm90IGZpbmQgcGxhY2Vob2xkZXIgdmlldyBmb3IgZGVmZXIgb24gdHJpZ2dlcicpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBmb3IgKGNvbnN0IHBsYWNlaG9sZGVyT3Agb2YgcGxhY2Vob2xkZXIuY3JlYXRlKSB7XG4gICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgIGlyLmhhc0NvbnN1bWVzU2xvdFRyYWl0KHBsYWNlaG9sZGVyT3ApICYmXG4gICAgICAgICAgICAgIChpci5pc0VsZW1lbnRPckNvbnRhaW5lck9wKHBsYWNlaG9sZGVyT3ApIHx8XG4gICAgICAgICAgICAgICAgcGxhY2Vob2xkZXJPcC5raW5kID09PSBpci5PcEtpbmQuUHJvamVjdGlvbilcbiAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICBvcC50cmlnZ2VyLnRhcmdldFhyZWYgPSBwbGFjZWhvbGRlck9wLnhyZWY7XG4gICAgICAgICAgICAgIG9wLnRyaWdnZXIudGFyZ2V0VmlldyA9IHBsYWNlaG9sZGVyVmlldztcbiAgICAgICAgICAgICAgb3AudHJpZ2dlci50YXJnZXRTbG90Vmlld1N0ZXBzID0gLTE7XG4gICAgICAgICAgICAgIG9wLnRyaWdnZXIudGFyZ2V0U2xvdCA9IHBsYWNlaG9sZGVyT3AuaGFuZGxlO1xuICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBsZXQgdmlldzogVmlld0NvbXBpbGF0aW9uVW5pdCB8IG51bGwgPVxuICAgICAgICAgIHBsYWNlaG9sZGVyVmlldyAhPT0gbnVsbCA/IGpvYi52aWV3cy5nZXQocGxhY2Vob2xkZXJWaWV3KSEgOiBkZWZlck93bmVyVmlldztcbiAgICAgICAgbGV0IHN0ZXAgPSBwbGFjZWhvbGRlclZpZXcgIT09IG51bGwgPyAtMSA6IDA7XG5cbiAgICAgICAgd2hpbGUgKHZpZXcgIT09IG51bGwpIHtcbiAgICAgICAgICBjb25zdCBzY29wZSA9IGdldFNjb3BlRm9yVmlldyh2aWV3KTtcbiAgICAgICAgICBpZiAoc2NvcGUudGFyZ2V0cy5oYXMob3AudHJpZ2dlci50YXJnZXROYW1lKSkge1xuICAgICAgICAgICAgY29uc3Qge3hyZWYsIHNsb3R9ID0gc2NvcGUudGFyZ2V0cy5nZXQob3AudHJpZ2dlci50YXJnZXROYW1lKSE7XG5cbiAgICAgICAgICAgIG9wLnRyaWdnZXIudGFyZ2V0WHJlZiA9IHhyZWY7XG4gICAgICAgICAgICBvcC50cmlnZ2VyLnRhcmdldFZpZXcgPSB2aWV3LnhyZWY7XG4gICAgICAgICAgICBvcC50cmlnZ2VyLnRhcmdldFNsb3RWaWV3U3RlcHMgPSBzdGVwO1xuICAgICAgICAgICAgb3AudHJpZ2dlci50YXJnZXRTbG90ID0gc2xvdDtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICB2aWV3ID0gdmlldy5wYXJlbnQgIT09IG51bGwgPyBqb2Iudmlld3MuZ2V0KHZpZXcucGFyZW50KSEgOiBudWxsO1xuICAgICAgICAgIHN0ZXArKztcbiAgICAgICAgfVxuICAgICAgICBicmVhaztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgVHJpZ2dlciBraW5kICR7KG9wLnRyaWdnZXIgYXMgYW55KS5raW5kfSBub3QgaGFuZGxlZGApO1xuICAgIH1cbiAgfVxuXG4gIC8vIEZpbmQgdGhlIGRlZmVyIG9wcywgYW5kIGFzc2lnbiB0aGUgZGF0YSBhYm91dCB0aGVpciB0YXJnZXRzLlxuICBmb3IgKGNvbnN0IHVuaXQgb2Ygam9iLnVuaXRzKSB7XG4gICAgY29uc3QgZGVmZXJzID0gbmV3IE1hcDxpci5YcmVmSWQsIGlyLkRlZmVyT3A+KCk7XG4gICAgZm9yIChjb25zdCBvcCBvZiB1bml0LmNyZWF0ZSkge1xuICAgICAgc3dpdGNoIChvcC5raW5kKSB7XG4gICAgICAgIGNhc2UgaXIuT3BLaW5kLkRlZmVyOlxuICAgICAgICAgIGRlZmVycy5zZXQob3AueHJlZiwgb3ApO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIGlyLk9wS2luZC5EZWZlck9uOlxuICAgICAgICAgIGNvbnN0IGRlZmVyT3AgPSBkZWZlcnMuZ2V0KG9wLmRlZmVyKSE7XG4gICAgICAgICAgcmVzb2x2ZVRyaWdnZXIodW5pdCwgb3AsIGRlZmVyT3AucGxhY2Vob2xkZXJWaWV3KTtcbiAgICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxuY2xhc3MgU2NvcGUge1xuICB0YXJnZXRzID0gbmV3IE1hcDxzdHJpbmcsIHt4cmVmOiBpci5YcmVmSWQ7IHNsb3Q6IGlyLlNsb3RIYW5kbGV9PigpO1xufVxuIl19
@@ -44,4 +44,4 @@ export function collapseEmptyInstructions(job) {
44
44
  }
45
45
  }
46
46
  }
47
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW1wdHlfZWxlbWVudHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb21waWxlci9zcmMvdGVtcGxhdGUvcGlwZWxpbmUvc3JjL3BoYXNlcy9lbXB0eV9lbGVtZW50cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7O0dBTUc7QUFFSCxPQUFPLEtBQUssRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUcvQixNQUFNLFlBQVksR0FBRyxJQUFJLEdBQUcsQ0FBb0M7SUFDOUQsQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLFVBQVUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsWUFBWSxFQUFFLEVBQUUsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDbkUsQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLFlBQVksRUFBRSxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsY0FBYyxFQUFFLEVBQUUsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDekUsQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLE9BQU8sRUFBRSxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsU0FBUyxFQUFFLEVBQUUsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUM7Q0FDM0QsQ0FBQyxDQUFDO0FBRUg7O0dBRUc7QUFDSCxNQUFNLGdCQUFnQixHQUFHLElBQUksR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0FBRW5EOzs7R0FHRztBQUNILE1BQU0sVUFBVSx5QkFBeUIsQ0FBQyxHQUFtQjtJQUMzRCxLQUFLLE1BQU0sSUFBSSxJQUFJLEdBQUcsQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUM3QixLQUFLLE1BQU0sRUFBRSxJQUFJLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUM3Qiw4Q0FBOEM7WUFDOUMsTUFBTSxjQUFjLEdBQUcsWUFBWSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDakQsSUFBSSxjQUFjLEtBQUssU0FBUyxFQUFFLENBQUM7Z0JBQ2pDLFNBQVM7WUFDWCxDQUFDO1lBQ0QsTUFBTSxDQUFDLFNBQVMsRUFBRSxVQUFVLENBQUMsR0FBRyxjQUFjLENBQUM7WUFFL0Msd0NBQXdDO1lBQ3hDLElBQUksTUFBTSxHQUFxQixFQUFFLENBQUMsSUFBSSxDQUFDO1lBQ3ZDLE9BQU8sTUFBTSxLQUFLLElBQUksSUFBSSxnQkFBZ0IsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUM7Z0JBQzVELE1BQU0sR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDO1lBQ3ZCLENBQUM7WUFFRCxrRUFBa0U7WUFDbEUsSUFBSSxNQUFNLEtBQUssSUFBSSxJQUFJLE1BQU0sQ0FBQyxJQUFJLEtBQUssU0FBUyxFQUFFLENBQUM7Z0JBQ2pELDBGQUEwRjtnQkFDMUYseUNBQXlDO2dCQUN4QyxNQUE2QixDQUFDLElBQUksR0FBRyxVQUFVLENBQUM7Z0JBRWpELDhCQUE4QjtnQkFDOUIsRUFBRSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQWMsRUFBRSxDQUFDLENBQUM7WUFDcEMsQ0FBQztRQUNILENBQUM7SUFDSCxDQUFDO0FBQ0gsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmVcbiAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2VcbiAqL1xuXG5pbXBvcnQgKiBhcyBpciBmcm9tICcuLi8uLi9pcic7XG5pbXBvcnQgdHlwZSB7Q29tcGlsYXRpb25Kb2J9IGZyb20gJy4uL2NvbXBpbGF0aW9uJztcblxuY29uc3QgUkVQTEFDRU1FTlRTID0gbmV3IE1hcDxpci5PcEtpbmQsIFtpci5PcEtpbmQsIGlyLk9wS2luZF0+KFtcbiAgW2lyLk9wS2luZC5FbGVtZW50RW5kLCBbaXIuT3BLaW5kLkVsZW1lbnRTdGFydCwgaXIuT3BLaW5kLkVsZW1lbnRdXSxcbiAgW2lyLk9wS2luZC5Db250YWluZXJFbmQsIFtpci5PcEtpbmQuQ29udGFpbmVyU3RhcnQsIGlyLk9wS2luZC5Db250YWluZXJdXSxcbiAgW2lyLk9wS2luZC5JMThuRW5kLCBbaXIuT3BLaW5kLkkxOG5TdGFydCwgaXIuT3BLaW5kLkkxOG5dXSxcbl0pO1xuXG4vKipcbiAqIE9wIGtpbmRzIHRoYXQgc2hvdWxkIG5vdCBwcmV2ZW50IG1lcmdpbmcgb2Ygc3RhcnQvZW5kIG9wcy5cbiAqL1xuY29uc3QgSUdOT1JFRF9PUF9LSU5EUyA9IG5ldyBTZXQoW2lyLk9wS2luZC5QaXBlXSk7XG5cbi8qKlxuICogUmVwbGFjZSBzZXF1ZW5jZXMgb2YgbWVyZ2FibGUgaW5zdHJ1Y3Rpb25zIChlLmcuIGBFbGVtZW50U3RhcnRgIGFuZCBgRWxlbWVudEVuZGApIHdpdGggYVxuICogY29uc29saWRhdGVkIGluc3RydWN0aW9uIChlLmcuIGBFbGVtZW50YCkuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjb2xsYXBzZUVtcHR5SW5zdHJ1Y3Rpb25zKGpvYjogQ29tcGlsYXRpb25Kb2IpOiB2b2lkIHtcbiAgZm9yIChjb25zdCB1bml0IG9mIGpvYi51bml0cykge1xuICAgIGZvciAoY29uc3Qgb3Agb2YgdW5pdC5jcmVhdGUpIHtcbiAgICAgIC8vIEZpbmQgZW5kIG9wcyB0aGF0IG1heSBiZSBhYmxlIHRvIGJlIG1lcmdlZC5cbiAgICAgIGNvbnN0IG9wUmVwbGFjZW1lbnRzID0gUkVQTEFDRU1FTlRTLmdldChvcC5raW5kKTtcbiAgICAgIGlmIChvcFJlcGxhY2VtZW50cyA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuICAgICAgY29uc3QgW3N0YXJ0S2luZCwgbWVyZ2VkS2luZF0gPSBvcFJlcGxhY2VtZW50cztcblxuICAgICAgLy8gTG9jYXRlIHRoZSBwcmV2aW91cyAobm9uLWlnbm9yZWQpIG9wLlxuICAgICAgbGV0IHByZXZPcDogaXIuQ3JlYXRlT3B8bnVsbCA9IG9wLnByZXY7XG4gICAgICB3aGlsZSAocHJldk9wICE9PSBudWxsICYmIElHTk9SRURfT1BfS0lORFMuaGFzKHByZXZPcC5raW5kKSkge1xuICAgICAgICBwcmV2T3AgPSBwcmV2T3AucHJldjtcbiAgICAgIH1cblxuICAgICAgLy8gSWYgdGhlIHByZXZpb3VzIG9wIGlzIHRoZSBjb3JyZXNwb25kaW5nIHN0YXJ0IG9wLCB3ZSBjYW4gbWVncmUuXG4gICAgICBpZiAocHJldk9wICE9PSBudWxsICYmIHByZXZPcC5raW5kID09PSBzdGFydEtpbmQpIHtcbiAgICAgICAgLy8gVHJhbnNtdXRlIHRoZSBzdGFydCBpbnN0cnVjdGlvbiB0byB0aGUgbWVyZ2VkIHZlcnNpb24uIFRoaXMgaXMgc2FmZSBhcyB0aGV5J3JlIGRlc2lnbmVkXG4gICAgICAgIC8vIHRvIGJlIGlkZW50aWNhbCBhcGFydCBmcm9tIHRoZSBga2luZGAuXG4gICAgICAgIChwcmV2T3AgYXMgaXIuT3A8aXIuQ3JlYXRlT3A+KS5raW5kID0gbWVyZ2VkS2luZDtcblxuICAgICAgICAvLyBSZW1vdmUgdGhlIGVuZCBpbnN0cnVjdGlvbi5cbiAgICAgICAgaXIuT3BMaXN0LnJlbW92ZTxpci5DcmVhdGVPcD4ob3ApO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuIl19
47
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW1wdHlfZWxlbWVudHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb21waWxlci9zcmMvdGVtcGxhdGUvcGlwZWxpbmUvc3JjL3BoYXNlcy9lbXB0eV9lbGVtZW50cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7O0dBTUc7QUFFSCxPQUFPLEtBQUssRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUcvQixNQUFNLFlBQVksR0FBRyxJQUFJLEdBQUcsQ0FBb0M7SUFDOUQsQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLFVBQVUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsWUFBWSxFQUFFLEVBQUUsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDbkUsQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLFlBQVksRUFBRSxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsY0FBYyxFQUFFLEVBQUUsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDekUsQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLE9BQU8sRUFBRSxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsU0FBUyxFQUFFLEVBQUUsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUM7Q0FDM0QsQ0FBQyxDQUFDO0FBRUg7O0dBRUc7QUFDSCxNQUFNLGdCQUFnQixHQUFHLElBQUksR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0FBRW5EOzs7R0FHRztBQUNILE1BQU0sVUFBVSx5QkFBeUIsQ0FBQyxHQUFtQjtJQUMzRCxLQUFLLE1BQU0sSUFBSSxJQUFJLEdBQUcsQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUM3QixLQUFLLE1BQU0sRUFBRSxJQUFJLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUM3Qiw4Q0FBOEM7WUFDOUMsTUFBTSxjQUFjLEdBQUcsWUFBWSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDakQsSUFBSSxjQUFjLEtBQUssU0FBUyxFQUFFLENBQUM7Z0JBQ2pDLFNBQVM7WUFDWCxDQUFDO1lBQ0QsTUFBTSxDQUFDLFNBQVMsRUFBRSxVQUFVLENBQUMsR0FBRyxjQUFjLENBQUM7WUFFL0Msd0NBQXdDO1lBQ3hDLElBQUksTUFBTSxHQUF1QixFQUFFLENBQUMsSUFBSSxDQUFDO1lBQ3pDLE9BQU8sTUFBTSxLQUFLLElBQUksSUFBSSxnQkFBZ0IsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUM7Z0JBQzVELE1BQU0sR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDO1lBQ3ZCLENBQUM7WUFFRCxrRUFBa0U7WUFDbEUsSUFBSSxNQUFNLEtBQUssSUFBSSxJQUFJLE1BQU0sQ0FBQyxJQUFJLEtBQUssU0FBUyxFQUFFLENBQUM7Z0JBQ2pELDBGQUEwRjtnQkFDMUYseUNBQXlDO2dCQUN4QyxNQUE2QixDQUFDLElBQUksR0FBRyxVQUFVLENBQUM7Z0JBRWpELDhCQUE4QjtnQkFDOUIsRUFBRSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQWMsRUFBRSxDQUFDLENBQUM7WUFDcEMsQ0FBQztRQUNILENBQUM7SUFDSCxDQUFDO0FBQ0gsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmVcbiAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2VcbiAqL1xuXG5pbXBvcnQgKiBhcyBpciBmcm9tICcuLi8uLi9pcic7XG5pbXBvcnQgdHlwZSB7Q29tcGlsYXRpb25Kb2J9IGZyb20gJy4uL2NvbXBpbGF0aW9uJztcblxuY29uc3QgUkVQTEFDRU1FTlRTID0gbmV3IE1hcDxpci5PcEtpbmQsIFtpci5PcEtpbmQsIGlyLk9wS2luZF0+KFtcbiAgW2lyLk9wS2luZC5FbGVtZW50RW5kLCBbaXIuT3BLaW5kLkVsZW1lbnRTdGFydCwgaXIuT3BLaW5kLkVsZW1lbnRdXSxcbiAgW2lyLk9wS2luZC5Db250YWluZXJFbmQsIFtpci5PcEtpbmQuQ29udGFpbmVyU3RhcnQsIGlyLk9wS2luZC5Db250YWluZXJdXSxcbiAgW2lyLk9wS2luZC5JMThuRW5kLCBbaXIuT3BLaW5kLkkxOG5TdGFydCwgaXIuT3BLaW5kLkkxOG5dXSxcbl0pO1xuXG4vKipcbiAqIE9wIGtpbmRzIHRoYXQgc2hvdWxkIG5vdCBwcmV2ZW50IG1lcmdpbmcgb2Ygc3RhcnQvZW5kIG9wcy5cbiAqL1xuY29uc3QgSUdOT1JFRF9PUF9LSU5EUyA9IG5ldyBTZXQoW2lyLk9wS2luZC5QaXBlXSk7XG5cbi8qKlxuICogUmVwbGFjZSBzZXF1ZW5jZXMgb2YgbWVyZ2FibGUgaW5zdHJ1Y3Rpb25zIChlLmcuIGBFbGVtZW50U3RhcnRgIGFuZCBgRWxlbWVudEVuZGApIHdpdGggYVxuICogY29uc29saWRhdGVkIGluc3RydWN0aW9uIChlLmcuIGBFbGVtZW50YCkuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjb2xsYXBzZUVtcHR5SW5zdHJ1Y3Rpb25zKGpvYjogQ29tcGlsYXRpb25Kb2IpOiB2b2lkIHtcbiAgZm9yIChjb25zdCB1bml0IG9mIGpvYi51bml0cykge1xuICAgIGZvciAoY29uc3Qgb3Agb2YgdW5pdC5jcmVhdGUpIHtcbiAgICAgIC8vIEZpbmQgZW5kIG9wcyB0aGF0IG1heSBiZSBhYmxlIHRvIGJlIG1lcmdlZC5cbiAgICAgIGNvbnN0IG9wUmVwbGFjZW1lbnRzID0gUkVQTEFDRU1FTlRTLmdldChvcC5raW5kKTtcbiAgICAgIGlmIChvcFJlcGxhY2VtZW50cyA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuICAgICAgY29uc3QgW3N0YXJ0S2luZCwgbWVyZ2VkS2luZF0gPSBvcFJlcGxhY2VtZW50cztcblxuICAgICAgLy8gTG9jYXRlIHRoZSBwcmV2aW91cyAobm9uLWlnbm9yZWQpIG9wLlxuICAgICAgbGV0IHByZXZPcDogaXIuQ3JlYXRlT3AgfCBudWxsID0gb3AucHJldjtcbiAgICAgIHdoaWxlIChwcmV2T3AgIT09IG51bGwgJiYgSUdOT1JFRF9PUF9LSU5EUy5oYXMocHJldk9wLmtpbmQpKSB7XG4gICAgICAgIHByZXZPcCA9IHByZXZPcC5wcmV2O1xuICAgICAgfVxuXG4gICAgICAvLyBJZiB0aGUgcHJldmlvdXMgb3AgaXMgdGhlIGNvcnJlc3BvbmRpbmcgc3RhcnQgb3AsIHdlIGNhbiBtZWdyZS5cbiAgICAgIGlmIChwcmV2T3AgIT09IG51bGwgJiYgcHJldk9wLmtpbmQgPT09IHN0YXJ0S2luZCkge1xuICAgICAgICAvLyBUcmFuc211dGUgdGhlIHN0YXJ0IGluc3RydWN0aW9uIHRvIHRoZSBtZXJnZWQgdmVyc2lvbi4gVGhpcyBpcyBzYWZlIGFzIHRoZXkncmUgZGVzaWduZWRcbiAgICAgICAgLy8gdG8gYmUgaWRlbnRpY2FsIGFwYXJ0IGZyb20gdGhlIGBraW5kYC5cbiAgICAgICAgKHByZXZPcCBhcyBpci5PcDxpci5DcmVhdGVPcD4pLmtpbmQgPSBtZXJnZWRLaW5kO1xuXG4gICAgICAgIC8vIFJlbW92ZSB0aGUgZW5kIGluc3RydWN0aW9uLlxuICAgICAgICBpci5PcExpc3QucmVtb3ZlPGlyLkNyZWF0ZU9wPihvcCk7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG4iXX0=
@@ -17,16 +17,19 @@ import * as ir from '../../ir';
17
17
  export function expandSafeReads(job) {
18
18
  for (const unit of job.units) {
19
19
  for (const op of unit.ops()) {
20
- ir.transformExpressionsInOp(op, e => safeTransform(e, { job }), ir.VisitorContextFlag.None);
20
+ ir.transformExpressionsInOp(op, (e) => safeTransform(e, { job }), ir.VisitorContextFlag.None);
21
21
  ir.transformExpressionsInOp(op, ternaryTransform, ir.VisitorContextFlag.None);
22
22
  }
23
23
  }
24
24
  }
25
25
  // A lookup set of all the expression kinds that require a temporary variable to be generated.
26
26
  const requiresTemporary = [
27
- o.InvokeFunctionExpr, o.LiteralArrayExpr, o.LiteralMapExpr, ir.SafeInvokeFunctionExpr,
28
- ir.PipeBindingExpr
29
- ].map(e => e.constructor.name);
27
+ o.InvokeFunctionExpr,
28
+ o.LiteralArrayExpr,
29
+ o.LiteralMapExpr,
30
+ ir.SafeInvokeFunctionExpr,
31
+ ir.PipeBindingExpr,
32
+ ].map((e) => e.constructor.name);
30
33
  function needsTemporaryInSafeAccess(e) {
31
34
  // TODO: We probably want to use an expression visitor to recursively visit all descendents.
32
35
  // However, that would potentially do a lot of extra work (because it cannot short circuit), so we
@@ -55,16 +58,18 @@ function needsTemporaryInSafeAccess(e) {
55
58
  return needsTemporaryInSafeAccess(e.receiver) || needsTemporaryInSafeAccess(e.index);
56
59
  }
57
60
  // TODO: Switch to a method which is exhaustive of newly added expression subtypes.
58
- return e instanceof o.InvokeFunctionExpr || e instanceof o.LiteralArrayExpr ||
59
- e instanceof o.LiteralMapExpr || e instanceof ir.SafeInvokeFunctionExpr ||
60
- e instanceof ir.PipeBindingExpr;
61
+ return (e instanceof o.InvokeFunctionExpr ||
62
+ e instanceof o.LiteralArrayExpr ||
63
+ e instanceof o.LiteralMapExpr ||
64
+ e instanceof ir.SafeInvokeFunctionExpr ||
65
+ e instanceof ir.PipeBindingExpr);
61
66
  }
62
67
  function temporariesIn(e) {
63
68
  const temporaries = new Set();
64
69
  // TODO: Although it's not currently supported by the transform helper, we should be able to
65
70
  // short-circuit exploring the tree to do less work. In particular, we don't have to penetrate
66
71
  // into the subexpressions of temporary assignments.
67
- ir.transformExpressionsInExpression(e, e => {
72
+ ir.transformExpressionsInExpression(e, (e) => {
68
73
  if (e instanceof ir.AssignTemporaryExpr) {
69
74
  temporaries.add(e.xref);
70
75
  }
@@ -75,16 +80,16 @@ function temporariesIn(e) {
75
80
  function eliminateTemporaryAssignments(e, tmps, ctx) {
76
81
  // TODO: We can be more efficient than the transform helper here. We don't need to visit any
77
82
  // descendents of temporary assignments.
78
- ir.transformExpressionsInExpression(e, e => {
83
+ ir.transformExpressionsInExpression(e, (e) => {
79
84
  if (e instanceof ir.AssignTemporaryExpr && tmps.has(e.xref)) {
80
85
  const read = new ir.ReadTemporaryExpr(e.xref);
81
86
  // `TemplateDefinitionBuilder` has the (accidental?) behavior of generating assignments of
82
87
  // temporary variables to themselves. This happens because some subexpression that the
83
88
  // temporary refers to, possibly through nested temporaries, has a function call. We copy that
84
89
  // behavior here.
85
- return ctx.job.compatibility === ir.CompatibilityMode.TemplateDefinitionBuilder ?
86
- new ir.AssignTemporaryExpr(read, read.xref) :
87
- read;
90
+ return ctx.job.compatibility === ir.CompatibilityMode.TemplateDefinitionBuilder
91
+ ? new ir.AssignTemporaryExpr(read, read.xref)
92
+ : read;
88
93
  }
89
94
  return e;
90
95
  }, ir.VisitorContextFlag.None);
@@ -112,12 +117,12 @@ function safeTernaryWithTemporary(guard, body, ctx) {
112
117
  return new ir.SafeTernaryExpr(result[0], body(result[1]));
113
118
  }
114
119
  function isSafeAccessExpression(e) {
115
- return e instanceof ir.SafePropertyReadExpr || e instanceof ir.SafeKeyedReadExpr ||
116
- e instanceof ir.SafeInvokeFunctionExpr;
120
+ return (e instanceof ir.SafePropertyReadExpr ||
121
+ e instanceof ir.SafeKeyedReadExpr ||
122
+ e instanceof ir.SafeInvokeFunctionExpr);
117
123
  }
118
124
  function isUnsafeAccessExpression(e) {
119
- return e instanceof o.ReadPropExpr || e instanceof o.ReadKeyExpr ||
120
- e instanceof o.InvokeFunctionExpr;
125
+ return (e instanceof o.ReadPropExpr || e instanceof o.ReadKeyExpr || e instanceof o.InvokeFunctionExpr);
121
126
  }
122
127
  function isAccessExpression(e) {
123
128
  return isSafeAccessExpression(e) || isUnsafeAccessExpression(e);
@@ -184,4 +189,4 @@ function ternaryTransform(e) {
184
189
  }
185
190
  return new o.ConditionalExpr(new o.BinaryOperatorExpr(o.BinaryOperator.Equals, e.guard, o.NULL_EXPR), o.NULL_EXPR, e.expr);
186
191
  }
187
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXhwYW5kX3NhZmVfcmVhZHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb21waWxlci9zcmMvdGVtcGxhdGUvcGlwZWxpbmUvc3JjL3BoYXNlcy9leHBhbmRfc2FmZV9yZWFkcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7O0dBTUc7QUFFSCxPQUFPLEtBQUssQ0FBQyxNQUFNLCtCQUErQixDQUFDO0FBQ25ELE9BQU8sS0FBSyxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBTy9COzs7Ozs7R0FNRztBQUNILE1BQU0sVUFBVSxlQUFlLENBQUMsR0FBbUI7SUFDakQsS0FBSyxNQUFNLElBQUksSUFBSSxHQUFHLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDN0IsS0FBSyxNQUFNLEVBQUUsSUFBSSxJQUFJLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQztZQUM1QixFQUFFLENBQUMsd0JBQXdCLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsYUFBYSxDQUFDLENBQUMsRUFBRSxFQUFDLEdBQUcsRUFBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxDQUFDO1lBQzFGLEVBQUUsQ0FBQyx3QkFBd0IsQ0FBQyxFQUFFLEVBQUUsZ0JBQWdCLEVBQUUsRUFBRSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ2hGLENBQUM7SUFDSCxDQUFDO0FBQ0gsQ0FBQztBQUVELDhGQUE4RjtBQUM5RixNQUFNLGlCQUFpQixHQUFHO0lBQ3hCLENBQUMsQ0FBQyxrQkFBa0IsRUFBRSxDQUFDLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQyxDQUFDLGNBQWMsRUFBRSxFQUFFLENBQUMsc0JBQXNCO0lBQ3JGLEVBQUUsQ0FBQyxlQUFlO0NBQ25CLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FB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QUFZLEVBQUUsQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO1lBQ3RDLE9BQU8sd0JBQXdCLENBQUMsQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQWUsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUM7UUFDeEYsQ0FBQztJQUNILENBQUM7SUFFRCxPQUFPLENBQUMsQ0FBQztBQUNYLENBQUM7QUFFRCxTQUFTLGdCQUFnQixDQUFDLENBQWU7SUFDdkMsSUFBSSxDQUFDLENBQUMsQ0FBQyxZQUFZLEVBQUUsQ0FBQyxlQUFlLENBQUMsRUFBRSxDQUFDO1FBQ3ZDLE9BQU8sQ0FBQyxDQUFDO0lBQ1gsQ0FBQztJQUNELE9BQU8sSUFBSSxDQUFDLENBQUMsZUFBZSxDQUN4QixJQUFJLENBQUMsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDLENBQUMsY0FBYyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsRUFDdkUsQ0FBQyxDQUFDLFNBQVMsRUFDWCxDQUFDLENBQUMsSUFBSSxDQUNULENBQUM7QUFDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZVxuICovXG5cbmltcG9ydCAqIGFzIG8gZnJvbSAnLi4vLi4vLi4vLi4vb3V0cHV0L291dHB1dF9hc3QnO1xuaW1wb3J0ICogYXMgaXIgZnJvbSAnLi4vLi4vaXInO1xuaW1wb3J0IHtDb21waWxhdGlvbkpvYn0gZnJvbSAnLi4vY29tcGlsYXRpb24nO1xuXG5pbnRlcmZhY2UgU2FmZVRyYW5zZm9ybUNvbnRleHQge1xuICBqb2I6IENvbXBpbGF0aW9uSm9iO1xufVxuXG4vKipcbiAqIFNhZmUgcmVhZCBleHByZXNzaW9ucyBzdWNoIGFzIGBhPy5iYCBoYXZlIGRpZmZlcmVudCBzZW1hbnRpY3MgaW4gQW5ndWxhciB0ZW1wbGF0ZXMgYXNcbiAqIGNvbXBhcmVkIHRvIEphdmFTY3JpcHQuIEluIHBhcnRpY3VsYXIsIHRoZXkgZGVmYXVsdCB0byBgbnVsbGAgaW5zdGVhZCBvZiBgdW5kZWZpbmVkYC4gVGhpcyBwaGFzZVxuICogZmluZHMgYWxsIHVucmVzb2x2ZWQgc2FmZSByZWFkIGV4cHJlc3Npb25zLCBhbmQgY29udmVydHMgdGhlbSBpbnRvIHRoZSBhcHByb3ByaWF0ZSBvdXRwdXQgQVNUXG4gKiByZWFkcywgZ3VhcmRlZCBieSBudWxsIGNoZWNrcy4gV2UgZ2VuZXJhdGUgdGVtcG9yYXJpZXMgYXMgbmVlZGVkLCB0byBhdm9pZCByZS1ldmFsdWF0aW5nIHRoZSBzYW1lXG4gKiBzdWItZXhwcmVzc2lvbiBtdWx0aXBsZSB0aW1lcy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGV4cGFuZFNhZmVSZWFkcyhqb2I6IENvbXBpbGF0aW9uSm9iKTogdm9pZCB7XG4gIGZvciAoY29uc3QgdW5pdCBvZiBqb2IudW5pdHMpIHtcbiAgICBmb3IgKGNvbnN0IG9wIG9mIHVuaXQub3BzKCkpIHtcbiAgICAgIGlyLnRyYW5zZm9ybUV4cHJlc3Npb25zSW5PcChvcCwgZSA9PiBzYWZlVHJhbnNmb3JtKGUsIHtqb2J9KSwgaXIuVmlzaXRvckNvbnRleHRGbGFnLk5vbmUpO1xuICAgICAgaXIudHJhbnNmb3JtRXhwcmVzc2lvbnNJbk9wKG9wLCB0ZXJuYXJ5VHJhbnNmb3JtLCBpci5WaXNpdG9yQ29udGV4dEZsYWcuTm9uZSk7XG4gICAgfVxuICB9XG59XG5cbi8vIEEgbG9va3VwIHNldCBvZiBhbGwgdGhlIGV4cHJlc3Npb24ga2luZHMgdGhhdCByZXF1aXJlIGEgdGVtcG9yYXJ5IHZhcmlhYmxlIHRvIGJlIGdlbmVyYXRlZC5cbmNvbnN0IHJlcXVpcmVzVGVtcG9yYXJ5ID0gW1xuICBvLkludm9rZUZ1bmN0aW9uRXhwciwgby5MaXRlcmFsQXJyYXlFeHByLCBvLkxpdGVyYWxNYXBFeHByLCBpci5TYWZlSW52b2tlRnVuY3Rpb25FeHByLFxuICBpci5QaXBlQmluZGluZ0V4cHJcbl0ubWFwKGUgPT4gZS5jb25zdHJ1Y3Rvci5uYW1lKTtcblxuZnVuY3Rpb24gbmVlZHNUZW1wb3JhcnlJblNhZmVBY2Nlc3MoZTogby5FeHByZXNzaW9uKTogYm9vbGVhbiB7XG4gIC8vIFRPRE86IFdlIHByb2JhYmx5IHdhbnQgdG8gdXNlIGFuIGV4cHJlc3Npb24gdmlzaXRvciB0byByZWN1cnNpdmVseSB2aXNpdCBhbGwgZGVzY2VuZGVudHMuXG4gIC8vIEhvd2V2ZXIsIHRoYXQgd291bGQgcG90ZW50aWFsbHkgZG8gYSBsb3Qgb2YgZXh0cmEgd29yayAoYmVjYXVzZSBpdCBjYW5ub3Qgc2hvcnQgY2lyY3VpdCksIHNvIHdlXG4gIC8vIGltcGxlbWVudCB0aGUgbG9naWMgb3Vyc2VsdmVzIGZvciBub3cuXG4gIGlmIChlIGluc3RhbmNlb2Ygby5VbmFyeU9wZXJhdG9yRXhwcikge1xuICAgIHJldHVybiBuZWVkc1RlbXBvcmFyeUluU2FmZUFjY2VzcyhlLmV4cHIpO1xuICB9IGVsc2UgaWYgKGUgaW5zdGFuY2VvZiBvLkJpbmFyeU9wZXJhdG9yRXhwcikge1xuICAgIHJldHVybiBuZWVkc1RlbXBvcmFyeUluU2FmZUFjY2VzcyhlLmxocykgfHwgbmVlZHNUZW1wb3JhcnlJblNhZmVBY2Nlc3MoZS5yaHMpO1xuICB9IGVsc2UgaWYgKGUgaW5zdGFuY2VvZiBvLkNvbmRpdGlvbmFsRXhwcikge1xuICAgIGlmIChlLmZhbHNlQ2FzZSAmJiBuZWVkc1RlbXBvcmFyeUluU2FmZUFjY2VzcyhlLmZhbHNlQ2FzZSkpIHJldHVybiB0cnVlO1xuICAgIHJldHVybiBuZWVkc1RlbXBvcmFyeUluU2FmZUFjY2VzcyhlLmNvbmRpdGlvbikgfHwgbmVlZHNUZW1wb3JhcnlJblNhZmVBY2Nlc3MoZS50cnVlQ2FzZSk7XG4gIH0gZWxzZSBpZiAoZSBpbnN0YW5jZW9mIG8uTm90RXhwcikge1xuICAgIHJldHVybiBuZWVkc1RlbXBvcmFyeUluU2FmZUFjY2VzcyhlLmNvbmRpdGlvbik7XG4gIH0gZWxzZSBpZiAoZSBpbnN0YW5jZW9mIGlyLkFzc2lnblRlbXBvcmFyeUV4cHIpIHtcbiAgICByZXR1cm4gbmVlZHNUZW1wb3JhcnlJblNhZmVBY2Nlc3MoZS5leHByKTtcbiAgfSBlbHNlIGlmIChlIGluc3RhbmNlb2Ygby5SZWFkUHJvcEV4cHIpIHtcbiAgICByZXR1cm4gbmVlZHNUZW1wb3JhcnlJblNhZmVBY2Nlc3MoZS5yZWNlaXZlcik7XG4gIH0gZWxzZSBpZiAoZSBpbnN0YW5jZW9mIG8uUmVhZEtleUV4cHIpIHtcbiAgICByZXR1cm4gbmVlZHNUZW1wb3JhcnlJblNhZmVBY2Nlc3MoZS5yZWNlaXZlcikgfHwgbmVlZHNUZW1wb3JhcnlJblNhZmVBY2Nlc3MoZS5pbmRleCk7XG4gIH1cbiAgLy8gVE9ETzogU3dpdGNoIHRvIGEgbWV0aG9kIHdoaWNoIGlzIGV4aGF1c3RpdmUgb2YgbmV3bHkgYWRkZWQgZXhwcmVzc2lvbiBzdWJ0eXBlcy5cbiAgcmV0dXJuIGUgaW5zdGFuY2VvZiBvLkludm9rZUZ1bmN0aW9uRXhwciB8fCBlIGluc3RhbmNlb2Ygby5MaXRlcmFsQXJyYXlFeHByIHx8XG4gICAgICBlIGluc3RhbmNlb2Ygby5MaXRlcmFsTWFwRXhwciB8fCBlIGluc3RhbmNlb2YgaXIuU2FmZUludm9rZUZ1bmN0aW9uRXhwciB8fFxuICAgICAgZSBpbnN0YW5jZW9mIGlyLlBpcGVCaW5kaW5nRXhwcjtcbn1cblxuZnVuY3Rpb24gdGVtcG9yYXJpZXNJbihlOiBvLkV4cHJlc3Npb24pOiBTZXQ8aXIuWHJlZklkPiB7XG4gIGNvbnN0IHRlbXBvcmFyaWVzID0gbmV3IFNldDxpci5YcmVmSWQ+KCk7XG4gIC8vIFRPRE86IEFsdGhvdWdoIGl0J3Mgbm90IGN1cnJlbnRseSBzdXBwb3J0ZWQgYnkgdGhlIHRyYW5zZm9ybSBoZWxwZXIsIHdlIHNob3VsZCBiZSBhYmxlIHRvXG4gIC8vIHNob3J0LWNpcmN1aXQgZXhwbG9yaW5nIHRoZSB0cmVlIHRvIGRvIGxlc3Mgd29yay4gSW4gcGFydGljdWxhciwgd2UgZG9uJ3QgaGF2ZSB0byBwZW5ldHJhdGVcbiAgLy8gaW50byB0aGUgc3ViZXhwcmVzc2lvbnMgb2YgdGVtcG9yYXJ5IGFzc2lnbm1lbnRzLlxuICBpci50cmFuc2Zvcm1FeHByZXNzaW9uc0luRXhwcmVzc2lvbihlLCBlID0+IHtcbiAgICBpZiAoZSBpbnN0YW5jZW9mIGlyLkFzc2lnblRlbXBvcmFyeUV4cHIpIHtcbiAgICAgIHRlbXBvcmFyaWVzLmFkZChlLnhyZWYpO1xuICAgIH1cbiAgICByZXR1cm4gZTtcbiAgfSwgaXIuVmlzaXRvckNvbnRleHRGbGFnLk5vbmUpO1xuICByZXR1cm4gdGVtcG9yYXJpZXM7XG59XG5cbmZ1bmN0aW9uIGVsaW1pbmF0ZVRlbXBvcmFyeUFzc2lnbm1lbnRzKFxuICAgIGU6IG8uRXhwcmVzc2lvbiwgdG1wczogU2V0PGlyLlhyZWZJZD4sIGN0eDogU2FmZVRyYW5zZm9ybUNvbnRleHQpOiBvLkV4cHJlc3Npb24ge1xuICAvLyBUT0RPOiBXZSBjYW4gYmUgbW9yZSBlZmZpY2llbnQgdGhhbiB0aGUgdHJhbnNmb3JtIGhlbHBlciBoZXJlLiBXZSBkb24ndCBuZWVkIHRvIHZpc2l0IGFueVxuICAvLyBkZXNjZW5kZW50cyBvZiB0ZW1wb3JhcnkgYXNzaWdubWVudHMuXG4gIGlyLnRyYW5zZm9ybUV4cHJlc3Npb25zSW5FeHByZXNzaW9uKGUsIGUgPT4ge1xuICAgIGlmIChlIGluc3RhbmNlb2YgaXIuQXNzaWduVGVtcG9yYXJ5RXhwciAmJiB0bXBzLmhhcyhlLnhyZWYpKSB7XG4gICAgICBjb25zdCByZWFkID0gbmV3IGlyLlJlYWRUZW1wb3JhcnlFeHByKGUueHJlZik7XG4gICAgICAvLyBgVGVtcGxhdGVEZWZpbml0aW9uQnVpbGRlcmAgaGFzIHRoZSAoYWNjaWRlbnRhbD8pIGJlaGF2aW9yIG9mIGdlbmVyYXRpbmcgYXNzaWdubWVudHMgb2ZcbiAgICAgIC8vIHRlbXBvcmFyeSB2YXJpYWJsZXMgdG8gdGhlbXNlbHZlcy4gVGhpcyBoYXBwZW5zIGJlY2F1c2Ugc29tZSBzdWJleHByZXNzaW9uIHRoYXQgdGhlXG4gICAgICAvLyB0ZW1wb3JhcnkgcmVmZXJzIHRvLCBwb3NzaWJseSB0aHJvdWdoIG5lc3RlZCB0ZW1wb3JhcmllcywgaGFzIGEgZnVuY3Rpb24gY2FsbC4gV2UgY29weSB0aGF0XG4gICAgICAvLyBiZWhhdmlvciBoZXJlLlxuICAgICAgcmV0dXJuIGN0eC5qb2IuY29tcGF0aWJpbGl0eSA9PT0gaXIuQ29tcGF0aWJpbGl0eU1vZGUuVGVtcGxhdGVEZWZpbml0aW9uQnVpbGRlciA/XG4gICAgICAgICAgbmV3IGlyLkFzc2lnblRlbXBvcmFyeUV4cHIocmVhZCwgcmVhZC54cmVmKSA6XG4gICAgICAgICAgcmVhZDtcbiAgICB9XG4gICAgcmV0dXJuIGU7XG4gIH0sIGlyLlZpc2l0b3JDb250ZXh0RmxhZy5Ob25lKTtcbiAgcmV0dXJuIGU7XG59XG5cbi8qKlxuICogQ3JlYXRlcyBhIHNhZmUgdGVybmFyeSBndWFyZGVkIGJ5IHRoZSBpbnB1dCBleHByZXNzaW9uLCBhbmQgd2l0aCBhIGJvZHkgZ2VuZXJhdGVkIGJ5IHRoZSBwcm92aWRlZFxuICogY2FsbGJhY2sgb24gdGhlIGlucHV0IGV4cHJlc3Npb24uIEdlbmVyYXRlcyBhIHRlbXBvcmFyeSB2YXJpYWJsZSBhc3NpZ25tZW50IGlmIG5lZWRlZCwgYW5kXG4gKiBkZWR1cGxpY2F0ZXMgbmVzdGVkIHRlbXBvcmFyeSBhc3NpZ25tZW50cyBpZiBuZWVkZWQuXG4gKi9cbmZ1bmN0aW9uIHNhZmVUZXJuYXJ5V2l0aFRlbXBvcmFyeShcbiAgICBndWFyZDogby5FeHByZXNzaW9uLCBib2R5OiAoZTogby5FeHByZXNzaW9uKSA9PiBvLkV4cHJlc3Npb24sXG4gICAgY3R4OiBTYWZlVHJhbnNmb3JtQ29udGV4dCk6IGlyLlNhZmVUZXJuYXJ5RXhwciB7XG4gIGxldCByZXN1bHQ6IFtvLkV4cHJlc3Npb24sIG8uRXhwcmVzc2lvbl07XG4gIGlmIChuZWVkc1RlbXBvcmFyeUluU2FmZUFjY2VzcyhndWFyZCkpIHtcbiAgICBjb25zdCB4cmVmID0gY3R4LmpvYi5hbGxvY2F0ZVhyZWZJZCgpO1xuICAgIHJlc3VsdCA9IFtuZXcgaXIuQXNzaWduVGVtcG9yYXJ5RXhwcihndWFyZCwgeHJlZiksIG5ldyBpci5SZWFkVGVtcG9yYXJ5RXhwcih4cmVmKV07XG4gIH0gZWxzZSB7XG4gICAgcmVzdWx0ID0gW2d1YXJkLCBndWFyZC5jbG9uZSgpXTtcbiAgICAvLyBDb25zaWRlciBhbiBleHByZXNzaW9uIGxpa2UgYGE/LltiPy5jKCldPy5kYC4gVGhlIGBiPy5jKClgIHdpbGwgYmUgdHJhbnNmb3JtZWQgZmlyc3QsXG4gICAgLy8gaW50cm9kdWNpbmcgYSB0ZW1wb3JhcnkgYXNzaWdubWVudCBpbnRvIHRoZSBrZXkuIFRoZW4sIGFzIHBhcnQgb2YgZXhwYW5kaW5nIHRoZSBgPy5kYC4gVGhhdFxuICAgIC8vIGFzc2lnbm1lbnQgd2lsbCBiZSBkdXBsaWNhdGVkIGludG8gYm90aCB0aGUgZ3VhcmQgYW5kIGV4cHJlc3Npb24gc2lkZXMuIFdlIGRlLWR1cGxpY2F0ZSBpdCxcbiAgICAvLyBieSB0cmFuc2Zvcm1pbmcgaXQgZnJvbSBhbiBhc3NpZ25tZW50IGludG8gYSByZWFkIG9uIHRoZSBleHByZXNzaW9uIHNpZGUuXG4gICAgZWxpbWluYXRlVGVtcG9yYXJ5QXNzaWdubWVudHMocmVzdWx0WzFdLCB0ZW1wb3Jhcmllc0luKHJlc3VsdFswXSksIGN0eCk7XG4gIH1cbiAgcmV0dXJuIG5ldyBpci5TYWZlVGVybmFyeUV4cHIocmVzdWx0WzBdLCBib2R5KHJlc3VsdFsxXSkpO1xufVxuXG5mdW5jdGlvbiBpc1NhZmVBY2Nlc3NFeHByZXNzaW9uKGU6IG8uRXhwcmVzc2lvbik6IGUgaXMgaXIuU2FmZVByb3BlcnR5UmVhZEV4cHJ8XG4gICAgaXIuU2FmZUtleWVkUmVhZEV4cHJ8aXIuU2FmZUludm9rZUZ1bmN0aW9uRXhwciB7XG4gIHJldHVybiBlIGluc3RhbmNlb2YgaXIuU2FmZVByb3BlcnR5UmVhZEV4cHIgfHwgZSBpbnN0YW5jZW9mIGlyLlNhZmVLZXllZFJlYWRFeHByIHx8XG4gICAgICBlIGluc3RhbmNlb2YgaXIuU2FmZUludm9rZUZ1bmN0aW9uRXhwcjtcbn1cblxuZnVuY3Rpb24gaXNVbnNhZmVBY2Nlc3NFeHByZXNzaW9uKGU6IG8uRXhwcmVzc2lvbik6IGUgaXMgby5SZWFkUHJvcEV4cHJ8by5SZWFkS2V5RXhwcnxcbiAgICBvLkludm9rZUZ1bmN0aW9uRXhwciB7XG4gIHJldHVybiBlIGluc3RhbmNlb2Ygby5SZWFkUHJvcEV4cHIgfHwgZSBpbnN0YW5jZW9mIG8uUmVhZEtleUV4cHIgfHxcbiAgICAgIGUgaW5zdGFuY2VvZiBvLkludm9rZUZ1bmN0aW9uRXhwcjtcbn1cblxuZnVuY3Rpb24gaXNBY2Nlc3NFeHByZXNzaW9uKGU6IG8uRXhwcmVzc2lvbik6IGUgaXMgby5SZWFkUHJvcEV4cHJ8aXIuU2FmZVByb3BlcnR5UmVhZEV4cHJ8XG4gICAgby5SZWFkS2V5RXhwcnxpci5TYWZlS2V5ZWRSZWFkRXhwcnxvLkludm9rZUZ1bmN0aW9uRXhwcnxpci5TYWZlSW52b2tlRnVuY3Rpb25FeHByIHtcbiAgcmV0dXJuIGlzU2FmZUFjY2Vzc0V4cHJlc3Npb24oZSkgfHwgaXNVbnNhZmVBY2Nlc3NFeHByZXNzaW9uKGUpO1xufVxuXG5mdW5jdGlvbiBkZWVwZXN0U2FmZVRlcm5hcnkoZTogby5FeHByZXNzaW9uKTogaXIuU2FmZVRlcm5hcnlFeHByfG51bGwge1xuICBpZiAoaXNBY2Nlc3NFeHByZXNzaW9uKGUpICYmIGUucmVjZWl2ZXIgaW5zdGFuY2VvZiBpci5TYWZlVGVybmFyeUV4cHIpIHtcbiAgICBsZXQgc3QgPSBlLnJlY2VpdmVyO1xuICAgIHdoaWxlIChzdC5leHByIGluc3RhbmNlb2YgaXIuU2FmZVRlcm5hcnlFeHByKSB7XG4gICAgICBzdCA9IHN0LmV4cHI7XG4gICAgfVxuICAgIHJldHVybiBzdDtcbiAgfVxuICByZXR1cm4gbnVsbDtcbn1cblxuLy8gVE9ETzogV2hlbiBzdHJpY3QgY29tcGF0aWJpbGl0eSB3aXRoIFRlbXBsYXRlRGVmaW5pdGlvbkJ1aWxkZXIgaXMgbm90IHJlcXVpcmVkLCB3ZSBjYW4gdXNlIGAmJmBcbi8vIGluc3RlYWQgdG8gc2F2ZSBzb21lIGNvZGUgc2l6ZS5cbmZ1bmN0aW9uIHNhZmVUcmFuc2Zvcm0oZTogby5FeHByZXNzaW9uLCBjdHg6IFNhZmVUcmFuc2Zvcm1Db250ZXh0KTogby5FeHByZXNzaW9uIHtcbiAgaWYgKCFpc0FjY2Vzc0V4cHJlc3Npb24oZSkpIHtcbiAgICByZXR1cm4gZTtcbiAgfVxuXG4gIGNvbnN0IGRzdCA9IGRlZXBlc3RTYWZlVGVybmFyeShlKTtcblxuICBpZiAoZHN0KSB7XG4gICAgaWYgKGUgaW5zdGFuY2VvZiBvLkludm9rZUZ1bmN0aW9uRXhwcikge1xuICAgICAgZHN0LmV4cHIgPSBkc3QuZXhwci5jYWxsRm4oZS5hcmdzKTtcbiAgICAgIHJldHVybiBlLnJlY2VpdmVyO1xuICAgIH1cbiAgICBpZiAoZSBpbnN0YW5jZW9mIG8uUmVhZFByb3BFeHByKSB7XG4gICAgICBkc3QuZXhwciA9IGRzdC5leHByLnByb3AoZS5uYW1lKTtcbiAgICAgIHJldHVybiBlLnJlY2VpdmVyO1xuICAgIH1cbiAgICBpZiAoZSBpbnN0YW5jZW9mIG8uUmVhZEtleUV4cHIpIHtcbiAgICAgIGRzdC5leHByID0gZHN0LmV4cHIua2V5KGUuaW5kZXgpO1xuICAgICAgcmV0dXJuIGUucmVjZWl2ZXI7XG4gICAgfVxuICAgIGlmIChlIGluc3RhbmNlb2YgaXIuU2FmZUludm9rZUZ1bmN0aW9uRXhwcikge1xuICAgICAgZHN0LmV4cHIgPSBzYWZlVGVybmFyeVdpdGhUZW1wb3JhcnkoZHN0LmV4cHIsIChyOiBvLkV4cHJlc3Npb24pID0+IHIuY2FsbEZuKGUuYXJncyksIGN0eCk7XG4gICAgICByZXR1cm4gZS5yZWNlaXZlcjtcbiAgICB9XG4gICAgaWYgKGUgaW5zdGFuY2VvZiBpci5TYWZlUHJvcGVydHlSZWFkRXhwcikge1xuICAgICAgZHN0LmV4cHIgPSBzYWZlVGVybmFyeVdpdGhUZW1wb3JhcnkoZHN0LmV4cHIsIChyOiBvLkV4cHJlc3Npb24pID0+IHIucHJvcChlLm5hbWUpLCBjdHgpO1xuICAgICAgcmV0dXJuIGUucmVjZWl2ZXI7XG4gICAgfVxuICAgIGlmIChlIGluc3RhbmNlb2YgaXIuU2FmZUtleWVkUmVhZEV4cHIpIHtcbiAgICAgIGRzdC5leHByID0gc2FmZVRlcm5hcnlXaXRoVGVtcG9yYXJ5KGRzdC5leHByLCAocjogby5FeHByZXNzaW9uKSA9PiByLmtleShlLmluZGV4KSwgY3R4KTtcbiAgICAgIHJldHVybiBlLnJlY2VpdmVyO1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICBpZiAoZSBpbnN0YW5jZW9mIGlyLlNhZmVJbnZva2VGdW5jdGlvbkV4cHIpIHtcbiAgICAgIHJldHVybiBzYWZlVGVybmFyeVdpdGhUZW1wb3JhcnkoZS5yZWNlaXZlciwgKHI6IG8uRXhwcmVzc2lvbikgPT4gci5jYWxsRm4oZS5hcmdzKSwgY3R4KTtcbiAgICB9XG4gICAgaWYgKGUgaW5zdGFuY2VvZiBpci5TYWZlUHJvcGVydHlSZWFkRXhwcikge1xuICAgICAgcmV0dXJuIHNhZmVUZXJuYXJ5V2l0aFRlbXBvcmFyeShlLnJlY2VpdmVyLCAocjogby5FeHByZXNzaW9uKSA9PiByLnByb3AoZS5uYW1lKSwgY3R4KTtcbiAgICB9XG4gICAgaWYgKGUgaW5zdGFuY2VvZiBpci5TYWZlS2V5ZWRSZWFkRXhwcikge1xuICAgICAgcmV0dXJuIHNhZmVUZXJuYXJ5V2l0aFRlbXBvcmFyeShlLnJlY2VpdmVyLCAocjogby5FeHByZXNzaW9uKSA9PiByLmtleShlLmluZGV4KSwgY3R4KTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gZTtcbn1cblxuZnVuY3Rpb24gdGVybmFyeVRyYW5zZm9ybShlOiBvLkV4cHJlc3Npb24pOiBvLkV4cHJlc3Npb24ge1xuICBpZiAoIShlIGluc3RhbmNlb2YgaXIuU2FmZVRlcm5hcnlFeHByKSkge1xuICAgIHJldHVybiBlO1xuICB9XG4gIHJldHVybiBuZXcgby5Db25kaXRpb25hbEV4cHIoXG4gICAgICBuZXcgby5CaW5hcnlPcGVyYXRvckV4cHIoby5CaW5hcnlPcGVyYXRvci5FcXVhbHMsIGUuZ3VhcmQsIG8uTlVMTF9FWFBSKSxcbiAgICAgIG8uTlVMTF9FWFBSLFxuICAgICAgZS5leHByLFxuICApO1xufVxuIl19
192
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXhwYW5kX3NhZmVfcmVhZHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb21waWxlci9zcmMvdGVtcGxhdGUvcGlwZWxpbmUvc3JjL3BoYXNlcy9leHBhbmRfc2FmZV9yZWFkcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7O0dBTUc7QUFFSCxPQUFPLEtBQUssQ0FBQyxNQUFNLCtCQUErQixDQUFDO0FBQ25ELE9BQU8sS0FBSyxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBTy9COzs7Ozs7R0FNRztBQUNILE1BQU0sVUFBVSxlQUFlLENBQUMsR0FBbUI7SUFDakQsS0FBSyxNQUFNLElBQUksSUFBSSxHQUFHLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDN0IsS0FBSyxNQUFNLEVBQUUsSUFBSSxJQUFJLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQztZQUM1QixFQUFFLENBQUMsd0JBQXdCLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxhQUFhLENBQUMsQ0FBQyxFQUFFLEVBQUMsR0FBRyxFQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDNUYsRUFBRSxDQUFDLHdCQUF3QixDQUFDLEVBQUUsRUFBRSxnQkFBZ0IsRUFBRSxFQUFFLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDaEYsQ0FBQztJQUNILENBQUM7QUFDSCxDQUFDO0FBRUQsOEZBQThGO0FBQzlGLE1BQU0saUJBQWlCLEdBQUc7SUFDeEIsQ0FBQyxDQUFDLGtCQUFrQjtJQUNwQixDQUFDLENBQUMsZ0JBQWdCO0lBQ2xCLENBQUMsQ0FBQyxjQUFjO0lBQ2hCLEVBQUUsQ0FBQyxzQkFBc0I7SUFDekIsRUFBRSxDQUFDLGVBQWU7Q0FDbkIsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMs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SUFBSSxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUM7UUFDeEYsQ0FBQztRQUNELElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO1lBQ3RDLE9BQU8sd0JBQXdCLENBQUMsQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQWUsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUM7UUFDeEYsQ0FBQztJQUNILENBQUM7SUFFRCxPQUFPLENBQUMsQ0FBQztBQUNYLENBQUM7QUFFRCxTQUFTLGdCQUFnQixDQUFDLENBQWU7SUFDdkMsSUFBSSxDQUFDLENBQUMsQ0FBQyxZQUFZLEVBQUUsQ0FBQyxlQUFlLENBQUMsRUFBRSxDQUFDO1FBQ3ZDLE9BQU8sQ0FBQyxDQUFDO0lBQ1gsQ0FBQztJQUNELE9BQU8sSUFBSSxDQUFDLENBQUMsZUFBZSxDQUMxQixJQUFJLENBQUMsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDLENBQUMsY0FBYyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsRUFDdkUsQ0FBQyxDQUFDLFNBQVMsRUFDWCxDQUFDLENBQUMsSUFBSSxDQUNQLENBQUM7QUFDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZVxuICovXG5cbmltcG9ydCAqIGFzIG8gZnJvbSAnLi4vLi4vLi4vLi4vb3V0cHV0L291dHB1dF9hc3QnO1xuaW1wb3J0ICogYXMgaXIgZnJvbSAnLi4vLi4vaXInO1xuaW1wb3J0IHtDb21waWxhdGlvbkpvYn0gZnJvbSAnLi4vY29tcGlsYXRpb24nO1xuXG5pbnRlcmZhY2UgU2FmZVRyYW5zZm9ybUNvbnRleHQge1xuICBqb2I6IENvbXBpbGF0aW9uSm9iO1xufVxuXG4vKipcbiAqIFNhZmUgcmVhZCBleHByZXNzaW9ucyBzdWNoIGFzIGBhPy5iYCBoYXZlIGRpZmZlcmVudCBzZW1hbnRpY3MgaW4gQW5ndWxhciB0ZW1wbGF0ZXMgYXNcbiAqIGNvbXBhcmVkIHRvIEphdmFTY3JpcHQuIEluIHBhcnRpY3VsYXIsIHRoZXkgZGVmYXVsdCB0byBgbnVsbGAgaW5zdGVhZCBvZiBgdW5kZWZpbmVkYC4gVGhpcyBwaGFzZVxuICogZmluZHMgYWxsIHVucmVzb2x2ZWQgc2FmZSByZWFkIGV4cHJlc3Npb25zLCBhbmQgY29udmVydHMgdGhlbSBpbnRvIHRoZSBhcHByb3ByaWF0ZSBvdXRwdXQgQVNUXG4gKiByZWFkcywgZ3VhcmRlZCBieSBudWxsIGNoZWNrcy4gV2UgZ2VuZXJhdGUgdGVtcG9yYXJpZXMgYXMgbmVlZGVkLCB0byBhdm9pZCByZS1ldmFsdWF0aW5nIHRoZSBzYW1lXG4gKiBzdWItZXhwcmVzc2lvbiBtdWx0aXBsZSB0aW1lcy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGV4cGFuZFNhZmVSZWFkcyhqb2I6IENvbXBpbGF0aW9uSm9iKTogdm9pZCB7XG4gIGZvciAoY29uc3QgdW5pdCBvZiBqb2IudW5pdHMpIHtcbiAgICBmb3IgKGNvbnN0IG9wIG9mIHVuaXQub3BzKCkpIHtcbiAgICAgIGlyLnRyYW5zZm9ybUV4cHJlc3Npb25zSW5PcChvcCwgKGUpID0+IHNhZmVUcmFuc2Zvcm0oZSwge2pvYn0pLCBpci5WaXNpdG9yQ29udGV4dEZsYWcuTm9uZSk7XG4gICAgICBpci50cmFuc2Zvcm1FeHByZXNzaW9uc0luT3Aob3AsIHRlcm5hcnlUcmFuc2Zvcm0sIGlyLlZpc2l0b3JDb250ZXh0RmxhZy5Ob25lKTtcbiAgICB9XG4gIH1cbn1cblxuLy8gQSBsb29rdXAgc2V0IG9mIGFsbCB0aGUgZXhwcmVzc2lvbiBraW5kcyB0aGF0IHJlcXVpcmUgYSB0ZW1wb3JhcnkgdmFyaWFibGUgdG8gYmUgZ2VuZXJhdGVkLlxuY29uc3QgcmVxdWlyZXNUZW1wb3JhcnkgPSBbXG4gIG8uSW52b2tlRnVuY3Rpb25FeHByLFxuICBvLkxpdGVyYWxBcnJheUV4cHIsXG4gIG8uTGl0ZXJhbE1hcEV4cHIsXG4gIGlyLlNhZmVJbnZva2VGdW5jdGlvbkV4cHIsXG4gIGlyLlBpcGVCaW5kaW5nRXhwcixcbl0ubWFwKChlKSA9PiBlLmNvbnN0cnVjdG9yLm5hbWUpO1xuXG5mdW5jdGlvbiBuZWVkc1RlbXBvcmFyeUluU2FmZUFjY2VzcyhlOiBvLkV4cHJlc3Npb24pOiBib29sZWFuIHtcbiAgLy8gVE9ETzogV2UgcHJvYmFibHkgd2FudCB0byB1c2UgYW4gZXhwcmVzc2lvbiB2aXNpdG9yIHRvIHJlY3Vyc2l2ZWx5IHZpc2l0IGFsbCBkZXNjZW5kZW50cy5cbiAgLy8gSG93ZXZlciwgdGhhdCB3b3VsZCBwb3RlbnRpYWxseSBkbyBhIGxvdCBvZiBleHRyYSB3b3JrIChiZWNhdXNlIGl0IGNhbm5vdCBzaG9ydCBjaXJjdWl0KSwgc28gd2VcbiAgLy8gaW1wbGVtZW50IHRoZSBsb2dpYyBvdXJzZWx2ZXMgZm9yIG5vdy5cbiAgaWYgKGUgaW5zdGFuY2VvZiBvLlVuYXJ5T3BlcmF0b3JFeHByKSB7XG4gICAgcmV0dXJuIG5lZWRzVGVtcG9yYXJ5SW5TYWZlQWNjZXNzKGUuZXhwcik7XG4gIH0gZWxzZSBpZiAoZSBpbnN0YW5jZW9mIG8uQmluYXJ5T3BlcmF0b3JFeHByKSB7XG4gICAgcmV0dXJuIG5lZWRzVGVtcG9yYXJ5SW5TYWZlQWNjZXNzKGUubGhzKSB8fCBuZWVkc1RlbXBvcmFyeUluU2FmZUFjY2VzcyhlLnJocyk7XG4gIH0gZWxzZSBpZiAoZSBpbnN0YW5jZW9mIG8uQ29uZGl0aW9uYWxFeHByKSB7XG4gICAgaWYgKGUuZmFsc2VDYXNlICYmIG5lZWRzVGVtcG9yYXJ5SW5TYWZlQWNjZXNzKGUuZmFsc2VDYXNlKSkgcmV0dXJuIHRydWU7XG4gICAgcmV0dXJuIG5lZWRzVGVtcG9yYXJ5SW5TYWZlQWNjZXNzKGUuY29uZGl0aW9uKSB8fCBuZWVkc1RlbXBvcmFyeUluU2FmZUFjY2VzcyhlLnRydWVDYXNlKTtcbiAgfSBlbHNlIGlmIChlIGluc3RhbmNlb2Ygby5Ob3RFeHByKSB7XG4gICAgcmV0dXJuIG5lZWRzVGVtcG9yYXJ5SW5TYWZlQWNjZXNzKGUuY29uZGl0aW9uKTtcbiAgfSBlbHNlIGlmIChlIGluc3RhbmNlb2YgaXIuQXNzaWduVGVtcG9yYXJ5RXhwcikge1xuICAgIHJldHVybiBuZWVkc1RlbXBvcmFyeUluU2FmZUFjY2VzcyhlLmV4cHIpO1xuICB9IGVsc2UgaWYgKGUgaW5zdGFuY2VvZiBvLlJlYWRQcm9wRXhwcikge1xuICAgIHJldHVybiBuZWVkc1RlbXBvcmFyeUluU2FmZUFjY2VzcyhlLnJlY2VpdmVyKTtcbiAgfSBlbHNlIGlmIChlIGluc3RhbmNlb2Ygby5SZWFkS2V5RXhwcikge1xuICAgIHJldHVybiBuZWVkc1RlbXBvcmFyeUluU2FmZUFjY2VzcyhlLnJlY2VpdmVyKSB8fCBuZWVkc1RlbXBvcmFyeUluU2FmZUFjY2VzcyhlLmluZGV4KTtcbiAgfVxuICAvLyBUT0RPOiBTd2l0Y2ggdG8gYSBtZXRob2Qgd2hpY2ggaXMgZXhoYXVzdGl2ZSBvZiBuZXdseSBhZGRlZCBleHByZXNzaW9uIHN1YnR5cGVzLlxuICByZXR1cm4gKFxuICAgIGUgaW5zdGFuY2VvZiBvLkludm9rZUZ1bmN0aW9uRXhwciB8fFxuICAgIGUgaW5zdGFuY2VvZiBvLkxpdGVyYWxBcnJheUV4cHIgfHxcbiAgICBlIGluc3RhbmNlb2Ygby5MaXRlcmFsTWFwRXhwciB8fFxuICAgIGUgaW5zdGFuY2VvZiBpci5TYWZlSW52b2tlRnVuY3Rpb25FeHByIHx8XG4gICAgZSBpbnN0YW5jZW9mIGlyLlBpcGVCaW5kaW5nRXhwclxuICApO1xufVxuXG5mdW5jdGlvbiB0ZW1wb3Jhcmllc0luKGU6IG8uRXhwcmVzc2lvbik6IFNldDxpci5YcmVmSWQ+IHtcbiAgY29uc3QgdGVtcG9yYXJpZXMgPSBuZXcgU2V0PGlyLlhyZWZJZD4oKTtcbiAgLy8gVE9ETzogQWx0aG91Z2ggaXQncyBub3QgY3VycmVudGx5IHN1cHBvcnRlZCBieSB0aGUgdHJhbnNmb3JtIGhlbHBlciwgd2Ugc2hvdWxkIGJlIGFibGUgdG9cbiAgLy8gc2hvcnQtY2lyY3VpdCBleHBsb3JpbmcgdGhlIHRyZWUgdG8gZG8gbGVzcyB3b3JrLiBJbiBwYXJ0aWN1bGFyLCB3ZSBkb24ndCBoYXZlIHRvIHBlbmV0cmF0ZVxuICAvLyBpbnRvIHRoZSBzdWJleHByZXNzaW9ucyBvZiB0ZW1wb3JhcnkgYXNzaWdubWVudHMuXG4gIGlyLnRyYW5zZm9ybUV4cHJlc3Npb25zSW5FeHByZXNzaW9uKFxuICAgIGUsXG4gICAgKGUpID0+IHtcbiAgICAgIGlmIChlIGluc3RhbmNlb2YgaXIuQXNzaWduVGVtcG9yYXJ5RXhwcikge1xuICAgICAgICB0ZW1wb3Jhcmllcy5hZGQoZS54cmVmKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBlO1xuICAgIH0sXG4gICAgaXIuVmlzaXRvckNvbnRleHRGbGFnLk5vbmUsXG4gICk7XG4gIHJldHVybiB0ZW1wb3Jhcmllcztcbn1cblxuZnVuY3Rpb24gZWxpbWluYXRlVGVtcG9yYXJ5QXNzaWdubWVudHMoXG4gIGU6IG8uRXhwcmVzc2lvbixcbiAgdG1wczogU2V0PGlyLlhyZWZJZD4sXG4gIGN0eDogU2FmZVRyYW5zZm9ybUNvbnRleHQsXG4pOiBvLkV4cHJlc3Npb24ge1xuICAvLyBUT0RPOiBXZSBjYW4gYmUgbW9yZSBlZmZpY2llbnQgdGhhbiB0aGUgdHJhbnNmb3JtIGhlbHBlciBoZXJlLiBXZSBkb24ndCBuZWVkIHRvIHZpc2l0IGFueVxuICAvLyBkZXNjZW5kZW50cyBvZiB0ZW1wb3JhcnkgYXNzaWdubWVudHMuXG4gIGlyLnRyYW5zZm9ybUV4cHJlc3Npb25zSW5FeHByZXNzaW9uKFxuICAgIGUsXG4gICAgKGUpID0+IHtcbiAgICAgIGlmIChlIGluc3RhbmNlb2YgaXIuQXNzaWduVGVtcG9yYXJ5RXhwciAmJiB0bXBzLmhhcyhlLnhyZWYpKSB7XG4gICAgICAgIGNvbnN0IHJlYWQgPSBuZXcgaXIuUmVhZFRlbXBvcmFyeUV4cHIoZS54cmVmKTtcbiAgICAgICAgLy8gYFRlbXBsYXRlRGVmaW5pdGlvbkJ1aWxkZXJgIGhhcyB0aGUgKGFjY2lkZW50YWw/KSBiZWhhdmlvciBvZiBnZW5lcmF0aW5nIGFzc2lnbm1lbnRzIG9mXG4gICAgICAgIC8vIHRlbXBvcmFyeSB2YXJpYWJsZXMgdG8gdGhlbXNlbHZlcy4gVGhpcyBoYXBwZW5zIGJlY2F1c2Ugc29tZSBzdWJleHByZXNzaW9uIHRoYXQgdGhlXG4gICAgICAgIC8vIHRlbXBvcmFyeSByZWZlcnMgdG8sIHBvc3NpYmx5IHRocm91Z2ggbmVzdGVkIHRlbXBvcmFyaWVzLCBoYXMgYSBmdW5jdGlvbiBjYWxsLiBXZSBjb3B5IHRoYXRcbiAgICAgICAgLy8gYmVoYXZpb3IgaGVyZS5cbiAgICAgICAgcmV0dXJuIGN0eC5qb2IuY29tcGF0aWJpbGl0eSA9PT0gaXIuQ29tcGF0aWJpbGl0eU1vZGUuVGVtcGxhdGVEZWZpbml0aW9uQnVpbGRlclxuICAgICAgICAgID8gbmV3IGlyLkFzc2lnblRlbXBvcmFyeUV4cHIocmVhZCwgcmVhZC54cmVmKVxuICAgICAgICAgIDogcmVhZDtcbiAgICAgIH1cbiAgICAgIHJldHVybiBlO1xuICAgIH0sXG4gICAgaXIuVmlzaXRvckNvbnRleHRGbGFnLk5vbmUsXG4gICk7XG4gIHJldHVybiBlO1xufVxuXG4vKipcbiAqIENyZWF0ZXMgYSBzYWZlIHRlcm5hcnkgZ3VhcmRlZCBieSB0aGUgaW5wdXQgZXhwcmVzc2lvbiwgYW5kIHdpdGggYSBib2R5IGdlbmVyYXRlZCBieSB0aGUgcHJvdmlkZWRcbiAqIGNhbGxiYWNrIG9uIHRoZSBpbnB1dCBleHByZXNzaW9uLiBHZW5lcmF0ZXMgYSB0ZW1wb3JhcnkgdmFyaWFibGUgYXNzaWdubWVudCBpZiBuZWVkZWQsIGFuZFxuICogZGVkdXBsaWNhdGVzIG5lc3RlZCB0ZW1wb3JhcnkgYXNzaWdubWVudHMgaWYgbmVlZGVkLlxuICovXG5mdW5jdGlvbiBzYWZlVGVybmFyeVdpdGhUZW1wb3JhcnkoXG4gIGd1YXJkOiBvLkV4cHJlc3Npb24sXG4gIGJvZHk6IChlOiBvLkV4cHJlc3Npb24pID0+IG8uRXhwcmVzc2lvbixcbiAgY3R4OiBTYWZlVHJhbnNmb3JtQ29udGV4dCxcbik6IGlyLlNhZmVUZXJuYXJ5RXhwciB7XG4gIGxldCByZXN1bHQ6IFtvLkV4cHJlc3Npb24sIG8uRXhwcmVzc2lvbl07XG4gIGlmIChuZWVkc1RlbXBvcmFyeUluU2FmZUFjY2VzcyhndWFyZCkpIHtcbiAgICBjb25zdCB4cmVmID0gY3R4LmpvYi5hbGxvY2F0ZVhyZWZJZCgpO1xuICAgIHJlc3VsdCA9IFtuZXcgaXIuQXNzaWduVGVtcG9yYXJ5RXhwcihndWFyZCwgeHJlZiksIG5ldyBpci5SZWFkVGVtcG9yYXJ5RXhwcih4cmVmKV07XG4gIH0gZWxzZSB7XG4gICAgcmVzdWx0ID0gW2d1YXJkLCBndWFyZC5jbG9uZSgpXTtcbiAgICAvLyBDb25zaWRlciBhbiBleHByZXNzaW9uIGxpa2UgYGE/LltiPy5jKCldPy5kYC4gVGhlIGBiPy5jKClgIHdpbGwgYmUgdHJhbnNmb3JtZWQgZmlyc3QsXG4gICAgLy8gaW50cm9kdWNpbmcgYSB0ZW1wb3JhcnkgYXNzaWdubWVudCBpbnRvIHRoZSBrZXkuIFRoZW4sIGFzIHBhcnQgb2YgZXhwYW5kaW5nIHRoZSBgPy5kYC4gVGhhdFxuICAgIC8vIGFzc2lnbm1lbnQgd2lsbCBiZSBkdXBsaWNhdGVkIGludG8gYm90aCB0aGUgZ3VhcmQgYW5kIGV4cHJlc3Npb24gc2lkZXMuIFdlIGRlLWR1cGxpY2F0ZSBpdCxcbiAgICAvLyBieSB0cmFuc2Zvcm1pbmcgaXQgZnJvbSBhbiBhc3NpZ25tZW50IGludG8gYSByZWFkIG9uIHRoZSBleHByZXNzaW9uIHNpZGUuXG4gICAgZWxpbWluYXRlVGVtcG9yYXJ5QXNzaWdubWVudHMocmVzdWx0WzFdLCB0ZW1wb3Jhcmllc0luKHJlc3VsdFswXSksIGN0eCk7XG4gIH1cbiAgcmV0dXJuIG5ldyBpci5TYWZlVGVybmFyeUV4cHIocmVzdWx0WzBdLCBib2R5KHJlc3VsdFsxXSkpO1xufVxuXG5mdW5jdGlvbiBpc1NhZmVBY2Nlc3NFeHByZXNzaW9uKFxuICBlOiBvLkV4cHJlc3Npb24sXG4pOiBlIGlzIGlyLlNhZmVQcm9wZXJ0eVJlYWRFeHByIHwgaXIuU2FmZUtleWVkUmVhZEV4cHIgfCBpci5TYWZlSW52b2tlRnVuY3Rpb25FeHByIHtcbiAgcmV0dXJuIChcbiAgICBlIGluc3RhbmNlb2YgaXIuU2FmZVByb3BlcnR5UmVhZEV4cHIgfHxcbiAgICBlIGluc3RhbmNlb2YgaXIuU2FmZUtleWVkUmVhZEV4cHIgfHxcbiAgICBlIGluc3RhbmNlb2YgaXIuU2FmZUludm9rZUZ1bmN0aW9uRXhwclxuICApO1xufVxuXG5mdW5jdGlvbiBpc1Vuc2FmZUFjY2Vzc0V4cHJlc3Npb24oXG4gIGU6IG8uRXhwcmVzc2lvbixcbik6IGUgaXMgby5SZWFkUHJvcEV4cHIgfCBvLlJlYWRLZXlFeHByIHwgby5JbnZva2VGdW5jdGlvbkV4cHIge1xuICByZXR1cm4gKFxuICAgIGUgaW5zdGFuY2VvZiBvLlJlYWRQcm9wRXhwciB8fCBlIGluc3RhbmNlb2Ygby5SZWFkS2V5RXhwciB8fCBlIGluc3RhbmNlb2Ygby5JbnZva2VGdW5jdGlvbkV4cHJcbiAgKTtcbn1cblxuZnVuY3Rpb24gaXNBY2Nlc3NFeHByZXNzaW9uKFxuICBlOiBvLkV4cHJlc3Npb24sXG4pOiBlIGlzXG4gIHwgby5SZWFkUHJvcEV4cHJcbiAgfCBpci5TYWZlUHJvcGVydHlSZWFkRXhwclxuICB8IG8uUmVhZEtleUV4cHJcbiAgfCBpci5TYWZlS2V5ZWRSZWFkRXhwclxuICB8IG8uSW52b2tlRnVuY3Rpb25FeHByXG4gIHwgaXIuU2FmZUludm9rZUZ1bmN0aW9uRXhwciB7XG4gIHJldHVybiBpc1NhZmVBY2Nlc3NFeHByZXNzaW9uKGUpIHx8IGlzVW5zYWZlQWNjZXNzRXhwcmVzc2lvbihlKTtcbn1cblxuZnVuY3Rpb24gZGVlcGVzdFNhZmVUZXJuYXJ5KGU6IG8uRXhwcmVzc2lvbik6IGlyLlNhZmVUZXJuYXJ5RXhwciB8IG51bGwge1xuICBpZiAoaXNBY2Nlc3NFeHByZXNzaW9uKGUpICYmIGUucmVjZWl2ZXIgaW5zdGFuY2VvZiBpci5TYWZlVGVybmFyeUV4cHIpIHtcbiAgICBsZXQgc3QgPSBlLnJlY2VpdmVyO1xuICAgIHdoaWxlIChzdC5leHByIGluc3RhbmNlb2YgaXIuU2FmZVRlcm5hcnlFeHByKSB7XG4gICAgICBzdCA9IHN0LmV4cHI7XG4gICAgfVxuICAgIHJldHVybiBzdDtcbiAgfVxuICByZXR1cm4gbnVsbDtcbn1cblxuLy8gVE9ETzogV2hlbiBzdHJpY3QgY29tcGF0aWJpbGl0eSB3aXRoIFRlbXBsYXRlRGVmaW5pdGlvbkJ1aWxkZXIgaXMgbm90IHJlcXVpcmVkLCB3ZSBjYW4gdXNlIGAmJmBcbi8vIGluc3RlYWQgdG8gc2F2ZSBzb21lIGNvZGUgc2l6ZS5cbmZ1bmN0aW9uIHNhZmVUcmFuc2Zvcm0oZTogby5FeHByZXNzaW9uLCBjdHg6IFNhZmVUcmFuc2Zvcm1Db250ZXh0KTogby5FeHByZXNzaW9uIHtcbiAgaWYgKCFpc0FjY2Vzc0V4cHJlc3Npb24oZSkpIHtcbiAgICByZXR1cm4gZTtcbiAgfVxuXG4gIGNvbnN0IGRzdCA9IGRlZXBlc3RTYWZlVGVybmFyeShlKTtcblxuICBpZiAoZHN0KSB7XG4gICAgaWYgKGUgaW5zdGFuY2VvZiBvLkludm9rZUZ1bmN0aW9uRXhwcikge1xuICAgICAgZHN0LmV4cHIgPSBkc3QuZXhwci5jYWxsRm4oZS5hcmdzKTtcbiAgICAgIHJldHVybiBlLnJlY2VpdmVyO1xuICAgIH1cbiAgICBpZiAoZSBpbnN0YW5jZW9mIG8uUmVhZFByb3BFeHByKSB7XG4gICAgICBkc3QuZXhwciA9IGRzdC5leHByLnByb3AoZS5uYW1lKTtcbiAgICAgIHJldHVybiBlLnJlY2VpdmVyO1xuICAgIH1cbiAgICBpZiAoZSBpbnN0YW5jZW9mIG8uUmVhZEtleUV4cHIpIHtcbiAgICAgIGRzdC5leHByID0gZHN0LmV4cHIua2V5KGUuaW5kZXgpO1xuICAgICAgcmV0dXJuIGUucmVjZWl2ZXI7XG4gICAgfVxuICAgIGlmIChlIGluc3RhbmNlb2YgaXIuU2FmZUludm9rZUZ1bmN0aW9uRXhwcikge1xuICAgICAgZHN0LmV4cHIgPSBzYWZlVGVybmFyeVdpdGhUZW1wb3JhcnkoZHN0LmV4cHIsIChyOiBvLkV4cHJlc3Npb24pID0+IHIuY2FsbEZuKGUuYXJncyksIGN0eCk7XG4gICAgICByZXR1cm4gZS5yZWNlaXZlcjtcbiAgICB9XG4gICAgaWYgKGUgaW5zdGFuY2VvZiBpci5TYWZlUHJvcGVydHlSZWFkRXhwcikge1xuICAgICAgZHN0LmV4cHIgPSBzYWZlVGVybmFyeVdpdGhUZW1wb3JhcnkoZHN0LmV4cHIsIChyOiBvLkV4cHJlc3Npb24pID0+IHIucHJvcChlLm5hbWUpLCBjdHgpO1xuICAgICAgcmV0dXJuIGUucmVjZWl2ZXI7XG4gICAgfVxuICAgIGlmIChlIGluc3RhbmNlb2YgaXIuU2FmZUtleWVkUmVhZEV4cHIpIHtcbiAgICAgIGRzdC5leHByID0gc2FmZVRlcm5hcnlXaXRoVGVtcG9yYXJ5KGRzdC5leHByLCAocjogby5FeHByZXNzaW9uKSA9PiByLmtleShlLmluZGV4KSwgY3R4KTtcbiAgICAgIHJldHVybiBlLnJlY2VpdmVyO1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICBpZiAoZSBpbnN0YW5jZW9mIGlyLlNhZmVJbnZva2VGdW5jdGlvbkV4cHIpIHtcbiAgICAgIHJldHVybiBzYWZlVGVybmFyeVdpdGhUZW1wb3JhcnkoZS5yZWNlaXZlciwgKHI6IG8uRXhwcmVzc2lvbikgPT4gci5jYWxsRm4oZS5hcmdzKSwgY3R4KTtcbiAgICB9XG4gICAgaWYgKGUgaW5zdGFuY2VvZiBpci5TYWZlUHJvcGVydHlSZWFkRXhwcikge1xuICAgICAgcmV0dXJuIHNhZmVUZXJuYXJ5V2l0aFRlbXBvcmFyeShlLnJlY2VpdmVyLCAocjogby5FeHByZXNzaW9uKSA9PiByLnByb3AoZS5uYW1lKSwgY3R4KTtcbiAgICB9XG4gICAgaWYgKGUgaW5zdGFuY2VvZiBpci5TYWZlS2V5ZWRSZWFkRXhwcikge1xuICAgICAgcmV0dXJuIHNhZmVUZXJuYXJ5V2l0aFRlbXBvcmFyeShlLnJlY2VpdmVyLCAocjogby5FeHByZXNzaW9uKSA9PiByLmtleShlLmluZGV4KSwgY3R4KTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gZTtcbn1cblxuZnVuY3Rpb24gdGVybmFyeVRyYW5zZm9ybShlOiBvLkV4cHJlc3Npb24pOiBvLkV4cHJlc3Npb24ge1xuICBpZiAoIShlIGluc3RhbmNlb2YgaXIuU2FmZVRlcm5hcnlFeHByKSkge1xuICAgIHJldHVybiBlO1xuICB9XG4gIHJldHVybiBuZXcgby5Db25kaXRpb25hbEV4cHIoXG4gICAgbmV3IG8uQmluYXJ5T3BlcmF0b3JFeHByKG8uQmluYXJ5T3BlcmF0b3IuRXF1YWxzLCBlLmd1YXJkLCBvLk5VTExfRVhQUiksXG4gICAgby5OVUxMX0VYUFIsXG4gICAgZS5leHByLFxuICApO1xufVxuIl19
@@ -117,7 +117,7 @@ export function extractI18nMessages(job) {
117
117
  function createI18nMessage(job, context, messagePlaceholder) {
118
118
  let formattedParams = formatParams(context.params);
119
119
  const formattedPostprocessingParams = formatParams(context.postprocessingParams);
120
- let needsPostprocessing = [...context.params.values()].some(v => v.length > 1);
120
+ let needsPostprocessing = [...context.params.values()].some((v) => v.length > 1);
121
121
  return ir.createI18nMessageOp(job.allocateXrefId(), context.xref, context.i18nBlock, context.message, messagePlaceholder ?? null, formattedParams, formattedPostprocessingParams, needsPostprocessing);
122
122
  }
123
123
  /**
@@ -150,10 +150,10 @@ function formatParamValues(values) {
150
150
  if (values.length === 0) {
151
151
  return null;
152
152
  }
153
- const serializedValues = values.map(value => formatValue(value));
154
- return serializedValues.length === 1 ?
155
- serializedValues[0] :
156
- `${LIST_START_MARKER}${serializedValues.join(LIST_DELIMITER)}${LIST_END_MARKER}`;
153
+ const serializedValues = values.map((value) => formatValue(value));
154
+ return serializedValues.length === 1
155
+ ? serializedValues[0]
156
+ : `${LIST_START_MARKER}${serializedValues.join(LIST_DELIMITER)}${LIST_END_MARKER}`;
157
157
  }
158
158
  /**
159
159
  * Formats a single `I18nParamValue` into a string
@@ -161,38 +161,39 @@ function formatParamValues(values) {
161
161
  function formatValue(value) {
162
162
  // Element tags with a structural directive use a special form that concatenates the element and
163
163
  // template values.
164
- if ((value.flags & ir.I18nParamValueFlags.ElementTag) &&
165
- (value.flags & ir.I18nParamValueFlags.TemplateTag)) {
164
+ if (value.flags & ir.I18nParamValueFlags.ElementTag &&
165
+ value.flags & ir.I18nParamValueFlags.TemplateTag) {
166
166
  if (typeof value.value !== 'object') {
167
167
  throw Error('AssertionError: Expected i18n param value to have an element and template slot');
168
168
  }
169
169
  const elementValue = formatValue({
170
170
  ...value,
171
171
  value: value.value.element,
172
- flags: value.flags & ~ir.I18nParamValueFlags.TemplateTag
172
+ flags: value.flags & ~ir.I18nParamValueFlags.TemplateTag,
173
173
  });
174
174
  const templateValue = formatValue({
175
175
  ...value,
176
176
  value: value.value.template,
177
- flags: value.flags & ~ir.I18nParamValueFlags.ElementTag
177
+ flags: value.flags & ~ir.I18nParamValueFlags.ElementTag,
178
178
  });
179
179
  // TODO(mmalerba): This is likely a bug in TemplateDefinitionBuilder, we should not need to
180
180
  // record the template value twice. For now I'm re-implementing the behavior here to keep the
181
181
  // output consistent with TemplateDefinitionBuilder.
182
- if ((value.flags & ir.I18nParamValueFlags.OpenTag) &&
183
- (value.flags & ir.I18nParamValueFlags.CloseTag)) {
182
+ if (value.flags & ir.I18nParamValueFlags.OpenTag &&
183
+ value.flags & ir.I18nParamValueFlags.CloseTag) {
184
184
  return `${templateValue}${elementValue}${templateValue}`;
185
185
  }
186
186
  // To match the TemplateDefinitionBuilder output, flip the order depending on whether the
187
187
  // values represent a closing or opening tag (or both).
188
188
  // TODO(mmalerba): Figure out if this makes a difference in terms of either functionality,
189
189
  // or the resulting message ID. If not, we can remove the special-casing in the future.
190
- return value.flags & ir.I18nParamValueFlags.CloseTag ? `${elementValue}${templateValue}` :
191
- `${templateValue}${elementValue}`;
190
+ return value.flags & ir.I18nParamValueFlags.CloseTag
191
+ ? `${elementValue}${templateValue}`
192
+ : `${templateValue}${elementValue}`;
192
193
  }
193
194
  // Self-closing tags use a special form that concatenates the start and close tag values.
194
- if ((value.flags & ir.I18nParamValueFlags.OpenTag) &&
195
- (value.flags & ir.I18nParamValueFlags.CloseTag)) {
195
+ if (value.flags & ir.I18nParamValueFlags.OpenTag &&
196
+ value.flags & ir.I18nParamValueFlags.CloseTag) {
196
197
  return `${formatValue({ ...value, flags: value.flags & ~ir.I18nParamValueFlags.CloseTag })}${formatValue({ ...value, flags: value.flags & ~ir.I18nParamValueFlags.OpenTag })}`;
197
198
  }
198
199
  // If there are no special flags, just return the raw value.
@@ -214,4 +215,4 @@ function formatValue(value) {
214
215
  const context = value.subTemplateIndex === null ? '' : `${CONTEXT_MARKER}${value.subTemplateIndex}`;
215
216
  return `${ESCAPE}${closeMarker}${tagMarker}${value.value}${context}${ESCAPE}`;
216
217
  }
217
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXh0cmFjdF9pMThuX21lc3NhZ2VzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29tcGlsZXIvc3JjL3RlbXBsYXRlL3BpcGVsaW5lL3NyYy9waGFzZXMvZXh0cmFjdF9pMThuX21lc3NhZ2VzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7R0FNRztBQUVILE9BQU8sS0FBSyxDQUFDLE1BQU0sK0JBQStCLENBQUM7QUFDbkQsT0FBTyxLQUFLLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFHL0I7O0dBRUc7QUFDSCxNQUFNLE1BQU0sR0FBRyxRQUFRLENBQUM7QUFFeEI7O0dBRUc7QUFDSCxNQUFNLGNBQWMsR0FBRyxHQUFHLENBQUM7QUFFM0I7O0dBRUc7QUFDSCxNQUFNLGVBQWUsR0FBRyxHQUFHLENBQUM7QUFFNUI7O0dBRUc7QUFDSCxNQUFNLGdCQUFnQixHQUFHLEdBQUcsQ0FBQztBQUU3Qjs7R0FFRztBQUNILE1BQU0sY0FBYyxHQUFHLEdBQUcsQ0FBQztBQUUzQjs7R0FFRztBQUNILE1BQU0saUJBQWlCLEdBQUcsR0FBRyxDQUFDO0FBRTlCOztHQUVHO0FBQ0gsTUFBTSxlQUFlLEdBQUcsR0FBRyxDQUFDO0FBRTVCOztHQUVHO0FBQ0gsTUFBTSxjQUFjLEdBQUcsR0FBRyxDQUFDO0FBRTNCOzs7R0FHRztBQUNILE1BQU0sVUFBVSxtQkFBbUIsQ0FBQyxHQUFtQjtJQUNyRCwyQ0FBMkM7SUFDM0MsNEVBQTRFO0lBQzVFLE1BQU0scUJBQXFCLEdBQUcsSUFBSSxHQUFHLEVBQStCLENBQUM7SUFDckUsTUFBTSxVQUFVLEdBQUcsSUFBSSxHQUFHLEVBQTZCLENBQUM7SUFDeEQsTUFBTSxZQUFZLEdBQUcsSUFBSSxHQUFHLEVBQStCLENBQUM7SUFDNUQsS0FBSyxNQUFNLElBQUksSUFBSSxHQUFHLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDN0IsS0FBSyxNQUFN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O0lBQzVELElBQUksS0FBSyxDQUFDLEtBQUssS0FBSyxFQUFFLENBQUMsbUJBQW1CLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDaEQsT0FBTyxHQUFHLEtBQUssQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUMxQixDQUFDO0lBRUQsbURBQW1EO0lBQ25ELElBQUksU0FBUyxHQUFHLEVBQUUsQ0FBQztJQUNuQixJQUFJLFdBQVcsR0FBRyxFQUFFLENBQUM7SUFDckIsSUFBSSxLQUFLLENBQUMsS0FBSyxHQUFHLEVBQUUsQ0FBQyxtQkFBbUIsQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUNwRCxTQUFTLEdBQUcsY0FBYyxDQUFDO0lBQzdCLENBQUM7U0FBTSxJQUFJLEtBQUssQ0FBQyxLQUFLLEdBQUcsRUFBRSxDQUFDLG1CQUFtQixDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQzVELFNBQVMsR0FBRyxlQUFlLENBQUM7SUFDOUIsQ0FBQztJQUNELElBQUksU0FBUyxLQUFLLEVBQUUsRUFBRSxDQUFDO1FBQ3JCLFdBQVcsR0FBRyxLQUFLLENBQUMsS0FBSyxHQUFHLEVBQUUsQ0FBQyxtQkFBbUIsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7SUFDdEYsQ0FBQztJQUNELE1BQU0sT0FBTyxHQUNULEtBQUssQ0FBQyxnQkFBZ0IsS0FBSyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxjQUFjLEdBQUcsS0FBSyxDQUFDLGdCQUFnQixFQUFFLENBQUM7SUFDeEYsT0FBTyxHQUFHLE1BQU0sR0FBRyxXQUFXLEdBQUcsU0FBUyxHQUFHLEtBQUssQ0FBQyxLQUFLLEdBQUcsT0FBTyxHQUFHLE1BQU0sRUFBRSxDQUFDO0FBQ2hGLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlXG4gKi9cblxuaW1wb3J0ICogYXMgbyBmcm9tICcuLi8uLi8uLi8uLi9vdXRwdXQvb3V0cHV0X2FzdCc7XG5pbXBvcnQgKiBhcyBpciBmcm9tICcuLi8uLi9pcic7XG5pbXBvcnQge0NvbXBpbGF0aW9uSm9ifSBmcm9tICcuLi9jb21waWxhdGlvbic7XG5cbi8qKlxuICogVGhlIGVzY2FwZSBzZXF1ZW5jZSB1c2VkIGluZGljYXRlIG1lc3NhZ2UgcGFyYW0gdmFsdWVzLlxuICovXG5jb25zdCBFU0NBUEUgPSAnXFx1RkZGRCc7XG5cbi8qKlxuICogTWFya2VyIHVzZWQgdG8gaW5kaWNhdGUgYW4gZWxlbWVudCB0YWcuXG4gKi9cbmNvbnN0IEVMRU1FTlRfTUFSS0VSID0gJyMnO1xuXG4vKipcbiAqIE1hcmtlciB1c2VkIHRvIGluZGljYXRlIGEgdGVtcGxhdGUgdGFnLlxuICovXG5jb25zdCBURU1QTEFURV9NQVJLRVIgPSAnKic7XG5cbi8qKlxuICogTWFya2VyIHVzZWQgdG8gaW5kaWNhdGUgY2xvc2luZyBvZiBhbiBlbGVtZW50IG9yIHRlbXBsYXRlIHRhZy5cbiAqL1xuY29uc3QgVEFHX0NMT1NFX01BUktFUiA9ICcvJztcblxuLyoqXG4gKiBNYXJrZXIgdXNlZCB0byBpbmRpY2F0ZSB0aGUgc3ViLXRlbXBsYXRlIGNvbnRleHQuXG4gKi9cbmNvbnN0IENPTlRFWFRfTUFSS0VSID0gJzonO1xuXG4vKipcbiAqIE1hcmtlciB1c2VkIHRvIGluZGljYXRlIHRoZSBzdGFydCBvZiBhIGxpc3Qgb2YgdmFsdWVzLlxuICovXG5jb25zdCBMSVNUX1NUQVJUX01BUktFUiA9ICdbJztcblxuLyoqXG4gKiBNYXJrZXIgdXNlZCB0byBpbmRpY2F0ZSB0aGUgZW5kIG9mIGEgbGlzdCBvZiB2YWx1ZXMuXG4gKi9cbmNvbnN0IExJU1RfRU5EX01BUktFUiA9ICddJztcblxuLyoqXG4gKiBEZWxpbWl0ZXIgdXNlZCB0byBzZXBhcmF0ZSBtdWx0aXBsZSB2YWx1ZXMgaW4gYSBsaXN0LlxuICovXG5jb25zdCBMSVNUX0RFTElNSVRFUiA9ICd8JztcblxuLyoqXG4gKiBGb3JtYXRzIHRoZSBwYXJhbSBtYXBzIG9uIGV4dHJhY3RlZCBtZXNzYWdlIG9wcyBpbnRvIGEgbWFwcyBvZiBgRXhwcmVzc2lvbmAgb2JqZWN0cyB0aGF0IGNhbiBiZVxuICogdXNlZCBpbiB0aGUgZmluYWwgb3V0cHV0LlxuICovXG5leHBvcnQgZnVuY3Rpb24gZXh0cmFjdEkxOG5NZXNzYWdlcyhqb2I6IENvbXBpbGF0aW9uSm9iKTogdm9pZCB7XG4gIC8vIENyZWF0ZSBhbiBpMThuIG1lc3NhZ2UgZm9yIGVhY2ggY29udGV4dC5cbiAgLy8gVE9ETzogTWVyZ2UgdGhlIGNvbnRleHQgb3Agd2l0aCB0aGUgbWVzc2FnZSBvcCBzaW5jZSB0aGV5J3JlIDE6MSBhbnl3YXlzLlxuICBjb25zdCBpMThuTWVzc2FnZXNCeUNvbnRleHQgPSBuZXcgTWFwPGlyLlhyZWZJZCwgaXIuSTE4bk1lc3NhZ2VPcD4oKTtcbiAgY29uc3QgaTE4bkJsb2NrcyA9IG5ldyBNYXA8aXIuWHJlZklkLCBpci5JMThuU3RhcnRPcD4oKTtcbiAgY29uc3QgaTE4bkNvbnRleHRzID0gbmV3IE1hcDxpci5YcmVmSWQsIGlyLkkxOG5Db250ZXh0T3A+KCk7XG4gIGZvciAoY29uc3QgdW5pdCBvZiBqb2IudW5pdHMpIHtcbiAgICBmb3IgKGNvbnN0IG9wIG9mIHVuaXQuY3JlYXRlKSB7XG4gICAgICBzd2l0Y2ggKG9wLmtpbmQpIHtcbiAgICAgICAgY2FzZSBpci5PcEtpbmQuSTE4bkNvbnRleHQ6XG4gICAgICAgICAgY29uc3QgaTE4bk1lc3NhZ2VPcCA9IGNyZWF0ZUkxOG5NZXNzYWdlKGpvYiwgb3ApO1xuICAgICAgICAgIHVuaXQuY3JlYXRlLnB1c2goaTE4bk1lc3NhZ2VPcCk7XG4gICAgICAgICAgaTE4bk1lc3NhZ2VzQnlDb250ZXh0LnNldChvcC54cmVmLCBpMThuTWVzc2FnZU9wKTtcbiAgICAgICAgICBpMThuQ29udGV4dHMuc2V0KG9wLnhyZWYsIG9wKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBpci5PcEtpbmQuSTE4blN0YXJ0OlxuICAgICAgICAgIGkxOG5CbG9ja3Muc2V0KG9wLnhyZWYsIG9wKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvLyBBc3NvY2lhdGUgc3ViLW1lc3NhZ2VzIGZvciBJQ1VzIHdpdGggdGhlaXIgcm9vdCBtZXNzYWdlLiBBdCB0aGlzIHBvaW50IHdlIGNhbiBhbHNvIHJlbW92ZSB0aGVcbiAgLy8gSUNVIHN0YXJ0L2VuZCBvcHMsIGFzIHRoZXkgYXJlIG5vIGxvbmdlciBuZWVkZWQuXG4gIGxldCBjdXJyZW50SWN1OiBpci5JY3VTdGFydE9wfG51bGwgPSBudWxsO1xuICBmb3IgKGNvbnN0IHVuaXQgb2Ygam9iLnVuaXRzKSB7XG4gICAgZm9yIChjb25zdCBvcCBvZiB1bml0LmNyZWF0ZSkge1xuICAgICAgc3dpdGNoIChvcC5raW5kKSB7XG4gICAgICAgIGNhc2UgaXIuT3BLaW5kLkljdVN0YXJ0OlxuICAgICAgICAgIGN1cnJlbnRJY3UgPSBvcDtcbiAgICAgICAgICBpci5PcExpc3QucmVtb3ZlPGlyLkNyZWF0ZU9wPihvcCk7XG4gICAgICAgICAgLy8gU2tpcCBhbnkgY29udGV4dHMgbm90IGFzc29jaWF0ZWQgd2l0aCBhbiBJQ1UuXG4gICAgICAgICAgY29uc3QgaWN1Q29udGV4dCA9IGkxOG5Db250ZXh0cy5nZXQob3AuY29udGV4dCEpITtcbiAgICAgICAgICBpZiAoaWN1Q29udGV4dC5jb250ZXh0S2luZCAhPT0gaXIuSTE4bkNvbnRleHRLaW5kLkljdSkge1xuICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgfVxuICAgICAgICAgIC8vIFNraXAgSUNVcyB0aGF0IHNoYXJlIGEgY29udGV4dCB3aXRoIHRoZWlyIGkxOG4gbWVzc2FnZS4gVGhlc2UgcmVwcmVzZW50IHJvb3QtbGV2ZWxcbiAgICAgICAgICAvLyBJQ1VzLCBub3Qgc3ViLW1lc3NhZ2VzLlxuICAgICAgICAgIGNvbnN0IGkxOG5CbG9jayA9IGkxOG5CbG9ja3MuZ2V0KGljdUNvbnRleHQuaTE4bkJsb2NrISkhO1xuICAgICAgICAgIGlmIChpMThuQmxvY2suY29udGV4dCA9PT0gaWN1Q29udGV4dC54cmVmKSB7XG4gICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICB9XG4gICAgICAgICAgLy8gRmluZCB0aGUgcm9vdCBtZXNzYWdlIGFuZCBwdXNoIHRoaXMgSUNVcyBtZXNzYWdlIGFzIGEgc3ViLW1lc3NhZ2UuXG4gICAgICAgICAgY29uc3Qgcm9vdEkxOG5CbG9jayA9IGkxOG5CbG9ja3MuZ2V0KGkxOG5CbG9jay5yb290KSE7XG4gICAgICAgICAgY29uc3Qgcm9vdE1lc3NhZ2UgPSBpMThuTWVzc2FnZXNCeUNvbnRleHQuZ2V0KHJvb3RJMThuQmxvY2suY29udGV4dCEpO1xuICAgICAgICAgIGlmIChyb290TWVzc2FnZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICB0aHJvdyBFcnJvcignQXNzZXJ0aW9uRXJyb3I6IElDVSBzdWItbWVzc2FnZSBzaG91bGQgYmVsb25nIHRvIGEgcm9vdCBtZXNzYWdlLicpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBjb25zdCBzdWJNZXNzYWdlID0gaTE4bk1lc3NhZ2VzQnlDb250ZXh0LmdldChpY3VDb250ZXh0LnhyZWYpITtcbiAgICAgICAgICBzdWJNZXNzYWdlLm1lc3NhZ2VQbGFjZWhvbGRlciA9IG9wLm1lc3NhZ2VQbGFjZWhvbGRlcjtcbiAgICAgICAgICByb290TWVzc2FnZS5zdWJNZXNzYWdlcy5wdXNoKHN1Yk1lc3NhZ2UueHJlZik7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgaXIuT3BLaW5kLkljdUVuZDpcbiAgICAgICAgICBjdXJyZW50SWN1ID0gbnVsbDtcbiAgICAgICAgICBpci5PcExpc3QucmVtb3ZlPGlyLkNyZWF0ZU9wPihvcCk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgaXIuT3BLaW5kLkljdVBsYWNlaG9sZGVyOlxuICAgICAgICAgIC8vIEFkZCBJQ1UgcGxhY2Vob2xkZXJzIHRvIHRoZSBtZXNzYWdlLCB0aGVuIHJlbW92ZSB0aGUgSUNVIHBsYWNlaG9sZGVyIG9wcy5cbiAgICAgICAgICBpZiAoY3VycmVudEljdSA9PT0gbnVsbCB8fCBjdXJyZW50SWN1LmNvbnRleHQgPT0gbnVsbCkge1xuICAgICAgICAgICAgdGhyb3cgRXJyb3IoJ0Fzc2VydGlvbkVycm9yOiBVbmV4cGVjdGVkIElDVSBwbGFjZWhvbGRlciBvdXRzaWRlIG9mIGkxOG4gY29udGV4dCcpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBjb25zdCBtc2cgPSBpMThuTWVzc2FnZXNCeUNvbnRleHQuZ2V0KGN1cnJlbnRJY3UuY29udGV4dCkhO1xuICAgICAgICAgIG1zZy5wb3N0cHJvY2Vzc2luZ1BhcmFtcy5zZXQob3AubmFtZSwgby5saXRlcmFsKGZvcm1hdEljdVBsYWNlaG9sZGVyKG9wKSkpO1xuICAgICAgICAgIGlyLk9wTGlzdC5yZW1vdmU8aXIuQ3JlYXRlT3A+KG9wKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxuLyoqXG4gKiBDcmVhdGUgYW4gaTE4biBtZXNzYWdlIG9wIGZyb20gYW4gaTE4biBjb250ZXh0IG9wLlxuICovXG5mdW5jdGlvbiBjcmVhdGVJMThuTWVzc2FnZShcbiAgICBqb2I6IENvbXBpbGF0aW9uSm9iLCBjb250ZXh0OiBpci5JMThuQ29udGV4dE9wLCBtZXNzYWdlUGxhY2Vob2xkZXI/OiBzdHJpbmcpOiBpci5JMThuTWVzc2FnZU9wIHtcbiAgbGV0IGZvcm1hdHRlZFBhcmFtcyA9IGZvcm1hdFBhcmFtcyhjb250ZXh0LnBhcmFtcyk7XG4gIGNvbnN0IGZvcm1hdHRlZFBvc3Rwcm9jZXNzaW5nUGFyYW1zID0gZm9ybWF0UGFyYW1zKGNvbnRleHQucG9zdHByb2Nlc3NpbmdQYXJhbXMpO1xuICBsZXQgbmVlZHNQb3N0cHJvY2Vzc2luZyA9IFsuLi5jb250ZXh0LnBhcmFtcy52YWx1ZXMoKV0uc29tZSh2ID0+IHYubGVuZ3RoID4gMSk7XG4gIHJldHVybiBpci5jcmVhdGVJMThuTWVzc2FnZU9wKFxuICAgICAgam9iLmFsbG9jYXRlWHJlZklkKCksIGNvbnRleHQueHJlZiwgY29udGV4dC5pMThuQmxvY2ssIGNvbnRleHQubWVzc2FnZSxcbiAgICAgIG1lc3NhZ2VQbGFjZWhvbGRlciA/PyBudWxsLCBmb3JtYXR0ZWRQYXJhbXMsIGZvcm1hdHRlZFBvc3Rwcm9jZXNzaW5nUGFyYW1zLFxuICAgICAgbmVlZHNQb3N0cHJvY2Vzc2luZyk7XG59XG5cbi8qKlxuICogRm9ybWF0cyBhbiBJQ1UgcGxhY2Vob2xkZXIgaW50byBhIHNpbmdsZSBzdHJpbmcgd2l0aCBleHByZXNzaW9uIHBsYWNlaG9sZGVycy5cbiAqL1xuZnVuY3Rpb24gZm9ybWF0SWN1UGxhY2Vob2xkZXIob3A6IGlyLkljdVBsYWNlaG9sZGVyT3ApIHtcbiAgaWYgKG9wLnN0cmluZ3MubGVuZ3RoICE9PSBvcC5leHByZXNzaW9uUGxhY2Vob2xkZXJzLmxlbmd0aCArIDEpIHtcbiAgICB0aHJvdyBFcnJvcihgQXNzZXJ0aW9uRXJyb3I6IEludmFsaWQgSUNVIHBsYWNlaG9sZGVyIHdpdGggJHtvcC5zdHJpbmdzLmxlbmd0aH0gc3RyaW5ncyBhbmQgJHtcbiAgICAgICAgb3AuZXhwcmVzc2lvblBsYWNlaG9sZGVycy5sZW5ndGh9IGV4cHJlc3Npb25zYCk7XG4gIH1cbiAgY29uc3QgdmFsdWVzID0gb3AuZXhwcmVzc2lvblBsYWNlaG9sZGVycy5tYXAoZm9ybWF0VmFsdWUpO1xuICByZXR1cm4gb3Auc3RyaW5ncy5mbGF0TWFwKChzdHIsIGkpID0+IFtzdHIsIHZhbHVlc1tpXSB8fCAnJ10pLmpvaW4oJycpO1xufVxuXG4vKipcbiAqIEZvcm1hdHMgYSBtYXAgb2YgYEkxOG5QYXJhbVZhbHVlW11gIHZhbHVlcyBpbnRvIGEgbWFwIG9mIGBFeHByZXNzaW9uYCB2YWx1ZXMuXG4gKi9cbmZ1bmN0aW9uIGZvcm1hdFBhcmFtcyhwYXJhbXM6IE1hcDxzdHJpbmcsIGlyLkkxOG5QYXJhbVZhbHVlW10+KSB7XG4gIGNvbnN0IGZvcm1hdHRlZFBhcmFtcyA9IG5ldyBNYXA8c3RyaW5nLCBvLkV4cHJlc3Npb24+KCk7XG4gIGZvciAoY29uc3QgW3BsYWNlaG9sZGVyLCBwbGFjZWhvbGRlclZhbHVlc10gb2YgcGFyYW1zKSB7XG4gICAgY29uc3Qgc2VyaWFsaXplZFZhbHVlcyA9IGZvcm1hdFBhcmFtVmFsdWVzKHBsYWNlaG9sZGVyVmFsdWVzKTtcbiAgICBpZiAoc2VyaWFsaXplZFZhbHVlcyAhPT0gbnVsbCkge1xuICAgICAgZm9ybWF0dGVkUGFyYW1zLnNldChwbGFjZWhvbGRlciwgby5saXRlcmFsKHNlcmlhbGl6ZWRWYWx1ZXMpKTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIGZvcm1hdHRlZFBhcmFtcztcbn1cblxuLyoqXG4gKiBGb3JtYXRzIGFuIGBJMThuUGFyYW1WYWx1ZVtdYCBpbnRvIGEgc3RyaW5nIChvciBudWxsIGZvciBlbXB0eSBhcnJheSkuXG4gKi9cbmZ1bmN0aW9uIGZvcm1hdFBhcmFtVmFsdWVzKHZhbHVlczogaXIuSTE4blBhcmFtVmFsdWVbXSk6IHN0cmluZ3xudWxsIHtcbiAgaWYgKHZhbHVlcy5sZW5ndGggPT09IDApIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuICBjb25zdCBzZXJpYWxpemVkVmFsdWVzID0gdmFsdWVzLm1hcCh2YWx1ZSA9PiBmb3JtYXRWYWx1ZSh2YWx1ZSkpO1xuICByZXR1cm4gc2VyaWFsaXplZFZhbHVlcy5sZW5ndGggPT09IDEgP1xuICAgICAgc2VyaWFsaXplZFZhbHVlc1swXSA6XG4gICAgICBgJHtMSVNUX1NUQVJUX01BUktFUn0ke3NlcmlhbGl6ZWRWYWx1ZXMuam9pbihMSVNUX0RFTElNSVRFUil9JHtMSVNUX0VORF9NQVJLRVJ9YDtcbn1cblxuLyoqXG4gKiBGb3JtYXRzIGEgc2luZ2xlIGBJMThuUGFyYW1WYWx1ZWAgaW50byBhIHN0cmluZ1xuICovXG5mdW5jdGlvbiBmb3JtYXRWYWx1ZSh2YWx1ZTogaXIuSTE4blBhcmFtVmFsdWUpOiBzdHJpbmcge1xuICAvLyBFbGVtZW50IHRhZ3Mgd2l0aCBhIHN0cnVjdHVyYWwgZGlyZWN0aXZlIHVzZSBhIHNwZWNpYWwgZm9ybSB0aGF0IGNvbmNhdGVuYXRlcyB0aGUgZWxlbWVudCBhbmRcbiAgLy8gdGVtcGxhdGUgdmFsdWVzLlxuICBpZiAoKHZhbHVlLmZsYWdzICYgaXIuSTE4blBhcmFtVmFsdWVGbGFncy5FbGVtZW50VGFnKSAmJlxuICAgICAgKHZhbHVlLmZsYWdzICYgaXIuSTE4blBhcmFtVmFsdWVGbGFncy5UZW1wbGF0ZVRhZykpIHtcbiAgICBpZiAodHlwZW9mIHZhbHVlLnZhbHVlICE9PSAnb2JqZWN0Jykge1xuICAgICAgdGhyb3cgRXJyb3IoJ0Fzc2VydGlvbkVycm9yOiBFeHBlY3RlZCBpMThuIHBhcmFtIHZhbHVlIHRvIGhhdmUgYW4gZWxlbWVudCBhbmQgdGVtcGxhdGUgc2xvdCcpO1xuICAgIH1cbiAgICBjb25zdCBlbGVtZW50VmFsdWUgPSBmb3JtYXRWYWx1ZSh7XG4gICAgICAuLi52YWx1ZSxcbiAgICAgIHZhbHVlOiB2YWx1ZS52YWx1ZS5lbGVtZW50LFxuICAgICAgZmxhZ3M6IHZhbHVlLmZsYWdzICYgfmlyLkkxOG5QYXJhbVZhbHVlRmxhZ3MuVGVtcGxhdGVUYWdcbiAgICB9KTtcbiAgICBjb25zdCB0ZW1wbGF0ZVZhbHVlID0gZm9ybWF0VmFsdWUoe1xuICAgICAgLi4udmFsdWUsXG4gICAgICB2YWx1ZTogdmFsdWUudmFsdWUudGVtcGxhdGUsXG4gICAgICBmbGFnczogdmFsdWUuZmxhZ3MgJiB+aXIuSTE4blBhcmFtVmFsdWVGbGFncy5FbGVtZW50VGFnXG4gICAgfSk7XG4gICAgLy8gVE9ETyhtbWFsZXJiYSk6IFRoaXMgaXMgbGlrZWx5IGEgYnVnIGluIFRlbXBsYXRlRGVmaW5pdGlvbkJ1aWxkZXIsIHdlIHNob3VsZCBub3QgbmVlZCB0b1xuICAgIC8vIHJlY29yZCB0aGUgdGVtcGxhdGUgdmFsdWUgdHdpY2UuIEZvciBub3cgSSdtIHJlLWltcGxlbWVudGluZyB0aGUgYmVoYXZpb3IgaGVyZSB0byBrZWVwIHRoZVxuICAgIC8vIG91dHB1dCBjb25zaXN0ZW50IHdpdGggVGVtcGxhdGVEZWZpbml0aW9uQnVpbGRlci5cbiAgICBpZiAoKHZhbHVlLmZsYWdzICYgaXIuSTE4blBhcmFtVmFsdWVGbGFncy5PcGVuVGFnKSAmJlxuICAgICAgICAodmFsdWUuZmxhZ3MgJiBpci5JMThuUGFyYW1WYWx1ZUZsYWdzLkNsb3NlVGFnKSkge1xuICAgICAgcmV0dXJuIGAke3RlbXBsYXRlVmFsdWV9JHtlbGVtZW50VmFsdWV9JHt0ZW1wbGF0ZVZhbHVlfWA7XG4gICAgfVxuICAgIC8vIFRvIG1hdGNoIHRoZSBUZW1wbGF0ZURlZmluaXRpb25CdWlsZGVyIG91dHB1dCwgZmxpcCB0aGUgb3JkZXIgZGVwZW5kaW5nIG9uIHdoZXRoZXIgdGhlXG4gICAgLy8gdmFsdWVzIHJlcHJlc2VudCBhIGNsb3Npbmcgb3Igb3BlbmluZyB0YWcgKG9yIGJvdGgpLlxuICAgIC8vIFRPRE8obW1hbGVyYmEpOiBGaWd1cmUgb3V0IGlmIHRoaXMgbWFrZXMgYSBkaWZmZXJlbmNlIGluIHRlcm1zIG9mIGVpdGhlciBmdW5jdGlvbmFsaXR5LFxuICAgIC8vIG9yIHRoZSByZXN1bHRpbmcgbWVzc2FnZSBJRC4gSWYgbm90LCB3ZSBjYW4gcmVtb3ZlIHRoZSBzcGVjaWFsLWNhc2luZyBpbiB0aGUgZnV0dXJlLlxuICAgIHJldHVybiB2YWx1ZS5mbGFncyAmIGlyLkkxOG5QYXJhbVZhbHVlRmxhZ3MuQ2xvc2VUYWcgPyBgJHtlbGVtZW50VmFsdWV9JHt0ZW1wbGF0ZVZhbHVlfWAgOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBgJHt0ZW1wbGF0ZVZhbHVlfSR7ZWxlbWVudFZhbHVlfWA7XG4gIH1cblxuICAvLyBTZWxmLWNsb3NpbmcgdGFncyB1c2UgYSBzcGVjaWFsIGZvcm0gdGhhdCBjb25jYXRlbmF0ZXMgdGhlIHN0YXJ0IGFuZCBjbG9zZSB0YWcgdmFsdWVzLlxuICBpZiAoKHZhbHVlLmZsYWdzICYgaXIuSTE4blBhcmFtVmFsdWVGbGFncy5PcGVuVGFnKSAmJlxuICAgICAgKHZhbHVlLmZsYWdzICYgaXIuSTE4blBhcmFtVmFsdWVGbGFncy5DbG9zZVRhZykpIHtcbiAgICByZXR1cm4gYCR7Zm9ybWF0VmFsdWUoey4uLnZhbHVlLCBmbGFnczogdmFsdWUuZmxhZ3MgJiB+aXIuSTE4blBhcmFtVmFsdWVGbGFncy5DbG9zZVRhZ30pfSR7XG4gICAgICAgIGZvcm1hdFZhbHVlKHsuLi52YWx1ZSwgZmxhZ3M6IHZhbHVlLmZsYWdzICYgfmlyLkkxOG5QYXJhbVZhbHVlRmxhZ3MuT3BlblRhZ30pfWA7XG4gIH1cblxuICAvLyBJZiB0aGVyZSBhcmUgbm8gc3BlY2lhbCBmbGFncywganVzdCByZXR1cm4gdGhlIHJhdyB2YWx1ZS5cbiAgaWYgKHZhbHVlLmZsYWdzID09PSBpci5JMThuUGFyYW1WYWx1ZUZsYWdzLk5vbmUpIHtcbiAgICByZXR1cm4gYCR7dmFsdWUudmFsdWV9YDtcbiAgfVxuXG4gIC8vIEVuY29kZSB0aGUgcmVtYWluaW5nIGZsYWdzIGFzIHBhcnQgb2YgdGhlIHZhbHVlLlxuICBsZXQgdGFnTWFya2VyID0gJyc7XG4gIGxldCBjbG9zZU1hcmtlciA9ICcnO1xuICBpZiAodmFsdWUuZmxhZ3MgJiBpci5JMThuUGFyYW1WYWx1ZUZsYWdzLkVsZW1lbnRUYWcpIHtcbiAgICB0YWdNYXJrZXIgPSBFTEVNRU5UX01BUktFUjtcbiAgfSBlbHNlIGlmICh2YWx1ZS5mbGFncyAmIGlyLkkxOG5QYXJhbVZhbHVlRmxhZ3MuVGVtcGxhdGVUYWcpIHtcbiAgICB0YWdNYXJrZXIgPSBURU1QTEFURV9NQVJLRVI7XG4gIH1cbiAgaWYgKHRhZ01hcmtlciAhPT0gJycpIHtcbiAgICBjbG9zZU1hcmtlciA9IHZhbHVlLmZsYWdzICYgaXIuSTE4blBhcmFtVmFsdWVGbGFncy5DbG9zZVRhZyA/IFRBR19DTE9TRV9NQVJLRVIgOiAnJztcbiAgfVxuICBjb25zdCBjb250ZXh0ID1cbiAgICAgIHZhbHVlLnN1YlRlbXBsYXRlSW5kZXggPT09IG51bGwgPyAnJyA6IGAke0NPTlRFWFRfTUFSS0VSfSR7dmFsdWUuc3ViVGVtcGxhdGVJbmRleH1gO1xuICByZXR1cm4gYCR7RVNDQVBFfSR7Y2xvc2VNYXJrZXJ9JHt0YWdNYXJrZXJ9JHt2YWx1ZS52YWx1ZX0ke2NvbnRleHR9JHtFU0NBUEV9YDtcbn1cbiJdfQ==
218
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXh0cmFjdF9pMThuX21lc3NhZ2VzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29tcGlsZXIvc3JjL3RlbXBsYXRlL3BpcGVsaW5lL3NyYy9waGFzZXMvZXh0cmFjdF9pMThuX21lc3NhZ2VzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7R0FNRztBQUVILE9BQU8sS0FBSyxDQUFDLE1BQU0sK0JBQStCLENBQUM7QUFDbkQsT0FBTyxLQUFLLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFHL0I7O0dBRUc7QUFDSCxNQUFNLE1BQU0sR0FBRyxRQUFRLENBQUM7QUFFeEI7O0dBRUc7QUFDSCxNQUFNLGNBQWMsR0FBRyxHQUFHLENBQUM7QUFFM0I7O0dBRUc7QUFDSCxNQUFNLGVBQWUsR0FBRyxHQUFHLENBQUM7QUFFNUI7O0dBRUc7QUFDSCxNQUFNLGdCQUFnQixHQUFHLEdBQUcsQ0FBQztBQUU3Qjs7R0FFRztBQUNILE1BQU0sY0FBYyxHQUFHLEdBQUcsQ0FBQztBQUUzQjs7R0FFRztBQUNILE1BQU0saUJBQWlCLEdBQUcsR0FBRyxDQUFDO0FBRTlCOztHQUVHO0FBQ0gsTUFBTSxlQUFlLEdBQUcsR0FBRyxDQUFDO0FBRTVCOztHQUVHO0FBQ0gsTUFBTSxjQUFjLEdBQUcsR0FBRyxDQUFDO0FBRTNCOzs7R0FHRztBQUNILE1BQU0sVUFBVSxtQkFBbUIsQ0FBQyxHQUFtQjtJQUNyRCwyQ0FBMkM7SUFDM0MsNEVBQTRFO0lBQzVFLE1BQU0scUJBQXFCLEdBQUcsSUFBSSxHQUFHLEVBQStCLENBQUM7SUFDckUsTUFBTSxVQUFVLEdBQUcsSUFBSSxHQUFHLEVBQTZCLENBQUM7SUFDeEQsTUFBTSxZQUFZLEdBQUcsSUFBSSxHQUFHLEVBQStCLENBQUM7SUFDNUQsS0FBSyxNQUFNLElBQUksSUFBSSxHQUFHLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDN0IsS0FBSyxNQUFN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QW1CLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDaEQsT0FBTyxHQUFHLEtBQUssQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUMxQixDQUFDO0lBRUQsbURBQW1EO0lBQ25ELElBQUksU0FBUyxHQUFHLEVBQUUsQ0FBQztJQUNuQixJQUFJLFdBQVcsR0FBRyxFQUFFLENBQUM7SUFDckIsSUFBSSxLQUFLLENBQUMsS0FBSyxHQUFHLEVBQUUsQ0FBQyxtQkFBbUIsQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUNwRCxTQUFTLEdBQUcsY0FBYyxDQUFDO0lBQzdCLENBQUM7U0FBTSxJQUFJLEtBQUssQ0FBQyxLQUFLLEdBQUcsRUFBRSxDQUFDLG1CQUFtQixDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQzVELFNBQVMsR0FBRyxlQUFlLENBQUM7SUFDOUIsQ0FBQztJQUNELElBQUksU0FBUyxLQUFLLEVBQUUsRUFBRSxDQUFDO1FBQ3JCLFdBQVcsR0FBRyxLQUFLLENBQUMsS0FBSyxHQUFHLEVBQUUsQ0FBQyxtQkFBbUIsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7SUFDdEYsQ0FBQztJQUNELE1BQU0sT0FBTyxHQUNYLEtBQUssQ0FBQyxnQkFBZ0IsS0FBSyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxjQUFjLEdBQUcsS0FBSyxDQUFDLGdCQUFnQixFQUFFLENBQUM7SUFDdEYsT0FBTyxHQUFHLE1BQU0sR0FBRyxXQUFXLEdBQUcsU0FBUyxHQUFHLEtBQUssQ0FBQyxLQUFLLEdBQUcsT0FBTyxHQUFHLE1BQU0sRUFBRSxDQUFDO0FBQ2hGLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlXG4gKi9cblxuaW1wb3J0ICogYXMgbyBmcm9tICcuLi8uLi8uLi8uLi9vdXRwdXQvb3V0cHV0X2FzdCc7XG5pbXBvcnQgKiBhcyBpciBmcm9tICcuLi8uLi9pcic7XG5pbXBvcnQge0NvbXBpbGF0aW9uSm9ifSBmcm9tICcuLi9jb21waWxhdGlvbic7XG5cbi8qKlxuICogVGhlIGVzY2FwZSBzZXF1ZW5jZSB1c2VkIGluZGljYXRlIG1lc3NhZ2UgcGFyYW0gdmFsdWVzLlxuICovXG5jb25zdCBFU0NBUEUgPSAnXFx1RkZGRCc7XG5cbi8qKlxuICogTWFya2VyIHVzZWQgdG8gaW5kaWNhdGUgYW4gZWxlbWVudCB0YWcuXG4gKi9cbmNvbnN0IEVMRU1FTlRfTUFSS0VSID0gJyMnO1xuXG4vKipcbiAqIE1hcmtlciB1c2VkIHRvIGluZGljYXRlIGEgdGVtcGxhdGUgdGFnLlxuICovXG5jb25zdCBURU1QTEFURV9NQVJLRVIgPSAnKic7XG5cbi8qKlxuICogTWFya2VyIHVzZWQgdG8gaW5kaWNhdGUgY2xvc2luZyBvZiBhbiBlbGVtZW50IG9yIHRlbXBsYXRlIHRhZy5cbiAqL1xuY29uc3QgVEFHX0NMT1NFX01BUktFUiA9ICcvJztcblxuLyoqXG4gKiBNYXJrZXIgdXNlZCB0byBpbmRpY2F0ZSB0aGUgc3ViLXRlbXBsYXRlIGNvbnRleHQuXG4gKi9cbmNvbnN0IENPTlRFWFRfTUFSS0VSID0gJzonO1xuXG4vKipcbiAqIE1hcmtlciB1c2VkIHRvIGluZGljYXRlIHRoZSBzdGFydCBvZiBhIGxpc3Qgb2YgdmFsdWVzLlxuICovXG5jb25zdCBMSVNUX1NUQVJUX01BUktFUiA9ICdbJztcblxuLyoqXG4gKiBNYXJrZXIgdXNlZCB0byBpbmRpY2F0ZSB0aGUgZW5kIG9mIGEgbGlzdCBvZiB2YWx1ZXMuXG4gKi9cbmNvbnN0IExJU1RfRU5EX01BUktFUiA9ICddJztcblxuLyoqXG4gKiBEZWxpbWl0ZXIgdXNlZCB0byBzZXBhcmF0ZSBtdWx0aXBsZSB2YWx1ZXMgaW4gYSBsaXN0LlxuICovXG5jb25zdCBMSVNUX0RFTElNSVRFUiA9ICd8JztcblxuLyoqXG4gKiBGb3JtYXRzIHRoZSBwYXJhbSBtYXBzIG9uIGV4dHJhY3RlZCBtZXNzYWdlIG9wcyBpbnRvIGEgbWFwcyBvZiBgRXhwcmVzc2lvbmAgb2JqZWN0cyB0aGF0IGNhbiBiZVxuICogdXNlZCBpbiB0aGUgZmluYWwgb3V0cHV0LlxuICovXG5leHBvcnQgZnVuY3Rpb24gZXh0cmFjdEkxOG5NZXNzYWdlcyhqb2I6IENvbXBpbGF0aW9uSm9iKTogdm9pZCB7XG4gIC8vIENyZWF0ZSBhbiBpMThuIG1lc3NhZ2UgZm9yIGVhY2ggY29udGV4dC5cbiAgLy8gVE9ETzogTWVyZ2UgdGhlIGNvbnRleHQgb3Agd2l0aCB0aGUgbWVzc2FnZSBvcCBzaW5jZSB0aGV5J3JlIDE6MSBhbnl3YXlzLlxuICBjb25zdCBpMThuTWVzc2FnZXNCeUNvbnRleHQgPSBuZXcgTWFwPGlyLlhyZWZJZCwgaXIuSTE4bk1lc3NhZ2VPcD4oKTtcbiAgY29uc3QgaTE4bkJsb2NrcyA9IG5ldyBNYXA8aXIuWHJlZklkLCBpci5JMThuU3RhcnRPcD4oKTtcbiAgY29uc3QgaTE4bkNvbnRleHRzID0gbmV3IE1hcDxpci5YcmVmSWQsIGlyLkkxOG5Db250ZXh0T3A+KCk7XG4gIGZvciAoY29uc3QgdW5pdCBvZiBqb2IudW5pdHMpIHtcbiAgICBmb3IgKGNvbnN0IG9wIG9mIHVuaXQuY3JlYXRlKSB7XG4gICAgICBzd2l0Y2ggKG9wLmtpbmQpIHtcbiAgICAgICAgY2FzZSBpci5PcEtpbmQuSTE4bkNvbnRleHQ6XG4gICAgICAgICAgY29uc3QgaTE4bk1lc3NhZ2VPcCA9IGNyZWF0ZUkxOG5NZXNzYWdlKGpvYiwgb3ApO1xuICAgICAgICAgIHVuaXQuY3JlYXRlLnB1c2goaTE4bk1lc3NhZ2VPcCk7XG4gICAgICAgICAgaTE4bk1lc3NhZ2VzQnlDb250ZXh0LnNldChvcC54cmVmLCBpMThuTWVzc2FnZU9wKTtcbiAgICAgICAgICBpMThuQ29udGV4dHMuc2V0KG9wLnhyZWYsIG9wKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBpci5PcEtpbmQuSTE4blN0YXJ0OlxuICAgICAgICAgIGkxOG5CbG9ja3Muc2V0KG9wLnhyZWYsIG9wKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvLyBBc3NvY2lhdGUgc3ViLW1lc3NhZ2VzIGZvciBJQ1VzIHdpdGggdGhlaXIgcm9vdCBtZXNzYWdlLiBBdCB0aGlzIHBvaW50IHdlIGNhbiBhbHNvIHJlbW92ZSB0aGVcbiAgLy8gSUNVIHN0YXJ0L2VuZCBvcHMsIGFzIHRoZXkgYXJlIG5vIGxvbmdlciBuZWVkZWQuXG4gIGxldCBjdXJyZW50SWN1OiBpci5JY3VTdGFydE9wIHwgbnVsbCA9IG51bGw7XG4gIGZvciAoY29uc3QgdW5pdCBvZiBqb2IudW5pdHMpIHtcbiAgICBmb3IgKGNvbnN0IG9wIG9mIHVuaXQuY3JlYXRlKSB7XG4gICAgICBzd2l0Y2ggKG9wLmtpbmQpIHtcbiAgICAgICAgY2FzZSBpci5PcEtpbmQuSWN1U3RhcnQ6XG4gICAgICAgICAgY3VycmVudEljdSA9IG9wO1xuICAgICAgICAgIGlyLk9wTGlzdC5yZW1vdmU8aXIuQ3JlYXRlT3A+KG9wKTtcbiAgICAgICAgICAvLyBTa2lwIGFueSBjb250ZXh0cyBub3QgYXNzb2NpYXRlZCB3aXRoIGFuIElDVS5cbiAgICAgICAgICBjb25zdCBpY3VDb250ZXh0ID0gaTE4bkNvbnRleHRzLmdldChvcC5jb250ZXh0ISkhO1xuICAgICAgICAgIGlmIChpY3VDb250ZXh0LmNvbnRleHRLaW5kICE9PSBpci5JMThuQ29udGV4dEtpbmQuSWN1KSB7XG4gICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICB9XG4gICAgICAgICAgLy8gU2tpcCBJQ1VzIHRoYXQgc2hhcmUgYSBjb250ZXh0IHdpdGggdGhlaXIgaTE4biBtZXNzYWdlLiBUaGVzZSByZXByZXNlbnQgcm9vdC1sZXZlbFxuICAgICAgICAgIC8vIElDVXMsIG5vdCBzdWItbWVzc2FnZXMuXG4gICAgICAgICAgY29uc3QgaTE4bkJsb2NrID0gaTE4bkJsb2Nrcy5nZXQoaWN1Q29udGV4dC5pMThuQmxvY2shKSE7XG4gICAgICAgICAgaWYgKGkxOG5CbG9jay5jb250ZXh0ID09PSBpY3VDb250ZXh0LnhyZWYpIHtcbiAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgIH1cbiAgICAgICAgICAvLyBGaW5kIHRoZSByb290IG1lc3NhZ2UgYW5kIHB1c2ggdGhpcyBJQ1VzIG1lc3NhZ2UgYXMgYSBzdWItbWVzc2FnZS5cbiAgICAgICAgICBjb25zdCByb290STE4bkJsb2NrID0gaTE4bkJsb2Nrcy5nZXQoaTE4bkJsb2NrLnJvb3QpITtcbiAgICAgICAgICBjb25zdCByb290TWVzc2FnZSA9IGkxOG5NZXNzYWdlc0J5Q29udGV4dC5nZXQocm9vdEkxOG5CbG9jay5jb250ZXh0ISk7XG4gICAgICAgICAgaWYgKHJvb3RNZXNzYWdlID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHRocm93IEVycm9yKCdBc3NlcnRpb25FcnJvcjogSUNVIHN1Yi1tZXNzYWdlIHNob3VsZCBiZWxvbmcgdG8gYSByb290IG1lc3NhZ2UuJyk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGNvbnN0IHN1Yk1lc3NhZ2UgPSBpMThuTWVzc2FnZXNCeUNvbnRleHQuZ2V0KGljdUNvbnRleHQueHJlZikhO1xuICAgICAgICAgIHN1Yk1lc3NhZ2UubWVzc2FnZVBsYWNlaG9sZGVyID0gb3AubWVzc2FnZVBsYWNlaG9sZGVyO1xuICAgICAgICAgIHJvb3RNZXNzYWdlLnN1Yk1lc3NhZ2VzLnB1c2goc3ViTWVzc2FnZS54cmVmKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBpci5PcEtpbmQuSWN1RW5kOlxuICAgICAgICAgIGN1cnJlbnRJY3UgPSBudWxsO1xuICAgICAgICAgIGlyLk9wTGlzdC5yZW1vdmU8aXIuQ3JlYXRlT3A+KG9wKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBpci5PcEtpbmQuSWN1UGxhY2Vob2xkZXI6XG4gICAgICAgICAgLy8gQWRkIElDVSBwbGFjZWhvbGRlcnMgdG8gdGhlIG1lc3NhZ2UsIHRoZW4gcmVtb3ZlIHRoZSBJQ1UgcGxhY2Vob2xkZXIgb3BzLlxuICAgICAgICAgIGlmIChjdXJyZW50SWN1ID09PSBudWxsIHx8IGN1cnJlbnRJY3UuY29udGV4dCA9PSBudWxsKSB7XG4gICAgICAgICAgICB0aHJvdyBFcnJvcignQXNzZXJ0aW9uRXJyb3I6IFVuZXhwZWN0ZWQgSUNVIHBsYWNlaG9sZGVyIG91dHNpZGUgb2YgaTE4biBjb250ZXh0Jyk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGNvbnN0IG1zZyA9IGkxOG5NZXNzYWdlc0J5Q29udGV4dC5nZXQoY3VycmVudEljdS5jb250ZXh0KSE7XG4gICAgICAgICAgbXNnLnBvc3Rwcm9jZXNzaW5nUGFyYW1zLnNldChvcC5uYW1lLCBvLmxpdGVyYWwoZm9ybWF0SWN1UGxhY2Vob2xkZXIob3ApKSk7XG4gICAgICAgICAgaXIuT3BMaXN0LnJlbW92ZTxpci5DcmVhdGVPcD4ob3ApO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG4vKipcbiAqIENyZWF0ZSBhbiBpMThuIG1lc3NhZ2Ugb3AgZnJvbSBhbiBpMThuIGNvbnRleHQgb3AuXG4gKi9cbmZ1bmN0aW9uIGNyZWF0ZUkxOG5NZXNzYWdlKFxuICBqb2I6IENvbXBpbGF0aW9uSm9iLFxuICBjb250ZXh0OiBpci5JMThuQ29udGV4dE9wLFxuICBtZXNzYWdlUGxhY2Vob2xkZXI/OiBzdHJpbmcsXG4pOiBpci5JMThuTWVzc2FnZU9wIHtcbiAgbGV0IGZvcm1hdHRlZFBhcmFtcyA9IGZvcm1hdFBhcmFtcyhjb250ZXh0LnBhcmFtcyk7XG4gIGNvbnN0IGZvcm1hdHRlZFBvc3Rwcm9jZXNzaW5nUGFyYW1zID0gZm9ybWF0UGFyYW1zKGNvbnRleHQucG9zdHByb2Nlc3NpbmdQYXJhbXMpO1xuICBsZXQgbmVlZHNQb3N0cHJvY2Vzc2luZyA9IFsuLi5jb250ZXh0LnBhcmFtcy52YWx1ZXMoKV0uc29tZSgodikgPT4gdi5sZW5ndGggPiAxKTtcbiAgcmV0dXJuIGlyLmNyZWF0ZUkxOG5NZXNzYWdlT3AoXG4gICAgam9iLmFsbG9jYXRlWHJlZklkKCksXG4gICAgY29udGV4dC54cmVmLFxuICAgIGNvbnRleHQuaTE4bkJsb2NrLFxuICAgIGNvbnRleHQubWVzc2FnZSxcbiAgICBtZXNzYWdlUGxhY2Vob2xkZXIgPz8gbnVsbCxcbiAgICBmb3JtYXR0ZWRQYXJhbXMsXG4gICAgZm9ybWF0dGVkUG9zdHByb2Nlc3NpbmdQYXJhbXMsXG4gICAgbmVlZHNQb3N0cHJvY2Vzc2luZyxcbiAgKTtcbn1cblxuLyoqXG4gKiBGb3JtYXRzIGFuIElDVSBwbGFjZWhvbGRlciBpbnRvIGEgc2luZ2xlIHN0cmluZyB3aXRoIGV4cHJlc3Npb24gcGxhY2Vob2xkZXJzLlxuICovXG5mdW5jdGlvbiBmb3JtYXRJY3VQbGFjZWhvbGRlcihvcDogaXIuSWN1UGxhY2Vob2xkZXJPcCkge1xuICBpZiAob3Auc3RyaW5ncy5sZW5ndGggIT09IG9wLmV4cHJlc3Npb25QbGFjZWhvbGRlcnMubGVuZ3RoICsgMSkge1xuICAgIHRocm93IEVycm9yKFxuICAgICAgYEFzc2VydGlvbkVycm9yOiBJbnZhbGlkIElDVSBwbGFjZWhvbGRlciB3aXRoICR7b3Auc3RyaW5ncy5sZW5ndGh9IHN0cmluZ3MgYW5kICR7b3AuZXhwcmVzc2lvblBsYWNlaG9sZGVycy5sZW5ndGh9IGV4cHJlc3Npb25zYCxcbiAgICApO1xuICB9XG4gIGNvbnN0IHZhbHVlcyA9IG9wLmV4cHJlc3Npb25QbGFjZWhvbGRlcnMubWFwKGZvcm1hdFZhbHVlKTtcbiAgcmV0dXJuIG9wLnN0cmluZ3MuZmxhdE1hcCgoc3RyLCBpKSA9PiBbc3RyLCB2YWx1ZXNbaV0gfHwgJyddKS5qb2luKCcnKTtcbn1cblxuLyoqXG4gKiBGb3JtYXRzIGEgbWFwIG9mIGBJMThuUGFyYW1WYWx1ZVtdYCB2YWx1ZXMgaW50byBhIG1hcCBvZiBgRXhwcmVzc2lvbmAgdmFsdWVzLlxuICovXG5mdW5jdGlvbiBmb3JtYXRQYXJhbXMocGFyYW1zOiBNYXA8c3RyaW5nLCBpci5JMThuUGFyYW1WYWx1ZVtdPikge1xuICBjb25zdCBmb3JtYXR0ZWRQYXJhbXMgPSBuZXcgTWFwPHN0cmluZywgby5FeHByZXNzaW9uPigpO1xuICBmb3IgKGNvbnN0IFtwbGFjZWhvbGRlciwgcGxhY2Vob2xkZXJWYWx1ZXNdIG9mIHBhcmFtcykge1xuICAgIGNvbnN0IHNlcmlhbGl6ZWRWYWx1ZXMgPSBmb3JtYXRQYXJhbVZhbHVlcyhwbGFjZWhvbGRlclZhbHVlcyk7XG4gICAgaWYgKHNlcmlhbGl6ZWRWYWx1ZXMgIT09IG51bGwpIHtcbiAgICAgIGZvcm1hdHRlZFBhcmFtcy5zZXQocGxhY2Vob2xkZXIsIG8ubGl0ZXJhbChzZXJpYWxpemVkVmFsdWVzKSk7XG4gICAgfVxuICB9XG4gIHJldHVybiBmb3JtYXR0ZWRQYXJhbXM7XG59XG5cbi8qKlxuICogRm9ybWF0cyBhbiBgSTE4blBhcmFtVmFsdWVbXWAgaW50byBhIHN0cmluZyAob3IgbnVsbCBmb3IgZW1wdHkgYXJyYXkpLlxuICovXG5mdW5jdGlvbiBmb3JtYXRQYXJhbVZhbHVlcyh2YWx1ZXM6IGlyLkkxOG5QYXJhbVZhbHVlW10pOiBzdHJpbmcgfCBudWxsIHtcbiAgaWYgKHZhbHVlcy5sZW5ndGggPT09IDApIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuICBjb25zdCBzZXJpYWxpemVkVmFsdWVzID0gdmFsdWVzLm1hcCgodmFsdWUpID0+IGZvcm1hdFZhbHVlKHZhbHVlKSk7XG4gIHJldHVybiBzZXJpYWxpemVkVmFsdWVzLmxlbmd0aCA9PT0gMVxuICAgID8gc2VyaWFsaXplZFZhbHVlc1swXVxuICAgIDogYCR7TElTVF9TVEFSVF9NQVJLRVJ9JHtzZXJpYWxpemVkVmFsdWVzLmpvaW4oTElTVF9ERUxJTUlURVIpfSR7TElTVF9FTkRfTUFSS0VSfWA7XG59XG5cbi8qKlxuICogRm9ybWF0cyBhIHNpbmdsZSBgSTE4blBhcmFtVmFsdWVgIGludG8gYSBzdHJpbmdcbiAqL1xuZnVuY3Rpb24gZm9ybWF0VmFsdWUodmFsdWU6IGlyLkkxOG5QYXJhbVZhbHVlKTogc3RyaW5nIHtcbiAgLy8gRWxlbWVudCB0YWdzIHdpdGggYSBzdHJ1Y3R1cmFsIGRpcmVjdGl2ZSB1c2UgYSBzcGVjaWFsIGZvcm0gdGhhdCBjb25jYXRlbmF0ZXMgdGhlIGVsZW1lbnQgYW5kXG4gIC8vIHRlbXBsYXRlIHZhbHVlcy5cbiAgaWYgKFxuICAgIHZhbHVlLmZsYWdzICYgaXIuSTE4blBhcmFtVmFsdWVGbGFncy5FbGVtZW50VGFnICYmXG4gICAgdmFsdWUuZmxhZ3MgJiBpci5JMThuUGFyYW1WYWx1ZUZsYWdzLlRlbXBsYXRlVGFnXG4gICkge1xuICAgIGlmICh0eXBlb2YgdmFsdWUudmFsdWUgIT09ICdvYmplY3QnKSB7XG4gICAgICB0aHJvdyBFcnJvcignQXNzZXJ0aW9uRXJyb3I6IEV4cGVjdGVkIGkxOG4gcGFyYW0gdmFsdWUgdG8gaGF2ZSBhbiBlbGVtZW50IGFuZCB0ZW1wbGF0ZSBzbG90Jyk7XG4gICAgfVxuICAgIGNvbnN0IGVsZW1lbnRWYWx1ZSA9IGZvcm1hdFZhbHVlKHtcbiAgICAgIC4uLnZhbHVlLFxuICAgICAgdmFsdWU6IHZhbHVlLnZhbHVlLmVsZW1lbnQsXG4gICAgICBmbGFnczogdmFsdWUuZmxhZ3MgJiB+aXIuSTE4blBhcmFtVmFsdWVGbGFncy5UZW1wbGF0ZVRhZyxcbiAgICB9KTtcbiAgICBjb25zdCB0ZW1wbGF0ZVZhbHVlID0gZm9ybWF0VmFsdWUoe1xuICAgICAgLi4udmFsdWUsXG4gICAgICB2YWx1ZTogdmFsdWUudmFsdWUudGVtcGxhdGUsXG4gICAgICBmbGFnczogdmFsdWUuZmxhZ3MgJiB+aXIuSTE4blBhcmFtVmFsdWVGbGFncy5FbGVtZW50VGFnLFxuICAgIH0pO1xuICAgIC8vIFRPRE8obW1hbGVyYmEpOiBUaGlzIGlzIGxpa2VseSBhIGJ1ZyBpbiBUZW1wbGF0ZURlZmluaXRpb25CdWlsZGVyLCB3ZSBzaG91bGQgbm90IG5lZWQgdG9cbiAgICAvLyByZWNvcmQgdGhlIHRlbXBsYXRlIHZhbHVlIHR3aWNlLiBGb3Igbm93IEknbSByZS1pbXBsZW1lbnRpbmcgdGhlIGJlaGF2aW9yIGhlcmUgdG8ga2VlcCB0aGVcbiAgICAvLyBvdXRwdXQgY29uc2lzdGVudCB3aXRoIFRlbXBsYXRlRGVmaW5pdGlvbkJ1aWxkZXIuXG4gICAgaWYgKFxuICAgICAgdmFsdWUuZmxhZ3MgJiBpci5JMThuUGFyYW1WYWx1ZUZsYWdzLk9wZW5UYWcgJiZcbiAgICAgIHZhbHVlLmZsYWdzICYgaXIuSTE4blBhcmFtVmFsdWVGbGFncy5DbG9zZVRhZ1xuICAgICkge1xuICAgICAgcmV0dXJuIGAke3RlbXBsYXRlVmFsdWV9JHtlbGVtZW50VmFsdWV9JHt0ZW1wbGF0ZVZhbHVlfWA7XG4gICAgfVxuICAgIC8vIFRvIG1hdGNoIHRoZSBUZW1wbGF0ZURlZmluaXRpb25CdWlsZGVyIG91dHB1dCwgZmxpcCB0aGUgb3JkZXIgZGVwZW5kaW5nIG9uIHdoZXRoZXIgdGhlXG4gICAgLy8gdmFsdWVzIHJlcHJlc2VudCBhIGNsb3Npbmcgb3Igb3BlbmluZyB0YWcgKG9yIGJvdGgpLlxuICAgIC8vIFRPRE8obW1hbGVyYmEpOiBGaWd1cmUgb3V0IGlmIHRoaXMgbWFrZXMgYSBkaWZmZXJlbmNlIGluIHRlcm1zIG9mIGVpdGhlciBmdW5jdGlvbmFsaXR5LFxuICAgIC8vIG9yIHRoZSByZXN1bHRpbmcgbWVzc2FnZSBJRC4gSWYgbm90LCB3ZSBjYW4gcmVtb3ZlIHRoZSBzcGVjaWFsLWNhc2luZyBpbiB0aGUgZnV0dXJlLlxuICAgIHJldHVybiB2YWx1ZS5mbGFncyAmIGlyLkkxOG5QYXJhbVZhbHVlRmxhZ3MuQ2xvc2VUYWdcbiAgICAgID8gYCR7ZWxlbWVudFZhbHVlfSR7dGVtcGxhdGVWYWx1ZX1gXG4gICAgICA6IGAke3RlbXBsYXRlVmFsdWV9JHtlbGVtZW50VmFsdWV9YDtcbiAgfVxuXG4gIC8vIFNlbGYtY2xvc2luZyB0YWdzIHVzZSBhIHNwZWNpYWwgZm9ybSB0aGF0IGNvbmNhdGVuYXRlcyB0aGUgc3RhcnQgYW5kIGNsb3NlIHRhZyB2YWx1ZXMuXG4gIGlmIChcbiAgICB2YWx1ZS5mbGFncyAmIGlyLkkxOG5QYXJhbVZhbHVlRmxhZ3MuT3BlblRhZyAmJlxuICAgIHZhbHVlLmZsYWdzICYgaXIuSTE4blBhcmFtVmFsdWVGbGFncy5DbG9zZVRhZ1xuICApIHtcbiAgICByZXR1cm4gYCR7Zm9ybWF0VmFsdWUoey4uLnZhbHVlLCBmbGFnczogdmFsdWUuZmxhZ3MgJiB+aXIuSTE4blBhcmFtVmFsdWVGbGFncy5DbG9zZVRhZ30pfSR7Zm9ybWF0VmFsdWUoXG4gICAgICB7Li4udmFsdWUsIGZsYWdzOiB2YWx1ZS5mbGFncyAmIH5pci5JMThuUGFyYW1WYWx1ZUZsYWdzLk9wZW5UYWd9LFxuICAgICl9YDtcbiAgfVxuXG4gIC8vIElmIHRoZXJlIGFyZSBubyBzcGVjaWFsIGZsYWdzLCBqdXN0IHJldHVybiB0aGUgcmF3IHZhbHVlLlxuICBpZiAodmFsdWUuZmxhZ3MgPT09IGlyLkkxOG5QYXJhbVZhbHVlRmxhZ3MuTm9uZSkge1xuICAgIHJldHVybiBgJHt2YWx1ZS52YWx1ZX1gO1xuICB9XG5cbiAgLy8gRW5jb2RlIHRoZSByZW1haW5pbmcgZmxhZ3MgYXMgcGFydCBvZiB0aGUgdmFsdWUuXG4gIGxldCB0YWdNYXJrZXIgPSAnJztcbiAgbGV0IGNsb3NlTWFya2VyID0gJyc7XG4gIGlmICh2YWx1ZS5mbGFncyAmIGlyLkkxOG5QYXJhbVZhbHVlRmxhZ3MuRWxlbWVudFRhZykge1xuICAgIHRhZ01hcmtlciA9IEVMRU1FTlRfTUFSS0VSO1xuICB9IGVsc2UgaWYgKHZhbHVlLmZsYWdzICYgaXIuSTE4blBhcmFtVmFsdWVGbGFncy5UZW1wbGF0ZVRhZykge1xuICAgIHRhZ01hcmtlciA9IFRFTVBMQVRFX01BUktFUjtcbiAgfVxuICBpZiAodGFnTWFya2VyICE9PSAnJykge1xuICAgIGNsb3NlTWFya2VyID0gdmFsdWUuZmxhZ3MgJiBpci5JMThuUGFyYW1WYWx1ZUZsYWdzLkNsb3NlVGFnID8gVEFHX0NMT1NFX01BUktFUiA6ICcnO1xuICB9XG4gIGNvbnN0IGNvbnRleHQgPVxuICAgIHZhbHVlLnN1YlRlbXBsYXRlSW5kZXggPT09IG51bGwgPyAnJyA6IGAke0NPTlRFWFRfTUFSS0VSfSR7dmFsdWUuc3ViVGVtcGxhdGVJbmRleH1gO1xuICByZXR1cm4gYCR7RVNDQVBFfSR7Y2xvc2VNYXJrZXJ9JHt0YWdNYXJrZXJ9JHt2YWx1ZS52YWx1ZX0ke2NvbnRleHR9JHtFU0NBUEV9YDtcbn1cbiJdfQ==
@@ -53,4 +53,4 @@ export function generateAdvance(job) {
53
53
  }
54
54
  }
55
55
  }
56
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VuZXJhdGVfYWR2YW5jZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvbXBpbGVyL3NyYy90ZW1wbGF0ZS9waXBlbGluZS9zcmMvcGhhc2VzL2dlbmVyYXRlX2FkdmFuY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7OztHQU1HO0FBRUgsT0FBTyxLQUFLLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFHL0I7OztHQUdHO0FBQ0gsTUFBTSxVQUFVLGVBQWUsQ0FBQyxHQUFtQjtJQUNqRCxLQUFLLE1BQU0sSUFBSSxJQUFJLEdBQUcsQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUM3QixxRkFBcUY7UUFDckYsTUFBTSxPQUFPLEdBQUcsSUFBSSxHQUFHLEVBQXFCLENBQUM7UUFDN0MsS0FBSyxNQUFNLEVBQUUsSUFBSSxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDN0IsSUFBSSxDQUFDLEVBQUUsQ0FBQyxvQkFBb0IsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDO2dCQUNqQyxTQUFTO1lBQ1gsQ0FBQztpQkFBTSxJQUFJLEVBQUUsQ0FBQyxNQUFNLENBQUMsSUFBSSxLQUFLLElBQUksRUFBRSxDQUFDO2dCQUNuQyxNQUFNLElBQUksS0FBSyxDQUNYLHlGQUF5RixDQUFDLENBQUM7WUFDakcsQ0FBQztZQUVELE9BQU8sQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3ZDLENBQUM7UUFFRCw4RkFBOEY7UUFDOUYsNEZBQTRGO1FBQzVGLHdDQUF3QztRQUN4QyxFQUFFO1FBQ0YsOEZBQThGO1FBQzlGLElBQUksV0FBVyxHQUFHLENBQUMsQ0FBQztRQUNwQixLQUFLLE1BQU0sRUFBRSxJQUFJLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUM3QixJQUFJLENBQUMsRUFBRSxDQUFDLDRCQUE0QixDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUM7Z0JBQ3pDLGlFQUFpRTtnQkFDakUsU0FBUztZQUNYLENBQUM7aUJBQU0sSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUM7Z0JBQ25DLDRGQUE0RjtnQkFDNUYsaUJBQWlCO2dCQUNqQixNQUFNLElBQUksS0FBSyxDQUFDLHdEQUF3RCxFQUFFLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQztZQUN2RixDQUFDO1lBRUQsTUFBTSxJQUFJLEdBQUcsT0FBTyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFFLENBQUM7WUFFckMsNkNBQTZDO1lBQzdDLElBQUksV0FBVyxLQUFLLElBQUksRUFBRSxDQUFDO2dCQUN6Qiw0REFBNEQ7Z0JBQzVELE1BQU0sS0FBSyxHQUFHLElBQUksR0FBRyxXQUFXLENBQUM7Z0JBQ2pDLElBQUksS0FBSyxHQUFHLENBQUMsRUFBRSxDQUFDO29CQUNkLE1BQU0sSUFBSSxLQUFLLENBQUMsa0VBQWtFLENBQUMsQ0FBQztnQkFDdEYsQ0FBQztnQkFFRCxFQUFFLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FDbEIsRUFBRSxDQUFDLGVBQWUsQ0FBQyxLQUFLLEVBQUcsRUFBcUMsQ0FBQyxVQUFVLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztnQkFDdEYsV0FBVyxHQUFHLElBQUksQ0FBQztZQUNyQixDQUFDO1FBQ0gsQ0FBQztJQUNILENBQUM7QUFDSCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZVxuICovXG5cbmltcG9ydCAqIGFzIGlyIGZyb20gJy4uLy4uL2lyJztcbmltcG9ydCB0eXBlIHtDb21waWxhdGlvbkpvYn0gZnJvbSAnLi4vY29tcGlsYXRpb24nO1xuXG4vKipcbiAqIEdlbmVyYXRlIGBpci5BZHZhbmNlT3BgcyBpbiBiZXR3ZWVuIGBpci5VcGRhdGVPcGBzIHRoYXQgZW5zdXJlIHRoZSBydW50aW1lJ3MgaW1wbGljaXQgc2xvdFxuICogY29udGV4dCB3aWxsIGJlIGFkdmFuY2VkIGNvcnJlY3RseS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdlbmVyYXRlQWR2YW5jZShqb2I6IENvbXBpbGF0aW9uSm9iKTogdm9pZCB7XG4gIGZvciAoY29uc3QgdW5pdCBvZiBqb2IudW5pdHMpIHtcbiAgICAvLyBGaXJzdCBidWlsZCBhIG1hcCBvZiBhbGwgb2YgdGhlIGRlY2xhcmF0aW9ucyBpbiB0aGUgdmlldyB0aGF0IGhhdmUgYXNzaWduZWQgc2xvdHMuXG4gICAgY29uc3Qgc2xvdE1hcCA9IG5ldyBNYXA8aXIuWHJlZklkLCBudW1iZXI+KCk7XG4gICAgZm9yIChjb25zdCBvcCBvZiB1bml0LmNyZWF0ZSkge1xuICAgICAgaWYgKCFpci5oYXNDb25zdW1lc1Nsb3RUcmFpdChvcCkpIHtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9IGVsc2UgaWYgKG9wLmhhbmRsZS5zbG90ID09PSBudWxsKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICAgIGBBc3NlcnRpb25FcnJvcjogZXhwZWN0ZWQgc2xvdHMgdG8gaGF2ZSBiZWVuIGFsbG9jYXRlZCBiZWZvcmUgZ2VuZXJhdGluZyBhZHZhbmNlKCkgY2FsbHNgKTtcbiAgICAgIH1cblxuICAgICAgc2xvdE1hcC5zZXQob3AueHJlZiwgb3AuaGFuZGxlLnNsb3QpO1xuICAgIH1cblxuICAgIC8vIE5leHQsIHN0ZXAgdGhyb3VnaCB0aGUgdXBkYXRlIG9wZXJhdGlvbnMgYW5kIGdlbmVyYXRlIGBpci5BZHZhbmNlT3BgcyBhcyByZXF1aXJlZCB0byBlbnN1cmVcbiAgICAvLyB0aGUgcnVudGltZSdzIGltcGxpY2l0IHNsb3QgY291bnRlciB3aWxsIGJlIHNldCB0byB0aGUgY29ycmVjdCBzbG90IGJlZm9yZSBleGVjdXRpbmcgZWFjaFxuICAgIC8vIHVwZGF0ZSBvcGVyYXRpb24gd2hpY2ggZGVwZW5kcyBvbiBpdC5cbiAgICAvL1xuICAgIC8vIFRvIGRvIHRoYXQsIHdlIHRyYWNrIHdoYXQgdGhlIHJ1bnRpbWUncyBzbG90IGNvdW50ZXIgd2lsbCBiZSB0aHJvdWdoIHRoZSB1cGRhdGUgb3BlcmF0aW9ucy5cbiAgICBsZXQgc2xvdENvbnRleHQgPSAwO1xuICAgIGZvciAoY29uc3Qgb3Agb2YgdW5pdC51cGRhdGUpIHtcbiAgICAgIGlmICghaXIuaGFzRGVwZW5kc09uU2xvdENvbnRleHRUcmFpdChvcCkpIHtcbiAgICAgICAgLy8gYG9wYCBkb2Vzbid0IGRlcGVuZCBvbiB0aGUgc2xvdCBjb3VudGVyLCBzbyBpdCBjYW4gYmUgc2tpcHBlZC5cbiAgICAgICAgY29udGludWU7XG4gICAgICB9IGVsc2UgaWYgKCFzbG90TWFwLmhhcyhvcC50YXJnZXQpKSB7XG4gICAgICAgIC8vIFdlIGV4cGVjdCBvcHMgdGhhdCBfZG9fIGRlcGVuZCBvbiB0aGUgc2xvdCBjb3VudGVyIHRvIHBvaW50IGF0IGRlY2xhcmF0aW9ucyB0aGF0IGV4aXN0IGluXG4gICAgICAgIC8vIHRoZSBgc2xvdE1hcGAuXG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgQXNzZXJ0aW9uRXJyb3I6IHJlZmVyZW5jZSB0byB1bmtub3duIHNsb3QgZm9yIHRhcmdldCAke29wLnRhcmdldH1gKTtcbiAgICAgIH1cblxuICAgICAgY29uc3Qgc2xvdCA9IHNsb3RNYXAuZ2V0KG9wLnRhcmdldCkhO1xuXG4gICAgICAvLyBEb2VzIHRoZSBzbG90IGNvdW50ZXIgbmVlZCB0byBiZSBhZGp1c3RlZD9cbiAgICAgIGlmIChzbG90Q29udGV4dCAhPT0gc2xvdCkge1xuICAgICAgICAvLyBJZiBzbywgZ2VuZXJhdGUgYW4gYGlyLkFkdmFuY2VPcGAgdG8gYWR2YW5jZSB0aGUgY291bnRlci5cbiAgICAgICAgY29uc3QgZGVsdGEgPSBzbG90IC0gc2xvdENvbnRleHQ7XG4gICAgICAgIGlmIChkZWx0YSA8IDApIHtcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEFzc2VydGlvbkVycm9yOiBzbG90IGNvdW50ZXIgc2hvdWxkIG5ldmVyIG5lZWQgdG8gbW92ZSBiYWNrd2FyZHNgKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlyLk9wTGlzdC5pbnNlcnRCZWZvcmU8aXIuVXBkYXRlT3A+KFxuICAgICAgICAgICAgaXIuY3JlYXRlQWR2YW5jZU9wKGRlbHRhLCAob3AgYXMgaXIuRGVwZW5kc09uU2xvdENvbnRleHRPcFRyYWl0KS5zb3VyY2VTcGFuKSwgb3ApO1xuICAgICAgICBzbG90Q29udGV4dCA9IHNsb3Q7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG4iXX0=
56
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VuZXJhdGVfYWR2YW5jZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvbXBpbGVyL3NyYy90ZW1wbGF0ZS9waXBlbGluZS9zcmMvcGhhc2VzL2dlbmVyYXRlX2FkdmFuY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7OztHQU1HO0FBRUgsT0FBTyxLQUFLLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFHL0I7OztHQUdHO0FBQ0gsTUFBTSxVQUFVLGVBQWUsQ0FBQyxHQUFtQjtJQUNqRCxLQUFLLE1BQU0sSUFBSSxJQUFJLEdBQUcsQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUM3QixxRkFBcUY7UUFDckYsTUFBTSxPQUFPLEdBQUcsSUFBSSxHQUFHLEVBQXFCLENBQUM7UUFDN0MsS0FBSyxNQUFNLEVBQUUsSUFBSSxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDN0IsSUFBSSxDQUFDLEVBQUUsQ0FBQyxvQkFBb0IsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDO2dCQUNqQyxTQUFTO1lBQ1gsQ0FBQztpQkFBTSxJQUFJLEVBQUUsQ0FBQyxNQUFNLENBQUMsSUFBSSxLQUFLLElBQUksRUFBRSxDQUFDO2dCQUNuQyxNQUFNLElBQUksS0FBSyxDQUNiLHlGQUF5RixDQUMxRixDQUFDO1lBQ0osQ0FBQztZQUVELE9BQU8sQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3ZDLENBQUM7UUFFRCw4RkFBOEY7UUFDOUYsNEZBQTRGO1FBQzVGLHdDQUF3QztRQUN4QyxFQUFFO1FBQ0YsOEZBQThGO1FBQzlGLElBQUksV0FBVyxHQUFHLENBQUMsQ0FBQztRQUNwQixLQUFLLE1BQU0sRUFBRSxJQUFJLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUM3QixJQUFJLENBQUMsRUFBRSxDQUFDLDRCQUE0QixDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUM7Z0JBQ3pDLGlFQUFpRTtnQkFDakUsU0FBUztZQUNYLENBQUM7aUJBQU0sSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUM7Z0JBQ25DLDRGQUE0RjtnQkFDNUYsaUJBQWlCO2dCQUNqQixNQUFNLElBQUksS0FBSyxDQUFDLHdEQUF3RCxFQUFFLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQztZQUN2RixDQUFDO1lBRUQsTUFBTSxJQUFJLEdBQUcsT0FBTyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFFLENBQUM7WUFFckMsNkNBQTZDO1lBQzdDLElBQUksV0FBVyxLQUFLLElBQUksRUFBRSxDQUFDO2dCQUN6Qiw0REFBNEQ7Z0JBQzVELE1BQU0sS0FBSyxHQUFHLElBQUksR0FBRyxXQUFXLENBQUM7Z0JBQ2pDLElBQUksS0FBSyxHQUFHLENBQUMsRUFBRSxDQUFDO29CQUNkLE1BQU0sSUFBSSxLQUFLLENBQUMsa0VBQWtFLENBQUMsQ0FBQztnQkFDdEYsQ0FBQztnQkFFRCxFQUFFLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FDcEIsRUFBRSxDQUFDLGVBQWUsQ0FBQyxLQUFLLEVBQUcsRUFBcUMsQ0FBQyxVQUFVLENBQUMsRUFDNUUsRUFBRSxDQUNILENBQUM7Z0JBQ0YsV0FBVyxHQUFHLElBQUksQ0FBQztZQUNyQixDQUFDO1FBQ0gsQ0FBQztJQUNILENBQUM7QUFDSCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZVxuICovXG5cbmltcG9ydCAqIGFzIGlyIGZyb20gJy4uLy4uL2lyJztcbmltcG9ydCB0eXBlIHtDb21waWxhdGlvbkpvYn0gZnJvbSAnLi4vY29tcGlsYXRpb24nO1xuXG4vKipcbiAqIEdlbmVyYXRlIGBpci5BZHZhbmNlT3BgcyBpbiBiZXR3ZWVuIGBpci5VcGRhdGVPcGBzIHRoYXQgZW5zdXJlIHRoZSBydW50aW1lJ3MgaW1wbGljaXQgc2xvdFxuICogY29udGV4dCB3aWxsIGJlIGFkdmFuY2VkIGNvcnJlY3RseS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdlbmVyYXRlQWR2YW5jZShqb2I6IENvbXBpbGF0aW9uSm9iKTogdm9pZCB7XG4gIGZvciAoY29uc3QgdW5pdCBvZiBqb2IudW5pdHMpIHtcbiAgICAvLyBGaXJzdCBidWlsZCBhIG1hcCBvZiBhbGwgb2YgdGhlIGRlY2xhcmF0aW9ucyBpbiB0aGUgdmlldyB0aGF0IGhhdmUgYXNzaWduZWQgc2xvdHMuXG4gICAgY29uc3Qgc2xvdE1hcCA9IG5ldyBNYXA8aXIuWHJlZklkLCBudW1iZXI+KCk7XG4gICAgZm9yIChjb25zdCBvcCBvZiB1bml0LmNyZWF0ZSkge1xuICAgICAgaWYgKCFpci5oYXNDb25zdW1lc1Nsb3RUcmFpdChvcCkpIHtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9IGVsc2UgaWYgKG9wLmhhbmRsZS5zbG90ID09PSBudWxsKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICBgQXNzZXJ0aW9uRXJyb3I6IGV4cGVjdGVkIHNsb3RzIHRvIGhhdmUgYmVlbiBhbGxvY2F0ZWQgYmVmb3JlIGdlbmVyYXRpbmcgYWR2YW5jZSgpIGNhbGxzYCxcbiAgICAgICAgKTtcbiAgICAgIH1cblxuICAgICAgc2xvdE1hcC5zZXQob3AueHJlZiwgb3AuaGFuZGxlLnNsb3QpO1xuICAgIH1cblxuICAgIC8vIE5leHQsIHN0ZXAgdGhyb3VnaCB0aGUgdXBkYXRlIG9wZXJhdGlvbnMgYW5kIGdlbmVyYXRlIGBpci5BZHZhbmNlT3BgcyBhcyByZXF1aXJlZCB0byBlbnN1cmVcbiAgICAvLyB0aGUgcnVudGltZSdzIGltcGxpY2l0IHNsb3QgY291bnRlciB3aWxsIGJlIHNldCB0byB0aGUgY29ycmVjdCBzbG90IGJlZm9yZSBleGVjdXRpbmcgZWFjaFxuICAgIC8vIHVwZGF0ZSBvcGVyYXRpb24gd2hpY2ggZGVwZW5kcyBvbiBpdC5cbiAgICAvL1xuICAgIC8vIFRvIGRvIHRoYXQsIHdlIHRyYWNrIHdoYXQgdGhlIHJ1bnRpbWUncyBzbG90IGNvdW50ZXIgd2lsbCBiZSB0aHJvdWdoIHRoZSB1cGRhdGUgb3BlcmF0aW9ucy5cbiAgICBsZXQgc2xvdENvbnRleHQgPSAwO1xuICAgIGZvciAoY29uc3Qgb3Agb2YgdW5pdC51cGRhdGUpIHtcbiAgICAgIGlmICghaXIuaGFzRGVwZW5kc09uU2xvdENvbnRleHRUcmFpdChvcCkpIHtcbiAgICAgICAgLy8gYG9wYCBkb2Vzbid0IGRlcGVuZCBvbiB0aGUgc2xvdCBjb3VudGVyLCBzbyBpdCBjYW4gYmUgc2tpcHBlZC5cbiAgICAgICAgY29udGludWU7XG4gICAgICB9IGVsc2UgaWYgKCFzbG90TWFwLmhhcyhvcC50YXJnZXQpKSB7XG4gICAgICAgIC8vIFdlIGV4cGVjdCBvcHMgdGhhdCBfZG9fIGRlcGVuZCBvbiB0aGUgc2xvdCBjb3VudGVyIHRvIHBvaW50IGF0IGRlY2xhcmF0aW9ucyB0aGF0IGV4aXN0IGluXG4gICAgICAgIC8vIHRoZSBgc2xvdE1hcGAuXG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgQXNzZXJ0aW9uRXJyb3I6IHJlZmVyZW5jZSB0byB1bmtub3duIHNsb3QgZm9yIHRhcmdldCAke29wLnRhcmdldH1gKTtcbiAgICAgIH1cblxuICAgICAgY29uc3Qgc2xvdCA9IHNsb3RNYXAuZ2V0KG9wLnRhcmdldCkhO1xuXG4gICAgICAvLyBEb2VzIHRoZSBzbG90IGNvdW50ZXIgbmVlZCB0byBiZSBhZGp1c3RlZD9cbiAgICAgIGlmIChzbG90Q29udGV4dCAhPT0gc2xvdCkge1xuICAgICAgICAvLyBJZiBzbywgZ2VuZXJhdGUgYW4gYGlyLkFkdmFuY2VPcGAgdG8gYWR2YW5jZSB0aGUgY291bnRlci5cbiAgICAgICAgY29uc3QgZGVsdGEgPSBzbG90IC0gc2xvdENvbnRleHQ7XG4gICAgICAgIGlmIChkZWx0YSA8IDApIHtcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEFzc2VydGlvbkVycm9yOiBzbG90IGNvdW50ZXIgc2hvdWxkIG5ldmVyIG5lZWQgdG8gbW92ZSBiYWNrd2FyZHNgKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlyLk9wTGlzdC5pbnNlcnRCZWZvcmU8aXIuVXBkYXRlT3A+KFxuICAgICAgICAgIGlyLmNyZWF0ZUFkdmFuY2VPcChkZWx0YSwgKG9wIGFzIGlyLkRlcGVuZHNPblNsb3RDb250ZXh0T3BUcmFpdCkuc291cmNlU3BhbiksXG4gICAgICAgICAgb3AsXG4gICAgICAgICk7XG4gICAgICAgIHNsb3RDb250ZXh0ID0gc2xvdDtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbiJdfQ==
@@ -33,7 +33,7 @@ export function generateProjectionDefs(job) {
33
33
  // default behavior with no arguments instead.
34
34
  let defExpr = null;
35
35
  if (selectors.length > 1 || selectors[0] !== '*') {
36
- const def = selectors.map(s => s === '*' ? s : parseSelectorToR3Selector(s));
36
+ const def = selectors.map((s) => (s === '*' ? s : parseSelectorToR3Selector(s)));
37
37
  defExpr = job.pool.getConstLiteral(literalOrArrayLiteral(def), share);
38
38
  }
39
39
  // Create the ngContentSelectors constant.
@@ -43,4 +43,4 @@ export function generateProjectionDefs(job) {
43
43
  job.root.create.prepend([ir.createProjectionDefOp(defExpr)]);
44
44
  }
45
45
  }
46
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VuZXJhdGVfcHJvamVjdGlvbl9kZWYuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb21waWxlci9zcmMvdGVtcGxhdGUvcGlwZWxpbmUvc3JjL3BoYXNlcy9nZW5lcmF0ZV9wcm9qZWN0aW9uX2RlZi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7O0dBTUc7QUFFSCxPQUFPLEVBQUMseUJBQXlCLEVBQUMsTUFBTSxrQkFBa0IsQ0FBQztBQUUzRCxPQUFPLEtBQUssRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUUvQixPQUFPLEVBQUMscUJBQXFCLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFFcEQ7Ozs7R0FJRztBQUNILE1BQU0sVUFBVSxzQkFBc0IsQ0FBQyxHQUE0QjtJQUNqRSxvRUFBb0U7SUFDcEUsTUFBTSxLQUFLLEdBQUcsR0FBRyxDQUFDLGFBQWEsS0FBSyxFQUFFLENBQUMsaUJBQWlCLENBQUMseUJBQXlCLENBQUM7SUFFbkYsa0dBQWtHO0lBQ2xHLDBDQUEwQztJQUMxQyxNQUFNLFNBQVMsR0FBRyxFQUFFLENBQUM7SUFDckIsSUFBSSxtQkFBbUIsR0FBRyxDQUFDLENBQUM7SUFDNUIsS0FBSyxNQUFNLElBQUksSUFBSSxHQUFHLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDN0IsS0FBSyxNQUFNLEVBQUUsSUFBSSxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDN0IsSUFBSSxFQUFFLENBQUMsSUFBSSxLQUFLLEVBQUUsQ0FBQyxNQUFNLENBQUMsVUFBVSxFQUFFLENBQUM7Z0JBQ3JDLFNBQVMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxDQUFDO2dCQUM1QixFQUFFLENBQUMsbUJBQW1CLEdBQUcsbUJBQW1CLEVBQUUsQ0FBQztZQUNqRCxDQUFDO1FBQ0gsQ0FBQztJQUNILENBQUM7SUFFRCxJQUFJLFNBQVMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUM7UUFDekIsK0ZBQStGO1FBQy9GLDhDQUE4QztRQUM5QyxJQUFJLE9BQU8sR0FBc0IsSUFBSSxDQUFDO1FBQ3RDLElBQUksU0FBUyxDQUFDLE1BQU0sR0FBRyxDQUFDLElBQUksU0FBUyxDQUFDLENBQUMsQ0FBQyxLQUFLLEdBQUcsRUFBRSxDQUFDO1lBQ2pELE1BQU0sR0FBRyxHQUFHLFNBQVMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLHlCQUF5QixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDN0UsT0FBTyxHQUFHLEdBQUcsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLHFCQUFxQixDQUFDLEdBQUcsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQ3hFLENBQUM7UUFFRCwwQ0FBMEM7UUFDMUMsR0FBRyxDQUFDLGdCQUFnQixHQUFHLEdBQUcsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLHFCQUFxQixDQUFDLFNBQVMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBRXpGLG9GQUFvRjtRQUNwRiw2QkFBNkI7UUFDN0IsR0FBRyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsRUFBRSxDQUFDLHFCQUFxQixDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUMvRCxDQUFDO0FBQ0gsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmVcbiAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2VcbiAqL1xuXG5pbXBvcnQge3BhcnNlU2VsZWN0b3JUb1IzU2VsZWN0b3J9IGZyb20gJy4uLy4uLy4uLy4uL2NvcmUnO1xuaW1wb3J0ICogYXMgbyBmcm9tICcuLi8uLi8uLi8uLi9vdXRwdXQvb3V0cHV0X2FzdCc7XG5pbXBvcnQgKiBhcyBpciBmcm9tICcuLi8uLi9pcic7XG5pbXBvcnQgdHlwZSB7Q29tcG9uZW50Q29tcGlsYXRpb25Kb2J9IGZyb20gJy4uL2NvbXBpbGF0aW9uJztcbmltcG9ydCB7bGl0ZXJhbE9yQXJyYXlMaXRlcmFsfSBmcm9tICcuLi9jb252ZXJzaW9uJztcblxuLyoqXG4gKiBMb2NhdGUgcHJvamVjdGlvbiBzbG90cywgcG9wdWxhdGUgdGhlIGVhY2ggY29tcG9uZW50J3MgYG5nQ29udGVudFNlbGVjdG9yc2AgbGl0ZXJhbCBmaWVsZCxcbiAqIHBvcHVsYXRlIGBwcm9qZWN0YCBhcmd1bWVudHMsIGFuZCBnZW5lcmF0ZSB0aGUgcmVxdWlyZWQgYHByb2plY3Rpb25EZWZgIGluc3RydWN0aW9uIGZvciB0aGUgam9iJ3NcbiAqIHJvb3Qgdmlldy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdlbmVyYXRlUHJvamVjdGlvbkRlZnMoam9iOiBDb21wb25lbnRDb21waWxhdGlvbkpvYik6IHZvaWQge1xuICAvLyBUT0RPOiBXaHkgZG9lcyBUZW1wbGF0ZURlZmluaXRpb25CdWlsZGVyIGZvcmNlIGEgc2hhcmVkIGNvbnN0YW50P1xuICBjb25zdCBzaGFyZSA9IGpvYi5jb21wYXRpYmlsaXR5ID09PSBpci5Db21wYXRpYmlsaXR5TW9kZS5UZW1wbGF0ZURlZmluaXRpb25CdWlsZGVyO1xuXG4gIC8vIENvbGxlY3QgYWxsIHNlbGVjdG9ycyBmcm9tIHRoaXMgY29tcG9uZW50LCBhbmQgaXRzIG5lc3RlZCB2aWV3cy4gQWxzbywgYXNzaWduIGVhY2ggcHJvamVjdGlvbiBhXG4gIC8vIHVuaXF1ZSBhc2NlbmRpbmcgcHJvamVjdGlvbiBzbG90IGluZGV4LlxuICBjb25zdCBzZWxlY3RvcnMgPSBbXTtcbiAgbGV0IHByb2plY3Rpb25TbG90SW5kZXggPSAwO1xuICBmb3IgKGNvbnN0IHVuaXQgb2Ygam9iLnVuaXRzKSB7XG4gICAgZm9yIChjb25zdCBvcCBvZiB1bml0LmNyZWF0ZSkge1xuICAgICAgaWYgKG9wLmtpbmQgPT09IGlyLk9wS2luZC5Qcm9qZWN0aW9uKSB7XG4gICAgICAgIHNlbGVjdG9ycy5wdXNoKG9wLnNlbGVjdG9yKTtcbiAgICAgICAgb3AucHJvamVjdGlvblNsb3RJbmRleCA9IHByb2plY3Rpb25TbG90SW5kZXgrKztcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBpZiAoc2VsZWN0b3JzLmxlbmd0aCA+IDApIHtcbiAgICAvLyBDcmVhdGUgdGhlIHByb2plY3Rpb25EZWYgYXJyYXkuIElmIHdlIG9ubHkgZm91bmQgYSBzaW5nbGUgd2lsZGNhcmQgc2VsZWN0b3IsIHRoZW4gd2UgdXNlIHRoZVxuICAgIC8vIGRlZmF1bHQgYmVoYXZpb3Igd2l0aCBubyBhcmd1bWVudHMgaW5zdGVhZC5cbiAgICBsZXQgZGVmRXhwcjogby5FeHByZXNzaW9ufG51bGwgPSBudWxsO1xuICAgIGlmIChzZWxlY3RvcnMubGVuZ3RoID4gMSB8fCBzZWxlY3RvcnNbMF0gIT09ICcqJykge1xuICAgICAgY29uc3QgZGVmID0gc2VsZWN0b3JzLm1hcChzID0+IHMgPT09ICcqJyA/IHMgOiBwYXJzZVNlbGVjdG9yVG9SM1NlbGVjdG9yKHMpKTtcbiAgICAgIGRlZkV4cHIgPSBqb2IucG9vbC5nZXRDb25zdExpdGVyYWwobGl0ZXJhbE9yQXJyYXlMaXRlcmFsKGRlZiksIHNoYXJlKTtcbiAgICB9XG5cbiAgICAvLyBDcmVhdGUgdGhlIG5nQ29udGVudFNlbGVjdG9ycyBjb25zdGFudC5cbiAgICBqb2IuY29udGVudFNlbGVjdG9ycyA9IGpvYi5wb29sLmdldENvbnN0TGl0ZXJhbChsaXRlcmFsT3JBcnJheUxpdGVyYWwoc2VsZWN0b3JzKSwgc2hhcmUpO1xuXG4gICAgLy8gVGhlIHByb2plY3Rpb24gZGVmIGluc3RydWN0aW9uIGdvZXMgYXQgdGhlIGJlZ2lubmluZyBvZiB0aGUgcm9vdCB2aWV3LCBiZWZvcmUgYW55XG4gICAgLy8gYHByb2plY3Rpb25gIGluc3RydWN0aW9ucy5cbiAgICBqb2Iucm9vdC5jcmVhdGUucHJlcGVuZChbaXIuY3JlYXRlUHJvamVjdGlvbkRlZk9wKGRlZkV4cHIpXSk7XG4gIH1cbn1cbiJdfQ==
46
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VuZXJhdGVfcHJvamVjdGlvbl9kZWYuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb21waWxlci9zcmMvdGVtcGxhdGUvcGlwZWxpbmUvc3JjL3BoYXNlcy9nZW5lcmF0ZV9wcm9qZWN0aW9uX2RlZi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7O0dBTUc7QUFFSCxPQUFPLEVBQUMseUJBQXlCLEVBQUMsTUFBTSxrQkFBa0IsQ0FBQztBQUUzRCxPQUFPLEtBQUssRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUUvQixPQUFPLEVBQUMscUJBQXFCLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFFcEQ7Ozs7R0FJRztBQUNILE1BQU0sVUFBVSxzQkFBc0IsQ0FBQyxHQUE0QjtJQUNqRSxvRUFBb0U7SUFDcEUsTUFBTSxLQUFLLEdBQUcsR0FBRyxDQUFDLGFBQWEsS0FBSyxFQUFFLENBQUMsaUJBQWlCLENBQUMseUJBQXlCLENBQUM7SUFFbkYsa0dBQWtHO0lBQ2xHLDBDQUEwQztJQUMxQyxNQUFNLFNBQVMsR0FBRyxFQUFFLENBQUM7SUFDckIsSUFBSSxtQkFBbUIsR0FBRyxDQUFDLENBQUM7SUFDNUIsS0FBSyxNQUFNLElBQUksSUFBSSxHQUFHLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDN0IsS0FBSyxNQUFNLEVBQUUsSUFBSSxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDN0IsSUFBSSxFQUFFLENBQUMsSUFBSSxLQUFLLEVBQUUsQ0FBQyxNQUFNLENBQUMsVUFBVSxFQUFFLENBQUM7Z0JBQ3JDLFNBQVMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxDQUFDO2dCQUM1QixFQUFFLENBQUMsbUJBQW1CLEdBQUcsbUJBQW1CLEVBQUUsQ0FBQztZQUNqRCxDQUFDO1FBQ0gsQ0FBQztJQUNILENBQUM7SUFFRCxJQUFJLFNBQVMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUM7UUFDekIsK0ZBQStGO1FBQy9GLDhDQUE4QztRQUM5QyxJQUFJLE9BQU8sR0FBd0IsSUFBSSxDQUFDO1FBQ3hDLElBQUksU0FBUyxDQUFDLE1BQU0sR0FBRyxDQUFDLElBQUksU0FBUyxDQUFDLENBQUMsQ0FBQyxLQUFLLEdBQUcsRUFBRSxDQUFDO1lBQ2pELE1BQU0sR0FBRyxHQUFHLFNBQVMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyx5QkFBeUIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDakYsT0FBTyxHQUFHLEdBQUcsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLHFCQUFxQixDQUFDLEdBQUcsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQ3hFLENBQUM7UUFFRCwwQ0FBMEM7UUFDMUMsR0FBRyxDQUFDLGdCQUFnQixHQUFHLEdBQUcsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLHFCQUFxQixDQUFDLFNBQVMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBRXpGLG9GQUFvRjtRQUNwRiw2QkFBNkI7UUFDN0IsR0FBRyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsRUFBRSxDQUFDLHFCQUFxQixDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUMvRCxDQUFDO0FBQ0gsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmVcbiAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2VcbiAqL1xuXG5pbXBvcnQge3BhcnNlU2VsZWN0b3JUb1IzU2VsZWN0b3J9IGZyb20gJy4uLy4uLy4uLy4uL2NvcmUnO1xuaW1wb3J0ICogYXMgbyBmcm9tICcuLi8uLi8uLi8uLi9vdXRwdXQvb3V0cHV0X2FzdCc7XG5pbXBvcnQgKiBhcyBpciBmcm9tICcuLi8uLi9pcic7XG5pbXBvcnQgdHlwZSB7Q29tcG9uZW50Q29tcGlsYXRpb25Kb2J9IGZyb20gJy4uL2NvbXBpbGF0aW9uJztcbmltcG9ydCB7bGl0ZXJhbE9yQXJyYXlMaXRlcmFsfSBmcm9tICcuLi9jb252ZXJzaW9uJztcblxuLyoqXG4gKiBMb2NhdGUgcHJvamVjdGlvbiBzbG90cywgcG9wdWxhdGUgdGhlIGVhY2ggY29tcG9uZW50J3MgYG5nQ29udGVudFNlbGVjdG9yc2AgbGl0ZXJhbCBmaWVsZCxcbiAqIHBvcHVsYXRlIGBwcm9qZWN0YCBhcmd1bWVudHMsIGFuZCBnZW5lcmF0ZSB0aGUgcmVxdWlyZWQgYHByb2plY3Rpb25EZWZgIGluc3RydWN0aW9uIGZvciB0aGUgam9iJ3NcbiAqIHJvb3Qgdmlldy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdlbmVyYXRlUHJvamVjdGlvbkRlZnMoam9iOiBDb21wb25lbnRDb21waWxhdGlvbkpvYik6IHZvaWQge1xuICAvLyBUT0RPOiBXaHkgZG9lcyBUZW1wbGF0ZURlZmluaXRpb25CdWlsZGVyIGZvcmNlIGEgc2hhcmVkIGNvbnN0YW50P1xuICBjb25zdCBzaGFyZSA9IGpvYi5jb21wYXRpYmlsaXR5ID09PSBpci5Db21wYXRpYmlsaXR5TW9kZS5UZW1wbGF0ZURlZmluaXRpb25CdWlsZGVyO1xuXG4gIC8vIENvbGxlY3QgYWxsIHNlbGVjdG9ycyBmcm9tIHRoaXMgY29tcG9uZW50LCBhbmQgaXRzIG5lc3RlZCB2aWV3cy4gQWxzbywgYXNzaWduIGVhY2ggcHJvamVjdGlvbiBhXG4gIC8vIHVuaXF1ZSBhc2NlbmRpbmcgcHJvamVjdGlvbiBzbG90IGluZGV4LlxuICBjb25zdCBzZWxlY3RvcnMgPSBbXTtcbiAgbGV0IHByb2plY3Rpb25TbG90SW5kZXggPSAwO1xuICBmb3IgKGNvbnN0IHVuaXQgb2Ygam9iLnVuaXRzKSB7XG4gICAgZm9yIChjb25zdCBvcCBvZiB1bml0LmNyZWF0ZSkge1xuICAgICAgaWYgKG9wLmtpbmQgPT09IGlyLk9wS2luZC5Qcm9qZWN0aW9uKSB7XG4gICAgICAgIHNlbGVjdG9ycy5wdXNoKG9wLnNlbGVjdG9yKTtcbiAgICAgICAgb3AucHJvamVjdGlvblNsb3RJbmRleCA9IHByb2plY3Rpb25TbG90SW5kZXgrKztcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBpZiAoc2VsZWN0b3JzLmxlbmd0aCA+IDApIHtcbiAgICAvLyBDcmVhdGUgdGhlIHByb2plY3Rpb25EZWYgYXJyYXkuIElmIHdlIG9ubHkgZm91bmQgYSBzaW5nbGUgd2lsZGNhcmQgc2VsZWN0b3IsIHRoZW4gd2UgdXNlIHRoZVxuICAgIC8vIGRlZmF1bHQgYmVoYXZpb3Igd2l0aCBubyBhcmd1bWVudHMgaW5zdGVhZC5cbiAgICBsZXQgZGVmRXhwcjogby5FeHByZXNzaW9uIHwgbnVsbCA9IG51bGw7XG4gICAgaWYgKHNlbGVjdG9ycy5sZW5ndGggPiAxIHx8IHNlbGVjdG9yc1swXSAhPT0gJyonKSB7XG4gICAgICBjb25zdCBkZWYgPSBzZWxlY3RvcnMubWFwKChzKSA9PiAocyA9PT0gJyonID8gcyA6IHBhcnNlU2VsZWN0b3JUb1IzU2VsZWN0b3IocykpKTtcbiAgICAgIGRlZkV4cHIgPSBqb2IucG9vbC5nZXRDb25zdExpdGVyYWwobGl0ZXJhbE9yQXJyYXlMaXRlcmFsKGRlZiksIHNoYXJlKTtcbiAgICB9XG5cbiAgICAvLyBDcmVhdGUgdGhlIG5nQ29udGVudFNlbGVjdG9ycyBjb25zdGFudC5cbiAgICBqb2IuY29udGVudFNlbGVjdG9ycyA9IGpvYi5wb29sLmdldENvbnN0TGl0ZXJhbChsaXRlcmFsT3JBcnJheUxpdGVyYWwoc2VsZWN0b3JzKSwgc2hhcmUpO1xuXG4gICAgLy8gVGhlIHByb2plY3Rpb24gZGVmIGluc3RydWN0aW9uIGdvZXMgYXQgdGhlIGJlZ2lubmluZyBvZiB0aGUgcm9vdCB2aWV3LCBiZWZvcmUgYW55XG4gICAgLy8gYHByb2plY3Rpb25gIGluc3RydWN0aW9ucy5cbiAgICBqb2Iucm9vdC5jcmVhdGUucHJlcGVuZChbaXIuY3JlYXRlUHJvamVjdGlvbkRlZk9wKGRlZkV4cHIpXSk7XG4gIH1cbn1cbiJdfQ==
@@ -149,4 +149,4 @@ function generateVariablesInScopeForView(view, scope) {
149
149
  }
150
150
  return newOps;
151
151
  }
152
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VuZXJhdGVfdmFyaWFibGVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29tcGlsZXIvc3JjL3RlbXBsYXRlL3BpcGVsaW5lL3NyYy9waGFzZXMvZ2VuZXJhdGVfdmFyaWFibGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7R0FNRztBQUVILE9BQU8sS0FBSyxDQUFDLE1BQU0sK0JBQStCLENBQUM7QUFDbkQsT0FBTyxLQUFLLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFJL0I7Ozs7Ozs7Ozs7Ozs7R0FhRztBQUNILE1BQU0sVUFBVSxpQkFBaUIsQ0FBQyxHQUE0QjtJQUM1RCxzQkFBc0IsQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLGdEQUFnRCxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQzFGLENBQUM7QUFFRDs7Ozs7O0dBTUc7QUFDSCxTQUFTLHNCQUFzQixDQUFDLElBQXlCLEVBQUUsV0FBdUI7SUFDaEYsb0NBQW9DO0lBQ3BDLE1BQU0sS0FBSyxHQUFHLGVBQWUsQ0FBQyxJQUFJLEVBQUUsV0FBVyxDQUFDLENBQUM7SUFFakQsS0FBSyxNQUFNLEVBQUUsSUFBSSxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7UUFDN0IsUUFBUSxFQUFFLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDaEIsS0FBSyxFQUFFLENBQUMsTUFBTSxDQUFDLFFBQVE7Z0JBQ3JCLHFDQUFxQztnQkFDckMsc0JBQXNCLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUUsRUFBRSxLQUFLLENBQUMsQ0FBQztnQkFDNUQsTUFBTTtZQUNSLEtBQUssRUFBRSxDQUFDLE1BQU0sQ0FBQyxVQUFVO2dCQUN2QixJQUFJLEVBQUUsQ0FBQyxZQUFZLEtBQUssSUFBSSxFQUFFLENBQUM7b0JBQzdCLHNCQUFzQixDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsWUFBWSxDQUFFLEVBQUUsS0FBSyxDQUFDLENBQUM7Z0JBQ3RFLENBQUM7Z0JBQ0QsTUFBTTtZQUNSLEtBQUssRUFBRSxDQUFDLE1BQU0sQ0FBQyxjQUFjO2dCQUMzQixxQ0FBcUM7Z0JBQ3JDLHNCQUFzQixDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFFLEVBQUUsS0FBSyxDQUFDLENBQUM7Z0JBQzVELElBQUksRUFBRSxDQUFDLFNBQVMsRUFBRSxDQUFDO29CQUNqQixzQkFBc0IsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLFNBQVMsQ0FBRSxFQUFFLEtBQUssQ0FBQyxDQUFDO2dCQUNuRSxDQUFDO2dCQUNELE1BQU07WUFDUixLQUFLLEVBQUUsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDO1lBQ3hCLEtBQUssRUFBRSxDQUFDLE1BQU0sQ0FBQyxjQUFjO2dCQUMzQixtREFBbUQ7Z0JBQ25ELEVBQUUsQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLCtCQUErQixDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDO2dCQUNwRSxNQUFNO1FBQ1YsQ0FBQztJQUNILENBQUM7SUFFRCx1RkFBdUY7SUFDdkYsTUFBTSxXQUFXLEdBQUcsK0JBQStCLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ2pFLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxDQUFDO0FBQ25DLENBQUM7QUF5REQ7OztHQUdHO0FBQ0gsU0FBUyxlQUFlLENBQUMsSUFBeUIsRUFBRSxNQUFrQjtJQUNwRSxNQUFNLEtBQUssR0FBVTtRQUNuQixJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUk7UUFDZixtQkFBbUIsRUFBRTtZQUNuQixJQUFJLEVBQUUsRUFBRSxDQUFDLG9CQUFvQixDQUFDLE9BQU87WUFDckMsSUFBSSxFQUFFLElBQUk7WUFDVixJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUk7U0FDaEI7UUFDRCxnQkFBZ0IsRUFBRSxJQUFJLEdBQUcsRUFBK0I7UUFDeEQsT0FBTyxFQUFFLElBQUksQ0FBQyxPQUFPO1FBQ3JCLFVBQVUsRUFBRSxFQUFFO1FBQ2QsTUFBTTtLQUNQLENBQUM7SUFFRixLQUFLLE1BQU0sVUFBVSxJQUFJLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDO1FBQ3RELEtBQUssQ0FBQyxnQkFBZ0IsQ0FBQyxHQUFHLENBQUMsVUFBVSxFQUFFO1lBQ3JDLElBQUksRUFBRSxFQUFFLENBQUMsb0JBQW9CLENBQUMsVUFBVTtZQUN4QyxJQUFJLEVBQUUsSUFBSTtZQUNWLFVBQVU7U0FDWCxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsS0FBSyxNQUFNLEVBQUUsSUFBSSxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7UUFDN0IsUUFBUSxFQUFFLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDaEIsS0FBSyxFQUFFLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQztZQUM1QixLQUFLLEVBQUUsQ0FBQyxNQUFNLENBQUMsUUFBUTtnQkFDckIsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUM7b0JBQ2pDLE1BQU0sSUFBSSxLQUFLLENBQUMsbURBQW1ELENBQUMsQ0FBQztnQkFDdkUsQ0FBQztnQkFFRCx1REFBdUQ7Z0JBQ3ZELEtBQUssSUFBSSxNQUFNLEdBQUcsQ0FBQyxFQUFFLE1BQU0sR0FBRyxFQUFFLENBQUMsU0FBUyxDQUFDLE1BQU0sRUFBRSxNQUFNLEVBQUUsRUFBRSxDQUFDO29CQUM1RCxLQUFLLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQzt3QkFDcEIsSUFBSSxFQUFFLEVBQUUsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBSTt3QkFDL0IsUUFBUSxFQUFFLEVBQUUsQ0FBQyxJQUFJO3dCQUNqQixVQUFVLEVBQUUsRUFBRSxDQUFDLE1BQU07d0JBQ3JCLE1BQU07d0JBQ04sUUFBUSxFQUFFOzRCQUNSLElBQUksRUFBRSxFQUFFLENBQUMsb0JBQW9CLENBQUMsVUFBVTs0QkFDeEMsSUFBSSxFQUFFLElBQUk7NEJBQ1YsVUFBVSxFQUFFLEVBQUUsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBSTt5QkFDdEM7cUJBQ0YsQ0FBQyxDQUFDO2dCQUNMLENBQUM7Z0JBQ0QsTUFBTTtRQUNWLENBQUM7SUFDSCxDQUFDO0lBRUQsT0FBTyxLQUFLLENBQUM7QUFDZixDQUFDO0FBRUQ7Ozs7O0dBS0c7QUFDSCxTQUFTLCtCQUErQixDQUNwQyxJQUF5QixFQUFFLEtBQVk7SUFDekMsTUFBTSxNQUFNLEdBQWlDLEVBQUUsQ0FBQztJQUVoRCxJQUFJLEtBQUssQ0FBQyxJQUFJLEtBQUssSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQzdCLGdHQUFnRztRQUNoRywyRkFBMkY7UUFDM0Ysd0VBQXdFO1FBQ3hFLE1BQU0sQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLGdCQUFnQixDQUMzQixJQUFJLENBQUMsR0FBRyxDQUFDLGNBQWMsRUFBRSxFQUFFLEtBQUssQ0FBQyxtQkFBbUIsRUFBRSxJQUFJLEVBQUUsQ0FBQyxlQUFlLEVBQUUsRUFDOUUsRUFBRSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQzlCLENBQUM7SUFFRCwwRUFBMEU7SUFDMUUsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUUsQ0FBQztJQUNsRCxLQUFLLE1BQU0sQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLElBQUksU0FBUyxDQUFDLGdCQUFnQixFQUFFLENBQUM7UUFDdkQsTUFBTSxPQUFPLEdBQUcsSUFBSSxFQUFFLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUMvQyx3RkFBd0Y7UUFDeEYsTUFBTSxRQUFRLEdBQUcsS0FBSyxLQUFLLEVBQUUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsWUFBWSxDQUFDLE9BQU8sRUFBRSxLQUFLLENBQUMsQ0FBQztRQUNyRixnQ0FBZ0M7UUFDaEMsTUFBTSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsZ0JBQWdCLENBQzNCLElBQUksQ0FBQyxHQUFHLENBQUMsY0FBYyxFQUFFLEVBQUUsS0FBSyxDQUFDLGdCQUFnQixDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUUsRUFBRSxRQUFRLEVBQ3RFLEVBQUUsQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUM5QixDQUFDO0lBRUQsS0FBSyxNQUFNLEtBQUssSUFBSSxTQUFTLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDdEMsTUFBTSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsZ0JBQWdCLENBQzNCLElBQUksQ0FBQyxHQUFHLENBQUMsY0FBYyxFQUFFLEVBQUUsS0FBSyxFQUFFLEtBQUssQ0FBQyxVQUFVLENBQUMsS0FBSyxFQUFFLEVBQUUsRUFBRSxDQUFDLGFBQWEsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDO0lBQ2xHLENBQUM7SUFFRCw4RUFBOEU7SUFDOUUsS0FBSyxNQUFNLEdBQUcsSUFBSSxLQUFLLENBQUMsVUFBVSxFQUFFLENBQUM7UUFDbkMsTUFBTSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsZ0JBQWdCLENBQzNCLElBQUksQ0FBQyxHQUFHLENBQUMsY0FBYyxFQUFFLEVBQUUsR0FBRyxDQUFDLFFBQVEsRUFDdkMsSUFBSSxFQUFFLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxRQUFRLEVBQUUsR0FBRyxDQUFDLFVBQVUsRUFBRSxHQUFHLENBQUMsTUFBTSxDQUFDLEVBQUUsRUFBRSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQzlGLENBQUM7SUFFRCxJQUFJLEtBQUssQ0FBQyxNQUFNLEtBQUssSUFBSSxFQUFFLENBQUM7UUFDMUIsbURBQW1EO1FBQ25ELE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRywrQkFBK0IsQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7SUFDdEUsQ0FBQztJQUNELE9BQU8sTUFBTSxDQUFDO0FBQ2hCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlXG4gKi9cblxuaW1wb3J0ICogYXMgbyBmcm9tICcuLi8uLi8uLi8uLi9vdXRwdXQvb3V0cHV0X2FzdCc7XG5pbXBvcnQgKiBhcyBpciBmcm9tICcuLi8uLi9pcic7XG5cbmltcG9ydCB0eXBlIHtDb21wb25lbnRDb21waWxhdGlvbkpvYiwgVmlld0NvbXBpbGF0aW9uVW5pdH0gZnJvbSAnLi4vY29tcGlsYXRpb24nO1xuXG4vKipcbiAqIEdlbmVyYXRlIGEgcHJlYW1ibGUgc2VxdWVuY2UgZm9yIGVhY2ggdmlldyBjcmVhdGlvbiBibG9jayBhbmQgbGlzdGVuZXIgZnVuY3Rpb24gd2hpY2ggZGVjbGFyZXNcbiAqIGFueSB2YXJpYWJsZXMgdGhhdCBiZSByZWZlcmVuY2VkIGluIG90aGVyIG9wZXJhdGlvbnMgaW4gdGhlIGJsb2NrLlxuICpcbiAqIFZhcmlhYmxlcyBnZW5lcmF0ZWQgaW5jbHVkZTpcbiAqICAgKiBhIHNhdmVkIHZpZXcgY29udGV4dCB0byBiZSB1c2VkIHRvIHJlc3RvcmUgdGhlIGN1cnJlbnQgdmlldyBpbiBldmVudCBsaXN0ZW5lcnMuXG4gKiAgICogdGhlIGNvbnRleHQgb2YgdGhlIHJlc3RvcmVkIHZpZXcgd2l0aGluIGV2ZW50IGxpc3RlbmVyIGhhbmRsZXJzLlxuICogICAqIGNvbnRleHQgdmFyaWFibGVzIGZyb20gdGhlIGN1cnJlbnQgdmlldyBhcyB3ZWxsIGFzIGFsbCBwYXJlbnQgdmlld3MgKGluY2x1ZGluZyB0aGUgcm9vdFxuICogICAgIGNvbnRleHQgaWYgbmVlZGVkKS5cbiAqICAgKiBsb2NhbCByZWZlcmVuY2VzIGZyb20gZWxlbWVudHMgd2l0aGluIHRoZSBjdXJyZW50IHZpZXcgYW5kIGFueSBsZXhpY2FsIHBhcmVudHMuXG4gKlxuICogVmFyaWFibGVzIGFyZSBnZW5lcmF0ZWQgaGVyZSB1bmNvbmRpdGlvbmFsbHksIGFuZCBtYXkgb3B0aW1pemVkIGF3YXkgaW4gZnV0dXJlIG9wZXJhdGlvbnMgaWYgaXRcbiAqIHR1cm5zIG91dCB0aGVpciB2YWx1ZXMgKGFuZCBhbnkgc2lkZSBlZmZlY3RzKSBhcmUgdW51c2VkLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2VuZXJhdGVWYXJpYWJsZXMoam9iOiBDb21wb25lbnRDb21waWxhdGlvbkpvYik6IHZvaWQge1xuICByZWN1cnNpdmVseVByb2Nlc3NWaWV3KGpvYi5yb290LCAvKiB0aGVyZSBpcyBubyBwYXJlbnQgc2NvcGUgZm9yIHRoZSByb290IHZpZXcgKi8gbnVsbCk7XG59XG5cbi8qKlxuICogUHJvY2VzcyB0aGUgZ2l2ZW4gYFZpZXdDb21waWxhdGlvbmAgYW5kIGdlbmVyYXRlIHByZWFtYmxlcyBmb3IgaXQgYW5kIGFueSBsaXN0ZW5lcnMgdGhhdCBpdFxuICogZGVjbGFyZXMuXG4gKlxuICogQHBhcmFtIGBwYXJlbnRTY29wZWAgYSBzY29wZSBleHRyYWN0ZWQgZnJvbSB0aGUgcGFyZW50IHZpZXcgd2hpY2ggY2FwdHVyZXMgYW55IHZhcmlhYmxlcyB3aGljaFxuICogICAgIHNob3VsZCBiZSBpbmhlcml0ZWQgYnkgdGhpcyB2aWV3LiBgbnVsbGAgaWYgdGhlIGN1cnJlbnQgdmlldyBpcyB0aGUgcm9vdCB2aWV3LlxuICovXG5mdW5jdGlvbiByZWN1cnNpdmVseVByb2Nlc3NWaWV3KHZpZXc6IFZpZXdDb21waWxhdGlvblVuaXQsIHBhcmVudFNjb3BlOiBTY29wZXxudWxsKTogdm9pZCB7XG4gIC8vIEV4dHJhY3QgYSBgU2NvcGVgIGZyb20gdGhpcyB2aWV3LlxuICBjb25zdCBzY29wZSA9IGdldFNjb3BlRm9yVmlldyh2aWV3LCBwYXJlbnRTY29wZSk7XG5cbiAgZm9yIChjb25zdCBvcCBvZiB2aWV3LmNyZWF0ZSkge1xuICAgIHN3aXRjaCAob3Aua2luZCkge1xuICAgICAgY2FzZSBpci5PcEtpbmQuVGVtcGxhdGU6XG4gICAgICAgIC8vIERlc2NlbmQgaW50byBjaGlsZCBlbWJlZGRlZCB2aWV3cy5cbiAgICAgICAgcmVjdXJzaXZlbHlQcm9jZXNzVmlldyh2aWV3LmpvYi52aWV3cy5nZXQob3AueHJlZikhLCBzY29wZSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBpci5PcEtpbmQuUHJvamVjdGlvbjpcbiAgICAgICAgaWYgKG9wLmZhbGxiYWNrVmlldyAhPT0gbnVsbCkge1xuICAgICAgICAgIHJlY3Vyc2l2ZWx5UHJvY2Vzc1ZpZXcodmlldy5qb2Iudmlld3MuZ2V0KG9wLmZhbGxiYWNrVmlldykhLCBzY29wZSk7XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIGlyLk9wS2luZC5SZXBlYXRlckNyZWF0ZTpcbiAgICAgICAgLy8gRGVzY2VuZCBpbnRvIGNoaWxkIGVtYmVkZGVkIHZpZXdzLlxuICAgICAgICByZWN1cnNpdmVseVByb2Nlc3NWaWV3KHZpZXcuam9iLnZpZXdzLmdldChvcC54cmVmKSEsIHNjb3BlKTtcbiAgICAgICAgaWYgKG9wLmVtcHR5Vmlldykge1xuICAgICAgICAgIHJlY3Vyc2l2ZWx5UHJvY2Vzc1ZpZXcodmlldy5qb2Iudmlld3MuZ2V0KG9wLmVtcHR5VmlldykhLCBzY29wZSk7XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIGlyLk9wS2luZC5MaXN0ZW5lcjpcbiAgICAgIGNhc2UgaXIuT3BLaW5kLlR3b1dheUxpc3RlbmVyOlxuICAgICAgICAvLyBQcmVwZW5kIHZhcmlhYmxlcyB0byBsaXN0ZW5lciBoYW5kbGVyIGZ1bmN0aW9ucy5cbiAgICAgICAgb3AuaGFuZGxlck9wcy5wcmVwZW5kKGdlbmVyYXRlVmFyaWFibGVzSW5TY29wZUZvclZpZXcodmlldywgc2NvcGUpKTtcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuICB9XG5cbiAgLy8gUHJlcGVuZCB0aGUgZGVjbGFyYXRpb25zIGZvciBhbGwgYXZhaWxhYmxlIHZhcmlhYmxlcyBpbiBzY29wZSB0byB0aGUgYHVwZGF0ZWAgYmxvY2suXG4gIGNvbnN0IHByZWFtYmxlT3BzID0gZ2VuZXJhdGVWYXJpYWJsZXNJblNjb3BlRm9yVmlldyh2aWV3LCBzY29wZSk7XG4gIHZpZXcudXBkYXRlLnByZXBlbmQocHJlYW1ibGVPcHMpO1xufVxuXG4vKipcbiAqIExleGljYWwgc2NvcGUgb2YgYSB2aWV3LCBpbmNsdWRpbmcgYSByZWZlcmVuY2UgdG8gaXRzIHBhcmVudCB2aWV3J3Mgc2NvcGUsIGlmIGFueS5cbiAqL1xuaW50ZXJmYWNlIFNjb3BlIHtcbiAgLyoqXG4gICAqIGBYcmVmSWRgIG9mIHRoZSB2aWV3IHRvIHdoaWNoIHRoaXMgc2NvcGUgY29ycmVzcG9uZHMuXG4gICAqL1xuICB2aWV3OiBpci5YcmVmSWQ7XG5cbiAgdmlld0NvbnRleHRWYXJpYWJsZTogaXIuU2VtYW50aWNWYXJpYWJsZTtcblxuICBjb250ZXh0VmFyaWFibGVzOiBNYXA8c3RyaW5nLCBpci5TZW1hbnRpY1ZhcmlhYmxlPjtcblxuICBhbGlhc2VzOiBTZXQ8aXIuQWxpYXNWYXJpYWJsZT47XG5cbiAgLyoqXG4gICAqIExvY2FsIHJlZmVyZW5jZXMgY29sbGVjdGVkIGZyb20gZWxlbWVudHMgd2l0aGluIHRoZSB2aWV3LlxuICAgKi9cbiAgcmVmZXJlbmNlczogUmVmZXJlbmNlW107XG5cbiAgLyoqXG4gICAqIGBTY29wZWAgb2YgdGhlIHBhcmVudCB2aWV3LCBpZiBhbnkuXG4gICAqL1xuICBwYXJlbnQ6IFNjb3BlfG51bGw7XG59XG5cbi8qKlxuICogSW5mb3JtYXRpb24gbmVlZGVkIGFib3V0IGEgbG9jYWwgcmVmZXJlbmNlIGNvbGxlY3RlZCBmcm9tIGFuIGVsZW1lbnQgd2l0aGluIGEgdmlldy5cbiAqL1xuaW50ZXJmYWNlIFJlZmVyZW5jZSB7XG4gIC8qKlxuICAgKiBOYW1lIGdpdmVuIHRvIHRoZSBsb2NhbCByZWZlcmVuY2UgdmFyaWFibGUgd2l0aGluIHRoZSB0ZW1wbGF0ZS5cbiAgICpcbiAgICogVGhpcyBpcyBub3QgdGhlIG5hbWUgd2hpY2ggd2lsbCBiZSB1c2VkIGZvciB0aGUgdmFyaWFibGUgZGVjbGFyYXRpb24gaW4gdGhlIGdlbmVyYXRlZFxuICAgKiB0ZW1wbGF0ZSBjb2RlLlxuICAgKi9cbiAgbmFtZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBgWHJlZklkYCBvZiB0aGUgZWxlbWVudC1saWtlIG5vZGUgd2hpY2ggdGhpcyByZWZlcmVuY2UgdGFyZ2V0cy5cbiAgICpcbiAgICogVGhlIHJlZmVyZW5jZSBtYXkgYmUgZWl0aGVyIHRvIHRoZSBlbGVtZW50IChvciB0ZW1wbGF0ZSkgaXRzZWxmLCBvciB0byBhIGRpcmVjdGl2ZSBvbiBpdC5cbiAgICovXG4gIHRhcmdldElkOiBpci5YcmVmSWQ7XG5cbiAgdGFyZ2V0U2xvdDogaXIuU2xvdEhhbmRsZTtcblxuICAvKipcbiAgICogQSBnZW5lcmF0ZWQgb2Zmc2V0IG9mIHRoaXMgcmVmZXJlbmNlIGFtb25nIGFsbCB0aGUgcmVmZXJlbmNlcyBvbiBhIHNwZWNpZmljIGVsZW1lbnQuXG4gICAqL1xuICBvZmZzZXQ6IG51bWJlcjtcblxuICB2YXJpYWJsZTogaXIuU2VtYW50aWNWYXJpYWJsZTtcbn1cblxuLyoqXG4gKiBQcm9jZXNzIGEgdmlldyBhbmQgZ2VuZXJhdGUgYSBgU2NvcGVgIHJlcHJlc2VudGluZyB0aGUgdmFyaWFibGVzIGF2YWlsYWJsZSBmb3IgcmVmZXJlbmNlIHdpdGhpblxuICogdGhhdCB2aWV3LlxuICovXG5mdW5jdGlvbiBnZXRTY29wZUZvclZpZXcodmlldzogVmlld0NvbXBpbGF0aW9uVW5pdCwgcGFyZW50OiBTY29wZXxudWxsKTogU2NvcGUge1xuICBjb25zdCBzY29wZTogU2NvcGUgPSB7XG4gICAgdmlldzogdmlldy54cmVmLFxuICAgIHZpZXdDb250ZXh0VmFyaWFibGU6IHtcbiAgICAgIGtpbmQ6IGlyLlNlbWFudGljVmFyaWFibGVLaW5kLkNvbnRleHQsXG4gICAgICBuYW1lOiBudWxsLFxuICAgICAgdmlldzogdmlldy54cmVmLFxuICAgIH0sXG4gICAgY29udGV4dFZhcmlhYmxlczogbmV3IE1hcDxzdHJpbmcsIGlyLlNlbWFudGljVmFyaWFibGU+KCksXG4gICAgYWxpYXNlczogdmlldy5hbGlhc2VzLFxuICAgIHJlZmVyZW5jZXM6IFtdLFxuICAgIHBhcmVudCxcbiAgfTtcblxuICBmb3IgKGNvbnN0IGlkZW50aWZpZXIgb2Ygdmlldy5jb250ZXh0VmFyaWFibGVzLmtleXMoKSkge1xuICAgIHNjb3BlLmNvbnRleHRWYXJpYWJsZXMuc2V0KGlkZW50aWZpZXIsIHtcbiAgICAgIGtpbmQ6IGlyLlNlbWFudGljVmFyaWFibGVLaW5kLklkZW50aWZpZXIsXG4gICAgICBuYW1lOiBudWxsLFxuICAgICAgaWRlbnRpZmllcixcbiAgICB9KTtcbiAgfVxuXG4gIGZvciAoY29uc3Qgb3Agb2Ygdmlldy5jcmVhdGUpIHtcbiAgICBzd2l0Y2ggKG9wLmtpbmQpIHtcbiAgICAgIGNhc2UgaXIuT3BLaW5kLkVsZW1lbnRTdGFydDpcbiAgICAgIGNhc2UgaXIuT3BLaW5kLlRlbXBsYXRlOlxuICAgICAgICBpZiAoIUFycmF5LmlzQXJyYXkob3AubG9jYWxSZWZzKSkge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgQXNzZXJ0aW9uRXJyb3I6IGV4cGVjdGVkIGxvY2FsUmVmcyB0byBiZSBhbiBhcnJheWApO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gUmVjb3JkIGF2YWlsYWJsZSBsb2NhbCByZWZlcmVuY2VzIGZyb20gdGhpcyBlbGVtZW50LlxuICAgICAgICBmb3IgKGxldCBvZmZzZXQgPSAwOyBvZmZzZXQgPCBvcC5sb2NhbFJlZnMubGVuZ3RoOyBvZmZzZXQrKykge1xuICAgICAgICAgIHNjb3BlLnJlZmVyZW5jZXMucHVzaCh7XG4gICAgICAgICAgICBuYW1lOiBvcC5sb2NhbFJlZnNbb2Zmc2V0XS5uYW1lLFxuICAgICAgICAgICAgdGFyZ2V0SWQ6IG9wLnhyZWYsXG4gICAgICAgICAgICB0YXJnZXRTbG90OiBvcC5oYW5kbGUsXG4gICAgICAgICAgICBvZmZzZXQsXG4gICAgICAgICAgICB2YXJpYWJsZToge1xuICAgICAgICAgICAgICBraW5kOiBpci5TZW1hbnRpY1ZhcmlhYmxlS2luZC5JZGVudGlmaWVyLFxuICAgICAgICAgICAgICBuYW1lOiBudWxsLFxuICAgICAgICAgICAgICBpZGVudGlmaWVyOiBvcC5sb2NhbFJlZnNbb2Zmc2V0XS5uYW1lLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICBicmVhaztcbiAgICB9XG4gIH1cblxuICByZXR1cm4gc2NvcGU7XG59XG5cbi8qKlxuICogR2VuZXJhdGUgZGVjbGFyYXRpb25zIGZvciBhbGwgdmFyaWFibGVzIHRoYXQgYXJlIGluIHNjb3BlIGZvciBhIGdpdmVuIHZpZXcuXG4gKlxuICogVGhpcyBpcyBhIHJlY3Vyc2l2ZSBwcm9jZXNzLCBhcyB2aWV3cyBpbmhlcml0IHZhcmlhYmxlcyBhdmFpbGFibGUgZnJvbSB0aGVpciBwYXJlbnQgdmlldywgd2hpY2hcbiAqIGl0c2VsZiBtYXkgaGF2ZSBpbmhlcml0ZWQgdmFyaWFibGVzLCBldGMuXG4gKi9cbmZ1bmN0aW9uIGdlbmVyYXRlVmFyaWFibGVzSW5TY29wZUZvclZpZXcoXG4gICAgdmlldzogVmlld0NvbXBpbGF0aW9uVW5pdCwgc2NvcGU6IFNjb3BlKTogaXIuVmFyaWFibGVPcDxpci5VcGRhdGVPcD5bXSB7XG4gIGNvbnN0IG5ld09wczogaXIuVmFyaWFibGVPcDxpci5VcGRhdGVPcD5bXSA9IFtdO1xuXG4gIGlmIChzY29wZS52aWV3ICE9PSB2aWV3LnhyZWYpIHtcbiAgICAvLyBCZWZvcmUgZ2VuZXJhdGluZyB2YXJpYWJsZXMgZm9yIGEgcGFyZW50IHZpZXcsIHdlIG5lZWQgdG8gc3dpdGNoIHRvIHRoZSBjb250ZXh0IG9mIHRoZSBwYXJlbnRcbiAgICAvLyB2aWV3IHdpdGggYSBgbmV4dENvbnRleHRgIGV4cHJlc3Npb24uIFRoaXMgY29udGV4dCBzd2l0Y2hpbmcgb3BlcmF0aW9uIGl0c2VsZiBkZWNsYXJlcyBhXG4gICAgLy8gdmFyaWFibGUsIGJlY2F1c2UgdGhlIGNvbnRleHQgb2YgdGhlIHZpZXcgbWF5IGJlIHJlZmVyZW5jZWQgZGlyZWN0bHkuXG4gICAgbmV3T3BzLnB1c2goaXIuY3JlYXRlVmFyaWFibGVPcChcbiAgICAgICAgdmlldy5qb2IuYWxsb2NhdGVYcmVmSWQoKSwgc2NvcGUudmlld0NvbnRleHRWYXJpYWJsZSwgbmV3IGlyLk5leHRDb250ZXh0RXhwcigpLFxuICAgICAgICBpci5WYXJpYWJsZUZsYWdzLk5vbmUpKTtcbiAgfVxuXG4gIC8vIEFkZCB2YXJpYWJsZXMgZm9yIGFsbCBjb250ZXh0IHZhcmlhYmxlcyBhdmFpbGFibGUgaW4gdGhpcyBzY29wZSdzIHZpZXcuXG4gIGNvbnN0IHNjb3BlVmlldyA9IHZpZXcuam9iLnZpZXdzLmdldChzY29wZS52aWV3KSE7XG4gIGZvciAoY29uc3QgW25hbWUsIHZhbHVlXSBvZiBzY29wZVZpZXcuY29udGV4dFZhcmlhYmxlcykge1xuICAgIGNvbnN0IGNvbnRleHQgPSBuZXcgaXIuQ29udGV4dEV4cHIoc2NvcGUudmlldyk7XG4gICAgLy8gV2UgZWl0aGVyIHJlYWQgdGhlIGNvbnRleHQsIG9yLCBpZiB0aGUgdmFyaWFibGUgaXMgQ1RYX1JFRiwgdXNlIHRoZSBjb250ZXh0IGRpcmVjdGx5LlxuICAgIGNvbnN0IHZhcmlhYmxlID0gdmFsdWUgPT09IGlyLkNUWF9SRUYgPyBjb250ZXh0IDogbmV3IG8uUmVhZFByb3BFeHByKGNvbnRleHQsIHZhbHVlKTtcbiAgICAvLyBBZGQgdGhlIHZhcmlhYmxlIGRlY2xhcmF0aW9uLlxuICAgIG5ld09wcy5wdXNoKGlyLmNyZWF0ZVZhcmlhYmxlT3AoXG4gICAgICAgIHZpZXcuam9iLmFsbG9jYXRlWHJlZklkKCksIHNjb3BlLmNvbnRleHRWYXJpYWJsZXMuZ2V0KG5hbWUpISwgdmFyaWFibGUsXG4gICAgICAgIGlyLlZhcmlhYmxlRmxhZ3MuTm9uZSkpO1xuICB9XG5cbiAgZm9yIChjb25zdCBhbGlhcyBvZiBzY29wZVZpZXcuYWxpYXNlcykge1xuICAgIG5ld09wcy5wdXNoKGlyLmNyZWF0ZVZhcmlhYmxlT3AoXG4gICAgICAgIHZpZXcuam9iLmFsbG9jYXRlWHJlZklkKCksIGFsaWFzLCBhbGlhcy5leHByZXNzaW9uLmNsb25lKCksIGlyLlZhcmlhYmxlRmxhZ3MuQWx3YXlzSW5saW5lKSk7XG4gIH1cblxuICAvLyBBZGQgdmFyaWFibGVzIGZvciBhbGwgbG9jYWwgcmVmZXJlbmNlcyBkZWNsYXJlZCBmb3IgZWxlbWVudHMgaW4gdGhpcyBzY29wZS5cbiAgZm9yIChjb25zdCByZWYgb2Ygc2NvcGUucmVmZXJlbmNlcykge1xuICAgIG5ld09wcy5wdXNoKGlyLmNyZWF0ZVZhcmlhYmxlT3AoXG4gICAgICAgIHZpZXcuam9iLmFsbG9jYXRlWHJlZklkKCksIHJlZi52YXJpYWJsZSxcbiAgICAgICAgbmV3IGlyLlJlZmVyZW5jZUV4cHIocmVmLnRhcmdldElkLCByZWYudGFyZ2V0U2xvdCwgcmVmLm9mZnNldCksIGlyLlZhcmlhYmxlRmxhZ3MuTm9uZSkpO1xuICB9XG5cbiAgaWYgKHNjb3BlLnBhcmVudCAhPT0gbnVsbCkge1xuICAgIC8vIFJlY3Vyc2l2ZWx5IGFkZCB2YXJpYWJsZXMgZnJvbSB0aGUgcGFyZW50IHNjb3BlLlxuICAgIG5ld09wcy5wdXNoKC4uLmdlbmVyYXRlVmFyaWFibGVzSW5TY29wZUZvclZpZXcodmlldywgc2NvcGUucGFyZW50KSk7XG4gIH1cbiAgcmV0dXJuIG5ld09wcztcbn1cbiJdfQ==
152
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VuZXJhdGVfdmFyaWFibGVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29tcGlsZXIvc3JjL3RlbXBsYXRlL3BpcGVsaW5lL3NyYy9waGFzZXMvZ2VuZXJhdGVfdmFyaWFibGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7R0FNRztBQUVILE9BQU8sS0FBSyxDQUFDLE1BQU0sK0JBQStCLENBQUM7QUFDbkQsT0FBTyxLQUFLLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFJL0I7Ozs7Ozs7Ozs7Ozs7R0FhRztBQUNILE1BQU0sVUFBVSxpQkFBaUIsQ0FBQyxHQUE0QjtJQUM1RCxzQkFBc0IsQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLGdEQUFnRCxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQzFGLENBQUM7QUFFRDs7Ozs7O0dBTUc7QUFDSCxTQUFTLHNCQUFzQixDQUFDLElBQXlCLEVBQUUsV0FBeUI7SUFDbEYsb0NBQW9DO0lBQ3BDLE1BQU0sS0FBSyxHQUFHLGVBQWUsQ0FBQyxJQUFJLEVBQUUsV0FBVyxDQUFDLENBQUM7SUFFakQsS0FBSyxNQUFNLEVBQUUsSUFBSSxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7UUFDN0IsUUFBUSxFQUFFLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDaEIsS0FBSyxFQUFFLENBQUMsTUFBTSxDQUFDLFFBQVE7Z0JBQ3JCLHFDQUFxQztnQkFDckMsc0JBQXNCLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUUsRUFBRSxLQUFLLENBQUMsQ0FBQztnQkFDNUQsTUFBTTtZQUNSLEtBQUssRUFBRSxDQUFDLE1BQU0sQ0FBQyxVQUFVO2dCQUN2QixJQUFJLEVBQUUsQ0FBQyxZQUFZLEtBQUssSUFBSSxFQUFFLENBQUM7b0JBQzdCLHNCQUFzQixDQUFDLElBQUksQ0FB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LEtBQUssSUFBSSxFQUFFLENBQUM7UUFDMUIsbURBQW1EO1FBQ25ELE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRywrQkFBK0IsQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7SUFDdEUsQ0FBQztJQUNELE9BQU8sTUFBTSxDQUFDO0FBQ2hCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlXG4gKi9cblxuaW1wb3J0ICogYXMgbyBmcm9tICcuLi8uLi8uLi8uLi9vdXRwdXQvb3V0cHV0X2FzdCc7XG5pbXBvcnQgKiBhcyBpciBmcm9tICcuLi8uLi9pcic7XG5cbmltcG9ydCB0eXBlIHtDb21wb25lbnRDb21waWxhdGlvbkpvYiwgVmlld0NvbXBpbGF0aW9uVW5pdH0gZnJvbSAnLi4vY29tcGlsYXRpb24nO1xuXG4vKipcbiAqIEdlbmVyYXRlIGEgcHJlYW1ibGUgc2VxdWVuY2UgZm9yIGVhY2ggdmlldyBjcmVhdGlvbiBibG9jayBhbmQgbGlzdGVuZXIgZnVuY3Rpb24gd2hpY2ggZGVjbGFyZXNcbiAqIGFueSB2YXJpYWJsZXMgdGhhdCBiZSByZWZlcmVuY2VkIGluIG90aGVyIG9wZXJhdGlvbnMgaW4gdGhlIGJsb2NrLlxuICpcbiAqIFZhcmlhYmxlcyBnZW5lcmF0ZWQgaW5jbHVkZTpcbiAqICAgKiBhIHNhdmVkIHZpZXcgY29udGV4dCB0byBiZSB1c2VkIHRvIHJlc3RvcmUgdGhlIGN1cnJlbnQgdmlldyBpbiBldmVudCBsaXN0ZW5lcnMuXG4gKiAgICogdGhlIGNvbnRleHQgb2YgdGhlIHJlc3RvcmVkIHZpZXcgd2l0aGluIGV2ZW50IGxpc3RlbmVyIGhhbmRsZXJzLlxuICogICAqIGNvbnRleHQgdmFyaWFibGVzIGZyb20gdGhlIGN1cnJlbnQgdmlldyBhcyB3ZWxsIGFzIGFsbCBwYXJlbnQgdmlld3MgKGluY2x1ZGluZyB0aGUgcm9vdFxuICogICAgIGNvbnRleHQgaWYgbmVlZGVkKS5cbiAqICAgKiBsb2NhbCByZWZlcmVuY2VzIGZyb20gZWxlbWVudHMgd2l0aGluIHRoZSBjdXJyZW50IHZpZXcgYW5kIGFueSBsZXhpY2FsIHBhcmVudHMuXG4gKlxuICogVmFyaWFibGVzIGFyZSBnZW5lcmF0ZWQgaGVyZSB1bmNvbmRpdGlvbmFsbHksIGFuZCBtYXkgb3B0aW1pemVkIGF3YXkgaW4gZnV0dXJlIG9wZXJhdGlvbnMgaWYgaXRcbiAqIHR1cm5zIG91dCB0aGVpciB2YWx1ZXMgKGFuZCBhbnkgc2lkZSBlZmZlY3RzKSBhcmUgdW51c2VkLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2VuZXJhdGVWYXJpYWJsZXMoam9iOiBDb21wb25lbnRDb21waWxhdGlvbkpvYik6IHZvaWQge1xuICByZWN1cnNpdmVseVByb2Nlc3NWaWV3KGpvYi5yb290LCAvKiB0aGVyZSBpcyBubyBwYXJlbnQgc2NvcGUgZm9yIHRoZSByb290IHZpZXcgKi8gbnVsbCk7XG59XG5cbi8qKlxuICogUHJvY2VzcyB0aGUgZ2l2ZW4gYFZpZXdDb21waWxhdGlvbmAgYW5kIGdlbmVyYXRlIHByZWFtYmxlcyBmb3IgaXQgYW5kIGFueSBsaXN0ZW5lcnMgdGhhdCBpdFxuICogZGVjbGFyZXMuXG4gKlxuICogQHBhcmFtIGBwYXJlbnRTY29wZWAgYSBzY29wZSBleHRyYWN0ZWQgZnJvbSB0aGUgcGFyZW50IHZpZXcgd2hpY2ggY2FwdHVyZXMgYW55IHZhcmlhYmxlcyB3aGljaFxuICogICAgIHNob3VsZCBiZSBpbmhlcml0ZWQgYnkgdGhpcyB2aWV3LiBgbnVsbGAgaWYgdGhlIGN1cnJlbnQgdmlldyBpcyB0aGUgcm9vdCB2aWV3LlxuICovXG5mdW5jdGlvbiByZWN1cnNpdmVseVByb2Nlc3NWaWV3KHZpZXc6IFZpZXdDb21waWxhdGlvblVuaXQsIHBhcmVudFNjb3BlOiBTY29wZSB8IG51bGwpOiB2b2lkIHtcbiAgLy8gRXh0cmFjdCBhIGBTY29wZWAgZnJvbSB0aGlzIHZpZXcuXG4gIGNvbnN0IHNjb3BlID0gZ2V0U2NvcGVGb3JWaWV3KHZpZXcsIHBhcmVudFNjb3BlKTtcblxuICBmb3IgKGNvbnN0IG9wIG9mIHZpZXcuY3JlYXRlKSB7XG4gICAgc3dpdGNoIChvcC5raW5kKSB7XG4gICAgICBjYXNlIGlyLk9wS2luZC5UZW1wbGF0ZTpcbiAgICAgICAgLy8gRGVzY2VuZCBpbnRvIGNoaWxkIGVtYmVkZGVkIHZpZXdzLlxuICAgICAgICByZWN1cnNpdmVseVByb2Nlc3NWaWV3KHZpZXcuam9iLnZpZXdzLmdldChvcC54cmVmKSEsIHNjb3BlKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIGlyLk9wS2luZC5Qcm9qZWN0aW9uOlxuICAgICAgICBpZiAob3AuZmFsbGJhY2tWaWV3ICE9PSBudWxsKSB7XG4gICAgICAgICAgcmVjdXJzaXZlbHlQcm9jZXNzVmlldyh2aWV3LmpvYi52aWV3cy5nZXQob3AuZmFsbGJhY2tWaWV3KSEsIHNjb3BlKTtcbiAgICAgICAgfVxuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgaXIuT3BLaW5kLlJlcGVhdGVyQ3JlYXRlOlxuICAgICAgICAvLyBEZXNjZW5kIGludG8gY2hpbGQgZW1iZWRkZWQgdmlld3MuXG4gICAgICAgIHJlY3Vyc2l2ZWx5UHJvY2Vzc1ZpZXcodmlldy5qb2Iudmlld3MuZ2V0KG9wLnhyZWYpISwgc2NvcGUpO1xuICAgICAgICBpZiAob3AuZW1wdHlWaWV3KSB7XG4gICAgICAgICAgcmVjdXJzaXZlbHlQcm9jZXNzVmlldyh2aWV3LmpvYi52aWV3cy5nZXQob3AuZW1wdHlWaWV3KSEsIHNjb3BlKTtcbiAgICAgICAgfVxuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgaXIuT3BLaW5kLkxpc3RlbmVyOlxuICAgICAgY2FzZSBpci5PcEtpbmQuVHdvV2F5TGlzdGVuZXI6XG4gICAgICAgIC8vIFByZXBlbmQgdmFyaWFibGVzIHRvIGxpc3RlbmVyIGhhbmRsZXIgZnVuY3Rpb25zLlxuICAgICAgICBvcC5oYW5kbGVyT3BzLnByZXBlbmQoZ2VuZXJhdGVWYXJpYWJsZXNJblNjb3BlRm9yVmlldyh2aWV3LCBzY29wZSkpO1xuICAgICAgICBicmVhaztcbiAgICB9XG4gIH1cblxuICAvLyBQcmVwZW5kIHRoZSBkZWNsYXJhdGlvbnMgZm9yIGFsbCBhdmFpbGFibGUgdmFyaWFibGVzIGluIHNjb3BlIHRvIHRoZSBgdXBkYXRlYCBibG9jay5cbiAgY29uc3QgcHJlYW1ibGVPcHMgPSBnZW5lcmF0ZVZhcmlhYmxlc0luU2NvcGVGb3JWaWV3KHZpZXcsIHNjb3BlKTtcbiAgdmlldy51cGRhdGUucHJlcGVuZChwcmVhbWJsZU9wcyk7XG59XG5cbi8qKlxuICogTGV4aWNhbCBzY29wZSBvZiBhIHZpZXcsIGluY2x1ZGluZyBhIHJlZmVyZW5jZSB0byBpdHMgcGFyZW50IHZpZXcncyBzY29wZSwgaWYgYW55LlxuICovXG5pbnRlcmZhY2UgU2NvcGUge1xuICAvKipcbiAgICogYFhyZWZJZGAgb2YgdGhlIHZpZXcgdG8gd2hpY2ggdGhpcyBzY29wZSBjb3JyZXNwb25kcy5cbiAgICovXG4gIHZpZXc6IGlyLlhyZWZJZDtcblxuICB2aWV3Q29udGV4dFZhcmlhYmxlOiBpci5TZW1hbnRpY1ZhcmlhYmxlO1xuXG4gIGNvbnRleHRWYXJpYWJsZXM6IE1hcDxzdHJpbmcsIGlyLlNlbWFudGljVmFyaWFibGU+O1xuXG4gIGFsaWFzZXM6IFNldDxpci5BbGlhc1ZhcmlhYmxlPjtcblxuICAvKipcbiAgICogTG9jYWwgcmVmZXJlbmNlcyBjb2xsZWN0ZWQgZnJvbSBlbGVtZW50cyB3aXRoaW4gdGhlIHZpZXcuXG4gICAqL1xuICByZWZlcmVuY2VzOiBSZWZlcmVuY2VbXTtcblxuICAvKipcbiAgICogYFNjb3BlYCBvZiB0aGUgcGFyZW50IHZpZXcsIGlmIGFueS5cbiAgICovXG4gIHBhcmVudDogU2NvcGUgfCBudWxsO1xufVxuXG4vKipcbiAqIEluZm9ybWF0aW9uIG5lZWRlZCBhYm91dCBhIGxvY2FsIHJlZmVyZW5jZSBjb2xsZWN0ZWQgZnJvbSBhbiBlbGVtZW50IHdpdGhpbiBhIHZpZXcuXG4gKi9cbmludGVyZmFjZSBSZWZlcmVuY2Uge1xuICAvKipcbiAgICogTmFtZSBnaXZlbiB0byB0aGUgbG9jYWwgcmVmZXJlbmNlIHZhcmlhYmxlIHdpdGhpbiB0aGUgdGVtcGxhdGUuXG4gICAqXG4gICAqIFRoaXMgaXMgbm90IHRoZSBuYW1lIHdoaWNoIHdpbGwgYmUgdXNlZCBmb3IgdGhlIHZhcmlhYmxlIGRlY2xhcmF0aW9uIGluIHRoZSBnZW5lcmF0ZWRcbiAgICogdGVtcGxhdGUgY29kZS5cbiAgICovXG4gIG5hbWU6IHN0cmluZztcblxuICAvKipcbiAgICogYFhyZWZJZGAgb2YgdGhlIGVsZW1lbnQtbGlrZSBub2RlIHdoaWNoIHRoaXMgcmVmZXJlbmNlIHRhcmdldHMuXG4gICAqXG4gICAqIFRoZSByZWZlcmVuY2UgbWF5IGJlIGVpdGhlciB0byB0aGUgZWxlbWVudCAob3IgdGVtcGxhdGUpIGl0c2VsZiwgb3IgdG8gYSBkaXJlY3RpdmUgb24gaXQuXG4gICAqL1xuICB0YXJnZXRJZDogaXIuWHJlZklkO1xuXG4gIHRhcmdldFNsb3Q6IGlyLlNsb3RIYW5kbGU7XG5cbiAgLyoqXG4gICAqIEEgZ2VuZXJhdGVkIG9mZnNldCBvZiB0aGlzIHJlZmVyZW5jZSBhbW9uZyBhbGwgdGhlIHJlZmVyZW5jZXMgb24gYSBzcGVjaWZpYyBlbGVtZW50LlxuICAgKi9cbiAgb2Zmc2V0OiBudW1iZXI7XG5cbiAgdmFyaWFibGU6IGlyLlNlbWFudGljVmFyaWFibGU7XG59XG5cbi8qKlxuICogUHJvY2VzcyBhIHZpZXcgYW5kIGdlbmVyYXRlIGEgYFNjb3BlYCByZXByZXNlbnRpbmcgdGhlIHZhcmlhYmxlcyBhdmFpbGFibGUgZm9yIHJlZmVyZW5jZSB3aXRoaW5cbiAqIHRoYXQgdmlldy5cbiAqL1xuZnVuY3Rpb24gZ2V0U2NvcGVGb3JWaWV3KHZpZXc6IFZpZXdDb21waWxhdGlvblVuaXQsIHBhcmVudDogU2NvcGUgfCBudWxsKTogU2NvcGUge1xuICBjb25zdCBzY29wZTogU2NvcGUgPSB7XG4gICAgdmlldzogdmlldy54cmVmLFxuICAgIHZpZXdDb250ZXh0VmFyaWFibGU6IHtcbiAgICAgIGtpbmQ6IGlyLlNlbWFudGljVmFyaWFibGVLaW5kLkNvbnRleHQsXG4gICAgICBuYW1lOiBudWxsLFxuICAgICAgdmlldzogdmlldy54cmVmLFxuICAgIH0sXG4gICAgY29udGV4dFZhcmlhYmxlczogbmV3IE1hcDxzdHJpbmcsIGlyLlNlbWFudGljVmFyaWFibGU+KCksXG4gICAgYWxpYXNlczogdmlldy5hbGlhc2VzLFxuICAgIHJlZmVyZW5jZXM6IFtdLFxuICAgIHBhcmVudCxcbiAgfTtcblxuICBmb3IgKGNvbnN0IGlkZW50aWZpZXIgb2Ygdmlldy5jb250ZXh0VmFyaWFibGVzLmtleXMoKSkge1xuICAgIHNjb3BlLmNvbnRleHRWYXJpYWJsZXMuc2V0KGlkZW50aWZpZXIsIHtcbiAgICAgIGtpbmQ6IGlyLlNlbWFudGljVmFyaWFibGVLaW5kLklkZW50aWZpZXIsXG4gICAgICBuYW1lOiBudWxsLFxuICAgICAgaWRlbnRpZmllcixcbiAgICB9KTtcbiAgfVxuXG4gIGZvciAoY29uc3Qgb3Agb2Ygdmlldy5jcmVhdGUpIHtcbiAgICBzd2l0Y2ggKG9wLmtpbmQpIHtcbiAgICAgIGNhc2UgaXIuT3BLaW5kLkVsZW1lbnRTdGFydDpcbiAgICAgIGNhc2UgaXIuT3BLaW5kLlRlbXBsYXRlOlxuICAgICAgICBpZiAoIUFycmF5LmlzQXJyYXkob3AubG9jYWxSZWZzKSkge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgQXNzZXJ0aW9uRXJyb3I6IGV4cGVjdGVkIGxvY2FsUmVmcyB0byBiZSBhbiBhcnJheWApO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gUmVjb3JkIGF2YWlsYWJsZSBsb2NhbCByZWZlcmVuY2VzIGZyb20gdGhpcyBlbGVtZW50LlxuICAgICAgICBmb3IgKGxldCBvZmZzZXQgPSAwOyBvZmZzZXQgPCBvcC5sb2NhbFJlZnMubGVuZ3RoOyBvZmZzZXQrKykge1xuICAgICAgICAgIHNjb3BlLnJlZmVyZW5jZXMucHVzaCh7XG4gICAgICAgICAgICBuYW1lOiBvcC5sb2NhbFJlZnNbb2Zmc2V0XS5uYW1lLFxuICAgICAgICAgICAgdGFyZ2V0SWQ6IG9wLnhyZWYsXG4gICAgICAgICAgICB0YXJnZXRTbG90OiBvcC5oYW5kbGUsXG4gICAgICAgICAgICBvZmZzZXQsXG4gICAgICAgICAgICB2YXJpYWJsZToge1xuICAgICAgICAgICAgICBraW5kOiBpci5TZW1hbnRpY1ZhcmlhYmxlS2luZC5JZGVudGlmaWVyLFxuICAgICAgICAgICAgICBuYW1lOiBudWxsLFxuICAgICAgICAgICAgICBpZGVudGlmaWVyOiBvcC5sb2NhbFJlZnNbb2Zmc2V0XS5uYW1lLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICBicmVhaztcbiAgICB9XG4gIH1cblxuICByZXR1cm4gc2NvcGU7XG59XG5cbi8qKlxuICogR2VuZXJhdGUgZGVjbGFyYXRpb25zIGZvciBhbGwgdmFyaWFibGVzIHRoYXQgYXJlIGluIHNjb3BlIGZvciBhIGdpdmVuIHZpZXcuXG4gKlxuICogVGhpcyBpcyBhIHJlY3Vyc2l2ZSBwcm9jZXNzLCBhcyB2aWV3cyBpbmhlcml0IHZhcmlhYmxlcyBhdmFpbGFibGUgZnJvbSB0aGVpciBwYXJlbnQgdmlldywgd2hpY2hcbiAqIGl0c2VsZiBtYXkgaGF2ZSBpbmhlcml0ZWQgdmFyaWFibGVzLCBldGMuXG4gKi9cbmZ1bmN0aW9uIGdlbmVyYXRlVmFyaWFibGVzSW5TY29wZUZvclZpZXcoXG4gIHZpZXc6IFZpZXdDb21waWxhdGlvblVuaXQsXG4gIHNjb3BlOiBTY29wZSxcbik6IGlyLlZhcmlhYmxlT3A8aXIuVXBkYXRlT3A+W10ge1xuICBjb25zdCBuZXdPcHM6IGlyLlZhcmlhYmxlT3A8aXIuVXBkYXRlT3A+W10gPSBbXTtcblxuICBpZiAoc2NvcGUudmlldyAhPT0gdmlldy54cmVmKSB7XG4gICAgLy8gQmVmb3JlIGdlbmVyYXRpbmcgdmFyaWFibGVzIGZvciBhIHBhcmVudCB2aWV3LCB3ZSBuZWVkIHRvIHN3aXRjaCB0byB0aGUgY29udGV4dCBvZiB0aGUgcGFyZW50XG4gICAgLy8gdmlldyB3aXRoIGEgYG5leHRDb250ZXh0YCBleHByZXNzaW9uLiBUaGlzIGNvbnRleHQgc3dpdGNoaW5nIG9wZXJhdGlvbiBpdHNlbGYgZGVjbGFyZXMgYVxuICAgIC8vIHZhcmlhYmxlLCBiZWNhdXNlIHRoZSBjb250ZXh0IG9mIHRoZSB2aWV3IG1heSBiZSByZWZlcmVuY2VkIGRpcmVjdGx5LlxuICAgIG5ld09wcy5wdXNoKFxuICAgICAgaXIuY3JlYXRlVmFyaWFibGVPcChcbiAgICAgICAgdmlldy5qb2IuYWxsb2NhdGVYcmVmSWQoKSxcbiAgICAgICAgc2NvcGUudmlld0NvbnRleHRWYXJpYWJsZSxcbiAgICAgICAgbmV3IGlyLk5leHRDb250ZXh0RXhwcigpLFxuICAgICAgICBpci5WYXJpYWJsZUZsYWdzLk5vbmUsXG4gICAgICApLFxuICAgICk7XG4gIH1cblxuICAvLyBBZGQgdmFyaWFibGVzIGZvciBhbGwgY29udGV4dCB2YXJpYWJsZXMgYXZhaWxhYmxlIGluIHRoaXMgc2NvcGUncyB2aWV3LlxuICBjb25zdCBzY29wZVZpZXcgPSB2aWV3LmpvYi52aWV3cy5nZXQoc2NvcGUudmlldykhO1xuICBmb3IgKGNvbnN0IFtuYW1lLCB2YWx1ZV0gb2Ygc2NvcGVWaWV3LmNvbnRleHRWYXJpYWJsZXMpIHtcbiAgICBjb25zdCBjb250ZXh0ID0gbmV3IGlyLkNvbnRleHRFeHByKHNjb3BlLnZpZXcpO1xuICAgIC8vIFdlIGVpdGhlciByZWFkIHRoZSBjb250ZXh0LCBvciwgaWYgdGhlIHZhcmlhYmxlIGlzIENUWF9SRUYsIHVzZSB0aGUgY29udGV4dCBkaXJlY3RseS5cbiAgICBjb25zdCB2YXJpYWJsZSA9IHZhbHVlID09PSBpci5DVFhfUkVGID8gY29udGV4dCA6IG5ldyBvLlJlYWRQcm9wRXhwcihjb250ZXh0LCB2YWx1ZSk7XG4gICAgLy8gQWRkIHRoZSB2YXJpYWJsZSBkZWNsYXJhdGlvbi5cbiAgICBuZXdPcHMucHVzaChcbiAgICAgIGlyLmNyZWF0ZVZhcmlhYmxlT3AoXG4gICAgICAgIHZpZXcuam9iLmFsbG9jYXRlWHJlZklkKCksXG4gICAgICAgIHNjb3BlLmNvbnRleHRWYXJpYWJsZXMuZ2V0KG5hbWUpISxcbiAgICAgICAgdmFyaWFibGUsXG4gICAgICAgIGlyLlZhcmlhYmxlRmxhZ3MuTm9uZSxcbiAgICAgICksXG4gICAgKTtcbiAgfVxuXG4gIGZvciAoY29uc3QgYWxpYXMgb2Ygc2NvcGVWaWV3LmFsaWFzZXMpIHtcbiAgICBuZXdPcHMucHVzaChcbiAgICAgIGlyLmNyZWF0ZVZhcmlhYmxlT3AoXG4gICAgICAgIHZpZXcuam9iLmFsbG9jYXRlWHJlZklkKCksXG4gICAgICAgIGFsaWFzLFxuICAgICAgICBhbGlhcy5leHByZXNzaW9uLmNsb25lKCksXG4gICAgICAgIGlyLlZhcmlhYmxlRmxhZ3MuQWx3YXlzSW5saW5lLFxuICAgICAgKSxcbiAgICApO1xuICB9XG5cbiAgLy8gQWRkIHZhcmlhYmxlcyBmb3IgYWxsIGxvY2FsIHJlZmVyZW5jZXMgZGVjbGFyZWQgZm9yIGVsZW1lbnRzIGluIHRoaXMgc2NvcGUuXG4gIGZvciAoY29uc3QgcmVmIG9mIHNjb3BlLnJlZmVyZW5jZXMpIHtcbiAgICBuZXdPcHMucHVzaChcbiAgICAgIGlyLmNyZWF0ZVZhcmlhYmxlT3AoXG4gICAgICAgIHZpZXcuam9iLmFsbG9jYXRlWHJlZklkKCksXG4gICAgICAgIHJlZi52YXJpYWJsZSxcbiAgICAgICAgbmV3IGlyLlJlZmVyZW5jZUV4cHIocmVmLnRhcmdldElkLCByZWYudGFyZ2V0U2xvdCwgcmVmLm9mZnNldCksXG4gICAgICAgIGlyLlZhcmlhYmxlRmxhZ3MuTm9uZSxcbiAgICAgICksXG4gICAgKTtcbiAgfVxuXG4gIGlmIChzY29wZS5wYXJlbnQgIT09IG51bGwpIHtcbiAgICAvLyBSZWN1cnNpdmVseSBhZGQgdmFyaWFibGVzIGZyb20gdGhlIHBhcmVudCBzY29wZS5cbiAgICBuZXdPcHMucHVzaCguLi5nZW5lcmF0ZVZhcmlhYmxlc0luU2NvcGVGb3JWaWV3KHZpZXcsIHNjb3BlLnBhcmVudCkpO1xuICB9XG4gIHJldHVybiBuZXdPcHM7XG59XG4iXX0=