@smartbit4all/ng-client 3.3.225 → 3.3.227

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 (30) hide show
  1. package/esm2020/lib/smart-client/smart-component-api-client.mjs +29 -2
  2. package/esm2020/lib/smart-filter/api/filter/model/filterExpressionFieldWidgetType.mjs +2 -1
  3. package/esm2020/lib/smart-filter/api/filter/model/filterExpressionOperandData.mjs +1 -1
  4. package/esm2020/lib/smart-filter-editor/api/model/filterExpressionFieldWidgetType.mjs +2 -1
  5. package/esm2020/lib/smart-filter-editor/api/model/filterExpressionOperandData.mjs +1 -1
  6. package/esm2020/lib/smart-filter-editor/smart-filter-editor-content/smart-filter-editor-content.component.mjs +6 -1
  7. package/esm2020/lib/smart-form/api/model/models.mjs +1 -1
  8. package/esm2020/lib/smart-form/api/model/smartFormInputMode.mjs +1 -1
  9. package/esm2020/lib/smart-form/api/model/smartFormWidgetType.mjs +2 -1
  10. package/esm2020/lib/smart-form/api/model/smartMatrixModel.mjs +1 -1
  11. package/esm2020/lib/smart-form/api/model/smartWidgetDefinition.mjs +1 -1
  12. package/esm2020/lib/smart-form/services/smartform.layout-definition.service.mjs +19 -3
  13. package/esm2020/lib/smart-form/smartform.form-model.mjs +1 -1
  14. package/esm2020/lib/smart-form/widgets/smartformwidget/smartformwidget.component.mjs +64 -24
  15. package/fesm2015/smartbit4all-ng-client.mjs +125 -35
  16. package/fesm2015/smartbit4all-ng-client.mjs.map +1 -1
  17. package/fesm2020/smartbit4all-ng-client.mjs +116 -26
  18. package/fesm2020/smartbit4all-ng-client.mjs.map +1 -1
  19. package/lib/smart-client/smart-component-api-client.d.ts +1 -0
  20. package/lib/smart-filter/api/filter/model/filterExpressionFieldWidgetType.d.ts +1 -0
  21. package/lib/smart-filter/api/filter/model/filterExpressionOperandData.d.ts +1 -0
  22. package/lib/smart-filter-editor/api/model/filterExpressionFieldWidgetType.d.ts +1 -0
  23. package/lib/smart-filter-editor/api/model/filterExpressionOperandData.d.ts +1 -0
  24. package/lib/smart-form/api/model/smartFormWidgetType.d.ts +1 -0
  25. package/lib/smart-form/services/smartform.layout-definition.service.d.ts +1 -0
  26. package/lib/smart-form/smartform.form-model.d.ts +28 -1
  27. package/lib/smart-form/widgets/smartformwidget/smartformwidget.component.d.ts +1 -0
  28. package/package.json +1 -1
  29. package/smartbit4all-ng-client-3.3.227.tgz +0 -0
  30. package/smartbit4all-ng-client-3.3.225.tgz +0 -0
@@ -62,6 +62,11 @@ export class SmartFilterEditorContentComponent {
62
62
  let model = {};
63
63
  this.service.model?.model?.workplaceList?.filters.forEach((filterExpressionField, index) => {
64
64
  model[index] = filterExpressionField;
65
+ if (filterExpressionField.widgetType === FilterExpressionFieldWidgetType.TEXT_FIELD_LOOKUP) {
66
+ key = index + '.expressionData.operand2.selectedObjects';
67
+ widgets.push(this.constructFormWidget(key, filterExpressionField.label2, FilterExpressionFieldWidgetType.TEXT_FIELD_LOOKUP, [], filterExpressionField.expressionData?.operand2?.selectedObjects ?? [], filterExpressionField.toolbarId));
68
+ return;
69
+ }
65
70
  if (filterExpressionField.widgetType === 'SELECT_MULTIPLE') {
66
71
  key = index + '.expressionData.operand2.selectedValues';
67
72
  widgets.push(this.constructFormWidget(key, filterExpressionField.label2, filterExpressionField.widgetType ?? FilterExpressionFieldWidgetType.TEXT_FIELD, filterExpressionField.possibleValues, filterExpressionField.expressionData?.operand2?.valueAsString ?? '', filterExpressionField.toolbarId));
@@ -233,4 +238,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.4.0", ngImpor
233
238
  type: ViewChild,
234
239
  args: ['simpleFilterFromChild', { read: ViewContainerRef }]
235
240
  }] } });
236
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnQtZmlsdGVyLWVkaXRvci1jb250ZW50LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NtYXJ0LW5nLWNsaWVudC9zcmMvbGliL3NtYXJ0LWZpbHRlci1lZGl0b3Ivc21hcnQtZmlsdGVyLWVkaXRvci1jb250ZW50L3NtYXJ0LWZpbHRlci1lZGl0b3ItY29udGVudC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zbWFydC1uZy1jbGllbnQvc3JjL2xpYi9zbWFydC1maWx0ZXItZWRpdG9yL3NtYXJ0LWZpbHRlci1lZGl0b3ItY29udGVudC9zbWFydC1maWx0ZXItZWRpdG9yLWNvbnRlbnQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVMLFNBQVMsRUFFVCxLQUFLLEVBR0wsU0FBUyxFQUVULGdCQUFnQixHQUNqQixNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQUUsT0FBTyxFQUFnQixTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFeEQsT0FBTyxFQUFFLCtCQUErQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDOUUsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0scURBQXFELENBQUM7QUFDL0YsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFFaEUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFLMUUsT0FBTyxFQUFFLHNDQUFzQyxFQUFFLE1BQU0sNkNBQTZDLENBQUM7QUFFckcsT0FBTyxFQUFFLGlDQUFpQyxFQUFFLE1BQU0sc0NBQXNDLENBQUM7Ozs7Ozs7O0FBUXpGLE1BQU0sT0FBTyxpQ0FBaUM7SUFrQjVDLFlBQ1UsYUFBK0MsRUFDL0MsU0FBa0M7UUFEbEMsa0JBQWEsR0FBYixhQUFhLENBQWtDO1FBQy9DLGNBQVMsR0FBVCxT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LENBQUMsQ0FBQyxLQUFLLENBQUMsSUFBSztvQkFDcEQsS0FBSyxFQUFFLEtBQUssQ0FBQyxZQUFZO29CQUN6QixJQUFJLEVBQUUsbUJBQW1CLENBQUMsSUFBSTtvQkFDOUIsS0FBSyxFQUFFLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJO2lCQUN0RCxDQUFDO1lBQ0osQ0FBQyxDQUFDO1lBQ0YsU0FBUztTQUNWLENBQUM7UUFFRixPQUFPLE1BQU0sQ0FBQztJQUNoQixDQUFDOzs4SEEvVFUsaUNBQWlDO2tIQUFqQyxpQ0FBaUMsZ0xBT2pCLGdCQUFnQixxSEFLQyxnQkFBZ0IsNkJDN0M5RCxvbEVBaURBOzJGRGhCYSxpQ0FBaUM7a0JBTDdDLFNBQVM7K0JBQ0UsZ0NBQWdDOzZKQU1qQyxPQUFPO3NCQUFmLEtBQUs7Z0JBTU4sS0FBSztzQkFESixTQUFTO3VCQUFDLE1BQU0sRUFBRSxFQUFFLElBQUksRUFBRSxnQkFBZ0IsRUFBRTtnQkFNN0MsaUJBQWlCO3NCQURoQixTQUFTO3VCQUFDLHVCQUF1QixFQUFFLEVBQUUsSUFBSSxFQUFFLGdCQUFnQixFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICBBZnRlclZpZXdJbml0LFxyXG4gIENvbXBvbmVudCxcclxuICBDb21wb25lbnRSZWYsXHJcbiAgSW5wdXQsXHJcbiAgT25EZXN0cm95LFxyXG4gIE9uSW5pdCxcclxuICBWaWV3Q2hpbGQsXHJcbiAgVmlld0NoaWxkcmVuLFxyXG4gIFZpZXdDb250YWluZXJSZWYsXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcblxyXG5pbXBvcnQgeyBTdWJqZWN0LCBTdWJzY3JpcHRpb24sIHRha2VVbnRpbCB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBDb21wb25lbnRGYWN0b3J5U2VydmljZSB9IGZyb20gJy4uLy4uL2NvbXBvbmVudC1mYWN0b3J5LXNlcnZpY2UvY29tcG9uZW50LWZhY3Rvcnktc2VydmljZS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgRmlsdGVyRXhwcmVzc2lvbkZpZWxkV2lkZ2V0VHlwZSB9IGZyb20gJy4uLy4uL3NtYXJ0LWZpbHRlci9wcm9qZWN0cyc7XHJcbmltcG9ydCB7IFNtYXJ0Rm9ybVdpZGdldERpcmVjdGlvbiB9IGZyb20gJy4uLy4uL3NtYXJ0LWZvcm0vYXBpL21vZGVsL3NtYXJ0Rm9ybVdpZGdldERpcmVjdGlvbic7XHJcbmltcG9ydCB7IFNtYXJ0Rm9ybVdpZGdldFR5cGUgfSBmcm9tICcuLi8uLi9zbWFydC1mb3JtL3Byb2plY3RzJztcclxuaW1wb3J0IHsgU21hcnRmb3JtTGF5b3V0RGVmaW5pdGlvblNlcnZpY2UgfSBmcm9tICcuLi8uLi9zbWFydC1mb3JtL3NlcnZpY2VzL3NtYXJ0Zm9ybS5sYXlvdXQtZGVmaW5pdGlvbi5zZXJ2aWNlJztcclxuaW1wb3J0IHsgU21hcnRmb3JtQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vc21hcnQtZm9ybS9zbWFydGZvcm0uY29tcG9uZW50JztcclxuaW1wb3J0IHsgU21hcnRGb3JtV2lkZ2V0IH0gZnJvbSAnLi4vLi4vc21hcnQtZm9ybS9zbWFydGZvcm0uZm9ybS1tb2RlbCc7XHJcbmltcG9ydCB7IFNtYXJ0Rm9ybSwgU29waGlzdGljYXRlZFZhbHVlQ2hhbmdlLCBWYWx1ZSB9IGZyb20gJy4uLy4uL3NtYXJ0LWZvcm0vc21hcnRmb3JtLm1vZGVsJztcclxuaW1wb3J0IHsgVWlBY3Rpb24gfSBmcm9tICcuLi8uLi92aWV3LWNvbnRleHQvYXBpL21vZGVsL3VpQWN0aW9uJztcclxuaW1wb3J0IHsgVWlBY3Rpb25Nb2RlbCB9IGZyb20gJy4uLy4uL3ZpZXctY29udGV4dC9zbWFydC11aS1hY3Rpb24vdWktYWN0aW9uLm1vZGVsJztcclxuaW1wb3J0IHsgRmlsdGVyRXhwcmVzc2lvbkJ1aWxkZXJVaU1vZGVsVHlwZUVudW0gfSBmcm9tICcuLi9hcGkvbW9kZWwvZmlsdGVyRXhwcmVzc2lvbkJ1aWxkZXJVaU1vZGVsJztcclxuaW1wb3J0IHsgRmlsdGVyRXhwcmVzc2lvbkZpZWxkIH0gZnJvbSAnLi4vYXBpL21vZGVsL2ZpbHRlckV4cHJlc3Npb25GaWVsZCc7XHJcbmltcG9ydCB7IEZpbHRlckV4cHJlc3Npb25CdWlsZGVyQXBpQWN0aW9ucyB9IGZyb20gJy4uL2ZpbHRlckV4cHJlc3Npb25CdWlsZGVyQXBpQWN0aW9ucyc7XHJcbmltcG9ydCB7IElTbWFydEZpbHRlckVkaXRvclNlcnZpY2UgfSBmcm9tICcuLi9zbWFydC1maWx0ZXItZWRpdG9yLnNlcnZpY2UnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdzbWFydC1maWx0ZXItZXhwcmVzc2lvbi1lZGl0b3InLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9zbWFydC1maWx0ZXItZWRpdG9yLWNvbnRlbnQuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL3NtYXJ0LWZpbHRlci1lZGl0b3ItY29udGVudC5jb21wb25lbnQuY3NzJ10sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBTbWFydEZpbHRlckVkaXRvckNvbnRlbnRDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIEFmdGVyVmlld0luaXQsIE9uRGVzdHJveSB7XHJcbiAgcHJpdmF0ZSBfZGVzdHJveSQ6IFN1YmplY3Q8dm9pZD4gPSBuZXcgU3ViamVjdCgpO1xyXG4gIEBJbnB1dCgpIHNlcnZpY2UhOiBJU21hcnRGaWx0ZXJFZGl0b3JTZXJ2aWNlO1xyXG5cclxuICB1aUFjdGlvbk1vZGVsczogVWlBY3Rpb25Nb2RlbFtdID0gW107XHJcbiAgZXhwcmVzc2lvblVpQWN0aW9uTW9kZWxzOiBVaUFjdGlvbk1vZGVsW10gPSBbXTtcclxuXHJcbiAgQFZpZXdDaGlsZCgnZm9ybScsIHsgcmVhZDogVmlld0NvbnRhaW5lclJlZiB9KVxyXG4gIHZjUmVmPzogVmlld0NvbnRhaW5lclJlZjtcclxuICBmb3JtQ29tcFJlZj86IENvbXBvbmVudFJlZjxTbWFydGZvcm1Db21wb25lbnQ+O1xyXG4gIHNtYXJ0Rm9ybT86IFNtYXJ0Rm9ybTtcclxuXHJcbiAgQFZpZXdDaGlsZCgnc2ltcGxlRmlsdGVyRnJvbUNoaWxkJywgeyByZWFkOiBWaWV3Q29udGFpbmVyUmVmIH0pXHJcbiAgc2ltcGxlRmlsdGVyVmNSZWY/OiBWaWV3Q29udGFpbmVyUmVmO1xyXG4gIHNpbXBsZUZpbHRlclJlZj86IENvbXBvbmVudFJlZjxTbWFydGZvcm1Db21wb25lbnQ+O1xyXG5cclxuICB0eXBlID0gRmlsdGVyRXhwcmVzc2lvbkJ1aWxkZXJVaU1vZGVsVHlwZUVudW07XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBsYXlvdXRTZXJ2aWNlOiBTbWFydGZvcm1MYXlvdXREZWZpbml0aW9uU2VydmljZSxcclxuICAgIHByaXZhdGUgY2ZTZXJ2aWNlOiBDb21wb25lbnRGYWN0b3J5U2VydmljZVxyXG4gICkge31cclxuXHJcbiAgcHJpdmF0ZSBzdWJzcmNpYmVTaW1wbGVGb3JtQ2hpbGRyZW5FdmVudHMoKTogdm9pZCB7XHJcbiAgICB0aGlzLnNpbXBsZUZpbHRlclJlZiEuaW5zdGFuY2Uub25CbHVyU3ViamVjdCEucGlwZSh0YWtlVW50aWwodGhpcy5fZGVzdHJveSQpKS5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICB0aGlzLnNhdmVGaWx0ZXIoKTtcclxuICAgIH0pO1xyXG4gICAgdGhpcy5zaW1wbGVGaWx0ZXJSZWYhLmluc3RhbmNlLnNvcGhpc3RpY2F0ZWRWYWx1ZUNoYW5nZT8ucGlwZShcclxuICAgICAgdGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3kkKVxyXG4gICAgKS5zdWJzY3JpYmUoKGNoYW5nZSkgPT4ge1xyXG4gICAgICBpZiAoY2hhbmdlLmtpbmQgPT09ICdzZWxlY3Rpb24nICYmICFjaGFuZ2Uua2V5LmluY2x1ZGVzKCdzZWxlY3RlZFZhbHVlcycpKSB7XHJcbiAgICAgICAgdGhpcy5zYXZlRmlsdGVyKCk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzdWJzY3JpYmVFZGl0b3JGb3JtQ2hpbGRyZW5FdmVudHMoKTogdm9pZCB7XHJcbiAgICB0aGlzLmZvcm1Db21wUmVmPy5pbnN0YW5jZSEub25CbHVyU3ViamVjdCEucGlwZSh0YWtlVW50aWwodGhpcy5fZGVzdHJveSQpKS5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICB0aGlzLnNhdmUoKTtcclxuICAgIH0pO1xyXG5cclxuICAgIHRoaXMuZm9ybUNvbXBSZWYhLmluc3RhbmNlIS5zb3BoaXN0aWNhdGVkVmFsdWVDaGFuZ2U/LnBpcGUodGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3kkKSkuc3Vic2NyaWJlKFxyXG4gICAgICAoY2hhbmdlOiBTb3BoaXN0aWNhdGVkVmFsdWVDaGFuZ2UpID0+IHtcclxuICAgICAgICBpZiAoY2hhbmdlLmtleSA9PT0gJ2V4cHJlc3Npb25EYXRhLmN1cnJlbnRPcGVyYXRpb24nKSB7XHJcbiAgICAgICAgICB0aGlzLnNhdmUoKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHt9XHJcbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5zZXJ2aWNlLm1vZGVsQ2hhbmdlZC5waXBlKHRha2VVbnRpbCh0aGlzLl9kZXN0cm95JCkpLnN1YnNjcmliZSgoKSA9PiB0aGlzLnNldFVwKCkpO1xyXG4gICAgdGhpcy5zZXJ2aWNlLmxvYWQoKTtcclxuICB9XHJcbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICB0aGlzLl9kZXN0cm95JC5uZXh0KCk7XHJcbiAgICB0aGlzLl9kZXN0cm95JC5jb21wbGV0ZSgpO1xyXG4gIH1cclxuXHJcbiAgc2V0dXBTaW1wbGVGaWx0ZXIoKTogdm9pZCB7XHJcbiAgICB0aGlzLnNpbXBsZUZpbHRlclZjUmVmPy5jbGVhcigpO1xyXG4gICAgdGhpcy5zaW1wbGVGaWx0ZXJSZWY/LmRlc3Ryb3koKTtcclxuXHJcbiAgICBpZiAoIXRoaXMuc2ltcGxlRmlsdGVyVmNSZWYpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIGxldCB3aWRnZXRzOiBTbWFydEZvcm1XaWRnZXQ8YW55PltdID0gW107XHJcblxyXG4gICAgbGV0IGtleTogc3RyaW5nIHwgdW5kZWZpbmVkO1xyXG5cclxuICAgIGxldCBtb2RlbDogeyBba2V5OiBzdHJpbmddOiBhbnkgfSA9IHt9O1xyXG5cclxuICAgIHRoaXMuc2VydmljZS5tb2RlbD8ubW9kZWw/LndvcmtwbGFjZUxpc3Q/LmZpbHRlcnMuZm9yRWFjaChcclxuICAgICAgKGZpbHRlckV4cHJlc3Npb25GaWVsZDogRmlsdGVyRXhwcmVzc2lvbkZpZWxkLCBpbmRleDogbnVtYmVyKSA9PiB7XHJcbiAgICAgICAgbW9kZWxbaW5kZXhdID0gZmlsdGVyRXhwcmVzc2lvbkZpZWxkO1xyXG5cclxuICAgICAgICBpZiAoZmlsdGVyRXhwcmVzc2lvbkZpZWxkLndpZGdldFR5cGUgPT09ICdTRUxFQ1RfTVVMVElQTEUnKSB7XHJcbiAgICAgICAgICBrZXkgPSBpbmRleCArICcuZXhwcmVzc2lvbkRhdGEub3BlcmFuZDIuc2VsZWN0ZWRWYWx1ZXMnO1xyXG4gICAgICAgICAgd2lkZ2V0cy5wdXNoKFxyXG4gICAgICAgICAgICB0aGlzLmNvbnN0cnVjdEZvcm1XaWRnZXQoXHJcbiAgICAgICAgICAgICAga2V5LFxyXG4gICAgICAgICAgICAgIGZpbHRlckV4cHJlc3Npb25GaWVsZC5sYWJlbDIhLFxyXG4gICAgICAgICAgICAgIGZpbHRlckV4cHJlc3Npb25GaWVsZC53aWRnZXRUeXBlID8/IEZpbHRlckV4cHJlc3Npb25GaWVsZFdpZGdldFR5cGUuVEVYVF9GSUVMRCxcclxuICAgICAgICAgICAgICBmaWx0ZXJFeHByZXNzaW9uRmllbGQucG9zc2libGVWYWx1ZXMgYXMgVmFsdWVbXSxcclxuICAgICAgICAgICAgICBmaWx0ZXJFeHByZXNzaW9uRmllbGQuZXhwcmVzc2lvbkRhdGE/Lm9wZXJhbmQyPy52YWx1ZUFzU3RyaW5nID8/ICcnLFxyXG4gICAgICAgICAgICAgIGZpbHRlckV4cHJlc3Npb25GaWVsZC50b29sYmFySWRcclxuICAgICAgICAgICAgKVxyXG4gICAgICAgICAgKTtcclxuICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmIChmaWx0ZXJFeHByZXNzaW9uRmllbGQuZXhwcmVzc2lvbkRhdGE/LmN1cnJlbnRPcGVyYXRpb24gPT09ICdCRVRXRUVOJykge1xyXG4gICAgICAgICAga2V5ID0gaW5kZXggKyAnLmV4cHJlc3Npb25EYXRhLm9wZXJhbmQyLnZhbHVlQXNTdHJpbmcnO1xyXG4gICAgICAgICAgd2lkZ2V0cy5wdXNoKFxyXG4gICAgICAgICAgICB0aGlzLmNvbnN0cnVjdEZvcm1XaWRnZXQoXHJcbiAgICAgICAgICAgICAga2V5LFxyXG4gICAgICAgICAgICAgIGZpbHRlckV4cHJlc3Npb25GaWVsZC5sYWJlbDIhLFxyXG4gICAgICAgICAgICAgIGZpbHRlckV4cHJlc3Npb25GaWVsZC53aWRnZXRUeXBlID8/IEZpbHRlckV4cHJlc3Npb25GaWVsZFdpZGdldFR5cGUuVEVYVF9GSUVMRCxcclxuICAgICAgICAgICAgICBmaWx0ZXJFeHByZXNzaW9uRmllbGQucG9zc2libGVWYWx1ZXMgYXMgVmFsdWVbXSxcclxuICAgICAgICAgICAgICBmaWx0ZXJFeHByZXNzaW9uRmllbGQuZXhwcmVzc2lvbkRhdGE/Lm9wZXJhbmQyPy52YWx1ZUFzU3RyaW5nID8/ICcnLFxyXG4gICAgICAgICAgICAgIGZpbHRlckV4cHJlc3Npb25GaWVsZC50b29sYmFySWRcclxuICAgICAgICAgICAgKVxyXG4gICAgICAgICAgKTtcclxuXHJcbiAgICAgICAgICBrZXkgPSBpbmRleCArICcuZXhwcmVzc2lvbkRhdGEub3BlcmFuZDMudmFsdWVBc1N0cmluZyc7XHJcbiAgICAgICAgICB3aWRnZXRzLnB1c2goXHJcbiAgICAgICAgICAgIHRoaXMuY29uc3RydWN0Rm9ybVdpZGdldChcclxuICAgICAgICAgICAgICBrZXksXHJcbiAgICAgICAgICAgICAgZmlsdGVyRXhwcmVzc2lvbkZpZWxkLmxhYmVsMyEsXHJcbiAgICAgICAgICAgICAgZmlsdGVyRXhwcmVzc2lvbkZpZWxkLndpZGdldFR5cGUgPz8gRmlsdGVyRXhwcmVzc2lvbkZpZWxkV2lkZ2V0VHlwZS5URVhUX0ZJRUxELFxyXG4gICAgICAgICAgICAgIGZpbHRlckV4cHJlc3Npb25GaWVsZC5wb3NzaWJsZVZhbHVlcyBhcyBWYWx1ZVtdLFxyXG4gICAgICAgICAgICAgIGZpbHRlckV4cHJlc3Npb25GaWVsZC5leHByZXNzaW9uRGF0YT8ub3BlcmFuZDM/LnZhbHVlQXNTdHJpbmcgPz8gJycsXHJcbiAgICAgICAgICAgICAgZmlsdGVyRXhwcmVzc2lvbkZpZWxkLnRvb2xiYXJJZFxyXG4gICAgICAgICAgICApXHJcbiAgICAgICAgICApO1xyXG4gICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKGZpbHRlckV4cHJlc3Npb25GaWVsZC5leHByZXNzaW9uRGF0YT8ub3BlcmFuZDIpIHtcclxuICAgICAgICAgIGlmIChrZXkgIT09IGluZGV4ICsgJy5leHByZXNzaW9uRGF0YS5vcGVyYW5kMi5zZWxlY3RlZFZhbHVlcycpIHtcclxuICAgICAgICAgICAga2V5ID0gaW5kZXggKyAnLmV4cHJlc3Npb25EYXRhLm9wZXJhbmQyLnZhbHVlQXNTdHJpbmcnO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgd2lkZ2V0cy5wdXNoKFxyXG4gICAgICAgICAgICB0aGlzLmNvbnN0cnVjdEZvcm1XaWRnZXQoXHJcbiAgICAgICAgICAgICAga2V5LFxyXG4gICAgICAgICAgICAgIGZpbHRlckV4cHJlc3Npb25GaWVsZC5sYWJlbDIhLFxyXG4gICAgICAgICAgICAgIGZpbHRlckV4cHJlc3Npb25GaWVsZC53aWRnZXRUeXBlID8/IEZpbHRlckV4cHJlc3Npb25GaWVsZFdpZGdldFR5cGUuVEVYVF9GSUVMRCxcclxuICAgICAgICAgICAgICBmaWx0ZXJFeHByZXNzaW9uRmllbGQucG9zc2libGVWYWx1ZXMgYXMgVmFsdWVbXSxcclxuICAgICAgICAgICAgICBmaWx0ZXJFeHByZXNzaW9uRmllbGQuZXhwcmVzc2lvbkRhdGE/Lm9wZXJhbmQyPy52YWx1ZUFzU3RyaW5nID8/ICcnLFxyXG4gICAgICAgICAgICAgIGZpbHRlckV4cHJlc3Npb25GaWVsZC50b29sYmFySWRcclxuICAgICAgICAgICAgKVxyXG4gICAgICAgICAgKTtcclxuICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKGZpbHRlckV4cHJlc3Npb25GaWVsZD8uZXhwcmVzc2lvbkRhdGE/Lm9wZXJhbmQzKSB7XHJcbiAgICAgICAgICBpZiAoa2V5ICE9PSBpbmRleCArICcuc2VsZWN0ZWRWYWx1ZXMnKSB7XHJcbiAgICAgICAgICAgIGtleSA9IGluZGV4ICsgJy5leHByZXNzaW9uRGF0YS5vcGVyYW5kMy52YWx1ZUFzU3RyaW5nJztcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIHdpZGdldHMucHVzaChcclxuICAgICAgICAgICAgdGhpcy5jb25zdHJ1Y3RGb3JtV2lkZ2V0KFxyXG4gICAgICAgICAgICAgIGtleSxcclxuICAgICAgICAgICAgICBmaWx0ZXJFeHByZXNzaW9uRmllbGQubGFiZWwzISxcclxuICAgICAgICAgICAgICBmaWx0ZXJFeHByZXNzaW9uRmllbGQud2lkZ2V0VHlwZSA/PyBGaWx0ZXJFeHByZXNzaW9uRmllbGRXaWRnZXRUeXBlLlRFWFRfRklFTEQsXHJcblxyXG4gICAgICAgICAgICAgIGZpbHRlckV4cHJlc3Npb25GaWVsZC5wb3NzaWJsZVZhbHVlcyBhcyBWYWx1ZVtdLFxyXG4gICAgICAgICAgICAgIGZpbHRlckV4cHJlc3Npb25GaWVsZC5leHByZXNzaW9uRGF0YT8ub3BlcmFuZDM/LnZhbHVlQXNTdHJpbmcgPz8gJycsXHJcbiAgICAgICAgICAgICAgZmlsdGVyRXhwcmVzc2lvbkZpZWxkLnRvb2xiYXJJZFxyXG4gICAgICAgICAgICApXHJcbiAgICAgICAgICApO1xyXG4gICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgKTtcclxuXHJcbiAgICBsZXQgc21hcnRGb3JtID0ge1xyXG4gICAgICBkaXJlY3Rpb246IFNtYXJ0Rm9ybVdpZGdldERpcmVjdGlvbi5ST1csXHJcbiAgICAgIGNvbXBvbmVudE1vZGVsOiB7IGRhdGE6IG1vZGVsIH0sXHJcbiAgICAgIHVzZU9uVmFsdWVDaGFuZ2VFdmVudDogdHJ1ZSxcclxuICAgICAgdXNlT25CbHVyRXZlbnQ6IHRydWUsXHJcbiAgICAgIHdpZGdldHMsXHJcbiAgICB9O1xyXG5cclxuICAgIHRoaXMuc2ltcGxlRmlsdGVyUmVmID0gdGhpcy5jZlNlcnZpY2UuY3JlYXRlQ29tcG9uZW50KFxyXG4gICAgICB0aGlzLnNpbXBsZUZpbHRlclZjUmVmISxcclxuICAgICAgU21hcnRmb3JtQ29tcG9uZW50LFxyXG4gICAgICBuZXcgTWFwPHN0cmluZywgYW55PihbWydzbWFydEZvcm0nLCBzbWFydEZvcm1dXSlcclxuICAgICk7XHJcblxyXG4gICAgdGhpcy5zdWJzcmNpYmVTaW1wbGVGb3JtQ2hpbGRyZW5FdmVudHMoKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZXh0cmFjdEZpbHRlckZpZWxkRnJvbUZvcm1Nb2RlbCgpOiB2b2lkIHtcclxuICAgIGxldCBzaW1wbGVGaWx0ZXIgPSB0aGlzLnNpbXBsZUZpbHRlclJlZj8uaW5zdGFuY2U/LnN1Ym1pdEZvcm0oZmFsc2UpLmNvbXBvbmVudE1vZGVsLmRhdGE7XHJcbiAgICBsZXQgcmVzdWx0OiBGaWx0ZXJFeHByZXNzaW9uRmllbGRbXSA9IFtdO1xyXG5cclxuICAgIE9iamVjdC5rZXlzKHNpbXBsZUZpbHRlcikuZm9yRWFjaCgoa2V5OiBzdHJpbmcpID0+IHtcclxuICAgICAgcmVzdWx0LnB1c2goc2ltcGxlRmlsdGVyW2tleV0pO1xyXG4gICAgfSk7XHJcbiAgICB0aGlzLnNlcnZpY2UubW9kZWwhLm1vZGVsIS53b3JrcGxhY2VMaXN0IS5maWx0ZXJzID0gcmVzdWx0O1xyXG4gIH1cclxuXHJcbiAgc2V0VXAoKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5zZXJ2aWNlLm1vZGVsPy50eXBlID09PSB0aGlzLnR5cGUuU0lNUExFKSB7XHJcbiAgICAgIHRoaXMuc2V0dXBTaW1wbGVGaWx0ZXIoKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuY29uc3RydWN0VWlBY3Rpb25Nb2RlbHMoKTtcclxuXHJcbiAgICAgIGlmICh0aGlzLnNlcnZpY2U/Lm1vZGVsPy5zZWxlY3RlZEZpZWxkRWRpdG9yKSB7XHJcbiAgICAgICAgdGhpcy5jb25zdHJ1Y3RGb3JtKCk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5zbWFydEZvcm0gPSB1bmRlZmluZWQ7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIGNvbnN0cnVjdFVpQWN0aW9uTW9kZWxzKCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuc2VydmljZS5tb2RlbD8ucG9zc2libGVBY3Rpb25zKSB7XHJcbiAgICAgIHRoaXMudWlBY3Rpb25Nb2RlbHMgPSB0aGlzLnNlcnZpY2UubW9kZWwucG9zc2libGVBY3Rpb25zLm1hcCgoYWN0aW9uOiBVaUFjdGlvbikgPT4ge1xyXG4gICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICBzZXJ2aWNlVG9Vc2U6IHRoaXMuc2VydmljZSxcclxuICAgICAgICAgIHVpQWN0aW9uOiBhY3Rpb24sXHJcbiAgICAgICAgfTtcclxuICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRoaXMuc2VydmljZS5tb2RlbD8uc2VsZWN0ZWRGaWVsZEVkaXRvcj8ucG9zc2libGVBY3Rpb25zKSB7XHJcbiAgICAgIHRoaXMuZXhwcmVzc2lvblVpQWN0aW9uTW9kZWxzID0gdGhpcy5zZXJ2aWNlLm1vZGVsPy5zZWxlY3RlZEZpZWxkRWRpdG9yLnBvc3NpYmxlQWN0aW9ucy5tYXAoXHJcbiAgICAgICAgKHVpQWN0aW9uOiBVaUFjdGlvbikgPT4ge1xyXG4gICAgICAgICAgbGV0IGNvcGllZFVpQWN0aW9uOiBVaUFjdGlvbiA9IHt9O1xyXG4gICAgICAgICAgT2JqZWN0LmtleXModWlBY3Rpb24pLm1hcCgoa2V5OiBzdHJpbmcpID0+IHtcclxuICAgICAgICAgICAgKGNvcGllZFVpQWN0aW9uIGFzIGFueSlba2V5XSA9ICh1aUFjdGlvbiBhcyBhbnkpW2tleV07XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICAgIGNvcGllZFVpQWN0aW9uLnBhcmFtcyA9IHtcclxuICAgICAgICAgICAgZmllbGQ6IHRoaXMuc2VydmljZS5tb2RlbD8uc2VsZWN0ZWRGaWVsZCxcclxuICAgICAgICAgIH07XHJcbiAgICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICBzZXJ2aWNlVG9Vc2U6IHRoaXMuc2VydmljZSxcclxuICAgICAgICAgICAgdWlBY3Rpb246IGNvcGllZFVpQWN0aW9uLFxyXG4gICAgICAgICAgfTtcclxuICAgICAgICB9XHJcbiAgICAgICk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBjb25zdHJ1Y3RGb3JtKCk6IHZvaWQge1xyXG4gICAgdGhpcy52Y1JlZj8uY2xlYXIoKTtcclxuICAgIHRoaXMuZm9ybUNvbXBSZWY/LmRlc3Ryb3koKTtcclxuXHJcbiAgICBpZiAoIXRoaXMudmNSZWYpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIGxldCBnZW5lcmF0ZWRXaWRnZXRzOiBTbWFydEZvcm1XaWRnZXQ8YW55PltdID0gdGhpcy5sYXlvdXRTZXJ2aWNlLnJlbmRlcih7XHJcbiAgICAgIGxheW91dERlZmluaXRpb25zOiB0aGlzLnNlcnZpY2UubW9kZWw/LnNlbGVjdGVkRmllbGRFZGl0b3I/LmxheW91dERlZj8ud2lkZ2V0cyxcclxuICAgIH0pO1xyXG5cclxuICAgIHRoaXMuc21hcnRGb3JtID0ge1xyXG4gICAgICBkaXJlY3Rpb246IFNtYXJ0Rm9ybVdpZGdldERpcmVjdGlvbi5ST1csXHJcbiAgICAgIHVzZU9uQmx1ckV2ZW50OiB0cnVlLFxyXG4gICAgICB1c2VPblZhbHVlQ2hhbmdlRXZlbnQ6IHRydWUsXHJcbiAgICAgIGNvbXBvbmVudE1vZGVsOiB7IGRhdGE6IHRoaXMuc2VydmljZS5tb2RlbD8uc2VsZWN0ZWRGaWVsZCB9LFxyXG4gICAgICB3aWRnZXRzOiBnZW5lcmF0ZWRXaWRnZXRzLFxyXG4gICAgfTtcclxuXHJcbiAgICB0aGlzLmZvcm1Db21wUmVmID0gdGhpcy5jZlNlcnZpY2UuY3JlYXRlQ29tcG9uZW50KFxyXG4gICAgICB0aGlzLnZjUmVmISxcclxuICAgICAgU21hcnRmb3JtQ29tcG9uZW50LFxyXG4gICAgICBuZXcgTWFwPHN0cmluZywgYW55PihbWydzbWFydEZvcm0nLCB0aGlzLnNtYXJ0Rm9ybV1dKVxyXG4gICAgKTtcclxuXHJcbiAgICB0aGlzLnN1YnNjcmliZUVkaXRvckZvcm1DaGlsZHJlbkV2ZW50cygpO1xyXG4gIH1cclxuXHJcbiAgc2F2ZSgpOiB2b2lkIHtcclxuICAgIHRoaXMuZm9ybUNvbXBSZWY/Lmluc3RhbmNlPy5zdWJtaXRGb3JtKGZhbHNlKTtcclxuICAgIHRoaXMuc2VydmljZS5wZWZvcm1XaWRnZXRBY3Rpb24oe1xyXG4gICAgICBjb2RlOiAnVVBEQVRFX0ZJTFRFUl9FWFBSRVNTSU9OJyxcclxuICAgICAgcGFyYW1zOiB7XHJcbiAgICAgICAgbW9kZWw6IHRoaXMuc2VydmljZS5tb2RlbD8uc2VsZWN0ZWRGaWVsZCxcclxuICAgICAgfSxcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcmVtb3ZlKCk6IHZvaWQge1xyXG4gICAgdGhpcy5zZXJ2aWNlLnBlZm9ybVdpZGdldEFjdGlvbih7XHJcbiAgICAgIGNvZGU6ICdSRU1PVkVfRklMVEVSX0VYUFJFU1NJT04nLFxyXG4gICAgICBwYXJhbXM6IHtcclxuICAgICAgICBtb2RlbDogdGhpcy5zZXJ2aWNlLm1vZGVsPy5zZWxlY3RlZEZpZWxkLFxyXG4gICAgICB9LFxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBhc3luYyBzYXZlRmlsdGVyKCk6IFByb21pc2U8dm9pZD4ge1xyXG4gICAgdGhpcy5leHRyYWN0RmlsdGVyRmllbGRGcm9tRm9ybU1vZGVsKCk7XHJcbiAgICB0aGlzLnNlcnZpY2UucGVyZm9ybVVpQWN0aW9uUmVxdWVzdCh7XHJcbiAgICAgIGNvZGU6IEZpbHRlckV4cHJlc3Npb25CdWlsZGVyQXBpQWN0aW9ucy5TQVZFX0VYUFJFU1NJT05fRklFTERfTElTVCxcclxuICAgICAgcGFyYW1zOiB7XHJcbiAgICAgICAgbW9kZWw6IHRoaXMuc2VydmljZS5tb2RlbCEsXHJcbiAgICAgIH0sXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgY29uc3RydWN0Rm9ybVdpZGdldChcclxuICAgIGtleTogc3RyaW5nLFxyXG4gICAgbGFiZWw6IHN0cmluZyxcclxuICAgIHdpZGdldFR5cGU6IEZpbHRlckV4cHJlc3Npb25GaWVsZFdpZGdldFR5cGUsXHJcbiAgICBwb3NzaWJsZVZhbHVlczogVmFsdWVbXSxcclxuICAgIHZhbHVlOiBzdHJpbmcsXHJcbiAgICB0b29sYmFySWQ/OiBzdHJpbmdcclxuICApOiBTbWFydEZvcm1XaWRnZXQ8YW55PiB7XHJcbiAgICBsZXQgdHlwZTogYW55ID0gd2lkZ2V0VHlwZTtcclxuXHJcbiAgICBpZiAodHlwZSA9PT0gRmlsdGVyRXhwcmVzc2lvbkZpZWxkV2lkZ2V0VHlwZS5EQVRFKSB7XHJcbiAgICAgIHR5cGUgPSBTbWFydEZvcm1XaWRnZXRUeXBlLkRBVEVfUElDS0VSO1xyXG4gICAgfSBlbHNlIGlmICh0eXBlID09PSBGaWx0ZXJFeHByZXNzaW9uRmllbGRXaWRnZXRUeXBlLkRBVEVfVElNRSkge1xyXG4gICAgICB0eXBlID0gU21hcnRGb3JtV2lkZ2V0VHlwZS5EQVRFX1RJTUVfUElDS0VSO1xyXG4gICAgfVxyXG5cclxuICAgIGxldCB3aWRnZXQ6IFNtYXJ0Rm9ybVdpZGdldDxhbnk+ID0ge1xyXG4gICAgICBlcnJvcjogdW5kZWZpbmVkLFxyXG4gICAgICBrZXksXHJcbiAgICAgIGxhYmVsLFxyXG4gICAgICB0eXBlLFxyXG4gICAgICB2YWx1ZSxcclxuICAgICAgc2hvd0xhYmVsOiB0cnVlLFxyXG4gICAgICB2YWx1ZUxpc3Q6IHBvc3NpYmxlVmFsdWVzLm1hcCgodmFsdWU6IFZhbHVlKSA9PiB7XHJcbiAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgIGtleTogdmFsdWUub2JqZWN0VXJpID8gdmFsdWUub2JqZWN0VXJpIDogdmFsdWUuY29kZSEsXHJcbiAgICAgICAgICBsYWJlbDogdmFsdWUuZGlzcGxheVZhbHVlLFxyXG4gICAgICAgICAgdHlwZTogU21hcnRGb3JtV2lkZ2V0VHlwZS5JVEVNLFxyXG4gICAgICAgICAgdmFsdWU6IHZhbHVlLm9iamVjdFVyaSA/IHZhbHVlLm9iamVjdFVyaSA6IHZhbHVlLmNvZGUsXHJcbiAgICAgICAgfTtcclxuICAgICAgfSksXHJcbiAgICAgIHRvb2xiYXJJZCxcclxuICAgIH07XHJcblxyXG4gICAgcmV0dXJuIHdpZGdldDtcclxuICB9XHJcbn1cclxuIiwiPGRpdiBjbGFzcz1cInNtYXJ0LWZpbHRlci1lZGl0b3ItY29udGFpbmVyXCIgKm5nSWY9XCJzZXJ2aWNlLm1vZGVsXCI+XHJcbiAgPGgzIGNsYXNzPVwic21hcnQtZmlsdGVyLWVkaXRvci10aXRsZVwiPnt7IHNlcnZpY2UubW9kZWw/Lm1vZGVsPy5sYWJlbCB9fTwvaDM+XHJcblxyXG4gIDxkaXYgKm5nSWY9XCJzZXJ2aWNlLm1vZGVsPy50eXBlID09PSB0eXBlLlNJTVBMRTsgdGhlbiBzaW1wbGVGaWx0ZXI7IGVsc2UgY29tcGxleEZpbHRlclwiPjwvZGl2PlxyXG5cclxuICA8bmctdGVtcGxhdGUgI3NpbXBsZUZpbHRlcj5cclxuICAgIDxkaXYgY2xhc3M9XCJzbWFydC1maWx0ZXItZWRpdG9yLWV4cHJlc3Npb25zQ29udGFpbmVyXCI+XHJcbiAgICAgIDxuZy10ZW1wbGF0ZSAjc2ltcGxlRmlsdGVyRnJvbUNoaWxkPjwvbmctdGVtcGxhdGU+XHJcbiAgICAgIDwhLS0gI3NpbXBsZUZpbHRlckZyb21DaGlsZCBbc21hcnRGb3JtXT1cInNpbXBsZUZpbHRlckZvcm1cIj48L3NtYXJ0Zm9ybT4gLS0+XHJcbiAgICA8L2Rpdj5cclxuICA8L25nLXRlbXBsYXRlPlxyXG4gIDxuZy10ZW1wbGF0ZSAjY29tcGxleEZpbHRlcj5cclxuICAgIDxkaXYgY2xhc3M9XCJzbWFydC1maWx0ZXItZWRpdG9yLXVpQWN0aW9uc0JhclwiICpuZ0lmPVwiIXNlcnZpY2UubW9kZWw/LnJlYWRPbmx5XCI+XHJcbiAgICAgIDxzbWFydC11aS1hY3Rpb24tdG9vbGJhciBbdWlBY3Rpb25Nb2RlbHNdPVwidWlBY3Rpb25Nb2RlbHNcIj48L3NtYXJ0LXVpLWFjdGlvbi10b29sYmFyPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2XHJcbiAgICAgICpuZ0lmPVwiXHJcbiAgICAgICAgc2VydmljZT8ubW9kZWw/Lm1vZGVsPy53b3JrcGxhY2VMaXN0Py5maWx0ZXJzPy5sZW5ndGg7XHJcbiAgICAgICAgdGhlbiB3aXRoUGFyYW1ldGVycztcclxuICAgICAgICBlbHNlIHdpdGhvdXRQYXJhbWV0ZXJzXHJcbiAgICAgIFwiXHJcbiAgICA+PC9kaXY+XHJcbiAgICA8bmctdGVtcGxhdGUgI3dpdGhvdXRQYXJhbWV0ZXJzPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwic21hcnQtZmlsdGVyLWVkaXRvci13aXRob3V0UGFyYW1ldGVyc0NvbnRhaW5lclwiPlxyXG4gICAgICAgIDxzcGFuIGNsYXNzPVwibWF0LWJvZHlcIj4gTcOpZyBuaW5jcyBtZWdhZHZhIHBhcmFtw6l0ZXIgPC9zcGFuPlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICA8bmctdGVtcGxhdGUgI3dpdGhQYXJhbWV0ZXJzPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwic21hcnQtZmlsdGVyLWVkaXRvci13aXRoUGFyYW1ldGVyc0NvbnRhaW5lclwiPlxyXG4gICAgICAgIDxkaXZcclxuICAgICAgICAgIGNsYXNzPVwic21hcnQtZmlsdGVyLWVkaXRvci1leHByZXNzaW9uc0NvbnRhaW5lclwiXHJcbiAgICAgICAgICAqbmdJZj1cInNlcnZpY2U/Lm1vZGVsPy5tb2RlbD8ud29ya3BsYWNlTGlzdD8uZmlsdGVycz8ubGVuZ3RoXCJcclxuICAgICAgICA+XHJcbiAgICAgICAgICA8YXBwLWV4cHJlc3Npb24taXRlbXNcclxuICAgICAgICAgICAgW2l0ZW1zXT1cIihzZXJ2aWNlLm1vZGVsPy5tb2RlbD8ud29ya3BsYWNlTGlzdCkhLmZpbHRlcnNcIlxyXG4gICAgICAgICAgICBbc2VydmljZV09XCJzZXJ2aWNlXCJcclxuICAgICAgICAgID48L2FwcC1leHByZXNzaW9uLWl0ZW1zPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJzbWFydC1maWx0ZXItZWRpdG9yLWV4cHJlc3Npb25FZGl0b3JDb250YWluZXJcIj5cclxuICAgICAgICAgIDwhLS0gPHNtYXJ0Zm9ybSAjZm9ybSBbc21hcnRGb3JtXT1cInNtYXJ0Rm9ybVwiPjwvc21hcnRmb3JtPiAtLT5cclxuICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjZm9ybT48L25nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgPGRpdiAqbmdJZj1cInNtYXJ0Rm9ybVwiPlxyXG4gICAgICAgICAgICA8YnV0dG9uIChjbGljayk9XCJyZW1vdmUoKVwiIG1hdC1yYWlzZWQtYnV0dG9uIGNvbG9yPVwicHJpbWFyeVwiPlTDtnJsw6lzPC9idXR0b24+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L25nLXRlbXBsYXRlPlxyXG4gIDwvbmctdGVtcGxhdGU+XHJcbjwvZGl2PlxyXG4iXX0=
241
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnQtZmlsdGVyLWVkaXRvci1jb250ZW50LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NtYXJ0LW5nLWNsaWVudC9zcmMvbGliL3NtYXJ0LWZpbHRlci1lZGl0b3Ivc21hcnQtZmlsdGVyLWVkaXRvci1jb250ZW50L3NtYXJ0LWZpbHRlci1lZGl0b3ItY29udGVudC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zbWFydC1uZy1jbGllbnQvc3JjL2xpYi9zbWFydC1maWx0ZXItZWRpdG9yL3NtYXJ0LWZpbHRlci1lZGl0b3ItY29udGVudC9zbWFydC1maWx0ZXItZWRpdG9yLWNvbnRlbnQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVMLFNBQVMsRUFFVCxLQUFLLEVBR0wsU0FBUyxFQUVULGdCQUFnQixHQUNqQixNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQUUsT0FBTyxFQUFnQixTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFeEQsT0FBTyxFQUFFLCtCQUErQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDOUUsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0scURBQXFELENBQUM7QUFDL0YsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFFaEUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFLMUUsT0FBTyxFQUFFLHNDQUFzQyxFQUFFLE1BQU0sNkNBQTZDLENBQUM7QUFFckcsT0FBTyxFQUFFLGlDQUFpQyxFQUFFLE1BQU0sc0NBQXNDLENBQUM7Ozs7Ozs7O0FBUXpGLE1BQU0sT0FBTyxpQ0FBaUM7SUFrQjVDLFlBQ1UsYUFBK0MsRUFDL0MsU0FBa0M7UUFEbEMsa0JBQWEsR0FBYixhQUFhLENBQWtDO1FBQy9DLGNBQVMsR0FBVCxTQUFTLENBQXlCO1FBbkJwQyxjQUFTLEdBQWtCLElBQUksT0FBTyxFQUFFLENBQUM7UUFHakQsbUJBQWMsR0FBb0IsRUFBRSxDQUFDO1FBQ3JDLDZCQUF3QixHQUFvQixFQUFFLENBQUM7UUFXL0MsU0FBSSxHQUFHLHNDQUFzQyxDQUFDO0lBSzNDLENBQUM7SUFFSSxpQ0FBaUM7UUFDdkMsSUFBSSxDQUFDLGVBQWdCLENBQUMsUUFBUSxDQUFDLGFBQWMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUU7WUFDM0YsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1FBQ3BCLENBQUMsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLGVBQWdCLENBQUMsUUFBUSxDQUFDLHdCQUF3QixFQUFFLElBQUksQ0FDM0QsU0FBUyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FDMUIsQ0FBQyxTQUFTLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRTtZQUNyQixJQUFJLE1BQU0sQ0FBQyxJQUFJLEtBQUssV0FBVyxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsZ0JBQWdCLENBQUMsRUFBRTtnQkFDekUsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO2FBQ25CO1FBQ0gsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRU8saUNBQWlDO1FBQ3ZDLElBQUksQ0FBQyxXQUFXLEVBQUUsUUFBUyxDQUFDLGFBQWMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUU7WUFDeEYsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ2QsQ0FBQyxDQUFDLENBQUM7UUFFSCxJQUFJLENBQUMsV0FBWSxDQUFDLFFBQVMsQ0FBQyx3QkFBd0IsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FDN0YsQ0FBQyxNQUFnQyxFQUFFLEVBQUU7WUFDbkMsSUFBSSxNQUFNLENBQUMsR0FBRyxLQUFLLGlDQUFpQyxFQUFFO2dCQUNwRCxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7YUFDYjtRQUNILENBQUMsQ0FDRixDQUFDO0lBQ0osQ0FBQztJQUVELFFBQVEsS0FBVSxDQUFDO0lBQ25CLGVBQWU7UUFDYixJQUFJLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQztRQUN4RixJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxDQUFDO0lBQ3RCLENBQUM7SUFDRCxXQUFXO1FBQ1QsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUN0QixJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQzVCLENBQUM7SUFFRCxpQkFBaUI7UUFDZixJQUFJLENBQUMsaUJBQWlCLEVBQUUsS0FBSyxFQUFFLENBQUM7UUFDaEMsSUFBSSxDQUFDLGVBQWUsRUFBRSxPQUFPLEVBQUUsQ0FBQztRQUVoQyxJQUFJLENBQUMsSUFBSSxDQUFDLGlCQUFpQixFQUFFO1lBQzNCLE9BQU87U0FDUjtRQUVELElBQUksT0FBTyxHQUEyQixFQUFFLENBQUM7UUFFekMsSUFBSSxHQUF1QixDQUFDO1FBRTVCLElBQUksS0FBSyxHQUEyQixFQUFFLENBQUM7UUFFdkMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLGFBQWEsRUFBRSxPQUFPLENBQUMsT0FBTyxDQUN2RCxDQUFDLHFCQUE0QyxFQUFFLEtBQWEsRUFBRSxFQUFFO1lBQzlELEtBQUssQ0FBQyxLQUFLLENBQUMsR0FBRyxxQkFBcUIsQ0FBQztZQUVyQyxJQUNFLHFCQUFxQixDQUFDLFVBQVUsS0FBSywrQkFBK0IsQ0FBQyxpQkFBaUIsRUFDdEY7Z0JBQ0EsR0FBRyxHQUFHLEtBQUssR0FBRywwQ0FBMEMsQ0FBQztnQkFDekQsT0FBTyxDQUFDLElBQUksQ0FDVixJQUFJLENBQUMsbUJBQW1CLENBQ3RCLEdBQUcsRUFDSCxxQkFBcUIsQ0FBQyxNQUFPLEVBQzdCLCtCQUErQixDQUFDLGlCQUFpQixFQUNqRCxFQUFFLEVBQ0YscUJBQXFCLENBQUMsY0FBYyxFQUFFLFFBQVEsRUFBRSxlQUFlLElBQUksRUFBRSxFQUNyRSxxQkFBcUIsQ0FBQyxTQUFTLENBQ2hDLENBQ0YsQ0FBQztnQkFDRixPQUFPO2FBQ1I7WUFFRCxJQUFJLHFCQUFxQixDQUFDLFVBQVUsS0FBSyxpQkFBaUIsRUFBRTtnQkFDMUQsR0FBRyxHQUFHLEtBQUssR0FBRyx5Q0FBeUMsQ0FBQztnQkFDeEQsT0FBTyxDQUFDLElBQUksQ0FDVixJQUFJLENBQUMsbUJBQW1CLENBQ3RCLEdBQUcsRUFDSCxxQkFBcUIsQ0FBQyxNQUFPLEVBQzdCLHFCQUFxQixDQUFDLFVBQVUsSUFBSSwrQkFBK0IsQ0FBQyxVQUFVLEVBQzlFLHFCQUFxQixDQUFDLGNBQXlCLEVBQy9DLHFCQUFxQixDQUFDLGNBQWMsRUFBRSxRQUFRLEVBQUUsYUFBYSxJQUFJLEVBQUUsRUFDbkUscUJBQXFCLENBQUMsU0FBUyxDQUNoQyxDQUNGLENBQUM7Z0JBQ0YsT0FBTzthQUNSO1lBRUQsSUFBSSxxQkFBcUIsQ0FBQyxjQUFjLEVBQUUsZ0JBQWdCLEtBQUssU0FBUyxFQUFFO2dCQUN4RSxHQUFHLEdBQUcsS0FBSyxHQUFHLHdDQUF3QyxDQUFDO2dCQUN2RCxPQUFPLENBQUMsSUFBSSxDQUNWLElBQUksQ0FBQyxtQkFBbUIsQ0FDdEIsR0FBRyxFQUNILHFCQUFxQixDQUFDLE1BQU8sRUFDN0IscUJBQXFCLENBQUMsVUFBVSxJQUFJLCtCQUErQixDQUFDLFVBQVUsRUFDOUUscUJBQXFCLENBQUMsY0FBeUIsRUFDL0MscUJBQXFCLENBQUMsY0FBYyxFQUFFLFFBQVEsRUFBRSxhQUFhLElBQUksRUFBRSxFQUNuRSxxQkFBcUIsQ0FBQyxTQUFTLENBQ2hDLENBQ0YsQ0FBQztnQkFFRixHQUFHLEdBQUcsS0FBSyxHQUFHLHdDQUF3QyxDQUFDO2dCQUN2RCxPQUFPLENBQUMsSUFBSSxDQUNWLElBQUksQ0FBQyxtQkFBbUIsQ0FDdEIsR0FBRyxFQUNILHFCQUFxQixDQUFDLE1BQU8sRUFDN0IscUJBQXFCLENBQUMsVUFBVSxJQUFJLCtCQUErQixDQUFDLFVBQVUsRUFDOUUscUJBQXFCLENBQUMsY0FBeUIsRUFDL0MscUJBQXFCLENBQUMsY0FBYyxFQUFFLFFBQVEsRUFBRSxhQUFhLElBQUksRUFBRSxFQUNuRSxxQkFBcUIsQ0FBQyxTQUFTLENBQ2hDLENBQ0YsQ0FBQztnQkFDRixPQUFPO2FBQ1I7WUFFRCxJQUFJLHFCQUFxQixDQUFDLGNBQWMsRUFBRSxRQUFRLEVBQUU7Z0JBQ2xELElBQUksR0FBRyxLQUFLLEtBQUssR0FBRyx5Q0FBeUMsRUFBRTtvQkFDN0QsR0FBRyxHQUFHLEtBQUssR0FBRyx3Q0FBd0MsQ0FBQztpQkFDeEQ7Z0JBQ0QsT0FBTyxDQUFDLElBQUksQ0FDVixJQUFJLENBQUMsbUJBQW1CLENBQ3RCLEdBQUcsRUFDSCxxQkFBcUIsQ0FBQyxNQUFPLEVBQzdCLHFCQUFxQixDQUFDLFVBQVUsSUFBSSwrQkFBK0IsQ0FBQyxVQUFVLEVBQzlFLHFCQUFxQixDQUFDLGNBQXlCLEVBQy9DLHFCQUFxQixDQUFDLGNBQWMsRUFBRSxRQUFRLEVBQUUsYUFBYSxJQUFJLEVBQUUsRUFDbkUscUJBQXFCLENBQUMsU0FBUyxDQUNoQyxDQUNGLENBQUM7Z0JBQ0YsT0FBTzthQUNSO1lBQ0QsSUFBSSxxQkFBcUIsRUFBRSxjQUFjLEVBQUUsUUFBUSxFQUFFO2dCQUNuRCxJQUFJLEdBQUcsS0FBSyxLQUFLLEdBQUcsaUJBQWlCLEVBQUU7b0JBQ3JDLEdBQUcsR0FBRyxLQUFLLEdBQUcsd0NBQXdDLENBQUM7aUJBQ3hEO2dCQUNELE9BQU8sQ0FBQyxJQUFJLENBQ1YsSUFBSSxDQUFDLG1CQUFtQixDQUN0QixHQUFHLEVBQ0gscUJBQXFCLENBQUMsTUFBTyxFQUM3QixxQkFBcUIsQ0FBQyxVQUFVLElBQUksK0JBQStCLENBQUMsVUFBVSxFQUU5RSxxQkFBcUIsQ0FBQyxjQUF5QixFQUMvQyxxQkFBcUIsQ0FBQyxjQUFjLEVBQUUsUUFBUSxFQUFFLGFBQWEsSUFBSSxFQUFFLEVBQ25FLHFCQUFxQixDQUFDLFNBQVMsQ0FDaEMsQ0FDRixDQUFDO2dCQUNGLE9BQU87YUFDUjtRQUNILENBQUMsQ0FDRixDQUFDO1FBRUYsSUFBSSxTQUFTLEdBQUc7WUFDZCxTQUFTLEVBQUUsd0JBQXdCLENBQUMsR0FBRztZQUN2QyxjQUFjLEVBQUUsRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFO1lBQy9CLHFCQUFxQixFQUFFLElBQUk7WUFDM0IsY0FBYyxFQUFFLElBQUk7WUFDcEIsT0FBTztTQUNSLENBQUM7UUFFRixJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsZUFBZSxDQUNuRCxJQUFJLENBQUMsaUJBQWtCLEVBQ3ZCLGtCQUFrQixFQUNsQixJQUFJLEdBQUcsQ0FBYyxDQUFDLENBQUMsV0FBVyxFQUFFLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FDakQsQ0FBQztRQUVGLElBQUksQ0FBQyxpQ0FBaUMsRUFBRSxDQUFDO0lBQzNDLENBQUM7SUFFTywrQkFBK0I7UUFDckMsSUFBSSxZQUFZLEdBQUcsSUFBSSxDQUFDLGVBQWUsRUFBRSxRQUFRLEVBQUUsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUM7UUFDekYsSUFBSSxNQUFNLEdBQTRCLEVBQUUsQ0FBQztRQUV6QyxNQUFNLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEdBQVcsRUFBRSxFQUFFO1lBQ2hELE1BQU0sQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFDakMsQ0FBQyxDQUFDLENBQUM7UUFDSCxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQU0sQ0FBQyxLQUFNLENBQUMsYUFBYyxDQUFDLE9BQU8sR0FBRyxNQUFNLENBQUM7SUFDN0QsQ0FBQztJQUVELEtBQUs7UUFDSCxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLElBQUksS0FBSyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRTtZQUNqRCxJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztTQUMxQjthQUFNO1lBQ0wsSUFBSSxDQUFDLHVCQUF1QixFQUFFLENBQUM7WUFFL0IsSUFBSSxJQUFJLENBQUMsT0FBTyxFQUFFLEtBQUssRUFBRSxtQkFBbUIsRUFBRTtnQkFDNUMsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO2FBQ3RCO2lCQUFNO2dCQUNMLElBQUksQ0FBQyxTQUFTLEdBQUcsU0FBUyxDQUFDO2FBQzVCO1NBQ0Y7SUFDSCxDQUFDO0lBRUQsdUJBQXVCO1FBQ3JCLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsZUFBZSxFQUFFO1lBQ3ZDLElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsZUFBZSxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQWdCLEVBQUUsRUFBRTtnQkFDaEYsT0FBTztvQkFDTCxZQUFZLEVBQUUsSUFBSSxDQUFDLE9BQU87b0JBQzFCLFFBQVEsRUFBRSxNQUFNO2lCQUNqQixDQUFDO1lBQ0osQ0FBQyxDQUFDLENBQUM7U0FDSjtRQUVELElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsbUJBQW1CLEVBQUUsZUFBZSxFQUFFO1lBQzVELElBQUksQ0FBQyx3QkFBd0IsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxtQkFBbUIsQ0FBQyxlQUFlLENBQUMsR0FBRyxDQUN6RixDQUFDLFFBQWtCLEVBQUUsRUFBRTtnQkFDckIsSUFBSSxjQUFjLEdBQWEsRUFBRSxDQUFDO2dCQUNsQyxNQUFNLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQVcsRUFBRSxFQUFFO29CQUN2QyxjQUFzQixDQUFDLEdBQUcsQ0FBQyxHQUFJLFFBQWdCLENBQUMsR0FBRyxDQUFDLENBQUM7Z0JBQ3hELENBQUMsQ0FBQyxDQUFDO2dCQUNILGNBQWMsQ0FBQyxNQUFNLEdBQUc7b0JBQ3RCLEtBQUssRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxhQUFhO2lCQUN6QyxDQUFDO2dCQUNGLE9BQU87b0JBQ0wsWUFBWSxFQUFFLElBQUksQ0FBQyxPQUFPO29CQUMxQixRQUFRLEVBQUUsY0FBYztpQkFDekIsQ0FBQztZQUNKLENBQUMsQ0FDRixDQUFDO1NBQ0g7SUFDSCxDQUFDO0lBRUQsYUFBYTtRQUNYLElBQUksQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLENBQUM7UUFDcEIsSUFBSSxDQUFDLFdBQVcsRUFBRSxPQUFPLEVBQUUsQ0FBQztRQUU1QixJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRTtZQUNmLE9BQU87U0FDUjtRQUVELElBQUksZ0JBQWdCLEdBQTJCLElBQUksQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDO1lBQ3ZFLGlCQUFpQixFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLG1CQUFtQixFQUFFLFNBQVMsRUFBRSxPQUFPO1NBQy9FLENBQUMsQ0FBQztRQUVILElBQUksQ0FBQyxTQUFTLEdBQUc7WUFDZixTQUFTLEVBQUUsd0JBQXdCLENBQUMsR0FBRztZQUN2QyxjQUFjLEVBQUUsSUFBSTtZQUNwQixxQkFBcUIsRUFBRSxJQUFJO1lBQzNCLGNBQWMsRUFBRSxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxhQUFhLEVBQUU7WUFDM0QsT0FBTyxFQUFFLGdCQUFnQjtTQUMxQixDQUFDO1FBRUYsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLGVBQWUsQ0FDL0MsSUFBSSxDQUFDLEtBQU0sRUFDWCxrQkFBa0IsRUFDbEIsSUFBSSxHQUFHLENBQWMsQ0FBQyxDQUFDLFdBQVcsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUN0RCxDQUFDO1FBRUYsSUFBSSxDQUFDLGlDQUFpQyxFQUFFLENBQUM7SUFDM0MsQ0FBQztJQUVELElBQUk7UUFDRixJQUFJLENBQUMsV0FBVyxFQUFFLFFBQVEsRUFBRSxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDOUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxrQkFBa0IsQ0FBQztZQUM5QixJQUFJLEVBQUUsMEJBQTBCO1lBQ2hDLE1BQU0sRUFBRTtnQkFDTixLQUFLLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsYUFBYTthQUN6QztTQUNGLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxNQUFNO1FBQ0osSUFBSSxDQUFDLE9BQU8sQ0FBQyxrQkFBa0IsQ0FBQztZQUM5QixJQUFJLEVBQUUsMEJBQTBCO1lBQ2hDLE1BQU0sRUFBRTtnQkFDTixLQUFLLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsYUFBYTthQUN6QztTQUNGLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxLQUFLLENBQUMsVUFBVTtRQUNkLElBQUksQ0FBQywrQkFBK0IsRUFBRSxDQUFDO1FBQ3ZDLElBQUksQ0FBQyxPQUFPLENBQUMsc0JBQXNCLENBQUM7WUFDbEMsSUFBSSxFQUFFLGlDQUFpQyxDQUFDLDBCQUEwQjtZQUNsRSxNQUFNLEVBQUU7Z0JBQ04sS0FBSyxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBTTthQUMzQjtTQUNGLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFTyxtQkFBbUIsQ0FDekIsR0FBVyxFQUNYLEtBQWEsRUFDYixVQUEyQyxFQUMzQyxjQUF1QixFQUN2QixLQUFVLEVBQ1YsU0FBa0I7UUFFbEIsSUFBSSxJQUFJLEdBQVEsVUFBVSxDQUFDO1FBRTNCLElBQUksSUFBSSxLQUFLLCtCQUErQixDQUFDLElBQUksRUFBRTtZQUNqRCxJQUFJLEdBQUcsbUJBQW1CLENBQUMsV0FBVyxDQUFDO1NBQ3hDO2FBQU0sSUFBSSxJQUFJLEtBQUssK0JBQStCLENBQUMsU0FBUyxFQUFFO1lBQzdELElBQUksR0FBRyxtQkFBbUIsQ0FBQyxnQkFBZ0IsQ0FBQztTQUM3QztRQUVELElBQUksTUFBTSxHQUF5QjtZQUNqQyxLQUFLLEVBQUUsU0FBUztZQUNoQixHQUFHO1lBQ0gsS0FBSztZQUNMLElBQUk7WUFDSixLQUFLO1lBQ0wsU0FBUyxFQUFFLElBQUk7WUFDZixTQUFTLEVBQUUsY0FBYyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQVksRUFBRSxFQUFFO2dCQUM3QyxPQUFPO29CQUNMLEdBQUcsRUFBRSxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsSUFBSztvQkFDcEQsS0FBSyxFQUFFLEtBQUssQ0FBQyxZQUFZO29CQUN6QixJQUFJLEVBQUUsbUJBQW1CLENBQUMsSUFBSTtvQkFDOUIsS0FBSyxFQUFFLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJO2lCQUN0RCxDQUFDO1lBQ0osQ0FBQyxDQUFDO1lBQ0YsU0FBUztTQUNWLENBQUM7UUFFRixPQUFPLE1BQU0sQ0FBQztJQUNoQixDQUFDOzs4SEFoVlUsaUNBQWlDO2tIQUFqQyxpQ0FBaUMsZ0xBT2pCLGdCQUFnQixxSEFLQyxnQkFBZ0IsNkJDN0M5RCxvbEVBaURBOzJGRGhCYSxpQ0FBaUM7a0JBTDdDLFNBQVM7K0JBQ0UsZ0NBQWdDOzZKQU1qQyxPQUFPO3NCQUFmLEtBQUs7Z0JBTU4sS0FBSztzQkFESixTQUFTO3VCQUFDLE1BQU0sRUFBRSxFQUFFLElBQUksRUFBRSxnQkFBZ0IsRUFBRTtnQkFNN0MsaUJBQWlCO3NCQURoQixTQUFTO3VCQUFDLHVCQUF1QixFQUFFLEVBQUUsSUFBSSxFQUFFLGdCQUFnQixFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICBBZnRlclZpZXdJbml0LFxyXG4gIENvbXBvbmVudCxcclxuICBDb21wb25lbnRSZWYsXHJcbiAgSW5wdXQsXHJcbiAgT25EZXN0cm95LFxyXG4gIE9uSW5pdCxcclxuICBWaWV3Q2hpbGQsXHJcbiAgVmlld0NoaWxkcmVuLFxyXG4gIFZpZXdDb250YWluZXJSZWYsXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcblxyXG5pbXBvcnQgeyBTdWJqZWN0LCBTdWJzY3JpcHRpb24sIHRha2VVbnRpbCB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBDb21wb25lbnRGYWN0b3J5U2VydmljZSB9IGZyb20gJy4uLy4uL2NvbXBvbmVudC1mYWN0b3J5LXNlcnZpY2UvY29tcG9uZW50LWZhY3Rvcnktc2VydmljZS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgRmlsdGVyRXhwcmVzc2lvbkZpZWxkV2lkZ2V0VHlwZSB9IGZyb20gJy4uLy4uL3NtYXJ0LWZpbHRlci9wcm9qZWN0cyc7XHJcbmltcG9ydCB7IFNtYXJ0Rm9ybVdpZGdldERpcmVjdGlvbiB9IGZyb20gJy4uLy4uL3NtYXJ0LWZvcm0vYXBpL21vZGVsL3NtYXJ0Rm9ybVdpZGdldERpcmVjdGlvbic7XHJcbmltcG9ydCB7IFNtYXJ0Rm9ybVdpZGdldFR5cGUgfSBmcm9tICcuLi8uLi9zbWFydC1mb3JtL3Byb2plY3RzJztcclxuaW1wb3J0IHsgU21hcnRmb3JtTGF5b3V0RGVmaW5pdGlvblNlcnZpY2UgfSBmcm9tICcuLi8uLi9zbWFydC1mb3JtL3NlcnZpY2VzL3NtYXJ0Zm9ybS5sYXlvdXQtZGVmaW5pdGlvbi5zZXJ2aWNlJztcclxuaW1wb3J0IHsgU21hcnRmb3JtQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vc21hcnQtZm9ybS9zbWFydGZvcm0uY29tcG9uZW50JztcclxuaW1wb3J0IHsgU21hcnRGb3JtV2lkZ2V0IH0gZnJvbSAnLi4vLi4vc21hcnQtZm9ybS9zbWFydGZvcm0uZm9ybS1tb2RlbCc7XHJcbmltcG9ydCB7IFNtYXJ0Rm9ybSwgU29waGlzdGljYXRlZFZhbHVlQ2hhbmdlLCBWYWx1ZSB9IGZyb20gJy4uLy4uL3NtYXJ0LWZvcm0vc21hcnRmb3JtLm1vZGVsJztcclxuaW1wb3J0IHsgVWlBY3Rpb24gfSBmcm9tICcuLi8uLi92aWV3LWNvbnRleHQvYXBpL21vZGVsL3VpQWN0aW9uJztcclxuaW1wb3J0IHsgVWlBY3Rpb25Nb2RlbCB9IGZyb20gJy4uLy4uL3ZpZXctY29udGV4dC9zbWFydC11aS1hY3Rpb24vdWktYWN0aW9uLm1vZGVsJztcclxuaW1wb3J0IHsgRmlsdGVyRXhwcmVzc2lvbkJ1aWxkZXJVaU1vZGVsVHlwZUVudW0gfSBmcm9tICcuLi9hcGkvbW9kZWwvZmlsdGVyRXhwcmVzc2lvbkJ1aWxkZXJVaU1vZGVsJztcclxuaW1wb3J0IHsgRmlsdGVyRXhwcmVzc2lvbkZpZWxkIH0gZnJvbSAnLi4vYXBpL21vZGVsL2ZpbHRlckV4cHJlc3Npb25GaWVsZCc7XHJcbmltcG9ydCB7IEZpbHRlckV4cHJlc3Npb25CdWlsZGVyQXBpQWN0aW9ucyB9IGZyb20gJy4uL2ZpbHRlckV4cHJlc3Npb25CdWlsZGVyQXBpQWN0aW9ucyc7XHJcbmltcG9ydCB7IElTbWFydEZpbHRlckVkaXRvclNlcnZpY2UgfSBmcm9tICcuLi9zbWFydC1maWx0ZXItZWRpdG9yLnNlcnZpY2UnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdzbWFydC1maWx0ZXItZXhwcmVzc2lvbi1lZGl0b3InLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9zbWFydC1maWx0ZXItZWRpdG9yLWNvbnRlbnQuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL3NtYXJ0LWZpbHRlci1lZGl0b3ItY29udGVudC5jb21wb25lbnQuY3NzJ10sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBTbWFydEZpbHRlckVkaXRvckNvbnRlbnRDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIEFmdGVyVmlld0luaXQsIE9uRGVzdHJveSB7XHJcbiAgcHJpdmF0ZSBfZGVzdHJveSQ6IFN1YmplY3Q8dm9pZD4gPSBuZXcgU3ViamVjdCgpO1xyXG4gIEBJbnB1dCgpIHNlcnZpY2UhOiBJU21hcnRGaWx0ZXJFZGl0b3JTZXJ2aWNlO1xyXG5cclxuICB1aUFjdGlvbk1vZGVsczogVWlBY3Rpb25Nb2RlbFtdID0gW107XHJcbiAgZXhwcmVzc2lvblVpQWN0aW9uTW9kZWxzOiBVaUFjdGlvbk1vZGVsW10gPSBbXTtcclxuXHJcbiAgQFZpZXdDaGlsZCgnZm9ybScsIHsgcmVhZDogVmlld0NvbnRhaW5lclJlZiB9KVxyXG4gIHZjUmVmPzogVmlld0NvbnRhaW5lclJlZjtcclxuICBmb3JtQ29tcFJlZj86IENvbXBvbmVudFJlZjxTbWFydGZvcm1Db21wb25lbnQ+O1xyXG4gIHNtYXJ0Rm9ybT86IFNtYXJ0Rm9ybTtcclxuXHJcbiAgQFZpZXdDaGlsZCgnc2ltcGxlRmlsdGVyRnJvbUNoaWxkJywgeyByZWFkOiBWaWV3Q29udGFpbmVyUmVmIH0pXHJcbiAgc2ltcGxlRmlsdGVyVmNSZWY/OiBWaWV3Q29udGFpbmVyUmVmO1xyXG4gIHNpbXBsZUZpbHRlclJlZj86IENvbXBvbmVudFJlZjxTbWFydGZvcm1Db21wb25lbnQ+O1xyXG5cclxuICB0eXBlID0gRmlsdGVyRXhwcmVzc2lvbkJ1aWxkZXJVaU1vZGVsVHlwZUVudW07XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBsYXlvdXRTZXJ2aWNlOiBTbWFydGZvcm1MYXlvdXREZWZpbml0aW9uU2VydmljZSxcclxuICAgIHByaXZhdGUgY2ZTZXJ2aWNlOiBDb21wb25lbnRGYWN0b3J5U2VydmljZVxyXG4gICkge31cclxuXHJcbiAgcHJpdmF0ZSBzdWJzcmNpYmVTaW1wbGVGb3JtQ2hpbGRyZW5FdmVudHMoKTogdm9pZCB7XHJcbiAgICB0aGlzLnNpbXBsZUZpbHRlclJlZiEuaW5zdGFuY2Uub25CbHVyU3ViamVjdCEucGlwZSh0YWtlVW50aWwodGhpcy5fZGVzdHJveSQpKS5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICB0aGlzLnNhdmVGaWx0ZXIoKTtcclxuICAgIH0pO1xyXG4gICAgdGhpcy5zaW1wbGVGaWx0ZXJSZWYhLmluc3RhbmNlLnNvcGhpc3RpY2F0ZWRWYWx1ZUNoYW5nZT8ucGlwZShcclxuICAgICAgdGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3kkKVxyXG4gICAgKS5zdWJzY3JpYmUoKGNoYW5nZSkgPT4ge1xyXG4gICAgICBpZiAoY2hhbmdlLmtpbmQgPT09ICdzZWxlY3Rpb24nICYmICFjaGFuZ2Uua2V5LmluY2x1ZGVzKCdzZWxlY3RlZFZhbHVlcycpKSB7XHJcbiAgICAgICAgdGhpcy5zYXZlRmlsdGVyKCk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzdWJzY3JpYmVFZGl0b3JGb3JtQ2hpbGRyZW5FdmVudHMoKTogdm9pZCB7XHJcbiAgICB0aGlzLmZvcm1Db21wUmVmPy5pbnN0YW5jZSEub25CbHVyU3ViamVjdCEucGlwZSh0YWtlVW50aWwodGhpcy5fZGVzdHJveSQpKS5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICB0aGlzLnNhdmUoKTtcclxuICAgIH0pO1xyXG5cclxuICAgIHRoaXMuZm9ybUNvbXBSZWYhLmluc3RhbmNlIS5zb3BoaXN0aWNhdGVkVmFsdWVDaGFuZ2U/LnBpcGUodGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3kkKSkuc3Vic2NyaWJlKFxyXG4gICAgICAoY2hhbmdlOiBTb3BoaXN0aWNhdGVkVmFsdWVDaGFuZ2UpID0+IHtcclxuICAgICAgICBpZiAoY2hhbmdlLmtleSA9PT0gJ2V4cHJlc3Npb25EYXRhLmN1cnJlbnRPcGVyYXRpb24nKSB7XHJcbiAgICAgICAgICB0aGlzLnNhdmUoKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHt9XHJcbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5zZXJ2aWNlLm1vZGVsQ2hhbmdlZC5waXBlKHRha2VVbnRpbCh0aGlzLl9kZXN0cm95JCkpLnN1YnNjcmliZSgoKSA9PiB0aGlzLnNldFVwKCkpO1xyXG4gICAgdGhpcy5zZXJ2aWNlLmxvYWQoKTtcclxuICB9XHJcbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICB0aGlzLl9kZXN0cm95JC5uZXh0KCk7XHJcbiAgICB0aGlzLl9kZXN0cm95JC5jb21wbGV0ZSgpO1xyXG4gIH1cclxuXHJcbiAgc2V0dXBTaW1wbGVGaWx0ZXIoKTogdm9pZCB7XHJcbiAgICB0aGlzLnNpbXBsZUZpbHRlclZjUmVmPy5jbGVhcigpO1xyXG4gICAgdGhpcy5zaW1wbGVGaWx0ZXJSZWY/LmRlc3Ryb3koKTtcclxuXHJcbiAgICBpZiAoIXRoaXMuc2ltcGxlRmlsdGVyVmNSZWYpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIGxldCB3aWRnZXRzOiBTbWFydEZvcm1XaWRnZXQ8YW55PltdID0gW107XHJcblxyXG4gICAgbGV0IGtleTogc3RyaW5nIHwgdW5kZWZpbmVkO1xyXG5cclxuICAgIGxldCBtb2RlbDogeyBba2V5OiBzdHJpbmddOiBhbnkgfSA9IHt9O1xyXG5cclxuICAgIHRoaXMuc2VydmljZS5tb2RlbD8ubW9kZWw/LndvcmtwbGFjZUxpc3Q/LmZpbHRlcnMuZm9yRWFjaChcclxuICAgICAgKGZpbHRlckV4cHJlc3Npb25GaWVsZDogRmlsdGVyRXhwcmVzc2lvbkZpZWxkLCBpbmRleDogbnVtYmVyKSA9PiB7XHJcbiAgICAgICAgbW9kZWxbaW5kZXhdID0gZmlsdGVyRXhwcmVzc2lvbkZpZWxkO1xyXG5cclxuICAgICAgICBpZiAoXHJcbiAgICAgICAgICBmaWx0ZXJFeHByZXNzaW9uRmllbGQud2lkZ2V0VHlwZSA9PT0gRmlsdGVyRXhwcmVzc2lvbkZpZWxkV2lkZ2V0VHlwZS5URVhUX0ZJRUxEX0xPT0tVUFxyXG4gICAgICAgICkge1xyXG4gICAgICAgICAga2V5ID0gaW5kZXggKyAnLmV4cHJlc3Npb25EYXRhLm9wZXJhbmQyLnNlbGVjdGVkT2JqZWN0cyc7XHJcbiAgICAgICAgICB3aWRnZXRzLnB1c2goXHJcbiAgICAgICAgICAgIHRoaXMuY29uc3RydWN0Rm9ybVdpZGdldChcclxuICAgICAgICAgICAgICBrZXksXHJcbiAgICAgICAgICAgICAgZmlsdGVyRXhwcmVzc2lvbkZpZWxkLmxhYmVsMiEsXHJcbiAgICAgICAgICAgICAgRmlsdGVyRXhwcmVzc2lvbkZpZWxkV2lkZ2V0VHlwZS5URVhUX0ZJRUxEX0xPT0tVUCxcclxuICAgICAgICAgICAgICBbXSxcclxuICAgICAgICAgICAgICBmaWx0ZXJFeHByZXNzaW9uRmllbGQuZXhwcmVzc2lvbkRhdGE/Lm9wZXJhbmQyPy5zZWxlY3RlZE9iamVjdHMgPz8gW10sXHJcbiAgICAgICAgICAgICAgZmlsdGVyRXhwcmVzc2lvbkZpZWxkLnRvb2xiYXJJZFxyXG4gICAgICAgICAgICApXHJcbiAgICAgICAgICApO1xyXG4gICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKGZpbHRlckV4cHJlc3Npb25GaWVsZC53aWRnZXRUeXBlID09PSAnU0VMRUNUX01VTFRJUExFJykge1xyXG4gICAgICAgICAga2V5ID0gaW5kZXggKyAnLmV4cHJlc3Npb25EYXRhLm9wZXJhbmQyLnNlbGVjdGVkVmFsdWVzJztcclxuICAgICAgICAgIHdpZGdldHMucHVzaChcclxuICAgICAgICAgICAgdGhpcy5jb25zdHJ1Y3RGb3JtV2lkZ2V0KFxyXG4gICAgICAgICAgICAgIGtleSxcclxuICAgICAgICAgICAgICBmaWx0ZXJFeHByZXNzaW9uRmllbGQubGFiZWwyISxcclxuICAgICAgICAgICAgICBmaWx0ZXJFeHByZXNzaW9uRmllbGQud2lkZ2V0VHlwZSA/PyBGaWx0ZXJFeHByZXNzaW9uRmllbGRXaWRnZXRUeXBlLlRFWFRfRklFTEQsXHJcbiAgICAgICAgICAgICAgZmlsdGVyRXhwcmVzc2lvbkZpZWxkLnBvc3NpYmxlVmFsdWVzIGFzIFZhbHVlW10sXHJcbiAgICAgICAgICAgICAgZmlsdGVyRXhwcmVzc2lvbkZpZWxkLmV4cHJlc3Npb25EYXRhPy5vcGVyYW5kMj8udmFsdWVBc1N0cmluZyA/PyAnJyxcclxuICAgICAgICAgICAgICBmaWx0ZXJFeHByZXNzaW9uRmllbGQudG9vbGJhcklkXHJcbiAgICAgICAgICAgIClcclxuICAgICAgICAgICk7XHJcbiAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAoZmlsdGVyRXhwcmVzc2lvbkZpZWxkLmV4cHJlc3Npb25EYXRhPy5jdXJyZW50T3BlcmF0aW9uID09PSAnQkVUV0VFTicpIHtcclxuICAgICAgICAgIGtleSA9IGluZGV4ICsgJy5leHByZXNzaW9uRGF0YS5vcGVyYW5kMi52YWx1ZUFzU3RyaW5nJztcclxuICAgICAgICAgIHdpZGdldHMucHVzaChcclxuICAgICAgICAgICAgdGhpcy5jb25zdHJ1Y3RGb3JtV2lkZ2V0KFxyXG4gICAgICAgICAgICAgIGtleSxcclxuICAgICAgICAgICAgICBmaWx0ZXJFeHByZXNzaW9uRmllbGQubGFiZWwyISxcclxuICAgICAgICAgICAgICBmaWx0ZXJFeHByZXNzaW9uRmllbGQud2lkZ2V0VHlwZSA/PyBGaWx0ZXJFeHByZXNzaW9uRmllbGRXaWRnZXRUeXBlLlRFWFRfRklFTEQsXHJcbiAgICAgICAgICAgICAgZmlsdGVyRXhwcmVzc2lvbkZpZWxkLnBvc3NpYmxlVmFsdWVzIGFzIFZhbHVlW10sXHJcbiAgICAgICAgICAgICAgZmlsdGVyRXhwcmVzc2lvbkZpZWxkLmV4cHJlc3Npb25EYXRhPy5vcGVyYW5kMj8udmFsdWVBc1N0cmluZyA/PyAnJyxcclxuICAgICAgICAgICAgICBmaWx0ZXJFeHByZXNzaW9uRmllbGQudG9vbGJhcklkXHJcbiAgICAgICAgICAgIClcclxuICAgICAgICAgICk7XHJcblxyXG4gICAgICAgICAga2V5ID0gaW5kZXggKyAnLmV4cHJlc3Npb25EYXRhLm9wZXJhbmQzLnZhbHVlQXNTdHJpbmcnO1xyXG4gICAgICAgICAgd2lkZ2V0cy5wdXNoKFxyXG4gICAgICAgICAgICB0aGlzLmNvbnN0cnVjdEZvcm1XaWRnZXQoXHJcbiAgICAgICAgICAgICAga2V5LFxyXG4gICAgICAgICAgICAgIGZpbHRlckV4cHJlc3Npb25GaWVsZC5sYWJlbDMhLFxyXG4gICAgICAgICAgICAgIGZpbHRlckV4cHJlc3Npb25GaWVsZC53aWRnZXRUeXBlID8/IEZpbHRlckV4cHJlc3Npb25GaWVsZFdpZGdldFR5cGUuVEVYVF9GSUVMRCxcclxuICAgICAgICAgICAgICBmaWx0ZXJFeHByZXNzaW9uRmllbGQucG9zc2libGVWYWx1ZXMgYXMgVmFsdWVbXSxcclxuICAgICAgICAgICAgICBmaWx0ZXJFeHByZXNzaW9uRmllbGQuZXhwcmVzc2lvbkRhdGE/Lm9wZXJhbmQzPy52YWx1ZUFzU3RyaW5nID8/ICcnLFxyXG4gICAgICAgICAgICAgIGZpbHRlckV4cHJlc3Npb25GaWVsZC50b29sYmFySWRcclxuICAgICAgICAgICAgKVxyXG4gICAgICAgICAgKTtcclxuICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmIChmaWx0ZXJFeHByZXNzaW9uRmllbGQuZXhwcmVzc2lvbkRhdGE/Lm9wZXJhbmQyKSB7XHJcbiAgICAgICAgICBpZiAoa2V5ICE9PSBpbmRleCArICcuZXhwcmVzc2lvbkRhdGEub3BlcmFuZDIuc2VsZWN0ZWRWYWx1ZXMnKSB7XHJcbiAgICAgICAgICAgIGtleSA9IGluZGV4ICsgJy5leHByZXNzaW9uRGF0YS5vcGVyYW5kMi52YWx1ZUFzU3RyaW5nJztcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIHdpZGdldHMucHVzaChcclxuICAgICAgICAgICAgdGhpcy5jb25zdHJ1Y3RGb3JtV2lkZ2V0KFxyXG4gICAgICAgICAgICAgIGtleSxcclxuICAgICAgICAgICAgICBmaWx0ZXJFeHByZXNzaW9uRmllbGQubGFiZWwyISxcclxuICAgICAgICAgICAgICBmaWx0ZXJFeHByZXNzaW9uRmllbGQud2lkZ2V0VHlwZSA/PyBGaWx0ZXJFeHByZXNzaW9uRmllbGRXaWRnZXRUeXBlLlRFWFRfRklFTEQsXHJcbiAgICAgICAgICAgICAgZmlsdGVyRXhwcmVzc2lvbkZpZWxkLnBvc3NpYmxlVmFsdWVzIGFzIFZhbHVlW10sXHJcbiAgICAgICAgICAgICAgZmlsdGVyRXhwcmVzc2lvbkZpZWxkLmV4cHJlc3Npb25EYXRhPy5vcGVyYW5kMj8udmFsdWVBc1N0cmluZyA/PyAnJyxcclxuICAgICAgICAgICAgICBmaWx0ZXJFeHByZXNzaW9uRmllbGQudG9vbGJhcklkXHJcbiAgICAgICAgICAgIClcclxuICAgICAgICAgICk7XHJcbiAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChmaWx0ZXJFeHByZXNzaW9uRmllbGQ/LmV4cHJlc3Npb25EYXRhPy5vcGVyYW5kMykge1xyXG4gICAgICAgICAgaWYgKGtleSAhPT0gaW5kZXggKyAnLnNlbGVjdGVkVmFsdWVzJykge1xyXG4gICAgICAgICAgICBrZXkgPSBpbmRleCArICcuZXhwcmVzc2lvbkRhdGEub3BlcmFuZDMudmFsdWVBc1N0cmluZyc7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICB3aWRnZXRzLnB1c2goXHJcbiAgICAgICAgICAgIHRoaXMuY29uc3RydWN0Rm9ybVdpZGdldChcclxuICAgICAgICAgICAgICBrZXksXHJcbiAgICAgICAgICAgICAgZmlsdGVyRXhwcmVzc2lvbkZpZWxkLmxhYmVsMyEsXHJcbiAgICAgICAgICAgICAgZmlsdGVyRXhwcmVzc2lvbkZpZWxkLndpZGdldFR5cGUgPz8gRmlsdGVyRXhwcmVzc2lvbkZpZWxkV2lkZ2V0VHlwZS5URVhUX0ZJRUxELFxyXG5cclxuICAgICAgICAgICAgICBmaWx0ZXJFeHByZXNzaW9uRmllbGQucG9zc2libGVWYWx1ZXMgYXMgVmFsdWVbXSxcclxuICAgICAgICAgICAgICBmaWx0ZXJFeHByZXNzaW9uRmllbGQuZXhwcmVzc2lvbkRhdGE/Lm9wZXJhbmQzPy52YWx1ZUFzU3RyaW5nID8/ICcnLFxyXG4gICAgICAgICAgICAgIGZpbHRlckV4cHJlc3Npb25GaWVsZC50b29sYmFySWRcclxuICAgICAgICAgICAgKVxyXG4gICAgICAgICAgKTtcclxuICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICk7XHJcblxyXG4gICAgbGV0IHNtYXJ0Rm9ybSA9IHtcclxuICAgICAgZGlyZWN0aW9uOiBTbWFydEZvcm1XaWRnZXREaXJlY3Rpb24uUk9XLFxyXG4gICAgICBjb21wb25lbnRNb2RlbDogeyBkYXRhOiBtb2RlbCB9LFxyXG4gICAgICB1c2VPblZhbHVlQ2hhbmdlRXZlbnQ6IHRydWUsXHJcbiAgICAgIHVzZU9uQmx1ckV2ZW50OiB0cnVlLFxyXG4gICAgICB3aWRnZXRzLFxyXG4gICAgfTtcclxuXHJcbiAgICB0aGlzLnNpbXBsZUZpbHRlclJlZiA9IHRoaXMuY2ZTZXJ2aWNlLmNyZWF0ZUNvbXBvbmVudChcclxuICAgICAgdGhpcy5zaW1wbGVGaWx0ZXJWY1JlZiEsXHJcbiAgICAgIFNtYXJ0Zm9ybUNvbXBvbmVudCxcclxuICAgICAgbmV3IE1hcDxzdHJpbmcsIGFueT4oW1snc21hcnRGb3JtJywgc21hcnRGb3JtXV0pXHJcbiAgICApO1xyXG5cclxuICAgIHRoaXMuc3Vic3JjaWJlU2ltcGxlRm9ybUNoaWxkcmVuRXZlbnRzKCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGV4dHJhY3RGaWx0ZXJGaWVsZEZyb21Gb3JtTW9kZWwoKTogdm9pZCB7XHJcbiAgICBsZXQgc2ltcGxlRmlsdGVyID0gdGhpcy5zaW1wbGVGaWx0ZXJSZWY/Lmluc3RhbmNlPy5zdWJtaXRGb3JtKGZhbHNlKS5jb21wb25lbnRNb2RlbC5kYXRhO1xyXG4gICAgbGV0IHJlc3VsdDogRmlsdGVyRXhwcmVzc2lvbkZpZWxkW10gPSBbXTtcclxuXHJcbiAgICBPYmplY3Qua2V5cyhzaW1wbGVGaWx0ZXIpLmZvckVhY2goKGtleTogc3RyaW5nKSA9PiB7XHJcbiAgICAgIHJlc3VsdC5wdXNoKHNpbXBsZUZpbHRlcltrZXldKTtcclxuICAgIH0pO1xyXG4gICAgdGhpcy5zZXJ2aWNlLm1vZGVsIS5tb2RlbCEud29ya3BsYWNlTGlzdCEuZmlsdGVycyA9IHJlc3VsdDtcclxuICB9XHJcblxyXG4gIHNldFVwKCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuc2VydmljZS5tb2RlbD8udHlwZSA9PT0gdGhpcy50eXBlLlNJTVBMRSkge1xyXG4gICAgICB0aGlzLnNldHVwU2ltcGxlRmlsdGVyKCk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmNvbnN0cnVjdFVpQWN0aW9uTW9kZWxzKCk7XHJcblxyXG4gICAgICBpZiAodGhpcy5zZXJ2aWNlPy5tb2RlbD8uc2VsZWN0ZWRGaWVsZEVkaXRvcikge1xyXG4gICAgICAgIHRoaXMuY29uc3RydWN0Rm9ybSgpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMuc21hcnRGb3JtID0gdW5kZWZpbmVkO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBjb25zdHJ1Y3RVaUFjdGlvbk1vZGVscygpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLnNlcnZpY2UubW9kZWw/LnBvc3NpYmxlQWN0aW9ucykge1xyXG4gICAgICB0aGlzLnVpQWN0aW9uTW9kZWxzID0gdGhpcy5zZXJ2aWNlLm1vZGVsLnBvc3NpYmxlQWN0aW9ucy5tYXAoKGFjdGlvbjogVWlBY3Rpb24pID0+IHtcclxuICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgc2VydmljZVRvVXNlOiB0aGlzLnNlcnZpY2UsXHJcbiAgICAgICAgICB1aUFjdGlvbjogYWN0aW9uLFxyXG4gICAgICAgIH07XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLnNlcnZpY2UubW9kZWw/LnNlbGVjdGVkRmllbGRFZGl0b3I/LnBvc3NpYmxlQWN0aW9ucykge1xyXG4gICAgICB0aGlzLmV4cHJlc3Npb25VaUFjdGlvbk1vZGVscyA9IHRoaXMuc2VydmljZS5tb2RlbD8uc2VsZWN0ZWRGaWVsZEVkaXRvci5wb3NzaWJsZUFjdGlvbnMubWFwKFxyXG4gICAgICAgICh1aUFjdGlvbjogVWlBY3Rpb24pID0+IHtcclxuICAgICAgICAgIGxldCBjb3BpZWRVaUFjdGlvbjogVWlBY3Rpb24gPSB7fTtcclxuICAgICAgICAgIE9iamVjdC5rZXlzKHVpQWN0aW9uKS5tYXAoKGtleTogc3RyaW5nKSA9PiB7XHJcbiAgICAgICAgICAgIChjb3BpZWRVaUFjdGlvbiBhcyBhbnkpW2tleV0gPSAodWlBY3Rpb24gYXMgYW55KVtrZXldO1xyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgICBjb3BpZWRVaUFjdGlvbi5wYXJhbXMgPSB7XHJcbiAgICAgICAgICAgIGZpZWxkOiB0aGlzLnNlcnZpY2UubW9kZWw/LnNlbGVjdGVkRmllbGQsXHJcbiAgICAgICAgICB9O1xyXG4gICAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgc2VydmljZVRvVXNlOiB0aGlzLnNlcnZpY2UsXHJcbiAgICAgICAgICAgIHVpQWN0aW9uOiBjb3BpZWRVaUFjdGlvbixcclxuICAgICAgICAgIH07XHJcbiAgICAgICAgfVxyXG4gICAgICApO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgY29uc3RydWN0Rm9ybSgpOiB2b2lkIHtcclxuICAgIHRoaXMudmNSZWY/LmNsZWFyKCk7XHJcbiAgICB0aGlzLmZvcm1Db21wUmVmPy5kZXN0cm95KCk7XHJcblxyXG4gICAgaWYgKCF0aGlzLnZjUmVmKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICBsZXQgZ2VuZXJhdGVkV2lkZ2V0czogU21hcnRGb3JtV2lkZ2V0PGFueT5bXSA9IHRoaXMubGF5b3V0U2VydmljZS5yZW5kZXIoe1xyXG4gICAgICBsYXlvdXREZWZpbml0aW9uczogdGhpcy5zZXJ2aWNlLm1vZGVsPy5zZWxlY3RlZEZpZWxkRWRpdG9yPy5sYXlvdXREZWY/LndpZGdldHMsXHJcbiAgICB9KTtcclxuXHJcbiAgICB0aGlzLnNtYXJ0Rm9ybSA9IHtcclxuICAgICAgZGlyZWN0aW9uOiBTbWFydEZvcm1XaWRnZXREaXJlY3Rpb24uUk9XLFxyXG4gICAgICB1c2VPbkJsdXJFdmVudDogdHJ1ZSxcclxuICAgICAgdXNlT25WYWx1ZUNoYW5nZUV2ZW50OiB0cnVlLFxyXG4gICAgICBjb21wb25lbnRNb2RlbDogeyBkYXRhOiB0aGlzLnNlcnZpY2UubW9kZWw/LnNlbGVjdGVkRmllbGQgfSxcclxuICAgICAgd2lkZ2V0czogZ2VuZXJhdGVkV2lkZ2V0cyxcclxuICAgIH07XHJcblxyXG4gICAgdGhpcy5mb3JtQ29tcFJlZiA9IHRoaXMuY2ZTZXJ2aWNlLmNyZWF0ZUNvbXBvbmVudChcclxuICAgICAgdGhpcy52Y1JlZiEsXHJcbiAgICAgIFNtYXJ0Zm9ybUNvbXBvbmVudCxcclxuICAgICAgbmV3IE1hcDxzdHJpbmcsIGFueT4oW1snc21hcnRGb3JtJywgdGhpcy5zbWFydEZvcm1dXSlcclxuICAgICk7XHJcblxyXG4gICAgdGhpcy5zdWJzY3JpYmVFZGl0b3JGb3JtQ2hpbGRyZW5FdmVudHMoKTtcclxuICB9XHJcblxyXG4gIHNhdmUoKTogdm9pZCB7XHJcbiAgICB0aGlzLmZvcm1Db21wUmVmPy5pbnN0YW5jZT8uc3VibWl0Rm9ybShmYWxzZSk7XHJcbiAgICB0aGlzLnNlcnZpY2UucGVmb3JtV2lkZ2V0QWN0aW9uKHtcclxuICAgICAgY29kZTogJ1VQREFURV9GSUxURVJfRVhQUkVTU0lPTicsXHJcbiAgICAgIHBhcmFtczoge1xyXG4gICAgICAgIG1vZGVsOiB0aGlzLnNlcnZpY2UubW9kZWw/LnNlbGVjdGVkRmllbGQsXHJcbiAgICAgIH0sXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHJlbW92ZSgpOiB2b2lkIHtcclxuICAgIHRoaXMuc2VydmljZS5wZWZvcm1XaWRnZXRBY3Rpb24oe1xyXG4gICAgICBjb2RlOiAnUkVNT1ZFX0ZJTFRFUl9FWFBSRVNTSU9OJyxcclxuICAgICAgcGFyYW1zOiB7XHJcbiAgICAgICAgbW9kZWw6IHRoaXMuc2VydmljZS5tb2RlbD8uc2VsZWN0ZWRGaWVsZCxcclxuICAgICAgfSxcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgYXN5bmMgc2F2ZUZpbHRlcigpOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgIHRoaXMuZXh0cmFjdEZpbHRlckZpZWxkRnJvbUZvcm1Nb2RlbCgpO1xyXG4gICAgdGhpcy5zZXJ2aWNlLnBlcmZvcm1VaUFjdGlvblJlcXVlc3Qoe1xyXG4gICAgICBjb2RlOiBGaWx0ZXJFeHByZXNzaW9uQnVpbGRlckFwaUFjdGlvbnMuU0FWRV9FWFBSRVNTSU9OX0ZJRUxEX0xJU1QsXHJcbiAgICAgIHBhcmFtczoge1xyXG4gICAgICAgIG1vZGVsOiB0aGlzLnNlcnZpY2UubW9kZWwhLFxyXG4gICAgICB9LFxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGNvbnN0cnVjdEZvcm1XaWRnZXQoXHJcbiAgICBrZXk6IHN0cmluZyxcclxuICAgIGxhYmVsOiBzdHJpbmcsXHJcbiAgICB3aWRnZXRUeXBlOiBGaWx0ZXJFeHByZXNzaW9uRmllbGRXaWRnZXRUeXBlLFxyXG4gICAgcG9zc2libGVWYWx1ZXM6IFZhbHVlW10sXHJcbiAgICB2YWx1ZTogYW55LFxyXG4gICAgdG9vbGJhcklkPzogc3RyaW5nXHJcbiAgKTogU21hcnRGb3JtV2lkZ2V0PGFueT4ge1xyXG4gICAgbGV0IHR5cGU6IGFueSA9IHdpZGdldFR5cGU7XHJcblxyXG4gICAgaWYgKHR5cGUgPT09IEZpbHRlckV4cHJlc3Npb25GaWVsZFdpZGdldFR5cGUuREFURSkge1xyXG4gICAgICB0eXBlID0gU21hcnRGb3JtV2lkZ2V0VHlwZS5EQVRFX1BJQ0tFUjtcclxuICAgIH0gZWxzZSBpZiAodHlwZSA9PT0gRmlsdGVyRXhwcmVzc2lvbkZpZWxkV2lkZ2V0VHlwZS5EQVRFX1RJTUUpIHtcclxuICAgICAgdHlwZSA9IFNtYXJ0Rm9ybVdpZGdldFR5cGUuREFURV9USU1FX1BJQ0tFUjtcclxuICAgIH1cclxuXHJcbiAgICBsZXQgd2lkZ2V0OiBTbWFydEZvcm1XaWRnZXQ8YW55PiA9IHtcclxuICAgICAgZXJyb3I6IHVuZGVmaW5lZCxcclxuICAgICAga2V5LFxyXG4gICAgICBsYWJlbCxcclxuICAgICAgdHlwZSxcclxuICAgICAgdmFsdWUsXHJcbiAgICAgIHNob3dMYWJlbDogdHJ1ZSxcclxuICAgICAgdmFsdWVMaXN0OiBwb3NzaWJsZVZhbHVlcy5tYXAoKHZhbHVlOiBWYWx1ZSkgPT4ge1xyXG4gICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICBrZXk6IHZhbHVlLm9iamVjdFVyaSA/IHZhbHVlLm9iamVjdFVyaSA6IHZhbHVlLmNvZGUhLFxyXG4gICAgICAgICAgbGFiZWw6IHZhbHVlLmRpc3BsYXlWYWx1ZSxcclxuICAgICAgICAgIHR5cGU6IFNtYXJ0Rm9ybVdpZGdldFR5cGUuSVRFTSxcclxuICAgICAgICAgIHZhbHVlOiB2YWx1ZS5vYmplY3RVcmkgPyB2YWx1ZS5vYmplY3RVcmkgOiB2YWx1ZS5jb2RlLFxyXG4gICAgICAgIH07XHJcbiAgICAgIH0pLFxyXG4gICAgICB0b29sYmFySWQsXHJcbiAgICB9O1xyXG5cclxuICAgIHJldHVybiB3aWRnZXQ7XHJcbiAgfVxyXG59XHJcbiIsIjxkaXYgY2xhc3M9XCJzbWFydC1maWx0ZXItZWRpdG9yLWNvbnRhaW5lclwiICpuZ0lmPVwic2VydmljZS5tb2RlbFwiPlxyXG4gIDxoMyBjbGFzcz1cInNtYXJ0LWZpbHRlci1lZGl0b3ItdGl0bGVcIj57eyBzZXJ2aWNlLm1vZGVsPy5tb2RlbD8ubGFiZWwgfX08L2gzPlxyXG5cclxuICA8ZGl2ICpuZ0lmPVwic2VydmljZS5tb2RlbD8udHlwZSA9PT0gdHlwZS5TSU1QTEU7IHRoZW4gc2ltcGxlRmlsdGVyOyBlbHNlIGNvbXBsZXhGaWx0ZXJcIj48L2Rpdj5cclxuXHJcbiAgPG5nLXRlbXBsYXRlICNzaW1wbGVGaWx0ZXI+XHJcbiAgICA8ZGl2IGNsYXNzPVwic21hcnQtZmlsdGVyLWVkaXRvci1leHByZXNzaW9uc0NvbnRhaW5lclwiPlxyXG4gICAgICA8bmctdGVtcGxhdGUgI3NpbXBsZUZpbHRlckZyb21DaGlsZD48L25nLXRlbXBsYXRlPlxyXG4gICAgICA8IS0tICNzaW1wbGVGaWx0ZXJGcm9tQ2hpbGQgW3NtYXJ0Rm9ybV09XCJzaW1wbGVGaWx0ZXJGb3JtXCI+PC9zbWFydGZvcm0+IC0tPlxyXG4gICAgPC9kaXY+XHJcbiAgPC9uZy10ZW1wbGF0ZT5cclxuICA8bmctdGVtcGxhdGUgI2NvbXBsZXhGaWx0ZXI+XHJcbiAgICA8ZGl2IGNsYXNzPVwic21hcnQtZmlsdGVyLWVkaXRvci11aUFjdGlvbnNCYXJcIiAqbmdJZj1cIiFzZXJ2aWNlLm1vZGVsPy5yZWFkT25seVwiPlxyXG4gICAgICA8c21hcnQtdWktYWN0aW9uLXRvb2xiYXIgW3VpQWN0aW9uTW9kZWxzXT1cInVpQWN0aW9uTW9kZWxzXCI+PC9zbWFydC11aS1hY3Rpb24tdG9vbGJhcj5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdlxyXG4gICAgICAqbmdJZj1cIlxyXG4gICAgICAgIHNlcnZpY2U/Lm1vZGVsPy5tb2RlbD8ud29ya3BsYWNlTGlzdD8uZmlsdGVycz8ubGVuZ3RoO1xyXG4gICAgICAgIHRoZW4gd2l0aFBhcmFtZXRlcnM7XHJcbiAgICAgICAgZWxzZSB3aXRob3V0UGFyYW1ldGVyc1xyXG4gICAgICBcIlxyXG4gICAgPjwvZGl2PlxyXG4gICAgPG5nLXRlbXBsYXRlICN3aXRob3V0UGFyYW1ldGVycz5cclxuICAgICAgPGRpdiBjbGFzcz1cInNtYXJ0LWZpbHRlci1lZGl0b3Itd2l0aG91dFBhcmFtZXRlcnNDb250YWluZXJcIj5cclxuICAgICAgICA8c3BhbiBjbGFzcz1cIm1hdC1ib2R5XCI+IE3DqWcgbmluY3MgbWVnYWR2YSBwYXJhbcOpdGVyIDwvc3Bhbj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgPG5nLXRlbXBsYXRlICN3aXRoUGFyYW1ldGVycz5cclxuICAgICAgPGRpdiBjbGFzcz1cInNtYXJ0LWZpbHRlci1lZGl0b3Itd2l0aFBhcmFtZXRlcnNDb250YWluZXJcIj5cclxuICAgICAgICA8ZGl2XHJcbiAgICAgICAgICBjbGFzcz1cInNtYXJ0LWZpbHRlci1lZGl0b3ItZXhwcmVzc2lvbnNDb250YWluZXJcIlxyXG4gICAgICAgICAgKm5nSWY9XCJzZXJ2aWNlPy5tb2RlbD8ubW9kZWw/LndvcmtwbGFjZUxpc3Q/LmZpbHRlcnM/Lmxlbmd0aFwiXHJcbiAgICAgICAgPlxyXG4gICAgICAgICAgPGFwcC1leHByZXNzaW9uLWl0ZW1zXHJcbiAgICAgICAgICAgIFtpdGVtc109XCIoc2VydmljZS5tb2RlbD8ubW9kZWw/LndvcmtwbGFjZUxpc3QpIS5maWx0ZXJzXCJcclxuICAgICAgICAgICAgW3NlcnZpY2VdPVwic2VydmljZVwiXHJcbiAgICAgICAgICA+PC9hcHAtZXhwcmVzc2lvbi1pdGVtcz5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwic21hcnQtZmlsdGVyLWVkaXRvci1leHByZXNzaW9uRWRpdG9yQ29udGFpbmVyXCI+XHJcbiAgICAgICAgICA8IS0tIDxzbWFydGZvcm0gI2Zvcm0gW3NtYXJ0Rm9ybV09XCJzbWFydEZvcm1cIj48L3NtYXJ0Zm9ybT4gLS0+XHJcbiAgICAgICAgICA8bmctdGVtcGxhdGUgI2Zvcm0+PC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgIDxkaXYgKm5nSWY9XCJzbWFydEZvcm1cIj5cclxuICAgICAgICAgICAgPGJ1dHRvbiAoY2xpY2spPVwicmVtb3ZlKClcIiBtYXQtcmFpc2VkLWJ1dHRvbiBjb2xvcj1cInByaW1hcnlcIj5Uw7ZybMOpczwvYnV0dG9uPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9uZy10ZW1wbGF0ZT5cclxuICA8L25nLXRlbXBsYXRlPlxyXG48L2Rpdj5cclxuIl19
@@ -8,4 +8,4 @@ export * from './smartMatrixModel';
8
8
  export * from './smartWidgetDefinition';
9
9
  export * from './smartWidgetHint';
10
10
  export * from './valueChangeMode';
11
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kZWxzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc21hcnQtbmctY2xpZW50L3NyYy9saWIvc21hcnQtZm9ybS9hcGkvbW9kZWwvbW9kZWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsbUJBQW1CLENBQUM7QUFDbEMsY0FBYyx1QkFBdUIsQ0FBQztBQUN0QyxjQUFjLHNCQUFzQixDQUFDO0FBQ3JDLGNBQWMsNEJBQTRCLENBQUM7QUFDM0MsY0FBYyx1QkFBdUIsQ0FBQztBQUN0QyxjQUFjLHlCQUF5QixDQUFDO0FBQ3hDLGNBQWMsb0JBQW9CLENBQUM7QUFDbkMsY0FBYyx5QkFBeUIsQ0FBQztBQUN4QyxjQUFjLG1CQUFtQixDQUFDO0FBQ2xDLGNBQWMsbUJBQW1CLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL3Byb3BlcnR5TWFwcGluZyc7XHJcbmV4cG9ydCAqIGZyb20gJy4vc2VsZWN0aW9uRGVmaW5pdGlvbic7XHJcbmV4cG9ydCAqIGZyb20gJy4vc21hcnRGb3JtSW5wdXRNb2RlJztcclxuZXhwb3J0ICogZnJvbSAnLi9zbWFydEZvcm1XaWRnZXREaXJlY3Rpb24nO1xyXG5leHBvcnQgKiBmcm9tICcuL3NtYXJ0Rm9ybVdpZGdldFR5cGUnO1xyXG5leHBvcnQgKiBmcm9tICcuL3NtYXJ0TGF5b3V0RGVmaW5pdGlvbic7XHJcbmV4cG9ydCAqIGZyb20gJy4vc21hcnRNYXRyaXhNb2RlbCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vc21hcnRXaWRnZXREZWZpbml0aW9uJztcclxuZXhwb3J0ICogZnJvbSAnLi9zbWFydFdpZGdldEhpbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL3ZhbHVlQ2hhbmdlTW9kZSc7XHJcbiJdfQ==
11
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kZWxzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc21hcnQtbmctY2xpZW50L3NyYy9saWIvc21hcnQtZm9ybS9hcGkvbW9kZWwvbW9kZWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsbUJBQW1CLENBQUM7QUFDbEMsY0FBYyx1QkFBdUIsQ0FBQztBQUN0QyxjQUFjLHNCQUFzQixDQUFDO0FBQ3JDLGNBQWMsNEJBQTRCLENBQUM7QUFDM0MsY0FBYyx1QkFBdUIsQ0FBQztBQUN0QyxjQUFjLHlCQUF5QixDQUFDO0FBQ3hDLGNBQWMsb0JBQW9CLENBQUM7QUFDbkMsY0FBYyx5QkFBeUIsQ0FBQztBQUN4QyxjQUFjLG1CQUFtQixDQUFDO0FBQ2xDLGNBQWMsbUJBQW1CLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL3Byb3BlcnR5TWFwcGluZyc7XG5leHBvcnQgKiBmcm9tICcuL3NlbGVjdGlvbkRlZmluaXRpb24nO1xuZXhwb3J0ICogZnJvbSAnLi9zbWFydEZvcm1JbnB1dE1vZGUnO1xuZXhwb3J0ICogZnJvbSAnLi9zbWFydEZvcm1XaWRnZXREaXJlY3Rpb24nO1xuZXhwb3J0ICogZnJvbSAnLi9zbWFydEZvcm1XaWRnZXRUeXBlJztcbmV4cG9ydCAqIGZyb20gJy4vc21hcnRMYXlvdXREZWZpbml0aW9uJztcbmV4cG9ydCAqIGZyb20gJy4vc21hcnRNYXRyaXhNb2RlbCc7XG5leHBvcnQgKiBmcm9tICcuL3NtYXJ0V2lkZ2V0RGVmaW5pdGlvbic7XG5leHBvcnQgKiBmcm9tICcuL3NtYXJ0V2lkZ2V0SGludCc7XG5leHBvcnQgKiBmcm9tICcuL3ZhbHVlQ2hhbmdlTW9kZSc7XG4iXX0=
@@ -19,4 +19,4 @@ export var SmartFormInputMode;
19
19
  SmartFormInputMode["DECIMAL"] = "DECIMAL";
20
20
  SmartFormInputMode["EMAIL"] = "EMAIL";
21
21
  })(SmartFormInputMode || (SmartFormInputMode = {}));
22
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnRGb3JtSW5wdXRNb2RlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc21hcnQtbmctY2xpZW50L3NyYy9saWIvc21hcnQtZm9ybS9hcGkvbW9kZWwvc21hcnRGb3JtSW5wdXRNb2RlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7O0dBVUc7QUFHSCxNQUFNLENBQU4sSUFBWSxrQkFRWDtBQVJELFdBQVksa0JBQWtCO0lBQzFCLG1DQUFhLENBQUE7SUFDYixpQ0FBVyxDQUFBO0lBQ1gsdUNBQWlCLENBQUE7SUFDakIseUNBQW1CLENBQUE7SUFDbkIsaUNBQVcsQ0FBQTtJQUNYLHlDQUFtQixDQUFBO0lBQ25CLHFDQUFlLENBQUE7QUFDbkIsQ0FBQyxFQVJXLGtCQUFrQixLQUFsQixrQkFBa0IsUUFRN0IiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcclxuICogRm9ybSBsYXlvdXQgZGVmaW5pdGlvblxyXG4gKiBDb250YWlucyBmb3JtIGxheW91dCBkZWZpbml0aW9uIG9iamVjdHMuXHJcbiAqXHJcbiAqIFRoZSB2ZXJzaW9uIG9mIHRoZSBPcGVuQVBJIGRvY3VtZW50OiAxLjAuMFxyXG4gKiBDb250YWN0OiBpbmZvQGl0NGFsbC5odVxyXG4gKlxyXG4gKiBOT1RFOiBUaGlzIGNsYXNzIGlzIGF1dG8gZ2VuZXJhdGVkIGJ5IE9wZW5BUEkgR2VuZXJhdG9yIChodHRwczovL29wZW5hcGktZ2VuZXJhdG9yLnRlY2gpLlxyXG4gKiBodHRwczovL29wZW5hcGktZ2VuZXJhdG9yLnRlY2hcclxuICogRG8gbm90IGVkaXQgdGhlIGNsYXNzIG1hbnVhbGx5LlxyXG4gKi9cclxuXHJcblxyXG5leHBvcnQgZW51bSBTbWFydEZvcm1JbnB1dE1vZGUge1xyXG4gICAgTk9ORSA9ICdOT05FJyxcclxuICAgIFVSTCA9ICdVUkwnLFxyXG4gICAgU0VBUkNIID0gJ1NFQVJDSCcsXHJcbiAgICBOVU1FUklDID0gJ05VTUVSSUMnLFxyXG4gICAgVEVMID0gJ1RFTCcsXHJcbiAgICBERUNJTUFMID0gJ0RFQ0lNQUwnLFxyXG4gICAgRU1BSUwgPSAnRU1BSUwnXHJcbn1cclxuXHJcbiJdfQ==
22
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnRGb3JtSW5wdXRNb2RlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc21hcnQtbmctY2xpZW50L3NyYy9saWIvc21hcnQtZm9ybS9hcGkvbW9kZWwvc21hcnRGb3JtSW5wdXRNb2RlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7O0dBVUc7QUFHSCxNQUFNLENBQU4sSUFBWSxrQkFRWDtBQVJELFdBQVksa0JBQWtCO0lBQzFCLG1DQUFhLENBQUE7SUFDYixpQ0FBVyxDQUFBO0lBQ1gsdUNBQWlCLENBQUE7SUFDakIseUNBQW1CLENBQUE7SUFDbkIsaUNBQVcsQ0FBQTtJQUNYLHlDQUFtQixDQUFBO0lBQ25CLHFDQUFlLENBQUE7QUFDbkIsQ0FBQyxFQVJXLGtCQUFrQixLQUFsQixrQkFBa0IsUUFRN0IiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEZvcm0gbGF5b3V0IGRlZmluaXRpb25cbiAqIENvbnRhaW5zIGZvcm0gbGF5b3V0IGRlZmluaXRpb24gb2JqZWN0cy5cbiAqXG4gKiBUaGUgdmVyc2lvbiBvZiB0aGUgT3BlbkFQSSBkb2N1bWVudDogMS4wLjBcbiAqIENvbnRhY3Q6IGluZm9AaXQ0YWxsLmh1XG4gKlxuICogTk9URTogVGhpcyBjbGFzcyBpcyBhdXRvIGdlbmVyYXRlZCBieSBPcGVuQVBJIEdlbmVyYXRvciAoaHR0cHM6Ly9vcGVuYXBpLWdlbmVyYXRvci50ZWNoKS5cbiAqIGh0dHBzOi8vb3BlbmFwaS1nZW5lcmF0b3IudGVjaFxuICogRG8gbm90IGVkaXQgdGhlIGNsYXNzIG1hbnVhbGx5LlxuICovXG5cblxuZXhwb3J0IGVudW0gU21hcnRGb3JtSW5wdXRNb2RlIHtcbiAgICBOT05FID0gJ05PTkUnLFxuICAgIFVSTCA9ICdVUkwnLFxuICAgIFNFQVJDSCA9ICdTRUFSQ0gnLFxuICAgIE5VTUVSSUMgPSAnTlVNRVJJQycsXG4gICAgVEVMID0gJ1RFTCcsXG4gICAgREVDSU1BTCA9ICdERUNJTUFMJyxcbiAgICBFTUFJTCA9ICdFTUFJTCdcbn1cblxuIl19
@@ -27,6 +27,7 @@ export var SmartFormWidgetType;
27
27
  SmartFormWidgetType["TEXT_FIELD"] = "TEXT_FIELD";
28
28
  SmartFormWidgetType["TEXT_FIELD_CHIPS"] = "TEXT_FIELD_CHIPS";
29
29
  SmartFormWidgetType["TEXT_FIELD_NUMBER"] = "TEXT_FIELD_NUMBER";
30
+ SmartFormWidgetType["TEXT_FIELD_LOOKUP"] = "TEXT_FIELD_LOOKUP";
30
31
  SmartFormWidgetType["TIME"] = "TIME";
31
32
  SmartFormWidgetType["TOGGLE"] = "TOGGLE";
32
33
  SmartFormWidgetType["IMAGE"] = "IMAGE";
@@ -42,4 +43,4 @@ export var SmartFormWidgetType;
42
43
  SmartFormWidgetType["YOUTUBE_PLAYER"] = "YOUTUBE_PLAYER";
43
44
  SmartFormWidgetType["SVG"] = "SVG";
44
45
  })(SmartFormWidgetType || (SmartFormWidgetType = {}));
45
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnRGb3JtV2lkZ2V0VHlwZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NtYXJ0LW5nLWNsaWVudC9zcmMvbGliL3NtYXJ0LWZvcm0vYXBpL21vZGVsL3NtYXJ0Rm9ybVdpZGdldFR5cGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7R0FVRztBQUdILE1BQU0sQ0FBTixJQUFZLG1CQStCWDtBQS9CRCxXQUFZLG1CQUFtQjtJQUMzQiw4Q0FBdUIsQ0FBQTtJQUN2QixrREFBMkIsQ0FBQTtJQUMzQiw4Q0FBdUIsQ0FBQTtJQUN2QixrREFBMkIsQ0FBQTtJQUMzQiw0REFBcUMsQ0FBQTtJQUNyQyw4Q0FBdUIsQ0FBQTtJQUN2QixvQ0FBYSxDQUFBO0lBQ2IsZ0RBQXlCLENBQUE7SUFDekIsc0NBQWUsQ0FBQTtJQUNmLG9EQUE2QixDQUFBO0lBQzdCLHdDQUFpQixDQUFBO0lBQ2pCLDBEQUFtQyxDQUFBO0lBQ25DLDRDQUFxQixDQUFBO0lBQ3JCLGdEQUF5QixDQUFBO0lBQ3pCLDREQUFxQyxDQUFBO0lBQ3JDLDhEQUF1QyxDQUFBO0lBQ3ZDLG9DQUFhLENBQUE7SUFDYix3Q0FBaUIsQ0FBQTtJQUNqQixzQ0FBZSxDQUFBO0lBQ2Ysc0RBQStCLENBQUE7SUFDL0Isc0NBQWUsQ0FBQTtJQUNmLHdDQUFpQixDQUFBO0lBQ2pCLDBDQUFtQixDQUFBO0lBQ25CLDhDQUF1QixDQUFBO0lBQ3ZCLDhDQUF1QixDQUFBO0lBQ3ZCLDRDQUFxQixDQUFBO0lBQ3JCLHdDQUFpQixDQUFBO0lBQ2pCLG9EQUE2QixDQUFBO0lBQzdCLHdEQUFpQyxDQUFBO0lBQ2pDLGtDQUFXLENBQUE7QUFDZixDQUFDLEVBL0JXLG1CQUFtQixLQUFuQixtQkFBbUIsUUErQjlCIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBGb3JtIGxheW91dCBkZWZpbml0aW9uXG4gKiBDb250YWlucyBmb3JtIGxheW91dCBkZWZpbml0aW9uIG9iamVjdHMuXG4gKlxuICogVGhlIHZlcnNpb24gb2YgdGhlIE9wZW5BUEkgZG9jdW1lbnQ6IDEuMC4wXG4gKiBDb250YWN0OiBpbmZvQGl0NGFsbC5odVxuICpcbiAqIE5PVEU6IFRoaXMgY2xhc3MgaXMgYXV0byBnZW5lcmF0ZWQgYnkgT3BlbkFQSSBHZW5lcmF0b3IgKGh0dHBzOi8vb3BlbmFwaS1nZW5lcmF0b3IudGVjaCkuXG4gKiBodHRwczovL29wZW5hcGktZ2VuZXJhdG9yLnRlY2hcbiAqIERvIG5vdCBlZGl0IHRoZSBjbGFzcyBtYW51YWxseS5cbiAqL1xuXG5cbmV4cG9ydCBlbnVtIFNtYXJ0Rm9ybVdpZGdldFR5cGUge1xuICAgIENIRUNLX0JPWCA9ICdDSEVDS19CT1gnLFxuICAgIENIRUNLX0JPWF8yID0gJ0NIRUNLX0JPWF8yJyxcbiAgICBDT05UQUlORVIgPSAnQ09OVEFJTkVSJyxcbiAgICBEQVRFX1BJQ0tFUiA9ICdEQVRFX1BJQ0tFUicsXG4gICAgREFURV9USU1FX1BJQ0tFUiA9ICdEQVRFX1RJTUVfUElDS0VSJyxcbiAgICBJTkRJQ0FUT1IgPSAnSU5ESUNBVE9SJyxcbiAgICBJVEVNID0gJ0lURU0nLFxuICAgIElURU1fR1JPVVAgPSAnSVRFTV9HUk9VUCcsXG4gICAgTEFCRUwgPSAnTEFCRUwnLFxuICAgIFJBRElPX0JVVFRPTiA9ICdSQURJT19CVVRUT04nLFxuICAgIFNFTEVDVCA9ICdTRUxFQ1QnLFxuICAgIFNFTEVDVF9NVUxUSVBMRSA9ICdTRUxFQ1RfTVVMVElQTEUnLFxuICAgIFRFWFRfQk9YID0gJ1RFWFRfQk9YJyxcbiAgICBURVhUX0ZJRUxEID0gJ1RFWFRfRklFTEQnLFxuICAgIFRFWFRfRklFTERfQ0hJUFMgPSAnVEVYVF9GSUVMRF9DSElQUycsXG4gICAgVEVYVF9GSUVMRF9OVU1CRVIgPSAnVEVYVF9GSUVMRF9OVU1CRVInLFxuICAgIFRJTUUgPSAnVElNRScsXG4gICAgVE9HR0xFID0gJ1RPR0dMRScsXG4gICAgSU1BR0UgPSAnSU1BR0UnLFxuICAgIEZJTEVfVVBMT0FERVIgPSAnRklMRV9VUExPQURFUicsXG4gICAgTUVESUEgPSAnTUVESUEnLFxuICAgIEJVVFRPTiA9ICdCVVRUT04nLFxuICAgIERJVklERVIgPSAnRElWSURFUicsXG4gICAgQ09NUE9ORU5UID0gJ0NPTVBPTkVOVCcsXG4gICAgUklDSF9URVhUID0gJ1JJQ0hfVEVYVCcsXG4gICAgU09SVEFCTEUgPSAnU09SVEFCTEUnLFxuICAgIE1BVFJJWCA9ICdNQVRSSVgnLFxuICAgIE1PTlRIX1BJQ0tFUiA9ICdNT05USF9QSUNLRVInLFxuICAgIFlPVVRVQkVfUExBWUVSID0gJ1lPVVRVQkVfUExBWUVSJyxcbiAgICBTVkcgPSAnU1ZHJ1xufVxuXG4iXX0=
46
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnRGb3JtV2lkZ2V0VHlwZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NtYXJ0LW5nLWNsaWVudC9zcmMvbGliL3NtYXJ0LWZvcm0vYXBpL21vZGVsL3NtYXJ0Rm9ybVdpZGdldFR5cGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7R0FVRztBQUdILE1BQU0sQ0FBTixJQUFZLG1CQWdDWDtBQWhDRCxXQUFZLG1CQUFtQjtJQUMzQiw4Q0FBdUIsQ0FBQTtJQUN2QixrREFBMkIsQ0FBQTtJQUMzQiw4Q0FBdUIsQ0FBQTtJQUN2QixrREFBMkIsQ0FBQTtJQUMzQiw0REFBcUMsQ0FBQTtJQUNyQyw4Q0FBdUIsQ0FBQTtJQUN2QixvQ0FBYSxDQUFBO0lBQ2IsZ0RBQXlCLENBQUE7SUFDekIsc0NBQWUsQ0FBQTtJQUNmLG9EQUE2QixDQUFBO0lBQzdCLHdDQUFpQixDQUFBO0lBQ2pCLDBEQUFtQyxDQUFBO0lBQ25DLDRDQUFxQixDQUFBO0lBQ3JCLGdEQUF5QixDQUFBO0lBQ3pCLDREQUFxQyxDQUFBO0lBQ3JDLDhEQUF1QyxDQUFBO0lBQ3ZDLDhEQUF1QyxDQUFBO0lBQ3ZDLG9DQUFhLENBQUE7SUFDYix3Q0FBaUIsQ0FBQTtJQUNqQixzQ0FBZSxDQUFBO0lBQ2Ysc0RBQStCLENBQUE7SUFDL0Isc0NBQWUsQ0FBQTtJQUNmLHdDQUFpQixDQUFBO0lBQ2pCLDBDQUFtQixDQUFBO0lBQ25CLDhDQUF1QixDQUFBO0lBQ3ZCLDhDQUF1QixDQUFBO0lBQ3ZCLDRDQUFxQixDQUFBO0lBQ3JCLHdDQUFpQixDQUFBO0lBQ2pCLG9EQUE2QixDQUFBO0lBQzdCLHdEQUFpQyxDQUFBO0lBQ2pDLGtDQUFXLENBQUE7QUFDZixDQUFDLEVBaENXLG1CQUFtQixLQUFuQixtQkFBbUIsUUFnQzlCIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBGb3JtIGxheW91dCBkZWZpbml0aW9uXG4gKiBDb250YWlucyBmb3JtIGxheW91dCBkZWZpbml0aW9uIG9iamVjdHMuXG4gKlxuICogVGhlIHZlcnNpb24gb2YgdGhlIE9wZW5BUEkgZG9jdW1lbnQ6IDEuMC4wXG4gKiBDb250YWN0OiBpbmZvQGl0NGFsbC5odVxuICpcbiAqIE5PVEU6IFRoaXMgY2xhc3MgaXMgYXV0byBnZW5lcmF0ZWQgYnkgT3BlbkFQSSBHZW5lcmF0b3IgKGh0dHBzOi8vb3BlbmFwaS1nZW5lcmF0b3IudGVjaCkuXG4gKiBodHRwczovL29wZW5hcGktZ2VuZXJhdG9yLnRlY2hcbiAqIERvIG5vdCBlZGl0IHRoZSBjbGFzcyBtYW51YWxseS5cbiAqL1xuXG5cbmV4cG9ydCBlbnVtIFNtYXJ0Rm9ybVdpZGdldFR5cGUge1xuICAgIENIRUNLX0JPWCA9ICdDSEVDS19CT1gnLFxuICAgIENIRUNLX0JPWF8yID0gJ0NIRUNLX0JPWF8yJyxcbiAgICBDT05UQUlORVIgPSAnQ09OVEFJTkVSJyxcbiAgICBEQVRFX1BJQ0tFUiA9ICdEQVRFX1BJQ0tFUicsXG4gICAgREFURV9USU1FX1BJQ0tFUiA9ICdEQVRFX1RJTUVfUElDS0VSJyxcbiAgICBJTkRJQ0FUT1IgPSAnSU5ESUNBVE9SJyxcbiAgICBJVEVNID0gJ0lURU0nLFxuICAgIElURU1fR1JPVVAgPSAnSVRFTV9HUk9VUCcsXG4gICAgTEFCRUwgPSAnTEFCRUwnLFxuICAgIFJBRElPX0JVVFRPTiA9ICdSQURJT19CVVRUT04nLFxuICAgIFNFTEVDVCA9ICdTRUxFQ1QnLFxuICAgIFNFTEVDVF9NVUxUSVBMRSA9ICdTRUxFQ1RfTVVMVElQTEUnLFxuICAgIFRFWFRfQk9YID0gJ1RFWFRfQk9YJyxcbiAgICBURVhUX0ZJRUxEID0gJ1RFWFRfRklFTEQnLFxuICAgIFRFWFRfRklFTERfQ0hJUFMgPSAnVEVYVF9GSUVMRF9DSElQUycsXG4gICAgVEVYVF9GSUVMRF9OVU1CRVIgPSAnVEVYVF9GSUVMRF9OVU1CRVInLFxuICAgIFRFWFRfRklFTERfTE9PS1VQID0gJ1RFWFRfRklFTERfTE9PS1VQJyxcbiAgICBUSU1FID0gJ1RJTUUnLFxuICAgIFRPR0dMRSA9ICdUT0dHTEUnLFxuICAgIElNQUdFID0gJ0lNQUdFJyxcbiAgICBGSUxFX1VQTE9BREVSID0gJ0ZJTEVfVVBMT0FERVInLFxuICAgIE1FRElBID0gJ01FRElBJyxcbiAgICBCVVRUT04gPSAnQlVUVE9OJyxcbiAgICBESVZJREVSID0gJ0RJVklERVInLFxuICAgIENPTVBPTkVOVCA9ICdDT01QT05FTlQnLFxuICAgIFJJQ0hfVEVYVCA9ICdSSUNIX1RFWFQnLFxuICAgIFNPUlRBQkxFID0gJ1NPUlRBQkxFJyxcbiAgICBNQVRSSVggPSAnTUFUUklYJyxcbiAgICBNT05USF9QSUNLRVIgPSAnTU9OVEhfUElDS0VSJyxcbiAgICBZT1VUVUJFX1BMQVlFUiA9ICdZT1VUVUJFX1BMQVlFUicsXG4gICAgU1ZHID0gJ1NWRydcbn1cblxuIl19
@@ -1,2 +1,2 @@
1
1
  export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnRNYXRyaXhNb2RlbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NtYXJ0LW5nLWNsaWVudC9zcmMvbGliL3NtYXJ0LWZvcm0vYXBpL21vZGVsL3NtYXJ0TWF0cml4TW9kZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxyXG4gKiBGb3JtIGxheW91dCBkZWZpbml0aW9uXHJcbiAqIENvbnRhaW5zIGZvcm0gbGF5b3V0IGRlZmluaXRpb24gb2JqZWN0cy5cclxuICpcclxuICogVGhlIHZlcnNpb24gb2YgdGhlIE9wZW5BUEkgZG9jdW1lbnQ6IDEuMC4wXHJcbiAqIENvbnRhY3Q6IGluZm9AaXQ0YWxsLmh1XHJcbiAqXHJcbiAqIE5PVEU6IFRoaXMgY2xhc3MgaXMgYXV0byBnZW5lcmF0ZWQgYnkgT3BlbkFQSSBHZW5lcmF0b3IgKGh0dHBzOi8vb3BlbmFwaS1nZW5lcmF0b3IudGVjaCkuXHJcbiAqIGh0dHBzOi8vb3BlbmFwaS1nZW5lcmF0b3IudGVjaFxyXG4gKiBEbyBub3QgZWRpdCB0aGUgY2xhc3MgbWFudWFsbHkuXHJcbiAqL1xyXG5pbXBvcnQgeyBWYWx1ZSB9IGZyb20gJy4uLy4uL3NtYXJ0Zm9ybS5tb2RlbCc7XHJcblxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBTbWFydE1hdHJpeE1vZGVsIHsgXHJcbiAgICAvKipcclxuICAgICAqIFRoZSBrZXlzXHJcbiAgICAgKi9cclxuICAgIHJvd3M/OiBBcnJheTxWYWx1ZT47XHJcbiAgICAvKipcclxuICAgICAqIFRoZSBwb3NzaWJsZSB2YWx1ZXNcclxuICAgICAqL1xyXG4gICAgY29sdW1ucz86IEFycmF5PFZhbHVlPjtcclxuICAgIC8qKlxyXG4gICAgICogQSBtYXAgZm9yIGtleSAtIHZhbHVlc1xyXG4gICAgICovXHJcbiAgICBkYXRhPzogeyBba2V5OiBzdHJpbmddOiBhbnk7IH07XHJcbiAgICBtdWx0aVNlbGVjdD86IGJvb2xlYW47XHJcbn1cclxuXHJcbiJdfQ==
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnRNYXRyaXhNb2RlbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NtYXJ0LW5nLWNsaWVudC9zcmMvbGliL3NtYXJ0LWZvcm0vYXBpL21vZGVsL3NtYXJ0TWF0cml4TW9kZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogRm9ybSBsYXlvdXQgZGVmaW5pdGlvblxuICogQ29udGFpbnMgZm9ybSBsYXlvdXQgZGVmaW5pdGlvbiBvYmplY3RzLlxuICpcbiAqIFRoZSB2ZXJzaW9uIG9mIHRoZSBPcGVuQVBJIGRvY3VtZW50OiAxLjAuMFxuICogQ29udGFjdDogaW5mb0BpdDRhbGwuaHVcbiAqXG4gKiBOT1RFOiBUaGlzIGNsYXNzIGlzIGF1dG8gZ2VuZXJhdGVkIGJ5IE9wZW5BUEkgR2VuZXJhdG9yIChodHRwczovL29wZW5hcGktZ2VuZXJhdG9yLnRlY2gpLlxuICogaHR0cHM6Ly9vcGVuYXBpLWdlbmVyYXRvci50ZWNoXG4gKiBEbyBub3QgZWRpdCB0aGUgY2xhc3MgbWFudWFsbHkuXG4gKi9cbmltcG9ydCB7IFZhbHVlIH0gZnJvbSAnLi4vLi4vc21hcnRmb3JtLm1vZGVsJztcblxuXG5leHBvcnQgaW50ZXJmYWNlIFNtYXJ0TWF0cml4TW9kZWwgeyBcbiAgICAvKipcbiAgICAgKiBUaGUga2V5c1xuICAgICAqL1xuICAgIHJvd3M/OiBBcnJheTxWYWx1ZT47XG4gICAgLyoqXG4gICAgICogVGhlIHBvc3NpYmxlIHZhbHVlc1xuICAgICAqL1xuICAgIGNvbHVtbnM/OiBBcnJheTxWYWx1ZT47XG4gICAgLyoqXG4gICAgICogQSBtYXAgZm9yIGtleSAtIHZhbHVlc1xuICAgICAqL1xuICAgIGRhdGE/OiB7IFtrZXk6IHN0cmluZ106IGFueTsgfTtcbiAgICBtdWx0aVNlbGVjdD86IGJvb2xlYW47XG59XG5cbiJdfQ==
@@ -1,2 +1,2 @@
1
1
  export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnRXaWRnZXREZWZpbml0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc21hcnQtbmctY2xpZW50L3NyYy9saWIvc21hcnQtZm9ybS9hcGkvbW9kZWwvc21hcnRXaWRnZXREZWZpbml0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcclxuICogRm9ybSBsYXlvdXQgZGVmaW5pdGlvblxyXG4gKiBDb250YWlucyBmb3JtIGxheW91dCBkZWZpbml0aW9uIG9iamVjdHMuXHJcbiAqXHJcbiAqIFRoZSB2ZXJzaW9uIG9mIHRoZSBPcGVuQVBJIGRvY3VtZW50OiAxLjAuMFxyXG4gKiBDb250YWN0OiBpbmZvQGl0NGFsbC5odVxyXG4gKlxyXG4gKiBOT1RFOiBUaGlzIGNsYXNzIGlzIGF1dG8gZ2VuZXJhdGVkIGJ5IE9wZW5BUEkgR2VuZXJhdG9yIChodHRwczovL29wZW5hcGktZ2VuZXJhdG9yLnRlY2gpLlxyXG4gKiBodHRwczovL29wZW5hcGktZ2VuZXJhdG9yLnRlY2hcclxuICogRG8gbm90IGVkaXQgdGhlIGNsYXNzIG1hbnVhbGx5LlxyXG4gKi9cclxuaW1wb3J0IHsgU2VsZWN0aW9uRGVmaW5pdGlvbiB9IGZyb20gJy4vc2VsZWN0aW9uRGVmaW5pdGlvbic7XHJcbmltcG9ydCB7IEljb25Qb3NpdGlvbiB9IGZyb20gJy4uLy4uLy4uL3ZpZXctY29udGV4dC9hcGkvbW9kZWwvaWNvblBvc2l0aW9uJztcclxuaW1wb3J0IHsgU21hcnRGb3JtV2lkZ2V0RGlyZWN0aW9uIH0gZnJvbSAnLi9zbWFydEZvcm1XaWRnZXREaXJlY3Rpb24nO1xyXG5pbXBvcnQgeyBTbWFydFdpZGdldEhpbnQgfSBmcm9tICcuL3NtYXJ0V2lkZ2V0SGludCc7XHJcbmltcG9ydCB7IFNtYXJ0Rm9ybVdpZGdldFR5cGUgfSBmcm9tICcuL3NtYXJ0Rm9ybVdpZGdldFR5cGUnO1xyXG5pbXBvcnQgeyBWYWx1ZSB9IGZyb20gJy4uLy4uL3NtYXJ0Zm9ybS5tb2RlbCc7XHJcbmltcG9ydCB7IFN0eWxlIH0gZnJvbSAnLi4vLi4vLi4vdmlldy1jb250ZXh0L2FwaS9tb2RlbC9zdHlsZSc7XHJcbmltcG9ydCB7IFZhbHVlQ2hhbmdlTW9kZSB9IGZyb20gJy4vdmFsdWVDaGFuZ2VNb2RlJztcclxuaW1wb3J0IHsgU21hcnRNYXRyaXhNb2RlbCB9IGZyb20gJy4vc21hcnRNYXRyaXhNb2RlbCc7XHJcbmltcG9ydCB7IFNtYXJ0Rm9ybUlucHV0TW9kZSB9IGZyb20gJy4vc21hcnRGb3JtSW5wdXRNb2RlJztcclxuXHJcblxyXG4vKipcclxuICogVGhlIGxheW91dCBkZWZpbml0aW9uIG9mIHRoZSBTbWFydFRleHRGaWVsZCB3aWRnZXQuXHJcbiAqL1xyXG5leHBvcnQgaW50ZXJmYWNlIFNtYXJ0V2lkZ2V0RGVmaW5pdGlvbiB7IFxyXG4gICAgdHlwZTogU21hcnRGb3JtV2lkZ2V0VHlwZTtcclxuICAgIGlucHV0TW9kZT86IFNtYXJ0Rm9ybUlucHV0TW9kZTtcclxuICAgIC8qKlxyXG4gICAgICogVGhlIHBhdGggb2YgdGhlIGRlc2lyZWQgcGFyYW1ldGVyIGluIHRoZSBvYmplY3QuXHJcbiAgICAgKi9cclxuICAgIGtleTogc3RyaW5nO1xyXG4gICAgLyoqXHJcbiAgICAgKiBUaGUgbGFiZWwgb2YgdGhlIHRleHQgZmllbGRcclxuICAgICAqL1xyXG4gICAgbGFiZWw6IHN0cmluZztcclxuICAgIC8qKlxyXG4gICAgICogVGhlIHBsYWNlaG9sZGVyIG9mIHRoZSB0ZXh0IGZpZWxkXHJcbiAgICAgKi9cclxuICAgIHBsYWNlaG9sZGVyPzogc3RyaW5nO1xyXG4gICAgLyoqXHJcbiAgICAgKiBUZXh0IHRoYXQgYXBwZWFycyBhcyBhIHByZWZpeFxyXG4gICAgICovXHJcbiAgICBwcmVmaXg/OiBzdHJpbmc7XHJcbiAgICAvKipcclxuICAgICAqIFRleHQgdGhhdCBhcHBlYXJzIGFzIGEgc3VmZml4XHJcbiAgICAgKi9cclxuICAgIHN1ZmZpeD86IHN0cmluZztcclxuICAgIC8qKlxyXG4gICAgICogQSBkZXNjcmlwdG9yIHRoYXQgbWFza3MgdGhlIGlucHV0XHJcbiAgICAgKi9cclxuICAgIG1hc2s/OiBzdHJpbmc7XHJcbiAgICAvKipcclxuICAgICAqIEFuIGljb24gd2hpY2ggYXBwZWFycyBhcyBhIHN1ZmZpeFxyXG4gICAgICovXHJcbiAgICBpY29uPzogc3RyaW5nO1xyXG4gICAgLyoqXHJcbiAgICAgKiBNYXRlcmlhbCB0aGVtZSBjbGFzcyBvZiB0aGUgaWNvblxyXG4gICAgICovXHJcbiAgICBpY29uQ29sb3I/OiBzdHJpbmc7XHJcbiAgICAvKipcclxuICAgICAqIFBvc2l0aW9uIG9mIHRoZSBpY29uIChwcmUvcG9zdClcclxuICAgICAqL1xyXG4gICAgaWNvblBvc2l0aW9uPzogSWNvblBvc2l0aW9uO1xyXG4gICAgLyoqXHJcbiAgICAgKiBEZWZpbmVzIGlmIHRoZSBsYWJlbCBhcHBlYXJzIGFib3ZlIHRoZSB3aWRnZXQgb3Igbm90XHJcbiAgICAgKi9cclxuICAgIHNob3dMYWJlbD86IGJvb2xlYW47XHJcbiAgICAvKipcclxuICAgICAqIE9wdGlvbmFsIGNzcyBjbGFzcyBvZiB0aGUgd2lkZ2V0XHJcbiAgICAgKi9cclxuICAgIGNzc0NsYXNzPzogc3RyaW5nO1xyXG4gICAgLyoqXHJcbiAgICAgKiBPcHRpb25hbCBjc3MgY2xhc3Mgb2YgdGhlIGxhYmVsIG9mIHRoZSB3aWRnZXRcclxuICAgICAqL1xyXG4gICAgY3NzTGFiZWxDbGFzcz86IHN0cmluZztcclxuICAgIHN0eWxlPzogU3R5bGU7XHJcbiAgICBsYWJlbFN0eWxlPzogU3R5bGU7XHJcbiAgICAvKipcclxuICAgICAqIERlZmluZXMgaWYgdGhlIHdpZGdldCBpcyBhIHBhc3N3b3JkIGlucHV0XHJcbiAgICAgKi9cclxuICAgIGlzUGFzc3dvcmQ/OiBib29sZWFuO1xyXG4gICAgdmFsdWVzPzogQXJyYXk8VmFsdWU+O1xyXG4gICAgY2hpbGRyZW5Db21wb25lbnRzPzogQXJyYXk8U21hcnRXaWRnZXREZWZpbml0aW9uPjtcclxuICAgIHNlbGVjdGlvbj86IFNlbGVjdGlvbkRlZmluaXRpb247XHJcbiAgICBkaXJlY3Rpb24/OiBTbWFydEZvcm1XaWRnZXREaXJlY3Rpb247XHJcbiAgICBtYXRyaXg/OiBTbWFydE1hdHJpeE1vZGVsO1xyXG4gICAgaGludD86IFNtYXJ0V2lkZ2V0SGludDtcclxuICAgIHdpZGdldERlc2NyaXB0aW9uPzogc3RyaW5nO1xyXG4gICAgbWF4TGVuZ3RoPzogbnVtYmVyO1xyXG4gICAgdmFsdWVDaGFuZ2VNb2RlPzogVmFsdWVDaGFuZ2VNb2RlO1xyXG4gICAgc2hvd0NoYXJhY3RlckxpbWl0U3VmZml4PzogYm9vbGVhbjtcclxuICAgIC8qKlxyXG4gICAgICogVGhlIGRlZmF1bHQgZXJyb3IgbWVzc2FnZSB0byBzaG93IGlmIHRoZSB3aWRnZXQgZmVhdHVyZXMgYW4gYXV0b2NvbXBsZXRpb24gZmlsdGVyIG9wZXJhdGlvbiwgd2hpY2ggcmV0dXJucyBubyBlbGVtZW50cy4gXHJcbiAgICAgKi9cclxuICAgIGZpbHRlckVycm9yTWVzc2FnZT86IHN0cmluZztcclxuICAgIC8qKlxyXG4gICAgICogSWRlbnRpZmllciBvZiB0aGUgdG9vbGJhciBhc3NvY2lhdGVkIHdpdGggdGhpcyB3aWRnZXQuIFxyXG4gICAgICovXHJcbiAgICB0b29sYmFySWQ/OiBzdHJpbmc7XHJcbiAgICAvKipcclxuICAgICAqIEFkZGl0aW9uYWwgcHJvcGVydGllcyB0aGUgY2xpZW50IG1heSB1c2UgdG8gY3VzdG9taXNlIHRoZSBhcHBlYXJhbmNlIG9yIGJlaGF2aW91ciBvZiB0aGUgd2lkZ2V0LiBcclxuICAgICAqL1xyXG4gICAgcHJvcGVydGllcz86IHsgW2tleTogc3RyaW5nXTogb2JqZWN0OyB9O1xyXG59XHJcblxyXG5cclxuXHJcbiJdfQ==
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnRXaWRnZXREZWZpbml0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc21hcnQtbmctY2xpZW50L3NyYy9saWIvc21hcnQtZm9ybS9hcGkvbW9kZWwvc21hcnRXaWRnZXREZWZpbml0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEZvcm0gbGF5b3V0IGRlZmluaXRpb25cbiAqIENvbnRhaW5zIGZvcm0gbGF5b3V0IGRlZmluaXRpb24gb2JqZWN0cy5cbiAqXG4gKiBUaGUgdmVyc2lvbiBvZiB0aGUgT3BlbkFQSSBkb2N1bWVudDogMS4wLjBcbiAqIENvbnRhY3Q6IGluZm9AaXQ0YWxsLmh1XG4gKlxuICogTk9URTogVGhpcyBjbGFzcyBpcyBhdXRvIGdlbmVyYXRlZCBieSBPcGVuQVBJIEdlbmVyYXRvciAoaHR0cHM6Ly9vcGVuYXBpLWdlbmVyYXRvci50ZWNoKS5cbiAqIGh0dHBzOi8vb3BlbmFwaS1nZW5lcmF0b3IudGVjaFxuICogRG8gbm90IGVkaXQgdGhlIGNsYXNzIG1hbnVhbGx5LlxuICovXG5pbXBvcnQgeyBTZWxlY3Rpb25EZWZpbml0aW9uIH0gZnJvbSAnLi9zZWxlY3Rpb25EZWZpbml0aW9uJztcbmltcG9ydCB7IEljb25Qb3NpdGlvbiB9IGZyb20gJy4uLy4uLy4uL3ZpZXctY29udGV4dC9hcGkvbW9kZWwvaWNvblBvc2l0aW9uJztcbmltcG9ydCB7IFNtYXJ0Rm9ybVdpZGdldERpcmVjdGlvbiB9IGZyb20gJy4vc21hcnRGb3JtV2lkZ2V0RGlyZWN0aW9uJztcbmltcG9ydCB7IFNtYXJ0V2lkZ2V0SGludCB9IGZyb20gJy4vc21hcnRXaWRnZXRIaW50JztcbmltcG9ydCB7IFNtYXJ0Rm9ybVdpZGdldFR5cGUgfSBmcm9tICcuL3NtYXJ0Rm9ybVdpZGdldFR5cGUnO1xuaW1wb3J0IHsgVmFsdWUgfSBmcm9tICcuLi8uLi9zbWFydGZvcm0ubW9kZWwnO1xuaW1wb3J0IHsgU3R5bGUgfSBmcm9tICcuLi8uLi8uLi92aWV3LWNvbnRleHQvYXBpL21vZGVsL3N0eWxlJztcbmltcG9ydCB7IFZhbHVlQ2hhbmdlTW9kZSB9IGZyb20gJy4vdmFsdWVDaGFuZ2VNb2RlJztcbmltcG9ydCB7IFNtYXJ0TWF0cml4TW9kZWwgfSBmcm9tICcuL3NtYXJ0TWF0cml4TW9kZWwnO1xuaW1wb3J0IHsgU21hcnRGb3JtSW5wdXRNb2RlIH0gZnJvbSAnLi9zbWFydEZvcm1JbnB1dE1vZGUnO1xuXG5cbi8qKlxuICogVGhlIGxheW91dCBkZWZpbml0aW9uIG9mIHRoZSBTbWFydFRleHRGaWVsZCB3aWRnZXQuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU21hcnRXaWRnZXREZWZpbml0aW9uIHsgXG4gICAgdHlwZTogU21hcnRGb3JtV2lkZ2V0VHlwZTtcbiAgICBpbnB1dE1vZGU/OiBTbWFydEZvcm1JbnB1dE1vZGU7XG4gICAgLyoqXG4gICAgICogVGhlIHBhdGggb2YgdGhlIGRlc2lyZWQgcGFyYW1ldGVyIGluIHRoZSBvYmplY3QuXG4gICAgICovXG4gICAga2V5OiBzdHJpbmc7XG4gICAgLyoqXG4gICAgICogVGhlIGxhYmVsIG9mIHRoZSB0ZXh0IGZpZWxkXG4gICAgICovXG4gICAgbGFiZWw6IHN0cmluZztcbiAgICAvKipcbiAgICAgKiBUaGUgcGxhY2Vob2xkZXIgb2YgdGhlIHRleHQgZmllbGRcbiAgICAgKi9cbiAgICBwbGFjZWhvbGRlcj86IHN0cmluZztcbiAgICAvKipcbiAgICAgKiBUZXh0IHRoYXQgYXBwZWFycyBhcyBhIHByZWZpeFxuICAgICAqL1xuICAgIHByZWZpeD86IHN0cmluZztcbiAgICAvKipcbiAgICAgKiBUZXh0IHRoYXQgYXBwZWFycyBhcyBhIHN1ZmZpeFxuICAgICAqL1xuICAgIHN1ZmZpeD86IHN0cmluZztcbiAgICAvKipcbiAgICAgKiBBIGRlc2NyaXB0b3IgdGhhdCBtYXNrcyB0aGUgaW5wdXRcbiAgICAgKi9cbiAgICBtYXNrPzogc3RyaW5nO1xuICAgIC8qKlxuICAgICAqIEFuIGljb24gd2hpY2ggYXBwZWFycyBhcyBhIHN1ZmZpeFxuICAgICAqL1xuICAgIGljb24/OiBzdHJpbmc7XG4gICAgLyoqXG4gICAgICogTWF0ZXJpYWwgdGhlbWUgY2xhc3Mgb2YgdGhlIGljb25cbiAgICAgKi9cbiAgICBpY29uQ29sb3I/OiBzdHJpbmc7XG4gICAgLyoqXG4gICAgICogUG9zaXRpb24gb2YgdGhlIGljb24gKHByZS9wb3N0KVxuICAgICAqL1xuICAgIGljb25Qb3NpdGlvbj86IEljb25Qb3NpdGlvbjtcbiAgICAvKipcbiAgICAgKiBEZWZpbmVzIGlmIHRoZSBsYWJlbCBhcHBlYXJzIGFib3ZlIHRoZSB3aWRnZXQgb3Igbm90XG4gICAgICovXG4gICAgc2hvd0xhYmVsPzogYm9vbGVhbjtcbiAgICAvKipcbiAgICAgKiBPcHRpb25hbCBjc3MgY2xhc3Mgb2YgdGhlIHdpZGdldFxuICAgICAqL1xuICAgIGNzc0NsYXNzPzogc3RyaW5nO1xuICAgIC8qKlxuICAgICAqIE9wdGlvbmFsIGNzcyBjbGFzcyBvZiB0aGUgbGFiZWwgb2YgdGhlIHdpZGdldFxuICAgICAqL1xuICAgIGNzc0xhYmVsQ2xhc3M/OiBzdHJpbmc7XG4gICAgc3R5bGU/OiBTdHlsZTtcbiAgICBsYWJlbFN0eWxlPzogU3R5bGU7XG4gICAgLyoqXG4gICAgICogRGVmaW5lcyBpZiB0aGUgd2lkZ2V0IGlzIGEgcGFzc3dvcmQgaW5wdXRcbiAgICAgKi9cbiAgICBpc1Bhc3N3b3JkPzogYm9vbGVhbjtcbiAgICB2YWx1ZXM/OiBBcnJheTxWYWx1ZT47XG4gICAgY2hpbGRyZW5Db21wb25lbnRzPzogQXJyYXk8U21hcnRXaWRnZXREZWZpbml0aW9uPjtcbiAgICBzZWxlY3Rpb24/OiBTZWxlY3Rpb25EZWZpbml0aW9uO1xuICAgIGRpcmVjdGlvbj86IFNtYXJ0Rm9ybVdpZGdldERpcmVjdGlvbjtcbiAgICBtYXRyaXg/OiBTbWFydE1hdHJpeE1vZGVsO1xuICAgIGhpbnQ/OiBTbWFydFdpZGdldEhpbnQ7XG4gICAgd2lkZ2V0RGVzY3JpcHRpb24/OiBzdHJpbmc7XG4gICAgbWF4TGVuZ3RoPzogbnVtYmVyO1xuICAgIHZhbHVlQ2hhbmdlTW9kZT86IFZhbHVlQ2hhbmdlTW9kZTtcbiAgICBzaG93Q2hhcmFjdGVyTGltaXRTdWZmaXg/OiBib29sZWFuO1xuICAgIC8qKlxuICAgICAqIFRoZSBkZWZhdWx0IGVycm9yIG1lc3NhZ2UgdG8gc2hvdyBpZiB0aGUgd2lkZ2V0IGZlYXR1cmVzIGFuIGF1dG9jb21wbGV0aW9uIGZpbHRlciBvcGVyYXRpb24sIHdoaWNoIHJldHVybnMgbm8gZWxlbWVudHMuIFxuICAgICAqL1xuICAgIGZpbHRlckVycm9yTWVzc2FnZT86IHN0cmluZztcbiAgICAvKipcbiAgICAgKiBJZGVudGlmaWVyIG9mIHRoZSB0b29sYmFyIGFzc29jaWF0ZWQgd2l0aCB0aGlzIHdpZGdldC4gXG4gICAgICovXG4gICAgdG9vbGJhcklkPzogc3RyaW5nO1xuICAgIC8qKlxuICAgICAqIEFkZGl0aW9uYWwgcHJvcGVydGllcyB0aGUgY2xpZW50IG1heSB1c2UgdG8gY3VzdG9taXNlIHRoZSBhcHBlYXJhbmNlIG9yIGJlaGF2aW91ciBvZiB0aGUgd2lkZ2V0LiBcbiAgICAgKi9cbiAgICBwcm9wZXJ0aWVzPzogeyBba2V5OiBzdHJpbmddOiBvYmplY3Q7IH07XG59XG5cblxuXG4iXX0=
@@ -28,8 +28,8 @@ export class SmartformLayoutDefinitionService {
28
28
  return this.createTextFieldChips(config.layoutDefinition);
29
29
  case SmartFormWidgetType.TEXT_FIELD_NUMBER:
30
30
  return this.createTextFieldNumber(config.layoutDefinition);
31
- case SmartFormWidgetType.TEXT_FIELD:
32
- return this.createTextField(config.layoutDefinition);
31
+ case SmartFormWidgetType.TEXT_FIELD_LOOKUP:
32
+ return this.createTextFieldLookup(config.layoutDefinition);
33
33
  case SmartFormWidgetType.TEXT_BOX:
34
34
  return this.createTextBox(config.layoutDefinition);
35
35
  case SmartFormWidgetType.TOGGLE:
@@ -191,6 +191,22 @@ export class SmartformLayoutDefinitionService {
191
191
  }
192
192
  return widget;
193
193
  }
194
+ createTextFieldLookup(layoutDefinition) {
195
+ let widget = {
196
+ type: SmartFormWidgetType.TEXT_FIELD_LOOKUP,
197
+ key: layoutDefinition.key,
198
+ valueChangeMode: layoutDefinition.valueChangeMode,
199
+ label: layoutDefinition.label,
200
+ placeholder: layoutDefinition.placeholder,
201
+ showLabel: layoutDefinition.showLabel,
202
+ cssClass: layoutDefinition.cssClass,
203
+ cssLabelClass: layoutDefinition.cssLabelClass,
204
+ style: layoutDefinition.style,
205
+ labelStyle: layoutDefinition.labelStyle,
206
+ toolbarId: layoutDefinition.toolbarId,
207
+ };
208
+ return widget;
209
+ }
194
210
  createTextFieldNumber(layoutDefinition) {
195
211
  let widget = {
196
212
  type: SmartFormWidgetType.TEXT_FIELD_NUMBER,
@@ -540,4 +556,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.4.0", ngImpor
540
556
  providedIn: 'root',
541
557
  }]
542
558
  }], ctorParameters: function () { return []; } });
543
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnRmb3JtLmxheW91dC1kZWZpbml0aW9uLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zbWFydC1uZy1jbGllbnQvc3JjL2xpYi9zbWFydC1mb3JtL3NlcnZpY2VzL3NtYXJ0Zm9ybS5sYXlvdXQtZGVmaW5pdGlvbi5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFFLHdCQUF3QixFQUFFLG1CQUFtQixFQUF5QixNQUFNLFFBQVEsQ0FBQzs7QUFrQjlGLE1BQU0sT0FBTyxnQ0FBZ0M7SUFZM0MsZ0JBQWUsQ0FBQztJQUVULE1BQU0sQ0FBQyxNQUF5QztRQUNyRCxJQUFJLE9BQU8sR0FBMkIsRUFBRSxDQUFDO1FBRXpDLE1BQU0sQ0FBQyxpQkFBaUIsRUFBRSxPQUFPLENBQUMsQ0FBQyxnQkFBdUMsRUFBRSxFQUFFO1lBQzVFLElBQUksTUFBTSxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUM7Z0JBQzdCLEdBQUcsTUFBTTtnQkFDVCxnQkFBZ0I7YUFDakIsQ0FBQyxDQUFDO1lBQ0gsSUFBSSxNQUFNLEVBQUU7Z0JBQ1YsT0FBTyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQzthQUN0QjtRQUNILENBQUMsQ0FBQyxDQUFDO1FBRUgsT0FBTyxPQUFPLENBQUM7SUFDakIsQ0FBQztJQUVPLFlBQVksQ0FDbEIsTUFBeUM7UUFFekMsUUFBUSxNQUFNLENBQUMsZ0JBQWdCLEVBQUUsSUFBSSxFQUFFO1lBQ3JDLEtBQUssbUJBQW1CLENBQUMsU0FBUztnQkFDaEMsT0FBTyxJQUFJLENBQUMsZUFBZSxDQUFDLE1BQU0sRUFBRSxNQUFNLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztZQUMvRCxLQUFLLG1CQUFtQixDQUFDLEtBQUs7Z0JBQzVCLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FB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QUM7WUFDOUIsQ0FBQyxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsRUFBRSxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsQ0FBQztZQUN6QyxDQUFDLE9BQU8sQ0FBQztTQUNWO0tBQ0Y7Q0FDRCxDQUFBOzZIQVhTLGdDQUFnQztpSUFBaEMsZ0NBQWdDLGNBRi9CLE1BQU07MkZBRVAsZ0NBQWdDO2tCQUg1QyxVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgU21hcnRGb3JtV2lkZ2V0RGlyZWN0aW9uLCBTbWFydEZvcm1XaWRnZXRUeXBlLCBTbWFydFdpZGdldERlZmluaXRpb24gfSBmcm9tICcuLi9hcGknO1xyXG5pbXBvcnQgeyBTbWFydEZpbGVVcGxvYWRlciwgU21hcnRGb3JtV2lkZ2V0IH0gZnJvbSAnLi4vc21hcnRmb3JtLmZvcm0tbW9kZWwnO1xyXG5pbXBvcnQgeyBWYWx1ZSB9IGZyb20gJy4uL3NtYXJ0Zm9ybS5tb2RlbCc7XHJcbmltcG9ydCB7IFF1aWxsTW9kdWxlcyB9IGZyb20gJ25neC1xdWlsbCc7XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIFNtYXJ0Zm9ybUxheW91dENyZWF0ZVdpZGdldENvbmZpZyB7XHJcbiAgbGF5b3V0RGVmaW5pdGlvbnM/OiBTbWFydFdpZGdldERlZmluaXRpb25bXTtcclxuICBsYXlvdXREZWZpbml0aW9uPzogU21hcnRXaWRnZXREZWZpbml0aW9uO1xyXG4gIHVwbG9hZENhbGxiYWNrPzogKGtleTogc3RyaW5nLCBmaWxlczogYW55W10pID0+IHZvaWQ7XHJcbiAgYnV0dG9uQ2FsbGJhY2s/OiAoKHVpQWN0aW9uOiBhbnkpID0+IHZvaWQpIHwgKChrZXk6IHN0cmluZykgPT4gdm9pZCk7XHJcbiAgdWlBY3Rpb25zPzogYW55W107XHJcbiAgdWlBY3Rpb25EZXNjcmlwdG9ycz86ICh1aUFjdGlvbjogYW55KSA9PiBhbnk7XHJcbiAgbW9kZWw/OiBhbnk7XHJcbn1cclxuXHJcbkBJbmplY3RhYmxlKHtcclxuICBwcm92aWRlZEluOiAncm9vdCcsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBTbWFydGZvcm1MYXlvdXREZWZpbml0aW9uU2VydmljZSB7XHJcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgREVGQVVMVF9RVUlMTF9NT0RVTEVTOiBRdWlsbE1vZHVsZXMgPSB7XHJcbiAgICB0b29sYmFyOiB7XHJcbiAgICAgIGNvbnRhaW5lcjogW1xyXG4gICAgICAgIFsnYm9sZCcsICdpdGFsaWMnLCAndW5kZXJsaW5lJywgJ3N0cmlrZScsICdsaW5rJ10sXHJcbiAgICAgICAgWydjb2RlLWJsb2NrJ10sXHJcbiAgICAgICAgW3sgaGVhZGVyOiAxIH0sIHsgaGVhZGVyOiAyIH1dLFxyXG4gICAgICAgIFt7IGxpc3Q6ICdvcmRlcmVkJyB9LCB7IGxpc3Q6ICdidWxsZXQnIH1dLFxyXG4gICAgICAgIFsnY2xlYW4nXSxcclxuICAgICAgXSxcclxuICAgIH0sXHJcbiAgfTtcclxuICBjb25zdHJ1Y3RvcigpIHt9XHJcblxyXG4gIHB1YmxpYyByZW5kZXIoY29uZmlnOiBTbWFydGZvcm1MYXlvdXRDcmVhdGVXaWRnZXRDb25maWcpOiBTbWFydEZvcm1XaWRnZXQ8YW55PltdIHtcclxuICAgIGxldCB3aWRnZXRzOiBTbWFydEZvcm1XaWRnZXQ8YW55PltdID0gW107XHJcblxyXG4gICAgY29uZmlnLmxheW91dERlZmluaXRpb25zPy5mb3JFYWNoKChsYXlvdXREZWZpbml0aW9uOiBTbWFydFdpZGdldERlZmluaXRpb24pID0+IHtcclxuICAgICAgbGV0IHdpZGdldCA9IHRoaXMuY3JlYXRlV2lkZ2V0KHtcclxuICAgICAgICAuLi5jb25maWcsXHJcbiAgICAgICAgbGF5b3V0RGVmaW5pdGlvbixcclxuICAgICAgfSk7XHJcbiAgICAgIGlmICh3aWRnZXQpIHtcclxuICAgICAgICB3aWRnZXRzLnB1c2god2lkZ2V0KTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcblxyXG4gICAgcmV0dXJuIHdpZGdldHM7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGNyZWF0ZVdpZGdldChcclxuICAgIGNvbmZpZzogU21hcnRmb3JtTGF5b3V0Q3JlYXRlV2lkZ2V0Q29uZmlnXHJcbiAgKTogU21hcnRGb3JtV2lkZ2V0PGFueT4gfCB1bmRlZmluZWQge1xyXG4gICAgc3dpdGNoIChjb25maWcubGF5b3V0RGVmaW5pdGlvbj8udHlwZSkge1xyXG4gICAgICBjYXNlIFNtYXJ0Rm9ybVdpZGdldFR5cGUuQ09OVEFJTkVSOlxyXG4gICAgICAgIHJldHVybiB0aGlzLmNyZWF0ZUNvbnRhaW5lcihjb25maWcsIGNvbmZpZy5sYXlvdXREZWZpbml0aW9uKTtcclxuICAgICAgY2FzZSBTbWFydEZvcm1XaWRnZXRUeXBlLkxBQkVMOlxyXG4gICAgICAgIHJldHVybiB0aGlzLmNyZWF0ZUxhYmVsKGNvbmZpZy5sYXlvdXREZWZpbml0aW9uKTtcclxuICAgICAgY2FzZSBTbWFydEZvcm1XaWRnZXRUeXBlLlRFWFRfRklFTEQ6XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuY3JlYXRlVGV4dEZpZWxkKGNvbmZpZy5sYXlvdXREZWZpbml0aW9uKTtcclxuICAgICAgY2FzZSBTbWFydEZvcm1XaWRnZXRUeXBlLlRFWFRfRklFTERfQ0hJUFM6XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuY3JlYXRlVGV4dEZpZWxkQ2hpcHMoY29uZmlnLmxheW91dERlZmluaXRpb24pO1xyXG4gICAgICBjYXNlIFNtYXJ0Rm9ybVdpZGdldFR5cGUuVEVYVF9GSUVMRF9OVU1CRVI6XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuY3JlYXRlVGV4dEZpZWxkTnVtYmVyKGNvbmZpZy5sYXlvdXREZWZpbml0aW9uKTtcclxuICAgICAgY2FzZSBTbWFydEZvcm1XaWRnZXRUeXBlLlRFWFRfRklFTEQ6XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuY3JlYXRlVGV4dEZpZWxkKGNvbmZpZy5sYXlvdXREZWZpbml0aW9uKTtcclxuICAgICAgY2FzZSBTbWFydEZvcm1XaWRnZXRUeXBlLlRFWFRfQk9YOlxyXG4gICAgICAgIHJldHVybiB0aGlzLmNyZWF0ZVRleHRCb3goY29uZmlnLmxheW91dERlZmluaXRpb24pO1xyXG4gICAgICBjYXNlIFNtYXJ0Rm9ybVdpZGdldFR5cGUuVE9HR0xFOlxyXG4gICAgICAgIHJldHVybiB0aGlzLmNyZWF0ZVRvZ2dsZShjb25maWcubGF5b3V0RGVmaW5pdGlvbik7XHJcbiAgICAgIGNhc2UgU21hcnRGb3JtV2lkZ2V0VHlwZS5SQURJT19CVVRUT046XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuY3JlYXRlUmFkaW9CdXR0b24oY29uZmlnLmxheW91dERlZmluaXRpb24pO1xyXG4gICAgICBjYXNlIFNtYXJ0Rm9ybVdpZGdldFR5cGUuQ0hFQ0tfQk9YOlxyXG4gICAgICAgIHJldHVybiB0aGlzLmNyZWF0ZUNoZWNrQm94KGNvbmZpZy5sYXlvdXREZWZpbml0aW9uKTtcclxuICAgICAgY2FzZSBTbWFydEZvcm1XaWRnZXRUeXBlLlNFTEVDVDpcclxuICAgICAgICByZXR1cm4gdGhpcy5jcmVhdGVTZWxlY3QoY29uZmlnLmxheW91dERlZmluaXRpb24sIGNvbmZpZy5tb2RlbCk7XHJcbiAgICAgIGNhc2UgU21hcnRGb3JtV2lkZ2V0VHlwZS5TRUxFQ1RfTVVMVElQTEU6XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuY3JlYXRlU2VsZWN0TXVsdGlwbGUoY29uZmlnLmxheW91dERlZmluaXRpb24pO1xyXG4gICAgICBjYXNlIFNtYXJ0Rm9ybVdpZGdldFR5cGUuREFURV9QSUNLRVI6XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuY3JlYXRlRGF0ZVBpY2tlcihjb25maWcubGF5b3V0RGVmaW5pdGlvbik7XHJcbiAgICAgIGNhc2UgU21hcnRGb3JtV2lkZ2V0VHlwZS5EQVRFX1RJTUVfUElDS0VSOlxyXG4gICAgICAgIHJldHVybiB0aGlzLmNyZWF0ZURhdGVUaW1lUGlja2VyKGNvbmZpZy5sYXlvdXREZWZpbml0aW9uKTtcclxuICAgICAgY2FzZSBTbWFydEZvcm1XaWRnZXRUeXBlLklNQUdFOlxyXG4gICAgICAgIHJldHVybiB0aGlzLmNyZWF0ZUltYWdlKGNvbmZpZy5sYXlvdXREZWZpbml0aW9uKTtcclxuICAgICAgY2FzZSBTbWFydEZvcm1XaWRnZXRUeXBlLlNWRzpcclxuICAgICAgICByZXR1cm4gdGhpcy5jcmVhdGVTdmcoY29uZmlnLmxheW91dERlZmluaXRpb24pO1xyXG4gICAgICBjYXNlIFNtYXJ0Rm9ybVdpZGdldFR5cGUuQlVUVE9OOlxyXG4gICAgICAgIHJldHVybiB0aGlzLmNyZWF0ZUJ1dHRvbihjb25maWcpO1xyXG4gICAgICBjYXNlIFNtYXJ0Rm9ybVdpZGdldFR5cGUuRElWSURFUjpcclxuICAgICAgICByZXR1cm4gdGhpcy5jcmVhdGVEaXZpZGVyKGNvbmZpZy5sYXlvdXREZWZpbml0aW9uKTtcclxuICAgICAgY2FzZSBTbWFydEZvcm1XaWRnZXRUeXBlLlJJQ0hfVEVYVDpcclxuICAgICAgICByZXR1cm4gdGhpcy5jcmVhdGVSaWNoVGV4dChjb25maWcubGF5b3V0RGVmaW5pdGlvbik7XHJcbiAgICAgIGNhc2UgU21hcnRGb3JtV2lkZ2V0VHlwZS5GSUxFX1VQTE9BREVSOlxyXG4gICAgICAgIGlmICghKGNvbmZpZy5sYXlvdXREZWZpbml0aW9uIGFzIFNtYXJ0RmlsZVVwbG9hZGVyKS51cGxvYWRDYWxsYmFjaykge1xyXG4gICAgICAgICAgdGhyb3cgRXJyb3IoJ05vIHVwbG9hZCBmdW5jdGlvbiBpbmplY3RlZC4nKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuY3JlYXRlRmlsZVVwbG9hZGVyKGNvbmZpZy5sYXlvdXREZWZpbml0aW9uIGFzIFNtYXJ0RmlsZVVwbG9hZGVyKTtcclxuICAgICAgY2FzZSBTbWFydEZvcm1XaWRnZXRUeXBlLk1BVFJJWDpcclxuICAgICAgICByZXR1cm4gdGhpcy5jcmVhdGVNYXRyaXgoY29uZmlnLmxheW91dERlZmluaXRpb24pO1xyXG4gICAgICBjYXNlIFNtYXJ0Rm9ybVdpZGdldFR5cGUuU09SVEFCTEU6XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuY3JlYXRlU29ydGFibGUoY29uZmlnLmxheW91dERlZmluaXRpb24pO1xyXG4gICAgICBjYXNlIFNtYXJ0Rm9ybVdpZGdldFR5cGUuTU9OVEhfUElDS0VSOlxyXG4gICAgICAgIHJldHVybiB0aGlzLmNyZWF0ZU1vbnRoUGlja2VyKGNvbmZpZy5sYXlvdXREZWZpbml0aW9uKTtcclxuICAgICAgY2FzZSBTbWFydEZvcm1XaWRnZXRUeXBlLllPVVRVQkVfUExBWUVSOlxyXG4gICAgICAgIHJldHVybiB0aGlzLmNyZWF0ZVlvdXR1YmVQbGF5ZXIoY29uZmlnLmxheW91dERlZmluaXRpb24pO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBjcmVhdGVNb250aFBpY2tlcihsYXlvdXREZWZpbml0aW9uOiBTbWFydFdpZGdldERlZmluaXRpb24pOiBTbWFydEZvcm1XaWRnZXQ8YW55PiB7XHJcbiAgICBsZXQgd2lkZ2V0OiBTbWFydEZvcm1XaWRnZXQ8YW55PiA9IHtcclxuICAgICAga2V5OiBsYXlvdXREZWZpbml0aW9uLmtleSxcclxuICAgICAgdmFsdWVDaGFuZ2VNb2RlOiBsYXlvdXREZWZpbml0aW9uLnZhbHVlQ2hhbmdlTW9kZSxcclxuICAgICAgdHlwZTogU21hcnRGb3JtV2lkZ2V0VHlwZS5NT05USF9QSUNLRVIsXHJcbiAgICAgIGxhYmVsOiBsYXlvdXREZWZpbml0aW9uLmxhYmVsLFxyXG4gICAgICBzaG93TGFiZWw6IGxheW91dERlZmluaXRpb24uc2hvd0xhYmVsLFxyXG4gICAgfTtcclxuICAgIHJldHVybiB3aWRnZXQ7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGNyZWF0ZU1hdHJpeChsYXlvdXREZWZpbml0aW9uOiBTbWFydFdpZGdldERlZmluaXRpb24pOiBTbWFydEZvcm1XaWRnZXQ8YW55PiB7XHJcbiAgICBsZXQgd2lkZ2V0OiBTbWFydEZvcm1XaWRnZXQ8YW55PiA9IHtcclxuICAgICAgdHlwZTogU21hcnRGb3JtV2lkZ2V0VHlwZS5NQVRSSVgsXHJcbiAgICAgIGxhYmVsOiBsYXlvdXREZWZpbml0aW9uLmxhYmVsLFxyXG4gICAgICBrZXk6IGxheW91dERlZmluaXRpb24ua2V5LFxyXG4gICAgICB2YWx1ZUNoYW5nZU1vZGU6IGxheW91dERlZmluaXRpb24udmFsdWVDaGFuZ2VNb2RlLFxyXG4gICAgICBzaG93TGFiZWw6IGxheW91dERlZmluaXRpb24uc2hvd0xhYmVsLFxyXG4gICAgICBpc011bHRpcGxlOiBsYXlvdXREZWZpbml0aW9uLm1hdHJpeD8ubXVsdGlTZWxlY3QsXHJcbiAgICAgIHZhbHVlOiBsYXlvdXREZWZpbml0aW9uLm1hdHJpeCxcclxuICAgIH07XHJcbiAgICByZXR1cm4gd2lkZ2V0O1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBjcmVhdGVTb3J0YWJsZShsYXlvdXREZWZpbml0aW9uOiBTbWFydFdpZGdldERlZmluaXRpb24pIHtcclxuICAgIGxldCB3aWRnZXQ6IFNtYXJ0Rm9ybVdpZGdldDxhbnk+ID0ge1xyXG4gICAgICBrZXk6IGxheW91dERlZmluaXRpb24ua2V5LFxyXG4gICAgICB2YWx1ZUNoYW5nZU1vZGU6IGxheW91dERlZmluaXRpb24udmFsdWVDaGFuZ2VNb2RlLFxyXG4gICAgICBsYWJlbDogbGF5b3V0RGVmaW5pdGlvbi5sYWJlbCxcclxuICAgICAgc2hvd0xhYmVsOiBsYXlvdXREZWZpbml0aW9uLnNob3dMYWJlbCxcclxuICAgICAgdHlwZTogU21hcnRGb3JtV2lkZ2V0VHlwZS5TT1JUQUJMRSxcclxuICAgIH07XHJcbiAgICByZXR1cm4gd2lkZ2V0O1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBjcmVhdGVMYWJlbChsYXlvdXREZWZpbml0aW9uOiBTbWFydFdpZGdldERlZmluaXRpb24pOiBTbWFydEZvcm1XaWRnZXQ8YW55PiB7XHJcbiAgICBsZXQgd2lkZ2V0OiBTbWFydEZvcm1XaWRnZXQ8YW55PiA9IHtcclxuICAgICAgdHlwZTogU21hcnRGb3JtV2lkZ2V0VHlwZS5MQUJFTCxcclxuICAgICAgbGFiZWw6IGxheW91dERlZmluaXRpb24ubGFiZWwsXHJcbiAgICAgIHdpZGdldERlc2NyaXB0aW9uOiBsYXlvdXREZWZpbml0aW9uLndpZGdldERlc2NyaXB0aW9uLFxyXG4gICAgICBjc3NDbGFzczogbGF5b3V0RGVmaW5pdGlvbi5jc3NDbGFzcyxcclxuICAgICAgc3R5bGU6IGxheW91dERlZmluaXRpb24uc3R5bGUsXHJcbiAgICB9O1xyXG4gICAgcmV0dXJuIHdpZGdldDtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgY3JlYXRlQ29udGFpbmVyKFxyXG4gICAgY29uZmlnOiBTbWFydGZvcm1MYXlvdXRDcmVhdGVXaWRnZXRDb25maWcsXHJcbiAgICBsYXlvdXREZWZpbml0aW9uOiBTbWFydFdpZGdldERlZmluaXRpb25cclxuICApOiBTbWFydEZvcm1XaWRnZXQ8YW55PiB7XHJcbiAgICBsZXQgdmFsdWVMaXN0OiBTbWFydEZvcm1XaWRnZXQ8YW55PltdID0gW107XHJcblxyXG4gICAgbGF5b3V0RGVmaW5pdGlvbi5jaGlsZHJlbkNvbXBvbmVudHM/LmZvckVhY2goKGxheW91dERlZmluaXRpb246IFNtYXJ0V2lkZ2V0RGVmaW5pdGlvbikgPT4ge1xyXG4gICAgICBsZXQgd2lkZ2V0ID0gdGhpcy5jcmVhdGVXaWRnZXQoe1xyXG4gICAgICAgIC4uLmNvbmZpZyxcclxuICAgICAgICBsYXlvdXREZWZpbml0aW9uLFxyXG4gICAgICB9KTtcclxuICAgICAgaWYgKHdpZGdldCkge1xyXG4gICAgICAgIHZhbHVlTGlzdC5wdXNoKHdpZGdldCk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG5cclxuICAgIGxldCB3aWRnZXQ6IFNtYXJ0Rm9ybVdpZGdldDxhbnk+ID0ge1xyXG4gICAgICBrZXk6IGxheW91dERlZmluaXRpb24ua2V5LFxyXG4gICAgICB2YWx1ZUNoYW5nZU1vZGU6IGxheW91dERlZmluaXRpb24udmFsdWVDaGFuZ2VNb2RlLFxyXG4gICAgICB0eXBlOiBTbWFydEZvcm1XaWRnZXRUeXBlLkNPTlRBSU5FUixcclxuICAgICAgY3NzQ2xhc3M6IGxheW91dERlZmluaXRpb24uY3NzQ2xhc3MsXHJcbiAgICAgIHN0eWxlOiBsYXlvdXREZWZpbml0aW9uLnN0eWxlLFxyXG4gICAgICBkaXJlY3Rpb246IGxheW91dERlZmluaXRpb24uZGlyZWN0aW9uID8/IFNtYXJ0Rm9ybVdpZGdldERpcmVjdGlvbi5DT0wsXHJcbiAgICAgIHZhbHVlTGlzdCxcclxuICAgIH07XHJcblxyXG4gICAgcmV0dXJuIHdpZGdldDtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgY3JlYXRlVGV4dEZpZWxkKGxheW91dERlZmluaXRpb246IFNtYXJ0V2lkZ2V0RGVmaW5pdGlvbik6IFNtYXJ0Rm9ybVdpZGdldDxhbnk+IHtcclxuICAgIGxldCB3aWRnZXQ6IFNtYXJ0Rm9ybVdpZGdldDxhbnk+ID0ge1xyXG4gICAgICB0eXBlOiBTbWFydEZvcm1XaWRnZXRUeXBlLlRFWFRfRklFTEQsXHJcbiAgICAgIGtleTogbGF5b3V0RGVmaW5pdGlvbi5rZXksXHJcbiAgICAgIHZhbHVlQ2hhbmdlTW9kZTogbGF5b3V0RGVmaW5pdGlvbi52YWx1ZUNoYW5nZU1vZGUsXHJcbiAgICAgIGxhYmVsOiBsYXlvdXREZWZpbml0aW9uLmxhYmVsLFxyXG4gICAgICBwbGFjZWhvbGRlcjogbGF5b3V0RGVmaW5pdGlvbi5wbGFjZWhvbGRlcixcclxuICAgICAgcHJlZml4OiBsYXlvdXREZWZpbml0aW9uLnByZWZpeCxcclxuICAgICAgc3VmZml4OiBsYXlvdXREZWZpbml0aW9uLnN1ZmZpeCxcclxuICAgICAgbWFzazogbGF5b3V0RGVmaW5pdGlvbi5tYXNrLFxyXG4gICAgICBpY29uOiBsYXlvdXREZWZpbml0aW9uLmljb24sXHJcbiAgICAgIGljb25Db2xvcjogbGF5b3V0RGVmaW5pdGlvbi5pY29uQ29sb3IsXHJcbiAgICAgIGljb25Qb3NpdGlvbjogbGF5b3V0RGVmaW5pdGlvbi5pY29uUG9zaXRpb24sXHJcbiAgICAgIHNob3dMYWJlbDogbGF5b3V0RGVmaW5pdGlvbi5zaG93TGFiZWwsXHJcbiAgICAgIGNzc0NsYXNzOiBsYXlvdXREZWZpbml0aW9uLmNzc0NsYXNzLFxyXG4gICAgICBjc3NMYWJlbENsYXNzOiBsYXlvdXREZWZpbml0aW9uLmNzc0xhYmVsQ2xhc3MsXHJcbiAgICAgIHN0eWxlOiBsYXlvdXREZWZpbml0aW9uLnN0eWxlLFxyXG4gICAgICBsYWJlbFN0eWxlOiBsYXlvdXREZWZpbml0aW9uLmxhYmVsU3R5bGUsXHJcbiAgICAgIGlzUGFzc3dvcmQ6IGxheW91dERlZmluaXRpb24uaXNQYXNzd29yZCxcclxuICAgICAgc2VsZWN0aW9uOiBsYXlvdXREZWZpbml0aW9uLnNlbGVjdGlvbixcclxuICAgICAgZmlsdGVyRXJyb3JNZXNzYWdlOiBsYXlvdXREZWZpbml0aW9uLmZpbHRlckVycm9yTWVzc2FnZSxcclxuICAgICAgaGludDogbGF5b3V0RGVmaW5pdGlvbi5oaW50LFxyXG4gICAgICBtYXhMZW5ndGg6IGxheW91dERlZmluaXRpb24ubWF4TGVuZ3RoLFxyXG4gICAgICBzaG93Q2hhcmFjdGVyTGltaXRTdWZmaXg6IGxheW91dERlZmluaXRpb24uc2hvd0NoYXJhY3RlckxpbWl0U3VmZml4LFxyXG4gICAgICB0b29sYmFySWQ6IGxheW91dERlZmluaXRpb24udG9vbGJhcklkLFxyXG4gICAgICBpbnB1dE1vZGU6IGxheW91dERlZmluaXRpb24uaW5wdXRNb2RlLFxyXG4gICAgfTtcclxuICAgIHJldHVybiB3aWRnZXQ7XHJcbiAgfVxyXG4gIHByaXZhdGUgY3JlYXRlVGV4dEZpZWxkQ2hpcHMobGF5b3V0RGVmaW5pdGlvbjogU21hcnRXaWRnZXREZWZpbml0aW9uKTogU21hcnRGb3JtV2lkZ2V0PGFueT4ge1xyXG4gICAgbGV0IHdpZGdldDogU21hcnRGb3JtV2lkZ2V0PGFueT4gPSB7XHJcbiAgICAgIHR5cGU6IFNtYXJ0Rm9ybVdpZGdldFR5cGUuVEVYVF9GSUVMRF9DSElQUyxcclxuICAgICAga2V5OiBsYXlvdXREZWZpbml0aW9uLmtleSxcclxuICAgICAgdmFsdWVDaGFuZ2VNb2RlOiBsYXlvdXREZWZpbml0aW9uLnZhbHVlQ2hhbmdlTW9kZSxcclxuICAgICAgbGFiZWw6IGxheW91dERlZmluaXRpb24ubGFiZWwsXHJcbiAgICAgIHBsYWNlaG9sZGVyOiBsYXlvdXREZWZpbml0aW9uLnBsYWNlaG9sZGVyLFxyXG4gICAgICBzaG93TGFiZWw6IGxheW91dERlZmluaXRpb24uc2hvd0xhYmVsLFxyXG4gICAgICBjc3NDbGFzczogbGF5b3V0RGVmaW5pdGlvbi5jc3NDbGFzcyxcclxuICAgICAgY3NzTGFiZWxDbGFzczogbGF5b3V0RGVmaW5pdGlvbi5jc3NMYWJlbENsYXNzLFxyXG4gICAgICBzdHlsZTogbGF5b3V0RGVmaW5pdGlvbi5zdHlsZSxcclxuICAgICAgbGFiZWxTdHlsZTogbGF5b3V0RGVmaW5pdGlvbi5sYWJlbFN0eWxlLFxyXG4gICAgICB2YWx1ZUxpc3Q6IFtdLFxyXG4gICAgfTtcclxuICAgIGlmIChsYXlvdXREZWZpbml0aW9uLnZhbHVlcykge1xyXG4gICAgICB3aWRnZXQudmFsdWVMaXN0ID0gbGF5b3V0RGVmaW5pdGlvbi52YWx1ZXMubWFwKCh2YWx1ZTogVmFsdWUpID0+IHtcclxuICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAga2V5OiB2YWx1ZS5jb2RlISxcclxuICAgICAgICAgIGxhYmVsOiB2YWx1ZS5kaXNwbGF5VmFsdWUsXHJcbiAgICAgICAgICB0eXBlOiBTbWFydEZvcm1XaWRnZXRUeXBlLklURU0sXHJcbiAgICAgICAgICB2YWx1ZTogdmFsdWUuY29kZSxcclxuICAgICAgICB9O1xyXG4gICAgICB9KTtcclxuICAgIH1cclxuICAgIHJldHVybiB3aWRnZXQ7XHJcbiAgfVxyXG4gIHByaXZhdGUgY3JlYXRlVGV4dEZpZWxkTnVtYmVyKGxheW91dERlZmluaXRpb246IFNtYXJ0V2lkZ2V0RGVmaW5pdGlvbik6IFNtYXJ0Rm9ybVdpZGdldDxhbnk+IHtcclxuICAgIGxldCB3aWRnZXQ6IFNtYXJ0Rm9ybVdpZGdldDxhbnk+ID0ge1xyXG4gICAgICB0eXBlOiBTbWFydEZvcm1XaWRnZXRUeXBlLlRFWFRfRklFTERfTlVNQkVSLFxyXG4gICAgICBrZXk6IGxheW91dERlZmluaXRpb24ua2V5LFxyXG4gICAgICB2YWx1ZUNoYW5nZU1vZGU6IGxheW91dERlZmluaXRpb24udmFsdWVDaGFuZ2VNb2RlLFxyXG4gICAgICBsYWJlbDogbGF5b3V0RGVmaW5pdGlvbi5sYWJlbCxcclxuICAgICAgcGxhY2Vob2xkZXI6IGxheW91dERlZmluaXRpb24ucGxhY2Vob2xkZXIsXHJcbiAgICAgIHByZWZpeDogbGF5b3V0RGVmaW5pdGlvbi5wcmVmaXgsXHJcbiAgICAgIHN1ZmZpeDogbGF5b3V0RGVmaW5pdGlvbi5zdWZmaXgsXHJcbiAgICAgIGljb246IGxheW91dERlZmluaXRpb24uaWNvbixcclxuICAgICAgaWNvbkNvbG9yOiBsYXlvdXREZWZpbml0aW9uLmljb25Db2xvcixcclxuICAgICAgc2hvd0xhYmVsOiBsYXlvdXREZWZpbml0aW9uLnNob3dMYWJlbCxcclxuICAgICAgY3NzQ2xhc3M6IGxheW91dERlZmluaXRpb24uY3NzQ2xhc3MsXHJcbiAgICAgIGNzc0xhYmVsQ2xhc3M6IGxheW91dERlZmluaXRpb24uY3NzTGFiZWxDbGFzcyxcclxuICAgICAgc3R5bGU6IGxheW91dERlZmluaXRpb24uc3R5bGUsXHJcbiAgICAgIGxhYmVsU3R5bGU6IGxheW91dERlZmluaXRpb24ubGFiZWxTdHlsZSxcclxuICAgICAgaGludDogbGF5b3V0RGVmaW5pdGlvbi5oaW50LFxyXG4gICAgfTtcclxuICAgIHJldHVybiB3aWRnZXQ7XHJcbiAgfVxyXG4gIHByaXZhdGUgY3JlYXRlVGV4dEJveChsYXlvdXREZWZpbml0aW9uOiBTbWFydFdpZGdldERlZmluaXRpb24pOiBTbWFydEZvcm1XaWRnZXQ8YW55PiB7XHJcbiAgICBsZXQgd2lkZ2V0OiBTbWFydEZvcm1XaWRnZXQ8YW55PiA9IHtcclxuICAgICAgdHlwZTogU21hcnRGb3JtV2lkZ2V0VHlwZS5URVhUX0JPWCxcclxuICAgICAga2V5OiBsYXlvdXREZWZpbml0aW9uLmtleSxcclxuICAgICAgdmFsdWVDaGFuZ2VNb2RlOiBsYXlvdXREZWZpbml0aW9uLnZhbHVlQ2hhbmdlTW9kZSxcclxuICAgICAgbGFiZWw6IGxheW91dERlZmluaXRpb24ubGFiZWwsXHJcbiAgICAgIHBsYWNlaG9sZGVyOiBsYXlvdXREZWZpbml0aW9uLnBsYWNlaG9sZGVyLFxyXG4gICAgICBzaG93TGFiZWw6IGxheW91dERlZmluaXRpb24uc2hvd0xhYmVsLFxyXG4gICAgICBjc3NDbGFzczogbGF5b3V0RGVmaW5pdGlvbi5jc3NDbGFzcyxcclxuICAgICAgY3NzTGFiZWxDbGFzczogbGF5b3V0RGVmaW5pdGlvbi5jc3NMYWJlbENsYXNzLFxyXG4gICAgICBzdHlsZTogbGF5b3V0RGVmaW5pdGlvbi5zdHlsZSxcclxuICAgICAgbGFiZWxTdHlsZTogbGF5b3V0RGVmaW5pdGlvbi5sYWJlbFN0eWxlLFxyXG4gICAgICBoaW50OiBsYXlvdXREZWZpbml0aW9uLmhpbnQsXHJcbiAgICAgIG1heExlbmd0aDogbGF5b3V0RGVmaW5pdGlvbi5tYXhMZW5ndGgsXHJcbiAgICAgIHNob3dDaGFyYWN0ZXJMaW1pdFN1ZmZpeDogbGF5b3V0RGVmaW5pdGlvbi5zaG93Q2hhcmFjdGVyTGltaXRTdWZmaXgsXHJcbiAgICB9O1xyXG4gICAgcmV0dXJuIHdpZGdldDtcclxuICB9XHJcbiAgcHJpdmF0ZSBjcmVhdGVSaWNoVGV4dChsYXlvdXREZWZpbml0aW9uOiBTbWFydFdpZGdldERlZmluaXRpb24pOiBTbWFydEZvcm1XaWRnZXQ8YW55PiB7XHJcbiAgICBsZXQgcXVpbGxNb2R1bGVzOiBRdWlsbE1vZHVsZXM7XHJcbiAgICBpZiAobGF5b3V0RGVmaW5pdGlvbi5wcm9wZXJ0aWVzICYmIGxheW91dERlZmluaXRpb24ucHJvcGVydGllc1sncXVpbGxNb2R1bGVzJ10pIHtcclxuICAgICAgcXVpbGxNb2R1bGVzID0gbGF5b3V0RGVmaW5pdGlvbi5wcm9wZXJ0aWVzWydxdWlsbE1vZHVsZXMnXSBhcyBRdWlsbE1vZHVsZXM7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBxdWlsbE1vZHVsZXMgPSBTbWFydGZvcm1MYXlvdXREZWZpbml0aW9uU2VydmljZS5ERUZBVUxUX1FVSUxMX01PRFVMRVM7XHJcbiAgICB9XHJcblxyXG4gICAgbGV0IHdpZGdldDogU21hcnRGb3JtV2lkZ2V0PGFueT4gPSB7XHJcbiAgICAgIHR5cGU6IFNtYXJ0Rm9ybVdpZGdldFR5cGUuUklDSF9URVhULFxyXG4gICAgICBrZXk6IGxheW91dERlZmluaXRpb24ua2V5LFxyXG4gICAgICB2YWx1ZUNoYW5nZU1vZGU6IGxheW91dERlZmluaXRpb24udmFsdWVDaGFuZ2VNb2RlLFxyXG4gICAgICBsYWJlbDogbGF5b3V0RGVmaW5pdGlvbi5sYWJlbCxcclxuICAgICAgcGxhY2Vob2xkZXI6IGxheW91dERlZmluaXRpb24ucGxhY2Vob2xkZXIsXHJcbiAgICAgIHNob3dMYWJlbDogbGF5b3V0RGVmaW5pdGlvbi5zaG93TGFiZWwsXHJcbiAgICAgIGNzc0NsYXNzOiBsYXlvdXREZWZpbml0aW9uLmNzc0NsYXNzLFxyXG4gICAgICBjc3NMYWJlbENsYXNzOiBsYXlvdXREZWZpbml0aW9uLmNzc0xhYmVsQ2xhc3MsXHJcbiAgICAgIHN0eWxlOiBsYXlvdXREZWZpbml0aW9uLnN0eWxlLFxyXG4gICAgICBsYWJlbFN0eWxlOiBsYXlvdXREZWZpbml0aW9uLmxhYmVsU3R5bGUsXHJcbiAgICAgIHF1aWxsTW9kdWxlcyxcclxuICAgICAgbWF4TGVuZ3RoOiBsYXlvdXREZWZpbml0aW9uLm1heExlbmd0aCxcclxuICAgICAgc2hvd0NoYXJhY3RlckxpbWl0U3VmZml4OiBsYXlvdXREZWZpbml0aW9uLnNob3dDaGFyYWN0ZXJMaW1pdFN1ZmZpeCxcclxuICAgIH07XHJcbiAgICByZXR1cm4gd2lkZ2V0O1xyXG4gIH1cclxuICBwcml2YXRlIGNyZWF0ZVRvZ2dsZShsYXlvdXREZWZpbml0aW9uOiBTbWFydFdpZGdldERlZmluaXRpb24pOiBTbWFydEZvcm1XaWRnZXQ8YW55PiB7XHJcbiAgICBsZXQgd2lkZ2V0OiBTbWFydEZvcm1XaWRnZXQ8YW55PiA9IHtcclxuICAgICAgdHlwZTogU21hcnRGb3JtV2lkZ2V0VHlwZS5UT0dHTEUsXHJcbiAgICAgIGtleTogbGF5b3V0RGVmaW5pdGlvbi5rZXksXHJcbiAgICAgIHZhbHVlQ2hhbmdlTW9kZTogbGF5b3V0RGVmaW5pdGlvbi52YWx1ZUNoYW5nZU1vZGUsXHJcbiAgICAgIGxhYmVsOiBsYXlvdXREZWZpbml0aW9uLmxhYmVsLFxyXG4gICAgICBzaG93TGFiZWw6IGxheW91dERlZmluaXRpb24uc2hvd0xhYmVsLFxyXG4gICAgICBjc3NDbGFzczogbGF5b3V0RGVmaW5pdGlvbi5jc3NDbGFzcyxcclxuICAgICAgY3NzTGFiZWxDbGFzczogbGF5b3V0RGVmaW5pdGlvbi5jc3NMYWJlbENsYXNzLFxyXG4gICAgICBzdHlsZTogbGF5b3V0RGVmaW5pdGlvbi5zdHlsZSxcclxuICAgICAgbGFiZWxTdHlsZTogbGF5b3V0RGVmaW5pdGlvbi5sYWJlbFN0eWxlLFxyXG4gICAgICBoaW50OiBsYXlvdXREZWZpbml0aW9uLmhpbnQsXHJcbiAgICB9O1xyXG4gICAgcmV0dXJuIHdpZGdldDtcclxuICB9XHJcbiAgcHJpdmF0ZSBjcmVhdGVSYWRpb0J1dHRvbihsYXlvdXREZWZpbml0aW9uOiBTbWFydFdpZGdldERlZmluaXRpb24pOiBTbWFydEZvcm1XaWRnZXQ8YW55PiB7XHJcbiAgICBsZXQgd2lkZ2V0OiBTbWFydEZvcm1XaWRnZXQ8YW55PiA9IHtcclxuICAgICAgdHlwZTogU21hcnRGb3JtV2lkZ2V0VHlwZS5SQURJT19CVVRUT04sXHJcbiAgICAgIGtleTogbGF5b3V0RGVmaW5pdGlvbi5rZXksXHJcbiAgICAgIHZhbHVlQ2hhbmdlTW9kZTogbGF5b3V0RGVmaW5pdGlvbi52YWx1ZUNoYW5nZU1vZGUsXHJcbiAgICAgIGxhYmVsOiBsYXlvdXREZWZpbml0aW9uLmxhYmVsLFxyXG4gICAgICBzaG93TGFiZWw6IGxheW91dERlZmluaXRpb24uc2hvd0xhYmVsLFxyXG4gICAgICBjc3NDbGFzczogbGF5b3V0RGVmaW5pdGlvbi5jc3NDbGFzcyxcclxuICAgICAgY3NzTGFiZWxDbGFzczogbGF5b3V0RGVmaW5pdGlvbi5jc3NMYWJlbENsYXNzLFxyXG4gICAgICBzdHlsZTogbGF5b3V0RGVmaW5pdGlvbi5zdHlsZSxcclxuICAgICAgbGFiZWxTdHlsZTogbGF5b3V0RGVmaW5pdGlvbi5sYWJlbFN0eWxlLFxyXG4gICAgICB2YWx1ZUxpc3Q6IFtdLFxyXG4gICAgICBzZWxlY3Rpb246IGxheW91dERlZmluaXRpb24uc2VsZWN0aW9uLFxyXG4gICAgICBoaW50OiBsYXlvdXREZWZpbml0aW9uLmhpbnQsXHJcbiAgICB9O1xyXG5cclxuICAgIGlmIChsYXlvdXREZWZpbml0aW9uLnZhbHVlcykge1xyXG4gICAgICB3aWRnZXQudmFsdWVMaXN0ID0gbGF5b3V0RGVmaW5pdGlvbi52YWx1ZXMubWFwKCh2YWx1ZTogVmFsdWUpID0+IHtcclxuICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAga2V5OiB2YWx1ZS5jb2RlISxcclxuICAgICAgICAgIGxhYmVsOiB2YWx1ZS5kaXNwbGF5VmFsdWUsXHJcbiAgICAgICAgICB0eXBlOiBTbWFydEZvcm1XaWRnZXRUeXBlLklURU0sXHJcbiAgICAgICAgICB2YWx1ZTogdmFsdWUuY29kZSxcclxuICAgICAgICB9O1xyXG4gICAgICB9KTtcclxuICAgIH1cclxuICAgIHJldHVybiB3aWRnZXQ7XHJcbiAgfVxyXG4gIHByaXZhdGUgY3JlYXRlQ2hlY2tCb3gobGF5b3V0RGVmaW5pdGlvbjogU21hcnRXaWRnZXREZWZpbml0aW9uKTogU21hcnRGb3JtV2lkZ2V0PGFueT4ge1xyXG4gICAgbGV0IHdpZGdldDogU21hcnRGb3JtV2lkZ2V0PGFueT4gPSB7XHJcbiAgICAgIHR5cGU6IFNtYXJ0Rm9ybVdpZGdldFR5cGUuQ0hFQ0tfQk9YXzIsXHJcbiAgICAgIGtleTogbGF5b3V0RGVmaW5pdGlvbi5rZXksXHJcbiAgICAgIHZhbHVlQ2hhbmdlTW9kZTogbGF5b3V0RGVmaW5pdGlvbi52YWx1ZUNoYW5nZU1vZGUsXHJcbiAgICAgIGxhYmVsOiBsYXlvdXREZWZpbml0aW9uLmxhYmVsLFxyXG4gICAgICBzaG93TGFiZWw6IGxheW91dERlZmluaXRpb24uc2hvd0xhYmVsLFxyXG4gICAgICBjc3NDbGFzczogbGF5b3V0RGVmaW5pdGlvbi5jc3NDbGFzcyxcclxuICAgICAgY3NzTGFiZWxDbGFzczogbGF5b3V0RGVmaW5pdGlvbi5jc3NMYWJlbENsYXNzLFxyXG4gICAgICBzdHlsZTogbGF5b3V0RGVmaW5pdGlvbi5zdHlsZSxcclxuICAgICAgbGFiZWxTdHlsZTogbGF5b3V0RGVmaW5pdGlvbi5sYWJlbFN0eWxlLFxyXG4gICAgICB2YWx1ZUxpc3Q6IFtdLFxyXG4gICAgICBzZWxlY3Rpb246IGxheW91dERlZmluaXRpb24uc2VsZWN0aW9uLFxyXG4gICAgICBoaW50OiBsYXlvdXREZWZpbml0aW9uLmhpbnQsXHJcbiAgICB9O1xyXG4gICAgaWYgKGxheW91dERlZmluaXRpb24udmFsdWVzKSB7XHJcbiAgICAgIHdpZGdldC52YWx1ZUxpc3QgPSBsYXlvdXREZWZpbml0aW9uLnZhbHVlcy5tYXAoKHZhbHVlOiBWYWx1ZSkgPT4ge1xyXG4gICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICBrZXk6IHZhbHVlLmNvZGUhLFxyXG4gICAgICAgICAgbGFiZWw6IHZhbHVlLmRpc3BsYXlWYWx1ZSxcclxuICAgICAgICAgIHR5cGU6IFNtYXJ0Rm9ybVdpZGdldFR5cGUuSVRFTSxcclxuICAgICAgICAgIHZhbHVlOiBmYWxzZSxcclxuICAgICAgICB9O1xyXG4gICAgICB9KTtcclxuICAgIH1cclxuICAgIHJldHVybiB3aWRnZXQ7XHJcbiAgfVxyXG4gIHByaXZhdGUgY3JlYXRlU2VsZWN0KGxheW91dERlZmluaXRpb246IFNtYXJ0V2lkZ2V0RGVmaW5pdGlvbiwgbW9kZWw/OiBhbnkpOiBTbWFydEZvcm1XaWRnZXQ8YW55PiB7XHJcbiAgICBsZXQgd2lkZ2V0OiBTbWFydEZvcm1XaWRnZXQ8YW55PiA9IHtcclxuICAgICAgdHlwZTogU21hcnRGb3JtV2lkZ2V0VHlwZS5TRUxFQ1QsXHJcbiAgICAgIGtleTogbGF5b3V0RGVmaW5pdGlvbi5rZXksXHJcbiAgICAgIHZhbHVlQ2hhbmdlTW9kZTogbGF5b3V0RGVmaW5pdGlvbi52YWx1ZUNoYW5nZU1vZGUsXHJcbiAgICAgIGxhYmVsOiBsYXlvdXREZWZpbml0aW9uLmxhYmVsLFxyXG4gICAgICBzaG93TGFiZWw6IGxheW91dERlZmluaXRpb24uc2hvd0xhYmVsLFxyXG4gICAgICBjc3NDbGFzczogbGF5b3V0RGVmaW5pdGlvbi5jc3NDbGFzcyxcclxuICAgICAgY3NzTGFiZWxDbGFzczogbGF5b3V0RGVmaW5pdGlvbi5jc3NMYWJlbENsYXNzLFxyXG4gICAgICBzdHlsZTogbGF5b3V0RGVmaW5pdGlvbi5zdHlsZSxcclxuICAgICAgbGFiZWxTdHlsZTogbGF5b3V0RGVmaW5pdGlvbi5sYWJlbFN0eWxlLFxyXG4gICAgICB2YWx1ZUxpc3Q6IFtdLFxyXG4gICAgICBzZWxlY3Rpb246IGxheW91dERlZmluaXRpb24uc2VsZWN0aW9uLFxyXG4gICAgICBoaW50OiBsYXlvdXREZWZpbml0aW9uLmhpbnQsXHJcbiAgICB9O1xyXG5cclxuICAgIGlmIChsYXlvdXREZWZpbml0aW9uLnZhbHVlcykge1xyXG4gICAgICB3aWRnZXQudmFsdWVMaXN0ID0gbGF5b3V0RGVmaW5pdGlvbi52YWx1ZXMubWFwKCh2YWx1ZTogVmFsdWUpID0+IHtcclxuICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAga2V5OiB2YWx1ZS5jb2RlISxcclxuICAgICAgICAgIGxhYmVsOiB2YWx1ZS5kaXNwbGF5VmFsdWUsXHJcbiAgICAgICAgICB0eXBlOiBTbWFydEZvcm1XaWRnZXRUeXBlLklURU0sXHJcbiAgICAgICAgICB2YWx1ZTogdmFsdWUuY29kZSxcclxuICAgICAgICB9O1xyXG4gICAgICB9KTtcclxuICAgIH1cclxuICAgIHJldHVybiB3aWRnZXQ7XHJcbiAgfVxyXG4gIHByaXZhdGUgY3JlYXRlU2VsZWN0TXVsdGlwbGUobGF5b3V0RGVmaW5pdGlvbjogU21hcnRXaWRnZXREZWZpbml0aW9uKTogU21hcnRGb3JtV2lkZ2V0PGFueT4ge1xyXG4gICAgbGV0IHdpZGdldDogU21hcnRGb3JtV2lkZ2V0PGFueT4gPSB7XHJcbiAgICAgIHR5cGU6IFNtYXJ0Rm9ybVdpZGdldFR5cGUuU0VMRUNUX01VTFRJUExFLFxyXG4gICAgICBrZXk6IGxheW91dERlZmluaXRpb24ua2V5LFxyXG4gICAgICB2YWx1ZUNoYW5nZU1vZGU6IGxheW91dERlZmluaXRpb24udmFsdWVDaGFuZ2VNb2RlLFxyXG4gICAgICBsYWJlbDogbGF5b3V0RGVmaW5pdGlvbi5sYWJlbCxcclxuICAgICAgc2hvd0xhYmVsOiBsYXlvdXREZWZpbml0aW9uLnNob3dMYWJlbCxcclxuICAgICAgY3NzQ2xhc3M6IGxheW91dERlZmluaXRpb24uY3NzQ2xhc3MsXHJcbiAgICAgIGNzc0xhYmVsQ2xhc3M6IGxheW91dERlZmluaXRpb24uY3NzTGFiZWxDbGFzcyxcclxuICAgICAgc3R5bGU6IGxheW91dERlZmluaXRpb24uc3R5bGUsXHJcbiAgICAgIGxhYmVsU3R5bGU6IGxheW91dERlZmluaXRpb24ubGFiZWxTdHlsZSxcclxuICAgICAgdmFsdWVMaXN0OiBbXSxcclxuICAgICAgc2VsZWN0aW9uOiBsYXlvdXREZWZpbml0aW9uLnNlbGVjdGlvbixcclxuICAgICAgaGludDogbGF5b3V0RGVmaW5pdGlvbi5oaW50LFxyXG4gICAgfTtcclxuICAgIGlmIChsYXlvdXREZWZpbml0aW9uLnZhbHVlcykge1xyXG4gICAgICB3aWRnZXQudmFsdWVMaXN0ID0gbGF5b3V0RGVmaW5pdGlvbi52YWx1ZXMubWFwKCh2YWx1ZTogVmFsdWUpID0+IHtcclxuICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAga2V5OiB2YWx1ZS5jb2RlISxcclxuICAgICAgICAgIGxhYmVsOiB2YWx1ZS5kaXNwbGF5VmFsdWUsXHJcbiAgICAgICAgICB0eXBlOiBTbWFydEZvcm1XaWRnZXRUeXBlLklURU0sXHJcbiAgICAgICAgICB2YWx1ZTogdmFsdWUuY29kZSxcclxuICAgICAgICB9O1xyXG4gICAgICB9KTtcclxuICAgIH1cclxuICAgIHJldHVybiB3aWRnZXQ7XHJcbiAgfVxyXG4gIHByaXZhdGUgY3JlYXRlRGF0ZVBpY2tlcihsYXlvdXREZWZpbml0aW9uOiBTbWFydFdpZGdldERlZmluaXRpb24pOiBTbWFydEZvcm1XaWRnZXQ8YW55PiB7XHJcbiAgICBsZXQgd2lkZ2V0OiBTbWFydEZvcm1XaWRnZXQ8YW55PiA9IHtcclxuICAgICAgdHlwZTogU21hcnRGb3JtV2lkZ2V0VHlwZS5EQVRFX1BJQ0tFUixcclxuICAgICAga2V5OiBsYXlvdXREZWZpbml0aW9uLmtleSxcclxuICAgICAgdmFsdWVDaGFuZ2VNb2RlOiBsYXlvdXREZWZpbml0aW9uLnZhbHVlQ2hhbmdlTW9kZSxcclxuICAgICAgbGFiZWw6IGxheW91dERlZmluaXRpb24ubGFiZWwsXHJcbiAgICAgIHNob3dMYWJlbDogbGF5b3V0RGVmaW5pdGlvbi5zaG93TGFiZWwsXHJcbiAgICAgIGNzc0NsYXNzOiBsYXlvdXREZWZpbml0aW9uLmNzc0NsYXNzLFxyXG4gICAgICBjc3NMYWJlbENsYXNzOiBsYXlvdXREZWZpbml0aW9uLmNzc0xhYmVsQ2xhc3MsXHJcbiAgICAgIHN0eWxlOiBsYXlvdXREZWZpbml0aW9uLnN0eWxlLFxyXG4gICAgICBsYWJlbFN0eWxlOiBsYXlvdXREZWZpbml0aW9uLmxhYmVsU3R5bGUsXHJcbiAgICAgIGhpbnQ6IGxheW91dERlZmluaXRpb24uaGludCxcclxuICAgIH07XHJcbiAgICByZXR1cm4gd2lkZ2V0O1xyXG4gIH1cclxuICBwcml2YXRlIGNyZWF0ZURhdGVUaW1lUGlja2VyKGxheW91dERlZmluaXRpb246IFNtYXJ0V2lkZ2V0RGVmaW5pdGlvbik6IFNtYXJ0Rm9ybVdpZGdldDxhbnk+IHtcclxuICAgIGxldCB3aWRnZXQ6IFNtYXJ0Rm9ybVdpZGdldDxhbnk+ID0ge1xyXG4gICAgICB0eXBlOiBTbWFydEZvcm1XaWRnZXRUeXBlLkRBVEVfVElNRV9QSUNLRVIsXHJcbiAgICAgIGtleTogbGF5b3V0RGVmaW5pdGlvbi5rZXksXHJcbiAgICAgIHZhbHVlQ2hhbmdlTW9kZTogbGF5b3V0RGVmaW5pdGlvbi52YWx1ZUNoYW5nZU1vZGUsXHJcbiAgICAgIGxhYmVsOiBsYXlvdXREZWZpbml0aW9uLmxhYmVsLFxyXG4gICAgICBzaG93TGFiZWw6IGxheW91dERlZmluaXRpb24uc2hvd0xhYmVsLFxyXG4gICAgICBjc3NDbGFzczogbGF5b3V0RGVmaW5pdGlvbi5jc3NDbGFzcyxcclxuICAgICAgY3NzTGFiZWxDbGFzczogbGF5b3V0RGVmaW5pdGlvbi5jc3NMYWJlbENsYXNzLFxyXG4gICAgICBzdHlsZTogbGF5b3V0RGVmaW5pdGlvbi5zdHlsZSxcclxuICAgICAgbGFiZWxTdHlsZTogbGF5b3V0RGVmaW5pdGlvbi5sYWJlbFN0eWxlLFxyXG4gICAgICBoaW50OiBsYXlvdXREZWZpbml0aW9uLmhpbnQsXHJcbiAgICB9O1xyXG4gICAgcmV0dXJuIHdpZGdldDtcclxuICB9XHJcbiAgcHJpdmF0ZSBjcmVhdGVJbWFnZShsYXlvdXREZWZpbml0aW9uOiBTbWFydFdpZGdldERlZmluaXRpb24pOiBTbWFydEZvcm1XaWRnZXQ8YW55PiB7XHJcbiAgICBsZXQgd2lkZ2V0OiBTbWFydEZvcm1XaWRnZXQ8YW55PiA9IHtcclxuICAgICAgdHlwZTogU21hcnRGb3JtV2lkZ2V0VHlwZS5JTUFHRSxcclxuICAgICAga2V5OiBsYXlvdXREZWZpbml0aW9uLmtleSxcclxuICAgICAgdmFsdWVDaGFuZ2VNb2RlOiBsYXlvdXREZWZpbml0aW9uLnZhbHVlQ2hhbmdlTW9kZSxcclxuICAgICAgbGFiZWw6IGxheW91dERlZmluaXRpb24ubGFiZWwsXHJcbiAgICAgIHNob3dMYWJlbDogbGF5b3V0RGVmaW5pdGlvbi5zaG93TGFiZWwsXHJcbiAgICAgIGNzc0NsYXNzOiBsYXlvdXREZWZpbml0aW9uLmNzc0NsYXNzLFxyXG4gICAgICBjc3NMYWJlbENsYXNzOiBsYXlvdXREZWZpbml0aW9uLmNzc0xhYmVsQ2xhc3MsXHJcbiAgICAgIHN0eWxlOiBsYXlvdXREZWZpbml0aW9uLnN0eWxlLFxyXG4gICAgICBsYWJlbFN0eWxlOiBsYXlvdXREZWZpbml0aW9uLmxhYmVsU3R5bGUsXHJcbiAgICB9O1xyXG4gICAgcmV0dXJuIHdpZGdldDtcclxuICB9XHJcbiAgcHJpdmF0ZSBjcmVhdGVTdmcobGF5b3V0RGVmaW5pdGlvbjogU21hcnRXaWRnZXREZWZpbml0aW9uKTogU21hcnRGb3JtV2lkZ2V0PGFueT4ge1xyXG4gICAgbGV0IHdpZGdldDogU21hcnRGb3JtV2lkZ2V0PGFueT4gPSB7XHJcbiAgICAgIHR5cGU6IFNtYXJ0Rm9ybVdpZGdldFR5cGUuU1ZHLFxyXG4gICAgICBrZXk6IGxheW91dERlZmluaXRpb24ua2V5LFxyXG4gICAgICB2YWx1ZUNoYW5nZU1vZGU6IGxheW91dERlZmluaXRpb24udmFsdWVDaGFuZ2VNb2RlLFxyXG4gICAgICBsYWJlbDogbGF5b3V0RGVmaW5pdGlvbi5sYWJlbCxcclxuICAgICAgc2hvd0xhYmVsOiBsYXlvdXREZWZpbml0aW9uLnNob3dMYWJlbCxcclxuICAgICAgY3NzQ2xhc3M6IGxheW91dERlZmluaXRpb24uY3NzQ2xhc3MsXHJcbiAgICAgIGNzc0xhYmVsQ2xhc3M6IGxheW91dERlZmluaXRpb24uY3NzTGFiZWxDbGFzcyxcclxuICAgICAgc3R5bGU6IGxheW91dERlZmluaXRpb24uc3R5bGUsXHJcbiAgICAgIGxhYmVsU3R5bGU6IGxheW91dERlZmluaXRpb24ubGFiZWxTdHlsZSxcclxuICAgIH07XHJcbiAgICByZXR1cm4gd2lkZ2V0O1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBjcmVhdGVCdXR0b24oY29uZmlnOiBTbWFydGZvcm1MYXlvdXRDcmVhdGVXaWRnZXRDb25maWcpOiBTbWFydEZvcm1XaWRnZXQ8YW55PiB7XHJcbiAgICBsZXQgdWlBY3Rpb246IGFueSA9IGNvbmZpZy51aUFjdGlvbnM/LmZpbmQoXHJcbiAgICAgICh1aUFjdGlvbjogYW55KSA9PiB1aUFjdGlvbi5jb2RlID09PSBjb25maWcubGF5b3V0RGVmaW5pdGlvbj8ua2V5XHJcbiAgICApO1xyXG4gICAgbGV0IHdpZGdldDogU21hcnRGb3JtV2lkZ2V0PGFueT4gPSB7XHJcbiAgICAgIHR5cGU6IFNtYXJ0Rm9ybVdpZGdldFR5cGUuQlVUVE9OLFxyXG4gICAgICBrZXk6IGNvbmZpZy5sYXlvdXREZWZpbml0aW9uPy5rZXkhLFxyXG4gICAgICB2YWx1ZUNoYW5nZU1vZGU6IGNvbmZpZy5sYXlvdXREZWZpbml0aW9uPy52YWx1ZUNoYW5nZU1vZGUsXHJcbiAgICAgIGxhYmVsOiBjb25maWcubGF5b3V0RGVmaW5pdGlvbj8ubGFiZWwhLFxyXG4gICAgICBzaG93TGFiZWw6IGNvbmZpZy5sYXlvdXREZWZpbml0aW9uPy5zaG93TGFiZWwsXHJcbiAgICAgIGNzc0NsYXNzOiBjb25maWcubGF5b3V0RGVmaW5pdGlvbj8uY3NzQ2xhc3MsXHJcbiAgICAgIGNzc0xhYmVsQ2xhc3M6IGNvbmZpZy5sYXlvdXREZWZpbml0aW9uPy5jc3NMYWJlbENsYXNzLFxyXG4gICAgICBzdHlsZTogY29uZmlnLmxheW91dERlZmluaXRpb24/LnN0eWxlLFxyXG4gICAgICBsYWJlbFN0eWxlOiBjb25maWcubGF5b3V0RGVmaW5pdGlvbj8ubGFiZWxTdHlsZSxcclxuICAgICAgY2FsbGJhY2s6IGNvbmZpZy5idXR0b25DYWxsYmFjayEsXHJcbiAgICAgIHVpQWN0aW9uLFxyXG4gICAgICB1aUFjdGlvbkRlc2NyaXB0b3I6IGNvbmZpZy51aUFjdGlvbkRlc2NyaXB0b3JzISh1aUFjdGlvbiksXHJcbiAgICB9O1xyXG4gICAgcmV0dXJuIHdpZGdldDtcclxuICB9XHJcbiAgcHJpdmF0ZSBjcmVhdGVEaXZpZGVyKGxheW91dERlZmluaXRpb246IFNtYXJ0V2lkZ2V0RGVmaW5pdGlvbik6IFNtYXJ0Rm9ybVdpZGdldDxhbnk+IHtcclxuICAgIGxldCB3aWRnZXQ6IFNtYXJ0Rm9ybVdpZGdldDxhbnk+ID0ge1xyXG4gICAgICB0eXBlOiBTbWFydEZvcm1XaWRnZXRUeXBlLkRJVklERVIsXHJcbiAgICAgIGtleTogbGF5b3V0RGVmaW5pdGlvbi5rZXksXHJcbiAgICAgIHZhbHVlQ2hhbmdlTW9kZTogbGF5b3V0RGVmaW5pdGlvbi52YWx1ZUNoYW5nZU1vZGUsXHJcbiAgICAgIGxhYmVsOiBsYXlvdXREZWZpbml0aW9uLmxhYmVsLFxyXG4gICAgICBzaG93TGFiZWw6IGxheW91dERlZmluaXRpb24uc2hvd0xhYmVsLFxyXG4gICAgICBjc3NDbGFzczogbGF5b3V0RGVmaW5pdGlvbi5jc3NDbGFzcyxcclxuICAgICAgY3NzTGFiZWxDbGFzczogbGF5b3V0RGVmaW5pdGlvbi5jc3NMYWJlbENsYXNzLFxyXG4gICAgICBzdHlsZTogbGF5b3V0RGVmaW5pdGlvbi5zdHlsZSxcclxuICAgICAgbGFiZWxTdHlsZTogbGF5b3V0RGVmaW5pdGlvbi5sYWJlbFN0eWxlLFxyXG4gICAgfTtcclxuICAgIHJldHVybiB3aWRnZXQ7XHJcbiAgfVxyXG4gIHByaXZhdGUgY3JlYXRlRmlsZVVwbG9hZGVyKGxheW91dERlZmluaXRpb246IFNtYXJ0RmlsZVVwbG9hZGVyKTogU21hcnRGb3JtV2lkZ2V0PGFueT4ge1xyXG4gICAgbGV0IHdpZGdldDogU21hcnRGaWxlVXBsb2FkZXIgPSB7XHJcbiAgICAgIHR5cGU6IFNtYXJ0Rm9ybVdpZGdldFR5cGUuRklMRV9VUExPQURFUixcclxuICAgICAga2V5OiBsYXlvdXREZWZpbml0aW9uLmtleSxcclxuICAgICAgdmFsdWVDaGFuZ2VNb2RlOiBsYXlvdXREZWZpbml0aW9uLnZhbHVlQ2hhbmdlTW9kZSxcclxuICAgICAgbGFiZWw6IGxheW91dERlZmluaXRpb24ubGFiZWwsXHJcbiAgICAgIHNob3dMYWJlbDogbGF5b3V0RGVmaW5pdGlvbi5zaG93TGFiZWwsXHJcbiAgICAgIGNzc0NsYXNzOiBsYXlvdXREZWZpbml0aW9uLmNzc0NsYXNzLFxyXG4gICAgICBjc3NMYWJlbENsYXNzOiBsYXlvdXREZWZpbml0aW9uLmNzc0xhYmVsQ2xhc3MsXHJcbiAgICAgIHN0eWxlOiBsYXlvdXREZWZpbml0aW9uLnN0eWxlLFxyXG4gICAgICBsYWJlbFN0eWxlOiBsYXlvdXREZWZpbml0aW9uLmxhYmVsU3R5bGUsXHJcbiAgICAgIHVwbG9hZENhbGxiYWNrOiBsYXlvdXREZWZpbml0aW9uLnVwbG9hZENhbGxiYWNrLFxyXG4gICAgfTtcclxuICAgIHJldHVybiB3aWRnZXQ7XHJcbiAgfVxyXG4gIHByaXZhdGUgY3JlYXRlWW91dHViZVBsYXllcihsYXlvdXREZWZpbml0aW9uOiBTbWFydFdpZGdldERlZmluaXRpb24pOiBTbWFydEZvcm1XaWRnZXQ8YW55PiB7XHJcbiAgICBjb25zdCB7IGxpbmssIHN0YXJ0U2Vjb25kcywgZW5kU2Vjb25kcyB9ID0gdGhpcy5leHRyYWN0WW91dHViZVBsYXllclByb3BzKGxheW91dERlZmluaXRpb24pO1xyXG4gICAgcmV0dXJuIHtcclxuICAgICAgdHlwZTogU21hcnRGb3JtV2lkZ2V0VHlwZS5ZT1VUVUJFX1BMQVlFUixcclxuICAgICAga2V5OiBsYXlvdXREZWZpbml0aW9uLmtleSxcclxuICAgICAgbGFiZWw6IGxheW91dERlZmluaXRpb24ubGFiZWwsXHJcbiAgICAgIGhpbnQ6IGxheW91dERlZmluaXRpb24uaGludCxcclxuICAgICAgdmFsdWVDaGFuZ2VNb2RlOiBsYXlvdXREZWZpbml0aW9uLnZhbHVlQ2hhbmdlTW9kZSxcclxuICAgICAgc2hvd0xhYmVsOiBsYXlvdXREZWZpbml0aW9uLnNob3dMYWJlbCxcclxuICAgICAgY3NzQ2xhc3M6IGxheW91dERlZmluaXRpb24uY3NzQ2xhc3MsXHJcbiAgICAgIGNzc0xhYmVsQ2xhc3M6IGxheW91dERlZmluaXRpb24uY3NzTGFiZWxDbGFzcyxcclxuICAgICAgc3R5bGU6IGxheW91dERlZmluaXRpb24uc3R5bGUsXHJcbiAgICAgIGxhYmVsU3R5bGU6IGxheW91dERlZmluaXRpb24ubGFiZWxTdHlsZSxcclxuICAgICAgbGluayxcclxuICAgICAgc3RhcnRTZWNvbmRzLFxyXG4gICAgICBlbmRTZWNvbmRzLFxyXG4gICAgfTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZXh0cmFjdFlvdXR1YmVQbGF5ZXJQcm9wcyhsYXlvdXREZWZpbml0aW9uOiBTbWFydFdpZGdldERlZmluaXRpb24pOiB7XHJcbiAgICBsaW5rOiBzdHJpbmc7XHJcbiAgICBzdGFydFNlY29uZHM6IG51bWJlcjtcclxuICAgIGVuZFNlY29uZHM/OiBudW1iZXI7XHJcbiAgfSB7XHJcbiAgICBjb25zdCBwcm9wcyA9IGxheW91dERlZmluaXRpb24ucHJvcGVydGllcztcclxuICAgIGlmICghcHJvcHMpIHtcclxuICAgICAgdGhpcy5sb2dNaXNzaW5nUHJvcGVydHkobGF5b3V0RGVmaW5pdGlvbiwgJ3Byb3BlcnRpZXMnKTtcclxuICAgICAgcmV0dXJuIHsgbGluazogJycsIHN0YXJ0U2Vjb25kczogMCB9O1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IGxpbmsgPSAocHJvcHNbJ2xpbmsnXSA/IChwcm9wc1snbGluayddIGFzIFN0cmluZykgOiAnJykgYXMgc3RyaW5nO1xyXG4gICAgaWYgKCFsaW5rIHx8IGxpbmsubGVuZ3RoIDwgMSkge1xyXG4gICAgICB0aGlzLmxvZ01pc3NpbmdQcm9wZXJ0eShsYXlvdXREZWZpbml0aW9uLCAnbGluaycpO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IHN0YXJ0U2Vjb25kcyA9IChwcm9wc1snc3RhcnRTZWNvbmRzJ10gPyAocHJvcHNbJ3N0YXJ0U2Vjb25kcyddIGFzIE51bWJlcikgOiAwKSBhcyBudW1iZXI7XHJcbiAgICBsZXQgZW5kU2Vjb25kczogbnVtYmVyIHwgdW5kZWZpbmVkID0gdW5kZWZpbmVkO1xyXG4gICAgaWYgKHByb3BzWydlbmRTZWNvbmRzJ10pIHtcclxuICAgICAgZW5kU2Vjb25kcyA9IHByb3BzWydlbmRTZWNvbmRzJ10gYXMgTnVtYmVyIGFzIG51bWJlcjtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4geyBsaW5rLCBzdGFydFNlY29uZHMsIGVuZFNlY29uZHMgfTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgbG9nTWlzc2luZ1Byb3BlcnR5KGxheW91dERlZmluaXRpb246IFNtYXJ0V2lkZ2V0RGVmaW5pdGlvbiwgcHJvcDogc3RyaW5nKTogdm9pZCB7XHJcbiAgICBjb25zb2xlLmVycm9yKFxyXG4gICAgICBgUHJvcGVydHkgPCR7cHJvcH0+IG1pc3NpbmcgZnJvbSBsYXlvdXQgZGVmaW5pdGlvbjogJHtKU09OLnN0cmluZ2lmeShsYXlvdXREZWZpbml0aW9uKX1gXHJcbiAgICApO1xyXG4gIH1cclxufVxyXG4iXX0=
559
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnRmb3JtLmxheW91dC1kZWZpbml0aW9uLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zbWFydC1uZy1jbGllbnQvc3JjL2xpYi9zbWFydC1mb3JtL3NlcnZpY2VzL3NtYXJ0Zm9ybS5sYXlvdXQtZGVmaW5pdGlvbi5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFFLHdCQUF3QixFQUFFLG1CQUFtQixFQUF5QixNQUFNLFFBQVEsQ0FBQzs7QUFrQjlGLE1BQU0sT0FBTyxnQ0FBZ0M7SUFZM0MsZ0JBQWUsQ0FBQztJQUVULE1BQU0sQ0FBQyxNQUF5QztRQUNyRCxJQUFJLE9BQU8sR0FBMkIsRUFBRSxDQUFDO1FBRXpDLE1BQU0sQ0FBQyxpQkFBaUIsRUFBRSxPQUFPLENBQUMsQ0FBQyxnQkFBdUMsRUFBRSxFQUFFO1lBQzVFLElBQUksTUFBTSxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUM7Z0JBQzdCLEdBQUcsTUFBTTtnQkFDVCxnQkFBZ0I7YUFDakIsQ0FBQyxDQUFDO1lBQ0gsSUFBSSxNQUFNLEVBQUU7Z0JBQ1YsT0FBTyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQzthQUN0QjtRQUNILENBQUMsQ0FBQyxDQUFDO1FBRUgsT0FBTyxPQUFPLENBQUM7SUFDakIsQ0FBQztJQUVPLFlBQVksQ0FDbEIsTUFBeUM7UUFFekMsUUFBUSxNQUFNLENBQUMsZ0JBQWdCLEVBQUUsSUFBSSxFQUFFO1lBQ3JDLEtBQUssbUJBQW1CLENBQUMsU0FBUztnQkFDaEMsT0FBTyxJQUFJLENBQUMsZUFBZSxDQUFDLE1BQU0sRUFBRSxNQUFNLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztZQUMvRCxLQUFLLG1CQUFtQixDQUFDLEtBQUs7Z0JBQzVCLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FB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WSxDQUFDLEVBQUU7WUFDdkIsVUFBVSxHQUFHLEtBQUssQ0FBQyxZQUFZLENBQXFCLENBQUM7U0FDdEQ7UUFFRCxPQUFPLEVBQUUsSUFBSSxFQUFFLFlBQVksRUFBRSxVQUFVLEVBQUUsQ0FBQztJQUM1QyxDQUFDO0lBRU8sa0JBQWtCLENBQUMsZ0JBQXVDLEVBQUUsSUFBWTtRQUM5RSxPQUFPLENBQUMsS0FBSyxDQUNYLGFBQWEsSUFBSSxxQ0FBcUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxnQkFBZ0IsQ0FBQyxFQUFFLENBQ3pGLENBQUM7SUFDSixDQUFDOztBQWxrQnVCLHNEQUFxQixHQUFpQjtJQUM1RCxPQUFPLEVBQUU7UUFDUCxTQUFTLEVBQUU7WUFDVCxDQUFDLE1BQU0sRUFBRSxRQUFRLEVBQUUsV0FBVyxFQUFFLFFBQVEsRUFBRSxNQUFNLENBQUM7WUFDakQsQ0FBQyxZQUFZLENBQUM7WUFDZCxDQUFDLEVBQUUsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsTUFBTSxFQUFFLENBQUMsRUFBRSxDQUFDO1lBQzlCLENBQUMsRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLEVBQUUsRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLENBQUM7WUFDekMsQ0FBQyxPQUFPLENBQUM7U0FDVjtLQUNGO0NBQ0QsQ0FBQTs2SEFYUyxnQ0FBZ0M7aUlBQWhDLGdDQUFnQyxjQUYvQixNQUFNOzJGQUVQLGdDQUFnQztrQkFINUMsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IFNtYXJ0Rm9ybVdpZGdldERpcmVjdGlvbiwgU21hcnRGb3JtV2lkZ2V0VHlwZSwgU21hcnRXaWRnZXREZWZpbml0aW9uIH0gZnJvbSAnLi4vYXBpJztcclxuaW1wb3J0IHsgU21hcnRGaWxlVXBsb2FkZXIsIFNtYXJ0Rm9ybVdpZGdldCB9IGZyb20gJy4uL3NtYXJ0Zm9ybS5mb3JtLW1vZGVsJztcclxuaW1wb3J0IHsgVmFsdWUgfSBmcm9tICcuLi9zbWFydGZvcm0ubW9kZWwnO1xyXG5pbXBvcnQgeyBRdWlsbE1vZHVsZXMgfSBmcm9tICduZ3gtcXVpbGwnO1xyXG5cclxuZXhwb3J0IGludGVyZmFjZSBTbWFydGZvcm1MYXlvdXRDcmVhdGVXaWRnZXRDb25maWcge1xyXG4gIGxheW91dERlZmluaXRpb25zPzogU21hcnRXaWRnZXREZWZpbml0aW9uW107XHJcbiAgbGF5b3V0RGVmaW5pdGlvbj86IFNtYXJ0V2lkZ2V0RGVmaW5pdGlvbjtcclxuICB1cGxvYWRDYWxsYmFjaz86IChrZXk6IHN0cmluZywgZmlsZXM6IGFueVtdKSA9PiB2b2lkO1xyXG4gIGJ1dHRvbkNhbGxiYWNrPzogKCh1aUFjdGlvbjogYW55KSA9PiB2b2lkKSB8ICgoa2V5OiBzdHJpbmcpID0+IHZvaWQpO1xyXG4gIHVpQWN0aW9ucz86IGFueVtdO1xyXG4gIHVpQWN0aW9uRGVzY3JpcHRvcnM/OiAodWlBY3Rpb246IGFueSkgPT4gYW55O1xyXG4gIG1vZGVsPzogYW55O1xyXG59XHJcblxyXG5ASW5qZWN0YWJsZSh7XHJcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgU21hcnRmb3JtTGF5b3V0RGVmaW5pdGlvblNlcnZpY2Uge1xyXG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IERFRkFVTFRfUVVJTExfTU9EVUxFUzogUXVpbGxNb2R1bGVzID0ge1xyXG4gICAgdG9vbGJhcjoge1xyXG4gICAgICBjb250YWluZXI6IFtcclxuICAgICAgICBbJ2JvbGQnLCAnaXRhbGljJywgJ3VuZGVybGluZScsICdzdHJpa2UnLCAnbGluayddLFxyXG4gICAgICAgIFsnY29kZS1ibG9jayddLFxyXG4gICAgICAgIFt7IGhlYWRlcjogMSB9LCB7IGhlYWRlcjogMiB9XSxcclxuICAgICAgICBbeyBsaXN0OiAnb3JkZXJlZCcgfSwgeyBsaXN0OiAnYnVsbGV0JyB9XSxcclxuICAgICAgICBbJ2NsZWFuJ10sXHJcbiAgICAgIF0sXHJcbiAgICB9LFxyXG4gIH07XHJcbiAgY29uc3RydWN0b3IoKSB7fVxyXG5cclxuICBwdWJsaWMgcmVuZGVyKGNvbmZpZzogU21hcnRmb3JtTGF5b3V0Q3JlYXRlV2lkZ2V0Q29uZmlnKTogU21hcnRGb3JtV2lkZ2V0PGFueT5bXSB7XHJcbiAgICBsZXQgd2lkZ2V0czogU21hcnRGb3JtV2lkZ2V0PGFueT5bXSA9IFtdO1xyXG5cclxuICAgIGNvbmZpZy5sYXlvdXREZWZpbml0aW9ucz8uZm9yRWFjaCgobGF5b3V0RGVmaW5pdGlvbjogU21hcnRXaWRnZXREZWZpbml0aW9uKSA9PiB7XHJcbiAgICAgIGxldCB3aWRnZXQgPSB0aGlzLmNyZWF0ZVdpZGdldCh7XHJcbiAgICAgICAgLi4uY29uZmlnLFxyXG4gICAgICAgIGxheW91dERlZmluaXRpb24sXHJcbiAgICAgIH0pO1xyXG4gICAgICBpZiAod2lkZ2V0KSB7XHJcbiAgICAgICAgd2lkZ2V0cy5wdXNoKHdpZGdldCk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG5cclxuICAgIHJldHVybiB3aWRnZXRzO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBjcmVhdGVXaWRnZXQoXHJcbiAgICBjb25maWc6IFNtYXJ0Zm9ybUxheW91dENyZWF0ZVdpZGdldENvbmZpZ1xyXG4gICk6IFNtYXJ0Rm9ybVdpZGdldDxhbnk+IHwgdW5kZWZpbmVkIHtcclxuICAgIHN3aXRjaCAoY29uZmlnLmxheW91dERlZmluaXRpb24/LnR5cGUpIHtcclxuICAgICAgY2FzZSBTbWFydEZvcm1XaWRnZXRUeXBlLkNPTlRBSU5FUjpcclxuICAgICAgICByZXR1cm4gdGhpcy5jcmVhdGVDb250YWluZXIoY29uZmlnLCBjb25maWcubGF5b3V0RGVmaW5pdGlvbik7XHJcbiAgICAgIGNhc2UgU21hcnRGb3JtV2lkZ2V0VHlwZS5MQUJFTDpcclxuICAgICAgICByZXR1cm4gdGhpcy5jcmVhdGVMYWJlbChjb25maWcubGF5b3V0RGVmaW5pdGlvbik7XHJcbiAgICAgIGNhc2UgU21hcnRGb3JtV2lkZ2V0VHlwZS5URVhUX0ZJRUxEOlxyXG4gICAgICAgIHJldHVybiB0aGlzLmNyZWF0ZVRleHRGaWVsZChjb25maWcubGF5b3V0RGVmaW5pdGlvbik7XHJcbiAgICAgIGNhc2UgU21hcnRGb3JtV2lkZ2V0VHlwZS5URVhUX0ZJRUxEX0NISVBTOlxyXG4gICAgICAgIHJldHVybiB0aGlzLmNyZWF0ZVRleHRGaWVsZENoaXBzKGNvbmZpZy5sYXlvdXREZWZpbml0aW9uKTtcclxuICAgICAgY2FzZSBTbWFydEZvcm1XaWRnZXRUeXBlLlRFWFRfRklFTERfTlVNQkVSOlxyXG4gICAgICAgIHJldHVybiB0aGlzLmNyZWF0ZVRleHRGaWVsZE51bWJlcihjb25maWcubGF5b3V0RGVmaW5pdGlvbik7XHJcbiAgICAgIGNhc2UgU21hcnRGb3JtV2lkZ2V0VHlwZS5URVhUX0ZJRUxEX0xPT0tVUDpcclxuICAgICAgICByZXR1cm4gdGhpcy5jcmVhdGVUZXh0RmllbGRMb29rdXAoY29uZmlnLmxheW91dERlZmluaXRpb24pO1xyXG4gICAgICBjYXNlIFNtYXJ0Rm9ybVdpZGdldFR5cGUuVEVYVF9CT1g6XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuY3JlYXRlVGV4dEJveChjb25maWcubGF5b3V0RGVmaW5pdGlvbik7XHJcbiAgICAgIGNhc2UgU21hcnRGb3JtV2lkZ2V0VHlwZS5UT0dHTEU6XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuY3JlYXRlVG9nZ2xlKGNvbmZpZy5sYXlvdXREZWZpbml0aW9uKTtcclxuICAgICAgY2FzZSBTbWFydEZvcm1XaWRnZXRUeXBlLlJBRElPX0JVVFRPTjpcclxuICAgICAgICByZXR1cm4gdGhpcy5jcmVhdGVSYWRpb0J1dHRvbihjb25maWcubGF5b3V0RGVmaW5pdGlvbik7XHJcbiAgICAgIGNhc2UgU21hcnRGb3JtV2lkZ2V0VHlwZS5DSEVDS19CT1g6XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuY3JlYXRlQ2hlY2tCb3goY29uZmlnLmxheW91dERlZmluaXRpb24pO1xyXG4gICAgICBjYXNlIFNtYXJ0Rm9ybVdpZGdldFR5cGUuU0VMRUNUOlxyXG4gICAgICAgIHJldHVybiB0aGlzLmNyZWF0ZVNlbGVjdChjb25maWcubGF5b3V0RGVmaW5pdGlvbiwgY29uZmlnLm1vZGVsKTtcclxuICAgICAgY2FzZSBTbWFydEZvcm1XaWRnZXRUeXBlLlNFTEVDVF9NVUxUSVBMRTpcclxuICAgICAgICByZXR1cm4gdGhpcy5jcmVhdGVTZWxlY3RNdWx0aXBsZShjb25maWcubGF5b3V0RGVmaW5pdGlvbik7XHJcbiAgICAgIGNhc2UgU21hcnRGb3JtV2lkZ2V0VHlwZS5EQVRFX1BJQ0tFUjpcclxuICAgICAgICByZXR1cm4gdGhpcy5jcmVhdGVEYXRlUGlja2VyKGNvbmZpZy5sYXlvdXREZWZpbml0aW9uKTtcclxuICAgICAgY2FzZSBTbWFydEZvcm1XaWRnZXRUeXBlLkRBVEVfVElNRV9QSUNLRVI6XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuY3JlYXRlRGF0ZVRpbWVQaWNrZXIoY29uZmlnLmxheW91dERlZmluaXRpb24pO1xyXG4gICAgICBjYXNlIFNtYXJ0Rm9ybVdpZGdldFR5cGUuSU1BR0U6XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuY3JlYXRlSW1hZ2UoY29uZmlnLmxheW91dERlZmluaXRpb24pO1xyXG4gICAgICBjYXNlIFNtYXJ0Rm9ybVdpZGdldFR5cGUuU1ZHOlxyXG4gICAgICAgIHJldHVybiB0aGlzLmNyZWF0ZVN2Zyhjb25maWcubGF5b3V0RGVmaW5pdGlvbik7XHJcbiAgICAgIGNhc2UgU21hcnRGb3JtV2lkZ2V0VHlwZS5CVVRUT046XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuY3JlYXRlQnV0dG9uKGNvbmZpZyk7XHJcbiAgICAgIGNhc2UgU21hcnRGb3JtV2lkZ2V0VHlwZS5ESVZJREVSOlxyXG4gICAgICAgIHJldHVybiB0aGlzLmNyZWF0ZURpdmlkZXIoY29uZmlnLmxheW91dERlZmluaXRpb24pO1xyXG4gICAgICBjYXNlIFNtYXJ0Rm9ybVdpZGdldFR5cGUuUklDSF9URVhUOlxyXG4gICAgICAgIHJldHVybiB0aGlzLmNyZWF0ZVJpY2hUZXh0KGNvbmZpZy5sYXlvdXREZWZpbml0aW9uKTtcclxuICAgICAgY2FzZSBTbWFydEZvcm1XaWRnZXRUeXBlLkZJTEVfVVBMT0FERVI6XHJcbiAgICAgICAgaWYgKCEoY29uZmlnLmxheW91dERlZmluaXRpb24gYXMgU21hcnRGaWxlVXBsb2FkZXIpLnVwbG9hZENhbGxiYWNrKSB7XHJcbiAgICAgICAgICB0aHJvdyBFcnJvcignTm8gdXBsb2FkIGZ1bmN0aW9uIGluamVjdGVkLicpO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gdGhpcy5jcmVhdGVGaWxlVXBsb2FkZXIoY29uZmlnLmxheW91dERlZmluaXRpb24gYXMgU21hcnRGaWxlVXBsb2FkZXIpO1xyXG4gICAgICBjYXNlIFNtYXJ0Rm9ybVdpZGdldFR5cGUuTUFUUklYOlxyXG4gICAgICAgIHJldHVybiB0aGlzLmNyZWF0ZU1hdHJpeChjb25maWcubGF5b3V0RGVmaW5pdGlvbik7XHJcbiAgICAgIGNhc2UgU21hcnRGb3JtV2lkZ2V0VHlwZS5TT1JUQUJMRTpcclxuICAgICAgICByZXR1cm4gdGhpcy5jcmVhdGVTb3J0YWJsZShjb25maWcubGF5b3V0RGVmaW5pdGlvbik7XHJcbiAgICAgIGNhc2UgU21hcnRGb3JtV2lkZ2V0VHlwZS5NT05USF9QSUNLRVI6XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuY3JlYXRlTW9udGhQaWNrZXIoY29uZmlnLmxheW91dERlZmluaXRpb24pO1xyXG4gICAgICBjYXNlIFNtYXJ0Rm9ybVdpZGdldFR5cGUuWU9VVFVCRV9QTEFZRVI6XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuY3JlYXRlWW91dHViZVBsYXllcihjb25maWcubGF5b3V0RGVmaW5pdGlvbik7XHJcbiAgICB9XHJcbiAgICByZXR1cm47XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGNyZWF0ZU1vbnRoUGlja2VyKGxheW91dERlZmluaXRpb246IFNtYXJ0V2lkZ2V0RGVmaW5pdGlvbik6IFNtYXJ0Rm9ybVdpZGdldDxhbnk+IHtcclxuICAgIGxldCB3aWRnZXQ6IFNtYXJ0Rm9ybVdpZGdldDxhbnk+ID0ge1xyXG4gICAgICBrZXk6IGxheW91dERlZmluaXRpb24ua2V5LFxyXG4gICAgICB2YWx1ZUNoYW5nZU1vZGU6IGxheW91dERlZmluaXRpb24udmFsdWVDaGFuZ2VNb2RlLFxyXG4gICAgICB0eXBlOiBTbWFydEZvcm1XaWRnZXRUeXBlLk1PTlRIX1BJQ0tFUixcclxuICAgICAgbGFiZWw6IGxheW91dERlZmluaXRpb24ubGFiZWwsXHJcbiAgICAgIHNob3dMYWJlbDogbGF5b3V0RGVmaW5pdGlvbi5zaG93TGFiZWwsXHJcbiAgICB9O1xyXG4gICAgcmV0dXJuIHdpZGdldDtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgY3JlYXRlTWF0cml4KGxheW91dERlZmluaXRpb246IFNtYXJ0V2lkZ2V0RGVmaW5pdGlvbik6IFNtYXJ0Rm9ybVdpZGdldDxhbnk+IHtcclxuICAgIGxldCB3aWRnZXQ6IFNtYXJ0Rm9ybVdpZGdldDxhbnk+ID0ge1xyXG4gICAgICB0eXBlOiBTbWFydEZvcm1XaWRnZXRUeXBlLk1BVFJJWCxcclxuICAgICAgbGFiZWw6IGxheW91dERlZmluaXRpb24ubGFiZWwsXHJcbiAgICAgIGtleTogbGF5b3V0RGVmaW5pdGlvbi5rZXksXHJcbiAgICAgIHZhbHVlQ2hhbmdlTW9kZTogbGF5b3V0RGVmaW5pdGlvbi52YWx1ZUNoYW5nZU1vZGUsXHJcbiAgICAgIHNob3dMYWJlbDogbGF5b3V0RGVmaW5pdGlvbi5zaG93TGFiZWwsXHJcbiAgICAgIGlzTXVsdGlwbGU6IGxheW91dERlZmluaXRpb24ubWF0cml4Py5tdWx0aVNlbGVjdCxcclxuICAgICAgdmFsdWU6IGxheW91dERlZmluaXRpb24ubWF0cml4LFxyXG4gICAgfTtcclxuICAgIHJldHVybiB3aWRnZXQ7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGNyZWF0ZVNvcnRhYmxlKGxheW91dERlZmluaXRpb246IFNtYXJ0V2lkZ2V0RGVmaW5pdGlvbikge1xyXG4gICAgbGV0IHdpZGdldDogU21hcnRGb3JtV2lkZ2V0PGFueT4gPSB7XHJcbiAgICAgIGtleTogbGF5b3V0RGVmaW5pdGlvbi5rZXksXHJcbiAgICAgIHZhbHVlQ2hhbmdlTW9kZTogbGF5b3V0RGVmaW5pdGlvbi52YWx1ZUNoYW5nZU1vZGUsXHJcbiAgICAgIGxhYmVsOiBsYXlvdXREZWZpbml0aW9uLmxhYmVsLFxyXG4gICAgICBzaG93TGFiZWw6IGxheW91dERlZmluaXRpb24uc2hvd0xhYmVsLFxyXG4gICAgICB0eXBlOiBTbWFydEZvcm1XaWRnZXRUeXBlLlNPUlRBQkxFLFxyXG4gICAgfTtcclxuICAgIHJldHVybiB3aWRnZXQ7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGNyZWF0ZUxhYmVsKGxheW91dERlZmluaXRpb246IFNtYXJ0V2lkZ2V0RGVmaW5pdGlvbik6IFNtYXJ0Rm9ybVdpZGdldDxhbnk+IHtcclxuICAgIGxldCB3aWRnZXQ6IFNtYXJ0Rm9ybVdpZGdldDxhbnk+ID0ge1xyXG4gICAgICB0eXBlOiBTbWFydEZvcm1XaWRnZXRUeXBlLkxBQkVMLFxyXG4gICAgICBsYWJlbDogbGF5b3V0RGVmaW5pdGlvbi5sYWJlbCxcclxuICAgICAgd2lkZ2V0RGVzY3JpcHRpb246IGxheW91dERlZmluaXRpb24ud2lkZ2V0RGVzY3JpcHRpb24sXHJcbiAgICAgIGNzc0NsYXNzOiBsYXlvdXREZWZpbml0aW9uLmNzc0NsYXNzLFxyXG4gICAgICBzdHlsZTogbGF5b3V0RGVmaW5pdGlvbi5zdHlsZSxcclxuICAgIH07XHJcbiAgICByZXR1cm4gd2lkZ2V0O1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBjcmVhdGVDb250YWluZXIoXHJcbiAgICBjb25maWc6IFNtYXJ0Zm9ybUxheW91dENyZWF0ZVdpZGdldENvbmZpZyxcclxuICAgIGxheW91dERlZmluaXRpb246IFNtYXJ0V2lkZ2V0RGVmaW5pdGlvblxyXG4gICk6IFNtYXJ0Rm9ybVdpZGdldDxhbnk+IHtcclxuICAgIGxldCB2YWx1ZUxpc3Q6IFNtYXJ0Rm9ybVdpZGdldDxhbnk+W10gPSBbXTtcclxuXHJcbiAgICBsYXlvdXREZWZpbml0aW9uLmNoaWxkcmVuQ29tcG9uZW50cz8uZm9yRWFjaCgobGF5b3V0RGVmaW5pdGlvbjogU21hcnRXaWRnZXREZWZpbml0aW9uKSA9PiB7XHJcbiAgICAgIGxldCB3aWRnZXQgPSB0aGlzLmNyZWF0ZVdpZGdldCh7XHJcbiAgICAgICAgLi4uY29uZmlnLFxyXG4gICAgICAgIGxheW91dERlZmluaXRpb24sXHJcbiAgICAgIH0pO1xyXG4gICAgICBpZiAod2lkZ2V0KSB7XHJcbiAgICAgICAgdmFsdWVMaXN0LnB1c2god2lkZ2V0KTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcblxyXG4gICAgbGV0IHdpZGdldDogU21hcnRGb3JtV2lkZ2V0PGFueT4gPSB7XHJcbiAgICAgIGtleTogbGF5b3V0RGVmaW5pdGlvbi5rZXksXHJcbiAgICAgIHZhbHVlQ2hhbmdlTW9kZTogbGF5b3V0RGVmaW5pdGlvbi52YWx1ZUNoYW5nZU1vZGUsXHJcbiAgICAgIHR5cGU6IFNtYXJ0Rm9ybVdpZGdldFR5cGUuQ09OVEFJTkVSLFxyXG4gICAgICBjc3NDbGFzczogbGF5b3V0RGVmaW5pdGlvbi5jc3NDbGFzcyxcclxuICAgICAgc3R5bGU6IGxheW91dERlZmluaXRpb24uc3R5bGUsXHJcbiAgICAgIGRpcmVjdGlvbjogbGF5b3V0RGVmaW5pdGlvbi5kaXJlY3Rpb24gPz8gU21hcnRGb3JtV2lkZ2V0RGlyZWN0aW9uLkNPTCxcclxuICAgICAgdmFsdWVMaXN0LFxyXG4gICAgfTtcclxuXHJcbiAgICByZXR1cm4gd2lkZ2V0O1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBjcmVhdGVUZXh0RmllbGQobGF5b3V0RGVmaW5pdGlvbjogU21hcnRXaWRnZXREZWZpbml0aW9uKTogU21hcnRGb3JtV2lkZ2V0PGFueT4ge1xyXG4gICAgbGV0IHdpZGdldDogU21hcnRGb3JtV2lkZ2V0PGFueT4gPSB7XHJcbiAgICAgIHR5cGU6IFNtYXJ0Rm9ybVdpZGdldFR5cGUuVEVYVF9GSUVMRCxcclxuICAgICAga2V5OiBsYXlvdXREZWZpbml0aW9uLmtleSxcclxuICAgICAgdmFsdWVDaGFuZ2VNb2RlOiBsYXlvdXREZWZpbml0aW9uLnZhbHVlQ2hhbmdlTW9kZSxcclxuICAgICAgbGFiZWw6IGxheW91dERlZmluaXRpb24ubGFiZWwsXHJcbiAgICAgIHBsYWNlaG9sZGVyOiBsYXlvdXREZWZpbml0aW9uLnBsYWNlaG9sZGVyLFxyXG4gICAgICBwcmVmaXg6IGxheW91dERlZmluaXRpb24ucHJlZml4LFxyXG4gICAgICBzdWZmaXg6IGxheW91dERlZmluaXRpb24uc3VmZml4LFxyXG4gICAgICBtYXNrOiBsYXlvdXREZWZpbml0aW9uLm1hc2ssXHJcbiAgICAgIGljb246IGxheW91dERlZmluaXRpb24uaWNvbixcclxuICAgICAgaWNvbkNvbG9yOiBsYXlvdXREZWZpbml0aW9uLmljb25Db2xvcixcclxuICAgICAgaWNvblBvc2l0aW9uOiBsYXlvdXREZWZpbml0aW9uLmljb25Qb3NpdGlvbixcclxuICAgICAgc2hvd0xhYmVsOiBsYXlvdXREZWZpbml0aW9uLnNob3dMYWJlbCxcclxuICAgICAgY3NzQ2xhc3M6IGxheW91dERlZmluaXRpb24uY3NzQ2xhc3MsXHJcbiAgICAgIGNzc0xhYmVsQ2xhc3M6IGxheW91dERlZmluaXRpb24uY3NzTGFiZWxDbGFzcyxcclxuICAgICAgc3R5bGU6IGxheW91dERlZmluaXRpb24uc3R5bGUsXHJcbiAgICAgIGxhYmVsU3R5bGU6IGxheW91dERlZmluaXRpb24ubGFiZWxTdHlsZSxcclxuICAgICAgaXNQYXNzd29yZDogbGF5b3V0RGVmaW5pdGlvbi5pc1Bhc3N3b3JkLFxyXG4gICAgICBzZWxlY3Rpb246IGxheW91dERlZmluaXRpb24uc2VsZWN0aW9uLFxyXG4gICAgICBmaWx0ZXJFcnJvck1lc3NhZ2U6IGxheW91dERlZmluaXRpb24uZmlsdGVyRXJyb3JNZXNzYWdlLFxyXG4gICAgICBoaW50OiBsYXlvdXREZWZpbml0aW9uLmhpbnQsXHJcbiAgICAgIG1heExlbmd0aDogbGF5b3V0RGVmaW5pdGlvbi5tYXhMZW5ndGgsXHJcbiAgICAgIHNob3dDaGFyYWN0ZXJMaW1pdFN1ZmZpeDogbGF5b3V0RGVmaW5pdGlvbi5zaG93Q2hhcmFjdGVyTGltaXRTdWZmaXgsXHJcbiAgICAgIHRvb2xiYXJJZDogbGF5b3V0RGVmaW5pdGlvbi50b29sYmFySWQsXHJcbiAgICAgIGlucHV0TW9kZTogbGF5b3V0RGVmaW5pdGlvbi5pbnB1dE1vZGUsXHJcbiAgICB9O1xyXG4gICAgcmV0dXJuIHdpZGdldDtcclxuICB9XHJcbiAgcHJpdmF0ZSBjcmVhdGVUZXh0RmllbGRDaGlwcyhsYXlvdXREZWZpbml0aW9uOiBTbWFydFdpZGdldERlZmluaXRpb24pOiBTbWFydEZvcm1XaWRnZXQ8YW55PiB7XHJcbiAgICBsZXQgd2lkZ2V0OiBTbWFydEZvcm1XaWRnZXQ8YW55PiA9IHtcclxuICAgICAgdHlwZTogU21hcnRGb3JtV2lkZ2V0VHlwZS5URVhUX0ZJRUxEX0NISVBTLFxyXG4gICAgICBrZXk6IGxheW91dERlZmluaXRpb24ua2V5LFxyXG4gICAgICB2YWx1ZUNoYW5nZU1vZGU6IGxheW91dERlZmluaXRpb24udmFsdWVDaGFuZ2VNb2RlLFxyXG4gICAgICBsYWJlbDogbGF5b3V0RGVmaW5pdGlvbi5sYWJlbCxcclxuICAgICAgcGxhY2Vob2xkZXI6IGxheW91dERlZmluaXRpb24ucGxhY2Vob2xkZXIsXHJcbiAgICAgIHNob3dMYWJlbDogbGF5b3V0RGVmaW5pdGlvbi5zaG93TGFiZWwsXHJcbiAgICAgIGNzc0NsYXNzOiBsYXlvdXREZWZpbml0aW9uLmNzc0NsYXNzLFxyXG4gICAgICBjc3NMYWJlbENsYXNzOiBsYXlvdXREZWZpbml0aW9uLmNzc0xhYmVsQ2xhc3MsXHJcbiAgICAgIHN0eWxlOiBsYXlvdXREZWZpbml0aW9uLnN0eWxlLFxyXG4gICAgICBsYWJlbFN0eWxlOiBsYXlvdXREZWZpbml0aW9uLmxhYmVsU3R5bGUsXHJcbiAgICAgIHZhbHVlTGlzdDogW10sXHJcbiAgICB9O1xyXG4gICAgaWYgKGxheW91dERlZmluaXRpb24udmFsdWVzKSB7XHJcbiAgICAgIHdpZGdldC52YWx1ZUxpc3QgPSBsYXlvdXREZWZpbml0aW9uLnZhbHVlcy5tYXAoKHZhbHVlOiBWYWx1ZSkgPT4ge1xyXG4gICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICBrZXk6IHZhbHVlLmNvZGUhLFxyXG4gICAgICAgICAgbGFiZWw6IHZhbHVlLmRpc3BsYXlWYWx1ZSxcclxuICAgICAgICAgIHR5cGU6IFNtYXJ0Rm9ybVdpZGdldFR5cGUuSVRFTSxcclxuICAgICAgICAgIHZhbHVlOiB2YWx1ZS5jb2RlLFxyXG4gICAgICAgIH07XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHdpZGdldDtcclxuICB9XHJcbiAgcHJpdmF0ZSBjcmVhdGVUZXh0RmllbGRMb29rdXAobGF5b3V0RGVmaW5pdGlvbjogU21hcnRXaWRnZXREZWZpbml0aW9uKTogU21hcnRGb3JtV2lkZ2V0PGFueT4ge1xyXG4gICAgbGV0IHdpZGdldDogU21hcnRGb3JtV2lkZ2V0PGFueT4gPSB7XHJcbiAgICAgIHR5cGU6IFNtYXJ0Rm9ybVdpZGdldFR5cGUuVEVYVF9GSUVMRF9MT09LVVAsXHJcbiAgICAgIGtleTogbGF5b3V0RGVmaW5pdGlvbi5rZXksXHJcbiAgICAgIHZhbHVlQ2hhbmdlTW9kZTogbGF5b3V0RGVmaW5pdGlvbi52YWx1ZUNoYW5nZU1vZGUsXHJcbiAgICAgIGxhYmVsOiBsYXlvdXREZWZpbml0aW9uLmxhYmVsLFxyXG4gICAgICBwbGFjZWhvbGRlcjogbGF5b3V0RGVmaW5pdGlvbi5wbGFjZWhvbGRlcixcclxuICAgICAgc2hvd0xhYmVsOiBsYXlvdXREZWZpbml0aW9uLnNob3dMYWJlbCxcclxuICAgICAgY3NzQ2xhc3M6IGxheW91dERlZmluaXRpb24uY3NzQ2xhc3MsXHJcbiAgICAgIGNzc0xhYmVsQ2xhc3M6IGxheW91dERlZmluaXRpb24uY3NzTGFiZWxDbGFzcyxcclxuICAgICAgc3R5bGU6IGxheW91dERlZmluaXRpb24uc3R5bGUsXHJcbiAgICAgIGxhYmVsU3R5bGU6IGxheW91dERlZmluaXRpb24ubGFiZWxTdHlsZSxcclxuICAgICAgdG9vbGJhcklkOiBsYXlvdXREZWZpbml0aW9uLnRvb2xiYXJJZCxcclxuICAgIH07XHJcbiAgICByZXR1cm4gd2lkZ2V0O1xyXG4gIH1cclxuICBwcml2YXRlIGNyZWF0ZVRleHRGaWVsZE51bWJlcihsYXlvdXREZWZpbml0aW9uOiBTbWFydFdpZGdldERlZmluaXRpb24pOiBTbWFydEZvcm1XaWRnZXQ8YW55PiB7XHJcbiAgICBsZXQgd2lkZ2V0OiBTbWFydEZvcm1XaWRnZXQ8YW55PiA9IHtcclxuICAgICAgdHlwZTogU21hcnRGb3JtV2lkZ2V0VHlwZS5URVhUX0ZJRUxEX05VTUJFUixcclxuICAgICAga2V5OiBsYXlvdXREZWZpbml0aW9uLmtleSxcclxuICAgICAgdmFsdWVDaGFuZ2VNb2RlOiBsYXlvdXREZWZpbml0aW9uLnZhbHVlQ2hhbmdlTW9kZSxcclxuICAgICAgbGFiZWw6IGxheW91dERlZmluaXRpb24ubGFiZWwsXHJcbiAgICAgIHBsYWNlaG9sZGVyOiBsYXlvdXREZWZpbml0aW9uLnBsYWNlaG9sZGVyLFxyXG4gICAgICBwcmVmaXg6IGxheW91dERlZmluaXRpb24ucHJlZml4LFxyXG4gICAgICBzdWZmaXg6IGxheW91dERlZmluaXRpb24uc3VmZml4LFxyXG4gICAgICBpY29uOiBsYXlvdXREZWZpbml0aW9uLmljb24sXHJcbiAgICAgIGljb25Db2xvcjogbGF5b3V0RGVmaW5pdGlvbi5pY29uQ29sb3IsXHJcbiAgICAgIHNob3dMYWJlbDogbGF5b3V0RGVmaW5pdGlvbi5zaG93TGFiZWwsXHJcbiAgICAgIGNzc0NsYXNzOiBsYXlvdXREZWZpbml0aW9uLmNzc0NsYXNzLFxyXG4gICAgICBjc3NMYWJlbENsYXNzOiBsYXlvdXREZWZpbml0aW9uLmNzc0xhYmVsQ2xhc3MsXHJcbiAgICAgIHN0eWxlOiBsYXlvdXREZWZpbml0aW9uLnN0eWxlLFxyXG4gICAgICBsYWJlbFN0eWxlOiBsYXlvdXREZWZpbml0aW9uLmxhYmVsU3R5bGUsXHJcbiAgICAgIGhpbnQ6IGxheW91dERlZmluaXRpb24uaGludCxcclxuICAgIH07XHJcbiAgICByZXR1cm4gd2lkZ2V0O1xyXG4gIH1cclxuICBwcml2YXRlIGNyZWF0ZVRleHRCb3gobGF5b3V0RGVmaW5pdGlvbjogU21hcnRXaWRnZXREZWZpbml0aW9uKTogU21hcnRGb3JtV2lkZ2V0PGFueT4ge1xyXG4gICAgbGV0IHdpZGdldDogU21hcnRGb3JtV2lkZ2V0PGFueT4gPSB7XHJcbiAgICAgIHR5cGU6IFNtYXJ0Rm9ybVdpZGdldFR5cGUuVEVYVF9CT1gsXHJcbiAgICAgIGtleTogbGF5b3V0RGVmaW5pdGlvbi5rZXksXHJcbiAgICAgIHZhbHVlQ2hhbmdlTW9kZTogbGF5b3V0RGVmaW5pdGlvbi52YWx1ZUNoYW5nZU1vZGUsXHJcbiAgICAgIGxhYmVsOiBsYXlvdXREZWZpbml0aW9uLmxhYmVsLFxyXG4gICAgICBwbGFjZWhvbGRlcjogbGF5b3V0RGVmaW5pdGlvbi5wbGFjZWhvbGRlcixcclxuICAgICAgc2hvd0xhYmVsOiBsYXlvdXREZWZpbml0aW9uLnNob3dMYWJlbCxcclxuICAgICAgY3NzQ2xhc3M6IGxheW91dERlZmluaXRpb24uY3NzQ2xhc3MsXHJcbiAgICAgIGNzc0xhYmVsQ2xhc3M6IGxheW91dERlZmluaXRpb24uY3NzTGFiZWxDbGFzcyxcclxuICAgICAgc3R5bGU6IGxheW91dERlZmluaXRpb24uc3R5bGUsXHJcbiAgICAgIGxhYmVsU3R5bGU6IGxheW91dERlZmluaXRpb24ubGFiZWxTdHlsZSxcclxuICAgICAgaGludDogbGF5b3V0RGVmaW5pdGlvbi5oaW50LFxyXG4gICAgICBtYXhMZW5ndGg6IGxheW91dERlZmluaXRpb24ubWF4TGVuZ3RoLFxyXG4gICAgICBzaG93Q2hhcmFjdGVyTGltaXRTdWZmaXg6IGxheW91dERlZmluaXRpb24uc2hvd0NoYXJhY3RlckxpbWl0U3VmZml4LFxyXG4gICAgfTtcclxuICAgIHJldHVybiB3aWRnZXQ7XHJcbiAgfVxyXG4gIHByaXZhdGUgY3JlYXRlUmljaFRleHQobGF5b3V0RGVmaW5pdGlvbjogU21hcnRXaWRnZXREZWZpbml0aW9uKTogU21hcnRGb3JtV2lkZ2V0PGFueT4ge1xyXG4gICAgbGV0IHF1aWxsTW9kdWxlczogUXVpbGxNb2R1bGVzO1xyXG4gICAgaWYgKGxheW91dERlZmluaXRpb24ucHJvcGVydGllcyAmJiBsYXlvdXREZWZpbml0aW9uLnByb3BlcnRpZXNbJ3F1aWxsTW9kdWxlcyddKSB7XHJcbiAgICAgIHF1aWxsTW9kdWxlcyA9IGxheW91dERlZmluaXRpb24ucHJvcGVydGllc1sncXVpbGxNb2R1bGVzJ10gYXMgUXVpbGxNb2R1bGVzO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgcXVpbGxNb2R1bGVzID0gU21hcnRmb3JtTGF5b3V0RGVmaW5pdGlvblNlcnZpY2UuREVGQVVMVF9RVUlMTF9NT0RVTEVTO1xyXG4gICAgfVxyXG5cclxuICAgIGxldCB3aWRnZXQ6IFNtYXJ0Rm9ybVdpZGdldDxhbnk+ID0ge1xyXG4gICAgICB0eXBlOiBTbWFydEZvcm1XaWRnZXRUeXBlLlJJQ0hfVEVYVCxcclxuICAgICAga2V5OiBsYXlvdXREZWZpbml0aW9uLmtleSxcclxuICAgICAgdmFsdWVDaGFuZ2VNb2RlOiBsYXlvdXREZWZpbml0aW9uLnZhbHVlQ2hhbmdlTW9kZSxcclxuICAgICAgbGFiZWw6IGxheW91dERlZmluaXRpb24ubGFiZWwsXHJcbiAgICAgIHBsYWNlaG9sZGVyOiBsYXlvdXREZWZpbml0aW9uLnBsYWNlaG9sZGVyLFxyXG4gICAgICBzaG93TGFiZWw6IGxheW91dERlZmluaXRpb24uc2hvd0xhYmVsLFxyXG4gICAgICBjc3NDbGFzczogbGF5b3V0RGVmaW5pdGlvbi5jc3NDbGFzcyxcclxuICAgICAgY3NzTGFiZWxDbGFzczogbGF5b3V0RGVmaW5pdGlvbi5jc3NMYWJlbENsYXNzLFxyXG4gICAgICBzdHlsZTogbGF5b3V0RGVmaW5pdGlvbi5zdHlsZSxcclxuICAgICAgbGFiZWxTdHlsZTogbGF5b3V0RGVmaW5pdGlvbi5sYWJlbFN0eWxlLFxyXG4gICAgICBxdWlsbE1vZHVsZXMsXHJcbiAgICAgIG1heExlbmd0aDogbGF5b3V0RGVmaW5pdGlvbi5tYXhMZW5ndGgsXHJcbiAgICAgIHNob3dDaGFyYWN0ZXJMaW1pdFN1ZmZpeDogbGF5b3V0RGVmaW5pdGlvbi5zaG93Q2hhcmFjdGVyTGltaXRTdWZmaXgsXHJcbiAgICB9O1xyXG4gICAgcmV0dXJuIHdpZGdldDtcclxuICB9XHJcbiAgcHJpdmF0ZSBjcmVhdGVUb2dnbGUobGF5b3V0RGVmaW5pdGlvbjogU21hcnRXaWRnZXREZWZpbml0aW9uKTogU21hcnRGb3JtV2lkZ2V0PGFueT4ge1xyXG4gICAgbGV0IHdpZGdldDogU21hcnRGb3JtV2lkZ2V0PGFueT4gPSB7XHJcbiAgICAgIHR5cGU6IFNtYXJ0Rm9ybVdpZGdldFR5cGUuVE9HR0xFLFxyXG4gICAgICBrZXk6IGxheW91dERlZmluaXRpb24ua2V5LFxyXG4gICAgICB2YWx1ZUNoYW5nZU1vZGU6IGxheW91dERlZmluaXRpb24udmFsdWVDaGFuZ2VNb2RlLFxyXG4gICAgICBsYWJlbDogbGF5b3V0RGVmaW5pdGlvbi5sYWJlbCxcclxuICAgICAgc2hvd0xhYmVsOiBsYXlvdXREZWZpbml0aW9uLnNob3dMYWJlbCxcclxuICAgICAgY3NzQ2xhc3M6IGxheW91dERlZmluaXRpb24uY3NzQ2xhc3MsXHJcbiAgICAgIGNzc0xhYmVsQ2xhc3M6IGxheW91dERlZmluaXRpb24uY3NzTGFiZWxDbGFzcyxcclxuICAgICAgc3R5bGU6IGxheW91dERlZmluaXRpb24uc3R5bGUsXHJcbiAgICAgIGxhYmVsU3R5bGU6IGxheW91dERlZmluaXRpb24ubGFiZWxTdHlsZSxcclxuICAgICAgaGludDogbGF5b3V0RGVmaW5pdGlvbi5oaW50LFxyXG4gICAgfTtcclxuICAgIHJldHVybiB3aWRnZXQ7XHJcbiAgfVxyXG4gIHByaXZhdGUgY3JlYXRlUmFkaW9CdXR0b24obGF5b3V0RGVmaW5pdGlvbjogU21hcnRXaWRnZXREZWZpbml0aW9uKTogU21hcnRGb3JtV2lkZ2V0PGFueT4ge1xyXG4gICAgbGV0IHdpZGdldDogU21hcnRGb3JtV2lkZ2V0PGFueT4gPSB7XHJcbiAgICAgIHR5cGU6IFNtYXJ0Rm9ybVdpZGdldFR5cGUuUkFESU9fQlVUVE9OLFxyXG4gICAgICBrZXk6IGxheW91dERlZmluaXRpb24ua2V5LFxyXG4gICAgICB2YWx1ZUNoYW5nZU1vZGU6IGxheW91dERlZmluaXRpb24udmFsdWVDaGFuZ2VNb2RlLFxyXG4gICAgICBsYWJlbDogbGF5b3V0RGVmaW5pdGlvbi5sYWJlbCxcclxuICAgICAgc2hvd0xhYmVsOiBsYXlvdXREZWZpbml0aW9uLnNob3dMYWJlbCxcclxuICAgICAgY3NzQ2xhc3M6IGxheW91dERlZmluaXRpb24uY3NzQ2xhc3MsXHJcbiAgICAgIGNzc0xhYmVsQ2xhc3M6IGxheW91dERlZmluaXRpb24uY3NzTGFiZWxDbGFzcyxcclxuICAgICAgc3R5bGU6IGxheW91dERlZmluaXRpb24uc3R5bGUsXHJcbiAgICAgIGxhYmVsU3R5bGU6IGxheW91dERlZmluaXRpb24ubGFiZWxTdHlsZSxcclxuICAgICAgdmFsdWVMaXN0OiBbXSxcclxuICAgICAgc2VsZWN0aW9uOiBsYXlvdXREZWZpbml0aW9uLnNlbGVjdGlvbixcclxuICAgICAgaGludDogbGF5b3V0RGVmaW5pdGlvbi5oaW50LFxyXG4gICAgfTtcclxuXHJcbiAgICBpZiAobGF5b3V0RGVmaW5pdGlvbi52YWx1ZXMpIHtcclxuICAgICAgd2lkZ2V0LnZhbHVlTGlzdCA9IGxheW91dERlZmluaXRpb24udmFsdWVzLm1hcCgodmFsdWU6IFZhbHVlKSA9PiB7XHJcbiAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgIGtleTogdmFsdWUuY29kZSEsXHJcbiAgICAgICAgICBsYWJlbDogdmFsdWUuZGlzcGxheVZhbHVlLFxyXG4gICAgICAgICAgdHlwZTogU21hcnRGb3JtV2lkZ2V0VHlwZS5JVEVNLFxyXG4gICAgICAgICAgdmFsdWU6IHZhbHVlLmNvZGUsXHJcbiAgICAgICAgfTtcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gd2lkZ2V0O1xyXG4gIH1cclxuICBwcml2YXRlIGNyZWF0ZUNoZWNrQm94KGxheW91dERlZmluaXRpb246IFNtYXJ0V2lkZ2V0RGVmaW5pdGlvbik6IFNtYXJ0Rm9ybVdpZGdldDxhbnk+IHtcclxuICAgIGxldCB3aWRnZXQ6IFNtYXJ0Rm9ybVdpZGdldDxhbnk+ID0ge1xyXG4gICAgICB0eXBlOiBTbWFydEZvcm1XaWRnZXRUeXBlLkNIRUNLX0JPWF8yLFxyXG4gICAgICBrZXk6IGxheW91dERlZmluaXRpb24ua2V5LFxyXG4gICAgICB2YWx1ZUNoYW5nZU1vZGU6IGxheW91dERlZmluaXRpb24udmFsdWVDaGFuZ2VNb2RlLFxyXG4gICAgICBsYWJlbDogbGF5b3V0RGVmaW5pdGlvbi5sYWJlbCxcclxuICAgICAgc2hvd0xhYmVsOiBsYXlvdXREZWZpbml0aW9uLnNob3dMYWJlbCxcclxuICAgICAgY3NzQ2xhc3M6IGxheW91dERlZmluaXRpb24uY3NzQ2xhc3MsXHJcbiAgICAgIGNzc0xhYmVsQ2xhc3M6IGxheW91dERlZmluaXRpb24uY3NzTGFiZWxDbGFzcyxcclxuICAgICAgc3R5bGU6IGxheW91dERlZmluaXRpb24uc3R5bGUsXHJcbiAgICAgIGxhYmVsU3R5bGU6IGxheW91dERlZmluaXRpb24ubGFiZWxTdHlsZSxcclxuICAgICAgdmFsdWVMaXN0OiBbXSxcclxuICAgICAgc2VsZWN0aW9uOiBsYXlvdXREZWZpbml0aW9uLnNlbGVjdGlvbixcclxuICAgICAgaGludDogbGF5b3V0RGVmaW5pdGlvbi5oaW50LFxyXG4gICAgfTtcclxuICAgIGlmIChsYXlvdXREZWZpbml0aW9uLnZhbHVlcykge1xyXG4gICAgICB3aWRnZXQudmFsdWVMaXN0ID0gbGF5b3V0RGVmaW5pdGlvbi52YWx1ZXMubWFwKCh2YWx1ZTogVmFsdWUpID0+IHtcclxuICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAga2V5OiB2YWx1ZS5jb2RlISxcclxuICAgICAgICAgIGxhYmVsOiB2YWx1ZS5kaXNwbGF5VmFsdWUsXHJcbiAgICAgICAgICB0eXBlOiBTbWFydEZvcm1XaWRnZXRUeXBlLklURU0sXHJcbiAgICAgICAgICB2YWx1ZTogZmFsc2UsXHJcbiAgICAgICAgfTtcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gd2lkZ2V0O1xyXG4gIH1cclxuICBwcml2YXRlIGNyZWF0ZVNlbGVjdChsYXlvdXREZWZpbml0aW9uOiBTbWFydFdpZGdldERlZmluaXRpb24sIG1vZGVsPzogYW55KTogU21hcnRGb3JtV2lkZ2V0PGFueT4ge1xyXG4gICAgbGV0IHdpZGdldDogU21hcnRGb3JtV2lkZ2V0PGFueT4gPSB7XHJcbiAgICAgIHR5cGU6IFNtYXJ0Rm9ybVdpZGdldFR5cGUuU0VMRUNULFxyXG4gICAgICBrZXk6IGxheW91dERlZmluaXRpb24ua2V5LFxyXG4gICAgICB2YWx1ZUNoYW5nZU1vZGU6IGxheW91dERlZmluaXRpb24udmFsdWVDaGFuZ2VNb2RlLFxyXG4gICAgICBsYWJlbDogbGF5b3V0RGVmaW5pdGlvbi5sYWJlbCxcclxuICAgICAgc2hvd0xhYmVsOiBsYXlvdXREZWZpbml0aW9uLnNob3dMYWJlbCxcclxuICAgICAgY3NzQ2xhc3M6IGxheW91dERlZmluaXRpb24uY3NzQ2xhc3MsXHJcbiAgICAgIGNzc0xhYmVsQ2xhc3M6IGxheW91dERlZmluaXRpb24uY3NzTGFiZWxDbGFzcyxcclxuICAgICAgc3R5bGU6IGxheW91dERlZmluaXRpb24uc3R5bGUsXHJcbiAgICAgIGxhYmVsU3R5bGU6IGxheW91dERlZmluaXRpb24ubGFiZWxTdHlsZSxcclxuICAgICAgdmFsdWVMaXN0OiBbXSxcclxuICAgICAgc2VsZWN0aW9uOiBsYXlvdXREZWZpbml0aW9uLnNlbGVjdGlvbixcclxuICAgICAgaGludDogbGF5b3V0RGVmaW5pdGlvbi5oaW50LFxyXG4gICAgfTtcclxuXHJcbiAgICBpZiAobGF5b3V0RGVmaW5pdGlvbi52YWx1ZXMpIHtcclxuICAgICAgd2lkZ2V0LnZhbHVlTGlzdCA9IGxheW91dERlZmluaXRpb24udmFsdWVzLm1hcCgodmFsdWU6IFZhbHVlKSA9PiB7XHJcbiAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgIGtleTogdmFsdWUuY29kZSEsXHJcbiAgICAgICAgICBsYWJlbDogdmFsdWUuZGlzcGxheVZhbHVlLFxyXG4gICAgICAgICAgdHlwZTogU21hcnRGb3JtV2lkZ2V0VHlwZS5JVEVNLFxyXG4gICAgICAgICAgdmFsdWU6IHZhbHVlLmNvZGUsXHJcbiAgICAgICAgfTtcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gd2lkZ2V0O1xyXG4gIH1cclxuICBwcml2YXRlIGNyZWF0ZVNlbGVjdE11bHRpcGxlKGxheW91dERlZmluaXRpb246IFNtYXJ0V2lkZ2V0RGVmaW5pdGlvbik6IFNtYXJ0Rm9ybVdpZGdldDxhbnk+IHtcclxuICAgIGxldCB3aWRnZXQ6IFNtYXJ0Rm9ybVdpZGdldDxhbnk+ID0ge1xyXG4gICAgICB0eXBlOiBTbWFydEZvcm1XaWRnZXRUeXBlLlNFTEVDVF9NVUxUSVBMRSxcclxuICAgICAga2V5OiBsYXlvdXREZWZpbml0aW9uLmtleSxcclxuICAgICAgdmFsdWVDaGFuZ2VNb2RlOiBsYXlvdXREZWZpbml0aW9uLnZhbHVlQ2hhbmdlTW9kZSxcclxuICAgICAgbGFiZWw6IGxheW91dERlZmluaXRpb24ubGFiZWwsXHJcbiAgICAgIHNob3dMYWJlbDogbGF5b3V0RGVmaW5pdGlvbi5zaG93TGFiZWwsXHJcbiAgICAgIGNzc0NsYXNzOiBsYXlvdXREZWZpbml0aW9uLmNzc0NsYXNzLFxyXG4gICAgICBjc3NMYWJlbENsYXNzOiBsYXlvdXREZWZpbml0aW9uLmNzc0xhYmVsQ2xhc3MsXHJcbiAgICAgIHN0eWxlOiBsYXlvdXREZWZpbml0aW9uLnN0eWxlLFxyXG4gICAgICBsYWJlbFN0eWxlOiBsYXlvdXREZWZpbml0aW9uLmxhYmVsU3R5bGUsXHJcbiAgICAgIHZhbHVlTGlzdDogW10sXHJcbiAgICAgIHNlbGVjdGlvbjogbGF5b3V0RGVmaW5pdGlvbi5zZWxlY3Rpb24sXHJcbiAgICAgIGhpbnQ6IGxheW91dERlZmluaXRpb24uaGludCxcclxuICAgIH07XHJcbiAgICBpZiAobGF5b3V0RGVmaW5pdGlvbi52YWx1ZXMpIHtcclxuICAgICAgd2lkZ2V0LnZhbHVlTGlzdCA9IGxheW91dERlZmluaXRpb24udmFsdWVzLm1hcCgodmFsdWU6IFZhbHVlKSA9PiB7XHJcbiAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgIGtleTogdmFsdWUuY29kZSEsXHJcbiAgICAgICAgICBsYWJlbDogdmFsdWUuZGlzcGxheVZhbHVlLFxyXG4gICAgICAgICAgdHlwZTogU21hcnRGb3JtV2lkZ2V0VHlwZS5JVEVNLFxyXG4gICAgICAgICAgdmFsdWU6IHZhbHVlLmNvZGUsXHJcbiAgICAgICAgfTtcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gd2lkZ2V0O1xyXG4gIH1cclxuICBwcml2YXRlIGNyZWF0ZURhdGVQaWNrZXIobGF5b3V0RGVmaW5pdGlvbjogU21hcnRXaWRnZXREZWZpbml0aW9uKTogU21hcnRGb3JtV2lkZ2V0PGFueT4ge1xyXG4gICAgbGV0IHdpZGdldDogU21hcnRGb3JtV2lkZ2V0PGFueT4gPSB7XHJcbiAgICAgIHR5cGU6IFNtYXJ0Rm9ybVdpZGdldFR5cGUuREFURV9QSUNLRVIsXHJcbiAgICAgIGtleTogbGF5b3V0RGVmaW5pdGlvbi5rZXksXHJcbiAgICAgIHZhbHVlQ2hhbmdlTW9kZTogbGF5b3V0RGVmaW5pdGlvbi52YWx1ZUNoYW5nZU1vZGUsXHJcbiAgICAgIGxhYmVsOiBsYXlvdXREZWZpbml0aW9uLmxhYmVsLFxyXG4gICAgICBzaG93TGFiZWw6IGxheW91dERlZmluaXRpb24uc2hvd0xhYmVsLFxyXG4gICAgICBjc3NDbGFzczogbGF5b3V0RGVmaW5pdGlvbi5jc3NDbGFzcyxcclxuICAgICAgY3NzTGFiZWxDbGFzczogbGF5b3V0RGVmaW5pdGlvbi5jc3NMYWJlbENsYXNzLFxyXG4gICAgICBzdHlsZTogbGF5b3V0RGVmaW5pdGlvbi5zdHlsZSxcclxuICAgICAgbGFiZWxTdHlsZTogbGF5b3V0RGVmaW5pdGlvbi5sYWJlbFN0eWxlLFxyXG4gICAgICBoaW50OiBsYXlvdXREZWZpbml0aW9uLmhpbnQsXHJcbiAgICB9O1xyXG4gICAgcmV0dXJuIHdpZGdldDtcclxuICB9XHJcbiAgcHJpdmF0ZSBjcmVhdGVEYXRlVGltZVBpY2tlcihsYXlvdXREZWZpbml0aW9uOiBTbWFydFdpZGdldERlZmluaXRpb24pOiBTbWFydEZvcm1XaWRnZXQ8YW55PiB7XHJcbiAgICBsZXQgd2lkZ2V0OiBTbWFydEZvcm1XaWRnZXQ8YW55PiA9IHtcclxuICAgICAgdHlwZTogU21hcnRGb3JtV2lkZ2V0VHlwZS5EQVRFX1RJTUVfUElDS0VSLFxyXG4gICAgICBrZXk6IGxheW91dERlZmluaXRpb24ua2V5LFxyXG4gICAgICB2YWx1ZUNoYW5nZU1vZGU6IGxheW91dERlZmluaXRpb24udmFsdWVDaGFuZ2VNb2RlLFxyXG4gICAgICBsYWJlbDogbGF5b3V0RGVmaW5pdGlvbi5sYWJlbCxcclxuICAgICAgc2hvd0xhYmVsOiBsYXlvdXREZWZpbml0aW9uLnNob3dMYWJlbCxcclxuICAgICAgY3NzQ2xhc3M6IGxheW91dERlZmluaXRpb24uY3NzQ2xhc3MsXHJcbiAgICAgIGNzc0xhYmVsQ2xhc3M6IGxheW91dERlZmluaXRpb24uY3NzTGFiZWxDbGFzcyxcclxuICAgICAgc3R5bGU6IGxheW91dERlZmluaXRpb24uc3R5bGUsXHJcbiAgICAgIGxhYmVsU3R5bGU6IGxheW91dERlZmluaXRpb24ubGFiZWxTdHlsZSxcclxuICAgICAgaGludDogbGF5b3V0RGVmaW5pdGlvbi5oaW50LFxyXG4gICAgfTtcclxuICAgIHJldHVybiB3aWRnZXQ7XHJcbiAgfVxyXG4gIHByaXZhdGUgY3JlYXRlSW1hZ2UobGF5b3V0RGVmaW5pdGlvbjogU21hcnRXaWRnZXREZWZpbml0aW9uKTogU21hcnRGb3JtV2lkZ2V0PGFueT4ge1xyXG4gICAgbGV0IHdpZGdldDogU21hcnRGb3JtV2lkZ2V0PGFueT4gPSB7XHJcbiAgICAgIHR5cGU6IFNtYXJ0Rm9ybVdpZGdldFR5cGUuSU1BR0UsXHJcbiAgICAgIGtleTogbGF5b3V0RGVmaW5pdGlvbi5rZXksXHJcbiAgICAgIHZhbHVlQ2hhbmdlTW9kZTogbGF5b3V0RGVmaW5pdGlvbi52YWx1ZUNoYW5nZU1vZGUsXHJcbiAgICAgIGxhYmVsOiBsYXlvdXREZWZpbml0aW9uLmxhYmVsLFxyXG4gICAgICBzaG93TGFiZWw6IGxheW91dERlZmluaXRpb24uc2hvd0xhYmVsLFxyXG4gICAgICBjc3NDbGFzczogbGF5b3V0RGVmaW5pdGlvbi5jc3NDbGFzcyxcclxuICAgICAgY3NzTGFiZWxDbGFzczogbGF5b3V0RGVmaW5pdGlvbi5jc3NMYWJlbENsYXNzLFxyXG4gICAgICBzdHlsZTogbGF5b3V0RGVmaW5pdGlvbi5zdHlsZSxcclxuICAgICAgbGFiZWxTdHlsZTogbGF5b3V0RGVmaW5pdGlvbi5sYWJlbFN0eWxlLFxyXG4gICAgfTtcclxuICAgIHJldHVybiB3aWRnZXQ7XHJcbiAgfVxyXG4gIHByaXZhdGUgY3JlYXRlU3ZnKGxheW91dERlZmluaXRpb246IFNtYXJ0V2lkZ2V0RGVmaW5pdGlvbik6IFNtYXJ0Rm9ybVdpZGdldDxhbnk+IHtcclxuICAgIGxldCB3aWRnZXQ6IFNtYXJ0Rm9ybVdpZGdldDxhbnk+ID0ge1xyXG4gICAgICB0eXBlOiBTbWFydEZvcm1XaWRnZXRUeXBlLlNWRyxcclxuICAgICAga2V5OiBsYXlvdXREZWZpbml0aW9uLmtleSxcclxuICAgICAgdmFsdWVDaGFuZ2VNb2RlOiBsYXlvdXREZWZpbml0aW9uLnZhbHVlQ2hhbmdlTW9kZSxcclxuICAgICAgbGFiZWw6IGxheW91dERlZmluaXRpb24ubGFiZWwsXHJcbiAgICAgIHNob3dMYWJlbDogbGF5b3V0RGVmaW5pdGlvbi5zaG93TGFiZWwsXHJcbiAgICAgIGNzc0NsYXNzOiBsYXlvdXREZWZpbml0aW9uLmNzc0NsYXNzLFxyXG4gICAgICBjc3NMYWJlbENsYXNzOiBsYXlvdXREZWZpbml0aW9uLmNzc0xhYmVsQ2xhc3MsXHJcbiAgICAgIHN0eWxlOiBsYXlvdXREZWZpbml0aW9uLnN0eWxlLFxyXG4gICAgICBsYWJlbFN0eWxlOiBsYXlvdXREZWZpbml0aW9uLmxhYmVsU3R5bGUsXHJcbiAgICB9O1xyXG4gICAgcmV0dXJuIHdpZGdldDtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgY3JlYXRlQnV0dG9uKGNvbmZpZzogU21hcnRmb3JtTGF5b3V0Q3JlYXRlV2lkZ2V0Q29uZmlnKTogU21hcnRGb3JtV2lkZ2V0PGFueT4ge1xyXG4gICAgbGV0IHVpQWN0aW9uOiBhbnkgPSBjb25maWcudWlBY3Rpb25zPy5maW5kKFxyXG4gICAgICAodWlBY3Rpb246IGFueSkgPT4gdWlBY3Rpb24uY29kZSA9PT0gY29uZmlnLmxheW91dERlZmluaXRpb24/LmtleVxyXG4gICAgKTtcclxuICAgIGxldCB3aWRnZXQ6IFNtYXJ0Rm9ybVdpZGdldDxhbnk+ID0ge1xyXG4gICAgICB0eXBlOiBTbWFydEZvcm1XaWRnZXRUeXBlLkJVVFRPTixcclxuICAgICAga2V5OiBjb25maWcubGF5b3V0RGVmaW5pdGlvbj8ua2V5ISxcclxuICAgICAgdmFsdWVDaGFuZ2VNb2RlOiBjb25maWcubGF5b3V0RGVmaW5pdGlvbj8udmFsdWVDaGFuZ2VNb2RlLFxyXG4gICAgICBsYWJlbDogY29uZmlnLmxheW91dERlZmluaXRpb24/LmxhYmVsISxcclxuICAgICAgc2hvd0xhYmVsOiBjb25maWcubGF5b3V0RGVmaW5pdGlvbj8uc2hvd0xhYmVsLFxyXG4gICAgICBjc3NDbGFzczogY29uZmlnLmxheW91dERlZmluaXRpb24/LmNzc0NsYXNzLFxyXG4gICAgICBjc3NMYWJlbENsYXNzOiBjb25maWcubGF5b3V0RGVmaW5pdGlvbj8uY3NzTGFiZWxDbGFzcyxcclxuICAgICAgc3R5bGU6IGNvbmZpZy5sYXlvdXREZWZpbml0aW9uPy5zdHlsZSxcclxuICAgICAgbGFiZWxTdHlsZTogY29uZmlnLmxheW91dERlZmluaXRpb24/LmxhYmVsU3R5bGUsXHJcbiAgICAgIGNhbGxiYWNrOiBjb25maWcuYnV0dG9uQ2FsbGJhY2shLFxyXG4gICAgICB1aUFjdGlvbixcclxuICAgICAgdWlBY3Rpb25EZXNjcmlwdG9yOiBjb25maWcudWlBY3Rpb25EZXNjcmlwdG9ycyEodWlBY3Rpb24pLFxyXG4gICAgfTtcclxuICAgIHJldHVybiB3aWRnZXQ7XHJcbiAgfVxyXG4gIHByaXZhdGUgY3JlYXRlRGl2aWRlcihsYXlvdXREZWZpbml0aW9uOiBTbWFydFdpZGdldERlZmluaXRpb24pOiBTbWFydEZvcm1XaWRnZXQ8YW55PiB7XHJcbiAgICBsZXQgd2lkZ2V0OiBTbWFydEZvcm1XaWRnZXQ8YW55PiA9IHtcclxuICAgICAgdHlwZTogU21hcnRGb3JtV2lkZ2V0VHlwZS5ESVZJREVSLFxyXG4gICAgICBrZXk6IGxheW91dERlZmluaXRpb24ua2V5LFxyXG4gICAgICB2YWx1ZUNoYW5nZU1vZGU6IGxheW91dERlZmluaXRpb24udmFsdWVDaGFuZ2VNb2RlLFxyXG4gICAgICBsYWJlbDogbGF5b3V0RGVmaW5pdGlvbi5sYWJlbCxcclxuICAgICAgc2hvd0xhYmVsOiBsYXlvdXREZWZpbml0aW9uLnNob3dMYWJlbCxcclxuICAgICAgY3NzQ2xhc3M6IGxheW91dERlZmluaXRpb24uY3NzQ2xhc3MsXHJcbiAgICAgIGNzc0xhYmVsQ2xhc3M6IGxheW91dERlZmluaXRpb24uY3NzTGFiZWxDbGFzcyxcclxuICAgICAgc3R5bGU6IGxheW91dERlZmluaXRpb24uc3R5bGUsXHJcbiAgICAgIGxhYmVsU3R5bGU6IGxheW91dERlZmluaXRpb24ubGFiZWxTdHlsZSxcclxuICAgIH07XHJcbiAgICByZXR1cm4gd2lkZ2V0O1xyXG4gIH1cclxuICBwcml2YXRlIGNyZWF0ZUZpbGVVcGxvYWRlcihsYXlvdXREZWZpbml0aW9uOiBTbWFydEZpbGVVcGxvYWRlcik6IFNtYXJ0Rm9ybVdpZGdldDxhbnk+IHtcclxuICAgIGxldCB3aWRnZXQ6IFNtYXJ0RmlsZVVwbG9hZGVyID0ge1xyXG4gICAgICB0eXBlOiBTbWFydEZvcm1XaWRnZXRUeXBlLkZJTEVfVVBMT0FERVIsXHJcbiAgICAgIGtleTogbGF5b3V0RGVmaW5pdGlvbi5rZXksXHJcbiAgICAgIHZhbHVlQ2hhbmdlTW9kZTogbGF5b3V0RGVmaW5pdGlvbi52YWx1ZUNoYW5nZU1vZGUsXHJcbiAgICAgIGxhYmVsOiBsYXlvdXREZWZpbml0aW9uLmxhYmVsLFxyXG4gICAgICBzaG93TGFiZWw6IGxheW91dERlZmluaXRpb24uc2hvd0xhYmVsLFxyXG4gICAgICBjc3NDbGFzczogbGF5b3V0RGVmaW5pdGlvbi5jc3NDbGFzcyxcclxuICAgICAgY3NzTGFiZWxDbGFzczogbGF5b3V0RGVmaW5pdGlvbi5jc3NMYWJlbENsYXNzLFxyXG4gICAgICBzdHlsZTogbGF5b3V0RGVmaW5pdGlvbi5zdHlsZSxcclxuICAgICAgbGFiZWxTdHlsZTogbGF5b3V0RGVmaW5pdGlvbi5sYWJlbFN0eWxlLFxyXG4gICAgICB1cGxvYWRDYWxsYmFjazogbGF5b3V0RGVmaW5pdGlvbi51cGxvYWRDYWxsYmFjayxcclxuICAgIH07XHJcbiAgICByZXR1cm4gd2lkZ2V0O1xyXG4gIH1cclxuICBwcml2YXRlIGNyZWF0ZVlvdXR1YmVQbGF5ZXIobGF5b3V0RGVmaW5pdGlvbjogU21hcnRXaWRnZXREZWZpbml0aW9uKTogU21hcnRGb3JtV2lkZ2V0PGFueT4ge1xyXG4gICAgY29uc3QgeyBsaW5rLCBzdGFydFNlY29uZHMsIGVuZFNlY29uZHMgfSA9IHRoaXMuZXh0cmFjdFlvdXR1YmVQbGF5ZXJQcm9wcyhsYXlvdXREZWZpbml0aW9uKTtcclxuICAgIHJldHVybiB7XHJcbiAgICAgIHR5cGU6IFNtYXJ0Rm9ybVdpZGdldFR5cGUuWU9VVFVCRV9QTEFZRVIsXHJcbiAgICAgIGtleTogbGF5b3V0RGVmaW5pdGlvbi5rZXksXHJcbiAgICAgIGxhYmVsOiBsYXlvdXREZWZpbml0aW9uLmxhYmVsLFxyXG4gICAgICBoaW50OiBsYXlvdXREZWZpbml0aW9uLmhpbnQsXHJcbiAgICAgIHZhbHVlQ2hhbmdlTW9kZTogbGF5b3V0RGVmaW5pdGlvbi52YWx1ZUNoYW5nZU1vZGUsXHJcbiAgICAgIHNob3dMYWJlbDogbGF5b3V0RGVmaW5pdGlvbi5zaG93TGFiZWwsXHJcbiAgICAgIGNzc0NsYXNzOiBsYXlvdXREZWZpbml0aW9uLmNzc0NsYXNzLFxyXG4gICAgICBjc3NMYWJlbENsYXNzOiBsYXlvdXREZWZpbml0aW9uLmNzc0xhYmVsQ2xhc3MsXHJcbiAgICAgIHN0eWxlOiBsYXlvdXREZWZpbml0aW9uLnN0eWxlLFxyXG4gICAgICBsYWJlbFN0eWxlOiBsYXlvdXREZWZpbml0aW9uLmxhYmVsU3R5bGUsXHJcbiAgICAgIGxpbmssXHJcbiAgICAgIHN0YXJ0U2Vjb25kcyxcclxuICAgICAgZW5kU2Vjb25kcyxcclxuICAgIH07XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGV4dHJhY3RZb3V0dWJlUGxheWVyUHJvcHMobGF5b3V0RGVmaW5pdGlvbjogU21hcnRXaWRnZXREZWZpbml0aW9uKToge1xyXG4gICAgbGluazogc3RyaW5nO1xyXG4gICAgc3RhcnRTZWNvbmRzOiBudW1iZXI7XHJcbiAgICBlbmRTZWNvbmRzPzogbnVtYmVyO1xyXG4gIH0ge1xyXG4gICAgY29uc3QgcHJvcHMgPSBsYXlvdXREZWZpbml0aW9uLnByb3BlcnRpZXM7XHJcbiAgICBpZiAoIXByb3BzKSB7XHJcbiAgICAgIHRoaXMubG9nTWlzc2luZ1Byb3BlcnR5KGxheW91dERlZmluaXRpb24sICdwcm9wZXJ0aWVzJyk7XHJcbiAgICAgIHJldHVybiB7IGxpbms6ICcnLCBzdGFydFNlY29uZHM6IDAgfTtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBsaW5rID0gKHByb3BzWydsaW5rJ10gPyAocHJvcHNbJ2xpbmsnXSBhcyBTdHJpbmcpIDogJycpIGFzIHN0cmluZztcclxuICAgIGlmICghbGluayB8fCBsaW5rLmxlbmd0aCA8IDEpIHtcclxuICAgICAgdGhpcy5sb2dNaXNzaW5nUHJvcGVydHkobGF5b3V0RGVmaW5pdGlvbiwgJ2xpbmsnKTtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBzdGFydFNlY29uZHMgPSAocHJvcHNbJ3N0YXJ0U2Vjb25kcyddID8gKHByb3BzWydzdGFydFNlY29uZHMnXSBhcyBOdW1iZXIpIDogMCkgYXMgbnVtYmVyO1xyXG4gICAgbGV0IGVuZFNlY29uZHM6IG51bWJlciB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZDtcclxuICAgIGlmIChwcm9wc1snZW5kU2Vjb25kcyddKSB7XHJcbiAgICAgIGVuZFNlY29uZHMgPSBwcm9wc1snZW5kU2Vjb25kcyddIGFzIE51bWJlciBhcyBudW1iZXI7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIHsgbGluaywgc3RhcnRTZWNvbmRzLCBlbmRTZWNvbmRzIH07XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGxvZ01pc3NpbmdQcm9wZXJ0eShsYXlvdXREZWZpbml0aW9uOiBTbWFydFdpZGdldERlZmluaXRpb24sIHByb3A6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgY29uc29sZS5lcnJvcihcclxuICAgICAgYFByb3BlcnR5IDwke3Byb3B9PiBtaXNzaW5nIGZyb20gbGF5b3V0IGRlZmluaXRpb246ICR7SlNPTi5zdHJpbmdpZnkobGF5b3V0RGVmaW5pdGlvbil9YFxyXG4gICAgKTtcclxuICB9XHJcbn1cclxuIl19