@colijnit/homedecorator 258.1.1 → 258.1.2

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 (92) hide show
  1. package/app/core/enum/icon.enum.d.ts +1 -0
  2. package/app/core/enum/message-type.enum.d.ts +2 -1
  3. package/app/core/interface/message-with-payload.interface.d.ts +1 -0
  4. package/app/core/model/homedecorator-settings-options.d.ts +1 -1
  5. package/app/core/model/homedecorator-settings.d.ts +3 -0
  6. package/app/core/service/3dm-api.d.ts +2 -2
  7. package/app/core/service/homedecorator-app-event.service.d.ts +1 -0
  8. package/app/core/service/homedecorator-connector-adapter.service.d.ts +9 -1
  9. package/app/core/service/homedecorator-connector.service.d.ts +15 -2
  10. package/app/core/service/utils.service.d.ts +1 -1
  11. package/app/core/utils/object.utils.d.ts +2 -0
  12. package/app/homedecorator.module.d.ts +2 -1
  13. package/app/plugins/core3d/service/wall-measurements.service.d.ts +2 -0
  14. package/app/plugins/model-uploader/model-previewer/model-preview.component.d.ts +3 -0
  15. package/app/plugins/product-catalog/product-catalog/product-catalog.component.d.ts +2 -0
  16. package/app/plugins/product-configurator/product-configurator-selector-list-of-values.component.scss +28 -0
  17. package/app/plugins/product-configurator/product-configurator-selector-option-button.component.d.ts +19 -0
  18. package/app/plugins/product-configurator/product-configurator-selector-option-button.component.scss +38 -0
  19. package/app/plugins/product-configurator/product-configurator-selector-option-dropdown.component.d.ts +20 -0
  20. package/app/plugins/product-configurator/product-configurator-selector-option-dropdown.component.scss +0 -0
  21. package/app/plugins/product-configurator/product-configurator-selector-option-list-of-values.component.d.ts +19 -0
  22. package/app/plugins/product-configurator/product-configurator-selector-option-tile.component.scss +56 -0
  23. package/app/plugins/product-configurator/product-configurator-selector-option-tile.compontent.d.ts +20 -0
  24. package/app/plugins/product-configurator/product-configurator-selector.component.d.ts +26 -0
  25. package/app/plugins/product-configurator/product-configurator-selector.component.scss +46 -0
  26. package/app/plugins/product-configurator/product-configurator.component.d.ts +38 -0
  27. package/app/plugins/product-configurator/product-configurator.component.scss +35 -0
  28. package/app/plugins/product-configurator/product-configurator.module.d.ts +18 -0
  29. package/app/plugins/product-configurator/template_variables.scss +13 -0
  30. package/app/plugins/render/model/blender-render-settings.d.ts +10 -0
  31. package/app/plugins/render/model/blender-scene-settings.d.ts +18 -0
  32. package/app/plugins/render/render-controls/render-controls.component.d.ts +19 -7
  33. package/app/plugins/render/service/new-render.service.d.ts +21 -4
  34. package/app/plugins/room-planner/components/floor-catalog/floor-catalog.component.scss +1 -1
  35. package/app/plugins/threedselector/threedselector/service/build-furniture.service.d.ts +5 -0
  36. package/app/plugins/threedselector/threedselector/threedselector.component.d.ts +4 -0
  37. package/app/plugins/threedselector/threedselector/threedselector.component.scss +17 -0
  38. package/app/plugins/threedselector/threedselector.module.d.ts +2 -1
  39. package/app/plugins/toolbar/draw-dialog/draw-dialog.component.scss +1 -1
  40. package/assets/icons/circle_regular.svg +0 -0
  41. package/bundles/colijnit-homedecorator.umd.js +1986 -835
  42. package/bundles/colijnit-homedecorator.umd.js.map +1 -1
  43. package/esm2015/app/app.version.js +3 -3
  44. package/esm2015/app/core/enum/icon.enum.js +2 -1
  45. package/esm2015/app/core/enum/message-type.enum.js +2 -1
  46. package/esm2015/app/core/interface/message-with-payload.interface.js +1 -1
  47. package/esm2015/app/core/model/homedecorator-settings-options.js +2 -2
  48. package/esm2015/app/core/model/homedecorator-settings.js +3 -1
  49. package/esm2015/app/core/model/icon.js +2 -1
  50. package/esm2015/app/core/service/3dm-api.js +15 -22
  51. package/esm2015/app/core/service/homedecorator-app-event.service.js +3 -2
  52. package/esm2015/app/core/service/homedecorator-connector-adapter.service.js +65 -7
  53. package/esm2015/app/core/service/homedecorator-connector.service.js +150 -6
  54. package/esm2015/app/core/service/homedecorator-settings.service.js +8 -1
  55. package/esm2015/app/core/service/utils.service.js +116 -93
  56. package/esm2015/app/core/utils/object.utils.js +13 -1
  57. package/esm2015/app/homedecorator.component.js +1 -2
  58. package/esm2015/app/homedecorator.module.js +8 -4
  59. package/esm2015/app/plugins/core3d/core3d/core3d.component.js +2 -2
  60. package/esm2015/app/plugins/core3d/service/wall-measurements.service.js +7 -1
  61. package/esm2015/app/plugins/model-uploader/model-previewer/model-preview.component.js +98 -50
  62. package/esm2015/app/plugins/model-uploader/model-uploader/model-uploader.component.js +4 -4
  63. package/esm2015/app/plugins/product-catalog/product-catalog/product-catalog.component.js +21 -11
  64. package/esm2015/app/plugins/product-configurator/product-configurator-selector-option-button.component.js +67 -0
  65. package/esm2015/app/plugins/product-configurator/product-configurator-selector-option-dropdown.component.js +57 -0
  66. package/esm2015/app/plugins/product-configurator/product-configurator-selector-option-list-of-values.component.js +75 -0
  67. package/esm2015/app/plugins/product-configurator/product-configurator-selector-option-tile.compontent.js +90 -0
  68. package/esm2015/app/plugins/product-configurator/product-configurator-selector.component.js +253 -0
  69. package/esm2015/app/plugins/product-configurator/product-configurator.component.js +151 -0
  70. package/esm2015/app/plugins/product-configurator/product-configurator.module.js +115 -0
  71. package/esm2015/app/plugins/render/model/blender-render-settings.js +3 -0
  72. package/esm2015/app/plugins/render/model/blender-scene-settings.js +10 -0
  73. package/esm2015/app/plugins/render/model/render-parameters.js +3 -3
  74. package/esm2015/app/plugins/render/render-controls/render-controls.component.js +532 -446
  75. package/esm2015/app/plugins/render/render-dialog/render-dialog.component.js +6 -40
  76. package/esm2015/app/plugins/render/service/new-render.service.js +212 -44
  77. package/esm2015/app/plugins/render/service/render.service.js +6 -9
  78. package/esm2015/app/plugins/room-planner/components/floor-catalog/floor-catalog.component.js +1 -1
  79. package/esm2015/app/plugins/room-planner/components/texture-picker/texture-picker.component.js +1 -1
  80. package/esm2015/app/plugins/room-planner/room-planner/room-planner.component.js +12 -10
  81. package/esm2015/app/plugins/threedselector/element-buttons/element-buttons.component.js +2 -2
  82. package/esm2015/app/plugins/threedselector/threedselector/service/build-furniture.service.js +55 -1
  83. package/esm2015/app/plugins/threedselector/threedselector/service/load-furniture.service.js +3 -3
  84. package/esm2015/app/plugins/threedselector/threedselector/threedselector.component.js +64 -15
  85. package/esm2015/app/plugins/threedselector/threedselector/utils/asset.utils.js +1 -1
  86. package/esm2015/app/plugins/threedselector/threedselector.module.js +8 -4
  87. package/esm2015/app/plugins/toolbar/draw-dialog/draw-dialog.component.js +1 -1
  88. package/esm2015/app/shared/category-library/category-library.component.js +1 -1
  89. package/fesm2015/colijnit-homedecorator.js +2522 -1149
  90. package/fesm2015/colijnit-homedecorator.js.map +1 -1
  91. package/package.json +4 -4
  92. package/styles.scss +1 -1
@@ -43,6 +43,7 @@ export class HomedecoratorSettingsService {
43
43
  }
44
44
  const ownOptions = Object.assign({}, this.settings.options);
45
45
  const ownRenderParameters = Object.assign({}, this.settings.renderParameters);
46
+ const blenderSceneSettings = Object.assign({}, this.settings.blenderSceneSettings);
46
47
  this.settings = Object.assign({}, this.settings, obj);
47
48
  if (obj.renderParameters) {
48
49
  this.settings.renderParameters = Object.assign({}, ownRenderParameters, obj.renderParameters);
@@ -50,6 +51,9 @@ export class HomedecoratorSettingsService {
50
51
  if (obj.options) {
51
52
  this.settings.options = Object.assign({}, ownOptions, obj.options);
52
53
  }
54
+ if (obj.blenderSceneSettings) {
55
+ this.settings.blenderSceneSettings = Object.assign({}, blenderSceneSettings, obj.blenderSceneSettings);
56
+ }
53
57
  if (obj.hasOwnProperty('assetPath')) {
54
58
  this.settings.assetPath = obj['assetPath'];
55
59
  if (!this.settings.assetPath[this.settings.assetPath.length - 1].endsWith('/')) {
@@ -82,6 +86,9 @@ export class HomedecoratorSettingsService {
82
86
  if (obj.hasOwnProperty('standAloneRoomplanner')) {
83
87
  this.settings.standAloneRoomplanner = obj['standAloneRoomplanner'];
84
88
  }
89
+ this._connectorService.mainUrl = this.settings.url;
90
+ this._connectorService.mainSchema = this.settings.schema;
91
+ this._connectorService.mainVersion = this.settings.version;
85
92
  }
86
93
  initializeSettings() {
87
94
  return __awaiter(this, void 0, void 0, function* () {
@@ -151,4 +158,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImpo
151
158
  providedIn: 'root'
152
159
  }]
153
160
  }], ctorParameters: function () { return [{ type: i1.JsonUtilsService }, { type: i2.HomedecoratorDictionaryService }, { type: i3.HomedecoratorConnectorAdapterService }]; } });
154
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaG9tZWRlY29yYXRvci1zZXR0aW5ncy5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2NsaWVudC9hcHAvY29yZS9zZXJ2aWNlL2hvbWVkZWNvcmF0b3Itc2V0dGluZ3Muc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFBQSxPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBQyxxQkFBcUIsRUFBQyxNQUFNLGlDQUFpQyxDQUFDO0FBRXRFLE9BQU8sRUFBQyxlQUFlLEVBQUUsT0FBTyxFQUFDLE1BQU0sTUFBTSxDQUFDO0FBQzlDLE9BQU8sRUFBQyxXQUFXLEVBQUMsTUFBTSxtQ0FBbUMsQ0FBQztBQUM5RCxPQUFPLEVBQUMsT0FBTyxFQUFDLE1BQU0scUNBQXFDLENBQUM7QUFDNUQsT0FBTyxFQUFDLDRCQUE0QixFQUFDLE1BQU0seUNBQXlDLENBQUM7QUFDckYsT0FBTyxFQUFDLGFBQWEsRUFBQyxNQUFNLGtEQUFrRCxDQUFDOzs7OztBQU8vRSxNQUFNLE9BQU8sNEJBQTRCO0lBbUJ2QyxZQUNVLGlCQUFtQyxFQUNuQyxrQkFBa0QsRUFDbEQsaUJBQXVEO1FBRnZELHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBa0I7UUFDbkMsdUJBQWtCLEdBQWxCLGtCQUFrQixDQUFnQztRQUNsRCxzQkFBaUIsR0FBakIsaUJBQWlCLENBQXNDO1FBUjFELG1CQUFjLEdBQTZCLElBQUksZUFBZSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3RFLG9CQUFlLEdBQWtCLElBQUksT0FBTyxFQUFRLENBQUM7UUFFcEQsY0FBUyxHQUEwQixJQUFJLHFCQUFxQixFQUFFLENBQUM7UUFPckUsOEJBQThCO0lBQ2hDLENBQUM7SUF2QkQsSUFBVyxRQUFRLENBQUMsS0FBNEI7UUFDOUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxLQUFLLENBQUM7SUFDekIsQ0FBQztJ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QUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNqQyxDQUFDO0tBQUE7SUFFYSxtQkFBbUI7O1lBQy9CLE1BQU0sU0FBUyxHQUFHLElBQUksZUFBZSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDOUQsTUFBTSxNQUFNLEdBQUcsU0FBUyxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUN2QyxJQUFJLE1BQU0sRUFBRTtnQkFDVixNQUFNLFlBQVksR0FDaEIsTUFBTSxJQUFJLENBQUMsaUJBQWlCLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsU0FBUyxHQUFHLFVBQVUsTUFBTSxnQkFBZ0IsRUFBRSxLQUFLLENBQUMsQ0FBQztnQkFDL0csSUFBSSxDQUFDLFFBQVEsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUkscUJBQXFCLEVBQUUsRUFBRSxZQUFZLENBQUMsQ0FBQztnQkFDekUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLDRCQUE0QixFQUFFLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQztnQkFDakcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDO2dCQUM5QixNQUFNLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO2FBQ3RDO1FBQ0gsQ0FBQztLQUFBOzswSEFqSVUsNEJBQTRCOzhIQUE1Qiw0QkFBNEIsY0FGM0IsTUFBTTs0RkFFUCw0QkFBNEI7a0JBSHhDLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtJbmplY3RhYmxlfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHtIb21lZGVjb3JhdG9yU2V0dGluZ3N9IGZyb20gJy4uL21vZGVsL2hvbWVkZWNvcmF0b3Itc2V0dGluZ3MnO1xyXG5pbXBvcnQge0pzb25VdGlsc1NlcnZpY2V9IGZyb20gJy4vanNvbi11dGlscy5zZXJ2aWNlJztcclxuaW1wb3J0IHtCZWhhdmlvclN1YmplY3QsIFN1YmplY3R9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQge2Vudmlyb25tZW50fSBmcm9tICcuLi8uLi8uLi9lbnZpcm9ubWVudHMvZW52aXJvbm1lbnQnO1xyXG5pbXBvcnQge2lzRW1wdHl9IGZyb20gJy4uL3V0aWxzL2Z1bmN0aW9uL2lzLWVtcHR5LmZ1bmN0aW9uJztcclxuaW1wb3J0IHtIb21lZGVjb3JhdG9yU2V0dGluZ3NPcHRpb25zfSBmcm9tICcuLi9tb2RlbC9ob21lZGVjb3JhdG9yLXNldHRpbmdzLW9wdGlvbnMnO1xyXG5pbXBvcnQge0ludGVybmFsUGFyYW19IGZyb20gJ0Bjb2xpam5pdC9tYWluYXBpL2J1aWxkL2VudW0vaW50ZXJuYWwtcGFyYW0uZW51bSc7XHJcbmltcG9ydCB7SG9tZWRlY29yYXRvckRpY3Rpb25hcnlTZXJ2aWNlfSBmcm9tICcuL2hvbWVkZWNvcmF0b3ItZGljdGlvbmFyeS5zZXJ2aWNlJztcclxuaW1wb3J0IHtIb21lZGVjb3JhdG9yQ29ubmVjdG9yQWRhcHRlclNlcnZpY2V9IGZyb20gJy4vaG9tZWRlY29yYXRvci1jb25uZWN0b3ItYWRhcHRlci5zZXJ2aWNlJztcclxuXHJcbkBJbmplY3RhYmxlKHtcclxuICBwcm92aWRlZEluOiAncm9vdCdcclxufSlcclxuZXhwb3J0IGNsYXNzIEhvbWVkZWNvcmF0b3JTZXR0aW5nc1NlcnZpY2Uge1xyXG5cclxuICBwdWJsaWMgc2V0IHNldHRpbmdzKHZhbHVlOiBIb21lZGVjb3JhdG9yU2V0dGluZ3MpIHtcclxuICAgIHRoaXMuX3NldHRpbmdzID0gdmFsdWU7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0IHNldHRpbmdzKCk6IEhvbWVkZWNvcmF0b3JTZXR0aW5ncyB7XHJcbiAgICByZXR1cm4gdGhpcy5fc2V0dGluZ3M7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0IGlzUHJpdmF0ZSgpOiBib29sZWFuIHtcclxuICAgIHJldHVybiAhaXNFbXB0eSh0aGlzLnNldHRpbmdzLnVzZXJuYW1lKSAmJiAhaXNFbXB0eSh0aGlzLnNldHRpbmdzLnBhc3N3b3JkKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBzZXR0aW5nc0xvYWRlZDogQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+ID0gbmV3IEJlaGF2aW9yU3ViamVjdChmYWxzZSk7XHJcbiAgcHVibGljIHNldHRpbmdzQ2hhbmdlZDogU3ViamVjdDx2b2lkPiA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XHJcblxyXG4gIHByaXZhdGUgX3NldHRpbmdzOiBIb21lZGVjb3JhdG9yU2V0dGluZ3MgPSBuZXcgSG9tZWRlY29yYXRvclNldHRpbmdzKCk7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBfanNvblV0aWxzU2VydmljZTogSnNvblV0aWxzU2VydmljZSxcclxuICAgIHByaXZhdGUgX2RpY3Rpb25hcnlTZXJ2aWNlOiBIb21lZGVjb3JhdG9yRGljdGlvbmFyeVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIF9jb25uZWN0b3JTZXJ2aWNlOiBIb21lZGVjb3JhdG9yQ29ubmVjdG9yQWRhcHRlclNlcnZpY2VcclxuICApIHtcclxuICAgIC8vIHRoaXMuX2luaXRpYWxpemVTZXR0aW5ncygpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGNyZWF0ZVNldHRpbmdzRnJvbU9iamVjdChvYmo6IGFueSk6IHZvaWQge1xyXG4gICAgaWYgKCF0aGlzLnNldHRpbmdzKSB7XHJcbiAgICAgIHRoaXMuc2V0dGluZ3MgPSBuZXcgSG9tZWRlY29yYXRvclNldHRpbmdzKCk7XHJcbiAgICB9XHJcbiAgICBjb25zdCBvd25PcHRpb25zID0gT2JqZWN0LmFzc2lnbih7fSwgdGhpcy5zZXR0aW5ncy5vcHRpb25zKTtcclxuICAgIGNvbnN0IG93blJlbmRlclBhcmFtZXRlcnMgPSBPYmplY3QuYXNzaWduKHt9LCB0aGlzLnNldHRpbmdzLnJlbmRlclBhcmFtZXRlcnMpO1xyXG4gICAgdGhpcy5zZXR0aW5ncyA9IE9iamVjdC5hc3NpZ24oe30sIHRoaXMuc2V0dGluZ3MsIG9iaik7XHJcbiAgICBpZiAob2JqLnJlbmRlclBhcmFtZXRlcnMpIHtcclxuICAgICAgdGhpcy5zZXR0aW5ncy5yZW5kZXJQYXJhbWV0ZXJzID0gT2JqZWN0LmFzc2lnbih7fSwgb3duUmVuZGVyUGFyYW1ldGVycywgb2JqLnJlbmRlclBhcmFtZXRlcnMpO1xyXG4gICAgfVxyXG4gICAgaWYgKG9iai5vcHRpb25zKSB7XHJcbiAgICAgIHRoaXMuc2V0dGluZ3Mub3B0aW9ucyA9IE9iamVjdC5hc3NpZ24oe30sIG93bk9wdGlvbnMsIG9iai5vcHRpb25zKTtcclxuICAgIH1cclxuICAgIGlmIChvYmouaGFzT3duUHJvcGVydHkoJ2Fzc2V0UGF0aCcpKSB7XHJcbiAgICAgIHRoaXMuc2V0dGluZ3MuYXNzZXRQYXRoID0gb2JqWydhc3NldFBhdGgnXTtcclxuICAgICAgaWYgKCF0aGlzLnNldHRpbmdzLmFzc2V0UGF0aFt0aGlzLnNldHRpbmdzLmFzc2V0UGF0aC5sZW5ndGggLSAxXS5lbmRzV2l0aCgnLycpKSB7XHJcbiAgICAgICAgdGhpcy5zZXR0aW5ncy5hc3NldFBhdGggKz0gJy8nO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuc2V0dGluZ3MudGhyZWVEQXNzZXRQYXRoID0gdGhpcy5zZXR0aW5ncy5hc3NldFBhdGg7XHJcbiAgICB9XHJcbiAgICBpZiAob2JqLmhhc093blByb3BlcnR5KCd0aHJlZURBc3NldFBhdGgnKSkge1xyXG4gICAgICB0aGlzLnNldHRpbmdzLnRocmVlREFzc2V0UGF0aCA9IG9ialsndGhyZWVEQXNzZXRQYXRoJ107XHJcbiAgICAgIGlmICghdGhpcy5zZXR0aW5ncy50aHJlZURBc3NldFBhdGhbdGhpcy5zZXR0aW5ncy50aHJlZURBc3NldFBhdGgubGVuZ3RoIC0gMV0uZW5kc1dpdGgoJy8nKSkge1xyXG4gICAgICAgIHRoaXMuc2V0dGluZ3MudGhyZWVEQXNzZXRQYXRoICs9ICcvJztcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgaWYgKG9iai5oYXNPd25Qcm9wZXJ0eSgnYmxlbmRGaWxlc1JlbmRlcicpKSB7XHJcbiAgICAgIHRoaXMuc2V0dGluZ3MuYmxlbmRGaWxlc1JlbmRlciA9IG9ialsnYmxlbmRGaWxlc1JlbmRlciddO1xyXG4gICAgfVxyXG4gICAgaWYgKG9iai5oYXNPd25Qcm9wZXJ0eSgndXNlcjNETW9kZWxVcGxvYWRFbmFibGVkJykpIHtcclxuICAgICAgdGhpcy5zZXR0aW5ncy51c2VyM0RNb2RlbFVwbG9hZEVuYWJsZWQgPSBvYmpbJ3VzZXIzRE1vZGVsVXBsb2FkRW5hYmxlZCddO1xyXG4gICAgfVxyXG4gICAgaWYgKG9iai5oYXNPd25Qcm9wZXJ0eSgncHJvZHVjdFJlbmRlclNjZW5lQXNzZXRJZCcpKSB7XHJcbiAgICAgIHRoaXMuc2V0dGluZ3MucHJvZHVjdFJlbmRlclNjZW5lQXNzZXRJZCA9IG9ialsncHJvZHVjdFJlbmRlclNjZW5lQXNzZXRJZCddO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgLy8gc2V0IGZhbGxiYWNrLCBqdXN0IHRvIGJlIHN1cmUuXHJcbiAgICAgIHRoaXMuc2V0dGluZ3MucHJvZHVjdFJlbmRlclNjZW5lQXNzZXRJZCA9ICdzY2VuZV9zdHVkaW9fZWV2ZWUnO1xyXG4gICAgfVxyXG5cclxuICAgIGlmIChvYmouaGFzT3duUHJvcGVydHkoJ2lzSG9tZURlY29IdWInKSkge1xyXG4gICAgICB0aGlzLnNldHRpbmdzLmlzSG9tZURlY29IdWIgPSBvYmpbJ2lzSG9tZURlY29IdWInXTtcclxuICAgIH1cclxuICAgIGlmIChvYmouaGFzT3duUHJvcGVydHkoJ3N0YW5kQWxvbmVSb29tcGxhbm5lcicpKSB7XHJcbiAgICAgIHRoaXMuc2V0dGluZ3Muc3RhbmRBbG9uZVJvb21wbGFubmVyID0gb2JqWydzdGFuZEFsb25lUm9vbXBsYW5uZXInXTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBhc3luYyBpbml0aWFsaXplU2V0dGluZ3MoKTogUHJvbWlzZTx2b2lkPiB7XHJcbiAgICBpZiAoZW52aXJvbm1lbnQudXNlU2V0dGluZ3MpIHtcclxuICAgICAgLy8gc2VlIGlmIHRoZXJlJ3MgYSBqc29uIGZpbGUgZm9yIGFwcGxpY2F0aW9uIHNldHRpbmdzXHJcbiAgICAgIGNvbnN0IGpzb25TZXR0aW5nczogYW55ID0gYXdhaXQgdGhpcy5fanNvblV0aWxzU2VydmljZS5yZWFkSnNvbkZpbGUoJy4vc2V0dGluZ3MvaW9uZS1jb25uZWN0b3IuanNvbicsIHRydWUpO1xyXG4gICAgICBpZiAoanNvblNldHRpbmdzKSB7XHJcbiAgICAgICAgYXdhaXQgdGhpcy5pbml0aWFsaXplKGpzb25TZXR0aW5ncyk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGF3YWl0IHRoaXMuX2NoZWNrVXJsUGFyYW1ldGVycygpO1xyXG4gICAgdGhpcy5zZXR0aW5nc0xvYWRlZC5uZXh0KHRydWUpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGFzeW5jIGluaXRpYWxpemUoc2V0dGluZ3M6IEhvbWVkZWNvcmF0b3JTZXR0aW5ncyk6IFByb21pc2U8dm9pZD4ge1xyXG4gICAgaWYgKHNldHRpbmdzKSB7XHJcbiAgICAgIGF3YWl0IHRoaXMuY3JlYXRlU2V0dGluZ3NGcm9tT2JqZWN0KHNldHRpbmdzKTtcclxuICAgIH1cclxuICAgIGlmICghdGhpcy5zZXR0aW5ncy5hc3NldFBhdGgpIHtcclxuICAgICAgdHJ5IHtcclxuICAgICAgICBsZXQgcGF0aCA9IGF3YWl0IHRoaXMuX2Nvbm5lY3RvclNlcnZpY2UuZ2V0SW50ZXJuYWxQYXJhbWV0ZXIoSW50ZXJuYWxQYXJhbS5HZW5lcmFsQXNzZXRVcmwpO1xyXG4gICAgICAgIGlmICghcGF0aC5lbmRzV2l0aCgnLycpKSB7XHJcbiAgICAgICAgICBwYXRoICs9ICcvJztcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5zZXR0aW5ncy5hc3NldFBhdGggPSBwYXRoO1xyXG4gICAgICB9IGNhdGNoIChlKSB7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGlmICghdGhpcy5zZXR0aW5ncy50aHJlZURBc3NldFBhdGgpIHtcclxuICAgICAgbGV0IHBhdGggPSBhd2FpdCB0aGlzLl9jb25uZWN0b3JTZXJ2aWNlLmdldEludGVybmFsUGFyYW1ldGVyKEludGVybmFsUGFyYW0uQXNzZXRVcmwpO1xyXG4gICAgICBpZiAoIXBhdGguZW5kc1dpdGgoJy8nKSkge1xyXG4gICAgICAgIHBhdGggKz0gJy8nO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuc2V0dGluZ3MudGhyZWVEQXNzZXRQYXRoID0gcGF0aDtcclxuICAgIH1cclxuICAgIGlmICghdGhpcy5zZXR0aW5ncy51c2VyM0RNb2RlbFVwbG9hZEVuYWJsZWQpIHtcclxuICAgICAgY29uc3QgdXBsb2FkU2V0dGluZyA9IGF3YWl0IHRoaXMuX2Nvbm5lY3RvclNlcnZpY2UuZ2V0SW50ZXJuYWxQYXJhbWV0ZXIoSW50ZXJuYWxQYXJhbS5VUExPQURfM0RfTU9ERUwpO1xyXG4gICAgICBpZiAodXBsb2FkU2V0dGluZyA9PT0gJ0onKSB7XHJcbiAgICAgICAgdGhpcy5zZXR0aW5ncy51c2VyM0RNb2RlbFVwbG9hZEVuYWJsZWQgPSB0cnVlO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBhd2FpdCB0aGlzLl9kaWN0aW9uYXJ5U2VydmljZS5zZXREaWN0aW9uYXJ5KFxyXG4gICAgICB0aGlzLnNldHRpbmdzLmFzc2V0UGF0aCwgdGhpcy5zZXR0aW5ncy5jbGllbnQsIHRoaXMuc2V0dGluZ3MubGFuZ3VhZ2VDb2RlLCB0aGlzLnNldHRpbmdzLmFkZGl0aW9uYWxUcmFuc2xhdGlvbkZpbGUpO1xyXG4gICAgdGhpcy5zZXR0aW5nc0xvYWRlZC5uZXh0KHRydWUpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBhc3luYyBfY2hlY2tVcmxQYXJhbWV0ZXJzKCk6IFByb21pc2U8dm9pZD4ge1xyXG4gICAgY29uc3QgdXJsUGFyYW1zID0gbmV3IFVSTFNlYXJjaFBhcmFtcyh3aW5kb3cubG9jYXRpb24uc2VhcmNoKTtcclxuICAgIGNvbnN0IGNsaWVudCA9IHVybFBhcmFtcy5nZXQoJ2NsaWVudCcpO1xyXG4gICAgaWYgKGNsaWVudCkge1xyXG4gICAgICBjb25zdCBqc29uU2V0dGluZ3M6IGFueSA9XHJcbiAgICAgICAgYXdhaXQgdGhpcy5fanNvblV0aWxzU2VydmljZS5yZWFkSnNvbkZpbGUodGhpcy5zZXR0aW5ncy5hc3NldFBhdGggKyBgYXNzZXRzLyR7Y2xpZW50fS1zZXR0aW5ncy5qc29uYCwgZmFsc2UpO1xyXG4gICAgICB0aGlzLnNldHRpbmdzID0gT2JqZWN0LmFzc2lnbihuZXcgSG9tZWRlY29yYXRvclNldHRpbmdzKCksIGpzb25TZXR0aW5ncyk7XHJcbiAgICAgIHRoaXMuc2V0dGluZ3Mub3B0aW9ucyA9IE9iamVjdC5hc3NpZ24obmV3IEhvbWVkZWNvcmF0b3JTZXR0aW5nc09wdGlvbnMoKSwgdGhpcy5zZXR0aW5ncy5vcHRpb25zKTtcclxuICAgICAgdGhpcy5zZXR0aW5ncy5jbGllbnQgPSBjbGllbnQ7XHJcbiAgICAgIGF3YWl0IHRoaXMuaW5pdGlhbGl6ZSh0aGlzLnNldHRpbmdzKTtcclxuICAgIH1cclxuICB9XHJcbn1cclxuIl19
161
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaG9tZWRlY29yYXRvci1zZXR0aW5ncy5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2NsaWVudC9hcHAvY29yZS9zZXJ2aWNlL2hvbWVkZWNvcmF0b3Itc2V0dGluZ3Muc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFBQSxPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBQyxxQkFBcUIsRUFBQyxNQUFNLGlDQUFpQyxDQUFDO0FBRXRFLE9BQU8sRUFBQyxlQUFlLEVBQUUsT0FBTyxFQUFDLE1BQU0sTUFBTSxDQUFDO0FBQzlDLE9BQU8sRUFBQyxXQUFXLEVBQUMsTUFBTSxtQ0FBbUMsQ0FBQztBQUM5RCxPQUFPLEVBQUMsT0FBTyxFQUFDLE1BQU0scUNBQXFDLENBQUM7QUFDNUQsT0FBTyxFQUFDLDRCQUE0QixFQUFDLE1BQU0seUNBQXlDLENBQUM7QUFDckYsT0FBTyxFQUFDLGFBQWEsRUFBQyxNQUFNLGtEQUFrRCxDQUFDOzs7OztBQU8vRSxNQUFNLE9BQU8sNEJBQTRCO0lBbUJ2QyxZQUNVLGlCQUFtQyxFQUNuQyxrQkFBa0QsRUFDbEQsaUJBQXVEO1FBRnZELHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBa0I7UUFDbkMsdUJBQWtCLEdBQWxCLGtCQUFrQixDQUFnQztRQUNsRCxzQkFBaUIsR0FBakIsaUJBQWlCLENBQXNDO1FBUjFELG1CQUFjLEdBQTZCLElBQUksZUFBZSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3RFLG9CQUFlLEdBQWtCLElBQUksT0FBTyxFQUFRLENBQUM7UUFFcEQsY0FBUyxHQUEwQixJQUFJLHFCQUFxQixFQUFFLENBQUM7UUFPckUsOEJBQThCO0lBQ2hDLENBQUM7SUF2QkQsSUFBVyxRQUFRLENBQUMsS0FBNEI7UUFDOUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxLQUFLLENBQUM7SUFDekIsQ0FBQztJ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LENBQUMsSUFBSSw0QkFBNEIsRUFBRSxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUM7Z0JBQ2pHLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQztnQkFDOUIsTUFBTSxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQzthQUN0QztRQUNILENBQUM7S0FBQTs7MEhBM0lVLDRCQUE0Qjs4SEFBNUIsNEJBQTRCLGNBRjNCLE1BQU07NEZBRVAsNEJBQTRCO2tCQUh4QyxVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7SW5qZWN0YWJsZX0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7SG9tZWRlY29yYXRvclNldHRpbmdzfSBmcm9tICcuLi9tb2RlbC9ob21lZGVjb3JhdG9yLXNldHRpbmdzJztcclxuaW1wb3J0IHtKc29uVXRpbHNTZXJ2aWNlfSBmcm9tICcuL2pzb24tdXRpbHMuc2VydmljZSc7XHJcbmltcG9ydCB7QmVoYXZpb3JTdWJqZWN0LCBTdWJqZWN0fSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHtlbnZpcm9ubWVudH0gZnJvbSAnLi4vLi4vLi4vZW52aXJvbm1lbnRzL2Vudmlyb25tZW50JztcclxuaW1wb3J0IHtpc0VtcHR5fSBmcm9tICcuLi91dGlscy9mdW5jdGlvbi9pcy1lbXB0eS5mdW5jdGlvbic7XHJcbmltcG9ydCB7SG9tZWRlY29yYXRvclNldHRpbmdzT3B0aW9uc30gZnJvbSAnLi4vbW9kZWwvaG9tZWRlY29yYXRvci1zZXR0aW5ncy1vcHRpb25zJztcclxuaW1wb3J0IHtJbnRlcm5hbFBhcmFtfSBmcm9tICdAY29saWpuaXQvbWFpbmFwaS9idWlsZC9lbnVtL2ludGVybmFsLXBhcmFtLmVudW0nO1xyXG5pbXBvcnQge0hvbWVkZWNvcmF0b3JEaWN0aW9uYXJ5U2VydmljZX0gZnJvbSAnLi9ob21lZGVjb3JhdG9yLWRpY3Rpb25hcnkuc2VydmljZSc7XHJcbmltcG9ydCB7SG9tZWRlY29yYXRvckNvbm5lY3RvckFkYXB0ZXJTZXJ2aWNlfSBmcm9tICcuL2hvbWVkZWNvcmF0b3ItY29ubmVjdG9yLWFkYXB0ZXIuc2VydmljZSc7XHJcblxyXG5ASW5qZWN0YWJsZSh7XHJcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBIb21lZGVjb3JhdG9yU2V0dGluZ3NTZXJ2aWNlIHtcclxuXHJcbiAgcHVibGljIHNldCBzZXR0aW5ncyh2YWx1ZTogSG9tZWRlY29yYXRvclNldHRpbmdzKSB7XHJcbiAgICB0aGlzLl9zZXR0aW5ncyA9IHZhbHVlO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldCBzZXR0aW5ncygpOiBIb21lZGVjb3JhdG9yU2V0dGluZ3Mge1xyXG4gICAgcmV0dXJuIHRoaXMuX3NldHRpbmdzO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldCBpc1ByaXZhdGUoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gIWlzRW1wdHkodGhpcy5zZXR0aW5ncy51c2VybmFtZSkgJiYgIWlzRW1wdHkodGhpcy5zZXR0aW5ncy5wYXNzd29yZCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgc2V0dGluZ3NMb2FkZWQ6IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPiA9IG5ldyBCZWhhdmlvclN1YmplY3QoZmFsc2UpO1xyXG4gIHB1YmxpYyBzZXR0aW5nc0NoYW5nZWQ6IFN1YmplY3Q8dm9pZD4gPSBuZXcgU3ViamVjdDx2b2lkPigpO1xyXG5cclxuICBwcml2YXRlIF9zZXR0aW5nczogSG9tZWRlY29yYXRvclNldHRpbmdzID0gbmV3IEhvbWVkZWNvcmF0b3JTZXR0aW5ncygpO1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgX2pzb25VdGlsc1NlcnZpY2U6IEpzb25VdGlsc1NlcnZpY2UsXHJcbiAgICBwcml2YXRlIF9kaWN0aW9uYXJ5U2VydmljZTogSG9tZWRlY29yYXRvckRpY3Rpb25hcnlTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBfY29ubmVjdG9yU2VydmljZTogSG9tZWRlY29yYXRvckNvbm5lY3RvckFkYXB0ZXJTZXJ2aWNlXHJcbiAgKSB7XHJcbiAgICAvLyB0aGlzLl9pbml0aWFsaXplU2V0dGluZ3MoKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBjcmVhdGVTZXR0aW5nc0Zyb21PYmplY3Qob2JqOiBhbnkpOiB2b2lkIHtcclxuICAgIGlmICghdGhpcy5zZXR0aW5ncykge1xyXG4gICAgICB0aGlzLnNldHRpbmdzID0gbmV3IEhvbWVkZWNvcmF0b3JTZXR0aW5ncygpO1xyXG4gICAgfVxyXG4gICAgY29uc3Qgb3duT3B0aW9ucyA9IE9iamVjdC5hc3NpZ24oe30sIHRoaXMuc2V0dGluZ3Mub3B0aW9ucyk7XHJcbiAgICBjb25zdCBvd25SZW5kZXJQYXJhbWV0ZXJzID0gT2JqZWN0LmFzc2lnbih7fSwgdGhpcy5zZXR0aW5ncy5yZW5kZXJQYXJhbWV0ZXJzKTtcclxuICAgIGNvbnN0IGJsZW5kZXJTY2VuZVNldHRpbmdzID0gT2JqZWN0LmFzc2lnbih7fSwgdGhpcy5zZXR0aW5ncy5ibGVuZGVyU2NlbmVTZXR0aW5ncyk7XHJcbiAgICB0aGlzLnNldHRpbmdzID0gT2JqZWN0LmFzc2lnbih7fSwgdGhpcy5zZXR0aW5ncywgb2JqKTtcclxuICAgIGlmIChvYmoucmVuZGVyUGFyYW1ldGVycykge1xyXG4gICAgICB0aGlzLnNldHRpbmdzLnJlbmRlclBhcmFtZXRlcnMgPSBPYmplY3QuYXNzaWduKHt9LCBvd25SZW5kZXJQYXJhbWV0ZXJzLCBvYmoucmVuZGVyUGFyYW1ldGVycyk7XHJcbiAgICB9XHJcbiAgICBpZiAob2JqLm9wdGlvbnMpIHtcclxuICAgICAgdGhpcy5zZXR0aW5ncy5vcHRpb25zID0gT2JqZWN0LmFzc2lnbih7fSwgb3duT3B0aW9ucywgb2JqLm9wdGlvbnMpO1xyXG4gICAgfVxyXG5cclxuICAgIGlmIChvYmouYmxlbmRlclNjZW5lU2V0dGluZ3MpIHtcclxuICAgICAgdGhpcy5zZXR0aW5ncy5ibGVuZGVyU2NlbmVTZXR0aW5ncyA9IE9iamVjdC5hc3NpZ24oe30sIGJsZW5kZXJTY2VuZVNldHRpbmdzLCBvYmouYmxlbmRlclNjZW5lU2V0dGluZ3MpO1xyXG4gICAgfVxyXG5cclxuICAgIGlmIChvYmouaGFzT3duUHJvcGVydHkoJ2Fzc2V0UGF0aCcpKSB7XHJcbiAgICAgIHRoaXMuc2V0dGluZ3MuYXNzZXRQYXRoID0gb2JqWydhc3NldFBhdGgnXTtcclxuICAgICAgaWYgKCF0aGlzLnNldHRpbmdzLmFzc2V0UGF0aFt0aGlzLnNldHRpbmdzLmFzc2V0UGF0aC5sZW5ndGggLSAxXS5lbmRzV2l0aCgnLycpKSB7XHJcbiAgICAgICAgdGhpcy5zZXR0aW5ncy5hc3NldFBhdGggKz0gJy8nO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuc2V0dGluZ3MudGhyZWVEQXNzZXRQYXRoID0gdGhpcy5zZXR0aW5ncy5hc3NldFBhdGg7XHJcbiAgICB9XHJcbiAgICBpZiAob2JqLmhhc093blByb3BlcnR5KCd0aHJlZURBc3NldFBhdGgnKSkge1xyXG4gICAgICB0aGlzLnNldHRpbmdzLnRocmVlREFzc2V0UGF0aCA9IG9ialsndGhyZWVEQXNzZXRQYXRoJ107XHJcbiAgICAgIGlmICghdGhpcy5zZXR0aW5ncy50aHJlZURBc3NldFBhdGhbdGhpcy5zZXR0aW5ncy50aHJlZURBc3NldFBhdGgubGVuZ3RoIC0gMV0uZW5kc1dpdGgoJy8nKSkge1xyXG4gICAgICAgIHRoaXMuc2V0dGluZ3MudGhyZWVEQXNzZXRQYXRoICs9ICcvJztcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgaWYgKG9iai5oYXNPd25Qcm9wZXJ0eSgnYmxlbmRGaWxlc1JlbmRlcicpKSB7XHJcbiAgICAgIHRoaXMuc2V0dGluZ3MuYmxlbmRGaWxlc1JlbmRlciA9IG9ialsnYmxlbmRGaWxlc1JlbmRlciddO1xyXG4gICAgfVxyXG4gICAgaWYgKG9iai5oYXNPd25Qcm9wZXJ0eSgndXNlcjNETW9kZWxVcGxvYWRFbmFibGVkJykpIHtcclxuICAgICAgdGhpcy5zZXR0aW5ncy51c2VyM0RNb2RlbFVwbG9hZEVuYWJsZWQgPSBvYmpbJ3VzZXIzRE1vZGVsVXBsb2FkRW5hYmxlZCddO1xyXG4gICAgfVxyXG4gICAgaWYgKG9iai5oYXNPd25Qcm9wZXJ0eSgncHJvZHVjdFJlbmRlclNjZW5lQXNzZXRJZCcpKSB7XHJcbiAgICAgIHRoaXMuc2V0dGluZ3MucHJvZHVjdFJlbmRlclNjZW5lQXNzZXRJZCA9IG9ialsncHJvZHVjdFJlbmRlclNjZW5lQXNzZXRJZCddO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgLy8gc2V0IGZhbGxiYWNrLCBqdXN0IHRvIGJlIHN1cmUuXHJcbiAgICAgIHRoaXMuc2V0dGluZ3MucHJvZHVjdFJlbmRlclNjZW5lQXNzZXRJZCA9ICdzY2VuZV9zdHVkaW9fZWV2ZWUnO1xyXG4gICAgfVxyXG5cclxuICAgIGlmIChvYmouaGFzT3duUHJvcGVydHkoJ2lzSG9tZURlY29IdWInKSkge1xyXG4gICAgICB0aGlzLnNldHRpbmdzLmlzSG9tZURlY29IdWIgPSBvYmpbJ2lzSG9tZURlY29IdWInXTtcclxuICAgIH1cclxuICAgIGlmIChvYmouaGFzT3duUHJvcGVydHkoJ3N0YW5kQWxvbmVSb29tcGxhbm5lcicpKSB7XHJcbiAgICAgIHRoaXMuc2V0dGluZ3Muc3RhbmRBbG9uZVJvb21wbGFubmVyID0gb2JqWydzdGFuZEFsb25lUm9vbXBsYW5uZXInXTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLl9jb25uZWN0b3JTZXJ2aWNlLm1haW5VcmwgPSB0aGlzLnNldHRpbmdzLnVybDtcclxuICAgIHRoaXMuX2Nvbm5lY3RvclNlcnZpY2UubWFpblNjaGVtYSA9IHRoaXMuc2V0dGluZ3Muc2NoZW1hO1xyXG4gICAgdGhpcy5fY29ubmVjdG9yU2VydmljZS5tYWluVmVyc2lvbiA9IHRoaXMuc2V0dGluZ3MudmVyc2lvbjtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBhc3luYyBpbml0aWFsaXplU2V0dGluZ3MoKTogUHJvbWlzZTx2b2lkPiB7XHJcbiAgICBpZiAoZW52aXJvbm1lbnQudXNlU2V0dGluZ3MpIHtcclxuICAgICAgLy8gc2VlIGlmIHRoZXJlJ3MgYSBqc29uIGZpbGUgZm9yIGFwcGxpY2F0aW9uIHNldHRpbmdzXHJcbiAgICAgIGNvbnN0IGpzb25TZXR0aW5nczogYW55ID0gYXdhaXQgdGhpcy5fanNvblV0aWxzU2VydmljZS5yZWFkSnNvbkZpbGUoJy4vc2V0dGluZ3MvaW9uZS1jb25uZWN0b3IuanNvbicsIHRydWUpO1xyXG4gICAgICBpZiAoanNvblNldHRpbmdzKSB7XHJcbiAgICAgICAgYXdhaXQgdGhpcy5pbml0aWFsaXplKGpzb25TZXR0aW5ncyk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGF3YWl0IHRoaXMuX2NoZWNrVXJsUGFyYW1ldGVycygpO1xyXG4gICAgdGhpcy5zZXR0aW5nc0xvYWRlZC5uZXh0KHRydWUpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGFzeW5jIGluaXRpYWxpemUoc2V0dGluZ3M6IEhvbWVkZWNvcmF0b3JTZXR0aW5ncyk6IFByb21pc2U8dm9pZD4ge1xyXG4gICAgaWYgKHNldHRpbmdzKSB7XHJcbiAgICAgIGF3YWl0IHRoaXMuY3JlYXRlU2V0dGluZ3NGcm9tT2JqZWN0KHNldHRpbmdzKTtcclxuICAgIH1cclxuICAgIGlmICghdGhpcy5zZXR0aW5ncy5hc3NldFBhdGgpIHtcclxuICAgICAgdHJ5IHtcclxuICAgICAgICBsZXQgcGF0aCA9IGF3YWl0IHRoaXMuX2Nvbm5lY3RvclNlcnZpY2UuZ2V0SW50ZXJuYWxQYXJhbWV0ZXIoSW50ZXJuYWxQYXJhbS5HZW5lcmFsQXNzZXRVcmwpO1xyXG4gICAgICAgIGlmICghcGF0aC5lbmRzV2l0aCgnLycpKSB7XHJcbiAgICAgICAgICBwYXRoICs9ICcvJztcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5zZXR0aW5ncy5hc3NldFBhdGggPSBwYXRoO1xyXG4gICAgICB9IGNhdGNoIChlKSB7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGlmICghdGhpcy5zZXR0aW5ncy50aHJlZURBc3NldFBhdGgpIHtcclxuICAgICAgbGV0IHBhdGggPSBhd2FpdCB0aGlzLl9jb25uZWN0b3JTZXJ2aWNlLmdldEludGVybmFsUGFyYW1ldGVyKEludGVybmFsUGFyYW0uQXNzZXRVcmwpO1xyXG4gICAgICBpZiAoIXBhdGguZW5kc1dpdGgoJy8nKSkge1xyXG4gICAgICAgIHBhdGggKz0gJy8nO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuc2V0dGluZ3MudGhyZWVEQXNzZXRQYXRoID0gcGF0aDtcclxuICAgIH1cclxuICAgIGlmICghdGhpcy5zZXR0aW5ncy51c2VyM0RNb2RlbFVwbG9hZEVuYWJsZWQpIHtcclxuICAgICAgY29uc3QgdXBsb2FkU2V0dGluZyA9IGF3YWl0IHRoaXMuX2Nvbm5lY3RvclNlcnZpY2UuZ2V0SW50ZXJuYWxQYXJhbWV0ZXIoSW50ZXJuYWxQYXJhbS5VUExPQURfM0RfTU9ERUwpO1xyXG4gICAgICBpZiAodXBsb2FkU2V0dGluZyA9PT0gJ0onKSB7XHJcbiAgICAgICAgdGhpcy5zZXR0aW5ncy51c2VyM0RNb2RlbFVwbG9hZEVuYWJsZWQgPSB0cnVlO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBhd2FpdCB0aGlzLl9kaWN0aW9uYXJ5U2VydmljZS5zZXREaWN0aW9uYXJ5KFxyXG4gICAgICB0aGlzLnNldHRpbmdzLmFzc2V0UGF0aCwgdGhpcy5zZXR0aW5ncy5jbGllbnQsIHRoaXMuc2V0dGluZ3MubGFuZ3VhZ2VDb2RlLCB0aGlzLnNldHRpbmdzLmFkZGl0aW9uYWxUcmFuc2xhdGlvbkZpbGUpO1xyXG4gICAgdGhpcy5zZXR0aW5nc0xvYWRlZC5uZXh0KHRydWUpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBhc3luYyBfY2hlY2tVcmxQYXJhbWV0ZXJzKCk6IFByb21pc2U8dm9pZD4ge1xyXG4gICAgY29uc3QgdXJsUGFyYW1zID0gbmV3IFVSTFNlYXJjaFBhcmFtcyh3aW5kb3cubG9jYXRpb24uc2VhcmNoKTtcclxuICAgIGNvbnN0IGNsaWVudCA9IHVybFBhcmFtcy5nZXQoJ2NsaWVudCcpO1xyXG4gICAgaWYgKGNsaWVudCkge1xyXG4gICAgICBjb25zdCBqc29uU2V0dGluZ3M6IGFueSA9XHJcbiAgICAgICAgYXdhaXQgdGhpcy5fanNvblV0aWxzU2VydmljZS5yZWFkSnNvbkZpbGUodGhpcy5zZXR0aW5ncy5hc3NldFBhdGggKyBgYXNzZXRzLyR7Y2xpZW50fS1zZXR0aW5ncy5qc29uYCwgZmFsc2UpO1xyXG4gICAgICB0aGlzLnNldHRpbmdzID0gT2JqZWN0LmFzc2lnbihuZXcgSG9tZWRlY29yYXRvclNldHRpbmdzKCksIGpzb25TZXR0aW5ncyk7XHJcbiAgICAgIHRoaXMuc2V0dGluZ3Mub3B0aW9ucyA9IE9iamVjdC5hc3NpZ24obmV3IEhvbWVkZWNvcmF0b3JTZXR0aW5nc09wdGlvbnMoKSwgdGhpcy5zZXR0aW5ncy5vcHRpb25zKTtcclxuICAgICAgdGhpcy5zZXR0aW5ncy5jbGllbnQgPSBjbGllbnQ7XHJcbiAgICAgIGF3YWl0IHRoaXMuaW5pdGlhbGl6ZSh0aGlzLnNldHRpbmdzKTtcclxuICAgIH1cclxuICB9XHJcbn1cclxuIl19