@colijnit/configurator 261.1.1 → 261.20.1

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 (401) hide show
  1. package/{fesm2015/colijnit-configurator.js → fesm2022/colijnit-configurator.mjs} +19087 -18481
  2. package/fesm2022/colijnit-configurator.mjs.map +1 -0
  3. package/index.d.ts +3299 -0
  4. package/lib/components/answer-card/style/_layout.scss +3 -3
  5. package/lib/components/answers-slideout/style/_layout.scss +1 -0
  6. package/lib/style/configurator-globals.scss +1 -21
  7. package/package.json +24 -19
  8. package/bundles/colijnit-configurator.umd.js +0 -20167
  9. package/bundles/colijnit-configurator.umd.js.map +0 -1
  10. package/colijnit-configurator.d.ts +0 -5
  11. package/esm2015/colijnit-configurator.js +0 -5
  12. package/esm2015/lib/builder.js +0 -795
  13. package/esm2015/lib/components/answer-card/answer-card.component.js +0 -313
  14. package/esm2015/lib/components/answer-card/answer-card.module.js +0 -50
  15. package/esm2015/lib/components/answer-info-dialog/answer-info-dialog.component.js +0 -182
  16. package/esm2015/lib/components/answer-info-dialog/answer-info-dialog.module.js +0 -34
  17. package/esm2015/lib/components/answers-slideout/answers-slideout.component.js +0 -490
  18. package/esm2015/lib/components/answers-slideout/answers-slideout.module.js +0 -61
  19. package/esm2015/lib/components/color-filter/color-filter.component.js +0 -59
  20. package/esm2015/lib/components/color-filter/color-filter.module.js +0 -26
  21. package/esm2015/lib/components/configurator/configurator.component.js +0 -133
  22. package/esm2015/lib/components/configurator/configurator.module.js +0 -42
  23. package/esm2015/lib/components/configurator-dialog/configurator-camera-settings.component.js +0 -222
  24. package/esm2015/lib/components/configurator-dialog/configurator-dialog.module.js +0 -48
  25. package/esm2015/lib/components/configurator-dialog/configurator-error-dialog.component.js +0 -82
  26. package/esm2015/lib/components/configurator-dialog/configurator-export-dialog.component.js +0 -163
  27. package/esm2015/lib/components/configurator-loader/configurator-loader.component.js +0 -49
  28. package/esm2015/lib/components/configurator-loader/configurator-loader.module.js +0 -33
  29. package/esm2015/lib/components/configurator-scene/configurator-scene.component.js +0 -60
  30. package/esm2015/lib/components/configurator-scene/configurator-scene.module.js +0 -17
  31. package/esm2015/lib/components/configurator-scene-loader/configurator-scene-loader.component.js +0 -46
  32. package/esm2015/lib/components/configurator-scene-loader/configurator-scene-loader.module.js +0 -26
  33. package/esm2015/lib/components/element-buttons/element-buttons.component.js +0 -168
  34. package/esm2015/lib/components/element-buttons/element-buttons.module.js +0 -30
  35. package/esm2015/lib/components/element-toolbar/element-toolbar.component.js +0 -186
  36. package/esm2015/lib/components/element-toolbar/element-toolbar.module.js +0 -34
  37. package/esm2015/lib/components/image-zoom/image-zoom.component.js +0 -61
  38. package/esm2015/lib/components/image-zoom/image-zoom.module.js +0 -30
  39. package/esm2015/lib/components/lite-selector/lite-selector.component.js +0 -206
  40. package/esm2015/lib/components/lite-selector/lite-selector.module.js +0 -34
  41. package/esm2015/lib/components/product-configurator/product-configurator.component.js +0 -184
  42. package/esm2015/lib/components/product-configurator/product-configurator.module.js +0 -72
  43. package/esm2015/lib/components/product-configurator-selector/product-configurator-selector.component.js +0 -237
  44. package/esm2015/lib/components/product-configurator-selector/product-configurator-selector.module.js +0 -38
  45. package/esm2015/lib/components/product-configurator-selector-option/product-configurator-selector-option.component.js +0 -284
  46. package/esm2015/lib/components/product-configurator-selector-option/product-configurator-selector-option.module.js +0 -42
  47. package/esm2015/lib/components/product-configurator-selector-option-button/product-configurator-selector-option-button.component.js +0 -72
  48. package/esm2015/lib/components/product-configurator-selector-option-button/product-configurator-selector-option-button.module.js +0 -34
  49. package/esm2015/lib/components/product-configurator-selector-option-checkbox/product-configurator-selector-option-checkbox.component.js +0 -82
  50. package/esm2015/lib/components/product-configurator-selector-option-checkbox/product-configurator-selector-option-checkbox.module.js +0 -30
  51. package/esm2015/lib/components/product-configurator-selector-option-dropdown/product-configurator-selector-option-dropdown.component.js +0 -80
  52. package/esm2015/lib/components/product-configurator-selector-option-dropdown/product-configurator-selector-option-dropdown.module.js +0 -34
  53. package/esm2015/lib/components/product-configurator-selector-option-tile/product-configurator-selector-option-tile.component.js +0 -93
  54. package/esm2015/lib/components/product-configurator-selector-option-tile/product-configurator-selector-option-tile.module.js +0 -34
  55. package/esm2015/lib/components/progress-bar/progress-bar.component.js +0 -55
  56. package/esm2015/lib/components/progress-bar/progress-bar.module.js +0 -29
  57. package/esm2015/lib/components/scene-options/scene-options.component.js +0 -164
  58. package/esm2015/lib/components/scene-options/scene-options.module.js +0 -38
  59. package/esm2015/lib/components/selections-summary/selections-summary.component.js +0 -163
  60. package/esm2015/lib/components/selections-summary/selections-summary.module.js +0 -45
  61. package/esm2015/lib/components/selections-summary-line/selections-summary-line.component.js +0 -171
  62. package/esm2015/lib/components/selections-summary-line/selections-summary-line.module.js +0 -34
  63. package/esm2015/lib/components/slideout/slideout.component.js +0 -83
  64. package/esm2015/lib/components/slideout/slideout.module.js +0 -17
  65. package/esm2015/lib/components/summary-line/summary-line.component.js +0 -273
  66. package/esm2015/lib/components/summary-line/summary-line.module.js +0 -44
  67. package/esm2015/lib/components/tag-filter/tag-filter.component.js +0 -39
  68. package/esm2015/lib/components/tag-filter/tag-filter.module.js +0 -21
  69. package/esm2015/lib/components/threedselector/threedselector.component.js +0 -155
  70. package/esm2015/lib/components/threedselector/threedselector.module.js +0 -34
  71. package/esm2015/lib/core/helper/variation-helper.js +0 -553
  72. package/esm2015/lib/core/shader/floor-fade.shader.js +0 -33
  73. package/esm2015/lib/core/textures/depth-data-texture.js +0 -19
  74. package/esm2015/lib/directives/directives.module.js +0 -26
  75. package/esm2015/lib/directives/visibility-observer-master.directive.js +0 -53
  76. package/esm2015/lib/directives/visibility-observer.directive.js +0 -54
  77. package/esm2015/lib/enum/ar-feature.enum.js +0 -14
  78. package/esm2015/lib/enum/configuration-key.enum.js +0 -41
  79. package/esm2015/lib/enum/configuration-template.enum.js +0 -6
  80. package/esm2015/lib/enum/device-size-type.js +0 -7
  81. package/esm2015/lib/enum/device-tier.enum.js +0 -7
  82. package/esm2015/lib/enum/icon.enum.js +0 -113
  83. package/esm2015/lib/enum/item-type.enum.js +0 -23
  84. package/esm2015/lib/enum/light.enum.js +0 -9
  85. package/esm2015/lib/enum/navigator-type.enum.js +0 -6
  86. package/esm2015/lib/enum/output-encoding.enum.js +0 -9
  87. package/esm2015/lib/enum/result-type.enum.js +0 -21
  88. package/esm2015/lib/enum/scene-event.enum.js +0 -12
  89. package/esm2015/lib/enum/shadow-map-type.enum.js +0 -8
  90. package/esm2015/lib/enum/texture-type.js +0 -9
  91. package/esm2015/lib/enum/tone-mapping-local.enum.js +0 -12
  92. package/esm2015/lib/enum/view-mode.enum.js +0 -7
  93. package/esm2015/lib/enum/xr-mode.enum.js +0 -6
  94. package/esm2015/lib/environments/environment.js +0 -8
  95. package/esm2015/lib/interfaces/aa-options.interface.js +0 -2
  96. package/esm2015/lib/interfaces/adjustable-element.interface.js +0 -2
  97. package/esm2015/lib/interfaces/ao-options.interface.js +0 -2
  98. package/esm2015/lib/interfaces/changes.interface.js +0 -2
  99. package/esm2015/lib/interfaces/configuration-data.interface.js +0 -2
  100. package/esm2015/lib/interfaces/light-preset.interface.js +0 -2
  101. package/esm2015/lib/interfaces/post-processing-setting.interface.js +0 -2
  102. package/esm2015/lib/interfaces/scene-option-button.interface.js +0 -6
  103. package/esm2015/lib/interfaces/screen-size-info.js +0 -2
  104. package/esm2015/lib/interfaces/setting.interface.js +0 -2
  105. package/esm2015/lib/interfaces/texture.interface.js +0 -2
  106. package/esm2015/lib/interfaces/vignette-options.interface.js +0 -2
  107. package/esm2015/lib/model/ar-position-indicator.js +0 -18
  108. package/esm2015/lib/model/camera-settings.js +0 -14
  109. package/esm2015/lib/model/configuration-result-object.js +0 -6
  110. package/esm2015/lib/model/configurator-error-message.js +0 -9
  111. package/esm2015/lib/model/configurator-settings.js +0 -25
  112. package/esm2015/lib/model/custom-button.js +0 -16
  113. package/esm2015/lib/model/factory.js +0 -28
  114. package/esm2015/lib/model/icon.js +0 -112
  115. package/esm2015/lib/model/intersected-objects.js +0 -7
  116. package/esm2015/lib/model/light-preset.js +0 -73
  117. package/esm2015/lib/model/light-properties.js +0 -45
  118. package/esm2015/lib/model/material.js +0 -11
  119. package/esm2015/lib/model/metadata.js +0 -2
  120. package/esm2015/lib/model/render-parameters.js +0 -16
  121. package/esm2015/lib/model/setting-options.js +0 -71
  122. package/esm2015/lib/model/settings.js +0 -16
  123. package/esm2015/lib/model/shadow-properties.js +0 -10
  124. package/esm2015/lib/model/skin.js +0 -3
  125. package/esm2015/lib/model/texture.js +0 -76
  126. package/esm2015/lib/model/variation-settings.js +0 -54
  127. package/esm2015/lib/model/variation.js +0 -3
  128. package/esm2015/lib/model/xr-reticle.js +0 -79
  129. package/esm2015/lib/modules/render/enum/scene-type.enum.js +0 -6
  130. package/esm2015/lib/modules/render/model/ar-parameters.js +0 -12
  131. package/esm2015/lib/modules/render/model/scene-setting.js +0 -6
  132. package/esm2015/lib/modules/render/model/scene-settings.js +0 -3
  133. package/esm2015/lib/pipes/append.pipe.js +0 -21
  134. package/esm2015/lib/pipes/google-translate.pipe.js +0 -21
  135. package/esm2015/lib/pipes/localize.pipe.js +0 -28
  136. package/esm2015/lib/pipes/pipes.module.js +0 -41
  137. package/esm2015/lib/pipes/prepend.pipe.js +0 -21
  138. package/esm2015/lib/pipes/strip-html.pipe.js +0 -17
  139. package/esm2015/lib/services/app-event.service.js +0 -36
  140. package/esm2015/lib/services/app-initializer.service.js +0 -27
  141. package/esm2015/lib/services/ar.service.js +0 -844
  142. package/esm2015/lib/services/build-furniture-base.service.js +0 -1181
  143. package/esm2015/lib/services/build-furniture-without-scene.service.js +0 -86
  144. package/esm2015/lib/services/build-furniture.service.js +0 -169
  145. package/esm2015/lib/services/bundle-initialzer.service.js +0 -113
  146. package/esm2015/lib/services/camera.service.js +0 -123
  147. package/esm2015/lib/services/configuration.service.js +0 -79
  148. package/esm2015/lib/services/configurator-connector.service.js +0 -830
  149. package/esm2015/lib/services/configurator.service.js +0 -285
  150. package/esm2015/lib/services/configuring.service.js +0 -119
  151. package/esm2015/lib/services/controls.js +0 -799
  152. package/esm2015/lib/services/debug.service.js +0 -43
  153. package/esm2015/lib/services/dictionary.service.js +0 -65
  154. package/esm2015/lib/services/dynamic-camera.service.js +0 -96
  155. package/esm2015/lib/services/floor-plane.service.js +0 -252
  156. package/esm2015/lib/services/font.service.js +0 -27
  157. package/esm2015/lib/services/google-translate.service.js +0 -79
  158. package/esm2015/lib/services/icon-cache.service.js +0 -44
  159. package/esm2015/lib/services/intersection.service.js +0 -47
  160. package/esm2015/lib/services/item.service.js +0 -75
  161. package/esm2015/lib/services/json-utils.service.js +0 -48
  162. package/esm2015/lib/services/light-creation.service.js +0 -35
  163. package/esm2015/lib/services/light-presets.service.js +0 -157
  164. package/esm2015/lib/services/lights.service.js +0 -146
  165. package/esm2015/lib/services/load-furniture-base.service.js +0 -164
  166. package/esm2015/lib/services/load-furniture-without-scene.service.js +0 -45
  167. package/esm2015/lib/services/load-furniture.service.js +0 -72
  168. package/esm2015/lib/services/loader.service.js +0 -32
  169. package/esm2015/lib/services/locator.service.js +0 -11
  170. package/esm2015/lib/services/message-board.service.js +0 -50
  171. package/esm2015/lib/services/post-processing.service.js +0 -378
  172. package/esm2015/lib/services/product-configurator.service.js +0 -16
  173. package/esm2015/lib/services/progress.service.js +0 -20
  174. package/esm2015/lib/services/scene-event.service.js +0 -246
  175. package/esm2015/lib/services/scene-options.service.js +0 -24
  176. package/esm2015/lib/services/scene.service.js +0 -313
  177. package/esm2015/lib/services/screen-size-analysis.service.js +0 -97
  178. package/esm2015/lib/services/settings.service.js +0 -142
  179. package/esm2015/lib/services/switch-build-furniture.service.js +0 -37
  180. package/esm2015/lib/services/switch-load-furniture.service.js +0 -35
  181. package/esm2015/lib/services/threedselector.service.js +0 -72
  182. package/esm2015/lib/services/utils.service.js +0 -207
  183. package/esm2015/lib/services/variation-cache.service.js +0 -143
  184. package/esm2015/lib/services/variation.service.js +0 -490
  185. package/esm2015/lib/services/view-mode.service.js +0 -37
  186. package/esm2015/lib/services/vr.service.js +0 -191
  187. package/esm2015/lib/services/xr.service.js +0 -294
  188. package/esm2015/lib/utils/asset.utils.js +0 -120
  189. package/esm2015/lib/utils/base-utils.js +0 -9
  190. package/esm2015/lib/utils/color.utils.js +0 -30
  191. package/esm2015/lib/utils/debug.utils.js +0 -9
  192. package/esm2015/lib/utils/device.utils.js +0 -25
  193. package/esm2015/lib/utils/file.utils.js +0 -167
  194. package/esm2015/lib/utils/image.utils.js +0 -61
  195. package/esm2015/lib/utils/json-parser.utils.js +0 -180
  196. package/esm2015/lib/utils/material.utils.js +0 -433
  197. package/esm2015/lib/utils/object.utils.js +0 -360
  198. package/esm2015/lib/utils/relative-position.utils.js +0 -75
  199. package/esm2015/lib/utils/rotation-helper.utils.js +0 -15
  200. package/esm2015/lib/utils/scene-3d.utils.js +0 -213
  201. package/esm2015/lib/utils/scene-utils.js +0 -191
  202. package/esm2015/lib/utils/text-utils.js +0 -68
  203. package/esm2015/lib/utils/threed.utils.js +0 -281
  204. package/esm2015/lib/utils/variation-utils.js +0 -459
  205. package/esm2015/public-api.js +0 -65
  206. package/fesm2015/colijnit-configurator.js.map +0 -1
  207. package/lib/builder.d.ts +0 -83
  208. package/lib/components/answer-card/answer-card.component.d.ts +0 -58
  209. package/lib/components/answer-card/answer-card.module.d.ts +0 -11
  210. package/lib/components/answer-info-dialog/answer-info-dialog.component.d.ts +0 -38
  211. package/lib/components/answer-info-dialog/answer-info-dialog.module.d.ts +0 -10
  212. package/lib/components/answers-slideout/answers-slideout.component.d.ts +0 -86
  213. package/lib/components/answers-slideout/answers-slideout.module.d.ts +0 -16
  214. package/lib/components/color-filter/color-filter.component.d.ts +0 -20
  215. package/lib/components/color-filter/color-filter.module.d.ts +0 -8
  216. package/lib/components/configurator/configurator.component.d.ts +0 -37
  217. package/lib/components/configurator/configurator.module.d.ts +0 -12
  218. package/lib/components/configurator-dialog/configurator-camera-settings.component.d.ts +0 -30
  219. package/lib/components/configurator-dialog/configurator-dialog.module.d.ts +0 -13
  220. package/lib/components/configurator-dialog/configurator-error-dialog.component.d.ts +0 -16
  221. package/lib/components/configurator-dialog/configurator-export-dialog.component.d.ts +0 -26
  222. package/lib/components/configurator-loader/configurator-loader.component.d.ts +0 -7
  223. package/lib/components/configurator-loader/configurator-loader.module.d.ts +0 -9
  224. package/lib/components/configurator-scene/configurator-scene.component.d.ts +0 -24
  225. package/lib/components/configurator-scene/configurator-scene.module.d.ts +0 -7
  226. package/lib/components/configurator-scene-loader/configurator-scene-loader.component.d.ts +0 -7
  227. package/lib/components/configurator-scene-loader/configurator-scene-loader.module.d.ts +0 -8
  228. package/lib/components/element-buttons/element-buttons.component.d.ts +0 -32
  229. package/lib/components/element-buttons/element-buttons.module.d.ts +0 -9
  230. package/lib/components/element-toolbar/element-toolbar.component.d.ts +0 -27
  231. package/lib/components/element-toolbar/element-toolbar.module.d.ts +0 -10
  232. package/lib/components/image-zoom/image-zoom.component.d.ts +0 -15
  233. package/lib/components/image-zoom/image-zoom.module.d.ts +0 -9
  234. package/lib/components/lite-selector/lite-selector.component.d.ts +0 -40
  235. package/lib/components/lite-selector/lite-selector.module.d.ts +0 -10
  236. package/lib/components/product-configurator/product-configurator.component.d.ts +0 -50
  237. package/lib/components/product-configurator/product-configurator.module.d.ts +0 -15
  238. package/lib/components/product-configurator-selector/product-configurator-selector.component.d.ts +0 -35
  239. package/lib/components/product-configurator-selector/product-configurator-selector.module.d.ts +0 -11
  240. package/lib/components/product-configurator-selector-option/product-configurator-selector-option.component.d.ts +0 -31
  241. package/lib/components/product-configurator-selector-option/product-configurator-selector-option.module.d.ts +0 -13
  242. package/lib/components/product-configurator-selector-option-button/product-configurator-selector-option-button.component.d.ts +0 -20
  243. package/lib/components/product-configurator-selector-option-button/product-configurator-selector-option-button.module.d.ts +0 -10
  244. package/lib/components/product-configurator-selector-option-checkbox/product-configurator-selector-option-checkbox.component.d.ts +0 -20
  245. package/lib/components/product-configurator-selector-option-checkbox/product-configurator-selector-option-checkbox.module.d.ts +0 -10
  246. package/lib/components/product-configurator-selector-option-dropdown/product-configurator-selector-option-dropdown.component.d.ts +0 -21
  247. package/lib/components/product-configurator-selector-option-dropdown/product-configurator-selector-option-dropdown.module.d.ts +0 -10
  248. package/lib/components/product-configurator-selector-option-tile/product-configurator-selector-option-tile.component.d.ts +0 -21
  249. package/lib/components/product-configurator-selector-option-tile/product-configurator-selector-option-tile.module.d.ts +0 -10
  250. package/lib/components/progress-bar/progress-bar.component.d.ts +0 -10
  251. package/lib/components/progress-bar/progress-bar.module.d.ts +0 -8
  252. package/lib/components/scene-options/scene-options.component.d.ts +0 -24
  253. package/lib/components/scene-options/scene-options.module.d.ts +0 -11
  254. package/lib/components/selections-summary/selections-summary.component.d.ts +0 -38
  255. package/lib/components/selections-summary/selections-summary.module.d.ts +0 -12
  256. package/lib/components/selections-summary-line/selections-summary-line.component.d.ts +0 -27
  257. package/lib/components/selections-summary-line/selections-summary-line.module.d.ts +0 -10
  258. package/lib/components/slideout/slideout.component.d.ts +0 -22
  259. package/lib/components/slideout/slideout.module.d.ts +0 -7
  260. package/lib/components/summary-line/summary-line.component.d.ts +0 -50
  261. package/lib/components/summary-line/summary-line.module.d.ts +0 -11
  262. package/lib/components/tag-filter/tag-filter.component.d.ts +0 -9
  263. package/lib/components/tag-filter/tag-filter.module.d.ts +0 -7
  264. package/lib/components/threedselector/threedselector.component.d.ts +0 -38
  265. package/lib/components/threedselector/threedselector.module.d.ts +0 -10
  266. package/lib/core/helper/variation-helper.d.ts +0 -25
  267. package/lib/core/shader/floor-fade.shader.d.ts +0 -5
  268. package/lib/core/textures/depth-data-texture.d.ts +0 -5
  269. package/lib/directives/directives.module.d.ts +0 -8
  270. package/lib/directives/visibility-observer-master.directive.d.ts +0 -12
  271. package/lib/directives/visibility-observer.directive.d.ts +0 -16
  272. package/lib/enum/ar-feature.enum.d.ts +0 -12
  273. package/lib/enum/configuration-key.enum.d.ts +0 -39
  274. package/lib/enum/configuration-template.enum.d.ts +0 -4
  275. package/lib/enum/device-size-type.d.ts +0 -5
  276. package/lib/enum/device-tier.enum.d.ts +0 -5
  277. package/lib/enum/icon.enum.d.ts +0 -111
  278. package/lib/enum/item-type.enum.d.ts +0 -21
  279. package/lib/enum/light.enum.d.ts +0 -7
  280. package/lib/enum/navigator-type.enum.d.ts +0 -4
  281. package/lib/enum/output-encoding.enum.d.ts +0 -7
  282. package/lib/enum/result-type.enum.d.ts +0 -19
  283. package/lib/enum/scene-event.enum.d.ts +0 -10
  284. package/lib/enum/shadow-map-type.enum.d.ts +0 -6
  285. package/lib/enum/texture-type.d.ts +0 -7
  286. package/lib/enum/tone-mapping-local.enum.d.ts +0 -10
  287. package/lib/enum/view-mode.enum.d.ts +0 -5
  288. package/lib/enum/xr-mode.enum.d.ts +0 -4
  289. package/lib/environments/environment.d.ts +0 -4
  290. package/lib/interfaces/aa-options.interface.d.ts +0 -4
  291. package/lib/interfaces/adjustable-element.interface.d.ts +0 -5
  292. package/lib/interfaces/ao-options.interface.d.ts +0 -18
  293. package/lib/interfaces/changes.interface.d.ts +0 -9
  294. package/lib/interfaces/configuration-data.interface.d.ts +0 -40
  295. package/lib/interfaces/light-preset.interface.d.ts +0 -22
  296. package/lib/interfaces/post-processing-setting.interface.d.ts +0 -11
  297. package/lib/interfaces/scene-option-button.interface.d.ts +0 -19
  298. package/lib/interfaces/screen-size-info.d.ts +0 -10
  299. package/lib/interfaces/setting.interface.d.ts +0 -8
  300. package/lib/interfaces/texture.interface.d.ts +0 -44
  301. package/lib/interfaces/vignette-options.interface.d.ts +0 -4
  302. package/lib/model/ar-position-indicator.d.ts +0 -4
  303. package/lib/model/camera-settings.d.ts +0 -12
  304. package/lib/model/configuration-result-object.d.ts +0 -30
  305. package/lib/model/configurator-error-message.d.ts +0 -8
  306. package/lib/model/configurator-settings.d.ts +0 -62
  307. package/lib/model/custom-button.d.ts +0 -10
  308. package/lib/model/factory.d.ts +0 -5
  309. package/lib/model/icon.d.ts +0 -4
  310. package/lib/model/intersected-objects.d.ts +0 -6
  311. package/lib/model/light-preset.d.ts +0 -33
  312. package/lib/model/light-properties.d.ts +0 -25
  313. package/lib/model/material.d.ts +0 -41
  314. package/lib/model/metadata.d.ts +0 -78
  315. package/lib/model/render-parameters.d.ts +0 -12
  316. package/lib/model/setting-options.d.ts +0 -67
  317. package/lib/model/settings.d.ts +0 -10
  318. package/lib/model/shadow-properties.d.ts +0 -7
  319. package/lib/model/skin.d.ts +0 -15
  320. package/lib/model/texture.d.ts +0 -52
  321. package/lib/model/variation-settings.d.ts +0 -55
  322. package/lib/model/variation.d.ts +0 -11
  323. package/lib/model/xr-reticle.d.ts +0 -17
  324. package/lib/modules/render/enum/scene-type.enum.d.ts +0 -4
  325. package/lib/modules/render/model/ar-parameters.d.ts +0 -9
  326. package/lib/modules/render/model/scene-setting.d.ts +0 -13
  327. package/lib/modules/render/model/scene-settings.d.ts +0 -4
  328. package/lib/pipes/append.pipe.d.ts +0 -7
  329. package/lib/pipes/google-translate.pipe.d.ts +0 -11
  330. package/lib/pipes/localize.pipe.d.ts +0 -10
  331. package/lib/pipes/pipes.module.d.ts +0 -11
  332. package/lib/pipes/prepend.pipe.d.ts +0 -7
  333. package/lib/pipes/strip-html.pipe.d.ts +0 -7
  334. package/lib/services/app-event.service.d.ts +0 -32
  335. package/lib/services/app-initializer.service.d.ts +0 -14
  336. package/lib/services/ar.service.d.ts +0 -120
  337. package/lib/services/build-furniture-base.service.d.ts +0 -117
  338. package/lib/services/build-furniture-without-scene.service.d.ts +0 -14
  339. package/lib/services/build-furniture.service.d.ts +0 -14
  340. package/lib/services/bundle-initialzer.service.d.ts +0 -45
  341. package/lib/services/camera.service.d.ts +0 -44
  342. package/lib/services/configuration.service.d.ts +0 -18
  343. package/lib/services/configurator-connector.service.d.ts +0 -140
  344. package/lib/services/configurator.service.d.ts +0 -62
  345. package/lib/services/configuring.service.d.ts +0 -46
  346. package/lib/services/controls.d.ts +0 -11
  347. package/lib/services/debug.service.d.ts +0 -16
  348. package/lib/services/dictionary.service.d.ts +0 -15
  349. package/lib/services/dynamic-camera.service.d.ts +0 -21
  350. package/lib/services/floor-plane.service.d.ts +0 -47
  351. package/lib/services/font.service.d.ts +0 -10
  352. package/lib/services/google-translate.service.d.ts +0 -26
  353. package/lib/services/icon-cache.service.d.ts +0 -21
  354. package/lib/services/intersection.service.d.ts +0 -11
  355. package/lib/services/item.service.d.ts +0 -18
  356. package/lib/services/json-utils.service.d.ts +0 -7
  357. package/lib/services/light-creation.service.d.ts +0 -9
  358. package/lib/services/light-presets.service.d.ts +0 -34
  359. package/lib/services/lights.service.d.ts +0 -34
  360. package/lib/services/load-furniture-base.service.d.ts +0 -37
  361. package/lib/services/load-furniture-without-scene.service.d.ts +0 -9
  362. package/lib/services/load-furniture.service.d.ts +0 -9
  363. package/lib/services/loader.service.d.ts +0 -11
  364. package/lib/services/locator.service.d.ts +0 -7
  365. package/lib/services/message-board.service.d.ts +0 -18
  366. package/lib/services/post-processing.service.d.ts +0 -74
  367. package/lib/services/product-configurator.service.d.ts +0 -11
  368. package/lib/services/progress.service.d.ts +0 -9
  369. package/lib/services/scene-event.service.d.ts +0 -72
  370. package/lib/services/scene-options.service.d.ts +0 -11
  371. package/lib/services/scene.service.d.ts +0 -71
  372. package/lib/services/screen-size-analysis.service.d.ts +0 -32
  373. package/lib/services/settings.service.d.ts +0 -24
  374. package/lib/services/switch-build-furniture.service.d.ts +0 -21
  375. package/lib/services/switch-load-furniture.service.d.ts +0 -21
  376. package/lib/services/threedselector.service.d.ts +0 -17
  377. package/lib/services/utils.service.d.ts +0 -24
  378. package/lib/services/variation-cache.service.d.ts +0 -23
  379. package/lib/services/variation.service.d.ts +0 -26
  380. package/lib/services/view-mode.service.d.ts +0 -17
  381. package/lib/services/vr.service.d.ts +0 -42
  382. package/lib/services/xr.service.d.ts +0 -56
  383. package/lib/utils/asset.utils.d.ts +0 -19
  384. package/lib/utils/base-utils.d.ts +0 -4
  385. package/lib/utils/color.utils.d.ts +0 -8
  386. package/lib/utils/debug.utils.d.ts +0 -3
  387. package/lib/utils/device.utils.d.ts +0 -7
  388. package/lib/utils/file.utils.d.ts +0 -30
  389. package/lib/utils/image.utils.d.ts +0 -9
  390. package/lib/utils/json-parser.utils.d.ts +0 -9
  391. package/lib/utils/material.utils.d.ts +0 -34
  392. package/lib/utils/object.utils.d.ts +0 -32
  393. package/lib/utils/relative-position.utils.d.ts +0 -12
  394. package/lib/utils/rotation-helper.utils.d.ts +0 -6
  395. package/lib/utils/scene-3d.utils.d.ts +0 -8
  396. package/lib/utils/scene-utils.d.ts +0 -7
  397. package/lib/utils/text-utils.d.ts +0 -4
  398. package/lib/utils/threed.utils.d.ts +0 -20
  399. package/lib/utils/variation-utils.d.ts +0 -18
  400. package/public-api.d.ts +0 -60
  401. /package/lib/style/{template_variables.scss → _variables.scss} +0 -0
@@ -1,378 +0,0 @@
1
- import { __awaiter } from "tslib";
2
- import { Injectable } from '@angular/core';
3
- import { Color, Vector2 } from 'three';
4
- import { EffectComposer } from 'three/examples/jsm/postprocessing/EffectComposer';
5
- import GUI from 'three/examples/jsm/libs/lil-gui.module.min';
6
- import { OutputPass } from 'three/examples/jsm/postprocessing/OutputPass';
7
- import { RenderPass } from 'three/examples/jsm/postprocessing/RenderPass';
8
- import { ShaderPass } from 'three/examples/jsm/postprocessing/ShaderPass';
9
- import { OutlinePass } from 'three/examples/jsm/postprocessing/OutlinePass';
10
- import { VignetteShader } from 'three/examples/jsm/shaders/VignetteShader';
11
- import { SMAAPass } from 'three/examples/jsm/postprocessing/SMAAPass';
12
- import { ConfigurationKey } from '../enum/configuration-key.enum';
13
- import { DeviceUtils } from '../utils/device.utils';
14
- import { N8AOPass } from 'n8ao';
15
- import { SSAARenderPass } from 'three/examples/jsm/postprocessing/SSAARenderPass';
16
- import * as i0 from "@angular/core";
17
- import * as i1 from "./configuration.service";
18
- import * as i2 from "./settings.service";
19
- import * as i3 from "./app-event.service";
20
- import * as i4 from "./screen-size-analysis.service";
21
- export class PostProcessingService {
22
- constructor(_configurationService, _settingsService, _appEventService, _screenSizeAnalysis) {
23
- this._configurationService = _configurationService;
24
- this._settingsService = _settingsService;
25
- this._appEventService = _appEventService;
26
- this._screenSizeAnalysis = _screenSizeAnalysis;
27
- this._vignetteOffset = 1;
28
- this._vignetteDarkness = 1.5;
29
- this._outlinePassAsError = false;
30
- this._hideOutlineTimeout = 10000;
31
- this._standalone = false;
32
- this._cameraMoved = false;
33
- this._subs = [];
34
- this._aoDefaultOptions = {
35
- aoSamples: 32.0,
36
- denoiseSamples: 8.0,
37
- denoiseRadius: 24.0,
38
- aoRadius: 5.0,
39
- distanceFalloff: 1.0,
40
- screenSpaceRadius: false,
41
- halfRes: false,
42
- depthAwareUpsampling: true,
43
- transparencyAware: true,
44
- intensity: 3.0,
45
- renderMode: 'Combined',
46
- color: '000000',
47
- colorMultiply: true,
48
- stencil: true,
49
- accumulate: false,
50
- gammaCorrection: false
51
- };
52
- this._aoOptions = this._aoDefaultOptions;
53
- this._aaDefaultOptions = {
54
- sampleLevel: 4,
55
- unbiased: false
56
- };
57
- this._aaOptions = this._aaDefaultOptions;
58
- this._vignetteDefaultOptions = {
59
- vignetteOffset: 1,
60
- vignetteDarkness: 1.5
61
- };
62
- this._vignetteOptions = this._vignetteDefaultOptions;
63
- this._subs.push(this._configurationService.onChange.subscribe((changed) => {
64
- if (ConfigurationKey.ShowPostProcessingSettings in changed) {
65
- this._showHideGui(changed[ConfigurationKey.ShowPostProcessingSettings]);
66
- }
67
- }), this._settingsService.lightSettingsLoaded.subscribe((settings) => {
68
- if (settings && settings.length > 0) {
69
- const navigatorType = this._screenSizeAnalysis.navigatorType();
70
- let setting = settings.find((preset) => preset.navigatorType === navigatorType && preset.default && preset.standalone === this._standalone);
71
- if (!setting) {
72
- setting = settings.find((preset) => preset.default);
73
- }
74
- if (!setting) {
75
- setting = settings[0];
76
- }
77
- if (setting) {
78
- this._loadSetting(setting);
79
- }
80
- }
81
- }), this._appEventService.showOutline.subscribe((object) => this._showOutline(object)), this._appEventService.showErrorOutline.subscribe((object) => this._showErrorOutline(object)), this._appEventService.hideOutline.subscribe(() => this._hideOutline()));
82
- }
83
- ngOnDestroy() {
84
- this._subs.forEach(s => s.unsubscribe());
85
- }
86
- init(renderer, scene, camera, width, height, standalone) {
87
- this._standalone = standalone;
88
- this._renderer = renderer;
89
- this._scene = scene;
90
- this._camera = camera;
91
- this._width = width;
92
- this._height = height;
93
- this._postProcessingGui = new GUI();
94
- this._postProcessingGui.hide();
95
- this._initComposer();
96
- this._createGui();
97
- this._createGuiTaaPass();
98
- }
99
- setSize(width, height, force = false) {
100
- if (this._width === width && this._height === height && !force) {
101
- return;
102
- }
103
- this._width = width;
104
- this._height = height;
105
- if (this._composer) {
106
- this._composer.setSize(width, height);
107
- }
108
- const pr = this._renderer.getPixelRatio();
109
- if (this._n8aoPass) {
110
- this._n8aoPass.setSize(this._width * pr, this._height * pr);
111
- }
112
- if (this._smaaPass) {
113
- this._smaaPass.setSize(this._width * pr, this._height * pr);
114
- }
115
- if (this._ssaaPass) {
116
- this._ssaaPass.setSize(this._width * pr, this._height * pr);
117
- }
118
- if (this._outlinePass) {
119
- this._outlinePass.setSize(this._width * pr, this._height * pr);
120
- }
121
- this._updateAASize();
122
- }
123
- render() {
124
- if (this._composer) {
125
- this._composer.render();
126
- }
127
- }
128
- cameraMovementChanged() {
129
- }
130
- showGui() {
131
- if (this._postProcessingGui) {
132
- this._postProcessingGui.show(true);
133
- }
134
- }
135
- hideGui() {
136
- if (this._postProcessingGui) {
137
- this._postProcessingGui.hide();
138
- }
139
- }
140
- forceRenderCanvas() {
141
- this.render();
142
- }
143
- _loadSetting(setting) {
144
- if (setting && setting.postProcessing) {
145
- this.aoEnabled = setting.postProcessing.aoEnabled;
146
- this.aaEnabled = setting.postProcessing.aaEnabled;
147
- this.vignetteEnabled = setting.postProcessing.vignetteEnabled;
148
- if (setting.postProcessing.aoOptions) {
149
- this._aoOptions = Object.assign(Object.assign({}, this._aoDefaultOptions), setting.postProcessing.aoOptions);
150
- }
151
- if (setting.postProcessing.aaOptions) {
152
- this._aaOptions = Object.assign(Object.assign({}, this._aaDefaultOptions), setting.postProcessing.aaOptions);
153
- }
154
- if (setting.postProcessing.vignetteOptions) {
155
- this._vignetteOptions = Object.assign(Object.assign({}, this._vignetteDefaultOptions), setting.postProcessing.vignetteOptions);
156
- }
157
- this._initComposer();
158
- }
159
- }
160
- _showErrorOutline(item) {
161
- if (!this._outlinePassAsError) {
162
- this._setErrorGlowSettings();
163
- this._outlinePassAsError = true;
164
- }
165
- this._outlinePass.selectedObjects = [item];
166
- }
167
- _showOutline(item) {
168
- return __awaiter(this, void 0, void 0, function* () {
169
- clearTimeout(this._hideOutlineTimer);
170
- if (this._outlinePassAsError) {
171
- this._setSelectionGlowSettings();
172
- this._outlinePassAsError = false;
173
- }
174
- this._outlinePass.selectedObjects = [item];
175
- // await this._animatedOutlineStrength(0, 300);
176
- // remove after x amount of ms
177
- this._hideOutlineTimer = setTimeout(() => {
178
- this._hideOutline();
179
- }, this._hideOutlineTimeout);
180
- this.render();
181
- });
182
- }
183
- _hideOutline() {
184
- if (this._outlinePass.selectedObjects.length > 0) {
185
- // await this._animatedOutlineStrength(300, 0);
186
- this._outlinePass.selectedObjects = [];
187
- this.render();
188
- }
189
- }
190
- _updateAASize() {
191
- const fxaaUniform = this._fxaaPass && this._fxaaPass.material && this._fxaaPass.material.uniforms && this._fxaaPass.material.uniforms.resolution ? this._fxaaPass.material.uniforms.resolution.value : null;
192
- const pr = this._renderer.getPixelRatio();
193
- if (fxaaUniform) {
194
- fxaaUniform.set(1 / Math.max(1, this._width * pr), 1 / Math.max(1, this._height * pr));
195
- }
196
- }
197
- _initComposer() {
198
- if (!this._renderer || !this._scene || !this._camera) {
199
- return;
200
- }
201
- this._cleanUp();
202
- const deviceTier = DeviceUtils.GetDeviceTier();
203
- this._composer = new EffectComposer(this._renderer);
204
- this._renderPass = new RenderPass(this._scene, this._camera);
205
- this._composer.addPass(this._renderPass);
206
- if (this._aoEnabled) {
207
- this._n8aoPass = new N8AOPass(this._scene, this._camera, this._width, this._height);
208
- this._applyAoProps();
209
- this._composer.addPass(this._n8aoPass);
210
- if (this.aaEnabled) {
211
- this._smaaPass = new SMAAPass();
212
- this._composer.addPass(this._smaaPass);
213
- }
214
- }
215
- else {
216
- if (this.aaEnabled) {
217
- this._ssaaPass = new SSAARenderPass(this._scene, this._camera);
218
- this._ssaaPass.sampleLevel = this._aaOptions.sampleLevel;
219
- this._ssaaPass.unbiased = this._aaOptions.unbiased;
220
- this._composer.addPass(this._ssaaPass);
221
- }
222
- }
223
- this._outlinePass = new OutlinePass(new Vector2(this._width, this._height), this._scene, this._camera);
224
- this._setSelectionGlowSettings();
225
- this._composer.addPass(this._outlinePass);
226
- if (this.vignetteEnabled) {
227
- this._vignettePass = new ShaderPass(VignetteShader);
228
- this._vignettePass.uniforms.offset.value = this._vignetteOptions.vignetteOffset;
229
- this._vignettePass.uniforms.darkness.value = this._vignetteOptions.vignetteDarkness;
230
- this._composer.addPass(this._vignettePass);
231
- }
232
- this._outputPass = new OutputPass();
233
- this._composer.addPass(this._outputPass);
234
- this.setSize(this._width, this._height, true);
235
- this.render();
236
- }
237
- _cleanUp() {
238
- if (this._composer) {
239
- this._composer.dispose();
240
- }
241
- if (this._renderPass) {
242
- this._renderPass.dispose();
243
- }
244
- if (this._n8aoPass) {
245
- this._n8aoPass.dispose();
246
- }
247
- if (this._fxaaPass) {
248
- this._fxaaPass.dispose();
249
- }
250
- if (this._smaaPass) {
251
- this._smaaPass.dispose();
252
- }
253
- if (this._ssaaPass) {
254
- this._ssaaPass.dispose();
255
- }
256
- if (this._vignettePass) {
257
- this._vignettePass.dispose();
258
- }
259
- if (this._outlinePass) {
260
- this._outlinePass.dispose();
261
- }
262
- }
263
- _applyAoProps() {
264
- this._n8aoPass.configuration.aoRadius = this._aoOptions.aoRadius;
265
- this._n8aoPass.configuration.distanceFalloff = this._aoOptions.distanceFalloff;
266
- this._n8aoPass.configuration.transparencyAware = this._aoOptions.transparencyAware;
267
- this._n8aoPass.configuration.intensity = this._aoOptions.intensity;
268
- this._n8aoPass.configuration.aoSamples = this._aoOptions.aoSamples;
269
- this._n8aoPass.configuration.denoiseRadius = this._aoOptions.denoiseRadius;
270
- this._n8aoPass.configuration.denoiseSamples = this._aoOptions.denoiseSamples;
271
- this._n8aoPass.configuration.stencil = this._aoOptions.stencil;
272
- this._n8aoPass.configuration.renderMode = ['Combined', 'AO', 'No AO', 'Split', 'Split AO'].indexOf(this._aoOptions.renderMode);
273
- this._n8aoPass.configuration.color = new Color(`#${this._aoOptions.color}`);
274
- this._n8aoPass.configuration.screenSpaceRadius = this._aoOptions.screenSpaceRadius;
275
- this._n8aoPass.configuration.halfRes = this._aoOptions.halfRes;
276
- this._n8aoPass.configuration.depthAwareUpsampling = this._aoOptions.depthAwareUpsampling;
277
- this._n8aoPass.configuration.colorMultiply = this._aoOptions.colorMultiply;
278
- this._n8aoPass.configuration.accumulate = this._aoOptions.accumulate;
279
- this._n8aoPass.configuration.gammaCorrection = this._aoOptions.gammaCorrection;
280
- this.render();
281
- }
282
- _createGuiTaaPass() {
283
- const param = { TAAEnabled: '1', TAASampleLevel: 0 };
284
- this._postProcessingGui.add(param, 'TAAEnabled', {
285
- 'Disabled': '0',
286
- 'Enabled': '1'
287
- }).onFinishChange(() => {
288
- if (this._taaRenderPass) {
289
- this._taaRenderPass.enabled = (param.TAAEnabled === '1');
290
- }
291
- this.render();
292
- });
293
- this._postProcessingGui.add(param, 'TAASampleLevel', {
294
- 'Level 0: 1 Sample': 0,
295
- 'Level 1: 2 Samples': 1,
296
- 'Level 2: 4 Samples': 2,
297
- 'Level 3: 8 Samples': 3,
298
- 'Level 4: 16 Samples': 4,
299
- 'Level 5: 32 Samples': 5
300
- }).onFinishChange(() => {
301
- if (this._taaRenderPass) {
302
- this._taaRenderPass.sampleLevel = param.TAASampleLevel;
303
- }
304
- this.render();
305
- });
306
- }
307
- _showHideGui(show) {
308
- show ? this.showGui() : this.hideGui();
309
- }
310
- _createGui() {
311
- this._postProcessingGui.add(this._aoOptions, 'aoSamples', 1.0, 64.0, 1.0).onChange(() => this._applyAoProps());
312
- this._postProcessingGui.add(this._aoOptions, 'denoiseSamples', 1.0, 64.0, 1.0).onChange(() => this._applyAoProps());
313
- this._postProcessingGui.add(this._aoOptions, 'denoiseRadius', 0.0, 24.0, 0.01).onChange(() => this._applyAoProps());
314
- const aor = this._postProcessingGui.add(this._aoOptions, 'aoRadius', 1.0, 10.0, 0.01).onChange(() => this._applyAoProps());
315
- const df = this._postProcessingGui.add(this._aoOptions, 'distanceFalloff', 0.0, 10.0, 0.01).onChange(() => this._applyAoProps());
316
- this._postProcessingGui.add(this._aoOptions, 'screenSpaceRadius').onChange((value) => {
317
- if (value) {
318
- this._aoOptions.aoRadius = 48.0;
319
- this._aoOptions.distanceFalloff = 0.2;
320
- aor._min = 0;
321
- aor._max = 64;
322
- df._min = 0;
323
- df._max = 1;
324
- }
325
- else {
326
- this._aoOptions.aoRadius = 5.0;
327
- this._aoOptions.distanceFalloff = 1.0;
328
- aor._min = 1;
329
- aor._max = 10;
330
- df._min = 0;
331
- df._max = 10;
332
- }
333
- aor.updateDisplay();
334
- df.updateDisplay();
335
- this._applyAoProps();
336
- });
337
- const blendShaderParams = {
338
- mixRatio: 0.5
339
- };
340
- this._postProcessingGui.add(this._aoOptions, 'halfRes').onChange(() => this._applyAoProps());
341
- this._postProcessingGui.add(this._aoOptions, 'transparencyAware').onChange(() => this._applyAoProps());
342
- this._postProcessingGui.add(this._aoOptions, 'depthAwareUpsampling').onChange(() => this._applyAoProps());
343
- this._postProcessingGui.add(this._aoOptions, 'stencil').onChange(() => this._applyAoProps());
344
- this._postProcessingGui.add(this._aoOptions, 'intensity', 0.0, 10.0, 0.01).onChange(() => this._applyAoProps());
345
- this._postProcessingGui.addColor(this._aoOptions, 'color').onChange(() => this._applyAoProps());
346
- this._postProcessingGui.add(this._aoOptions, 'colorMultiply').onChange(() => this._applyAoProps());
347
- this._postProcessingGui.add(this._aoOptions, 'accumulate').onChange(() => this._applyAoProps());
348
- this._postProcessingGui.add(this._aoOptions, 'gammaCorrection').onChange(() => this._applyAoProps());
349
- this._postProcessingGui.add(this._aoOptions, 'renderMode', ['Combined', 'AO', 'No AO', 'Split', 'Split AO']).onChange(() => this._applyAoProps());
350
- this._postProcessingGui.add(blendShaderParams, 'mixRatio', 0.0, 10.0, 0.01).onChange(() => {
351
- this._blendShader.uniforms.mixRatio.value = blendShaderParams.mixRatio;
352
- this.render();
353
- });
354
- }
355
- _setErrorGlowSettings() {
356
- this._outlinePass.visibleEdgeColor.set('#e60002');
357
- this._outlinePass.hiddenEdgeColor.set('#e60002');
358
- this._outlinePass.edgeStrength = 4;
359
- this._outlinePass.edgeGlow = 1;
360
- this._outlinePass.edgeThickness = 1;
361
- this._outlinePass.pulsePeriod = 1.5;
362
- }
363
- _setSelectionGlowSettings() {
364
- this._outlinePass.visibleEdgeColor.set('#ffffff');
365
- this._outlinePass.hiddenEdgeColor.set('#ffffff');
366
- this._outlinePass.edgeStrength = 2;
367
- this._outlinePass.edgeGlow = 0.5;
368
- this._outlinePass.edgeThickness = 1.5;
369
- this._outlinePass.pulsePeriod = 0;
370
- }
371
- }
372
- PostProcessingService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: PostProcessingService, deps: [{ token: i1.ConfigurationService }, { token: i2.SettingsService }, { token: i3.AppEventService }, { token: i4.ScreenSizeAnalysisService }], target: i0.ɵɵFactoryTarget.Injectable });
373
- PostProcessingService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: PostProcessingService, providedIn: 'root' });
374
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: PostProcessingService, decorators: [{
375
- type: Injectable,
376
- args: [{ providedIn: 'root' }]
377
- }], ctorParameters: function () { return [{ type: i1.ConfigurationService }, { type: i2.SettingsService }, { type: i3.AppEventService }, { type: i4.ScreenSizeAnalysisService }]; } });
378
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG9zdC1wcm9jZXNzaW5nLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb25maWd1cmF0b3Ivc3JjL2xpYi9zZXJ2aWNlcy9wb3N0LXByb2Nlc3Npbmcuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFDLFVBQVUsRUFBWSxNQUFNLGVBQWUsQ0FBQztBQUNwRCxPQUFPLEVBQUMsS0FBSyxFQUFzQyxPQUFPLEVBQWdCLE1BQU0sT0FBTyxDQUFDO0FBQ3hGLE9BQU8sRUFBQyxjQUFjLEVBQUMsTUFBTSxrREFBa0QsQ0FBQztBQUNoRixPQUFPLEdBQUcsTUFBTSw0Q0FBNEMsQ0FBQztBQUc3RCxPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0sOENBQThDLENBQUM7QUFDeEUsT0FBTyxFQUFDLFVBQVUsRUFBQyxNQUFNLDhDQUE4QyxDQUFDO0FBRXhFLE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSw4Q0FBOEMsQ0FBQztBQUN4RSxPQUFPLEVBQUMsV0FBVyxFQUFDLE1BQU0sK0NBQStDLENBQUM7QUFDMUUsT0FBTyxFQUFDLGNBQWMsRUFBQyxNQUFNLDJDQUEyQyxDQUFDO0FBQ3pFLE9BQU8sRUFBQyxRQUFRLEVBQUMsTUFBTSw0Q0FBNEMsQ0FBQztBQUtwRSxPQUFPLEVBQUMsZ0JBQWdCLEVBQUMsTUFBTSxnQ0FBZ0MsQ0FBQztBQUVoRSxPQUFPLEVBQUMsV0FBVyxFQUFDLE1BQU0sdUJBQXVCLENBQUM7QUFDbEQsT0FBTyxFQUFDLFFBQVEsRUFBQyxNQUFNLE1BQU0sQ0FBQztBQUM5QixPQUFPLEVBQUMsY0FBYyxFQUFDLE1BQU0sa0RBQWtELENBQUM7Ozs7OztBQVNoRixNQUFNLE9BQU8scUJBQXFCO0lBcUVoQyxZQUNVLHFCQUEyQyxFQUMzQyxnQkFBaUMsRUFDakMsZ0JBQWlDLEVBQ2pDLG1CQUE4QztRQUg5QywwQkFBcUIsR0FBckIscUJBQXFCLENBQXNC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QWEsR0FBRyxDQUFDLENBQUM7UUFDcEMsSUFBSSxDQUFDLFlBQVksQ0FBQyxXQUFXLEdBQUcsR0FBRyxDQUFDO0lBQ3RDLENBQUM7SUFFTyx5QkFBeUI7UUFDL0IsSUFBSSxDQUFDLFlBQVksQ0FBQyxnQkFBZ0IsQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDbEQsSUFBSSxDQUFDLFlBQVksQ0FBQyxlQUFlLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQ2pELElBQUksQ0FBQyxZQUFZLENBQUMsWUFBWSxHQUFHLENBQUMsQ0FBQztRQUNuQyxJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVEsR0FBRyxHQUFHLENBQUM7UUFDakMsSUFBSSxDQUFDLFlBQVksQ0FBQyxhQUFhLEdBQUcsR0FBRyxDQUFDO1FBQ3RDLElBQUksQ0FBQyxZQUFZLENBQUMsV0FBVyxHQUFHLENBQUMsQ0FBQztJQUNwQyxDQUFDOzttSEEvWlUscUJBQXFCO3VIQUFyQixxQkFBcUIsY0FEVCxNQUFNOzRGQUNsQixxQkFBcUI7a0JBRGpDLFVBQVU7bUJBQUMsRUFBQyxVQUFVLEVBQUUsTUFBTSxFQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtJbmplY3RhYmxlLCBPbkRlc3Ryb3l9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQge0NvbG9yLCBPYmplY3QzRCwgUGVyc3BlY3RpdmVDYW1lcmEsIFNjZW5lLCBWZWN0b3IyLCBXZWJHTFJlbmRlcmVyfSBmcm9tICd0aHJlZSc7XHJcbmltcG9ydCB7RWZmZWN0Q29tcG9zZXJ9IGZyb20gJ3RocmVlL2V4YW1wbGVzL2pzbS9wb3N0cHJvY2Vzc2luZy9FZmZlY3RDb21wb3Nlcic7XHJcbmltcG9ydCBHVUkgZnJvbSAndGhyZWUvZXhhbXBsZXMvanNtL2xpYnMvbGlsLWd1aS5tb2R1bGUubWluJztcclxuaW1wb3J0IHtTdWJzY3JpcHRpb259IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQge1RBQVJlbmRlclBhc3N9IGZyb20gJ3RocmVlL2V4YW1wbGVzL2pzbS9wb3N0cHJvY2Vzc2luZy9UQUFSZW5kZXJQYXNzJztcclxuaW1wb3J0IHtPdXRwdXRQYXNzfSBmcm9tICd0aHJlZS9leGFtcGxlcy9qc20vcG9zdHByb2Nlc3NpbmcvT3V0cHV0UGFzcyc7XHJcbmltcG9ydCB7UmVuZGVyUGFzc30gZnJvbSAndGhyZWUvZXhhbXBsZXMvanNtL3Bvc3Rwcm9jZXNzaW5nL1JlbmRlclBhc3MnO1xyXG5pbXBvcnQge0ZYQUFTaGFkZXJ9IGZyb20gJ3RocmVlL2V4YW1wbGVzL2pzbS9zaGFkZXJzL0ZYQUFTaGFkZXInO1xyXG5pbXBvcnQge1NoYWRlclBhc3N9IGZyb20gJ3RocmVlL2V4YW1wbGVzL2pzbS9wb3N0cHJvY2Vzc2luZy9TaGFkZXJQYXNzJztcclxuaW1wb3J0IHtPdXRsaW5lUGFzc30gZnJvbSAndGhyZWUvZXhhbXBsZXMvanNtL3Bvc3Rwcm9jZXNzaW5nL091dGxpbmVQYXNzJztcclxuaW1wb3J0IHtWaWduZXR0ZVNoYWRlcn0gZnJvbSAndGhyZWUvZXhhbXBsZXMvanNtL3NoYWRlcnMvVmlnbmV0dGVTaGFkZXInO1xyXG5pbXBvcnQge1NNQUFQYXNzfSBmcm9tICd0aHJlZS9leGFtcGxlcy9qc20vcG9zdHByb2Nlc3NpbmcvU01BQVBhc3MnO1xyXG5pbXBvcnQge1NldHRpbmdzU2VydmljZX0gZnJvbSAnLi9zZXR0aW5ncy5zZXJ2aWNlJztcclxuaW1wb3J0IHtBcHBFdmVudFNlcnZpY2V9IGZyb20gJy4vYXBwLWV2ZW50LnNlcnZpY2UnO1xyXG5pbXBvcnQge0NvbmZpZ3VyYXRpb25EYXRhfSBmcm9tICcuLi9pbnRlcmZhY2VzL2NvbmZpZ3VyYXRpb24tZGF0YS5pbnRlcmZhY2UnO1xyXG5pbXBvcnQge0NvbmZpZ3VyYXRpb25TZXJ2aWNlfSBmcm9tICcuL2NvbmZpZ3VyYXRpb24uc2VydmljZSc7XHJcbmltcG9ydCB7Q29uZmlndXJhdGlvbktleX0gZnJvbSAnLi4vZW51bS9jb25maWd1cmF0aW9uLWtleS5lbnVtJztcclxuaW1wb3J0IHtEZXZpY2VUaWVyfSBmcm9tICcuLi9lbnVtL2RldmljZS10aWVyLmVudW0nO1xyXG5pbXBvcnQge0RldmljZVV0aWxzfSBmcm9tICcuLi91dGlscy9kZXZpY2UudXRpbHMnO1xyXG5pbXBvcnQge044QU9QYXNzfSBmcm9tICduOGFvJztcclxuaW1wb3J0IHtTU0FBUmVuZGVyUGFzc30gZnJvbSAndGhyZWUvZXhhbXBsZXMvanNtL3Bvc3Rwcm9jZXNzaW5nL1NTQUFSZW5kZXJQYXNzJztcclxuaW1wb3J0IHtBb09wdGlvbnN9IGZyb20gJy4uL2ludGVyZmFjZXMvYW8tb3B0aW9ucy5pbnRlcmZhY2UnO1xyXG5pbXBvcnQge0FhT3B0aW9uc30gZnJvbSAnLi4vaW50ZXJmYWNlcy9hYS1vcHRpb25zLmludGVyZmFjZSc7XHJcbmltcG9ydCB7VmlnbmV0dGVPcHRpb25zfSBmcm9tICcuLi9pbnRlcmZhY2VzL3ZpZ25ldHRlLW9wdGlvbnMuaW50ZXJmYWNlJztcclxuaW1wb3J0IHtTZXR0aW5nfSBmcm9tICcuLi9tb2RlbC9zZXR0aW5ncyc7XHJcbmltcG9ydCB7TmF2aWdhdG9yVHlwZX0gZnJvbSAnLi4vZW51bS9uYXZpZ2F0b3ItdHlwZS5lbnVtJztcclxuaW1wb3J0IHtTY3JlZW5TaXplQW5hbHlzaXNTZXJ2aWNlfSBmcm9tICcuL3NjcmVlbi1zaXplLWFuYWx5c2lzLnNlcnZpY2UnO1xyXG5cclxuQEluamVjdGFibGUoe3Byb3ZpZGVkSW46ICdyb290J30pXHJcbmV4cG9ydCBjbGFzcyBQb3N0UHJvY2Vzc2luZ1NlcnZpY2UgaW1wbGVtZW50cyBPbkRlc3Ryb3kge1xyXG4gIHByaXZhdGUgX2FvRW5hYmxlZDogYm9vbGVhbjtcclxuICBwcml2YXRlIF9hYUVuYWJsZWQ6IGJvb2xlYW47XHJcbiAgcHJpdmF0ZSBfdmlnbmV0dGVFbmFibGVkOiBib29sZWFuO1xyXG4gIHByaXZhdGUgX3ZpZ25ldHRlT2Zmc2V0OiBudW1iZXIgPSAxO1xyXG4gIHByaXZhdGUgX3ZpZ25ldHRlRGFya25lc3M6IG51bWJlciA9IDEuNTtcclxuXHJcbiAgcHJpdmF0ZSBfY29tcG9zZXI6IEVmZmVjdENvbXBvc2VyO1xyXG4gIHByaXZhdGUgX244YW9QYXNzOiBOOEFPUGFzcztcclxuICBwcml2YXRlIF9yZW5kZXJQYXNzOiBSZW5kZXJQYXNzO1xyXG4gIHByaXZhdGUgX291dHB1dFBhc3M6IE91dHB1dFBhc3M7XHJcbiAgcHJpdmF0ZSBfZnhhYVBhc3M6IFNoYWRlclBhc3M7XHJcbiAgcHJpdmF0ZSBfc21hYVBhc3M6IFNNQUFQYXNzO1xyXG4gIHByaXZhdGUgX3NzYWFQYXNzOiBTU0FBUmVuZGVyUGFzcztcclxuICBwcml2YXRlIF90YWFSZW5kZXJQYXNzOiBUQUFSZW5kZXJQYXNzO1xyXG4gIHByaXZhdGUgX3ZpZ25ldHRlUGFzczogU2hhZGVyUGFzcztcclxuICBwcml2YXRlIF9vdXRsaW5lUGFzczogT3V0bGluZVBhc3M7XHJcbiAgcHJpdmF0ZSBfc2NlbmU6IFNjZW5lO1xyXG4gIHByaXZhdGUgX3JlbmRlcmVyOiBXZWJHTFJlbmRlcmVyO1xyXG4gIHByaXZhdGUgX2NhbWVyYTogUGVyc3BlY3RpdmVDYW1lcmE7XHJcbiAgcHJpdmF0ZSBfYmxlbmRTaGFkZXI6IFNoYWRlclBhc3M7XHJcbiAgcHJpdmF0ZSBfd2lkdGg6IG51bWJlcjtcclxuICBwcml2YXRlIF9oZWlnaHQ6IG51bWJlcjtcclxuICBwcml2YXRlIF9vdXRsaW5lUGFzc0FzRXJyb3I6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBwcml2YXRlIF9oaWRlT3V0bGluZVRpbWVyOiBhbnk7XHJcbiAgcHJpdmF0ZSBfaGlkZU91dGxpbmVUaW1lb3V0OiBudW1iZXIgPSAxMDAwMDtcclxuICBwcml2YXRlIF9zdGFuZGFsb25lOiBib29sZWFuID0gZmFsc2U7XHJcbiAgcHJpdmF0ZSBfY2FtZXJhTW92ZWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgcHJpdmF0ZSBfcG9zdFByb2Nlc3NpbmdHdWk6IEdVSTtcclxuICBwcml2YXRlIF9zdWJzOiBTdWJzY3JpcHRpb25bXSA9IFtdO1xyXG5cclxuICBwcml2YXRlIF9hb0RlZmF1bHRPcHRpb25zOiBBb09wdGlvbnMgPSB7XHJcbiAgICBhb1NhbXBsZXM6IDMyLjAsXHJcbiAgICBkZW5vaXNlU2FtcGxlczogOC4wLFxyXG4gICAgZGVub2lzZVJhZGl1czogMjQuMCxcclxuICAgIGFvUmFkaXVzOiA1LjAsXHJcbiAgICBkaXN0YW5jZUZhbGxvZmY6IDEuMCxcclxuICAgIHNjcmVlblNwYWNlUmFkaXVzOiBmYWxzZSxcclxuICAgIGhhbGZSZXM6IGZhbHNlLFxyXG4gICAgZGVwdGhBd2FyZVVwc2FtcGxpbmc6IHRydWUsXHJcbiAgICB0cmFuc3BhcmVuY3lBd2FyZTogdHJ1ZSxcclxuICAgIGludGVuc2l0eTogMy4wLFxyXG4gICAgcmVuZGVyTW9kZTogJ0NvbWJpbmVkJyxcclxuICAgIGNvbG9yOiAnMDAwMDAwJyxcclxuICAgIGNvbG9yTXVsdGlwbHk6IHRydWUsXHJcbiAgICBzdGVuY2lsOiB0cnVlLFxyXG4gICAgYWNjdW11bGF0ZTogZmFsc2UsXHJcbiAgICBnYW1tYUNvcnJlY3Rpb246IGZhbHNlXHJcbiAgfTtcclxuXHJcbiAgcHJpdmF0ZSBfYW9PcHRpb25zOiBBb09wdGlvbnMgPSB0aGlzLl9hb0RlZmF1bHRPcHRpb25zO1xyXG5cclxuICBwcml2YXRlIF9hYURlZmF1bHRPcHRpb25zOiBBYU9wdGlvbnMgPSB7XHJcbiAgICBzYW1wbGVMZXZlbDogNCxcclxuICAgIHVuYmlhc2VkOiBmYWxzZVxyXG4gIH07XHJcbiAgcHJpdmF0ZSBfYWFPcHRpb25zOiBBYU9wdGlvbnMgPSB0aGlzLl9hYURlZmF1bHRPcHRpb25zO1xyXG5cclxuICBwcml2YXRlIF92aWduZXR0ZURlZmF1bHRPcHRpb25zOiBWaWduZXR0ZU9wdGlvbnMgPSB7XHJcbiAgICB2aWduZXR0ZU9mZnNldDogMSxcclxuICAgIHZpZ25ldHRlRGFya25lc3M6IDEuNVxyXG4gIH07XHJcbiAgcHJpdmF0ZSBfdmlnbmV0dGVPcHRpb25zOiBWaWduZXR0ZU9wdGlvbnMgPSB0aGlzLl92aWduZXR0ZURlZmF1bHRPcHRpb25zO1xyXG5cclxuICBwdWJsaWMgYW9FbmFibGVkOiBib29sZWFuO1xyXG4gIHB1YmxpYyBhYUVuYWJsZWQ6IGJvb2xlYW47XHJcbiAgcHVibGljIHZpZ25ldHRlRW5hYmxlZDogYm9vbGVhbjtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIF9jb25maWd1cmF0aW9uU2VydmljZTogQ29uZmlndXJhdGlvblNlcnZpY2UsXHJcbiAgICBwcml2YXRlIF9zZXR0aW5nc1NlcnZpY2U6IFNldHRpbmdzU2VydmljZSxcclxuICAgIHByaXZhdGUgX2FwcEV2ZW50U2VydmljZTogQXBwRXZlbnRTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBfc2NyZWVuU2l6ZUFuYWx5c2lzOiBTY3JlZW5TaXplQW5hbHlzaXNTZXJ2aWNlXHJcbiAgKSB7XHJcbiAgICB0aGlzLl9zdWJzLnB1c2goXHJcbiAgICAgIHRoaXMuX2NvbmZpZ3VyYXRpb25TZXJ2aWNlLm9uQ2hhbmdlLnN1YnNjcmliZSgoY2hhbmdlZDogQ29uZmlndXJhdGlvbkRhdGEpID0+IHtcclxuICAgICAgICBpZiAoQ29uZmlndXJhdGlvbktleS5TaG93UG9zdFByb2Nlc3NpbmdTZXR0aW5ncyBpbiBjaGFuZ2VkKSB7XHJcbiAgICAgICAgICB0aGlzLl9zaG93SGlkZUd1aShjaGFuZ2VkW0NvbmZpZ3VyYXRpb25LZXkuU2hvd1Bvc3RQcm9jZXNzaW5nU2V0dGluZ3NdKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pLFxyXG4gICAgICB0aGlzLl9zZXR0aW5nc1NlcnZpY2UubGlnaHRTZXR0aW5nc0xvYWRlZC5zdWJzY3JpYmUoKHNldHRpbmdzOiBTZXR0aW5nW10pID0+IHtcclxuICAgICAgICBpZiAoc2V0dGluZ3MgJiYgc2V0dGluZ3MubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgY29uc3QgbmF2aWdhdG9yVHlwZTogTmF2aWdhdG9yVHlwZSA9IHRoaXMuX3NjcmVlblNpemVBbmFseXNpcy5uYXZpZ2F0b3JUeXBlKCk7XHJcbiAgICAgICAgICBsZXQgc2V0dGluZzogU2V0dGluZyA9IHNldHRpbmdzLmZpbmQoKHByZXNldCkgPT4gcHJlc2V0Lm5hdmlnYXRvclR5cGUgPT09IG5hdmlnYXRvclR5cGUgJiYgcHJlc2V0LmRlZmF1bHQgJiYgcHJlc2V0LnN0YW5kYWxvbmUgPT09IHRoaXMuX3N0YW5kYWxvbmUpO1xyXG4gICAgICAgICAgaWYgKCFzZXR0aW5nKSB7XHJcbiAgICAgICAgICAgIHNldHRpbmcgPSBzZXR0aW5ncy5maW5kKChwcmVzZXQpID0+IHByZXNldC5kZWZhdWx0KTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGlmICghc2V0dGluZykge1xyXG4gICAgICAgICAgICBzZXR0aW5nID0gc2V0dGluZ3NbMF07XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBpZiAoc2V0dGluZykge1xyXG4gICAgICAgICAgICB0aGlzLl9sb2FkU2V0dGluZyhzZXR0aW5nKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH0pLFxyXG4gICAgICB0aGlzLl9hcHBFdmVudFNlcnZpY2Uuc2hvd091dGxpbmUuc3Vic2NyaWJlKChvYmplY3Q6IE9iamVjdDNEKSA9PiB0aGlzLl9zaG93T3V0bGluZShvYmplY3QpKSxcclxuICAgICAgdGhpcy5fYXBwRXZlbnRTZXJ2aWNlLnNob3dFcnJvck91dGxpbmUuc3Vic2NyaWJlKChvYmplY3Q6IE9iamVjdDNEKSA9PiB0aGlzLl9zaG93RXJyb3JPdXRsaW5lKG9iamVjdCkpLFxyXG4gICAgICB0aGlzLl9hcHBFdmVudFNlcnZpY2UuaGlkZU91dGxpbmUuc3Vic2NyaWJlKCgpID0+IHRoaXMuX2hpZGVPdXRsaW5lKCkpXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgbmdPbkRlc3Ryb3koKSB7XHJcbiAgICB0aGlzLl9zdWJzLmZvckVhY2gocyA9PiBzLnVuc3Vic2NyaWJlKCkpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGluaXQocmVuZGVyZXI6IFdlYkdMUmVuZGVyZXIsIHNjZW5lOiBTY2VuZSwgY2FtZXJhOiBQZXJzcGVjdGl2ZUNhbWVyYSwgd2lkdGg6IG51bWJlciwgaGVpZ2h0OiBudW1iZXIsIHN0YW5kYWxvbmU6IGJvb2xlYW4pOiB2b2lkIHtcclxuICAgIHRoaXMuX3N0YW5kYWxvbmUgPSBzdGFuZGFsb25lO1xyXG4gICAgdGhpcy5fcmVuZGVyZXIgPSByZW5kZXJlcjtcclxuICAgIHRoaXMuX3NjZW5lID0gc2NlbmU7XHJcbiAgICB0aGlzLl9jYW1lcmEgPSBjYW1lcmE7XHJcbiAgICB0aGlzLl93aWR0aCA9IHdpZHRoO1xyXG4gICAgdGhpcy5faGVpZ2h0ID0gaGVpZ2h0O1xyXG4gICAgdGhpcy5fcG9zdFByb2Nlc3NpbmdHdWkgPSBuZXcgR1VJKCk7XHJcbiAgICB0aGlzLl9wb3N0UHJvY2Vzc2luZ0d1aS5oaWRlKCk7XHJcbiAgICB0aGlzLl9pbml0Q29tcG9zZXIoKTtcclxuICAgIHRoaXMuX2NyZWF0ZUd1aSgpO1xyXG4gICAgdGhpcy5fY3JlYXRlR3VpVGFhUGFzcygpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHNldFNpemUod2lkdGg6IG51bWJlciwgaGVpZ2h0OiBudW1iZXIsIGZvcmNlOiBib29sZWFuID0gZmFsc2UpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLl93aWR0aCA9PT0gd2lkdGggJiYgdGhpcy5faGVpZ2h0ID09PSBoZWlnaHQgJiYgIWZvcmNlKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIHRoaXMuX3dpZHRoID0gd2lkdGg7XHJcbiAgICB0aGlzLl9oZWlnaHQgPSBoZWlnaHQ7XHJcbiAgICBpZiAodGhpcy5fY29tcG9zZXIpIHtcclxuICAgICAgdGhpcy5fY29tcG9zZXIuc2V0U2l6ZSh3aWR0aCwgaGVpZ2h0KTtcclxuICAgIH1cclxuICAgIGNvbnN0IHByOiBudW1iZXIgPSB0aGlzLl9yZW5kZXJlci5nZXRQaXhlbFJhdGlvKCk7XHJcbiAgICBpZiAodGhpcy5fbjhhb1Bhc3MpIHtcclxuICAgICAgdGhpcy5fbjhhb1Bhc3Muc2V0U2l6ZSh0aGlzLl93aWR0aCAqIHByLCB0aGlzLl9oZWlnaHQgKiBwcik7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRoaXMuX3NtYWFQYXNzKSB7XHJcbiAgICAgIHRoaXMuX3NtYWFQYXNzLnNldFNpemUodGhpcy5fd2lkdGggKiBwciwgdGhpcy5faGVpZ2h0ICogcHIpO1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMuX3NzYWFQYXNzKSB7XHJcbiAgICAgIHRoaXMuX3NzYWFQYXNzLnNldFNpemUodGhpcy5fd2lkdGggKiBwciwgdGhpcy5faGVpZ2h0ICogcHIpO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLl9vdXRsaW5lUGFzcykge1xyXG4gICAgICB0aGlzLl9vdXRsaW5lUGFzcy5zZXRTaXplKHRoaXMuX3dpZHRoICogcHIsIHRoaXMuX2hlaWdodCAqIHByKTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLl91cGRhdGVBQVNpemUoKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyByZW5kZXIoKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5fY29tcG9zZXIpIHtcclxuICAgICAgdGhpcy5fY29tcG9zZXIucmVuZGVyKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgY2FtZXJhTW92ZW1lbnRDaGFuZ2VkKCk6IHZvaWQge1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHNob3dHdWkoKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5fcG9zdFByb2Nlc3NpbmdHdWkpIHtcclxuICAgICAgdGhpcy5fcG9zdFByb2Nlc3NpbmdHdWkuc2hvdyh0cnVlKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBoaWRlR3VpKCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuX3Bvc3RQcm9jZXNzaW5nR3VpKSB7XHJcbiAgICAgIHRoaXMuX3Bvc3RQcm9jZXNzaW5nR3VpLmhpZGUoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBmb3JjZVJlbmRlckNhbnZhcygpOiB2b2lkIHtcclxuICAgIHRoaXMucmVuZGVyKCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9sb2FkU2V0dGluZyhzZXR0aW5nOiBTZXR0aW5nKTogdm9pZCB7XHJcbiAgICBpZiAoc2V0dGluZyAmJiBzZXR0aW5nLnBvc3RQcm9jZXNzaW5nKSB7XHJcbiAgICAgIHRoaXMuYW9FbmFibGVkID0gc2V0dGluZy5wb3N0UHJvY2Vzc2luZy5hb0VuYWJsZWQ7XHJcbiAgICAgIHRoaXMuYWFFbmFibGVkID0gc2V0dGluZy5wb3N0UHJvY2Vzc2luZy5hYUVuYWJsZWQ7XHJcbiAgICAgIHRoaXMudmlnbmV0dGVFbmFibGVkID0gc2V0dGluZy5wb3N0UHJvY2Vzc2luZy52aWduZXR0ZUVuYWJsZWQ7XHJcbiAgICAgIGlmIChzZXR0aW5nLnBvc3RQcm9jZXNzaW5nLmFvT3B0aW9ucykge1xyXG4gICAgICAgIHRoaXMuX2FvT3B0aW9ucyA9IHsuLi50aGlzLl9hb0RlZmF1bHRPcHRpb25zLCAuLi5zZXR0aW5nLnBvc3RQcm9jZXNzaW5nLmFvT3B0aW9uc307XHJcbiAgICAgIH1cclxuICAgICAgaWYgKHNldHRpbmcucG9zdFByb2Nlc3NpbmcuYWFPcHRpb25zKSB7XHJcbiAgICAgICAgdGhpcy5fYWFPcHRpb25zID0gey4uLnRoaXMuX2FhRGVmYXVsdE9wdGlvbnMsIC4uLnNldHRpbmcucG9zdFByb2Nlc3NpbmcuYWFPcHRpb25zfTtcclxuICAgICAgfVxyXG4gICAgICBpZiAoc2V0dGluZy5wb3N0UHJvY2Vzc2luZy52aWduZXR0ZU9wdGlvbnMpIHtcclxuICAgICAgICB0aGlzLl92aWduZXR0ZU9wdGlvbnMgPSB7Li4udGhpcy5fdmlnbmV0dGVEZWZhdWx0T3B0aW9ucywgLi4uc2V0dGluZy5wb3N0UHJvY2Vzc2luZy52aWduZXR0ZU9wdGlvbnN9O1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuX2luaXRDb21wb3NlcigpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfc2hvd0Vycm9yT3V0bGluZShpdGVtOiBPYmplY3QzRCk6IHZvaWQge1xyXG4gICAgaWYgKCF0aGlzLl9vdXRsaW5lUGFzc0FzRXJyb3IpIHtcclxuICAgICAgdGhpcy5fc2V0RXJyb3JHbG93U2V0dGluZ3MoKTtcclxuICAgICAgdGhpcy5fb3V0bGluZVBhc3NBc0Vycm9yID0gdHJ1ZTtcclxuICAgIH1cclxuICAgIHRoaXMuX291dGxpbmVQYXNzLnNlbGVjdGVkT2JqZWN0cyA9IFtpdGVtXTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgYXN5bmMgX3Nob3dPdXRsaW5lKGl0ZW06IE9iamVjdDNEKTogUHJvbWlzZTx2b2lkPiB7XHJcbiAgICBjbGVhclRpbWVvdXQodGhpcy5faGlkZU91dGxpbmVUaW1lcik7XHJcbiAgICBpZiAodGhpcy5fb3V0bGluZVBhc3NBc0Vycm9yKSB7XHJcbiAgICAgIHRoaXMuX3NldFNlbGVjdGlvbkdsb3dTZXR0aW5ncygpO1xyXG4gICAgICB0aGlzLl9vdXRsaW5lUGFzc0FzRXJyb3IgPSBmYWxzZTtcclxuICAgIH1cclxuICAgIHRoaXMuX291dGxpbmVQYXNzLnNlbGVjdGVkT2JqZWN0cyA9IFtpdGVtXTtcclxuICAgIC8vIGF3YWl0IHRoaXMuX2FuaW1hdGVkT3V0bGluZVN0cmVuZ3RoKDAsIDMwMCk7XHJcbiAgICAvLyByZW1vdmUgYWZ0ZXIgeCBhbW91bnQgb2YgbXNcclxuICAgIHRoaXMuX2hpZGVPdXRsaW5lVGltZXIgPSBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgdGhpcy5faGlkZU91dGxpbmUoKTtcclxuICAgIH0sIHRoaXMuX2hpZGVPdXRsaW5lVGltZW91dCk7XHJcbiAgICB0aGlzLnJlbmRlcigpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfaGlkZU91dGxpbmUoKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5fb3V0bGluZVBhc3Muc2VsZWN0ZWRPYmplY3RzLmxlbmd0aCA+IDApIHtcclxuICAgICAgLy8gYXdhaXQgdGhpcy5fYW5pbWF0ZWRPdXRsaW5lU3RyZW5ndGgoMzAwLCAwKTtcclxuICAgICAgdGhpcy5fb3V0bGluZVBhc3Muc2VsZWN0ZWRPYmplY3RzID0gW107XHJcbiAgICAgIHRoaXMucmVuZGVyKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF91cGRhdGVBQVNpemUoKTogdm9pZCB7XHJcbiAgICBjb25zdCBmeGFhVW5pZm9ybSA9IHRoaXMuX2Z4YWFQYXNzICYmIHRoaXMuX2Z4YWFQYXNzLm1hdGVyaWFsICYmIHRoaXMuX2Z4YWFQYXNzLm1hdGVyaWFsLnVuaWZvcm1zICYmIHRoaXMuX2Z4YWFQYXNzLm1hdGVyaWFsLnVuaWZvcm1zLnJlc29sdXRpb24gPyB0aGlzLl9meGFhUGFzcy5tYXRlcmlhbC51bmlmb3Jtcy5yZXNvbHV0aW9uLnZhbHVlIDogbnVsbDtcclxuICAgIGNvbnN0IHByOiBudW1iZXIgPSB0aGlzLl9yZW5kZXJlci5nZXRQaXhlbFJhdGlvKCk7XHJcbiAgICBpZiAoZnhhYVVuaWZvcm0pIHtcclxuICAgICAgZnhhYVVuaWZvcm0uc2V0KDEgLyBNYXRoLm1heCgxLCB0aGlzLl93aWR0aCAqIHByKSwgMSAvIE1hdGgubWF4KDEsIHRoaXMuX2hlaWdodCAqIHByKSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9pbml0Q29tcG9zZXIoKTogdm9pZCB7XHJcbiAgICBpZiAoIXRoaXMuX3JlbmRlcmVyIHx8ICF0aGlzLl9zY2VuZSB8fCAhdGhpcy5fY2FtZXJhKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIHRoaXMuX2NsZWFuVXAoKTtcclxuICAgIGNvbnN0IGRldmljZVRpZXI6IERldmljZVRpZXIgPSBEZXZpY2VVdGlscy5HZXREZXZpY2VUaWVyKCk7XHJcblxyXG4gICAgdGhpcy5fY29tcG9zZXIgPSBuZXcgRWZmZWN0Q29tcG9zZXIodGhpcy5fcmVuZGVyZXIpO1xyXG4gICAgdGhpcy5fcmVuZGVyUGFzcyA9IG5ldyBSZW5kZXJQYXNzKHRoaXMuX3NjZW5lLCB0aGlzLl9jYW1lcmEpO1xyXG4gICAgdGhpcy5fY29tcG9zZXIuYWRkUGFzcyh0aGlzLl9yZW5kZXJQYXNzKTtcclxuXHJcbiAgICBpZiAodGhpcy5fYW9FbmFibGVkKSB7XHJcbiAgICAgIHRoaXMuX244YW9QYXNzID0gbmV3IE44QU9QYXNzKHRoaXMuX3NjZW5lLCB0aGlzLl9jYW1lcmEsIHRoaXMuX3dpZHRoLCB0aGlzLl9oZWlnaHQpO1xyXG4gICAgICB0aGlzLl9hcHBseUFvUHJvcHMoKTtcclxuICAgICAgdGhpcy5fY29tcG9zZXIuYWRkUGFzcyh0aGlzLl9uOGFvUGFzcyk7XHJcbiAgICAgIGlmICh0aGlzLmFhRW5hYmxlZCkge1xyXG4gICAgICAgIHRoaXMuX3NtYWFQYXNzID0gbmV3IFNNQUFQYXNzKCk7XHJcbiAgICAgICAgdGhpcy5fY29tcG9zZXIuYWRkUGFzcyh0aGlzLl9zbWFhUGFzcyk7XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGlmICh0aGlzLmFhRW5hYmxlZCkge1xyXG4gICAgICAgIHRoaXMuX3NzYWFQYXNzID0gbmV3IFNTQUFSZW5kZXJQYXNzKHRoaXMuX3NjZW5lLCB0aGlzLl9jYW1lcmEpO1xyXG4gICAgICAgIHRoaXMuX3NzYWFQYXNzLnNhbXBsZUxldmVsID0gdGhpcy5fYWFPcHRpb25zLnNhbXBsZUxldmVsO1xyXG4gICAgICAgIHRoaXMuX3NzYWFQYXNzLnVuYmlhc2VkID0gdGhpcy5fYWFPcHRpb25zLnVuYmlhc2VkO1xyXG4gICAgICAgIHRoaXMuX2NvbXBvc2VyLmFkZFBhc3ModGhpcy5fc3NhYVBhc3MpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5fb3V0bGluZVBhc3MgPSBuZXcgT3V0bGluZVBhc3MobmV3IFZlY3RvcjIodGhpcy5fd2lkdGgsIHRoaXMuX2hlaWdodCksIHRoaXMuX3NjZW5lLCB0aGlzLl9jYW1lcmEpO1xyXG4gICAgdGhpcy5fc2V0U2VsZWN0aW9uR2xvd1NldHRpbmdzKCk7XHJcbiAgICB0aGlzLl9jb21wb3Nlci5hZGRQYXNzKHRoaXMuX291dGxpbmVQYXNzKTtcclxuXHJcbiAgICBpZiAodGhpcy52aWduZXR0ZUVuYWJsZWQpIHtcclxuICAgICAgdGhpcy5fdmlnbmV0dGVQYXNzID0gbmV3IFNoYWRlclBhc3MoVmlnbmV0dGVTaGFkZXIpO1xyXG4gICAgICB0aGlzLl92aWduZXR0ZVBhc3MudW5pZm9ybXMub2Zmc2V0LnZhbHVlID0gdGhpcy5fdmlnbmV0dGVPcHRpb25zLnZpZ25ldHRlT2Zmc2V0O1xyXG4gICAgICB0aGlzLl92aWduZXR0ZVBhc3MudW5pZm9ybXMuZGFya25lc3MudmFsdWUgPSB0aGlzLl92aWduZXR0ZU9wdGlvbnMudmlnbmV0dGVEYXJrbmVzcztcclxuICAgICAgdGhpcy5fY29tcG9zZXIuYWRkUGFzcyh0aGlzLl92aWduZXR0ZVBhc3MpO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuX291dHB1dFBhc3MgPSBuZXcgT3V0cHV0UGFzcygpO1xyXG4gICAgdGhpcy5fY29tcG9zZXIuYWRkUGFzcyh0aGlzLl9vdXRwdXRQYXNzKTtcclxuXHJcbiAgICB0aGlzLnNldFNpemUodGhpcy5fd2lkdGgsIHRoaXMuX2hlaWdodCwgdHJ1ZSk7XHJcbiAgICB0aGlzLnJlbmRlcigpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfY2xlYW5VcCgpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLl9jb21wb3Nlcikge1xyXG4gICAgICB0aGlzLl9jb21wb3Nlci5kaXNwb3NlKCk7XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5fcmVuZGVyUGFzcykge1xyXG4gICAgICB0aGlzLl9yZW5kZXJQYXNzLmRpc3Bvc2UoKTtcclxuICAgIH1cclxuICAgIGlmICh0aGlzLl9uOGFvUGFzcykge1xyXG4gICAgICB0aGlzLl9uOGFvUGFzcy5kaXNwb3NlKCk7XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5fZnhhYVBhc3MpIHtcclxuICAgICAgdGhpcy5fZnhhYVBhc3MuZGlzcG9zZSgpO1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMuX3NtYWFQYXNzKSB7XHJcbiAgICAgIHRoaXMuX3NtYWFQYXNzLmRpc3Bvc2UoKTtcclxuICAgIH1cclxuICAgIGlmICh0aGlzLl9zc2FhUGFzcykge1xyXG4gICAgICB0aGlzLl9zc2FhUGFzcy5kaXNwb3NlKCk7XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5fdmlnbmV0dGVQYXNzKSB7XHJcbiAgICAgIHRoaXMuX3ZpZ25ldHRlUGFzcy5kaXNwb3NlKCk7XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5fb3V0bGluZVBhc3MpIHtcclxuICAgICAgdGhpcy5fb3V0bGluZVBhc3MuZGlzcG9zZSgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfYXBwbHlBb1Byb3BzKCk6IHZvaWQge1xyXG4gICAgdGhpcy5fbjhhb1Bhc3MuY29uZmlndXJhdGlvbi5hb1JhZGl1cyA9IHRoaXMuX2FvT3B0aW9ucy5hb1JhZGl1cztcclxuICAgIHRoaXMuX244YW9QYXNzLmNvbmZpZ3VyYXRpb24uZGlzdGFuY2VGYWxsb2ZmID0gdGhpcy5fYW9PcHRpb25zLmRpc3RhbmNlRmFsbG9mZjtcclxuICAgIHRoaXMuX244YW9QYXNzLmNvbmZpZ3VyYXRpb24udHJhbnNwYXJlbmN5QXdhcmUgPSB0aGlzLl9hb09wdGlvbnMudHJhbnNwYXJlbmN5QXdhcmU7XHJcbiAgICB0aGlzLl9uOGFvUGFzcy5jb25maWd1cmF0aW9uLmludGVuc2l0eSA9IHRoaXMuX2FvT3B0aW9ucy5pbnRlbnNpdHk7XHJcbiAgICB0aGlzLl9uOGFvUGFzcy5jb25maWd1cmF0aW9uLmFvU2FtcGxlcyA9IHRoaXMuX2FvT3B0aW9ucy5hb1NhbXBsZXM7XHJcbiAgICB0aGlzLl9uOGFvUGFzcy5jb25maWd1cmF0aW9uLmRlbm9pc2VSYWRpdXMgPSB0aGlzLl9hb09wdGlvbnMuZGVub2lzZVJhZGl1cztcclxuICAgIHRoaXMuX244YW9QYXNzLmNvbmZpZ3VyYXRpb24uZGVub2lzZVNhbXBsZXMgPSB0aGlzLl9hb09wdGlvbnMuZGVub2lzZVNhbXBsZXM7XHJcbiAgICB0aGlzLl9uOGFvUGFzcy5jb25maWd1cmF0aW9uLnN0ZW5jaWwgPSB0aGlzLl9hb09wdGlvbnMuc3RlbmNpbDtcclxuICAgIHRoaXMuX244YW9QYXNzLmNvbmZpZ3VyYXRpb24ucmVuZGVyTW9kZSA9IFsnQ29tYmluZWQnLCAnQU8nLCAnTm8gQU8nLCAnU3BsaXQnLCAnU3BsaXQgQU8nXS5pbmRleE9mKHRoaXMuX2FvT3B0aW9ucy5yZW5kZXJNb2RlKTtcclxuICAgIHRoaXMuX244YW9QYXNzLmNvbmZpZ3VyYXRpb24uY29sb3IgPSBuZXcgQ29sb3IoYCMke3RoaXMuX2FvT3B0aW9ucy5jb2xvcn1gKTtcclxuICAgIHRoaXMuX244YW9QYXNzLmNvbmZpZ3VyYXRpb24uc2NyZWVuU3BhY2VSYWRpdXMgPSB0aGlzLl9hb09wdGlvbnMuc2NyZWVuU3BhY2VSYWRpdXM7XHJcbiAgICB0aGlzLl9uOGFvUGFzcy5jb25maWd1cmF0aW9uLmhhbGZSZXMgPSB0aGlzLl9hb09wdGlvbnMuaGFsZlJlcztcclxuICAgIHRoaXMuX244YW9QYXNzLmNvbmZpZ3VyYXRpb24uZGVwdGhBd2FyZVVwc2FtcGxpbmcgPSB0aGlzLl9hb09wdGlvbnMuZGVwdGhBd2FyZVVwc2FtcGxpbmc7XHJcbiAgICB0aGlzLl9uOGFvUGFzcy5jb25maWd1cmF0aW9uLmNvbG9yTXVsdGlwbHkgPSB0aGlzLl9hb09wdGlvbnMuY29sb3JNdWx0aXBseTtcclxuICAgIHRoaXMuX244YW9QYXNzLmNvbmZpZ3VyYXRpb24uYWNjdW11bGF0ZSA9IHRoaXMuX2FvT3B0aW9ucy5hY2N1bXVsYXRlO1xyXG4gICAgdGhpcy5fbjhhb1Bhc3MuY29uZmlndXJhdGlvbi5nYW1tYUNvcnJlY3Rpb24gPSB0aGlzLl9hb09wdGlvbnMuZ2FtbWFDb3JyZWN0aW9uO1xyXG4gICAgdGhpcy5yZW5kZXIoKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX2NyZWF0ZUd1aVRhYVBhc3MoKTogdm9pZCB7XHJcbiAgICBjb25zdCBwYXJhbSA9IHtUQUFFbmFibGVkOiAnMScsIFRBQVNhbXBsZUxldmVsOiAwfTtcclxuICAgIHRoaXMuX3Bvc3RQcm9jZXNzaW5nR3VpLmFkZChwYXJhbSwgJ1RBQUVuYWJsZWQnLCB7XHJcbiAgICAgICdEaXNhYmxlZCc6ICcwJyxcclxuICAgICAgJ0VuYWJsZWQnOiAnMSdcclxuICAgIH0pLm9uRmluaXNoQ2hhbmdlKCgpID0+IHtcclxuICAgICAgaWYgKHRoaXMuX3RhYVJlbmRlclBhc3MpIHtcclxuICAgICAgICB0aGlzLl90YWFSZW5kZXJQYXNzLmVuYWJsZWQgPSAocGFyYW0uVEFBRW5hYmxlZCA9PT0gJzEnKTtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLnJlbmRlcigpO1xyXG4gICAgfSk7XHJcblxyXG4gICAgdGhpcy5fcG9zdFByb2Nlc3NpbmdHdWkuYWRkKHBhcmFtLCAnVEFBU2FtcGxlTGV2ZWwnLCB7XHJcbiAgICAgICdMZXZlbCAwOiAxIFNhbXBsZSc6IDAsXHJcbiAgICAgICdMZXZlbCAxOiAyIFNhbXBsZXMnOiAxLFxyXG4gICAgICAnTGV2ZWwgMjogNCBTYW1wbGVzJzogMixcclxuICAgICAgJ0xldmVsIDM6IDggU2FtcGxlcyc6IDMsXHJcbiAgICAgICdMZXZlbCA0OiAxNiBTYW1wbGVzJzogNCxcclxuICAgICAgJ0xldmVsIDU6IDMyIFNhbXBsZXMnOiA1XHJcbiAgICB9KS5vbkZpbmlzaENoYW5nZSgoKSA9PiB7XHJcbiAgICAgIGlmICh0aGlzLl90YWFSZW5kZXJQYXNzKSB7XHJcbiAgICAgICAgdGhpcy5fdGFhUmVuZGVyUGFzcy5zYW1wbGVMZXZlbCA9IHBhcmFtLlRBQVNhbXBsZUxldmVsO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMucmVuZGVyKCk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX3Nob3dIaWRlR3VpKHNob3c6IGJvb2xlYW4pOiB2b2lkIHtcclxuICAgIHNob3cgPyB0aGlzLnNob3dHdWkoKSA6IHRoaXMuaGlkZUd1aSgpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfY3JlYXRlR3VpKCk6IHZvaWQge1xyXG4gICAgdGhpcy5fcG9zdFByb2Nlc3NpbmdHdWkuYWRkKHRoaXMuX2FvT3B0aW9ucywgJ2FvU2FtcGxlcycsIDEuMCwgNjQuMCwgMS4wKS5vbkNoYW5nZSgoKSA9PiB0aGlzLl9hcHBseUFvUHJvcHMoKSk7XHJcbiAgICB0aGlzLl9wb3N0UHJvY2Vzc2luZ0d1aS5hZGQodGhpcy5fYW9PcHRpb25zLCAnZGVub2lzZVNhbXBsZXMnLCAxLjAsIDY0LjAsIDEuMCkub25DaGFuZ2UoKCkgPT4gdGhpcy5fYXBwbHlBb1Byb3BzKCkpO1xyXG4gICAgdGhpcy5fcG9zdFByb2Nlc3NpbmdHdWkuYWRkKHRoaXMuX2FvT3B0aW9ucywgJ2Rlbm9pc2VSYWRpdXMnLCAwLjAsIDI0LjAsIDAuMDEpLm9uQ2hhbmdlKCgpID0+IHRoaXMuX2FwcGx5QW9Qcm9wcygpKTtcclxuICAgIGNvbnN0IGFvciA9IHRoaXMuX3Bvc3RQcm9jZXNzaW5nR3VpLmFkZCh0aGlzLl9hb09wdGlvbnMsICdhb1JhZGl1cycsIDEuMCwgMTAuMCwgMC4wMSkub25DaGFuZ2UoKCkgPT4gdGhpcy5fYXBwbHlBb1Byb3BzKCkpO1xyXG4gICAgY29uc3QgZGYgPSB0aGlzLl9wb3N0UHJvY2Vzc2luZ0d1aS5hZGQodGhpcy5fYW9PcHRpb25zLCAnZGlzdGFuY2VGYWxsb2ZmJywgMC4wLCAxMC4wLCAwLjAxKS5vbkNoYW5nZSgoKSA9PiB0aGlzLl9hcHBseUFvUHJvcHMoKSk7XHJcbiAgICB0aGlzLl9wb3N0UHJvY2Vzc2luZ0d1aS5hZGQodGhpcy5fYW9PcHRpb25zLCAnc2NyZWVuU3BhY2VSYWRpdXMnKS5vbkNoYW5nZSgodmFsdWUpID0+IHtcclxuICAgICAgaWYgKHZhbHVlKSB7XHJcbiAgICAgICAgdGhpcy5fYW9PcHRpb25zLmFvUmFkaXVzID0gNDguMDtcclxuICAgICAgICB0aGlzLl9hb09wdGlvbnMuZGlzdGFuY2VGYWxsb2ZmID0gMC4yO1xyXG4gICAgICAgIGFvci5fbWluID0gMDtcclxuICAgICAgICBhb3IuX21heCA9IDY0O1xyXG4gICAgICAgIGRmLl9taW4gPSAwO1xyXG4gICAgICAgIGRmLl9tYXggPSAxO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMuX2FvT3B0aW9ucy5hb1JhZGl1cyA9IDUuMDtcclxuICAgICAgICB0aGlzLl9hb09wdGlvbnMuZGlzdGFuY2VGYWxsb2ZmID0gMS4wO1xyXG4gICAgICAgIGFvci5fbWluID0gMTtcclxuICAgICAgICBhb3IuX21heCA9IDEwO1xyXG4gICAgICAgIGRmLl9taW4gPSAwO1xyXG4gICAgICAgIGRmLl9tYXggPSAxMDtcclxuICAgICAgfVxyXG4gICAgICBhb3IudXBkYXRlRGlzcGxheSgpO1xyXG4gICAgICBkZi51cGRhdGVEaXNwbGF5KCk7XHJcbiAgICAgIHRoaXMuX2FwcGx5QW9Qcm9wcygpO1xyXG4gICAgfSk7XHJcbiAgICBjb25zdCBibGVuZFNoYWRlclBhcmFtcyA9IHtcclxuICAgICAgbWl4UmF0aW86IDAuNVxyXG4gICAgfTtcclxuICAgIHRoaXMuX3Bvc3RQcm9jZXNzaW5nR3VpLmFkZCh0aGlzLl9hb09wdGlvbnMsICdoYWxmUmVzJykub25DaGFuZ2UoKCkgPT4gdGhpcy5fYXBwbHlBb1Byb3BzKCkpO1xyXG4gICAgdGhpcy5fcG9zdFByb2Nlc3NpbmdHdWkuYWRkKHRoaXMuX2FvT3B0aW9ucywgJ3RyYW5zcGFyZW5jeUF3YXJlJykub25DaGFuZ2UoKCkgPT4gdGhpcy5fYXBwbHlBb1Byb3BzKCkpO1xyXG4gICAgdGhpcy5fcG9zdFByb2Nlc3NpbmdHdWkuYWRkKHRoaXMuX2FvT3B0aW9ucywgJ2RlcHRoQXdhcmVVcHNhbXBsaW5nJykub25DaGFuZ2UoKCkgPT4gdGhpcy5fYXBwbHlBb1Byb3BzKCkpO1xyXG4gICAgdGhpcy5fcG9zdFByb2Nlc3NpbmdHdWkuYWRkKHRoaXMuX2FvT3B0aW9ucywgJ3N0ZW5jaWwnKS5vbkNoYW5nZSgoKSA9PiB0aGlzLl9hcHBseUFvUHJvcHMoKSk7XHJcbiAgICB0aGlzLl9wb3N0UHJvY2Vzc2luZ0d1aS5hZGQodGhpcy5fYW9PcHRpb25zLCAnaW50ZW5zaXR5JywgMC4wLCAxMC4wLCAwLjAxKS5vbkNoYW5nZSgoKSA9PiB0aGlzLl9hcHBseUFvUHJvcHMoKSk7XHJcbiAgICB0aGlzLl9wb3N0UHJvY2Vzc2luZ0d1aS5hZGRDb2xvcih0aGlzLl9hb09wdGlvbnMsICdjb2xvcicpLm9uQ2hhbmdlKCgpID0+IHRoaXMuX2FwcGx5QW9Qcm9wcygpKTtcclxuICAgIHRoaXMuX3Bvc3RQcm9jZXNzaW5nR3VpLmFkZCh0aGlzLl9hb09wdGlvbnMsICdjb2xvck11bHRpcGx5Jykub25DaGFuZ2UoKCkgPT4gdGhpcy5fYXBwbHlBb1Byb3BzKCkpO1xyXG4gICAgdGhpcy5fcG9zdFByb2Nlc3NpbmdHdWkuYWRkKHRoaXMuX2FvT3B0aW9ucywgJ2FjY3VtdWxhdGUnKS5vbkNoYW5nZSgoKSA9PiB0aGlzLl9hcHBseUFvUHJvcHMoKSk7XHJcbiAgICB0aGlzLl9wb3N0UHJvY2Vzc2luZ0d1aS5hZGQodGhpcy5fYW9PcHRpb25zLCAnZ2FtbWFDb3JyZWN0aW9uJykub25DaGFuZ2UoKCkgPT4gdGhpcy5fYXBwbHlBb1Byb3BzKCkpO1xyXG4gICAgdGhpcy5fcG9zdFByb2Nlc3NpbmdHdWkuYWRkKHRoaXMuX2FvT3B0aW9ucywgJ3JlbmRlck1vZGUnLCBbJ0NvbWJpbmVkJywgJ0FPJywgJ05vIEFPJywgJ1NwbGl0JywgJ1NwbGl0IEFPJ10pLm9uQ2hhbmdlKCgpID0+IHRoaXMuX2FwcGx5QW9Qcm9wcygpKTtcclxuICAgIHRoaXMuX3Bvc3RQcm9jZXNzaW5nR3VpLmFkZChibGVuZFNoYWRlclBhcmFtcywgJ21peFJhdGlvJywgMC4wLCAxMC4wLCAwLjAxKS5vbkNoYW5nZSgoKSA9PiB7XHJcbiAgICAgIHRoaXMuX2JsZW5kU2hhZGVyLnVuaWZvcm1zLm1peFJhdGlvLnZhbHVlID0gYmxlbmRTaGFkZXJQYXJhbXMubWl4UmF0aW87XHJcbiAgICAgIHRoaXMucmVuZGVyKCk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX3NldEVycm9yR2xvd1NldHRpbmdzKCk6IHZvaWQge1xyXG4gICAgdGhpcy5fb3V0bGluZVBhc3MudmlzaWJsZUVkZ2VDb2xvci5zZXQoJyNlNjAwMDInKTtcclxuICAgIHRoaXMuX291dGxpbmVQYXNzLmhpZGRlbkVkZ2VDb2xvci5zZXQoJyNlNjAwMDInKTtcclxuICAgIHRoaXMuX291dGxpbmVQYXNzLmVkZ2VTdHJlbmd0aCA9IDQ7XHJcbiAgICB0aGlzLl9vdXRsaW5lUGFzcy5lZGdlR2xvdyA9IDE7XHJcbiAgICB0aGlzLl9vdXRsaW5lUGFzcy5lZGdlVGhpY2tuZXNzID0gMTtcclxuICAgIHRoaXMuX291dGxpbmVQYXNzLnB1bHNlUGVyaW9kID0gMS41O1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfc2V0U2VsZWN0aW9uR2xvd1NldHRpbmdzKCk6IHZvaWQge1xyXG4gICAgdGhpcy5fb3V0bGluZVBhc3MudmlzaWJsZUVkZ2VDb2xvci5zZXQoJyNmZmZmZmYnKTtcclxuICAgIHRoaXMuX291dGxpbmVQYXNzLmhpZGRlbkVkZ2VDb2xvci5zZXQoJyNmZmZmZmYnKTtcclxuICAgIHRoaXMuX291dGxpbmVQYXNzLmVkZ2VTdHJlbmd0aCA9IDI7XHJcbiAgICB0aGlzLl9vdXRsaW5lUGFzcy5lZGdlR2xvdyA9IDAuNTtcclxuICAgIHRoaXMuX291dGxpbmVQYXNzLmVkZ2VUaGlja25lc3MgPSAxLjU7XHJcbiAgICB0aGlzLl9vdXRsaW5lUGFzcy5wdWxzZVBlcmlvZCA9IDA7XHJcbiAgfVxyXG59XHJcbiJdfQ==
@@ -1,16 +0,0 @@
1
- import { EventEmitter, Injectable } from '@angular/core';
2
- import * as i0 from "@angular/core";
3
- export class ProductConfiguratorService {
4
- constructor() {
5
- this.showChange = new EventEmitter();
6
- this.answerChosen = new EventEmitter();
7
- this.selectSelection = new EventEmitter();
8
- }
9
- }
10
- ProductConfiguratorService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: ProductConfiguratorService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
11
- ProductConfiguratorService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: ProductConfiguratorService, providedIn: 'root' });
12
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: ProductConfiguratorService, decorators: [{
13
- type: Injectable,
14
- args: [{ providedIn: 'root' }]
15
- }] });
16
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvZHVjdC1jb25maWd1cmF0b3Iuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvbmZpZ3VyYXRvci9zcmMvbGliL3NlcnZpY2VzL3Byb2R1Y3QtY29uZmlndXJhdG9yLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFlBQVksRUFBRSxVQUFVLEVBQUMsTUFBTSxlQUFlLENBQUM7O0FBTXZELE1BQU0sT0FBTywwQkFBMEI7SUFGdkM7UUFHUyxlQUFVLEdBQTBCLElBQUksWUFBWSxFQUFXLENBQUM7UUFDaEUsaUJBQVksR0FBeUIsSUFBSSxZQUFZLEVBQVUsQ0FBQztRQUNoRSxvQkFBZSxHQUFvQyxJQUFJLFlBQVksRUFBcUIsQ0FBQztLQUdqRzs7d0hBTlksMEJBQTBCOzRIQUExQiwwQkFBMEIsY0FGZCxNQUFNOzRGQUVsQiwwQkFBMEI7a0JBRnRDLFVBQVU7bUJBQUMsRUFBQyxVQUFVLEVBQUUsTUFBTSxFQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtFdmVudEVtaXR0ZXIsIEluamVjdGFibGV9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQge0Fuc3dlcn0gZnJvbSAnQGNvbGlqbml0L2NvbmZpZ3VyYXRvcmFwaS9idWlsZC9tb2RlbC9hbnN3ZXInO1xyXG5pbXBvcnQge1NlbGVjdG9yU3RydWN0dXJlfSBmcm9tICdAY29saWpuaXQvY29uZmlndXJhdG9yYXBpL2J1aWxkL21vZGVsL3NlbGVjdG9yLXN0cnVjdHVyZS5ibyc7XHJcblxyXG5ASW5qZWN0YWJsZSh7cHJvdmlkZWRJbjogJ3Jvb3QnfSlcclxuXHJcbmV4cG9ydCBjbGFzcyBQcm9kdWN0Q29uZmlndXJhdG9yU2VydmljZSB7XHJcbiAgcHVibGljIHNob3dDaGFuZ2U6IEV2ZW50RW1pdHRlcjxib29sZWFuPiA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcclxuICBwdWJsaWMgYW5zd2VyQ2hvc2VuOiBFdmVudEVtaXR0ZXI8QW5zd2VyPiA9IG5ldyBFdmVudEVtaXR0ZXI8QW5zd2VyPigpO1xyXG4gIHB1YmxpYyBzZWxlY3RTZWxlY3Rpb246IEV2ZW50RW1pdHRlcjxTZWxlY3RvclN0cnVjdHVyZT4gPSBuZXcgRXZlbnRFbWl0dGVyPFNlbGVjdG9yU3RydWN0dXJlPigpO1xyXG5cclxuXHJcbn1cclxuIl19
@@ -1,20 +0,0 @@
1
- import { Injectable } from '@angular/core';
2
- import * as i0 from "@angular/core";
3
- export class ProgressService {
4
- constructor() {
5
- this._progressPercent = 0;
6
- }
7
- get progress() {
8
- return this._progressPercent;
9
- }
10
- set progress(value) {
11
- this._progressPercent = value;
12
- }
13
- }
14
- ProgressService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: ProgressService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
15
- ProgressService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: ProgressService, providedIn: 'root' });
16
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: ProgressService, decorators: [{
17
- type: Injectable,
18
- args: [{ providedIn: 'root' }]
19
- }], ctorParameters: function () { return []; } });
20
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvZ3Jlc3Muc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvbmZpZ3VyYXRvci9zcmMvbGliL3NlcnZpY2VzL3Byb2dyZXNzLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFVBQVUsRUFBQyxNQUFNLGVBQWUsQ0FBQzs7QUFHekMsTUFBTSxPQUFPLGVBQWU7SUFXMUI7UUFWUSxxQkFBZ0IsR0FBVyxDQUFDLENBQUM7SUFXckMsQ0FBQztJQVRELElBQVcsUUFBUTtRQUNqQixPQUFPLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQztJQUMvQixDQUFDO0lBRUQsSUFBVyxRQUFRLENBQUMsS0FBYTtRQUMvQixJQUFJLENBQUMsZ0JBQWdCLEdBQUcsS0FBSyxDQUFDO0lBQ2hDLENBQUM7OzZHQVRVLGVBQWU7aUhBQWYsZUFBZSxjQURILE1BQU07NEZBQ2xCLGVBQWU7a0JBRDNCLFVBQVU7bUJBQUMsRUFBQyxVQUFVLEVBQUUsTUFBTSxFQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtJbmplY3RhYmxlfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuXHJcbkBJbmplY3RhYmxlKHtwcm92aWRlZEluOiAncm9vdCd9KVxyXG5leHBvcnQgY2xhc3MgUHJvZ3Jlc3NTZXJ2aWNlIHtcclxuICBwcml2YXRlIF9wcm9ncmVzc1BlcmNlbnQ6IG51bWJlciA9IDA7XHJcblxyXG4gIHB1YmxpYyBnZXQgcHJvZ3Jlc3MoKTogbnVtYmVyIHtcclxuICAgIHJldHVybiB0aGlzLl9wcm9ncmVzc1BlcmNlbnQ7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgc2V0IHByb2dyZXNzKHZhbHVlOiBudW1iZXIpIHtcclxuICAgIHRoaXMuX3Byb2dyZXNzUGVyY2VudCA9IHZhbHVlO1xyXG4gIH1cclxuXHJcbiAgY29uc3RydWN0b3IoKSB7XHJcbiAgfVxyXG5cclxufVxyXG4iXX0=