@angular/material 19.0.0-next.1 → 19.0.0-next.3

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 (642) hide show
  1. package/_index.scss +3 -4
  2. package/button/_button-base.scss +2 -2
  3. package/button/index.d.ts +2 -10
  4. package/checkbox/_checkbox-common.scss +4 -4
  5. package/checkbox/index.d.ts +0 -7
  6. package/chips/index.d.ts +1 -10
  7. package/core/_core.scss +1 -7
  8. package/core/focus-indicators/_private.scss +21 -82
  9. package/core/index.d.ts +10 -167
  10. package/core/ripple/_ripple.scss +1 -1
  11. package/core/style/_elevation.scss +1 -1
  12. package/core/style/_menu-common.scss +1 -1
  13. package/core/style/_sass-utils.scss +4 -0
  14. package/core/theming/_palettes.scss +132 -45
  15. package/core/tokens/_m3-system.scss +93 -20
  16. package/core/tokens/m3/definitions/_md-sys-color.scss +6 -6
  17. package/core/tokens/m3/mat/_sidenav.scss +0 -1
  18. package/fesm2022/autocomplete.mjs +14 -14
  19. package/fesm2022/autocomplete.mjs.map +1 -1
  20. package/fesm2022/badge.mjs +11 -11
  21. package/fesm2022/badge.mjs.map +1 -1
  22. package/fesm2022/bottom-sheet.mjs +11 -11
  23. package/fesm2022/bottom-sheet.mjs.map +1 -1
  24. package/fesm2022/button-toggle.mjs +11 -11
  25. package/fesm2022/button-toggle.mjs.map +1 -1
  26. package/fesm2022/button.mjs +42 -53
  27. package/fesm2022/button.mjs.map +1 -1
  28. package/fesm2022/card.mjs +46 -46
  29. package/fesm2022/checkbox.mjs +16 -19
  30. package/fesm2022/checkbox.mjs.map +1 -1
  31. package/fesm2022/chips.mjs +46 -57
  32. package/fesm2022/chips.mjs.map +1 -1
  33. package/fesm2022/core.mjs +122 -256
  34. package/fesm2022/core.mjs.map +1 -1
  35. package/fesm2022/datepicker.mjs +87 -87
  36. package/fesm2022/datepicker.mjs.map +1 -1
  37. package/fesm2022/dialog.mjs +26 -26
  38. package/fesm2022/dialog.mjs.map +1 -1
  39. package/fesm2022/divider.mjs +7 -7
  40. package/fesm2022/expansion.mjs +28 -28
  41. package/fesm2022/expansion.mjs.map +1 -1
  42. package/fesm2022/form-field.mjs +36 -36
  43. package/fesm2022/form-field.mjs.map +1 -1
  44. package/fesm2022/grid-list.mjs +22 -22
  45. package/fesm2022/icon/testing.mjs +7 -7
  46. package/fesm2022/icon.mjs +10 -10
  47. package/fesm2022/input.mjs +7 -7
  48. package/fesm2022/list.mjs +59 -59
  49. package/fesm2022/list.mjs.map +1 -1
  50. package/fesm2022/menu.mjs +18 -18
  51. package/fesm2022/menu.mjs.map +1 -1
  52. package/fesm2022/paginator.mjs +11 -11
  53. package/fesm2022/paginator.mjs.map +1 -1
  54. package/fesm2022/progress-bar.mjs +8 -8
  55. package/fesm2022/progress-bar.mjs.map +1 -1
  56. package/fesm2022/progress-spinner.mjs +8 -8
  57. package/fesm2022/progress-spinner.mjs.map +1 -1
  58. package/fesm2022/radio.mjs +11 -11
  59. package/fesm2022/radio.mjs.map +1 -1
  60. package/fesm2022/select.mjs +12 -12
  61. package/fesm2022/select.mjs.map +1 -1
  62. package/fesm2022/sidenav.mjs +26 -26
  63. package/fesm2022/sidenav.mjs.map +1 -1
  64. package/fesm2022/slide-toggle.mjs +16 -16
  65. package/fesm2022/slide-toggle.mjs.map +1 -1
  66. package/fesm2022/slider.mjs +18 -18
  67. package/fesm2022/slider.mjs.map +1 -1
  68. package/fesm2022/snack-bar.mjs +23 -23
  69. package/fesm2022/snack-bar.mjs.map +1 -1
  70. package/fesm2022/sort.mjs +14 -14
  71. package/fesm2022/sort.mjs.map +1 -1
  72. package/fesm2022/stepper.mjs +33 -33
  73. package/fesm2022/stepper.mjs.map +1 -1
  74. package/fesm2022/table.mjs +57 -57
  75. package/fesm2022/table.mjs.map +1 -1
  76. package/fesm2022/tabs.mjs +48 -48
  77. package/fesm2022/tabs.mjs.map +1 -1
  78. package/fesm2022/toolbar.mjs +11 -11
  79. package/fesm2022/toolbar.mjs.map +1 -1
  80. package/fesm2022/tooltip.mjs +26 -17
  81. package/fesm2022/tooltip.mjs.map +1 -1
  82. package/fesm2022/tree.mjs +25 -25
  83. package/form-field/_form-field-high-contrast.scss +4 -4
  84. package/form-field/_mdc-text-field-structure.scss +2 -2
  85. package/list/_list-inherited-structure.scss +1 -1
  86. package/list/_list-item-hcm-indicator.scss +1 -1
  87. package/package.json +2 -146
  88. package/prebuilt-themes/azure-blue.css +1 -1
  89. package/prebuilt-themes/cyan-orange.css +1 -1
  90. package/prebuilt-themes/deeppurple-amber.css +1 -1
  91. package/prebuilt-themes/indigo-pink.css +1 -1
  92. package/prebuilt-themes/magenta-violet.css +1 -1
  93. package/prebuilt-themes/pink-bluegrey.css +1 -1
  94. package/prebuilt-themes/purple-green.css +1 -1
  95. package/prebuilt-themes/rose-red.css +1 -1
  96. package/schematics/ng-add/index.js +1 -1
  97. package/schematics/ng-add/index.mjs +1 -1
  98. package/schematics/ng-generate/m3-theme/index_bundled.js +2 -2
  99. package/schematics/ng-update/index_bundled.js +27 -27
  100. package/tabs/_tabs-common.scss +2 -2
  101. package/tree/index.d.ts +2 -2
  102. package/core/focus-indicators/_focus-indicators-theme.scss +0 -11
  103. package/core/focus-indicators/_focus-indicators.scss +0 -6
  104. package/esm2022/autocomplete/animations.mjs +0 -24
  105. package/esm2022/autocomplete/autocomplete-origin.mjs +0 -31
  106. package/esm2022/autocomplete/autocomplete-trigger.mjs +0 -902
  107. package/esm2022/autocomplete/autocomplete.mjs +0 -238
  108. package/esm2022/autocomplete/autocomplete_public_index.mjs +0 -5
  109. package/esm2022/autocomplete/index.mjs +0 -9
  110. package/esm2022/autocomplete/module.mjs +0 -61
  111. package/esm2022/autocomplete/public-api.mjs +0 -14
  112. package/esm2022/autocomplete/testing/autocomplete-harness-filters.mjs +0 -9
  113. package/esm2022/autocomplete/testing/autocomplete-harness.mjs +0 -105
  114. package/esm2022/autocomplete/testing/index.mjs +0 -9
  115. package/esm2022/autocomplete/testing/public-api.mjs +0 -10
  116. package/esm2022/badge/badge-module.mjs +0 -27
  117. package/esm2022/badge/badge.mjs +0 -288
  118. package/esm2022/badge/badge_public_index.mjs +0 -5
  119. package/esm2022/badge/index.mjs +0 -9
  120. package/esm2022/badge/public-api.mjs +0 -10
  121. package/esm2022/badge/testing/badge-harness-filters.mjs +0 -9
  122. package/esm2022/badge/testing/badge-harness.mjs +0 -71
  123. package/esm2022/badge/testing/index.mjs +0 -9
  124. package/esm2022/badge/testing/public-api.mjs +0 -10
  125. package/esm2022/bottom-sheet/bottom-sheet-animations.mjs +0 -26
  126. package/esm2022/bottom-sheet/bottom-sheet-config.mjs +0 -48
  127. package/esm2022/bottom-sheet/bottom-sheet-container.mjs +0 -85
  128. package/esm2022/bottom-sheet/bottom-sheet-module.mjs +0 -28
  129. package/esm2022/bottom-sheet/bottom-sheet-ref.mjs +0 -104
  130. package/esm2022/bottom-sheet/bottom-sheet.mjs +0 -115
  131. package/esm2022/bottom-sheet/bottom-sheet_public_index.mjs +0 -5
  132. package/esm2022/bottom-sheet/index.mjs +0 -9
  133. package/esm2022/bottom-sheet/public-api.mjs +0 -14
  134. package/esm2022/bottom-sheet/testing/bottom-sheet-harness-filters.mjs +0 -9
  135. package/esm2022/bottom-sheet/testing/bottom-sheet-harness.mjs +0 -35
  136. package/esm2022/bottom-sheet/testing/index.mjs +0 -9
  137. package/esm2022/bottom-sheet/testing/public-api.mjs +0 -10
  138. package/esm2022/button/button-base.mjs +0 -230
  139. package/esm2022/button/button.mjs +0 -67
  140. package/esm2022/button/button_public_index.mjs +0 -5
  141. package/esm2022/button/fab.mjs +0 -166
  142. package/esm2022/button/icon-button.mjs +0 -56
  143. package/esm2022/button/index.mjs +0 -9
  144. package/esm2022/button/module.mjs +0 -65
  145. package/esm2022/button/public-api.mjs +0 -13
  146. package/esm2022/button/testing/button-harness-filters.mjs +0 -9
  147. package/esm2022/button/testing/button-harness.mjs +0 -80
  148. package/esm2022/button/testing/index.mjs +0 -9
  149. package/esm2022/button/testing/public-api.mjs +0 -10
  150. package/esm2022/button-toggle/button-toggle-module.mjs +0 -24
  151. package/esm2022/button-toggle/button-toggle.mjs +0 -651
  152. package/esm2022/button-toggle/button-toggle_public_index.mjs +0 -5
  153. package/esm2022/button-toggle/index.mjs +0 -9
  154. package/esm2022/button-toggle/public-api.mjs +0 -10
  155. package/esm2022/button-toggle/testing/button-toggle-group-harness-filters.mjs +0 -9
  156. package/esm2022/button-toggle/testing/button-toggle-group-harness.mjs +0 -47
  157. package/esm2022/button-toggle/testing/button-toggle-harness-filters.mjs +0 -9
  158. package/esm2022/button-toggle/testing/button-toggle-harness.mjs +0 -105
  159. package/esm2022/button-toggle/testing/index.mjs +0 -9
  160. package/esm2022/button-toggle/testing/public-api.mjs +0 -12
  161. package/esm2022/card/card.mjs +0 -273
  162. package/esm2022/card/card_public_index.mjs +0 -5
  163. package/esm2022/card/index.mjs +0 -9
  164. package/esm2022/card/module.mjs +0 -67
  165. package/esm2022/card/public-api.mjs +0 -10
  166. package/esm2022/card/testing/card-harness-filters.mjs +0 -9
  167. package/esm2022/card/testing/card-harness.mjs +0 -50
  168. package/esm2022/card/testing/index.mjs +0 -9
  169. package/esm2022/card/testing/public-api.mjs +0 -10
  170. package/esm2022/checkbox/checkbox-config.mjs +0 -22
  171. package/esm2022/checkbox/checkbox-required-validator.mjs +0 -41
  172. package/esm2022/checkbox/checkbox.mjs +0 -443
  173. package/esm2022/checkbox/checkbox_public_index.mjs +0 -5
  174. package/esm2022/checkbox/index.mjs +0 -9
  175. package/esm2022/checkbox/module.mjs +0 -41
  176. package/esm2022/checkbox/public-api.mjs +0 -12
  177. package/esm2022/checkbox/testing/checkbox-harness-filters.mjs +0 -9
  178. package/esm2022/checkbox/testing/checkbox-harness.mjs +0 -138
  179. package/esm2022/checkbox/testing/index.mjs +0 -9
  180. package/esm2022/checkbox/testing/public-api.mjs +0 -9
  181. package/esm2022/chips/chip-action.mjs +0 -113
  182. package/esm2022/chips/chip-edit-input.mjs +0 -61
  183. package/esm2022/chips/chip-grid.mjs +0 -420
  184. package/esm2022/chips/chip-icons.mjs +0 -107
  185. package/esm2022/chips/chip-input.mjs +0 -192
  186. package/esm2022/chips/chip-listbox.mjs +0 -369
  187. package/esm2022/chips/chip-option.mjs +0 -190
  188. package/esm2022/chips/chip-row.mjs +0 -173
  189. package/esm2022/chips/chip-set.mjs +0 -283
  190. package/esm2022/chips/chip-text-control.mjs +0 -9
  191. package/esm2022/chips/chip.mjs +0 -322
  192. package/esm2022/chips/chips_public_index.mjs +0 -5
  193. package/esm2022/chips/index.mjs +0 -9
  194. package/esm2022/chips/module.mjs +0 -85
  195. package/esm2022/chips/public-api.mjs +0 -20
  196. package/esm2022/chips/testing/chip-avatar-harness.mjs +0 -22
  197. package/esm2022/chips/testing/chip-edit-input-harness.mjs +0 -33
  198. package/esm2022/chips/testing/chip-grid-harness.mjs +0 -45
  199. package/esm2022/chips/testing/chip-harness-filters.mjs +0 -9
  200. package/esm2022/chips/testing/chip-harness.mjs +0 -62
  201. package/esm2022/chips/testing/chip-input-harness.mjs +0 -85
  202. package/esm2022/chips/testing/chip-listbox-harness.mjs +0 -61
  203. package/esm2022/chips/testing/chip-option-harness.mjs +0 -45
  204. package/esm2022/chips/testing/chip-remove-harness.mjs +0 -26
  205. package/esm2022/chips/testing/chip-row-harness.mjs +0 -40
  206. package/esm2022/chips/testing/chip-set-harness.mjs +0 -26
  207. package/esm2022/chips/testing/index.mjs +0 -9
  208. package/esm2022/chips/testing/public-api.mjs +0 -19
  209. package/esm2022/chips/tokens.mjs +0 -39
  210. package/esm2022/core/animation/animation.mjs +0 -21
  211. package/esm2022/core/common-behaviors/color.mjs +0 -33
  212. package/esm2022/core/common-behaviors/common-module.mjs +0 -127
  213. package/esm2022/core/common-behaviors/constructor.mjs +0 -9
  214. package/esm2022/core/common-behaviors/disable-ripple.mjs +0 -24
  215. package/esm2022/core/common-behaviors/disabled.mjs +0 -23
  216. package/esm2022/core/common-behaviors/error-state.mjs +0 -66
  217. package/esm2022/core/common-behaviors/index.mjs +0 -15
  218. package/esm2022/core/common-behaviors/initialized.mjs +0 -62
  219. package/esm2022/core/common-behaviors/tabindex.mjs +0 -25
  220. package/esm2022/core/core_public_index.mjs +0 -5
  221. package/esm2022/core/datetime/date-adapter.mjs +0 -109
  222. package/esm2022/core/datetime/date-formats.mjs +0 -10
  223. package/esm2022/core/datetime/index.mjs +0 -46
  224. package/esm2022/core/datetime/native-date-adapter.mjs +0 -221
  225. package/esm2022/core/datetime/native-date-formats.mjs +0 -19
  226. package/esm2022/core/error/error-options.mjs +0 -33
  227. package/esm2022/core/index.mjs +0 -9
  228. package/esm2022/core/internal-form-field/internal-form-field.mjs +0 -29
  229. package/esm2022/core/line/line.mjs +0 -64
  230. package/esm2022/core/option/index.mjs +0 -30
  231. package/esm2022/core/option/optgroup.mjs +0 -71
  232. package/esm2022/core/option/option-parent.mjs +0 -13
  233. package/esm2022/core/option/option.mjs +0 -283
  234. package/esm2022/core/private/index.mjs +0 -9
  235. package/esm2022/core/private/ripple-loader.mjs +0 -160
  236. package/esm2022/core/public-api.mjs +0 -19
  237. package/esm2022/core/ripple/index.mjs +0 -27
  238. package/esm2022/core/ripple/ripple-event-manager.mjs +0 -69
  239. package/esm2022/core/ripple/ripple-ref.mjs +0 -39
  240. package/esm2022/core/ripple/ripple-renderer.mjs +0 -354
  241. package/esm2022/core/ripple/ripple.mjs +0 -156
  242. package/esm2022/core/selection/index.mjs +0 -10
  243. package/esm2022/core/selection/pseudo-checkbox/pseudo-checkbox-module.mjs +0 -24
  244. package/esm2022/core/selection/pseudo-checkbox/pseudo-checkbox.mjs +0 -62
  245. package/esm2022/core/testing/index.mjs +0 -9
  246. package/esm2022/core/testing/optgroup-harness-filters.mjs +0 -9
  247. package/esm2022/core/testing/optgroup-harness.mjs +0 -43
  248. package/esm2022/core/testing/option-harness-filters.mjs +0 -9
  249. package/esm2022/core/testing/option-harness.mjs +0 -53
  250. package/esm2022/core/testing/public-api.mjs +0 -12
  251. package/esm2022/core/version.mjs +0 -11
  252. package/esm2022/datepicker/aria-accessible-name.mjs +0 -159
  253. package/esm2022/datepicker/calendar-body.mjs +0 -509
  254. package/esm2022/datepicker/calendar.mjs +0 -426
  255. package/esm2022/datepicker/date-range-input-parts.mjs +0 -372
  256. package/esm2022/datepicker/date-range-input.mjs +0 -369
  257. package/esm2022/datepicker/date-range-picker.mjs +0 -51
  258. package/esm2022/datepicker/date-range-selection-strategy.mjs +0 -97
  259. package/esm2022/datepicker/date-selection-model.mjs +0 -188
  260. package/esm2022/datepicker/datepicker-actions.mjs +0 -91
  261. package/esm2022/datepicker/datepicker-animations.mjs +0 -35
  262. package/esm2022/datepicker/datepicker-base.mjs +0 -609
  263. package/esm2022/datepicker/datepicker-errors.mjs +0 -14
  264. package/esm2022/datepicker/datepicker-input-base.mjs +0 -311
  265. package/esm2022/datepicker/datepicker-input.mjs +0 -200
  266. package/esm2022/datepicker/datepicker-intl.mjs +0 -69
  267. package/esm2022/datepicker/datepicker-module.mjs +0 -138
  268. package/esm2022/datepicker/datepicker-toggle.mjs +0 -113
  269. package/esm2022/datepicker/datepicker.mjs +0 -38
  270. package/esm2022/datepicker/datepicker_public_index.mjs +0 -5
  271. package/esm2022/datepicker/index.mjs +0 -9
  272. package/esm2022/datepicker/month-view.mjs +0 -460
  273. package/esm2022/datepicker/multi-year-view.mjs +0 -330
  274. package/esm2022/datepicker/public-api.mjs +0 -27
  275. package/esm2022/datepicker/testing/calendar-cell-harness.mjs +0 -138
  276. package/esm2022/datepicker/testing/calendar-harness.mjs +0 -83
  277. package/esm2022/datepicker/testing/date-range-input-harness.mjs +0 -98
  278. package/esm2022/datepicker/testing/datepicker-harness-filters.mjs +0 -9
  279. package/esm2022/datepicker/testing/datepicker-input-harness-base.mjs +0 -81
  280. package/esm2022/datepicker/testing/datepicker-input-harness.mjs +0 -58
  281. package/esm2022/datepicker/testing/datepicker-toggle-harness.mjs +0 -41
  282. package/esm2022/datepicker/testing/datepicker-trigger-harness-base.mjs +0 -65
  283. package/esm2022/datepicker/testing/index.mjs +0 -9
  284. package/esm2022/datepicker/testing/public-api.mjs +0 -14
  285. package/esm2022/datepicker/year-view.mjs +0 -324
  286. package/esm2022/dialog/dialog-animations.mjs +0 -38
  287. package/esm2022/dialog/dialog-config.mjs +0 -59
  288. package/esm2022/dialog/dialog-container.mjs +0 -253
  289. package/esm2022/dialog/dialog-content-directives.mjs +0 -212
  290. package/esm2022/dialog/dialog-ref.mjs +0 -177
  291. package/esm2022/dialog/dialog.mjs +0 -212
  292. package/esm2022/dialog/dialog_public_index.mjs +0 -5
  293. package/esm2022/dialog/index.mjs +0 -9
  294. package/esm2022/dialog/module.mjs +0 -45
  295. package/esm2022/dialog/public-api.mjs +0 -15
  296. package/esm2022/dialog/testing/dialog-harness-filters.mjs +0 -9
  297. package/esm2022/dialog/testing/dialog-harness.mjs +0 -84
  298. package/esm2022/dialog/testing/dialog-opener.mjs +0 -58
  299. package/esm2022/dialog/testing/index.mjs +0 -10
  300. package/esm2022/dialog/testing/public-api.mjs +0 -10
  301. package/esm2022/divider/divider-module.mjs +0 -24
  302. package/esm2022/divider/divider.mjs +0 -48
  303. package/esm2022/divider/divider_public_index.mjs +0 -5
  304. package/esm2022/divider/index.mjs +0 -9
  305. package/esm2022/divider/public-api.mjs +0 -10
  306. package/esm2022/divider/testing/divider-harness-filters.mjs +0 -9
  307. package/esm2022/divider/testing/divider-harness.mjs +0 -22
  308. package/esm2022/divider/testing/index.mjs +0 -9
  309. package/esm2022/divider/testing/public-api.mjs +0 -10
  310. package/esm2022/expansion/accordion-base.mjs +0 -14
  311. package/esm2022/expansion/accordion.mjs +0 -96
  312. package/esm2022/expansion/expansion-animations.mjs +0 -51
  313. package/esm2022/expansion/expansion-module.mjs +0 -65
  314. package/esm2022/expansion/expansion-panel-base.mjs +0 -14
  315. package/esm2022/expansion/expansion-panel-content.mjs +0 -35
  316. package/esm2022/expansion/expansion-panel-header.mjs +0 -218
  317. package/esm2022/expansion/expansion-panel.mjs +0 -211
  318. package/esm2022/expansion/expansion_public_index.mjs +0 -5
  319. package/esm2022/expansion/index.mjs +0 -9
  320. package/esm2022/expansion/public-api.mjs +0 -16
  321. package/esm2022/expansion/testing/accordion-harness.mjs +0 -31
  322. package/esm2022/expansion/testing/expansion-harness-filters.mjs +0 -9
  323. package/esm2022/expansion/testing/expansion-harness.mjs +0 -128
  324. package/esm2022/expansion/testing/index.mjs +0 -9
  325. package/esm2022/expansion/testing/public-api.mjs +0 -11
  326. package/esm2022/form-field/directives/error.mjs +0 -48
  327. package/esm2022/form-field/directives/floating-label.mjs +0 -135
  328. package/esm2022/form-field/directives/hint.mjs +0 -40
  329. package/esm2022/form-field/directives/label.mjs +0 -22
  330. package/esm2022/form-field/directives/line-ripple.mjs +0 -60
  331. package/esm2022/form-field/directives/notched-outline.mjs +0 -66
  332. package/esm2022/form-field/directives/prefix.mjs +0 -38
  333. package/esm2022/form-field/directives/suffix.mjs +0 -38
  334. package/esm2022/form-field/form-field-animations.mjs +0 -24
  335. package/esm2022/form-field/form-field-control.mjs +0 -11
  336. package/esm2022/form-field/form-field-errors.mjs +0 -20
  337. package/esm2022/form-field/form-field.mjs +0 -620
  338. package/esm2022/form-field/form-field_public_index.mjs +0 -5
  339. package/esm2022/form-field/index.mjs +0 -9
  340. package/esm2022/form-field/module.mjs +0 -51
  341. package/esm2022/form-field/public-api.mjs +0 -18
  342. package/esm2022/form-field/testing/control/form-field-control-harness.mjs +0 -15
  343. package/esm2022/form-field/testing/control/index.mjs +0 -9
  344. package/esm2022/form-field/testing/error-harness.mjs +0 -29
  345. package/esm2022/form-field/testing/form-field-harness-filters.mjs +0 -9
  346. package/esm2022/form-field/testing/form-field-harness.mjs +0 -179
  347. package/esm2022/form-field/testing/index.mjs +0 -9
  348. package/esm2022/form-field/testing/public-api.mjs +0 -15
  349. package/esm2022/grid-list/grid-list-base.mjs +0 -14
  350. package/esm2022/grid-list/grid-list-module.mjs +0 -59
  351. package/esm2022/grid-list/grid-list.mjs +0 -146
  352. package/esm2022/grid-list/grid-list_public_index.mjs +0 -5
  353. package/esm2022/grid-list/grid-tile.mjs +0 -128
  354. package/esm2022/grid-list/index.mjs +0 -9
  355. package/esm2022/grid-list/public-api.mjs +0 -14
  356. package/esm2022/grid-list/testing/grid-list-harness-filters.mjs +0 -9
  357. package/esm2022/grid-list/testing/grid-list-harness.mjs +0 -76
  358. package/esm2022/grid-list/testing/grid-tile-harness.mjs +0 -71
  359. package/esm2022/grid-list/testing/index.mjs +0 -9
  360. package/esm2022/grid-list/testing/public-api.mjs +0 -11
  361. package/esm2022/grid-list/tile-coordinator.mjs +0 -145
  362. package/esm2022/grid-list/tile-styler.mjs +0 -231
  363. package/esm2022/icon/fake-svgs.mjs +0 -62
  364. package/esm2022/icon/icon-module.mjs +0 -24
  365. package/esm2022/icon/icon-registry.mjs +0 -592
  366. package/esm2022/icon/icon.mjs +0 -379
  367. package/esm2022/icon/icon_public_index.mjs +0 -5
  368. package/esm2022/icon/index.mjs +0 -9
  369. package/esm2022/icon/public-api.mjs +0 -11
  370. package/esm2022/icon/testing/fake-icon-registry.mjs +0 -92
  371. package/esm2022/icon/testing/icon-harness-filters.mjs +0 -14
  372. package/esm2022/icon/testing/icon-harness.mjs +0 -60
  373. package/esm2022/icon/testing/index.mjs +0 -9
  374. package/esm2022/icon/testing/public-api.mjs +0 -11
  375. package/esm2022/icon/testing/testing_public_index.mjs +0 -5
  376. package/esm2022/icon/trusted-types.mjs +0 -43
  377. package/esm2022/index.mjs +0 -14
  378. package/esm2022/input/index.mjs +0 -9
  379. package/esm2022/input/input-errors.mjs +0 -12
  380. package/esm2022/input/input-value-accessor.mjs +0 -16
  381. package/esm2022/input/input.mjs +0 -524
  382. package/esm2022/input/input_public_index.mjs +0 -5
  383. package/esm2022/input/module.mjs +0 -26
  384. package/esm2022/input/public-api.mjs +0 -14
  385. package/esm2022/input/testing/index.mjs +0 -9
  386. package/esm2022/input/testing/input-harness-filters.mjs +0 -9
  387. package/esm2022/input/testing/input-harness.mjs +0 -119
  388. package/esm2022/input/testing/native-option-harness.mjs +0 -42
  389. package/esm2022/input/testing/native-select-harness-filters.mjs +0 -9
  390. package/esm2022/input/testing/native-select-harness.mjs +0 -79
  391. package/esm2022/input/testing/public-api.mjs +0 -13
  392. package/esm2022/list/action-list.mjs +0 -31
  393. package/esm2022/list/index.mjs +0 -9
  394. package/esm2022/list/list-base.mjs +0 -284
  395. package/esm2022/list/list-item-sections.mjs +0 -144
  396. package/esm2022/list/list-module.mjs +0 -97
  397. package/esm2022/list/list-option-types.mjs +0 -16
  398. package/esm2022/list/list-option.mjs +0 -295
  399. package/esm2022/list/list.mjs +0 -103
  400. package/esm2022/list/list_public_index.mjs +0 -5
  401. package/esm2022/list/nav-list.mjs +0 -37
  402. package/esm2022/list/public-api.mjs +0 -18
  403. package/esm2022/list/selection-list.mjs +0 -391
  404. package/esm2022/list/subheader.mjs +0 -28
  405. package/esm2022/list/testing/action-list-harness.mjs +0 -59
  406. package/esm2022/list/testing/index.mjs +0 -9
  407. package/esm2022/list/testing/list-harness-base.mjs +0 -95
  408. package/esm2022/list/testing/list-harness-filters.mjs +0 -9
  409. package/esm2022/list/testing/list-harness.mjs +0 -41
  410. package/esm2022/list/testing/list-item-harness-base.mjs +0 -162
  411. package/esm2022/list/testing/nav-list-harness.mjs +0 -69
  412. package/esm2022/list/testing/public-api.mjs +0 -14
  413. package/esm2022/list/testing/selection-list-harness.mjs +0 -122
  414. package/esm2022/list/tokens.mjs +0 -11
  415. package/esm2022/menu/index.mjs +0 -9
  416. package/esm2022/menu/menu-animations.mjs +0 -61
  417. package/esm2022/menu/menu-content.mjs +0 -87
  418. package/esm2022/menu/menu-errors.mjs +0 -35
  419. package/esm2022/menu/menu-item.mjs +0 -148
  420. package/esm2022/menu/menu-panel.mjs +0 -14
  421. package/esm2022/menu/menu-positions.mjs +0 -9
  422. package/esm2022/menu/menu-trigger.mjs +0 -542
  423. package/esm2022/menu/menu.mjs +0 -405
  424. package/esm2022/menu/menu_public_index.mjs +0 -5
  425. package/esm2022/menu/module.mjs +0 -63
  426. package/esm2022/menu/public-api.mjs +0 -16
  427. package/esm2022/menu/testing/index.mjs +0 -9
  428. package/esm2022/menu/testing/menu-harness-filters.mjs +0 -9
  429. package/esm2022/menu/testing/menu-harness.mjs +0 -166
  430. package/esm2022/menu/testing/public-api.mjs +0 -10
  431. package/esm2022/paginator/index.mjs +0 -9
  432. package/esm2022/paginator/module.mjs +0 -28
  433. package/esm2022/paginator/paginator-intl.mjs +0 -62
  434. package/esm2022/paginator/paginator.mjs +0 -266
  435. package/esm2022/paginator/paginator_public_index.mjs +0 -5
  436. package/esm2022/paginator/public-api.mjs +0 -11
  437. package/esm2022/paginator/testing/index.mjs +0 -9
  438. package/esm2022/paginator/testing/paginator-harness-filters.mjs +0 -9
  439. package/esm2022/paginator/testing/paginator-harness.mjs +0 -98
  440. package/esm2022/paginator/testing/public-api.mjs +0 -10
  441. package/esm2022/progress-bar/index.mjs +0 -9
  442. package/esm2022/progress-bar/module.mjs +0 -24
  443. package/esm2022/progress-bar/progress-bar.mjs +0 -181
  444. package/esm2022/progress-bar/progress-bar_public_index.mjs +0 -5
  445. package/esm2022/progress-bar/public-api.mjs +0 -10
  446. package/esm2022/progress-bar/testing/index.mjs +0 -9
  447. package/esm2022/progress-bar/testing/progress-bar-harness-filters.mjs +0 -9
  448. package/esm2022/progress-bar/testing/progress-bar-harness.mjs +0 -33
  449. package/esm2022/progress-bar/testing/public-api.mjs +0 -10
  450. package/esm2022/progress-bar/testing/testing_public_index.mjs +0 -5
  451. package/esm2022/progress-spinner/index.mjs +0 -9
  452. package/esm2022/progress-spinner/module.mjs +0 -25
  453. package/esm2022/progress-spinner/progress-spinner.mjs +0 -166
  454. package/esm2022/progress-spinner/progress-spinner_public_index.mjs +0 -5
  455. package/esm2022/progress-spinner/public-api.mjs +0 -10
  456. package/esm2022/progress-spinner/testing/index.mjs +0 -9
  457. package/esm2022/progress-spinner/testing/progress-spinner-harness-filters.mjs +0 -9
  458. package/esm2022/progress-spinner/testing/progress-spinner-harness.mjs +0 -35
  459. package/esm2022/progress-spinner/testing/public-api.mjs +0 -10
  460. package/esm2022/progress-spinner/testing/testing_public_index.mjs +0 -5
  461. package/esm2022/radio/index.mjs +0 -9
  462. package/esm2022/radio/module.mjs +0 -25
  463. package/esm2022/radio/public-api.mjs +0 -10
  464. package/esm2022/radio/radio.mjs +0 -680
  465. package/esm2022/radio/radio_public_index.mjs +0 -5
  466. package/esm2022/radio/testing/index.mjs +0 -9
  467. package/esm2022/radio/testing/public-api.mjs +0 -10
  468. package/esm2022/radio/testing/radio-harness-filters.mjs +0 -9
  469. package/esm2022/radio/testing/radio-harness.mjs +0 -228
  470. package/esm2022/select/index.mjs +0 -9
  471. package/esm2022/select/module.mjs +0 -59
  472. package/esm2022/select/public-api.mjs +0 -15
  473. package/esm2022/select/select-animations.mjs +0 -38
  474. package/esm2022/select/select-errors.mjs +0 -35
  475. package/esm2022/select/select.mjs +0 -1160
  476. package/esm2022/select/select_public_index.mjs +0 -5
  477. package/esm2022/select/testing/index.mjs +0 -9
  478. package/esm2022/select/testing/public-api.mjs +0 -10
  479. package/esm2022/select/testing/select-harness-filters.mjs +0 -9
  480. package/esm2022/select/testing/select-harness.mjs +0 -129
  481. package/esm2022/sidenav/drawer-animations.mjs +0 -33
  482. package/esm2022/sidenav/drawer.mjs +0 -863
  483. package/esm2022/sidenav/index.mjs +0 -9
  484. package/esm2022/sidenav/public-api.mjs +0 -12
  485. package/esm2022/sidenav/sidenav-module.mjs +0 -60
  486. package/esm2022/sidenav/sidenav.mjs +0 -148
  487. package/esm2022/sidenav/sidenav_public_index.mjs +0 -5
  488. package/esm2022/sidenav/testing/drawer-container-harness.mjs +0 -36
  489. package/esm2022/sidenav/testing/drawer-content-harness.mjs +0 -23
  490. package/esm2022/sidenav/testing/drawer-harness-filters.mjs +0 -9
  491. package/esm2022/sidenav/testing/drawer-harness.mjs +0 -49
  492. package/esm2022/sidenav/testing/index.mjs +0 -9
  493. package/esm2022/sidenav/testing/public-api.mjs +0 -15
  494. package/esm2022/sidenav/testing/sidenav-container-harness.mjs +0 -36
  495. package/esm2022/sidenav/testing/sidenav-content-harness.mjs +0 -23
  496. package/esm2022/sidenav/testing/sidenav-harness.mjs +0 -28
  497. package/esm2022/slide-toggle/index.mjs +0 -9
  498. package/esm2022/slide-toggle/module.mjs +0 -41
  499. package/esm2022/slide-toggle/public-api.mjs +0 -12
  500. package/esm2022/slide-toggle/slide-toggle-config.mjs +0 -14
  501. package/esm2022/slide-toggle/slide-toggle-required-validator.mjs +0 -44
  502. package/esm2022/slide-toggle/slide-toggle.mjs +0 -273
  503. package/esm2022/slide-toggle/slide-toggle_public_index.mjs +0 -5
  504. package/esm2022/slide-toggle/testing/index.mjs +0 -9
  505. package/esm2022/slide-toggle/testing/public-api.mjs +0 -10
  506. package/esm2022/slide-toggle/testing/slide-toggle-harness-filters.mjs +0 -9
  507. package/esm2022/slide-toggle/testing/slide-toggle-harness.mjs +0 -110
  508. package/esm2022/slider/index.mjs +0 -9
  509. package/esm2022/slider/module.mjs +0 -39
  510. package/esm2022/slider/public-api.mjs +0 -13
  511. package/esm2022/slider/slider-input.mjs +0 -701
  512. package/esm2022/slider/slider-interface.mjs +0 -56
  513. package/esm2022/slider/slider-thumb.mjs +0 -231
  514. package/esm2022/slider/slider.mjs +0 -746
  515. package/esm2022/slider/slider_public_index.mjs +0 -5
  516. package/esm2022/slider/testing/index.mjs +0 -9
  517. package/esm2022/slider/testing/public-api.mjs +0 -11
  518. package/esm2022/slider/testing/slider-harness-filters.mjs +0 -7
  519. package/esm2022/slider/testing/slider-harness.mjs +0 -67
  520. package/esm2022/slider/testing/slider-thumb-harness.mjs +0 -95
  521. package/esm2022/snack-bar/index.mjs +0 -9
  522. package/esm2022/snack-bar/module.mjs +0 -47
  523. package/esm2022/snack-bar/public-api.mjs +0 -16
  524. package/esm2022/snack-bar/simple-snack-bar.mjs +0 -40
  525. package/esm2022/snack-bar/snack-bar-animations.mjs +0 -30
  526. package/esm2022/snack-bar/snack-bar-config.mjs +0 -33
  527. package/esm2022/snack-bar/snack-bar-container.mjs +0 -277
  528. package/esm2022/snack-bar/snack-bar-content.mjs +0 -55
  529. package/esm2022/snack-bar/snack-bar-ref.mjs +0 -89
  530. package/esm2022/snack-bar/snack-bar.mjs +0 -267
  531. package/esm2022/snack-bar/snack-bar_public_index.mjs +0 -5
  532. package/esm2022/snack-bar/testing/index.mjs +0 -9
  533. package/esm2022/snack-bar/testing/public-api.mjs +0 -10
  534. package/esm2022/snack-bar/testing/snack-bar-harness-filters.mjs +0 -9
  535. package/esm2022/snack-bar/testing/snack-bar-harness.mjs +0 -101
  536. package/esm2022/sort/index.mjs +0 -9
  537. package/esm2022/sort/public-api.mjs +0 -14
  538. package/esm2022/sort/sort-animations.mjs +0 -69
  539. package/esm2022/sort/sort-direction.mjs +0 -9
  540. package/esm2022/sort/sort-errors.mjs +0 -24
  541. package/esm2022/sort/sort-header-intl.mjs +0 -41
  542. package/esm2022/sort/sort-header.mjs +0 -317
  543. package/esm2022/sort/sort-module.mjs +0 -27
  544. package/esm2022/sort/sort.mjs +0 -155
  545. package/esm2022/sort/sort_public_index.mjs +0 -5
  546. package/esm2022/sort/testing/index.mjs +0 -9
  547. package/esm2022/sort/testing/public-api.mjs +0 -11
  548. package/esm2022/sort/testing/sort-harness-filters.mjs +0 -2
  549. package/esm2022/sort/testing/sort-harness.mjs +0 -36
  550. package/esm2022/sort/testing/sort-header-harness.mjs +0 -56
  551. package/esm2022/stepper/index.mjs +0 -9
  552. package/esm2022/stepper/public-api.mjs +0 -17
  553. package/esm2022/stepper/step-content.mjs +0 -27
  554. package/esm2022/stepper/step-header.mjs +0 -105
  555. package/esm2022/stepper/step-label.mjs +0 -22
  556. package/esm2022/stepper/stepper-animations.mjs +0 -47
  557. package/esm2022/stepper/stepper-button.mjs +0 -43
  558. package/esm2022/stepper/stepper-icon.mjs +0 -30
  559. package/esm2022/stepper/stepper-intl.mjs +0 -43
  560. package/esm2022/stepper/stepper-module.mjs +0 -88
  561. package/esm2022/stepper/stepper.mjs +0 -205
  562. package/esm2022/stepper/stepper_public_index.mjs +0 -5
  563. package/esm2022/stepper/testing/index.mjs +0 -9
  564. package/esm2022/stepper/testing/public-api.mjs +0 -12
  565. package/esm2022/stepper/testing/step-harness-filters.mjs +0 -7
  566. package/esm2022/stepper/testing/step-harness.mjs +0 -90
  567. package/esm2022/stepper/testing/stepper-button-harnesses.mjs +0 -48
  568. package/esm2022/stepper/testing/stepper-harness.mjs +0 -51
  569. package/esm2022/table/cell.mjs +0 -147
  570. package/esm2022/table/index.mjs +0 -9
  571. package/esm2022/table/module.mjs +0 -93
  572. package/esm2022/table/public-api.mjs +0 -14
  573. package/esm2022/table/row.mjs +0 -163
  574. package/esm2022/table/table-data-source.mjs +0 -317
  575. package/esm2022/table/table.mjs +0 -122
  576. package/esm2022/table/table_public_index.mjs +0 -5
  577. package/esm2022/table/testing/cell-harness.mjs +0 -77
  578. package/esm2022/table/testing/index.mjs +0 -9
  579. package/esm2022/table/testing/public-api.mjs +0 -12
  580. package/esm2022/table/testing/row-harness.mjs +0 -84
  581. package/esm2022/table/testing/table-harness-filters.mjs +0 -2
  582. package/esm2022/table/testing/table-harness.mjs +0 -86
  583. package/esm2022/table/text-column.mjs +0 -60
  584. package/esm2022/tabs/index.mjs +0 -9
  585. package/esm2022/tabs/ink-bar.mjs +0 -149
  586. package/esm2022/tabs/module.mjs +0 -60
  587. package/esm2022/tabs/paginated-tab-header.mjs +0 -539
  588. package/esm2022/tabs/public-api.mjs +0 -21
  589. package/esm2022/tabs/tab-body.mjs +0 -199
  590. package/esm2022/tabs/tab-config.mjs +0 -11
  591. package/esm2022/tabs/tab-content.mjs +0 -32
  592. package/esm2022/tabs/tab-group.mjs +0 -469
  593. package/esm2022/tabs/tab-header.mjs +0 -86
  594. package/esm2022/tabs/tab-label-wrapper.mjs +0 -49
  595. package/esm2022/tabs/tab-label.mjs +0 -44
  596. package/esm2022/tabs/tab-nav-bar/tab-nav-bar.mjs +0 -388
  597. package/esm2022/tabs/tab.mjs +0 -128
  598. package/esm2022/tabs/tabs-animations.mjs +0 -45
  599. package/esm2022/tabs/tabs_public_index.mjs +0 -5
  600. package/esm2022/tabs/testing/index.mjs +0 -9
  601. package/esm2022/tabs/testing/public-api.mjs +0 -13
  602. package/esm2022/tabs/testing/tab-group-harness.mjs +0 -56
  603. package/esm2022/tabs/testing/tab-harness-filters.mjs +0 -2
  604. package/esm2022/tabs/testing/tab-harness.mjs +0 -66
  605. package/esm2022/tabs/testing/tab-link-harness.mjs +0 -40
  606. package/esm2022/tabs/testing/tab-nav-bar-harness.mjs +0 -66
  607. package/esm2022/tabs/testing/tab-nav-panel-harness.mjs +0 -27
  608. package/esm2022/toolbar/index.mjs +0 -9
  609. package/esm2022/toolbar/public-api.mjs +0 -10
  610. package/esm2022/toolbar/testing/index.mjs +0 -9
  611. package/esm2022/toolbar/testing/public-api.mjs +0 -10
  612. package/esm2022/toolbar/testing/toolbar-harness-filters.mjs +0 -9
  613. package/esm2022/toolbar/testing/toolbar-harness.mjs +0 -44
  614. package/esm2022/toolbar/toolbar-module.mjs +0 -24
  615. package/esm2022/toolbar/toolbar.mjs +0 -84
  616. package/esm2022/toolbar/toolbar_public_index.mjs +0 -5
  617. package/esm2022/tooltip/index.mjs +0 -9
  618. package/esm2022/tooltip/module.mjs +0 -29
  619. package/esm2022/tooltip/public-api.mjs +0 -11
  620. package/esm2022/tooltip/testing/index.mjs +0 -9
  621. package/esm2022/tooltip/testing/public-api.mjs +0 -10
  622. package/esm2022/tooltip/testing/tooltip-harness-filters.mjs +0 -9
  623. package/esm2022/tooltip/testing/tooltip-harness.mjs +0 -66
  624. package/esm2022/tooltip/tooltip-animations.mjs +0 -24
  625. package/esm2022/tooltip/tooltip.mjs +0 -920
  626. package/esm2022/tooltip/tooltip_public_index.mjs +0 -5
  627. package/esm2022/tree/data-source/flat-data-source.mjs +0 -156
  628. package/esm2022/tree/data-source/nested-data-source.mjs +0 -38
  629. package/esm2022/tree/index.mjs +0 -9
  630. package/esm2022/tree/node.mjs +0 -220
  631. package/esm2022/tree/outlet.mjs +0 -46
  632. package/esm2022/tree/padding.mjs +0 -46
  633. package/esm2022/tree/public-api.mjs +0 -16
  634. package/esm2022/tree/testing/index.mjs +0 -9
  635. package/esm2022/tree/testing/node-harness.mjs +0 -73
  636. package/esm2022/tree/testing/public-api.mjs +0 -11
  637. package/esm2022/tree/testing/tree-harness-filters.mjs +0 -9
  638. package/esm2022/tree/testing/tree-harness.mjs +0 -123
  639. package/esm2022/tree/toggle.mjs +0 -27
  640. package/esm2022/tree/tree-module.mjs +0 -50
  641. package/esm2022/tree/tree.mjs +0 -34
  642. package/esm2022/tree/tree_public_index.mjs +0 -5
@@ -1,379 +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 { DOCUMENT } from '@angular/common';
9
- import { Attribute, booleanAttribute, ChangeDetectionStrategy, Component, ElementRef, ErrorHandler, inject, Inject, InjectionToken, Input, Optional, ViewEncapsulation, } from '@angular/core';
10
- import { Subscription } from 'rxjs';
11
- import { take } from 'rxjs/operators';
12
- import { MatIconRegistry } from './icon-registry';
13
- import * as i0 from "@angular/core";
14
- import * as i1 from "./icon-registry";
15
- /** Injection token to be used to override the default options for `mat-icon`. */
16
- export const MAT_ICON_DEFAULT_OPTIONS = new InjectionToken('MAT_ICON_DEFAULT_OPTIONS');
17
- /**
18
- * Injection token used to provide the current location to `MatIcon`.
19
- * Used to handle server-side rendering and to stub out during unit tests.
20
- * @docs-private
21
- */
22
- export const MAT_ICON_LOCATION = new InjectionToken('mat-icon-location', {
23
- providedIn: 'root',
24
- factory: MAT_ICON_LOCATION_FACTORY,
25
- });
26
- /** @docs-private */
27
- export function MAT_ICON_LOCATION_FACTORY() {
28
- const _document = inject(DOCUMENT);
29
- const _location = _document ? _document.location : null;
30
- return {
31
- // Note that this needs to be a function, rather than a property, because Angular
32
- // will only resolve it once, but we want the current path on each call.
33
- getPathname: () => (_location ? _location.pathname + _location.search : ''),
34
- };
35
- }
36
- /** SVG attributes that accept a FuncIRI (e.g. `url(<something>)`). */
37
- const funcIriAttributes = [
38
- 'clip-path',
39
- 'color-profile',
40
- 'src',
41
- 'cursor',
42
- 'fill',
43
- 'filter',
44
- 'marker',
45
- 'marker-start',
46
- 'marker-mid',
47
- 'marker-end',
48
- 'mask',
49
- 'stroke',
50
- ];
51
- /** Selector that can be used to find all elements that are using a `FuncIRI`. */
52
- const funcIriAttributeSelector = funcIriAttributes.map(attr => `[${attr}]`).join(', ');
53
- /** Regex that can be used to extract the id out of a FuncIRI. */
54
- const funcIriPattern = /^url\(['"]?#(.*?)['"]?\)$/;
55
- /**
56
- * Component to display an icon. It can be used in the following ways:
57
- *
58
- * - Specify the svgIcon input to load an SVG icon from a URL previously registered with the
59
- * addSvgIcon, addSvgIconInNamespace, addSvgIconSet, or addSvgIconSetInNamespace methods of
60
- * MatIconRegistry. If the svgIcon value contains a colon it is assumed to be in the format
61
- * "[namespace]:[name]", if not the value will be the name of an icon in the default namespace.
62
- * Examples:
63
- * `<mat-icon svgIcon="left-arrow"></mat-icon>
64
- * <mat-icon svgIcon="animals:cat"></mat-icon>`
65
- *
66
- * - Use a font ligature as an icon by putting the ligature text in the `fontIcon` attribute or the
67
- * content of the `<mat-icon>` component. If you register a custom font class, don't forget to also
68
- * include the special class `mat-ligature-font`. It is recommended to use the attribute alternative
69
- * to prevent the ligature text to be selectable and to appear in search engine results.
70
- * By default, the Material icons font is used as described at
71
- * http://google.github.io/material-design-icons/#icon-font-for-the-web. You can specify an
72
- * alternate font by setting the fontSet input to either the CSS class to apply to use the
73
- * desired font, or to an alias previously registered with MatIconRegistry.registerFontClassAlias.
74
- * Examples:
75
- * `<mat-icon fontIcon="home"></mat-icon>
76
- * <mat-icon>home</mat-icon>
77
- * <mat-icon fontSet="myfont" fontIcon="sun"></mat-icon>
78
- * <mat-icon fontSet="myfont">sun</mat-icon>`
79
- *
80
- * - Specify a font glyph to be included via CSS rules by setting the fontSet input to specify the
81
- * font, and the fontIcon input to specify the icon. Typically the fontIcon will specify a
82
- * CSS class which causes the glyph to be displayed via a :before selector, as in
83
- * https://fortawesome.github.io/Font-Awesome/examples/
84
- * Example:
85
- * `<mat-icon fontSet="fa" fontIcon="alarm"></mat-icon>`
86
- */
87
- export class MatIcon {
88
- /**
89
- * Theme color of the icon. This API is supported in M2 themes only, it
90
- * has no effect in M3 themes.
91
- *
92
- * For information on applying color variants in M3, see
93
- * https://material.angular.io/guide/theming#using-component-color-variants.
94
- */
95
- get color() {
96
- return this._color || this._defaultColor;
97
- }
98
- set color(value) {
99
- this._color = value;
100
- }
101
- /** Name of the icon in the SVG icon set. */
102
- get svgIcon() {
103
- return this._svgIcon;
104
- }
105
- set svgIcon(value) {
106
- if (value !== this._svgIcon) {
107
- if (value) {
108
- this._updateSvgIcon(value);
109
- }
110
- else if (this._svgIcon) {
111
- this._clearSvgElement();
112
- }
113
- this._svgIcon = value;
114
- }
115
- }
116
- /** Font set that the icon is a part of. */
117
- get fontSet() {
118
- return this._fontSet;
119
- }
120
- set fontSet(value) {
121
- const newValue = this._cleanupFontValue(value);
122
- if (newValue !== this._fontSet) {
123
- this._fontSet = newValue;
124
- this._updateFontIconClasses();
125
- }
126
- }
127
- /** Name of an icon within a font set. */
128
- get fontIcon() {
129
- return this._fontIcon;
130
- }
131
- set fontIcon(value) {
132
- const newValue = this._cleanupFontValue(value);
133
- if (newValue !== this._fontIcon) {
134
- this._fontIcon = newValue;
135
- this._updateFontIconClasses();
136
- }
137
- }
138
- constructor(_elementRef, _iconRegistry, ariaHidden, _location, _errorHandler, defaults) {
139
- this._elementRef = _elementRef;
140
- this._iconRegistry = _iconRegistry;
141
- this._location = _location;
142
- this._errorHandler = _errorHandler;
143
- /**
144
- * Whether the icon should be inlined, automatically sizing the icon to match the font size of
145
- * the element the icon is contained in.
146
- */
147
- this.inline = false;
148
- this._previousFontSetClass = [];
149
- /** Subscription to the current in-progress SVG icon request. */
150
- this._currentIconFetch = Subscription.EMPTY;
151
- if (defaults) {
152
- if (defaults.color) {
153
- this.color = this._defaultColor = defaults.color;
154
- }
155
- if (defaults.fontSet) {
156
- this.fontSet = defaults.fontSet;
157
- }
158
- }
159
- // If the user has not explicitly set aria-hidden, mark the icon as hidden, as this is
160
- // the right thing to do for the majority of icon use-cases.
161
- if (!ariaHidden) {
162
- _elementRef.nativeElement.setAttribute('aria-hidden', 'true');
163
- }
164
- }
165
- /**
166
- * Splits an svgIcon binding value into its icon set and icon name components.
167
- * Returns a 2-element array of [(icon set), (icon name)].
168
- * The separator for the two fields is ':'. If there is no separator, an empty
169
- * string is returned for the icon set and the entire value is returned for
170
- * the icon name. If the argument is falsy, returns an array of two empty strings.
171
- * Throws an error if the name contains two or more ':' separators.
172
- * Examples:
173
- * `'social:cake' -> ['social', 'cake']
174
- * 'penguin' -> ['', 'penguin']
175
- * null -> ['', '']
176
- * 'a:b:c' -> (throws Error)`
177
- */
178
- _splitIconName(iconName) {
179
- if (!iconName) {
180
- return ['', ''];
181
- }
182
- const parts = iconName.split(':');
183
- switch (parts.length) {
184
- case 1:
185
- return ['', parts[0]]; // Use default namespace.
186
- case 2:
187
- return parts;
188
- default:
189
- throw Error(`Invalid icon name: "${iconName}"`); // TODO: add an ngDevMode check
190
- }
191
- }
192
- ngOnInit() {
193
- // Update font classes because ngOnChanges won't be called if none of the inputs are present,
194
- // e.g. <mat-icon>arrow</mat-icon> In this case we need to add a CSS class for the default font.
195
- this._updateFontIconClasses();
196
- }
197
- ngAfterViewChecked() {
198
- const cachedElements = this._elementsWithExternalReferences;
199
- if (cachedElements && cachedElements.size) {
200
- const newPath = this._location.getPathname();
201
- // We need to check whether the URL has changed on each change detection since
202
- // the browser doesn't have an API that will let us react on link clicks and
203
- // we can't depend on the Angular router. The references need to be updated,
204
- // because while most browsers don't care whether the URL is correct after
205
- // the first render, Safari will break if the user navigates to a different
206
- // page and the SVG isn't re-rendered.
207
- if (newPath !== this._previousPath) {
208
- this._previousPath = newPath;
209
- this._prependPathToReferences(newPath);
210
- }
211
- }
212
- }
213
- ngOnDestroy() {
214
- this._currentIconFetch.unsubscribe();
215
- if (this._elementsWithExternalReferences) {
216
- this._elementsWithExternalReferences.clear();
217
- }
218
- }
219
- _usingFontIcon() {
220
- return !this.svgIcon;
221
- }
222
- _setSvgElement(svg) {
223
- this._clearSvgElement();
224
- // Note: we do this fix here, rather than the icon registry, because the
225
- // references have to point to the URL at the time that the icon was created.
226
- const path = this._location.getPathname();
227
- this._previousPath = path;
228
- this._cacheChildrenWithExternalReferences(svg);
229
- this._prependPathToReferences(path);
230
- this._elementRef.nativeElement.appendChild(svg);
231
- }
232
- _clearSvgElement() {
233
- const layoutElement = this._elementRef.nativeElement;
234
- let childCount = layoutElement.childNodes.length;
235
- if (this._elementsWithExternalReferences) {
236
- this._elementsWithExternalReferences.clear();
237
- }
238
- // Remove existing non-element child nodes and SVGs, and add the new SVG element. Note that
239
- // we can't use innerHTML, because IE will throw if the element has a data binding.
240
- while (childCount--) {
241
- const child = layoutElement.childNodes[childCount];
242
- // 1 corresponds to Node.ELEMENT_NODE. We remove all non-element nodes in order to get rid
243
- // of any loose text nodes, as well as any SVG elements in order to remove any old icons.
244
- if (child.nodeType !== 1 || child.nodeName.toLowerCase() === 'svg') {
245
- child.remove();
246
- }
247
- }
248
- }
249
- _updateFontIconClasses() {
250
- if (!this._usingFontIcon()) {
251
- return;
252
- }
253
- const elem = this._elementRef.nativeElement;
254
- const fontSetClasses = (this.fontSet
255
- ? this._iconRegistry.classNameForFontAlias(this.fontSet).split(/ +/)
256
- : this._iconRegistry.getDefaultFontSetClass()).filter(className => className.length > 0);
257
- this._previousFontSetClass.forEach(className => elem.classList.remove(className));
258
- fontSetClasses.forEach(className => elem.classList.add(className));
259
- this._previousFontSetClass = fontSetClasses;
260
- if (this.fontIcon !== this._previousFontIconClass &&
261
- !fontSetClasses.includes('mat-ligature-font')) {
262
- if (this._previousFontIconClass) {
263
- elem.classList.remove(this._previousFontIconClass);
264
- }
265
- if (this.fontIcon) {
266
- elem.classList.add(this.fontIcon);
267
- }
268
- this._previousFontIconClass = this.fontIcon;
269
- }
270
- }
271
- /**
272
- * Cleans up a value to be used as a fontIcon or fontSet.
273
- * Since the value ends up being assigned as a CSS class, we
274
- * have to trim the value and omit space-separated values.
275
- */
276
- _cleanupFontValue(value) {
277
- return typeof value === 'string' ? value.trim().split(' ')[0] : value;
278
- }
279
- /**
280
- * Prepends the current path to all elements that have an attribute pointing to a `FuncIRI`
281
- * reference. This is required because WebKit browsers require references to be prefixed with
282
- * the current path, if the page has a `base` tag.
283
- */
284
- _prependPathToReferences(path) {
285
- const elements = this._elementsWithExternalReferences;
286
- if (elements) {
287
- elements.forEach((attrs, element) => {
288
- attrs.forEach(attr => {
289
- element.setAttribute(attr.name, `url('${path}#${attr.value}')`);
290
- });
291
- });
292
- }
293
- }
294
- /**
295
- * Caches the children of an SVG element that have `url()`
296
- * references that we need to prefix with the current path.
297
- */
298
- _cacheChildrenWithExternalReferences(element) {
299
- const elementsWithFuncIri = element.querySelectorAll(funcIriAttributeSelector);
300
- const elements = (this._elementsWithExternalReferences =
301
- this._elementsWithExternalReferences || new Map());
302
- for (let i = 0; i < elementsWithFuncIri.length; i++) {
303
- funcIriAttributes.forEach(attr => {
304
- const elementWithReference = elementsWithFuncIri[i];
305
- const value = elementWithReference.getAttribute(attr);
306
- const match = value ? value.match(funcIriPattern) : null;
307
- if (match) {
308
- let attributes = elements.get(elementWithReference);
309
- if (!attributes) {
310
- attributes = [];
311
- elements.set(elementWithReference, attributes);
312
- }
313
- attributes.push({ name: attr, value: match[1] });
314
- }
315
- });
316
- }
317
- }
318
- /** Sets a new SVG icon with a particular name. */
319
- _updateSvgIcon(rawName) {
320
- this._svgNamespace = null;
321
- this._svgName = null;
322
- this._currentIconFetch.unsubscribe();
323
- if (rawName) {
324
- const [namespace, iconName] = this._splitIconName(rawName);
325
- if (namespace) {
326
- this._svgNamespace = namespace;
327
- }
328
- if (iconName) {
329
- this._svgName = iconName;
330
- }
331
- this._currentIconFetch = this._iconRegistry
332
- .getNamedSvgIcon(iconName, namespace)
333
- .pipe(take(1))
334
- .subscribe(svg => this._setSvgElement(svg), (err) => {
335
- const errorMessage = `Error retrieving icon ${namespace}:${iconName}! ${err.message}`;
336
- this._errorHandler.handleError(new Error(errorMessage));
337
- });
338
- }
339
- }
340
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.0-next.2", ngImport: i0, type: MatIcon, deps: [{ token: i0.ElementRef }, { token: i1.MatIconRegistry }, { token: 'aria-hidden', attribute: true }, { token: MAT_ICON_LOCATION }, { token: i0.ErrorHandler }, { token: MAT_ICON_DEFAULT_OPTIONS, optional: true }], target: i0.ɵɵFactoryTarget.Component }); }
341
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "16.1.0", version: "18.2.0-next.2", type: MatIcon, isStandalone: true, selector: "mat-icon", inputs: { color: "color", inline: ["inline", "inline", booleanAttribute], svgIcon: "svgIcon", fontSet: "fontSet", fontIcon: "fontIcon" }, host: { attributes: { "role": "img" }, properties: { "class": "color ? \"mat-\" + color : \"\"", "attr.data-mat-icon-type": "_usingFontIcon() ? \"font\" : \"svg\"", "attr.data-mat-icon-name": "_svgName || fontIcon", "attr.data-mat-icon-namespace": "_svgNamespace || fontSet", "attr.fontIcon": "_usingFontIcon() ? fontIcon : null", "class.mat-icon-inline": "inline", "class.mat-icon-no-color": "color !== \"primary\" && color !== \"accent\" && color !== \"warn\"" }, classAttribute: "mat-icon notranslate" }, exportAs: ["matIcon"], ngImport: i0, template: '<ng-content></ng-content>', isInline: true, styles: ["mat-icon,mat-icon.mat-primary,mat-icon.mat-accent,mat-icon.mat-warn{color:var(--mat-icon-color, inherit)}.mat-icon{-webkit-user-select:none;user-select:none;background-repeat:no-repeat;display:inline-block;fill:currentColor;height:24px;width:24px;overflow:hidden}.mat-icon.mat-icon-inline{font-size:inherit;height:inherit;line-height:inherit;width:inherit}.mat-icon.mat-ligature-font[fontIcon]::before{content:attr(fontIcon)}[dir=rtl] .mat-icon-rtl-mirror{transform:scale(-1, 1)}.mat-form-field:not(.mat-form-field-appearance-legacy) .mat-form-field-prefix .mat-icon,.mat-form-field:not(.mat-form-field-appearance-legacy) .mat-form-field-suffix .mat-icon{display:block}.mat-form-field:not(.mat-form-field-appearance-legacy) .mat-form-field-prefix .mat-icon-button .mat-icon,.mat-form-field:not(.mat-form-field-appearance-legacy) .mat-form-field-suffix .mat-icon-button .mat-icon{margin:auto}"], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
342
- }
343
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0-next.2", ngImport: i0, type: MatIcon, decorators: [{
344
- type: Component,
345
- args: [{ template: '<ng-content></ng-content>', selector: 'mat-icon', exportAs: 'matIcon', host: {
346
- 'role': 'img',
347
- 'class': 'mat-icon notranslate',
348
- '[class]': 'color ? "mat-" + color : ""',
349
- '[attr.data-mat-icon-type]': '_usingFontIcon() ? "font" : "svg"',
350
- '[attr.data-mat-icon-name]': '_svgName || fontIcon',
351
- '[attr.data-mat-icon-namespace]': '_svgNamespace || fontSet',
352
- '[attr.fontIcon]': '_usingFontIcon() ? fontIcon : null',
353
- '[class.mat-icon-inline]': 'inline',
354
- '[class.mat-icon-no-color]': 'color !== "primary" && color !== "accent" && color !== "warn"',
355
- }, encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, styles: ["mat-icon,mat-icon.mat-primary,mat-icon.mat-accent,mat-icon.mat-warn{color:var(--mat-icon-color, inherit)}.mat-icon{-webkit-user-select:none;user-select:none;background-repeat:no-repeat;display:inline-block;fill:currentColor;height:24px;width:24px;overflow:hidden}.mat-icon.mat-icon-inline{font-size:inherit;height:inherit;line-height:inherit;width:inherit}.mat-icon.mat-ligature-font[fontIcon]::before{content:attr(fontIcon)}[dir=rtl] .mat-icon-rtl-mirror{transform:scale(-1, 1)}.mat-form-field:not(.mat-form-field-appearance-legacy) .mat-form-field-prefix .mat-icon,.mat-form-field:not(.mat-form-field-appearance-legacy) .mat-form-field-suffix .mat-icon{display:block}.mat-form-field:not(.mat-form-field-appearance-legacy) .mat-form-field-prefix .mat-icon-button .mat-icon,.mat-form-field:not(.mat-form-field-appearance-legacy) .mat-form-field-suffix .mat-icon-button .mat-icon{margin:auto}"] }]
356
- }], ctorParameters: () => [{ type: i0.ElementRef }, { type: i1.MatIconRegistry }, { type: undefined, decorators: [{
357
- type: Attribute,
358
- args: ['aria-hidden']
359
- }] }, { type: undefined, decorators: [{
360
- type: Inject,
361
- args: [MAT_ICON_LOCATION]
362
- }] }, { type: i0.ErrorHandler }, { type: undefined, decorators: [{
363
- type: Optional
364
- }, {
365
- type: Inject,
366
- args: [MAT_ICON_DEFAULT_OPTIONS]
367
- }] }], propDecorators: { color: [{
368
- type: Input
369
- }], inline: [{
370
- type: Input,
371
- args: [{ transform: booleanAttribute }]
372
- }], svgIcon: [{
373
- type: Input
374
- }], fontSet: [{
375
- type: Input
376
- }], fontIcon: [{
377
- type: Input
378
- }] } });
379
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWNvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9tYXRlcmlhbC9pY29uL2ljb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7OztHQU1HO0FBRUgsT0FBTyxFQUFDLFFBQVEsRUFBQyxNQUFNLGlCQUFpQixDQUFDO0FBQ3pDLE9BQU8sRUFFTCxTQUFTLEVBQ1QsZ0JBQWdCLEVBQ2hCLHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsVUFBVSxFQUNWLFlBQVksRUFDWixNQUFNLEVBQ04sTUFBTSxFQUNOLGNBQWMsRUFDZCxLQUFLLEVBR0wsUUFBUSxFQUNSLGlCQUFpQixHQUNsQixNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0sTUFBTSxDQUFDO0FBQ2xDLE9BQU8sRUFBQyxJQUFJLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUVwQyxPQUFPLEVBQUMsZUFBZSxFQUFDLE1BQU0saUJBQWlCLENBQUM7OztBQWdCaEQsaUZBQWlGO0FBQ2pGLE1BQU0sQ0FBQyxNQUFNLHdCQUF3QixHQUFHLElBQUksY0FBYyxDQUN4RCwwQkFBMEIsQ0FDM0IsQ0FBQztBQUVGOzs7O0dBSUc7QUFDSCxNQUFNLENBQUMsTUFBTSxpQkFBaUIsR0FBRyxJQUFJLGNBQWMsQ0FBa0IsbUJBQW1CLEVBQUU7SUFDeEYsVUFBVSxFQUFFLE1BQU07SUFDbEIsT0FBTyxFQUFFLHlCQUF5QjtDQUNuQyxDQUFDLENBQUM7QUFVSCxvQkFBb0I7QUFDcEIsTUFBTSxVQUFVLHlCQUF5QjtJQUN2QyxNQUFNLFNBQVMsR0FBRyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDbkMsTUFBTSxTQUFTLEdBQUcsU0FBUyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7SUFFeEQsT0FBTztRQUNMLGlGQUFpRjtRQUNqRix3RUFBd0U7UUFDeEUsV0FBVyxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsUUFBUSxHQUFHLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztLQUM1RSxDQUFDO0FBQ0osQ0FBQztBQUVELHNFQUFzRTtBQUN0RSxNQUFNLGlCQUFpQixHQUFHO0lBQ3hCLFdBQVc7SUFDWCxlQUFlO0lBQ2YsS0FBSztJQUNMLFFBQVE7SUFDUixNQUFNO0lBQ04sUUFBUTtJQUNSLFFBQVE7SUFDUixjQUFjO0lBQ2QsWUFBWTtJQUNaLFlBQVk7SUFDWixNQUFNO0lBQ04sUUFBUTtDQUNULENBQUM7QUFFRixpRkFBaUY7QUFDakYsTUFBTSx3QkFBd0IsR0FBRyxpQkFBaUIsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLElBQUksR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0FBRXZGLGlFQUFpRTtBQUNqRSxNQUFNLGNBQWMsR0FBRywyQkFBMkIsQ0FBQztBQUVuRDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQStCRztBQXFCSCxNQUFNLE9BQU8sT0FBTztJQUdsQjs7Ozs7O09BTUc7SUFDSCxJQUNJLEtBQUs7UUFDUCxPQUFPLElBQUksQ0FBQyxNQUFNLElBQUksSUFBSSxDQUFDLGFBQWEsQ0FBQztJQUMzQyxDQUFDO0lBQ0QsSUFBSSxLQUFLLENBQUMsS0FBZ0M7UUFDeEMsSUFBSSxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUM7SUFDdEIsQ0FBQztJQVVELDRDQUE0QztJQUM1QyxJQUNJLE9BQU87UUFDVCxPQUFPLElBQUksQ0FBQyxRQUFRLENBQUM7SUFDdkIsQ0FBQztJQUNELElBQUksT0FBTyxDQUFDLEtBQWE7UUFDdkIsSUFBSSxLQUFLLEtBQUssSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQzVCLElBQUksS0FBSyxFQUFFLENBQUM7Z0JBQ1YsSUFBSSxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUM3QixDQUFDO2lCQUFNLElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO2dCQUN6QixJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztZQUMxQixDQUFDO1lBQ0QsSUFBSSxDQUFDLFFBQVEsR0FBRyxLQUFLLENBQUM7UUFDeEIsQ0FBQztJQUNILENBQUM7SUFHRCwyQ0FBMkM7SUFDM0MsSUFDSSxPQUFPO1FBQ1QsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDO0lBQ3ZCLENBQUM7SUFDRCxJQUFJLE9BQU8sQ0FBQyxLQUFhO1FBQ3ZCLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUUvQyxJQUFJLFFBQVEsS0FBSyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDL0IsSUFBSSxDQUFDLFFBQVEsR0FBRyxRQUFRLENBQUM7WUFDekIsSUFBSSxDQUFDLHNCQUFzQixFQUFFLENBQUM7UUFDaEMsQ0FBQztJQUNILENBQUM7SUFHRCx5Q0FBeUM7SUFDekMsSUFDSSxRQUFRO1FBQ1YsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDO0lBQ3hCLENBQUM7SUFDRCxJQUFJLFFBQVEsQ0FBQyxLQUFhO1FBQ3hCLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUUvQyxJQUFJLFFBQVEsS0FBSyxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7WUFDaEMsSUFBSSxDQUFDLFNBQVMsR0FBRyxRQUFRLENBQUM7WUFDMUIsSUFBSSxDQUFDLHNCQUFzQixFQUFFLENBQUM7UUFDaEMsQ0FBQztJQUNILENBQUM7SUFrQkQsWUFDVyxXQUFvQyxFQUNyQyxhQUE4QixFQUNaLFVBQWtCLEVBQ1QsU0FBMEIsRUFDNUMsYUFBMkIsRUFHNUMsUUFBZ0M7UUFQdkIsZ0JBQVcsR0FBWCxXQUFXLENBQXlCO1FBQ3JDLGtCQUFhLEdBQWIsYUFBYSxDQUFpQjtRQUVILGNBQVMsR0FBVCxTQUFTLENBQWlCO1FBQzVDLGtCQUFhLEdBQWIsYUFBYSxDQUFjO1FBMUU5Qzs7O1dBR0c7UUFFSCxXQUFNLEdBQVksS0FBSyxDQUFDO1FBaURoQiwwQkFBcUIsR0FBYSxFQUFFLENBQUM7UUFZN0MsZ0VBQWdFO1FBQ3hELHNCQUFpQixHQUFHLFlBQVksQ0FBQyxLQUFLLENBQUM7UUFZN0MsSUFBSSxRQUFRLEVBQUUsQ0FBQztZQUNiLElBQUksUUFBUSxDQUFDLEtBQUssRUFBRSxDQUFDO2dCQUNuQixJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxhQUFhLEdBQUcsUUFBUSxDQUFDLEtBQUssQ0FBQztZQUNuRCxDQUFDO1lBRUQsSUFBSSxRQUFRLENBQUMsT0FBTyxFQUFFLENBQUM7Z0JBQ3JCLElBQUksQ0FBQyxPQUFPLEdBQUcsUUFBUSxDQUFDLE9BQU8sQ0FBQztZQUNsQyxDQUFDO1FBQ0gsQ0FBQztRQUVELHNGQUFzRjtRQUN0Riw0REFBNEQ7UUFDNUQsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1lBQ2hCLFdBQVcsQ0FBQyxhQUFhLENBQUMsWUFBWSxDQUFDLGFBQWEsRUFBRSxNQUFNLENBQUMsQ0FBQztRQUNoRSxDQUFDO0lBQ0gsQ0FBQztJQUVEOzs7Ozs7Ozs7Ozs7T0FZRztJQUNLLGNBQWMsQ0FBQyxRQUFnQjtRQUNyQyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDZCxPQUFPLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQ2xCLENBQUM7UUFDRCxNQUFNLEtBQUssR0FBRyxRQUFRLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ2xDLFFBQVEsS0FBSyxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ3JCLEtBQUssQ0FBQztnQkFDSixPQUFPLENBQUMsRUFBRSxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMseUJBQXlCO1lBQ2xELEtBQUssQ0FBQztnQkFDSixPQUF5QixLQUFLLENBQUM7WUFDakM7Z0JBQ0UsTUFBTSxLQUFLLENBQUMsdUJBQXVCLFFBQVEsR0FBRyxDQUFDLENBQUMsQ0FBQywrQkFBK0I7UUFDcEYsQ0FBQztJQUNILENBQUM7SUFFRCxRQUFRO1FBQ04sNkZBQTZGO1FBQzdGLGdHQUFnRztRQUNoRyxJQUFJLENBQUMsc0JBQXNCLEVBQUUsQ0FBQztJQUNoQyxDQUFDO0lBRUQsa0JBQWtCO1FBQ2hCLE1BQU0sY0FBYyxHQUFHLElBQUksQ0FBQywrQkFBK0IsQ0FBQztRQUU1RCxJQUFJLGNBQWMsSUFBSSxjQUFjLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDMUMsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUU3Qyw4RUFBOEU7WUFDOUUsNEVBQTRFO1lBQzVFLDRFQUE0RTtZQUM1RSwwRUFBMEU7WUFDMUUsMkVBQTJFO1lBQzNFLHNDQUFzQztZQUN0QyxJQUFJLE9BQU8sS0FBSyxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7Z0JBQ25DLElBQUksQ0FBQyxhQUFhLEdBQUcsT0FBTyxDQUFDO2dCQUM3QixJQUFJLENBQUMsd0JBQXdCLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDekMsQ0FBQztRQUNILENBQUM7SUFDSCxDQUFDO0lBRUQsV0FBVztRQUNULElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUVyQyxJQUFJLElBQUksQ0FBQywrQkFBK0IsRUFBRSxDQUFDO1lBQ3pDLElBQUksQ0FBQywrQkFBK0IsQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUMvQyxDQUFDO0lBQ0gsQ0FBQztJQUVELGNBQWM7UUFDWixPQUFPLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQztJQUN2QixDQUFDO0lBRU8sY0FBYyxDQUFDLEdBQWU7UUFDcEMsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7UUFFeEIsd0VBQXdFO1FBQ3hFLDZFQUE2RTtRQUM3RSxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQzFDLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDO1FBQzFCLElBQUksQ0FBQyxvQ0FBb0MsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUMvQyxJQUFJLENBQUMsd0JBQXdCLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDcEMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxhQUFhLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ2xELENBQUM7SUFFTyxnQkFBZ0I7UUFDdEIsTUFBTSxhQUFhLEdBQWdCLElBQUksQ0FBQyxXQUFXLENBQUMsYUFBYSxDQUFDO1FBQ2xFLElBQUksVUFBVSxHQUFHLGFBQWEsQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDO1FBRWpELElBQUksSUFBSSxDQUFDLCtCQUErQixFQUFFLENBQUM7WUFDekMsSUFBSSxDQUFDLCtCQUErQixDQUFDLEtBQUssRUFBRSxDQUFDO1FBQy9DLENBQUM7UUFFRCwyRkFBMkY7UUFDM0YsbUZBQW1GO1FBQ25GLE9BQU8sVUFBVSxFQUFFLEVBQUUsQ0FBQztZQUNwQixNQUFNLEtBQUssR0FBRyxhQUFhLENBQUMsVUFBVSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1lBRW5ELDBGQUEwRjtZQUMxRix5RkFBeUY7WUFDekYsSUFBSSxLQUFLLENBQUMsUUFBUSxLQUFLLENBQUMsSUFBSSxLQUFLLENBQUMsUUFBUSxDQUFDLFdBQVcsRUFBRSxLQUFLLEtBQUssRUFBRSxDQUFDO2dCQUNuRSxLQUFLLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDakIsQ0FBQztRQUNILENBQUM7SUFDSCxDQUFDO0lBRU8sc0JBQXNCO1FBQzVCLElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxFQUFFLEVBQUUsQ0FBQztZQUMzQixPQUFPO1FBQ1QsQ0FBQztRQUVELE1BQU0sSUFBSSxHQUFnQixJQUFJLENBQUMsV0FBVyxDQUFDLGFBQWEsQ0FBQztRQUN6RCxNQUFNLGNBQWMsR0FBRyxDQUNyQixJQUFJLENBQUMsT0FBTztZQUNWLENBQUMsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLHFCQUFxQixDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDO1lBQ3BFLENBQUMsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLHNCQUFzQixFQUFFLENBQ2hELENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsU0FBUyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQztRQUU1QyxJQUFJLENBQUMscUJBQXFCLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQztRQUNsRixjQUFjLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQztRQUNuRSxJQUFJLENBQUMscUJBQXFCLEdBQUcsY0FBYyxDQUFDO1FBRTVDLElBQ0UsSUFBSSxDQUFDLFFBQVEsS0FBSyxJQUFJLENBQUMsc0JBQXNCO1lBQzdDLENBQUMsY0FBYyxDQUFDLFFBQVEsQ0FBQyxtQkFBbUIsQ0FBQyxFQUM3QyxDQUFDO1lBQ0QsSUFBSSxJQUFJLENBQUMsc0JBQXNCLEVBQUUsQ0FBQztnQkFDaEMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLHNCQUFzQixDQUFDLENBQUM7WUFDckQsQ0FBQztZQUNELElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO2dCQUNsQixJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDcEMsQ0FBQztZQUNELElBQUksQ0FBQyxzQkFBc0IsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDO1FBQzlDLENBQUM7SUFDSCxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNLLGlCQUFpQixDQUFDLEtBQWE7UUFDckMsT0FBTyxPQUFPLEtBQUssS0FBSyxRQUFRLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQztJQUN4RSxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNLLHdCQUF3QixDQUFDLElBQVk7UUFDM0MsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLCtCQUErQixDQUFDO1FBRXRELElBQUksUUFBUSxFQUFFLENBQUM7WUFDYixRQUFRLENBQUMsT0FBTyxDQUFDLENBQUMsS0FBSyxFQUFFLE9BQU8sRUFBRSxFQUFFO2dCQUNsQyxLQUFLLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxFQUFFO29CQUNuQixPQUFPLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsUUFBUSxJQUFJLElBQUksSUFBSSxDQUFDLEtBQUssSUFBSSxDQUFDLENBQUM7Z0JBQ2xFLENBQUMsQ0FBQyxDQUFDO1lBQ0wsQ0FBQyxDQUFDLENBQUM7UUFDTCxDQUFDO0lBQ0gsQ0FBQztJQUVEOzs7T0FHRztJQUNLLG9DQUFvQyxDQUFDLE9BQW1CO1FBQzlELE1BQU0sbUJBQW1CLEdBQUcsT0FBTyxDQUFDLGdCQUFnQixDQUFDLHdCQUF3QixDQUFDLENBQUM7UUFDL0UsTUFBTSxRQUFRLEdBQUcsQ0FBQyxJQUFJLENBQUMsK0JBQStCO1lBQ3BELElBQUksQ0FBQywrQkFBK0IsSUFBSSxJQUFJLEdBQUcsRUFBRSxDQUFDLENBQUM7UUFFckQsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLG1CQUFtQixDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDO1lBQ3BELGlCQUFpQixDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsRUFBRTtnQkFDL0IsTUFBTSxvQkFBb0IsR0FBRyxtQkFBbUIsQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDcEQsTUFBTSxLQUFLLEdBQUcsb0JBQW9CLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxDQUFDO2dCQUN0RCxNQUFNLEtBQUssR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztnQkFFekQsSUFBSSxLQUFLLEVBQUUsQ0FBQztvQkFDVixJQUFJLFVBQVUsR0FBRyxRQUFRLENBQUMsR0FBRyxDQUFDLG9CQUFvQixDQUFDLENBQUM7b0JBRXBELElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQzt3QkFDaEIsVUFBVSxHQUFHLEVBQUUsQ0FBQzt3QkFDaEIsUUFBUSxDQUFDLEdBQUcsQ0FBQyxvQkFBb0IsRUFBRSxVQUFVLENBQUMsQ0FBQztvQkFDakQsQ0FBQztvQkFFRCxVQUFXLENBQUMsSUFBSSxDQUFDLEVBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQztnQkFDbEQsQ0FBQztZQUNILENBQUMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQztJQUNILENBQUM7SUFFRCxrREFBa0Q7SUFDMUMsY0FBYyxDQUFDLE9BQTJCO1FBQ2hELElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDO1FBQzFCLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDO1FBQ3JCLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUVyQyxJQUFJLE9BQU8sRUFBRSxDQUFDO1lBQ1osTUFBTSxDQUFDLFNBQVMsRUFBRSxRQUFRLENBQUMsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBRTNELElBQUksU0FBUyxFQUFFLENBQUM7Z0JBQ2QsSUFBSSxDQUFDLGFBQWEsR0FBRyxTQUFTLENBQUM7WUFDakMsQ0FBQztZQUVELElBQUksUUFBUSxFQUFFLENBQUM7Z0JBQ2IsSUFBSSxDQUFDLFFBQVEsR0FBRyxRQUFRLENBQUM7WUFDM0IsQ0FBQztZQUVELElBQUksQ0FBQyxpQkFBaUIsR0FBRyxJQUFJLENBQUMsYUFBYTtpQkFDeEMsZUFBZSxDQUFDLFFBQVEsRUFBRSxTQUFTLENBQUM7aUJBQ3BDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7aUJBQ2IsU0FBUyxDQUNSLEdBQUcsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxHQUFHLENBQUMsRUFDL0IsQ0FBQyxHQUFVLEVBQUUsRUFBRTtnQkFDYixNQUFNLFlBQVksR0FBRyx5QkFBeUIsU0FBUyxJQUFJLFFBQVEsS0FBSyxHQUFHLENBQUMsT0FBTyxFQUFFLENBQUM7Z0JBQ3RGLElBQUksQ0FBQyxhQUFhLENBQUMsV0FBVyxDQUFDLElBQUksS0FBSyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUM7WUFDMUQsQ0FBQyxDQUNGLENBQUM7UUFDTixDQUFDO0lBQ0gsQ0FBQztxSEF0VVUsT0FBTywyRUEyRkwsYUFBYSw4QkFDaEIsaUJBQWlCLHlDQUdqQix3QkFBd0I7eUdBL0Z2QixPQUFPLG1HQXVCQyxnQkFBZ0IsOG1CQTFDekIsMkJBQTJCOztrR0FtQjFCLE9BQU87a0JBcEJuQixTQUFTOytCQUNFLDJCQUEyQixZQUMzQixVQUFVLFlBQ1YsU0FBUyxRQUViO3dCQUNKLE1BQU0sRUFBRSxLQUFLO3dCQUNiLE9BQU8sRUFBRSxzQkFBc0I7d0JBQy9CLFNBQVMsRUFBRSw2QkFBNkI7d0JBQ3hDLDJCQUEyQixFQUFFLG1DQUFtQzt3QkFDaEUsMkJBQTJCLEVBQUUsc0JBQXNCO3dCQUNuRCxnQ0FBZ0MsRUFBRSwwQkFBMEI7d0JBQzVELGlCQUFpQixFQUFFLG9DQUFvQzt3QkFDdkQseUJBQXlCLEVBQUUsUUFBUTt3QkFDbkMsMkJBQTJCLEVBQUUsK0RBQStEO3FCQUM3RixpQkFDYyxpQkFBaUIsQ0FBQyxJQUFJLG1CQUNwQix1QkFBdUIsQ0FBQyxNQUFNLGNBQ25DLElBQUk7OzBCQTZGYixTQUFTOzJCQUFDLGFBQWE7OzBCQUN2QixNQUFNOzJCQUFDLGlCQUFpQjs7MEJBRXhCLFFBQVE7OzBCQUNSLE1BQU07MkJBQUMsd0JBQXdCO3lDQXBGOUIsS0FBSztzQkFEUixLQUFLO2dCQWNOLE1BQU07c0JBREwsS0FBSzt1QkFBQyxFQUFDLFNBQVMsRUFBRSxnQkFBZ0IsRUFBQztnQkFLaEMsT0FBTztzQkFEVixLQUFLO2dCQWtCRixPQUFPO3NCQURWLEtBQUs7Z0JBZ0JGLFFBQVE7c0JBRFgsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmVcbiAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2VcbiAqL1xuXG5pbXBvcnQge0RPQ1VNRU5UfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtcbiAgQWZ0ZXJWaWV3Q2hlY2tlZCxcbiAgQXR0cmlidXRlLFxuICBib29sZWFuQXR0cmlidXRlLFxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ29tcG9uZW50LFxuICBFbGVtZW50UmVmLFxuICBFcnJvckhhbmRsZXIsXG4gIGluamVjdCxcbiAgSW5qZWN0LFxuICBJbmplY3Rpb25Ub2tlbixcbiAgSW5wdXQsXG4gIE9uRGVzdHJveSxcbiAgT25Jbml0LFxuICBPcHRpb25hbCxcbiAgVmlld0VuY2Fwc3VsYXRpb24sXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtUaGVtZVBhbGV0dGV9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2NvcmUnO1xuaW1wb3J0IHtTdWJzY3JpcHRpb259IGZyb20gJ3J4anMnO1xuaW1wb3J0IHt0YWtlfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmltcG9ydCB7TWF0SWNvblJlZ2lzdHJ5fSBmcm9tICcuL2ljb24tcmVnaXN0cnknO1xuXG4vKiogRGVmYXVsdCBvcHRpb25zIGZvciBgbWF0LWljb25gLiAgKi9cbmV4cG9ydCBpbnRlcmZhY2UgTWF0SWNvbkRlZmF1bHRPcHRpb25zIHtcbiAgLyoqXG4gICAqIFRoZW1lIGNvbG9yIG9mIHRoZSBpY29uLiBUaGlzIEFQSSBpcyBzdXBwb3J0ZWQgaW4gTTIgdGhlbWVzIG9ubHksIGl0XG4gICAqIGhhcyBubyBlZmZlY3QgaW4gTTMgdGhlbWVzLlxuICAgKlxuICAgKiBGb3IgaW5mb3JtYXRpb24gb24gYXBwbHlpbmcgY29sb3IgdmFyaWFudHMgaW4gTTMsIHNlZVxuICAgKiBodHRwczovL21hdGVyaWFsLmFuZ3VsYXIuaW8vZ3VpZGUvdGhlbWluZyN1c2luZy1jb21wb25lbnQtY29sb3ItdmFyaWFudHMuXG4gICAqL1xuICBjb2xvcj86IFRoZW1lUGFsZXR0ZTtcbiAgLyoqIEZvbnQgc2V0IHRoYXQgdGhlIGljb24gaXMgYSBwYXJ0IG9mLiAqL1xuICBmb250U2V0Pzogc3RyaW5nO1xufVxuXG4vKiogSW5qZWN0aW9uIHRva2VuIHRvIGJlIHVzZWQgdG8gb3ZlcnJpZGUgdGhlIGRlZmF1bHQgb3B0aW9ucyBmb3IgYG1hdC1pY29uYC4gKi9cbmV4cG9ydCBjb25zdCBNQVRfSUNPTl9ERUZBVUxUX09QVElPTlMgPSBuZXcgSW5qZWN0aW9uVG9rZW48TWF0SWNvbkRlZmF1bHRPcHRpb25zPihcbiAgJ01BVF9JQ09OX0RFRkFVTFRfT1BUSU9OUycsXG4pO1xuXG4vKipcbiAqIEluamVjdGlvbiB0b2tlbiB1c2VkIHRvIHByb3ZpZGUgdGhlIGN1cnJlbnQgbG9jYXRpb24gdG8gYE1hdEljb25gLlxuICogVXNlZCB0byBoYW5kbGUgc2VydmVyLXNpZGUgcmVuZGVyaW5nIGFuZCB0byBzdHViIG91dCBkdXJpbmcgdW5pdCB0ZXN0cy5cbiAqIEBkb2NzLXByaXZhdGVcbiAqL1xuZXhwb3J0IGNvbnN0IE1BVF9JQ09OX0xPQ0FUSU9OID0gbmV3IEluamVjdGlvblRva2VuPE1hdEljb25Mb2NhdGlvbj4oJ21hdC1pY29uLWxvY2F0aW9uJywge1xuICBwcm92aWRlZEluOiAncm9vdCcsXG4gIGZhY3Rvcnk6IE1BVF9JQ09OX0xPQ0FUSU9OX0ZBQ1RPUlksXG59KTtcblxuLyoqXG4gKiBTdHViYmVkIG91dCBsb2NhdGlvbiBmb3IgYE1hdEljb25gLlxuICogQGRvY3MtcHJpdmF0ZVxuICovXG5leHBvcnQgaW50ZXJmYWNlIE1hdEljb25Mb2NhdGlvbiB7XG4gIGdldFBhdGhuYW1lOiAoKSA9PiBzdHJpbmc7XG59XG5cbi8qKiBAZG9jcy1wcml2YXRlICovXG5leHBvcnQgZnVuY3Rpb24gTUFUX0lDT05fTE9DQVRJT05fRkFDVE9SWSgpOiBNYXRJY29uTG9jYXRpb24ge1xuICBjb25zdCBfZG9jdW1lbnQgPSBpbmplY3QoRE9DVU1FTlQpO1xuICBjb25zdCBfbG9jYXRpb24gPSBfZG9jdW1lbnQgPyBfZG9jdW1lbnQubG9jYXRpb24gOiBudWxsO1xuXG4gIHJldHVybiB7XG4gICAgLy8gTm90ZSB0aGF0IHRoaXMgbmVlZHMgdG8gYmUgYSBmdW5jdGlvbiwgcmF0aGVyIHRoYW4gYSBwcm9wZXJ0eSwgYmVjYXVzZSBBbmd1bGFyXG4gICAgLy8gd2lsbCBvbmx5IHJlc29sdmUgaXQgb25jZSwgYnV0IHdlIHdhbnQgdGhlIGN1cnJlbnQgcGF0aCBvbiBlYWNoIGNhbGwuXG4gICAgZ2V0UGF0aG5hbWU6ICgpID0+IChfbG9jYXRpb24gPyBfbG9jYXRpb24ucGF0aG5hbWUgKyBfbG9jYXRpb24uc2VhcmNoIDogJycpLFxuICB9O1xufVxuXG4vKiogU1ZHIGF0dHJpYnV0ZXMgdGhhdCBhY2NlcHQgYSBGdW5jSVJJIChlLmcuIGB1cmwoPHNvbWV0aGluZz4pYCkuICovXG5jb25zdCBmdW5jSXJpQXR0cmlidXRlcyA9IFtcbiAgJ2NsaXAtcGF0aCcsXG4gICdjb2xvci1wcm9maWxlJyxcbiAgJ3NyYycsXG4gICdjdXJzb3InLFxuICAnZmlsbCcsXG4gICdmaWx0ZXInLFxuICAnbWFya2VyJyxcbiAgJ21hcmtlci1zdGFydCcsXG4gICdtYXJrZXItbWlkJyxcbiAgJ21hcmtlci1lbmQnLFxuICAnbWFzaycsXG4gICdzdHJva2UnLFxuXTtcblxuLyoqIFNlbGVjdG9yIHRoYXQgY2FuIGJlIHVzZWQgdG8gZmluZCBhbGwgZWxlbWVudHMgdGhhdCBhcmUgdXNpbmcgYSBgRnVuY0lSSWAuICovXG5jb25zdCBmdW5jSXJpQXR0cmlidXRlU2VsZWN0b3IgPSBmdW5jSXJpQXR0cmlidXRlcy5tYXAoYXR0ciA9PiBgWyR7YXR0cn1dYCkuam9pbignLCAnKTtcblxuLyoqIFJlZ2V4IHRoYXQgY2FuIGJlIHVzZWQgdG8gZXh0cmFjdCB0aGUgaWQgb3V0IG9mIGEgRnVuY0lSSS4gKi9cbmNvbnN0IGZ1bmNJcmlQYXR0ZXJuID0gL151cmxcXChbJ1wiXT8jKC4qPylbJ1wiXT9cXCkkLztcblxuLyoqXG4gKiBDb21wb25lbnQgdG8gZGlzcGxheSBhbiBpY29uLiBJdCBjYW4gYmUgdXNlZCBpbiB0aGUgZm9sbG93aW5nIHdheXM6XG4gKlxuICogLSBTcGVjaWZ5IHRoZSBzdmdJY29uIGlucHV0IHRvIGxvYWQgYW4gU1ZHIGljb24gZnJvbSBhIFVSTCBwcmV2aW91c2x5IHJlZ2lzdGVyZWQgd2l0aCB0aGVcbiAqICAgYWRkU3ZnSWNvbiwgYWRkU3ZnSWNvbkluTmFtZXNwYWNlLCBhZGRTdmdJY29uU2V0LCBvciBhZGRTdmdJY29uU2V0SW5OYW1lc3BhY2UgbWV0aG9kcyBvZlxuICogICBNYXRJY29uUmVnaXN0cnkuIElmIHRoZSBzdmdJY29uIHZhbHVlIGNvbnRhaW5zIGEgY29sb24gaXQgaXMgYXNzdW1lZCB0byBiZSBpbiB0aGUgZm9ybWF0XG4gKiAgIFwiW25hbWVzcGFjZV06W25hbWVdXCIsIGlmIG5vdCB0aGUgdmFsdWUgd2lsbCBiZSB0aGUgbmFtZSBvZiBhbiBpY29uIGluIHRoZSBkZWZhdWx0IG5hbWVzcGFjZS5cbiAqICAgRXhhbXBsZXM6XG4gKiAgICAgYDxtYXQtaWNvbiBzdmdJY29uPVwibGVmdC1hcnJvd1wiPjwvbWF0LWljb24+XG4gKiAgICAgPG1hdC1pY29uIHN2Z0ljb249XCJhbmltYWxzOmNhdFwiPjwvbWF0LWljb24+YFxuICpcbiAqIC0gVXNlIGEgZm9udCBsaWdhdHVyZSBhcyBhbiBpY29uIGJ5IHB1dHRpbmcgdGhlIGxpZ2F0dXJlIHRleHQgaW4gdGhlIGBmb250SWNvbmAgYXR0cmlidXRlIG9yIHRoZVxuICogICBjb250ZW50IG9mIHRoZSBgPG1hdC1pY29uPmAgY29tcG9uZW50LiBJZiB5b3UgcmVnaXN0ZXIgYSBjdXN0b20gZm9udCBjbGFzcywgZG9uJ3QgZm9yZ2V0IHRvIGFsc29cbiAqICAgaW5jbHVkZSB0aGUgc3BlY2lhbCBjbGFzcyBgbWF0LWxpZ2F0dXJlLWZvbnRgLiBJdCBpcyByZWNvbW1lbmRlZCB0byB1c2UgdGhlIGF0dHJpYnV0ZSBhbHRlcm5hdGl2ZVxuICogICB0byBwcmV2ZW50IHRoZSBsaWdhdHVyZSB0ZXh0IHRvIGJlIHNlbGVjdGFibGUgYW5kIHRvIGFwcGVhciBpbiBzZWFyY2ggZW5naW5lIHJlc3VsdHMuXG4gKiAgIEJ5IGRlZmF1bHQsIHRoZSBNYXRlcmlhbCBpY29ucyBmb250IGlzIHVzZWQgYXMgZGVzY3JpYmVkIGF0XG4gKiAgIGh0dHA6Ly9nb29nbGUuZ2l0aHViLmlvL21hdGVyaWFsLWRlc2lnbi1pY29ucy8jaWNvbi1mb250LWZvci10aGUtd2ViLiBZb3UgY2FuIHNwZWNpZnkgYW5cbiAqICAgYWx0ZXJuYXRlIGZvbnQgYnkgc2V0dGluZyB0aGUgZm9udFNldCBpbnB1dCB0byBlaXRoZXIgdGhlIENTUyBjbGFzcyB0byBhcHBseSB0byB1c2UgdGhlXG4gKiAgIGRlc2lyZWQgZm9udCwgb3IgdG8gYW4gYWxpYXMgcHJldmlvdXNseSByZWdpc3RlcmVkIHdpdGggTWF0SWNvblJlZ2lzdHJ5LnJlZ2lzdGVyRm9udENsYXNzQWxpYXMuXG4gKiAgIEV4YW1wbGVzOlxuICogICAgIGA8bWF0LWljb24gZm9udEljb249XCJob21lXCI+PC9tYXQtaWNvbj5cbiAqICAgICA8bWF0LWljb24+aG9tZTwvbWF0LWljb24+XG4gKiAgICAgPG1hdC1pY29uIGZvbnRTZXQ9XCJteWZvbnRcIiBmb250SWNvbj1cInN1blwiPjwvbWF0LWljb24+XG4gKiAgICAgPG1hdC1pY29uIGZvbnRTZXQ9XCJteWZvbnRcIj5zdW48L21hdC1pY29uPmBcbiAqXG4gKiAtIFNwZWNpZnkgYSBmb250IGdseXBoIHRvIGJlIGluY2x1ZGVkIHZpYSBDU1MgcnVsZXMgYnkgc2V0dGluZyB0aGUgZm9udFNldCBpbnB1dCB0byBzcGVjaWZ5IHRoZVxuICogICBmb250LCBhbmQgdGhlIGZvbnRJY29uIGlucHV0IHRvIHNwZWNpZnkgdGhlIGljb24uIFR5cGljYWxseSB0aGUgZm9udEljb24gd2lsbCBzcGVjaWZ5IGFcbiAqICAgQ1NTIGNsYXNzIHdoaWNoIGNhdXNlcyB0aGUgZ2x5cGggdG8gYmUgZGlzcGxheWVkIHZpYSBhIDpiZWZvcmUgc2VsZWN0b3IsIGFzIGluXG4gKiAgIGh0dHBzOi8vZm9ydGF3ZXNvbWUuZ2l0aHViLmlvL0ZvbnQtQXdlc29tZS9leGFtcGxlcy9cbiAqICAgRXhhbXBsZTpcbiAqICAgICBgPG1hdC1pY29uIGZvbnRTZXQ9XCJmYVwiIGZvbnRJY29uPVwiYWxhcm1cIj48L21hdC1pY29uPmBcbiAqL1xuQENvbXBvbmVudCh7XG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIHNlbGVjdG9yOiAnbWF0LWljb24nLFxuICBleHBvcnRBczogJ21hdEljb24nLFxuICBzdHlsZVVybDogJ2ljb24uY3NzJyxcbiAgaG9zdDoge1xuICAgICdyb2xlJzogJ2ltZycsXG4gICAgJ2NsYXNzJzogJ21hdC1pY29uIG5vdHJhbnNsYXRlJyxcbiAgICAnW2NsYXNzXSc6ICdjb2xvciA/IFwibWF0LVwiICsgY29sb3IgOiBcIlwiJyxcbiAgICAnW2F0dHIuZGF0YS1tYXQtaWNvbi10eXBlXSc6ICdfdXNpbmdGb250SWNvbigpID8gXCJmb250XCIgOiBcInN2Z1wiJyxcbiAgICAnW2F0dHIuZGF0YS1tYXQtaWNvbi1uYW1lXSc6ICdfc3ZnTmFtZSB8fCBmb250SWNvbicsXG4gICAgJ1thdHRyLmRhdGEtbWF0LWljb24tbmFtZXNwYWNlXSc6ICdfc3ZnTmFtZXNwYWNlIHx8IGZvbnRTZXQnLFxuICAgICdbYXR0ci5mb250SWNvbl0nOiAnX3VzaW5nRm9udEljb24oKSA/IGZvbnRJY29uIDogbnVsbCcsXG4gICAgJ1tjbGFzcy5tYXQtaWNvbi1pbmxpbmVdJzogJ2lubGluZScsXG4gICAgJ1tjbGFzcy5tYXQtaWNvbi1uby1jb2xvcl0nOiAnY29sb3IgIT09IFwicHJpbWFyeVwiICYmIGNvbG9yICE9PSBcImFjY2VudFwiICYmIGNvbG9yICE9PSBcIndhcm5cIicsXG4gIH0sXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBzdGFuZGFsb25lOiB0cnVlLFxufSlcbmV4cG9ydCBjbGFzcyBNYXRJY29uIGltcGxlbWVudHMgT25Jbml0LCBBZnRlclZpZXdDaGVja2VkLCBPbkRlc3Ryb3kge1xuICBwcml2YXRlIF9kZWZhdWx0Q29sb3I6IFRoZW1lUGFsZXR0ZTtcblxuICAvKipcbiAgICogVGhlbWUgY29sb3Igb2YgdGhlIGljb24uIFRoaXMgQVBJIGlzIHN1cHBvcnRlZCBpbiBNMiB0aGVtZXMgb25seSwgaXRcbiAgICogaGFzIG5vIGVmZmVjdCBpbiBNMyB0aGVtZXMuXG4gICAqXG4gICAqIEZvciBpbmZvcm1hdGlvbiBvbiBhcHBseWluZyBjb2xvciB2YXJpYW50cyBpbiBNMywgc2VlXG4gICAqIGh0dHBzOi8vbWF0ZXJpYWwuYW5ndWxhci5pby9ndWlkZS90aGVtaW5nI3VzaW5nLWNvbXBvbmVudC1jb2xvci12YXJpYW50cy5cbiAgICovXG4gIEBJbnB1dCgpXG4gIGdldCBjb2xvcigpIHtcbiAgICByZXR1cm4gdGhpcy5fY29sb3IgfHwgdGhpcy5fZGVmYXVsdENvbG9yO1xuICB9XG4gIHNldCBjb2xvcih2YWx1ZTogc3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZCkge1xuICAgIHRoaXMuX2NvbG9yID0gdmFsdWU7XG4gIH1cbiAgcHJpdmF0ZSBfY29sb3I6IHN0cmluZyB8IG51bGwgfCB1bmRlZmluZWQ7XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdGhlIGljb24gc2hvdWxkIGJlIGlubGluZWQsIGF1dG9tYXRpY2FsbHkgc2l6aW5nIHRoZSBpY29uIHRvIG1hdGNoIHRoZSBmb250IHNpemUgb2ZcbiAgICogdGhlIGVsZW1lbnQgdGhlIGljb24gaXMgY29udGFpbmVkIGluLlxuICAgKi9cbiAgQElucHV0KHt0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGV9KVxuICBpbmxpbmU6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAvKiogTmFtZSBvZiB0aGUgaWNvbiBpbiB0aGUgU1ZHIGljb24gc2V0LiAqL1xuICBASW5wdXQoKVxuICBnZXQgc3ZnSWNvbigpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLl9zdmdJY29uO1xuICB9XG4gIHNldCBzdmdJY29uKHZhbHVlOiBzdHJpbmcpIHtcbiAgICBpZiAodmFsdWUgIT09IHRoaXMuX3N2Z0ljb24pIHtcbiAgICAgIGlmICh2YWx1ZSkge1xuICAgICAgICB0aGlzLl91cGRhdGVTdmdJY29uKHZhbHVlKTtcbiAgICAgIH0gZWxzZSBpZiAodGhpcy5fc3ZnSWNvbikge1xuICAgICAgICB0aGlzLl9jbGVhclN2Z0VsZW1lbnQoKTtcbiAgICAgIH1cbiAgICAgIHRoaXMuX3N2Z0ljb24gPSB2YWx1ZTtcbiAgICB9XG4gIH1cbiAgcHJpdmF0ZSBfc3ZnSWNvbjogc3RyaW5nO1xuXG4gIC8qKiBGb250IHNldCB0aGF0IHRoZSBpY29uIGlzIGEgcGFydCBvZi4gKi9cbiAgQElucHV0KClcbiAgZ2V0IGZvbnRTZXQoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5fZm9udFNldDtcbiAgfVxuICBzZXQgZm9udFNldCh2YWx1ZTogc3RyaW5nKSB7XG4gICAgY29uc3QgbmV3VmFsdWUgPSB0aGlzLl9jbGVhbnVwRm9udFZhbHVlKHZhbHVlKTtcblxuICAgIGlmIChuZXdWYWx1ZSAhPT0gdGhpcy5fZm9udFNldCkge1xuICAgICAgdGhpcy5fZm9udFNldCA9IG5ld1ZhbHVlO1xuICAgICAgdGhpcy5fdXBkYXRlRm9udEljb25DbGFzc2VzKCk7XG4gICAgfVxuICB9XG4gIHByaXZhdGUgX2ZvbnRTZXQ6IHN0cmluZztcblxuICAvKiogTmFtZSBvZiBhbiBpY29uIHdpdGhpbiBhIGZvbnQgc2V0LiAqL1xuICBASW5wdXQoKVxuICBnZXQgZm9udEljb24oKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5fZm9udEljb247XG4gIH1cbiAgc2V0IGZvbnRJY29uKHZhbHVlOiBzdHJpbmcpIHtcbiAgICBjb25zdCBuZXdWYWx1ZSA9IHRoaXMuX2NsZWFudXBGb250VmFsdWUodmFsdWUpO1xuXG4gICAgaWYgKG5ld1ZhbHVlICE9PSB0aGlzLl9mb250SWNvbikge1xuICAgICAgdGhpcy5fZm9udEljb24gPSBuZXdWYWx1ZTtcbiAgICAgIHRoaXMuX3VwZGF0ZUZvbnRJY29uQ2xhc3NlcygpO1xuICAgIH1cbiAgfVxuICBwcml2YXRlIF9mb250SWNvbjogc3RyaW5nO1xuXG4gIHByaXZhdGUgX3ByZXZpb3VzRm9udFNldENsYXNzOiBzdHJpbmdbXSA9IFtdO1xuICBwcml2YXRlIF9wcmV2aW91c0ZvbnRJY29uQ2xhc3M6IHN0cmluZztcblxuICBfc3ZnTmFtZTogc3RyaW5nIHwgbnVsbDtcbiAgX3N2Z05hbWVzcGFjZTogc3RyaW5nIHwgbnVsbDtcblxuICAvKiogS2VlcHMgdHJhY2sgb2YgdGhlIGN1cnJlbnQgcGFnZSBwYXRoLiAqL1xuICBwcml2YXRlIF9wcmV2aW91c1BhdGg/OiBzdHJpbmc7XG5cbiAgLyoqIEtlZXBzIHRyYWNrIG9mIHRoZSBlbGVtZW50cyBhbmQgYXR0cmlidXRlcyB0aGF0IHdlJ3ZlIHByZWZpeGVkIHdpdGggdGhlIGN1cnJlbnQgcGF0aC4gKi9cbiAgcHJpdmF0ZSBfZWxlbWVudHNXaXRoRXh0ZXJuYWxSZWZlcmVuY2VzPzogTWFwPEVsZW1lbnQsIHtuYW1lOiBzdHJpbmc7IHZhbHVlOiBzdHJpbmd9W10+O1xuXG4gIC8qKiBTdWJzY3JpcHRpb24gdG8gdGhlIGN1cnJlbnQgaW4tcHJvZ3Jlc3MgU1ZHIGljb24gcmVxdWVzdC4gKi9cbiAgcHJpdmF0ZSBfY3VycmVudEljb25GZXRjaCA9IFN1YnNjcmlwdGlvbi5FTVBUWTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICByZWFkb25seSBfZWxlbWVudFJlZjogRWxlbWVudFJlZjxIVE1MRWxlbWVudD4sXG4gICAgcHJpdmF0ZSBfaWNvblJlZ2lzdHJ5OiBNYXRJY29uUmVnaXN0cnksXG4gICAgQEF0dHJpYnV0ZSgnYXJpYS1oaWRkZW4nKSBhcmlhSGlkZGVuOiBzdHJpbmcsXG4gICAgQEluamVjdChNQVRfSUNPTl9MT0NBVElPTikgcHJpdmF0ZSBfbG9jYXRpb246IE1hdEljb25Mb2NhdGlvbixcbiAgICBwcml2YXRlIHJlYWRvbmx5IF9lcnJvckhhbmRsZXI6IEVycm9ySGFuZGxlcixcbiAgICBAT3B0aW9uYWwoKVxuICAgIEBJbmplY3QoTUFUX0lDT05fREVGQVVMVF9PUFRJT05TKVxuICAgIGRlZmF1bHRzPzogTWF0SWNvbkRlZmF1bHRPcHRpb25zLFxuICApIHtcbiAgICBpZiAoZGVmYXVsdHMpIHtcbiAgICAgIGlmIChkZWZhdWx0cy5jb2xvcikge1xuICAgICAgICB0aGlzLmNvbG9yID0gdGhpcy5fZGVmYXVsdENvbG9yID0gZGVmYXVsdHMuY29sb3I7XG4gICAgICB9XG5cbiAgICAgIGlmIChkZWZhdWx0cy5mb250U2V0KSB7XG4gICAgICAgIHRoaXMuZm9udFNldCA9IGRlZmF1bHRzLmZvbnRTZXQ7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gSWYgdGhlIHVzZXIgaGFzIG5vdCBleHBsaWNpdGx5IHNldCBhcmlhLWhpZGRlbiwgbWFyayB0aGUgaWNvbiBhcyBoaWRkZW4sIGFzIHRoaXMgaXNcbiAgICAvLyB0aGUgcmlnaHQgdGhpbmcgdG8gZG8gZm9yIHRoZSBtYWpvcml0eSBvZiBpY29uIHVzZS1jYXNlcy5cbiAgICBpZiAoIWFyaWFIaWRkZW4pIHtcbiAgICAgIF9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuc2V0QXR0cmlidXRlKCdhcmlhLWhpZGRlbicsICd0cnVlJyk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFNwbGl0cyBhbiBzdmdJY29uIGJpbmRpbmcgdmFsdWUgaW50byBpdHMgaWNvbiBzZXQgYW5kIGljb24gbmFtZSBjb21wb25lbnRzLlxuICAgKiBSZXR1cm5zIGEgMi1lbGVtZW50IGFycmF5IG9mIFsoaWNvbiBzZXQpLCAoaWNvbiBuYW1lKV0uXG4gICAqIFRoZSBzZXBhcmF0b3IgZm9yIHRoZSB0d28gZmllbGRzIGlzICc6Jy4gSWYgdGhlcmUgaXMgbm8gc2VwYXJhdG9yLCBhbiBlbXB0eVxuICAgKiBzdHJpbmcgaXMgcmV0dXJuZWQgZm9yIHRoZSBpY29uIHNldCBhbmQgdGhlIGVudGlyZSB2YWx1ZSBpcyByZXR1cm5lZCBmb3JcbiAgICogdGhlIGljb24gbmFtZS4gSWYgdGhlIGFyZ3VtZW50IGlzIGZhbHN5LCByZXR1cm5zIGFuIGFycmF5IG9mIHR3byBlbXB0eSBzdHJpbmdzLlxuICAgKiBUaHJvd3MgYW4gZXJyb3IgaWYgdGhlIG5hbWUgY29udGFpbnMgdHdvIG9yIG1vcmUgJzonIHNlcGFyYXRvcnMuXG4gICAqIEV4YW1wbGVzOlxuICAgKiAgIGAnc29jaWFsOmNha2UnIC0+IFsnc29jaWFsJywgJ2Nha2UnXVxuICAgKiAgICdwZW5ndWluJyAtPiBbJycsICdwZW5ndWluJ11cbiAgICogICBudWxsIC0+IFsnJywgJyddXG4gICAqICAgJ2E6YjpjJyAtPiAodGhyb3dzIEVycm9yKWBcbiAgICovXG4gIHByaXZhdGUgX3NwbGl0SWNvbk5hbWUoaWNvbk5hbWU6IHN0cmluZyk6IFtzdHJpbmcsIHN0cmluZ10ge1xuICAgIGlmICghaWNvbk5hbWUpIHtcbiAgICAgIHJldHVybiBbJycsICcnXTtcbiAgICB9XG4gICAgY29uc3QgcGFydHMgPSBpY29uTmFtZS5zcGxpdCgnOicpO1xuICAgIHN3aXRjaCAocGFydHMubGVuZ3RoKSB7XG4gICAgICBjYXNlIDE6XG4gICAgICAgIHJldHVybiBbJycsIHBhcnRzWzBdXTsgLy8gVXNlIGRlZmF1bHQgbmFtZXNwYWNlLlxuICAgICAgY2FzZSAyOlxuICAgICAgICByZXR1cm4gPFtzdHJpbmcsIHN0cmluZ10+cGFydHM7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICB0aHJvdyBFcnJvcihgSW52YWxpZCBpY29uIG5hbWU6IFwiJHtpY29uTmFtZX1cImApOyAvLyBUT0RPOiBhZGQgYW4gbmdEZXZNb2RlIGNoZWNrXG4gICAgfVxuICB9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgLy8gVXBkYXRlIGZvbnQgY2xhc3NlcyBiZWNhdXNlIG5nT25DaGFuZ2VzIHdvbid0IGJlIGNhbGxlZCBpZiBub25lIG9mIHRoZSBpbnB1dHMgYXJlIHByZXNlbnQsXG4gICAgLy8gZS5nLiA8bWF0LWljb24+YXJyb3c8L21hdC1pY29uPiBJbiB0aGlzIGNhc2Ugd2UgbmVlZCB0byBhZGQgYSBDU1MgY2xhc3MgZm9yIHRoZSBkZWZhdWx0IGZvbnQuXG4gICAgdGhpcy5fdXBkYXRlRm9udEljb25DbGFzc2VzKCk7XG4gIH1cblxuICBuZ0FmdGVyVmlld0NoZWNrZWQoKSB7XG4gICAgY29uc3QgY2FjaGVkRWxlbWVudHMgPSB0aGlzLl9lbGVtZW50c1dpdGhFeHRlcm5hbFJlZmVyZW5jZXM7XG5cbiAgICBpZiAoY2FjaGVkRWxlbWVudHMgJiYgY2FjaGVkRWxlbWVudHMuc2l6ZSkge1xuICAgICAgY29uc3QgbmV3UGF0aCA9IHRoaXMuX2xvY2F0aW9uLmdldFBhdGhuYW1lKCk7XG5cbiAgICAgIC8vIFdlIG5lZWQgdG8gY2hlY2sgd2hldGhlciB0aGUgVVJMIGhhcyBjaGFuZ2VkIG9uIGVhY2ggY2hhbmdlIGRldGVjdGlvbiBzaW5jZVxuICAgICAgLy8gdGhlIGJyb3dzZXIgZG9lc24ndCBoYXZlIGFuIEFQSSB0aGF0IHdpbGwgbGV0IHVzIHJlYWN0IG9uIGxpbmsgY2xpY2tzIGFuZFxuICAgICAgLy8gd2UgY2FuJ3QgZGVwZW5kIG9uIHRoZSBBbmd1bGFyIHJvdXRlci4gVGhlIHJlZmVyZW5jZXMgbmVlZCB0byBiZSB1cGRhdGVkLFxuICAgICAgLy8gYmVjYXVzZSB3aGlsZSBtb3N0IGJyb3dzZXJzIGRvbid0IGNhcmUgd2hldGhlciB0aGUgVVJMIGlzIGNvcnJlY3QgYWZ0ZXJcbiAgICAgIC8vIHRoZSBmaXJzdCByZW5kZXIsIFNhZmFyaSB3aWxsIGJyZWFrIGlmIHRoZSB1c2VyIG5hdmlnYXRlcyB0byBhIGRpZmZlcmVudFxuICAgICAgLy8gcGFnZSBhbmQgdGhlIFNWRyBpc24ndCByZS1yZW5kZXJlZC5cbiAgICAgIGlmIChuZXdQYXRoICE9PSB0aGlzLl9wcmV2aW91c1BhdGgpIHtcbiAgICAgICAgdGhpcy5fcHJldmlvdXNQYXRoID0gbmV3UGF0aDtcbiAgICAgICAgdGhpcy5fcHJlcGVuZFBhdGhUb1JlZmVyZW5jZXMobmV3UGF0aCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgdGhpcy5fY3VycmVudEljb25GZXRjaC51bnN1YnNjcmliZSgpO1xuXG4gICAgaWYgKHRoaXMuX2VsZW1lbnRzV2l0aEV4dGVybmFsUmVmZXJlbmNlcykge1xuICAgICAgdGhpcy5fZWxlbWVudHNXaXRoRXh0ZXJuYWxSZWZlcmVuY2VzLmNsZWFyKCk7XG4gICAgfVxuICB9XG5cbiAgX3VzaW5nRm9udEljb24oKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICF0aGlzLnN2Z0ljb247XG4gIH1cblxuICBwcml2YXRlIF9zZXRTdmdFbGVtZW50KHN2ZzogU1ZHRWxlbWVudCkge1xuICAgIHRoaXMuX2NsZWFyU3ZnRWxlbWVudCgpO1xuXG4gICAgLy8gTm90ZTogd2UgZG8gdGhpcyBmaXggaGVyZSwgcmF0aGVyIHRoYW4gdGhlIGljb24gcmVnaXN0cnksIGJlY2F1c2UgdGhlXG4gICAgLy8gcmVmZXJlbmNlcyBoYXZlIHRvIHBvaW50IHRvIHRoZSBVUkwgYXQgdGhlIHRpbWUgdGhhdCB0aGUgaWNvbiB3YXMgY3JlYXRlZC5cbiAgICBjb25zdCBwYXRoID0gdGhpcy5fbG9jYXRpb24uZ2V0UGF0aG5hbWUoKTtcbiAgICB0aGlzLl9wcmV2aW91c1BhdGggPSBwYXRoO1xuICAgIHRoaXMuX2NhY2hlQ2hpbGRyZW5XaXRoRXh0ZXJuYWxSZWZlcmVuY2VzKHN2Zyk7XG4gICAgdGhpcy5fcHJlcGVuZFBhdGhUb1JlZmVyZW5jZXMocGF0aCk7XG4gICAgdGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LmFwcGVuZENoaWxkKHN2Zyk7XG4gIH1cblxuICBwcml2YXRlIF9jbGVhclN2Z0VsZW1lbnQoKSB7XG4gICAgY29uc3QgbGF5b3V0RWxlbWVudDogSFRNTEVsZW1lbnQgPSB0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQ7XG4gICAgbGV0IGNoaWxkQ291bnQgPSBsYXlvdXRFbGVtZW50LmNoaWxkTm9kZXMubGVuZ3RoO1xuXG4gICAgaWYgKHRoaXMuX2VsZW1lbnRzV2l0aEV4dGVybmFsUmVmZXJlbmNlcykge1xuICAgICAgdGhpcy5fZWxlbWVudHNXaXRoRXh0ZXJuYWxSZWZlcmVuY2VzLmNsZWFyKCk7XG4gICAgfVxuXG4gICAgLy8gUmVtb3ZlIGV4aXN0aW5nIG5vbi1lbGVtZW50IGNoaWxkIG5vZGVzIGFuZCBTVkdzLCBhbmQgYWRkIHRoZSBuZXcgU1ZHIGVsZW1lbnQuIE5vdGUgdGhhdFxuICAgIC8vIHdlIGNhbid0IHVzZSBpbm5lckhUTUwsIGJlY2F1c2UgSUUgd2lsbCB0aHJvdyBpZiB0aGUgZWxlbWVudCBoYXMgYSBkYXRhIGJpbmRpbmcuXG4gICAgd2hpbGUgKGNoaWxkQ291bnQtLSkge1xuICAgICAgY29uc3QgY2hpbGQgPSBsYXlvdXRFbGVtZW50LmNoaWxkTm9kZXNbY2hpbGRDb3VudF07XG5cbiAgICAgIC8vIDEgY29ycmVzcG9uZHMgdG8gTm9kZS5FTEVNRU5UX05PREUuIFdlIHJlbW92ZSBhbGwgbm9uLWVsZW1lbnQgbm9kZXMgaW4gb3JkZXIgdG8gZ2V0IHJpZFxuICAgICAgLy8gb2YgYW55IGxvb3NlIHRleHQgbm9kZXMsIGFzIHdlbGwgYXMgYW55IFNWRyBlbGVtZW50cyBpbiBvcmRlciB0byByZW1vdmUgYW55IG9sZCBpY29ucy5cbiAgICAgIGlmIChjaGlsZC5ub2RlVHlwZSAhPT0gMSB8fCBjaGlsZC5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpID09PSAnc3ZnJykge1xuICAgICAgICBjaGlsZC5yZW1vdmUoKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwcml2YXRlIF91cGRhdGVGb250SWNvbkNsYXNzZXMoKSB7XG4gICAgaWYgKCF0aGlzLl91c2luZ0ZvbnRJY29uKCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBlbGVtOiBIVE1MRWxlbWVudCA9IHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudDtcbiAgICBjb25zdCBmb250U2V0Q2xhc3NlcyA9IChcbiAgICAgIHRoaXMuZm9udFNldFxuICAgICAgICA/IHRoaXMuX2ljb25SZWdpc3RyeS5jbGFzc05hbWVGb3JGb250QWxpYXModGhpcy5mb250U2V0KS5zcGxpdCgvICsvKVxuICAgICAgICA6IHRoaXMuX2ljb25SZWdpc3RyeS5nZXREZWZhdWx0Rm9udFNldENsYXNzKClcbiAgICApLmZpbHRlcihjbGFzc05hbWUgPT4gY2xhc3NOYW1lLmxlbmd0aCA+IDApO1xuXG4gICAgdGhpcy5fcHJldmlvdXNGb250U2V0Q2xhc3MuZm9yRWFjaChjbGFzc05hbWUgPT4gZWxlbS5jbGFzc0xpc3QucmVtb3ZlKGNsYXNzTmFtZSkpO1xuICAgIGZvbnRTZXRDbGFzc2VzLmZvckVhY2goY2xhc3NOYW1lID0+IGVsZW0uY2xhc3NMaXN0LmFkZChjbGFzc05hbWUpKTtcbiAgICB0aGlzLl9wcmV2aW91c0ZvbnRTZXRDbGFzcyA9IGZvbnRTZXRDbGFzc2VzO1xuXG4gICAgaWYgKFxuICAgICAgdGhpcy5mb250SWNvbiAhPT0gdGhpcy5fcHJldmlvdXNGb250SWNvbkNsYXNzICYmXG4gICAgICAhZm9udFNldENsYXNzZXMuaW5jbHVkZXMoJ21hdC1saWdhdHVyZS1mb250JylcbiAgICApIHtcbiAgICAgIGlmICh0aGlzLl9wcmV2aW91c0ZvbnRJY29uQ2xhc3MpIHtcbiAgICAgICAgZWxlbS5jbGFzc0xpc3QucmVtb3ZlKHRoaXMuX3ByZXZpb3VzRm9udEljb25DbGFzcyk7XG4gICAgICB9XG4gICAgICBpZiAodGhpcy5mb250SWNvbikge1xuICAgICAgICBlbGVtLmNsYXNzTGlzdC5hZGQodGhpcy5mb250SWNvbik7XG4gICAgICB9XG4gICAgICB0aGlzLl9wcmV2aW91c0ZvbnRJY29uQ2xhc3MgPSB0aGlzLmZvbnRJY29uO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBDbGVhbnMgdXAgYSB2YWx1ZSB0byBiZSB1c2VkIGFzIGEgZm9udEljb24gb3IgZm9udFNldC5cbiAgICogU2luY2UgdGhlIHZhbHVlIGVuZHMgdXAgYmVpbmcgYXNzaWduZWQgYXMgYSBDU1MgY2xhc3MsIHdlXG4gICAqIGhhdmUgdG8gdHJpbSB0aGUgdmFsdWUgYW5kIG9taXQgc3BhY2Utc2VwYXJhdGVkIHZhbHVlcy5cbiAgICovXG4gIHByaXZhdGUgX2NsZWFudXBGb250VmFsdWUodmFsdWU6IHN0cmluZykge1xuICAgIHJldHVybiB0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnID8gdmFsdWUudHJpbSgpLnNwbGl0KCcgJylbMF0gOiB2YWx1ZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBQcmVwZW5kcyB0aGUgY3VycmVudCBwYXRoIHRvIGFsbCBlbGVtZW50cyB0aGF0IGhhdmUgYW4gYXR0cmlidXRlIHBvaW50aW5nIHRvIGEgYEZ1bmNJUklgXG4gICAqIHJlZmVyZW5jZS4gVGhpcyBpcyByZXF1aXJlZCBiZWNhdXNlIFdlYktpdCBicm93c2VycyByZXF1aXJlIHJlZmVyZW5jZXMgdG8gYmUgcHJlZml4ZWQgd2l0aFxuICAgKiB0aGUgY3VycmVudCBwYXRoLCBpZiB0aGUgcGFnZSBoYXMgYSBgYmFzZWAgdGFnLlxuICAgKi9cbiAgcHJpdmF0ZSBfcHJlcGVuZFBhdGhUb1JlZmVyZW5jZXMocGF0aDogc3RyaW5nKSB7XG4gICAgY29uc3QgZWxlbWVudHMgPSB0aGlzLl9lbGVtZW50c1dpdGhFeHRlcm5hbFJlZmVyZW5jZXM7XG5cbiAgICBpZiAoZWxlbWVudHMpIHtcbiAgICAgIGVsZW1lbnRzLmZvckVhY2goKGF0dHJzLCBlbGVtZW50KSA9PiB7XG4gICAgICAgIGF0dHJzLmZvckVhY2goYXR0ciA9PiB7XG4gICAgICAgICAgZWxlbWVudC5zZXRBdHRyaWJ1dGUoYXR0ci5uYW1lLCBgdXJsKCcke3BhdGh9IyR7YXR0ci52YWx1ZX0nKWApO1xuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBDYWNoZXMgdGhlIGNoaWxkcmVuIG9mIGFuIFNWRyBlbGVtZW50IHRoYXQgaGF2ZSBgdXJsKClgXG4gICAqIHJlZmVyZW5jZXMgdGhhdCB3ZSBuZWVkIHRvIHByZWZpeCB3aXRoIHRoZSBjdXJyZW50IHBhdGguXG4gICAqL1xuICBwcml2YXRlIF9jYWNoZUNoaWxkcmVuV2l0aEV4dGVybmFsUmVmZXJlbmNlcyhlbGVtZW50OiBTVkdFbGVtZW50KSB7XG4gICAgY29uc3QgZWxlbWVudHNXaXRoRnVuY0lyaSA9IGVsZW1lbnQucXVlcnlTZWxlY3RvckFsbChmdW5jSXJpQXR0cmlidXRlU2VsZWN0b3IpO1xuICAgIGNvbnN0IGVsZW1lbnRzID0gKHRoaXMuX2VsZW1lbnRzV2l0aEV4dGVybmFsUmVmZXJlbmNlcyA9XG4gICAgICB0aGlzLl9lbGVtZW50c1dpdGhFeHRlcm5hbFJlZmVyZW5jZXMgfHwgbmV3IE1hcCgpKTtcblxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZWxlbWVudHNXaXRoRnVuY0lyaS5sZW5ndGg7IGkrKykge1xuICAgICAgZnVuY0lyaUF0dHJpYnV0ZXMuZm9yRWFjaChhdHRyID0+IHtcbiAgICAgICAgY29uc3QgZWxlbWVudFdpdGhSZWZlcmVuY2UgPSBlbGVtZW50c1dpdGhGdW5jSXJpW2ldO1xuICAgICAgICBjb25zdCB2YWx1ZSA9IGVsZW1lbnRXaXRoUmVmZXJlbmNlLmdldEF0dHJpYnV0ZShhdHRyKTtcbiAgICAgICAgY29uc3QgbWF0Y2ggPSB2YWx1ZSA/IHZhbHVlLm1hdGNoKGZ1bmNJcmlQYXR0ZXJuKSA6IG51bGw7XG5cbiAgICAgICAgaWYgKG1hdGNoKSB7XG4gICAgICAgICAgbGV0IGF0dHJpYnV0ZXMgPSBlbGVtZW50cy5nZXQoZWxlbWVudFdpdGhSZWZlcmVuY2UpO1xuXG4gICAgICAgICAgaWYgKCFhdHRyaWJ1dGVzKSB7XG4gICAgICAgICAgICBhdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICBlbGVtZW50cy5zZXQoZWxlbWVudFdpdGhSZWZlcmVuY2UsIGF0dHJpYnV0ZXMpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGF0dHJpYnV0ZXMhLnB1c2goe25hbWU6IGF0dHIsIHZhbHVlOiBtYXRjaFsxXX0pO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICAvKiogU2V0cyBhIG5ldyBTVkcgaWNvbiB3aXRoIGEgcGFydGljdWxhciBuYW1lLiAqL1xuICBwcml2YXRlIF91cGRhdGVTdmdJY29uKHJhd05hbWU6IHN0cmluZyB8IHVuZGVmaW5lZCkge1xuICAgIHRoaXMuX3N2Z05hbWVzcGFjZSA9IG51bGw7XG4gICAgdGhpcy5fc3ZnTmFtZSA9IG51bGw7XG4gICAgdGhpcy5fY3VycmVudEljb25GZXRjaC51bnN1YnNjcmliZSgpO1xuXG4gICAgaWYgKHJhd05hbWUpIHtcbiAgICAgIGNvbnN0IFtuYW1lc3BhY2UsIGljb25OYW1lXSA9IHRoaXMuX3NwbGl0SWNvbk5hbWUocmF3TmFtZSk7XG5cbiAgICAgIGlmIChuYW1lc3BhY2UpIHtcbiAgICAgICAgdGhpcy5fc3ZnTmFtZXNwYWNlID0gbmFtZXNwYWNlO1xuICAgICAgfVxuXG4gICAgICBpZiAoaWNvbk5hbWUpIHtcbiAgICAgICAgdGhpcy5fc3ZnTmFtZSA9IGljb25OYW1lO1xuICAgICAgfVxuXG4gICAgICB0aGlzLl9jdXJyZW50SWNvbkZldGNoID0gdGhpcy5faWNvblJlZ2lzdHJ5XG4gICAgICAgIC5nZXROYW1lZFN2Z0ljb24oaWNvbk5hbWUsIG5hbWVzcGFjZSlcbiAgICAgICAgLnBpcGUodGFrZSgxKSlcbiAgICAgICAgLnN1YnNjcmliZShcbiAgICAgICAgICBzdmcgPT4gdGhpcy5fc2V0U3ZnRWxlbWVudChzdmcpLFxuICAgICAgICAgIChlcnI6IEVycm9yKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBlcnJvck1lc3NhZ2UgPSBgRXJyb3IgcmV0cmlldmluZyBpY29uICR7bmFtZXNwYWNlfToke2ljb25OYW1lfSEgJHtlcnIubWVzc2FnZX1gO1xuICAgICAgICAgICAgdGhpcy5fZXJyb3JIYW5kbGVyLmhhbmRsZUVycm9yKG5ldyBFcnJvcihlcnJvck1lc3NhZ2UpKTtcbiAgICAgICAgICB9LFxuICAgICAgICApO1xuICAgIH1cbiAgfVxufVxuIl19
@@ -1,5 +0,0 @@
1
- /**
2
- * Generated bundle index. Do not edit.
3
- */
4
- export * from './index';
5
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWNvbl9wdWJsaWNfaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvbWF0ZXJpYWwvaWNvbi9pY29uX3B1YmxpY19pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILGNBQWMsU0FBUyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBHZW5lcmF0ZWQgYnVuZGxlIGluZGV4LiBEbyBub3QgZWRpdC5cbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL2luZGV4JztcbiJdfQ==
@@ -1,9 +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
- export * from './public-api';
9
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvbWF0ZXJpYWwvaWNvbi9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7O0dBTUc7QUFFSCxjQUFjLGNBQWMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmVcbiAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2VcbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL3B1YmxpYy1hcGknO1xuIl19
@@ -1,11 +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
- export * from './icon-module';
9
- export * from './icon';
10
- export * from './icon-registry';
11
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9tYXRlcmlhbC9pY29uL3B1YmxpYy1hcGkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7OztHQU1HO0FBRUgsY0FBYyxlQUFlLENBQUM7QUFDOUIsY0FBYyxRQUFRLENBQUM7QUFDdkIsY0FBYyxpQkFBaUIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmVcbiAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2VcbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL2ljb24tbW9kdWxlJztcbmV4cG9ydCAqIGZyb20gJy4vaWNvbic7XG5leHBvcnQgKiBmcm9tICcuL2ljb24tcmVnaXN0cnknO1xuIl19
@@ -1,92 +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 { Injectable, NgModule } from '@angular/core';
9
- import { MatIconRegistry } from '@angular/material/icon';
10
- import { of as observableOf } from 'rxjs';
11
- import * as i0 from "@angular/core";
12
- /**
13
- * A null icon registry that must be imported to allow disabling of custom
14
- * icons.
15
- */
16
- export class FakeMatIconRegistry {
17
- addSvgIcon() {
18
- return this;
19
- }
20
- addSvgIconLiteral() {
21
- return this;
22
- }
23
- addSvgIconInNamespace() {
24
- return this;
25
- }
26
- addSvgIconLiteralInNamespace() {
27
- return this;
28
- }
29
- addSvgIconSet() {
30
- return this;
31
- }
32
- addSvgIconSetLiteral() {
33
- return this;
34
- }
35
- addSvgIconSetInNamespace() {
36
- return this;
37
- }
38
- addSvgIconSetLiteralInNamespace() {
39
- return this;
40
- }
41
- registerFontClassAlias() {
42
- return this;
43
- }
44
- classNameForFontAlias(alias) {
45
- return alias;
46
- }
47
- getDefaultFontSetClass() {
48
- return ['material-icons'];
49
- }
50
- getSvgIconFromUrl() {
51
- return observableOf(this._generateEmptySvg());
52
- }
53
- getNamedSvgIcon() {
54
- return observableOf(this._generateEmptySvg());
55
- }
56
- setDefaultFontSetClass() {
57
- return this;
58
- }
59
- addSvgIconResolver() {
60
- return this;
61
- }
62
- ngOnDestroy() { }
63
- _generateEmptySvg() {
64
- const emptySvg = document.createElementNS('http://www.w3.org/2000/svg', 'svg');
65
- emptySvg.classList.add('fake-testing-svg');
66
- // Emulate real icon characteristics from `MatIconRegistry` so size remains consistent in tests.
67
- emptySvg.setAttribute('fit', '');
68
- emptySvg.setAttribute('height', '100%');
69
- emptySvg.setAttribute('width', '100%');
70
- emptySvg.setAttribute('preserveAspectRatio', 'xMidYMid meet');
71
- emptySvg.setAttribute('focusable', 'false');
72
- return emptySvg;
73
- }
74
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.0-next.2", ngImport: i0, type: FakeMatIconRegistry, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
75
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.0-next.2", ngImport: i0, type: FakeMatIconRegistry }); }
76
- }
77
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0-next.2", ngImport: i0, type: FakeMatIconRegistry, decorators: [{
78
- type: Injectable
79
- }] });
80
- /** Import this module in tests to install the null icon registry. */
81
- export class MatIconTestingModule {
82
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.0-next.2", ngImport: i0, type: MatIconTestingModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
83
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.0-next.2", ngImport: i0, type: MatIconTestingModule }); }
84
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.0-next.2", ngImport: i0, type: MatIconTestingModule, providers: [{ provide: MatIconRegistry, useClass: FakeMatIconRegistry }] }); }
85
- }
86
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0-next.2", ngImport: i0, type: MatIconTestingModule, decorators: [{
87
- type: NgModule,
88
- args: [{
89
- providers: [{ provide: MatIconRegistry, useClass: FakeMatIconRegistry }],
90
- }]
91
- }] });
92
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmFrZS1pY29uLXJlZ2lzdHJ5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL21hdGVyaWFsL2ljb24vdGVzdGluZy9mYWtlLWljb24tcmVnaXN0cnkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7OztHQU1HO0FBRUgsT0FBTyxFQUFDLFVBQVUsRUFBRSxRQUFRLEVBQVksTUFBTSxlQUFlLENBQUM7QUFDOUQsT0FBTyxFQUFDLGVBQWUsRUFBQyxNQUFNLHdCQUF3QixDQUFDO0FBQ3ZELE9BQU8sRUFBYSxFQUFFLElBQUksWUFBWSxFQUFDLE1BQU0sTUFBTSxDQUFDOztBQU1wRDs7O0dBR0c7QUFFSCxNQUFNLE9BQU8sbUJBQW1CO0lBQzlCLFVBQVU7UUFDUixPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRCxpQkFBaUI7UUFDZixPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRCxxQkFBcUI7UUFDbkIsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQsNEJBQTRCO1FBQzFCLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVELGFBQWE7UUFDWCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRCxvQkFBb0I7UUFDbEIsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQsd0JBQXdCO1FBQ3RCLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVELCtCQUErQjtRQUM3QixPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRCxzQkFBc0I7UUFDcEIsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQscUJBQXFCLENBQUMsS0FBYTtRQUNqQyxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7SUFFRCxzQkFBc0I7UUFDcEIsT0FBTyxDQUFDLGdCQUFnQixDQUFDLENBQUM7SUFDNUIsQ0FBQztJQUVELGlCQUFpQjtRQUNmLE9BQU8sWUFBWSxDQUFDLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDLENBQUM7SUFDaEQsQ0FBQztJQUVELGVBQWU7UUFDYixPQUFPLFlBQVksQ0FBQyxJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQyxDQUFDO0lBQ2hELENBQUM7SUFFRCxzQkFBc0I7UUFDcEIsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQsa0JBQWtCO1FBQ2hCLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVELFdBQVcsS0FBSSxDQUFDO0lBRVIsaUJBQWlCO1FBQ3ZCLE1BQU0sUUFBUSxHQUFHLFFBQVEsQ0FBQyxlQUFlLENBQUMsNEJBQTRCLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDL0UsUUFBUSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsa0JBQWtCLENBQUMsQ0FBQztRQUMzQyxnR0FBZ0c7UUFDaEcsUUFBUSxDQUFDLFlBQVksQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDakMsUUFBUSxDQUFDLFlBQVksQ0FBQyxRQUFRLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFDeEMsUUFBUSxDQUFDLFlBQVksQ0FBQyxPQUFPLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFDdkMsUUFBUSxDQUFDLFlBQVksQ0FBQyxxQkFBcUIsRUFBRSxlQUFlLENBQUMsQ0FBQztRQUM5RCxRQUFRLENBQUMsWUFBWSxDQUFDLFdBQVcsRUFBRSxPQUFPLENBQUMsQ0FBQztRQUM1QyxPQUFPLFFBQVEsQ0FBQztJQUNsQixDQUFDO3FIQXpFVSxtQkFBbUI7eUhBQW5CLG1CQUFtQjs7a0dBQW5CLG1CQUFtQjtrQkFEL0IsVUFBVTs7QUE2RVgscUVBQXFFO0FBSXJFLE1BQU0sT0FBTyxvQkFBb0I7cUhBQXBCLG9CQUFvQjtzSEFBcEIsb0JBQW9CO3NIQUFwQixvQkFBb0IsYUFGcEIsQ0FBQyxFQUFDLE9BQU8sRUFBRSxlQUFlLEVBQUUsUUFBUSxFQUFFLG1CQUFtQixFQUFDLENBQUM7O2tHQUUzRCxvQkFBb0I7a0JBSGhDLFFBQVE7bUJBQUM7b0JBQ1IsU0FBUyxFQUFFLENBQUMsRUFBQyxPQUFPLEVBQUUsZUFBZSxFQUFFLFFBQVEsRUFBRSxtQkFBbUIsRUFBQyxDQUFDO2lCQUN2RSIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmVcbiAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2VcbiAqL1xuXG5pbXBvcnQge0luamVjdGFibGUsIE5nTW9kdWxlLCBPbkRlc3Ryb3l9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtNYXRJY29uUmVnaXN0cnl9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2ljb24nO1xuaW1wb3J0IHtPYnNlcnZhYmxlLCBvZiBhcyBvYnNlcnZhYmxlT2Z9IGZyb20gJ3J4anMnO1xuXG50eXBlIFB1YmxpY0FwaTxUPiA9IHtcbiAgW0sgaW4ga2V5b2YgVF06IFRbS10gZXh0ZW5kcyAoLi4ueDogYW55W10pID0+IFQgPyAoLi4ueDogYW55W10pID0+IFB1YmxpY0FwaTxUPiA6IFRbS107XG59O1xuXG4vKipcbiAqIEEgbnVsbCBpY29uIHJlZ2lzdHJ5IHRoYXQgbXVzdCBiZSBpbXBvcnRlZCB0byBhbGxvdyBkaXNhYmxpbmcgb2YgY3VzdG9tXG4gKiBpY29ucy5cbiAqL1xuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIEZha2VNYXRJY29uUmVnaXN0cnkgaW1wbGVtZW50cyBQdWJsaWNBcGk8TWF0SWNvblJlZ2lzdHJ5PiwgT25EZXN0cm95IHtcbiAgYWRkU3ZnSWNvbigpOiB0aGlzIHtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIGFkZFN2Z0ljb25MaXRlcmFsKCk6IHRoaXMge1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgYWRkU3ZnSWNvbkluTmFtZXNwYWNlKCk6IHRoaXMge1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgYWRkU3ZnSWNvbkxpdGVyYWxJbk5hbWVzcGFjZSgpOiB0aGlzIHtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIGFkZFN2Z0ljb25TZXQoKTogdGhpcyB7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBhZGRTdmdJY29uU2V0TGl0ZXJhbCgpOiB0aGlzIHtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIGFkZFN2Z0ljb25TZXRJbk5hbWVzcGFjZSgpOiB0aGlzIHtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIGFkZFN2Z0ljb25TZXRMaXRlcmFsSW5OYW1lc3BhY2UoKTogdGhpcyB7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICByZWdpc3RlckZvbnRDbGFzc0FsaWFzKCk6IHRoaXMge1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgY2xhc3NOYW1lRm9yRm9udEFsaWFzKGFsaWFzOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHJldHVybiBhbGlhcztcbiAgfVxuXG4gIGdldERlZmF1bHRGb250U2V0Q2xhc3MoKSB7XG4gICAgcmV0dXJuIFsnbWF0ZXJpYWwtaWNvbnMnXTtcbiAgfVxuXG4gIGdldFN2Z0ljb25Gcm9tVXJsKCk6IE9ic2VydmFibGU8U1ZHRWxlbWVudD4ge1xuICAgIHJldHVybiBvYnNlcnZhYmxlT2YodGhpcy5fZ2VuZXJhdGVFbXB0eVN2ZygpKTtcbiAgfVxuXG4gIGdldE5hbWVkU3ZnSWNvbigpOiBPYnNlcnZhYmxlPFNWR0VsZW1lbnQ+IHtcbiAgICByZXR1cm4gb2JzZXJ2YWJsZU9mKHRoaXMuX2dlbmVyYXRlRW1wdHlTdmcoKSk7XG4gIH1cblxuICBzZXREZWZhdWx0Rm9udFNldENsYXNzKCk6IHRoaXMge1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgYWRkU3ZnSWNvblJlc29sdmVyKCk6IHRoaXMge1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKSB7fVxuXG4gIHByaXZhdGUgX2dlbmVyYXRlRW1wdHlTdmcoKTogU1ZHRWxlbWVudCB7XG4gICAgY29uc3QgZW1wdHlTdmcgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoJ2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJywgJ3N2ZycpO1xuICAgIGVtcHR5U3ZnLmNsYXNzTGlzdC5hZGQoJ2Zha2UtdGVzdGluZy1zdmcnKTtcbiAgICAvLyBFbXVsYXRlIHJlYWwgaWNvbiBjaGFyYWN0ZXJpc3RpY3MgZnJvbSBgTWF0SWNvblJlZ2lzdHJ5YCBzbyBzaXplIHJlbWFpbnMgY29uc2lzdGVudCBpbiB0ZXN0cy5cbiAgICBlbXB0eVN2Zy5zZXRBdHRyaWJ1dGUoJ2ZpdCcsICcnKTtcbiAgICBlbXB0eVN2Zy5zZXRBdHRyaWJ1dGUoJ2hlaWdodCcsICcxMDAlJyk7XG4gICAgZW1wdHlTdmcuc2V0QXR0cmlidXRlKCd3aWR0aCcsICcxMDAlJyk7XG4gICAgZW1wdHlTdmcuc2V0QXR0cmlidXRlKCdwcmVzZXJ2ZUFzcGVjdFJhdGlvJywgJ3hNaWRZTWlkIG1lZXQnKTtcbiAgICBlbXB0eVN2Zy5zZXRBdHRyaWJ1dGUoJ2ZvY3VzYWJsZScsICdmYWxzZScpO1xuICAgIHJldHVybiBlbXB0eVN2ZztcbiAgfVxufVxuXG4vKiogSW1wb3J0IHRoaXMgbW9kdWxlIGluIHRlc3RzIHRvIGluc3RhbGwgdGhlIG51bGwgaWNvbiByZWdpc3RyeS4gKi9cbkBOZ01vZHVsZSh7XG4gIHByb3ZpZGVyczogW3twcm92aWRlOiBNYXRJY29uUmVnaXN0cnksIHVzZUNsYXNzOiBGYWtlTWF0SWNvblJlZ2lzdHJ5fV0sXG59KVxuZXhwb3J0IGNsYXNzIE1hdEljb25UZXN0aW5nTW9kdWxlIHt9XG4iXX0=
@@ -1,14 +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
- /** Possible types of icons. */
9
- export var IconType;
10
- (function (IconType) {
11
- IconType[IconType["SVG"] = 0] = "SVG";
12
- IconType[IconType["FONT"] = 1] = "FONT";
13
- })(IconType || (IconType = {}));
14
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWNvbi1oYXJuZXNzLWZpbHRlcnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvbWF0ZXJpYWwvaWNvbi90ZXN0aW5nL2ljb24taGFybmVzcy1maWx0ZXJzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7R0FNRztBQUlILCtCQUErQjtBQUMvQixNQUFNLENBQU4sSUFBWSxRQUdYO0FBSEQsV0FBWSxRQUFRO0lBQ2xCLHFDQUFHLENBQUE7SUFDSCx1Q0FBSSxDQUFBO0FBQ04sQ0FBQyxFQUhXLFFBQVEsS0FBUixRQUFRLFFBR25CIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZVxuICovXG5cbmltcG9ydCB7QmFzZUhhcm5lc3NGaWx0ZXJzfSBmcm9tICdAYW5ndWxhci9jZGsvdGVzdGluZyc7XG5cbi8qKiBQb3NzaWJsZSB0eXBlcyBvZiBpY29ucy4gKi9cbmV4cG9ydCBlbnVtIEljb25UeXBlIHtcbiAgU1ZHLFxuICBGT05ULFxufVxuXG4vKiogQSBzZXQgb2YgY3JpdGVyaWEgdGhhdCBjYW4gYmUgdXNlZCB0byBmaWx0ZXIgYSBsaXN0IG9mIGBNYXRJY29uSGFybmVzc2AgaW5zdGFuY2VzLiAqL1xuZXhwb3J0IGludGVyZmFjZSBJY29uSGFybmVzc0ZpbHRlcnMgZXh0ZW5kcyBCYXNlSGFybmVzc0ZpbHRlcnMge1xuICAvKiogRmlsdGVycyBiYXNlZCBvbiB0aGUgdHlwZWYgb2YgdGhlIGljb24uICovXG4gIHR5cGU/OiBJY29uVHlwZTtcbiAgLyoqIEZpbHRlcnMgYmFzZWQgb24gdGhlIG5hbWUgb2YgdGhlIGljb24uICovXG4gIG5hbWU/OiBzdHJpbmcgfCBSZWdFeHA7XG4gIC8qKiBGaWx0ZXJzIGJhc2VkIG9uIHRoZSBuYW1lc3BhY2Ugb2YgdGhlIGljb24uICovXG4gIG5hbWVzcGFjZT86IHN0cmluZyB8IG51bGwgfCBSZWdFeHA7XG59XG4iXX0=