@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,285 +0,0 @@
1
- import { __awaiter } from "tslib";
2
- import { UserRoleType } from '@colijnit/ioneconnector/build/enum/user-role-type.enum';
3
- import { MainApi } from '@colijnit/mainapi';
4
- import { TableName } from '@colijnit/mainapi/build/enum/table-name.enum';
5
- import { Injectable } from '@angular/core';
6
- import { ImageContent } from '@colijnit/mainapi/build/model/image-content.bo';
7
- import { BusinessObjectFactory } from '@colijnit/ioneconnector/build/service/business-object-factory';
8
- import { Subject } from 'rxjs';
9
- import { Configurator } from '@colijnit/configuratorapi';
10
- import { NodeType } from '@colijnit/configuratorapi/build/enum/node-type.enum';
11
- import { isNill } from '@colijnit/configuratorapi/build/utils/function/is-nill.function';
12
- import { Articles } from '@colijnit/articleapi/build/articles';
13
- import * as i0 from "@angular/core";
14
- export class ConfiguratorService {
15
- constructor() {
16
- this.showLoader = new Subject();
17
- this.connectionReset = new Subject();
18
- this._boFactory = new BusinessObjectFactory();
19
- this._publicationCodeForUserRole = new Map([
20
- [UserRoleType.Customer, 16],
21
- [UserRoleType.Employee, 1]
22
- ]);
23
- }
24
- initApi(options) {
25
- this._configuratorApi = new Configurator(options);
26
- }
27
- cleanUp() {
28
- this._configuratorApi.logOut();
29
- this._configuratorApi = null;
30
- this._mainApi = null;
31
- this._articleApi = null;
32
- }
33
- initConnector(options, forceReload) {
34
- return __awaiter(this, void 0, void 0, function* () {
35
- let createdConnection = false;
36
- const renewConnector = (this._configuratorApi ? this._configuratorApi.url !== options.url : false) || forceReload;
37
- if (!this._configuratorApi || renewConnector) {
38
- this._configuratorApi = new Configurator(options);
39
- this.loginResponse = yield this._configuratorApi.connect();
40
- this._configuratorApi.showLoader.subscribe(value => this.showLoader.next(value));
41
- this._configuratorApi.connectionResetInactivity.subscribe(value => this.connectionReset.next());
42
- }
43
- if (!this._mainApi || renewConnector) {
44
- this._mainApi = new MainApi(options);
45
- }
46
- if (!this._articleApi || renewConnector) {
47
- this._articleApi = new Articles(options);
48
- }
49
- createdConnection = true;
50
- return createdConnection;
51
- });
52
- }
53
- initNodeInstance(goodId, showLoader) {
54
- return __awaiter(this, void 0, void 0, function* () {
55
- return yield this._configuratorApi.initNodeInstance(goodId, showLoader);
56
- });
57
- }
58
- changeConnection(instanceId, oldConnection, newConnection, showLoader) {
59
- return this._configuratorApi.changeConnection(instanceId, oldConnection, newConnection, showLoader);
60
- }
61
- setInstanceToConfigure(id, showLoader = false) {
62
- return __awaiter(this, void 0, void 0, function* () {
63
- return yield this._configuratorApi.setInstanceToConfigure(id, showLoader);
64
- });
65
- }
66
- getGoodIdFromSku(sku, showLoader = false) {
67
- return __awaiter(this, void 0, void 0, function* () {
68
- return yield this._configuratorApi.getGoodIdFromSku(sku, showLoader);
69
- });
70
- }
71
- getArticleQuickSel(goodId, showLoader = false) {
72
- return __awaiter(this, void 0, void 0, function* () {
73
- return yield this._configuratorApi.getArticleQuickSel(goodId, showLoader);
74
- });
75
- }
76
- getSelections(showLoader = false, publicationCode = 2) {
77
- return __awaiter(this, void 0, void 0, function* () {
78
- let selections = yield this._configuratorApi.getSelections(showLoader);
79
- if (selections && selections.resultObjects) {
80
- selections.resultObjects.filter((s) => {
81
- (isNill(s.hierarchicalPublicationCode) || ((s.hierarchicalPublicationCode & publicationCode) > 0)) && ((s.nodeType === NodeType.Question && (((s.questionPublicationCode & publicationCode) > 0) || isNill(s.questionPublicationCode))) ||
82
- (s.nodeType === NodeType.Answer && (((s.answerPublicationCode & publicationCode) > 0) || isNill(s.answerPublicationCode))));
83
- });
84
- }
85
- return selections;
86
- });
87
- }
88
- getDecos(showLoader = false) {
89
- return __awaiter(this, void 0, void 0, function* () {
90
- return yield this._configuratorApi.getDecos(showLoader);
91
- });
92
- }
93
- getQuestionAndAnswers(showLoader = false, publicationCode = 2) {
94
- return __awaiter(this, void 0, void 0, function* () {
95
- const questionAndAnswers = yield this._configuratorApi.getQuestionAndAnswers(showLoader);
96
- if (questionAndAnswers && questionAndAnswers.answers) {
97
- questionAndAnswers.answers.filter((answer) => {
98
- (notNill(answer.hierarchicalPublicationCode) && (answer.hierarchicalPublicationCode & publicationCode) === 0) ||
99
- (answer.type === NodeType.Question && (answer.questionPublicationCode & publicationCode) === 0 && notNill(answer.questionPublicationCode)) ||
100
- (answer.type === NodeType.Answer && (answer.publicationCode & publicationCode) === 0 && notNill(answer.publicationCode));
101
- });
102
- }
103
- return questionAndAnswers;
104
- });
105
- }
106
- getSingleImage(nodeId, publication, includeMimetype, thumb, showLoader) {
107
- return __awaiter(this, void 0, void 0, function* () {
108
- if (!nodeId) {
109
- return null;
110
- }
111
- return yield this._configuratorApi.getSingleImage(nodeId, publication, includeMimetype, thumb, showLoader);
112
- });
113
- }
114
- selectSelection(selection, forceBackToNode, after, connector) {
115
- return __awaiter(this, void 0, void 0, function* () {
116
- return yield this._configuratorApi.selectSelection(selection, false, forceBackToNode, after, connector);
117
- });
118
- }
119
- selectAnswer(answer, showLoader = false, input) {
120
- return __awaiter(this, void 0, void 0, function* () {
121
- return yield this._configuratorApi.selectAnswer(answer, showLoader, input);
122
- });
123
- }
124
- selectAnswerBySelection(selection, userInput) {
125
- return __awaiter(this, void 0, void 0, function* () {
126
- return this._configuratorApi.selectAnswerBySelection(selection, false, userInput);
127
- });
128
- }
129
- navigateTo(chosenOption, showLoader = false) {
130
- return this._configuratorApi.navigateTo(chosenOption.opvTreeNodeHierarchy, showLoader);
131
- }
132
- cancelAnswer(getAnswersAndQuestion = true) {
133
- return this._configuratorApi.cancelAnswer();
134
- }
135
- deleteSelection(selection) {
136
- return this._configuratorApi.deleteSelection(selection);
137
- }
138
- replaceSelection(selection) {
139
- return this._configuratorApi.replaceSelection(selection);
140
- }
141
- getSelectionsAsync() {
142
- return __awaiter(this, void 0, void 0, function* () {
143
- return yield this._configuratorApi.getSelections();
144
- });
145
- }
146
- getQuestionAndAnswersAsync() {
147
- return this._configuratorApi.getQuestionAndAnswers();
148
- }
149
- getAnswerTexts(goodId, showLoader = false) {
150
- return __awaiter(this, void 0, void 0, function* () {
151
- return yield this._configuratorApi.getAnswerTexts(goodId, showLoader);
152
- });
153
- }
154
- getAnswersPrices() {
155
- return __awaiter(this, void 0, void 0, function* () {
156
- return yield this._configuratorApi.getAnswersPrices();
157
- });
158
- }
159
- getSkipButtonImageAndText(goodId, showLoader = false) {
160
- return __awaiter(this, void 0, void 0, function* () {
161
- return yield this._configuratorApi.getSkipButtonImageAndText(goodId, showLoader);
162
- });
163
- }
164
- getInternalParameterValue(parameter) {
165
- return __awaiter(this, void 0, void 0, function* () {
166
- return yield this._mainApi.getInternalParameterValue(parameter);
167
- });
168
- }
169
- getDecosAsync() {
170
- return __awaiter(this, void 0, void 0, function* () {
171
- return yield this._configuratorApi.getDecos();
172
- });
173
- }
174
- getSelectorStructure(showLoader = true) {
175
- return this._configuratorApi.getSelectorStructure(showLoader);
176
- }
177
- getPublicationCodeBasedOnLogin() {
178
- let rol;
179
- if (this.loginResponse) {
180
- rol = this.loginResponse.rol;
181
- }
182
- if (rol) {
183
- const pubCode = this._getPublicationCodeForRole(rol);
184
- if (pubCode !== null) {
185
- return pubCode;
186
- }
187
- }
188
- return 2;
189
- }
190
- getImage(key, publication, thumb, tableName = TableName.Goods) {
191
- return __awaiter(this, void 0, void 0, function* () {
192
- return yield this._mainApi.getImage(key, publication, true, thumb, tableName);
193
- });
194
- }
195
- copyInstance(instanceId, shouldSaveCurrentInstanceId, showLoader = true) {
196
- return this._configuratorApi.copyInstance(instanceId, shouldSaveCurrentInstanceId, showLoader);
197
- }
198
- saveConfigurations(showLoader = true) {
199
- return __awaiter(this, void 0, void 0, function* () {
200
- try {
201
- yield this._configuratorApi.saveConfigurations(showLoader).catch((e) => {
202
- return false;
203
- });
204
- }
205
- catch (e) {
206
- }
207
- return true;
208
- });
209
- }
210
- googleTranslateEnabled() {
211
- return __awaiter(this, void 0, void 0, function* () {
212
- // this should always be fetched from the mainapi from the client
213
- const response = yield this._mainApi.isGoogleTranslateEnabled();
214
- if (response && response.validationResult && response.validationResult.success) {
215
- return response.resultObject;
216
- }
217
- return false;
218
- });
219
- }
220
- getDefaultLanguage(upId) {
221
- return __awaiter(this, void 0, void 0, function* () {
222
- // this should always be fetched from the mainapi from the client
223
- const response = yield this._mainApi.getPublicParams(upId);
224
- if (response && response['defaultLanguage'] !== undefined) {
225
- return response['defaultLanguage'];
226
- }
227
- return 'nl'; // just to be safe
228
- });
229
- }
230
- getGoogleTranslation(sourceLang, targetLang, list) {
231
- return __awaiter(this, void 0, void 0, function* () {
232
- const result = yield this._mainApi.getGoogleTranslation(sourceLang, targetLang, list);
233
- if (result.validationResult && result.validationResult.success) {
234
- return result.resultObject;
235
- }
236
- });
237
- }
238
- getImageForSelectorStructure(option, publication, thumbNail = true, showLoader = true) {
239
- return __awaiter(this, void 0, void 0, function* () {
240
- try {
241
- const response = yield this._mainApi.getImage(option.artNodeId, publication, true, thumbNail, TableName.Goods);
242
- if (response && response.validationResult && response.validationResult.success && response.resultObject) {
243
- const imageContent = this._boFactory.makeWithRawBackendData(ImageContent, response.resultObject);
244
- if (imageContent.image !== null && imageContent.image !== undefined && imageContent.image !== '') {
245
- return imageContent.image;
246
- }
247
- else {
248
- return '';
249
- }
250
- }
251
- else {
252
- return '';
253
- }
254
- }
255
- catch (e) {
256
- }
257
- });
258
- }
259
- getJsonConfiguredArticles(goodId, goodType, quantity, externalSource = false, showLoader = true, instanceId, configuratorStatistics) {
260
- try {
261
- // @ts-ignore
262
- return this._articleApi.getJsonArticleFlatTree(goodId, goodType, quantity, externalSource, showLoader, instanceId.toString(), configuratorStatistics);
263
- }
264
- catch (e) {
265
- }
266
- }
267
- _getPublicationCodeForRole(role) {
268
- if (this._publicationCodeForUserRole.has(role)) {
269
- return this._publicationCodeForUserRole.get(role);
270
- }
271
- return null;
272
- }
273
- }
274
- ConfiguratorService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: ConfiguratorService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
275
- ConfiguratorService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: ConfiguratorService, providedIn: 'root' });
276
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: ConfiguratorService, decorators: [{
277
- type: Injectable,
278
- args: [{
279
- providedIn: 'root'
280
- }]
281
- }], ctorParameters: function () { return []; } });
282
- function notNill(questionPublicationCode) {
283
- throw new Error('Function not implemented.');
284
- }
285
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlndXJhdG9yLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb25maWd1cmF0b3Ivc3JjL2xpYi9zZXJ2aWNlcy9jb25maWd1cmF0b3Iuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBTUEsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLHdEQUF3RCxDQUFDO0FBQ3BGLE9BQU8sRUFBQyxPQUFPLEVBQUMsTUFBTSxtQkFBbUIsQ0FBQztBQUMxQyxPQUFPLEVBQUMsU0FBUyxFQUFDLE1BQU0sOENBQThDLENBQUM7QUFHdkUsT0FBTyxFQUFDLFVBQVUsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0sZ0RBQWdELENBQUM7QUFDNUUsT0FBTyxFQUFDLHFCQUFxQixFQUFDLE1BQU0sK0RBQStELENBQUM7QUFDcEcsT0FBTyxFQUFDLE9BQU8sRUFBQyxNQUFNLE1BQU0sQ0FBQztBQUM3QixPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0sMkJBQTJCLENBQUM7QUFDdkQsT0FBTyxFQUFDLFFBQVEsRUFBQyxNQUFNLHFEQUFxRCxDQUFDO0FBQzdFLE9BQU8sRUFBQyxNQUFNLEVBQUMsTUFBTSxpRUFBaUUsQ0FBQztBQUV2RixPQUFPLEVBQUMsUUFBUSxFQUFDLE1BQU0scUNBQXFDLENBQUM7O0FBTTdELE1BQU0sT0FBTyxtQkFBbUI7SUFnQjlCO1FBZmdCLGVBQVUsR0FBcUIsSUFBSSxPQUFPLEVBQVcsQ0FBQztRQUN0RCxvQkFBZSxHQUFrQixJQUFJLE9BQU8sRUFBUSxDQUFDO1FBTzdELGVBQVUsR0FBMEIsSUFBSSxxQkFBcUIsRUFBRSxDQUFDO1FBRWhFLGdDQUEyQixHQUF3QixJQUFJLEdBQUcsQ0FBaUI7WUFDakYsQ0FBQyxZQUFZLENBQUMsUUFBUSxFQUFFLEVBQUUsQ0FBQztZQUMzQixDQUFDLFlBQVksQ0FBQyxRQUFRLEVBQUUs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T0FBTyxDQUFDLHVCQUE0QjtJQUMzQyxNQUFNLElBQUksS0FBSyxDQUFDLDJCQUEyQixDQUFDLENBQUM7QUFDL0MsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7U2VsZWN0aW9ufSBmcm9tICdAY29saWpuaXQvY29uZmlndXJhdG9yYXBpL2J1aWxkL21vZGVsL3NlbGVjdGlvbic7XHJcbmltcG9ydCB7QW5zd2VyfSBmcm9tICdAY29saWpuaXQvY29uZmlndXJhdG9yYXBpL2J1aWxkL21vZGVsL2Fuc3dlcic7XHJcbmltcG9ydCB7UXVlc3Rpb25BbmRBbnN3ZXJzfSBmcm9tICdAY29saWpuaXQvY29uZmlndXJhdG9yYXBpL2J1aWxkL21vZGVsL3F1ZXN0aW9uLWFuZC1hbnN3ZXJzJztcclxuaW1wb3J0IHtPcHRpb25zfSBmcm9tICdAY29saWpuaXQvaW9uZWNvbm5lY3Rvci9idWlsZC9tb2RlbC9vcHRpb25zJztcclxuaW1wb3J0IHtEYXRhU2VydmljZVJlc3BvbnNlRGF0YX0gZnJvbSAnQGNvbGlqbml0L2lvbmVjb25uZWN0b3IvYnVpbGQvbW9kZWwvZGF0YS1zZXJ2aWNlLXJlc3BvbnNlLWRhdGEnO1xyXG5pbXBvcnQge0xvZ2luUmVzcG9uc2V9IGZyb20gJ0Bjb2xpam5pdC9pb25lY29ubmVjdG9yL2J1aWxkL21vZGVsL2xvZ2luLXJlc3BvbnNlJztcclxuaW1wb3J0IHtVc2VyUm9sZVR5cGV9IGZyb20gJ0Bjb2xpam5pdC9pb25lY29ubmVjdG9yL2J1aWxkL2VudW0vdXNlci1yb2xlLXR5cGUuZW51bSc7XHJcbmltcG9ydCB7TWFpbkFwaX0gZnJvbSAnQGNvbGlqbml0L21haW5hcGknO1xyXG5pbXBvcnQge1RhYmxlTmFtZX0gZnJvbSAnQGNvbGlqbml0L21haW5hcGkvYnVpbGQvZW51bS90YWJsZS1uYW1lLmVudW0nO1xyXG5pbXBvcnQge1NlbGVjdG9yU3RydWN0dXJlfSBmcm9tICdAY29saWpuaXQvY29uZmlndXJhdG9yYXBpL2J1aWxkL21vZGVsL3NlbGVjdG9yLXN0cnVjdHVyZS5ibyc7XHJcbmltcG9ydCB7SW50ZXJuYWxQYXJhbX0gZnJvbSAnQGNvbGlqbml0L21haW5hcGkvYnVpbGQvZW51bS9pbnRlcm5hbC1wYXJhbS5lbnVtJztcclxuaW1wb3J0IHtJbmplY3RhYmxlfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHtJbWFnZUNvbnRlbnR9IGZyb20gJ0Bjb2xpam5pdC9tYWluYXBpL2J1aWxkL21vZGVsL2ltYWdlLWNvbnRlbnQuYm8nO1xyXG5pbXBvcnQge0J1c2luZXNzT2JqZWN0RmFjdG9yeX0gZnJvbSAnQGNvbGlqbml0L2lvbmVjb25uZWN0b3IvYnVpbGQvc2VydmljZS9idXNpbmVzcy1vYmplY3QtZmFjdG9yeSc7XHJcbmltcG9ydCB7U3ViamVjdH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7Q29uZmlndXJhdG9yfSBmcm9tICdAY29saWpuaXQvY29uZmlndXJhdG9yYXBpJztcclxuaW1wb3J0IHtOb2RlVHlwZX0gZnJvbSAnQGNvbGlqbml0L2NvbmZpZ3VyYXRvcmFwaS9idWlsZC9lbnVtL25vZGUtdHlwZS5lbnVtJztcclxuaW1wb3J0IHtpc05pbGx9IGZyb20gJ0Bjb2xpam5pdC9jb25maWd1cmF0b3JhcGkvYnVpbGQvdXRpbHMvZnVuY3Rpb24vaXMtbmlsbC5mdW5jdGlvbic7XHJcbmltcG9ydCB7Q29uZmlndXJhdG9yU3RhdGlzdGljc0Vudmlyb25tZW50fSBmcm9tICdAY29saWpuaXQvY29uZmlndXJhdG9yYXBpL2J1aWxkL21vZGVsL2NvbmZpZ3VyYXRvci1zdGF0aXN0aWNzLWVudmlyb25tZW50JztcclxuaW1wb3J0IHtBcnRpY2xlc30gZnJvbSAnQGNvbGlqbml0L2FydGljbGVhcGkvYnVpbGQvYXJ0aWNsZXMnO1xyXG5cclxuQEluamVjdGFibGUoe1xyXG4gIHByb3ZpZGVkSW46ICdyb290J1xyXG59KVxyXG5cclxuZXhwb3J0IGNsYXNzIENvbmZpZ3VyYXRvclNlcnZpY2Uge1xyXG4gIHB1YmxpYyByZWFkb25seSBzaG93TG9hZGVyOiBTdWJqZWN0PGJvb2xlYW4+ID0gbmV3IFN1YmplY3Q8Ym9vbGVhbj4oKTtcclxuICBwdWJsaWMgcmVhZG9ubHkgY29ubmVjdGlvblJlc2V0OiBTdWJqZWN0PHZvaWQ+ID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcclxuXHJcbiAgcHVibGljIGxvZ2luUmVzcG9uc2U6IExvZ2luUmVzcG9uc2U7XHJcbiAgcHJpdmF0ZSBfY29uZmlndXJhdG9yQXBpOiBDb25maWd1cmF0b3I7XHJcbiAgcHJpdmF0ZSBfbWFpbkFwaTogTWFpbkFwaTtcclxuICBwcml2YXRlIF9hcnRpY2xlQXBpOiBBcnRpY2xlcztcclxuXHJcbiAgcHJpdmF0ZSBfYm9GYWN0b3J5OiBCdXNpbmVzc09iamVjdEZhY3RvcnkgPSBuZXcgQnVzaW5lc3NPYmplY3RGYWN0b3J5KCk7XHJcblxyXG4gIHByaXZhdGUgX3B1YmxpY2F0aW9uQ29kZUZvclVzZXJSb2xlOiBNYXA8c3RyaW5nLCBudW1iZXI+ID0gbmV3IE1hcDxzdHJpbmcsIG51bWJlcj4oW1xyXG4gICAgW1VzZXJSb2xlVHlwZS5DdXN0b21lciwgMTZdLFxyXG4gICAgW1VzZXJSb2xlVHlwZS5FbXBsb3llZSwgMV1cclxuICBdKTtcclxuXHJcbiAgY29uc3RydWN0b3IoKSB7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgaW5pdEFwaShvcHRpb25zOiBPcHRpb25zKTogdm9pZCB7XHJcbiAgICB0aGlzLl9jb25maWd1cmF0b3JBcGkgPSBuZXcgQ29uZmlndXJhdG9yKG9wdGlvbnMpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGNsZWFuVXAoKSB7XHJcbiAgICB0aGlzLl9jb25maWd1cmF0b3JBcGkubG9nT3V0KCk7XHJcbiAgICB0aGlzLl9jb25maWd1cmF0b3JBcGkgPSBudWxsO1xyXG4gICAgdGhpcy5fbWFpbkFwaSA9IG51bGw7XHJcbiAgICB0aGlzLl9hcnRpY2xlQXBpID0gbnVsbDtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBhc3luYyBpbml0Q29ubmVjdG9yKFxyXG4gICAgb3B0aW9uczogT3B0aW9ucyxcclxuICAgIGZvcmNlUmVsb2FkPzogYm9vbGVhblxyXG4gICk6IFByb21pc2U8Ym9vbGVhbj4ge1xyXG4gICAgbGV0IGNyZWF0ZWRDb25uZWN0aW9uOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gICAgY29uc3QgcmVuZXdDb25uZWN0b3I6IGJvb2xlYW4gPSAodGhpcy5fY29uZmlndXJhdG9yQXBpID8gdGhpcy5fY29uZmlndXJhdG9yQXBpLnVybCAhPT0gb3B0aW9ucy51cmwgOiBmYWxzZSkgfHwgZm9yY2VSZWxvYWQ7XHJcbiAgICBpZiAoIXRoaXMuX2NvbmZpZ3VyYXRvckFwaSB8fCByZW5ld0Nvbm5lY3Rvcikge1xyXG4gICAgICB0aGlzLl9jb25maWd1cmF0b3JBcGkgPSBuZXcgQ29uZmlndXJhdG9yKG9wdGlvbnMpO1xyXG4gICAgICB0aGlzLmxvZ2luUmVzcG9uc2UgPSBhd2FpdCB0aGlzLl9jb25maWd1cmF0b3JBcGkuY29ubmVjdCgpO1xyXG4gICAgICB0aGlzLl9jb25maWd1cmF0b3JBcGkuc2hvd0xvYWRlci5zdWJzY3JpYmUodmFsdWUgPT4gdGhpcy5zaG93TG9hZGVyLm5leHQodmFsdWUpKTtcclxuICAgICAgdGhpcy5fY29uZmlndXJhdG9yQXBpLmNvbm5lY3Rpb25SZXNldEluYWN0aXZpdHkuc3Vic2NyaWJlKHZhbHVlID0+IHRoaXMuY29ubmVjdGlvblJlc2V0Lm5leHQoKSk7XHJcbiAgICB9XHJcbiAgICBpZiAoIXRoaXMuX21haW5BcGkgfHwgcmVuZXdDb25uZWN0b3IpIHtcclxuICAgICAgdGhpcy5fbWFpbkFwaSA9IG5ldyBNYWluQXBpKG9wdGlvbnMpO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICghdGhpcy5fYXJ0aWNsZUFwaSB8fCByZW5ld0Nvbm5lY3Rvcikge1xyXG4gICAgICB0aGlzLl9hcnRpY2xlQXBpID0gbmV3IEFydGljbGVzKG9wdGlvbnMpO1xyXG4gICAgfVxyXG4gICAgY3JlYXRlZENvbm5lY3Rpb24gPSB0cnVlO1xyXG5cclxuICAgIHJldHVybiBjcmVhdGVkQ29ubmVjdGlvbjtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBhc3luYyBpbml0Tm9kZUluc3RhbmNlKGdvb2RJZDogbnVtYmVyLCBzaG93TG9hZGVyOiBib29sZWFuKTogUHJvbWlzZTxEYXRhU2VydmljZVJlc3BvbnNlRGF0YT4ge1xyXG4gICAgcmV0dXJuIGF3YWl0IHRoaXMuX2NvbmZpZ3VyYXRvckFwaS5pbml0Tm9kZUluc3RhbmNlKGdvb2RJZCwgc2hvd0xvYWRlcik7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgY2hhbmdlQ29ubmVjdGlvbihpbnN0YW5jZUlkOiBzdHJpbmcsIG9sZENvbm5lY3Rpb246IHN0cmluZywgbmV3Q29ubmVjdGlvbjogc3RyaW5nLCBzaG93TG9hZGVyOiBib29sZWFuKTogUHJvbWlzZTxEYXRhU2VydmljZVJlc3BvbnNlRGF0YT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuX2NvbmZpZ3VyYXRvckFwaS5jaGFuZ2VDb25uZWN0aW9uKGluc3RhbmNlSWQsIG9sZENvbm5lY3Rpb24sIG5ld0Nvbm5lY3Rpb24sIHNob3dMb2FkZXIpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGFzeW5jIHNldEluc3RhbmNlVG9Db25maWd1cmUoaWQ6IHN0cmluZywgc2hvd0xvYWRlcjogYm9vbGVhbiA9IGZhbHNlKTogUHJvbWlzZTxEYXRhU2VydmljZVJlc3BvbnNlRGF0YT4ge1xyXG4gICAgcmV0dXJuIGF3YWl0IHRoaXMuX2NvbmZpZ3VyYXRvckFwaS5zZXRJbnN0YW5jZVRvQ29uZmlndXJlKGlkLCBzaG93TG9hZGVyKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBhc3luYyBnZXRHb29kSWRGcm9tU2t1KHNrdTogc3RyaW5nLCBzaG93TG9hZGVyOiBib29sZWFuID0gZmFsc2UpOiBQcm9taXNlPERhdGFTZXJ2aWNlUmVzcG9uc2VEYXRhPiB7XHJcbiAgICByZXR1cm4gYXdhaXQgdGhpcy5fY29uZmlndXJhdG9yQXBpLmdldEdvb2RJZEZyb21Ta3Uoc2t1LCBzaG93TG9hZGVyKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBhc3luYyBnZXRBcnRpY2xlUXVpY2tTZWwoZ29vZElkOiBudW1iZXIsIHNob3dMb2FkZXI6IGJvb2xlYW4gPSBmYWxzZSk6IFByb21pc2U8RGF0YVNlcnZpY2VSZXNwb25zZURhdGE+IHtcclxuICAgIHJldHVybiBhd2FpdCB0aGlzLl9jb25maWd1cmF0b3JBcGkuZ2V0QXJ0aWNsZVF1aWNrU2VsKGdvb2RJZCwgc2hvd0xvYWRlcik7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgYXN5bmMgZ2V0U2VsZWN0aW9ucyhzaG93TG9hZGVyOiBib29sZWFuID0gZmFsc2UsIHB1YmxpY2F0aW9uQ29kZTogbnVtYmVyID0gMik6IFByb21pc2U8RGF0YVNlcnZpY2VSZXNwb25zZURhdGE+IHtcclxuICAgIGxldCBzZWxlY3Rpb25zOiBEYXRhU2VydmljZVJlc3BvbnNlRGF0YSA9IGF3YWl0IHRoaXMuX2NvbmZpZ3VyYXRvckFwaS5nZXRTZWxlY3Rpb25zKHNob3dMb2FkZXIpO1xyXG4gICAgaWYgKHNlbGVjdGlvbnMgJiYgc2VsZWN0aW9ucy5yZXN1bHRPYmplY3RzKSB7XHJcbiAgICAgIHNlbGVjdGlvbnMucmVzdWx0T2JqZWN0cy5maWx0ZXIoKHM6IFNlbGVjdGlvbikgPT4ge1xyXG4gICAgICAgIChpc05pbGwocy5oaWVyYXJjaGljYWxQdWJsaWNhdGlvbkNvZGUpIHx8ICgocy5oaWVyYXJjaGljYWxQdWJsaWNhdGlvbkNvZGUgJiBwdWJsaWNhdGlvbkNvZGUpID4gMCkpICYmIChcclxuICAgICAgICAgIChzLm5vZGVUeXBlID09PSBOb2RlVHlwZS5RdWVzdGlvbiAmJiAoKChzLnF1ZXN0aW9uUHVibGljYXRpb25Db2RlICYgcHVibGljYXRpb25Db2RlKSA+IDApIHx8IGlzTmlsbChzLnF1ZXN0aW9uUHVibGljYXRpb25Db2RlKSkpIHx8XHJcbiAgICAgICAgICAocy5ub2RlVHlwZSA9PT0gTm9kZVR5cGUuQW5zd2VyICYmICgoKHMuYW5zd2VyUHVibGljYXRpb25Db2RlICYgcHVibGljYXRpb25Db2RlKSA+IDApIHx8IGlzTmlsbChzLmFuc3dlclB1YmxpY2F0aW9uQ29kZSkpKSk7XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHNlbGVjdGlvbnM7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgYXN5bmMgZ2V0RGVjb3Moc2hvd0xvYWRlcjogYm9vbGVhbiA9IGZhbHNlKTogUHJvbWlzZTxEYXRhU2VydmljZVJlc3BvbnNlRGF0YT4ge1xyXG4gICAgcmV0dXJuIGF3YWl0IHRoaXMuX2NvbmZpZ3VyYXRvckFwaS5nZXREZWNvcyhzaG93TG9hZGVyKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBhc3luYyBnZXRRdWVzdGlvbkFuZEFuc3dlcnMoc2hvd0xvYWRlcjogYm9vbGVhbiA9IGZhbHNlLCBwdWJsaWNhdGlvbkNvZGU6IG51bWJlciA9IDIpOiBQcm9taXNlPFF1ZXN0aW9uQW5kQW5zd2Vycz4ge1xyXG4gICAgY29uc3QgcXVlc3Rpb25BbmRBbnN3ZXJzOiBRdWVzdGlvbkFuZEFuc3dlcnMgPSBhd2FpdCB0aGlzLl9jb25maWd1cmF0b3JBcGkuZ2V0UXVlc3Rpb25BbmRBbnN3ZXJzKHNob3dMb2FkZXIpO1xyXG4gICAgaWYgKHF1ZXN0aW9uQW5kQW5zd2VycyAmJiBxdWVzdGlvbkFuZEFuc3dlcnMuYW5zd2Vycykge1xyXG4gICAgICBxdWVzdGlvbkFuZEFuc3dlcnMuYW5zd2Vycy5maWx0ZXIoKGFuc3dlcjogQW5zd2VyKSA9PiB7XHJcbiAgICAgICAgKG5vdE5pbGwoYW5zd2VyLmhpZXJhcmNoaWNhbFB1YmxpY2F0aW9uQ29kZSkgJiYgKGFuc3dlci5oaWVyYXJjaGljYWxQdWJsaWNhdGlvbkNvZGUgJiBwdWJsaWNhdGlvbkNvZGUpID09PSAwKSB8fFxyXG4gICAgICAgIChhbnN3ZXIudHlwZSA9PT0gTm9kZVR5cGUuUXVlc3Rpb24gJiYgKGFuc3dlci5xdWVzdGlvblB1YmxpY2F0aW9uQ29kZSAmIHB1YmxpY2F0aW9uQ29kZSkgPT09IDAgJiYgbm90TmlsbChhbnN3ZXIucXVlc3Rpb25QdWJsaWNhdGlvbkNvZGUpKSB8fFxyXG4gICAgICAgIChhbnN3ZXIudHlwZSA9PT0gTm9kZVR5cGUuQW5zd2VyICYmIChhbnN3ZXIucHVibGljYXRpb25Db2RlICYgcHVibGljYXRpb25Db2RlKSA9PT0gMCAmJiBub3ROaWxsKGFuc3dlci5wdWJsaWNhdGlvbkNvZGUpKTtcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gcXVlc3Rpb25BbmRBbnN3ZXJzO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGFzeW5jIGdldFNpbmdsZUltYWdlKG5vZGVJZDogbnVtYmVyIHwgc3RyaW5nLCBwdWJsaWNhdGlvbjogbnVtYmVyLCBpbmNsdWRlTWltZXR5cGU6IGJvb2xlYW4sIHRodW1iOiBib29sZWFuLCBzaG93TG9hZGVyOiBib29sZWFuKTogUHJvbWlzZTxEYXRhU2VydmljZVJlc3BvbnNlRGF0YT4ge1xyXG4gICAgaWYgKCFub2RlSWQpIHtcclxuICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gYXdhaXQgdGhpcy5fY29uZmlndXJhdG9yQXBpLmdldFNpbmdsZUltYWdlKG5vZGVJZCwgcHVibGljYXRpb24sIGluY2x1ZGVNaW1ldHlwZSwgdGh1bWIsIHNob3dMb2FkZXIpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGFzeW5jIHNlbGVjdFNlbGVjdGlvbihzZWxlY3Rpb246IFNlbGVjdGlvbiwgZm9yY2VCYWNrVG9Ob2RlPzogYm9vbGVhbiwgYWZ0ZXI/OiBib29sZWFuLCBjb25uZWN0b3I/OiBzdHJpbmcpOiBQcm9taXNlPERhdGFTZXJ2aWNlUmVzcG9uc2VEYXRhPiB7XHJcbiAgICByZXR1cm4gYXdhaXQgdGhpcy5fY29uZmlndXJhdG9yQXBpLnNlbGVjdFNlbGVjdGlvbihzZWxlY3Rpb24sIGZhbHNlLCBmb3JjZUJhY2tUb05vZGUsIGFmdGVyLCBjb25uZWN0b3IpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGFzeW5jIHNlbGVjdEFuc3dlcihhbnN3ZXI6IEFuc3dlciwgc2hvd0xvYWRlcjogYm9vbGVhbiA9IGZhbHNlLCBpbnB1dD86IHN0cmluZyk6IFByb21pc2U8RGF0YVNlcnZpY2VSZXNwb25zZURhdGE+IHtcclxuICAgIHJldHVybiBhd2FpdCB0aGlzLl9jb25maWd1cmF0b3JBcGkuc2VsZWN0QW5zd2VyKGFuc3dlciwgc2hvd0xvYWRlciwgaW5wdXQpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGFzeW5jIHNlbGVjdEFuc3dlckJ5U2VsZWN0aW9uKHNlbGVjdGlvbjogU2VsZWN0aW9uLCB1c2VySW5wdXQ/OiBzdHJpbmcpOiBQcm9taXNlPERhdGFTZXJ2aWNlUmVzcG9uc2VEYXRhPiB7XHJcbiAgICByZXR1cm4gdGhpcy5fY29uZmlndXJhdG9yQXBpLnNlbGVjdEFuc3dlckJ5U2VsZWN0aW9uKHNlbGVjdGlvbiwgZmFsc2UsIHVzZXJJbnB1dCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgbmF2aWdhdGVUbyhjaG9zZW5PcHRpb246IFNlbGVjdG9yU3RydWN0dXJlLCBzaG93TG9hZGVyOiBib29sZWFuID0gZmFsc2UpOiBQcm9taXNlPERhdGFTZXJ2aWNlUmVzcG9uc2VEYXRhPiB7XHJcbiAgICByZXR1cm4gdGhpcy5fY29uZmlndXJhdG9yQXBpLm5hdmlnYXRlVG8oY2hvc2VuT3B0aW9uLm9wdlRyZWVOb2RlSGllcmFyY2h5LCBzaG93TG9hZGVyKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBjYW5jZWxBbnN3ZXIoZ2V0QW5zd2Vyc0FuZFF1ZXN0aW9uOiBib29sZWFuID0gdHJ1ZSk6IFByb21pc2U8RGF0YVNlcnZpY2VSZXNwb25zZURhdGE+IHtcclxuICAgIHJldHVybiB0aGlzLl9jb25maWd1cmF0b3JBcGkuY2FuY2VsQW5zd2VyKCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZGVsZXRlU2VsZWN0aW9uKHNlbGVjdGlvbjogU2VsZWN0aW9uKTogUHJvbWlzZTxEYXRhU2VydmljZVJlc3BvbnNlRGF0YT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuX2NvbmZpZ3VyYXRvckFwaS5kZWxldGVTZWxlY3Rpb24oc2VsZWN0aW9uKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyByZXBsYWNlU2VsZWN0aW9uKHNlbGVjdGlvbjogU2VsZWN0aW9uKTogUHJvbWlzZTxEYXRhU2VydmljZVJlc3BvbnNlRGF0YT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuX2NvbmZpZ3VyYXRvckFwaS5yZXBsYWNlU2VsZWN0aW9uKHNlbGVjdGlvbik7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgYXN5bmMgZ2V0U2VsZWN0aW9uc0FzeW5jKCk6IFByb21pc2U8RGF0YVNlcnZpY2VSZXNwb25zZURhdGE+IHtcclxuICAgIHJldHVybiBhd2FpdCB0aGlzLl9jb25maWd1cmF0b3JBcGkuZ2V0U2VsZWN0aW9ucygpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldFF1ZXN0aW9uQW5kQW5zd2Vyc0FzeW5jKCk6IFByb21pc2U8UXVlc3Rpb25BbmRBbnN3ZXJzPiB7XHJcbiAgICByZXR1cm4gdGhpcy5fY29uZmlndXJhdG9yQXBpLmdldFF1ZXN0aW9uQW5kQW5zd2VycygpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGFzeW5jIGdldEFuc3dlclRleHRzKGdvb2RJZDogbnVtYmVyLCBzaG93TG9hZGVyOiBib29sZWFuID0gZmFsc2UpOiBQcm9taXNlPERhdGFTZXJ2aWNlUmVzcG9uc2VEYXRhPiB7XHJcbiAgICByZXR1cm4gYXdhaXQgdGhpcy5fY29uZmlndXJhdG9yQXBpLmdldEFuc3dlclRleHRzKGdvb2RJZCwgc2hvd0xvYWRlcik7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgYXN5bmMgZ2V0QW5zd2Vyc1ByaWNlcygpOiBQcm9taXNlPERhdGFTZXJ2aWNlUmVzcG9uc2VEYXRhPiB7XHJcbiAgICByZXR1cm4gYXdhaXQgdGhpcy5fY29uZmlndXJhdG9yQXBpLmdldEFuc3dlcnNQcmljZXMoKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBhc3luYyBnZXRTa2lwQnV0dG9uSW1hZ2VBbmRUZXh0KGdvb2RJZDogbnVtYmVyLCBzaG93TG9hZGVyOiBib29sZWFuID0gZmFsc2UpOiBQcm9taXNlPERhdGFTZXJ2aWNlUmVzcG9uc2VEYXRhPiB7XHJcbiAgICByZXR1cm4gYXdhaXQgdGhpcy5fY29uZmlndXJhdG9yQXBpLmdldFNraXBCdXR0b25JbWFnZUFuZFRleHQoZ29vZElkLCBzaG93TG9hZGVyKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBhc3luYyBnZXRJbnRlcm5hbFBhcmFtZXRlclZhbHVlKHBhcmFtZXRlcjogSW50ZXJuYWxQYXJhbSk6IFByb21pc2U8RGF0YVNlcnZpY2VSZXNwb25zZURhdGE+IHtcclxuICAgIHJldHVybiBhd2FpdCB0aGlzLl9tYWluQXBpLmdldEludGVybmFsUGFyYW1ldGVyVmFsdWUocGFyYW1ldGVyKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBhc3luYyBnZXREZWNvc0FzeW5jKCk6IFByb21pc2U8RGF0YVNlcnZpY2VSZXNwb25zZURhdGE+IHtcclxuICAgIHJldHVybiBhd2FpdCB0aGlzLl9jb25maWd1cmF0b3JBcGkuZ2V0RGVjb3MoKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXRTZWxlY3RvclN0cnVjdHVyZShzaG93TG9hZGVyOiBib29sZWFuID0gdHJ1ZSk6IFByb21pc2U8RGF0YVNlcnZpY2VSZXNwb25zZURhdGE+IHtcclxuICAgIHJldHVybiB0aGlzLl9jb25maWd1cmF0b3JBcGkuZ2V0U2VsZWN0b3JTdHJ1Y3R1cmUoc2hvd0xvYWRlcik7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0UHVibGljYXRpb25Db2RlQmFzZWRPbkxvZ2luKCk6IG51bWJlciB7XHJcbiAgICBsZXQgcm9sOiBzdHJpbmc7XHJcbiAgICBpZiAodGhpcy5sb2dpblJlc3BvbnNlKSB7XHJcbiAgICAgIHJvbCA9IHRoaXMubG9naW5SZXNwb25zZS5yb2w7XHJcbiAgICB9XHJcbiAgICBpZiAocm9sKSB7XHJcbiAgICAgIGNvbnN0IHB1YkNvZGU6IG51bWJlciA9IHRoaXMuX2dldFB1YmxpY2F0aW9uQ29kZUZvclJvbGUocm9sKTtcclxuICAgICAgaWYgKHB1YkNvZGUgIT09IG51bGwpIHtcclxuICAgICAgICByZXR1cm4gcHViQ29kZTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIDI7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgYXN5bmMgZ2V0SW1hZ2Uoa2V5OiBudW1iZXIgfCBzdHJpbmcsIHB1YmxpY2F0aW9uOiBudW1iZXIsIHRodW1iOiBib29sZWFuLCB0YWJsZU5hbWU6IFRhYmxlTmFtZSA9IFRhYmxlTmFtZS5Hb29kcyk6IFByb21pc2U8RGF0YVNlcnZpY2VSZXNwb25zZURhdGE+IHtcclxuICAgIHJldHVybiBhd2FpdCB0aGlzLl9tYWluQXBpLmdldEltYWdlKGtleSwgcHVibGljYXRpb24sIHRydWUsIHRodW1iLCB0YWJsZU5hbWUpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGNvcHlJbnN0YW5jZShpbnN0YW5jZUlkOiBzdHJpbmcsIHNob3VsZFNhdmVDdXJyZW50SW5zdGFuY2VJZDogYm9vbGVhbiwgc2hvd0xvYWRlcjogYm9vbGVhbiA9IHRydWUpOiBQcm9taXNlPERhdGFTZXJ2aWNlUmVzcG9uc2VEYXRhPiB7XHJcbiAgICByZXR1cm4gdGhpcy5fY29uZmlndXJhdG9yQXBpLmNvcHlJbnN0YW5jZShpbnN0YW5jZUlkLCBzaG91bGRTYXZlQ3VycmVudEluc3RhbmNlSWQsIHNob3dMb2FkZXIpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGFzeW5jIHNhdmVDb25maWd1cmF0aW9ucyhzaG93TG9hZGVyOiBib29sZWFuID0gdHJ1ZSk6IFByb21pc2U8Ym9vbGVhbj4ge1xyXG4gICAgdHJ5IHtcclxuICAgICAgYXdhaXQgdGhpcy5fY29uZmlndXJhdG9yQXBpLnNhdmVDb25maWd1cmF0aW9ucyhzaG93TG9hZGVyKS5jYXRjaCgoZSkgPT4ge1xyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgfSk7XHJcbiAgICB9IGNhdGNoIChlKSB7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdHJ1ZTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBhc3luYyBnb29nbGVUcmFuc2xhdGVFbmFibGVkKCk6IFByb21pc2U8Ym9vbGVhbj4ge1xyXG4gICAgLy8gdGhpcyBzaG91bGQgYWx3YXlzIGJlIGZldGNoZWQgZnJvbSB0aGUgbWFpbmFwaSBmcm9tIHRoZSBjbGllbnRcclxuICAgIGNvbnN0IHJlc3BvbnNlOiBEYXRhU2VydmljZVJlc3BvbnNlRGF0YSA9IGF3YWl0IHRoaXMuX21haW5BcGkuaXNHb29nbGVUcmFuc2xhdGVFbmFibGVkKCk7XHJcbiAgICBpZiAocmVzcG9uc2UgJiYgcmVzcG9uc2UudmFsaWRhdGlvblJlc3VsdCAmJiByZXNwb25zZS52YWxpZGF0aW9uUmVzdWx0LnN1Y2Nlc3MpIHtcclxuICAgICAgcmV0dXJuIHJlc3BvbnNlLnJlc3VsdE9iamVjdDtcclxuICAgIH1cclxuICAgIHJldHVybiBmYWxzZTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBhc3luYyBnZXREZWZhdWx0TGFuZ3VhZ2UodXBJZDogbnVtYmVyKTogUHJvbWlzZTxzdHJpbmc+IHtcclxuICAgIC8vIHRoaXMgc2hvdWxkIGFsd2F5cyBiZSBmZXRjaGVkIGZyb20gdGhlIG1haW5hcGkgZnJvbSB0aGUgY2xpZW50XHJcbiAgICBjb25zdCByZXNwb25zZTogRGF0YVNlcnZpY2VSZXNwb25zZURhdGEgPSBhd2FpdCB0aGlzLl9tYWluQXBpLmdldFB1YmxpY1BhcmFtcyh1cElkKTtcclxuICAgIGlmIChyZXNwb25zZSAmJiByZXNwb25zZVsnZGVmYXVsdExhbmd1YWdlJ10gIT09IHVuZGVmaW5lZCkge1xyXG4gICAgICByZXR1cm4gcmVzcG9uc2VbJ2RlZmF1bHRMYW5ndWFnZSddO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuICdubCc7IC8vIGp1c3QgdG8gYmUgc2FmZVxyXG4gIH1cclxuXHJcbiAgcHVibGljIGFzeW5jIGdldEdvb2dsZVRyYW5zbGF0aW9uKHNvdXJjZUxhbmc6IHN0cmluZywgdGFyZ2V0TGFuZzogc3RyaW5nLCBsaXN0OiBzdHJpbmdbXSk6IFByb21pc2U8c3RyaW5nPiB7XHJcbiAgICBjb25zdCByZXN1bHQ6IERhdGFTZXJ2aWNlUmVzcG9uc2VEYXRhID0gYXdhaXQgdGhpcy5fbWFpbkFwaS5nZXRHb29nbGVUcmFuc2xhdGlvbihzb3VyY2VMYW5nLCB0YXJnZXRMYW5nLCBsaXN0KTtcclxuICAgIGlmIChyZXN1bHQudmFsaWRhdGlvblJlc3VsdCAmJiByZXN1bHQudmFsaWRhdGlvblJlc3VsdC5zdWNjZXNzKSB7XHJcbiAgICAgIHJldHVybiByZXN1bHQucmVzdWx0T2JqZWN0O1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHVibGljIGFzeW5jIGdldEltYWdlRm9yU2VsZWN0b3JTdHJ1Y3R1cmUoXHJcbiAgICBvcHRpb246IFNlbGVjdG9yU3RydWN0dXJlLFxyXG4gICAgcHVibGljYXRpb246IG51bWJlcixcclxuICAgIHRodW1iTmFpbDogYm9vbGVhbiA9IHRydWUsXHJcbiAgICBzaG93TG9hZGVyOiBib29sZWFuID0gdHJ1ZVxyXG4gICk6IFByb21pc2U8c3RyaW5nPiB7XHJcbiAgICB0cnkge1xyXG4gICAgICBjb25zdCByZXNwb25zZTogRGF0YVNlcnZpY2VSZXNwb25zZURhdGEgPSBhd2FpdCB0aGlzLl9tYWluQXBpLmdldEltYWdlKG9wdGlvbi5hcnROb2RlSWQsIHB1YmxpY2F0aW9uLCB0cnVlLCB0aHVtYk5haWwsIFRhYmxlTmFtZS5Hb29kcyk7XHJcbiAgICAgIGlmIChyZXNwb25zZSAmJiByZXNwb25zZS52YWxpZGF0aW9uUmVzdWx0ICYmIHJlc3BvbnNlLnZhbGlkYXRpb25SZXN1bHQuc3VjY2VzcyAmJiByZXNwb25zZS5yZXN1bHRPYmplY3QpIHtcclxuICAgICAgICBjb25zdCBpbWFnZUNvbnRlbnQ6IEltYWdlQ29udGVudCA9XHJcbiAgICAgICAgICB0aGlzLl9ib0ZhY3RvcnkubWFrZVdpdGhSYXdCYWNrZW5kRGF0YShJbWFnZUNvbnRlbnQsIHJlc3BvbnNlLnJlc3VsdE9iamVjdCkgYXMgdW5rbm93biBhcyBJbWFnZUNvbnRlbnQ7XHJcbiAgICAgICAgaWYgKGltYWdlQ29udGVudC5pbWFnZSAhPT0gbnVsbCAmJiBpbWFnZUNvbnRlbnQuaW1hZ2UgIT09IHVuZGVmaW5lZCAmJiBpbWFnZUNvbnRlbnQuaW1hZ2UgIT09ICcnKSB7XHJcbiAgICAgICAgICByZXR1cm4gaW1hZ2VDb250ZW50LmltYWdlO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICByZXR1cm4gJyc7XHJcbiAgICAgICAgfVxyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHJldHVybiAnJztcclxuICAgICAgfVxyXG4gICAgfSBjYXRjaCAoZSkge1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldEpzb25Db25maWd1cmVkQXJ0aWNsZXMoZ29vZElkOiBudW1iZXIsXHJcbiAgICBnb29kVHlwZTogc3RyaW5nLFxyXG4gICAgcXVhbnRpdHk6IG51bWJlcixcclxuICAgIGV4dGVybmFsU291cmNlOiBib29sZWFuID0gZmFsc2UsXHJcbiAgICBzaG93TG9hZGVyOiBib29sZWFuID0gdHJ1ZSxcclxuICAgIGluc3RhbmNlSWQ/OiBzdHJpbmcsXHJcbiAgICBjb25maWd1cmF0b3JTdGF0aXN0aWNzPzogQ29uZmlndXJhdG9yU3RhdGlzdGljc0Vudmlyb25tZW50KTogUHJvbWlzZTxzdHJpbmc+IHtcclxuICAgIHRyeSB7XHJcbiAgICAgIC8vIEB0cy1pZ25vcmVcclxuICAgICAgcmV0dXJuIHRoaXMuX2FydGljbGVBcGkuZ2V0SnNvbkFydGljbGVGbGF0VHJlZShcclxuICAgICAgICBnb29kSWQsXHJcbiAgICAgICAgZ29vZFR5cGUsXHJcbiAgICAgICAgcXVhbnRpdHksXHJcbiAgICAgICAgZXh0ZXJuYWxTb3VyY2UsXHJcbiAgICAgICAgc2hvd0xvYWRlcixcclxuICAgICAgICBpbnN0YW5jZUlkLnRvU3RyaW5nKCksXHJcbiAgICAgICAgY29uZmlndXJhdG9yU3RhdGlzdGljc1xyXG4gICAgICApO1xyXG4gICAgfSBjYXRjaCAoZSkge1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfZ2V0UHVibGljYXRpb25Db2RlRm9yUm9sZShyb2xlOiBzdHJpbmcpOiBudW1iZXIge1xyXG4gICAgaWYgKHRoaXMuX3B1YmxpY2F0aW9uQ29kZUZvclVzZXJSb2xlLmhhcyhyb2xlKSkge1xyXG4gICAgICByZXR1cm4gdGhpcy5fcHVibGljYXRpb25Db2RlRm9yVXNlclJvbGUuZ2V0KHJvbGUpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIG51bGw7XHJcbiAgfVxyXG5cclxufVxyXG5cclxuZnVuY3Rpb24gbm90TmlsbChxdWVzdGlvblB1YmxpY2F0aW9uQ29kZTogYW55KTogYm9vbGVhbiB7XHJcbiAgdGhyb3cgbmV3IEVycm9yKCdGdW5jdGlvbiBub3QgaW1wbGVtZW50ZWQuJyk7XHJcbn1cclxuXHJcbiJdfQ==
@@ -1,119 +0,0 @@
1
- import { __awaiter } from "tslib";
2
- import { EventEmitter, Injectable } from '@angular/core';
3
- import { ConfigurationTemplate } from '../enum/configuration-template.enum';
4
- import * as i0 from "@angular/core";
5
- import * as i1 from "./app-initializer.service";
6
- import * as i2 from "./switch-load-furniture.service";
7
- import * as i3 from "./switch-build-furniture.service";
8
- import * as i4 from "./app-event.service";
9
- import * as i5 from "./configurator-connector.service";
10
- export class ConfiguringService {
11
- constructor(_initializerService, _loadFurnitureService, _buildFurnitureService, _appEventService, _configuratorConnectorService) {
12
- this._initializerService = _initializerService;
13
- this._loadFurnitureService = _loadFurnitureService;
14
- this._buildFurnitureService = _buildFurnitureService;
15
- this._appEventService = _appEventService;
16
- this._configuratorConnectorService = _configuratorConnectorService;
17
- this.onShowLiteSelector = new EventEmitter();
18
- this.onShowSelections = new EventEmitter();
19
- this.onShowAnswers = new EventEmitter();
20
- this.onShowFullConfiguration = new EventEmitter();
21
- this._isConfiguring = false;
22
- this._showFullConfiguration = false;
23
- this._subs = [];
24
- this._subs.push(this._appEventService.configurationTemplateChange.subscribe((template) => this._handleTemplateChange(template)));
25
- }
26
- set settings(value) {
27
- this._settings = value;
28
- }
29
- get settings() {
30
- return this._settings;
31
- }
32
- set sku(value) {
33
- this._sku = value;
34
- }
35
- get sku() {
36
- return this._sku;
37
- }
38
- set instanceId(value) {
39
- this._instanceId = value;
40
- }
41
- get instanceId() {
42
- return this._instanceId;
43
- }
44
- set isConfiguring(value) {
45
- this._isConfiguring = value;
46
- }
47
- get isConfiguring() {
48
- return this._isConfiguring;
49
- }
50
- set scene(value) {
51
- this._scene = value;
52
- this._buildFurnitureService.currentActiveService.scene = this.scene;
53
- }
54
- get scene() {
55
- return this._scene;
56
- }
57
- ngOnDestroy() {
58
- this._subs.forEach(s => s.unsubscribe());
59
- }
60
- init(settings) {
61
- return __awaiter(this, void 0, void 0, function* () {
62
- if (typeof settings === 'string') {
63
- this.settings = JSON.parse(settings);
64
- }
65
- else {
66
- this.settings = settings;
67
- }
68
- yield this._initializerService.initializeApp(this.settings);
69
- });
70
- }
71
- configure(furnitureData, shouldCopyInstance = false, looseOriginalConfiguration = true, fromPreset = false, standAlone = false, fromScratch = false, loadFromProject = false) {
72
- return __awaiter(this, void 0, void 0, function* () {
73
- this._configuratorConnectorService.emptySelections();
74
- if (furnitureData.sku) {
75
- this.sku = furnitureData.sku;
76
- // clear instanceId here, when changing the sku, we should start fresh
77
- this.instanceId = null;
78
- }
79
- if (furnitureData.instanceId) {
80
- this.instanceId = furnitureData.instanceId;
81
- }
82
- if (furnitureData) {
83
- try {
84
- this.buildResult = yield this._loadFurnitureService.currentActiveService.loadFurniture(furnitureData, shouldCopyInstance, looseOriginalConfiguration, standAlone, fromScratch, fromPreset, loadFromProject);
85
- if (this._showFullConfiguration) {
86
- this.onShowFullConfiguration.emit(this.isConfiguring);
87
- }
88
- else {
89
- this.onShowLiteSelector.emit(this.isConfiguring);
90
- this.onShowSelections.emit(this.isConfiguring);
91
- this.onShowAnswers.emit(this.isConfiguring);
92
- }
93
- }
94
- catch (error) {
95
- console.error('Error loading furniture configuration:', error);
96
- this._appEventService.articleNotFound.next(error);
97
- }
98
- }
99
- });
100
- }
101
- _handleTemplateChange(template) {
102
- if (template === ConfigurationTemplate.default) {
103
- this._showFullConfiguration = false;
104
- }
105
- else if (template === ConfigurationTemplate.showFullConfiguration) {
106
- this._showFullConfiguration = true;
107
- }
108
- else {
109
- this._showFullConfiguration = false;
110
- }
111
- }
112
- }
113
- ConfiguringService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: ConfiguringService, deps: [{ token: i1.AppInitializerService }, { token: i2.SwitchLoadFurnitureService }, { token: i3.SwitchBuildFurnitureService }, { token: i4.AppEventService }, { token: i5.ConfiguratorConnectorService }], target: i0.ɵɵFactoryTarget.Injectable });
114
- ConfiguringService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: ConfiguringService, providedIn: 'root' });
115
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: ConfiguringService, decorators: [{
116
- type: Injectable,
117
- args: [{ providedIn: 'root' }]
118
- }], ctorParameters: function () { return [{ type: i1.AppInitializerService }, { type: i2.SwitchLoadFurnitureService }, { type: i3.SwitchBuildFurnitureService }, { type: i4.AppEventService }, { type: i5.ConfiguratorConnectorService }]; } });
119
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlndXJpbmcuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvbmZpZ3VyYXRvci9zcmMvbGliL3NlcnZpY2VzL2NvbmZpZ3VyaW5nLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBQyxZQUFZLEVBQUUsVUFBVSxFQUFvQixNQUFNLGVBQWUsQ0FBQztBQVMxRSxPQUFPLEVBQUMscUJBQXFCLEVBQUMsTUFBTSxxQ0FBcUMsQ0FBQzs7Ozs7OztBQUsxRSxNQUFNLE9BQU8sa0JBQWtCO0lBNEQ3QixZQUNVLG1CQUEwQyxFQUMxQyxxQkFBaUQsRUFDakQsc0JBQW1ELEVBQ25ELGdCQUFpQyxFQUNqQyw2QkFBMkQ7UUFKM0Qsd0JBQW1CLEdBQW5CLG1CQUFtQixDQUF1QjtRQUMxQywwQkFBcUIsR0FBckIscUJBQXFCLENBQTRCO1FBQ2pELDJCQUFzQixHQUF0QixzQkFBc0IsQ0FBNkI7UUFDbkQscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFpQjtRQUNqQyxrQ0FBNkIsR0FBN0IsNkJBQTZCLENBQThCO1FBdEI5RCx1QkFBa0IsR0FBMEIsSUFBSSxZQUFZLEVBQVcsQ0FBQztRQUN4RSxxQkFBZ0IsR0FBMEIsSUFBSSxZQUFZLEVBQVcsQ0FBQztRQUN0RSxrQkFBYSxHQUEwQixJQUFJLFlBQVksRUFBVyxDQUFDO1FBQ25FLDRCQUF1QixHQUEwQixJQUFJLFlBQVksRUFBVyxDQUFDO1FBUTVFLG1CQUFjLEdBQVksS0FBSyxDQUFDO1FBRWhDLDJCQUFzQixHQUFZLEtBQUssQ0FBQztRQUV4QyxVQUFLLEdBQW1CLEVBQUUsQ0FBQztRQVNqQyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FDYixJQUFJLENBQUMsZ0JBQWdCLENBQUMsMkJBQTJCLENBQUMsU0FBUyxDQUFDLENBQUMsUUFBK0IsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLHFCQUFxQixDQUFDLFFB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TTt3QkFDTCxJQUFJLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQzt3QkFDakQsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7d0JBQy9DLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQztxQkFDN0M7aUJBQ0Y7Z0JBQUMsT0FBTyxLQUFLLEVBQUU7b0JBQ2QsT0FBTyxDQUFDLEtBQUssQ0FBQyx3Q0FBd0MsRUFBRSxLQUFLLENBQUMsQ0FBQztvQkFDL0QsSUFBSSxDQUFDLGdCQUFnQixDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7aUJBQ25EO2FBQ0Y7UUFDSCxDQUFDO0tBQUE7SUFFTyxxQkFBcUIsQ0FBQyxRQUErQjtRQUMzRCxJQUFJLFFBQVEsS0FBSyxxQkFBcUIsQ0FBQyxPQUFPLEVBQUU7WUFDOUMsSUFBSSxDQUFDLHNCQUFzQixHQUFHLEtBQUssQ0FBQztTQUNyQzthQUFNLElBQUksUUFBUSxLQUFLLHFCQUFxQixDQUFDLHFCQUFxQixFQUFFO1lBQ25FLElBQUksQ0FBQyxzQkFBc0IsR0FBRyxJQUFJLENBQUM7U0FDcEM7YUFBTTtZQUNMLElBQUksQ0FBQyxzQkFBc0IsR0FBRyxLQUFLLENBQUM7U0FDckM7SUFDSCxDQUFDOztnSEExSVUsa0JBQWtCO29IQUFsQixrQkFBa0IsY0FGTixNQUFNOzRGQUVsQixrQkFBa0I7a0JBRjlCLFVBQVU7bUJBQUMsRUFBQyxVQUFVLEVBQUUsTUFBTSxFQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtFdmVudEVtaXR0ZXIsIEluamVjdGFibGUsIE9uRGVzdHJveSwgT25Jbml0fSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHtDb25maWd1cmF0b3JTZXR0aW5nc30gZnJvbSAnLi4vbW9kZWwvY29uZmlndXJhdG9yLXNldHRpbmdzJztcclxuaW1wb3J0IHtTY2VuZX0gZnJvbSAndGhyZWUnO1xyXG5pbXBvcnQge0FwcEluaXRpYWxpemVyU2VydmljZX0gZnJvbSAnLi9hcHAtaW5pdGlhbGl6ZXIuc2VydmljZSc7XHJcbmltcG9ydCB7Q29uZmlndXJhdGlvblJlc3VsdE9iamVjdH0gZnJvbSAnLi4vbW9kZWwvY29uZmlndXJhdGlvbi1yZXN1bHQtb2JqZWN0JztcclxuaW1wb3J0IHtTd2l0Y2hMb2FkRnVybml0dXJlU2VydmljZX0gZnJvbSAnLi9zd2l0Y2gtbG9hZC1mdXJuaXR1cmUuc2VydmljZSc7XHJcbmltcG9ydCB7QXBwRXZlbnRTZXJ2aWNlfSBmcm9tICcuL2FwcC1ldmVudC5zZXJ2aWNlJztcclxuaW1wb3J0IHtTd2l0Y2hCdWlsZEZ1cm5pdHVyZVNlcnZpY2V9IGZyb20gJy4vc3dpdGNoLWJ1aWxkLWZ1cm5pdHVyZS5zZXJ2aWNlJztcclxuaW1wb3J0IHtDb25maWd1cmF0b3JDb25uZWN0b3JTZXJ2aWNlfSBmcm9tICcuL2NvbmZpZ3VyYXRvci1jb25uZWN0b3Iuc2VydmljZSc7XHJcbmltcG9ydCB7Q29uZmlndXJhdGlvblRlbXBsYXRlfSBmcm9tICcuLi9lbnVtL2NvbmZpZ3VyYXRpb24tdGVtcGxhdGUuZW51bSc7XHJcbmltcG9ydCB7U3Vic2NyaXB0aW9ufSBmcm9tICdyeGpzJztcclxuXHJcbkBJbmplY3RhYmxlKHtwcm92aWRlZEluOiAncm9vdCd9KVxyXG5cclxuZXhwb3J0IGNsYXNzIENvbmZpZ3VyaW5nU2VydmljZSBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XHJcblxyXG4gIHB1YmxpYyBzZXQgc2V0dGluZ3ModmFsdWU6IENvbmZpZ3VyYXRvclNldHRpbmdzKSB7XHJcbiAgICB0aGlzLl9zZXR0aW5ncyA9IHZhbHVlO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldCBzZXR0aW5ncygpOiBDb25maWd1cmF0b3JTZXR0aW5ncyB7XHJcbiAgICByZXR1cm4gdGhpcy5fc2V0dGluZ3M7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgc2V0IHNrdSh2YWx1ZTogc3RyaW5nKSB7XHJcbiAgICB0aGlzLl9za3UgPSB2YWx1ZTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXQgc2t1KCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gdGhpcy5fc2t1O1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHNldCBpbnN0YW5jZUlkKHZhbHVlOiBzdHJpbmcpIHtcclxuICAgIHRoaXMuX2luc3RhbmNlSWQgPSB2YWx1ZTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXQgaW5zdGFuY2VJZCgpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIHRoaXMuX2luc3RhbmNlSWQ7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgc2V0IGlzQ29uZmlndXJpbmcodmFsdWU6IGJvb2xlYW4pIHtcclxuICAgIHRoaXMuX2lzQ29uZmlndXJpbmcgPSB2YWx1ZTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXQgaXNDb25maWd1cmluZygpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLl9pc0NvbmZpZ3VyaW5nO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHNldCBzY2VuZSh2YWx1ZTogU2NlbmUpIHtcclxuICAgIHRoaXMuX3NjZW5lID0gdmFsdWU7XHJcbiAgICB0aGlzLl9idWlsZEZ1cm5pdHVyZVNlcnZpY2UuY3VycmVudEFjdGl2ZVNlcnZpY2Uuc2NlbmUgPSB0aGlzLnNjZW5lO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldCBzY2VuZSgpOiBTY2VuZSB7XHJcbiAgICByZXR1cm4gdGhpcy5fc2NlbmU7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgb25TaG93TGl0ZVNlbGVjdG9yOiBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4gPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XHJcbiAgcHVibGljIG9uU2hvd1NlbGVjdGlvbnM6IEV2ZW50RW1pdHRlcjxib29sZWFuPiA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcclxuICBwdWJsaWMgb25TaG93QW5zd2VyczogRXZlbnRFbWl0dGVyPGJvb2xlYW4+ID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xyXG4gIHB1YmxpYyBvblNob3dGdWxsQ29uZmlndXJhdGlvbjogRXZlbnRFbWl0dGVyPGJvb2xlYW4+ID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xyXG5cclxuXHJcbiAgcHVibGljIGJ1aWxkUmVzdWx0OiBDb25maWd1cmF0aW9uUmVzdWx0T2JqZWN0O1xyXG5cclxuICBwcml2YXRlIF9zZXR0aW5nczogQ29uZmlndXJhdG9yU2V0dGluZ3M7XHJcbiAgcHJpdmF0ZSBfc2t1OiBzdHJpbmc7XHJcbiAgcHJpdmF0ZSBfaW5zdGFuY2VJZDogc3RyaW5nO1xyXG4gIHByaXZhdGUgX2lzQ29uZmlndXJpbmc6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBwcml2YXRlIF9zY2VuZTogU2NlbmU7XHJcbiAgcHJpdmF0ZSBfc2hvd0Z1bGxDb25maWd1cmF0aW9uOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIHByaXZhdGUgX3N1YnM6IFN1YnNjcmlwdGlvbltdID0gW107XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBfaW5pdGlhbGl6ZXJTZXJ2aWNlOiBBcHBJbml0aWFsaXplclNlcnZpY2UsXHJcbiAgICBwcml2YXRlIF9sb2FkRnVybml0dXJlU2VydmljZTogU3dpdGNoTG9hZEZ1cm5pdHVyZVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIF9idWlsZEZ1cm5pdHVyZVNlcnZpY2U6IFN3aXRjaEJ1aWxkRnVybml0dXJlU2VydmljZSxcclxuICAgIHByaXZhdGUgX2FwcEV2ZW50U2VydmljZTogQXBwRXZlbnRTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBfY29uZmlndXJhdG9yQ29ubmVjdG9yU2VydmljZTogQ29uZmlndXJhdG9yQ29ubmVjdG9yU2VydmljZVxyXG4gICkge1xyXG4gICAgdGhpcy5fc3Vicy5wdXNoKFxyXG4gICAgICB0aGlzLl9hcHBFdmVudFNlcnZpY2UuY29uZmlndXJhdGlvblRlbXBsYXRlQ2hhbmdlLnN1YnNjcmliZSgodGVtcGxhdGU6IENvbmZpZ3VyYXRpb25UZW1wbGF0ZSkgPT4gdGhpcy5faGFuZGxlVGVtcGxhdGVDaGFuZ2UodGVtcGxhdGUpKVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBuZ09uRGVzdHJveSgpIHtcclxuICAgIHRoaXMuX3N1YnMuZm9yRWFjaChzID0+IHMudW5zdWJzY3JpYmUoKSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgYXN5bmMgaW5pdChzZXR0aW5nczogYW55KTogUHJvbWlzZTx2b2lkPiB7XHJcbiAgICBpZiAodHlwZW9mIHNldHRpbmdzID09PSAnc3RyaW5nJykge1xyXG4gICAgICB0aGlzLnNldHRpbmdzID0gSlNPTi5wYXJzZShzZXR0aW5ncyk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLnNldHRpbmdzID0gc2V0dGluZ3M7XHJcbiAgICB9XHJcbiAgICBhd2FpdCB0aGlzLl9pbml0aWFsaXplclNlcnZpY2UuaW5pdGlhbGl6ZUFwcCh0aGlzLnNldHRpbmdzKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBhc3luYyBjb25maWd1cmUoXHJcbiAgICBmdXJuaXR1cmVEYXRhOiBDb25maWd1cmF0aW9uUmVzdWx0T2JqZWN0LFxyXG4gICAgc2hvdWxkQ29weUluc3RhbmNlOiBib29sZWFuID0gZmFsc2UsXHJcbiAgICBsb29zZU9yaWdpbmFsQ29uZmlndXJhdGlvbjogYm9vbGVhbiA9IHRydWUsXHJcbiAgICBmcm9tUHJlc2V0OiBib29sZWFuID0gZmFsc2UsXHJcbiAgICBzdGFuZEFsb25lOiBib29sZWFuID0gZmFsc2UsXHJcbiAgICBmcm9tU2NyYXRjaDogYm9vbGVhbiA9IGZhbHNlLFxyXG4gICAgbG9hZEZyb21Qcm9qZWN0OiBib29sZWFuID0gZmFsc2VcclxuICApOiBQcm9taXNlPHZvaWQ+IHtcclxuXHJcbiAgICB0aGlzLl9jb25maWd1cmF0b3JDb25uZWN0b3JTZXJ2aWNlLmVtcHR5U2VsZWN0aW9ucygpO1xyXG4gICAgaWYgKGZ1cm5pdHVyZURhdGEuc2t1KSB7XHJcbiAgICAgIHRoaXMuc2t1ID0gZnVybml0dXJlRGF0YS5za3U7XHJcbiAgICAgIC8vIGNsZWFyIGluc3RhbmNlSWQgaGVyZSwgd2hlbiBjaGFuZ2luZyB0aGUgc2t1LCB3ZSBzaG91bGQgc3RhcnQgZnJlc2hcclxuICAgICAgdGhpcy5pbnN0YW5jZUlkID0gbnVsbDtcclxuICAgIH1cclxuICAgIGlmIChmdXJuaXR1cmVEYXRhLmluc3RhbmNlSWQpIHtcclxuICAgICAgdGhpcy5pbnN0YW5jZUlkID0gZnVybml0dXJlRGF0YS5pbnN0YW5jZUlkO1xyXG4gICAgfVxyXG4gICAgaWYgKGZ1cm5pdHVyZURhdGEpIHtcclxuICAgICAgdHJ5IHtcclxuICAgICAgICB0aGlzLmJ1aWxkUmVzdWx0ID0gYXdhaXQgdGhpcy5fbG9hZEZ1cm5pdHVyZVNlcnZpY2UuY3VycmVudEFjdGl2ZVNlcnZpY2UubG9hZEZ1cm5pdHVyZShcclxuICAgICAgICAgIGZ1cm5pdHVyZURhdGEsXHJcbiAgICAgICAgICBzaG91bGRDb3B5SW5zdGFuY2UsXHJcbiAgICAgICAgICBsb29zZU9yaWdpbmFsQ29uZmlndXJhdGlvbixcclxuICAgICAgICAgIHN0YW5kQWxvbmUsXHJcbiAgICAgICAgICBmcm9tU2NyYXRjaCxcclxuICAgICAgICAgIGZyb21QcmVzZXQsXHJcbiAgICAgICAgICBsb2FkRnJvbVByb2plY3RcclxuICAgICAgICApO1xyXG5cclxuICAgICAgICBpZiAodGhpcy5fc2hvd0Z1bGxDb25maWd1cmF0aW9uKSB7XHJcbiAgICAgICAgICB0aGlzLm9uU2hvd0Z1bGxDb25maWd1cmF0aW9uLmVtaXQodGhpcy5pc0NvbmZpZ3VyaW5nKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgdGhpcy5vblNob3dMaXRlU2VsZWN0b3IuZW1pdCh0aGlzLmlzQ29uZmlndXJpbmcpO1xyXG4gICAgICAgICAgdGhpcy5vblNob3dTZWxlY3Rpb25zLmVtaXQodGhpcy5pc0NvbmZpZ3VyaW5nKTtcclxuICAgICAgICAgIHRoaXMub25TaG93QW5zd2Vycy5lbWl0KHRoaXMuaXNDb25maWd1cmluZyk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9IGNhdGNoIChlcnJvcikge1xyXG4gICAgICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIGxvYWRpbmcgZnVybml0dXJlIGNvbmZpZ3VyYXRpb246JywgZXJyb3IpO1xyXG4gICAgICAgIHRoaXMuX2FwcEV2ZW50U2VydmljZS5hcnRpY2xlTm90Rm91bmQubmV4dChlcnJvcik7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgX2hhbmRsZVRlbXBsYXRlQ2hhbmdlKHRlbXBsYXRlOiBDb25maWd1cmF0aW9uVGVtcGxhdGUpOiB2b2lkIHtcclxuICAgIGlmICh0ZW1wbGF0ZSA9PT0gQ29uZmlndXJhdGlvblRlbXBsYXRlLmRlZmF1bHQpIHtcclxuICAgICAgdGhpcy5fc2hvd0Z1bGxDb25maWd1cmF0aW9uID0gZmFsc2U7XHJcbiAgICB9IGVsc2UgaWYgKHRlbXBsYXRlID09PSBDb25maWd1cmF0aW9uVGVtcGxhdGUuc2hvd0Z1bGxDb25maWd1cmF0aW9uKSB7XHJcbiAgICAgIHRoaXMuX3Nob3dGdWxsQ29uZmlndXJhdGlvbiA9IHRydWU7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLl9zaG93RnVsbENvbmZpZ3VyYXRpb24gPSBmYWxzZTtcclxuICAgIH1cclxuICB9XHJcblxyXG59XHJcbiJdfQ==