@angular/material 13.0.0-next.4 → 13.0.0-next.8

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 (1684) hide show
  1. package/autocomplete/autocomplete-module.d.ts +11 -7
  2. package/autocomplete/autocomplete-origin.d.ts +5 -0
  3. package/autocomplete/autocomplete-trigger.d.ts +5 -0
  4. package/autocomplete/autocomplete.d.ts +6 -1
  5. package/autocomplete/package.json +5 -5
  6. package/autocomplete/testing/package.json +5 -5
  7. package/badge/badge-module.d.ts +7 -7
  8. package/badge/badge.d.ts +19 -15
  9. package/badge/package.json +5 -5
  10. package/badge/testing/package.json +5 -5
  11. package/bottom-sheet/bottom-sheet-container.d.ts +6 -3
  12. package/bottom-sheet/bottom-sheet-module.d.ts +8 -7
  13. package/bottom-sheet/bottom-sheet.d.ts +3 -7
  14. package/bottom-sheet/package.json +5 -5
  15. package/bottom-sheet/testing/package.json +5 -5
  16. package/button/button-module.d.ts +6 -7
  17. package/button/button.d.ts +6 -1
  18. package/button/package.json +5 -5
  19. package/button/testing/package.json +5 -5
  20. package/button-toggle/button-toggle-module.d.ts +6 -7
  21. package/button-toggle/button-toggle.d.ts +6 -1
  22. package/button-toggle/package.json +5 -5
  23. package/button-toggle/testing/package.json +5 -5
  24. package/card/card-module.d.ts +6 -7
  25. package/card/card.d.ts +29 -7
  26. package/card/package.json +5 -5
  27. package/card/testing/package.json +5 -5
  28. package/checkbox/checkbox-module.d.ts +11 -7
  29. package/checkbox/checkbox-required-validator.d.ts +3 -0
  30. package/checkbox/checkbox.d.ts +4 -1
  31. package/checkbox/package.json +5 -5
  32. package/checkbox/testing/package.json +5 -5
  33. package/chips/chip-input.d.ts +3 -0
  34. package/chips/chip-list.d.ts +4 -1
  35. package/chips/chip.d.ts +10 -1
  36. package/chips/chips-module.d.ts +8 -7
  37. package/chips/package.json +5 -5
  38. package/chips/testing/package.json +5 -5
  39. package/core/common-behaviors/color.d.ts +2 -6
  40. package/core/common-behaviors/common-module.d.ts +5 -4
  41. package/core/common-behaviors/disable-ripple.d.ts +2 -6
  42. package/core/common-behaviors/disabled.d.ts +2 -6
  43. package/core/common-behaviors/error-state.d.ts +2 -6
  44. package/core/common-behaviors/index.d.ts +7 -6
  45. package/core/common-behaviors/initialized.d.ts +2 -6
  46. package/core/common-behaviors/tabindex.d.ts +2 -6
  47. package/core/datetime/index.d.ts +8 -7
  48. package/core/datetime/native-date-adapter.d.ts +3 -0
  49. package/core/error/error-options.d.ts +5 -7
  50. package/core/index.d.ts +0 -1
  51. package/core/line/line.d.ts +7 -0
  52. package/core/option/index.d.ts +10 -7
  53. package/core/option/optgroup.d.ts +6 -1
  54. package/core/option/option.d.ts +5 -0
  55. package/core/package.json +5 -5
  56. package/core/ripple/index.d.ts +7 -7
  57. package/core/ripple/ripple.d.ts +3 -0
  58. package/core/selection/index.d.ts +6 -7
  59. package/core/selection/pseudo-checkbox/pseudo-checkbox.d.ts +3 -7
  60. package/core/testing/package.json +5 -5
  61. package/core/typography/_typography.scss +7 -2
  62. package/datepicker/_datepicker-theme.scss +1 -4
  63. package/datepicker/calendar-body.d.ts +3 -0
  64. package/datepicker/calendar.d.ts +5 -0
  65. package/datepicker/date-range-input-parts.d.ts +8 -1
  66. package/datepicker/date-range-input.d.ts +3 -0
  67. package/datepicker/date-range-picker.d.ts +3 -7
  68. package/datepicker/date-range-selection-strategy.d.ts +3 -0
  69. package/datepicker/date-selection-model.d.ts +7 -0
  70. package/datepicker/datepicker-actions.d.ts +7 -0
  71. package/datepicker/datepicker-base.d.ts +7 -12
  72. package/datepicker/datepicker-input-base.d.ts +3 -0
  73. package/datepicker/datepicker-input.d.ts +3 -0
  74. package/datepicker/datepicker-intl.d.ts +3 -7
  75. package/datepicker/datepicker-module.d.ts +24 -7
  76. package/datepicker/datepicker-toggle.d.ts +5 -0
  77. package/datepicker/datepicker.d.ts +3 -7
  78. package/datepicker/index.d.ts +0 -4
  79. package/datepicker/month-view.d.ts +3 -7
  80. package/datepicker/multi-year-view.d.ts +3 -7
  81. package/datepicker/package.json +5 -5
  82. package/datepicker/testing/package.json +5 -5
  83. package/datepicker/year-view.d.ts +3 -7
  84. package/dialog/dialog-container.d.ts +5 -0
  85. package/dialog/dialog-content-directives.d.ts +9 -0
  86. package/dialog/dialog-module.d.ts +9 -7
  87. package/dialog/dialog.d.ts +5 -7
  88. package/dialog/package.json +5 -5
  89. package/dialog/testing/dialog-harness.d.ts +14 -11
  90. package/dialog/testing/package.json +5 -5
  91. package/divider/divider-module.d.ts +6 -7
  92. package/divider/divider.d.ts +3 -7
  93. package/divider/package.json +5 -5
  94. package/divider/testing/package.json +5 -5
  95. package/esm2020/autocomplete/autocomplete-module.mjs +58 -0
  96. package/esm2020/autocomplete/autocomplete-origin.mjs +38 -0
  97. package/esm2020/autocomplete/autocomplete-trigger.mjs +651 -0
  98. package/esm2020/autocomplete/autocomplete.mjs +216 -0
  99. package/{esm2015/autocomplete/index.js → esm2020/autocomplete/index.mjs} +0 -0
  100. package/{esm2015/autocomplete/public-api.js → esm2020/autocomplete/public-api.mjs} +0 -0
  101. package/{esm2015/autocomplete/testing/autocomplete-harness-filters.js → esm2020/autocomplete/testing/autocomplete-harness-filters.mjs} +0 -0
  102. package/esm2020/autocomplete/testing/autocomplete-harness.mjs +101 -0
  103. package/{esm2015/autocomplete/testing/index.js → esm2020/autocomplete/testing/index.mjs} +0 -0
  104. package/{esm2015/autocomplete/testing/public-api.js → esm2020/autocomplete/testing/public-api.mjs} +0 -0
  105. package/esm2020/badge/badge-module.mjs +33 -0
  106. package/esm2020/badge/badge.mjs +228 -0
  107. package/{esm2015/badge/index.js → esm2020/badge/index.mjs} +0 -0
  108. package/{esm2015/badge/public-api.js → esm2020/badge/public-api.mjs} +0 -0
  109. package/{esm2015/badge/testing/badge-harness-filters.js → esm2020/badge/testing/badge-harness-filters.mjs} +0 -0
  110. package/esm2020/badge/testing/badge-harness.mjs +72 -0
  111. package/{esm2015/badge/testing/index.js → esm2020/badge/testing/index.mjs} +0 -0
  112. package/{esm2015/badge/testing/public-api.js → esm2020/badge/testing/public-api.mjs} +0 -0
  113. package/{esm2015/bottom-sheet/bottom-sheet-animations.js → esm2020/bottom-sheet/bottom-sheet-animations.mjs} +0 -0
  114. package/{esm2015/bottom-sheet/bottom-sheet-config.js → esm2020/bottom-sheet/bottom-sheet-config.mjs} +0 -0
  115. package/esm2020/bottom-sheet/bottom-sheet-container.mjs +230 -0
  116. package/esm2020/bottom-sheet/bottom-sheet-module.mjs +38 -0
  117. package/esm2020/bottom-sheet/bottom-sheet-ref.mjs +91 -0
  118. package/esm2020/bottom-sheet/bottom-sheet.mjs +172 -0
  119. package/{esm2015/bottom-sheet/index.js → esm2020/bottom-sheet/index.mjs} +0 -0
  120. package/{esm2015/bottom-sheet/public-api.js → esm2020/bottom-sheet/public-api.mjs} +0 -0
  121. package/{esm2015/bottom-sheet/testing/bottom-sheet-harness-filters.js → esm2020/bottom-sheet/testing/bottom-sheet-harness-filters.mjs} +0 -0
  122. package/esm2020/bottom-sheet/testing/bottom-sheet-harness.mjs +35 -0
  123. package/{esm2015/bottom-sheet/testing/index.js → esm2020/bottom-sheet/testing/index.mjs} +0 -0
  124. package/{esm2015/bottom-sheet/testing/public-api.js → esm2020/bottom-sheet/testing/public-api.mjs} +0 -0
  125. package/esm2020/button/button-module.mjs +42 -0
  126. package/esm2020/button/button.mjs +153 -0
  127. package/{esm2015/button/index.js → esm2020/button/index.mjs} +0 -0
  128. package/{esm2015/button/public-api.js → esm2020/button/public-api.mjs} +0 -0
  129. package/{esm2015/button/testing/button-harness-filters.js → esm2020/button/testing/button-harness-filters.mjs} +0 -0
  130. package/esm2020/button/testing/button-harness.mjs +51 -0
  131. package/{esm2015/button/testing/index.js → esm2020/button/testing/index.mjs} +0 -0
  132. package/{esm2015/button/testing/public-api.js → esm2020/button/testing/public-api.mjs} +0 -0
  133. package/esm2020/button-toggle/button-toggle-module.mjs +25 -0
  134. package/esm2020/button-toggle/button-toggle.mjs +470 -0
  135. package/{esm2015/button-toggle/index.js → esm2020/button-toggle/index.mjs} +0 -0
  136. package/{esm2015/button-toggle/public-api.js → esm2020/button-toggle/public-api.mjs} +0 -0
  137. package/{esm2015/button-toggle/testing/button-toggle-group-harness-filters.js → esm2020/button-toggle/testing/button-toggle-group-harness-filters.mjs} +0 -0
  138. package/esm2020/button-toggle/testing/button-toggle-group-harness.mjs +45 -0
  139. package/{esm2015/button-toggle/testing/button-toggle-harness-filters.js → esm2020/button-toggle/testing/button-toggle-harness-filters.mjs} +0 -0
  140. package/esm2020/button-toggle/testing/button-toggle-harness.mjs +98 -0
  141. package/{esm2015/button-toggle/testing/index.js → esm2020/button-toggle/testing/index.mjs} +0 -0
  142. package/{esm2015/button-toggle/testing/public-api.js → esm2020/button-toggle/testing/public-api.mjs} +0 -0
  143. package/esm2020/card/card-module.mjs +61 -0
  144. package/esm2020/card/card.mjs +247 -0
  145. package/{esm2015/card/index.js → esm2020/card/index.mjs} +0 -0
  146. package/{esm2015/card/public-api.js → esm2020/card/public-api.mjs} +0 -0
  147. package/{esm2015/card/testing/card-harness-filters.js → esm2020/card/testing/card-harness-filters.mjs} +0 -0
  148. package/esm2020/card/testing/card-harness.mjs +43 -0
  149. package/{esm2015/card/testing/index.js → esm2020/card/testing/index.mjs} +0 -0
  150. package/{esm2015/card/testing/public-api.js → esm2020/card/testing/public-api.mjs} +0 -0
  151. package/{esm2015/checkbox/checkbox-config.js → esm2020/checkbox/checkbox-config.mjs} +0 -0
  152. package/esm2020/checkbox/checkbox-module.mjs +46 -0
  153. package/esm2020/checkbox/checkbox-required-validator.mjs +33 -0
  154. package/esm2020/checkbox/checkbox.mjs +403 -0
  155. package/{esm2015/checkbox/index.js → esm2020/checkbox/index.mjs} +0 -0
  156. package/{esm2015/checkbox/public-api.js → esm2020/checkbox/public-api.mjs} +0 -0
  157. package/{esm2015/checkbox/testing/checkbox-harness-filters.js → esm2020/checkbox/testing/checkbox-harness-filters.mjs} +0 -0
  158. package/esm2020/checkbox/testing/checkbox-harness.mjs +123 -0
  159. package/{esm2015/checkbox/testing/index.js → esm2020/checkbox/testing/index.mjs} +0 -0
  160. package/{esm2015/checkbox/testing/public-api.js → esm2020/checkbox/testing/public-api.mjs} +0 -0
  161. package/{esm2015/chips/chip-default-options.js → esm2020/chips/chip-default-options.mjs} +0 -0
  162. package/esm2020/chips/chip-input.mjs +192 -0
  163. package/esm2020/chips/chip-list.mjs +673 -0
  164. package/{esm2015/chips/chip-text-control.js → esm2020/chips/chip-text-control.mjs} +0 -0
  165. package/esm2020/chips/chip.mjs +415 -0
  166. package/esm2020/chips/chips-module.mjs +64 -0
  167. package/{esm2015/chips/index.js → esm2020/chips/index.mjs} +0 -0
  168. package/{esm2015/chips/public-api.js → esm2020/chips/public-api.mjs} +0 -0
  169. package/{esm2015/chips/testing/chip-avatar-harness.js → esm2020/chips/testing/chip-avatar-harness.mjs} +0 -0
  170. package/{esm2015/chips/testing/chip-harness-filters.js → esm2020/chips/testing/chip-harness-filters.mjs} +0 -0
  171. package/esm2020/chips/testing/chip-harness.mjs +91 -0
  172. package/esm2020/chips/testing/chip-input-harness.mjs +82 -0
  173. package/esm2020/chips/testing/chip-list-harness.mjs +82 -0
  174. package/esm2020/chips/testing/chip-listbox-harness.mjs +44 -0
  175. package/esm2020/chips/testing/chip-option-harness.mjs +45 -0
  176. package/esm2020/chips/testing/chip-remove-harness.mjs +26 -0
  177. package/{esm2015/chips/testing/index.js → esm2020/chips/testing/index.mjs} +0 -0
  178. package/{esm2015/chips/testing/public-api.js → esm2020/chips/testing/public-api.mjs} +0 -0
  179. package/{esm2015/core/animation/animation.js → esm2020/core/animation/animation.mjs} +0 -0
  180. package/esm2020/core/common-behaviors/color.mjs +31 -0
  181. package/esm2020/core/common-behaviors/common-module.mjs +122 -0
  182. package/{esm2015/core/common-behaviors/constructor.js → esm2020/core/common-behaviors/constructor.mjs} +0 -0
  183. package/esm2020/core/common-behaviors/disable-ripple.mjs +20 -0
  184. package/esm2020/core/common-behaviors/disabled.mjs +19 -0
  185. package/esm2020/core/common-behaviors/error-state.mjs +36 -0
  186. package/esm2020/core/common-behaviors/index.mjs +15 -0
  187. package/esm2020/core/common-behaviors/initialized.mjs +58 -0
  188. package/esm2020/core/common-behaviors/tabindex.mjs +23 -0
  189. package/{esm2015/core/datetime/date-adapter.js → esm2020/core/datetime/date-adapter.mjs} +0 -0
  190. package/{esm2015/core/datetime/date-formats.js → esm2020/core/datetime/date-formats.mjs} +0 -0
  191. package/esm2020/core/datetime/index.mjs +47 -0
  192. package/esm2020/core/datetime/native-date-adapter.mjs +218 -0
  193. package/{esm2015/core/datetime/native-date-formats.js → esm2020/core/datetime/native-date-formats.mjs} +0 -0
  194. package/esm2020/core/error/error-options.mjs +33 -0
  195. package/esm2020/core/index.mjs +5 -0
  196. package/esm2020/core/line/line.mjs +64 -0
  197. package/esm2020/core/option/index.mjs +32 -0
  198. package/esm2020/core/option/optgroup.mjs +73 -0
  199. package/{esm2015/core/option/option-parent.js → esm2020/core/option/option-parent.mjs} +0 -0
  200. package/esm2020/core/option/option.mjs +276 -0
  201. package/{esm2015/core/public-api.js → esm2020/core/public-api.mjs} +0 -0
  202. package/esm2020/core/ripple/index.mjs +29 -0
  203. package/{esm2015/core/ripple/ripple-ref.js → esm2020/core/ripple/ripple-ref.mjs} +0 -0
  204. package/esm2020/core/ripple/ripple-renderer.mjs +261 -0
  205. package/esm2020/core/ripple/ripple.mjs +152 -0
  206. package/esm2020/core/selection/index.mjs +26 -0
  207. package/esm2020/core/selection/pseudo-checkbox/pseudo-checkbox.mjs +54 -0
  208. package/{esm2015/core/testing/index.js → esm2020/core/testing/index.mjs} +0 -0
  209. package/{esm2015/core/testing/optgroup-harness-filters.js → esm2020/core/testing/optgroup-harness-filters.mjs} +0 -0
  210. package/esm2020/core/testing/optgroup-harness.mjs +44 -0
  211. package/{esm2015/core/testing/option-harness-filters.js → esm2020/core/testing/option-harness-filters.mjs} +0 -0
  212. package/esm2020/core/testing/option-harness.mjs +54 -0
  213. package/{esm2015/core/testing/public-api.js → esm2020/core/testing/public-api.mjs} +0 -0
  214. package/esm2020/core/version.mjs +11 -0
  215. package/esm2020/datepicker/calendar-body.mjs +298 -0
  216. package/esm2020/datepicker/calendar.mjs +354 -0
  217. package/esm2020/datepicker/date-range-input-parts.mjs +342 -0
  218. package/esm2020/datepicker/date-range-input.mjs +331 -0
  219. package/esm2020/datepicker/date-range-picker.mjs +48 -0
  220. package/esm2020/datepicker/date-range-selection-strategy.mjs +59 -0
  221. package/esm2020/datepicker/date-selection-model.mjs +187 -0
  222. package/esm2020/datepicker/datepicker-actions.mjs +89 -0
  223. package/{esm2015/datepicker/datepicker-animations.js → esm2020/datepicker/datepicker-animations.mjs} +0 -0
  224. package/esm2020/datepicker/datepicker-base.mjs +549 -0
  225. package/{esm2015/datepicker/datepicker-errors.js → esm2020/datepicker/datepicker-errors.mjs} +0 -0
  226. package/esm2020/datepicker/datepicker-input-base.mjs +298 -0
  227. package/esm2020/datepicker/datepicker-input.mjs +183 -0
  228. package/esm2020/datepicker/datepicker-intl.mjs +53 -0
  229. package/esm2020/datepicker/datepicker-module.mjs +148 -0
  230. package/esm2020/datepicker/datepicker-toggle.mjs +113 -0
  231. package/esm2020/datepicker/datepicker.mjs +37 -0
  232. package/esm2020/datepicker/index.mjs +5 -0
  233. package/esm2020/datepicker/month-view.mjs +364 -0
  234. package/esm2020/datepicker/multi-year-view.mjs +289 -0
  235. package/{esm2015/datepicker/public-api.js → esm2020/datepicker/public-api.mjs} +0 -0
  236. package/esm2020/datepicker/testing/calendar-cell-harness.mjs +138 -0
  237. package/esm2020/datepicker/testing/calendar-harness.mjs +76 -0
  238. package/esm2020/datepicker/testing/date-range-input-harness.mjs +99 -0
  239. package/{esm2015/datepicker/testing/datepicker-harness-filters.js → esm2020/datepicker/testing/datepicker-harness-filters.mjs} +0 -0
  240. package/esm2020/datepicker/testing/datepicker-input-harness-base.mjs +81 -0
  241. package/esm2020/datepicker/testing/datepicker-input-harness.mjs +58 -0
  242. package/esm2020/datepicker/testing/datepicker-toggle-harness.mjs +41 -0
  243. package/esm2020/datepicker/testing/datepicker-trigger-harness-base.mjs +65 -0
  244. package/{esm2015/datepicker/testing/index.js → esm2020/datepicker/testing/index.mjs} +0 -0
  245. package/{esm2015/datepicker/testing/public-api.js → esm2020/datepicker/testing/public-api.mjs} +0 -0
  246. package/esm2020/datepicker/year-view.mjs +281 -0
  247. package/{esm2015/dialog/dialog-animations.js → esm2020/dialog/dialog-animations.mjs} +0 -0
  248. package/{esm2015/dialog/dialog-config.js → esm2020/dialog/dialog-config.mjs} +0 -0
  249. package/esm2020/dialog/dialog-container.mjs +282 -0
  250. package/esm2020/dialog/dialog-content-directives.mjs +172 -0
  251. package/esm2020/dialog/dialog-module.mjs +69 -0
  252. package/esm2020/dialog/dialog-ref.mjs +196 -0
  253. package/esm2020/dialog/dialog.mjs +358 -0
  254. package/{esm2015/dialog/index.js → esm2020/dialog/index.mjs} +0 -0
  255. package/{esm2015/dialog/public-api.js → esm2020/dialog/public-api.mjs} +0 -0
  256. package/{esm2015/dialog/testing/dialog-harness-filters.js → esm2020/dialog/testing/dialog-harness-filters.mjs} +0 -0
  257. package/esm2020/dialog/testing/dialog-harness.mjs +83 -0
  258. package/{esm2015/dialog/testing/index.js → esm2020/dialog/testing/index.mjs} +0 -0
  259. package/{esm2015/dialog/testing/public-api.js → esm2020/dialog/testing/public-api.mjs} +0 -0
  260. package/esm2020/divider/divider-module.mjs +25 -0
  261. package/esm2020/divider/divider.mjs +40 -0
  262. package/{esm2015/divider/index.js → esm2020/divider/index.mjs} +0 -0
  263. package/{esm2015/divider/public-api.js → esm2020/divider/public-api.mjs} +0 -0
  264. package/{esm2015/divider/testing/divider-harness-filters.js → esm2020/divider/testing/divider-harness-filters.mjs} +0 -0
  265. package/esm2020/divider/testing/divider-harness.mjs +22 -0
  266. package/{esm2015/divider/testing/index.js → esm2020/divider/testing/index.mjs} +0 -0
  267. package/{esm2015/divider/testing/public-api.js → esm2020/divider/testing/public-api.mjs} +0 -0
  268. package/{esm2015/expansion/accordion-base.js → esm2020/expansion/accordion-base.mjs} +0 -0
  269. package/esm2020/expansion/accordion.mjs +93 -0
  270. package/{esm2015/expansion/expansion-animations.js → esm2020/expansion/expansion-animations.mjs} +0 -0
  271. package/esm2020/expansion/expansion-module.mjs +59 -0
  272. package/esm2020/expansion/expansion-panel-content.mjs +27 -0
  273. package/esm2020/expansion/expansion-panel-header.mjs +226 -0
  274. package/esm2020/expansion/expansion-panel.mjs +195 -0
  275. package/{esm2015/expansion/index.js → esm2020/expansion/index.mjs} +0 -0
  276. package/{esm2015/expansion/public-api.js → esm2020/expansion/public-api.mjs} +0 -0
  277. package/esm2020/expansion/testing/accordion-harness.mjs +31 -0
  278. package/{esm2015/expansion/testing/expansion-harness-filters.js → esm2020/expansion/testing/expansion-harness-filters.mjs} +0 -0
  279. package/esm2020/expansion/testing/expansion-harness.mjs +120 -0
  280. package/{esm2015/expansion/testing/index.js → esm2020/expansion/testing/index.mjs} +0 -0
  281. package/{esm2015/expansion/testing/public-api.js → esm2020/expansion/testing/public-api.mjs} +0 -0
  282. package/esm2020/form-field/error.mjs +47 -0
  283. package/{esm2015/form-field/form-field-animations.js → esm2020/form-field/form-field-animations.mjs} +0 -0
  284. package/esm2020/form-field/form-field-control.mjs +11 -0
  285. package/{esm2015/form-field/form-field-errors.js → esm2020/form-field/form-field-errors.mjs} +0 -0
  286. package/esm2020/form-field/form-field-module.mjs +73 -0
  287. package/esm2020/form-field/form-field.mjs +510 -0
  288. package/esm2020/form-field/hint.mjs +49 -0
  289. package/{esm2015/form-field/index.js → esm2020/form-field/index.mjs} +0 -0
  290. package/esm2020/form-field/label.mjs +21 -0
  291. package/esm2020/form-field/placeholder.mjs +26 -0
  292. package/esm2020/form-field/prefix.mjs +28 -0
  293. package/{esm2015/form-field/public-api.js → esm2020/form-field/public-api.mjs} +0 -0
  294. package/esm2020/form-field/suffix.mjs +28 -0
  295. package/{esm2015/form-field/testing/control/form-field-control-harness.js → esm2020/form-field/testing/control/form-field-control-harness.mjs} +0 -0
  296. package/{esm2015/form-field/testing/control/index.js → esm2020/form-field/testing/control/index.mjs} +0 -0
  297. package/{esm2015/form-field/testing/form-field-harness-filters.js → esm2020/form-field/testing/form-field-harness-filters.mjs} +0 -0
  298. package/esm2020/form-field/testing/form-field-harness.mjs +181 -0
  299. package/{esm2015/form-field/testing/index.js → esm2020/form-field/testing/index.mjs} +0 -0
  300. package/{esm2015/form-field/testing/public-api.js → esm2020/form-field/testing/public-api.mjs} +0 -0
  301. package/{esm2015/grid-list/grid-list-base.js → esm2020/grid-list/grid-list-base.mjs} +0 -0
  302. package/esm2020/grid-list/grid-list-module.mjs +55 -0
  303. package/esm2020/grid-list/grid-list.mjs +135 -0
  304. package/esm2020/grid-list/grid-tile.mjs +117 -0
  305. package/esm2020/grid-list/index.mjs +5 -0
  306. package/{esm2015/grid-list/public-api.js → esm2020/grid-list/public-api.mjs} +0 -0
  307. package/{esm2015/grid-list/testing/grid-list-harness-filters.js → esm2020/grid-list/testing/grid-list-harness-filters.mjs} +0 -0
  308. package/esm2020/grid-list/testing/grid-list-harness.mjs +72 -0
  309. package/esm2020/grid-list/testing/grid-tile-harness.mjs +65 -0
  310. package/{esm2015/grid-list/testing/index.js → esm2020/grid-list/testing/index.mjs} +0 -0
  311. package/{esm2015/grid-list/testing/public-api.js → esm2020/grid-list/testing/public-api.mjs} +0 -0
  312. package/{esm2015/grid-list/tile-coordinator.js → esm2020/grid-list/tile-coordinator.mjs} +0 -0
  313. package/{esm2015/grid-list/tile-styler.js → esm2020/grid-list/tile-styler.mjs} +0 -0
  314. package/{esm2015/icon/fake-svgs.js → esm2020/icon/fake-svgs.mjs} +0 -0
  315. package/esm2020/icon/icon-module.mjs +25 -0
  316. package/esm2020/icon/icon-registry.mjs +582 -0
  317. package/esm2020/icon/icon.mjs +357 -0
  318. package/{esm2015/icon/index.js → esm2020/icon/index.mjs} +0 -0
  319. package/{esm2015/icon/public-api.js → esm2020/icon/public-api.mjs} +0 -0
  320. package/esm2020/icon/testing/fake-icon-registry.mjs +92 -0
  321. package/{esm2015/icon/testing/icon-harness-filters.js → esm2020/icon/testing/icon-harness-filters.mjs} +0 -0
  322. package/esm2020/icon/testing/icon-harness.mjs +54 -0
  323. package/{esm2015/icon/testing/index.js → esm2020/icon/testing/index.mjs} +0 -0
  324. package/{esm2015/icon/testing/public-api.js → esm2020/icon/testing/public-api.mjs} +0 -0
  325. package/esm2020/icon/trusted-types.mjs +43 -0
  326. package/{esm2015/index.js → esm2020/index.mjs} +0 -0
  327. package/{esm2015/input/index.js → esm2020/input/index.mjs} +0 -0
  328. package/{esm2015/input/input-errors.js → esm2020/input/input-errors.mjs} +0 -0
  329. package/esm2020/input/input-module.mjs +51 -0
  330. package/{esm2015/input/input-value-accessor.js → esm2020/input/input-value-accessor.mjs} +0 -0
  331. package/esm2020/input/input.mjs +428 -0
  332. package/esm2020/input/public-api.mjs +12 -0
  333. package/{esm2015/input/testing/index.js → esm2020/input/testing/index.mjs} +0 -0
  334. package/{esm2015/input/testing/input-harness-filters.js → esm2020/input/testing/input-harness-filters.mjs} +0 -0
  335. package/esm2020/input/testing/input-harness.mjs +113 -0
  336. package/esm2020/input/testing/native-option-harness.mjs +42 -0
  337. package/{esm2015/input/testing/native-select-harness-filters.js → esm2020/input/testing/native-select-harness-filters.mjs} +0 -0
  338. package/esm2020/input/testing/native-select-harness.mjs +79 -0
  339. package/{esm2015/input/testing/public-api.js → esm2020/input/testing/public-api.mjs} +0 -0
  340. package/{esm2015/list/index.js → esm2020/list/index.mjs} +0 -0
  341. package/esm2020/list/list-module.mjs +71 -0
  342. package/esm2020/list/list.mjs +216 -0
  343. package/{esm2015/list/public-api.js → esm2020/list/public-api.mjs} +0 -0
  344. package/esm2020/list/selection-list.mjs +612 -0
  345. package/esm2020/list/testing/action-list-harness.mjs +59 -0
  346. package/{esm2015/list/testing/index.js → esm2020/list/testing/index.mjs} +0 -0
  347. package/esm2020/list/testing/list-harness-base.mjs +88 -0
  348. package/{esm2015/list/testing/list-harness-filters.js → esm2020/list/testing/list-harness-filters.mjs} +0 -0
  349. package/{esm2015/list/testing/list-harness.js → esm2020/list/testing/list-harness.mjs} +0 -0
  350. package/esm2020/list/testing/list-item-harness-base.mjs +72 -0
  351. package/esm2020/list/testing/nav-list-harness.mjs +64 -0
  352. package/{esm2015/list/testing/public-api.js → esm2020/list/testing/public-api.mjs} +0 -0
  353. package/esm2020/list/testing/selection-list-harness.mjs +125 -0
  354. package/esm2020/menu/index.mjs +5 -0
  355. package/{esm2015/menu/menu-animations.js → esm2020/menu/menu-animations.mjs} +0 -0
  356. package/esm2020/menu/menu-content.mjs +97 -0
  357. package/{esm2015/menu/menu-errors.js → esm2020/menu/menu-errors.mjs} +0 -0
  358. package/esm2020/menu/menu-item.mjs +164 -0
  359. package/esm2020/menu/menu-module.mjs +58 -0
  360. package/{esm2015/menu/menu-panel.js → esm2020/menu/menu-panel.mjs} +0 -0
  361. package/{esm2015/menu/menu-positions.js → esm2020/menu/menu-positions.mjs} +0 -0
  362. package/esm2020/menu/menu-trigger.mjs +540 -0
  363. package/esm2020/menu/menu.mjs +401 -0
  364. package/esm2020/menu/public-api.mjs +16 -0
  365. package/{esm2015/menu/testing/index.js → esm2020/menu/testing/index.mjs} +0 -0
  366. package/{esm2015/menu/testing/menu-harness-filters.js → esm2020/menu/testing/menu-harness-filters.mjs} +0 -0
  367. package/esm2020/menu/testing/menu-harness.mjs +183 -0
  368. package/{esm2015/menu/testing/public-api.js → esm2020/menu/testing/public-api.mjs} +0 -0
  369. package/{esm2015/paginator/index.js → esm2020/paginator/index.mjs} +0 -0
  370. package/esm2020/paginator/paginator-intl.mjs +64 -0
  371. package/esm2020/paginator/paginator-module.mjs +47 -0
  372. package/esm2020/paginator/paginator.mjs +268 -0
  373. package/{esm2015/paginator/public-api.js → esm2020/paginator/public-api.mjs} +0 -0
  374. package/{esm2015/paginator/testing/index.js → esm2020/paginator/testing/index.mjs} +0 -0
  375. package/{esm2015/paginator/testing/paginator-harness-filters.js → esm2020/paginator/testing/paginator-harness-filters.mjs} +0 -0
  376. package/esm2020/paginator/testing/paginator-harness.mjs +91 -0
  377. package/{esm2015/paginator/testing/public-api.js → esm2020/paginator/testing/public-api.mjs} +0 -0
  378. package/{esm2015/progress-bar/index.js → esm2020/progress-bar/index.mjs} +0 -0
  379. package/esm2020/progress-bar/progress-bar-module.mjs +26 -0
  380. package/esm2020/progress-bar/progress-bar.mjs +187 -0
  381. package/{esm2015/progress-bar/public-api.js → esm2020/progress-bar/public-api.mjs} +0 -0
  382. package/{esm2015/progress-bar/testing/index.js → esm2020/progress-bar/testing/index.mjs} +0 -0
  383. package/{esm2015/progress-bar/testing/progress-bar-harness-filters.js → esm2020/progress-bar/testing/progress-bar-harness-filters.mjs} +0 -0
  384. package/esm2020/progress-bar/testing/progress-bar-harness.mjs +34 -0
  385. package/{esm2015/progress-bar/testing/public-api.js → esm2020/progress-bar/testing/public-api.mjs} +0 -0
  386. package/{esm2015/progress-spinner/index.js → esm2020/progress-spinner/index.mjs} +0 -0
  387. package/esm2020/progress-spinner/progress-spinner-module.mjs +36 -0
  388. package/esm2020/progress-spinner/progress-spinner.mjs +280 -0
  389. package/{esm2015/progress-spinner/public-api.js → esm2020/progress-spinner/public-api.mjs} +0 -0
  390. package/{esm2015/progress-spinner/testing/index.js → esm2020/progress-spinner/testing/index.mjs} +0 -0
  391. package/{esm2015/progress-spinner/testing/progress-spinner-harness-filters.js → esm2020/progress-spinner/testing/progress-spinner-harness-filters.mjs} +0 -0
  392. package/esm2020/progress-spinner/testing/progress-spinner-harness.mjs +35 -0
  393. package/{esm2015/progress-spinner/testing/public-api.js → esm2020/progress-spinner/testing/public-api.mjs} +0 -0
  394. package/{esm2015/radio/index.js → esm2020/radio/index.mjs} +0 -0
  395. package/{esm2015/radio/public-api.js → esm2020/radio/public-api.mjs} +0 -0
  396. package/esm2020/radio/radio-module.mjs +25 -0
  397. package/esm2020/radio/radio.mjs +570 -0
  398. package/{esm2015/radio/testing/index.js → esm2020/radio/testing/index.mjs} +0 -0
  399. package/{esm2015/radio/testing/public-api.js → esm2020/radio/testing/public-api.mjs} +0 -0
  400. package/{esm2015/radio/testing/radio-harness-filters.js → esm2020/radio/testing/radio-harness-filters.mjs} +0 -0
  401. package/esm2020/radio/testing/radio-harness.mjs +231 -0
  402. package/{esm2015/select/index.js → esm2020/select/index.mjs} +0 -0
  403. package/{esm2015/select/public-api.js → esm2020/select/public-api.mjs} +0 -0
  404. package/{esm2015/select/select-animations.js → esm2020/select/select-animations.mjs} +0 -0
  405. package/{esm2015/select/select-errors.js → esm2020/select/select-errors.mjs} +0 -0
  406. package/esm2020/select/select-module.mjs +58 -0
  407. package/esm2020/select/select.mjs +1188 -0
  408. package/{esm2015/select/testing/index.js → esm2020/select/testing/index.mjs} +0 -0
  409. package/{esm2015/select/testing/public-api.js → esm2020/select/testing/public-api.mjs} +0 -0
  410. package/{esm2015/select/testing/select-harness-filters.js → esm2020/select/testing/select-harness-filters.mjs} +0 -0
  411. package/esm2020/select/testing/select-harness.mjs +130 -0
  412. package/{esm2015/sidenav/drawer-animations.js → esm2020/sidenav/drawer-animations.mjs} +0 -0
  413. package/esm2020/sidenav/drawer.mjs +788 -0
  414. package/esm2020/sidenav/index.mjs +5 -0
  415. package/{esm2015/sidenav/public-api.js → esm2020/sidenav/public-api.mjs} +0 -0
  416. package/esm2020/sidenav/sidenav-module.mjs +71 -0
  417. package/esm2020/sidenav/sidenav.mjs +115 -0
  418. package/esm2020/sidenav/testing/drawer-container-harness.mjs +36 -0
  419. package/{esm2015/sidenav/testing/drawer-content-harness.js → esm2020/sidenav/testing/drawer-content-harness.mjs} +0 -0
  420. package/{esm2015/sidenav/testing/drawer-harness-filters.js → esm2020/sidenav/testing/drawer-harness-filters.mjs} +0 -0
  421. package/esm2020/sidenav/testing/drawer-harness.mjs +50 -0
  422. package/{esm2015/sidenav/testing/index.js → esm2020/sidenav/testing/index.mjs} +0 -0
  423. package/{esm2015/sidenav/testing/public-api.js → esm2020/sidenav/testing/public-api.mjs} +0 -0
  424. package/esm2020/sidenav/testing/sidenav-container-harness.mjs +36 -0
  425. package/{esm2015/sidenav/testing/sidenav-content-harness.js → esm2020/sidenav/testing/sidenav-content-harness.mjs} +0 -0
  426. package/esm2020/sidenav/testing/sidenav-harness.mjs +29 -0
  427. package/{esm2015/slide-toggle/index.js → esm2020/slide-toggle/index.mjs} +0 -0
  428. package/{esm2015/slide-toggle/public-api.js → esm2020/slide-toggle/public-api.mjs} +0 -0
  429. package/{esm2015/slide-toggle/slide-toggle-config.js → esm2020/slide-toggle/slide-toggle-config.mjs} +0 -0
  430. package/esm2020/slide-toggle/slide-toggle-module.mjs +57 -0
  431. package/esm2020/slide-toggle/slide-toggle-required-validator.mjs +36 -0
  432. package/esm2020/slide-toggle/slide-toggle.mjs +253 -0
  433. package/{esm2015/slide-toggle/testing/index.js → esm2020/slide-toggle/testing/index.mjs} +0 -0
  434. package/{esm2015/slide-toggle/testing/public-api.js → esm2020/slide-toggle/testing/public-api.mjs} +0 -0
  435. package/{esm2015/slide-toggle/testing/slide-toggle-harness-filters.js → esm2020/slide-toggle/testing/slide-toggle-harness-filters.mjs} +0 -0
  436. package/esm2020/slide-toggle/testing/slide-toggle-harness.mjs +110 -0
  437. package/{esm2015/slider/index.js → esm2020/slider/index.mjs} +0 -0
  438. package/{esm2015/slider/public-api.js → esm2020/slider/public-api.mjs} +0 -0
  439. package/esm2020/slider/slider-module.mjs +26 -0
  440. package/esm2020/slider/slider.mjs +801 -0
  441. package/{esm2015/slider/testing/index.js → esm2020/slider/testing/index.mjs} +0 -0
  442. package/{esm2015/slider/testing/public-api.js → esm2020/slider/testing/public-api.mjs} +0 -0
  443. package/{esm2015/slider/testing/slider-harness-filters.js → esm2020/slider/testing/slider-harness-filters.mjs} +0 -0
  444. package/esm2020/slider/testing/slider-harness.mjs +114 -0
  445. package/{esm2015/snack-bar/index.js → esm2020/snack-bar/index.mjs} +0 -0
  446. package/{esm2015/snack-bar/public-api.js → esm2020/snack-bar/public-api.mjs} +0 -0
  447. package/esm2020/snack-bar/simple-snack-bar.mjs +44 -0
  448. package/{esm2015/snack-bar/snack-bar-animations.js → esm2020/snack-bar/snack-bar-animations.mjs} +0 -0
  449. package/{esm2015/snack-bar/snack-bar-config.js → esm2020/snack-bar/snack-bar-config.mjs} +0 -0
  450. package/esm2020/snack-bar/snack-bar-container.mjs +205 -0
  451. package/esm2020/snack-bar/snack-bar-module.mjs +47 -0
  452. package/esm2020/snack-bar/snack-bar-ref.mjs +90 -0
  453. package/esm2020/snack-bar/snack-bar.mjs +265 -0
  454. package/{esm2015/snack-bar/testing/index.js → esm2020/snack-bar/testing/index.mjs} +0 -0
  455. package/{esm2015/snack-bar/testing/public-api.js → esm2020/snack-bar/testing/public-api.mjs} +0 -0
  456. package/{esm2015/snack-bar/testing/snack-bar-harness-filters.js → esm2020/snack-bar/testing/snack-bar-harness-filters.mjs} +0 -0
  457. package/esm2020/snack-bar/testing/snack-bar-harness.mjs +118 -0
  458. package/{esm2015/sort/index.js → esm2020/sort/index.mjs} +0 -0
  459. package/{esm2015/sort/public-api.js → esm2020/sort/public-api.mjs} +0 -0
  460. package/{esm2015/sort/sort-animations.js → esm2020/sort/sort-animations.mjs} +0 -0
  461. package/{esm2015/sort/sort-direction.js → esm2020/sort/sort-direction.mjs} +0 -0
  462. package/{esm2015/sort/sort-errors.js → esm2020/sort/sort-errors.mjs} +0 -0
  463. package/esm2020/sort/sort-header-intl.mjs +43 -0
  464. package/esm2020/sort/sort-header.mjs +275 -0
  465. package/esm2020/sort/sort-module.mjs +29 -0
  466. package/esm2020/sort/sort.mjs +154 -0
  467. package/{esm2015/sort/testing/index.js → esm2020/sort/testing/index.mjs} +0 -0
  468. package/{esm2015/sort/testing/public-api.js → esm2020/sort/testing/public-api.mjs} +0 -0
  469. package/{esm2015/sort/testing/sort-harness-filters.js → esm2020/sort/testing/sort-harness-filters.mjs} +0 -0
  470. package/esm2020/sort/testing/sort-harness.mjs +36 -0
  471. package/esm2020/sort/testing/sort-header-harness.mjs +56 -0
  472. package/{esm2015/stepper/index.js → esm2020/stepper/index.mjs} +0 -0
  473. package/{esm2015/stepper/public-api.js → esm2020/stepper/public-api.mjs} +0 -0
  474. package/esm2020/stepper/step-content.mjs +26 -0
  475. package/esm2020/stepper/step-header.mjs +110 -0
  476. package/esm2020/stepper/step-label.mjs +21 -0
  477. package/{esm2015/stepper/stepper-animations.js → esm2020/stepper/stepper-animations.mjs} +0 -0
  478. package/esm2020/stepper/stepper-button.mjs +43 -0
  479. package/esm2020/stepper/stepper-icon.mjs +29 -0
  480. package/esm2020/stepper/stepper-intl.mjs +43 -0
  481. package/esm2020/stepper/stepper-module.mjs +97 -0
  482. package/esm2020/stepper/stepper.mjs +213 -0
  483. package/{esm2015/stepper/testing/index.js → esm2020/stepper/testing/index.mjs} +0 -0
  484. package/{esm2015/stepper/testing/public-api.js → esm2020/stepper/testing/public-api.mjs} +0 -0
  485. package/{esm2015/stepper/testing/step-harness-filters.js → esm2020/stepper/testing/step-harness-filters.mjs} +0 -0
  486. package/esm2020/stepper/testing/step-harness.mjs +90 -0
  487. package/esm2020/stepper/testing/stepper-button-harnesses.mjs +50 -0
  488. package/esm2020/stepper/testing/stepper-harness.mjs +50 -0
  489. package/esm2020/table/cell.mjs +139 -0
  490. package/{esm2015/table/index.js → esm2020/table/index.mjs} +0 -0
  491. package/{esm2015/table/public-api.js → esm2020/table/public-api.mjs} +0 -0
  492. package/esm2020/table/row.mjs +139 -0
  493. package/esm2020/table/table-data-source.mjs +310 -0
  494. package/esm2020/table/table-module.mjs +101 -0
  495. package/esm2020/table/table.mjs +71 -0
  496. package/esm2020/table/testing/cell-harness.mjs +72 -0
  497. package/{esm2015/table/testing/index.js → esm2020/table/testing/index.mjs} +0 -0
  498. package/{esm2015/table/testing/public-api.js → esm2020/table/testing/public-api.mjs} +0 -0
  499. package/esm2020/table/testing/row-harness.mjs +84 -0
  500. package/{esm2015/table/testing/table-harness-filters.js → esm2020/table/testing/table-harness-filters.mjs} +0 -0
  501. package/esm2020/table/testing/table-harness.mjs +88 -0
  502. package/esm2020/table/text-column.mjs +58 -0
  503. package/esm2020/tabs/index.mjs +5 -0
  504. package/esm2020/tabs/ink-bar.mjs +93 -0
  505. package/esm2020/tabs/paginated-tab-header.mjs +480 -0
  506. package/esm2020/tabs/public-api.mjs +20 -0
  507. package/esm2020/tabs/tab-body.mjs +214 -0
  508. package/{esm2015/tabs/tab-config.js → esm2020/tabs/tab-config.mjs} +0 -0
  509. package/esm2020/tabs/tab-content.mjs +32 -0
  510. package/esm2020/tabs/tab-group.mjs +382 -0
  511. package/esm2020/tabs/tab-header.mjs +101 -0
  512. package/esm2020/tabs/tab-label-wrapper.mjs +41 -0
  513. package/esm2020/tabs/tab-label.mjs +43 -0
  514. package/{esm2015/tabs/tab-nav-bar/index.js → esm2020/tabs/tab-nav-bar/index.mjs} +0 -0
  515. package/esm2020/tabs/tab-nav-bar/tab-nav-bar.mjs +263 -0
  516. package/esm2020/tabs/tab.mjs +106 -0
  517. package/{esm2015/tabs/tabs-animations.js → esm2020/tabs/tabs-animations.mjs} +0 -0
  518. package/esm2020/tabs/tabs-module.mjs +93 -0
  519. package/{esm2015/tabs/testing/index.js → esm2020/tabs/testing/index.mjs} +0 -0
  520. package/{esm2015/tabs/testing/public-api.js → esm2020/tabs/testing/public-api.mjs} +0 -0
  521. package/esm2020/tabs/testing/tab-group-harness.mjs +58 -0
  522. package/{esm2015/tabs/testing/tab-harness-filters.js → esm2020/tabs/testing/tab-harness-filters.mjs} +0 -0
  523. package/esm2020/tabs/testing/tab-harness.mjs +66 -0
  524. package/esm2020/tabs/testing/tab-link-harness.mjs +42 -0
  525. package/esm2020/tabs/testing/tab-nav-bar-harness.mjs +54 -0
  526. package/{esm2015/toolbar/index.js → esm2020/toolbar/index.mjs} +0 -0
  527. package/{esm2015/toolbar/public-api.js → esm2020/toolbar/public-api.mjs} +0 -0
  528. package/{esm2015/toolbar/testing/index.js → esm2020/toolbar/testing/index.mjs} +0 -0
  529. package/{esm2015/toolbar/testing/public-api.js → esm2020/toolbar/testing/public-api.mjs} +0 -0
  530. package/{esm2015/toolbar/testing/toolbar-harness-filters.js → esm2020/toolbar/testing/toolbar-harness-filters.mjs} +0 -0
  531. package/esm2020/toolbar/testing/toolbar-harness.mjs +40 -0
  532. package/esm2020/toolbar/toolbar-module.mjs +25 -0
  533. package/esm2020/toolbar/toolbar.mjs +88 -0
  534. package/{esm2015/tooltip/index.js → esm2020/tooltip/index.mjs} +0 -0
  535. package/{esm2015/tooltip/public-api.js → esm2020/tooltip/public-api.mjs} +0 -0
  536. package/{esm2015/tooltip/testing/index.js → esm2020/tooltip/testing/index.mjs} +0 -0
  537. package/{esm2015/tooltip/testing/public-api.js → esm2020/tooltip/testing/public-api.mjs} +0 -0
  538. package/{esm2015/tooltip/testing/tooltip-harness-filters.js → esm2020/tooltip/testing/tooltip-harness-filters.mjs} +0 -0
  539. package/esm2020/tooltip/testing/tooltip-harness.mjs +57 -0
  540. package/{esm2015/tooltip/tooltip-animations.js → esm2020/tooltip/tooltip-animations.mjs} +0 -0
  541. package/esm2020/tooltip/tooltip-module.mjs +44 -0
  542. package/esm2020/tooltip/tooltip.mjs +739 -0
  543. package/{esm2015/tree/data-source/flat-data-source.js → esm2020/tree/data-source/flat-data-source.mjs} +0 -0
  544. package/{esm2015/tree/data-source/nested-data-source.js → esm2020/tree/data-source/nested-data-source.mjs} +0 -0
  545. package/{esm2015/tree/index.js → esm2020/tree/index.mjs} +0 -0
  546. package/esm2020/tree/node.mjs +143 -0
  547. package/esm2020/tree/outlet.mjs +41 -0
  548. package/esm2020/tree/padding.mjs +37 -0
  549. package/{esm2015/tree/public-api.js → esm2020/tree/public-api.mjs} +0 -0
  550. package/{esm2015/tree/testing/index.js → esm2020/tree/testing/index.mjs} +0 -0
  551. package/esm2020/tree/testing/node-harness.mjs +69 -0
  552. package/{esm2015/tree/testing/public-api.js → esm2020/tree/testing/public-api.mjs} +0 -0
  553. package/{esm2015/tree/testing/tree-harness-filters.js → esm2020/tree/testing/tree-harness-filters.mjs} +0 -0
  554. package/esm2020/tree/testing/tree-harness.mjs +123 -0
  555. package/esm2020/tree/toggle.mjs +36 -0
  556. package/esm2020/tree/tree-module.mjs +51 -0
  557. package/esm2020/tree/tree.mjs +37 -0
  558. package/expansion/accordion.d.ts +3 -0
  559. package/expansion/expansion-module.d.ts +12 -7
  560. package/expansion/expansion-panel-content.d.ts +3 -0
  561. package/expansion/expansion-panel-header.d.ts +8 -1
  562. package/expansion/expansion-panel.d.ts +5 -0
  563. package/expansion/package.json +5 -5
  564. package/expansion/testing/package.json +5 -5
  565. package/fesm2015/autocomplete/testing.mjs +132 -0
  566. package/fesm2015/autocomplete/testing.mjs.map +1 -0
  567. package/fesm2015/autocomplete.mjs +958 -0
  568. package/fesm2015/autocomplete.mjs.map +1 -0
  569. package/fesm2015/badge/testing.mjs +97 -0
  570. package/fesm2015/badge/testing.mjs.map +1 -0
  571. package/fesm2015/badge.mjs +266 -0
  572. package/fesm2015/badge.mjs.map +1 -0
  573. package/fesm2015/bottom-sheet/testing.mjs +52 -0
  574. package/fesm2015/bottom-sheet/testing.mjs.map +1 -0
  575. package/fesm2015/bottom-sheet.mjs +596 -0
  576. package/fesm2015/bottom-sheet.mjs.map +1 -0
  577. package/fesm2015/button/testing.mjs +76 -0
  578. package/fesm2015/button/testing.mjs.map +1 -0
  579. package/fesm2015/button-toggle/testing.mjs +181 -0
  580. package/fesm2015/button-toggle/testing.mjs.map +1 -0
  581. package/fesm2015/button-toggle.mjs +502 -0
  582. package/fesm2015/button-toggle.mjs.map +1 -0
  583. package/fesm2015/button.mjs +202 -0
  584. package/fesm2015/button.mjs.map +1 -0
  585. package/fesm2015/card/testing.mjs +64 -0
  586. package/fesm2015/card/testing.mjs.map +1 -0
  587. package/fesm2015/card.mjs +322 -0
  588. package/fesm2015/card.mjs.map +1 -0
  589. package/fesm2015/checkbox/testing.mjs +168 -0
  590. package/fesm2015/checkbox/testing.mjs.map +1 -0
  591. package/fesm2015/checkbox.mjs +503 -0
  592. package/fesm2015/checkbox.mjs.map +1 -0
  593. package/fesm2015/chips/testing.mjs +423 -0
  594. package/fesm2015/chips/testing.mjs.map +1 -0
  595. package/fesm2015/chips.mjs +1354 -0
  596. package/fesm2015/chips.mjs.map +1 -0
  597. package/fesm2015/core/testing.mjs +120 -0
  598. package/fesm2015/core/testing.mjs.map +1 -0
  599. package/fesm2015/core.mjs +1719 -0
  600. package/fesm2015/core.mjs.map +1 -0
  601. package/fesm2015/datepicker/testing.mjs +635 -0
  602. package/fesm2015/datepicker/testing.mjs.map +1 -0
  603. package/fesm2015/datepicker.mjs +3948 -0
  604. package/fesm2015/datepicker.mjs.map +1 -0
  605. package/fesm2015/dialog/testing.mjs +119 -0
  606. package/fesm2015/dialog/testing.mjs.map +1 -0
  607. package/fesm2015/dialog.mjs +1155 -0
  608. package/fesm2015/dialog.mjs.map +1 -0
  609. package/fesm2015/divider/testing.mjs +39 -0
  610. package/fesm2015/divider/testing.mjs.map +1 -0
  611. package/fesm2015/divider.mjs +77 -0
  612. package/fesm2015/divider.mjs.map +1 -0
  613. package/fesm2015/expansion/testing.mjs +187 -0
  614. package/fesm2015/expansion/testing.mjs.map +1 -0
  615. package/fesm2015/expansion.mjs +641 -0
  616. package/fesm2015/expansion.mjs.map +1 -0
  617. package/fesm2015/form-field/testing/control.mjs +26 -0
  618. package/fesm2015/form-field/testing/control.mjs.map +1 -0
  619. package/fesm2015/form-field/testing.mjs +231 -0
  620. package/fesm2015/form-field/testing.mjs.map +1 -0
  621. package/fesm2015/form-field.mjs +814 -0
  622. package/fesm2015/form-field.mjs.map +1 -0
  623. package/fesm2015/grid-list/testing.mjs +161 -0
  624. package/fesm2015/grid-list/testing.mjs.map +1 -0
  625. package/fesm2015/grid-list.mjs +700 -0
  626. package/fesm2015/grid-list.mjs.map +1 -0
  627. package/fesm2015/icon/testing.mjs +163 -0
  628. package/fesm2015/icon/testing.mjs.map +1 -0
  629. package/fesm2015/icon.mjs +1016 -0
  630. package/fesm2015/icon.mjs.map +1 -0
  631. package/fesm2015/input/testing.mjs +281 -0
  632. package/fesm2015/input/testing.mjs.map +1 -0
  633. package/fesm2015/input.mjs +515 -0
  634. package/fesm2015/input.mjs.map +1 -0
  635. package/fesm2015/list/testing.mjs +486 -0
  636. package/fesm2015/list/testing.mjs.map +1 -0
  637. package/fesm2015/list.mjs +908 -0
  638. package/fesm2015/list.mjs.map +1 -0
  639. package/fesm2015/material.mjs +16 -0
  640. package/fesm2015/material.mjs.map +1 -0
  641. package/fesm2015/menu/testing.mjs +235 -0
  642. package/fesm2015/menu/testing.mjs.map +1 -0
  643. package/fesm2015/menu.mjs +1363 -0
  644. package/fesm2015/menu.mjs.map +1 -0
  645. package/fesm2015/paginator/testing.mjs +118 -0
  646. package/fesm2015/paginator/testing.mjs.map +1 -0
  647. package/fesm2015/paginator.mjs +387 -0
  648. package/fesm2015/paginator.mjs.map +1 -0
  649. package/fesm2015/progress-bar/testing.mjs +51 -0
  650. package/fesm2015/progress-bar/testing.mjs.map +1 -0
  651. package/fesm2015/progress-bar.mjs +225 -0
  652. package/fesm2015/progress-bar.mjs.map +1 -0
  653. package/fesm2015/progress-spinner/testing.mjs +52 -0
  654. package/fesm2015/progress-spinner/testing.mjs.map +1 -0
  655. package/fesm2015/progress-spinner.mjs +330 -0
  656. package/fesm2015/progress-spinner.mjs.map +1 -0
  657. package/fesm2015/radio/testing.mjs +284 -0
  658. package/fesm2015/radio/testing.mjs.map +1 -0
  659. package/fesm2015/radio.mjs +599 -0
  660. package/fesm2015/radio.mjs.map +1 -0
  661. package/fesm2015/select/testing.mjs +169 -0
  662. package/fesm2015/select/testing.mjs.map +1 -0
  663. package/fesm2015/select.mjs +1346 -0
  664. package/fesm2015/select.mjs.map +1 -0
  665. package/fesm2015/sidenav/testing.mjs +195 -0
  666. package/fesm2015/sidenav/testing.mjs.map +1 -0
  667. package/fesm2015/sidenav.mjs +1013 -0
  668. package/fesm2015/sidenav.mjs.map +1 -0
  669. package/fesm2015/slide-toggle/testing.mjs +151 -0
  670. package/fesm2015/slide-toggle/testing.mjs.map +1 -0
  671. package/fesm2015/slide-toggle.mjs +359 -0
  672. package/fesm2015/slide-toggle.mjs.map +1 -0
  673. package/fesm2015/slider/testing.mjs +153 -0
  674. package/fesm2015/slider/testing.mjs.map +1 -0
  675. package/fesm2015/slider.mjs +830 -0
  676. package/fesm2015/slider.mjs.map +1 -0
  677. package/fesm2015/snack-bar/testing.mjs +153 -0
  678. package/fesm2015/snack-bar/testing.mjs.map +1 -0
  679. package/fesm2015/snack-bar.mjs +698 -0
  680. package/fesm2015/snack-bar.mjs.map +1 -0
  681. package/fesm2015/sort/testing.mjs +110 -0
  682. package/fesm2015/sort/testing.mjs.map +1 -0
  683. package/fesm2015/sort.mjs +605 -0
  684. package/fesm2015/sort.mjs.map +1 -0
  685. package/fesm2015/stepper/testing.mjs +216 -0
  686. package/fesm2015/stepper/testing.mjs.map +1 -0
  687. package/fesm2015/stepper.mjs +579 -0
  688. package/fesm2015/stepper.mjs.map +1 -0
  689. package/fesm2015/table/testing.mjs +259 -0
  690. package/fesm2015/table/testing.mjs.map +1 -0
  691. package/fesm2015/table.mjs +817 -0
  692. package/fesm2015/table.mjs.map +1 -0
  693. package/fesm2015/tabs/testing.mjs +245 -0
  694. package/fesm2015/tabs/testing.mjs.map +1 -0
  695. package/fesm2015/tabs.mjs +1846 -0
  696. package/fesm2015/tabs.mjs.map +1 -0
  697. package/fesm2015/toolbar/testing.mjs +59 -0
  698. package/fesm2015/toolbar/testing.mjs.map +1 -0
  699. package/fesm2015/toolbar.mjs +118 -0
  700. package/fesm2015/toolbar.mjs.map +1 -0
  701. package/fesm2015/tooltip/testing.mjs +80 -0
  702. package/fesm2015/tooltip/testing.mjs.map +1 -0
  703. package/fesm2015/tooltip.mjs +820 -0
  704. package/fesm2015/tooltip.mjs.map +1 -0
  705. package/fesm2015/tree/testing.mjs +215 -0
  706. package/fesm2015/tree/testing.mjs.map +1 -0
  707. package/fesm2015/tree.mjs +520 -0
  708. package/fesm2015/tree.mjs.map +1 -0
  709. package/fesm2020/autocomplete/testing.mjs +128 -0
  710. package/fesm2020/autocomplete/testing.mjs.map +1 -0
  711. package/fesm2020/autocomplete.mjs +958 -0
  712. package/fesm2020/autocomplete.mjs.map +1 -0
  713. package/fesm2020/badge/testing.mjs +99 -0
  714. package/fesm2020/badge/testing.mjs.map +1 -0
  715. package/fesm2020/badge.mjs +271 -0
  716. package/fesm2020/badge.mjs.map +1 -0
  717. package/fesm2020/bottom-sheet/testing.mjs +62 -0
  718. package/fesm2020/bottom-sheet/testing.mjs.map +1 -0
  719. package/fesm2020/bottom-sheet.mjs +592 -0
  720. package/fesm2020/bottom-sheet.mjs.map +1 -0
  721. package/fesm2020/button/testing.mjs +78 -0
  722. package/fesm2020/button/testing.mjs.map +1 -0
  723. package/fesm2020/button-toggle/testing.mjs +176 -0
  724. package/fesm2020/button-toggle/testing.mjs.map +1 -0
  725. package/fesm2020/button-toggle.mjs +505 -0
  726. package/fesm2020/button-toggle.mjs.map +1 -0
  727. package/fesm2020/button.mjs +205 -0
  728. package/fesm2020/button.mjs.map +1 -0
  729. package/fesm2020/card/testing.mjs +70 -0
  730. package/fesm2020/card/testing.mjs.map +1 -0
  731. package/fesm2020/card.mjs +320 -0
  732. package/fesm2020/card.mjs.map +1 -0
  733. package/fesm2020/checkbox/testing.mjs +150 -0
  734. package/fesm2020/checkbox/testing.mjs.map +1 -0
  735. package/fesm2020/checkbox.mjs +507 -0
  736. package/fesm2020/checkbox.mjs.map +1 -0
  737. package/fesm2020/chips/testing.mjs +398 -0
  738. package/fesm2020/chips/testing.mjs.map +1 -0
  739. package/fesm2020/chips.mjs +1346 -0
  740. package/fesm2020/chips.mjs.map +1 -0
  741. package/fesm2020/core/testing.mjs +131 -0
  742. package/fesm2020/core/testing.mjs.map +1 -0
  743. package/fesm2020/core.mjs +1731 -0
  744. package/fesm2020/core.mjs.map +1 -0
  745. package/fesm2020/datepicker/testing.mjs +572 -0
  746. package/fesm2020/datepicker/testing.mjs.map +1 -0
  747. package/fesm2020/datepicker.mjs +3921 -0
  748. package/fesm2020/datepicker.mjs.map +1 -0
  749. package/fesm2020/dialog/testing.mjs +110 -0
  750. package/fesm2020/dialog/testing.mjs.map +1 -0
  751. package/fesm2020/dialog.mjs +1147 -0
  752. package/fesm2020/dialog.mjs.map +1 -0
  753. package/fesm2020/divider/testing.mjs +49 -0
  754. package/fesm2020/divider/testing.mjs.map +1 -0
  755. package/fesm2020/divider.mjs +77 -0
  756. package/fesm2020/divider.mjs.map +1 -0
  757. package/fesm2020/expansion/testing.mjs +176 -0
  758. package/fesm2020/expansion/testing.mjs.map +1 -0
  759. package/fesm2020/expansion.mjs +644 -0
  760. package/fesm2020/expansion.mjs.map +1 -0
  761. package/fesm2020/form-field/testing/control.mjs +26 -0
  762. package/fesm2020/form-field/testing/control.mjs.map +1 -0
  763. package/fesm2020/form-field/testing.mjs +209 -0
  764. package/fesm2020/form-field/testing.mjs.map +1 -0
  765. package/fesm2020/form-field.mjs +817 -0
  766. package/fesm2020/form-field.mjs.map +1 -0
  767. package/fesm2020/grid-list/testing.mjs +162 -0
  768. package/fesm2020/grid-list/testing.mjs.map +1 -0
  769. package/fesm2020/grid-list.mjs +696 -0
  770. package/fesm2020/grid-list.mjs.map +1 -0
  771. package/fesm2020/icon/testing.mjs +169 -0
  772. package/fesm2020/icon/testing.mjs.map +1 -0
  773. package/fesm2020/icon.mjs +1010 -0
  774. package/fesm2020/icon.mjs.map +1 -0
  775. package/fesm2020/input/testing.mjs +265 -0
  776. package/fesm2020/input/testing.mjs.map +1 -0
  777. package/fesm2020/input.mjs +512 -0
  778. package/fesm2020/input.mjs.map +1 -0
  779. package/fesm2020/list/testing.mjs +464 -0
  780. package/fesm2020/list/testing.mjs.map +1 -0
  781. package/fesm2020/list.mjs +901 -0
  782. package/fesm2020/list.mjs.map +1 -0
  783. package/fesm2020/material.mjs +16 -0
  784. package/fesm2020/material.mjs.map +1 -0
  785. package/fesm2020/menu/testing.mjs +210 -0
  786. package/fesm2020/menu/testing.mjs.map +1 -0
  787. package/fesm2020/menu.mjs +1365 -0
  788. package/fesm2020/menu.mjs.map +1 -0
  789. package/fesm2020/paginator/testing.mjs +118 -0
  790. package/fesm2020/paginator/testing.mjs.map +1 -0
  791. package/fesm2020/paginator.mjs +385 -0
  792. package/fesm2020/paginator.mjs.map +1 -0
  793. package/fesm2020/progress-bar/testing.mjs +61 -0
  794. package/fesm2020/progress-bar/testing.mjs.map +1 -0
  795. package/fesm2020/progress-bar.mjs +223 -0
  796. package/fesm2020/progress-bar.mjs.map +1 -0
  797. package/fesm2020/progress-spinner/testing.mjs +62 -0
  798. package/fesm2020/progress-spinner/testing.mjs.map +1 -0
  799. package/fesm2020/progress-spinner.mjs +326 -0
  800. package/fesm2020/progress-spinner.mjs.map +1 -0
  801. package/fesm2020/radio/testing.mjs +258 -0
  802. package/fesm2020/radio/testing.mjs.map +1 -0
  803. package/fesm2020/radio.mjs +604 -0
  804. package/fesm2020/radio.mjs.map +1 -0
  805. package/fesm2020/select/testing.mjs +157 -0
  806. package/fesm2020/select/testing.mjs.map +1 -0
  807. package/fesm2020/select.mjs +1338 -0
  808. package/fesm2020/select.mjs.map +1 -0
  809. package/fesm2020/sidenav/testing.mjs +214 -0
  810. package/fesm2020/sidenav/testing.mjs.map +1 -0
  811. package/fesm2020/sidenav.mjs +1004 -0
  812. package/fesm2020/sidenav.mjs.map +1 -0
  813. package/fesm2020/slide-toggle/testing.mjs +137 -0
  814. package/fesm2020/slide-toggle/testing.mjs.map +1 -0
  815. package/fesm2020/slide-toggle.mjs +364 -0
  816. package/fesm2020/slide-toggle.mjs.map +1 -0
  817. package/fesm2020/slider/testing.mjs +133 -0
  818. package/fesm2020/slider/testing.mjs.map +1 -0
  819. package/fesm2020/slider.mjs +835 -0
  820. package/fesm2020/slider.mjs.map +1 -0
  821. package/fesm2020/snack-bar/testing.mjs +145 -0
  822. package/fesm2020/snack-bar/testing.mjs.map +1 -0
  823. package/fesm2020/snack-bar.mjs +701 -0
  824. package/fesm2020/snack-bar.mjs.map +1 -0
  825. package/fesm2020/sort/testing.mjs +109 -0
  826. package/fesm2020/sort/testing.mjs.map +1 -0
  827. package/fesm2020/sort.mjs +609 -0
  828. package/fesm2020/sort.mjs.map +1 -0
  829. package/fesm2020/stepper/testing.mjs +206 -0
  830. package/fesm2020/stepper/testing.mjs.map +1 -0
  831. package/fesm2020/stepper.mjs +589 -0
  832. package/fesm2020/stepper.mjs.map +1 -0
  833. package/fesm2020/table/testing.mjs +259 -0
  834. package/fesm2020/table/testing.mjs.map +1 -0
  835. package/fesm2020/table.mjs +814 -0
  836. package/fesm2020/table.mjs.map +1 -0
  837. package/fesm2020/tabs/testing.mjs +234 -0
  838. package/fesm2020/tabs/testing.mjs.map +1 -0
  839. package/fesm2020/tabs.mjs +1829 -0
  840. package/fesm2020/tabs.mjs.map +1 -0
  841. package/fesm2020/toolbar/testing.mjs +67 -0
  842. package/fesm2020/toolbar/testing.mjs.map +1 -0
  843. package/fesm2020/toolbar.mjs +123 -0
  844. package/fesm2020/toolbar.mjs.map +1 -0
  845. package/fesm2020/tooltip/testing.mjs +84 -0
  846. package/fesm2020/tooltip/testing.mjs.map +1 -0
  847. package/fesm2020/tooltip.mjs +815 -0
  848. package/fesm2020/tooltip.mjs.map +1 -0
  849. package/fesm2020/tree/testing.mjs +217 -0
  850. package/fesm2020/tree/testing.mjs.map +1 -0
  851. package/fesm2020/tree.mjs +514 -0
  852. package/fesm2020/tree.mjs.map +1 -0
  853. package/form-field/error.d.ts +3 -0
  854. package/form-field/form-field-control.d.ts +3 -0
  855. package/form-field/form-field-module.d.ts +14 -7
  856. package/form-field/form-field.d.ts +4 -1
  857. package/form-field/hint.d.ts +3 -0
  858. package/form-field/label.d.ts +3 -7
  859. package/form-field/package.json +5 -5
  860. package/form-field/placeholder.d.ts +3 -7
  861. package/form-field/prefix.d.ts +3 -0
  862. package/form-field/suffix.d.ts +3 -0
  863. package/form-field/testing/control/package.json +5 -5
  864. package/form-field/testing/package.json +5 -5
  865. package/grid-list/grid-list-module.d.ts +7 -7
  866. package/grid-list/grid-list.d.ts +3 -0
  867. package/grid-list/grid-tile.d.ts +11 -0
  868. package/grid-list/index.d.ts +0 -1
  869. package/grid-list/package.json +5 -5
  870. package/grid-list/testing/package.json +5 -5
  871. package/icon/icon-module.d.ts +6 -7
  872. package/icon/icon-registry.d.ts +3 -7
  873. package/icon/icon.d.ts +4 -1
  874. package/icon/package.json +5 -5
  875. package/icon/testing/fake-icon-registry.d.ts +6 -0
  876. package/icon/testing/package.json +5 -5
  877. package/input/input-module.d.ts +8 -7
  878. package/input/input.d.ts +4 -1
  879. package/input/package.json +5 -5
  880. package/input/public-api.d.ts +0 -1
  881. package/input/testing/package.json +5 -5
  882. package/list/list-module.d.ts +9 -7
  883. package/list/list.d.ts +15 -2
  884. package/list/package.json +5 -5
  885. package/list/selection-list.d.ts +7 -2
  886. package/list/testing/package.json +5 -5
  887. package/menu/index.d.ts +0 -2
  888. package/menu/menu-content.d.ts +11 -11
  889. package/menu/menu-item.d.ts +4 -1
  890. package/menu/menu-module.d.ts +12 -13
  891. package/menu/menu-trigger.d.ts +12 -2
  892. package/menu/menu.d.ts +5 -0
  893. package/menu/package.json +5 -5
  894. package/menu/public-api.d.ts +1 -1
  895. package/menu/testing/package.json +5 -5
  896. package/package.json +612 -8
  897. package/paginator/package.json +5 -5
  898. package/paginator/paginator-intl.d.ts +3 -0
  899. package/paginator/paginator-module.d.ts +10 -7
  900. package/paginator/paginator.d.ts +6 -1
  901. package/paginator/testing/package.json +5 -5
  902. package/prebuilt-themes/deeppurple-amber.css +1 -1
  903. package/prebuilt-themes/indigo-pink.css +1 -1
  904. package/prebuilt-themes/pink-bluegrey.css +1 -1
  905. package/prebuilt-themes/purple-green.css +1 -1
  906. package/progress-bar/package.json +5 -5
  907. package/progress-bar/progress-bar-module.d.ts +7 -7
  908. package/progress-bar/progress-bar.d.ts +4 -1
  909. package/progress-bar/testing/package.json +5 -5
  910. package/progress-spinner/package.json +5 -5
  911. package/progress-spinner/progress-spinner-module.d.ts +7 -0
  912. package/progress-spinner/progress-spinner.d.ts +6 -1
  913. package/progress-spinner/testing/package.json +5 -5
  914. package/radio/package.json +5 -5
  915. package/radio/radio-module.d.ts +6 -7
  916. package/radio/radio.d.ts +10 -1
  917. package/radio/testing/package.json +5 -5
  918. package/schematics/ng-add/fonts/material-fonts.js +8 -17
  919. package/schematics/ng-add/fonts/material-fonts.mjs +8 -17
  920. package/schematics/ng-add/index.js +8 -8
  921. package/schematics/ng-add/index.mjs +8 -8
  922. package/schematics/ng-add/setup-project.js +23 -32
  923. package/schematics/ng-add/setup-project.mjs +23 -32
  924. package/schematics/ng-add/theming/create-custom-theme.js +2 -2
  925. package/schematics/ng-add/theming/create-custom-theme.mjs +2 -2
  926. package/schematics/ng-add/theming/theming.js +35 -46
  927. package/schematics/ng-add/theming/theming.mjs +35 -46
  928. package/schematics/ng-generate/address-form/index.js +13 -22
  929. package/schematics/ng-generate/address-form/index.mjs +13 -22
  930. package/schematics/ng-generate/dashboard/index.js +13 -22
  931. package/schematics/ng-generate/dashboard/index.mjs +13 -22
  932. package/schematics/ng-generate/navigation/index.js +13 -22
  933. package/schematics/ng-generate/navigation/index.mjs +13 -22
  934. package/schematics/ng-generate/table/index.js +10 -19
  935. package/schematics/ng-generate/table/index.mjs +10 -19
  936. package/schematics/ng-generate/tree/index.js +10 -19
  937. package/schematics/ng-generate/tree/index.mjs +10 -19
  938. package/schematics/ng-update/data/constructor-checks.js +5 -1
  939. package/schematics/ng-update/data/constructor-checks.mjs +5 -1
  940. package/schematics/ng-update/index.js +9 -9
  941. package/schematics/ng-update/index.mjs +9 -9
  942. package/schematics/ng-update/migrations/hammer-gestures-v9/hammer-gestures-migration.js +24 -24
  943. package/schematics/ng-update/migrations/hammer-gestures-v9/hammer-gestures-migration.mjs +24 -24
  944. package/schematics/ng-update/migrations/hammer-gestures-v9/import-manager.js +5 -5
  945. package/schematics/ng-update/migrations/hammer-gestures-v9/import-manager.mjs +5 -5
  946. package/schematics/ng-update/migrations/misc-checks/misc-class-inheritance.js +2 -2
  947. package/schematics/ng-update/migrations/misc-checks/misc-class-inheritance.mjs +2 -2
  948. package/schematics/ng-update/migrations/misc-checks/misc-imports.js +2 -2
  949. package/schematics/ng-update/migrations/misc-checks/misc-imports.mjs +2 -2
  950. package/schematics/ng-update/migrations/misc-checks/misc-template.js +4 -4
  951. package/schematics/ng-update/migrations/misc-checks/misc-template.mjs +4 -4
  952. package/schematics/ng-update/migrations/misc-ripples-v7/ripple-speed-factor-migration.js +7 -7
  953. package/schematics/ng-update/migrations/misc-ripples-v7/ripple-speed-factor-migration.mjs +7 -7
  954. package/schematics/ng-update/migrations/package-imports-v8/secondary-entry-points-migration.js +2 -3
  955. package/schematics/ng-update/migrations/package-imports-v8/secondary-entry-points-migration.mjs +2 -3
  956. package/schematics/ng-update/migrations/theming-api-v12/migration.d.ts +6 -6
  957. package/schematics/ng-update/migrations/theming-api-v12/migration.js +12 -12
  958. package/schematics/ng-update/migrations/theming-api-v12/migration.mjs +12 -12
  959. package/schematics/ng-update/migrations/theming-api-v12/theming-api-migration.js +3 -3
  960. package/schematics/ng-update/migrations/theming-api-v12/theming-api-migration.mjs +3 -3
  961. package/schematics/ng-update/typescript/module-specifiers.js +3 -3
  962. package/schematics/ng-update/typescript/module-specifiers.mjs +3 -3
  963. package/schematics/package.json +3 -0
  964. package/schematics/paths.js +3 -3
  965. package/schematics/paths.mjs +3 -3
  966. package/select/package.json +5 -5
  967. package/select/select-module.d.ts +10 -7
  968. package/select/select.d.ts +8 -1
  969. package/select/testing/package.json +5 -5
  970. package/sidenav/drawer.d.ts +7 -0
  971. package/sidenav/index.d.ts +0 -1
  972. package/sidenav/package.json +5 -5
  973. package/sidenav/sidenav-module.d.ts +10 -0
  974. package/sidenav/sidenav.d.ts +7 -0
  975. package/sidenav/testing/package.json +5 -5
  976. package/slide-toggle/package.json +5 -5
  977. package/slide-toggle/slide-toggle-module.d.ts +11 -7
  978. package/slide-toggle/slide-toggle-required-validator.d.ts +3 -0
  979. package/slide-toggle/slide-toggle.d.ts +4 -1
  980. package/slide-toggle/testing/package.json +5 -5
  981. package/slider/package.json +5 -5
  982. package/slider/slider-module.d.ts +7 -7
  983. package/slider/slider.d.ts +4 -1
  984. package/slider/testing/package.json +5 -5
  985. package/snack-bar/package.json +5 -5
  986. package/snack-bar/simple-snack-bar.d.ts +3 -7
  987. package/snack-bar/snack-bar-container.d.ts +3 -0
  988. package/snack-bar/snack-bar-module.d.ts +11 -7
  989. package/snack-bar/snack-bar.d.ts +3 -0
  990. package/snack-bar/testing/package.json +5 -5
  991. package/snack-bar/testing/snack-bar-harness.d.ts +8 -9
  992. package/sort/package.json +5 -5
  993. package/sort/sort-header-intl.d.ts +3 -0
  994. package/sort/sort-header.d.ts +4 -1
  995. package/sort/sort-module.d.ts +8 -7
  996. package/sort/sort.d.ts +4 -1
  997. package/sort/testing/package.json +5 -5
  998. package/stepper/package.json +5 -5
  999. package/stepper/step-content.d.ts +3 -0
  1000. package/stepper/step-header.d.ts +6 -1
  1001. package/stepper/step-label.d.ts +3 -7
  1002. package/stepper/stepper-button.d.ts +5 -0
  1003. package/stepper/stepper-icon.d.ts +3 -0
  1004. package/stepper/stepper-intl.d.ts +7 -0
  1005. package/stepper/stepper-module.d.ts +16 -7
  1006. package/stepper/stepper.d.ts +11 -0
  1007. package/stepper/testing/package.json +5 -5
  1008. package/table/cell.d.ts +15 -7
  1009. package/table/package.json +5 -5
  1010. package/table/row.d.ts +15 -0
  1011. package/table/table-module.d.ts +10 -7
  1012. package/table/table.d.ts +5 -0
  1013. package/table/testing/package.json +5 -5
  1014. package/table/text-column.d.ts +3 -0
  1015. package/tabs/index.d.ts +0 -4
  1016. package/tabs/ink-bar.d.ts +3 -0
  1017. package/tabs/package.json +5 -5
  1018. package/tabs/paginated-tab-header.d.ts +3 -0
  1019. package/tabs/public-api.d.ts +1 -1
  1020. package/tabs/tab-body.d.ts +7 -0
  1021. package/tabs/tab-content.d.ts +3 -0
  1022. package/tabs/tab-group.d.ts +6 -1
  1023. package/tabs/tab-header.d.ts +5 -0
  1024. package/tabs/tab-label-wrapper.d.ts +4 -1
  1025. package/tabs/tab-label.d.ts +11 -1
  1026. package/tabs/tab-nav-bar/tab-nav-bar.d.ts +10 -1
  1027. package/tabs/tab.d.ts +5 -2
  1028. package/tabs/tabs-module.d.ts +18 -7
  1029. package/tabs/testing/package.json +5 -5
  1030. package/toolbar/package.json +5 -5
  1031. package/toolbar/testing/package.json +5 -5
  1032. package/toolbar/toolbar-module.d.ts +6 -7
  1033. package/toolbar/toolbar.d.ts +6 -1
  1034. package/tooltip/package.json +5 -5
  1035. package/tooltip/testing/package.json +5 -5
  1036. package/tooltip/tooltip-module.d.ts +10 -7
  1037. package/tooltip/tooltip.d.ts +11 -2
  1038. package/tree/node.d.ts +8 -1
  1039. package/tree/outlet.d.ts +3 -0
  1040. package/tree/package.json +5 -5
  1041. package/tree/padding.d.ts +3 -0
  1042. package/tree/testing/package.json +5 -5
  1043. package/tree/toggle.d.ts +3 -7
  1044. package/tree/tree-module.d.ts +11 -7
  1045. package/tree/tree.d.ts +3 -0
  1046. package/autocomplete/index.metadata.json +0 -1
  1047. package/badge/index.metadata.json +0 -1
  1048. package/bottom-sheet/index.metadata.json +0 -1
  1049. package/bundles/material-autocomplete-testing.umd.js +0 -564
  1050. package/bundles/material-autocomplete-testing.umd.js.map +0 -1
  1051. package/bundles/material-autocomplete.umd.js +0 -1266
  1052. package/bundles/material-autocomplete.umd.js.map +0 -1
  1053. package/bundles/material-badge-testing.umd.js +0 -474
  1054. package/bundles/material-badge-testing.umd.js.map +0 -1
  1055. package/bundles/material-badge.umd.js +0 -606
  1056. package/bundles/material-badge.umd.js.map +0 -1
  1057. package/bundles/material-bottom-sheet-testing.umd.js +0 -396
  1058. package/bundles/material-bottom-sheet-testing.umd.js.map +0 -1
  1059. package/bundles/material-bottom-sheet.umd.js +0 -955
  1060. package/bundles/material-bottom-sheet.umd.js.map +0 -1
  1061. package/bundles/material-button-testing.umd.js +0 -444
  1062. package/bundles/material-button-testing.umd.js.map +0 -1
  1063. package/bundles/material-button-toggle-testing.umd.js +0 -628
  1064. package/bundles/material-button-toggle-testing.umd.js.map +0 -1
  1065. package/bundles/material-button-toggle.umd.js +0 -850
  1066. package/bundles/material-button-toggle.umd.js.map +0 -1
  1067. package/bundles/material-button.umd.js +0 -545
  1068. package/bundles/material-button.umd.js.map +0 -1
  1069. package/bundles/material-card-testing.umd.js +0 -408
  1070. package/bundles/material-card-testing.umd.js.map +0 -1
  1071. package/bundles/material-card.umd.js +0 -337
  1072. package/bundles/material-card.umd.js.map +0 -1
  1073. package/bundles/material-checkbox-testing.umd.js +0 -615
  1074. package/bundles/material-checkbox-testing.umd.js.map +0 -1
  1075. package/bundles/material-checkbox.umd.js +0 -829
  1076. package/bundles/material-checkbox.umd.js.map +0 -1
  1077. package/bundles/material-chips-testing.umd.js +0 -1023
  1078. package/bundles/material-chips-testing.umd.js.map +0 -1
  1079. package/bundles/material-chips.umd.js +0 -1753
  1080. package/bundles/material-chips.umd.js.map +0 -1
  1081. package/bundles/material-core-testing.umd.js +0 -518
  1082. package/bundles/material-core-testing.umd.js.map +0 -1
  1083. package/bundles/material-core.umd.js +0 -2186
  1084. package/bundles/material-core.umd.js.map +0 -1
  1085. package/bundles/material-datepicker-testing.umd.js +0 -1366
  1086. package/bundles/material-datepicker-testing.umd.js.map +0 -1
  1087. package/bundles/material-datepicker.umd.js +0 -4344
  1088. package/bundles/material-datepicker.umd.js.map +0 -1
  1089. package/bundles/material-dialog-testing.umd.js +0 -500
  1090. package/bundles/material-dialog-testing.umd.js.map +0 -1
  1091. package/bundles/material-dialog.umd.js +0 -1487
  1092. package/bundles/material-dialog.umd.js.map +0 -1
  1093. package/bundles/material-divider-testing.umd.js +0 -380
  1094. package/bundles/material-divider-testing.umd.js.map +0 -1
  1095. package/bundles/material-divider.umd.js +0 -95
  1096. package/bundles/material-divider.umd.js.map +0 -1
  1097. package/bundles/material-expansion-testing.umd.js +0 -627
  1098. package/bundles/material-expansion-testing.umd.js.map +0 -1
  1099. package/bundles/material-expansion.umd.js +0 -949
  1100. package/bundles/material-expansion.umd.js.map +0 -1
  1101. package/bundles/material-form-field-testing-control.umd.js +0 -350
  1102. package/bundles/material-form-field-testing-control.umd.js.map +0 -1
  1103. package/bundles/material-form-field-testing.umd.js +0 -708
  1104. package/bundles/material-form-field-testing.umd.js.map +0 -1
  1105. package/bundles/material-form-field.umd.js +0 -1131
  1106. package/bundles/material-form-field.umd.js.map +0 -1
  1107. package/bundles/material-grid-list-testing.umd.js +0 -566
  1108. package/bundles/material-grid-list-testing.umd.js.map +0 -1
  1109. package/bundles/material-grid-list.umd.js +0 -1070
  1110. package/bundles/material-grid-list.umd.js.map +0 -1
  1111. package/bundles/material-icon-testing.umd.js +0 -527
  1112. package/bundles/material-icon-testing.umd.js.map +0 -1
  1113. package/bundles/material-icon.umd.js +0 -1391
  1114. package/bundles/material-icon.umd.js.map +0 -1
  1115. package/bundles/material-input-testing.umd.js +0 -806
  1116. package/bundles/material-input-testing.umd.js.map +0 -1
  1117. package/bundles/material-input.umd.js +0 -875
  1118. package/bundles/material-input.umd.js.map +0 -1
  1119. package/bundles/material-list-testing.umd.js +0 -1092
  1120. package/bundles/material-list-testing.umd.js.map +0 -1
  1121. package/bundles/material-list.umd.js +0 -1284
  1122. package/bundles/material-list.umd.js.map +0 -1
  1123. package/bundles/material-menu-testing.umd.js +0 -722
  1124. package/bundles/material-menu-testing.umd.js.map +0 -1
  1125. package/bundles/material-menu.umd.js +0 -1661
  1126. package/bundles/material-menu.umd.js.map +0 -1
  1127. package/bundles/material-paginator-testing.umd.js +0 -504
  1128. package/bundles/material-paginator-testing.umd.js.map +0 -1
  1129. package/bundles/material-paginator.umd.js +0 -746
  1130. package/bundles/material-paginator.umd.js.map +0 -1
  1131. package/bundles/material-progress-bar-testing.umd.js +0 -395
  1132. package/bundles/material-progress-bar-testing.umd.js.map +0 -1
  1133. package/bundles/material-progress-bar.umd.js +0 -546
  1134. package/bundles/material-progress-bar.umd.js.map +0 -1
  1135. package/bundles/material-progress-spinner-testing.umd.js +0 -399
  1136. package/bundles/material-progress-spinner-testing.umd.js.map +0 -1
  1137. package/bundles/material-progress-spinner.umd.js +0 -631
  1138. package/bundles/material-progress-spinner.umd.js.map +0 -1
  1139. package/bundles/material-radio-testing.umd.js +0 -812
  1140. package/bundles/material-radio-testing.umd.js.map +0 -1
  1141. package/bundles/material-radio.umd.js +0 -971
  1142. package/bundles/material-radio.umd.js.map +0 -1
  1143. package/bundles/material-select-testing.umd.js +0 -620
  1144. package/bundles/material-select-testing.umd.js.map +0 -1
  1145. package/bundles/material-select.umd.js +0 -1665
  1146. package/bundles/material-select.umd.js.map +0 -1
  1147. package/bundles/material-sidenav-testing.umd.js +0 -603
  1148. package/bundles/material-sidenav-testing.umd.js.map +0 -1
  1149. package/bundles/material-sidenav.umd.js +0 -1368
  1150. package/bundles/material-sidenav.umd.js.map +0 -1
  1151. package/bundles/material-slide-toggle-testing.umd.js +0 -582
  1152. package/bundles/material-slide-toggle-testing.umd.js.map +0 -1
  1153. package/bundles/material-slide-toggle.umd.js +0 -670
  1154. package/bundles/material-slide-toggle.umd.js.map +0 -1
  1155. package/bundles/material-slider-testing.umd.js +0 -587
  1156. package/bundles/material-slider-testing.umd.js.map +0 -1
  1157. package/bundles/material-slider.umd.js +0 -1186
  1158. package/bundles/material-slider.umd.js.map +0 -1
  1159. package/bundles/material-snack-bar-testing.umd.js +0 -554
  1160. package/bundles/material-snack-bar-testing.umd.js.map +0 -1
  1161. package/bundles/material-snack-bar.umd.js +0 -1076
  1162. package/bundles/material-snack-bar.umd.js.map +0 -1
  1163. package/bundles/material-sort-testing.umd.js +0 -493
  1164. package/bundles/material-sort-testing.umd.js.map +0 -1
  1165. package/bundles/material-sort.umd.js +0 -943
  1166. package/bundles/material-sort.umd.js.map +0 -1
  1167. package/bundles/material-stepper-testing.umd.js +0 -703
  1168. package/bundles/material-stepper-testing.umd.js.map +0 -1
  1169. package/bundles/material-stepper.umd.js +0 -893
  1170. package/bundles/material-stepper.umd.js.map +0 -1
  1171. package/bundles/material-table-testing.umd.js +0 -700
  1172. package/bundles/material-table-testing.umd.js.map +0 -1
  1173. package/bundles/material-table.umd.js +0 -1121
  1174. package/bundles/material-table.umd.js.map +0 -1
  1175. package/bundles/material-tabs-testing.umd.js +0 -744
  1176. package/bundles/material-tabs-testing.umd.js.map +0 -1
  1177. package/bundles/material-tabs.umd.js +0 -2169
  1178. package/bundles/material-tabs.umd.js.map +0 -1
  1179. package/bundles/material-toolbar-testing.umd.js +0 -406
  1180. package/bundles/material-toolbar-testing.umd.js.map +0 -1
  1181. package/bundles/material-toolbar.umd.js +0 -454
  1182. package/bundles/material-toolbar.umd.js.map +0 -1
  1183. package/bundles/material-tooltip-testing.umd.js +0 -460
  1184. package/bundles/material-tooltip-testing.umd.js.map +0 -1
  1185. package/bundles/material-tooltip.umd.js +0 -1170
  1186. package/bundles/material-tooltip.umd.js.map +0 -1
  1187. package/bundles/material-tree-testing.umd.js +0 -636
  1188. package/bundles/material-tree-testing.umd.js.map +0 -1
  1189. package/bundles/material-tree.umd.js +0 -837
  1190. package/bundles/material-tree.umd.js.map +0 -1
  1191. package/bundles/material.umd.js +0 -26
  1192. package/bundles/material.umd.js.map +0 -1
  1193. package/button/index.metadata.json +0 -1
  1194. package/button-toggle/index.metadata.json +0 -1
  1195. package/card/index.metadata.json +0 -1
  1196. package/checkbox/index.metadata.json +0 -1
  1197. package/chips/index.metadata.json +0 -1
  1198. package/core/index.metadata.json +0 -1
  1199. package/datepicker/index.metadata.json +0 -1
  1200. package/dialog/index.metadata.json +0 -1
  1201. package/divider/index.metadata.json +0 -1
  1202. package/esm2015/autocomplete/autocomplete-module.js +0 -38
  1203. package/esm2015/autocomplete/autocomplete-origin.js +0 -35
  1204. package/esm2015/autocomplete/autocomplete-trigger.js +0 -627
  1205. package/esm2015/autocomplete/autocomplete.externs.js +0 -6
  1206. package/esm2015/autocomplete/autocomplete.js +0 -202
  1207. package/esm2015/autocomplete/testing/autocomplete-harness.js +0 -120
  1208. package/esm2015/autocomplete/testing/testing.externs.js +0 -0
  1209. package/esm2015/badge/badge-module.js +0 -24
  1210. package/esm2015/badge/badge.externs.js +0 -6
  1211. package/esm2015/badge/badge.js +0 -230
  1212. package/esm2015/badge/testing/badge-harness.js +0 -85
  1213. package/esm2015/badge/testing/testing.externs.js +0 -0
  1214. package/esm2015/bottom-sheet/bottom-sheet-container.js +0 -253
  1215. package/esm2015/bottom-sheet/bottom-sheet-module.js +0 -27
  1216. package/esm2015/bottom-sheet/bottom-sheet-ref.js +0 -91
  1217. package/esm2015/bottom-sheet/bottom-sheet.externs.js +0 -6
  1218. package/esm2015/bottom-sheet/bottom-sheet.js +0 -167
  1219. package/esm2015/bottom-sheet/testing/bottom-sheet-harness.js +0 -40
  1220. package/esm2015/bottom-sheet/testing/testing.externs.js +0 -0
  1221. package/esm2015/button/button-module.js +0 -30
  1222. package/esm2015/button/button.externs.js +0 -6
  1223. package/esm2015/button/button.js +0 -163
  1224. package/esm2015/button/testing/button-harness.js +0 -64
  1225. package/esm2015/button/testing/testing.externs.js +0 -0
  1226. package/esm2015/button-toggle/button-toggle-module.js +0 -20
  1227. package/esm2015/button-toggle/button-toggle.externs.js +0 -6
  1228. package/esm2015/button-toggle/button-toggle.js +0 -441
  1229. package/esm2015/button-toggle/testing/button-toggle-group-harness.js +0 -54
  1230. package/esm2015/button-toggle/testing/button-toggle-harness.js +0 -125
  1231. package/esm2015/button-toggle/testing/testing.externs.js +0 -0
  1232. package/esm2015/card/card-module.js +0 -40
  1233. package/esm2015/card/card.externs.js +0 -6
  1234. package/esm2015/card/card.js +0 -223
  1235. package/esm2015/card/testing/card-harness.js +0 -52
  1236. package/esm2015/card/testing/testing.externs.js +0 -0
  1237. package/esm2015/checkbox/checkbox-module.js +0 -34
  1238. package/esm2015/checkbox/checkbox-required-validator.js +0 -29
  1239. package/esm2015/checkbox/checkbox.externs.js +0 -6
  1240. package/esm2015/checkbox/checkbox.js +0 -385
  1241. package/esm2015/checkbox/testing/checkbox-harness.js +0 -156
  1242. package/esm2015/checkbox/testing/testing.externs.js +0 -0
  1243. package/esm2015/chips/chip-input.js +0 -180
  1244. package/esm2015/chips/chip-list.js +0 -663
  1245. package/esm2015/chips/chip.js +0 -394
  1246. package/esm2015/chips/chips-module.js +0 -43
  1247. package/esm2015/chips/chips.externs.js +0 -6
  1248. package/esm2015/chips/testing/chip-harness.js +0 -110
  1249. package/esm2015/chips/testing/chip-input-harness.js +0 -101
  1250. package/esm2015/chips/testing/chip-list-harness.js +0 -99
  1251. package/esm2015/chips/testing/chip-listbox-harness.js +0 -49
  1252. package/esm2015/chips/testing/chip-option-harness.js +0 -54
  1253. package/esm2015/chips/testing/chip-remove-harness.js +0 -29
  1254. package/esm2015/chips/testing/testing.externs.js +0 -0
  1255. package/esm2015/core/common-behaviors/color.js +0 -31
  1256. package/esm2015/core/common-behaviors/common-module.js +0 -122
  1257. package/esm2015/core/common-behaviors/disable-ripple.js +0 -20
  1258. package/esm2015/core/common-behaviors/disabled.js +0 -19
  1259. package/esm2015/core/common-behaviors/error-state.js +0 -36
  1260. package/esm2015/core/common-behaviors/index.js +0 -15
  1261. package/esm2015/core/common-behaviors/initialized.js +0 -58
  1262. package/esm2015/core/common-behaviors/tabindex.js +0 -23
  1263. package/esm2015/core/core.externs.js +0 -6
  1264. package/esm2015/core/datetime/index.js +0 -38
  1265. package/esm2015/core/datetime/native-date-adapter.js +0 -213
  1266. package/esm2015/core/error/error-options.js +0 -29
  1267. package/esm2015/core/index.js +0 -6
  1268. package/esm2015/core/line/line.js +0 -57
  1269. package/esm2015/core/option/index.js +0 -27
  1270. package/esm2015/core/option/optgroup.js +0 -84
  1271. package/esm2015/core/option/option.js +0 -274
  1272. package/esm2015/core/ripple/index.js +0 -24
  1273. package/esm2015/core/ripple/ripple-renderer.js +0 -261
  1274. package/esm2015/core/ripple/ripple.js +0 -128
  1275. package/esm2015/core/selection/index.js +0 -21
  1276. package/esm2015/core/selection/pseudo-checkbox/pseudo-checkbox.js +0 -55
  1277. package/esm2015/core/testing/optgroup-harness.js +0 -51
  1278. package/esm2015/core/testing/option-harness.js +0 -67
  1279. package/esm2015/core/testing/testing.externs.js +0 -0
  1280. package/esm2015/core/version.js +0 -11
  1281. package/esm2015/datepicker/calendar-body.js +0 -291
  1282. package/esm2015/datepicker/calendar.js +0 -330
  1283. package/esm2015/datepicker/date-range-input-parts.js +0 -315
  1284. package/esm2015/datepicker/date-range-input.js +0 -316
  1285. package/esm2015/datepicker/date-range-picker.js +0 -40
  1286. package/esm2015/datepicker/date-range-selection-strategy.js +0 -58
  1287. package/esm2015/datepicker/date-selection-model.js +0 -189
  1288. package/esm2015/datepicker/datepicker-actions.js +0 -89
  1289. package/esm2015/datepicker/datepicker-base.js +0 -542
  1290. package/esm2015/datepicker/datepicker-input-base.js +0 -290
  1291. package/esm2015/datepicker/datepicker-input.js +0 -164
  1292. package/esm2015/datepicker/datepicker-intl.js +0 -51
  1293. package/esm2015/datepicker/datepicker-module.js +0 -93
  1294. package/esm2015/datepicker/datepicker-toggle.js +0 -104
  1295. package/esm2015/datepicker/datepicker.externs.js +0 -6
  1296. package/esm2015/datepicker/datepicker.js +0 -30
  1297. package/esm2015/datepicker/index.js +0 -9
  1298. package/esm2015/datepicker/month-view.js +0 -344
  1299. package/esm2015/datepicker/multi-year-view.js +0 -280
  1300. package/esm2015/datepicker/testing/calendar-cell-harness.js +0 -181
  1301. package/esm2015/datepicker/testing/calendar-harness.js +0 -91
  1302. package/esm2015/datepicker/testing/date-range-input-harness.js +0 -116
  1303. package/esm2015/datepicker/testing/datepicker-input-harness-base.js +0 -102
  1304. package/esm2015/datepicker/testing/datepicker-input-harness.js +0 -69
  1305. package/esm2015/datepicker/testing/datepicker-toggle-harness.js +0 -48
  1306. package/esm2015/datepicker/testing/datepicker-trigger-harness-base.js +0 -77
  1307. package/esm2015/datepicker/testing/testing.externs.js +0 -0
  1308. package/esm2015/datepicker/year-view.js +0 -268
  1309. package/esm2015/dialog/dialog-container.js +0 -295
  1310. package/esm2015/dialog/dialog-content-directives.js +0 -159
  1311. package/esm2015/dialog/dialog-module.js +0 -46
  1312. package/esm2015/dialog/dialog-ref.js +0 -196
  1313. package/esm2015/dialog/dialog.externs.js +0 -6
  1314. package/esm2015/dialog/dialog.js +0 -353
  1315. package/esm2015/dialog/testing/dialog-harness.js +0 -103
  1316. package/esm2015/dialog/testing/testing.externs.js +0 -0
  1317. package/esm2015/divider/divider-module.js +0 -20
  1318. package/esm2015/divider/divider.externs.js +0 -6
  1319. package/esm2015/divider/divider.js +0 -43
  1320. package/esm2015/divider/testing/divider-harness.js +0 -27
  1321. package/esm2015/divider/testing/testing.externs.js +0 -0
  1322. package/esm2015/expansion/accordion.js +0 -83
  1323. package/esm2015/expansion/expansion-module.js +0 -42
  1324. package/esm2015/expansion/expansion-panel-content.js +0 -26
  1325. package/esm2015/expansion/expansion-panel-header.js +0 -214
  1326. package/esm2015/expansion/expansion-panel.js +0 -186
  1327. package/esm2015/expansion/expansion.externs.js +0 -6
  1328. package/esm2015/expansion/testing/accordion-harness.js +0 -36
  1329. package/esm2015/expansion/testing/expansion-harness.js +0 -149
  1330. package/esm2015/expansion/testing/testing.externs.js +0 -0
  1331. package/esm2015/form-field/error.js +0 -45
  1332. package/esm2015/form-field/form-field-control.js +0 -15
  1333. package/esm2015/form-field/form-field-module.js +0 -49
  1334. package/esm2015/form-field/form-field.externs.js +0 -6
  1335. package/esm2015/form-field/form-field.js +0 -482
  1336. package/esm2015/form-field/hint.js +0 -45
  1337. package/esm2015/form-field/label.js +0 -17
  1338. package/esm2015/form-field/placeholder.js +0 -22
  1339. package/esm2015/form-field/prefix.js +0 -24
  1340. package/esm2015/form-field/suffix.js +0 -24
  1341. package/esm2015/form-field/testing/control/control.externs.js +0 -0
  1342. package/esm2015/form-field/testing/form-field-harness.js +0 -218
  1343. package/esm2015/form-field/testing/testing.externs.js +0 -0
  1344. package/esm2015/grid-list/grid-list-module.js +0 -37
  1345. package/esm2015/grid-list/grid-list.externs.js +0 -6
  1346. package/esm2015/grid-list/grid-list.js +0 -135
  1347. package/esm2015/grid-list/grid-tile.js +0 -116
  1348. package/esm2015/grid-list/index.js +0 -6
  1349. package/esm2015/grid-list/testing/grid-list-harness.js +0 -79
  1350. package/esm2015/grid-list/testing/grid-tile-harness.js +0 -80
  1351. package/esm2015/grid-list/testing/testing.externs.js +0 -0
  1352. package/esm2015/icon/icon-module.js +0 -20
  1353. package/esm2015/icon/icon-registry.js +0 -581
  1354. package/esm2015/icon/icon.externs.js +0 -6
  1355. package/esm2015/icon/icon.js +0 -362
  1356. package/esm2015/icon/testing/fake-icon-registry.js +0 -85
  1357. package/esm2015/icon/testing/icon-harness.js +0 -63
  1358. package/esm2015/icon/testing/testing.externs.js +0 -6
  1359. package/esm2015/icon/trusted-types.js +0 -44
  1360. package/esm2015/input/autosize.js +0 -44
  1361. package/esm2015/input/input-module.js +0 -35
  1362. package/esm2015/input/input.externs.js +0 -6
  1363. package/esm2015/input/input.js +0 -395
  1364. package/esm2015/input/public-api.js +0 -13
  1365. package/esm2015/input/testing/input-harness.js +0 -138
  1366. package/esm2015/input/testing/native-option-harness.js +0 -51
  1367. package/esm2015/input/testing/native-select-harness.js +0 -100
  1368. package/esm2015/input/testing/testing.externs.js +0 -0
  1369. package/esm2015/list/list-module.js +0 -45
  1370. package/esm2015/list/list.externs.js +0 -6
  1371. package/esm2015/list/list.js +0 -218
  1372. package/esm2015/list/selection-list.js +0 -608
  1373. package/esm2015/list/testing/action-list-harness.js +0 -68
  1374. package/esm2015/list/testing/list-harness-base.js +0 -97
  1375. package/esm2015/list/testing/list-item-harness-base.js +0 -85
  1376. package/esm2015/list/testing/nav-list-harness.js +0 -75
  1377. package/esm2015/list/testing/selection-list-harness.js +0 -152
  1378. package/esm2015/list/testing/testing.externs.js +0 -0
  1379. package/esm2015/material.externs.js +0 -0
  1380. package/esm2015/menu/index.js +0 -7
  1381. package/esm2015/menu/menu-content.js +0 -92
  1382. package/esm2015/menu/menu-item.js +0 -164
  1383. package/esm2015/menu/menu-module.js +0 -49
  1384. package/esm2015/menu/menu-trigger.js +0 -493
  1385. package/esm2015/menu/menu.externs.js +0 -6
  1386. package/esm2015/menu/menu.js +0 -381
  1387. package/esm2015/menu/public-api.js +0 -16
  1388. package/esm2015/menu/testing/menu-harness.js +0 -223
  1389. package/esm2015/menu/testing/testing.externs.js +0 -0
  1390. package/esm2015/paginator/paginator-intl.js +0 -62
  1391. package/esm2015/paginator/paginator-module.js +0 -32
  1392. package/esm2015/paginator/paginator.externs.js +0 -6
  1393. package/esm2015/paginator/paginator.js +0 -263
  1394. package/esm2015/paginator/testing/paginator-harness.js +0 -106
  1395. package/esm2015/paginator/testing/testing.externs.js +0 -0
  1396. package/esm2015/progress-bar/progress-bar-module.js +0 -21
  1397. package/esm2015/progress-bar/progress-bar.externs.js +0 -6
  1398. package/esm2015/progress-bar/progress-bar.js +0 -179
  1399. package/esm2015/progress-bar/testing/progress-bar-harness.js +0 -39
  1400. package/esm2015/progress-bar/testing/testing.externs.js +0 -0
  1401. package/esm2015/progress-spinner/progress-spinner-module.js +0 -28
  1402. package/esm2015/progress-spinner/progress-spinner.externs.js +0 -6
  1403. package/esm2015/progress-spinner/progress-spinner.js +0 -274
  1404. package/esm2015/progress-spinner/testing/progress-spinner-harness.js +0 -40
  1405. package/esm2015/progress-spinner/testing/testing.externs.js +0 -0
  1406. package/esm2015/radio/radio-module.js +0 -20
  1407. package/esm2015/radio/radio.externs.js +0 -6
  1408. package/esm2015/radio/radio.js +0 -546
  1409. package/esm2015/radio/testing/radio-harness.js +0 -272
  1410. package/esm2015/radio/testing/testing.externs.js +0 -0
  1411. package/esm2015/select/select-module.js +0 -37
  1412. package/esm2015/select/select.externs.js +0 -6
  1413. package/esm2015/select/select.js +0 -1138
  1414. package/esm2015/select/testing/select-harness.js +0 -157
  1415. package/esm2015/select/testing/testing.externs.js +0 -0
  1416. package/esm2015/sidenav/drawer.js +0 -766
  1417. package/esm2015/sidenav/index.js +0 -6
  1418. package/esm2015/sidenav/sidenav-module.js +0 -45
  1419. package/esm2015/sidenav/sidenav.externs.js +0 -6
  1420. package/esm2015/sidenav/sidenav.js +0 -118
  1421. package/esm2015/sidenav/testing/drawer-container-harness.js +0 -41
  1422. package/esm2015/sidenav/testing/drawer-harness.js +0 -57
  1423. package/esm2015/sidenav/testing/sidenav-container-harness.js +0 -41
  1424. package/esm2015/sidenav/testing/sidenav-harness.js +0 -32
  1425. package/esm2015/sidenav/testing/testing.externs.js +0 -0
  1426. package/esm2015/slide-toggle/slide-toggle-module.js +0 -40
  1427. package/esm2015/slide-toggle/slide-toggle-required-validator.js +0 -32
  1428. package/esm2015/slide-toggle/slide-toggle.externs.js +0 -6
  1429. package/esm2015/slide-toggle/slide-toggle.js +0 -236
  1430. package/esm2015/slide-toggle/testing/slide-toggle-harness.js +0 -139
  1431. package/esm2015/slide-toggle/testing/testing.externs.js +0 -0
  1432. package/esm2015/slider/slider-module.js +0 -21
  1433. package/esm2015/slider/slider.externs.js +0 -6
  1434. package/esm2015/slider/slider.js +0 -788
  1435. package/esm2015/slider/testing/slider-harness.js +0 -141
  1436. package/esm2015/slider/testing/testing.externs.js +0 -0
  1437. package/esm2015/snack-bar/simple-snack-bar.js +0 -45
  1438. package/esm2015/snack-bar/snack-bar-container.js +0 -224
  1439. package/esm2015/snack-bar/snack-bar-module.js +0 -32
  1440. package/esm2015/snack-bar/snack-bar-ref.js +0 -90
  1441. package/esm2015/snack-bar/snack-bar.externs.js +0 -6
  1442. package/esm2015/snack-bar/snack-bar.js +0 -265
  1443. package/esm2015/snack-bar/testing/snack-bar-harness.js +0 -142
  1444. package/esm2015/snack-bar/testing/testing.externs.js +0 -0
  1445. package/esm2015/sort/sort-header-intl.js +0 -41
  1446. package/esm2015/sort/sort-header.js +0 -268
  1447. package/esm2015/sort/sort-module.js +0 -24
  1448. package/esm2015/sort/sort.externs.js +0 -6
  1449. package/esm2015/sort/sort.js +0 -140
  1450. package/esm2015/sort/testing/sort-harness.js +0 -41
  1451. package/esm2015/sort/testing/sort-header-harness.js +0 -67
  1452. package/esm2015/sort/testing/testing.externs.js +0 -0
  1453. package/esm2015/stepper/step-content.js +0 -25
  1454. package/esm2015/stepper/step-header.js +0 -108
  1455. package/esm2015/stepper/step-label.js +0 -17
  1456. package/esm2015/stepper/stepper-button.js +0 -36
  1457. package/esm2015/stepper/stepper-icon.js +0 -28
  1458. package/esm2015/stepper/stepper-intl.js +0 -37
  1459. package/esm2015/stepper/stepper-module.js +0 -61
  1460. package/esm2015/stepper/stepper.externs.js +0 -6
  1461. package/esm2015/stepper/stepper.js +0 -187
  1462. package/esm2015/stepper/testing/step-harness.js +0 -111
  1463. package/esm2015/stepper/testing/stepper-button-harnesses.js +0 -55
  1464. package/esm2015/stepper/testing/stepper-harness.js +0 -57
  1465. package/esm2015/stepper/testing/testing.externs.js +0 -0
  1466. package/esm2015/table/cell.js +0 -114
  1467. package/esm2015/table/row.js +0 -116
  1468. package/esm2015/table/table-data-source.js +0 -312
  1469. package/esm2015/table/table-module.js +0 -50
  1470. package/esm2015/table/table.externs.js +0 -6
  1471. package/esm2015/table/table.js +0 -63
  1472. package/esm2015/table/testing/cell-harness.js +0 -77
  1473. package/esm2015/table/testing/row-harness.js +0 -91
  1474. package/esm2015/table/testing/table-harness.js +0 -99
  1475. package/esm2015/table/testing/testing.externs.js +0 -0
  1476. package/esm2015/table/text-column.js +0 -44
  1477. package/esm2015/tabs/index.js +0 -9
  1478. package/esm2015/tabs/ink-bar.js +0 -87
  1479. package/esm2015/tabs/paginated-tab-header.js +0 -477
  1480. package/esm2015/tabs/public-api.js +0 -20
  1481. package/esm2015/tabs/tab-body.js +0 -212
  1482. package/esm2015/tabs/tab-content.js +0 -31
  1483. package/esm2015/tabs/tab-group.js +0 -357
  1484. package/esm2015/tabs/tab-header.js +0 -94
  1485. package/esm2015/tabs/tab-label-wrapper.js +0 -47
  1486. package/esm2015/tabs/tab-label.js +0 -25
  1487. package/esm2015/tabs/tab-nav-bar/tab-nav-bar.js +0 -241
  1488. package/esm2015/tabs/tab.js +0 -106
  1489. package/esm2015/tabs/tabs-module.js +0 -60
  1490. package/esm2015/tabs/tabs.externs.js +0 -6
  1491. package/esm2015/tabs/testing/tab-group-harness.js +0 -65
  1492. package/esm2015/tabs/testing/tab-harness.js +0 -85
  1493. package/esm2015/tabs/testing/tab-link-harness.js +0 -51
  1494. package/esm2015/tabs/testing/tab-nav-bar-harness.js +0 -61
  1495. package/esm2015/tabs/testing/testing.externs.js +0 -0
  1496. package/esm2015/toolbar/testing/testing.externs.js +0 -0
  1497. package/esm2015/toolbar/testing/toolbar-harness.js +0 -47
  1498. package/esm2015/toolbar/toolbar-module.js +0 -20
  1499. package/esm2015/toolbar/toolbar.externs.js +0 -6
  1500. package/esm2015/toolbar/toolbar.js +0 -91
  1501. package/esm2015/tooltip/testing/testing.externs.js +0 -0
  1502. package/esm2015/tooltip/testing/tooltip-harness.js +0 -68
  1503. package/esm2015/tooltip/tooltip-module.js +0 -31
  1504. package/esm2015/tooltip/tooltip.externs.js +0 -6
  1505. package/esm2015/tooltip/tooltip.js +0 -737
  1506. package/esm2015/tree/node.js +0 -131
  1507. package/esm2015/tree/outlet.js +0 -33
  1508. package/esm2015/tree/padding.js +0 -31
  1509. package/esm2015/tree/testing/node-harness.js +0 -84
  1510. package/esm2015/tree/testing/testing.externs.js +0 -0
  1511. package/esm2015/tree/testing/tree-harness.js +0 -129
  1512. package/esm2015/tree/toggle.js +0 -32
  1513. package/esm2015/tree/tree-module.js +0 -34
  1514. package/esm2015/tree/tree.externs.js +0 -6
  1515. package/esm2015/tree/tree.js +0 -43
  1516. package/expansion/index.metadata.json +0 -1
  1517. package/fesm2015/autocomplete/testing.js +0 -147
  1518. package/fesm2015/autocomplete/testing.js.map +0 -1
  1519. package/fesm2015/autocomplete.js +0 -901
  1520. package/fesm2015/autocomplete.js.map +0 -1
  1521. package/fesm2015/badge/testing.js +0 -112
  1522. package/fesm2015/badge/testing.js.map +0 -1
  1523. package/fesm2015/badge.js +0 -265
  1524. package/fesm2015/badge.js.map +0 -1
  1525. package/fesm2015/bottom-sheet/testing.js +0 -67
  1526. package/fesm2015/bottom-sheet/testing.js.map +0 -1
  1527. package/fesm2015/bottom-sheet.js +0 -603
  1528. package/fesm2015/bottom-sheet.js.map +0 -1
  1529. package/fesm2015/button/testing.js +0 -91
  1530. package/fesm2015/button/testing.js.map +0 -1
  1531. package/fesm2015/button-toggle/testing.js +0 -211
  1532. package/fesm2015/button-toggle/testing.js.map +0 -1
  1533. package/fesm2015/button-toggle.js +0 -473
  1534. package/fesm2015/button-toggle.js.map +0 -1
  1535. package/fesm2015/button.js +0 -205
  1536. package/fesm2015/button.js.map +0 -1
  1537. package/fesm2015/card/testing.js +0 -79
  1538. package/fesm2015/card/testing.js.map +0 -1
  1539. package/fesm2015/card.js +0 -276
  1540. package/fesm2015/card.js.map +0 -1
  1541. package/fesm2015/checkbox/testing.js +0 -183
  1542. package/fesm2015/checkbox/testing.js.map +0 -1
  1543. package/fesm2015/checkbox.js +0 -476
  1544. package/fesm2015/checkbox.js.map +0 -1
  1545. package/fesm2015/chips/testing.js +0 -465
  1546. package/fesm2015/chips/testing.js.map +0 -1
  1547. package/fesm2015/chips.js +0 -1286
  1548. package/fesm2015/chips.js.map +0 -1
  1549. package/fesm2015/core/testing.js +0 -150
  1550. package/fesm2015/core/testing.js.map +0 -1
  1551. package/fesm2015/core.js +0 -1692
  1552. package/fesm2015/core.js.map +0 -1
  1553. package/fesm2015/datepicker/testing.js +0 -692
  1554. package/fesm2015/datepicker/testing.js.map +0 -1
  1555. package/fesm2015/datepicker.js +0 -3745
  1556. package/fesm2015/datepicker.js.map +0 -1
  1557. package/fesm2015/dialog/testing.js +0 -130
  1558. package/fesm2015/dialog/testing.js.map +0 -1
  1559. package/fesm2015/dialog.js +0 -1127
  1560. package/fesm2015/dialog.js.map +0 -1
  1561. package/fesm2015/divider/testing.js +0 -54
  1562. package/fesm2015/divider/testing.js.map +0 -1
  1563. package/fesm2015/divider.js +0 -76
  1564. package/fesm2015/divider.js.map +0 -1
  1565. package/fesm2015/expansion/testing.js +0 -209
  1566. package/fesm2015/expansion/testing.js.map +0 -1
  1567. package/fesm2015/expansion.js +0 -600
  1568. package/fesm2015/expansion.js.map +0 -1
  1569. package/fesm2015/form-field/testing/control.js +0 -26
  1570. package/fesm2015/form-field/testing/control.js.map +0 -1
  1571. package/fesm2015/form-field/testing.js +0 -246
  1572. package/fesm2015/form-field/testing.js.map +0 -1
  1573. package/fesm2015/form-field.js +0 -757
  1574. package/fesm2015/form-field.js.map +0 -1
  1575. package/fesm2015/grid-list/testing.js +0 -183
  1576. package/fesm2015/grid-list/testing.js.map +0 -1
  1577. package/fesm2015/grid-list.js +0 -680
  1578. package/fesm2015/grid-list.js.map +0 -1
  1579. package/fesm2015/icon/testing.js +0 -171
  1580. package/fesm2015/icon/testing.js.map +0 -1
  1581. package/fesm2015/icon.js +0 -1012
  1582. package/fesm2015/icon.js.map +0 -1
  1583. package/fesm2015/input/testing.js +0 -318
  1584. package/fesm2015/input/testing.js.map +0 -1
  1585. package/fesm2015/input.js +0 -506
  1586. package/fesm2015/input.js.map +0 -1
  1587. package/fesm2015/list/testing.js +0 -529
  1588. package/fesm2015/list/testing.js.map +0 -1
  1589. package/fesm2015/list.js +0 -876
  1590. package/fesm2015/list.js.map +0 -1
  1591. package/fesm2015/material.js +0 -16
  1592. package/fesm2015/material.js.map +0 -1
  1593. package/fesm2015/menu/testing.js +0 -250
  1594. package/fesm2015/menu/testing.js.map +0 -1
  1595. package/fesm2015/menu.js +0 -1292
  1596. package/fesm2015/menu.js.map +0 -1
  1597. package/fesm2015/paginator/testing.js +0 -133
  1598. package/fesm2015/paginator/testing.js.map +0 -1
  1599. package/fesm2015/paginator.js +0 -366
  1600. package/fesm2015/paginator.js.map +0 -1
  1601. package/fesm2015/progress-bar/testing.js +0 -66
  1602. package/fesm2015/progress-bar/testing.js.map +0 -1
  1603. package/fesm2015/progress-bar.js +0 -211
  1604. package/fesm2015/progress-bar.js.map +0 -1
  1605. package/fesm2015/progress-spinner/testing.js +0 -67
  1606. package/fesm2015/progress-spinner/testing.js.map +0 -1
  1607. package/fesm2015/progress-spinner.js +0 -313
  1608. package/fesm2015/progress-spinner.js.map +0 -1
  1609. package/fesm2015/radio/testing.js +0 -299
  1610. package/fesm2015/radio/testing.js.map +0 -1
  1611. package/fesm2015/radio.js +0 -578
  1612. package/fesm2015/radio.js.map +0 -1
  1613. package/fesm2015/select/testing.js +0 -184
  1614. package/fesm2015/select/testing.js.map +0 -1
  1615. package/fesm2015/select.js +0 -1269
  1616. package/fesm2015/select.js.map +0 -1
  1617. package/fesm2015/sidenav/testing.js +0 -231
  1618. package/fesm2015/sidenav/testing.js.map +0 -1
  1619. package/fesm2015/sidenav.js +0 -965
  1620. package/fesm2015/sidenav.js.map +0 -1
  1621. package/fesm2015/slide-toggle/testing.js +0 -166
  1622. package/fesm2015/slide-toggle/testing.js.map +0 -1
  1623. package/fesm2015/slide-toggle.js +0 -329
  1624. package/fesm2015/slide-toggle.js.map +0 -1
  1625. package/fesm2015/slider/testing.js +0 -160
  1626. package/fesm2015/slider/testing.js.map +0 -1
  1627. package/fesm2015/slider.js +0 -820
  1628. package/fesm2015/slider.js.map +0 -1
  1629. package/fesm2015/snack-bar/testing.js +0 -169
  1630. package/fesm2015/snack-bar/testing.js.map +0 -1
  1631. package/fesm2015/snack-bar.js +0 -713
  1632. package/fesm2015/snack-bar.js.map +0 -1
  1633. package/fesm2015/sort/testing.js +0 -124
  1634. package/fesm2015/sort/testing.js.map +0 -1
  1635. package/fesm2015/sort.js +0 -587
  1636. package/fesm2015/sort.js.map +0 -1
  1637. package/fesm2015/stepper/testing.js +0 -237
  1638. package/fesm2015/stepper/testing.js.map +0 -1
  1639. package/fesm2015/stepper.js +0 -519
  1640. package/fesm2015/stepper.js.map +0 -1
  1641. package/fesm2015/table/testing.js +0 -280
  1642. package/fesm2015/table/testing.js.map +0 -1
  1643. package/fesm2015/table.js +0 -701
  1644. package/fesm2015/table.js.map +0 -1
  1645. package/fesm2015/tabs/testing.js +0 -273
  1646. package/fesm2015/tabs/testing.js.map +0 -1
  1647. package/fesm2015/tabs.js +0 -1746
  1648. package/fesm2015/tabs.js.map +0 -1
  1649. package/fesm2015/toolbar/testing.js +0 -74
  1650. package/fesm2015/toolbar/testing.js.map +0 -1
  1651. package/fesm2015/toolbar.js +0 -123
  1652. package/fesm2015/toolbar.js.map +0 -1
  1653. package/fesm2015/tooltip/testing.js +0 -95
  1654. package/fesm2015/tooltip/testing.js.map +0 -1
  1655. package/fesm2015/tooltip.js +0 -802
  1656. package/fesm2015/tooltip.js.map +0 -1
  1657. package/fesm2015/tree/testing.js +0 -237
  1658. package/fesm2015/tree/testing.js.map +0 -1
  1659. package/fesm2015/tree.js +0 -479
  1660. package/fesm2015/tree.js.map +0 -1
  1661. package/form-field/index.metadata.json +0 -1
  1662. package/grid-list/index.metadata.json +0 -1
  1663. package/icon/index.metadata.json +0 -1
  1664. package/icon/testing/index.metadata.json +0 -1
  1665. package/input/autosize.d.ts +0 -23
  1666. package/input/index.metadata.json +0 -1
  1667. package/list/index.metadata.json +0 -1
  1668. package/menu/index.metadata.json +0 -1
  1669. package/paginator/index.metadata.json +0 -1
  1670. package/progress-bar/index.metadata.json +0 -1
  1671. package/progress-spinner/index.metadata.json +0 -1
  1672. package/radio/index.metadata.json +0 -1
  1673. package/select/index.metadata.json +0 -1
  1674. package/sidenav/index.metadata.json +0 -1
  1675. package/slide-toggle/index.metadata.json +0 -1
  1676. package/slider/index.metadata.json +0 -1
  1677. package/snack-bar/index.metadata.json +0 -1
  1678. package/sort/index.metadata.json +0 -1
  1679. package/stepper/index.metadata.json +0 -1
  1680. package/table/index.metadata.json +0 -1
  1681. package/tabs/index.metadata.json +0 -1
  1682. package/toolbar/index.metadata.json +0 -1
  1683. package/tooltip/index.metadata.json +0 -1
  1684. package/tree/index.metadata.json +0 -1
@@ -1,627 +0,0 @@
1
- /**
2
- * @license
3
- * Copyright Google LLC All Rights Reserved.
4
- *
5
- * Use of this source code is governed by an MIT-style license that can be
6
- * found in the LICENSE file at https://angular.io/license
7
- */
8
- import { Directionality } from '@angular/cdk/bidi';
9
- import { coerceBooleanProperty } from '@angular/cdk/coercion';
10
- import { DOWN_ARROW, ENTER, ESCAPE, TAB, UP_ARROW, hasModifierKey } from '@angular/cdk/keycodes';
11
- import { Overlay, OverlayConfig, } from '@angular/cdk/overlay';
12
- import { _getEventTarget } from '@angular/cdk/platform';
13
- import { TemplatePortal } from '@angular/cdk/portal';
14
- import { ViewportRuler } from '@angular/cdk/scrolling';
15
- import { DOCUMENT } from '@angular/common';
16
- import { ChangeDetectorRef, Directive, ElementRef, forwardRef, Host, Inject, InjectionToken, Input, NgZone, Optional, ViewContainerRef, } from '@angular/core';
17
- import { NG_VALUE_ACCESSOR } from '@angular/forms';
18
- import { _countGroupLabelsBeforeOption, _getOptionScrollPosition, MatOptionSelectionChange, } from '@angular/material/core';
19
- import { MAT_FORM_FIELD, MatFormField } from '@angular/material/form-field';
20
- import { defer, fromEvent, merge, of as observableOf, Subject, Subscription } from 'rxjs';
21
- import { delay, filter, map, switchMap, take, tap } from 'rxjs/operators';
22
- import { _MatAutocompleteBase, MAT_AUTOCOMPLETE_DEFAULT_OPTIONS } from './autocomplete';
23
- import { _MatAutocompleteOriginBase } from './autocomplete-origin';
24
- /** Injection token that determines the scroll handling while the autocomplete panel is open. */
25
- export const MAT_AUTOCOMPLETE_SCROLL_STRATEGY = new InjectionToken('mat-autocomplete-scroll-strategy');
26
- /** @docs-private */
27
- export function MAT_AUTOCOMPLETE_SCROLL_STRATEGY_FACTORY(overlay) {
28
- return () => overlay.scrollStrategies.reposition();
29
- }
30
- /** @docs-private */
31
- export const MAT_AUTOCOMPLETE_SCROLL_STRATEGY_FACTORY_PROVIDER = {
32
- provide: MAT_AUTOCOMPLETE_SCROLL_STRATEGY,
33
- deps: [Overlay],
34
- useFactory: MAT_AUTOCOMPLETE_SCROLL_STRATEGY_FACTORY,
35
- };
36
- /**
37
- * Provider that allows the autocomplete to register as a ControlValueAccessor.
38
- * @docs-private
39
- */
40
- export const MAT_AUTOCOMPLETE_VALUE_ACCESSOR = {
41
- provide: NG_VALUE_ACCESSOR,
42
- useExisting: forwardRef(() => MatAutocompleteTrigger),
43
- multi: true
44
- };
45
- /**
46
- * Creates an error to be thrown when attempting to use an autocomplete trigger without a panel.
47
- * @docs-private
48
- */
49
- export function getMatAutocompleteMissingPanelError() {
50
- return Error('Attempting to open an undefined instance of `mat-autocomplete`. ' +
51
- 'Make sure that the id passed to the `matAutocomplete` is correct and that ' +
52
- 'you\'re attempting to open it after the ngAfterContentInit hook.');
53
- }
54
- /** Base class with all of the `MatAutocompleteTrigger` functionality. */
55
- export class _MatAutocompleteTriggerBase {
56
- constructor(_element, _overlay, _viewContainerRef, _zone, _changeDetectorRef, scrollStrategy, _dir, _formField, _document, _viewportRuler, _defaults) {
57
- this._element = _element;
58
- this._overlay = _overlay;
59
- this._viewContainerRef = _viewContainerRef;
60
- this._zone = _zone;
61
- this._changeDetectorRef = _changeDetectorRef;
62
- this._dir = _dir;
63
- this._formField = _formField;
64
- this._document = _document;
65
- this._viewportRuler = _viewportRuler;
66
- this._defaults = _defaults;
67
- this._componentDestroyed = false;
68
- this._autocompleteDisabled = false;
69
- /** Whether or not the label state is being overridden. */
70
- this._manuallyFloatingLabel = false;
71
- /** Subscription to viewport size changes. */
72
- this._viewportSubscription = Subscription.EMPTY;
73
- /**
74
- * Whether the autocomplete can open the next time it is focused. Used to prevent a focused,
75
- * closed autocomplete from being reopened if the user switches to another browser tab and then
76
- * comes back.
77
- */
78
- this._canOpenOnNextFocus = true;
79
- /** Stream of keyboard events that can close the panel. */
80
- this._closeKeyEventStream = new Subject();
81
- /**
82
- * Event handler for when the window is blurred. Needs to be an
83
- * arrow function in order to preserve the context.
84
- */
85
- this._windowBlurHandler = () => {
86
- // If the user blurred the window while the autocomplete is focused, it means that it'll be
87
- // refocused when they come back. In this case we want to skip the first focus event, if the
88
- // pane was closed, in order to avoid reopening it unintentionally.
89
- this._canOpenOnNextFocus =
90
- this._document.activeElement !== this._element.nativeElement || this.panelOpen;
91
- };
92
- /** `View -> model callback called when value changes` */
93
- this._onChange = () => { };
94
- /** `View -> model callback called when autocomplete has been touched` */
95
- this._onTouched = () => { };
96
- /**
97
- * Position of the autocomplete panel relative to the trigger element. A position of `auto`
98
- * will render the panel underneath the trigger if there is enough space for it to fit in
99
- * the viewport, otherwise the panel will be shown above it. If the position is set to
100
- * `above` or `below`, the panel will always be shown above or below the trigger. no matter
101
- * whether it fits completely in the viewport.
102
- */
103
- this.position = 'auto';
104
- /**
105
- * `autocomplete` attribute to be set on the input element.
106
- * @docs-private
107
- */
108
- this.autocompleteAttribute = 'off';
109
- this._overlayAttached = false;
110
- /** Stream of autocomplete option selections. */
111
- this.optionSelections = defer(() => {
112
- if (this.autocomplete && this.autocomplete.options) {
113
- return merge(...this.autocomplete.options.map(option => option.onSelectionChange));
114
- }
115
- // If there are any subscribers before `ngAfterViewInit`, the `autocomplete` will be undefined.
116
- // Return a stream that we'll replace with the real one once everything is in place.
117
- return this._zone.onStable
118
- .pipe(take(1), switchMap(() => this.optionSelections));
119
- });
120
- this._scrollStrategy = scrollStrategy;
121
- }
122
- /**
123
- * Whether the autocomplete is disabled. When disabled, the element will
124
- * act as a regular input and the user won't be able to open the panel.
125
- */
126
- get autocompleteDisabled() { return this._autocompleteDisabled; }
127
- set autocompleteDisabled(value) {
128
- this._autocompleteDisabled = coerceBooleanProperty(value);
129
- }
130
- ngAfterViewInit() {
131
- const window = this._getWindow();
132
- if (typeof window !== 'undefined') {
133
- this._zone.runOutsideAngular(() => window.addEventListener('blur', this._windowBlurHandler));
134
- }
135
- }
136
- ngOnChanges(changes) {
137
- if (changes['position'] && this._positionStrategy) {
138
- this._setStrategyPositions(this._positionStrategy);
139
- if (this.panelOpen) {
140
- this._overlayRef.updatePosition();
141
- }
142
- }
143
- }
144
- ngOnDestroy() {
145
- const window = this._getWindow();
146
- if (typeof window !== 'undefined') {
147
- window.removeEventListener('blur', this._windowBlurHandler);
148
- }
149
- this._viewportSubscription.unsubscribe();
150
- this._componentDestroyed = true;
151
- this._destroyPanel();
152
- this._closeKeyEventStream.complete();
153
- }
154
- /** Whether or not the autocomplete panel is open. */
155
- get panelOpen() {
156
- return this._overlayAttached && this.autocomplete.showPanel;
157
- }
158
- /** Opens the autocomplete suggestion panel. */
159
- openPanel() {
160
- this._attachOverlay();
161
- this._floatLabel();
162
- }
163
- /** Closes the autocomplete suggestion panel. */
164
- closePanel() {
165
- this._resetLabel();
166
- if (!this._overlayAttached) {
167
- return;
168
- }
169
- if (this.panelOpen) {
170
- // Only emit if the panel was visible.
171
- this.autocomplete.closed.emit();
172
- }
173
- this.autocomplete._isOpen = this._overlayAttached = false;
174
- if (this._overlayRef && this._overlayRef.hasAttached()) {
175
- this._overlayRef.detach();
176
- this._closingActionsSubscription.unsubscribe();
177
- }
178
- // Note that in some cases this can end up being called after the component is destroyed.
179
- // Add a check to ensure that we don't try to run change detection on a destroyed view.
180
- if (!this._componentDestroyed) {
181
- // We need to trigger change detection manually, because
182
- // `fromEvent` doesn't seem to do it at the proper time.
183
- // This ensures that the label is reset when the
184
- // user clicks outside.
185
- this._changeDetectorRef.detectChanges();
186
- }
187
- }
188
- /**
189
- * Updates the position of the autocomplete suggestion panel to ensure that it fits all options
190
- * within the viewport.
191
- */
192
- updatePosition() {
193
- if (this._overlayAttached) {
194
- this._overlayRef.updatePosition();
195
- }
196
- }
197
- /**
198
- * A stream of actions that should close the autocomplete panel, including
199
- * when an option is selected, on blur, and when TAB is pressed.
200
- */
201
- get panelClosingActions() {
202
- return merge(this.optionSelections, this.autocomplete._keyManager.tabOut.pipe(filter(() => this._overlayAttached)), this._closeKeyEventStream, this._getOutsideClickStream(), this._overlayRef ?
203
- this._overlayRef.detachments().pipe(filter(() => this._overlayAttached)) :
204
- observableOf()).pipe(
205
- // Normalize the output so we return a consistent type.
206
- map(event => event instanceof MatOptionSelectionChange ? event : null));
207
- }
208
- /** The currently active option, coerced to MatOption type. */
209
- get activeOption() {
210
- if (this.autocomplete && this.autocomplete._keyManager) {
211
- return this.autocomplete._keyManager.activeItem;
212
- }
213
- return null;
214
- }
215
- /** Stream of clicks outside of the autocomplete panel. */
216
- _getOutsideClickStream() {
217
- return merge(fromEvent(this._document, 'click'), fromEvent(this._document, 'auxclick'), fromEvent(this._document, 'touchend'))
218
- .pipe(filter(event => {
219
- // If we're in the Shadow DOM, the event target will be the shadow root, so we have to
220
- // fall back to check the first element in the path of the click event.
221
- const clickTarget = _getEventTarget(event);
222
- const formField = this._formField ? this._formField._elementRef.nativeElement : null;
223
- const customOrigin = this.connectedTo ? this.connectedTo.elementRef.nativeElement : null;
224
- return this._overlayAttached && clickTarget !== this._element.nativeElement &&
225
- (!formField || !formField.contains(clickTarget)) &&
226
- (!customOrigin || !customOrigin.contains(clickTarget)) &&
227
- (!!this._overlayRef && !this._overlayRef.overlayElement.contains(clickTarget));
228
- }));
229
- }
230
- // Implemented as part of ControlValueAccessor.
231
- writeValue(value) {
232
- Promise.resolve(null).then(() => this._setTriggerValue(value));
233
- }
234
- // Implemented as part of ControlValueAccessor.
235
- registerOnChange(fn) {
236
- this._onChange = fn;
237
- }
238
- // Implemented as part of ControlValueAccessor.
239
- registerOnTouched(fn) {
240
- this._onTouched = fn;
241
- }
242
- // Implemented as part of ControlValueAccessor.
243
- setDisabledState(isDisabled) {
244
- this._element.nativeElement.disabled = isDisabled;
245
- }
246
- _handleKeydown(event) {
247
- const keyCode = event.keyCode;
248
- // Prevent the default action on all escape key presses. This is here primarily to bring IE
249
- // in line with other browsers. By default, pressing escape on IE will cause it to revert
250
- // the input value to the one that it had on focus, however it won't dispatch any events
251
- // which means that the model value will be out of sync with the view.
252
- if (keyCode === ESCAPE && !hasModifierKey(event)) {
253
- event.preventDefault();
254
- }
255
- if (this.activeOption && keyCode === ENTER && this.panelOpen) {
256
- this.activeOption._selectViaInteraction();
257
- this._resetActiveItem();
258
- event.preventDefault();
259
- }
260
- else if (this.autocomplete) {
261
- const prevActiveItem = this.autocomplete._keyManager.activeItem;
262
- const isArrowKey = keyCode === UP_ARROW || keyCode === DOWN_ARROW;
263
- if (this.panelOpen || keyCode === TAB) {
264
- this.autocomplete._keyManager.onKeydown(event);
265
- }
266
- else if (isArrowKey && this._canOpen()) {
267
- this.openPanel();
268
- }
269
- if (isArrowKey || this.autocomplete._keyManager.activeItem !== prevActiveItem) {
270
- this._scrollToOption(this.autocomplete._keyManager.activeItemIndex || 0);
271
- }
272
- }
273
- }
274
- _handleInput(event) {
275
- let target = event.target;
276
- let value = target.value;
277
- // Based on `NumberValueAccessor` from forms.
278
- if (target.type === 'number') {
279
- value = value == '' ? null : parseFloat(value);
280
- }
281
- // If the input has a placeholder, IE will fire the `input` event on page load,
282
- // focus and blur, in addition to when the user actually changed the value. To
283
- // filter out all of the extra events, we save the value on focus and between
284
- // `input` events, and we check whether it changed.
285
- // See: https://connect.microsoft.com/IE/feedback/details/885747/
286
- if (this._previousValue !== value) {
287
- this._previousValue = value;
288
- this._onChange(value);
289
- if (this._canOpen() && this._document.activeElement === event.target) {
290
- this.openPanel();
291
- }
292
- }
293
- }
294
- _handleFocus() {
295
- if (!this._canOpenOnNextFocus) {
296
- this._canOpenOnNextFocus = true;
297
- }
298
- else if (this._canOpen()) {
299
- this._previousValue = this._element.nativeElement.value;
300
- this._attachOverlay();
301
- this._floatLabel(true);
302
- }
303
- }
304
- /**
305
- * In "auto" mode, the label will animate down as soon as focus is lost.
306
- * This causes the value to jump when selecting an option with the mouse.
307
- * This method manually floats the label until the panel can be closed.
308
- * @param shouldAnimate Whether the label should be animated when it is floated.
309
- */
310
- _floatLabel(shouldAnimate = false) {
311
- if (this._formField && this._formField.floatLabel === 'auto') {
312
- if (shouldAnimate) {
313
- this._formField._animateAndLockLabel();
314
- }
315
- else {
316
- this._formField.floatLabel = 'always';
317
- }
318
- this._manuallyFloatingLabel = true;
319
- }
320
- }
321
- /** If the label has been manually elevated, return it to its normal state. */
322
- _resetLabel() {
323
- if (this._manuallyFloatingLabel) {
324
- this._formField.floatLabel = 'auto';
325
- this._manuallyFloatingLabel = false;
326
- }
327
- }
328
- /**
329
- * This method listens to a stream of panel closing actions and resets the
330
- * stream every time the option list changes.
331
- */
332
- _subscribeToClosingActions() {
333
- const firstStable = this._zone.onStable.pipe(take(1));
334
- const optionChanges = this.autocomplete.options.changes.pipe(tap(() => this._positionStrategy.reapplyLastPosition()),
335
- // Defer emitting to the stream until the next tick, because changing
336
- // bindings in here will cause "changed after checked" errors.
337
- delay(0));
338
- // When the zone is stable initially, and when the option list changes...
339
- return merge(firstStable, optionChanges)
340
- .pipe(
341
- // create a new stream of panelClosingActions, replacing any previous streams
342
- // that were created, and flatten it so our stream only emits closing events...
343
- switchMap(() => {
344
- const wasOpen = this.panelOpen;
345
- this._resetActiveItem();
346
- this.autocomplete._setVisibility();
347
- if (this.panelOpen) {
348
- this._overlayRef.updatePosition();
349
- // If the `panelOpen` state changed, we need to make sure to emit the `opened`
350
- // event, because we may not have emitted it when the panel was attached. This
351
- // can happen if the users opens the panel and there are no options, but the
352
- // options come in slightly later or as a result of the value changing.
353
- if (wasOpen !== this.panelOpen) {
354
- this.autocomplete.opened.emit();
355
- }
356
- }
357
- return this.panelClosingActions;
358
- }),
359
- // when the first closing event occurs...
360
- take(1))
361
- // set the value, close the panel, and complete.
362
- .subscribe(event => this._setValueAndClose(event));
363
- }
364
- /** Destroys the autocomplete suggestion panel. */
365
- _destroyPanel() {
366
- if (this._overlayRef) {
367
- this.closePanel();
368
- this._overlayRef.dispose();
369
- this._overlayRef = null;
370
- }
371
- }
372
- _setTriggerValue(value) {
373
- const toDisplay = this.autocomplete && this.autocomplete.displayWith ?
374
- this.autocomplete.displayWith(value) :
375
- value;
376
- // Simply falling back to an empty string if the display value is falsy does not work properly.
377
- // The display value can also be the number zero and shouldn't fall back to an empty string.
378
- const inputValue = toDisplay != null ? toDisplay : '';
379
- // If it's used within a `MatFormField`, we should set it through the property so it can go
380
- // through change detection.
381
- if (this._formField) {
382
- this._formField._control.value = inputValue;
383
- }
384
- else {
385
- this._element.nativeElement.value = inputValue;
386
- }
387
- this._previousValue = inputValue;
388
- }
389
- /**
390
- * This method closes the panel, and if a value is specified, also sets the associated
391
- * control to that value. It will also mark the control as dirty if this interaction
392
- * stemmed from the user.
393
- */
394
- _setValueAndClose(event) {
395
- if (event && event.source) {
396
- this._clearPreviousSelectedOption(event.source);
397
- this._setTriggerValue(event.source.value);
398
- this._onChange(event.source.value);
399
- this._element.nativeElement.focus();
400
- this.autocomplete._emitSelectEvent(event.source);
401
- }
402
- this.closePanel();
403
- }
404
- /**
405
- * Clear any previous selected option and emit a selection change event for this option
406
- */
407
- _clearPreviousSelectedOption(skip) {
408
- this.autocomplete.options.forEach(option => {
409
- if (option !== skip && option.selected) {
410
- option.deselect();
411
- }
412
- });
413
- }
414
- _attachOverlay() {
415
- var _a;
416
- if (!this.autocomplete && (typeof ngDevMode === 'undefined' || ngDevMode)) {
417
- throw getMatAutocompleteMissingPanelError();
418
- }
419
- let overlayRef = this._overlayRef;
420
- if (!overlayRef) {
421
- this._portal = new TemplatePortal(this.autocomplete.template, this._viewContainerRef, { id: (_a = this._formField) === null || _a === void 0 ? void 0 : _a.getLabelId() });
422
- overlayRef = this._overlay.create(this._getOverlayConfig());
423
- this._overlayRef = overlayRef;
424
- // Use the `keydownEvents` in order to take advantage of
425
- // the overlay event targeting provided by the CDK overlay.
426
- overlayRef.keydownEvents().subscribe(event => {
427
- // Close when pressing ESCAPE or ALT + UP_ARROW, based on the a11y guidelines.
428
- // See: https://www.w3.org/TR/wai-aria-practices-1.1/#textbox-keyboard-interaction
429
- if ((event.keyCode === ESCAPE && !hasModifierKey(event)) ||
430
- (event.keyCode === UP_ARROW && hasModifierKey(event, 'altKey'))) {
431
- this._closeKeyEventStream.next();
432
- this._resetActiveItem();
433
- // We need to stop propagation, otherwise the event will eventually
434
- // reach the input itself and cause the overlay to be reopened.
435
- event.stopPropagation();
436
- event.preventDefault();
437
- }
438
- });
439
- this._viewportSubscription = this._viewportRuler.change().subscribe(() => {
440
- if (this.panelOpen && overlayRef) {
441
- overlayRef.updateSize({ width: this._getPanelWidth() });
442
- }
443
- });
444
- }
445
- else {
446
- // Update the trigger, panel width and direction, in case anything has changed.
447
- this._positionStrategy.setOrigin(this._getConnectedElement());
448
- overlayRef.updateSize({ width: this._getPanelWidth() });
449
- }
450
- if (overlayRef && !overlayRef.hasAttached()) {
451
- overlayRef.attach(this._portal);
452
- this._closingActionsSubscription = this._subscribeToClosingActions();
453
- }
454
- const wasOpen = this.panelOpen;
455
- this.autocomplete._setVisibility();
456
- this.autocomplete._isOpen = this._overlayAttached = true;
457
- // We need to do an extra `panelOpen` check in here, because the
458
- // autocomplete won't be shown if there are no options.
459
- if (this.panelOpen && wasOpen !== this.panelOpen) {
460
- this.autocomplete.opened.emit();
461
- }
462
- }
463
- _getOverlayConfig() {
464
- var _a;
465
- return new OverlayConfig({
466
- positionStrategy: this._getOverlayPosition(),
467
- scrollStrategy: this._scrollStrategy(),
468
- width: this._getPanelWidth(),
469
- direction: this._dir,
470
- panelClass: (_a = this._defaults) === null || _a === void 0 ? void 0 : _a.overlayPanelClass,
471
- });
472
- }
473
- _getOverlayPosition() {
474
- const strategy = this._overlay.position()
475
- .flexibleConnectedTo(this._getConnectedElement())
476
- .withFlexibleDimensions(false)
477
- .withPush(false);
478
- this._setStrategyPositions(strategy);
479
- this._positionStrategy = strategy;
480
- return strategy;
481
- }
482
- /** Sets the positions on a position strategy based on the directive's input state. */
483
- _setStrategyPositions(positionStrategy) {
484
- // Note that we provide horizontal fallback positions, even though by default the dropdown
485
- // width matches the input, because consumers can override the width. See #18854.
486
- const belowPositions = [
487
- { originX: 'start', originY: 'bottom', overlayX: 'start', overlayY: 'top' },
488
- { originX: 'end', originY: 'bottom', overlayX: 'end', overlayY: 'top' }
489
- ];
490
- // The overlay edge connected to the trigger should have squared corners, while
491
- // the opposite end has rounded corners. We apply a CSS class to swap the
492
- // border-radius based on the overlay position.
493
- const panelClass = this._aboveClass;
494
- const abovePositions = [
495
- { originX: 'start', originY: 'top', overlayX: 'start', overlayY: 'bottom', panelClass },
496
- { originX: 'end', originY: 'top', overlayX: 'end', overlayY: 'bottom', panelClass }
497
- ];
498
- let positions;
499
- if (this.position === 'above') {
500
- positions = abovePositions;
501
- }
502
- else if (this.position === 'below') {
503
- positions = belowPositions;
504
- }
505
- else {
506
- positions = [...belowPositions, ...abovePositions];
507
- }
508
- positionStrategy.withPositions(positions);
509
- }
510
- _getConnectedElement() {
511
- if (this.connectedTo) {
512
- return this.connectedTo.elementRef;
513
- }
514
- return this._formField ? this._formField.getConnectedOverlayOrigin() : this._element;
515
- }
516
- _getPanelWidth() {
517
- return this.autocomplete.panelWidth || this._getHostWidth();
518
- }
519
- /** Returns the width of the input element, so the panel width can match it. */
520
- _getHostWidth() {
521
- return this._getConnectedElement().nativeElement.getBoundingClientRect().width;
522
- }
523
- /**
524
- * Resets the active item to -1 so arrow events will activate the
525
- * correct options, or to 0 if the consumer opted into it.
526
- */
527
- _resetActiveItem() {
528
- const autocomplete = this.autocomplete;
529
- if (autocomplete.autoActiveFirstOption) {
530
- // Note that we go through `setFirstItemActive`, rather than `setActiveItem(0)`, because
531
- // the former will find the next enabled option, if the first one is disabled.
532
- autocomplete._keyManager.setFirstItemActive();
533
- }
534
- else {
535
- autocomplete._keyManager.setActiveItem(-1);
536
- }
537
- }
538
- /** Determines whether the panel can be opened. */
539
- _canOpen() {
540
- const element = this._element.nativeElement;
541
- return !element.readOnly && !element.disabled && !this._autocompleteDisabled;
542
- }
543
- /** Use defaultView of injected document if available or fallback to global window reference */
544
- _getWindow() {
545
- var _a;
546
- return ((_a = this._document) === null || _a === void 0 ? void 0 : _a.defaultView) || window;
547
- }
548
- /** Scrolls to a particular option in the list. */
549
- _scrollToOption(index) {
550
- // Given that we are not actually focusing active options, we must manually adjust scroll
551
- // to reveal options below the fold. First, we find the offset of the option from the top
552
- // of the panel. If that offset is below the fold, the new scrollTop will be the offset -
553
- // the panel height + the option height, so the active option will be just visible at the
554
- // bottom of the panel. If that offset is above the top of the visible panel, the new scrollTop
555
- // will become the offset. If that offset is visible within the panel already, the scrollTop is
556
- // not adjusted.
557
- const autocomplete = this.autocomplete;
558
- const labelCount = _countGroupLabelsBeforeOption(index, autocomplete.options, autocomplete.optionGroups);
559
- if (index === 0 && labelCount === 1) {
560
- // If we've got one group label before the option and we're at the top option,
561
- // scroll the list to the top. This is better UX than scrolling the list to the
562
- // top of the option, because it allows the user to read the top group's label.
563
- autocomplete._setScrollTop(0);
564
- }
565
- else if (autocomplete.panel) {
566
- const option = autocomplete.options.toArray()[index];
567
- if (option) {
568
- const element = option._getHostElement();
569
- const newScrollPosition = _getOptionScrollPosition(element.offsetTop, element.offsetHeight, autocomplete._getScrollTop(), autocomplete.panel.nativeElement.offsetHeight);
570
- autocomplete._setScrollTop(newScrollPosition);
571
- }
572
- }
573
- }
574
- }
575
- _MatAutocompleteTriggerBase.decorators = [
576
- { type: Directive }
577
- ];
578
- _MatAutocompleteTriggerBase.ctorParameters = () => [
579
- { type: ElementRef },
580
- { type: Overlay },
581
- { type: ViewContainerRef },
582
- { type: NgZone },
583
- { type: ChangeDetectorRef },
584
- { type: undefined, decorators: [{ type: Inject, args: [MAT_AUTOCOMPLETE_SCROLL_STRATEGY,] }] },
585
- { type: Directionality, decorators: [{ type: Optional }] },
586
- { type: MatFormField, decorators: [{ type: Optional }, { type: Inject, args: [MAT_FORM_FIELD,] }, { type: Host }] },
587
- { type: undefined, decorators: [{ type: Optional }, { type: Inject, args: [DOCUMENT,] }] },
588
- { type: ViewportRuler },
589
- { type: undefined, decorators: [{ type: Optional }, { type: Inject, args: [MAT_AUTOCOMPLETE_DEFAULT_OPTIONS,] }] }
590
- ];
591
- _MatAutocompleteTriggerBase.propDecorators = {
592
- autocomplete: [{ type: Input, args: ['matAutocomplete',] }],
593
- position: [{ type: Input, args: ['matAutocompletePosition',] }],
594
- connectedTo: [{ type: Input, args: ['matAutocompleteConnectedTo',] }],
595
- autocompleteAttribute: [{ type: Input, args: ['autocomplete',] }],
596
- autocompleteDisabled: [{ type: Input, args: ['matAutocompleteDisabled',] }]
597
- };
598
- export class MatAutocompleteTrigger extends _MatAutocompleteTriggerBase {
599
- constructor() {
600
- super(...arguments);
601
- this._aboveClass = 'mat-autocomplete-panel-above';
602
- }
603
- }
604
- MatAutocompleteTrigger.decorators = [
605
- { type: Directive, args: [{
606
- selector: `input[matAutocomplete], textarea[matAutocomplete]`,
607
- host: {
608
- 'class': 'mat-autocomplete-trigger',
609
- '[attr.autocomplete]': 'autocompleteAttribute',
610
- '[attr.role]': 'autocompleteDisabled ? null : "combobox"',
611
- '[attr.aria-autocomplete]': 'autocompleteDisabled ? null : "list"',
612
- '[attr.aria-activedescendant]': '(panelOpen && activeOption) ? activeOption.id : null',
613
- '[attr.aria-expanded]': 'autocompleteDisabled ? null : panelOpen.toString()',
614
- '[attr.aria-owns]': '(autocompleteDisabled || !panelOpen) ? null : autocomplete?.id',
615
- '[attr.aria-haspopup]': '!autocompleteDisabled',
616
- // Note: we use `focusin`, as opposed to `focus`, in order to open the panel
617
- // a little earlier. This avoids issues where IE delays the focusing of the input.
618
- '(focusin)': '_handleFocus()',
619
- '(blur)': '_onTouched()',
620
- '(input)': '_handleInput($event)',
621
- '(keydown)': '_handleKeydown($event)',
622
- },
623
- exportAs: 'matAutocompleteTrigger',
624
- providers: [MAT_AUTOCOMPLETE_VALUE_ACCESSOR]
625
- },] }
626
- ];
627
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0b2NvbXBsZXRlLXRyaWdnZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvbWF0ZXJpYWwvYXV0b2NvbXBsZXRlL2F1dG9jb21wbGV0ZS10cmlnZ2VyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7R0FNRztBQUNILE9BQU8sRUFBQyxjQUFjLEVBQUMsTUFBTSxtQkFBbUIsQ0FBQztBQUNqRCxPQUFPLEVBQWUscUJBQXFCLEVBQUMsTUFBTSx1QkFBdUIsQ0FBQztBQUMxRSxPQUFPLEVBQUMsVUFBVSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLFFBQVEsRUFBRSxjQUFjLEVBQUMsTUFBTSx1QkFBdUIsQ0FBQztBQUMvRixPQUFPLEVBRUwsT0FBTyxFQUNQLGFBQWEsR0FLZCxNQUFNLHNCQUFzQixDQUFDO0FBQzlCLE9BQU8sRUFBQyxlQUFlLEVBQUMsTUFBTSx1QkFBdUIsQ0FBQztBQUN0RCxPQUFPLEVBQUMsY0FBYyxFQUFDLE1BQU0scUJBQXFCLENBQUM7QUFDbkQsT0FBTyxFQUFDLGFBQWEsRUFBQyxNQUFNLHdCQUF3QixDQUFDO0FBQ3JELE9BQU8sRUFBQyxRQUFRLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQztBQUN6QyxPQUFPLEVBRUwsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxVQUFVLEVBQ1YsVUFBVSxFQUNWLElBQUksRUFDSixNQUFNLEVBQ04sY0FBYyxFQUNkLEtBQUssRUFDTCxNQUFNLEVBRU4sUUFBUSxFQUNSLGdCQUFnQixHQUdqQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQXVCLGlCQUFpQixFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFDdkUsT0FBTyxFQUNMLDZCQUE2QixFQUM3Qix3QkFBd0IsRUFFeEIsd0JBQXdCLEdBQ3pCLE1BQU0sd0JBQXdCLENBQUM7QUFDaEMsT0FBTyxFQUFDLGNBQWMsRUFBRSxZQUFZLEVBQUMsTUFBTSw4QkFBOEIsQ0FBQztBQUMxRSxPQUFPLEVBQUMsS0FBSyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQWMsRUFBRSxJQUFJLFlBQVksRUFBRSxPQUFPLEVBQUUsWUFBWSxFQUFDLE1BQU0sTUFBTSxDQUFDO0FBQ3BHLE9BQU8sRUFBQyxLQUFLLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBRXhFLE9BQU8sRUFDTCxvQkFBb0IsRUFDcEIsZ0NBQWdDLEVBRWpDLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEIsT0FBTyxFQUFDLDBCQUEwQixFQUFDLE1BQU0sdUJBQXVCLENBQUM7QUFHakUsZ0dBQWdHO0FBQ2hHLE1BQU0sQ0FBQyxNQUFNLGdDQUFnQyxHQUN6QyxJQUFJLGNBQWMsQ0FBdUIsa0NBQWtDLENBQUMsQ0FBQztBQUVqRixvQkFBb0I7QUFDcEIsTUFBTSxVQUFVLHdDQUF3QyxDQUFDLE9BQWdCO0lBQ3ZFLE9BQU8sR0FBRyxFQUFFLENBQUMsT0FBTyxDQUFDLGdCQUFnQixDQUFDLFVBQVUsRUFBRSxDQUFDO0FBQ3JELENBQUM7QUFFRCxvQkFBb0I7QUFDcEIsTUFBTSxDQUFDLE1BQU0saURBQWlELEdBQUc7SUFDL0QsT0FBTyxFQUFFLGdDQUFnQztJQUN6QyxJQUFJLEVBQUUsQ0FBQyxPQUFPLENBQUM7SUFDZixVQUFVLEVBQUUsd0NBQXdDO0NBQ3JELENBQUM7QUFFRjs7O0dBR0c7QUFDSCxNQUFNLENBQUMsTUFBTSwrQkFBK0IsR0FBUTtJQUNsRCxPQUFPLEVBQUUsaUJBQWlCO0lBQzFCLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsc0JBQXNCLENBQUM7SUFDckQsS0FBSyxFQUFFLElBQUk7Q0FDWixDQUFDO0FBRUY7OztHQUdHO0FBQ0gsTUFBTSxVQUFVLG1DQUFtQztJQUNqRCxPQUFPLEtBQUssQ0FBQyxrRUFBa0U7UUFDbEUsNEVBQTRFO1FBQzVFLGtFQUFrRSxDQUFDLENBQUM7QUFDbkYsQ0FBQztBQUVELHlFQUF5RTtBQUV6RSxNQUFNLE9BQWdCLDJCQUEyQjtJQXNGL0MsWUFBb0IsUUFBc0MsRUFBVSxRQUFpQixFQUNqRSxpQkFBbUMsRUFDbkMsS0FBYSxFQUNiLGtCQUFxQyxFQUNILGNBQW1CLEVBQ3pDLElBQW9CLEVBQ1ksVUFBd0IsRUFDdEMsU0FBYyxFQUM1QyxjQUE2QixFQUU3QixTQUF5QztRQVZ6QyxhQUFRLEdBQVIsUUFBUSxDQUE4QjtRQUFVLGFBQVEsR0FBUixRQUFRLENBQVM7UUFDakUsc0JBQWlCLEdBQWpCLGlCQUFpQixDQUFrQjtRQUNuQyxVQUFLLEdBQUwsS0FBSyxDQUFRO1FBQ2IsdUJBQWtCLEdBQWxCLGtCQUFrQixDQUFtQjtRQUV6QixTQUFJLEdBQUosSUFBSSxDQUFnQjtRQUNZLGVBQVUsR0FBVixVQUFVLENBQWM7UUFDdEMsY0FBUyxHQUFULFNBQVMsQ0FBSztRQUM1QyxtQkFBYyxHQUFkLGNBQWMsQ0FBZTtRQUU3QixjQUFTLEdBQVQsU0FBUyxDQUFnQztRQTNGckQsd0JBQW1CLEdBQUcsS0FBSyxDQUFDO1FBQzVCLDBCQUFxQixHQUFHLEtBQUssQ0FBQztRQVN0QywwREFBMEQ7UUFDbEQsMkJBQXNCLEdBQUcsS0FBSyxDQUFDO1FBS3ZDLDZDQUE2QztRQUNyQywwQkFBcUIsR0FBRyxZQUFZLENBQUMsS0FBSyxDQUFDO1FBRW5EOzs7O1dBSUc7UUFDSyx3QkFBbUIsR0FBRyxJQUFJLENBQUM7UUFFbkMsMERBQTBEO1FBQ3pDLHlCQUFvQixHQUFHLElBQUksT0FBTyxFQUFRLENBQUM7UUFFNUQ7OztXQUdHO1FBQ0ssdUJBQWtCLEdBQUcsR0FBRyxFQUFFO1lBQ2hDLDJGQUEyRjtZQUMzRiw0RkFBNEY7WUFDNUYsbUVBQW1FO1lBQ25FLElBQUksQ0FBQyxtQkFBbUI7Z0JBQ3BCLElBQUksQ0FBQyxTQUFTLENBQUMsYUFBYSxLQUFLLElBQUksQ0FBQyxRQUFRLENBQUMsYUFBYSxJQUFJLElBQUksQ0FBQyxTQUFTLENBQUM7UUFDckYsQ0FBQyxDQUFBO1FBRUQseURBQXlEO1FBQ3pELGNBQVMsR0FBeUIsR0FBRyxFQUFFLEdBQUUsQ0FBQyxDQUFDO1FBRTNDLHlFQUF5RTtRQUN6RSxlQUFVLEdBQUcsR0FBRyxFQUFFLEdBQUUsQ0FBQyxDQUFDO1FBS3RCOzs7Ozs7V0FNRztRQUMrQixhQUFRLEdBQStCLE1BQU0sQ0FBQztRQVFoRjs7O1dBR0c7UUFDb0IsMEJBQXFCLEdBQVcsS0FBSyxDQUFDO1FBZ0VyRCxxQkFBZ0IsR0FBWSxLQUFLLENBQUM7UUFvRTFDLGdEQUFnRDtRQUN2QyxxQkFBZ0IsR0FBeUMsS0FBSyxDQUFDLEdBQUcsRUFBRTtZQUMzRSxJQUFJLElBQUksQ0FBQyxZQUFZLElBQUksSUFBSSxDQUFDLFlBQVksQ0FBQyxPQUFPLEVBQUU7Z0JBQ2xELE9BQU8sS0FBSyxDQUFDLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLGlCQUFpQixDQUFDLENBQUMsQ0FBQzthQUNwRjtZQUVELCtGQUErRjtZQUMvRixvRkFBb0Y7WUFDcEYsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVE7aUJBQ3JCLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsU0FBUyxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUM7UUFDN0QsQ0FBQyxDQUF5QyxDQUFDO1FBdkh6QyxJQUFJLENBQUMsZUFBZSxHQUFHLGNBQWMsQ0FBQztJQUN4QyxDQUFDO0lBdEJEOzs7T0FHRztJQUNILElBQ0ksb0JBQW9CLEtBQWMsT0FBTyxJQUFJLENBQUMscUJBQXFCLENBQUMsQ0FBQyxDQUFDO0lBQzFFLElBQUksb0JBQW9CLENBQUMsS0FBYztRQUNyQyxJQUFJLENBQUMscUJBQXFCLEdBQUcscUJBQXFCLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDNUQsQ0FBQztJQW1CRCxlQUFlO1FBQ2IsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1FBRWpDLElBQUksT0FBTyxNQUFNLEtBQUssV0FBVyxFQUFFO1lBQ2pDLElBQUksQ0FBQyxLQUFLLENBQUMsaUJBQWlCLENBQUMsR0FBRyxFQUFFLENBQUMsTUFBTSxDQUFDLGdCQUFnQixDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsa0JBQWtCLENBQUMsQ0FBQyxDQUFDO1NBQzlGO0lBQ0gsQ0FBQztJQUVELFdBQVcsQ0FBQyxPQUFzQjtRQUNoQyxJQUFJLE9BQU8sQ0FBQyxVQUFVLENBQUMsSUFBSSxJQUFJLENBQUMsaUJBQWlCLEVBQUU7WUFDakQsSUFBSSxDQUFDLHFCQUFxQixDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO1lBRW5ELElBQUksSUFBSSxDQUFDLFNBQVMsRUFBRTtnQkFDbEIsSUFBSSxDQUFDLFdBQVksQ0FBQyxjQUFjLEVBQUUsQ0FBQzthQUNwQztTQUNGO0lBQ0gsQ0FBQztJQUVELFdBQVc7UUFDVCxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7UUFFakMsSUFBSSxPQUFPLE1BQU0sS0FBSyxXQUFXLEVBQUU7WUFDakMsTUFBTSxDQUFDLG1CQUFtQixDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsa0JBQWtCLENBQUMsQ0FBQztTQUM3RDtRQUVELElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUN6QyxJQUFJLENBQUMsbUJBQW1CLEdBQUcsSUFBSSxDQUFDO1FBQ2hDLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztRQUNyQixJQUFJLENBQUMsb0JBQW9CLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDdkMsQ0FBQztJQUVELHFEQUFxRDtJQUNyRCxJQUFJLFNBQVM7UUFDWCxPQUFPLElBQUksQ0FBQyxnQkFBZ0IsSUFBSSxJQUFJLENBQUMsWUFBWSxDQUFDLFNBQVMsQ0FBQztJQUM5RCxDQUFDO0lBR0QsK0NBQStDO0lBQy9DLFNBQVM7UUFDUCxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7UUFDdEIsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQ3JCLENBQUM7SUFFRCxnREFBZ0Q7SUFDaEQsVUFBVTtRQUNSLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUVuQixJQUFJLENBQUMsSUFBSSxDQUFDLGdCQUFnQixFQUFFO1lBQzFCLE9BQU87U0FDUjtRQUVELElBQUksSUFBSSxDQUFDLFNBQVMsRUFBRTtZQUNsQixzQ0FBc0M7WUFDdEMsSUFBSSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLENBQUM7U0FDakM7UUFFRCxJQUFJLENBQUMsWUFBWSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsS0FBSyxDQUFDO1FBRTFELElBQUksSUFBSSxDQUFDLFdBQVcsSUFBSSxJQUFJLENBQUMsV0FBVyxDQUFDLFdBQVcsRUFBRSxFQUFFO1lBQ3RELElBQUksQ0FBQyxXQUFXLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDMUIsSUFBSSxDQUFDLDJCQUEyQixDQUFDLFdBQVcsRUFBRSxDQUFDO1NBQ2hEO1FBRUQseUZBQXlGO1FBQ3pGLHVGQUF1RjtRQUN2RixJQUFJLENBQUMsSUFBSSxDQUFDLG1CQUFtQixFQUFFO1lBQzdCLHdEQUF3RDtZQUN4RCx3REFBd0Q7WUFDeEQsZ0RBQWdEO1lBQ2hELHVCQUF1QjtZQUN2QixJQUFJLENBQUMsa0JBQWtCLENBQUMsYUFBYSxFQUFFLENBQUM7U0FDekM7SUFDSCxDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsY0FBYztRQUNaLElBQUksSUFBSSxDQUFDLGdCQUFnQixFQUFFO1lBQ3pCLElBQUksQ0FBQyxXQUFZLENBQUMsY0FBYyxFQUFFLENBQUM7U0FDcEM7SUFDSCxDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsSUFBSSxtQkFBbUI7UUFDckIsT0FBTyxLQUFLLENBQ1YsSUFBSSxDQUFDLGdCQUFnQixFQUNyQixJQUFJLENBQUMsWUFBWSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxFQUM5RSxJQUFJLENBQUMsb0JBQW9CLEVBQ3pCLElBQUksQ0FBQyxzQkFBc0IsRUFBRSxFQUM3QixJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7WUFDZCxJQUFJLENBQUMsV0FBVyxDQUFDLFdBQVcsRUFBRSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQzFFLFlBQVksRUFBRSxDQUNuQixDQUFDLElBQUk7UUFDSix1REFBdUQ7UUFDdkQsR0FBRyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsS0FBSyxZQUFZLHdCQUF3QixDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUN2RSxDQUFDO0lBQ0osQ0FBQztJQWNELDhEQUE4RDtJQUM5RCxJQUFJLFlBQVk7UUFDZCxJQUFJLElBQUksQ0FBQyxZQUFZLElBQUksSUFBSSxDQUFDLFlBQVksQ0FBQyxXQUFXLEVBQUU7WUFDdEQsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDLFdBQVcsQ0FBQyxVQUFVLENBQUM7U0FDakQ7UUFFRCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRCwwREFBMEQ7SUFDbEQsc0JBQXNCO1FBQzVCLE9BQU8sS0FBSyxDQUNKLFNBQVMsQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLE9BQU8sQ0FBMkIsRUFDNUQsU0FBUyxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsVUFBVSxDQUEyQixFQUMvRCxTQUFTLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxVQUFVLENBQTJCLENBQUM7YUFDbkUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsRUFBRTtZQUNuQixzRkFBc0Y7WUFDdEYsdUVBQXVFO1lBQ3ZFLE1BQU0sV0FBVyxHQUFHLGVBQWUsQ0FBYyxLQUFLLENBQUUsQ0FBQztZQUN6RCxNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLFdBQVcsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztZQUNyRixNQUFNLFlBQVksR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLFVBQVUsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztZQUV6RixPQUFPLElBQUksQ0FBQyxnQkFBZ0IsSUFBSSxXQUFXLEtBQUssSUFBSSxDQUFDLFFBQVEsQ0FBQyxhQUFhO2dCQUN2RSxDQUFDLENBQUMsU0FBUyxJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsQ0FBQztnQkFDaEQsQ0FBQyxDQUFDLFlBQVksSUFBSSxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLENBQUM7Z0JBQ3RELENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLGNBQWMsQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQztRQUNyRixDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ1YsQ0FBQztJQUVELCtDQUErQztJQUMvQyxVQUFVLENBQUMsS0FBVTtRQUNuQixPQUFPLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztJQUNqRSxDQUFDO0lBRUQsK0NBQStDO0lBQy9DLGdCQUFnQixDQUFDLEVBQXNCO1FBQ3JDLElBQUksQ0FBQyxTQUFTLEdBQUcsRUFBRSxDQUFDO0lBQ3RCLENBQUM7SUFFRCwrQ0FBK0M7SUFDL0MsaUJBQWlCLENBQUMsRUFBWTtRQUM1QixJQUFJLENBQUMsVUFBVSxHQUFHLEVBQUUsQ0FBQztJQUN2QixDQUFDO0lBRUQsK0NBQStDO0lBQy9DLGdCQUFnQixDQUFDLFVBQW1CO1FBQ2xDLElBQUksQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDLFFBQVEsR0FBRyxVQUFVLENBQUM7SUFDcEQsQ0FBQztJQUVELGNBQWMsQ0FBQyxLQUFvQjtRQUNqQyxNQUFNLE9BQU8sR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFDO1FBRTlCLDJGQUEyRjtRQUMzRix5RkFBeUY7UUFDekYsd0ZBQXdGO1FBQ3hGLHNFQUFzRTtRQUN0RSxJQUFJLE9BQU8sS0FBSyxNQUFNLElBQUksQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDLEVBQUU7WUFDaEQsS0FBSyxDQUFDLGNBQWMsRUFBRSxDQUFDO1NBQ3hCO1FBRUQsSUFBSSxJQUFJLENBQUMsWUFBWSxJQUFJLE9BQU8sS0FBSyxLQUFLLElBQUksSUFBSSxDQUFDLFNBQVMsRUFBRTtZQUM1RCxJQUFJLENBQUMsWUFBWSxDQUFDLHFCQUFxQixFQUFFLENBQUM7WUFDMUMsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7WUFDeEIsS0FBSyxDQUFDLGNBQWMsRUFBRSxDQUFDO1NBQ3hCO2FBQU0sSUFBSSxJQUFJLENBQUMsWUFBWSxFQUFFO1lBQzVCLE1BQU0sY0FBYyxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsV0FBVyxDQUFDLFVBQVUsQ0FBQztZQUNoRSxNQUFNLFVBQVUsR0FBRyxPQUFPLEtBQUssUUFBUSxJQUFJLE9BQU8sS0FBSyxVQUFVLENBQUM7WUFFbEUsSUFBSSxJQUFJLENBQUMsU0FBUyxJQUFJLE9BQU8sS0FBSyxHQUFHLEVBQUU7Z0JBQ3JDLElBQUksQ0FBQyxZQUFZLENBQUMsV0FBVyxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQzthQUNoRDtpQkFBTSxJQUFJLFVBQVUsSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFLEVBQUU7Z0JBQ3hDLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQzthQUNsQjtZQUVELElBQUksVUFBVSxJQUFJLElBQUksQ0FBQyxZQUFZLENBQUMsV0FBVyxDQUFDLFVBQVUsS0FBSyxjQUFjLEVBQUU7Z0JBQzdFLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxXQUFXLENBQUMsZUFBZSxJQUFJLENBQUMsQ0FBQyxDQUFDO2FBQzFFO1NBQ0Y7SUFDSCxDQUFDO0lBRUQsWUFBWSxDQUFDLEtBQW9CO1FBQy9CLElBQUksTUFBTSxHQUFHLEtBQUssQ0FBQyxNQUEwQixDQUFDO1FBQzlDLElBQUksS0FBSyxHQUEyQixNQUFNLENBQUMsS0FBSyxDQUFDO1FBRWpELDZDQUE2QztRQUM3QyxJQUFJLE1BQU0sQ0FBQyxJQUFJLEtBQUssUUFBUSxFQUFFO1lBQzVCLEtBQUssR0FBRyxLQUFLLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQztTQUNoRDtRQUVELCtFQUErRTtRQUMvRSw4RUFBOEU7UUFDOUUsNkVBQTZFO1FBQzdFLG1EQUFtRDtRQUNuRCxpRUFBaUU7UUFDakUsSUFBSSxJQUFJLENBQUMsY0FBYyxLQUFLLEtBQUssRUFBRTtZQUNqQyxJQUFJLENBQUMsY0FBYyxHQUFHLEtBQUssQ0FBQztZQUM1QixJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBRXRCLElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRSxJQUFJLElBQUksQ0FBQyxTQUFTLENBQUMsYUFBYSxLQUFLLEtBQUssQ0FBQyxNQUFNLEVBQUU7Z0JBQ3BFLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQzthQUNsQjtTQUNGO0lBQ0gsQ0FBQztJQUVELFlBQVk7UUFDVixJQUFJLENBQUMsSUFBSSxDQUFDLG1CQUFtQixFQUFFO1lBQzdCLElBQUksQ0FBQyxtQkFBbUIsR0FBRyxJQUFJLENBQUM7U0FDakM7YUFBTSxJQUFJLElBQUksQ0FBQyxRQUFRLEVBQUUsRUFBRTtZQUMxQixJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQztZQUN4RCxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7WUFDdEIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQztTQUN4QjtJQUNILENBQUM7SUFFRDs7Ozs7T0FLRztJQUNLLFdBQVcsQ0FBQyxhQUFhLEdBQUcsS0FBSztRQUN2QyxJQUFJLElBQUksQ0FBQyxVQUFVLElBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQyxVQUFVLEtBQUssTUFBTSxFQUFFO1lBQzVELElBQUksYUFBYSxFQUFFO2dCQUNqQixJQUFJLENBQUMsVUFBVSxDQUFDLG9CQUFvQixFQUFFLENBQUM7YUFDeEM7aUJBQU07Z0JBQ0wsSUFBSSxDQUFDLFVBQVUsQ0FBQyxVQUFVLEdBQUcsUUFBUSxDQUFDO2FBQ3ZDO1lBRUQsSUFBSSxDQUFDLHNCQUFzQixHQUFHLElBQUksQ0FBQztTQUNwQztJQUNILENBQUM7SUFFRCw4RUFBOEU7SUFDdEUsV0FBVztRQUNqQixJQUFJLElBQUksQ0FBQyxzQkFBc0IsRUFBRTtZQUMvQixJQUFJLENBQUMsVUFBVSxDQUFDLFVBQVUsR0FBRyxNQUFNLENBQUM7WUFDcEMsSUFBSSxDQUFDLHNCQUFzQixHQUFHLEtBQUssQ0FBQztTQUNyQztJQUNILENBQUM7SUFFRDs7O09BR0c7SUFDSywwQkFBMEI7UUFDaEMsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3RELE1BQU0sYUFBYSxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQzFELEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsbUJBQW1CLEVBQUUsQ0FBQztRQUN2RCxxRUFBcUU7UUFDckUsOERBQThEO1FBQzlELEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FDVCxDQUFDO1FBRUYseUVBQXlFO1FBQ3pFLE9BQU8sS0FBSyxDQUFDLFdBQVcsRUFBRSxhQUFhLENBQUM7YUFDbkMsSUFBSTtRQUNELDZFQUE2RTtRQUM3RSwrRUFBK0U7UUFDL0UsU0FBUyxDQUFDLEdBQUcsRUFBRTtZQUNiLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUM7WUFDL0IsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7WUFDeEIsSUFBSSxDQUFDLFlBQVksQ0FBQyxjQUFjLEVBQUUsQ0FBQztZQUVuQyxJQUFJLElBQUksQ0FBQyxTQUFTLEVBQUU7Z0JBQ2xCLElBQUksQ0FBQyxXQUFZLENBQUMsY0FBYyxFQUFFLENBQUM7Z0JBRW5DLDhFQUE4RTtnQkFDOUUsOEVBQThFO2dCQUM5RSw0RUFBNEU7Z0JBQzVFLHVFQUF1RTtnQkFDdkUsSUFBSSxPQUFPLEtBQUssSUFBSSxDQUFDLFNBQVMsRUFBRTtvQkFDOUIsSUFBSSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLENBQUM7aUJBQ2pDO2FBQ0Y7WUFFRCxPQUFPLElBQUksQ0FBQyxtQkFBbUIsQ0FBQztRQUNsQyxDQUFDLENBQUM7UUFDRix5Q0FBeUM7UUFDekMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ1osZ0RBQWdEO2FBQy9DLFNBQVMsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBQ3pELENBQUM7SUFFRCxrREFBa0Q7SUFDMUMsYUFBYTtRQUNuQixJQUFJLElBQUksQ0FBQyxXQUFXLEVBQUU7WUFDcEIsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1lBQ2xCLElBQUksQ0FBQyxXQUFXLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDM0IsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUM7U0FDekI7SUFDSCxDQUFDO0lBRU8sZ0JBQWdCLENBQUMsS0FBVTtRQUNqQyxNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsWUFBWSxJQUFJLElBQUksQ0FBQyxZQUFZLENBQUMsV0FBVyxDQUFDLENBQUM7WUFDcEUsSUFBSSxDQUFDLFlBQVksQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztZQUN0QyxLQUFLLENBQUM7UUFFUiwrRkFBK0Y7UUFDL0YsNEZBQTRGO1FBQzVGLE1BQU0sVUFBVSxHQUFHLFNBQVMsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1FBRXRELDJGQUEyRjtRQUMzRiw0QkFBNEI7UUFDNUIsSUFBSSxJQUFJLENBQUMsVUFBVSxFQUFFO1lBQ25CLElBQUksQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLEtBQUssR0FBRyxVQUFVLENBQUM7U0FDN0M7YUFBTTtZQUNMLElBQUksQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDLEtBQUssR0FBRyxVQUFVLENBQUM7U0FDaEQ7UUFFRCxJQUFJLENBQUMsY0FBYyxHQUFHLFVBQVUsQ0FBQztJQUNuQyxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNLLGlCQUFpQixDQUFDLEtBQXNDO1FBQzlELElBQUksS0FBSyxJQUFJLEtBQUssQ0FBQyxNQUFNLEVBQUU7WUFDekIsSUFBSSxDQUFDLDRCQUE0QixDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUNoRCxJQUFJLENBQUMsZ0JBQWdCLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUMxQyxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDbkMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDcEMsSUFBSSxDQUFDLFlBQVksQ0FBQyxnQkFBZ0IsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUM7U0FDbEQ7UUFFRCxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7SUFDcEIsQ0FBQztJQUVEOztPQUVHO0lBQ0ssNEJBQTRCLENBQUMsSUFBZTtRQUNsRCxJQUFJLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLEVBQUU7WUFDekMsSUFBSSxNQUFNLEtBQUssSUFBSSxJQUFJLE1BQU0sQ0FBQyxRQUFRLEVBQUU7Z0JBQ3RDLE1BQU0sQ0FBQyxRQUFRLEVBQUUsQ0FBQzthQUNuQjtRQUNILENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVPLGNBQWM7O1FBQ3BCLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxJQUFJLENBQUMsT0FBTyxTQUFTLEtBQUssV0FBVyxJQUFJLFNBQVMsQ0FBQyxFQUFFO1lBQ3pFLE1BQU0sbUNBQW1DLEVBQUUsQ0FBQztTQUM3QztRQUVELElBQUksVUFBVSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUM7UUFFbEMsSUFBSSxDQUFDLFVBQVUsRUFBRTtZQUNmLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxjQUFjLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxRQUFRLEVBQzFELElBQUksQ0FBQyxpQkFBaUIsRUFDdEIsRUFBQyxFQUFFLEVBQUUsTUFBQSxJQUFJLENBQUMsVUFBVSwwQ0FBRSxVQUFVLEVBQUUsRUFBQyxDQUFDLENBQUM7WUFDdkMsVUFBVSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDLENBQUM7WUFDNUQsSUFBSSxDQUFDLFdBQVcsR0FBRyxVQUFVLENBQUM7WUFFOUIsd0RBQXdEO1lBQ3hELDJEQUEyRDtZQUMzRCxVQUFVLENBQUMsYUFBYSxFQUFFLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxFQUFFO2dCQUMzQyw4RUFBOEU7Z0JBQzlFLGtGQUFrRjtnQkFDbEYsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLEtBQUssTUFBTSxJQUFJLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQyxDQUFDO29CQUNwRCxDQUFDLEtBQUssQ0FBQyxPQUFPLEtBQUssUUFBUSxJQUFJLGNBQWMsQ0FBQyxLQUFLLEVBQUUsUUFBUSxDQUFDLENBQUMsRUFBRTtvQkFDbkUsSUFBSSxDQUFDLG9CQUFvQixDQUFDLElBQUksRUFBRSxDQUFDO29CQUNqQyxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztvQkFFeEIsbUVBQW1FO29CQUNuRSwrREFBK0Q7b0JBQy9ELEtBQUssQ0FBQyxlQUFlLEVBQUUsQ0FBQztvQkFDeEIsS0FBSyxDQUFDLGNBQWMsRUFBRSxDQUFDO2lCQUN4QjtZQUNILENBQUMsQ0FBQyxDQUFDO1lBRUgsSUFBSSxDQUFDLHFCQUFxQixHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsTUFBTSxFQUFFLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRTtnQkFDdkUsSUFBSSxJQUFJLENBQUMsU0FBUyxJQUFJLFVBQVUsRUFBRTtvQkFDaEMsVUFBVSxDQUFDLFVBQVUsQ0FBQyxFQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsY0FBYyxFQUFFLEVBQUMsQ0FBQyxDQUFDO2lCQUN2RDtZQUNILENBQUMsQ0FBQyxDQUFDO1NBQ0o7YUFBTTtZQUNMLCtFQUErRTtZQUMvRSxJQUFJLENBQUMsaUJBQWlCLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxvQkFBb0IsRUFBRSxDQUFDLENBQUM7WUFDOUQsVUFBVSxDQUFDLFVBQVUsQ0FBQyxFQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsY0FBYyxFQUFFLEVBQUMsQ0FBQyxDQUFDO1NBQ3ZEO1FBRUQsSUFBSSxVQUFVLElBQUksQ0FBQyxVQUFVLENBQUMsV0FBVyxFQUFFLEVBQUU7WUFDM0MsVUFBVSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDaEMsSUFBSSxDQUFDLDJCQUEyQixHQUFHLElBQUksQ0FBQywwQkFBMEIsRUFBRSxDQUFDO1NBQ3RFO1FBRUQsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQztRQUUvQixJQUFJLENBQUMsWUFBWSxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBQ25DLElBQUksQ0FBQyxZQUFZLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLENBQUM7UUFFekQsZ0VBQWdFO1FBQ2hFLHVEQUF1RDtRQUN2RCxJQUFJLElBQUksQ0FBQyxTQUFTLElBQUksT0FBTyxLQUFLLElBQUksQ0FBQyxTQUFTLEVBQUU7WUFDaEQsSUFBSSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLENBQUM7U0FDakM7SUFDSCxDQUFDO0lBRU8saUJBQWlCOztRQUN2QixPQUFPLElBQUksYUFBYSxDQUFDO1lBQ3ZCLGdCQUFnQixFQUFFLElBQUksQ0FBQyxtQkFBbUIsRUFBRTtZQUM1QyxjQUFjLEVBQUUsSUFBSSxDQUFDLGVBQWUsRUFBRTtZQUN0QyxLQUFLLEVBQUUsSUFBSSxDQUFDLGNBQWMsRUFBRTtZQUM1QixTQUFTLEVBQUUsSUFBSSxDQUFDLElBQUk7WUFDcEIsVUFBVSxFQUFFLE1BQUEsSUFBSSxDQUFDLFNBQVMsMENBQUUsaUJBQWlCO1NBQzlDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFTyxtQkFBbUI7UUFDekIsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLEVBQUU7YUFDdEMsbUJBQW1CLENBQUMsSUFBSSxDQUFDLG9CQUFvQixFQUFFLENBQUM7YUFDaEQsc0JBQXNCLENBQUMsS0FBSyxDQUFDO2FBQzdCLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUVuQixJQUFJLENBQUMscUJBQXFCLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDckMsSUFBSSxDQUFDLGlCQUFpQixHQUFHLFFBQVEsQ0FBQztRQUNsQyxPQUFPLFFBQVEsQ0FBQztJQUNsQixDQUFDO0lBRUQsc0ZBQXNGO0lBQzlFLHFCQUFxQixDQUFDLGdCQUFtRDtRQUMvRSwwRkFBMEY7UUFDMUYsaUZBQWlGO1FBQ2pGLE1BQU0sY0FBYyxHQUF3QjtZQUMxQyxFQUFDLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUM7WUFDekUsRUFBQyxPQUFPLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFDO1NBQ3RFLENBQUM7UUFFRiwrRUFBK0U7UUFDL0UseUVBQXlFO1FBQ3pFLCtDQUErQztRQUMvQyxNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDO1FBQ3BDLE1BQU0sY0FBYyxHQUF3QjtZQUMxQyxFQUFDLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsVUFBVSxFQUFDO1lBQ3JGLEVBQUMsT0FBTyxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxVQUFVLEVBQUM7U0FDbEYsQ0FBQztRQUVGLElBQUksU0FBOEIsQ0FBQztRQUVuQyxJQUFJLElBQUksQ0FBQyxRQUFRLEtBQUssT0FBTyxFQUFFO1lBQzdCLFNBQVMsR0FBRyxjQUFjLENBQUM7U0FDNUI7YUFBTSxJQUFJLElBQUksQ0FBQyxRQUFRLEtBQUssT0FBTyxFQUFFO1lBQ3BDLFNBQVMsR0FBRyxjQUFjLENBQUM7U0FDNUI7YUFBTTtZQUNMLFNBQVMsR0FBRyxDQUFDLEdBQUcsY0FBYyxFQUFFLEdBQUcsY0FBYyxDQUFDLENBQUM7U0FDcEQ7UUFFRCxnQkFBZ0IsQ0FBQyxhQUFhLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDNUMsQ0FBQztJQUVPLG9CQUFvQjtRQUMxQixJQUFJLElBQUksQ0FBQyxXQUFXLEVBQUU7WUFDcEIsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLFVBQVUsQ0FBQztTQUNwQztRQUVELE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyx5QkFBeUIsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDO0lBQ3ZGLENBQUM7SUFFTyxjQUFjO1FBQ3BCLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQyxVQUFVLElBQUksSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO0lBQzlELENBQUM7SUFFRCwrRUFBK0U7SUFDdkUsYUFBYTtRQUNuQixPQUFPLElBQUksQ0FBQyxvQkFBb0IsRUFBRSxDQUFDLGFBQWEsQ0FBQyxxQkFBcUIsRUFBRSxDQUFDLEtBQUssQ0FBQztJQUNqRixDQUFDO0lBRUQ7OztPQUdHO0lBQ0ssZ0JBQWdCO1FBQ3RCLE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUM7UUFFdkMsSUFBSSxZQUFZLENBQUMscUJBQXFCLEVBQUU7WUFDdEMsd0ZBQXdGO1lBQ3hGLDhFQUE4RTtZQUM5RSxZQUFZLENBQUMsV0FBVyxDQUFDLGtCQUFrQixFQUFFLENBQUM7U0FDL0M7YUFBTTtZQUNMLFlBQVksQ0FBQyxXQUFXLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7U0FDNUM7SUFDSCxDQUFDO0lBRUQsa0RBQWtEO0lBQzFDLFFBQVE7UUFDZCxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLGFBQWEsQ0FBQztRQUM1QyxPQUFPLENBQUMsT0FBTyxDQUFDLFFBQVEsSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLElBQUksQ0FBQyxJQUFJLENBQUMscUJBQXFCLENBQUM7SUFDL0UsQ0FBQztJQUVELCtGQUErRjtJQUN2RixVQUFVOztRQUNoQixPQUFPLENBQUEsTUFBQSxJQUFJLENBQUMsU0FBUywwQ0FBRSxXQUFXLEtBQUksTUFBTSxDQUFDO0lBQy9DLENBQUM7SUFFRCxrREFBa0Q7SUFDMUMsZUFBZSxDQUFDLEtBQWE7UUFDbkMseUZBQXlGO1FBQ3pGLHlGQUF5RjtRQUN6Rix5RkFBeUY7UUFDekYseUZBQXlGO1FBQ3pGLCtGQUErRjtRQUMvRiwrRkFBK0Y7UUFDL0YsZ0JBQWdCO1FBQ2hCLE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUM7UUFDdkMsTUFBTSxVQUFVLEdBQUcsNkJBQTZCLENBQUMsS0FBSyxFQUNwRCxZQUFZLENBQUMsT0FBTyxFQUFFLFlBQVksQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUVuRCxJQUFJLEtBQUssS0FBSyxDQUFDLElBQUksVUFBVSxLQUFLLENBQUMsRUFBRTtZQUNuQyw4RUFBOEU7WUFDOUUsK0VBQStFO1lBQy9FLCtFQUErRTtZQUMvRSxZQUFZLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDO1NBQy9CO2FBQU0sSUFBSSxZQUFZLENBQUMsS0FBSyxFQUFFO1lBQzdCLE1BQU0sTUFBTSxHQUFHLFlBQVksQ0FBQyxPQUFPLENBQUMsT0FBTyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUM7WUFFckQsSUFBSSxNQUFNLEVBQUU7Z0JBQ1YsTUFBTSxPQUFPLEdBQUcsTUFBTSxDQUFDLGVBQWUsRUFBRSxDQUFDO2dCQUN6QyxNQUFNLGlCQUFpQixHQUFHLHdCQUF3QixDQUNoRCxPQUFPLENBQUMsU0FBUyxFQUNqQixPQUFPLENBQUMsWUFBWSxFQUNwQixZQUFZLENBQUMsYUFBYSxFQUFFLEVBQzVCLFlBQVksQ0FBQyxLQUFLLENBQUMsYUFBYSxDQUFDLFlBQVksQ0FDOUMsQ0FBQztnQkFFRixZQUFZLENBQUMsYUFBYSxDQUFDLGlCQUFpQixDQUFDLENBQUM7YUFDL0M7U0FDRjtJQUNILENBQUM7OztZQXZvQkYsU0FBUzs7O1lBckVSLFVBQVU7WUFmVixPQUFPO1lBd0JQLGdCQUFnQjtZQUhoQixNQUFNO1lBUk4saUJBQWlCOzRDQWtLSixNQUFNLFNBQUMsZ0NBQWdDO1lBcEw5QyxjQUFjLHVCQXFMUCxRQUFRO1lBN0lDLFlBQVksdUJBOElyQixRQUFRLFlBQUksTUFBTSxTQUFDLGNBQWMsY0FBRyxJQUFJOzRDQUN4QyxRQUFRLFlBQUksTUFBTSxTQUFDLFFBQVE7WUF6S2xDLGFBQWE7NENBMktOLFFBQVEsWUFBSSxNQUFNLFNBQUMsZ0NBQWdDOzs7MkJBMUMvRCxLQUFLLFNBQUMsaUJBQWlCO3VCQVN2QixLQUFLLFNBQUMseUJBQXlCOzBCQU0vQixLQUFLLFNBQUMsNEJBQTRCO29DQU1sQyxLQUFLLFNBQUMsY0FBYzttQ0FNcEIsS0FBSyxTQUFDLHlCQUF5Qjs7QUFpbEJsQyxNQUFNLE9BQU8sc0JBQXVCLFNBQVEsMkJBQTJCO0lBckJ2RTs7UUFzQlksZ0JBQVcsR0FBRyw4QkFBOEIsQ0FBQztJQUN6RCxDQUFDOzs7WUF2QkEsU0FBUyxTQUFDO2dCQUNULFFBQVEsRUFBRSxtREFBbUQ7Z0JBQzdELElBQUksRUFBRTtvQkFDSixPQUFPLEVBQUUsMEJBQTBCO29CQUNuQyxxQkFBcUIsRUFBRSx1QkFBdUI7b0JBQzlDLGFBQWEsRUFBRSwwQ0FBMEM7b0JBQ3pELDBCQUEwQixFQUFFLHNDQUFzQztvQkFDbEUsOEJBQThCLEVBQUUsc0RBQXNEO29CQUN0RixzQkFBc0IsRUFBRSxvREFBb0Q7b0JBQzVFLGtCQUFrQixFQUFFLGdFQUFnRTtvQkFDcEYsc0JBQXNCLEVBQUUsdUJBQXVCO29CQUMvQyw0RUFBNEU7b0JBQzVFLGtGQUFrRjtvQkFDbEYsV0FBVyxFQUFFLGdCQUFnQjtvQkFDN0IsUUFBUSxFQUFFLGNBQWM7b0JBQ3hCLFNBQVMsRUFBRSxzQkFBc0I7b0JBQ2pDLFdBQVcsRUFBRSx3QkFBd0I7aUJBQ3RDO2dCQUNELFFBQVEsRUFBRSx3QkFBd0I7Z0JBQ2xDLFNBQVMsRUFBRSxDQUFDLCtCQUErQixDQUFDO2FBQzdDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZVxuICovXG5pbXBvcnQge0RpcmVjdGlvbmFsaXR5fSBmcm9tICdAYW5ndWxhci9jZGsvYmlkaSc7XG5pbXBvcnQge0Jvb2xlYW5JbnB1dCwgY29lcmNlQm9vbGVhblByb3BlcnR5fSBmcm9tICdAYW5ndWxhci9jZGsvY29lcmNpb24nO1xuaW1wb3J0IHtET1dOX0FSUk9XLCBFTlRFUiwgRVNDQVBFLCBUQUIsIFVQX0FSUk9XLCBoYXNNb2RpZmllcktleX0gZnJvbSAnQGFuZ3VsYXIvY2RrL2tleWNvZGVzJztcbmltcG9ydCB7XG4gIEZsZXhpYmxlQ29ubmVjdGVkUG9zaXRpb25TdHJhdGVneSxcbiAgT3ZlcmxheSxcbiAgT3ZlcmxheUNvbmZpZyxcbiAgT3ZlcmxheVJlZixcbiAgUG9zaXRpb25TdHJhdGVneSxcbiAgU2Nyb2xsU3RyYXRlZ3ksXG4gIENvbm5lY3RlZFBvc2l0aW9uLFxufSBmcm9tICdAYW5ndWxhci9jZGsvb3ZlcmxheSc7XG5pbXBvcnQge19nZXRFdmVudFRhcmdldH0gZnJvbSAnQGFuZ3VsYXIvY2RrL3BsYXRmb3JtJztcbmltcG9ydCB7VGVtcGxhdGVQb3J0YWx9IGZyb20gJ0Bhbmd1bGFyL2Nkay9wb3J0YWwnO1xuaW1wb3J0IHtWaWV3cG9ydFJ1bGVyfSBmcm9tICdAYW5ndWxhci9jZGsvc2Nyb2xsaW5nJztcbmltcG9ydCB7RE9DVU1FTlR9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge1xuICBBZnRlclZpZXdJbml0LFxuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgRGlyZWN0aXZlLFxuICBFbGVtZW50UmVmLFxuICBmb3J3YXJkUmVmLFxuICBIb3N0LFxuICBJbmplY3QsXG4gIEluamVjdGlvblRva2VuLFxuICBJbnB1dCxcbiAgTmdab25lLFxuICBPbkRlc3Ryb3ksXG4gIE9wdGlvbmFsLFxuICBWaWV3Q29udGFpbmVyUmVmLFxuICBPbkNoYW5nZXMsXG4gIFNpbXBsZUNoYW5nZXMsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtDb250cm9sVmFsdWVBY2Nlc3NvciwgTkdfVkFMVUVfQUNDRVNTT1J9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7XG4gIF9jb3VudEdyb3VwTGFiZWxzQmVmb3JlT3B0aW9uLFxuICBfZ2V0T3B0aW9uU2Nyb2xsUG9zaXRpb24sXG4gIE1hdE9wdGlvbixcbiAgTWF0T3B0aW9uU2VsZWN0aW9uQ2hhbmdlLFxufSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9jb3JlJztcbmltcG9ydCB7TUFUX0ZPUk1fRklFTEQsIE1hdEZvcm1GaWVsZH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZm9ybS1maWVsZCc7XG5pbXBvcnQge2RlZmVyLCBmcm9tRXZlbnQsIG1lcmdlLCBPYnNlcnZhYmxlLCBvZiBhcyBvYnNlcnZhYmxlT2YsIFN1YmplY3QsIFN1YnNjcmlwdGlvbn0gZnJvbSAncnhqcyc7XG5pbXBvcnQge2RlbGF5LCBmaWx0ZXIsIG1hcCwgc3dpdGNoTWFwLCB0YWtlLCB0YXB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHtcbiAgX01hdEF1dG9jb21wbGV0ZUJhc2UsXG4gIE1BVF9BVVRPQ09NUExFVEVfREVGQVVMVF9PUFRJT05TLFxuICBNYXRBdXRvY29tcGxldGVEZWZhdWx0T3B0aW9uc1xufSBmcm9tICcuL2F1dG9jb21wbGV0ZSc7XG5pbXBvcnQge19NYXRBdXRvY29tcGxldGVPcmlnaW5CYXNlfSBmcm9tICcuL2F1dG9jb21wbGV0ZS1vcmlnaW4nO1xuXG5cbi8qKiBJbmplY3Rpb24gdG9rZW4gdGhhdCBkZXRlcm1pbmVzIHRoZSBzY3JvbGwgaGFuZGxpbmcgd2hpbGUgdGhlIGF1dG9jb21wbGV0ZSBwYW5lbCBpcyBvcGVuLiAqL1xuZXhwb3J0IGNvbnN0IE1BVF9BVVRPQ09NUExFVEVfU0NST0xMX1NUUkFURUdZID1cbiAgICBuZXcgSW5qZWN0aW9uVG9rZW48KCkgPT4gU2Nyb2xsU3RyYXRlZ3k+KCdtYXQtYXV0b2NvbXBsZXRlLXNjcm9sbC1zdHJhdGVneScpO1xuXG4vKiogQGRvY3MtcHJpdmF0ZSAqL1xuZXhwb3J0IGZ1bmN0aW9uIE1BVF9BVVRPQ09NUExFVEVfU0NST0xMX1NUUkFURUdZX0ZBQ1RPUlkob3ZlcmxheTogT3ZlcmxheSk6ICgpID0+IFNjcm9sbFN0cmF0ZWd5IHtcbiAgcmV0dXJuICgpID0+IG92ZXJsYXkuc2Nyb2xsU3RyYXRlZ2llcy5yZXBvc2l0aW9uKCk7XG59XG5cbi8qKiBAZG9jcy1wcml2YXRlICovXG5leHBvcnQgY29uc3QgTUFUX0FVVE9DT01QTEVURV9TQ1JPTExfU1RSQVRFR1lfRkFDVE9SWV9QUk9WSURFUiA9IHtcbiAgcHJvdmlkZTogTUFUX0FVVE9DT01QTEVURV9TQ1JPTExfU1RSQVRFR1ksXG4gIGRlcHM6IFtPdmVybGF5XSxcbiAgdXNlRmFjdG9yeTogTUFUX0FVVE9DT01QTEVURV9TQ1JPTExfU1RSQVRFR1lfRkFDVE9SWSxcbn07XG5cbi8qKlxuICogUHJvdmlkZXIgdGhhdCBhbGxvd3MgdGhlIGF1dG9jb21wbGV0ZSB0byByZWdpc3RlciBhcyBhIENvbnRyb2xWYWx1ZUFjY2Vzc29yLlxuICogQGRvY3MtcHJpdmF0ZVxuICovXG5leHBvcnQgY29uc3QgTUFUX0FVVE9DT01QTEVURV9WQUxVRV9BQ0NFU1NPUjogYW55ID0ge1xuICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcbiAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gTWF0QXV0b2NvbXBsZXRlVHJpZ2dlciksXG4gIG11bHRpOiB0cnVlXG59O1xuXG4vKipcbiAqIENyZWF0ZXMgYW4gZXJyb3IgdG8gYmUgdGhyb3duIHdoZW4gYXR0ZW1wdGluZyB0byB1c2UgYW4gYXV0b2NvbXBsZXRlIHRyaWdnZXIgd2l0aG91dCBhIHBhbmVsLlxuICogQGRvY3MtcHJpdmF0ZVxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0TWF0QXV0b2NvbXBsZXRlTWlzc2luZ1BhbmVsRXJyb3IoKTogRXJyb3Ige1xuICByZXR1cm4gRXJyb3IoJ0F0dGVtcHRpbmcgdG8gb3BlbiBhbiB1bmRlZmluZWQgaW5zdGFuY2Ugb2YgYG1hdC1hdXRvY29tcGxldGVgLiAnICtcbiAgICAgICAgICAgICAgICdNYWtlIHN1cmUgdGhhdCB0aGUgaWQgcGFzc2VkIHRvIHRoZSBgbWF0QXV0b2NvbXBsZXRlYCBpcyBjb3JyZWN0IGFuZCB0aGF0ICcgK1xuICAgICAgICAgICAgICAgJ3lvdVxcJ3JlIGF0dGVtcHRpbmcgdG8gb3BlbiBpdCBhZnRlciB0aGUgbmdBZnRlckNvbnRlbnRJbml0IGhvb2suJyk7XG59XG5cbi8qKiBCYXNlIGNsYXNzIHdpdGggYWxsIG9mIHRoZSBgTWF0QXV0b2NvbXBsZXRlVHJpZ2dlcmAgZnVuY3Rpb25hbGl0eS4gKi9cbkBEaXJlY3RpdmUoKVxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIF9NYXRBdXRvY29tcGxldGVUcmlnZ2VyQmFzZSBpbXBsZW1lbnRzIENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBBZnRlclZpZXdJbml0LFxuICBPbkNoYW5nZXMsIE9uRGVzdHJveSB7XG5cbiAgcHJpdmF0ZSBfb3ZlcmxheVJlZjogT3ZlcmxheVJlZiB8IG51bGw7XG4gIHByaXZhdGUgX3BvcnRhbDogVGVtcGxhdGVQb3J0YWw7XG4gIHByaXZhdGUgX2NvbXBvbmVudERlc3Ryb3llZCA9IGZhbHNlO1xuICBwcml2YXRlIF9hdXRvY29tcGxldGVEaXNhYmxlZCA9IGZhbHNlO1xuICBwcml2YXRlIF9zY3JvbGxTdHJhdGVneTogKCkgPT4gU2Nyb2xsU3RyYXRlZ3k7XG5cbiAgLyoqIE9sZCB2YWx1ZSBvZiB0aGUgbmF0aXZlIGlucHV0LiBVc2VkIHRvIHdvcmsgYXJvdW5kIGlzc3VlcyB3aXRoIHRoZSBgaW5wdXRgIGV2ZW50IG9uIElFLiAqL1xuICBwcml2YXRlIF9wcmV2aW91c1ZhbHVlOiBzdHJpbmcgfCBudW1iZXIgfCBudWxsO1xuXG4gIC8qKiBTdHJhdGVneSB0aGF0IGlzIHVzZWQgdG8gcG9zaXRpb24gdGhlIHBhbmVsLiAqL1xuICBwcml2YXRlIF9wb3NpdGlvblN0cmF0ZWd5OiBGbGV4aWJsZUNvbm5lY3RlZFBvc2l0aW9uU3RyYXRlZ3k7XG5cbiAgLyoqIFdoZXRoZXIgb3Igbm90IHRoZSBsYWJlbCBzdGF0ZSBpcyBiZWluZyBvdmVycmlkZGVuLiAqL1xuICBwcml2YXRlIF9tYW51YWxseUZsb2F0aW5nTGFiZWwgPSBmYWxzZTtcblxuICAvKiogVGhlIHN1YnNjcmlwdGlvbiBmb3IgY2xvc2luZyBhY3Rpb25zIChzb21lIGFyZSBib3VuZCB0byBkb2N1bWVudCkuICovXG4gIHByaXZhdGUgX2Nsb3NpbmdBY3Rpb25zU3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XG5cbiAgLyoqIFN1YnNjcmlwdGlvbiB0byB2aWV3cG9ydCBzaXplIGNoYW5nZXMuICovXG4gIHByaXZhdGUgX3ZpZXdwb3J0U3Vic2NyaXB0aW9uID0gU3Vic2NyaXB0aW9uLkVNUFRZO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRoZSBhdXRvY29tcGxldGUgY2FuIG9wZW4gdGhlIG5leHQgdGltZSBpdCBpcyBmb2N1c2VkLiBVc2VkIHRvIHByZXZlbnQgYSBmb2N1c2VkLFxuICAgKiBjbG9zZWQgYXV0b2NvbXBsZXRlIGZyb20gYmVpbmcgcmVvcGVuZWQgaWYgdGhlIHVzZXIgc3dpdGNoZXMgdG8gYW5vdGhlciBicm93c2VyIHRhYiBhbmQgdGhlblxuICAgKiBjb21lcyBiYWNrLlxuICAgKi9cbiAgcHJpdmF0ZSBfY2FuT3Blbk9uTmV4dEZvY3VzID0gdHJ1ZTtcblxuICAvKiogU3RyZWFtIG9mIGtleWJvYXJkIGV2ZW50cyB0aGF0IGNhbiBjbG9zZSB0aGUgcGFuZWwuICovXG4gIHByaXZhdGUgcmVhZG9ubHkgX2Nsb3NlS2V5RXZlbnRTdHJlYW0gPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gIC8qKlxuICAgKiBFdmVudCBoYW5kbGVyIGZvciB3aGVuIHRoZSB3aW5kb3cgaXMgYmx1cnJlZC4gTmVlZHMgdG8gYmUgYW5cbiAgICogYXJyb3cgZnVuY3Rpb24gaW4gb3JkZXIgdG8gcHJlc2VydmUgdGhlIGNvbnRleHQuXG4gICAqL1xuICBwcml2YXRlIF93aW5kb3dCbHVySGFuZGxlciA9ICgpID0+IHtcbiAgICAvLyBJZiB0aGUgdXNlciBibHVycmVkIHRoZSB3aW5kb3cgd2hpbGUgdGhlIGF1dG9jb21wbGV0ZSBpcyBmb2N1c2VkLCBpdCBtZWFucyB0aGF0IGl0J2xsIGJlXG4gICAgLy8gcmVmb2N1c2VkIHdoZW4gdGhleSBjb21lIGJhY2suIEluIHRoaXMgY2FzZSB3ZSB3YW50IHRvIHNraXAgdGhlIGZpcnN0IGZvY3VzIGV2ZW50LCBpZiB0aGVcbiAgICAvLyBwYW5lIHdhcyBjbG9zZWQsIGluIG9yZGVyIHRvIGF2b2lkIHJlb3BlbmluZyBpdCB1bmludGVudGlvbmFsbHkuXG4gICAgdGhpcy5fY2FuT3Blbk9uTmV4dEZvY3VzID1cbiAgICAgICAgdGhpcy5fZG9jdW1lbnQuYWN0aXZlRWxlbWVudCAhPT0gdGhpcy5fZWxlbWVudC5uYXRpdmVFbGVtZW50IHx8IHRoaXMucGFuZWxPcGVuO1xuICB9XG5cbiAgLyoqIGBWaWV3IC0+IG1vZGVsIGNhbGxiYWNrIGNhbGxlZCB3aGVuIHZhbHVlIGNoYW5nZXNgICovXG4gIF9vbkNoYW5nZTogKHZhbHVlOiBhbnkpID0+IHZvaWQgPSAoKSA9PiB7fTtcblxuICAvKiogYFZpZXcgLT4gbW9kZWwgY2FsbGJhY2sgY2FsbGVkIHdoZW4gYXV0b2NvbXBsZXRlIGhhcyBiZWVuIHRvdWNoZWRgICovXG4gIF9vblRvdWNoZWQgPSAoKSA9PiB7fTtcblxuICAvKiogVGhlIGF1dG9jb21wbGV0ZSBwYW5lbCB0byBiZSBhdHRhY2hlZCB0byB0aGlzIHRyaWdnZXIuICovXG4gIEBJbnB1dCgnbWF0QXV0b2NvbXBsZXRlJykgYXV0b2NvbXBsZXRlOiBfTWF0QXV0b2NvbXBsZXRlQmFzZTtcblxuICAvKipcbiAgICogUG9zaXRpb24gb2YgdGhlIGF1dG9jb21wbGV0ZSBwYW5lbCByZWxhdGl2ZSB0byB0aGUgdHJpZ2dlciBlbGVtZW50LiBBIHBvc2l0aW9uIG9mIGBhdXRvYFxuICAgKiB3aWxsIHJlbmRlciB0aGUgcGFuZWwgdW5kZXJuZWF0aCB0aGUgdHJpZ2dlciBpZiB0aGVyZSBpcyBlbm91Z2ggc3BhY2UgZm9yIGl0IHRvIGZpdCBpblxuICAgKiB0aGUgdmlld3BvcnQsIG90aGVyd2lzZSB0aGUgcGFuZWwgd2lsbCBiZSBzaG93biBhYm92ZSBpdC4gSWYgdGhlIHBvc2l0aW9uIGlzIHNldCB0b1xuICAgKiBgYWJvdmVgIG9yIGBiZWxvd2AsIHRoZSBwYW5lbCB3aWxsIGFsd2F5cyBiZSBzaG93biBhYm92ZSBvciBiZWxvdyB0aGUgdHJpZ2dlci4gbm8gbWF0dGVyXG4gICAqIHdoZXRoZXIgaXQgZml0cyBjb21wbGV0ZWx5IGluIHRoZSB2aWV3cG9ydC5cbiAgICovXG4gIEBJbnB1dCgnbWF0QXV0b2NvbXBsZXRlUG9zaXRpb24nKSBwb3NpdGlvbjogJ2F1dG8nIHwgJ2Fib3ZlJyB8ICdiZWxvdycgPSAnYXV0byc7XG5cbiAgLyoqXG4gICAqIFJlZmVyZW5jZSByZWxhdGl2ZSB0byB3aGljaCB0byBwb3NpdGlvbiB0aGUgYXV0b2NvbXBsZXRlIHBhbmVsLlxuICAgKiBEZWZhdWx0cyB0byB0aGUgYXV0b2NvbXBsZXRlIHRyaWdnZXIgZWxlbWVudC5cbiAgICovXG4gIEBJbnB1dCgnbWF0QXV0b2NvbXBsZXRlQ29ubmVjdGVkVG8nKSBjb25uZWN0ZWRUbzogX01hdEF1dG9jb21wbGV0ZU9yaWdpbkJhc2U7XG5cbiAgLyoqXG4gICAqIGBhdXRvY29tcGxldGVgIGF0dHJpYnV0ZSB0byBiZSBzZXQgb24gdGhlIGlucHV0IGVsZW1lbnQuXG4gICAqIEBkb2NzLXByaXZhdGVcbiAgICovXG4gIEBJbnB1dCgnYXV0b2NvbXBsZXRlJykgYXV0b2NvbXBsZXRlQXR0cmlidXRlOiBzdHJpbmcgPSAnb2ZmJztcblxuICAvKipcbiAgICogV2hldGhlciB0aGUgYXV0b2NvbXBsZXRlIGlzIGRpc2FibGVkLiBXaGVuIGRpc2FibGVkLCB0aGUgZWxlbWVudCB3aWxsXG4gICAqIGFjdCBhcyBhIHJlZ3VsYXIgaW5wdXQgYW5kIHRoZSB1c2VyIHdvbid0IGJlIGFibGUgdG8gb3BlbiB0aGUgcGFuZWwuXG4gICAqL1xuICBASW5wdXQoJ21hdEF1dG9jb21wbGV0ZURpc2FibGVkJylcbiAgZ2V0IGF1dG9jb21wbGV0ZURpc2FibGVkKCk6IGJvb2xlYW4geyByZXR1cm4gdGhpcy5fYXV0b2NvbXBsZXRlRGlzYWJsZWQ7IH1cbiAgc2V0IGF1dG9jb21wbGV0ZURpc2FibGVkKHZhbHVlOiBib29sZWFuKSB7XG4gICAgdGhpcy5fYXV0b2NvbXBsZXRlRGlzYWJsZWQgPSBjb2VyY2VCb29sZWFuUHJvcGVydHkodmFsdWUpO1xuICB9XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBfZWxlbWVudDogRWxlbWVudFJlZjxIVE1MSW5wdXRFbGVtZW50PiwgcHJpdmF0ZSBfb3ZlcmxheTogT3ZlcmxheSxcbiAgICAgICAgICAgICAgcHJpdmF0ZSBfdmlld0NvbnRhaW5lclJlZjogVmlld0NvbnRhaW5lclJlZixcbiAgICAgICAgICAgICAgcHJpdmF0ZSBfem9uZTogTmdab25lLFxuICAgICAgICAgICAgICBwcml2YXRlIF9jaGFuZ2VEZXRlY3RvclJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgICAgICAgICAgIEBJbmplY3QoTUFUX0FVVE9DT01QTEVURV9TQ1JPTExfU1RSQVRFR1kpIHNjcm9sbFN0cmF0ZWd5OiBhbnksXG4gICAgICAgICAgICAgIEBPcHRpb25hbCgpIHByaXZhdGUgX2RpcjogRGlyZWN0aW9uYWxpdHksXG4gICAgICAgICAgICAgIEBPcHRpb25hbCgpIEBJbmplY3QoTUFUX0ZPUk1fRklFTEQpIEBIb3N0KCkgcHJpdmF0ZSBfZm9ybUZpZWxkOiBNYXRGb3JtRmllbGQsXG4gICAgICAgICAgICAgIEBPcHRpb25hbCgpIEBJbmplY3QoRE9DVU1FTlQpIHByaXZhdGUgX2RvY3VtZW50OiBhbnksXG4gICAgICAgICAgICAgIHByaXZhdGUgX3ZpZXdwb3J0UnVsZXI6IFZpZXdwb3J0UnVsZXIsXG4gICAgICAgICAgICAgIEBPcHRpb25hbCgpIEBJbmplY3QoTUFUX0FVVE9DT01QTEVURV9ERUZBVUxUX09QVElPTlMpXG4gICAgICAgICAgICAgIHByaXZhdGUgX2RlZmF1bHRzPzogTWF0QXV0b2NvbXBsZXRlRGVmYXVsdE9wdGlvbnMpIHtcbiAgICB0aGlzLl9zY3JvbGxTdHJhdGVneSA9IHNjcm9sbFN0cmF0ZWd5O1xuICB9XG5cbiAgLyoqIENsYXNzIHRvIGFwcGx5IHRvIHRoZSBwYW5lbCB3aGVuIGl0J3MgYWJvdmUgdGhlIGlucHV0LiAqL1xuICBwcm90ZWN0ZWQgYWJzdHJhY3QgX2Fib3ZlQ2xhc3M6IHN0cmluZztcblxuICBuZ0FmdGVyVmlld0luaXQoKSB7XG4gICAgY29uc3Qgd2luZG93ID0gdGhpcy5fZ2V0V2luZG93KCk7XG5cbiAgICBpZiAodHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgIHRoaXMuX3pvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCkgPT4gd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ2JsdXInLCB0aGlzLl93aW5kb3dCbHVySGFuZGxlcikpO1xuICAgIH1cbiAgfVxuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpIHtcbiAgICBpZiAoY2hhbmdlc1sncG9zaXRpb24nXSAmJiB0aGlzLl9wb3NpdGlvblN0cmF0ZWd5KSB7XG4gICAgICB0aGlzLl9zZXRTdHJhdGVneVBvc2l0aW9ucyh0aGlzLl9wb3NpdGlvblN0cmF0ZWd5KTtcblxuICAgICAgaWYgKHRoaXMucGFuZWxPcGVuKSB7XG4gICAgICAgIHRoaXMuX292ZXJsYXlSZWYhLnVwZGF0ZVBvc2l0aW9uKCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgY29uc3Qgd2luZG93ID0gdGhpcy5fZ2V0V2luZG93KCk7XG5cbiAgICBpZiAodHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCdibHVyJywgdGhpcy5fd2luZG93Qmx1ckhhbmRsZXIpO1xuICAgIH1cblxuICAgIHRoaXMuX3ZpZXdwb3J0U3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgdGhpcy5fY29tcG9uZW50RGVzdHJveWVkID0gdHJ1ZTtcbiAgICB0aGlzLl9kZXN0cm95UGFuZWwoKTtcbiAgICB0aGlzLl9jbG9zZUtleUV2ZW50U3RyZWFtLmNvbXBsZXRlKCk7XG4gIH1cblxuICAvKiogV2hldGhlciBvciBub3QgdGhlIGF1dG9jb21wbGV0ZSBwYW5lbCBpcyBvcGVuLiAqL1xuICBnZXQgcGFuZWxPcGVuKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9vdmVybGF5QXR0YWNoZWQgJiYgdGhpcy5hdXRvY29tcGxldGUuc2hvd1BhbmVsO1xuICB9XG4gIHByaXZhdGUgX292ZXJsYXlBdHRhY2hlZDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIC8qKiBPcGVucyB0aGUgYXV0b2NvbXBsZXRlIHN1Z2dlc3Rpb24gcGFuZWwuICovXG4gIG9wZW5QYW5lbCgpOiB2b2lkIHtcbiAgICB0aGlzLl9hdHRhY2hPdmVybGF5KCk7XG4gICAgdGhpcy5fZmxvYXRMYWJlbCgpO1xuICB9XG5cbiAgLyoqIENsb3NlcyB0aGUgYXV0b2NvbXBsZXRlIHN1Z2dlc3Rpb24gcGFuZWwuICovXG4gIGNsb3NlUGFuZWwoKTogdm9pZCB7XG4gICAgdGhpcy5fcmVzZXRMYWJlbCgpO1xuXG4gICAgaWYgKCF0aGlzLl9vdmVybGF5QXR0YWNoZWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5wYW5lbE9wZW4pIHtcbiAgICAgIC8vIE9ubHkgZW1pdCBpZiB0aGUgcGFuZWwgd2FzIHZpc2libGUuXG4gICAgICB0aGlzLmF1dG9jb21wbGV0ZS5jbG9zZWQuZW1pdCgpO1xuICAgIH1cblxuICAgIHRoaXMuYXV0b2NvbXBsZXRlLl9pc09wZW4gPSB0aGlzLl9vdmVybGF5QXR0YWNoZWQgPSBmYWxzZTtcblxuICAgIGlmICh0aGlzLl9vdmVybGF5UmVmICYmIHRoaXMuX292ZXJsYXlSZWYuaGFzQXR0YWNoZWQoKSkge1xuICAgICAgdGhpcy5fb3ZlcmxheVJlZi5kZXRhY2goKTtcbiAgICAgIHRoaXMuX2Nsb3NpbmdBY3Rpb25zU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgfVxuXG4gICAgLy8gTm90ZSB0aGF0IGluIHNvbWUgY2FzZXMgdGhpcyBjYW4gZW5kIHVwIGJlaW5nIGNhbGxlZCBhZnRlciB0aGUgY29tcG9uZW50IGlzIGRlc3Ryb3llZC5cbiAgICAvLyBBZGQgYSBjaGVjayB0byBlbnN1cmUgdGhhdCB3ZSBkb24ndCB0cnkgdG8gcnVuIGNoYW5nZSBkZXRlY3Rpb24gb24gYSBkZXN0cm95ZWQgdmlldy5cbiAgICBpZiAoIXRoaXMuX2NvbXBvbmVudERlc3Ryb3llZCkge1xuICAgICAgLy8gV2UgbmVlZCB0byB0cmlnZ2VyIGNoYW5nZSBkZXRlY3Rpb24gbWFudWFsbHksIGJlY2F1c2VcbiAgICAgIC8vIGBmcm9tRXZlbnRgIGRvZXNuJ3Qgc2VlbSB0byBkbyBpdCBhdCB0aGUgcHJvcGVyIHRpbWUuXG4gICAgICAvLyBUaGlzIGVuc3VyZXMgdGhhdCB0aGUgbGFiZWwgaXMgcmVzZXQgd2hlbiB0aGVcbiAgICAgIC8vIHVzZXIgY2xpY2tzIG91dHNpZGUuXG4gICAgICB0aGlzLl9jaGFuZ2VEZXRlY3RvclJlZi5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFVwZGF0ZXMgdGhlIHBvc2l0aW9uIG9mIHRoZSBhdXRvY29tcGxldGUgc3VnZ2VzdGlvbiBwYW5lbCB0byBlbnN1cmUgdGhhdCBpdCBmaXRzIGFsbCBvcHRpb25zXG4gICAqIHdpdGhpbiB0aGUgdmlld3BvcnQuXG4gICAqL1xuICB1cGRhdGVQb3NpdGlvbigpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5fb3ZlcmxheUF0dGFjaGVkKSB7XG4gICAgICB0aGlzLl9vdmVybGF5UmVmIS51cGRhdGVQb3NpdGlvbigpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBBIHN0cmVhbSBvZiBhY3Rpb25zIHRoYXQgc2hvdWxkIGNsb3NlIHRoZSBhdXRvY29tcGxldGUgcGFuZWwsIGluY2x1ZGluZ1xuICAgKiB3aGVuIGFuIG9wdGlvbiBpcyBzZWxlY3RlZCwgb24gYmx1ciwgYW5kIHdoZW4gVEFCIGlzIHByZXNzZWQuXG4gICAqL1xuICBnZXQgcGFuZWxDbG9zaW5nQWN0aW9ucygpOiBPYnNlcnZhYmxlPE1hdE9wdGlvblNlbGVjdGlvbkNoYW5nZXxudWxsPiB7XG4gICAgcmV0dXJuIG1lcmdlKFxuICAgICAgdGhpcy5vcHRpb25TZWxlY3Rpb25zLFxuICAgICAgdGhpcy5hdXRvY29tcGxldGUuX2tleU1hbmFnZXIudGFiT3V0LnBpcGUoZmlsdGVyKCgpID0+IHRoaXMuX292ZXJsYXlBdHRhY2hlZCkpLFxuICAgICAgdGhpcy5fY2xvc2VLZXlFdmVudFN0cmVhbSxcbiAgICAgIHRoaXMuX2dldE91dHNpZGVDbGlja1N0cmVhbSgpLFxuICAgICAgdGhpcy5fb3ZlcmxheVJlZiA/XG4gICAgICAgICAgdGhpcy5fb3ZlcmxheVJlZi5kZXRhY2htZW50cygpLnBpcGUoZmlsdGVyKCgpID0+IHRoaXMuX292ZXJsYXlBdHRhY2hlZCkpIDpcbiAgICAgICAgICBvYnNlcnZhYmxlT2YoKVxuICAgICkucGlwZShcbiAgICAgIC8vIE5vcm1hbGl6ZSB0aGUgb3V0cHV0IHNvIHdlIHJldHVybiBhIGNvbnNpc3RlbnQgdHlwZS5cbiAgICAgIG1hcChldmVudCA9PiBldmVudCBpbnN0YW5jZW9mIE1hdE9wdGlvblNlbGVjdGlvbkNoYW5nZSA/IGV2ZW50IDogbnVsbClcbiAgICApO1xuICB9XG5cbiAgLyoqIFN0cmVhbSBvZiBhdXRvY29tcGxldGUgb3B0aW9uIHNlbGVjdGlvbnMuICovXG4gIHJlYWRvbmx5IG9wdGlvblNlbGVjdGlvbnM6IE9ic2VydmFibGU8TWF0T3B0aW9uU2VsZWN0aW9uQ2hhbmdlPiA9IGRlZmVyKCgpID0+IHtcbiAgICBpZiAodGhpcy5hdXRvY29tcGxldGUgJiYgdGhpcy5hdXRvY29tcGxldGUub3B0aW9ucykge1xuICAgICAgcmV0dXJuIG1lcmdlKC4uLnRoaXMuYXV0b2NvbXBsZXRlLm9wdGlvbnMubWFwKG9wdGlvbiA9PiBvcHRpb24ub25TZWxlY3Rpb25DaGFuZ2UpKTtcbiAgICB9XG5cbiAgICAvLyBJZiB0aGVyZSBhcmUgYW55IHN1YnNjcmliZXJzIGJlZm9yZSBgbmdBZnRlclZpZXdJbml0YCwgdGhlIGBhdXRvY29tcGxldGVgIHdpbGwgYmUgdW5kZWZpbmVkLlxuICAgIC8vIFJldHVybiBhIHN0cmVhbSB0aGF0IHdlJ2xsIHJlcGxhY2Ugd2l0aCB0aGUgcmVhbCBvbmUgb25jZSBldmVyeXRoaW5nIGlzIGluIHBsYWNlLlxuICAgIHJldHVybiB0aGlzLl96b25lLm9uU3RhYmxlXG4gICAgICAgIC5waXBlKHRha2UoMSksIHN3aXRjaE1hcCgoKSA9PiB0aGlzLm9wdGlvblNlbGVjdGlvbnMpKTtcbiAgfSkgYXMgT2JzZXJ2YWJsZTxNYXRPcHRpb25TZWxlY3Rpb25DaGFuZ2U+O1xuXG4gIC8qKiBUaGUgY3VycmVudGx5IGFjdGl2ZSBvcHRpb24sIGNvZXJjZWQgdG8gTWF0T3B0aW9uIHR5cGUuICovXG4gIGdldCBhY3RpdmVPcHRpb24oKTogTWF0T3B0aW9uIHwgbnVsbCB7XG4gICAgaWYgKHRoaXMuYXV0b2NvbXBsZXRlICYmIHRoaXMuYXV0b2NvbXBsZXRlLl9rZXlNYW5hZ2VyKSB7XG4gICAgICByZXR1cm4gdGhpcy5hdXRvY29tcGxldGUuX2tleU1hbmFnZXIuYWN0aXZlSXRlbTtcbiAgICB9XG5cbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIC8qKiBTdHJlYW0gb2YgY2xpY2tzIG91dHNpZGUgb2YgdGhlIGF1dG9jb21wbGV0ZSBwYW5lbC4gKi9cbiAgcHJpdmF0ZSBfZ2V0T3V0c2lkZUNsaWNrU3RyZWFtKCk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgcmV0dXJuIG1lcmdlKFxuICAgICAgICAgICAgZnJvbUV2ZW50KHRoaXMuX2RvY3VtZW50LCAnY2xpY2snKSBhcyBPYnNlcnZhYmxlPE1vdXNlRXZlbnQ+LFxuICAgICAgICAgICAgZnJvbUV2ZW50KHRoaXMuX2RvY3VtZW50LCAnYXV4Y2xpY2snKSBhcyBPYnNlcnZhYmxlPE1vdXNlRXZlbnQ+LFxuICAgICAgICAgICAgZnJvbUV2ZW50KHRoaXMuX2RvY3VtZW50LCAndG91Y2hlbmQnKSBhcyBPYnNlcnZhYmxlPFRvdWNoRXZlbnQ+KVxuICAgICAgICAucGlwZShmaWx0ZXIoZXZlbnQgPT4ge1xuICAgICAgICAgIC8vIElmIHdlJ3JlIGluIHRoZSBTaGFkb3cgRE9NLCB0aGUgZXZlbnQgdGFyZ2V0IHdpbGwgYmUgdGhlIHNoYWRvdyByb290LCBzbyB3ZSBoYXZlIHRvXG4gICAgICAgICAgLy8gZmFsbCBiYWNrIHRvIGNoZWNrIHRoZSBmaXJzdCBlbGVtZW50IGluIHRoZSBwYXRoIG9mIHRoZSBjbGljayBldmVudC5cbiAgICAgICAgICBjb25zdCBjbGlja1RhcmdldCA9IF9nZXRFdmVudFRhcmdldDxIVE1MRWxlbWVudD4oZXZlbnQpITtcbiAgICAgICAgICBjb25zdCBmb3JtRmllbGQgPSB0aGlzLl9mb3JtRmllbGQgPyB0aGlzLl9mb3JtRmllbGQuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudCA6IG51bGw7XG4gICAgICAgICAgY29uc3QgY3VzdG9tT3JpZ2luID0gdGhpcy5jb25uZWN0ZWRUbyA/IHRoaXMuY29ubmVjdGVkVG8uZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50IDogbnVsbDtcblxuICAgICAgICAgIHJldHVybiB0aGlzLl9vdmVybGF5QXR0YWNoZWQgJiYgY2xpY2tUYXJnZXQgIT09IHRoaXMuX2VsZW1lbnQubmF0aXZlRWxlbWVudCAmJlxuICAgICAgICAgICAgICAoIWZvcm1GaWVsZCB8fCAhZm9ybUZpZWxkLmNvbnRhaW5zKGNsaWNrVGFyZ2V0KSkgJiZcbiAgICAgICAgICAgICAgKCFjdXN0b21PcmlnaW4gfHwgIWN1c3RvbU9yaWdpbi5jb250YWlucyhjbGlja1RhcmdldCkpICYmXG4gICAgICAgICAgICAgICghIXRoaXMuX292ZXJsYXlSZWYgJiYgIXRoaXMuX292ZXJsYXlSZWYub3ZlcmxheUVsZW1lbnQuY29udGFpbnMoY2xpY2tUYXJnZXQpKTtcbiAgICAgICAgfSkpO1xuICB9XG5cbiAgLy8gSW1wbGVtZW50ZWQgYXMgcGFydCBvZiBDb250cm9sVmFsdWVBY2Nlc3Nvci5cbiAgd3JpdGVWYWx1ZSh2YWx1ZTogYW55KTogdm9pZCB7XG4gICAgUHJvbWlzZS5yZXNvbHZlKG51bGwpLnRoZW4oKCkgPT4gdGhpcy5fc2V0VHJpZ2dlclZhbHVlKHZhbHVlKSk7XG4gIH1cblxuICAvLyBJbXBsZW1lbnRlZCBhcyBwYXJ0IG9mIENvbnRyb2xWYWx1ZUFjY2Vzc29yLlxuICByZWdpc3Rlck9uQ2hhbmdlKGZuOiAodmFsdWU6IGFueSkgPT4ge30pOiB2b2lkIHtcbiAgICB0aGlzLl9vbkNoYW5nZSA9IGZuO1xuICB9XG5cbiAgLy8gSW1wbGVtZW50ZWQgYXMgcGFydCBvZiBDb250cm9sVmFsdWVBY2Nlc3Nvci5cbiAgcmVnaXN0ZXJPblRvdWNoZWQoZm46ICgpID0+IHt9KSB7XG4gICAgdGhpcy5fb25Ub3VjaGVkID0gZm47XG4gIH1cblxuICAvLyBJbXBsZW1lbnRlZCBhcyBwYXJ0IG9mIENvbnRyb2xWYWx1ZUFjY2Vzc29yLlxuICBzZXREaXNhYmxlZFN0YXRlKGlzRGlzYWJsZWQ6IGJvb2xlYW4pIHtcbiAgICB0aGlzLl9lbGVtZW50Lm5hdGl2ZUVsZW1lbnQuZGlzYWJsZWQgPSBpc0Rpc2FibGVkO1xuICB9XG5cbiAgX2hhbmRsZUtleWRvd24oZXZlbnQ6IEtleWJvYXJkRXZlbnQpOiB2b2lkIHtcbiAgICBjb25zdCBrZXlDb2RlID0gZXZlbnQua2V5Q29kZTtcblxuICAgIC8vIFByZXZlbnQgdGhlIGRlZmF1bHQgYWN0aW9uIG9uIGFsbCBlc2NhcGUga2V5IHByZXNzZXMuIFRoaXMgaXMgaGVyZSBwcmltYXJpbHkgdG8gYnJpbmcgSUVcbiAgICAvLyBpbiBsaW5lIHdpdGggb3RoZXIgYnJvd3NlcnMuIEJ5IGRlZmF1bHQsIHByZXNzaW5nIGVzY2FwZSBvbiBJRSB3aWxsIGNhdXNlIGl0IHRvIHJldmVydFxuICAgIC8vIHRoZSBpbnB1dCB2YWx1ZSB0byB0aGUgb25lIHRoYXQgaXQgaGFkIG9uIGZvY3VzLCBob3dldmVyIGl0IHdvbid0IGRpc3BhdGNoIGFueSBldmVudHNcbiAgICAvLyB3aGljaCBtZWFucyB0aGF0IHRoZSBtb2RlbCB2YWx1ZSB3aWxsIGJlIG91dCBvZiBzeW5jIHdpdGggdGhlIHZpZXcuXG4gICAgaWYgKGtleUNvZGUgPT09IEVTQ0FQRSAmJiAhaGFzTW9kaWZpZXJLZXkoZXZlbnQpKSB7XG4gICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmFjdGl2ZU9wdGlvbiAmJiBrZXlDb2RlID09PSBFTlRFUiAmJiB0aGlzLnBhbmVsT3Blbikge1xuICAgICAgdGhpcy5hY3RpdmVPcHRpb24uX3NlbGVjdFZpYUludGVyYWN0aW9uKCk7XG4gICAgICB0aGlzLl9yZXNldEFjdGl2ZUl0ZW0oKTtcbiAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgfSBlbHNlIGlmICh0aGlzLmF1dG9jb21wbGV0ZSkge1xuICAgICAgY29uc3QgcHJldkFjdGl2ZUl0ZW0gPSB0aGlzLmF1dG9jb21wbGV0ZS5fa2V5TWFuYWdlci5hY3RpdmVJdGVtO1xuICAgICAgY29uc3QgaXNBcnJvd0tleSA9IGtleUNvZGUgPT09IFVQX0FSUk9XIHx8IGtleUNvZGUgPT09IERPV05fQVJST1c7XG5cbiAgICAgIGlmICh0aGlzLnBhbmVsT3BlbiB8fCBrZXlDb2RlID09PSBUQUIpIHtcbiAgICAgICAgdGhpcy5hdXRvY29tcGxldGUuX2tleU1hbmFnZXIub25LZXlkb3duKGV2ZW50KTtcbiAgICAgIH0gZWxzZSBpZiAoaXNBcnJvd0tleSAmJiB0aGlzLl9jYW5PcGVuKCkpIHtcbiAgICAgICAgdGhpcy5vcGVuUGFuZWwoKTtcbiAgICAgIH1cblxuICAgICAgaWYgKGlzQXJyb3dLZXkgfHwgdGhpcy5hdXRvY29tcGxldGUuX2tleU1hbmFnZXIuYWN0aXZlSXRlbSAhPT0gcHJldkFjdGl2ZUl0ZW0pIHtcbiAgICAgICAgdGhpcy5fc2Nyb2xsVG9PcHRpb24odGhpcy5hdXRvY29tcGxldGUuX2tleU1hbmFnZXIuYWN0aXZlSXRlbUluZGV4IHx8IDApO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIF9oYW5kbGVJbnB1dChldmVudDogS2V5Ym9hcmRFdmVudCk6IHZvaWQge1xuICAgIGxldCB0YXJnZXQgPSBldmVudC50YXJnZXQgYXMgSFRNTElucHV0RWxlbWVudDtcbiAgICBsZXQgdmFsdWU6IG51bWJlciB8IHN0cmluZyB8IG51bGwgPSB0YXJnZXQudmFsdWU7XG5cbiAgICAvLyBCYXNlZCBvbiBgTnVtYmVyVmFsdWVBY2Nlc3NvcmAgZnJvbSBmb3Jtcy5cbiAgICBpZiAodGFyZ2V0LnR5cGUgPT09ICdudW1iZXInKSB7XG4gICAgICB2YWx1ZSA9IHZhbHVlID09ICcnID8gbnVsbCA6IHBhcnNlRmxvYXQodmFsdWUpO1xuICAgIH1cblxuICAgIC8vIElmIHRoZSBpbnB1dCBoYXMgYSBwbGFjZWhvbGRlciwgSUUgd2lsbCBmaXJlIHRoZSBgaW5wdXRgIGV2ZW50IG9uIHBhZ2UgbG9hZCxcbiAgICAvLyBmb2N1cyBhbmQgYmx1ciwgaW4gYWRkaXRpb24gdG8gd2hlbiB0aGUgdXNlciBhY3R1YWxseSBjaGFuZ2VkIHRoZSB2YWx1ZS4gVG9cbiAgICAvLyBmaWx0ZXIgb3V0IGFsbCBvZiB0aGUgZXh0cmEgZXZlbnRzLCB3ZSBzYXZlIHRoZSB2YWx1ZSBvbiBmb2N1cyBhbmQgYmV0d2VlblxuICAgIC8vIGBpbnB1dGAgZXZlbnRzLCBhbmQgd2UgY2hlY2sgd2hldGhlciBpdCBjaGFuZ2VkLlxuICAgIC8vIFNlZTogaHR0cHM6Ly9jb25uZWN0Lm1pY3Jvc29mdC5jb20vSUUvZmVlZGJhY2svZGV0YWlscy84ODU3NDcvXG4gICAgaWYgKHRoaXMuX3ByZXZpb3VzVmFsdWUgIT09IHZhbHVlKSB7XG4gICAgICB0aGlzLl9wcmV2aW91c1ZhbHVlID0gdmFsdWU7XG4gICAgICB0aGlzLl9vbkNoYW5nZSh2YWx1ZSk7XG5cbiAgICAgIGlmICh0aGlzLl9jYW5PcGVuKCkgJiYgdGhpcy5fZG9jdW1lbnQuYWN0aXZlRWxlbWVudCA9PT0gZXZlbnQudGFyZ2V0KSB7XG4gICAgICAgIHRoaXMub3BlblBhbmVsKCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgX2hhbmRsZUZvY3VzKCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5fY2FuT3Blbk9uTmV4dEZvY3VzKSB7XG4gICAgICB0aGlzLl9jYW5PcGVuT25OZXh0Rm9jdXMgPSB0cnVlO1xuICAgIH0gZWxzZSBpZiAodGhpcy5fY2FuT3BlbigpKSB7XG4gICAgICB0aGlzLl9wcmV2aW91c1ZhbHVlID0gdGhpcy5fZWxlbWVudC5uYXRpdmVFbGVtZW50LnZhbHVlO1xuICAgICAgdGhpcy5fYXR0YWNoT3ZlcmxheSgpO1xuICAgICAgdGhpcy5fZmxvYXRMYWJlbCh0cnVlKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogSW4gXCJhdXRvXCIgbW9kZSwgdGhlIGxhYmVsIHdpbGwgYW5pbWF0ZSBkb3duIGFzIHNvb24gYXMgZm9jdXMgaXMgbG9zdC5cbiAgICogVGhpcyBjYXVzZXMgdGhlIHZhbHVlIHRvIGp1bXAgd2hlbiBzZWxlY3RpbmcgYW4gb3B0aW9uIHdpdGggdGhlIG1vdXNlLlxuICAgKiBUaGlzIG1ldGhvZCBtYW51YWxseSBmbG9hdHMgdGhlIGxhYmVsIHVudGlsIHRoZSBwYW5lbCBjYW4gYmUgY2xvc2VkLlxuICAgKiBAcGFyYW0gc2hvdWxkQW5pbWF0ZSBXaGV0aGVyIHRoZSBsYWJlbCBzaG91bGQgYmUgYW5pbWF0ZWQgd2hlbiBpdCBpcyBmbG9hdGVkLlxuICAgKi9cbiAgcHJpdmF0ZSBfZmxvYXRMYWJlbChzaG91bGRBbmltYXRlID0gZmFsc2UpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5fZm9ybUZpZWxkICYmIHRoaXMuX2Zvcm1GaWVsZC5mbG9hdExhYmVsID09PSAnYXV0bycpIHtcbiAgICAgIGlmIChzaG91bGRBbmltYXRlKSB7XG4gICAgICAgIHRoaXMuX2Zvcm1GaWVsZC5fYW5pbWF0ZUFuZExvY2tMYWJlbCgpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5fZm9ybUZpZWxkLmZsb2F0TGFiZWwgPSAnYWx3YXlzJztcbiAgICAgIH1cblxuICAgICAgdGhpcy5fbWFudWFsbHlGbG9hdGluZ0xhYmVsID0gdHJ1ZTtcbiAgICB9XG4gIH1cblxuICAvKiogSWYgdGhlIGxhYmVsIGhhcyBiZWVuIG1hbnVhbGx5IGVsZXZhdGVkLCByZXR1cm4gaXQgdG8gaXRzIG5vcm1hbCBzdGF0ZS4gKi9cbiAgcHJpdmF0ZSBfcmVzZXRMYWJlbCgpOiB2b2lkICB7XG4gICAgaWYgKHRoaXMuX21hbnVhbGx5RmxvYXRpbmdMYWJlbCkge1xuICAgICAgdGhpcy5fZm9ybUZpZWxkLmZsb2F0TGFiZWwgPSAnYXV0byc7XG4gICAgICB0aGlzLl9tYW51YWxseUZsb2F0aW5nTGFiZWwgPSBmYWxzZTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogVGhpcyBtZXRob2QgbGlzdGVucyB0byBhIHN0cmVhbSBvZiBwYW5lbCBjbG9zaW5nIGFjdGlvbnMgYW5kIHJlc2V0cyB0aGVcbiAgICogc3RyZWFtIGV2ZXJ5IHRpbWUgdGhlIG9wdGlvbiBsaXN0IGNoYW5nZXMuXG4gICAqL1xuICBwcml2YXRlIF9zdWJzY3JpYmVUb0Nsb3NpbmdBY3Rpb25zKCk6IFN1YnNjcmlwdGlvbiB7XG4gICAgY29uc3QgZmlyc3RTdGFibGUgPSB0aGlzLl96b25lLm9uU3RhYmxlLnBpcGUodGFrZSgxKSk7XG4gICAgY29uc3Qgb3B0aW9uQ2hhbmdlcyA9IHRoaXMuYXV0b2NvbXBsZXRlLm9wdGlvbnMuY2hhbmdlcy5waXBlKFxuICAgICAgdGFwKCgpID0+IHRoaXMuX3Bvc2l0aW9uU3RyYXRlZ3kucmVhcHBseUxhc3RQb3NpdGlvbigpKSxcbiAgICAgIC8vIERlZmVyIGVtaXR0aW5nIHRvIHRoZSBzdHJlYW0gdW50aWwgdGhlIG5leHQgdGljaywgYmVjYXVzZSBjaGFuZ2luZ1xuICAgICAgLy8gYmluZGluZ3MgaW4gaGVyZSB3aWxsIGNhdXNlIFwiY2hhbmdlZCBhZnRlciBjaGVja2VkXCIgZXJyb3JzLlxuICAgICAgZGVsYXkoMClcbiAgICApO1xuXG4gICAgLy8gV2hlbiB0aGUgem9uZSBpcyBzdGFibGUgaW5pdGlhbGx5LCBhbmQgd2hlbiB0aGUgb3B0aW9uIGxpc3QgY2hhbmdlcy4uLlxuICAgIHJldHVybiBtZXJnZShmaXJzdFN0YWJsZSwgb3B0aW9uQ2hhbmdlcylcbiAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAvLyBjcmVhdGUgYSBuZXcgc3RyZWFtIG9mIHBhbmVsQ2xvc2luZ0FjdGlvbnMsIHJlcGxhY2luZyBhbnkgcHJldmlvdXMgc3RyZWFtc1xuICAgICAgICAgICAgLy8gdGhhdCB3ZXJlIGNyZWF0ZWQsIGFuZCBmbGF0dGVuIGl0IHNvIG91ciBzdHJlYW0gb25seSBlbWl0cyBjbG9zaW5nIGV2ZW50cy4uLlxuICAgICAgICAgICAgc3dpdGNoTWFwKCgpID0+IHtcbiAgICAgICAgICAgICAgY29uc3Qgd2FzT3BlbiA9IHRoaXMucGFuZWxPcGVuO1xuICAgICAgICAgICAgICB0aGlzLl9yZXNldEFjdGl2ZUl0ZW0oKTtcbiAgICAgICAgICAgICAgdGhpcy5hdXRvY29tcGxldGUuX3NldFZpc2liaWxpdHkoKTtcblxuICAgICAgICAgICAgICBpZiAodGhpcy5wYW5lbE9wZW4pIHtcbiAgICAgICAgICAgICAgICB0aGlzLl9vdmVybGF5UmVmIS51cGRhdGVQb3NpdGlvbigpO1xuXG4gICAgICAgICAgICAgICAgLy8gSWYgdGhlIGBwYW5lbE9wZW5gIHN0YXRlIGNoYW5nZWQsIHdlIG5lZWQgdG8gbWFrZSBzdXJlIHRvIGVtaXQgdGhlIGBvcGVuZWRgXG4gICAgICAgICAgICAgICAgLy8gZXZlbnQsIGJlY2F1c2Ugd2UgbWF5IG5vdCBoYXZlIGVtaXR0ZWQgaXQgd2hlbiB0aGUgcGFuZWwgd2FzIGF0dGFjaGVkLiBUaGlzXG4gICAgICAgICAgICAgICAgLy8gY2FuIGhhcHBlbiBpZiB0aGUgdXNlcnMgb3BlbnMgdGhlIHBhbmVsIGFuZCB0aGVyZSBhcmUgbm8gb3B0aW9ucywgYnV0IHRoZVxuICAgICAgICAgICAgICAgIC8vIG9wdGlvbnMgY29tZSBpbiBzbGlnaHRseSBsYXRlciBvciBhcyBhIHJlc3VsdCBvZiB0aGUgdmFsdWUgY2hhbmdpbmcuXG4gICAgICAgICAgICAgICAgaWYgKHdhc09wZW4gIT09IHRoaXMucGFuZWxPcGVuKSB7XG4gICAgICAgICAgICAgICAgICB0aGlzLmF1dG9jb21wbGV0ZS5vcGVuZWQuZW1pdCgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgIHJldHVybiB0aGlzLnBhbmVsQ2xvc2luZ0FjdGlvbnM7XG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIC8vIHdoZW4gdGhlIGZpcnN0IGNsb3NpbmcgZXZlbnQgb2NjdXJzLi4uXG4gICAgICAgICAgICB0YWtlKDEpKVxuICAgICAgICAvLyBzZXQgdGhlIHZhbHVlLCBjbG9zZSB0aGUgcGFuZWwsIGFuZCBjb21wbGV0ZS5cbiAgICAgICAgLnN1YnNjcmliZShldmVudCA9PiB0aGlzLl9zZXRWYWx1ZUFuZENsb3NlKGV2ZW50KSk7XG4gIH1cblxuICAvKiogRGVzdHJveXMgdGhlIGF1dG9jb21wbGV0ZSBzdWdnZXN0aW9uIHBhbmVsLiAqL1xuICBwcml2YXRlIF9kZXN0cm95UGFuZWwoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuX292ZXJsYXlSZWYpIHtcbiAgICAgIHRoaXMuY2xvc2VQYW5lbCgpO1xuICAgICAgdGhpcy5fb3ZlcmxheVJlZi5kaXNwb3NlKCk7XG4gICAgICB0aGlzLl9vdmVybGF5UmVmID0gbnVsbDtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIF9zZXRUcmlnZ2VyVmFsdWUodmFsdWU6IGFueSk6IHZvaWQge1xuICAgIGNvbnN0IHRvRGlzcGxheSA9IHRoaXMuYXV0b2NvbXBsZXRlICYmIHRoaXMuYXV0b2NvbXBsZXRlLmRpc3BsYXlXaXRoID9cbiAgICAgIHRoaXMuYXV0b2NvbXBsZXRlLmRpc3BsYXlXaXRoKHZhbHVlKSA6XG4gICAgICB2YWx1ZTtcblxuICAgIC8vIFNpbXBseSBmYWxsaW5nIGJhY2sgdG8gYW4gZW1wdHkgc3RyaW5nIGlmIHRoZSBkaXNwbGF5IHZhbHVlIGlzIGZhbHN5IGRvZXMgbm90IHdvcmsgcHJvcGVybHkuXG4gICAgLy8gVGhlIGRpc3BsYXkgdmFsdWUgY2FuIGFsc28gYmUgdGhlIG51bWJlciB6ZXJvIGFuZCBzaG91bGRuJ3QgZmFsbCBiYWNrIHRvIGFuIGVtcHR5IHN0cmluZy5cbiAgICBjb25zdCBpbnB1dFZhbHVlID0gdG9EaXNwbGF5ICE9IG51bGwgPyB0b0Rpc3BsYXkgOiAnJztcblxuICAgIC8vIElmIGl0J3MgdXNlZCB3aXRoaW4gYSBgTWF0Rm9ybUZpZWxkYCwgd2Ugc2hvdWxkIHNldCBpdCB0aHJvdWdoIHRoZSBwcm9wZXJ0eSBzbyBpdCBjYW4gZ29cbiAgICAvLyB0aHJvdWdoIGNoYW5nZSBkZXRlY3Rpb24uXG4gICAgaWYgKHRoaXMuX2Zvcm1GaWVsZCkge1xuICAgICAgdGhpcy5fZm9ybUZpZWxkLl9jb250cm9sLnZhbHVlID0gaW5wdXRWYWx1ZTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5fZWxlbWVudC5uYXRpdmVFbGVtZW50LnZhbHVlID0gaW5wdXRWYWx1ZTtcbiAgICB9XG5cbiAgICB0aGlzLl9wcmV2aW91c1ZhbHVlID0gaW5wdXRWYWx1ZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGlzIG1ldGhvZCBjbG9zZXMgdGhlIHBhbmVsLCBhbmQgaWYgYSB2YWx1ZSBpcyBzcGVjaWZpZWQsIGFsc28gc2V0cyB0aGUgYXNzb2NpYXRlZFxuICAgKiBjb250cm9sIHRvIHRoYXQgdmFsdWUuIEl0IHdpbGwgYWxzbyBtYXJrIHRoZSBjb250cm9sIGFzIGRpcnR5IGlmIHRoaXMgaW50ZXJhY3Rpb25cbiAgICogc3RlbW1lZCBmcm9tIHRoZSB1c2VyLlxuICAgKi9cbiAgcHJpdmF0ZSBfc2V0VmFsdWVBbmRDbG9zZShldmVudDogTWF0T3B0aW9uU2VsZWN0aW9uQ2hhbmdlIHwgbnVsbCk6IHZvaWQge1xuICAgIGlmIChldmVudCAmJiBldmVudC5zb3VyY2UpIHtcbiAgICAgIHRoaXMuX2NsZWFyUHJldmlvdXNTZWxlY3RlZE9wdGlvbihldmVudC5zb3VyY2UpO1xuICAgICAgdGhpcy5fc2V0VHJpZ2dlclZhbHVlKGV2ZW50LnNvdXJjZS52YWx1ZSk7XG4gICAgICB0aGlzLl9vbkNoYW5nZShldmVudC5zb3VyY2UudmFsdWUpO1xuICAgICAgdGhpcy5fZWxlbWVudC5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XG4gICAgICB0aGlzLmF1dG9jb21wbGV0ZS5fZW1pdFNlbGVjdEV2ZW50KGV2ZW50LnNvdXJjZSk7XG4gICAgfVxuXG4gICAgdGhpcy5jbG9zZVBhbmVsKCk7XG4gIH1cblxuICAvKipcbiAgICogQ2xlYXIgYW55IHByZXZpb3VzIHNlbGVjdGVkIG9wdGlvbiBhbmQgZW1pdCBhIHNlbGVjdGlvbiBjaGFuZ2UgZXZlbnQgZm9yIHRoaXMgb3B0aW9uXG4gICAqL1xuICBwcml2YXRlIF9jbGVhclByZXZpb3VzU2VsZWN0ZWRPcHRpb24oc2tpcDogTWF0T3B0aW9uKSB7XG4gICAgdGhpcy5hdXRvY29tcGxldGUub3B0aW9ucy5mb3JFYWNoKG9wdGlvbiA9PiB7XG4gICAgICBpZiAob3B0aW9uICE9PSBza2lwICYmIG9wdGlvbi5zZWxlY3RlZCkge1xuICAgICAgICBvcHRpb24uZGVzZWxlY3QoKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgX2F0dGFjaE92ZXJsYXkoKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLmF1dG9jb21wbGV0ZSAmJiAodHlwZW9mIG5nRGV2TW9kZSA9PT0gJ3VuZGVmaW5lZCcgfHwgbmdEZXZNb2RlKSkge1xuICAgICAgdGhyb3cgZ2V0TWF0QXV0b2NvbXBsZXRlTWlzc2luZ1BhbmVsRXJyb3IoKTtcbiAgICB9XG5cbiAgICBsZXQgb3ZlcmxheVJlZiA9IHRoaXMuX292ZXJsYXlSZWY7XG5cbiAgICBpZiAoIW92ZXJsYXlSZWYpIHtcbiAgICAgIHRoaXMuX3BvcnRhbCA9IG5ldyBUZW1wbGF0ZVBvcnRhbCh0aGlzLmF1dG9jb21wbGV0ZS50ZW1wbGF0ZSxcbiAgICAgICAgdGhpcy5fdmlld0NvbnRhaW5lclJlZixcbiAgICAgICAge2lkOiB0aGlzLl9mb3JtRmllbGQ/LmdldExhYmVsSWQoKX0pO1xuICAgICAgb3ZlcmxheVJlZiA9IHRoaXMuX292ZXJsYXkuY3JlYXRlKHRoaXMuX2dldE92ZXJsYXlDb25maWcoKSk7XG4gICAgICB0aGlzLl9vdmVybGF5UmVmID0gb3ZlcmxheVJlZjtcblxuICAgICAgLy8gVXNlIHRoZSBga2V5ZG93bkV2ZW50c2AgaW4gb3JkZXIgdG8gdGFrZSBhZHZhbnRhZ2Ugb2ZcbiAgICAgIC8vIHRoZSBvdmVybGF5IGV2ZW50IHRhcmdldGluZyBwcm92aWRlZCBieSB0aGUgQ0RLIG92ZXJsYXkuXG4gICAgICBvdmVybGF5UmVmLmtleWRvd25FdmVudHMoKS5zdWJzY3JpYmUoZXZlbnQgPT4ge1xuICAgICAgICAvLyBDbG9zZSB3aGVuIHByZXNzaW5nIEVTQ0FQRSBvciBBTFQgKyBVUF9BUlJPVywgYmFzZWQgb24gdGhlIGExMXkgZ3VpZGVsaW5lcy5cbiAgICAgICAgLy8gU2VlOiBodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEtcHJhY3RpY2VzLTEuMS8jdGV4dGJveC1rZXlib2FyZC1pbnRlcmFjdGlvblxuICAgICAgICBpZiAoKGV2ZW50LmtleUNvZGUgPT09IEVTQ0FQRSAmJiAhaGFzTW9kaWZpZXJLZXkoZXZlbnQpKSB8fFxuICAgICAgICAgICAgKGV2ZW50LmtleUNvZGUgPT09IFVQX0FSUk9XICYmIGhhc01vZGlmaWVyS2V5KGV2ZW50LCAnYWx0S2V5JykpKSB7XG4gICAgICAgICAgdGhpcy5fY2xvc2VLZXlFdmVudFN0cmVhbS5uZXh0KCk7XG4gICAgICAgICAgdGhpcy5fcmVzZXRBY3RpdmVJdGVtKCk7XG5cbiAgICAgICAgICAvLyBXZSBuZWVkIHRvIHN0b3AgcHJvcGFnYXRpb24sIG90aGVyd2lzZSB0aGUgZXZlbnQgd2lsbCBldmVudHVhbGx5XG4gICAgICAgICAgLy8gcmVhY2ggdGhlIGlucHV0IGl0c2VsZiBhbmQgY2F1c2UgdGhlIG92ZXJsYXkgdG8gYmUgcmVvcGVuZWQuXG4gICAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG5cbiAgICAgIHRoaXMuX3ZpZXdwb3J0U3Vic2NyaXB0aW9uID0gdGhpcy5fdmlld3BvcnRSdWxlci5jaGFuZ2UoKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICBpZiAodGhpcy5wYW5lbE9wZW4gJiYgb3ZlcmxheVJlZikge1xuICAgICAgICAgIG92ZXJsYXlSZWYudXBkYXRlU2l6ZSh7d2lkdGg6IHRoaXMuX2dldFBhbmVsV2lkdGgoKX0pO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gVXBkYXRlIHRoZSB0cmlnZ2VyLCBwYW5lbCB3aWR0aCBhbmQgZGlyZWN0aW9uLCBpbiBjYXNlIGFueXRoaW5nIGhhcyBjaGFuZ2VkLlxuICAgICAgdGhpcy5fcG9zaXRpb25TdHJhdGVneS5zZXRPcmlnaW4odGhpcy5fZ2V0Q29ubmVjdGVkRWxlbWVudCgpKTtcbiAgICAgIG92ZXJsYXlSZWYudXBkYXRlU2l6ZSh7d2lkdGg6IHRoaXMuX2dldFBhbmVsV2lkdGgoKX0pO1xuICAgIH1cblxuICAgIGlmIChvdmVybGF5UmVmICYmICFvdmVybGF5UmVmLmhhc0F0dGFjaGVkKCkpIHtcbiAgICAgIG92ZXJsYXlSZWYuYXR0YWNoKHRoaXMuX3BvcnRhbCk7XG4gICAgICB0aGlzLl9jbG9zaW5nQWN0aW9uc1N1YnNjcmlwdGlvbiA9IHRoaXMuX3N1YnNjcmliZVRvQ2xvc2luZ0FjdGlvbnMoKTtcbiAgICB9XG5cbiAgICBjb25zdCB3YXNPcGVuID0gdGhpcy5wYW5lbE9wZW47XG5cbiAgICB0aGlzLmF1dG9jb21wbGV0ZS5fc2V0VmlzaWJpbGl0eSgpO1xuICAgIHRoaXMuYXV0b2NvbXBsZXRlLl9pc09wZW4gPSB0aGlzLl9vdmVybGF5QXR0YWNoZWQgPSB0cnVlO1xuXG4gICAgLy8gV2UgbmVlZCB0byBkbyBhbiBleHRyYSBgcGFuZWxPcGVuYCBjaGVjayBpbiBoZXJlLCBiZWNhdXNlIHRoZVxuICAgIC8vIGF1dG9jb21wbGV0ZSB3b24ndCBiZSBzaG93biBpZiB0aGVyZSBhcmUgbm8gb3B0aW9ucy5cbiAgICBpZiAodGhpcy5wYW5lbE9wZW4gJiYgd2FzT3BlbiAhPT0gdGhpcy5wYW5lbE9wZW4pIHtcbiAgICAgIHRoaXMuYXV0b2NvbXBsZXRlLm9wZW5lZC5lbWl0KCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfZ2V0T3ZlcmxheUNvbmZpZygpOiBPdmVybGF5Q29uZmlnIHtcbiAgICByZXR1cm4gbmV3IE92ZXJsYXlDb25maWcoe1xuICAgICAgcG9zaXRpb25TdHJhdGVneTogdGhpcy5fZ2V0T3ZlcmxheVBvc2l0aW9uKCksXG4gICAgICBzY3JvbGxTdHJhdGVneTogdGhpcy5fc2Nyb2xsU3RyYXRlZ3koKSxcbiAgICAgIHdpZHRoOiB0aGlzLl9nZXRQYW5lbFdpZHRoKCksXG4gICAgICBkaXJlY3Rpb246IHRoaXMuX2RpcixcbiAgICAgIHBhbmVsQ2xhc3M6IHRoaXMuX2RlZmF1bHRzPy5vdmVybGF5UGFuZWxDbGFzcyxcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgX2dldE92ZXJsYXlQb3NpdGlvbigpOiBQb3NpdGlvblN0cmF0ZWd5IHtcbiAgICBjb25zdCBzdHJhdGVneSA9IHRoaXMuX292ZXJsYXkucG9zaXRpb24oKVxuICAgICAgLmZsZXhpYmxlQ29ubmVjdGVkVG8odGhpcy5fZ2V0Q29ubmVjdGVkRWxlbWVudCgpKVxuICAgICAgLndpdGhGbGV4aWJsZURpbWVuc2lvbnMoZmFsc2UpXG4gICAgICAud2l0aFB1c2goZmFsc2UpO1xuXG4gICAgdGhpcy5fc2V0U3RyYXRlZ3lQb3NpdGlvbnMoc3RyYXRlZ3kpO1xuICAgIHRoaXMuX3Bvc2l0aW9uU3RyYXRlZ3kgPSBzdHJhdGVneTtcbiAgICByZXR1cm4gc3RyYXRlZ3k7XG4gIH1cblxuICAvKiogU2V0cyB0aGUgcG9zaXRpb25zIG9uIGEgcG9zaXRpb24gc3RyYXRlZ3kgYmFzZWQgb24gdGhlIGRpcmVjdGl2ZSdzIGlucHV0IHN0YXRlLiAqL1xuICBwcml2YXRlIF9zZXRTdHJhdGVneVBvc2l0aW9ucyhwb3NpdGlvblN0cmF0ZWd5OiBGbGV4aWJsZUNvbm5lY3RlZFBvc2l0aW9uU3RyYXRlZ3kpIHtcbiAgICAvLyBOb3RlIHRoYXQgd2UgcHJvdmlkZSBob3Jpem9udGFsIGZhbGxiYWNrIHBvc2l0aW9ucywgZXZlbiB0aG91Z2ggYnkgZGVmYXVsdCB0aGUgZHJvcGRvd25cbiAgICAvLyB3aWR0aCBtYXRjaGVzIHRoZSBpbnB1dCwgYmVjYXVzZSBjb25zdW1lcnMgY2FuIG92ZXJyaWRlIHRoZSB3aWR0aC4gU2VlICMxODg1NC5cbiAgICBjb25zdCBiZWxvd1Bvc2l0aW9uczogQ29ubmVjdGVkUG9zaXRpb25bXSA9IFtcbiAgICAgIHtvcmlnaW5YOiAnc3RhcnQnLCBvcmlnaW5ZOiAnYm90dG9tJywgb3ZlcmxheVg6ICdzdGFydCcsIG92ZXJsYXlZOiAndG9wJ30sXG4gICAgICB7b3JpZ2luWDogJ2VuZCcsIG9yaWdpblk6ICdib3R0b20nLCBvdmVybGF5WDogJ2VuZCcsIG92ZXJsYXlZOiAndG9wJ31cbiAgICBdO1xuXG4gICAgLy8gVGhlIG92ZXJsYXkgZWRnZSBjb25uZWN0ZWQgdG8gdGhlIHRyaWdnZXIgc2hvdWxkIGhhdmUgc3F1YXJlZCBjb3JuZXJzLCB3aGlsZVxuICAgIC8vIHRoZSBvcHBvc2l0ZSBlbmQgaGFzIHJvdW5kZWQgY29ybmVycy4gV2UgYXBwbHkgYSBDU1MgY2xhc3MgdG8gc3dhcCB0aGVcbiAgICAvLyBib3JkZXItcmFkaXVzIGJhc2VkIG9uIHRoZSBvdmVybGF5IHBvc2l0aW9uLlxuICAgIGNvbnN0IHBhbmVsQ2xhc3MgPSB0aGlzLl9hYm92ZUNsYXNzO1xuICAgIGNvbnN0IGFib3ZlUG9zaXRpb25zOiBDb25uZWN0ZWRQb3NpdGlvbltdID0gW1xuICAgICAge29yaWdpblg6ICdzdGFydCcsIG9yaWdpblk6ICd0b3AnLCBvdmVybGF5WDogJ3N0YXJ0Jywgb3ZlcmxheVk6ICdib3R0b20nLCBwYW5lbENsYXNzfSxcbiAgICAgIHtvcmlnaW5YOiAnZW5kJywgb3JpZ2luWTogJ3RvcCcsIG92ZXJsYXlYOiAnZW5kJywgb3ZlcmxheVk6ICdib3R0b20nLCBwYW5lbENsYXNzfVxuICAgIF07XG5cbiAgICBsZXQgcG9zaXRpb25zOiBDb25uZWN0ZWRQb3NpdGlvbltdO1xuXG4gICAgaWYgKHRoaXMucG9zaXRpb24gPT09ICdhYm92ZScpIHtcbiAgICAgIHBvc2l0aW9ucyA9IGFib3ZlUG9zaXRpb25zO1xuICAgIH0gZWxzZSBpZiAodGhpcy5wb3NpdGlvbiA9PT0gJ2JlbG93Jykge1xuICAgICAgcG9zaXRpb25zID0gYmVsb3dQb3NpdGlvbnM7XG4gICAgfSBlbHNlIHtcbiAgICAgIHBvc2l0aW9ucyA9IFsuLi5iZWxvd1Bvc2l0aW9ucywgLi4uYWJvdmVQb3NpdGlvbnNdO1xuICAgIH1cblxuICAgIHBvc2l0aW9uU3RyYXRlZ3kud2l0aFBvc2l0aW9ucyhwb3NpdGlvbnMpO1xuICB9XG5cbiAgcHJpdmF0ZSBfZ2V0Q29ubmVjdGVkRWxlbWVudCgpOiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PiB7XG4gICAgaWYgKHRoaXMuY29ubmVjdGVkVG8pIHtcbiAgICAgIHJldHVybiB0aGlzLmNvbm5lY3RlZFRvLmVsZW1lbnRSZWY7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuX2Zvcm1GaWVsZCA/IHRoaXMuX2Zvcm1GaWVsZC5nZXRDb25uZWN0ZWRPdmVybGF5T3JpZ2luKCkgOiB0aGlzLl9lbGVtZW50O1xuICB9XG5cbiAgcHJpdmF0ZSBfZ2V0UGFuZWxXaWR0aCgpOiBudW1iZXIgfCBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmF1dG9jb21wbGV0ZS5wYW5lbFdpZHRoIHx8IHRoaXMuX2dldEhvc3RXaWR0aCgpO1xuICB9XG5cbiAgLyoqIFJldHVybnMgdGhlIHdpZHRoIG9mIHRoZSBpbnB1dCBlbGVtZW50LCBzbyB0aGUgcGFuZWwgd2lkdGggY2FuIG1hdGNoIGl0LiAqL1xuICBwcml2YXRlIF9nZXRIb3N0V2lkdGgoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5fZ2V0Q29ubmVjdGVkRWxlbWVudCgpLm5hdGl2ZUVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkud2lkdGg7XG4gIH1cblxuICAvKipcbiAgICogUmVzZXRzIHRoZSBhY3RpdmUgaXRlbSB0byAtMSBzbyBhcnJvdyBldmVudHMgd2lsbCBhY3RpdmF0ZSB0aGVcbiAgICogY29ycmVjdCBvcHRpb25zLCBvciB0byAwIGlmIHRoZSBjb25zdW1lciBvcHRlZCBpbnRvIGl0LlxuICAgKi9cbiAgcHJpdmF0ZSBfcmVzZXRBY3RpdmVJdGVtKCk6IHZvaWQge1xuICAgIGNvbnN0IGF1dG9jb21wbGV0ZSA9IHRoaXMuYXV0b2NvbXBsZXRlO1xuXG4gICAgaWYgKGF1dG9jb21wbGV0ZS5hdXRvQWN0aXZlRmlyc3RPcHRpb24pIHtcbiAgICAgIC8vIE5vdGUgdGhhdCB3ZSBnbyB0aHJvdWdoIGBzZXRGaXJzdEl0ZW1BY3RpdmVgLCByYXRoZXIgdGhhbiBgc2V0QWN0aXZlSXRlbSgwKWAsIGJlY2F1c2VcbiAgICAgIC8vIHRoZSBmb3JtZXIgd2lsbCBmaW5kIHRoZSBuZXh0IGVuYWJsZWQgb3B0aW9uLCBpZiB0aGUgZmlyc3Qgb25lIGlzIGRpc2FibGVkLlxuICAgICAgYXV0b2NvbXBsZXRlLl9rZXlNYW5hZ2VyLnNldEZpcnN0SXRlbUFjdGl2ZSgpO1xuICAgIH0gZWxzZSB7XG4gICAgICBhdXRvY29tcGxldGUuX2tleU1hbmFnZXIuc2V0QWN0aXZlSXRlbSgtMSk7XG4gICAgfVxuICB9XG5cbiAgLyoqIERldGVybWluZXMgd2hldGhlciB0aGUgcGFuZWwgY2FuIGJlIG9wZW5lZC4gKi9cbiAgcHJpdmF0ZSBfY2FuT3BlbigpOiBib29sZWFuIHtcbiAgICBjb25zdCBlbGVtZW50ID0gdGhpcy5fZWxlbWVudC5uYXRpdmVFbGVtZW50O1xuICAgIHJldHVybiAhZWxlbWVudC5yZWFkT25seSAmJiAhZWxlbWVudC5kaXNhYmxlZCAmJiAhdGhpcy5fYXV0b2NvbXBsZXRlRGlzYWJsZWQ7XG4gIH1cblxuICAvKiogVXNlIGRlZmF1bHRWaWV3IG9mIGluamVjdGVkIGRvY3VtZW50IGlmIGF2YWlsYWJsZSBvciBmYWxsYmFjayB0byBnbG9iYWwgd2luZG93IHJlZmVyZW5jZSAqL1xuICBwcml2YXRlIF9nZXRXaW5kb3coKTogV2luZG93IHtcbiAgICByZXR1cm4gdGhpcy5fZG9jdW1lbnQ/LmRlZmF1bHRWaWV3IHx8IHdpbmRvdztcbiAgfVxuXG4gIC8qKiBTY3JvbGxzIHRvIGEgcGFydGljdWxhciBvcHRpb24gaW4gdGhlIGxpc3QuICovXG4gIHByaXZhdGUgX3Njcm9sbFRvT3B0aW9uKGluZGV4OiBudW1iZXIpOiB2b2lkIHtcbiAgICAvLyBHaXZlbiB0aGF0IHdlIGFyZSBub3QgYWN0dWFsbHkgZm9jdXNpbmcgYWN0aXZlIG9wdGlvbnMsIHdlIG11c3QgbWFudWFsbHkgYWRqdXN0IHNjcm9sbFxuICAgIC8vIHRvIHJldmVhbCBvcHRpb25zIGJlbG93IHRoZSBmb2xkLiBGaXJzdCwgd2UgZmluZCB0aGUgb2Zmc2V0IG9mIHRoZSBvcHRpb24gZnJvbSB0aGUgdG9wXG4gICAgLy8gb2YgdGhlIHBhbmVsLiBJZiB0aGF0IG9mZnNldCBpcyBiZWxvdyB0aGUgZm9sZCwgdGhlIG5ldyBzY3JvbGxUb3Agd2lsbCBiZSB0aGUgb2Zmc2V0IC1cbiAgICAvLyB0aGUgcGFuZWwgaGVpZ2h0ICsgdGhlIG9wdGlvbiBoZWlnaHQsIHNvIHRoZSBhY3RpdmUgb3B0aW9uIHdpbGwgYmUganVzdCB2aXNpYmxlIGF0IHRoZVxuICAgIC8vIGJvdHRvbSBvZiB0aGUgcGFuZWwuIElmIHRoYXQgb2Zmc2V0IGlzIGFib3ZlIHRoZSB0b3Agb2YgdGhlIHZpc2libGUgcGFuZWwsIHRoZSBuZXcgc2Nyb2xsVG9wXG4gICAgLy8gd2lsbCBiZWNvbWUgdGhlIG9mZnNldC4gSWYgdGhhdCBvZmZzZXQgaXMgdmlzaWJsZSB3aXRoaW4gdGhlIHBhbmVsIGFscmVhZHksIHRoZSBzY3JvbGxUb3AgaXNcbiAgICAvLyBub3QgYWRqdXN0ZWQuXG4gICAgY29uc3QgYXV0b2NvbXBsZXRlID0gdGhpcy5hdXRvY29tcGxldGU7XG4gICAgY29uc3QgbGFiZWxDb3VudCA9IF9jb3VudEdyb3VwTGFiZWxzQmVmb3JlT3B0aW9uKGluZGV4LFxuICAgICAgYXV0b2NvbXBsZXRlLm9wdGlvbnMsIGF1dG9jb21wbGV0ZS5vcHRpb25Hcm91cHMpO1xuXG4gICAgaWYgKGluZGV4ID09PSAwICYmIGxhYmVsQ291bnQgPT09IDEpIHtcbiAgICAgIC8vIElmIHdlJ3ZlIGdvdCBvbmUgZ3JvdXAgbGFiZWwgYmVmb3JlIHRoZSBvcHRpb24gYW5kIHdlJ3JlIGF0IHRoZSB0b3Agb3B0aW9uLFxuICAgICAgLy8gc2Nyb2xsIHRoZSBsaXN0IHRvIHRoZSB0b3AuIFRoaXMgaXMgYmV0dGVyIFVYIHRoYW4gc2Nyb2xsaW5nIHRoZSBsaXN0IHRvIHRoZVxuICAgICAgLy8gdG9wIG9mIHRoZSBvcHRpb24sIGJlY2F1c2UgaXQgYWxsb3dzIHRoZSB1c2VyIHRvIHJlYWQgdGhlIHRvcCBncm91cCdzIGxhYmVsLlxuICAgICAgYXV0b2NvbXBsZXRlLl9zZXRTY3JvbGxUb3AoMCk7XG4gICAgfSBlbHNlIGlmIChhdXRvY29tcGxldGUucGFuZWwpIHtcbiAgICAgIGNvbnN0IG9wdGlvbiA9IGF1dG9jb21wbGV0ZS5vcHRpb25zLnRvQXJyYXkoKVtpbmRleF07XG5cbiAgICAgIGlmIChvcHRpb24pIHtcbiAgICAgICAgY29uc3QgZWxlbWVudCA9IG9wdGlvbi5fZ2V0SG9zdEVsZW1lbnQoKTtcbiAgICAgICAgY29uc3QgbmV3U2Nyb2xsUG9zaXRpb24gPSBfZ2V0T3B0aW9uU2Nyb2xsUG9zaXRpb24oXG4gICAgICAgICAgZWxlbWVudC5vZmZzZXRUb3AsXG4gICAgICAgICAgZWxlbWVudC5vZmZzZXRIZWlnaHQsXG4gICAgICAgICAgYXV0b2NvbXBsZXRlLl9nZXRTY3JvbGxUb3AoKSxcbiAgICAgICAgICBhdXRvY29tcGxldGUucGFuZWwubmF0aXZlRWxlbWVudC5vZmZzZXRIZWlnaHRcbiAgICAgICAgKTtcblxuICAgICAgICBhdXRvY29tcGxldGUuX3NldFNjcm9sbFRvcChuZXdTY3JvbGxQb3NpdGlvbik7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgc3RhdGljIG5nQWNjZXB0SW5wdXRUeXBlX2F1dG9jb21wbGV0ZURpc2FibGVkOiBCb29sZWFuSW5wdXQ7XG59XG5cblxuQERpcmVjdGl2ZSh7XG4gIHNlbGVjdG9yOiBgaW5wdXRbbWF0QXV0b2NvbXBsZXRlXSwgdGV4dGFyZWFbbWF0QXV0b2NvbXBsZXRlXWAsXG4gIGhvc3Q6IHtcbiAgICAnY2xhc3MnOiAnbWF0LWF1dG9jb21wbGV0ZS10cmlnZ2VyJyxcbiAgICAnW2F0dHIuYXV0b2NvbXBsZXRlXSc6ICdhdXRvY29tcGxldGVBdHRyaWJ1dGUnLFxuICAgICdbYXR0ci5yb2xlXSc6ICdhdXRvY29tcGxldGVEaXNhYmxlZCA/IG51bGwgOiBcImNvbWJvYm94XCInLFxuICAgICdbYXR0ci5hcmlhLWF1dG9jb21wbGV0ZV0nOiAnYXV0b2NvbXBsZXRlRGlzYWJsZWQgPyBudWxsIDogXCJsaXN0XCInLFxuICAgICdbYXR0ci5hcmlhLWFjdGl2ZWRlc2NlbmRhbnRdJzogJyhwYW5lbE9wZW4gJiYgYWN0aXZlT3B0aW9uKSA/IGFjdGl2ZU9wdGlvbi5pZCA6IG51bGwnLFxuICAgICdbYXR0ci5hcmlhLWV4cGFuZGVkXSc6ICdhdXRvY29tcGxldGVEaXNhYmxlZCA/IG51bGwgOiBwYW5lbE9wZW4udG9TdHJpbmcoKScsXG4gICAgJ1thdHRyLmFyaWEtb3duc10nOiAnKGF1dG9jb21wbGV0ZURpc2FibGVkIHx8ICFwYW5lbE9wZW4pID8gbnVsbCA6IGF1dG9jb21wbGV0ZT8uaWQnLFxuICAgICdbYXR0ci5hcmlhLWhhc3BvcHVwXSc6ICchYXV0b2NvbXBsZXRlRGlzYWJsZWQnLFxuICAgIC8vIE5vdGU6IHdlIHVzZSBgZm9jdXNpbmAsIGFzIG9wcG9zZWQgdG8gYGZvY3VzYCwgaW4gb3JkZXIgdG8gb3BlbiB0aGUgcGFuZWxcbiAgICAvLyBhIGxpdHRsZSBlYXJsaWVyLiBUaGlzIGF2b2lkcyBpc3N1ZXMgd2hlcmUgSUUgZGVsYXlzIHRoZSBmb2N1c2luZyBvZiB0aGUgaW5wdXQuXG4gICAgJyhmb2N1c2luKSc6ICdfaGFuZGxlRm9jdXMoKScsXG4gICAgJyhibHVyKSc6ICdfb25Ub3VjaGVkKCknLFxuICAgICcoaW5wdXQpJzogJ19oYW5kbGVJbnB1dCgkZXZlbnQpJyxcbiAgICAnKGtleWRvd24pJzogJ19oYW5kbGVLZXlkb3duKCRldmVudCknLFxuICB9LFxuICBleHBvcnRBczogJ21hdEF1dG9jb21wbGV0ZVRyaWdnZXInLFxuICBwcm92aWRlcnM6IFtNQVRfQVVUT0NPTVBMRVRFX1ZBTFVFX0FDQ0VTU09SXVxufSlcbmV4cG9ydCBjbGFzcyBNYXRBdXRvY29tcGxldGVUcmlnZ2VyIGV4dGVuZHMgX01hdEF1dG9jb21wbGV0ZVRyaWdnZXJCYXNlIHtcbiAgcHJvdGVjdGVkIF9hYm92ZUNsYXNzID0gJ21hdC1hdXRvY29tcGxldGUtcGFuZWwtYWJvdmUnO1xufVxuIl19