@colijnit/sharedcomponents 254.1.1 → 254.1.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (90) hide show
  1. package/3rdpartylicenses.txt +1408 -0
  2. package/bundles/colijnit-sharedcomponents.umd.js +701 -179
  3. package/bundles/colijnit-sharedcomponents.umd.js.map +1 -1
  4. package/colijnit-sharedcomponents.d.ts +2 -0
  5. package/colijnit-sharedcomponents.metadata.json +1 -1
  6. package/esm2015/colijnit-sharedcomponents.js +3 -1
  7. package/esm2015/lib/components/activity-list/activity-list.component.js +7 -3
  8. package/esm2015/lib/components/activity-overview-component/component-activity-overview.component.js +8 -7
  9. package/esm2015/lib/components/activity-overview-component/components/base-activity-overview.component.js +15 -21
  10. package/esm2015/lib/components/modify-task-form/components/base-activity-summary.component.js +8 -10
  11. package/esm2015/lib/components/modify-task-form/components/creation-summary-block/creation-summary-block.component.js +2 -2
  12. package/esm2015/lib/components/modify-task-form/components/executive-summary-block/executive-summary-block.component.js +5 -5
  13. package/esm2015/lib/components/modify-task-form/components/notification-summary-block/notification-summary-block.component.js +2 -2
  14. package/esm2015/lib/components/modify-task-form/components/status-summary-block/status-summary-block.component.js +7 -4
  15. package/esm2015/lib/components/modify-task-form/components/task-details/task-details.component.js +7 -4
  16. package/esm2015/lib/components/modify-task-form/modify-task-form.component.js +39 -13
  17. package/esm2015/lib/components/modify-task-form/modify-task-form.module.js +10 -3
  18. package/esm2015/lib/components/open-activity-list/component-activity-list.component.js +48 -57
  19. package/esm2015/lib/components/open-activity-list/components/base-open-activity-list.component.js +5 -3
  20. package/esm2015/lib/components/simple-tags/simple-tags.component.js +5 -147
  21. package/esm2015/lib/components/simple-tags/simple-tags.module.js +4 -2
  22. package/esm2015/lib/components/simple-tags-form/simple-tags-form.component.js +196 -0
  23. package/esm2015/lib/components/simple-tags-form/simple-tags-form.module.js +26 -0
  24. package/esm2015/lib/components/stock/components/stock-location/components/stock-location-popup/stock-location-popup.component.js +3 -3
  25. package/esm2015/lib/components/stock/components/stock-location/stock-location.component.js +28 -2
  26. package/esm2015/lib/components/stock/localization/translation.js +3 -1
  27. package/esm2015/lib/components/stock/stock-tabs/stock-tabs.component.js +7 -2
  28. package/esm2015/lib/components/stock/stock-transfer/stock-transfer.component.js +144 -85
  29. package/esm2015/lib/components/stock/stock.component.js +11 -42
  30. package/esm2015/lib/components/stock/stock.module.js +4 -3
  31. package/esm2015/lib/components/task-modifyer/task-modifier.component.js +9 -9
  32. package/esm2015/lib/components/workflow-info-tiles/components/workflow-info-tile.component.js +45 -0
  33. package/esm2015/lib/components/workflow-info-tiles/components/workflow-info-tile.module.js +22 -0
  34. package/esm2015/lib/components/workflow-info-tiles/workflow-info-tiles.component.js +55 -0
  35. package/esm2015/lib/components/workflow-info-tiles/workflow-info-tiles.module.js +22 -0
  36. package/esm2015/lib/enum/icon.enum.js +1 -1
  37. package/esm2015/lib/model/icon-svg.js +1 -1
  38. package/esm2015/lib/service/shared-connector.service.js +93 -1
  39. package/esm2015/lib/service/shared.service.js +44 -1
  40. package/esm2015/public-api.js +5 -1
  41. package/favicon.ico +0 -0
  42. package/fesm2015/colijnit-sharedcomponents.js +765 -349
  43. package/fesm2015/colijnit-sharedcomponents.js.map +1 -1
  44. package/index.html +12 -0
  45. package/lib/components/activity-list/style/_layout.scss +17 -6
  46. package/lib/components/activity-overview-component/component-activity-overview.component.d.ts +3 -1
  47. package/lib/components/activity-overview-component/components/base-activity-overview.component.d.ts +3 -8
  48. package/lib/components/modify-task-form/components/base-activity-summary.component.d.ts +3 -4
  49. package/lib/components/modify-task-form/components/executive-summary-block/executive-summary-block.component.d.ts +2 -2
  50. package/lib/components/modify-task-form/components/status-summary-block/status-summary-block.component.d.ts +3 -1
  51. package/lib/components/modify-task-form/components/task-details/task-details.component.d.ts +3 -1
  52. package/lib/components/modify-task-form/modify-task-form.component.d.ts +9 -4
  53. package/lib/components/modify-task-form/style/_layout.scss +4 -0
  54. package/lib/components/open-activity-list/component-activity-list.component.d.ts +10 -11
  55. package/lib/components/open-activity-list/components/base-open-activity-list.component.d.ts +2 -0
  56. package/lib/components/simple-tags/simple-tags.component.d.ts +1 -8
  57. package/lib/components/simple-tags-form/simple-tags-form.component.d.ts +29 -0
  58. package/lib/components/simple-tags-form/simple-tags-form.module.d.ts +2 -0
  59. package/lib/components/simple-tags-form/style/_layout.scss +257 -0
  60. package/lib/components/simple-tags-form/style/_material-definition.scss +39 -0
  61. package/lib/components/simple-tags-form/style/_theme.scss +4 -0
  62. package/lib/components/simple-tags-form/style/material.scss +4 -0
  63. package/lib/components/stock/components/stock-location/stock-location.component.d.ts +7 -1
  64. package/lib/components/stock/localization/translation.d.ts +2 -0
  65. package/lib/components/stock/stock-tabs/stock-tabs.component.d.ts +2 -0
  66. package/lib/components/stock/stock-transfer/stock-transfer.component.d.ts +19 -6
  67. package/lib/components/stock/stock.component.d.ts +3 -0
  68. package/lib/components/stock/style/_layout.scss +64 -31
  69. package/lib/components/task-modifyer/task-modifier.component.d.ts +3 -5
  70. package/lib/components/workflow-info-tiles/components/style/_layout.scss +49 -0
  71. package/lib/components/workflow-info-tiles/components/style/_material-definition.scss +0 -0
  72. package/lib/components/workflow-info-tiles/components/style/_theme.scss +4 -0
  73. package/lib/components/workflow-info-tiles/components/style/material.scss +4 -0
  74. package/lib/components/workflow-info-tiles/components/workflow-info-tile.component.d.ts +15 -0
  75. package/lib/components/workflow-info-tiles/components/workflow-info-tile.module.d.ts +2 -0
  76. package/lib/components/workflow-info-tiles/style/_layout.scss +16 -0
  77. package/lib/components/workflow-info-tiles/style/_material-definition.scss +0 -0
  78. package/lib/components/workflow-info-tiles/style/_theme.scss +4 -0
  79. package/lib/components/workflow-info-tiles/style/material.scss +4 -0
  80. package/lib/components/workflow-info-tiles/workflow-info-tiles.component.d.ts +21 -0
  81. package/lib/components/workflow-info-tiles/workflow-info-tiles.module.d.ts +2 -0
  82. package/lib/service/shared-connector.service.d.ts +10 -0
  83. package/lib/service/shared.service.d.ts +12 -0
  84. package/lib/style/_variables.scss +2 -0
  85. package/main.b62bfdc80736ecda90e4.js +1 -0
  86. package/package.json +2 -1
  87. package/polyfills.907fe9d1887c5de17993.js +1 -0
  88. package/public-api.d.ts +4 -0
  89. package/runtime.8aac21847ed3d3829cca.js +1 -0
  90. package/styles.051675db76590b099897.css +1 -0
@@ -58,6 +58,9 @@ export class StockTabsComponent {
58
58
  },
59
59
  ];
60
60
  }
61
+ onShowStockTransferChange(show) {
62
+ this.showStockTransfer = show;
63
+ }
61
64
  handleLocationClicked(data) {
62
65
  this.tabs[0].active = false;
63
66
  this.tabs[2].active = true;
@@ -197,7 +200,8 @@ StockTabsComponent.decorators = [
197
200
  [stockLocations]="stockLocations"
198
201
  (transferIconClicked)="transferIconClicked.emit($event)"
199
202
  (sendMethodDialogClicked)="sendMethodDialogClicked.emit($event)"
200
-
203
+ [showStockTransfer]="showStockTransfer"
204
+ (showStockTransferChange)="onShowStockTransferChange($event)"
201
205
  ></co-stock-location>
202
206
 
203
207
  <co-order-tab *ngIf="tabs[3].active"
@@ -244,8 +248,9 @@ StockTabsComponent.propDecorators = {
244
248
  stockInformation: [{ type: Input }],
245
249
  article: [{ type: Input }],
246
250
  articleFlat: [{ type: Input }],
251
+ showStockTransfer: [{ type: Input }],
247
252
  warehouses: [{ type: Input }],
248
253
  transferIconClicked: [{ type: Output }],
249
254
  sendMethodDialogClicked: [{ type: Output }]
250
255
  };
251
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RvY2stdGFicy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zaGFyZWRjb21wb25lbnRzL3NyYy9saWIvY29tcG9uZW50cy9zdG9jay9zdG9jay10YWJzL3N0b2NrLXRhYnMuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxpQkFBaUIsRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBVSxNQUFNLEVBQUUsaUJBQWlCLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDbkgsT0FBTyxFQUFDLElBQUksRUFBQyxNQUFNLHlCQUF5QixDQUFDO0FBRTdDLE9BQU8sRUFBQyxzQkFBc0IsRUFBQyxNQUFNLDREQUE0RCxDQUFDO0FBQ2xHLE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSxnQ0FBZ0MsQ0FBQztBQUc1RCxPQUFPLEVBQUMsa0JBQWtCLEVBQUMsTUFBTSxzREFBc0QsQ0FBQztBQUV4RixPQUFPLEVBQUMseUJBQXlCLEVBQUMsTUFBTSxpRUFBaUUsQ0FBQztBQUcxRyxPQUFPLEVBQUMsc0JBQXNCLEVBQUMsTUFBTSwyREFBMkQsQ0FBQztBQUVqRyxPQUFPLEVBQUMsZUFBZSxFQUFDLE1BQU0sd0NBQXdDLENBQUM7QUEyRXZFLE1BQU0sT0FBTyxrQkFBa0I7SUF5QzdCLFlBQ1UsYUFBMkIsRUFDM0IsZ0JBQWlDLEVBQ2pDLGVBQWtDO1FBRmxDLGtCQUFhLEdBQWIsYUFBYSxDQUFjO1FBQzNCLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBaUI7UUFDakMsb0JBQWUsR0FBZixlQUFlLENBQW1CO1FBM0M1QixVQUFLLEdBQWdCLElBQUksQ0FBQztRQUduQyxxQkFBZ0IsR0FBcUIsRUFBRSxDQUFDO1FBVXhDLGVBQVUsR0FBZ0MsRUFBRSxDQUFDO1FBR3BDLHdCQUFtQixHQUFpQyxJQUFJLFlBQVksRUFBRSxDQUFDO1FBR3ZFLDRCQUF1QixH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QUFJLENBQUMsMEJBQTBCLEVBQUUsQ0FBQztRQUNsQyxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7UUFDdkIsSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUM7UUFDekIsSUFBSSxDQUFDLGVBQWUsQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUNwQyxJQUFJLENBQUMsZUFBZSxDQUFDLGFBQWEsRUFBRSxDQUFDO0lBRXZDLENBQUM7SUFFTSxnQkFBZ0IsQ0FBQyxJQUFZO1FBQ2xDLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxTQUFTLENBQUMsV0FBVyxLQUFLLElBQUksQ0FBQyxDQUFDO0lBQzNFLENBQUM7OztZQXpRRixTQUFTLFNBQUM7Z0JBQ1QsUUFBUSxFQUFFLGVBQWU7Z0JBQ3pCLFFBQVEsRUFBRTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FpRVQ7Z0JBQ0QsYUFBYSxFQUFFLGlCQUFpQixDQUFDLElBQUk7YUFDdEM7OztZQXBGTyxZQUFZO1lBVVosZUFBZTtZQWRmLGlCQUFpQjs7OytCQTRGdEIsS0FBSztzQkFHTCxLQUFLOzBCQUdMLEtBQUs7eUJBSUwsS0FBSztrQ0FHTCxNQUFNO3NDQUdOLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NoYW5nZURldGVjdG9yUmVmLCBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uSW5pdCwgT3V0cHV0LCBWaWV3RW5jYXBzdWxhdGlvbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7SWNvbn0gZnJvbSBcIi4uLy4uLy4uL2VudW0vaWNvbi5lbnVtXCI7XHJcbmltcG9ydCB7QXJ0aWNsZVN0b2NrIGFzIEFydGljbGVTdG9ja0JvfSBmcm9tIFwiQGNvbGlqbml0L2FydGljbGVhcGkvYnVpbGQvbW9kZWwvYXJ0aWNsZS1zdG9jay5ib1wiO1xyXG5pbXBvcnQge0dldFN0b2NrSGlzdG9yeVJlcXVlc3R9IGZyb20gXCJAY29saWpuaXQvYXJ0aWNsZWFwaS9idWlsZC9tb2RlbC9nZXQtc3RvY2staGlzdG9yeS1yZXF1ZXN0XCI7XHJcbmltcG9ydCB7U3RvY2tTZXJ2aWNlfSBmcm9tIFwiLi4vLi4vLi4vc2VydmljZS9zdG9jay5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7U3RvY2tIaXN0b3J5Qm99IGZyb20gXCJAY29saWpuaXQvYXJ0aWNsZWFwaS9idWlsZC9tb2RlbC9zdG9jay1oaXN0b3J5LmJvXCI7XHJcbmltcG9ydCB7VGFifSBmcm9tIFwiLi4vLi4vdGFiLWJhci90YWIuaW50ZXJmYWNlXCI7XHJcbmltcG9ydCB7QXJ0aWNsZVRyYW5zYWN0aW9ufSBmcm9tIFwiQGNvbGlqbml0L2FydGljbGVhcGkvYnVpbGQvbW9kZWwvYXJ0aWNsZS10cmFuc2FjdGlvblwiO1xyXG5pbXBvcnQge0FydGljbGVUcmFuc2FjdGlvbiBhcyBBcnRpY2xlVHJhbnNhY3Rpb25Cb30gZnJvbSBcIkBjb2xpam5pdC9hcnRpY2xlYXBpL2J1aWxkL21vZGVsL2FydGljbGUtdHJhbnNhY3Rpb24uYm9cIjtcclxuaW1wb3J0IHtTdG9ja01hbmFnZW1lbnRXYXJlaG91c2VzfSBmcm9tIFwiQGNvbGlqbml0L2FydGljbGVhcGkvYnVpbGQvbW9kZWwvc3RvY2stbWFuYWdlbWVudC13YXJlaG91c2VzLmJvXCI7XHJcbmltcG9ydCB7UHJpbnRQcmljZVN0aWNrZXJzfSBmcm9tIFwiQGNvbGlqbml0L3NoYXJlZGFwaS9idWlsZC9tb2RlbC9wcmludC1wcmljZS1zdGlja2Vycy5ib1wiO1xyXG5pbXBvcnQge1N0b2NrRm9yZWNhc3R9IGZyb20gXCJAY29saWpuaXQvYXJ0aWNsZWFwaS9idWlsZC9tb2RlbC9zdG9jay1mb3JlY2FzdC5ib1wiO1xyXG5pbXBvcnQge0FydGljbGVTdG9ja01hbmFnZW1lbnR9IGZyb20gXCJAY29saWpuaXQvYXJ0aWNsZWFwaS9idWlsZC9tb2RlbC9hcnRpY2xlLXN0b2NrLW1hbmFnZW1lbnRcIjtcclxuaW1wb3J0IHtBcnRpY2xlRGV0YWlsc0JvfSBmcm9tIFwiQGNvbGlqbml0L2FydGljbGVhcGkvYnVpbGQvbW9kZWwvYXJ0aWNsZS1kZXRhaWxzLmJvXCI7XHJcbmltcG9ydCB7TG9jYWxpemVTZXJ2aWNlfSBmcm9tICcuLi8uLi8uLi9sb2NhbGl6YXRpb24vbG9jYWxpemUuc2VydmljZSc7XHJcbmltcG9ydCB7QXJ0aWNsZUV4dGVuZGVkfSBmcm9tIFwiQGNvbGlqbml0L2FydGljbGVhcGkvYnVpbGQvbW9kZWwvYXJ0aWNsZS1leHRlbmRlZC5ib1wiO1xyXG5pbXBvcnQge0FydGljbGVGbGF0fSBmcm9tIFwiQGNvbGlqbml0L2FydGljbGVhcGkvYnVpbGQvbW9kZWwvYXJ0aWNsZS1mbGF0LmJvXCI7XHJcbmltcG9ydCB7U3RvY2tMb2NhdGlvbn0gZnJvbSBcIkBjb2xpam5pdC9hcnRpY2xlYXBpL2J1aWxkL21vZGVsL3N0b2NrLWxvY2F0aW9uLmJvXCI7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogXCJjby1zdG9jay10YWJzXCIsXHJcbiAgdGVtcGxhdGU6IGBcclxuICAgIDxjby10YWItYmFyIFt3YXJlSG91c2VMYWJlbF09XCInQ0hPSUNFUycgfCBsb2NhbGl6ZVwiXHJcbiAgICAgICAgICAgICAgICBbd2FyZUhvdXNlU2VhcmNoTGFiZWxdPVwiJ1NFQVJDSCcgfCBsb2NhbGl6ZVwiXHJcbiAgICAgICAgICAgICAgICBbdGFic109XCJ0YWJzXCJcclxuICAgICAgICAgICAgICAgIFtkYXRhV2FyZUhvdXNlQ29kZV09XCJ3YXJlaG91c2VzXCJcclxuICAgICAgICAgICAgICAgIFtzZWxlY3RlZFdhcmVob3VzZV09XCJzZWxlY3RlZFdhcmVob3VzZVwiXHJcbiAgICAgICAgICAgICAgICBbc2Vjb25kYXJ5VGFic109XCJoaXN0b3J5VGFic1wiXHJcbiAgICAgICAgICAgICAgICBbQWN0aXZhdGVTZWNvbmRhcnlUYWJzXT1cInRhYnNbNV0uYWN0aXZlXCJcclxuICAgICAgICAgICAgICAgIFtzaG93V2FyZWhvdXNlU2VsZWN0aW9uXT1cInRhYnNbMV0uYWN0aXZlIHx8IHRhYnNbMl0uYWN0aXZlXCJcclxuICAgICAgICAgICAgICAgICh3YXJlaG91c2VTZWxlY3RlZCk9XCJoYW5kbGVXYXJlaG91c2VTZWxlY3RlZCgkZXZlbnQpXCJcclxuICAgID48L2NvLXRhYi1iYXI+XHJcblxyXG4gICAgPGNvLXN0b2NrLXRhYiAqbmdJZj1cInRhYnNbMF0uYWN0aXZlXCJcclxuICAgICAgICAgICAgICAgICAgW2FydGljbGVTdG9ja0luZm9ybWF0aW9uXT1cInN0b2NrSW5mb3JtYXRpb25cIlxyXG4gICAgICAgICAgICAgICAgICAobG9jYXRpb25DbGlja2VkKT1cImhhbmRsZUxvY2F0aW9uQ2xpY2tlZCgkZXZlbnQpXCJcclxuICAgID48L2NvLXN0b2NrLXRhYj5cclxuXHJcbiAgICA8Y28tc3RvY2stcHJvZ25vc2UgKm5nSWY9XCJ0YWJzWzFdLmFjdGl2ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgW3N0b2NrUHJvZ25vc2VdPVwic3RvY2tQcm9nbm9zZVwiXHJcbiAgICA+PC9jby1zdG9jay1wcm9nbm9zZT5cclxuXHJcbiAgICA8Y28tc3RvY2stbG9jYXRpb24gKm5nSWY9XCJ0YWJzWzJdLmFjdGl2ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgW2FydGljbGVTdG9ja0luZm9dPVwiYXJ0aWNsZURldGFpbHNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgIFthcnRpY2xlU3RvY2tJbmZvcm1hdGlvbl09XCJzdG9ja0luZm9ybWF0aW9uXCJcclxuICAgICAgICAgICAgICAgICAgICAgICBbYXJ0aWNsZV09XCJhcnRpY2xlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICBbYXJ0aWNsZUZsYXRdPVwiYXJ0aWNsZUZsYXRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgIFtzZWxlY3RlZFdhcmVob3VzZV09XCJzZWxlY3RlZFdhcmVob3VzZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgW2RhdGFXYXJlSG91c2VDb2RlXT1cIndhcmVob3VzZXNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgIFtzdG9ja0xvY2F0aW9uc109XCJzdG9ja0xvY2F0aW9uc1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgKHRyYW5zZmVySWNvbkNsaWNrZWQpPVwidHJhbnNmZXJJY29uQ2xpY2tlZC5lbWl0KCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgIChzZW5kTWV0aG9kRGlhbG9nQ2xpY2tlZCk9XCJzZW5kTWV0aG9kRGlhbG9nQ2xpY2tlZC5lbWl0KCRldmVudClcIlxyXG5cclxuICAgID48L2NvLXN0b2NrLWxvY2F0aW9uPlxyXG5cclxuICAgIDxjby1vcmRlci10YWIgKm5nSWY9XCJ0YWJzWzNdLmFjdGl2ZVwiXHJcbiAgICAgICAgICAgICAgICAgIFthcnRpY2xlU3RvY2tJbmZvcm1hdGlvbl09XCJzdG9ja0luZm9ybWF0aW9uXCJcclxuICAgICAgICAgICAgICAgICAgW2luT3JkZXJJbmZvcm1hdGlvbl09XCJpbk9yZGVySW5mb3JtYXRpb25cIlxyXG4gICAgICAgICAgICAgICAgICAodHJhbnNmZXJJY29uQ2xpY2tlZCk9XCJ0cmFuc2Zlckljb25DbGlja2VkLmVtaXQoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICAgIChzZW5kTWV0aG9kRGlhbG9nQ2xpY2tlZCk9XCJzZW5kTWV0aG9kRGlhbG9nQ2xpY2tlZC5lbWl0KCRldmVudClcIlxyXG4gICAgPjwvY28tb3JkZXItdGFiPlxyXG5cclxuICAgIDxjby1vcmRlci1zdG9jay10YWIgKm5nSWY9XCJ0YWJzWzRdLmFjdGl2ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtvcmRlckluZm9ybWF0aW9uXT1cIm9yZGVySW5mb3JtYXRpb25cIlxyXG4gICAgPjwvY28tb3JkZXItc3RvY2stdGFiPlxyXG5cclxuICAgIDxjby1zdG9jay1oaXN0b3J5ICpuZ0lmPVwiaGlzdG9yeVRhYnNbMF0uYWN0aXZlICYmIHRhYnNbNV0uYWN0aXZlXCJcclxuICAgICAgICAgICAgICAgICAgICAgIFtzdG9ja0hpc3RvcnldPVwic3RvY2tIaXN0b3J5XCJcclxuICAgID48L2NvLXN0b2NrLWhpc3Rvcnk+XHJcblxyXG4gICAgPGNvLW9yZGVyLXN1cHBseS1zdG9jay1oaXN0b3J5ICpuZ0lmPVwiaGlzdG9yeVRhYnNbMV0uYWN0aXZlICYmIHRhYnNbNV0uYWN0aXZlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbb3JkZXJTdXBwbHlTdG9ja0hpc3RvcnldPVwib3JkZXJTdXBwbHlTdG9ja0hpc3RvcnlcIlxyXG4gICAgPjwvY28tb3JkZXItc3VwcGx5LXN0b2NrLWhpc3Rvcnk+XHJcblxyXG4gICAgPGNvLW9yZGVyLXN0b2NrLWNvbW1pc3Npb24taGlzdG9yeSAqbmdJZj1cImhpc3RvcnlUYWJzWzJdLmFjdGl2ZSAmJiB0YWJzWzVdLmFjdGl2ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtvcmRlclN0b2NrQ29tbWlzc2lvbkhpc3RvcnldPVwib3JkZXJDb21taXNzaW9uU3RvY2tIaXN0b3J5XCJcclxuICAgID48L2NvLW9yZGVyLXN0b2NrLWNvbW1pc3Npb24taGlzdG9yeT5cclxuXHJcbiAgICA8Y28tb3JkZXItc3RvY2staGlzdG9yeSAqbmdJZj1cImhpc3RvcnlUYWJzWzNdLmFjdGl2ZSAmJiB0YWJzWzVdLmFjdGl2ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbb3JkZXJTdG9ja0hpc3RvcnldPVwib3JkZXJTdG9ja0hpc3RvcnlcIlxyXG4gICAgPjwvY28tb3JkZXItc3RvY2staGlzdG9yeT5cclxuXHJcbiAgICA8Y28tYWxsb2NhdGlvbi1zdG9jay1oaXN0b3J5ICpuZ0lmPVwiaGlzdG9yeVRhYnNbNF0uYWN0aXZlICYmIHRhYnNbNV0uYWN0aXZlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2FsbG9jYXRpb25TdG9ja0hpc3RvcnldPVwib3JkZXJBbGxvY2F0aW9uU3RvY2tIaXN0b3J5XCJcclxuICAgID48L2NvLWFsbG9jYXRpb24tc3RvY2staGlzdG9yeT5cclxuXHJcbiAgYCxcclxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBTdG9ja1RhYnNDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xyXG4gIHB1YmxpYyByZWFkb25seSBpY29uczogdHlwZW9mIEljb24gPSBJY29uO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBzdG9ja0luZm9ybWF0aW9uOiBBcnRpY2xlU3RvY2tCb1tdID0gW107XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIGFydGljbGU6IEFydGljbGVFeHRlbmRlZDtcclxuXHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgYXJ0aWNsZUZsYXQ6IEFydGljbGVGbGF0O1xyXG5cclxuXHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgd2FyZWhvdXNlczogU3RvY2tNYW5hZ2VtZW50V2FyZWhvdXNlc1tdID0gW107XHJcblxyXG4gIEBPdXRwdXQoKVxyXG4gIHB1YmxpYyByZWFkb25seSB0cmFuc2Zlckljb25DbGlja2VkOiBFdmVudEVtaXR0ZXI8QXJ0aWNsZVN0b2NrQm8+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG5cclxuICBAT3V0cHV0KClcclxuICBwdWJsaWMgcmVhZG9ubHkgc2VuZE1ldGhvZERpYWxvZ0NsaWNrZWQ6IEV2ZW50RW1pdHRlcjxQcmludFByaWNlU3RpY2tlcnM+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG5cclxuXHJcbiAgcHVibGljIHN0b2NrTG9jYXRpb25zOiBTdG9ja0xvY2F0aW9uW10gPSBbXTtcclxuICBwdWJsaWMgc2VsZWN0ZWRMb2NhdGlvbk5vOiBzdHJpbmc7XHJcbiAgcHVibGljIHN0b2NrSGlzdG9yeTogU3RvY2tIaXN0b3J5Qm9bXSA9IFtdO1xyXG4gIHB1YmxpYyBvcmRlclN1cHBseVN0b2NrSGlzdG9yeTogU3RvY2tIaXN0b3J5Qm9bXSA9IFtdO1xyXG4gIHB1YmxpYyBvcmRlckNvbW1pc3Npb25TdG9ja0hpc3Rvcnk6IFN0b2NrSGlzdG9yeUJvW10gPSBbXTtcclxuICBwdWJsaWMgb3JkZXJTdG9ja0hpc3Rvcnk6IFN0b2NrSGlzdG9yeUJvW10gPSBbXTtcclxuICBwdWJsaWMgb3JkZXJBbGxvY2F0aW9uU3RvY2tIaXN0b3J5OiBTdG9ja0hpc3RvcnlCb1tdID0gW107XHJcbiAgcHVibGljIGluT3JkZXJJbmZvcm1hdGlvbjogQXJ0aWNsZVRyYW5zYWN0aW9uQm9bXSA9IFtdO1xyXG4gIHB1YmxpYyBvcmRlckluZm9ybWF0aW9uOiBBcnRpY2xlVHJhbnNhY3Rpb25Cb1tdID0gW107XHJcbiAgcHVibGljIHN0b2NrUHJvZ25vc2U6IFN0b2NrRm9yZWNhc3RbXSA9IFtdO1xyXG4gIHB1YmxpYyBzZWxlY3RlZFdhcmVob3VzZTogU3RvY2tNYW5hZ2VtZW50V2FyZWhvdXNlcyA9IG5ldyBTdG9ja01hbmFnZW1lbnRXYXJlaG91c2VzKCk7XHJcbiAgcHVibGljIGFydGljbGVEZXRhaWxzSW5mb3JtYXRpb246IEFydGljbGVTdG9ja01hbmFnZW1lbnQgPSBuZXcgQXJ0aWNsZVN0b2NrTWFuYWdlbWVudCgpXHJcbiAgcHVibGljIHNob3dXYXJlaG91c2VTZWxlY3Rpb246IGJvb2xlYW4gPSBmYWxzZTtcclxuICBwdWJsaWMgYXJ0aWNsZURldGFpbHM6IEFydGljbGVEZXRhaWxzQm9bXSA9IFtdO1xyXG5cclxuICBwdWJsaWMgdGFiczogVGFiW10gPSBbXTtcclxuICBwdWJsaWMgaGlzdG9yeVRhYnM6IFRhYltdID0gW107XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBfc3RvY2tTZXJ2aWNlOiBTdG9ja1NlcnZpY2UsXHJcbiAgICBwcml2YXRlIF9sb2NhbGl6ZVNlcnZpY2U6IExvY2FsaXplU2VydmljZSxcclxuICAgIHByaXZhdGUgX2NoYW5nZURldGVjdG9yOiBDaGFuZ2VEZXRlY3RvclJlZixcclxuICApIHtcclxuICB9XHJcblxyXG4gIG5nT25Jbml0KCkge1xyXG4gICAgdGhpcy50YWJzID0gW1xyXG4gICAgICB7dGl0bGU6IHRoaXMuX2xvY2FsaXplU2VydmljZS5nZXQoJ09WRVJWSUVXJyksIGFjdGl2ZTogdHJ1ZX0sXHJcbiAgICAgIHt0aXRsZTogdGhpcy5fbG9jYWxpemVTZXJ2aWNlLmdldCgnU1RPQ0tfRk9SRUNBU1QnKSwgYWN0aXZlOiBmYWxzZX0sXHJcbiAgICAgIHt0aXRsZTogdGhpcy5fbG9jYWxpemVTZXJ2aWNlLmdldCgnU1RPQ0tfREVUQUlMUycpLCBhY3RpdmU6IGZhbHNlfSxcclxuICAgICAge3RpdGxlOiB0aGlzLl9sb2NhbGl6ZVNlcnZpY2UuZ2V0KCdBTFJFQURZX0lOX09SREVSJyksIGFjdGl2ZTogZmFsc2V9LFxyXG4gICAgICB7dGl0bGU6IHRoaXMuX2xvY2FsaXplU2VydmljZS5nZXQoJ0lOX09SREVSJyksIGFjdGl2ZTogZmFsc2V9LFxyXG4gICAgICB7dGl0bGU6IHRoaXMuX2xvY2FsaXplU2VydmljZS5nZXQoJ0hJU1RPUlknKSwgYWN0aXZlOiBmYWxzZX0sXHJcbiAgICBdO1xyXG5cclxuICAgIHRoaXMuaGlzdG9yeVRhYnMgPSBbXHJcbiAgICAgIHt0aXRsZTogdGhpcy5fbG9jYWxpemVTZXJ2aWNlLmdldCgnU1RPQ0snKSwgYWN0aXZlOiB0cnVlfSxcclxuICAgICAge1xyXG4gICAgICAgIHRpdGxlOiB0aGlzLl9sb2NhbGl6ZVNlcnZpY2UuZ2V0KCdPUkRFUl9TVE9DSycpLFxyXG4gICAgICAgIGFjdGl2ZTogZmFsc2VcclxuICAgICAgfSxcclxuICAgICAge1xyXG4gICAgICAgIHRpdGxlOiB0aGlzLl9sb2NhbGl6ZVNlcnZpY2UuZ2V0KCdPUkRFUl9DT01NSVNTSU9OJyksXHJcbiAgICAgICAgYWN0aXZlOiBmYWxzZVxyXG4gICAgICB9LFxyXG4gICAgICB7dGl0bGU6IHRoaXMuX2xvY2FsaXplU2VydmljZS5nZXQoJ09SREVSJyksIGFjdGl2ZTogZmFsc2V9LFxyXG4gICAgICB7XHJcbiAgICAgICAgdGl0bGU6IHRoaXMuX2xvY2FsaXplU2VydmljZS5nZXQoJ0FMTE9DQVRJT04nKSxcclxuICAgICAgICBhY3RpdmU6IGZhbHNlXHJcbiAgICAgIH0sXHJcbiAgICBdO1xyXG5cclxuXHJcbiAgfVxyXG5cclxuICBwdWJsaWMgaGFuZGxlTG9jYXRpb25DbGlja2VkKGRhdGE6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgdGhpcy50YWJzWzBdLmFjdGl2ZSA9IGZhbHNlO1xyXG4gICAgdGhpcy50YWJzWzJdLmFjdGl2ZSA9IHRydWU7XHJcbiAgICB0aGlzLnNlbGVjdGVkV2FyZWhvdXNlID0gdGhpcy53YXJlSG91c2VGb3JDb2RlKHBhcnNlSW50KGRhdGEpKTtcclxuICAgIHRoaXMuaGFuZGxlV2FyZWhvdXNlU2VsZWN0ZWQodGhpcy5zZWxlY3RlZFdhcmVob3VzZSk7XHJcbiAgICB0aGlzLmdldFN0b2NrRGF0YSh0aGlzLnNlbGVjdGVkV2FyZWhvdXNlKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXRTdG9ja0hpc3RvcnkoKTogdm9pZCB7XHJcbiAgICBjb25zdCBzdG9ja0hpc3RvcnlJbmZvcm1hdGlvbjogR2V0U3RvY2tIaXN0b3J5UmVxdWVzdCA9IG5ldyBHZXRTdG9ja0hpc3RvcnlSZXF1ZXN0KCk7XHJcbiAgICBzdG9ja0hpc3RvcnlJbmZvcm1hdGlvbi50eXBlID0gXCJWXCI7XHJcbiAgICBzdG9ja0hpc3RvcnlJbmZvcm1hdGlvbi5nb29kSWQgPSB0aGlzLmFydGljbGUuZ29vZElkLnRvU3RyaW5nKCk7XHJcbiAgICB0aGlzLl9zdG9ja1NlcnZpY2UuZ2V0U3RvY2tIaXN0b3J5KHN0b2NrSGlzdG9yeUluZm9ybWF0aW9uKS50aGVuKHJlc3VsdCA9PiB7XHJcbiAgICAgIHRoaXMuc3RvY2tIaXN0b3J5ID0gcmVzdWx0XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXRPcmRlclN1cHBseVN0b2NrSGlzdG9yeSgpOiB2b2lkIHtcclxuICAgIGNvbnN0IHN0b2NrSGlzdG9yeUluZm9ybWF0aW9uOiBHZXRTdG9ja0hpc3RvcnlSZXF1ZXN0ID0gbmV3IEdldFN0b2NrSGlzdG9yeVJlcXVlc3QoKTtcclxuICAgIHN0b2NrSGlzdG9yeUluZm9ybWF0aW9uLnR5cGUgPSBcIk9cIjtcclxuICAgIHN0b2NrSGlzdG9yeUluZm9ybWF0aW9uLmdvb2RJZCA9IHRoaXMuYXJ0aWNsZS5nb29kSWQudG9TdHJpbmcoKTtcclxuICAgIHRoaXMuX3N0b2NrU2VydmljZS5nZXRTdG9ja0hpc3Rvcnkoc3RvY2tIaXN0b3J5SW5mb3JtYXRpb24pLnRoZW4ocmVzdWx0ID0+IHtcclxuICAgICAgdGhpcy5vcmRlclN1cHBseVN0b2NrSGlzdG9yeSA9IHJlc3VsdDtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldE9yZGVyQ29tbWlzc2lvblN0b2NrSGlzdG9yeSgpOiB2b2lkIHtcclxuICAgIGNvbnN0IHN0b2NrSGlzdG9yeUluZm9ybWF0aW9uOiBHZXRTdG9ja0hpc3RvcnlSZXF1ZXN0ID0gbmV3IEdldFN0b2NrSGlzdG9yeVJlcXVlc3QoKTtcclxuICAgIHN0b2NrSGlzdG9yeUluZm9ybWF0aW9uLnR5cGUgPSBcIkNcIjtcclxuICAgIHN0b2NrSGlzdG9yeUluZm9ybWF0aW9uLmdvb2RJZCA9IHRoaXMuYXJ0aWNsZS5nb29kSWQudG9TdHJpbmcoKTtcclxuICAgIHRoaXMuX3N0b2NrU2VydmljZS5nZXRTdG9ja0hpc3Rvcnkoc3RvY2tIaXN0b3J5SW5mb3JtYXRpb24pLnRoZW4ocmVzdWx0ID0+IHtcclxuICAgICAgdGhpcy5vcmRlckNvbW1pc3Npb25TdG9ja0hpc3RvcnkgPSByZXN1bHQ7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXRPcmRlclN0b2NrSGlzdG9yeSgpOiB2b2lkIHtcclxuICAgIGNvbnN0IHN0b2NrSGlzdG9yeUluZm9ybWF0aW9uOiBHZXRTdG9ja0hpc3RvcnlSZXF1ZXN0ID0gbmV3IEdldFN0b2NrSGlzdG9yeVJlcXVlc3QoKTtcclxuICAgIHN0b2NrSGlzdG9yeUluZm9ybWF0aW9uLnR5cGUgPSBcIkJcIjtcclxuICAgIHN0b2NrSGlzdG9yeUluZm9ybWF0aW9uLmdvb2RJZCA9IHRoaXMuYXJ0aWNsZS5nb29kSWQudG9TdHJpbmcoKTtcclxuICAgIHRoaXMuX3N0b2NrU2VydmljZS5nZXRTdG9ja0hpc3Rvcnkoc3RvY2tIaXN0b3J5SW5mb3JtYXRpb24pLnRoZW4ocmVzdWx0ID0+IHtcclxuICAgICAgdGhpcy5vcmRlclN0b2NrSGlzdG9yeSA9IHJlc3VsdDtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldEFsbG9jYXRpb25TdG9ja0hpc3RvcnkoKTogdm9pZCB7XHJcbiAgICBjb25zdCBzdG9ja0hpc3RvcnlJbmZvcm1hdGlvbjogR2V0U3RvY2tIaXN0b3J5UmVxdWVzdCA9IG5ldyBHZXRTdG9ja0hpc3RvcnlSZXF1ZXN0KCk7XHJcbiAgICBzdG9ja0hpc3RvcnlJbmZvcm1hdGlvbi50eXBlID0gXCJUXCI7XHJcbiAgICBzdG9ja0hpc3RvcnlJbmZvcm1hdGlvbi5nb29kSWQgPSB0aGlzLmFydGljbGUuZ29vZElkLnRvU3RyaW5nKCk7XHJcbiAgICB0aGlzLl9zdG9ja1NlcnZpY2UuZ2V0U3RvY2tIaXN0b3J5KHN0b2NrSGlzdG9yeUluZm9ybWF0aW9uKS50aGVuKHJlc3VsdCA9PiB7XHJcbiAgICAgIHRoaXMub3JkZXJBbGxvY2F0aW9uU3RvY2tIaXN0b3J5ID0gcmVzdWx0O1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0SW5PcmRlckRhdGEoKTogdm9pZCB7XHJcbiAgICBjb25zdCBpbk9yZGVyRGF0YTogQXJ0aWNsZVRyYW5zYWN0aW9uID0gbmV3IEFydGljbGVUcmFuc2FjdGlvbigpO1xyXG4gICAgaW5PcmRlckRhdGEudHlwZSA9IFwiVlwiO1xyXG4gICAgaW5PcmRlckRhdGEuZ29vZElkID0gdGhpcy5zdG9ja0luZm9ybWF0aW9uWzBdLmdvb2RJZC50b1N0cmluZygpO1xyXG4gICAgdGhpcy5fc3RvY2tTZXJ2aWNlLmdldEFydGljbGVUcmFuc2FjdGlvbihpbk9yZGVyRGF0YSkudGhlbihyZXN1bHQgPT4ge1xyXG4gICAgICB0aGlzLmluT3JkZXJJbmZvcm1hdGlvbiA9IHJlc3VsdDtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldE9yZGVyRGF0YSgpOiB2b2lkIHtcclxuICAgIGNvbnN0IG9yZGVyRGF0YTogQXJ0aWNsZVRyYW5zYWN0aW9uID0gbmV3IEFydGljbGVUcmFuc2FjdGlvbigpO1xyXG4gICAgb3JkZXJEYXRhLnR5cGUgPSBcIklcIjtcclxuICAgIG9yZGVyRGF0YS5nb29kSWQgPSB0aGlzLnN0b2NrSW5mb3JtYXRpb25bMF0uZ29vZElkLnRvU3RyaW5nKCk7XHJcbiAgICB0aGlzLl9zdG9ja1NlcnZpY2UuZ2V0QXJ0aWNsZVRyYW5zYWN0aW9uKG9yZGVyRGF0YSkudGhlbihyZXN1bHQgPT4ge1xyXG4gICAgICB0aGlzLm9yZGVySW5mb3JtYXRpb24gPSByZXN1bHQ7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXRTdG9ja1Byb2dub3NlKHdhcmVob3VzZU5vOiBudW1iZXIpOiB2b2lkIHtcclxuICAgIHRoaXMuX3N0b2NrU2VydmljZS5zdG9ja1Byb2dub3NlKHRoaXMuYXJ0aWNsZS5nb29kSWQsIHdhcmVob3VzZU5vKS50aGVuKHJlc3VsdCA9PiB7XHJcbiAgICAgIHRoaXMuc3RvY2tQcm9nbm9zZSA9IHJlc3VsdDtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGhhbmRsZVdhcmVob3VzZVNlbGVjdGVkKGV2ZW50OiBTdG9ja01hbmFnZW1lbnRXYXJlaG91c2VzKTogdm9pZCB7XHJcbiAgICB0aGlzLnNlbGVjdGVkV2FyZWhvdXNlID0gZXZlbnQ7XHJcbiAgICB0aGlzLl9zdG9ja1NlcnZpY2Uud2FyZWhvdXNlU2VsZWN0ZWQuZW1pdChldmVudCk7XHJcbiAgICBpZiAodGhpcy50YWJzWzFdLmFjdGl2ZSkge1xyXG4gICAgICB0aGlzLmdldFN0b2NrUHJvZ25vc2UodGhpcy5zZWxlY3RlZFdhcmVob3VzZS53YXJlaG91c2VObyk7XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy50YWJzWzJdLmFjdGl2ZSkge1xyXG4gICAgICB0aGlzLmFydGljbGVEZXRhaWxzSW5mb3JtYXRpb24ud2FyZWhvdXNlTnVtYmVyID0gZXZlbnQud2FyZWhvdXNlTm87XHJcbiAgICAgIHRoaXMuYXJ0aWNsZURldGFpbHNJbmZvcm1hdGlvbi5nb29kSWQgPSB0aGlzLmFydGljbGUuZ29vZElkLnRvU3RyaW5nKCk7XHJcbiAgICAgIHRoaXMuX3N0b2NrU2VydmljZS5nZXRBcnRpY2xlRGV0YWlscyh0aGlzLmFydGljbGVEZXRhaWxzSW5mb3JtYXRpb24pLnRoZW4oKGRldGFpbHMpID0+IHtcclxuICAgICAgICB0aGlzLmFydGljbGVEZXRhaWxzID0gZGV0YWlscztcclxuICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldFN0b2NrTG9jYXRpb25zKCkge1xyXG4gICAgdGhpcy5fc3RvY2tTZXJ2aWNlLmdldFN0b2NrTWFuYWdlbWVudExvY2F0aW9ucyh0aGlzLnNlbGVjdGVkV2FyZWhvdXNlLndhcmVob3VzZU5vKS50aGVuKCByZXN1bHQgPT4ge1xyXG4gICAgICB0aGlzLnN0b2NrTG9jYXRpb25zID0gcmVzdWx0O1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0U3RvY2tEYXRhKHdhcmVob3VzZTogU3RvY2tNYW5hZ2VtZW50V2FyZWhvdXNlcykge1xyXG4gICAgdGhpcy5oYW5kbGVXYXJlaG91c2VTZWxlY3RlZCh3YXJlaG91c2UpO1xyXG4gICAgdGhpcy5nZXRTdG9ja1Byb2dub3NlKHdhcmVob3VzZS53YXJlaG91c2VObyk7XHJcbiAgICB0aGlzLmdldE9yZGVyRGF0YSgpO1xyXG4gICAgdGhpcy5nZXRJbk9yZGVyRGF0YSgpO1xyXG4gICAgdGhpcy5nZXRBbGxvY2F0aW9uU3RvY2tIaXN0b3J5KCk7XHJcbiAgICB0aGlzLmdldE9yZGVyU3RvY2tIaXN0b3J5KCk7XHJcbiAgICB0aGlzLmdldE9yZGVyQ29tbWlzc2lvblN0b2NrSGlzdG9yeSgpO1xyXG4gICAgdGhpcy5nZXRPcmRlclN1cHBseVN0b2NrSGlzdG9yeSgpO1xyXG4gICAgdGhpcy5nZXRTdG9ja0hpc3RvcnkoKTtcclxuICAgIHRoaXMuZ2V0U3RvY2tMb2NhdGlvbnMoKTtcclxuICAgIHRoaXMuX2NoYW5nZURldGVjdG9yLm1hcmtGb3JDaGVjaygpO1xyXG4gICAgdGhpcy5fY2hhbmdlRGV0ZWN0b3IuZGV0ZWN0Q2hhbmdlcygpO1xyXG5cclxuICB9XHJcblxyXG4gIHB1YmxpYyB3YXJlSG91c2VGb3JDb2RlKGNvZGU6IG51bWJlcikge1xyXG4gICAgcmV0dXJuIHRoaXMud2FyZWhvdXNlcy5maW5kKHdhcmVob3VzZSA9PiB3YXJlaG91c2Uud2FyZWhvdXNlTm8gPT09IGNvZGUpO1xyXG4gIH1cclxufVxyXG4iXX0=
256
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RvY2stdGFicy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zaGFyZWRjb21wb25lbnRzL3NyYy9saWIvY29tcG9uZW50cy9zdG9jay9zdG9jay10YWJzL3N0b2NrLXRhYnMuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxpQkFBaUIsRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBVSxNQUFNLEVBQUUsaUJBQWlCLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDbkgsT0FBTyxFQUFDLElBQUksRUFBQyxNQUFNLHlCQUF5QixDQUFDO0FBRTdDLE9BQU8sRUFBQyxzQkFBc0IsRUFBQyxNQUFNLDREQUE0RCxDQUFDO0FBQ2xHLE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSxnQ0FBZ0MsQ0FBQztBQUc1RCxPQUFPLEVBQUMsa0JBQWtCLEVBQUMsTUFBTSxzREFBc0QsQ0FBQztBQUV4RixPQUFPLEVBQUMseUJBQXlCLEVBQUMsTUFBTSxpRUFBaUUsQ0FBQztBQUcxRyxPQUFPLEVBQUMsc0JBQXNCLEVBQUMsTUFBTSwyREFBMkQsQ0FBQztBQUVqRyxPQUFPLEVBQUMsZUFBZSxFQUFDLE1BQU0sd0NBQXdDLENBQUM7QUE0RXZFLE1BQU0sT0FBTyxrQkFBa0I7SUEyQzdCLFlBQ1UsYUFBMkIsRUFDM0IsZ0JBQWlDLEVBQ2pDLGVBQWtDO1FBRmxDLGtCQUFhLEdBQWIsYUFBYSxDQUFjO1FBQzNCLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBaUI7UUFDakMsb0JBQWUsR0FBZixlQUFlLENBQW1CO1FBN0M1QixVQUFLLEdBQWdCLElBQUksQ0FBQztRQUduQyxxQkFBZ0IsR0FBcUIsRUFBRSxDQUFDO1FBWXhDLGVBQVUsR0FBZ0MsRUFBRSxDQUFDO1FBR3BDLHdCQUFtQixHQUFpQyxJQUFJLFlBQVksRUFBRSxDQUFDO1FBR3ZFLDRCQUF1QixH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Q2pDLElBQUksQ0FBQyxvQkFBb0IsRUFBRSxDQUFDO1FBQzVCLElBQUksQ0FBQyw4QkFBOEIsRUFBRSxDQUFDO1FBQ3RDLElBQUksQ0FBQywwQkFBMEIsRUFBRSxDQUFDO1FBQ2xDLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztRQUN2QixJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztRQUN6QixJQUFJLENBQUMsZUFBZSxDQUFDLFlBQVksRUFBRSxDQUFDO1FBQ3BDLElBQUksQ0FBQyxlQUFlLENBQUMsYUFBYSxFQUFFLENBQUM7SUFDdkMsQ0FBQztJQUVNLGdCQUFnQixDQUFDLElBQVk7UUFDbEMsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLFNBQVMsQ0FBQyxXQUFXLEtBQUssSUFBSSxDQUFDLENBQUM7SUFDM0UsQ0FBQzs7O1lBN1FGLFNBQVMsU0FBQztnQkFDVCxRQUFRLEVBQUUsZUFBZTtnQkFDekIsUUFBUSxFQUFFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FrRVQ7Z0JBQ0QsYUFBYSxFQUFFLGlCQUFpQixDQUFDLElBQUk7YUFDdEM7OztZQXJGTyxZQUFZO1lBVVosZUFBZTtZQWRmLGlCQUFpQjs7OytCQTZGdEIsS0FBSztzQkFHTCxLQUFLOzBCQUdMLEtBQUs7Z0NBR0wsS0FBSzt5QkFHTCxLQUFLO2tDQUdMLE1BQU07c0NBR04sTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Q2hhbmdlRGV0ZWN0b3JSZWYsIENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25Jbml0LCBPdXRwdXQsIFZpZXdFbmNhcHN1bGF0aW9ufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHtJY29ufSBmcm9tIFwiLi4vLi4vLi4vZW51bS9pY29uLmVudW1cIjtcclxuaW1wb3J0IHtBcnRpY2xlU3RvY2sgYXMgQXJ0aWNsZVN0b2NrQm99IGZyb20gXCJAY29saWpuaXQvYXJ0aWNsZWFwaS9idWlsZC9tb2RlbC9hcnRpY2xlLXN0b2NrLmJvXCI7XHJcbmltcG9ydCB7R2V0U3RvY2tIaXN0b3J5UmVxdWVzdH0gZnJvbSBcIkBjb2xpam5pdC9hcnRpY2xlYXBpL2J1aWxkL21vZGVsL2dldC1zdG9jay1oaXN0b3J5LXJlcXVlc3RcIjtcclxuaW1wb3J0IHtTdG9ja1NlcnZpY2V9IGZyb20gXCIuLi8uLi8uLi9zZXJ2aWNlL3N0b2NrLnNlcnZpY2VcIjtcclxuaW1wb3J0IHtTdG9ja0hpc3RvcnlCb30gZnJvbSBcIkBjb2xpam5pdC9hcnRpY2xlYXBpL2J1aWxkL21vZGVsL3N0b2NrLWhpc3RvcnkuYm9cIjtcclxuaW1wb3J0IHtUYWJ9IGZyb20gXCIuLi8uLi90YWItYmFyL3RhYi5pbnRlcmZhY2VcIjtcclxuaW1wb3J0IHtBcnRpY2xlVHJhbnNhY3Rpb259IGZyb20gXCJAY29saWpuaXQvYXJ0aWNsZWFwaS9idWlsZC9tb2RlbC9hcnRpY2xlLXRyYW5zYWN0aW9uXCI7XHJcbmltcG9ydCB7QXJ0aWNsZVRyYW5zYWN0aW9uIGFzIEFydGljbGVUcmFuc2FjdGlvbkJvfSBmcm9tIFwiQGNvbGlqbml0L2FydGljbGVhcGkvYnVpbGQvbW9kZWwvYXJ0aWNsZS10cmFuc2FjdGlvbi5ib1wiO1xyXG5pbXBvcnQge1N0b2NrTWFuYWdlbWVudFdhcmVob3VzZXN9IGZyb20gXCJAY29saWpuaXQvYXJ0aWNsZWFwaS9idWlsZC9tb2RlbC9zdG9jay1tYW5hZ2VtZW50LXdhcmVob3VzZXMuYm9cIjtcclxuaW1wb3J0IHtQcmludFByaWNlU3RpY2tlcnN9IGZyb20gXCJAY29saWpuaXQvc2hhcmVkYXBpL2J1aWxkL21vZGVsL3ByaW50LXByaWNlLXN0aWNrZXJzLmJvXCI7XHJcbmltcG9ydCB7U3RvY2tGb3JlY2FzdH0gZnJvbSBcIkBjb2xpam5pdC9hcnRpY2xlYXBpL2J1aWxkL21vZGVsL3N0b2NrLWZvcmVjYXN0LmJvXCI7XHJcbmltcG9ydCB7QXJ0aWNsZVN0b2NrTWFuYWdlbWVudH0gZnJvbSBcIkBjb2xpam5pdC9hcnRpY2xlYXBpL2J1aWxkL21vZGVsL2FydGljbGUtc3RvY2stbWFuYWdlbWVudFwiO1xyXG5pbXBvcnQge0FydGljbGVEZXRhaWxzQm99IGZyb20gXCJAY29saWpuaXQvYXJ0aWNsZWFwaS9idWlsZC9tb2RlbC9hcnRpY2xlLWRldGFpbHMuYm9cIjtcclxuaW1wb3J0IHtMb2NhbGl6ZVNlcnZpY2V9IGZyb20gJy4uLy4uLy4uL2xvY2FsaXphdGlvbi9sb2NhbGl6ZS5zZXJ2aWNlJztcclxuaW1wb3J0IHtBcnRpY2xlRXh0ZW5kZWR9IGZyb20gXCJAY29saWpuaXQvYXJ0aWNsZWFwaS9idWlsZC9tb2RlbC9hcnRpY2xlLWV4dGVuZGVkLmJvXCI7XHJcbmltcG9ydCB7QXJ0aWNsZUZsYXR9IGZyb20gXCJAY29saWpuaXQvYXJ0aWNsZWFwaS9idWlsZC9tb2RlbC9hcnRpY2xlLWZsYXQuYm9cIjtcclxuaW1wb3J0IHtTdG9ja0xvY2F0aW9ufSBmcm9tIFwiQGNvbGlqbml0L2FydGljbGVhcGkvYnVpbGQvbW9kZWwvc3RvY2stbG9jYXRpb24uYm9cIjtcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiBcImNvLXN0b2NrLXRhYnNcIixcclxuICB0ZW1wbGF0ZTogYFxyXG4gICAgPGNvLXRhYi1iYXIgW3dhcmVIb3VzZUxhYmVsXT1cIidDSE9JQ0VTJyB8IGxvY2FsaXplXCJcclxuICAgICAgICAgICAgICAgIFt3YXJlSG91c2VTZWFyY2hMYWJlbF09XCInU0VBUkNIJyB8IGxvY2FsaXplXCJcclxuICAgICAgICAgICAgICAgIFt0YWJzXT1cInRhYnNcIlxyXG4gICAgICAgICAgICAgICAgW2RhdGFXYXJlSG91c2VDb2RlXT1cIndhcmVob3VzZXNcIlxyXG4gICAgICAgICAgICAgICAgW3NlbGVjdGVkV2FyZWhvdXNlXT1cInNlbGVjdGVkV2FyZWhvdXNlXCJcclxuICAgICAgICAgICAgICAgIFtzZWNvbmRhcnlUYWJzXT1cImhpc3RvcnlUYWJzXCJcclxuICAgICAgICAgICAgICAgIFtBY3RpdmF0ZVNlY29uZGFyeVRhYnNdPVwidGFic1s1XS5hY3RpdmVcIlxyXG4gICAgICAgICAgICAgICAgW3Nob3dXYXJlaG91c2VTZWxlY3Rpb25dPVwidGFic1sxXS5hY3RpdmUgfHwgdGFic1syXS5hY3RpdmVcIlxyXG4gICAgICAgICAgICAgICAgKHdhcmVob3VzZVNlbGVjdGVkKT1cImhhbmRsZVdhcmVob3VzZVNlbGVjdGVkKCRldmVudClcIlxyXG4gICAgPjwvY28tdGFiLWJhcj5cclxuXHJcbiAgICA8Y28tc3RvY2stdGFiICpuZ0lmPVwidGFic1swXS5hY3RpdmVcIlxyXG4gICAgICAgICAgICAgICAgICBbYXJ0aWNsZVN0b2NrSW5mb3JtYXRpb25dPVwic3RvY2tJbmZvcm1hdGlvblwiXHJcbiAgICAgICAgICAgICAgICAgIChsb2NhdGlvbkNsaWNrZWQpPVwiaGFuZGxlTG9jYXRpb25DbGlja2VkKCRldmVudClcIlxyXG4gICAgPjwvY28tc3RvY2stdGFiPlxyXG5cclxuICAgIDxjby1zdG9jay1wcm9nbm9zZSAqbmdJZj1cInRhYnNbMV0uYWN0aXZlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICBbc3RvY2tQcm9nbm9zZV09XCJzdG9ja1Byb2dub3NlXCJcclxuICAgID48L2NvLXN0b2NrLXByb2dub3NlPlxyXG5cclxuICAgIDxjby1zdG9jay1sb2NhdGlvbiAqbmdJZj1cInRhYnNbMl0uYWN0aXZlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICBbYXJ0aWNsZVN0b2NrSW5mb109XCJhcnRpY2xlRGV0YWlsc1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgW2FydGljbGVTdG9ja0luZm9ybWF0aW9uXT1cInN0b2NrSW5mb3JtYXRpb25cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgIFthcnRpY2xlXT1cImFydGljbGVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgIFthcnRpY2xlRmxhdF09XCJhcnRpY2xlRmxhdFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgW3NlbGVjdGVkV2FyZWhvdXNlXT1cInNlbGVjdGVkV2FyZWhvdXNlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICBbZGF0YVdhcmVIb3VzZUNvZGVdPVwid2FyZWhvdXNlc1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgW3N0b2NrTG9jYXRpb25zXT1cInN0b2NrTG9jYXRpb25zXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAodHJhbnNmZXJJY29uQ2xpY2tlZCk9XCJ0cmFuc2Zlckljb25DbGlja2VkLmVtaXQoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgKHNlbmRNZXRob2REaWFsb2dDbGlja2VkKT1cInNlbmRNZXRob2REaWFsb2dDbGlja2VkLmVtaXQoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgW3Nob3dTdG9ja1RyYW5zZmVyXT1cInNob3dTdG9ja1RyYW5zZmVyXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAoc2hvd1N0b2NrVHJhbnNmZXJDaGFuZ2UpPVwib25TaG93U3RvY2tUcmFuc2ZlckNoYW5nZSgkZXZlbnQpXCJcclxuICAgID48L2NvLXN0b2NrLWxvY2F0aW9uPlxyXG5cclxuICAgIDxjby1vcmRlci10YWIgKm5nSWY9XCJ0YWJzWzNdLmFjdGl2ZVwiXHJcbiAgICAgICAgICAgICAgICAgIFthcnRpY2xlU3RvY2tJbmZvcm1hdGlvbl09XCJzdG9ja0luZm9ybWF0aW9uXCJcclxuICAgICAgICAgICAgICAgICAgW2luT3JkZXJJbmZvcm1hdGlvbl09XCJpbk9yZGVySW5mb3JtYXRpb25cIlxyXG4gICAgICAgICAgICAgICAgICAodHJhbnNmZXJJY29uQ2xpY2tlZCk9XCJ0cmFuc2Zlckljb25DbGlja2VkLmVtaXQoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICAgIChzZW5kTWV0aG9kRGlhbG9nQ2xpY2tlZCk9XCJzZW5kTWV0aG9kRGlhbG9nQ2xpY2tlZC5lbWl0KCRldmVudClcIlxyXG4gICAgPjwvY28tb3JkZXItdGFiPlxyXG5cclxuICAgIDxjby1vcmRlci1zdG9jay10YWIgKm5nSWY9XCJ0YWJzWzRdLmFjdGl2ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtvcmRlckluZm9ybWF0aW9uXT1cIm9yZGVySW5mb3JtYXRpb25cIlxyXG4gICAgPjwvY28tb3JkZXItc3RvY2stdGFiPlxyXG5cclxuICAgIDxjby1zdG9jay1oaXN0b3J5ICpuZ0lmPVwiaGlzdG9yeVRhYnNbMF0uYWN0aXZlICYmIHRhYnNbNV0uYWN0aXZlXCJcclxuICAgICAgICAgICAgICAgICAgICAgIFtzdG9ja0hpc3RvcnldPVwic3RvY2tIaXN0b3J5XCJcclxuICAgID48L2NvLXN0b2NrLWhpc3Rvcnk+XHJcblxyXG4gICAgPGNvLW9yZGVyLXN1cHBseS1zdG9jay1oaXN0b3J5ICpuZ0lmPVwiaGlzdG9yeVRhYnNbMV0uYWN0aXZlICYmIHRhYnNbNV0uYWN0aXZlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbb3JkZXJTdXBwbHlTdG9ja0hpc3RvcnldPVwib3JkZXJTdXBwbHlTdG9ja0hpc3RvcnlcIlxyXG4gICAgPjwvY28tb3JkZXItc3VwcGx5LXN0b2NrLWhpc3Rvcnk+XHJcblxyXG4gICAgPGNvLW9yZGVyLXN0b2NrLWNvbW1pc3Npb24taGlzdG9yeSAqbmdJZj1cImhpc3RvcnlUYWJzWzJdLmFjdGl2ZSAmJiB0YWJzWzVdLmFjdGl2ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtvcmRlclN0b2NrQ29tbWlzc2lvbkhpc3RvcnldPVwib3JkZXJDb21taXNzaW9uU3RvY2tIaXN0b3J5XCJcclxuICAgID48L2NvLW9yZGVyLXN0b2NrLWNvbW1pc3Npb24taGlzdG9yeT5cclxuXHJcbiAgICA8Y28tb3JkZXItc3RvY2staGlzdG9yeSAqbmdJZj1cImhpc3RvcnlUYWJzWzNdLmFjdGl2ZSAmJiB0YWJzWzVdLmFjdGl2ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbb3JkZXJTdG9ja0hpc3RvcnldPVwib3JkZXJTdG9ja0hpc3RvcnlcIlxyXG4gICAgPjwvY28tb3JkZXItc3RvY2staGlzdG9yeT5cclxuXHJcbiAgICA8Y28tYWxsb2NhdGlvbi1zdG9jay1oaXN0b3J5ICpuZ0lmPVwiaGlzdG9yeVRhYnNbNF0uYWN0aXZlICYmIHRhYnNbNV0uYWN0aXZlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2FsbG9jYXRpb25TdG9ja0hpc3RvcnldPVwib3JkZXJBbGxvY2F0aW9uU3RvY2tIaXN0b3J5XCJcclxuICAgID48L2NvLWFsbG9jYXRpb24tc3RvY2staGlzdG9yeT5cclxuXHJcbiAgYCxcclxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBTdG9ja1RhYnNDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xyXG4gIHB1YmxpYyByZWFkb25seSBpY29uczogdHlwZW9mIEljb24gPSBJY29uO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBzdG9ja0luZm9ybWF0aW9uOiBBcnRpY2xlU3RvY2tCb1tdID0gW107XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIGFydGljbGU6IEFydGljbGVFeHRlbmRlZDtcclxuXHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgYXJ0aWNsZUZsYXQ6IEFydGljbGVGbGF0O1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBzaG93U3RvY2tUcmFuc2ZlcjogYm9vbGVhbjtcclxuXHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgd2FyZWhvdXNlczogU3RvY2tNYW5hZ2VtZW50V2FyZWhvdXNlc1tdID0gW107XHJcblxyXG4gIEBPdXRwdXQoKVxyXG4gIHB1YmxpYyByZWFkb25seSB0cmFuc2Zlckljb25DbGlja2VkOiBFdmVudEVtaXR0ZXI8QXJ0aWNsZVN0b2NrQm8+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG5cclxuICBAT3V0cHV0KClcclxuICBwdWJsaWMgcmVhZG9ubHkgc2VuZE1ldGhvZERpYWxvZ0NsaWNrZWQ6IEV2ZW50RW1pdHRlcjxQcmludFByaWNlU3RpY2tlcnM+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG5cclxuXHJcbiAgcHVibGljIHN0b2NrTG9jYXRpb25zOiBTdG9ja0xvY2F0aW9uW10gPSBbXTtcclxuICBwdWJsaWMgc2VsZWN0ZWRMb2NhdGlvbk5vOiBzdHJpbmc7XHJcbiAgcHVibGljIHN0b2NrSGlzdG9yeTogU3RvY2tIaXN0b3J5Qm9bXSA9IFtdO1xyXG4gIHB1YmxpYyBvcmRlclN1cHBseVN0b2NrSGlzdG9yeTogU3RvY2tIaXN0b3J5Qm9bXSA9IFtdO1xyXG4gIHB1YmxpYyBvcmRlckNvbW1pc3Npb25TdG9ja0hpc3Rvcnk6IFN0b2NrSGlzdG9yeUJvW10gPSBbXTtcclxuICBwdWJsaWMgb3JkZXJTdG9ja0hpc3Rvcnk6IFN0b2NrSGlzdG9yeUJvW10gPSBbXTtcclxuICBwdWJsaWMgb3JkZXJBbGxvY2F0aW9uU3RvY2tIaXN0b3J5OiBTdG9ja0hpc3RvcnlCb1tdID0gW107XHJcbiAgcHVibGljIGluT3JkZXJJbmZvcm1hdGlvbjogQXJ0aWNsZVRyYW5zYWN0aW9uQm9bXSA9IFtdO1xyXG4gIHB1YmxpYyBvcmRlckluZm9ybWF0aW9uOiBBcnRpY2xlVHJhbnNhY3Rpb25Cb1tdID0gW107XHJcbiAgcHVibGljIHN0b2NrUHJvZ25vc2U6IFN0b2NrRm9yZWNhc3RbXSA9IFtdO1xyXG4gIHB1YmxpYyBzZWxlY3RlZFdhcmVob3VzZTogU3RvY2tNYW5hZ2VtZW50V2FyZWhvdXNlcyA9IG5ldyBTdG9ja01hbmFnZW1lbnRXYXJlaG91c2VzKCk7XHJcbiAgcHVibGljIGFydGljbGVEZXRhaWxzSW5mb3JtYXRpb246IEFydGljbGVTdG9ja01hbmFnZW1lbnQgPSBuZXcgQXJ0aWNsZVN0b2NrTWFuYWdlbWVudCgpXHJcbiAgcHVibGljIHNob3dXYXJlaG91c2VTZWxlY3Rpb246IGJvb2xlYW4gPSBmYWxzZTtcclxuICBwdWJsaWMgYXJ0aWNsZURldGFpbHM6IEFydGljbGVEZXRhaWxzQm9bXSA9IFtdO1xyXG5cclxuICBwdWJsaWMgdGFiczogVGFiW10gPSBbXTtcclxuICBwdWJsaWMgaGlzdG9yeVRhYnM6IFRhYltdID0gW107XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBfc3RvY2tTZXJ2aWNlOiBTdG9ja1NlcnZpY2UsXHJcbiAgICBwcml2YXRlIF9sb2NhbGl6ZVNlcnZpY2U6IExvY2FsaXplU2VydmljZSxcclxuICAgIHByaXZhdGUgX2NoYW5nZURldGVjdG9yOiBDaGFuZ2VEZXRlY3RvclJlZixcclxuICApIHtcclxuICB9XHJcblxyXG4gIG5nT25Jbml0KCkge1xyXG4gICAgdGhpcy50YWJzID0gW1xyXG4gICAgICB7dGl0bGU6IHRoaXMuX2xvY2FsaXplU2VydmljZS5nZXQoJ09WRVJWSUVXJyksIGFjdGl2ZTogdHJ1ZX0sXHJcbiAgICAgIHt0aXRsZTogdGhpcy5fbG9jYWxpemVTZXJ2aWNlLmdldCgnU1RPQ0tfRk9SRUNBU1QnKSwgYWN0aXZlOiBmYWxzZX0sXHJcbiAgICAgIHt0aXRsZTogdGhpcy5fbG9jYWxpemVTZXJ2aWNlLmdldCgnU1RPQ0tfREVUQUlMUycpLCBhY3RpdmU6IGZhbHNlfSxcclxuICAgICAge3RpdGxlOiB0aGlzLl9sb2NhbGl6ZVNlcnZpY2UuZ2V0KCdBTFJFQURZX0lOX09SREVSJyksIGFjdGl2ZTogZmFsc2V9LFxyXG4gICAgICB7dGl0bGU6IHRoaXMuX2xvY2FsaXplU2VydmljZS5nZXQoJ0lOX09SREVSJyksIGFjdGl2ZTogZmFsc2V9LFxyXG4gICAgICB7dGl0bGU6IHRoaXMuX2xvY2FsaXplU2VydmljZS5nZXQoJ0hJU1RPUlknKSwgYWN0aXZlOiBmYWxzZX0sXHJcbiAgICBdO1xyXG5cclxuICAgIHRoaXMuaGlzdG9yeVRhYnMgPSBbXHJcbiAgICAgIHt0aXRsZTogdGhpcy5fbG9jYWxpemVTZXJ2aWNlLmdldCgnU1RPQ0snKSwgYWN0aXZlOiB0cnVlfSxcclxuICAgICAge1xyXG4gICAgICAgIHRpdGxlOiB0aGlzLl9sb2NhbGl6ZVNlcnZpY2UuZ2V0KCdPUkRFUl9TVE9DSycpLFxyXG4gICAgICAgIGFjdGl2ZTogZmFsc2VcclxuICAgICAgfSxcclxuICAgICAge1xyXG4gICAgICAgIHRpdGxlOiB0aGlzLl9sb2NhbGl6ZVNlcnZpY2UuZ2V0KCdPUkRFUl9DT01NSVNTSU9OJyksXHJcbiAgICAgICAgYWN0aXZlOiBmYWxzZVxyXG4gICAgICB9LFxyXG4gICAgICB7dGl0bGU6IHRoaXMuX2xvY2FsaXplU2VydmljZS5nZXQoJ09SREVSJyksIGFjdGl2ZTogZmFsc2V9LFxyXG4gICAgICB7XHJcbiAgICAgICAgdGl0bGU6IHRoaXMuX2xvY2FsaXplU2VydmljZS5nZXQoJ0FMTE9DQVRJT04nKSxcclxuICAgICAgICBhY3RpdmU6IGZhbHNlXHJcbiAgICAgIH0sXHJcbiAgICBdO1xyXG5cclxuXHJcbiAgfVxyXG4gIHB1YmxpYyBvblNob3dTdG9ja1RyYW5zZmVyQ2hhbmdlKHNob3c6IGJvb2xlYW4pIHtcclxuICAgIHRoaXMuc2hvd1N0b2NrVHJhbnNmZXIgPSBzaG93O1xyXG4gIH1cclxuICBwdWJsaWMgaGFuZGxlTG9jYXRpb25DbGlja2VkKGRhdGE6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgdGhpcy50YWJzWzBdLmFjdGl2ZSA9IGZhbHNlO1xyXG4gICAgdGhpcy50YWJzWzJdLmFjdGl2ZSA9IHRydWU7XHJcbiAgICB0aGlzLnNlbGVjdGVkV2FyZWhvdXNlID0gdGhpcy53YXJlSG91c2VGb3JDb2RlKHBhcnNlSW50KGRhdGEpKTtcclxuICAgIHRoaXMuaGFuZGxlV2FyZWhvdXNlU2VsZWN0ZWQodGhpcy5zZWxlY3RlZFdhcmVob3VzZSk7XHJcbiAgICB0aGlzLmdldFN0b2NrRGF0YSh0aGlzLnNlbGVjdGVkV2FyZWhvdXNlKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXRTdG9ja0hpc3RvcnkoKTogdm9pZCB7XHJcbiAgICBjb25zdCBzdG9ja0hpc3RvcnlJbmZvcm1hdGlvbjogR2V0U3RvY2tIaXN0b3J5UmVxdWVzdCA9IG5ldyBHZXRTdG9ja0hpc3RvcnlSZXF1ZXN0KCk7XHJcbiAgICBzdG9ja0hpc3RvcnlJbmZvcm1hdGlvbi50eXBlID0gXCJWXCI7XHJcbiAgICBzdG9ja0hpc3RvcnlJbmZvcm1hdGlvbi5nb29kSWQgPSB0aGlzLmFydGljbGUuZ29vZElkLnRvU3RyaW5nKCk7XHJcbiAgICB0aGlzLl9zdG9ja1NlcnZpY2UuZ2V0U3RvY2tIaXN0b3J5KHN0b2NrSGlzdG9yeUluZm9ybWF0aW9uKS50aGVuKHJlc3VsdCA9PiB7XHJcbiAgICAgIHRoaXMuc3RvY2tIaXN0b3J5ID0gcmVzdWx0XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXRPcmRlclN1cHBseVN0b2NrSGlzdG9yeSgpOiB2b2lkIHtcclxuICAgIGNvbnN0IHN0b2NrSGlzdG9yeUluZm9ybWF0aW9uOiBHZXRTdG9ja0hpc3RvcnlSZXF1ZXN0ID0gbmV3IEdldFN0b2NrSGlzdG9yeVJlcXVlc3QoKTtcclxuICAgIHN0b2NrSGlzdG9yeUluZm9ybWF0aW9uLnR5cGUgPSBcIk9cIjtcclxuICAgIHN0b2NrSGlzdG9yeUluZm9ybWF0aW9uLmdvb2RJZCA9IHRoaXMuYXJ0aWNsZS5nb29kSWQudG9TdHJpbmcoKTtcclxuICAgIHRoaXMuX3N0b2NrU2VydmljZS5nZXRTdG9ja0hpc3Rvcnkoc3RvY2tIaXN0b3J5SW5mb3JtYXRpb24pLnRoZW4ocmVzdWx0ID0+IHtcclxuICAgICAgdGhpcy5vcmRlclN1cHBseVN0b2NrSGlzdG9yeSA9IHJlc3VsdDtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldE9yZGVyQ29tbWlzc2lvblN0b2NrSGlzdG9yeSgpOiB2b2lkIHtcclxuICAgIGNvbnN0IHN0b2NrSGlzdG9yeUluZm9ybWF0aW9uOiBHZXRTdG9ja0hpc3RvcnlSZXF1ZXN0ID0gbmV3IEdldFN0b2NrSGlzdG9yeVJlcXVlc3QoKTtcclxuICAgIHN0b2NrSGlzdG9yeUluZm9ybWF0aW9uLnR5cGUgPSBcIkNcIjtcclxuICAgIHN0b2NrSGlzdG9yeUluZm9ybWF0aW9uLmdvb2RJZCA9IHRoaXMuYXJ0aWNsZS5nb29kSWQudG9TdHJpbmcoKTtcclxuICAgIHRoaXMuX3N0b2NrU2VydmljZS5nZXRTdG9ja0hpc3Rvcnkoc3RvY2tIaXN0b3J5SW5mb3JtYXRpb24pLnRoZW4ocmVzdWx0ID0+IHtcclxuICAgICAgdGhpcy5vcmRlckNvbW1pc3Npb25TdG9ja0hpc3RvcnkgPSByZXN1bHQ7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXRPcmRlclN0b2NrSGlzdG9yeSgpOiB2b2lkIHtcclxuICAgIGNvbnN0IHN0b2NrSGlzdG9yeUluZm9ybWF0aW9uOiBHZXRTdG9ja0hpc3RvcnlSZXF1ZXN0ID0gbmV3IEdldFN0b2NrSGlzdG9yeVJlcXVlc3QoKTtcclxuICAgIHN0b2NrSGlzdG9yeUluZm9ybWF0aW9uLnR5cGUgPSBcIkJcIjtcclxuICAgIHN0b2NrSGlzdG9yeUluZm9ybWF0aW9uLmdvb2RJZCA9IHRoaXMuYXJ0aWNsZS5nb29kSWQudG9TdHJpbmcoKTtcclxuICAgIHRoaXMuX3N0b2NrU2VydmljZS5nZXRTdG9ja0hpc3Rvcnkoc3RvY2tIaXN0b3J5SW5mb3JtYXRpb24pLnRoZW4ocmVzdWx0ID0+IHtcclxuICAgICAgdGhpcy5vcmRlclN0b2NrSGlzdG9yeSA9IHJlc3VsdDtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldEFsbG9jYXRpb25TdG9ja0hpc3RvcnkoKTogdm9pZCB7XHJcbiAgICBjb25zdCBzdG9ja0hpc3RvcnlJbmZvcm1hdGlvbjogR2V0U3RvY2tIaXN0b3J5UmVxdWVzdCA9IG5ldyBHZXRTdG9ja0hpc3RvcnlSZXF1ZXN0KCk7XHJcbiAgICBzdG9ja0hpc3RvcnlJbmZvcm1hdGlvbi50eXBlID0gXCJUXCI7XHJcbiAgICBzdG9ja0hpc3RvcnlJbmZvcm1hdGlvbi5nb29kSWQgPSB0aGlzLmFydGljbGUuZ29vZElkLnRvU3RyaW5nKCk7XHJcbiAgICB0aGlzLl9zdG9ja1NlcnZpY2UuZ2V0U3RvY2tIaXN0b3J5KHN0b2NrSGlzdG9yeUluZm9ybWF0aW9uKS50aGVuKHJlc3VsdCA9PiB7XHJcbiAgICAgIHRoaXMub3JkZXJBbGxvY2F0aW9uU3RvY2tIaXN0b3J5ID0gcmVzdWx0O1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0SW5PcmRlckRhdGEoKTogdm9pZCB7XHJcbiAgICBjb25zdCBpbk9yZGVyRGF0YTogQXJ0aWNsZVRyYW5zYWN0aW9uID0gbmV3IEFydGljbGVUcmFuc2FjdGlvbigpO1xyXG4gICAgaW5PcmRlckRhdGEudHlwZSA9IFwiVlwiO1xyXG4gICAgaW5PcmRlckRhdGEuZ29vZElkID0gdGhpcy5zdG9ja0luZm9ybWF0aW9uWzBdLmdvb2RJZC50b1N0cmluZygpO1xyXG4gICAgdGhpcy5fc3RvY2tTZXJ2aWNlLmdldEFydGljbGVUcmFuc2FjdGlvbihpbk9yZGVyRGF0YSkudGhlbihyZXN1bHQgPT4ge1xyXG4gICAgICB0aGlzLmluT3JkZXJJbmZvcm1hdGlvbiA9IHJlc3VsdDtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldE9yZGVyRGF0YSgpOiB2b2lkIHtcclxuICAgIGNvbnN0IG9yZGVyRGF0YTogQXJ0aWNsZVRyYW5zYWN0aW9uID0gbmV3IEFydGljbGVUcmFuc2FjdGlvbigpO1xyXG4gICAgb3JkZXJEYXRhLnR5cGUgPSBcIklcIjtcclxuICAgIG9yZGVyRGF0YS5nb29kSWQgPSB0aGlzLnN0b2NrSW5mb3JtYXRpb25bMF0uZ29vZElkLnRvU3RyaW5nKCk7XHJcbiAgICB0aGlzLl9zdG9ja1NlcnZpY2UuZ2V0QXJ0aWNsZVRyYW5zYWN0aW9uKG9yZGVyRGF0YSkudGhlbihyZXN1bHQgPT4ge1xyXG4gICAgICB0aGlzLm9yZGVySW5mb3JtYXRpb24gPSByZXN1bHQ7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXRTdG9ja1Byb2dub3NlKHdhcmVob3VzZU5vOiBudW1iZXIpOiB2b2lkIHtcclxuICAgIHRoaXMuX3N0b2NrU2VydmljZS5zdG9ja1Byb2dub3NlKHRoaXMuYXJ0aWNsZS5nb29kSWQsIHdhcmVob3VzZU5vKS50aGVuKHJlc3VsdCA9PiB7XHJcbiAgICAgIHRoaXMuc3RvY2tQcm9nbm9zZSA9IHJlc3VsdDtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGhhbmRsZVdhcmVob3VzZVNlbGVjdGVkKGV2ZW50OiBTdG9ja01hbmFnZW1lbnRXYXJlaG91c2VzKTogdm9pZCB7XHJcbiAgICB0aGlzLnNlbGVjdGVkV2FyZWhvdXNlID0gZXZlbnQ7XHJcbiAgICB0aGlzLl9zdG9ja1NlcnZpY2Uud2FyZWhvdXNlU2VsZWN0ZWQuZW1pdChldmVudCk7XHJcbiAgICBpZiAodGhpcy50YWJzWzFdLmFjdGl2ZSkge1xyXG4gICAgICB0aGlzLmdldFN0b2NrUHJvZ25vc2UodGhpcy5zZWxlY3RlZFdhcmVob3VzZS53YXJlaG91c2VObyk7XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy50YWJzWzJdLmFjdGl2ZSkge1xyXG4gICAgICB0aGlzLmFydGljbGVEZXRhaWxzSW5mb3JtYXRpb24ud2FyZWhvdXNlTnVtYmVyID0gZXZlbnQud2FyZWhvdXNlTm87XHJcbiAgICAgIHRoaXMuYXJ0aWNsZURldGFpbHNJbmZvcm1hdGlvbi5nb29kSWQgPSB0aGlzLmFydGljbGUuZ29vZElkLnRvU3RyaW5nKCk7XHJcbiAgICAgIHRoaXMuX3N0b2NrU2VydmljZS5nZXRBcnRpY2xlRGV0YWlscyh0aGlzLmFydGljbGVEZXRhaWxzSW5mb3JtYXRpb24pLnRoZW4oKGRldGFpbHMpID0+IHtcclxuICAgICAgICB0aGlzLmFydGljbGVEZXRhaWxzID0gZGV0YWlscztcclxuICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldFN0b2NrTG9jYXRpb25zKCkge1xyXG4gICAgdGhpcy5fc3RvY2tTZXJ2aWNlLmdldFN0b2NrTWFuYWdlbWVudExvY2F0aW9ucyh0aGlzLnNlbGVjdGVkV2FyZWhvdXNlLndhcmVob3VzZU5vKS50aGVuKCByZXN1bHQgPT4ge1xyXG4gICAgICB0aGlzLnN0b2NrTG9jYXRpb25zID0gcmVzdWx0O1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0U3RvY2tEYXRhKHdhcmVob3VzZTogU3RvY2tNYW5hZ2VtZW50V2FyZWhvdXNlcykge1xyXG4gICAgdGhpcy5oYW5kbGVXYXJlaG91c2VTZWxlY3RlZCh3YXJlaG91c2UpO1xyXG4gICAgdGhpcy5nZXRTdG9ja1Byb2dub3NlKHdhcmVob3VzZS53YXJlaG91c2VObyk7XHJcbiAgICB0aGlzLmdldE9yZGVyRGF0YSgpO1xyXG4gICAgdGhpcy5nZXRJbk9yZGVyRGF0YSgpO1xyXG4gICAgdGhpcy5nZXRBbGxvY2F0aW9uU3RvY2tIaXN0b3J5KCk7XHJcbiAgICB0aGlzLmdldE9yZGVyU3RvY2tIaXN0b3J5KCk7XHJcbiAgICB0aGlzLmdldE9yZGVyQ29tbWlzc2lvblN0b2NrSGlzdG9yeSgpO1xyXG4gICAgdGhpcy5nZXRPcmRlclN1cHBseVN0b2NrSGlzdG9yeSgpO1xyXG4gICAgdGhpcy5nZXRTdG9ja0hpc3RvcnkoKTtcclxuICAgIHRoaXMuZ2V0U3RvY2tMb2NhdGlvbnMoKTtcclxuICAgIHRoaXMuX2NoYW5nZURldGVjdG9yLm1hcmtGb3JDaGVjaygpO1xyXG4gICAgdGhpcy5fY2hhbmdlRGV0ZWN0b3IuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHdhcmVIb3VzZUZvckNvZGUoY29kZTogbnVtYmVyKSB7XHJcbiAgICByZXR1cm4gdGhpcy53YXJlaG91c2VzLmZpbmQod2FyZWhvdXNlID0+IHdhcmVob3VzZS53YXJlaG91c2VObyA9PT0gY29kZSk7XHJcbiAgfVxyXG59XHJcbiJdfQ==
@@ -1,17 +1,28 @@
1
- import { Component, EventEmitter, Input, Output, ViewEncapsulation } from "@angular/core";
1
+ import { ChangeDetectorRef, Component, EventEmitter, Input, Output, ViewEncapsulation } from "@angular/core";
2
2
  import { StockService } from "../../../service/stock.service";
3
+ import { ArticleDetailsBo } from "@colijnit/articleapi/build/model/article-details.bo";
3
4
  import { IconCacheService } from "../../../service/icon-cache.service";
4
5
  import { Icon } from "../../../enum/icon.enum";
6
+ import { ArticleStockManagement } from "@colijnit/articleapi/build/model/article-stock-management";
5
7
  export class StockTransferComponent {
6
- constructor(_stockService, iconCacheService) {
8
+ constructor(_stockService, iconCacheService, _changeDetector) {
7
9
  this._stockService = _stockService;
8
10
  this.iconCacheService = iconCacheService;
11
+ this._changeDetector = _changeDetector;
12
+ this.selectedArticleDetailsData = new ArticleDetailsBo();
13
+ this.articleDetailsInformation = new ArticleStockManagement();
14
+ this.articleStockInfo = [];
15
+ this.stockLocations = [];
9
16
  this.handleClick = new EventEmitter();
10
17
  this.handleStickerClicked = new EventEmitter();
18
+ this.updateGridData = new EventEmitter();
19
+ this.showStockTransferChange = new EventEmitter();
11
20
  this.showSendMethodDialog = false;
21
+ this.transferFull = false;
12
22
  this.warehouses = [];
13
23
  this.stockState = [];
14
24
  this.locations = [];
25
+ this.stockStatus = [];
15
26
  this.icons = Icon;
16
27
  }
17
28
  ngAfterViewInit() {
@@ -19,21 +30,31 @@ export class StockTransferComponent {
19
30
  this.getStockState();
20
31
  }
21
32
  handleOkClick(data) {
22
- data.selected = true;
23
- data.entryDate = new Date;
24
- this._stockService.updateArticleDetails(data).then(result => {
25
- if (result) {
26
- this.handleClick.emit(data.goodId);
27
- }
28
- });
33
+ if (this.articleToTransfer.amountTransfer > this.articleToTransfer.amountInStockFree) {
34
+ this.transferFull = true;
35
+ }
36
+ else {
37
+ data.selected = true;
38
+ data.entryDate = new Date;
39
+ this._stockService.updateArticleDetails(data).then((result) => {
40
+ this.handleClick.emit();
41
+ this.showStockTransferChange.emit(false);
42
+ this._stockService.getArticleDetails(this.articleDetailsInformation).then((details) => {
43
+ this.articleStockInfo = details;
44
+ this.updateGridData.emit(details);
45
+ });
46
+ }).catch((result) => {
47
+ // Log failure message
48
+ });
49
+ }
29
50
  }
30
- handleCancelClick() {
31
- this.handleClick.emit();
51
+ onCloseClick() {
52
+ this.showStockTransferChange.emit(false);
32
53
  }
33
54
  handleSelectedWarehouse(event) {
34
55
  this.articleToTransfer.targetWarehouse = event.warehouseNo;
35
56
  this.selectedWarehouse = event;
36
- this.getStockManagementLocations(this.selectedWarehouse.warehouseNo);
57
+ this.getStockManagementLocations();
37
58
  }
38
59
  handleSelectedLocation(event) {
39
60
  this.articleToTransfer.targetLocation = event.locationNo;
@@ -50,9 +71,9 @@ export class StockTransferComponent {
50
71
  this.warehouses = warehouses;
51
72
  });
52
73
  }
53
- getStockManagementLocations(data) {
54
- this._stockService.getStockManagementLocations(data).then((locations) => {
55
- this.locations = locations;
74
+ getStockManagementLocations() {
75
+ this._stockService.getStockManagementLocations(this.selectedWarehouse.warehouseNo).then((locations) => {
76
+ this.stockLocations = locations;
56
77
  });
57
78
  }
58
79
  getStockState() {
@@ -66,95 +87,133 @@ StockTransferComponent.decorators = [
66
87
  selector: "co-stock-transfer",
67
88
  template: `
68
89
  <div class="stock-transfer">
69
- <div class="stock-transfer-columns">
70
- <div *ngIf="articleToTransfer" class="stock-transfer-top-column">
71
- <div class="transfer-items">
72
- <div class="transfer-item">
73
- <label class="item-label" [textContent]="'WAREHOUSE' | localize"></label>
74
- <span class="item-value" [textContent]="articleToTransfer.warehouseDescription"></span>
90
+ <co-dialog
91
+ (closeClick)="onCloseClick()"
92
+ [showCloseIcon]="true"
93
+ [modal]="true"
94
+ [headerTemplate]="headerTemplate"
95
+ [footerTemplate]="footerTemplate">
96
+ <ng-template #headerTemplate>
97
+ <div class="co-dialog-header-title-wrapper">
98
+ <co-icon [iconData]="iconCacheService.getIcon(icons.Cubes)"></co-icon>
99
+ <div class="co-dialog-header-title" [textContent]="'TRANSFER_STOCK' | localize"></div>
100
+ </div>
101
+ </ng-template>
102
+ <div class="dialog-wrapper">
103
+ <div class="stock-transfer-columns">
104
+ <div *ngIf="articleToTransfer" class="stock-transfer-top-column">
105
+ <div class="transfer-items">
106
+ <div class="transfer-item">
107
+ <label class="item-label" [textContent]="'WAREHOUSE' | localize"></label>
108
+ <span class="item-value" [textContent]="articleToTransfer.warehouseDescription"></span>
109
+ </div>
110
+ <div class="transfer-item">
111
+ <label class="item-label" [textContent]="'LOCATION' | localize"></label>
112
+ <span class="item-value" [textContent]="articleToTransfer.locationNo"></span>
113
+ </div>
114
+ <div class="transfer-item" *ngIf="articleToTransfer?.batchNo">
115
+ <label class="item-label" [textContent]="'BATCH_NO' | localize"></label>
116
+ <span class="item-value" [textContent]="articleToTransfer.batchNo"></span>
117
+ </div>
118
+ <div class="transfer-item" *ngIf="articleToTransfer?.serialNo">
119
+ <label class="item-label" [textContent]="'SERIE_NO' | localize"></label>
120
+ <span class="item-value" [textContent]="articleToTransfer.serialNo"></span>
121
+ </div>
122
+ </div>
123
+ <div class="transfer-quantity">
124
+ <co-input-number-picker
125
+ [(model)]="articleToTransfer.amountTransfer"
126
+ [min]="1"
127
+ [label]="'QUANTITY' | localize">
128
+ </co-input-number-picker>
129
+ <span *ngIf="transferFull" [textContent]="this.articleToTransfer.amountInStockFree + (' AVAILABLE' | localize)"></span>
130
+ </div>
75
131
  </div>
76
- <div class="transfer-item">
77
- <label class="item-label" [textContent]="'LOCATION' | localize"></label>
78
- <span class="item-value" [textContent]="articleToTransfer.locationNo"></span>
132
+ <div class="transfer-arrow-wrapper">
133
+ <span class="half-circle"></span>
134
+ <div class="icon-wrapper">
135
+ <co-icon [iconData]="iconCacheService.getIcon(icons.ArrowDownRegular)"></co-icon>
136
+ </div>
79
137
  </div>
80
- <div class="transfer-item" *ngIf="articleToTransfer?.batchNo">
81
- <label class="item-label" [textContent]="'BATCH_NO' | localize"></label>
82
- <span class="item-value" [textContent]="articleToTransfer.batchNo"></span>
138
+
139
+
140
+ <div class="stock-transfer-bottom-column">
141
+ <div class="transfer-bottom-row">
142
+ <co-list-of-values [collection]="warehouses"
143
+ [displayField]="'warehouseDescription'"
144
+ (modelChange)="handleSelectedWarehouse($event)"
145
+ [label]="'WAREHOUSE' | localize"
146
+ >
147
+ </co-list-of-values>
148
+ <co-list-of-values [collection]="stockLocations"
149
+ [displayField]="'locationNo'"
150
+ (modelChange)="handleSelectedLocation($event)"
151
+ [label]="'LOCATION' | localize"
152
+ >
153
+ </co-list-of-values>
154
+ </div>
155
+ <div class="transfer-bottom-row">
156
+ <co-list-of-values [collection]="stockState"
157
+ [displayField]="'stateDescription'"
158
+ [label]="'STOCK_STATE' | localize"
159
+ (modelChange)="handleSelectedStockState($event)"
160
+ >
161
+ </co-list-of-values>
162
+ </div>
163
+
83
164
  </div>
84
- <div class="transfer-item" *ngIf="articleToTransfer?.serialNo">
85
- <label class="item-label" [textContent]="'SERIE_NO' | localize"></label>
86
- <span class="item-value" [textContent]="articleToTransfer.serialNo"></span>
165
+ <div class="transfer-sticker-buttons">
166
+ <co-button
167
+ [label]="'STICKER' | localize"
168
+ (click)="handleStickerClick()"
169
+ [iconData]="iconCacheService.getIcon(icons.BarcodeReadRegular)">
170
+ </co-button>
87
171
  </div>
88
172
  </div>
89
- <div class="transfer-quantity">
90
- <co-input-number-picker
91
- [(model)]="articleToTransfer.amountTransfer"
92
- [min]="1"
93
- [label]="'QUANTITY' | localize">
94
- </co-input-number-picker>
95
- </div>
96
173
  </div>
97
- <div class="transfer-arrow-wrapper">
98
- <span class="half-circle"></span>
99
- <div class="icon-wrapper">
100
- <co-icon [iconData]="iconCacheService.getIcon(icons.ArrowDownRegular)"></co-icon>
174
+ <ng-template #footerTemplate>
175
+ <div class="button-wrapper ok-cancel-buttons">
176
+ <co-button class="save-button"
177
+ (click)="handleOkClick(articleToTransfer)"
178
+ [iconData]="iconCacheService.getIcon(icons.CheckDuotone)">
179
+ </co-button>
180
+ <co-button class="cancel-button"
181
+ (click)="onCloseClick()"
182
+ [iconData]="iconCacheService.getIcon(icons.CrossSkinny)">
183
+ </co-button>
101
184
  </div>
102
- </div>
103
-
104
-
105
- <div class="stock-transfer-bottom-column">
106
- <div class="transfer-bottom-row">
107
- <co-list-of-values [collection]="warehouses"
108
- [displayField]="'warehouseDescription'"
109
- (modelChange)="handleSelectedWarehouse($event)"
110
- [label]="'WAREHOUSE' | localize"
111
- >
112
- </co-list-of-values>
113
- <co-list-of-values [collection]="locations"
114
- [displayField]="'description'"
115
- (modelChange)="handleSelectedLocation($event)"
116
- [label]="'LOCATION' | localize"
117
- >
118
- </co-list-of-values>
119
- </div>
120
- <div class="transfer-bottom-row">
121
- <co-list-of-values [collection]="stockState"
122
- [displayField]="'stateDescription'"
123
- [label]="'STOCK_STATE' | localize"
124
- (modelChange)="handleSelectedStockState($event)"
125
- >
126
- </co-list-of-values>
127
- </div>
128
- <div class="transfer-bottom-row">
129
- <co-input-text [placeholder]="'DESCRIPTION' | localize"
130
- [(model)]="articleToTransfer.stockStateRemark">
131
- </co-input-text>
132
- </div>
133
- </div>
134
- <div class="transfer-sticker-buttons">
135
- <co-button
136
- [label]="'STICKER' | localize"
137
- (click)="handleStickerClick()"
138
- [iconData]="iconCacheService.getIcon(icons.BarcodeReadRegular)">
139
- </co-button>
140
- </div>
141
- </div>
185
+ </ng-template>
186
+ </co-dialog>
142
187
  </div>
188
+ <co-send-method-dialog *ngIf="showSendMethodDialog"
189
+ (closeClick)="showSendMethodDialog = false">
190
+
191
+ </co-send-method-dialog>
143
192
  `,
144
193
  encapsulation: ViewEncapsulation.None
145
194
  },] }
146
195
  ];
147
196
  StockTransferComponent.ctorParameters = () => [
148
197
  { type: StockService },
149
- { type: IconCacheService }
198
+ { type: IconCacheService },
199
+ { type: ChangeDetectorRef }
150
200
  ];
151
201
  StockTransferComponent.propDecorators = {
152
202
  stockSticker: [{ type: Input }],
153
203
  article: [{ type: Input }],
154
204
  articleToTransfer: [{ type: Input }],
155
- articleWarehouse: [{ type: Input }],
156
205
  allWarehouses: [{ type: Input }],
206
+ showStockTransfer: [{ type: Input }],
207
+ selectedArticleDetailsData: [{ type: Input }],
208
+ articleFlat: [{ type: Input }],
209
+ articleDetailsInformation: [{ type: Input }],
210
+ selectedWarehouse: [{ type: Input }],
211
+ selectedLocationNo: [{ type: Input }],
212
+ articleStockInfo: [{ type: Input }],
213
+ stockLocations: [{ type: Input }],
157
214
  handleClick: [{ type: Output }],
158
- handleStickerClicked: [{ type: Output }]
215
+ handleStickerClicked: [{ type: Output }],
216
+ updateGridData: [{ type: Output }],
217
+ showStockTransferChange: [{ type: Output }]
159
218
  };
160
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RvY2stdHJhbnNmZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc2hhcmVkY29tcG9uZW50cy9zcmMvbGliL2NvbXBvbmVudHMvc3RvY2svc3RvY2stdHJhbnNmZXIvc3RvY2stdHJhbnNmZXIuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBZ0IsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLGlCQUFpQixFQUFDLE1BQU0sZUFBZSxDQUFDO0FBRXZHLE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSxnQ0FBZ0MsQ0FBQztBQU81RCxPQUFPLEVBQUMsZ0JBQWdCLEVBQUMsTUFBTSxxQ0FBcUMsQ0FBQztBQUNyRSxPQUFPLEVBQUMsSUFBSSxFQUFDLE1BQU0seUJBQXlCLENBQUM7QUFtRjdDLE1BQU0sT0FBTyxzQkFBc0I7SUE4QmpDLFlBQ1UsYUFBMkIsRUFDNUIsZ0JBQWtDO1FBRGpDLGtCQUFhLEdBQWIsYUFBYSxDQUFjO1FBQzVCLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBa0I7UUFkcEMsZ0JBQVcsR0FBeUIsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUd2RCx5QkFBb0IsR0FBc0IsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUM3RCx5QkFBb0IsR0FBWSxLQUFLLENBQUM7UUFDdEMsZUFBVSxHQUFnQyxFQUFFLENBQUM7UUFDN0MsZUFBVSxHQUFrQixFQUFFLENBQUM7UUFDL0IsY0FBUyxHQUFvQixFQUFFLENBQUM7UUFHdkIsVUFBSyxHQUFnQixJQUFJLENBQUM7SUFNMUMsQ0FBQztJQUVELGVBQWU7UUFDYixJQUFJLENBQUMsNEJBQTRCLEVBQUUsQ0FBQztRQUNwQyxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7SUFDdkIsQ0FBQztJQUVNLGFBQWEsQ0FBQyxJQUFzQjtRQUN6QyxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQztRQUNyQixJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksSUFBSSxDQUFDO1FBQzFCLElBQUksQ0FBQyxhQUFhLENBQUMsb0JBQW9CLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFFLE1BQU0sQ0FBQyxFQUFFO1lBQzNELElBQUcsTUFBTSxFQUFFO2dCQUNULElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQzthQUNwQztRQUNILENBQUMsQ0FBQyxDQUFDO0lBRUwsQ0FBQztJQUVNLGlCQUFpQjtRQUN0QixJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksRUFBRSxDQUFDO0lBQzFCLENBQUM7SUFFTSx1QkFBdUIsQ0FBQyxLQUFnQztRQUM3RCxJQUFJLENBQUMsaUJBQWlCLENBQUMsZUFBZSxHQUFHLEtBQUssQ0FBQyxXQUFXLENBQUM7UUFDM0QsSUFBSSxDQUFDLGlCQUFpQixHQUFHLEtBQUssQ0FBQztRQUMvQixJQUFJLENBQUMsMkJBQTJCLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQ3ZFLENBQUM7SUFFTSxzQkFBc0IsQ0FBQyxLQUFvQjtRQUNoRCxJQUFJLENBQUMsaUJBQWlCLENBQUMsY0FBYyxHQUFHLEtBQUssQ0FBQyxVQUFVLENBQUM7SUFDM0QsQ0FBQztJQUVNLHdCQUF3QixDQUFDLEtBQWtCO1FBQ2hELElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxZQUFZLEdBQUcsS0FBSyxDQUFDLFlBQVksQ0FBQztJQUMzRCxDQUFDO0lBRU0sa0JBQWtCO1FBQ3ZCLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUNqQyxJQUFJLENBQUMsb0JBQW9CLEdBQUcsSUFBSSxDQUFDO0lBQ25DLENBQUM7SUFFTSw0QkFBNEI7UUFDakMsSUFBSSxDQUFDLGFBQWEsQ0FBQyw0QkFBNEIsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLFVBQVUsRUFBRSxFQUFFO1lBQ3BFLElBQUksQ0FBQyxVQUFVLEdBQUcsVUFBVSxDQUFDO1FBQy9CLENBQUMsQ0FBQyxDQUFBO0lBQ0osQ0FBQztJQUVNLDJCQUEyQixDQUFDLElBQUk7UUFDckMsSUFBSSxDQUFDLGFBQWEsQ0FBQywyQkFBMkIsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxTQUFTLEVBQUUsRUFBRTtZQUN0RSxJQUFJLENBQUMsU0FBUyxHQUFHLFNBQVMsQ0FBQztRQUM3QixDQUFDLENBQUMsQ0FBQTtJQUNKLENBQUM7SUFFTSxhQUFhO1FBQ2xCLElBQUksQ0FBQyxhQUFhLENBQUMsYUFBYSxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsS0FBb0IsRUFBRSxFQUFFO1lBQy9ELElBQUksQ0FBQyxVQUFVLEdBQUcsS0FBSyxDQUFDO1FBQzFCLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzs7O1lBNUtGLFNBQVMsU0FBQztnQkFDVCxRQUFRLEVBQUUsbUJBQW1CO2dCQUM3QixRQUFRLEVBQUU7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0E0RVQ7Z0JBQ0QsYUFBYSxFQUFFLGlCQUFpQixDQUFDLElBQUk7YUFDdEM7OztZQTFGTyxZQUFZO1lBT1osZ0JBQWdCOzs7MkJBc0ZyQixLQUFLO3NCQUdMLEtBQUs7Z0NBR0wsS0FBSzsrQkFHTCxLQUFLOzRCQUdMLEtBQUs7MEJBR0wsTUFBTTttQ0FHTixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtBZnRlclZpZXdJbml0LCBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE91dHB1dCwgVmlld0VuY2Fwc3VsYXRpb259IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7UHJpbnRTdG9ja1N0aWNrZXJzfSBmcm9tIFwiQGNvbGlqbml0L2FydGljbGVhcGkvYnVpbGQvbW9kZWwvcHJpbnQtc3RvY2stc3RpY2tlcnNcIjtcclxuaW1wb3J0IHtTdG9ja1NlcnZpY2V9IGZyb20gXCIuLi8uLi8uLi9zZXJ2aWNlL3N0b2NrLnNlcnZpY2VcIjtcclxuaW1wb3J0IHtDb0Ryb3BEb3duTGlzdEZpZWxkc30gZnJvbSBcIi4vY28tZHJvcC1kb3duLWxpc3QtZmllbGRzLmludGVyZmFjZVwiO1xyXG5pbXBvcnQge0FydGljbGVTdG9jayBhcyBBcnRpY2xlU3RvY2tCb30gZnJvbSBcIkBjb2xpam5pdC9hcnRpY2xlYXBpL2J1aWxkL21vZGVsL2FydGljbGUtc3RvY2suYm9cIjtcclxuaW1wb3J0IHtBcnRpY2xlRGV0YWlsc0JvfSBmcm9tIFwiQGNvbGlqbml0L2FydGljbGVhcGkvYnVpbGQvbW9kZWwvYXJ0aWNsZS1kZXRhaWxzLmJvXCI7XHJcbmltcG9ydCB7U3RvY2tNYW5hZ2VtZW50V2FyZWhvdXNlc30gZnJvbSBcIkBjb2xpam5pdC9hcnRpY2xlYXBpL2J1aWxkL21vZGVsL3N0b2NrLW1hbmFnZW1lbnQtd2FyZWhvdXNlcy5ib1wiO1xyXG5pbXBvcnQge1N0b2NrU3RhdHVzfSBmcm9tIFwiQGNvbGlqbml0L2FydGljbGVhcGkvYnVpbGQvbW9kZWwvc3RvY2stc3RhdHVzLmJvXCI7XHJcbmltcG9ydCB7U3RvY2tMb2NhdGlvbn0gZnJvbSBcIkBjb2xpam5pdC9hcnRpY2xlYXBpL2J1aWxkL21vZGVsL3N0b2NrLWxvY2F0aW9uLmJvXCI7XHJcbmltcG9ydCB7SWNvbkNhY2hlU2VydmljZX0gZnJvbSBcIi4uLy4uLy4uL3NlcnZpY2UvaWNvbi1jYWNoZS5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7SWNvbn0gZnJvbSBcIi4uLy4uLy4uL2VudW0vaWNvbi5lbnVtXCI7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogXCJjby1zdG9jay10cmFuc2ZlclwiLFxyXG4gIHRlbXBsYXRlOiBgXHJcbiAgICAgIDxkaXYgY2xhc3M9XCJzdG9jay10cmFuc2ZlclwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJzdG9jay10cmFuc2Zlci1jb2x1bW5zXCI+XHJcbiAgICAgICAgICA8ZGl2ICpuZ0lmPVwiYXJ0aWNsZVRvVHJhbnNmZXJcIiBjbGFzcz1cInN0b2NrLXRyYW5zZmVyLXRvcC1jb2x1bW5cIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRyYW5zZmVyLWl0ZW1zXCI+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRyYW5zZmVyLWl0ZW1cIj5cclxuICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cIml0ZW0tbGFiZWxcIiBbdGV4dENvbnRlbnRdPVwiJ1dBUkVIT1VTRScgfCBsb2NhbGl6ZVwiPjwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIml0ZW0tdmFsdWVcIiBbdGV4dENvbnRlbnRdPVwiYXJ0aWNsZVRvVHJhbnNmZXIud2FyZWhvdXNlRGVzY3JpcHRpb25cIj48L3NwYW4+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRyYW5zZmVyLWl0ZW1cIj5cclxuICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cIml0ZW0tbGFiZWxcIiBbdGV4dENvbnRlbnRdPVwiJ0xPQ0FUSU9OJyB8IGxvY2FsaXplXCI+PC9sYWJlbD5cclxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiaXRlbS12YWx1ZVwiIFt0ZXh0Q29udGVudF09XCJhcnRpY2xlVG9UcmFuc2Zlci5sb2NhdGlvbk5vXCI+PC9zcGFuPlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0cmFuc2Zlci1pdGVtXCIgKm5nSWY9XCJhcnRpY2xlVG9UcmFuc2Zlcj8uYmF0Y2hOb1wiPlxyXG4gICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiaXRlbS1sYWJlbFwiIFt0ZXh0Q29udGVudF09XCInQkFUQ0hfTk8nIHwgbG9jYWxpemVcIj48L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJpdGVtLXZhbHVlXCIgW3RleHRDb250ZW50XT1cImFydGljbGVUb1RyYW5zZmVyLmJhdGNoTm9cIj48L3NwYW4+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRyYW5zZmVyLWl0ZW1cIiAqbmdJZj1cImFydGljbGVUb1RyYW5zZmVyPy5zZXJpYWxOb1wiPlxyXG4gICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiaXRlbS1sYWJlbFwiIFt0ZXh0Q29udGVudF09XCInU0VSSUVfTk8nIHwgbG9jYWxpemVcIj48L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJpdGVtLXZhbHVlXCIgW3RleHRDb250ZW50XT1cImFydGljbGVUb1RyYW5zZmVyLnNlcmlhbE5vXCI+PC9zcGFuPlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRyYW5zZmVyLXF1YW50aXR5XCI+XHJcbiAgICAgICAgICAgICAgPGNvLWlucHV0LW51bWJlci1waWNrZXJcclxuICAgICAgICAgICAgICAgIFsobW9kZWwpXT1cImFydGljbGVUb1RyYW5zZmVyLmFtb3VudFRyYW5zZmVyXCJcclxuICAgICAgICAgICAgICAgIFttaW5dPVwiMVwiXHJcbiAgICAgICAgICAgICAgICBbbGFiZWxdPVwiJ1FVQU5USVRZJyB8IGxvY2FsaXplXCI+XHJcbiAgICAgICAgICAgICAgPC9jby1pbnB1dC1udW1iZXItcGlja2VyPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cInRyYW5zZmVyLWFycm93LXdyYXBwZXJcIj5cclxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJoYWxmLWNpcmNsZVwiPjwvc3Bhbj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImljb24td3JhcHBlclwiPlxyXG4gICAgICAgICAgICAgIDxjby1pY29uIFtpY29uRGF0YV09XCJpY29uQ2FjaGVTZXJ2aWNlLmdldEljb24oaWNvbnMuQXJyb3dEb3duUmVndWxhcilcIj48L2NvLWljb24+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcblxyXG5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdG9jay10cmFuc2Zlci1ib3R0b20tY29sdW1uXCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0cmFuc2Zlci1ib3R0b20tcm93XCI+XHJcbiAgICAgICAgICAgICAgPGNvLWxpc3Qtb2YtdmFsdWVzIFtjb2xsZWN0aW9uXT1cIndhcmVob3VzZXNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZGlzcGxheUZpZWxkXT1cIid3YXJlaG91c2VEZXNjcmlwdGlvbidcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9kZWxDaGFuZ2UpPVwiaGFuZGxlU2VsZWN0ZWRXYXJlaG91c2UoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtsYWJlbF09XCInV0FSRUhPVVNFJyB8IGxvY2FsaXplXCJcclxuICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgPC9jby1saXN0LW9mLXZhbHVlcz5cclxuICAgICAgICAgICAgICA8Y28tbGlzdC1vZi12YWx1ZXMgW2NvbGxlY3Rpb25dPVwibG9jYXRpb25zXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Rpc3BsYXlGaWVsZF09XCInZGVzY3JpcHRpb24nXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vZGVsQ2hhbmdlKT1cImhhbmRsZVNlbGVjdGVkTG9jYXRpb24oJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtsYWJlbF09XCInTE9DQVRJT04nIHwgbG9jYWxpemVcIlxyXG4gICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICA8L2NvLWxpc3Qtb2YtdmFsdWVzPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRyYW5zZmVyLWJvdHRvbS1yb3dcIj5cclxuICAgICAgICAgICAgICA8Y28tbGlzdC1vZi12YWx1ZXMgW2NvbGxlY3Rpb25dPVwic3RvY2tTdGF0ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtkaXNwbGF5RmllbGRdPVwiJ3N0YXRlRGVzY3JpcHRpb24nXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2xhYmVsXT1cIidTVE9DS19TVEFURScgfCBsb2NhbGl6ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb2RlbENoYW5nZSk9XCJoYW5kbGVTZWxlY3RlZFN0b2NrU3RhdGUoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgIDwvY28tbGlzdC1vZi12YWx1ZXM+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwidHJhbnNmZXItYm90dG9tLXJvd1wiPlxyXG4gICAgICAgICAgICAgIDxjby1pbnB1dC10ZXh0IFtwbGFjZWhvbGRlcl09XCInREVTQ1JJUFRJT04nIHwgbG9jYWxpemVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsobW9kZWwpXT1cImFydGljbGVUb1RyYW5zZmVyLnN0b2NrU3RhdGVSZW1hcmtcIj5cclxuICAgICAgICAgICAgICA8L2NvLWlucHV0LXRleHQ+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwidHJhbnNmZXItc3RpY2tlci1idXR0b25zXCI+XHJcbiAgICAgICAgICAgIDxjby1idXR0b25cclxuICAgICAgICAgICAgICAgICAgICAgICBbbGFiZWxdPVwiJ1NUSUNLRVInIHwgbG9jYWxpemVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJoYW5kbGVTdGlja2VyQ2xpY2soKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgW2ljb25EYXRhXT1cImljb25DYWNoZVNlcnZpY2UuZ2V0SWNvbihpY29ucy5CYXJjb2RlUmVhZFJlZ3VsYXIpXCI+XHJcbiAgICAgICAgICAgIDwvY28tYnV0dG9uPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gIGAsXHJcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZVxyXG59KVxyXG5leHBvcnQgY2xhc3MgU3RvY2tUcmFuc2ZlckNvbXBvbmVudCBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQge1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBzdG9ja1N0aWNrZXI6IFByaW50U3RvY2tTdGlja2VycztcclxuXHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgYXJ0aWNsZTogQXJ0aWNsZVN0b2NrQm87XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIGFydGljbGVUb1RyYW5zZmVyOiBBcnRpY2xlRGV0YWlsc0JvO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBhcnRpY2xlV2FyZWhvdXNlOiBhbnlbXTtcclxuXHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgYWxsV2FyZWhvdXNlczogYW55W107XHJcblxyXG4gIEBPdXRwdXQoKVxyXG4gIHB1YmxpYyBoYW5kbGVDbGljazogRXZlbnRFbWl0dGVyPG51bWJlcj4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcblxyXG4gIEBPdXRwdXQoKVxyXG4gIHB1YmxpYyBoYW5kbGVTdGlja2VyQ2xpY2tlZDogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgcHVibGljIHNob3dTZW5kTWV0aG9kRGlhbG9nOiBib29sZWFuID0gZmFsc2U7XHJcbiAgcHVibGljIHdhcmVob3VzZXM6IFN0b2NrTWFuYWdlbWVudFdhcmVob3VzZXNbXSA9IFtdO1xyXG4gIHB1YmxpYyBzdG9ja1N0YXRlOiBTdG9ja1N0YXR1c1tdID0gW107XHJcbiAgcHVibGljIGxvY2F0aW9uczogU3RvY2tMb2NhdGlvbltdID0gW107XHJcbiAgcHVibGljIHNlbGVjdGVkV2FyZWhvdXNlOiBTdG9ja01hbmFnZW1lbnRXYXJlaG91c2VzO1xyXG5cclxuICBwdWJsaWMgcmVhZG9ubHkgaWNvbnM6IHR5cGVvZiBJY29uID0gSWNvbjtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIF9zdG9ja1NlcnZpY2U6IFN0b2NrU2VydmljZSxcclxuICAgIHB1YmxpYyBpY29uQ2FjaGVTZXJ2aWNlOiBJY29uQ2FjaGVTZXJ2aWNlXHJcbiAgKSB7XHJcbiAgfVxyXG5cclxuICBuZ0FmdGVyVmlld0luaXQoKSB7XHJcbiAgICB0aGlzLmdldFN0b2NrTWFuYWdlbWVudFdhcmVob3VzZXMoKTtcclxuICAgIHRoaXMuZ2V0U3RvY2tTdGF0ZSgpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGhhbmRsZU9rQ2xpY2soZGF0YTogQXJ0aWNsZURldGFpbHNCbyk6IHZvaWQge1xyXG4gICAgZGF0YS5zZWxlY3RlZCA9IHRydWU7XHJcbiAgICBkYXRhLmVudHJ5RGF0ZSA9IG5ldyBEYXRlO1xyXG4gICAgdGhpcy5fc3RvY2tTZXJ2aWNlLnVwZGF0ZUFydGljbGVEZXRhaWxzKGRhdGEpLnRoZW4oIHJlc3VsdCA9PiB7XHJcbiAgICAgIGlmKHJlc3VsdCkge1xyXG4gICAgICAgIHRoaXMuaGFuZGxlQ2xpY2suZW1pdChkYXRhLmdvb2RJZCk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG5cclxuICB9XHJcblxyXG4gIHB1YmxpYyBoYW5kbGVDYW5jZWxDbGljaygpOiB2b2lkIHtcclxuICAgIHRoaXMuaGFuZGxlQ2xpY2suZW1pdCgpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGhhbmRsZVNlbGVjdGVkV2FyZWhvdXNlKGV2ZW50OiBTdG9ja01hbmFnZW1lbnRXYXJlaG91c2VzKTogdm9pZCB7XHJcbiAgICB0aGlzLmFydGljbGVUb1RyYW5zZmVyLnRhcmdldFdhcmVob3VzZSA9IGV2ZW50LndhcmVob3VzZU5vO1xyXG4gICAgdGhpcy5zZWxlY3RlZFdhcmVob3VzZSA9IGV2ZW50O1xyXG4gICAgdGhpcy5nZXRTdG9ja01hbmFnZW1lbnRMb2NhdGlvbnModGhpcy5zZWxlY3RlZFdhcmVob3VzZS53YXJlaG91c2VObyk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgaGFuZGxlU2VsZWN0ZWRMb2NhdGlvbihldmVudDogU3RvY2tMb2NhdGlvbik6IHZvaWQge1xyXG4gICAgdGhpcy5hcnRpY2xlVG9UcmFuc2Zlci50YXJnZXRMb2NhdGlvbiA9IGV2ZW50LmxvY2F0aW9uTm87XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgaGFuZGxlU2VsZWN0ZWRTdG9ja1N0YXRlKGV2ZW50OiBTdG9ja1N0YXR1cyk6IHZvaWQge1xyXG4gICAgdGhpcy5hcnRpY2xlVG9UcmFuc2Zlci5zdG9ja1N0YXRlSWQgPSBldmVudC5zdG9ja1N0YXRlSWQ7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgaGFuZGxlU3RpY2tlckNsaWNrKCk6IHZvaWQge1xyXG4gICAgdGhpcy5oYW5kbGVTdGlja2VyQ2xpY2tlZC5lbWl0KCk7XHJcbiAgICB0aGlzLnNob3dTZW5kTWV0aG9kRGlhbG9nID0gdHJ1ZTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXRTdG9ja01hbmFnZW1lbnRXYXJlaG91c2VzKCk6IHZvaWQge1xyXG4gICAgdGhpcy5fc3RvY2tTZXJ2aWNlLmdldFN0b2NrTWFuYWdlbWVudFdhcmVob3VzZXMoKS50aGVuKCh3YXJlaG91c2VzKSA9PiB7XHJcbiAgICAgIHRoaXMud2FyZWhvdXNlcyA9IHdhcmVob3VzZXM7XHJcbiAgICB9KVxyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldFN0b2NrTWFuYWdlbWVudExvY2F0aW9ucyhkYXRhKTogdm9pZCB7XHJcbiAgICB0aGlzLl9zdG9ja1NlcnZpY2UuZ2V0U3RvY2tNYW5hZ2VtZW50TG9jYXRpb25zKGRhdGEpLnRoZW4oKGxvY2F0aW9ucykgPT4ge1xyXG4gICAgICB0aGlzLmxvY2F0aW9ucyA9IGxvY2F0aW9ucztcclxuICAgIH0pXHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0U3RvY2tTdGF0ZSgpOiB2b2lkIHtcclxuICAgIHRoaXMuX3N0b2NrU2VydmljZS5nZXRTdG9ja1N0YXRlKCkudGhlbigoc3RhdGU6IFN0b2NrU3RhdHVzW10pID0+IHtcclxuICAgICAgdGhpcy5zdG9ja1N0YXRlID0gc3RhdGU7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG59XHJcbiJdfQ==
219
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RvY2stdHJhbnNmZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc2hhcmVkY29tcG9uZW50cy9zcmMvbGliL2NvbXBvbmVudHMvc3RvY2svc3RvY2stdHJhbnNmZXIvc3RvY2stdHJhbnNmZXIuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFFTCxpQkFBaUIsRUFDakIsU0FBUyxFQUNULFlBQVksRUFDWixLQUFLLEVBQ0wsTUFBTSxFQUNOLGlCQUFpQixFQUNsQixNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0sZ0NBQWdDLENBQUM7QUFHNUQsT0FBTyxFQUFDLGdCQUFnQixFQUFDLE1BQU0scURBQXFELENBQUM7QUFJckYsT0FBTyxFQUFDLGdCQUFnQixFQUFDLE1BQU0scUNBQXFDLENBQUM7QUFDckUsT0FBTyxFQUFDLElBQUksRUFBQyxNQUFNLHlCQUF5QixDQUFDO0FBRTdDLE9BQU8sRUFBQyxzQkFBc0IsRUFBQyxNQUFNLDJEQUEyRCxDQUFDO0FBK0dqRyxNQUFNLE9BQU8sc0JBQXNCO0lBOERqQyxZQUNVLGFBQTJCLEVBQzVCLGdCQUFrQyxFQUNqQyxlQUFrQztRQUZsQyxrQkFBYSxHQUFiLGFBQWEsQ0FBYztRQUM1QixxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWtCO1FBQ2pDLG9CQUFlLEdBQWYsZUFBZSxDQUFtQjtRQS9DckMsK0JBQTBCLEdBQXFCLElBQUksZ0JBQWdCLEVBQUUsQ0FBQztRQU10RSw4QkFBeUIsR0FBMkIsSUFBSSxzQkFBc0IsRUFBRSxDQUFDO1FBU2pGLHFCQUFnQixHQUF1QixFQUFFLENBQUM7UUFHMUMsbUJBQWMsR0FBb0IsRUFBRSxDQUFDO1FBR3JDLGdCQUFXLEdBQXlCLElBQUksWUFBWSxFQUFFLENBQUM7UUFHdkQseUJBQW9CLEdBQXNCLElBQUksWUFBWSxFQUFF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Q0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsV0FBVyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsU0FBUyxFQUFFLEVBQUU7WUFDcEcsSUFBSSxDQUFDLGNBQWMsR0FBRyxTQUFTLENBQUM7UUFDbEMsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRU0sYUFBYTtRQUNsQixJQUFJLENBQUMsYUFBYSxDQUFDLGFBQWEsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLEtBQW9CLEVBQUUsRUFBRTtZQUMvRCxJQUFJLENBQUMsVUFBVSxHQUFHLEtBQUssQ0FBQztRQUMxQixDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7OztZQWhQRixTQUFTLFNBQUM7Z0JBQ1QsUUFBUSxFQUFFLG1CQUFtQjtnQkFDN0IsUUFBUSxFQUFFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXdHVDtnQkFDRCxhQUFhLEVBQUUsaUJBQWlCLENBQUMsSUFBSTthQUN0Qzs7O1lBeEhPLFlBQVk7WUFPWixnQkFBZ0I7WUFmdEIsaUJBQWlCOzs7MkJBbUloQixLQUFLO3NCQUdMLEtBQUs7Z0NBR0wsS0FBSzs0QkFHTCxLQUFLO2dDQUdMLEtBQUs7eUNBR0wsS0FBSzswQkFHTCxLQUFLO3dDQUdMLEtBQUs7Z0NBR0wsS0FBSztpQ0FHTCxLQUFLOytCQUdMLEtBQUs7NkJBR0wsS0FBSzswQkFHTCxNQUFNO21DQUdOLE1BQU07NkJBR04sTUFBTTtzQ0FHTixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICBBZnRlclZpZXdJbml0LFxyXG4gIENoYW5nZURldGVjdG9yUmVmLFxyXG4gIENvbXBvbmVudCxcclxuICBFdmVudEVtaXR0ZXIsXHJcbiAgSW5wdXQsXHJcbiAgT3V0cHV0LFxyXG4gIFZpZXdFbmNhcHN1bGF0aW9uXHJcbn0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHtQcmludFN0b2NrU3RpY2tlcnN9IGZyb20gXCJAY29saWpuaXQvYXJ0aWNsZWFwaS9idWlsZC9tb2RlbC9wcmludC1zdG9jay1zdGlja2Vyc1wiO1xyXG5pbXBvcnQge1N0b2NrU2VydmljZX0gZnJvbSBcIi4uLy4uLy4uL3NlcnZpY2Uvc3RvY2suc2VydmljZVwiO1xyXG5pbXBvcnQge0NvRHJvcERvd25MaXN0RmllbGRzfSBmcm9tIFwiLi9jby1kcm9wLWRvd24tbGlzdC1maWVsZHMuaW50ZXJmYWNlXCI7XHJcbmltcG9ydCB7QXJ0aWNsZVN0b2NrIGFzIEFydGljbGVTdG9ja0JvfSBmcm9tIFwiQGNvbGlqbml0L2FydGljbGVhcGkvYnVpbGQvbW9kZWwvYXJ0aWNsZS1zdG9jay5ib1wiO1xyXG5pbXBvcnQge0FydGljbGVEZXRhaWxzQm99IGZyb20gXCJAY29saWpuaXQvYXJ0aWNsZWFwaS9idWlsZC9tb2RlbC9hcnRpY2xlLWRldGFpbHMuYm9cIjtcclxuaW1wb3J0IHtTdG9ja01hbmFnZW1lbnRXYXJlaG91c2VzfSBmcm9tIFwiQGNvbGlqbml0L2FydGljbGVhcGkvYnVpbGQvbW9kZWwvc3RvY2stbWFuYWdlbWVudC13YXJlaG91c2VzLmJvXCI7XHJcbmltcG9ydCB7U3RvY2tTdGF0dXN9IGZyb20gXCJAY29saWpuaXQvYXJ0aWNsZWFwaS9idWlsZC9tb2RlbC9zdG9jay1zdGF0dXMuYm9cIjtcclxuaW1wb3J0IHtTdG9ja0xvY2F0aW9ufSBmcm9tIFwiQGNvbGlqbml0L2FydGljbGVhcGkvYnVpbGQvbW9kZWwvc3RvY2stbG9jYXRpb24uYm9cIjtcclxuaW1wb3J0IHtJY29uQ2FjaGVTZXJ2aWNlfSBmcm9tIFwiLi4vLi4vLi4vc2VydmljZS9pY29uLWNhY2hlLnNlcnZpY2VcIjtcclxuaW1wb3J0IHtJY29ufSBmcm9tIFwiLi4vLi4vLi4vZW51bS9pY29uLmVudW1cIjtcclxuaW1wb3J0IHtBcnRpY2xlRmxhdH0gZnJvbSBcIkBjb2xpam5pdC9hcnRpY2xlYXBpL2J1aWxkL21vZGVsL2FydGljbGUtZmxhdC5ib1wiO1xyXG5pbXBvcnQge0FydGljbGVTdG9ja01hbmFnZW1lbnR9IGZyb20gXCJAY29saWpuaXQvYXJ0aWNsZWFwaS9idWlsZC9tb2RlbC9hcnRpY2xlLXN0b2NrLW1hbmFnZW1lbnRcIjtcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiBcImNvLXN0b2NrLXRyYW5zZmVyXCIsXHJcbiAgdGVtcGxhdGU6IGBcclxuICAgICAgPGRpdiBjbGFzcz1cInN0b2NrLXRyYW5zZmVyXCI+XHJcbiAgICAgICAgPGNvLWRpYWxvZ1xyXG4gICAgICAgICAgICAgICAgICAgKGNsb3NlQ2xpY2spPVwib25DbG9zZUNsaWNrKClcIlxyXG4gICAgICAgICAgICAgICAgICAgW3Nob3dDbG9zZUljb25dPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICBbbW9kYWxdPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICBbaGVhZGVyVGVtcGxhdGVdPVwiaGVhZGVyVGVtcGxhdGVcIlxyXG4gICAgICAgICAgICAgICAgICAgW2Zvb3RlclRlbXBsYXRlXT1cImZvb3RlclRlbXBsYXRlXCI+XHJcbiAgICAgICAgICA8bmctdGVtcGxhdGUgI2hlYWRlclRlbXBsYXRlPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY28tZGlhbG9nLWhlYWRlci10aXRsZS13cmFwcGVyXCI+XHJcbiAgICAgICAgICAgICAgPGNvLWljb24gW2ljb25EYXRhXT1cImljb25DYWNoZVNlcnZpY2UuZ2V0SWNvbihpY29ucy5DdWJlcylcIj48L2NvLWljb24+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvLWRpYWxvZy1oZWFkZXItdGl0bGVcIiBbdGV4dENvbnRlbnRdPVwiJ1RSQU5TRkVSX1NUT0NLJyB8IGxvY2FsaXplXCI+PC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJkaWFsb2ctd3JhcHBlclwiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3RvY2stdHJhbnNmZXItY29sdW1uc1wiPlxyXG4gICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJhcnRpY2xlVG9UcmFuc2ZlclwiIGNsYXNzPVwic3RvY2stdHJhbnNmZXItdG9wLWNvbHVtblwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRyYW5zZmVyLWl0ZW1zXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0cmFuc2Zlci1pdGVtXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiaXRlbS1sYWJlbFwiIFt0ZXh0Q29udGVudF09XCInV0FSRUhPVVNFJyB8IGxvY2FsaXplXCI+PC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIml0ZW0tdmFsdWVcIiBbdGV4dENvbnRlbnRdPVwiYXJ0aWNsZVRvVHJhbnNmZXIud2FyZWhvdXNlRGVzY3JpcHRpb25cIj48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidHJhbnNmZXItaXRlbVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cIml0ZW0tbGFiZWxcIiBbdGV4dENvbnRlbnRdPVwiJ0xPQ0FUSU9OJyB8IGxvY2FsaXplXCI+PC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIml0ZW0tdmFsdWVcIiBbdGV4dENvbnRlbnRdPVwiYXJ0aWNsZVRvVHJhbnNmZXIubG9jYXRpb25Ob1wiPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0cmFuc2Zlci1pdGVtXCIgKm5nSWY9XCJhcnRpY2xlVG9UcmFuc2Zlcj8uYmF0Y2hOb1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cIml0ZW0tbGFiZWxcIiBbdGV4dENvbnRlbnRdPVwiJ0JBVENIX05PJyB8IGxvY2FsaXplXCI+PC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIml0ZW0tdmFsdWVcIiBbdGV4dENvbnRlbnRdPVwiYXJ0aWNsZVRvVHJhbnNmZXIuYmF0Y2hOb1wiPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0cmFuc2Zlci1pdGVtXCIgKm5nSWY9XCJhcnRpY2xlVG9UcmFuc2Zlcj8uc2VyaWFsTm9cIj5cclxuICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJpdGVtLWxhYmVsXCIgW3RleHRDb250ZW50XT1cIidTRVJJRV9OTycgfCBsb2NhbGl6ZVwiPjwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJpdGVtLXZhbHVlXCIgW3RleHRDb250ZW50XT1cImFydGljbGVUb1RyYW5zZmVyLnNlcmlhbE5vXCI+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRyYW5zZmVyLXF1YW50aXR5XCI+XHJcbiAgICAgICAgICAgICAgICAgIDxjby1pbnB1dC1udW1iZXItcGlja2VyXHJcbiAgICAgICAgICAgICAgICAgICAgWyhtb2RlbCldPVwiYXJ0aWNsZVRvVHJhbnNmZXIuYW1vdW50VHJhbnNmZXJcIlxyXG4gICAgICAgICAgICAgICAgICAgIFttaW5dPVwiMVwiXHJcbiAgICAgICAgICAgICAgICAgICAgW2xhYmVsXT1cIidRVUFOVElUWScgfCBsb2NhbGl6ZVwiPlxyXG4gICAgICAgICAgICAgICAgICA8L2NvLWlucHV0LW51bWJlci1waWNrZXI+XHJcbiAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwidHJhbnNmZXJGdWxsXCIgW3RleHRDb250ZW50XT1cInRoaXMuYXJ0aWNsZVRvVHJhbnNmZXIuYW1vdW50SW5TdG9ja0ZyZWUgKyAoJyBBVkFJTEFCTEUnIHwgbG9jYWxpemUpXCI+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRyYW5zZmVyLWFycm93LXdyYXBwZXJcIj5cclxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiaGFsZi1jaXJjbGVcIj48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaWNvbi13cmFwcGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxjby1pY29uIFtpY29uRGF0YV09XCJpY29uQ2FjaGVTZXJ2aWNlLmdldEljb24oaWNvbnMuQXJyb3dEb3duUmVndWxhcilcIj48L2NvLWljb24+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcblxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdG9jay10cmFuc2Zlci1ib3R0b20tY29sdW1uXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidHJhbnNmZXItYm90dG9tLXJvd1wiPlxyXG4gICAgICAgICAgICAgICAgICA8Y28tbGlzdC1vZi12YWx1ZXMgW2NvbGxlY3Rpb25dPVwid2FyZWhvdXNlc1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZGlzcGxheUZpZWxkXT1cIid3YXJlaG91c2VEZXNjcmlwdGlvbidcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vZGVsQ2hhbmdlKT1cImhhbmRsZVNlbGVjdGVkV2FyZWhvdXNlKCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2xhYmVsXT1cIidXQVJFSE9VU0UnIHwgbG9jYWxpemVcIlxyXG4gICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgIDwvY28tbGlzdC1vZi12YWx1ZXM+XHJcbiAgICAgICAgICAgICAgICAgIDxjby1saXN0LW9mLXZhbHVlcyBbY29sbGVjdGlvbl09XCJzdG9ja0xvY2F0aW9uc1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZGlzcGxheUZpZWxkXT1cIidsb2NhdGlvbk5vJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9kZWxDaGFuZ2UpPVwiaGFuZGxlU2VsZWN0ZWRMb2NhdGlvbigkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtsYWJlbF09XCInTE9DQVRJT04nIHwgbG9jYWxpemVcIlxyXG4gICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgIDwvY28tbGlzdC1vZi12YWx1ZXM+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0cmFuc2Zlci1ib3R0b20tcm93XCI+XHJcbiAgICAgICAgICAgICAgICAgIDxjby1saXN0LW9mLXZhbHVlcyBbY29sbGVjdGlvbl09XCJzdG9ja1N0YXRlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtkaXNwbGF5RmllbGRdPVwiJ3N0YXRlRGVzY3JpcHRpb24nXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtsYWJlbF09XCInU1RPQ0tfU1RBVEUnIHwgbG9jYWxpemVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vZGVsQ2hhbmdlKT1cImhhbmRsZVNlbGVjdGVkU3RvY2tTdGF0ZSgkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICA8L2NvLWxpc3Qtb2YtdmFsdWVzPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0cmFuc2Zlci1zdGlja2VyLWJ1dHRvbnNcIj5cclxuICAgICAgICAgICAgICAgIDxjby1idXR0b25cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgW2xhYmVsXT1cIidTVElDS0VSJyB8IGxvY2FsaXplXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImhhbmRsZVN0aWNrZXJDbGljaygpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgW2ljb25EYXRhXT1cImljb25DYWNoZVNlcnZpY2UuZ2V0SWNvbihpY29ucy5CYXJjb2RlUmVhZFJlZ3VsYXIpXCI+XHJcbiAgICAgICAgICAgICAgICA8L2NvLWJ1dHRvbj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjZm9vdGVyVGVtcGxhdGU+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJidXR0b24td3JhcHBlciBvay1jYW5jZWwtYnV0dG9uc1wiPlxyXG4gICAgICAgICAgICAgIDxjby1idXR0b24gY2xhc3M9XCJzYXZlLWJ1dHRvblwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiaGFuZGxlT2tDbGljayhhcnRpY2xlVG9UcmFuc2ZlcilcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgW2ljb25EYXRhXT1cImljb25DYWNoZVNlcnZpY2UuZ2V0SWNvbihpY29ucy5DaGVja0R1b3RvbmUpXCI+XHJcbiAgICAgICAgICAgICAgPC9jby1idXR0b24+XHJcbiAgICAgICAgICAgICAgPGNvLWJ1dHRvbiBjbGFzcz1cImNhbmNlbC1idXR0b25cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIm9uQ2xvc2VDbGljaygpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgIFtpY29uRGF0YV09XCJpY29uQ2FjaGVTZXJ2aWNlLmdldEljb24oaWNvbnMuQ3Jvc3NTa2lubnkpXCI+XHJcbiAgICAgICAgICAgICAgPC9jby1idXR0b24+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICA8L2NvLWRpYWxvZz5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxjby1zZW5kLW1ldGhvZC1kaWFsb2cgKm5nSWY9XCJzaG93U2VuZE1ldGhvZERpYWxvZ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsb3NlQ2xpY2spPVwic2hvd1NlbmRNZXRob2REaWFsb2cgPSBmYWxzZVwiPlxyXG5cclxuICAgICAgPC9jby1zZW5kLW1ldGhvZC1kaWFsb2c+XHJcbiAgYCxcclxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBTdG9ja1RyYW5zZmVyQ29tcG9uZW50IGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCB7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIHN0b2NrU3RpY2tlcjogUHJpbnRTdG9ja1N0aWNrZXJzO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBhcnRpY2xlOiBBcnRpY2xlU3RvY2tCbztcclxuXHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgYXJ0aWNsZVRvVHJhbnNmZXI6IEFydGljbGVEZXRhaWxzQm87XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIGFsbFdhcmVob3VzZXM6IGFueVtdO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBzaG93U3RvY2tUcmFuc2ZlcjogYm9vbGVhbjtcclxuXHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgc2VsZWN0ZWRBcnRpY2xlRGV0YWlsc0RhdGE6IEFydGljbGVEZXRhaWxzQm8gPSBuZXcgQXJ0aWNsZURldGFpbHNCbygpO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBhcnRpY2xlRmxhdDogQXJ0aWNsZUZsYXQ7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIGFydGljbGVEZXRhaWxzSW5mb3JtYXRpb246IEFydGljbGVTdG9ja01hbmFnZW1lbnQgPSBuZXcgQXJ0aWNsZVN0b2NrTWFuYWdlbWVudCgpO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBzZWxlY3RlZFdhcmVob3VzZTogU3RvY2tNYW5hZ2VtZW50V2FyZWhvdXNlcztcclxuXHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgc2VsZWN0ZWRMb2NhdGlvbk5vOiBzdHJpbmc7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIGFydGljbGVTdG9ja0luZm86IEFydGljbGVEZXRhaWxzQm9bXSA9IFtdO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBzdG9ja0xvY2F0aW9uczogU3RvY2tMb2NhdGlvbltdID0gW107XHJcblxyXG4gIEBPdXRwdXQoKVxyXG4gIHB1YmxpYyBoYW5kbGVDbGljazogRXZlbnRFbWl0dGVyPG51bWJlcj4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcblxyXG4gIEBPdXRwdXQoKVxyXG4gIHB1YmxpYyBoYW5kbGVTdGlja2VyQ2xpY2tlZDogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcblxyXG4gIEBPdXRwdXQoKVxyXG4gIHB1YmxpYyB1cGRhdGVHcmlkRGF0YTogRXZlbnRFbWl0dGVyPEFydGljbGVEZXRhaWxzQm9bXT4gPSBuZXcgRXZlbnRFbWl0dGVyPEFydGljbGVEZXRhaWxzQm9bXT4oKTtcclxuXHJcbiAgQE91dHB1dCgpXHJcbiAgcHVibGljIHNob3dTdG9ja1RyYW5zZmVyQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xyXG5cclxuICBwdWJsaWMgc2hvd1NlbmRNZXRob2REaWFsb2c6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBwdWJsaWMgdHJhbnNmZXJGdWxsOiBib29sZWFuID0gZmFsc2U7XHJcbiAgcHVibGljIHdhcmVob3VzZXM6IFN0b2NrTWFuYWdlbWVudFdhcmVob3VzZXNbXSA9IFtdO1xyXG4gIHB1YmxpYyBzdG9ja1N0YXRlOiBTdG9ja1N0YXR1c1tdID0gW107XHJcblxyXG4gIHB1YmxpYyBsb2NhdGlvbnM6IFN0b2NrTG9jYXRpb25bXSA9IFtdO1xyXG4gIHB1YmxpYyBzdG9ja1N0YXR1czogU3RvY2tTdGF0dXNbXSA9IFtdO1xyXG5cclxuXHJcblxyXG4gIHB1YmxpYyByZWFkb25seSBpY29uczogdHlwZW9mIEljb24gPSBJY29uO1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgX3N0b2NrU2VydmljZTogU3RvY2tTZXJ2aWNlLFxyXG4gICAgcHVibGljIGljb25DYWNoZVNlcnZpY2U6IEljb25DYWNoZVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIF9jaGFuZ2VEZXRlY3RvcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcbiAgKSB7XHJcbiAgfVxyXG5cclxuICBuZ0FmdGVyVmlld0luaXQoKSB7XHJcbiAgICB0aGlzLmdldFN0b2NrTWFuYWdlbWVudFdhcmVob3VzZXMoKTtcclxuICAgIHRoaXMuZ2V0U3RvY2tTdGF0ZSgpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGhhbmRsZU9rQ2xpY2soZGF0YTogQXJ0aWNsZURldGFpbHNCbyk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuYXJ0aWNsZVRvVHJhbnNmZXIuYW1vdW50VHJhbnNmZXIgPiB0aGlzLmFydGljbGVUb1RyYW5zZmVyLmFtb3VudEluU3RvY2tGcmVlKSB7XHJcbiAgICAgIHRoaXMudHJhbnNmZXJGdWxsID0gdHJ1ZTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGRhdGEuc2VsZWN0ZWQgPSB0cnVlO1xyXG4gICAgICBkYXRhLmVudHJ5RGF0ZSA9IG5ldyBEYXRlO1xyXG4gICAgICB0aGlzLl9zdG9ja1NlcnZpY2UudXBkYXRlQXJ0aWNsZURldGFpbHMoZGF0YSkudGhlbigocmVzdWx0OiBib29sZWFuKSA9PiB7XHJcbiAgICAgICAgdGhpcy5oYW5kbGVDbGljay5lbWl0KCk7XHJcbiAgICAgICAgdGhpcy5zaG93U3RvY2tUcmFuc2ZlckNoYW5nZS5lbWl0KGZhbHNlKTtcclxuICAgICAgICB0aGlzLl9zdG9ja1NlcnZpY2UuZ2V0QXJ0aWNsZURldGFpbHModGhpcy5hcnRpY2xlRGV0YWlsc0luZm9ybWF0aW9uKS50aGVuKChkZXRhaWxzKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLmFydGljbGVTdG9ja0luZm8gPSBkZXRhaWxzO1xyXG4gICAgICAgICAgdGhpcy51cGRhdGVHcmlkRGF0YS5lbWl0KGRldGFpbHMpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICB9KS5jYXRjaCgocmVzdWx0OiBzdHJpbmcpID0+IHtcclxuICAgICAgICAvLyBMb2cgZmFpbHVyZSBtZXNzYWdlXHJcblxyXG4gICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcbiAgcHVibGljIG9uQ2xvc2VDbGljaygpIHtcclxuICAgIHRoaXMuc2hvd1N0b2NrVHJhbnNmZXJDaGFuZ2UuZW1pdChmYWxzZSk7XHJcbiAgfVxyXG4gIHB1YmxpYyBoYW5kbGVTZWxlY3RlZFdhcmVob3VzZShldmVudDogU3RvY2tNYW5hZ2VtZW50V2FyZWhvdXNlcyk6IHZvaWQge1xyXG4gICAgdGhpcy5hcnRpY2xlVG9UcmFuc2Zlci50YXJnZXRXYXJlaG91c2UgPSBldmVudC53YXJlaG91c2VObztcclxuICAgIHRoaXMuc2VsZWN0ZWRXYXJlaG91c2UgPSBldmVudDtcclxuICAgIHRoaXMuZ2V0U3RvY2tNYW5hZ2VtZW50TG9jYXRpb25zKCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgaGFuZGxlU2VsZWN0ZWRMb2NhdGlvbihldmVudDogU3RvY2tMb2NhdGlvbik6IHZvaWQge1xyXG4gICAgdGhpcy5hcnRpY2xlVG9UcmFuc2Zlci50YXJnZXRMb2NhdGlvbiA9IGV2ZW50LmxvY2F0aW9uTm87XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgaGFuZGxlU2VsZWN0ZWRTdG9ja1N0YXRlKGV2ZW50OiBTdG9ja1N0YXR1cyk6IHZvaWQge1xyXG4gICAgdGhpcy5hcnRpY2xlVG9UcmFuc2Zlci5zdG9ja1N0YXRlSWQgPSBldmVudC5zdG9ja1N0YXRlSWQ7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgaGFuZGxlU3RpY2tlckNsaWNrKCk6IHZvaWQge1xyXG4gICAgdGhpcy5oYW5kbGVTdGlja2VyQ2xpY2tlZC5lbWl0KCk7XHJcbiAgICB0aGlzLnNob3dTZW5kTWV0aG9kRGlhbG9nID0gdHJ1ZTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXRTdG9ja01hbmFnZW1lbnRXYXJlaG91c2VzKCk6IHZvaWQge1xyXG4gICAgdGhpcy5fc3RvY2tTZXJ2aWNlLmdldFN0b2NrTWFuYWdlbWVudFdhcmVob3VzZXMoKS50aGVuKCh3YXJlaG91c2VzKSA9PiB7XHJcbiAgICAgIHRoaXMud2FyZWhvdXNlcyA9IHdhcmVob3VzZXM7XHJcbiAgICB9KVxyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldFN0b2NrTWFuYWdlbWVudExvY2F0aW9ucygpOiB2b2lkIHtcclxuICAgIHRoaXMuX3N0b2NrU2VydmljZS5nZXRTdG9ja01hbmFnZW1lbnRMb2NhdGlvbnModGhpcy5zZWxlY3RlZFdhcmVob3VzZS53YXJlaG91c2VObykudGhlbigobG9jYXRpb25zKSA9PiB7XHJcbiAgICAgIHRoaXMuc3RvY2tMb2NhdGlvbnMgPSBsb2NhdGlvbnM7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXRTdG9ja1N0YXRlKCk6IHZvaWQge1xyXG4gICAgdGhpcy5fc3RvY2tTZXJ2aWNlLmdldFN0b2NrU3RhdGUoKS50aGVuKChzdGF0ZTogU3RvY2tTdGF0dXNbXSkgPT4ge1xyXG4gICAgICB0aGlzLnN0b2NrU3RhdGUgPSBzdGF0ZTtcclxuICAgIH0pO1xyXG4gIH1cclxufVxyXG4iXX0=