@smartbit4all/ng-client 6.0.54 → 6.0.56

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 (21) hide show
  1. package/esm2022/lib/smart-client/smart-component-api-client.mjs +4 -1
  2. package/esm2022/lib/smart-component-layout/smart-component-layout-utility.mjs +22 -1
  3. package/esm2022/lib/smart-component-layout/smart-component-layout.component.mjs +25 -23
  4. package/esm2022/lib/smart-component-layout/smart-component-layout.module.mjs +5 -1
  5. package/esm2022/lib/smart-filter-editor/project.mjs +2 -1
  6. package/esm2022/lib/smart-filter-editor/smart-filter-editor-content/smart-filter-editor-content.component.mjs +1 -1
  7. package/esm2022/lib/smart-filter-editor/smart-filter-editor.module.mjs +8 -3
  8. package/esm2022/lib/smart-filter-editor/smart-filter-widget/smart-filter-widget.component.mjs +58 -0
  9. package/esm2022/lib/smart-form/smartfileuploader/smartfileuploader.component.mjs +8 -5
  10. package/fesm2022/smartbit4all-ng-client.mjs +870 -785
  11. package/fesm2022/smartbit4all-ng-client.mjs.map +1 -1
  12. package/lib/smart-component-layout/smart-component-layout-utility.d.ts +6 -0
  13. package/lib/smart-component-layout/smart-component-layout.component.d.ts +6 -4
  14. package/lib/smart-component-layout/smart-component-layout.module.d.ts +4 -3
  15. package/lib/smart-filter-editor/project.d.ts +1 -0
  16. package/lib/smart-filter-editor/smart-filter-editor.module.d.ts +9 -8
  17. package/lib/smart-filter-editor/smart-filter-widget/smart-filter-widget.component.d.ts +23 -0
  18. package/lib/smart-form/smartfileuploader/smartfileuploader.component.d.ts +1 -1
  19. package/package.json +1 -1
  20. package/smartbit4all-ng-client-6.0.56.tgz +0 -0
  21. package/smartbit4all-ng-client-6.0.54.tgz +0 -0
@@ -326,4 +326,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImpo
326
326
  type: ViewChild,
327
327
  args: ['simpleFilterFromChild', { read: ViewContainerRef }]
328
328
  }] } });
329
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnQtZmlsdGVyLWVkaXRvci1jb250ZW50LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NtYXJ0LW5nLWNsaWVudC9zcmMvbGliL3NtYXJ0LWZpbHRlci1lZGl0b3Ivc21hcnQtZmlsdGVyLWVkaXRvci1jb250ZW50L3NtYXJ0LWZpbHRlci1lZGl0b3ItY29udGVudC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zbWFydC1uZy1jbGllbnQvc3JjL2xpYi9zbWFydC1maWx0ZXItZWRpdG9yL3NtYXJ0LWZpbHRlci1lZGl0b3ItY29udGVudC9zbWFydC1maWx0ZXItZWRpdG9yLWNvbnRlbnQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVMLFNBQVMsRUFHVCxNQUFNLEVBQ04sS0FBSyxFQUdMLFFBQVEsRUFDUixTQUFTLEVBRVQsZ0JBQWdCLEdBQ2pCLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFBRSxPQUFPLEVBQWdCLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUV4RCxPQUFPLEVBQUUsK0JBQStCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUM5RSxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxxREFBcUQsQ0FBQztBQUMvRixPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUVoRSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUsxRSxPQUFPLEVBQUUsc0NBQXNDLEVBQUUsTUFBTSw2Q0FBNkMsQ0FBQztBQUVyRyxPQUFPLEVBQUUsaUNBQWlDLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUV6RixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxpREFBaUQsQ0FBQztBQUNyRixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsZ0JBQWdCLEVBQUUs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ZW50IjpbImltcG9ydCB7XHJcbiAgQWZ0ZXJWaWV3SW5pdCxcclxuICBDb21wb25lbnQsXHJcbiAgQ29tcG9uZW50UmVmLFxyXG4gIEluamVjdG9yLFxyXG4gIEluamVjdCxcclxuICBJbnB1dCxcclxuICBPbkRlc3Ryb3ksXHJcbiAgT25Jbml0LFxyXG4gIE9wdGlvbmFsLFxyXG4gIFZpZXdDaGlsZCxcclxuICBWaWV3Q2hpbGRyZW4sXHJcbiAgVmlld0NvbnRhaW5lclJlZixcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuXHJcbmltcG9ydCB7IFN1YmplY3QsIFN1YnNjcmlwdGlvbiwgdGFrZVVudGlsIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IENvbXBvbmVudEZhY3RvcnlTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vY29tcG9uZW50LWZhY3Rvcnktc2VydmljZS9jb21wb25lbnQtZmFjdG9yeS1zZXJ2aWNlLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBGaWx0ZXJFeHByZXNzaW9uRmllbGRXaWRnZXRUeXBlIH0gZnJvbSAnLi4vLi4vc21hcnQtZmlsdGVyL3Byb2plY3RzJztcclxuaW1wb3J0IHsgU21hcnRGb3JtV2lkZ2V0RGlyZWN0aW9uIH0gZnJvbSAnLi4vLi4vc21hcnQtZm9ybS9hcGkvbW9kZWwvc21hcnRGb3JtV2lkZ2V0RGlyZWN0aW9uJztcclxuaW1wb3J0IHsgU21hcnRGb3JtV2lkZ2V0VHlwZSB9IGZyb20gJy4uLy4uL3NtYXJ0LWZvcm0vcHJvamVjdHMnO1xyXG5pbXBvcnQgeyBTbWFydGZvcm1MYXlvdXREZWZpbml0aW9uU2VydmljZSB9IGZyb20gJy4uLy4uL3NtYXJ0LWZvcm0vc2VydmljZXMvc21hcnRmb3JtLmxheW91dC1kZWZpbml0aW9uLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBTbWFydGZvcm1Db21wb25lbnQgfSBmcm9tICcuLi8uLi9zbWFydC1mb3JtL3NtYXJ0Zm9ybS5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBTbWFydEZvcm1XaWRnZXQgfSBmcm9tICcuLi8uLi9zbWFydC1mb3JtL3NtYXJ0Zm9ybS5mb3JtLW1vZGVsJztcclxuaW1wb3J0IHsgU21hcnRGb3JtLCBTb3BoaXN0aWNhdGVkVmFsdWVDaGFuZ2UsIFZhbHVlIH0gZnJvbSAnLi4vLi4vc21hcnQtZm9ybS9zbWFydGZvcm0ubW9kZWwnO1xyXG5pbXBvcnQgeyBVaUFjdGlvbiB9IGZyb20gJy4uLy4uL3ZpZXctY29udGV4dC9hcGkvbW9kZWwvdWlBY3Rpb24nO1xyXG5pbXBvcnQgeyBVaUFjdGlvbk1vZGVsIH0gZnJvbSAnLi4vLi4vdmlldy1jb250ZXh0L3NtYXJ0LXVpLWFjdGlvbi91aS1hY3Rpb24ubW9kZWwnO1xyXG5pbXBvcnQgeyBGaWx0ZXJFeHByZXNzaW9uQnVpbGRlclVpTW9kZWxUeXBlRW51bSB9IGZyb20gJy4uL2FwaS9tb2RlbC9maWx0ZXJFeHByZXNzaW9uQnVpbGRlclVpTW9kZWwnO1xyXG5pbXBvcnQgeyBGaWx0ZXJFeHByZXNzaW9uRmllbGQgfSBmcm9tICcuLi9hcGkvbW9kZWwvZmlsdGVyRXhwcmVzc2lvbkZpZWxkJztcclxuaW1wb3J0IHsgRmlsdGVyRXhwcmVzc2lvbkJ1aWxkZXJBcGlBY3Rpb25zIH0gZnJvbSAnLi4vZmlsdGVyRXhwcmVzc2lvbkJ1aWxkZXJBcGlBY3Rpb25zJztcclxuaW1wb3J0IHsgSVNtYXJ0RmlsdGVyRWRpdG9yU2VydmljZSB9IGZyb20gJy4uL3NtYXJ0LWZpbHRlci1lZGl0b3Iuc2VydmljZSc7XHJcbmltcG9ydCB7IFNtYXJ0T2JqZWN0VXRpbGl0eSB9IGZyb20gJy4uLy4uL3ZpZXctY29udGV4dC91dGlsaXR5L3NtYXJ0LW9iamVjdC11dGlsaXR5JztcclxuaW1wb3J0IHsgQ09NUE9ORU5UX0xJQlJBUlksIENvbXBvbmVudExpYnJhcnkgfSBmcm9tICcuLi8uLi92aWV3LWNvbnRleHQvdXRpbGl0eS9jb21wb25lbnRMaWJyYXJ5JztcclxuaW1wb3J0IHsgU21hcnRDb21wb25lbnQgfSBmcm9tICcuLi8uLi9zbWFydC1jbGllbnQvc21hcnQuY29tcG9uZW50JztcclxuaW1wb3J0IHsgRXhwcmVzc2lvbkVkaXRvckRpYWxvZ1NlcnZpY2UgfSBmcm9tICcuL2NvbXBvbmVudHMvYWR2YW5jZWQvZXhwcmVzc2lvbi1lZGl0b3ItZGlhbG9nL2V4cHJlc3Npb24tZWRpdG9yLWRpYWxvZy5zZXJ2aWNlJztcclxuaW1wb3J0IHsgVVNFX0FEVkFOQ0VEX0ZJTFRFUiB9IGZyb20gJy4uL2ZpbHRlci11dGlscyc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ3NtYXJ0LWZpbHRlci1leHByZXNzaW9uLWVkaXRvcicsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3NtYXJ0LWZpbHRlci1lZGl0b3ItY29udGVudC5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vc21hcnQtZmlsdGVyLWVkaXRvci1jb250ZW50LmNvbXBvbmVudC5jc3MnXSxcclxufSlcclxuZXhwb3J0IGNsYXNzIFNtYXJ0RmlsdGVyRWRpdG9yQ29udGVudENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgQWZ0ZXJWaWV3SW5pdCwgT25EZXN0cm95IHtcclxuICBwcml2YXRlIF9kZXN0cm95JDogU3ViamVjdDx2b2lkPiA9IG5ldyBTdWJqZWN0KCk7XHJcbiAgQElucHV0KCkgc2VydmljZSE6IElTbWFydEZpbHRlckVkaXRvclNlcnZpY2U7XHJcblxyXG4gIHVpQWN0aW9uTW9kZWxzOiBVaUFjdGlvbk1vZGVsW10gPSBbXTtcclxuICBleHByZXNzaW9uVWlBY3Rpb25Nb2RlbHM6IFVpQWN0aW9uTW9kZWxbXSA9IFtdO1xyXG5cclxuICBAVmlld0NoaWxkKCdmb3JtJywgeyByZWFkOiBWaWV3Q29udGFpbmVyUmVmIH0pIHZjUmVmPzogVmlld0NvbnRhaW5lclJlZjtcclxuICBmb3JtQ29tcFJlZj86IENvbXBvbmVudFJlZjxTbWFydGZvcm1Db21wb25lbnQ+O1xyXG4gIHNtYXJ0Rm9ybT86IFNtYXJ0Rm9ybTtcclxuXHJcbiAgQFZpZXdDaGlsZCgnc2ltcGxlRmlsdGVyRnJvbUNoaWxkJywgeyByZWFkOiBWaWV3Q29udGFpbmVyUmVmIH0pXHJcbiAgc2ltcGxlRmlsdGVyVmNSZWY/OiBWaWV3Q29udGFpbmVyUmVmO1xyXG4gIHNpbXBsZUZpbHRlclJlZj86IENvbXBvbmVudFJlZjxTbWFydGZvcm1Db21wb25lbnQ+O1xyXG5cclxuICB0eXBlID0gRmlsdGVyRXhwcmVzc2lvbkJ1aWxkZXJVaU1vZGVsVHlwZUVudW07XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBsYXlvdXRTZXJ2aWNlOiBTbWFydGZvcm1MYXlvdXREZWZpbml0aW9uU2VydmljZSxcclxuICAgIHByaXZhdGUgY2ZTZXJ2aWNlOiBDb21wb25lbnRGYWN0b3J5U2VydmljZSxcclxuICAgIHByaXZhdGUgZXhwcmVzc2lvbkVkaXRvckRpYWxvZ1NlcnZpY2U6IEV4cHJlc3Npb25FZGl0b3JEaWFsb2dTZXJ2aWNlLFxyXG4gICAgQEluamVjdChVU0VfQURWQU5DRURfRklMVEVSKSBAT3B0aW9uYWwoKSByZWFkb25seSB1c2VBZHZhbmNlZEZpbHRlcj86IGJvb2xlYW4sXHJcbiAgICBASW5qZWN0KENPTVBPTkVOVF9MSUJSQVJZKSBAT3B0aW9uYWwoKSBwdWJsaWMgY29tcExpYj86IENvbXBvbmVudExpYnJhcnlcclxuICApIHt9XHJcblxyXG4gIHByaXZhdGUgc3Vic3JjaWJlU2ltcGxlRm9ybUNoaWxkcmVuRXZlbnRzKCk6IHZvaWQge1xyXG4gICAgdGhpcy5zaW1wbGVGaWx0ZXJSZWYhLmluc3RhbmNlLm9uQmx1clN1YmplY3QhLnBpcGUodGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3kkKSkuc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgdGhpcy5zYXZlRmlsdGVyKCk7XHJcbiAgICB9KTtcclxuICAgIHRoaXMuc2ltcGxlRmlsdGVyUmVmIS5pbnN0YW5jZS5zb3BoaXN0aWNhdGVkVmFsdWVDaGFuZ2U/LnBpcGUoXHJcbiAgICAgIHRha2VVbnRpbCh0aGlzLl9kZXN0cm95JClcclxuICAgICkuc3Vic2NyaWJlKChjaGFuZ2UpID0+IHtcclxuICAgICAgaWYgKHRoaXMuY29tcExpYiA9PT0gQ29tcG9uZW50TGlicmFyeS5QUklNRU5HKSB7XHJcbiAgICAgICAgaWYgKGNoYW5nZS5raW5kID09PSAnc2VsZWN0aW9uJykge1xyXG4gICAgICAgICAgdGhpcy5zYXZlRmlsdGVyKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIGlmIChjaGFuZ2Uua2luZCA9PT0gJ3NlbGVjdGlvbicgJiYgIWNoYW5nZS5rZXkuaW5jbHVkZXMoJ3NlbGVjdGVkVmFsdWVzJykpIHtcclxuICAgICAgICAgIHRoaXMuc2F2ZUZpbHRlcigpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHN1YnNjcmliZUVkaXRvckZvcm1DaGlsZHJlbkV2ZW50cygpOiB2b2lkIHtcclxuICAgIHRoaXMuZm9ybUNvbXBSZWY/Lmluc3RhbmNlIS5vbkJsdXJTdWJqZWN0IS5waXBlKHRha2VVbnRpbCh0aGlzLl9kZXN0cm95JCkpLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgIHRoaXMuc2F2ZSgpO1xyXG4gICAgfSk7XHJcblxyXG4gICAgdGhpcy5mb3JtQ29tcFJlZiEuaW5zdGFuY2UhLnNvcGhpc3RpY2F0ZWRWYWx1ZUNoYW5nZT8ucGlwZSh0YWtlVW50aWwodGhpcy5fZGVzdHJveSQpKS5zdWJzY3JpYmUoXHJcbiAgICAgIChjaGFuZ2U6IFNvcGhpc3RpY2F0ZWRWYWx1ZUNoYW5nZSkgPT4ge1xyXG4gICAgICAgIGlmIChcclxuICAgICAgICAgIGNoYW5nZS5rZXkgPT09ICdleHByZXNzaW9uRGF0YS5jdXJyZW50T3BlcmF0aW9uJyB8fFxyXG4gICAgICAgICAgY2hhbmdlLmtleSA9PT0gJ2V4cHJlc3Npb25EYXRhLm9wZXJhbmQyLnNlbGVjdGVkT2JqZWN0cydcclxuICAgICAgICApIHtcclxuICAgICAgICAgIHRoaXMuc2F2ZSgpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIG5nT25Jbml0KCk6IHZvaWQge31cclxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLnNlcnZpY2UubW9kZWxDaGFuZ2VkLnBpcGUodGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3kkKSkuc3Vic2NyaWJlKCgpID0+IHRoaXMuc2V0VXAoKSk7XHJcbiAgICB0aGlzLnNlcnZpY2UubG9hZCgpO1xyXG4gICAgaWYgKHRoaXMudXNlQWR2YW5jZWRGaWx0ZXIpIHtcclxuICAgICAgdGhpcy5zZXJ2aWNlLml0ZW1TZWxlY3RlZC5waXBlKHRha2VVbnRpbCh0aGlzLl9kZXN0cm95JCkpLnN1YnNjcmliZSgoaXRlbSkgPT4ge1xyXG4gICAgICAgIGlmIChpdGVtLmV4cHJlc3Npb25EYXRhPy5jdXJyZW50T3BlcmF0aW9uICE9PSAnRVhQUkVTU0lPTicpIHtcclxuICAgICAgICAgIHRoaXMuZXhwcmVzc2lvbkVkaXRvckRpYWxvZ1NlcnZpY2Uuc2V0RGF0YUFuZE9wZW5EaWFsb2codGhpcy5jcmVhdGVGaWx0ZXJFZGl0b3JGb3JtKCkpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICAgIHRoaXMuZXhwcmVzc2lvbkVkaXRvckRpYWxvZ1NlcnZpY2Uuc2F2ZUV2ZW50XHJcbiAgICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3kkKSlcclxuICAgICAgICAuc3Vic2NyaWJlKChkYXRhKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLnNlcnZpY2UubW9kZWwhLnNlbGVjdGVkRmllbGQgPSBkYXRhO1xyXG4gICAgICAgICAgdGhpcy51cGRhdGVGaWx0ZXJFeHByZXNzaW9uKCk7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgdGhpcy5fZGVzdHJveSQubmV4dCgpO1xyXG4gICAgdGhpcy5fZGVzdHJveSQuY29tcGxldGUoKTtcclxuICB9XHJcblxyXG4gIHNldHVwU2ltcGxlRmlsdGVyKCk6IHZvaWQge1xyXG4gICAgaWYgKCF0aGlzLnNpbXBsZUZpbHRlclZjUmVmKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICBsZXQgd2lkZ2V0czogU21hcnRGb3JtV2lkZ2V0PGFueT5bXSA9IFtdO1xyXG5cclxuICAgIGxldCBrZXk6IHN0cmluZyB8IHVuZGVmaW5lZDtcclxuXHJcbiAgICBsZXQgbW9kZWw6IHsgW2tleTogc3RyaW5nXTogYW55IH0gPSB7fTtcclxuXHJcbiAgICB0aGlzLnNlcnZpY2UubW9kZWw/Lm1vZGVsPy53b3JrcGxhY2VMaXN0Py5maWx0ZXJzLmZvckVhY2goXHJcbiAgICAgIChmaWx0ZXJFeHByZXNzaW9uRmllbGQ6IEZpbHRlckV4cHJlc3Npb25GaWVsZCwgaW5kZXg6IG51bWJlcikgPT4ge1xyXG4gICAgICAgIG1vZGVsW2luZGV4XSA9IGZpbHRlckV4cHJlc3Npb25GaWVsZDtcclxuXHJcbiAgICAgICAgaWYgKFxyXG4gICAgICAgICAgZmlsdGVyRXhwcmVzc2lvbkZpZWxkLndpZGdldFR5cGUgPT09IEZpbHRlckV4cHJlc3Npb25GaWVsZFdpZGdldFR5cGUuVEVYVF9GSUVMRF9MT09LVVBcclxuICAgICAgICApIHtcclxuICAgICAgICAgIGtleSA9IGluZGV4ICsgJy5leHByZXNzaW9uRGF0YS5vcGVyYW5kMi5zZWxlY3RlZE9iamVjdHMnO1xyXG4gICAgICAgICAgd2lkZ2V0cy5wdXNoKFxyXG4gICAgICAgICAgICB0aGlzLmNvbnN0cnVjdEZvcm1XaWRnZXQoXHJcbiAgICAgICAgICAgICAga2V5LFxyXG4gICAgICAgICAgICAgIGZpbHRlckV4cHJlc3Npb25GaWVsZC5sYWJlbDIhLFxyXG4gICAgICAgICAgICAgIEZpbHRlckV4cHJlc3Npb25GaWVsZFdpZGdldFR5cGUuVEVYVF9GSUVMRF9MT09LVVAsXHJcbiAgICAgICAgICAgICAgW10sXHJcbiAgICAgICAgICAgICAgZmlsdGVyRXhwcmVzc2lvbkZpZWxkLmV4cHJlc3Npb25EYXRhPy5vcGVyYW5kMj8uc2VsZWN0ZWRPYmplY3RzID8/IFtdLFxyXG4gICAgICAgICAgICAgIGZpbHRlckV4cHJlc3Npb25GaWVsZC50b29sYmFySWRcclxuICAgICAgICAgICAgKVxyXG4gICAgICAgICAgKTtcclxuICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmIChmaWx0ZXJFeHByZXNzaW9uRmllbGQud2lkZ2V0VHlwZSA9PT0gJ1NFTEVDVF9NVUxUSVBMRScpIHtcclxuICAgICAgICAgIGtleSA9IGluZGV4ICsgJy5leHByZXNzaW9uRGF0YS5vcGVyYW5kMi5zZWxlY3RlZFZhbHVlcyc7XHJcbiAgICAgICAgICB3aWRnZXRzLnB1c2goXHJcbiAgICAgICAgICAgIHRoaXMuY29uc3RydWN0Rm9ybVdpZGdldChcclxuICAgICAgICAgICAgICBrZXksXHJcbiAgICAgICAgICAgICAgZmlsdGVyRXhwcmVzc2lvbkZpZWxkLmxhYmVsMiEsXHJcbiAgICAgICAgICAgICAgZmlsdGVyRXhwcmVzc2lvbkZpZWxkLndpZGdldFR5cGUgPz8gRmlsdGVyRXhwcmVzc2lvbkZpZWxkV2lkZ2V0VHlwZS5URVhUX0ZJRUxELFxyXG4gICAgICAgICAgICAgIGZpbHRlckV4cHJlc3Npb25GaWVsZC5wb3NzaWJsZVZhbHVlcyBhcyBWYWx1ZVtdLFxyXG4gICAgICAgICAgICAgIGZpbHRlckV4cHJlc3Npb25GaWVsZC5leHByZXNzaW9uRGF0YT8ub3BlcmFuZDI/LnNlbGVjdGVkVmFsdWVzID8/IFtdLFxyXG4gICAgICAgICAgICAgIGZpbHRlckV4cHJlc3Npb25GaWVsZC50b29sYmFySWRcclxuICAgICAgICAgICAgKVxyXG4gICAgICAgICAgKTtcclxuICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmIChmaWx0ZXJFeHByZXNzaW9uRmllbGQuZXhwcmVzc2lvbkRhdGE/LmN1cnJlbnRPcGVyYXRpb24gPT09ICdCRVRXRUVOJykge1xyXG4gICAgICAgICAga2V5ID0gaW5kZXggKyAnLmV4cHJlc3Npb25EYXRhLm9wZXJhbmQyLnZhbHVlQXNTdHJpbmcnO1xyXG4gICAgICAgICAgd2lkZ2V0cy5wdXNoKFxyXG4gICAgICAgICAgICB0aGlzLmNvbnN0cnVjdEZvcm1XaWRnZXQoXHJcbiAgICAgICAgICAgICAga2V5LFxyXG4gICAgICAgICAgICAgIGZpbHRlckV4cHJlc3Npb25GaWVsZC5sYWJlbDIhLFxyXG4gICAgICAgICAgICAgIGZpbHRlckV4cHJlc3Npb25GaWVsZC53aWRnZXRUeXBlID8/IEZpbHRlckV4cHJlc3Npb25GaWVsZFdpZGdldFR5cGUuVEVYVF9GSUVMRCxcclxuICAgICAgICAgICAgICBmaWx0ZXJFeHByZXNzaW9uRmllbGQucG9zc2libGVWYWx1ZXMgYXMgVmFsdWVbXSxcclxuICAgICAgICAgICAgICBmaWx0ZXJFeHByZXNzaW9uRmllbGQuZXhwcmVzc2lvbkRhdGE/Lm9wZXJhbmQyPy52YWx1ZUFzU3RyaW5nID8/ICcnLFxyXG4gICAgICAgICAgICAgIGZpbHRlckV4cHJlc3Npb25GaWVsZC50b29sYmFySWRcclxuICAgICAgICAgICAgKVxyXG4gICAgICAgICAgKTtcclxuXHJcbiAgICAgICAgICBrZXkgPSBpbmRleCArICcuZXhwcmVzc2lvbkRhdGEub3BlcmFuZDMudmFsdWVBc1N0cmluZyc7XHJcbiAgICAgICAgICB3aWRnZXRzLnB1c2goXHJcbiAgICAgICAgICAgIHRoaXMuY29uc3RydWN0Rm9ybVdpZGdldChcclxuICAgICAgICAgICAgICBrZXksXHJcbiAgICAgICAgICAgICAgZmlsdGVyRXhwcmVzc2lvbkZpZWxkLmxhYmVsMyEsXHJcbiAgICAgICAgICAgICAgZmlsdGVyRXhwcmVzc2lvbkZpZWxkLndpZGdldFR5cGUgPz8gRmlsdGVyRXhwcmVzc2lvbkZpZWxkV2lkZ2V0VHlwZS5URVhUX0ZJRUxELFxyXG4gICAgICAgICAgICAgIGZpbHRlckV4cHJlc3Npb25GaWVsZC5wb3NzaWJsZVZhbHVlcyBhcyBWYWx1ZVtdLFxyXG4gICAgICAgICAgICAgIGZpbHRlckV4cHJlc3Npb25GaWVsZC5leHByZXNzaW9uRGF0YT8ub3BlcmFuZDM/LnZhbHVlQXNTdHJpbmcgPz8gJycsXHJcbiAgICAgICAgICAgICAgZmlsdGVyRXhwcmVzc2lvbkZpZWxkLnRvb2xiYXJJZFxyXG4gICAgICAgICAgICApXHJcbiAgICAgICAgICApO1xyXG4gICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKGZpbHRlckV4cHJlc3Npb25GaWVsZC5leHByZXNzaW9uRGF0YT8ub3BlcmFuZDIpIHtcclxuICAgICAgICAgIGtleSA9IGluZGV4ICsgJy5leHByZXNzaW9uRGF0YS5vcGVyYW5kMi52YWx1ZUFzU3RyaW5nJztcclxuXHJcbiAgICAgICAgICB3aWRnZXRzLnB1c2goXHJcbiAgICAgICAgICAgIHRoaXMuY29uc3RydWN0Rm9ybVdpZGdldChcclxuICAgICAgICAgICAgICBrZXksXHJcbiAgICAgICAgICAgICAgZmlsdGVyRXhwcmVzc2lvbkZpZWxkLmxhYmVsMiEsXHJcbiAgICAgICAgICAgICAgZmlsdGVyRXhwcmVzc2lvbkZpZWxkLndpZGdldFR5cGUgPz8gRmlsdGVyRXhwcmVzc2lvbkZpZWxkV2lkZ2V0VHlwZS5URVhUX0ZJRUxELFxyXG4gICAgICAgICAgICAgIGZpbHRlckV4cHJlc3Npb25GaWVsZC5wb3NzaWJsZVZhbHVlcyBhcyBWYWx1ZVtdLFxyXG4gICAgICAgICAgICAgIGZpbHRlckV4cHJlc3Npb25GaWVsZC5leHByZXNzaW9uRGF0YT8ub3BlcmFuZDI/LnZhbHVlQXNTdHJpbmcgPz8gJycsXHJcbiAgICAgICAgICAgICAgZmlsdGVyRXhwcmVzc2lvbkZpZWxkLnRvb2xiYXJJZFxyXG4gICAgICAgICAgICApXHJcbiAgICAgICAgICApO1xyXG4gICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoZmlsdGVyRXhwcmVzc2lvbkZpZWxkPy5leHByZXNzaW9uRGF0YT8ub3BlcmFuZDMpIHtcclxuICAgICAgICAgIGtleSA9IGluZGV4ICsgJy5leHByZXNzaW9uRGF0YS5vcGVyYW5kMy52YWx1ZUFzU3RyaW5nJztcclxuXHJcbiAgICAgICAgICB3aWRnZXRzLnB1c2goXHJcbiAgICAgICAgICAgIHRoaXMuY29uc3RydWN0Rm9ybVdpZGdldChcclxuICAgICAgICAgICAgICBrZXksXHJcbiAgICAgICAgICAgICAgZmlsdGVyRXhwcmVzc2lvbkZpZWxkLmxhYmVsMyEsXHJcbiAgICAgICAgICAgICAgZmlsdGVyRXhwcmVzc2lvbkZpZWxkLndpZGdldFR5cGUgPz8gRmlsdGVyRXhwcmVzc2lvbkZpZWxkV2lkZ2V0VHlwZS5URVhUX0ZJRUxELFxyXG5cclxuICAgICAgICAgICAgICBmaWx0ZXJFeHByZXNzaW9uRmllbGQucG9zc2libGVWYWx1ZXMgYXMgVmFsdWVbXSxcclxuICAgICAgICAgICAgICBmaWx0ZXJFeHByZXNzaW9uRmllbGQuZXhwcmVzc2lvbkRhdGE/Lm9wZXJhbmQzPy52YWx1ZUFzU3RyaW5nID8/ICcnLFxyXG4gICAgICAgICAgICAgIGZpbHRlckV4cHJlc3Npb25GaWVsZC50b29sYmFySWRcclxuICAgICAgICAgICAgKVxyXG4gICAgICAgICAgKTtcclxuICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICk7XHJcblxyXG4gICAgbGV0IHNtYXJ0Rm9ybSA9IHtcclxuICAgICAgZGlyZWN0aW9uOiBTbWFydEZvcm1XaWRnZXREaXJlY3Rpb24uUk9XLFxyXG4gICAgICBjb21wb25lbnRNb2RlbDogeyBkYXRhOiBtb2RlbCB9LFxyXG4gICAgICB1c2VPblZhbHVlQ2hhbmdlRXZlbnQ6ICF0aGlzLnVzZUFkdmFuY2VkRmlsdGVyLFxyXG4gICAgICB1c2VPbkJsdXJFdmVudDogIXRoaXMudXNlQWR2YW5jZWRGaWx0ZXIsXHJcbiAgICAgIHdpZGdldHMsXHJcbiAgICB9O1xyXG5cclxuICAgIGlmICh0aGlzLnNpbXBsZUZpbHRlclJlZj8uaW5zdGFuY2UpIHtcclxuICAgICAgLy8gd2UgYWxyZWFkeSBoYXZlIGEgU21hcnRGb3JtQ29tcG9uZW50LCB1c2UgdGhhdFxyXG4gICAgICBsZXQgY29tcCA9IHRoaXMuc2ltcGxlRmlsdGVyUmVmPy5pbnN0YW5jZTtcclxuXHJcbiAgICAgIGlmIChjb21wLnNtYXJ0Rm9ybSAmJiB0aGlzLmNvbXBhcmVXaWRnZXRzKGNvbXAuc21hcnRGb3JtLndpZGdldHMsIHNtYXJ0Rm9ybS53aWRnZXRzKSkge1xyXG4gICAgICAgIC8vIHRoZXJlJ3Mgbm8gc3RydWN0dXJhbCBjaGFuZ2UsIGRvbid0IHJlY3JlYXRlIFNtYXJ0Rm9ybUNvbXBvbmVudFxyXG4gICAgICAgIGNvbXAuc21hcnRGb3JtLmNvbXBvbmVudE1vZGVsID0gc21hcnRGb3JtLmNvbXBvbmVudE1vZGVsO1xyXG4gICAgICAgIGNvbXAuY29uc3RydWN0Rm9ybSgpO1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuc2ltcGxlRmlsdGVyVmNSZWY/LmNsZWFyKCk7XHJcbiAgICB0aGlzLnNpbXBsZUZpbHRlclJlZj8uZGVzdHJveSgpO1xyXG5cclxuICAgIHRoaXMuc2ltcGxlRmlsdGVyUmVmID0gdGhpcy5jZlNlcnZpY2UuY3JlYXRlQ29tcG9uZW50KFxyXG4gICAgICB0aGlzLnNpbXBsZUZpbHRlclZjUmVmISxcclxuICAgICAgU21hcnRmb3JtQ29tcG9uZW50LFxyXG4gICAgICBuZXcgTWFwPHN0cmluZywgYW55PihbWydzbWFydEZvcm0nLCBzbWFydEZvcm1dXSlcclxuICAgICk7XHJcblxyXG4gICAgdGhpcy5zdWJzcmNpYmVTaW1wbGVGb3JtQ2hpbGRyZW5FdmVudHMoKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgY29tcGFyZVdpZGdldHMod3MxOiBTbWFydEZvcm1XaWRnZXQ8YW55PltdLCB3czI6IFNtYXJ0Rm9ybVdpZGdldDxhbnk+W10pOiBib29sZWFuIHtcclxuICAgIGlmICh3czEubGVuZ3RoICE9PSB3czIubGVuZ3RoKSB7XHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgd3MxLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgIGlmICghdGhpcy5jb21wYXJlV2lkZ2V0KHdzMVtpXSwgd3MyW2ldKSkge1xyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIHRydWU7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGNvbXBhcmVXaWRnZXQodzE6IFNtYXJ0Rm9ybVdpZGdldDxhbnk+LCB3MjogU21hcnRGb3JtV2lkZ2V0PGFueT4pOiBib29sZWFuIHtcclxuICAgIHJldHVybiBTbWFydE9iamVjdFV0aWxpdHkuY29tcGFyZUJ5UHJvcHModzEsIHcyLCBbXHJcbiAgICAgICdlcnJvcicsXHJcbiAgICAgICdrZXknLFxyXG4gICAgICAnbGFiZWwnLFxyXG4gICAgICAndHlwZScsXHJcbiAgICAgIC8vICd2YWx1ZScsIDwtIHZhbHVlIHdpbGwgYmUgc2V0IGJ5IGNvbXBvbmVudE1vZGVsLmRhdGEhXHJcbiAgICAgICdzaG93TGFiZWwnLFxyXG4gICAgICAndmFsdWVMaXN0JyxcclxuICAgICAgJ3Rvb2xiYXJJZCcsXHJcbiAgICBdKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZXh0cmFjdEZpbHRlckZpZWxkRnJvbUZvcm1Nb2RlbCgpOiB2b2lkIHtcclxuICAgIGxldCBzaW1wbGVGaWx0ZXIgPSB0aGlzLnNpbXBsZUZpbHRlclJlZj8uaW5zdGFuY2U/LnN1Ym1pdEZvcm0oZmFsc2UpLmNvbXBvbmVudE1vZGVsLmRhdGE7XHJcbiAgICBsZXQgcmVzdWx0OiBGaWx0ZXJFeHByZXNzaW9uRmllbGRbXSA9IFtdO1xyXG5cclxuICAgIE9iamVjdC5rZXlzKHNpbXBsZUZpbHRlcikuZm9yRWFjaCgoa2V5OiBzdHJpbmcpID0+IHtcclxuICAgICAgcmVzdWx0LnB1c2goc2ltcGxlRmlsdGVyW2tleV0pO1xyXG4gICAgfSk7XHJcbiAgICB0aGlzLnNlcnZpY2UubW9kZWwhLm1vZGVsIS53b3JrcGxhY2VMaXN0IS5maWx0ZXJzID0gcmVzdWx0O1xyXG4gIH1cclxuXHJcbiAgc2V0VXAoKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5zZXJ2aWNlLm1vZGVsPy50eXBlID09PSB0aGlzLnR5cGUuU0lNUExFKSB7XHJcbiAgICAgIHRoaXMuc2V0dXBTaW1wbGVGaWx0ZXIoKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuY29uc3RydWN0VWlBY3Rpb25Nb2RlbHMoKTtcclxuXHJcbiAgICAgIGlmICh0aGlzLnNlcnZpY2U/Lm1vZGVsPy5zZWxlY3RlZEZpZWxkRWRpdG9yKSB7XHJcbiAgICAgICAgdGhpcy5jb25zdHJ1Y3RGb3JtKCk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy52Y1JlZj8uY2xlYXIoKTtcclxuICAgICAgICB0aGlzLmZvcm1Db21wUmVmPy5kZXN0cm95KCk7XHJcbiAgICAgICAgdGhpcy5zbWFydEZvcm0gPSB1bmRlZmluZWQ7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIGNvbnN0cnVjdFVpQWN0aW9uTW9kZWxzKCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuc2VydmljZS5tb2RlbD8ucG9zc2libGVBY3Rpb25zKSB7XHJcbiAgICAgIHRoaXMudWlBY3Rpb25Nb2RlbHMgPSB0aGlzLnNlcnZpY2UubW9kZWwucG9zc2libGVBY3Rpb25zLm1hcCgoYWN0aW9uOiBVaUFjdGlvbikgPT4ge1xyXG4gICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICBzZXJ2aWNlVG9Vc2U6IHRoaXMuc2VydmljZSxcclxuICAgICAgICAgIHVpQWN0aW9uOiBhY3Rpb24sXHJcbiAgICAgICAgfTtcclxuICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRoaXMuc2VydmljZS5tb2RlbD8uc2VsZWN0ZWRGaWVsZEVkaXRvcj8ucG9zc2libGVBY3Rpb25zKSB7XHJcbiAgICAgIHRoaXMuZXhwcmVzc2lvblVpQWN0aW9uTW9kZWxzID0gdGhpcy5zZXJ2aWNlLm1vZGVsPy5zZWxlY3RlZEZpZWxkRWRpdG9yLnBvc3NpYmxlQWN0aW9ucy5tYXAoXHJcbiAgICAgICAgKHVpQWN0aW9uOiBVaUFjdGlvbikgPT4ge1xyXG4gICAgICAgICAgbGV0IGNvcGllZFVpQWN0aW9uOiBVaUFjdGlvbiA9IHt9O1xyXG4gICAgICAgICAgT2JqZWN0LmtleXModWlBY3Rpb24pLm1hcCgoa2V5OiBzdHJpbmcpID0+IHtcclxuICAgICAgICAgICAgKGNvcGllZFVpQWN0aW9uIGFzIGFueSlba2V5XSA9ICh1aUFjdGlvbiBhcyBhbnkpW2tleV07XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICAgIGNvcGllZFVpQWN0aW9uLnBhcmFtcyA9IHtcclxuICAgICAgICAgICAgZmllbGQ6IHRoaXMuc2VydmljZS5tb2RlbD8uc2VsZWN0ZWRGaWVsZCxcclxuICAgICAgICAgIH07XHJcbiAgICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICBzZXJ2aWNlVG9Vc2U6IHRoaXMuc2VydmljZSxcclxuICAgICAgICAgICAgdWlBY3Rpb246IGNvcGllZFVpQWN0aW9uLFxyXG4gICAgICAgICAgfTtcclxuICAgICAgICB9XHJcbiAgICAgICk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBjb25zdHJ1Y3RGb3JtKCk6IHZvaWQge1xyXG4gICAgdGhpcy5zbWFydEZvcm0gPSB0aGlzLmNyZWF0ZUZpbHRlckVkaXRvckZvcm0oKTtcclxuXHJcbiAgICB0aGlzLnZjUmVmPy5jbGVhcigpO1xyXG4gICAgdGhpcy5mb3JtQ29tcFJlZj8uZGVzdHJveSgpO1xyXG5cclxuICAgIGlmICghdGhpcy52Y1JlZikge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5mb3JtQ29tcFJlZiA9IHRoaXMuY2ZTZXJ2aWNlLmNyZWF0ZUNvbXBvbmVudChcclxuICAgICAgdGhpcy52Y1JlZiEsXHJcbiAgICAgIFNtYXJ0Zm9ybUNvbXBvbmVudCxcclxuICAgICAgbmV3IE1hcDxzdHJpbmcsIGFueT4oW1snc21hcnRGb3JtJywgdGhpcy5zbWFydEZvcm1dXSlcclxuICAgICk7XHJcbiAgICB0aGlzLnNlcnZpY2Uuc2V0Q29tcGxleFRvb2xiYXJzKHRoaXMuZm9ybUNvbXBSZWYuaW5zdGFuY2UuZ2V0VG9vbGJhcnMoKSk7XHJcblxyXG4gICAgdGhpcy5zdWJzY3JpYmVFZGl0b3JGb3JtQ2hpbGRyZW5FdmVudHMoKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgY3JlYXRlRmlsdGVyRWRpdG9yRm9ybSgpOiBTbWFydEZvcm0ge1xyXG4gICAgbGV0IGdlbmVyYXRlZFdpZGdldHM6IFNtYXJ0Rm9ybVdpZGdldDxhbnk+W10gPSB0aGlzLmxheW91dFNlcnZpY2UucmVuZGVyKHtcclxuICAgICAgbGF5b3V0RGVmaW5pdGlvbnM6IHRoaXMuc2VydmljZS5tb2RlbD8uc2VsZWN0ZWRGaWVsZEVkaXRvcj8ubGF5b3V0RGVmPy53aWRnZXRzLFxyXG4gICAgfSk7XHJcblxyXG4gICAgcmV0dXJuIHtcclxuICAgICAgZGlyZWN0aW9uOiBTbWFydEZvcm1XaWRnZXREaXJlY3Rpb24uUk9XLFxyXG4gICAgICB1c2VPbkJsdXJFdmVudDogdHJ1ZSxcclxuICAgICAgdXNlT25WYWx1ZUNoYW5nZUV2ZW50OiB0cnVlLFxyXG4gICAgICBjb21wb25lbnRNb2RlbDogeyBkYXRhOiB0aGlzLnNlcnZpY2UubW9kZWw/LnNlbGVjdGVkRmllbGQgfSxcclxuICAgICAgd2lkZ2V0czogZ2VuZXJhdGVkV2lkZ2V0cyxcclxuICAgIH07XHJcbiAgfVxyXG5cclxuICBzYXZlKCk6IHZvaWQge1xyXG4gICAgdGhpcy5mb3JtQ29tcFJlZj8uaW5zdGFuY2U/LnN1Ym1pdEZvcm0oZmFsc2UpO1xyXG4gICAgdGhpcy51cGRhdGVGaWx0ZXJFeHByZXNzaW9uKCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHVwZGF0ZUZpbHRlckV4cHJlc3Npb24oKSB7XHJcbiAgICB0aGlzLnNlcnZpY2UucGVmb3JtV2lkZ2V0QWN0aW9uKHtcclxuICAgICAgY29kZTogJ1VQREFURV9GSUxURVJfRVhQUkVTU0lPTicsXHJcbiAgICAgIHBhcmFtczoge1xyXG4gICAgICAgIG1vZGVsOiB0aGlzLnNlcnZpY2UubW9kZWw/LnNlbGVjdGVkRmllbGQsXHJcbiAgICAgIH0sXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHJlbW92ZSgpOiB2b2lkIHtcclxuICAgIHRoaXMuc2VydmljZS5wZWZvcm1XaWRnZXRBY3Rpb24oe1xyXG4gICAgICBjb2RlOiAnUkVNT1ZFX0ZJTFRFUl9FWFBSRVNTSU9OJyxcclxuICAgICAgcGFyYW1zOiB7XHJcbiAgICAgICAgbW9kZWw6IHRoaXMuc2VydmljZS5tb2RlbD8uc2VsZWN0ZWRGaWVsZCxcclxuICAgICAgfSxcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgYXN5bmMgc2F2ZUZpbHRlcigpOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgIHRoaXMuZXh0cmFjdEZpbHRlckZpZWxkRnJvbUZvcm1Nb2RlbCgpO1xyXG4gICAgYXdhaXQgdGhpcy5zZXJ2aWNlLnBlcmZvcm1VaUFjdGlvblJlcXVlc3Qoe1xyXG4gICAgICBjb2RlOiBGaWx0ZXJFeHByZXNzaW9uQnVpbGRlckFwaUFjdGlvbnMuU0FWRV9FWFBSRVNTSU9OX0ZJRUxEX0xJU1QsXHJcbiAgICAgIHBhcmFtczoge1xyXG4gICAgICAgIG1vZGVsOiB0aGlzLnNlcnZpY2UubW9kZWwhLFxyXG4gICAgICB9LFxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGNvbnN0cnVjdEZvcm1XaWRnZXQoXHJcbiAgICBrZXk6IHN0cmluZyxcclxuICAgIGxhYmVsOiBzdHJpbmcsXHJcbiAgICB3aWRnZXRUeXBlOiBGaWx0ZXJFeHByZXNzaW9uRmllbGRXaWRnZXRUeXBlLFxyXG4gICAgcG9zc2libGVWYWx1ZXM6IFZhbHVlW10sXHJcbiAgICB2YWx1ZTogYW55LFxyXG4gICAgdG9vbGJhcklkPzogc3RyaW5nXHJcbiAgKTogU21hcnRGb3JtV2lkZ2V0PGFueT4ge1xyXG4gICAgbGV0IHR5cGU6IGFueSA9IHdpZGdldFR5cGU7XHJcblxyXG4gICAgaWYgKHR5cGUgPT09IEZpbHRlckV4cHJlc3Npb25GaWVsZFdpZGdldFR5cGUuREFURSkge1xyXG4gICAgICB0eXBlID0gU21hcnRGb3JtV2lkZ2V0VHlwZS5EQVRFX1BJQ0tFUjtcclxuICAgIH0gZWxzZSBpZiAodHlwZSA9PT0gRmlsdGVyRXhwcmVzc2lvbkZpZWxkV2lkZ2V0VHlwZS5EQVRFX1RJTUUpIHtcclxuICAgICAgdHlwZSA9IFNtYXJ0Rm9ybVdpZGdldFR5cGUuREFURV9USU1FX1BJQ0tFUjtcclxuICAgIH1cclxuXHJcbiAgICBsZXQgd2lkZ2V0OiBTbWFydEZvcm1XaWRnZXQ8YW55PiA9IHtcclxuICAgICAgZXJyb3I6IHVuZGVmaW5lZCxcclxuICAgICAga2V5LFxyXG4gICAgICBsYWJlbCxcclxuICAgICAgdHlwZSxcclxuICAgICAgdmFsdWUsXHJcbiAgICAgIHNob3dMYWJlbDogdHJ1ZSxcclxuICAgICAgaXNGbG9hdExhYmVsOiB0cnVlLFxyXG4gICAgICB2YWx1ZUxpc3Q6IHBvc3NpYmxlVmFsdWVzLm1hcCgodmFsdWU6IFZhbHVlKSA9PiB7XHJcbiAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgIGtleTogdmFsdWUub2JqZWN0VXJpID8gdmFsdWUub2JqZWN0VXJpIDogdmFsdWUuY29kZSEsXHJcbiAgICAgICAgICBsYWJlbDogdmFsdWUuZGlzcGxheVZhbHVlLFxyXG4gICAgICAgICAgdHlwZTogU21hcnRGb3JtV2lkZ2V0VHlwZS5JVEVNLFxyXG4gICAgICAgICAgdmFsdWU6IHZhbHVlLm9iamVjdFVyaSA/IHZhbHVlLm9iamVjdFVyaSA6IHZhbHVlLmNvZGUsXHJcbiAgICAgICAgfTtcclxuICAgICAgfSksXHJcbiAgICAgIHRvb2xiYXJJZCxcclxuICAgICAgdGV4dEZpZWxkUHJvcGVydGllczoge1xyXG4gICAgICAgIGNsZWFyYWJsZTogdHJ1ZSxcclxuICAgICAgfSxcclxuICAgIH07XHJcblxyXG4gICAgcmV0dXJuIHdpZGdldDtcclxuICB9XHJcblxyXG4gIGFzeW5jIHVuU2VsZWN0SXRlbXMoZXZlbnQ6IE1vdXNlRXZlbnQpIHtcclxuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xyXG4gICAgYXdhaXQgdGhpcy5zZXJ2aWNlLnBlZm9ybVdpZGdldEFjdGlvbih7XHJcbiAgICAgIGNvZGU6ICdTRUxFQ1RfRklFTEQnLFxyXG4gICAgICBwYXJhbXM6IHt9LFxyXG4gICAgfSk7XHJcbiAgfVxyXG59XHJcbiIsIjxkaXYgY2xhc3M9XCJzbWFydC1maWx0ZXItZWRpdG9yLWNvbnRhaW5lclwiICpuZ0lmPVwic2VydmljZS5tb2RlbFwiPlxyXG4gIEBpZiAoc2VydmljZS5tb2RlbC5tb2RlbD8ubGFiZWwpIHtcclxuICAgIDxoMyBjbGFzcz1cInNtYXJ0LWZpbHRlci1lZGl0b3ItdGl0bGVcIj57eyBzZXJ2aWNlLm1vZGVsLm1vZGVsPy5sYWJlbCB9fTwvaDM+XHJcbiAgfVxyXG5cclxuICA8ZGl2ICpuZ0lmPVwic2VydmljZS5tb2RlbD8udHlwZSA9PT0gdHlwZS5TSU1QTEU7IHRoZW4gc2ltcGxlRmlsdGVyOyBlbHNlIGNvbXBsZXhGaWx0ZXJcIj48L2Rpdj5cclxuXHJcbiAgPG5nLXRlbXBsYXRlICNzaW1wbGVGaWx0ZXI+XHJcbiAgICA8ZGl2IGNsYXNzPVwic21hcnQtZmlsdGVyLWVkaXRvci1leHByZXNzaW9uc0NvbnRhaW5lclwiPlxyXG4gICAgICA8bmctdGVtcGxhdGUgI3NpbXBsZUZpbHRlckZyb21DaGlsZD48L25nLXRlbXBsYXRlPlxyXG4gICAgICA8IS0tICNzaW1wbGVGaWx0ZXJGcm9tQ2hpbGQgW3NtYXJ0Rm9ybV09XCJzaW1wbGVGaWx0ZXJGb3JtXCI+PC9zbWFydGZvcm0+IC0tPlxyXG4gICAgPC9kaXY+XHJcbiAgPC9uZy10ZW1wbGF0ZT5cclxuICA8bmctdGVtcGxhdGUgI2NvbXBsZXhGaWx0ZXI+XHJcbiAgICA8ZGl2IGNsYXNzPVwic21hcnQtZmlsdGVyLWVkaXRvci11aUFjdGlvbnNCYXJcIiAqbmdJZj1cIiFzZXJ2aWNlLm1vZGVsPy5yZWFkT25seVwiPlxyXG4gICAgICA8c21hcnQtdWktYWN0aW9uLXRvb2xiYXIgW3VpQWN0aW9uTW9kZWxzXT1cInVpQWN0aW9uTW9kZWxzXCI+PC9zbWFydC11aS1hY3Rpb24tdG9vbGJhcj5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdlxyXG4gICAgICAqbmdJZj1cIlxyXG4gICAgICAgIHNlcnZpY2U/Lm1vZGVsPy5tb2RlbD8ud29ya3BsYWNlTGlzdD8uZmlsdGVycz8ubGVuZ3RoO1xyXG4gICAgICAgIHRoZW4gd2l0aFBhcmFtZXRlcnM7XHJcbiAgICAgICAgZWxzZSB3aXRob3V0UGFyYW1ldGVyc1xyXG4gICAgICBcIlxyXG4gICAgPjwvZGl2PlxyXG4gICAgPG5nLXRlbXBsYXRlICN3aXRob3V0UGFyYW1ldGVycz5cclxuICAgICAgPGRpdiBjbGFzcz1cInNtYXJ0LWZpbHRlci1lZGl0b3Itd2l0aG91dFBhcmFtZXRlcnNDb250YWluZXJcIj5cclxuICAgICAgICA8c3BhbiBjbGFzcz1cIm1hdC1ib2R5XCI+IE3DqWcgbmluY3MgbWVnYWR2YSBwYXJhbcOpdGVyIDwvc3Bhbj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgPG5nLXRlbXBsYXRlICN3aXRoUGFyYW1ldGVycz5cclxuICAgICAgPGRpdiBjbGFzcz1cInNtYXJ0LWZpbHRlci1lZGl0b3Itd2l0aFBhcmFtZXRlcnNDb250YWluZXJcIj5cclxuICAgICAgICA8ZGl2XHJcbiAgICAgICAgICBjbGFzcz1cInNtYXJ0LWZpbHRlci1lZGl0b3ItZXhwcmVzc2lvbnNDb250YWluZXJcIlxyXG4gICAgICAgICAgKm5nSWY9XCJzZXJ2aWNlPy5tb2RlbD8ubW9kZWw/LndvcmtwbGFjZUxpc3Q/LmZpbHRlcnM/Lmxlbmd0aFwiXHJcbiAgICAgICAgICAoY2xpY2spPVwidW5TZWxlY3RJdGVtcygkZXZlbnQpXCJcclxuICAgICAgICA+XHJcbiAgICAgICAgICA8YXBwLWV4cHJlc3Npb24taXRlbXNcclxuICAgICAgICAgICAgW2l0ZW1zXT1cIihzZXJ2aWNlLm1vZGVsLm1vZGVsPy53b3JrcGxhY2VMaXN0KSEuZmlsdGVyc1wiXHJcbiAgICAgICAgICAgIFtzZXJ2aWNlXT1cInNlcnZpY2VcIlxyXG4gICAgICAgICAgPjwvYXBwLWV4cHJlc3Npb24taXRlbXM+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdlxyXG4gICAgICAgICAgKm5nSWY9XCJcclxuICAgICAgICAgICAgIXVzZUFkdmFuY2VkRmlsdGVyIHx8XHJcbiAgICAgICAgICAgIHNlcnZpY2UubW9kZWwuc2VsZWN0ZWRGaWVsZD8uZXhwcmVzc2lvbkRhdGE/LmN1cnJlbnRPcGVyYXRpb24gPT09ICdFWFBSRVNTSU9OJ1xyXG4gICAgICAgICAgXCJcclxuICAgICAgICAgIGNsYXNzPVwic21hcnQtZmlsdGVyLWVkaXRvci1leHByZXNzaW9uRWRpdG9yQ29udGFpbmVyXCJcclxuICAgICAgICA+XHJcbiAgICAgICAgICA8IS0tIDxzbWFydGZvcm0gI2Zvcm0gW3NtYXJ0Rm9ybV09XCJzbWFydEZvcm1cIj48L3NtYXJ0Zm9ybT4gLS0+XHJcbiAgICAgICAgICA8bmctdGVtcGxhdGUgI2Zvcm0+PC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgIDxkaXYgKm5nSWY9XCJzbWFydEZvcm1cIj5cclxuICAgICAgICAgICAgPGJ1dHRvbiAoY2xpY2spPVwicmVtb3ZlKClcIiBtYXQtcmFpc2VkLWJ1dHRvbiBjb2xvcj1cInByaW1hcnlcIj5Uw7ZybMOpczwvYnV0dG9uPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9uZy10ZW1wbGF0ZT5cclxuICA8L25nLXRlbXBsYXRlPlxyXG48L2Rpdj5cclxuIl19
329
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnQtZmlsdGVyLWVkaXRvci1jb250ZW50LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NtYXJ0LW5nLWNsaWVudC9zcmMvbGliL3NtYXJ0LWZpbHRlci1lZGl0b3Ivc21hcnQtZmlsdGVyLWVkaXRvci1jb250ZW50L3NtYXJ0LWZpbHRlci1lZGl0b3ItY29udGVudC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zbWFydC1uZy1jbGllbnQvc3JjL2xpYi9zbWFydC1maWx0ZXItZWRpdG9yL3NtYXJ0LWZpbHRlci1lZGl0b3ItY29udGVudC9zbWFydC1maWx0ZXItZWRpdG9yLWNvbnRlbnQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVMLFNBQVMsRUFHVCxNQUFNLEVBQ04sS0FBSyxFQUdMLFFBQVEsRUFDUixTQUFTLEVBRVQsZ0JBQWdCLEdBQ2pCLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFBRSxPQUFPLEVBQWdCLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUV4RCxPQUFPLEVBQUUsK0JBQStCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUM5RSxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxxREFBcUQsQ0FBQztBQUMvRixPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUVoRSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUsxRSxPQUFPLEVBQUUsc0NBQXNDLEVBQUUsTUFBTSw2Q0FBNkMsQ0FBQztBQUVyRyxPQUFPLEVBQUUsaUNBQWlDLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUV6RixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxpREFBaUQsQ0FBQztBQUNyRixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsZ0JBQWdCLEVBQUUs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ZW50IjpbImltcG9ydCB7XHJcbiAgQWZ0ZXJWaWV3SW5pdCxcclxuICBDb21wb25lbnQsXHJcbiAgQ29tcG9uZW50UmVmLFxyXG4gIEluamVjdG9yLFxyXG4gIEluamVjdCxcclxuICBJbnB1dCxcclxuICBPbkRlc3Ryb3ksXHJcbiAgT25Jbml0LFxyXG4gIE9wdGlvbmFsLFxyXG4gIFZpZXdDaGlsZCxcclxuICBWaWV3Q2hpbGRyZW4sXHJcbiAgVmlld0NvbnRhaW5lclJlZixcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuXHJcbmltcG9ydCB7IFN1YmplY3QsIFN1YnNjcmlwdGlvbiwgdGFrZVVudGlsIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IENvbXBvbmVudEZhY3RvcnlTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vY29tcG9uZW50LWZhY3Rvcnktc2VydmljZS9jb21wb25lbnQtZmFjdG9yeS1zZXJ2aWNlLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBGaWx0ZXJFeHByZXNzaW9uRmllbGRXaWRnZXRUeXBlIH0gZnJvbSAnLi4vLi4vc21hcnQtZmlsdGVyL3Byb2plY3RzJztcclxuaW1wb3J0IHsgU21hcnRGb3JtV2lkZ2V0RGlyZWN0aW9uIH0gZnJvbSAnLi4vLi4vc21hcnQtZm9ybS9hcGkvbW9kZWwvc21hcnRGb3JtV2lkZ2V0RGlyZWN0aW9uJztcclxuaW1wb3J0IHsgU21hcnRGb3JtV2lkZ2V0VHlwZSB9IGZyb20gJy4uLy4uL3NtYXJ0LWZvcm0vcHJvamVjdHMnO1xyXG5pbXBvcnQgeyBTbWFydGZvcm1MYXlvdXREZWZpbml0aW9uU2VydmljZSB9IGZyb20gJy4uLy4uL3NtYXJ0LWZvcm0vc2VydmljZXMvc21hcnRmb3JtLmxheW91dC1kZWZpbml0aW9uLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBTbWFydGZvcm1Db21wb25lbnQgfSBmcm9tICcuLi8uLi9zbWFydC1mb3JtL3NtYXJ0Zm9ybS5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBTbWFydEZvcm1XaWRnZXQgfSBmcm9tICcuLi8uLi9zbWFydC1mb3JtL3NtYXJ0Zm9ybS5mb3JtLW1vZGVsJztcclxuaW1wb3J0IHsgU21hcnRGb3JtLCBTb3BoaXN0aWNhdGVkVmFsdWVDaGFuZ2UsIFZhbHVlIH0gZnJvbSAnLi4vLi4vc21hcnQtZm9ybS9zbWFydGZvcm0ubW9kZWwnO1xyXG5pbXBvcnQgeyBVaUFjdGlvbiB9IGZyb20gJy4uLy4uL3ZpZXctY29udGV4dC9hcGkvbW9kZWwvdWlBY3Rpb24nO1xyXG5pbXBvcnQgeyBVaUFjdGlvbk1vZGVsIH0gZnJvbSAnLi4vLi4vdmlldy1jb250ZXh0L3NtYXJ0LXVpLWFjdGlvbi91aS1hY3Rpb24ubW9kZWwnO1xyXG5pbXBvcnQgeyBGaWx0ZXJFeHByZXNzaW9uQnVpbGRlclVpTW9kZWxUeXBlRW51bSB9IGZyb20gJy4uL2FwaS9tb2RlbC9maWx0ZXJFeHByZXNzaW9uQnVpbGRlclVpTW9kZWwnO1xyXG5pbXBvcnQgeyBGaWx0ZXJFeHByZXNzaW9uRmllbGQgfSBmcm9tICcuLi9hcGkvbW9kZWwvZmlsdGVyRXhwcmVzc2lvbkZpZWxkJztcclxuaW1wb3J0IHsgRmlsdGVyRXhwcmVzc2lvbkJ1aWxkZXJBcGlBY3Rpb25zIH0gZnJvbSAnLi4vZmlsdGVyRXhwcmVzc2lvbkJ1aWxkZXJBcGlBY3Rpb25zJztcclxuaW1wb3J0IHsgSVNtYXJ0RmlsdGVyRWRpdG9yU2VydmljZSB9IGZyb20gJy4uL3NtYXJ0LWZpbHRlci1lZGl0b3Iuc2VydmljZSc7XHJcbmltcG9ydCB7IFNtYXJ0T2JqZWN0VXRpbGl0eSB9IGZyb20gJy4uLy4uL3ZpZXctY29udGV4dC91dGlsaXR5L3NtYXJ0LW9iamVjdC11dGlsaXR5JztcclxuaW1wb3J0IHsgQ09NUE9ORU5UX0xJQlJBUlksIENvbXBvbmVudExpYnJhcnkgfSBmcm9tICcuLi8uLi92aWV3LWNvbnRleHQvdXRpbGl0eS9jb21wb25lbnRMaWJyYXJ5JztcclxuaW1wb3J0IHsgRXhwcmVzc2lvbkVkaXRvckRpYWxvZ1NlcnZpY2UgfSBmcm9tICcuL2NvbXBvbmVudHMvYWR2YW5jZWQvZXhwcmVzc2lvbi1lZGl0b3ItZGlhbG9nL2V4cHJlc3Npb24tZWRpdG9yLWRpYWxvZy5zZXJ2aWNlJztcclxuaW1wb3J0IHsgVVNFX0FEVkFOQ0VEX0ZJTFRFUiB9IGZyb20gJy4uL2ZpbHRlci11dGlscyc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ3NtYXJ0LWZpbHRlci1leHByZXNzaW9uLWVkaXRvcicsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3NtYXJ0LWZpbHRlci1lZGl0b3ItY29udGVudC5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vc21hcnQtZmlsdGVyLWVkaXRvci1jb250ZW50LmNvbXBvbmVudC5jc3MnXSxcclxufSlcclxuZXhwb3J0IGNsYXNzIFNtYXJ0RmlsdGVyRWRpdG9yQ29udGVudENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgQWZ0ZXJWaWV3SW5pdCwgT25EZXN0cm95IHtcclxuICBwcml2YXRlIF9kZXN0cm95JDogU3ViamVjdDx2b2lkPiA9IG5ldyBTdWJqZWN0KCk7XHJcbiAgQElucHV0KCkgc2VydmljZSE6IElTbWFydEZpbHRlckVkaXRvclNlcnZpY2U7XHJcblxyXG4gIHVpQWN0aW9uTW9kZWxzOiBVaUFjdGlvbk1vZGVsW10gPSBbXTtcclxuICBleHByZXNzaW9uVWlBY3Rpb25Nb2RlbHM6IFVpQWN0aW9uTW9kZWxbXSA9IFtdO1xyXG5cclxuICBAVmlld0NoaWxkKCdmb3JtJywgeyByZWFkOiBWaWV3Q29udGFpbmVyUmVmIH0pIHZjUmVmPzogVmlld0NvbnRhaW5lclJlZjtcclxuICBmb3JtQ29tcFJlZj86IENvbXBvbmVudFJlZjxTbWFydGZvcm1Db21wb25lbnQ+O1xyXG4gIHNtYXJ0Rm9ybT86IFNtYXJ0Rm9ybTtcclxuXHJcbiAgQFZpZXdDaGlsZCgnc2ltcGxlRmlsdGVyRnJvbUNoaWxkJywgeyByZWFkOiBWaWV3Q29udGFpbmVyUmVmIH0pXHJcbiAgc2ltcGxlRmlsdGVyVmNSZWY/OiBWaWV3Q29udGFpbmVyUmVmO1xyXG4gIHNpbXBsZUZpbHRlclJlZj86IENvbXBvbmVudFJlZjxTbWFydGZvcm1Db21wb25lbnQ+O1xyXG5cclxuICB0eXBlID0gRmlsdGVyRXhwcmVzc2lvbkJ1aWxkZXJVaU1vZGVsVHlwZUVudW07XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBsYXlvdXRTZXJ2aWNlOiBTbWFydGZvcm1MYXlvdXREZWZpbml0aW9uU2VydmljZSxcclxuICAgIHByaXZhdGUgY2ZTZXJ2aWNlOiBDb21wb25lbnRGYWN0b3J5U2VydmljZSxcclxuICAgIHByaXZhdGUgZXhwcmVzc2lvbkVkaXRvckRpYWxvZ1NlcnZpY2U6IEV4cHJlc3Npb25FZGl0b3JEaWFsb2dTZXJ2aWNlLFxyXG4gICAgQEluamVjdChVU0VfQURWQU5DRURfRklMVEVSKSBAT3B0aW9uYWwoKSByZWFkb25seSB1c2VBZHZhbmNlZEZpbHRlcj86IGJvb2xlYW4sXHJcbiAgICBASW5qZWN0KENPTVBPTkVOVF9MSUJSQVJZKSBAT3B0aW9uYWwoKSBwdWJsaWMgY29tcExpYj86IENvbXBvbmVudExpYnJhcnlcclxuICApIHt9XHJcblxyXG4gIHByaXZhdGUgc3Vic3JjaWJlU2ltcGxlRm9ybUNoaWxkcmVuRXZlbnRzKCk6IHZvaWQge1xyXG4gICAgdGhpcy5zaW1wbGVGaWx0ZXJSZWYhLmluc3RhbmNlLm9uQmx1clN1YmplY3QhLnBpcGUodGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3kkKSkuc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgdGhpcy5zYXZlRmlsdGVyKCk7XHJcbiAgICB9KTtcclxuICAgIHRoaXMuc2ltcGxlRmlsdGVyUmVmIS5pbnN0YW5jZS5zb3BoaXN0aWNhdGVkVmFsdWVDaGFuZ2U/LnBpcGUoXHJcbiAgICAgIHRha2VVbnRpbCh0aGlzLl9kZXN0cm95JClcclxuICAgICkuc3Vic2NyaWJlKChjaGFuZ2UpID0+IHtcclxuICAgICAgaWYgKHRoaXMuY29tcExpYiA9PT0gQ29tcG9uZW50TGlicmFyeS5QUklNRU5HKSB7XHJcbiAgICAgICAgaWYgKGNoYW5nZS5raW5kID09PSAnc2VsZWN0aW9uJykge1xyXG4gICAgICAgICAgdGhpcy5zYXZlRmlsdGVyKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIGlmIChjaGFuZ2Uua2luZCA9PT0gJ3NlbGVjdGlvbicgJiYgIWNoYW5nZS5rZXkuaW5jbHVkZXMoJ3NlbGVjdGVkVmFsdWVzJykpIHtcclxuICAgICAgICAgIHRoaXMuc2F2ZUZpbHRlcigpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHN1YnNjcmliZUVkaXRvckZvcm1DaGlsZHJlbkV2ZW50cygpOiB2b2lkIHtcclxuICAgIHRoaXMuZm9ybUNvbXBSZWY/Lmluc3RhbmNlIS5vbkJsdXJTdWJqZWN0IS5waXBlKHRha2VVbnRpbCh0aGlzLl9kZXN0cm95JCkpLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgIHRoaXMuc2F2ZSgpO1xyXG4gICAgfSk7XHJcblxyXG4gICAgdGhpcy5mb3JtQ29tcFJlZiEuaW5zdGFuY2UhLnNvcGhpc3RpY2F0ZWRWYWx1ZUNoYW5nZT8ucGlwZSh0YWtlVW50aWwodGhpcy5fZGVzdHJveSQpKS5zdWJzY3JpYmUoXHJcbiAgICAgIChjaGFuZ2U6IFNvcGhpc3RpY2F0ZWRWYWx1ZUNoYW5nZSkgPT4ge1xyXG4gICAgICAgIGlmIChcclxuICAgICAgICAgIGNoYW5nZS5rZXkgPT09ICdleHByZXNzaW9uRGF0YS5jdXJyZW50T3BlcmF0aW9uJyB8fFxyXG4gICAgICAgICAgY2hhbmdlLmtleSA9PT0gJ2V4cHJlc3Npb25EYXRhLm9wZXJhbmQyLnNlbGVjdGVkT2JqZWN0cydcclxuICAgICAgICApIHtcclxuICAgICAgICAgIHRoaXMuc2F2ZSgpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIG5nT25Jbml0KCk6IHZvaWQge31cclxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLnNlcnZpY2UubW9kZWxDaGFuZ2VkLnBpcGUodGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3kkKSkuc3Vic2NyaWJlKCgpID0+IHRoaXMuc2V0VXAoKSk7XHJcbiAgICB0aGlzLnNlcnZpY2UubG9hZCgpO1xyXG4gICAgaWYgKHRoaXMudXNlQWR2YW5jZWRGaWx0ZXIpIHtcclxuICAgICAgdGhpcy5zZXJ2aWNlLml0ZW1TZWxlY3RlZC5waXBlKHRha2VVbnRpbCh0aGlzLl9kZXN0cm95JCkpLnN1YnNjcmliZSgoaXRlbSkgPT4ge1xyXG4gICAgICAgIGlmIChpdGVtLmV4cHJlc3Npb25EYXRhPy5jdXJyZW50T3BlcmF0aW9uICE9PSAnRVhQUkVTU0lPTicpIHtcclxuICAgICAgICAgIHRoaXMuZXhwcmVzc2lvbkVkaXRvckRpYWxvZ1NlcnZpY2Uuc2V0RGF0YUFuZE9wZW5EaWFsb2codGhpcy5jcmVhdGVGaWx0ZXJFZGl0b3JGb3JtKCkpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICAgIHRoaXMuZXhwcmVzc2lvbkVkaXRvckRpYWxvZ1NlcnZpY2Uuc2F2ZUV2ZW50XHJcbiAgICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3kkKSlcclxuICAgICAgICAuc3Vic2NyaWJlKChkYXRhKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLnNlcnZpY2UubW9kZWwhLnNlbGVjdGVkRmllbGQgPSBkYXRhO1xyXG4gICAgICAgICAgdGhpcy51cGRhdGVGaWx0ZXJFeHByZXNzaW9uKCk7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgdGhpcy5fZGVzdHJveSQubmV4dCgpO1xyXG4gICAgdGhpcy5fZGVzdHJveSQuY29tcGxldGUoKTtcclxuICB9XHJcblxyXG4gIHNldHVwU2ltcGxlRmlsdGVyKCk6IHZvaWQge1xyXG4gICAgaWYgKCF0aGlzLnNpbXBsZUZpbHRlclZjUmVmKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICBsZXQgd2lkZ2V0czogU21hcnRGb3JtV2lkZ2V0PGFueT5bXSA9IFtdO1xyXG5cclxuICAgIGxldCBrZXk6IHN0cmluZyB8IHVuZGVmaW5lZDtcclxuXHJcbiAgICBsZXQgbW9kZWw6IHsgW2tleTogc3RyaW5nXTogYW55IH0gPSB7fTtcclxuXHJcbiAgICB0aGlzLnNlcnZpY2UubW9kZWw/Lm1vZGVsPy53b3JrcGxhY2VMaXN0Py5maWx0ZXJzLmZvckVhY2goXHJcbiAgICAgIChmaWx0ZXJFeHByZXNzaW9uRmllbGQ6IEZpbHRlckV4cHJlc3Npb25GaWVsZCwgaW5kZXg6IG51bWJlcikgPT4ge1xyXG4gICAgICAgIG1vZGVsW2luZGV4XSA9IGZpbHRlckV4cHJlc3Npb25GaWVsZDtcclxuXHJcbiAgICAgICAgaWYgKFxyXG4gICAgICAgICAgZmlsdGVyRXhwcmVzc2lvbkZpZWxkLndpZGdldFR5cGUgPT09IEZpbHRlckV4cHJlc3Npb25GaWVsZFdpZGdldFR5cGUuVEVYVF9GSUVMRF9MT09LVVBcclxuICAgICAgICApIHtcclxuICAgICAgICAgIGtleSA9IGluZGV4ICsgJy5leHByZXNzaW9uRGF0YS5vcGVyYW5kMi5zZWxlY3RlZE9iamVjdHMnO1xyXG4gICAgICAgICAgd2lkZ2V0cy5wdXNoKFxyXG4gICAgICAgICAgICB0aGlzLmNvbnN0cnVjdEZvcm1XaWRnZXQoXHJcbiAgICAgICAgICAgICAga2V5LFxyXG4gICAgICAgICAgICAgIGZpbHRlckV4cHJlc3Npb25GaWVsZC5sYWJlbDIhLFxyXG4gICAgICAgICAgICAgIEZpbHRlckV4cHJlc3Npb25GaWVsZFdpZGdldFR5cGUuVEVYVF9GSUVMRF9MT09LVVAsXHJcbiAgICAgICAgICAgICAgW10sXHJcbiAgICAgICAgICAgICAgZmlsdGVyRXhwcmVzc2lvbkZpZWxkLmV4cHJlc3Npb25EYXRhPy5vcGVyYW5kMj8uc2VsZWN0ZWRPYmplY3RzID8/IFtdLFxyXG4gICAgICAgICAgICAgIGZpbHRlckV4cHJlc3Npb25GaWVsZC50b29sYmFySWRcclxuICAgICAgICAgICAgKVxyXG4gICAgICAgICAgKTtcclxuICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmIChmaWx0ZXJFeHByZXNzaW9uRmllbGQud2lkZ2V0VHlwZSA9PT0gJ1NFTEVDVF9NVUxUSVBMRScpIHtcclxuICAgICAgICAgIGtleSA9IGluZGV4ICsgJy5leHByZXNzaW9uRGF0YS5vcGVyYW5kMi5zZWxlY3RlZFZhbHVlcyc7XHJcbiAgICAgICAgICB3aWRnZXRzLnB1c2goXHJcbiAgICAgICAgICAgIHRoaXMuY29uc3RydWN0Rm9ybVdpZGdldChcclxuICAgICAgICAgICAgICBrZXksXHJcbiAgICAgICAgICAgICAgZmlsdGVyRXhwcmVzc2lvbkZpZWxkLmxhYmVsMiEsXHJcbiAgICAgICAgICAgICAgZmlsdGVyRXhwcmVzc2lvbkZpZWxkLndpZGdldFR5cGUgPz8gRmlsdGVyRXhwcmVzc2lvbkZpZWxkV2lkZ2V0VHlwZS5URVhUX0ZJRUxELFxyXG4gICAgICAgICAgICAgIGZpbHRlckV4cHJlc3Npb25GaWVsZC5wb3NzaWJsZVZhbHVlcyBhcyBWYWx1ZVtdLFxyXG4gICAgICAgICAgICAgIGZpbHRlckV4cHJlc3Npb25GaWVsZC5leHByZXNzaW9uRGF0YT8ub3BlcmFuZDI/LnNlbGVjdGVkVmFsdWVzID8/IFtdLFxyXG4gICAgICAgICAgICAgIGZpbHRlckV4cHJlc3Npb25GaWVsZC50b29sYmFySWRcclxuICAgICAgICAgICAgKVxyXG4gICAgICAgICAgKTtcclxuICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmIChmaWx0ZXJFeHByZXNzaW9uRmllbGQuZXhwcmVzc2lvbkRhdGE/LmN1cnJlbnRPcGVyYXRpb24gPT09ICdCRVRXRUVOJykge1xyXG4gICAgICAgICAga2V5ID0gaW5kZXggKyAnLmV4cHJlc3Npb25EYXRhLm9wZXJhbmQyLnZhbHVlQXNTdHJpbmcnO1xyXG4gICAgICAgICAgd2lkZ2V0cy5wdXNoKFxyXG4gICAgICAgICAgICB0aGlzLmNvbnN0cnVjdEZvcm1XaWRnZXQoXHJcbiAgICAgICAgICAgICAga2V5LFxyXG4gICAgICAgICAgICAgIGZpbHRlckV4cHJlc3Npb25GaWVsZC5sYWJlbDIhLFxyXG4gICAgICAgICAgICAgIGZpbHRlckV4cHJlc3Npb25GaWVsZC53aWRnZXRUeXBlID8/IEZpbHRlckV4cHJlc3Npb25GaWVsZFdpZGdldFR5cGUuVEVYVF9GSUVMRCxcclxuICAgICAgICAgICAgICBmaWx0ZXJFeHByZXNzaW9uRmllbGQucG9zc2libGVWYWx1ZXMgYXMgVmFsdWVbXSxcclxuICAgICAgICAgICAgICBmaWx0ZXJFeHByZXNzaW9uRmllbGQuZXhwcmVzc2lvbkRhdGE/Lm9wZXJhbmQyPy52YWx1ZUFzU3RyaW5nID8/ICcnLFxyXG4gICAgICAgICAgICAgIGZpbHRlckV4cHJlc3Npb25GaWVsZC50b29sYmFySWRcclxuICAgICAgICAgICAgKVxyXG4gICAgICAgICAgKTtcclxuXHJcbiAgICAgICAgICBrZXkgPSBpbmRleCArICcuZXhwcmVzc2lvbkRhdGEub3BlcmFuZDMudmFsdWVBc1N0cmluZyc7XHJcbiAgICAgICAgICB3aWRnZXRzLnB1c2goXHJcbiAgICAgICAgICAgIHRoaXMuY29uc3RydWN0Rm9ybVdpZGdldChcclxuICAgICAgICAgICAgICBrZXksXHJcbiAgICAgICAgICAgICAgZmlsdGVyRXhwcmVzc2lvbkZpZWxkLmxhYmVsMyEsXHJcbiAgICAgICAgICAgICAgZmlsdGVyRXhwcmVzc2lvbkZpZWxkLndpZGdldFR5cGUgPz8gRmlsdGVyRXhwcmVzc2lvbkZpZWxkV2lkZ2V0VHlwZS5URVhUX0ZJRUxELFxyXG4gICAgICAgICAgICAgIGZpbHRlckV4cHJlc3Npb25GaWVsZC5wb3NzaWJsZVZhbHVlcyBhcyBWYWx1ZVtdLFxyXG4gICAgICAgICAgICAgIGZpbHRlckV4cHJlc3Npb25GaWVsZC5leHByZXNzaW9uRGF0YT8ub3BlcmFuZDM/LnZhbHVlQXNTdHJpbmcgPz8gJycsXHJcbiAgICAgICAgICAgICAgZmlsdGVyRXhwcmVzc2lvbkZpZWxkLnRvb2xiYXJJZFxyXG4gICAgICAgICAgICApXHJcbiAgICAgICAgICApO1xyXG4gICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKGZpbHRlckV4cHJlc3Npb25GaWVsZC5leHByZXNzaW9uRGF0YT8ub3BlcmFuZDIpIHtcclxuICAgICAgICAgIGtleSA9IGluZGV4ICsgJy5leHByZXNzaW9uRGF0YS5vcGVyYW5kMi52YWx1ZUFzU3RyaW5nJztcclxuXHJcbiAgICAgICAgICB3aWRnZXRzLnB1c2goXHJcbiAgICAgICAgICAgIHRoaXMuY29uc3RydWN0Rm9ybVdpZGdldChcclxuICAgICAgICAgICAgICBrZXksXHJcbiAgICAgICAgICAgICAgZmlsdGVyRXhwcmVzc2lvbkZpZWxkLmxhYmVsMiEsXHJcbiAgICAgICAgICAgICAgZmlsdGVyRXhwcmVzc2lvbkZpZWxkLndpZGdldFR5cGUgPz8gRmlsdGVyRXhwcmVzc2lvbkZpZWxkV2lkZ2V0VHlwZS5URVhUX0ZJRUxELFxyXG4gICAgICAgICAgICAgIGZpbHRlckV4cHJlc3Npb25GaWVsZC5wb3NzaWJsZVZhbHVlcyBhcyBWYWx1ZVtdLFxyXG4gICAgICAgICAgICAgIGZpbHRlckV4cHJlc3Npb25GaWVsZC5leHByZXNzaW9uRGF0YT8ub3BlcmFuZDI/LnZhbHVlQXNTdHJpbmcgPz8gJycsXHJcbiAgICAgICAgICAgICAgZmlsdGVyRXhwcmVzc2lvbkZpZWxkLnRvb2xiYXJJZFxyXG4gICAgICAgICAgICApXHJcbiAgICAgICAgICApO1xyXG4gICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoZmlsdGVyRXhwcmVzc2lvbkZpZWxkPy5leHByZXNzaW9uRGF0YT8ub3BlcmFuZDMpIHtcclxuICAgICAgICAgIGtleSA9IGluZGV4ICsgJy5leHByZXNzaW9uRGF0YS5vcGVyYW5kMy52YWx1ZUFzU3RyaW5nJztcclxuXHJcbiAgICAgICAgICB3aWRnZXRzLnB1c2goXHJcbiAgICAgICAgICAgIHRoaXMuY29uc3RydWN0Rm9ybVdpZGdldChcclxuICAgICAgICAgICAgICBrZXksXHJcbiAgICAgICAgICAgICAgZmlsdGVyRXhwcmVzc2lvbkZpZWxkLmxhYmVsMyEsXHJcbiAgICAgICAgICAgICAgZmlsdGVyRXhwcmVzc2lvbkZpZWxkLndpZGdldFR5cGUgPz8gRmlsdGVyRXhwcmVzc2lvbkZpZWxkV2lkZ2V0VHlwZS5URVhUX0ZJRUxELFxyXG5cclxuICAgICAgICAgICAgICBmaWx0ZXJFeHByZXNzaW9uRmllbGQucG9zc2libGVWYWx1ZXMgYXMgVmFsdWVbXSxcclxuICAgICAgICAgICAgICBmaWx0ZXJFeHByZXNzaW9uRmllbGQuZXhwcmVzc2lvbkRhdGE/Lm9wZXJhbmQzPy52YWx1ZUFzU3RyaW5nID8/ICcnLFxyXG4gICAgICAgICAgICAgIGZpbHRlckV4cHJlc3Npb25GaWVsZC50b29sYmFySWRcclxuICAgICAgICAgICAgKVxyXG4gICAgICAgICAgKTtcclxuICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICk7XHJcblxyXG4gICAgbGV0IHNtYXJ0Rm9ybSA9IHtcclxuICAgICAgZGlyZWN0aW9uOiBTbWFydEZvcm1XaWRnZXREaXJlY3Rpb24uUk9XLFxyXG4gICAgICBjb21wb25lbnRNb2RlbDogeyBkYXRhOiBtb2RlbCB9LFxyXG4gICAgICB1c2VPblZhbHVlQ2hhbmdlRXZlbnQ6ICF0aGlzLnVzZUFkdmFuY2VkRmlsdGVyLFxyXG4gICAgICB1c2VPbkJsdXJFdmVudDogIXRoaXMudXNlQWR2YW5jZWRGaWx0ZXIsXHJcbiAgICAgIHdpZGdldHMsXHJcbiAgICB9O1xyXG5cclxuICAgIGlmICh0aGlzLnNpbXBsZUZpbHRlclJlZj8uaW5zdGFuY2UpIHtcclxuICAgICAgLy8gd2UgYWxyZWFkeSBoYXZlIGEgU21hcnRGb3JtQ29tcG9uZW50LCB1c2UgdGhhdFxyXG4gICAgICBsZXQgY29tcCA9IHRoaXMuc2ltcGxlRmlsdGVyUmVmPy5pbnN0YW5jZTtcclxuXHJcbiAgICAgIGlmIChjb21wLnNtYXJ0Rm9ybSAmJiB0aGlzLmNvbXBhcmVXaWRnZXRzKGNvbXAuc21hcnRGb3JtLndpZGdldHMsIHNtYXJ0Rm9ybS53aWRnZXRzKSkge1xyXG4gICAgICAgIC8vIHRoZXJlJ3Mgbm8gc3RydWN0dXJhbCBjaGFuZ2UsIGRvbid0IHJlY3JlYXRlIFNtYXJ0Rm9ybUNvbXBvbmVudFxyXG4gICAgICAgIGNvbXAuc21hcnRGb3JtLmNvbXBvbmVudE1vZGVsID0gc21hcnRGb3JtLmNvbXBvbmVudE1vZGVsO1xyXG4gICAgICAgIGNvbXAuY29uc3RydWN0Rm9ybSgpO1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuc2ltcGxlRmlsdGVyVmNSZWY/LmNsZWFyKCk7XHJcbiAgICB0aGlzLnNpbXBsZUZpbHRlclJlZj8uZGVzdHJveSgpO1xyXG5cclxuICAgIHRoaXMuc2ltcGxlRmlsdGVyUmVmID0gdGhpcy5jZlNlcnZpY2UuY3JlYXRlQ29tcG9uZW50KFxyXG4gICAgICB0aGlzLnNpbXBsZUZpbHRlclZjUmVmISxcclxuICAgICAgU21hcnRmb3JtQ29tcG9uZW50LFxyXG4gICAgICBuZXcgTWFwPHN0cmluZywgYW55PihbWydzbWFydEZvcm0nLCBzbWFydEZvcm1dXSlcclxuICAgICk7XHJcblxyXG4gICAgdGhpcy5zdWJzcmNpYmVTaW1wbGVGb3JtQ2hpbGRyZW5FdmVudHMoKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgY29tcGFyZVdpZGdldHMod3MxOiBTbWFydEZvcm1XaWRnZXQ8YW55PltdLCB3czI6IFNtYXJ0Rm9ybVdpZGdldDxhbnk+W10pOiBib29sZWFuIHtcclxuICAgIGlmICh3czEubGVuZ3RoICE9PSB3czIubGVuZ3RoKSB7XHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgd3MxLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgIGlmICghdGhpcy5jb21wYXJlV2lkZ2V0KHdzMVtpXSwgd3MyW2ldKSkge1xyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIHRydWU7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGNvbXBhcmVXaWRnZXQodzE6IFNtYXJ0Rm9ybVdpZGdldDxhbnk+LCB3MjogU21hcnRGb3JtV2lkZ2V0PGFueT4pOiBib29sZWFuIHtcclxuICAgIHJldHVybiBTbWFydE9iamVjdFV0aWxpdHkuY29tcGFyZUJ5UHJvcHModzEsIHcyLCBbXHJcbiAgICAgICdlcnJvcicsXHJcbiAgICAgICdrZXknLFxyXG4gICAgICAnbGFiZWwnLFxyXG4gICAgICAndHlwZScsXHJcbiAgICAgIC8vICd2YWx1ZScsIDwtIHZhbHVlIHdpbGwgYmUgc2V0IGJ5IGNvbXBvbmVudE1vZGVsLmRhdGEhXHJcbiAgICAgICdzaG93TGFiZWwnLFxyXG4gICAgICAndmFsdWVMaXN0JyxcclxuICAgICAgJ3Rvb2xiYXJJZCcsXHJcbiAgICBdKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZXh0cmFjdEZpbHRlckZpZWxkRnJvbUZvcm1Nb2RlbCgpOiB2b2lkIHtcclxuICAgIGxldCBzaW1wbGVGaWx0ZXIgPSB0aGlzLnNpbXBsZUZpbHRlclJlZj8uaW5zdGFuY2U/LnN1Ym1pdEZvcm0oZmFsc2UpLmNvbXBvbmVudE1vZGVsLmRhdGE7XHJcbiAgICBsZXQgcmVzdWx0OiBGaWx0ZXJFeHByZXNzaW9uRmllbGRbXSA9IFtdO1xyXG5cclxuICAgIE9iamVjdC5rZXlzKHNpbXBsZUZpbHRlcikuZm9yRWFjaCgoa2V5OiBzdHJpbmcpID0+IHtcclxuICAgICAgcmVzdWx0LnB1c2goc2ltcGxlRmlsdGVyW2tleV0pO1xyXG4gICAgfSk7XHJcbiAgICB0aGlzLnNlcnZpY2UubW9kZWwhLm1vZGVsIS53b3JrcGxhY2VMaXN0IS5maWx0ZXJzID0gcmVzdWx0O1xyXG4gIH1cclxuXHJcbiAgc2V0VXAoKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5zZXJ2aWNlLm1vZGVsPy50eXBlID09PSB0aGlzLnR5cGUuU0lNUExFKSB7XHJcbiAgICAgIHRoaXMuc2V0dXBTaW1wbGVGaWx0ZXIoKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuY29uc3RydWN0VWlBY3Rpb25Nb2RlbHMoKTtcclxuXHJcbiAgICAgIGlmICh0aGlzLnNlcnZpY2U/Lm1vZGVsPy5zZWxlY3RlZEZpZWxkRWRpdG9yKSB7XHJcbiAgICAgICAgdGhpcy5jb25zdHJ1Y3RGb3JtKCk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy52Y1JlZj8uY2xlYXIoKTtcclxuICAgICAgICB0aGlzLmZvcm1Db21wUmVmPy5kZXN0cm95KCk7XHJcbiAgICAgICAgdGhpcy5zbWFydEZvcm0gPSB1bmRlZmluZWQ7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIGNvbnN0cnVjdFVpQWN0aW9uTW9kZWxzKCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuc2VydmljZS5tb2RlbD8ucG9zc2libGVBY3Rpb25zKSB7XHJcbiAgICAgIHRoaXMudWlBY3Rpb25Nb2RlbHMgPSB0aGlzLnNlcnZpY2UubW9kZWwucG9zc2libGVBY3Rpb25zLm1hcCgoYWN0aW9uOiBVaUFjdGlvbikgPT4ge1xyXG4gICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICBzZXJ2aWNlVG9Vc2U6IHRoaXMuc2VydmljZSxcclxuICAgICAgICAgIHVpQWN0aW9uOiBhY3Rpb24sXHJcbiAgICAgICAgfTtcclxuICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRoaXMuc2VydmljZS5tb2RlbD8uc2VsZWN0ZWRGaWVsZEVkaXRvcj8ucG9zc2libGVBY3Rpb25zKSB7XHJcbiAgICAgIHRoaXMuZXhwcmVzc2lvblVpQWN0aW9uTW9kZWxzID0gdGhpcy5zZXJ2aWNlLm1vZGVsPy5zZWxlY3RlZEZpZWxkRWRpdG9yLnBvc3NpYmxlQWN0aW9ucy5tYXAoXHJcbiAgICAgICAgKHVpQWN0aW9uOiBVaUFjdGlvbikgPT4ge1xyXG4gICAgICAgICAgbGV0IGNvcGllZFVpQWN0aW9uOiBVaUFjdGlvbiA9IHt9O1xyXG4gICAgICAgICAgT2JqZWN0LmtleXModWlBY3Rpb24pLm1hcCgoa2V5OiBzdHJpbmcpID0+IHtcclxuICAgICAgICAgICAgKGNvcGllZFVpQWN0aW9uIGFzIGFueSlba2V5XSA9ICh1aUFjdGlvbiBhcyBhbnkpW2tleV07XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICAgIGNvcGllZFVpQWN0aW9uLnBhcmFtcyA9IHtcclxuICAgICAgICAgICAgZmllbGQ6IHRoaXMuc2VydmljZS5tb2RlbD8uc2VsZWN0ZWRGaWVsZCxcclxuICAgICAgICAgIH07XHJcbiAgICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICBzZXJ2aWNlVG9Vc2U6IHRoaXMuc2VydmljZSxcclxuICAgICAgICAgICAgdWlBY3Rpb246IGNvcGllZFVpQWN0aW9uLFxyXG4gICAgICAgICAgfTtcclxuICAgICAgICB9XHJcbiAgICAgICk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBjb25zdHJ1Y3RGb3JtKCk6IHZvaWQge1xyXG4gICAgdGhpcy5zbWFydEZvcm0gPSB0aGlzLmNyZWF0ZUZpbHRlckVkaXRvckZvcm0oKTtcclxuXHJcbiAgICB0aGlzLnZjUmVmPy5jbGVhcigpO1xyXG4gICAgdGhpcy5mb3JtQ29tcFJlZj8uZGVzdHJveSgpO1xyXG5cclxuICAgIGlmICghdGhpcy52Y1JlZikge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5mb3JtQ29tcFJlZiA9IHRoaXMuY2ZTZXJ2aWNlLmNyZWF0ZUNvbXBvbmVudChcclxuICAgICAgdGhpcy52Y1JlZiEsXHJcbiAgICAgIFNtYXJ0Zm9ybUNvbXBvbmVudCxcclxuICAgICAgbmV3IE1hcDxzdHJpbmcsIGFueT4oW1snc21hcnRGb3JtJywgdGhpcy5zbWFydEZvcm1dXSlcclxuICAgICk7XHJcbiAgICB0aGlzLnNlcnZpY2Uuc2V0Q29tcGxleFRvb2xiYXJzKHRoaXMuZm9ybUNvbXBSZWYuaW5zdGFuY2UuZ2V0VG9vbGJhcnMoKSk7XHJcblxyXG4gICAgdGhpcy5zdWJzY3JpYmVFZGl0b3JGb3JtQ2hpbGRyZW5FdmVudHMoKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgY3JlYXRlRmlsdGVyRWRpdG9yRm9ybSgpOiBTbWFydEZvcm0ge1xyXG4gICAgbGV0IGdlbmVyYXRlZFdpZGdldHM6IFNtYXJ0Rm9ybVdpZGdldDxhbnk+W10gPSB0aGlzLmxheW91dFNlcnZpY2UucmVuZGVyKHtcclxuICAgICAgbGF5b3V0RGVmaW5pdGlvbnM6IHRoaXMuc2VydmljZS5tb2RlbD8uc2VsZWN0ZWRGaWVsZEVkaXRvcj8ubGF5b3V0RGVmPy53aWRnZXRzLFxyXG4gICAgfSk7XHJcblxyXG4gICAgcmV0dXJuIHtcclxuICAgICAgZGlyZWN0aW9uOiBTbWFydEZvcm1XaWRnZXREaXJlY3Rpb24uUk9XLFxyXG4gICAgICB1c2VPbkJsdXJFdmVudDogdHJ1ZSxcclxuICAgICAgdXNlT25WYWx1ZUNoYW5nZUV2ZW50OiB0cnVlLFxyXG4gICAgICBjb21wb25lbnRNb2RlbDogeyBkYXRhOiB0aGlzLnNlcnZpY2UubW9kZWw/LnNlbGVjdGVkRmllbGQgfSxcclxuICAgICAgd2lkZ2V0czogZ2VuZXJhdGVkV2lkZ2V0cyxcclxuICAgIH07XHJcbiAgfVxyXG5cclxuICBzYXZlKCk6IHZvaWQge1xyXG4gICAgdGhpcy5mb3JtQ29tcFJlZj8uaW5zdGFuY2U/LnN1Ym1pdEZvcm0oZmFsc2UpO1xyXG4gICAgdGhpcy51cGRhdGVGaWx0ZXJFeHByZXNzaW9uKCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHVwZGF0ZUZpbHRlckV4cHJlc3Npb24oKSB7XHJcbiAgICB0aGlzLnNlcnZpY2UucGVmb3JtV2lkZ2V0QWN0aW9uKHtcclxuICAgICAgY29kZTogJ1VQREFURV9GSUxURVJfRVhQUkVTU0lPTicsXHJcbiAgICAgIHBhcmFtczoge1xyXG4gICAgICAgIG1vZGVsOiB0aGlzLnNlcnZpY2UubW9kZWw/LnNlbGVjdGVkRmllbGQsXHJcbiAgICAgIH0sXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHJlbW92ZSgpOiB2b2lkIHtcclxuICAgIHRoaXMuc2VydmljZS5wZWZvcm1XaWRnZXRBY3Rpb24oe1xyXG4gICAgICBjb2RlOiAnUkVNT1ZFX0ZJTFRFUl9FWFBSRVNTSU9OJyxcclxuICAgICAgcGFyYW1zOiB7XHJcbiAgICAgICAgbW9kZWw6IHRoaXMuc2VydmljZS5tb2RlbD8uc2VsZWN0ZWRGaWVsZCxcclxuICAgICAgfSxcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgYXN5bmMgc2F2ZUZpbHRlcigpOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgIHRoaXMuZXh0cmFjdEZpbHRlckZpZWxkRnJvbUZvcm1Nb2RlbCgpO1xyXG4gICAgYXdhaXQgdGhpcy5zZXJ2aWNlLnBlcmZvcm1VaUFjdGlvblJlcXVlc3Qoe1xyXG4gICAgICBjb2RlOiBGaWx0ZXJFeHByZXNzaW9uQnVpbGRlckFwaUFjdGlvbnMuU0FWRV9FWFBSRVNTSU9OX0ZJRUxEX0xJU1QsXHJcbiAgICAgIHBhcmFtczoge1xyXG4gICAgICAgIG1vZGVsOiB0aGlzLnNlcnZpY2UubW9kZWwhLFxyXG4gICAgICB9LFxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGNvbnN0cnVjdEZvcm1XaWRnZXQoXHJcbiAgICBrZXk6IHN0cmluZyxcclxuICAgIGxhYmVsOiBzdHJpbmcsXHJcbiAgICB3aWRnZXRUeXBlOiBGaWx0ZXJFeHByZXNzaW9uRmllbGRXaWRnZXRUeXBlLFxyXG4gICAgcG9zc2libGVWYWx1ZXM6IFZhbHVlW10sXHJcbiAgICB2YWx1ZTogYW55LFxyXG4gICAgdG9vbGJhcklkPzogc3RyaW5nXHJcbiAgKTogU21hcnRGb3JtV2lkZ2V0PGFueT4ge1xyXG4gICAgbGV0IHR5cGU6IGFueSA9IHdpZGdldFR5cGU7XHJcblxyXG4gICAgaWYgKHR5cGUgPT09IEZpbHRlckV4cHJlc3Npb25GaWVsZFdpZGdldFR5cGUuREFURSkge1xyXG4gICAgICB0eXBlID0gU21hcnRGb3JtV2lkZ2V0VHlwZS5EQVRFX1BJQ0tFUjtcclxuICAgIH0gZWxzZSBpZiAodHlwZSA9PT0gRmlsdGVyRXhwcmVzc2lvbkZpZWxkV2lkZ2V0VHlwZS5EQVRFX1RJTUUpIHtcclxuICAgICAgdHlwZSA9IFNtYXJ0Rm9ybVdpZGdldFR5cGUuREFURV9USU1FX1BJQ0tFUjtcclxuICAgIH1cclxuXHJcbiAgICBsZXQgd2lkZ2V0OiBTbWFydEZvcm1XaWRnZXQ8YW55PiA9IHtcclxuICAgICAgZXJyb3I6IHVuZGVmaW5lZCxcclxuICAgICAga2V5LFxyXG4gICAgICBsYWJlbCxcclxuICAgICAgdHlwZSxcclxuICAgICAgdmFsdWUsXHJcbiAgICAgIHNob3dMYWJlbDogdHJ1ZSxcclxuICAgICAgaXNGbG9hdExhYmVsOiB0cnVlLFxyXG4gICAgICB2YWx1ZUxpc3Q6IHBvc3NpYmxlVmFsdWVzLm1hcCgodmFsdWU6IFZhbHVlKSA9PiB7XHJcbiAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgIGtleTogdmFsdWUub2JqZWN0VXJpID8gdmFsdWUub2JqZWN0VXJpIDogdmFsdWUuY29kZSEsXHJcbiAgICAgICAgICBsYWJlbDogdmFsdWUuZGlzcGxheVZhbHVlLFxyXG4gICAgICAgICAgdHlwZTogU21hcnRGb3JtV2lkZ2V0VHlwZS5JVEVNLFxyXG4gICAgICAgICAgdmFsdWU6IHZhbHVlLm9iamVjdFVyaSA/IHZhbHVlLm9iamVjdFVyaSA6IHZhbHVlLmNvZGUsXHJcbiAgICAgICAgfTtcclxuICAgICAgfSksXHJcbiAgICAgIHRvb2xiYXJJZCxcclxuICAgICAgdGV4dEZpZWxkUHJvcGVydGllczoge1xyXG4gICAgICAgIGNsZWFyYWJsZTogdHJ1ZSxcclxuICAgICAgfSxcclxuICAgIH07XHJcblxyXG4gICAgcmV0dXJuIHdpZGdldDtcclxuICB9XHJcblxyXG4gIGFzeW5jIHVuU2VsZWN0SXRlbXMoZXZlbnQ6IE1vdXNlRXZlbnQpIHtcclxuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xyXG4gICAgYXdhaXQgdGhpcy5zZXJ2aWNlLnBlZm9ybVdpZGdldEFjdGlvbih7XHJcbiAgICAgIGNvZGU6ICdTRUxFQ1RfRklFTEQnLFxyXG4gICAgICBwYXJhbXM6IHt9LFxyXG4gICAgfSk7XHJcbiAgfVxyXG59XHJcbiIsIjxkaXYgY2xhc3M9XCJzbWFydC1maWx0ZXItZWRpdG9yLWNvbnRhaW5lclwiICpuZ0lmPVwic2VydmljZS5tb2RlbFwiPlxyXG4gIEBpZiAoc2VydmljZS5tb2RlbC5tb2RlbD8ubGFiZWwpIHtcclxuICAgIDxoMyBjbGFzcz1cInNtYXJ0LWZpbHRlci1lZGl0b3ItdGl0bGVcIj57eyBzZXJ2aWNlLm1vZGVsLm1vZGVsPy5sYWJlbCB9fTwvaDM+XHJcbiAgfVxyXG5cclxuICA8ZGl2ICpuZ0lmPVwic2VydmljZS5tb2RlbD8udHlwZSA9PT0gdHlwZS5TSU1QTEU7IHRoZW4gc2ltcGxlRmlsdGVyOyBlbHNlIGNvbXBsZXhGaWx0ZXJcIj48L2Rpdj5cclxuXHJcbiAgPG5nLXRlbXBsYXRlICNzaW1wbGVGaWx0ZXI+XHJcbiAgICA8ZGl2IGNsYXNzPVwic21hcnQtZmlsdGVyLWVkaXRvci1leHByZXNzaW9uc0NvbnRhaW5lclwiPlxyXG4gICAgICA8bmctdGVtcGxhdGUgI3NpbXBsZUZpbHRlckZyb21DaGlsZD48L25nLXRlbXBsYXRlPlxyXG4gICAgICA8IS0tICNzaW1wbGVGaWx0ZXJGcm9tQ2hpbGQgW3NtYXJ0Rm9ybV09XCJzaW1wbGVGaWx0ZXJGb3JtXCI+PC9zbWFydGZvcm0+IC0tPlxyXG4gICAgPC9kaXY+XHJcbiAgPC9uZy10ZW1wbGF0ZT5cclxuICA8bmctdGVtcGxhdGUgI2NvbXBsZXhGaWx0ZXI+XHJcbiAgICA8ZGl2IGNsYXNzPVwic21hcnQtZmlsdGVyLWVkaXRvci11aUFjdGlvbnNCYXJcIiAqbmdJZj1cIiFzZXJ2aWNlLm1vZGVsPy5yZWFkT25seVwiPlxyXG4gICAgICA8c21hcnQtdWktYWN0aW9uLXRvb2xiYXIgW3VpQWN0aW9uTW9kZWxzXT1cInVpQWN0aW9uTW9kZWxzXCI+PC9zbWFydC11aS1hY3Rpb24tdG9vbGJhcj5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdlxyXG4gICAgICAqbmdJZj1cIlxyXG4gICAgICAgIHNlcnZpY2U/Lm1vZGVsPy5tb2RlbD8ud29ya3BsYWNlTGlzdD8uZmlsdGVycz8ubGVuZ3RoO1xyXG4gICAgICAgIHRoZW4gd2l0aFBhcmFtZXRlcnM7XHJcbiAgICAgICAgZWxzZSB3aXRob3V0UGFyYW1ldGVyc1xyXG4gICAgICBcIlxyXG4gICAgPjwvZGl2PlxyXG4gICAgPG5nLXRlbXBsYXRlICN3aXRob3V0UGFyYW1ldGVycz5cclxuICAgICAgPGRpdiBjbGFzcz1cInNtYXJ0LWZpbHRlci1lZGl0b3Itd2l0aG91dFBhcmFtZXRlcnNDb250YWluZXJcIj5cclxuICAgICAgICA8c3BhbiBjbGFzcz1cIm1hdC1ib2R5XCI+IE3DqWcgbmluY3MgbWVnYWR2YSBwYXJhbcOpdGVyIDwvc3Bhbj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgPG5nLXRlbXBsYXRlICN3aXRoUGFyYW1ldGVycz5cclxuICAgICAgPGRpdiBjbGFzcz1cInNtYXJ0LWZpbHRlci1lZGl0b3Itd2l0aFBhcmFtZXRlcnNDb250YWluZXJcIj5cclxuICAgICAgICA8ZGl2XHJcbiAgICAgICAgICBjbGFzcz1cInNtYXJ0LWZpbHRlci1lZGl0b3ItZXhwcmVzc2lvbnNDb250YWluZXJcIlxyXG4gICAgICAgICAgKm5nSWY9XCJzZXJ2aWNlPy5tb2RlbD8ubW9kZWw/LndvcmtwbGFjZUxpc3Q/LmZpbHRlcnM/Lmxlbmd0aFwiXHJcbiAgICAgICAgICAoY2xpY2spPVwidW5TZWxlY3RJdGVtcygkZXZlbnQpXCJcclxuICAgICAgICA+XHJcbiAgICAgICAgICA8YXBwLWV4cHJlc3Npb24taXRlbXNcclxuICAgICAgICAgICAgW2l0ZW1zXT1cIihzZXJ2aWNlLm1vZGVsLm1vZGVsPy53b3JrcGxhY2VMaXN0KSEuZmlsdGVyc1wiXHJcbiAgICAgICAgICAgIFtzZXJ2aWNlXT1cInNlcnZpY2VcIlxyXG4gICAgICAgICAgPjwvYXBwLWV4cHJlc3Npb24taXRlbXM+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdlxyXG4gICAgICAgICAgKm5nSWY9XCJcclxuICAgICAgICAgICAgIXVzZUFkdmFuY2VkRmlsdGVyIHx8XHJcbiAgICAgICAgICAgIHNlcnZpY2UubW9kZWwuc2VsZWN0ZWRGaWVsZD8uZXhwcmVzc2lvbkRhdGE/LmN1cnJlbnRPcGVyYXRpb24gPT09ICdFWFBSRVNTSU9OJ1xyXG4gICAgICAgICAgXCJcclxuICAgICAgICAgIGNsYXNzPVwic21hcnQtZmlsdGVyLWVkaXRvci1leHByZXNzaW9uRWRpdG9yQ29udGFpbmVyXCJcclxuICAgICAgICA+XHJcbiAgICAgICAgICA8IS0tIDxzbWFydGZvcm0gI2Zvcm0gW3NtYXJ0Rm9ybV09XCJzbWFydEZvcm1cIj48L3NtYXJ0Zm9ybT4gLS0+XHJcbiAgICAgICAgICA8bmctdGVtcGxhdGUgI2Zvcm0+PC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgIDxkaXYgKm5nSWY9XCJzbWFydEZvcm1cIj5cclxuICAgICAgICAgICAgPGJ1dHRvbiAoY2xpY2spPVwicmVtb3ZlKClcIiBtYXQtcmFpc2VkLWJ1dHRvbiBjb2xvcj1cInByaW1hcnlcIj5Uw7ZybMOpczwvYnV0dG9uPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9uZy10ZW1wbGF0ZT5cclxuICA8L25nLXRlbXBsYXRlPlxyXG48L2Rpdj5cclxuIl19
@@ -14,6 +14,7 @@ import { SharedModule } from '../shared/shared.module';
14
14
  import { AdvancedSmartFilterExpressionItemComponent } from './project';
15
15
  import { AdvancedRelationButtonComponent } from './smart-filter-editor-content/components/advanced/advanced-relation-button/advanced-relation-button.component';
16
16
  import { ExpressionEditorDialogComponent } from './smart-filter-editor-content/components/advanced/expression-editor-dialog/expression-editor-dialog.component';
17
+ import { SmartFilterWidgetComponent } from './smart-filter-widget/smart-filter-widget.component';
17
18
  import * as i0 from "@angular/core";
18
19
  export class SmartFilterEditorModule {
19
20
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: SmartFilterEditorModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
@@ -24,7 +25,8 @@ export class SmartFilterEditorModule {
24
25
  SmartFilterExpressionItemComponent,
25
26
  AdvancedSmartFilterExpressionItemComponent,
26
27
  AdvancedRelationButtonComponent,
27
- ExpressionEditorDialogComponent], imports: [CommonModule,
28
+ ExpressionEditorDialogComponent,
29
+ SmartFilterWidgetComponent], imports: [CommonModule,
28
30
  SmartIconModule,
29
31
  SmartExpandableSectionModule,
30
32
  SmartViewContextModule,
@@ -37,7 +39,8 @@ export class SmartFilterEditorModule {
37
39
  SmartFilterExpressionItemComponent,
38
40
  AdvancedSmartFilterExpressionItemComponent,
39
41
  AdvancedRelationButtonComponent,
40
- ExpressionEditorDialogComponent] }); }
42
+ ExpressionEditorDialogComponent,
43
+ SmartFilterWidgetComponent] }); }
41
44
  static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: SmartFilterEditorModule, imports: [CommonModule,
42
45
  SmartIconModule,
43
46
  SmartExpandableSectionModule,
@@ -58,6 +61,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImpo
58
61
  AdvancedSmartFilterExpressionItemComponent,
59
62
  AdvancedRelationButtonComponent,
60
63
  ExpressionEditorDialogComponent,
64
+ SmartFilterWidgetComponent,
61
65
  ],
62
66
  imports: [
63
67
  CommonModule,
@@ -77,8 +81,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImpo
77
81
  AdvancedSmartFilterExpressionItemComponent,
78
82
  AdvancedRelationButtonComponent,
79
83
  ExpressionEditorDialogComponent,
84
+ SmartFilterWidgetComponent,
80
85
  ],
81
86
  providers: [],
82
87
  }]
83
88
  }] });
84
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnQtZmlsdGVyLWVkaXRvci5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zbWFydC1uZy1jbGllbnQvc3JjL2xpYi9zbWFydC1maWx0ZXItZWRpdG9yL3NtYXJ0LWZpbHRlci1lZGl0b3IubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0scURBQXFELENBQUM7QUFDakcsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sa0ZBQWtGLENBQUM7QUFDN0gsT0FBTyxFQUFFLGlDQUFpQyxFQUFFLE1BQU0scUVBQXFFLENBQUM7QUFDeEgsT0FBTyxFQUFFLG1DQUFtQyxFQUFFLE1BQU0sZ0hBQWdILENBQUM7QUFDckssT0FBTyxFQUFFLGtDQUFrQyxFQUFFLE1BQU0sOEdBQThHLENBQUM7QUFDbEssT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3pELE9BQU8sRUFBRSw0QkFBNEIsRUFBRSxNQUFNLDZEQUE2RCxDQUFDO0FBQzNHLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLDJDQUEyQyxDQUFDO0FBQ25GLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDM0QsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDeEUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3ZELE9BQU8sRUFBRSwwQ0FBMEMsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUN2RSxPQUFPLEVBQUUsK0JBQStCLEVBQUUsTUFBTSwrR0FBK0csQ0FBQztBQUNoSyxPQUFPLEVBQUUsK0JBQStCLEVBQUUsTUFBTSwrR0FBK0csQ0FBQzs7QUFrQ2hLLE1BQU0sT0FBTyx1QkFBdUI7K0dBQXZCLHVCQUF1QjtnSEFBdkIsdUJBQXVCLGlCQTlCaEMsMEJBQTBCO1lBQzFCLHlCQUF5QjtZQUN6QixpQ0FBaUM7WUFDakMsbUNBQW1DO1lBQ25DLGtDQUFrQztZQUNsQywwQ0FBMEM7WUFDMUMsK0JBQStCO1lBQy9CLCtCQUErQixhQUcvQixZQUFZO1lBQ1osZUFBZTtZQUNmLDRCQUE0QjtZQUM1QixzQkFBc0I7WUFDdEIsZUFBZTtZQUNmLGlCQUFpQjtZQUNqQixZQUFZLGFBR1osMEJBQTBCO1lBQzFCLHlCQUF5QjtZQUN6QixpQ0FBaUM7WUFDakMsbUNBQW1DO1lBQ25DLGtDQUFrQztZQUNsQywwQ0FBMEM7WUFDMUMsK0JBQStCO1lBQy9CLCtCQUErQjtnSEFJdEIsdUJBQXVCLFlBcEJoQyxZQUFZO1lBQ1osZUFBZTtZQUNmLDRCQUE0QjtZQUM1QixzQkFBc0I7WUFDdEIsZUFBZTtZQUNmLGlCQUFpQjtZQUNqQixZQUFZOzs0RkFjSCx1QkFBdUI7a0JBaENuQyxRQUFRO21CQUFDO29CQUNSLFlBQVksRUFBRTt3QkFDWiwwQkFBMEI7d0JBQzFCLHlCQUF5Qjt3QkFDekIsaUNBQWlDO3dCQUNqQyxtQ0FBbUM7d0JBQ25DLGtDQUFrQzt3QkFDbEMsMENBQTBDO3dCQUMxQywrQkFBK0I7d0JBQy9CLCtCQUErQjtxQkFDaEM7b0JBQ0QsT0FBTyxFQUFFO3dCQUNQLFlBQVk7d0JBQ1osZUFBZTt3QkFDZiw0QkFBNEI7d0JBQzVCLHNCQUFzQjt3QkFDdEIsZUFBZTt3QkFDZixpQkFBaUI7d0JBQ2pCLFlBQVk7cUJBQ2I7b0JBQ0QsT0FBTyxFQUFFO3dCQUNQLDBCQUEwQjt3QkFDMUIseUJBQXlCO3dCQUN6QixpQ0FBaUM7d0JBQ2pDLG1DQUFtQzt3QkFDbkMsa0NBQWtDO3dCQUNsQywwQ0FBMEM7d0JBQzFDLCtCQUErQjt3QkFDL0IsK0JBQStCO3FCQUNoQztvQkFDRCxTQUFTLEVBQUUsRUFBRTtpQkFDZCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IFNtYXJ0RmlsdGVyUGFyYW1zQ29tcG9uZW50IH0gZnJvbSAnLi9zbWFydC1maWx0ZXItcGFyYW1zL3NtYXJ0LWZpbHRlci1wYXJhbXMuY29tcG9uZW50JztcclxuaW1wb3J0IHsgU21hcnRGaWx0ZXJQYXJhbUNvbXBvbmVudCB9IGZyb20gJy4vc21hcnQtZmlsdGVyLXBhcmFtcy9jb21wb25lbnRzL3NtYXJ0LWZpbHRlci1wYXJhbS9zbWFydC1maWx0ZXItcGFyYW0uY29tcG9uZW50JztcclxuaW1wb3J0IHsgU21hcnRGaWx0ZXJFZGl0b3JDb250ZW50Q29tcG9uZW50IH0gZnJvbSAnLi9zbWFydC1maWx0ZXItZWRpdG9yLWNvbnRlbnQvc21hcnQtZmlsdGVyLWVkaXRvci1jb250ZW50LmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFNtYXJ0RmlsdGVyRXhwcmVzc2lvbkl0ZW1zQ29tcG9uZW50IH0gZnJvbSAnLi9zbWFydC1maWx0ZXItZWRpdG9yLWNvbnRlbnQvY29tcG9uZW50cy9zbWFydC1maWx0ZXItZXhwcmVzc2lvbi1pdGVtcy9zbWFydC1maWx0ZXItZXhwcmVzc2lvbi1pdGVtcy5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBTbWFydEZpbHRlckV4cHJlc3Npb25JdGVtQ29tcG9uZW50IH0gZnJvbSAnLi9zbWFydC1maWx0ZXItZWRpdG9yLWNvbnRlbnQvY29tcG9uZW50cy9zbWFydC1maWx0ZXItZXhwcmVzc2lvbi1pdGVtL3NtYXJ0LWZpbHRlci1leHByZXNzaW9uLWl0ZW0uY29tcG9uZW50JztcclxuaW1wb3J0IHsgU21hcnRJY29uTW9kdWxlIH0gZnJvbSAnLi4vc21hcnQtaWNvbi9wcm9qZWN0cyc7XHJcbmltcG9ydCB7IFNtYXJ0RXhwYW5kYWJsZVNlY3Rpb25Nb2R1bGUgfSBmcm9tICcuLi9zbWFydC1leHBhbmRhYmxlLXNlY3Rpb24vc21hcnQtZXhwYW5kYWJsZS1zZWN0aW9uLm1vZHVsZSc7XHJcbmltcG9ydCB7IFNtYXJ0Vmlld0NvbnRleHRNb2R1bGUgfSBmcm9tICcuLi92aWV3LWNvbnRleHQvc21hcnQtdmlldy1jb250ZXh0Lm1vZHVsZSc7XHJcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7IE1hdEJ1dHRvbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2J1dHRvbic7XHJcbmltcG9ydCB7IFNtYXJ0RmlsdGVyTW9kdWxlIH0gZnJvbSAnLi4vc21hcnQtZmlsdGVyL3NtYXJ0LWZpbHRlci5tb2R1bGUnO1xyXG5pbXBvcnQgeyBTaGFyZWRNb2R1bGUgfSBmcm9tICcuLi9zaGFyZWQvc2hhcmVkLm1vZHVsZSc7XHJcbmltcG9ydCB7IEFkdmFuY2VkU21hcnRGaWx0ZXJFeHByZXNzaW9uSXRlbUNvbXBvbmVudCB9IGZyb20gJy4vcHJvamVjdCc7XHJcbmltcG9ydCB7IEFkdmFuY2VkUmVsYXRpb25CdXR0b25Db21wb25lbnQgfSBmcm9tICcuL3NtYXJ0LWZpbHRlci1lZGl0b3ItY29udGVudC9jb21wb25lbnRzL2FkdmFuY2VkL2FkdmFuY2VkLXJlbGF0aW9uLWJ1dHRvbi9hZHZhbmNlZC1yZWxhdGlvbi1idXR0b24uY29tcG9uZW50JztcclxuaW1wb3J0IHsgRXhwcmVzc2lvbkVkaXRvckRpYWxvZ0NvbXBvbmVudCB9IGZyb20gJy4vc21hcnQtZmlsdGVyLWVkaXRvci1jb250ZW50L2NvbXBvbmVudHMvYWR2YW5jZWQvZXhwcmVzc2lvbi1lZGl0b3ItZGlhbG9nL2V4cHJlc3Npb24tZWRpdG9yLWRpYWxvZy5jb21wb25lbnQnO1xyXG5cclxuQE5nTW9kdWxlKHtcclxuICBkZWNsYXJhdGlvbnM6IFtcclxuICAgIFNtYXJ0RmlsdGVyUGFyYW1zQ29tcG9uZW50LFxyXG4gICAgU21hcnRGaWx0ZXJQYXJhbUNvbXBvbmVudCxcclxuICAgIFNtYXJ0RmlsdGVyRWRpdG9yQ29udGVudENvbXBvbmVudCxcclxuICAgIFNtYXJ0RmlsdGVyRXhwcmVzc2lvbkl0ZW1zQ29tcG9uZW50LFxyXG4gICAgU21hcnRGaWx0ZXJFeHByZXNzaW9uSXRlbUNvbXBvbmVudCxcclxuICAgIEFkdmFuY2VkU21hcnRGaWx0ZXJFeHByZXNzaW9uSXRlbUNvbXBvbmVudCxcclxuICAgIEFkdmFuY2VkUmVsYXRpb25CdXR0b25Db21wb25lbnQsXHJcbiAgICBFeHByZXNzaW9uRWRpdG9yRGlhbG9nQ29tcG9uZW50LFxyXG4gIF0sXHJcbiAgaW1wb3J0czogW1xyXG4gICAgQ29tbW9uTW9kdWxlLFxyXG4gICAgU21hcnRJY29uTW9kdWxlLFxyXG4gICAgU21hcnRFeHBhbmRhYmxlU2VjdGlvbk1vZHVsZSxcclxuICAgIFNtYXJ0Vmlld0NvbnRleHRNb2R1bGUsXHJcbiAgICBNYXRCdXR0b25Nb2R1bGUsXHJcbiAgICBTbWFydEZpbHRlck1vZHVsZSxcclxuICAgIFNoYXJlZE1vZHVsZSxcclxuICBdLFxyXG4gIGV4cG9ydHM6IFtcclxuICAgIFNtYXJ0RmlsdGVyUGFyYW1zQ29tcG9uZW50LFxyXG4gICAgU21hcnRGaWx0ZXJQYXJhbUNvbXBvbmVudCxcclxuICAgIFNtYXJ0RmlsdGVyRWRpdG9yQ29udGVudENvbXBvbmVudCxcclxuICAgIFNtYXJ0RmlsdGVyRXhwcmVzc2lvbkl0ZW1zQ29tcG9uZW50LFxyXG4gICAgU21hcnRGaWx0ZXJFeHByZXNzaW9uSXRlbUNvbXBvbmVudCxcclxuICAgIEFkdmFuY2VkU21hcnRGaWx0ZXJFeHByZXNzaW9uSXRlbUNvbXBvbmVudCxcclxuICAgIEFkdmFuY2VkUmVsYXRpb25CdXR0b25Db21wb25lbnQsXHJcbiAgICBFeHByZXNzaW9uRWRpdG9yRGlhbG9nQ29tcG9uZW50LFxyXG4gIF0sXHJcbiAgcHJvdmlkZXJzOiBbXSxcclxufSlcclxuZXhwb3J0IGNsYXNzIFNtYXJ0RmlsdGVyRWRpdG9yTW9kdWxlIHt9XHJcbiJdfQ==
89
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnQtZmlsdGVyLWVkaXRvci5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zbWFydC1uZy1jbGllbnQvc3JjL2xpYi9zbWFydC1maWx0ZXItZWRpdG9yL3NtYXJ0LWZpbHRlci1lZGl0b3IubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0scURBQXFELENBQUM7QUFDakcsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sa0ZBQWtGLENBQUM7QUFDN0gsT0FBTyxFQUFFLGlDQUFpQyxFQUFFLE1BQU0scUVBQXFFLENBQUM7QUFDeEgsT0FBTyxFQUFFLG1DQUFtQyxFQUFFLE1BQU0sZ0hBQWdILENBQUM7QUFDckssT0FBTyxFQUFFLGtDQUFrQyxFQUFFLE1BQU0sOEdBQThHLENBQUM7QUFDbEssT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3pELE9BQU8sRUFBRSw0QkFBNEIsRUFBRSxNQUFNLDZEQUE2RCxDQUFDO0FBQzNHLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLDJDQUEyQyxDQUFDO0FBQ25GLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDM0QsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDeEUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3ZELE9BQU8sRUFBRSwwQ0FBMEMsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUN2RSxPQUFPLEVBQUUsK0JBQStCLEVBQUUsTUFBTSwrR0FBK0csQ0FBQztBQUNoSyxPQUFPLEVBQUUsK0JBQStCLEVBQUUsTUFBTSwrR0FBK0csQ0FBQztBQUNoSyxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSxxREFBcUQsQ0FBQzs7QUFvQ2pHLE1BQU0sT0FBTyx1QkFBdUI7K0dBQXZCLHVCQUF1QjtnSEFBdkIsdUJBQXVCLGlCQWhDaEMsMEJBQTBCO1lBQzFCLHlCQUF5QjtZQUN6QixpQ0FBaUM7WUFDakMsbUNBQW1DO1lBQ25DLGtDQUFrQztZQUNsQywwQ0FBMEM7WUFDMUMsK0JBQStCO1lBQy9CLCtCQUErQjtZQUMvQiwwQkFBMEIsYUFHMUIsWUFBWTtZQUNaLGVBQWU7WUFDZiw0QkFBNEI7WUFDNUIsc0JBQXNCO1lBQ3RCLGVBQWU7WUFDZixpQkFBaUI7WUFDakIsWUFBWSxhQUdaLDBCQUEwQjtZQUMxQix5QkFBeUI7WUFDekIsaUNBQWlDO1lBQ2pDLG1DQUFtQztZQUNuQyxrQ0FBa0M7WUFDbEMsMENBQTBDO1lBQzFDLCtCQUErQjtZQUMvQiwrQkFBK0I7WUFDL0IsMEJBQTBCO2dIQUlqQix1QkFBdUIsWUFyQmhDLFlBQVk7WUFDWixlQUFlO1lBQ2YsNEJBQTRCO1lBQzVCLHNCQUFzQjtZQUN0QixlQUFlO1lBQ2YsaUJBQWlCO1lBQ2pCLFlBQVk7OzRGQWVILHVCQUF1QjtrQkFsQ25DLFFBQVE7bUJBQUM7b0JBQ1IsWUFBWSxFQUFFO3dCQUNaLDBCQUEwQjt3QkFDMUIseUJBQXlCO3dCQUN6QixpQ0FBaUM7d0JBQ2pDLG1DQUFtQzt3QkFDbkMsa0NBQWtDO3dCQUNsQywwQ0FBMEM7d0JBQzFDLCtCQUErQjt3QkFDL0IsK0JBQStCO3dCQUMvQiwwQkFBMEI7cUJBQzNCO29CQUNELE9BQU8sRUFBRTt3QkFDUCxZQUFZO3dCQUNaLGVBQWU7d0JBQ2YsNEJBQTRCO3dCQUM1QixzQkFBc0I7d0JBQ3RCLGVBQWU7d0JBQ2YsaUJBQWlCO3dCQUNqQixZQUFZO3FCQUNiO29CQUNELE9BQU8sRUFBRTt3QkFDUCwwQkFBMEI7d0JBQzFCLHlCQUF5Qjt3QkFDekIsaUNBQWlDO3dCQUNqQyxtQ0FBbUM7d0JBQ25DLGtDQUFrQzt3QkFDbEMsMENBQTBDO3dCQUMxQywrQkFBK0I7d0JBQy9CLCtCQUErQjt3QkFDL0IsMEJBQTBCO3FCQUMzQjtvQkFDRCxTQUFTLEVBQUUsRUFBRTtpQkFDZCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IFNtYXJ0RmlsdGVyUGFyYW1zQ29tcG9uZW50IH0gZnJvbSAnLi9zbWFydC1maWx0ZXItcGFyYW1zL3NtYXJ0LWZpbHRlci1wYXJhbXMuY29tcG9uZW50JztcclxuaW1wb3J0IHsgU21hcnRGaWx0ZXJQYXJhbUNvbXBvbmVudCB9IGZyb20gJy4vc21hcnQtZmlsdGVyLXBhcmFtcy9jb21wb25lbnRzL3NtYXJ0LWZpbHRlci1wYXJhbS9zbWFydC1maWx0ZXItcGFyYW0uY29tcG9uZW50JztcclxuaW1wb3J0IHsgU21hcnRGaWx0ZXJFZGl0b3JDb250ZW50Q29tcG9uZW50IH0gZnJvbSAnLi9zbWFydC1maWx0ZXItZWRpdG9yLWNvbnRlbnQvc21hcnQtZmlsdGVyLWVkaXRvci1jb250ZW50LmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFNtYXJ0RmlsdGVyRXhwcmVzc2lvbkl0ZW1zQ29tcG9uZW50IH0gZnJvbSAnLi9zbWFydC1maWx0ZXItZWRpdG9yLWNvbnRlbnQvY29tcG9uZW50cy9zbWFydC1maWx0ZXItZXhwcmVzc2lvbi1pdGVtcy9zbWFydC1maWx0ZXItZXhwcmVzc2lvbi1pdGVtcy5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBTbWFydEZpbHRlckV4cHJlc3Npb25JdGVtQ29tcG9uZW50IH0gZnJvbSAnLi9zbWFydC1maWx0ZXItZWRpdG9yLWNvbnRlbnQvY29tcG9uZW50cy9zbWFydC1maWx0ZXItZXhwcmVzc2lvbi1pdGVtL3NtYXJ0LWZpbHRlci1leHByZXNzaW9uLWl0ZW0uY29tcG9uZW50JztcclxuaW1wb3J0IHsgU21hcnRJY29uTW9kdWxlIH0gZnJvbSAnLi4vc21hcnQtaWNvbi9wcm9qZWN0cyc7XHJcbmltcG9ydCB7IFNtYXJ0RXhwYW5kYWJsZVNlY3Rpb25Nb2R1bGUgfSBmcm9tICcuLi9zbWFydC1leHBhbmRhYmxlLXNlY3Rpb24vc21hcnQtZXhwYW5kYWJsZS1zZWN0aW9uLm1vZHVsZSc7XHJcbmltcG9ydCB7IFNtYXJ0Vmlld0NvbnRleHRNb2R1bGUgfSBmcm9tICcuLi92aWV3LWNvbnRleHQvc21hcnQtdmlldy1jb250ZXh0Lm1vZHVsZSc7XHJcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7IE1hdEJ1dHRvbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2J1dHRvbic7XHJcbmltcG9ydCB7IFNtYXJ0RmlsdGVyTW9kdWxlIH0gZnJvbSAnLi4vc21hcnQtZmlsdGVyL3NtYXJ0LWZpbHRlci5tb2R1bGUnO1xyXG5pbXBvcnQgeyBTaGFyZWRNb2R1bGUgfSBmcm9tICcuLi9zaGFyZWQvc2hhcmVkLm1vZHVsZSc7XHJcbmltcG9ydCB7IEFkdmFuY2VkU21hcnRGaWx0ZXJFeHByZXNzaW9uSXRlbUNvbXBvbmVudCB9IGZyb20gJy4vcHJvamVjdCc7XHJcbmltcG9ydCB7IEFkdmFuY2VkUmVsYXRpb25CdXR0b25Db21wb25lbnQgfSBmcm9tICcuL3NtYXJ0LWZpbHRlci1lZGl0b3ItY29udGVudC9jb21wb25lbnRzL2FkdmFuY2VkL2FkdmFuY2VkLXJlbGF0aW9uLWJ1dHRvbi9hZHZhbmNlZC1yZWxhdGlvbi1idXR0b24uY29tcG9uZW50JztcclxuaW1wb3J0IHsgRXhwcmVzc2lvbkVkaXRvckRpYWxvZ0NvbXBvbmVudCB9IGZyb20gJy4vc21hcnQtZmlsdGVyLWVkaXRvci1jb250ZW50L2NvbXBvbmVudHMvYWR2YW5jZWQvZXhwcmVzc2lvbi1lZGl0b3ItZGlhbG9nL2V4cHJlc3Npb24tZWRpdG9yLWRpYWxvZy5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBTbWFydEZpbHRlcldpZGdldENvbXBvbmVudCB9IGZyb20gJy4vc21hcnQtZmlsdGVyLXdpZGdldC9zbWFydC1maWx0ZXItd2lkZ2V0LmNvbXBvbmVudCc7XHJcblxyXG5ATmdNb2R1bGUoe1xyXG4gIGRlY2xhcmF0aW9uczogW1xyXG4gICAgU21hcnRGaWx0ZXJQYXJhbXNDb21wb25lbnQsXHJcbiAgICBTbWFydEZpbHRlclBhcmFtQ29tcG9uZW50LFxyXG4gICAgU21hcnRGaWx0ZXJFZGl0b3JDb250ZW50Q29tcG9uZW50LFxyXG4gICAgU21hcnRGaWx0ZXJFeHByZXNzaW9uSXRlbXNDb21wb25lbnQsXHJcbiAgICBTbWFydEZpbHRlckV4cHJlc3Npb25JdGVtQ29tcG9uZW50LFxyXG4gICAgQWR2YW5jZWRTbWFydEZpbHRlckV4cHJlc3Npb25JdGVtQ29tcG9uZW50LFxyXG4gICAgQWR2YW5jZWRSZWxhdGlvbkJ1dHRvbkNvbXBvbmVudCxcclxuICAgIEV4cHJlc3Npb25FZGl0b3JEaWFsb2dDb21wb25lbnQsXHJcbiAgICBTbWFydEZpbHRlcldpZGdldENvbXBvbmVudCxcclxuICBdLFxyXG4gIGltcG9ydHM6IFtcclxuICAgIENvbW1vbk1vZHVsZSxcclxuICAgIFNtYXJ0SWNvbk1vZHVsZSxcclxuICAgIFNtYXJ0RXhwYW5kYWJsZVNlY3Rpb25Nb2R1bGUsXHJcbiAgICBTbWFydFZpZXdDb250ZXh0TW9kdWxlLFxyXG4gICAgTWF0QnV0dG9uTW9kdWxlLFxyXG4gICAgU21hcnRGaWx0ZXJNb2R1bGUsXHJcbiAgICBTaGFyZWRNb2R1bGUsXHJcbiAgXSxcclxuICBleHBvcnRzOiBbXHJcbiAgICBTbWFydEZpbHRlclBhcmFtc0NvbXBvbmVudCxcclxuICAgIFNtYXJ0RmlsdGVyUGFyYW1Db21wb25lbnQsXHJcbiAgICBTbWFydEZpbHRlckVkaXRvckNvbnRlbnRDb21wb25lbnQsXHJcbiAgICBTbWFydEZpbHRlckV4cHJlc3Npb25JdGVtc0NvbXBvbmVudCxcclxuICAgIFNtYXJ0RmlsdGVyRXhwcmVzc2lvbkl0ZW1Db21wb25lbnQsXHJcbiAgICBBZHZhbmNlZFNtYXJ0RmlsdGVyRXhwcmVzc2lvbkl0ZW1Db21wb25lbnQsXHJcbiAgICBBZHZhbmNlZFJlbGF0aW9uQnV0dG9uQ29tcG9uZW50LFxyXG4gICAgRXhwcmVzc2lvbkVkaXRvckRpYWxvZ0NvbXBvbmVudCxcclxuICAgIFNtYXJ0RmlsdGVyV2lkZ2V0Q29tcG9uZW50LFxyXG4gIF0sXHJcbiAgcHJvdmlkZXJzOiBbXSxcclxufSlcclxuZXhwb3J0IGNsYXNzIFNtYXJ0RmlsdGVyRWRpdG9yTW9kdWxlIHt9XHJcbiJdfQ==
@@ -0,0 +1,58 @@
1
+ import { Component, Input, ViewChild } from '@angular/core';
2
+ import { Subject, takeUntil } from 'rxjs';
3
+ import { SmartFilterEditorService } from '../smart-filter-editor.service';
4
+ import * as i0 from "@angular/core";
5
+ import * as i1 from "../smart-filter-editor.service";
6
+ import * as i2 from "@angular/common";
7
+ import * as i3 from "../smart-filter-params/smart-filter-params.component";
8
+ import * as i4 from "../smart-filter-editor-content/smart-filter-editor-content.component";
9
+ /**
10
+ * A filter builder placed in a component layout. The identifier is the builder's filterId in the
11
+ * view: the widget loads the builder by it, and the client above the layout finds the widget by it
12
+ * for push updates and toolbar collection. Each widget owns its own SmartFilterEditorService.
13
+ */
14
+ export class SmartFilterWidgetComponent {
15
+ // A template reference instead of the class token: a value import of the editor would pull
16
+ // the library's module cycle into this file. The editor subscribes to modelChanged in its own
17
+ // ngAfterViewInit, which runs before this setter fires, so the action refresh below always
18
+ // follows the editor's toolbar rebuild.
19
+ set contentComponentSetter(comp) {
20
+ if (comp && !this.contentComponent) {
21
+ this.service.modelChanged
22
+ .pipe(takeUntil(this._destroy$))
23
+ .subscribe(() => this.parent?.initActions());
24
+ }
25
+ this.contentComponent = comp;
26
+ }
27
+ constructor(service) {
28
+ this.service = service;
29
+ this._destroy$ = new Subject();
30
+ }
31
+ ngOnChanges() {
32
+ this.service.config = { uuid: this.uuid, identifier: this.identifier };
33
+ this.service.parentSmartComponent = this.parent;
34
+ if (this.uuid) {
35
+ this.service.load();
36
+ }
37
+ }
38
+ ngOnDestroy() {
39
+ this._destroy$.next();
40
+ this._destroy$.complete();
41
+ }
42
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: SmartFilterWidgetComponent, deps: [{ token: i1.SmartFilterEditorService }], target: i0.ɵɵFactoryTarget.Component }); }
43
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.11", type: SmartFilterWidgetComponent, selector: "smart-filter-widget", inputs: { uuid: "uuid", identifier: "identifier", parent: "parent" }, providers: [SmartFilterEditorService], viewQueries: [{ propertyName: "contentComponentSetter", first: true, predicate: ["editor"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div class=\"filter-widget-container\" *ngIf=\"service.model\">\r\n <smart-filter-group-params [service]=\"service\"></smart-filter-group-params>\r\n <smart-filter-expression-editor #editor [service]=\"service\"></smart-filter-expression-editor>\r\n</div>\r\n", styles: [".filter-widget-container{display:flex;flex-direction:row}\n"], dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3.SmartFilterParamsComponent, selector: "smart-filter-group-params", inputs: ["service"] }, { kind: "component", type: i4.SmartFilterEditorContentComponent, selector: "smart-filter-expression-editor", inputs: ["service"] }] }); }
44
+ }
45
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: SmartFilterWidgetComponent, decorators: [{
46
+ type: Component,
47
+ args: [{ selector: 'smart-filter-widget', providers: [SmartFilterEditorService], template: "<div class=\"filter-widget-container\" *ngIf=\"service.model\">\r\n <smart-filter-group-params [service]=\"service\"></smart-filter-group-params>\r\n <smart-filter-expression-editor #editor [service]=\"service\"></smart-filter-expression-editor>\r\n</div>\r\n", styles: [".filter-widget-container{display:flex;flex-direction:row}\n"] }]
48
+ }], ctorParameters: () => [{ type: i1.SmartFilterEditorService }], propDecorators: { uuid: [{
49
+ type: Input
50
+ }], identifier: [{
51
+ type: Input
52
+ }], parent: [{
53
+ type: Input
54
+ }], contentComponentSetter: [{
55
+ type: ViewChild,
56
+ args: ['editor']
57
+ }] } });
58
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnQtZmlsdGVyLXdpZGdldC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zbWFydC1uZy1jbGllbnQvc3JjL2xpYi9zbWFydC1maWx0ZXItZWRpdG9yL3NtYXJ0LWZpbHRlci13aWRnZXQvc21hcnQtZmlsdGVyLXdpZGdldC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zbWFydC1uZy1jbGllbnQvc3JjL2xpYi9zbWFydC1maWx0ZXItZWRpdG9yL3NtYXJ0LWZpbHRlci13aWRnZXQvc21hcnQtZmlsdGVyLXdpZGdldC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBd0IsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2xGLE9BQU8sRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzFDLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLGdDQUFnQyxDQUFDOzs7Ozs7QUFHMUU7Ozs7R0FJRztBQU9ILE1BQU0sT0FBTywwQkFBMEI7SUFTckMsMkZBQTJGO0lBQzNGLDhGQUE4RjtJQUM5RiwyRkFBMkY7SUFDM0Ysd0NBQXdDO0lBQ3hDLElBQ0ksc0JBQXNCLENBQUMsSUFBbUQ7UUFDNUUsSUFBSSxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztZQUNuQyxJQUFJLENBQUMsT0FBTyxDQUFDLFlBQVk7aUJBQ3RCLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO2lCQUMvQixTQUFTLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxXQUFXLEVBQUUsQ0FBQyxDQUFDO1FBQ2pELENBQUM7UUFDRCxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDO0lBQy9CLENBQUM7SUFFRCxZQUFtQixPQUFpQztRQUFqQyxZQUFPLEdBQVAsT0FBTyxDQUEwQjtRQXRCNUMsY0FBUyxHQUFrQixJQUFJLE9BQU8sRUFBRSxDQUFDO0lBc0JNLENBQUM7SUFFeEQsV0FBVztRQUNULElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxHQUFHLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJLEVBQUUsVUFBVSxFQUFFLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUN2RSxJQUFJLENBQUMsT0FBTyxDQUFDLG9CQUFvQixHQUFHLElBQUksQ0FBQyxNQUFNLENBQUM7UUFDaEQsSUFBSSxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDZCxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ3RCLENBQUM7SUFDSCxDQUFDO0lBRUQsV0FBVztRQUNULElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDdEIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUM1QixDQUFDOytHQXBDVSwwQkFBMEI7bUdBQTFCLDBCQUEwQixvSEFGMUIsQ0FBQyx3QkFBd0IsQ0FBQyxpS0NkdkMsdVFBSUE7OzRGRFlhLDBCQUEwQjtrQkFOdEMsU0FBUzsrQkFDRSxxQkFBcUIsYUFHcEIsQ0FBQyx3QkFBd0IsQ0FBQzs2RkFLNUIsSUFBSTtzQkFBWixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csTUFBTTtzQkFBZCxLQUFLO2dCQVNGLHNCQUFzQjtzQkFEekIsU0FBUzt1QkFBQyxRQUFRIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgT25DaGFuZ2VzLCBPbkRlc3Ryb3ksIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBTdWJqZWN0LCB0YWtlVW50aWwgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgU21hcnRGaWx0ZXJFZGl0b3JTZXJ2aWNlIH0gZnJvbSAnLi4vc21hcnQtZmlsdGVyLWVkaXRvci5zZXJ2aWNlJztcclxuaW1wb3J0IHR5cGUgeyBTbWFydEZpbHRlckVkaXRvckNvbnRlbnRDb21wb25lbnQgfSBmcm9tICcuLi9zbWFydC1maWx0ZXItZWRpdG9yLWNvbnRlbnQvc21hcnQtZmlsdGVyLWVkaXRvci1jb250ZW50LmNvbXBvbmVudCc7XHJcblxyXG4vKipcclxuICogQSBmaWx0ZXIgYnVpbGRlciBwbGFjZWQgaW4gYSBjb21wb25lbnQgbGF5b3V0LiBUaGUgaWRlbnRpZmllciBpcyB0aGUgYnVpbGRlcidzIGZpbHRlcklkIGluIHRoZVxyXG4gKiB2aWV3OiB0aGUgd2lkZ2V0IGxvYWRzIHRoZSBidWlsZGVyIGJ5IGl0LCBhbmQgdGhlIGNsaWVudCBhYm92ZSB0aGUgbGF5b3V0IGZpbmRzIHRoZSB3aWRnZXQgYnkgaXRcclxuICogZm9yIHB1c2ggdXBkYXRlcyBhbmQgdG9vbGJhciBjb2xsZWN0aW9uLiBFYWNoIHdpZGdldCBvd25zIGl0cyBvd24gU21hcnRGaWx0ZXJFZGl0b3JTZXJ2aWNlLlxyXG4gKi9cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdzbWFydC1maWx0ZXItd2lkZ2V0JyxcclxuICB0ZW1wbGF0ZVVybDogJy4vc21hcnQtZmlsdGVyLXdpZGdldC5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vc21hcnQtZmlsdGVyLXdpZGdldC5jb21wb25lbnQuY3NzJ10sXHJcbiAgcHJvdmlkZXJzOiBbU21hcnRGaWx0ZXJFZGl0b3JTZXJ2aWNlXSxcclxufSlcclxuZXhwb3J0IGNsYXNzIFNtYXJ0RmlsdGVyV2lkZ2V0Q29tcG9uZW50IGltcGxlbWVudHMgT25DaGFuZ2VzLCBPbkRlc3Ryb3kge1xyXG4gIHByaXZhdGUgX2Rlc3Ryb3kkOiBTdWJqZWN0PHZvaWQ+ID0gbmV3IFN1YmplY3QoKTtcclxuXHJcbiAgQElucHV0KCkgdXVpZD86IHN0cmluZztcclxuICBASW5wdXQoKSBpZGVudGlmaWVyITogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIHBhcmVudD86IGFueTtcclxuXHJcbiAgY29udGVudENvbXBvbmVudD86IFNtYXJ0RmlsdGVyRWRpdG9yQ29udGVudENvbXBvbmVudDtcclxuXHJcbiAgLy8gQSB0ZW1wbGF0ZSByZWZlcmVuY2UgaW5zdGVhZCBvZiB0aGUgY2xhc3MgdG9rZW46IGEgdmFsdWUgaW1wb3J0IG9mIHRoZSBlZGl0b3Igd291bGQgcHVsbFxyXG4gIC8vIHRoZSBsaWJyYXJ5J3MgbW9kdWxlIGN5Y2xlIGludG8gdGhpcyBmaWxlLiBUaGUgZWRpdG9yIHN1YnNjcmliZXMgdG8gbW9kZWxDaGFuZ2VkIGluIGl0cyBvd25cclxuICAvLyBuZ0FmdGVyVmlld0luaXQsIHdoaWNoIHJ1bnMgYmVmb3JlIHRoaXMgc2V0dGVyIGZpcmVzLCBzbyB0aGUgYWN0aW9uIHJlZnJlc2ggYmVsb3cgYWx3YXlzXHJcbiAgLy8gZm9sbG93cyB0aGUgZWRpdG9yJ3MgdG9vbGJhciByZWJ1aWxkLlxyXG4gIEBWaWV3Q2hpbGQoJ2VkaXRvcicpXHJcbiAgc2V0IGNvbnRlbnRDb21wb25lbnRTZXR0ZXIoY29tcDogU21hcnRGaWx0ZXJFZGl0b3JDb250ZW50Q29tcG9uZW50IHwgdW5kZWZpbmVkKSB7XHJcbiAgICBpZiAoY29tcCAmJiAhdGhpcy5jb250ZW50Q29tcG9uZW50KSB7XHJcbiAgICAgIHRoaXMuc2VydmljZS5tb2RlbENoYW5nZWRcclxuICAgICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5fZGVzdHJveSQpKVxyXG4gICAgICAgIC5zdWJzY3JpYmUoKCkgPT4gdGhpcy5wYXJlbnQ/LmluaXRBY3Rpb25zKCkpO1xyXG4gICAgfVxyXG4gICAgdGhpcy5jb250ZW50Q29tcG9uZW50ID0gY29tcDtcclxuICB9XHJcblxyXG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBzZXJ2aWNlOiBTbWFydEZpbHRlckVkaXRvclNlcnZpY2UpIHt9XHJcblxyXG4gIG5nT25DaGFuZ2VzKCk6IHZvaWQge1xyXG4gICAgdGhpcy5zZXJ2aWNlLmNvbmZpZyA9IHsgdXVpZDogdGhpcy51dWlkLCBpZGVudGlmaWVyOiB0aGlzLmlkZW50aWZpZXIgfTtcclxuICAgIHRoaXMuc2VydmljZS5wYXJlbnRTbWFydENvbXBvbmVudCA9IHRoaXMucGFyZW50O1xyXG4gICAgaWYgKHRoaXMudXVpZCkge1xyXG4gICAgICB0aGlzLnNlcnZpY2UubG9hZCgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICB0aGlzLl9kZXN0cm95JC5uZXh0KCk7XHJcbiAgICB0aGlzLl9kZXN0cm95JC5jb21wbGV0ZSgpO1xyXG4gIH1cclxufVxyXG4iLCI8ZGl2IGNsYXNzPVwiZmlsdGVyLXdpZGdldC1jb250YWluZXJcIiAqbmdJZj1cInNlcnZpY2UubW9kZWxcIj5cclxuICA8c21hcnQtZmlsdGVyLWdyb3VwLXBhcmFtcyBbc2VydmljZV09XCJzZXJ2aWNlXCI+PC9zbWFydC1maWx0ZXItZ3JvdXAtcGFyYW1zPlxyXG4gIDxzbWFydC1maWx0ZXItZXhwcmVzc2lvbi1lZGl0b3IgI2VkaXRvciBbc2VydmljZV09XCJzZXJ2aWNlXCI+PC9zbWFydC1maWx0ZXItZXhwcmVzc2lvbi1lZGl0b3I+XHJcbjwvZGl2PlxyXG4iXX0=
@@ -63,7 +63,7 @@ export class SmartfileuploaderComponent {
63
63
  this.files = [validFiles[0]];
64
64
  }
65
65
  if (this.autoUpload && this.errors.length == 0) {
66
- this.uploadFile();
66
+ this.uploadFile(null);
67
67
  }
68
68
  }
69
69
  getFile(event) {
@@ -105,7 +105,10 @@ export class SmartfileuploaderComponent {
105
105
  remove(index) {
106
106
  this.files.splice(index, 1);
107
107
  }
108
- uploadFile() {
108
+ uploadFile(event) {
109
+ if (event && event.event) {
110
+ event.event.stopPropagation();
111
+ }
109
112
  this.uploadCallback(this.files);
110
113
  }
111
114
  formatSize(bytes) {
@@ -165,11 +168,11 @@ export class SmartfileuploaderComponent {
165
168
  };
166
169
  }
167
170
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: SmartfileuploaderComponent, deps: [{ token: i1.MatSnackBar }], target: i0.ɵɵFactoryTarget.Component }); }
168
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.11", type: SmartfileuploaderComponent, selector: "smartfileuploader", inputs: { uploadCallback: "uploadCallback", fileFormats: "fileFormats", maxSizeMb: "maxSizeMb", i18n: "i18n", useIconButton: "useIconButton", isMultiple: "isMultiple", autoUpload: "autoUpload", isDisabled: "isDisabled" }, viewQueries: [{ propertyName: "fileInput", first: true, predicate: ["fileInput"], descendants: true }], ngImport: i0, template: "<div\r\n class=\"container\"\r\n [ngClass]=\"{ disabledWidget: isDisabled }\"\r\n (dragover)=\"onDragOver($event)\"\r\n (dragleave)=\"onDragLeave($event)\"\r\n (drop)=\"onDrop($event)\"\r\n [class.dragover]=\"isDragOver\"\r\n>\r\n <div class=\"fileContainer\" (click)=\"fileInput.click()\">\r\n <input\r\n #fileInput\r\n id=\"addFile\"\r\n placeholder=\"fileInput\"\r\n type=\"file\"\r\n (change)=\"getFile($event)\"\r\n class=\"file\"\r\n accept=\"{{ fileFormats?.join(', ') }}\"\r\n [size]=\"maxSizeMb\"\r\n [multiple]=\"isMultiple\"\r\n [disabled]=\"isDisabled\"\r\n style=\"display: none\"\r\n />\r\n <div class=\"fileUploadContentContainer\">\r\n <div class=\"icon\">\r\n <mat-label *ngIf=\"useIconButton\" class=\"addFileButton\">\r\n <mat-icon color=\"primary\" class=\"addCircle\">add_circle</mat-icon>\r\n </mat-label>\r\n <button *ngIf=\"!useIconButton\" mat-raised-button color=\"primary\" class=\"addFileButton\">\r\n {{ i18n!.addFile }}\r\n </button>\r\n </div>\r\n <div class=\"labels\">\r\n <mat-label *ngIf=\"useIconButton\" class=\"label primary title\">\r\n {{ i18n!.addFile }}\r\n </mat-label>\r\n <mat-label class=\"label secondary\"> {{ i18n!.browseOrDrag }} </mat-label>\r\n <mat-label class=\"subLabel primary\"> {{ i18n!.maxSize }} </mat-label>\r\n <mat-label class=\"subLabel primary\"> {{ i18n!.formats }} </mat-label>\r\n </div>\r\n <div class=\"uploadButton\" *ngIf=\"files.length\">\r\n <ui-action-button\r\n (actionClick)=\"uploadFile()\"\r\n [code]=\"'default-upload'\"\r\n [descriptor]=\"uploadButton\"\r\n >\r\n </ui-action-button>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div *ngIf=\"errors.length\" class=\"errorMessage\">\r\n <smart-icon [icon]=\"'error'\" [color]=\"'warn'\"></smart-icon>\r\n <div class=\"errors\">\r\n <span *ngFor=\"let error of errors\">{{ error }}</span>\r\n </div>\r\n </div>\r\n\r\n <div *ngIf=\"files.length\" class=\"uploadedFilesContainer\">\r\n <div *ngFor=\"let file of files; let i = index\" class=\"uploadedFile\">\r\n <ng-container *ngIf=\"filePreviewUrl(file); else fileIcon\">\r\n <img [src]=\"filePreviewUrl(file)\" [alt]=\"file.name\" width=\"50\" height=\"50\" />\r\n </ng-container>\r\n <ng-template #fileIcon>\r\n <smart-icon [icon]=\"'insert_drive_file'\"></smart-icon>\r\n </ng-template>\r\n\r\n <div class=\"fileData\">\r\n <div class=\"fileDataContainer\">\r\n <span class=\"fileName\">{{ file.name }}</span>\r\n <span class=\"fileSize\">{{ formatSize(file.size) }}</span>\r\n </div>\r\n </div>\r\n\r\n <div class=\"fileActions\">\r\n <smart-icon\r\n class=\"downloadIcon\"\r\n icon=\"download\"\r\n (click)=\"downloadFile(file)\"\r\n [attr.data-testid]=\"'default_download'\"\r\n ></smart-icon>\r\n <smart-icon\r\n class=\"removeIcon\"\r\n icon=\"delete\"\r\n [attr.data-testid]=\"'default_remove'\"\r\n (click)=\"remove(i)\"\r\n ></smart-icon>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n", styles: [":host{--border-color: #a6aabd60;--warninig-color: #be2d2e;--def-border-radius: .5rem}.container{display:flex;flex-direction:column;border:2px dashed var(--border-color);border-radius:var(--def-border-radius)}.fileContainer{cursor:pointer;padding:1rem;display:flex;flex-direction:column}.fileContainer:hover{background-color:rgb(from var(--border-color) r g b / .1)}.disabledWidget ::ng-deep .fileContainer:hover{background-color:unset;cursor:unset}.disabledWidget ::ng-deep *{opacity:.85}.dragover{background-color:rgb(from var(--border-color) r g b / .1)}.fileUploadContentContainer{display:flex;flex-direction:row;gap:1rem}.icon mat-icon{font-size:3rem;width:unset;height:unset}.icon{align-content:center}.labels{flex:1;display:flex;flex-direction:column;justify-content:center;width:fit-content}.uploadButton{align-content:center}.primary{color:var(--primary-color)}.secondary{color:var(--gray)}.label{margin:unset}.subLabel{font-size:smaller}.title{padding-bottom:.3rem}.errorMessage,.uploadedFilesContainer{border-top:2px solid var(--border-color)}.errorMessage{display:flex;flex-direction:row;align-items:center;color:var(--warninig-color);padding:.5rem 1rem;gap:1rem}.errorMessage ::ng-deep mat-icon{color:var(--warninig-color)}.errors{display:flex;flex-direction:column}.uploadedFile{display:flex;flex-direction:row;justify-content:flex-start;align-items:center;padding:1rem;border-bottom:1px solid #e0e0e0;gap:1rem}.uploadedFile:last-child{border-bottom:none}.fileSize{display:flex;flex-direction:row;font-size:smaller}.fileData{flex:1;display:flex;flex-direction:column}.fileDataContainer{display:flex;flex-direction:column;justify-content:flex-end;width:fit-content}.removeIcon ::ng-deep mat-icon{color:var(--warninig-color)}smart-icon ::ng-deep mat-icon{font-size:3rem;width:unset;height:unset}.fileActions{display:flex;flex-direction:row;justify-content:flex-end;gap:.5rem}.fileActions ::ng-deep .pi{width:unset!important}.removeIcon ::ng-deep i,.removeIcon ::ng-deep mat-icon{color:var(--warninig-color)}.removeIcon ::ng-deep .pi,.downloadIcon ::ng-deep .pi{font-size:1.5rem!important}.removeIcon ::ng-deep mat-icon,.downloadIcon ::ng-deep mat-icon{font-size:2rem}.removeIcon:hover,.downloadIcon:hover{cursor:pointer}smart-icon{display:flex;align-items:center}\n"], dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "component", type: i4.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i5.SmartIconComponent, selector: "smart-icon", inputs: ["icon", "color", "imageResource"] }, { kind: "directive", type: i6.MatLabel, selector: "mat-label" }, { kind: "component", type: i7.UiActionButtonComponent, selector: "ui-action-button", inputs: ["disabled", "descriptor", "code", "identifier", "viewActivated", "addedCssClass", "addBasicClasses", "iconPlaceholder"], outputs: ["actionClick", "actionDoubleClick"] }] }); }
171
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.11", type: SmartfileuploaderComponent, selector: "smartfileuploader", inputs: { uploadCallback: "uploadCallback", fileFormats: "fileFormats", maxSizeMb: "maxSizeMb", i18n: "i18n", useIconButton: "useIconButton", isMultiple: "isMultiple", autoUpload: "autoUpload", isDisabled: "isDisabled" }, viewQueries: [{ propertyName: "fileInput", first: true, predicate: ["fileInput"], descendants: true }], ngImport: i0, template: "<div\r\n class=\"container\"\r\n [ngClass]=\"{ disabledWidget: isDisabled }\"\r\n (dragover)=\"onDragOver($event)\"\r\n (dragleave)=\"onDragLeave($event)\"\r\n (drop)=\"onDrop($event)\"\r\n [class.dragover]=\"isDragOver\"\r\n>\r\n <div class=\"fileContainer\" (click)=\"fileInput.click()\">\r\n <input\r\n #fileInput\r\n id=\"addFile\"\r\n placeholder=\"fileInput\"\r\n type=\"file\"\r\n (change)=\"getFile($event)\"\r\n class=\"file\"\r\n accept=\"{{ fileFormats?.join(', ') }}\"\r\n [size]=\"maxSizeMb\"\r\n [multiple]=\"isMultiple\"\r\n [disabled]=\"isDisabled\"\r\n style=\"display: none\"\r\n />\r\n <div class=\"fileUploadContentContainer\">\r\n <div class=\"icon\">\r\n <mat-label *ngIf=\"useIconButton\" class=\"addFileButton\">\r\n <mat-icon color=\"primary\" class=\"addCircle\">add_circle</mat-icon>\r\n </mat-label>\r\n <button *ngIf=\"!useIconButton\" mat-raised-button color=\"primary\" class=\"addFileButton\">\r\n {{ i18n!.addFile }}\r\n </button>\r\n </div>\r\n <div class=\"labels\">\r\n <mat-label *ngIf=\"useIconButton\" class=\"label primary title\">\r\n {{ i18n!.addFile }}\r\n </mat-label>\r\n <mat-label class=\"label secondary\"> {{ i18n!.browseOrDrag }} </mat-label>\r\n <mat-label class=\"subLabel primary\"> {{ i18n!.maxSize }} </mat-label>\r\n <mat-label class=\"subLabel primary\"> {{ i18n!.formats }} </mat-label>\r\n </div>\r\n <div class=\"uploadButton\" *ngIf=\"files.length\">\r\n <ui-action-button\r\n (actionClick)=\"uploadFile($event)\"\r\n [code]=\"'default-upload'\"\r\n [descriptor]=\"uploadButton\"\r\n >\r\n </ui-action-button>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div *ngIf=\"errors.length\" class=\"errorMessage\">\r\n <smart-icon [icon]=\"'error'\" [color]=\"'warn'\"></smart-icon>\r\n <div class=\"errors\">\r\n <span *ngFor=\"let error of errors\">{{ error }}</span>\r\n </div>\r\n </div>\r\n\r\n <div *ngIf=\"files.length\" class=\"uploadedFilesContainer\">\r\n <div *ngFor=\"let file of files; let i = index\" class=\"uploadedFile\">\r\n <ng-container *ngIf=\"filePreviewUrl(file); else fileIcon\">\r\n <img [src]=\"filePreviewUrl(file)\" [alt]=\"file.name\" width=\"50\" height=\"50\" />\r\n </ng-container>\r\n <ng-template #fileIcon>\r\n <smart-icon [icon]=\"'insert_drive_file'\"></smart-icon>\r\n </ng-template>\r\n\r\n <div class=\"fileData\">\r\n <div class=\"fileDataContainer\">\r\n <span class=\"fileName\">{{ file.name }}</span>\r\n <span class=\"fileSize\">{{ formatSize(file.size) }}</span>\r\n </div>\r\n </div>\r\n\r\n <div class=\"fileActions\">\r\n <smart-icon\r\n class=\"downloadIcon\"\r\n icon=\"download\"\r\n (click)=\"downloadFile(file)\"\r\n [attr.data-testid]=\"'default_download'\"\r\n ></smart-icon>\r\n <smart-icon\r\n class=\"removeIcon\"\r\n icon=\"delete\"\r\n [attr.data-testid]=\"'default_remove'\"\r\n (click)=\"remove(i)\"\r\n ></smart-icon>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n", styles: [":host{--border-color: #a6aabd60;--warninig-color: #be2d2e;--def-border-radius: .5rem}.container{display:flex;flex-direction:column;border:2px dashed var(--border-color);border-radius:var(--def-border-radius)}.fileContainer{cursor:pointer;padding:1rem;display:flex;flex-direction:column}.fileContainer:hover{background-color:rgb(from var(--border-color) r g b / .1)}.disabledWidget ::ng-deep .fileContainer:hover{background-color:unset;cursor:unset}.disabledWidget ::ng-deep *{opacity:.85}.dragover{background-color:rgb(from var(--border-color) r g b / .1)}.fileUploadContentContainer{display:flex;flex-direction:row;gap:1rem}.icon mat-icon{font-size:3rem;width:unset;height:unset}.icon{align-content:center}.labels{flex:1;display:flex;flex-direction:column;justify-content:center;width:fit-content}.uploadButton{align-content:center}.primary{color:var(--primary-color)}.secondary{color:var(--gray)}.label{margin:unset}.subLabel{font-size:smaller}.title{padding-bottom:.3rem}.errorMessage,.uploadedFilesContainer{border-top:2px solid var(--border-color)}.errorMessage{display:flex;flex-direction:row;align-items:center;color:var(--warninig-color);padding:.5rem 1rem;gap:1rem}.errorMessage ::ng-deep mat-icon{color:var(--warninig-color)}.errors{display:flex;flex-direction:column}.uploadedFile{display:flex;flex-direction:row;justify-content:flex-start;align-items:center;padding:1rem;border-bottom:1px solid #e0e0e0;gap:1rem}.uploadedFile:last-child{border-bottom:none}.fileSize{display:flex;flex-direction:row;font-size:smaller}.fileData{flex:1;display:flex;flex-direction:column}.fileDataContainer{display:flex;flex-direction:column;justify-content:flex-end;width:fit-content}.removeIcon ::ng-deep mat-icon{color:var(--warninig-color)}smart-icon ::ng-deep mat-icon{font-size:3rem;width:unset;height:unset}.fileActions{display:flex;flex-direction:row;justify-content:flex-end;gap:.5rem}.fileActions ::ng-deep .pi{width:unset!important}.removeIcon ::ng-deep i,.removeIcon ::ng-deep mat-icon{color:var(--warninig-color)}.removeIcon ::ng-deep .pi,.downloadIcon ::ng-deep .pi{font-size:1.5rem!important}.removeIcon ::ng-deep mat-icon,.downloadIcon ::ng-deep mat-icon{font-size:2rem}.removeIcon:hover,.downloadIcon:hover{cursor:pointer}smart-icon{display:flex;align-items:center}\n"], dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "component", type: i4.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i5.SmartIconComponent, selector: "smart-icon", inputs: ["icon", "color", "imageResource"] }, { kind: "directive", type: i6.MatLabel, selector: "mat-label" }, { kind: "component", type: i7.UiActionButtonComponent, selector: "ui-action-button", inputs: ["disabled", "descriptor", "code", "identifier", "viewActivated", "addedCssClass", "addBasicClasses", "iconPlaceholder"], outputs: ["actionClick", "actionDoubleClick"] }] }); }
169
172
  }
170
173
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: SmartfileuploaderComponent, decorators: [{
171
174
  type: Component,
172
- args: [{ selector: 'smartfileuploader', template: "<div\r\n class=\"container\"\r\n [ngClass]=\"{ disabledWidget: isDisabled }\"\r\n (dragover)=\"onDragOver($event)\"\r\n (dragleave)=\"onDragLeave($event)\"\r\n (drop)=\"onDrop($event)\"\r\n [class.dragover]=\"isDragOver\"\r\n>\r\n <div class=\"fileContainer\" (click)=\"fileInput.click()\">\r\n <input\r\n #fileInput\r\n id=\"addFile\"\r\n placeholder=\"fileInput\"\r\n type=\"file\"\r\n (change)=\"getFile($event)\"\r\n class=\"file\"\r\n accept=\"{{ fileFormats?.join(', ') }}\"\r\n [size]=\"maxSizeMb\"\r\n [multiple]=\"isMultiple\"\r\n [disabled]=\"isDisabled\"\r\n style=\"display: none\"\r\n />\r\n <div class=\"fileUploadContentContainer\">\r\n <div class=\"icon\">\r\n <mat-label *ngIf=\"useIconButton\" class=\"addFileButton\">\r\n <mat-icon color=\"primary\" class=\"addCircle\">add_circle</mat-icon>\r\n </mat-label>\r\n <button *ngIf=\"!useIconButton\" mat-raised-button color=\"primary\" class=\"addFileButton\">\r\n {{ i18n!.addFile }}\r\n </button>\r\n </div>\r\n <div class=\"labels\">\r\n <mat-label *ngIf=\"useIconButton\" class=\"label primary title\">\r\n {{ i18n!.addFile }}\r\n </mat-label>\r\n <mat-label class=\"label secondary\"> {{ i18n!.browseOrDrag }} </mat-label>\r\n <mat-label class=\"subLabel primary\"> {{ i18n!.maxSize }} </mat-label>\r\n <mat-label class=\"subLabel primary\"> {{ i18n!.formats }} </mat-label>\r\n </div>\r\n <div class=\"uploadButton\" *ngIf=\"files.length\">\r\n <ui-action-button\r\n (actionClick)=\"uploadFile()\"\r\n [code]=\"'default-upload'\"\r\n [descriptor]=\"uploadButton\"\r\n >\r\n </ui-action-button>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div *ngIf=\"errors.length\" class=\"errorMessage\">\r\n <smart-icon [icon]=\"'error'\" [color]=\"'warn'\"></smart-icon>\r\n <div class=\"errors\">\r\n <span *ngFor=\"let error of errors\">{{ error }}</span>\r\n </div>\r\n </div>\r\n\r\n <div *ngIf=\"files.length\" class=\"uploadedFilesContainer\">\r\n <div *ngFor=\"let file of files; let i = index\" class=\"uploadedFile\">\r\n <ng-container *ngIf=\"filePreviewUrl(file); else fileIcon\">\r\n <img [src]=\"filePreviewUrl(file)\" [alt]=\"file.name\" width=\"50\" height=\"50\" />\r\n </ng-container>\r\n <ng-template #fileIcon>\r\n <smart-icon [icon]=\"'insert_drive_file'\"></smart-icon>\r\n </ng-template>\r\n\r\n <div class=\"fileData\">\r\n <div class=\"fileDataContainer\">\r\n <span class=\"fileName\">{{ file.name }}</span>\r\n <span class=\"fileSize\">{{ formatSize(file.size) }}</span>\r\n </div>\r\n </div>\r\n\r\n <div class=\"fileActions\">\r\n <smart-icon\r\n class=\"downloadIcon\"\r\n icon=\"download\"\r\n (click)=\"downloadFile(file)\"\r\n [attr.data-testid]=\"'default_download'\"\r\n ></smart-icon>\r\n <smart-icon\r\n class=\"removeIcon\"\r\n icon=\"delete\"\r\n [attr.data-testid]=\"'default_remove'\"\r\n (click)=\"remove(i)\"\r\n ></smart-icon>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n", styles: [":host{--border-color: #a6aabd60;--warninig-color: #be2d2e;--def-border-radius: .5rem}.container{display:flex;flex-direction:column;border:2px dashed var(--border-color);border-radius:var(--def-border-radius)}.fileContainer{cursor:pointer;padding:1rem;display:flex;flex-direction:column}.fileContainer:hover{background-color:rgb(from var(--border-color) r g b / .1)}.disabledWidget ::ng-deep .fileContainer:hover{background-color:unset;cursor:unset}.disabledWidget ::ng-deep *{opacity:.85}.dragover{background-color:rgb(from var(--border-color) r g b / .1)}.fileUploadContentContainer{display:flex;flex-direction:row;gap:1rem}.icon mat-icon{font-size:3rem;width:unset;height:unset}.icon{align-content:center}.labels{flex:1;display:flex;flex-direction:column;justify-content:center;width:fit-content}.uploadButton{align-content:center}.primary{color:var(--primary-color)}.secondary{color:var(--gray)}.label{margin:unset}.subLabel{font-size:smaller}.title{padding-bottom:.3rem}.errorMessage,.uploadedFilesContainer{border-top:2px solid var(--border-color)}.errorMessage{display:flex;flex-direction:row;align-items:center;color:var(--warninig-color);padding:.5rem 1rem;gap:1rem}.errorMessage ::ng-deep mat-icon{color:var(--warninig-color)}.errors{display:flex;flex-direction:column}.uploadedFile{display:flex;flex-direction:row;justify-content:flex-start;align-items:center;padding:1rem;border-bottom:1px solid #e0e0e0;gap:1rem}.uploadedFile:last-child{border-bottom:none}.fileSize{display:flex;flex-direction:row;font-size:smaller}.fileData{flex:1;display:flex;flex-direction:column}.fileDataContainer{display:flex;flex-direction:column;justify-content:flex-end;width:fit-content}.removeIcon ::ng-deep mat-icon{color:var(--warninig-color)}smart-icon ::ng-deep mat-icon{font-size:3rem;width:unset;height:unset}.fileActions{display:flex;flex-direction:row;justify-content:flex-end;gap:.5rem}.fileActions ::ng-deep .pi{width:unset!important}.removeIcon ::ng-deep i,.removeIcon ::ng-deep mat-icon{color:var(--warninig-color)}.removeIcon ::ng-deep .pi,.downloadIcon ::ng-deep .pi{font-size:1.5rem!important}.removeIcon ::ng-deep mat-icon,.downloadIcon ::ng-deep mat-icon{font-size:2rem}.removeIcon:hover,.downloadIcon:hover{cursor:pointer}smart-icon{display:flex;align-items:center}\n"] }]
175
+ args: [{ selector: 'smartfileuploader', template: "<div\r\n class=\"container\"\r\n [ngClass]=\"{ disabledWidget: isDisabled }\"\r\n (dragover)=\"onDragOver($event)\"\r\n (dragleave)=\"onDragLeave($event)\"\r\n (drop)=\"onDrop($event)\"\r\n [class.dragover]=\"isDragOver\"\r\n>\r\n <div class=\"fileContainer\" (click)=\"fileInput.click()\">\r\n <input\r\n #fileInput\r\n id=\"addFile\"\r\n placeholder=\"fileInput\"\r\n type=\"file\"\r\n (change)=\"getFile($event)\"\r\n class=\"file\"\r\n accept=\"{{ fileFormats?.join(', ') }}\"\r\n [size]=\"maxSizeMb\"\r\n [multiple]=\"isMultiple\"\r\n [disabled]=\"isDisabled\"\r\n style=\"display: none\"\r\n />\r\n <div class=\"fileUploadContentContainer\">\r\n <div class=\"icon\">\r\n <mat-label *ngIf=\"useIconButton\" class=\"addFileButton\">\r\n <mat-icon color=\"primary\" class=\"addCircle\">add_circle</mat-icon>\r\n </mat-label>\r\n <button *ngIf=\"!useIconButton\" mat-raised-button color=\"primary\" class=\"addFileButton\">\r\n {{ i18n!.addFile }}\r\n </button>\r\n </div>\r\n <div class=\"labels\">\r\n <mat-label *ngIf=\"useIconButton\" class=\"label primary title\">\r\n {{ i18n!.addFile }}\r\n </mat-label>\r\n <mat-label class=\"label secondary\"> {{ i18n!.browseOrDrag }} </mat-label>\r\n <mat-label class=\"subLabel primary\"> {{ i18n!.maxSize }} </mat-label>\r\n <mat-label class=\"subLabel primary\"> {{ i18n!.formats }} </mat-label>\r\n </div>\r\n <div class=\"uploadButton\" *ngIf=\"files.length\">\r\n <ui-action-button\r\n (actionClick)=\"uploadFile($event)\"\r\n [code]=\"'default-upload'\"\r\n [descriptor]=\"uploadButton\"\r\n >\r\n </ui-action-button>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div *ngIf=\"errors.length\" class=\"errorMessage\">\r\n <smart-icon [icon]=\"'error'\" [color]=\"'warn'\"></smart-icon>\r\n <div class=\"errors\">\r\n <span *ngFor=\"let error of errors\">{{ error }}</span>\r\n </div>\r\n </div>\r\n\r\n <div *ngIf=\"files.length\" class=\"uploadedFilesContainer\">\r\n <div *ngFor=\"let file of files; let i = index\" class=\"uploadedFile\">\r\n <ng-container *ngIf=\"filePreviewUrl(file); else fileIcon\">\r\n <img [src]=\"filePreviewUrl(file)\" [alt]=\"file.name\" width=\"50\" height=\"50\" />\r\n </ng-container>\r\n <ng-template #fileIcon>\r\n <smart-icon [icon]=\"'insert_drive_file'\"></smart-icon>\r\n </ng-template>\r\n\r\n <div class=\"fileData\">\r\n <div class=\"fileDataContainer\">\r\n <span class=\"fileName\">{{ file.name }}</span>\r\n <span class=\"fileSize\">{{ formatSize(file.size) }}</span>\r\n </div>\r\n </div>\r\n\r\n <div class=\"fileActions\">\r\n <smart-icon\r\n class=\"downloadIcon\"\r\n icon=\"download\"\r\n (click)=\"downloadFile(file)\"\r\n [attr.data-testid]=\"'default_download'\"\r\n ></smart-icon>\r\n <smart-icon\r\n class=\"removeIcon\"\r\n icon=\"delete\"\r\n [attr.data-testid]=\"'default_remove'\"\r\n (click)=\"remove(i)\"\r\n ></smart-icon>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n", styles: [":host{--border-color: #a6aabd60;--warninig-color: #be2d2e;--def-border-radius: .5rem}.container{display:flex;flex-direction:column;border:2px dashed var(--border-color);border-radius:var(--def-border-radius)}.fileContainer{cursor:pointer;padding:1rem;display:flex;flex-direction:column}.fileContainer:hover{background-color:rgb(from var(--border-color) r g b / .1)}.disabledWidget ::ng-deep .fileContainer:hover{background-color:unset;cursor:unset}.disabledWidget ::ng-deep *{opacity:.85}.dragover{background-color:rgb(from var(--border-color) r g b / .1)}.fileUploadContentContainer{display:flex;flex-direction:row;gap:1rem}.icon mat-icon{font-size:3rem;width:unset;height:unset}.icon{align-content:center}.labels{flex:1;display:flex;flex-direction:column;justify-content:center;width:fit-content}.uploadButton{align-content:center}.primary{color:var(--primary-color)}.secondary{color:var(--gray)}.label{margin:unset}.subLabel{font-size:smaller}.title{padding-bottom:.3rem}.errorMessage,.uploadedFilesContainer{border-top:2px solid var(--border-color)}.errorMessage{display:flex;flex-direction:row;align-items:center;color:var(--warninig-color);padding:.5rem 1rem;gap:1rem}.errorMessage ::ng-deep mat-icon{color:var(--warninig-color)}.errors{display:flex;flex-direction:column}.uploadedFile{display:flex;flex-direction:row;justify-content:flex-start;align-items:center;padding:1rem;border-bottom:1px solid #e0e0e0;gap:1rem}.uploadedFile:last-child{border-bottom:none}.fileSize{display:flex;flex-direction:row;font-size:smaller}.fileData{flex:1;display:flex;flex-direction:column}.fileDataContainer{display:flex;flex-direction:column;justify-content:flex-end;width:fit-content}.removeIcon ::ng-deep mat-icon{color:var(--warninig-color)}smart-icon ::ng-deep mat-icon{font-size:3rem;width:unset;height:unset}.fileActions{display:flex;flex-direction:row;justify-content:flex-end;gap:.5rem}.fileActions ::ng-deep .pi{width:unset!important}.removeIcon ::ng-deep i,.removeIcon ::ng-deep mat-icon{color:var(--warninig-color)}.removeIcon ::ng-deep .pi,.downloadIcon ::ng-deep .pi{font-size:1.5rem!important}.removeIcon ::ng-deep mat-icon,.downloadIcon ::ng-deep mat-icon{font-size:2rem}.removeIcon:hover,.downloadIcon:hover{cursor:pointer}smart-icon{display:flex;align-items:center}\n"] }]
173
176
  }], ctorParameters: () => [{ type: i1.MatSnackBar }], propDecorators: { fileInput: [{
174
177
  type: ViewChild,
175
178
  args: ['fileInput']
@@ -190,4 +193,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImpo
190
193
  }], isDisabled: [{
191
194
  type: Input
192
195
  }] } });
193
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnRmaWxldXBsb2FkZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc21hcnQtbmctY2xpZW50L3NyYy9saWIvc21hcnQtZm9ybS9zbWFydGZpbGV1cGxvYWRlci9zbWFydGZpbGV1cGxvYWRlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zbWFydC1uZy1jbGllbnQvc3JjL2xpYi9zbWFydC1mb3JtL3NtYXJ0ZmlsZXVwbG9hZGVyL3NtYXJ0ZmlsZXVwbG9hZGVyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQWMsS0FBSyxFQUFVLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUdoRixPQUFPLEVBQ0wsWUFBWSxFQUNaLGtCQUFrQixHQUVuQixNQUFNLHFDQUFxQyxDQUFDOzs7Ozs7Ozs7QUFPN0MsTUFBTSxPQUFPLDBCQUEwQjtJQWdCckMsWUFBb0IsU0FBc0I7UUFBdEIsY0FBUyxHQUFULFNBQVMsQ0FBYTtRQWIxQyxVQUFLLEdBQVcsRUFBRSxDQUFDO1FBRVYsZ0JBQVcsR0FBYyxFQUFFLENBQUM7UUFDNUIsY0FBUyxHQUFZLEVBQUUsQ0FBQztRQUV4QixrQkFBYSxHQUFZLElBQUksQ0FBQztRQUM5QixlQUFVLEdBQWEsSUFBSSxDQUFDO1FBQzVCLGVBQVUsR0FBYSxLQUFLLENBQUM7UUFDN0IsZUFBVSxHQUFhLEtBQUssQ0FBQztRQUV0QyxlQUFVLEdBQUcsS0FBSyxDQUFDO1FBQ25CLFdBQU0sR0FBYSxFQUFFLENBQUM7UUFvSHRCLGdCQUFXLEdBQUcsSUFBSSxHQUFHLEVBQWdCLENBQUM7SUFsSE8sQ0FBQztJQUU5QyxRQUFRO1FBQ04sTUFBTSxXQUFXLEdBQUc7WUFDbEIsT0FBTyxFQUFFLHVCQUF1QjtZQUNoQyxZQUFZLEVBQUUsdUJBQXVCO1lBQ3JDLE9BQU8sRUFB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UUFDMUIsQ0FBQztJQUNILENBQUM7SUFFRCxNQUFNLENBQUMsS0FBYTtRQUNsQixJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDOUIsQ0FBQztJQUVELFVBQVU7UUFDUixJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNsQyxDQUFDO0lBRUQsVUFBVSxDQUFDLEtBQWE7UUFDdEIsSUFBSSxLQUFLLEtBQUssQ0FBQztZQUFFLE9BQU8sS0FBSyxDQUFDO1FBQzlCLE1BQU0sQ0FBQyxHQUFHLElBQUksQ0FBQztRQUNmLE1BQU0sS0FBSyxHQUFHLENBQUMsR0FBRyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQzVDLE1BQU0sQ0FBQyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDcEQsTUFBTSxLQUFLLEdBQUcsVUFBVSxDQUFDLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDOUQsT0FBTyxHQUFHLEtBQUssSUFBSSxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztJQUNoQyxDQUFDO0lBSUQsY0FBYyxDQUFDLElBQVU7UUFDdkIsSUFBSSxDQUFDLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUM7WUFDN0MsT0FBTyxJQUFJLENBQUM7UUFDZCxDQUFDO1FBRUQsSUFBSSxJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDO1lBQy9CLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFFLENBQUM7UUFDckMsQ0FBQztRQUVELE1BQU0sR0FBRyxHQUFHLEdBQUcsQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDdEMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBQ2hDLE9BQU8sR0FBRyxDQUFDO0lBQ2IsQ0FBQztJQUVELFlBQVksQ0FBQyxJQUFVO1FBQ3JCLE1BQU0sR0FBRyxHQUFHLEdBQUcsQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDdEMsTUFBTSxDQUFDLEdBQUcsUUFBUSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUN0QyxDQUFDLENBQUMsSUFBSSxHQUFHLEdBQUcsQ0FBQztRQUNiLENBQUMsQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQztRQUN2QixDQUFDLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDVixHQUFHLENBQUMsZUFBZSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQzNCLENBQUM7SUFFRCxJQUFJLFlBQVk7UUFDZCxPQUFPO1lBQ0wsS0FBSyxFQUFFLElBQUksQ0FBQyxJQUFLLENBQUMsTUFBTSxJQUFJLEVBQUU7WUFDOUIsS0FBSyxFQUFFLFNBQVM7WUFDaEIsSUFBSSxFQUFFLGtCQUFrQixDQUFDLE1BQU07WUFDL0IsSUFBSSxFQUFFLFFBQVE7WUFDZCxZQUFZLEVBQUUsWUFBWSxDQUFDLEdBQUc7U0FDL0IsQ0FBQztJQUNKLENBQUM7SUFFRCxJQUFJLGNBQWM7UUFDaEIsT0FBTztZQUNMLEtBQUssRUFBRSxFQUFFO1lBQ1QsS0FBSyxFQUFFLFNBQVM7WUFDaEIsSUFBSSxFQUFFLGtCQUFrQixDQUFDLElBQUk7WUFDN0IsSUFBSSxFQUFFLFVBQVU7WUFDaEIsWUFBWSxFQUFFLFlBQVksQ0FBQyxHQUFHO1NBQy9CLENBQUM7SUFDSixDQUFDO0lBRUQsSUFBSSxZQUFZO1FBQ2QsT0FBTztZQUNMLEtBQUssRUFBRSxFQUFFO1lBQ1QsS0FBSyxFQUFFLFNBQVM7WUFDaEIsSUFBSSxFQUFFLGtCQUFrQixDQUFDLElBQUk7WUFDN0IsSUFBSSxFQUFFLE9BQU87WUFDYixTQUFTLEVBQUUsS0FBSztZQUNoQixZQUFZLEVBQUUsWUFBWSxDQUFDLEdBQUc7U0FDL0IsQ0FBQztJQUNKLENBQUM7K0dBeExVLDBCQUEwQjttR0FBMUIsMEJBQTBCLCtYQ2R2QywrdkdBMEZBOzs0RkQ1RWEsMEJBQTBCO2tCQUx0QyxTQUFTOytCQUNFLG1CQUFtQjtnRkFLTCxTQUFTO3NCQUFoQyxTQUFTO3VCQUFDLFdBQVc7Z0JBR2IsY0FBYztzQkFBdEIsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBQ0csSUFBSTtzQkFBWixLQUFLO2dCQUNHLGFBQWE7c0JBQXJCLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEVsZW1lbnRSZWYsIElucHV0LCBPbkluaXQsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBNYXRTbmFja0JhciB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3NuYWNrLWJhcic7XHJcbmltcG9ydCB7IFNtYXJ0RmlsZVVwbG9hZGVySTE4biB9IGZyb20gJy4vc21hcnRmaWxldXBsb2FkZXIubW9kZWwnO1xyXG5pbXBvcnQge1xyXG4gIEljb25Qb3NpdGlvbixcclxuICBVaUFjdGlvbkJ1dHRvblR5cGUsXHJcbiAgVWlBY3Rpb25EZXNjcmlwdG9yLFxyXG59IGZyb20gJy4uLy4uL3ZpZXctY29udGV4dC9hcGkvbW9kZWwvbW9kZWxzJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnc21hcnRmaWxldXBsb2FkZXInLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9zbWFydGZpbGV1cGxvYWRlci5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vc21hcnRmaWxldXBsb2FkZXIuY29tcG9uZW50LmNzcyddLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgU21hcnRmaWxldXBsb2FkZXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xyXG4gIEBWaWV3Q2hpbGQoJ2ZpbGVJbnB1dCcpIGZpbGVJbnB1dCE6IEVsZW1lbnRSZWY8SFRNTElucHV0RWxlbWVudD47XHJcblxyXG4gIGZpbGVzOiBGaWxlW10gPSBbXTtcclxuICBASW5wdXQoKSB1cGxvYWRDYWxsYmFjayE6IChmaWxlczogRmlsZVtdKSA9PiB2b2lkO1xyXG4gIEBJbnB1dCgpIGZpbGVGb3JtYXRzPzogc3RyaW5nW10gPSBbXTtcclxuICBASW5wdXQoKSBtYXhTaXplTWI/OiBudW1iZXIgPSAyNTtcclxuICBASW5wdXQoKSBpMThuPzogU21hcnRGaWxlVXBsb2FkZXJJMThuO1xyXG4gIEBJbnB1dCgpIHVzZUljb25CdXR0b246IGJvb2xlYW4gPSB0cnVlO1xyXG4gIEBJbnB1dCgpIGlzTXVsdGlwbGU/OiBib29sZWFuID0gdHJ1ZTtcclxuICBASW5wdXQoKSBhdXRvVXBsb2FkPzogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIGlzRGlzYWJsZWQ/OiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIGlzRHJhZ092ZXIgPSBmYWxzZTtcclxuICBlcnJvcnM6IHN0cmluZ1tdID0gW107XHJcblxyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgX3NuYWNrQmFyOiBNYXRTbmFja0Jhcikge31cclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICBjb25zdCBkZWZhdWx0STE4biA9IHtcclxuICAgICAgYWRkRmlsZTogJ2Rva3VtZW50dW0gaG96esOhYWTDoXNhJyxcclxuICAgICAgYnJvd3NlT3JEcmFnOiAndGFsbMOzesOhcyB2YWd5IGJlaMO6esOhcycsXHJcbiAgICAgIG1heFNpemU6IGBtYXguICR7dGhpcy5tYXhTaXplTWJ9IE1CYCxcclxuICAgICAgZm9ybWF0czogJ1BERiwgZG9jeCwgeGxzIGZvcm3DoXR1bScsXHJcbiAgICAgIHVwbG9hZDogJ0ZlbHTDtmx0w6lzJyxcclxuICAgIH07XHJcblxyXG4gICAgdGhpcy5pMThuID0geyAuLi5kZWZhdWx0STE4biwgLi4udGhpcy5pMThuIH07XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHByb2Nlc3NGaWxlcyhmaWxlTGlzdDogRmlsZVtdKTogdm9pZCB7XHJcbiAgICB0aGlzLmVycm9ycyA9IFtdO1xyXG4gICAgdmFyIHZhbGlkRmlsZXM6IEZpbGVbXSA9IFtdO1xyXG5cclxuICAgIGZpbGVMaXN0LmZvckVhY2goKGZpbGU6IEZpbGUpID0+IHtcclxuICAgICAgbGV0IGhhc0Vycm9yID0gZmFsc2U7XHJcblxyXG4gICAgICBpZiAodGhpcy5maWxlRm9ybWF0cz8ubGVuZ3RoKSB7XHJcbiAgICAgICAgdmFyIGV4dCA9IGZpbGUubmFtZS5zcGxpdCgnLicpLnBvcCgpPy50b0xvd2VyQ2FzZSgpO1xyXG5cclxuICAgICAgICB2YXIgdHJpbW1lZEZvcm1hdHMgPSAodGhpcy5maWxlRm9ybWF0cyB8fCBbXSlcclxuICAgICAgICAgIC5mbGF0TWFwKChmKSA9PiBmLnNwbGl0KCcsJykpXHJcbiAgICAgICAgICAubWFwKChmKSA9PiBmLnJlcGxhY2UoJy4nLCAnJykudHJpbSgpLnRvTG93ZXJDYXNlKCkpO1xyXG4gICAgICAgIHZhciBpc0FsbG93ZWQgPSB0cmltbWVkRm9ybWF0cy5pbmNsdWRlcyhleHQhKTtcclxuXHJcbiAgICAgICAgaWYgKCFpc0FsbG93ZWQpIHtcclxuICAgICAgICAgIHRoaXMuZXJyb3JzLnB1c2goYFwiJHtmaWxlLm5hbWV9XCIgLSBuZW0gdMOhbW9nYXRvdHQgZm9ybcOhdHVtYCk7XHJcbiAgICAgICAgICBoYXNFcnJvciA9IHRydWU7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcblxyXG4gICAgICBpZiAoZmlsZS5zaXplID4gdGhpcy5tYXhTaXplTWIhICogMTAyNCAqIDEwMjQpIHtcclxuICAgICAgICB0aGlzLmVycm9ycy5wdXNoKGBcIiR7ZmlsZS5uYW1lfVwiIC0gdMO6bCBuYWd5IGbDoWpsIChtYXggJHt0aGlzLm1heFNpemVNYn0gTUIpYCk7XHJcbiAgICAgICAgaGFzRXJyb3IgPSB0cnVlO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBpZiAoIWhhc0Vycm9yKSB7XHJcbiAgICAgICAgdmFsaWRGaWxlcy5wdXNoKGZpbGUpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuXHJcbiAgICBpZiAodGhpcy5pc011bHRpcGxlKSB7XHJcbiAgICAgIHRoaXMuZmlsZXMgPSBbLi4udGhpcy5maWxlcywgLi4udmFsaWRGaWxlc107XHJcbiAgICB9IGVsc2UgaWYgKHZhbGlkRmlsZXMubGVuZ3RoKSB7XHJcbiAgICAgIHRoaXMuZmlsZXMgPSBbdmFsaWRGaWxlc1swXV07XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5hdXRvVXBsb2FkICYmIHRoaXMuZXJyb3JzLmxlbmd0aCA9PSAwKSB7XHJcbiAgICAgIHRoaXMudXBsb2FkRmlsZSgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZ2V0RmlsZShldmVudDogYW55KTogdm9pZCB7XHJcbiAgICBpZiAoZXZlbnQudGFyZ2V0LmZpbGVzICYmIGV2ZW50LnRhcmdldC5maWxlcy5sZW5ndGgpIHtcclxuICAgICAgdmFyIGZpbGVMaXN0ID0gQXJyYXkuZnJvbShldmVudC50YXJnZXQuZmlsZXMpIGFzIEZpbGVbXTtcclxuICAgICAgdGhpcy5wcm9jZXNzRmlsZXMoZmlsZUxpc3QpO1xyXG4gICAgICB0aGlzLmZpbGVJbnB1dC5uYXRpdmVFbGVtZW50LnZhbHVlID0gJyc7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBvbkRyb3AoZXZlbnQ6IERyYWdFdmVudCk6IHZvaWQge1xyXG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuICAgIHRoaXMuaXNEcmFnT3ZlciA9IGZhbHNlO1xyXG5cclxuICAgIGlmICghZXZlbnQuZGF0YVRyYW5zZmVyPy5maWxlcykgcmV0dXJuO1xyXG4gICAgY29uc3QgZmlsZUxpc3QgPSBBcnJheS5mcm9tKGV2ZW50LmRhdGFUcmFuc2Zlci5maWxlcyk7XHJcbiAgICB0aGlzLnByb2Nlc3NGaWxlcyhmaWxlTGlzdCk7XHJcbiAgfVxyXG5cclxuICBvbkRyYWdPdmVyKGV2ZW50OiBEcmFnRXZlbnQpOiB2b2lkIHtcclxuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICB0aGlzLmlzRHJhZ092ZXIgPSB0cnVlO1xyXG4gIH1cclxuXHJcbiAgb25EcmFnTGVhdmUoZXZlbnQ6IERyYWdFdmVudCk6IHZvaWQge1xyXG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuXHJcbiAgICBjb25zdCByZWxhdGVkID0gZXZlbnQucmVsYXRlZFRhcmdldCBhcyBIVE1MRWxlbWVudCB8IG51bGw7XHJcbiAgICBsZXQgc3RvcERyYWcgPSBmYWxzZTtcclxuXHJcbiAgICBpZiAoIXJlbGF0ZWQpIHtcclxuICAgICAgc3RvcERyYWcgPSB0cnVlO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgY29uc3QgcGFyZW50RHJvcCA9IHJlbGF0ZWQuY2xvc2VzdCgnLmNvbnRhaW5lcicpO1xyXG4gICAgICBpZiAocmVsYXRlZCAhPT0gZXZlbnQuY3VycmVudFRhcmdldCAmJiAhcGFyZW50RHJvcCkge1xyXG4gICAgICAgIHN0b3BEcmFnID0gdHJ1ZTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGlmIChzdG9wRHJhZykge1xyXG4gICAgICB0aGlzLmlzRHJhZ092ZXIgPSBmYWxzZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHJlbW92ZShpbmRleDogbnVtYmVyKTogdm9pZCB7XHJcbiAgICB0aGlzLmZpbGVzLnNwbGljZShpbmRleCwgMSk7XHJcbiAgfVxyXG5cclxuICB1cGxvYWRGaWxlKCk6IHZvaWQge1xyXG4gICAgdGhpcy51cGxvYWRDYWxsYmFjayh0aGlzLmZpbGVzKTtcclxuICB9XHJcblxyXG4gIGZvcm1hdFNpemUoYnl0ZXM6IG51bWJlcik6IHN0cmluZyB7XHJcbiAgICBpZiAoYnl0ZXMgPT09IDApIHJldHVybiAnMCBCJztcclxuICAgIGNvbnN0IGsgPSAxMDI0O1xyXG4gICAgY29uc3Qgc2l6ZXMgPSBbJ0InLCAnS0InLCAnTUInLCAnR0InLCAnVEInXTtcclxuICAgIGNvbnN0IGkgPSBNYXRoLmZsb29yKE1hdGgubG9nKGJ5dGVzKSAvIE1hdGgubG9nKGspKTtcclxuICAgIGNvbnN0IHZhbHVlID0gcGFyc2VGbG9hdCgoYnl0ZXMgLyBNYXRoLnBvdyhrLCBpKSkudG9GaXhlZCgxKSk7XHJcbiAgICByZXR1cm4gYCR7dmFsdWV9ICR7c2l6ZXNbaV19YDtcclxuICB9XHJcblxyXG4gIHByZXZpZXdVcmxzID0gbmV3IE1hcDxGaWxlLCBzdHJpbmc+KCk7XHJcblxyXG4gIGZpbGVQcmV2aWV3VXJsKGZpbGU6IEZpbGUpOiBzdHJpbmcgfCBudWxsIHtcclxuICAgIGlmICghZmlsZSB8fCAhZmlsZS50eXBlLnN0YXJ0c1dpdGgoJ2ltYWdlLycpKSB7XHJcbiAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLnByZXZpZXdVcmxzLmhhcyhmaWxlKSkge1xyXG4gICAgICByZXR1cm4gdGhpcy5wcmV2aWV3VXJscy5nZXQoZmlsZSkhO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IHVybCA9IFVSTC5jcmVhdGVPYmplY3RVUkwoZmlsZSk7XHJcbiAgICB0aGlzLnByZXZpZXdVcmxzLnNldChmaWxlLCB1cmwpO1xyXG4gICAgcmV0dXJuIHVybDtcclxuICB9XHJcblxyXG4gIGRvd25sb2FkRmlsZShmaWxlOiBGaWxlKTogdm9pZCB7XHJcbiAgICBjb25zdCB1cmwgPSBVUkwuY3JlYXRlT2JqZWN0VVJMKGZpbGUpO1xyXG4gICAgY29uc3QgYSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2EnKTtcclxuICAgIGEuaHJlZiA9IHVybDtcclxuICAgIGEuZG93bmxvYWQgPSBmaWxlLm5hbWU7XHJcbiAgICBhLmNsaWNrKCk7XHJcbiAgICBVUkwucmV2b2tlT2JqZWN0VVJMKHVybCk7XHJcbiAgfVxyXG5cclxuICBnZXQgdXBsb2FkQnV0dG9uKCk6IFVpQWN0aW9uRGVzY3JpcHRvciB7XHJcbiAgICByZXR1cm4ge1xyXG4gICAgICB0aXRsZTogdGhpcy5pMThuIS51cGxvYWQgPz8gJycsXHJcbiAgICAgIGNvbG9yOiAncHJpbWFyeScsXHJcbiAgICAgIHR5cGU6IFVpQWN0aW9uQnV0dG9uVHlwZS5SQUlTRUQsXHJcbiAgICAgIGljb246ICd1cGxvYWQnLFxyXG4gICAgICBpY29uUG9zaXRpb246IEljb25Qb3NpdGlvbi5QUkUsXHJcbiAgICB9O1xyXG4gIH1cclxuXHJcbiAgZ2V0IGRvd25sb2FkQnV0dG9uKCk6IFVpQWN0aW9uRGVzY3JpcHRvciB7XHJcbiAgICByZXR1cm4ge1xyXG4gICAgICB0aXRsZTogJycsXHJcbiAgICAgIGNvbG9yOiAncHJpbWFyeScsXHJcbiAgICAgIHR5cGU6IFVpQWN0aW9uQnV0dG9uVHlwZS5JQ09OLFxyXG4gICAgICBpY29uOiAnZG93bmxvYWQnLFxyXG4gICAgICBpY29uUG9zaXRpb246IEljb25Qb3NpdGlvbi5QUkUsXHJcbiAgICB9O1xyXG4gIH1cclxuXHJcbiAgZ2V0IHJlbW92ZUJ1dHRvbigpOiBVaUFjdGlvbkRlc2NyaXB0b3Ige1xyXG4gICAgcmV0dXJuIHtcclxuICAgICAgdGl0bGU6ICcnLFxyXG4gICAgICBjb2xvcjogJ3ByaW1hcnknLFxyXG4gICAgICB0eXBlOiBVaUFjdGlvbkJ1dHRvblR5cGUuSUNPTixcclxuICAgICAgaWNvbjogJ2Nsb3NlJyxcclxuICAgICAgaWNvbkNvbG9yOiAncmVkJyxcclxuICAgICAgaWNvblBvc2l0aW9uOiBJY29uUG9zaXRpb24uUFJFLFxyXG4gICAgfTtcclxuICB9XHJcbn1cclxuIiwiPGRpdlxyXG4gIGNsYXNzPVwiY29udGFpbmVyXCJcclxuICBbbmdDbGFzc109XCJ7IGRpc2FibGVkV2lkZ2V0OiBpc0Rpc2FibGVkIH1cIlxyXG4gIChkcmFnb3Zlcik9XCJvbkRyYWdPdmVyKCRldmVudClcIlxyXG4gIChkcmFnbGVhdmUpPVwib25EcmFnTGVhdmUoJGV2ZW50KVwiXHJcbiAgKGRyb3ApPVwib25Ecm9wKCRldmVudClcIlxyXG4gIFtjbGFzcy5kcmFnb3Zlcl09XCJpc0RyYWdPdmVyXCJcclxuPlxyXG4gIDxkaXYgY2xhc3M9XCJmaWxlQ29udGFpbmVyXCIgKGNsaWNrKT1cImZpbGVJbnB1dC5jbGljaygpXCI+XHJcbiAgICA8aW5wdXRcclxuICAgICAgI2ZpbGVJbnB1dFxyXG4gICAgICBpZD1cImFkZEZpbGVcIlxyXG4gICAgICBwbGFjZWhvbGRlcj1cImZpbGVJbnB1dFwiXHJcbiAgICAgIHR5cGU9XCJmaWxlXCJcclxuICAgICAgKGNoYW5nZSk9XCJnZXRGaWxlKCRldmVudClcIlxyXG4gICAgICBjbGFzcz1cImZpbGVcIlxyXG4gICAgICBhY2NlcHQ9XCJ7eyBmaWxlRm9ybWF0cz8uam9pbignLCAnKSB9fVwiXHJcbiAgICAgIFtzaXplXT1cIm1heFNpemVNYlwiXHJcbiAgICAgIFttdWx0aXBsZV09XCJpc011bHRpcGxlXCJcclxuICAgICAgW2Rpc2FibGVkXT1cImlzRGlzYWJsZWRcIlxyXG4gICAgICBzdHlsZT1cImRpc3BsYXk6IG5vbmVcIlxyXG4gICAgLz5cclxuICAgIDxkaXYgY2xhc3M9XCJmaWxlVXBsb2FkQ29udGVudENvbnRhaW5lclwiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiaWNvblwiPlxyXG4gICAgICAgIDxtYXQtbGFiZWwgKm5nSWY9XCJ1c2VJY29uQnV0dG9uXCIgY2xhc3M9XCJhZGRGaWxlQnV0dG9uXCI+XHJcbiAgICAgICAgICA8bWF0LWljb24gY29sb3I9XCJwcmltYXJ5XCIgY2xhc3M9XCJhZGRDaXJjbGVcIj5hZGRfY2lyY2xlPC9tYXQtaWNvbj5cclxuICAgICAgICA8L21hdC1sYWJlbD5cclxuICAgICAgICA8YnV0dG9uICpuZ0lmPVwiIXVzZUljb25CdXR0b25cIiBtYXQtcmFpc2VkLWJ1dHRvbiBjb2xvcj1cInByaW1hcnlcIiBjbGFzcz1cImFkZEZpbGVCdXR0b25cIj5cclxuICAgICAgICAgIHt7IGkxOG4hLmFkZEZpbGUgfX1cclxuICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJsYWJlbHNcIj5cclxuICAgICAgICA8bWF0LWxhYmVsICpuZ0lmPVwidXNlSWNvbkJ1dHRvblwiIGNsYXNzPVwibGFiZWwgcHJpbWFyeSB0aXRsZVwiPlxyXG4gICAgICAgICAge3sgaTE4biEuYWRkRmlsZSB9fVxyXG4gICAgICAgIDwvbWF0LWxhYmVsPlxyXG4gICAgICAgIDxtYXQtbGFiZWwgY2xhc3M9XCJsYWJlbCBzZWNvbmRhcnlcIj4ge3sgaTE4biEuYnJvd3NlT3JEcmFnIH19IDwvbWF0LWxhYmVsPlxyXG4gICAgICAgIDxtYXQtbGFiZWwgY2xhc3M9XCJzdWJMYWJlbCBwcmltYXJ5XCI+IHt7IGkxOG4hLm1heFNpemUgfX0gPC9tYXQtbGFiZWw+XHJcbiAgICAgICAgPG1hdC1sYWJlbCBjbGFzcz1cInN1YkxhYmVsIHByaW1hcnlcIj4ge3sgaTE4biEuZm9ybWF0cyB9fSA8L21hdC1sYWJlbD5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJ1cGxvYWRCdXR0b25cIiAqbmdJZj1cImZpbGVzLmxlbmd0aFwiPlxyXG4gICAgICAgIDx1aS1hY3Rpb24tYnV0dG9uXHJcbiAgICAgICAgICAoYWN0aW9uQ2xpY2spPVwidXBsb2FkRmlsZSgpXCJcclxuICAgICAgICAgIFtjb2RlXT1cIidkZWZhdWx0LXVwbG9hZCdcIlxyXG4gICAgICAgICAgW2Rlc2NyaXB0b3JdPVwidXBsb2FkQnV0dG9uXCJcclxuICAgICAgICA+XHJcbiAgICAgICAgPC91aS1hY3Rpb24tYnV0dG9uPlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG5cclxuICA8ZGl2ICpuZ0lmPVwiZXJyb3JzLmxlbmd0aFwiIGNsYXNzPVwiZXJyb3JNZXNzYWdlXCI+XHJcbiAgICA8c21hcnQtaWNvbiBbaWNvbl09XCInZXJyb3InXCIgW2NvbG9yXT1cIid3YXJuJ1wiPjwvc21hcnQtaWNvbj5cclxuICAgIDxkaXYgY2xhc3M9XCJlcnJvcnNcIj5cclxuICAgICAgPHNwYW4gKm5nRm9yPVwibGV0IGVycm9yIG9mIGVycm9yc1wiPnt7IGVycm9yIH19PC9zcGFuPlxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcblxyXG4gIDxkaXYgKm5nSWY9XCJmaWxlcy5sZW5ndGhcIiBjbGFzcz1cInVwbG9hZGVkRmlsZXNDb250YWluZXJcIj5cclxuICAgIDxkaXYgKm5nRm9yPVwibGV0IGZpbGUgb2YgZmlsZXM7IGxldCBpID0gaW5kZXhcIiBjbGFzcz1cInVwbG9hZGVkRmlsZVwiPlxyXG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiZmlsZVByZXZpZXdVcmwoZmlsZSk7IGVsc2UgZmlsZUljb25cIj5cclxuICAgICAgICA8aW1nIFtzcmNdPVwiZmlsZVByZXZpZXdVcmwoZmlsZSlcIiBbYWx0XT1cImZpbGUubmFtZVwiIHdpZHRoPVwiNTBcIiBoZWlnaHQ9XCI1MFwiIC8+XHJcbiAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICA8bmctdGVtcGxhdGUgI2ZpbGVJY29uPlxyXG4gICAgICAgIDxzbWFydC1pY29uIFtpY29uXT1cIidpbnNlcnRfZHJpdmVfZmlsZSdcIj48L3NtYXJ0LWljb24+XHJcbiAgICAgIDwvbmctdGVtcGxhdGU+XHJcblxyXG4gICAgICA8ZGl2IGNsYXNzPVwiZmlsZURhdGFcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiZmlsZURhdGFDb250YWluZXJcIj5cclxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZmlsZU5hbWVcIj57eyBmaWxlLm5hbWUgfX08L3NwYW4+XHJcbiAgICAgICAgICA8c3BhbiBjbGFzcz1cImZpbGVTaXplXCI+e3sgZm9ybWF0U2l6ZShmaWxlLnNpemUpIH19PC9zcGFuPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuXHJcbiAgICAgIDxkaXYgY2xhc3M9XCJmaWxlQWN0aW9uc1wiPlxyXG4gICAgICAgIDxzbWFydC1pY29uXHJcbiAgICAgICAgICBjbGFzcz1cImRvd25sb2FkSWNvblwiXHJcbiAgICAgICAgICBpY29uPVwiZG93bmxvYWRcIlxyXG4gICAgICAgICAgKGNsaWNrKT1cImRvd25sb2FkRmlsZShmaWxlKVwiXHJcbiAgICAgICAgICBbYXR0ci5kYXRhLXRlc3RpZF09XCInZGVmYXVsdF9kb3dubG9hZCdcIlxyXG4gICAgICAgID48L3NtYXJ0LWljb24+XHJcbiAgICAgICAgPHNtYXJ0LWljb25cclxuICAgICAgICAgIGNsYXNzPVwicmVtb3ZlSWNvblwiXHJcbiAgICAgICAgICBpY29uPVwiZGVsZXRlXCJcclxuICAgICAgICAgIFthdHRyLmRhdGEtdGVzdGlkXT1cIidkZWZhdWx0X3JlbW92ZSdcIlxyXG4gICAgICAgICAgKGNsaWNrKT1cInJlbW92ZShpKVwiXHJcbiAgICAgICAgPjwvc21hcnQtaWNvbj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuPC9kaXY+XHJcbiJdfQ==
196
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnRmaWxldXBsb2FkZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc21hcnQtbmctY2xpZW50L3NyYy9saWIvc21hcnQtZm9ybS9zbWFydGZpbGV1cGxvYWRlci9zbWFydGZpbGV1cGxvYWRlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zbWFydC1uZy1jbGllbnQvc3JjL2xpYi9zbWFydC1mb3JtL3NtYXJ0ZmlsZXVwbG9hZGVyL3NtYXJ0ZmlsZXVwbG9hZGVyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQWMsS0FBSyxFQUFVLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUdoRixPQUFPLEVBQ0wsWUFBWSxFQUNaLGtCQUFrQixHQUVuQixNQUFNLHFDQUFxQyxDQUFDOzs7Ozs7Ozs7QUFPN0MsTUFBTSxPQUFPLDBCQUEwQjtJQWdCckMsWUFBb0IsU0FBc0I7UUFBdEIsY0FBUyxHQUFULFNBQVMsQ0FBYTtRQWIxQyxVQUFLLEdBQVcsRUFBRSxDQUFDO1FBRVYsZ0JBQVcsR0FBYyxFQUFFLENBQUM7UUFDNUIsY0FBUyxHQUFZLEVBQUUsQ0FBQztRQUV4QixrQkFBYSxHQUFZLElBQUksQ0FBQztRQUM5QixlQUFVLEdBQWEsSUFBSSxDQUFDO1FBQzVCLGVBQVUsR0FBYSxLQUFLLENBQUM7UUFDN0IsZUFBVSxHQUFhLEtBQUssQ0FBQztRQUV0QyxlQUFVLEdBQUcsS0FBSyxDQUFDO1FBQ25CLFdBQU0sR0FBYSxFQUFFLENBQUM7UUF1SHRCLGdCQUFXLEdBQUcsSUFBSSxHQUFHLEVBQWdCLENBQUM7SUFySE8sQ0FBQztJQUU5QyxRQUFRO1FBQ04sTUFBTSxXQUFXLEdBQUc7WUFDbEIsT0FBTyxFQUFFLHVCQUF1QjtZQUNoQyxZQUFZLEVBQUUsdUJBQXVCO1lBQ3JDLE9BQU8sRUFB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RUFBRSxVQUFVO1lBQ2hCLFlBQVksRUFBRSxZQUFZLENBQUMsR0FBRztTQUMvQixDQUFDO0lBQ0osQ0FBQztJQUVELElBQUksWUFBWTtRQUNkLE9BQU87WUFDTCxLQUFLLEVBQUUsRUFBRTtZQUNULEtBQUssRUFBRSxTQUFTO1lBQ2hCLElBQUksRUFBRSxrQkFBa0IsQ0FBQyxJQUFJO1lBQzdCLElBQUksRUFBRSxPQUFPO1lBQ2IsU0FBUyxFQUFFLEtBQUs7WUFDaEIsWUFBWSxFQUFFLFlBQVksQ0FBQyxHQUFHO1NBQy9CLENBQUM7SUFDSixDQUFDOytHQTNMVSwwQkFBMEI7bUdBQTFCLDBCQUEwQiwrWENkdkMscXdHQTBGQTs7NEZENUVhLDBCQUEwQjtrQkFMdEMsU0FBUzsrQkFDRSxtQkFBbUI7Z0ZBS0wsU0FBUztzQkFBaEMsU0FBUzt1QkFBQyxXQUFXO2dCQUdiLGNBQWM7c0JBQXRCLEtBQUs7Z0JBQ0csV0FBVztzQkFBbkIsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQUNHLElBQUk7c0JBQVosS0FBSztnQkFDRyxhQUFhO3NCQUFyQixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBJbnB1dCwgT25Jbml0LCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgTWF0U25hY2tCYXIgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9zbmFjay1iYXInO1xyXG5pbXBvcnQgeyBTbWFydEZpbGVVcGxvYWRlckkxOG4gfSBmcm9tICcuL3NtYXJ0ZmlsZXVwbG9hZGVyLm1vZGVsJztcclxuaW1wb3J0IHtcclxuICBJY29uUG9zaXRpb24sXHJcbiAgVWlBY3Rpb25CdXR0b25UeXBlLFxyXG4gIFVpQWN0aW9uRGVzY3JpcHRvcixcclxufSBmcm9tICcuLi8uLi92aWV3LWNvbnRleHQvYXBpL21vZGVsL21vZGVscyc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ3NtYXJ0ZmlsZXVwbG9hZGVyJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vc21hcnRmaWxldXBsb2FkZXIuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL3NtYXJ0ZmlsZXVwbG9hZGVyLmNvbXBvbmVudC5jc3MnXSxcclxufSlcclxuZXhwb3J0IGNsYXNzIFNtYXJ0ZmlsZXVwbG9hZGVyQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcclxuICBAVmlld0NoaWxkKCdmaWxlSW5wdXQnKSBmaWxlSW5wdXQhOiBFbGVtZW50UmVmPEhUTUxJbnB1dEVsZW1lbnQ+O1xyXG5cclxuICBmaWxlczogRmlsZVtdID0gW107XHJcbiAgQElucHV0KCkgdXBsb2FkQ2FsbGJhY2shOiAoZmlsZXM6IEZpbGVbXSkgPT4gdm9pZDtcclxuICBASW5wdXQoKSBmaWxlRm9ybWF0cz86IHN0cmluZ1tdID0gW107XHJcbiAgQElucHV0KCkgbWF4U2l6ZU1iPzogbnVtYmVyID0gMjU7XHJcbiAgQElucHV0KCkgaTE4bj86IFNtYXJ0RmlsZVVwbG9hZGVySTE4bjtcclxuICBASW5wdXQoKSB1c2VJY29uQnV0dG9uOiBib29sZWFuID0gdHJ1ZTtcclxuICBASW5wdXQoKSBpc011bHRpcGxlPzogYm9vbGVhbiA9IHRydWU7XHJcbiAgQElucHV0KCkgYXV0b1VwbG9hZD86IGJvb2xlYW4gPSBmYWxzZTtcclxuICBASW5wdXQoKSBpc0Rpc2FibGVkPzogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICBpc0RyYWdPdmVyID0gZmFsc2U7XHJcbiAgZXJyb3JzOiBzdHJpbmdbXSA9IFtdO1xyXG5cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIF9zbmFja0JhcjogTWF0U25hY2tCYXIpIHt9XHJcblxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgY29uc3QgZGVmYXVsdEkxOG4gPSB7XHJcbiAgICAgIGFkZEZpbGU6ICdkb2t1bWVudHVtIGhvenrDoWFkw6FzYScsXHJcbiAgICAgIGJyb3dzZU9yRHJhZzogJ3RhbGzDs3rDoXMgdmFneSBiZWjDunrDoXMnLFxyXG4gICAgICBtYXhTaXplOiBgbWF4LiAke3RoaXMubWF4U2l6ZU1ifSBNQmAsXHJcbiAgICAgIGZvcm1hdHM6ICdQREYsIGRvY3gsIHhscyBmb3Jtw6F0dW0nLFxyXG4gICAgICB1cGxvYWQ6ICdGZWx0w7ZsdMOpcycsXHJcbiAgICB9O1xyXG5cclxuICAgIHRoaXMuaTE4biA9IHsgLi4uZGVmYXVsdEkxOG4sIC4uLnRoaXMuaTE4biB9O1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBwcm9jZXNzRmlsZXMoZmlsZUxpc3Q6IEZpbGVbXSk6IHZvaWQge1xyXG4gICAgdGhpcy5lcnJvcnMgPSBbXTtcclxuICAgIHZhciB2YWxpZEZpbGVzOiBGaWxlW10gPSBbXTtcclxuXHJcbiAgICBmaWxlTGlzdC5mb3JFYWNoKChmaWxlOiBGaWxlKSA9PiB7XHJcbiAgICAgIGxldCBoYXNFcnJvciA9IGZhbHNlO1xyXG5cclxuICAgICAgaWYgKHRoaXMuZmlsZUZvcm1hdHM/Lmxlbmd0aCkge1xyXG4gICAgICAgIHZhciBleHQgPSBmaWxlLm5hbWUuc3BsaXQoJy4nKS5wb3AoKT8udG9Mb3dlckNhc2UoKTtcclxuXHJcbiAgICAgICAgdmFyIHRyaW1tZWRGb3JtYXRzID0gKHRoaXMuZmlsZUZvcm1hdHMgfHwgW10pXHJcbiAgICAgICAgICAuZmxhdE1hcCgoZikgPT4gZi5zcGxpdCgnLCcpKVxyXG4gICAgICAgICAgLm1hcCgoZikgPT4gZi5yZXBsYWNlKCcuJywgJycpLnRyaW0oKS50b0xvd2VyQ2FzZSgpKTtcclxuICAgICAgICB2YXIgaXNBbGxvd2VkID0gdHJpbW1lZEZvcm1hdHMuaW5jbHVkZXMoZXh0ISk7XHJcblxyXG4gICAgICAgIGlmICghaXNBbGxvd2VkKSB7XHJcbiAgICAgICAgICB0aGlzLmVycm9ycy5wdXNoKGBcIiR7ZmlsZS5uYW1lfVwiIC0gbmVtIHTDoW1vZ2F0b3R0IGZvcm3DoXR1bWApO1xyXG4gICAgICAgICAgaGFzRXJyb3IgPSB0cnVlO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG5cclxuICAgICAgaWYgKGZpbGUuc2l6ZSA+IHRoaXMubWF4U2l6ZU1iISAqIDEwMjQgKiAxMDI0KSB7XHJcbiAgICAgICAgdGhpcy5lcnJvcnMucHVzaChgXCIke2ZpbGUubmFtZX1cIiAtIHTDumwgbmFneSBmw6FqbCAobWF4ICR7dGhpcy5tYXhTaXplTWJ9IE1CKWApO1xyXG4gICAgICAgIGhhc0Vycm9yID0gdHJ1ZTtcclxuICAgICAgfVxyXG5cclxuICAgICAgaWYgKCFoYXNFcnJvcikge1xyXG4gICAgICAgIHZhbGlkRmlsZXMucHVzaChmaWxlKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcblxyXG4gICAgaWYgKHRoaXMuaXNNdWx0aXBsZSkge1xyXG4gICAgICB0aGlzLmZpbGVzID0gWy4uLnRoaXMuZmlsZXMsIC4uLnZhbGlkRmlsZXNdO1xyXG4gICAgfSBlbHNlIGlmICh2YWxpZEZpbGVzLmxlbmd0aCkge1xyXG4gICAgICB0aGlzLmZpbGVzID0gW3ZhbGlkRmlsZXNbMF1dO1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMuYXV0b1VwbG9hZCAmJiB0aGlzLmVycm9ycy5sZW5ndGggPT0gMCkge1xyXG4gICAgICB0aGlzLnVwbG9hZEZpbGUobnVsbCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBnZXRGaWxlKGV2ZW50OiBhbnkpOiB2b2lkIHtcclxuICAgIGlmIChldmVudC50YXJnZXQuZmlsZXMgJiYgZXZlbnQudGFyZ2V0LmZpbGVzLmxlbmd0aCkge1xyXG4gICAgICB2YXIgZmlsZUxpc3QgPSBBcnJheS5mcm9tKGV2ZW50LnRhcmdldC5maWxlcykgYXMgRmlsZVtdO1xyXG4gICAgICB0aGlzLnByb2Nlc3NGaWxlcyhmaWxlTGlzdCk7XHJcbiAgICAgIHRoaXMuZmlsZUlucHV0Lm5hdGl2ZUVsZW1lbnQudmFsdWUgPSAnJztcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG9uRHJvcChldmVudDogRHJhZ0V2ZW50KTogdm9pZCB7XHJcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgdGhpcy5pc0RyYWdPdmVyID0gZmFsc2U7XHJcblxyXG4gICAgaWYgKCFldmVudC5kYXRhVHJhbnNmZXI/LmZpbGVzKSByZXR1cm47XHJcbiAgICBjb25zdCBmaWxlTGlzdCA9IEFycmF5LmZyb20oZXZlbnQuZGF0YVRyYW5zZmVyLmZpbGVzKTtcclxuICAgIHRoaXMucHJvY2Vzc0ZpbGVzKGZpbGVMaXN0KTtcclxuICB9XHJcblxyXG4gIG9uRHJhZ092ZXIoZXZlbnQ6IERyYWdFdmVudCk6IHZvaWQge1xyXG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuICAgIHRoaXMuaXNEcmFnT3ZlciA9IHRydWU7XHJcbiAgfVxyXG5cclxuICBvbkRyYWdMZWF2ZShldmVudDogRHJhZ0V2ZW50KTogdm9pZCB7XHJcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG5cclxuICAgIGNvbnN0IHJlbGF0ZWQgPSBldmVudC5yZWxhdGVkVGFyZ2V0IGFzIEhUTUxFbGVtZW50IHwgbnVsbDtcclxuICAgIGxldCBzdG9wRHJhZyA9IGZhbHNlO1xyXG5cclxuICAgIGlmICghcmVsYXRlZCkge1xyXG4gICAgICBzdG9wRHJhZyA9IHRydWU7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBjb25zdCBwYXJlbnREcm9wID0gcmVsYXRlZC5jbG9zZXN0KCcuY29udGFpbmVyJyk7XHJcbiAgICAgIGlmIChyZWxhdGVkICE9PSBldmVudC5jdXJyZW50VGFyZ2V0ICYmICFwYXJlbnREcm9wKSB7XHJcbiAgICAgICAgc3RvcERyYWcgPSB0cnVlO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHN0b3BEcmFnKSB7XHJcbiAgICAgIHRoaXMuaXNEcmFnT3ZlciA9IGZhbHNlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcmVtb3ZlKGluZGV4OiBudW1iZXIpOiB2b2lkIHtcclxuICAgIHRoaXMuZmlsZXMuc3BsaWNlKGluZGV4LCAxKTtcclxuICB9XHJcblxyXG4gIHVwbG9hZEZpbGUoZXZlbnQ6IGFueSk6IHZvaWQge1xyXG4gICAgaWYgKGV2ZW50ICYmIGV2ZW50LmV2ZW50KSB7XHJcbiAgICAgIGV2ZW50LmV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xyXG4gICAgfVxyXG4gICAgdGhpcy51cGxvYWRDYWxsYmFjayh0aGlzLmZpbGVzKTtcclxuICB9XHJcblxyXG4gIGZvcm1hdFNpemUoYnl0ZXM6IG51bWJlcik6IHN0cmluZyB7XHJcbiAgICBpZiAoYnl0ZXMgPT09IDApIHJldHVybiAnMCBCJztcclxuICAgIGNvbnN0IGsgPSAxMDI0O1xyXG4gICAgY29uc3Qgc2l6ZXMgPSBbJ0InLCAnS0InLCAnTUInLCAnR0InLCAnVEInXTtcclxuICAgIGNvbnN0IGkgPSBNYXRoLmZsb29yKE1hdGgubG9nKGJ5dGVzKSAvIE1hdGgubG9nKGspKTtcclxuICAgIGNvbnN0IHZhbHVlID0gcGFyc2VGbG9hdCgoYnl0ZXMgLyBNYXRoLnBvdyhrLCBpKSkudG9GaXhlZCgxKSk7XHJcbiAgICByZXR1cm4gYCR7dmFsdWV9ICR7c2l6ZXNbaV19YDtcclxuICB9XHJcblxyXG4gIHByZXZpZXdVcmxzID0gbmV3IE1hcDxGaWxlLCBzdHJpbmc+KCk7XHJcblxyXG4gIGZpbGVQcmV2aWV3VXJsKGZpbGU6IEZpbGUpOiBzdHJpbmcgfCBudWxsIHtcclxuICAgIGlmICghZmlsZSB8fCAhZmlsZS50eXBlLnN0YXJ0c1dpdGgoJ2ltYWdlLycpKSB7XHJcbiAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLnByZXZpZXdVcmxzLmhhcyhmaWxlKSkge1xyXG4gICAgICByZXR1cm4gdGhpcy5wcmV2aWV3VXJscy5nZXQoZmlsZSkhO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IHVybCA9IFVSTC5jcmVhdGVPYmplY3RVUkwoZmlsZSk7XHJcbiAgICB0aGlzLnByZXZpZXdVcmxzLnNldChmaWxlLCB1cmwpO1xyXG4gICAgcmV0dXJuIHVybDtcclxuICB9XHJcblxyXG4gIGRvd25sb2FkRmlsZShmaWxlOiBGaWxlKTogdm9pZCB7XHJcbiAgICBjb25zdCB1cmwgPSBVUkwuY3JlYXRlT2JqZWN0VVJMKGZpbGUpO1xyXG4gICAgY29uc3QgYSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2EnKTtcclxuICAgIGEuaHJlZiA9IHVybDtcclxuICAgIGEuZG93bmxvYWQgPSBmaWxlLm5hbWU7XHJcbiAgICBhLmNsaWNrKCk7XHJcbiAgICBVUkwucmV2b2tlT2JqZWN0VVJMKHVybCk7XHJcbiAgfVxyXG5cclxuICBnZXQgdXBsb2FkQnV0dG9uKCk6IFVpQWN0aW9uRGVzY3JpcHRvciB7XHJcbiAgICByZXR1cm4ge1xyXG4gICAgICB0aXRsZTogdGhpcy5pMThuIS51cGxvYWQgPz8gJycsXHJcbiAgICAgIGNvbG9yOiAncHJpbWFyeScsXHJcbiAgICAgIHR5cGU6IFVpQWN0aW9uQnV0dG9uVHlwZS5SQUlTRUQsXHJcbiAgICAgIGljb246ICd1cGxvYWQnLFxyXG4gICAgICBpY29uUG9zaXRpb246IEljb25Qb3NpdGlvbi5QUkUsXHJcbiAgICB9O1xyXG4gIH1cclxuXHJcbiAgZ2V0IGRvd25sb2FkQnV0dG9uKCk6IFVpQWN0aW9uRGVzY3JpcHRvciB7XHJcbiAgICByZXR1cm4ge1xyXG4gICAgICB0aXRsZTogJycsXHJcbiAgICAgIGNvbG9yOiAncHJpbWFyeScsXHJcbiAgICAgIHR5cGU6IFVpQWN0aW9uQnV0dG9uVHlwZS5JQ09OLFxyXG4gICAgICBpY29uOiAnZG93bmxvYWQnLFxyXG4gICAgICBpY29uUG9zaXRpb246IEljb25Qb3NpdGlvbi5QUkUsXHJcbiAgICB9O1xyXG4gIH1cclxuXHJcbiAgZ2V0IHJlbW92ZUJ1dHRvbigpOiBVaUFjdGlvbkRlc2NyaXB0b3Ige1xyXG4gICAgcmV0dXJuIHtcclxuICAgICAgdGl0bGU6ICcnLFxyXG4gICAgICBjb2xvcjogJ3ByaW1hcnknLFxyXG4gICAgICB0eXBlOiBVaUFjdGlvbkJ1dHRvblR5cGUuSUNPTixcclxuICAgICAgaWNvbjogJ2Nsb3NlJyxcclxuICAgICAgaWNvbkNvbG9yOiAncmVkJyxcclxuICAgICAgaWNvblBvc2l0aW9uOiBJY29uUG9zaXRpb24uUFJFLFxyXG4gICAgfTtcclxuICB9XHJcbn1cclxuIiwiPGRpdlxyXG4gIGNsYXNzPVwiY29udGFpbmVyXCJcclxuICBbbmdDbGFzc109XCJ7IGRpc2FibGVkV2lkZ2V0OiBpc0Rpc2FibGVkIH1cIlxyXG4gIChkcmFnb3Zlcik9XCJvbkRyYWdPdmVyKCRldmVudClcIlxyXG4gIChkcmFnbGVhdmUpPVwib25EcmFnTGVhdmUoJGV2ZW50KVwiXHJcbiAgKGRyb3ApPVwib25Ecm9wKCRldmVudClcIlxyXG4gIFtjbGFzcy5kcmFnb3Zlcl09XCJpc0RyYWdPdmVyXCJcclxuPlxyXG4gIDxkaXYgY2xhc3M9XCJmaWxlQ29udGFpbmVyXCIgKGNsaWNrKT1cImZpbGVJbnB1dC5jbGljaygpXCI+XHJcbiAgICA8aW5wdXRcclxuICAgICAgI2ZpbGVJbnB1dFxyXG4gICAgICBpZD1cImFkZEZpbGVcIlxyXG4gICAgICBwbGFjZWhvbGRlcj1cImZpbGVJbnB1dFwiXHJcbiAgICAgIHR5cGU9XCJmaWxlXCJcclxuICAgICAgKGNoYW5nZSk9XCJnZXRGaWxlKCRldmVudClcIlxyXG4gICAgICBjbGFzcz1cImZpbGVcIlxyXG4gICAgICBhY2NlcHQ9XCJ7eyBmaWxlRm9ybWF0cz8uam9pbignLCAnKSB9fVwiXHJcbiAgICAgIFtzaXplXT1cIm1heFNpemVNYlwiXHJcbiAgICAgIFttdWx0aXBsZV09XCJpc011bHRpcGxlXCJcclxuICAgICAgW2Rpc2FibGVkXT1cImlzRGlzYWJsZWRcIlxyXG4gICAgICBzdHlsZT1cImRpc3BsYXk6IG5vbmVcIlxyXG4gICAgLz5cclxuICAgIDxkaXYgY2xhc3M9XCJmaWxlVXBsb2FkQ29udGVudENvbnRhaW5lclwiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiaWNvblwiPlxyXG4gICAgICAgIDxtYXQtbGFiZWwgKm5nSWY9XCJ1c2VJY29uQnV0dG9uXCIgY2xhc3M9XCJhZGRGaWxlQnV0dG9uXCI+XHJcbiAgICAgICAgICA8bWF0LWljb24gY29sb3I9XCJwcmltYXJ5XCIgY2xhc3M9XCJhZGRDaXJjbGVcIj5hZGRfY2lyY2xlPC9tYXQtaWNvbj5cclxuICAgICAgICA8L21hdC1sYWJlbD5cclxuICAgICAgICA8YnV0dG9uICpuZ0lmPVwiIXVzZUljb25CdXR0b25cIiBtYXQtcmFpc2VkLWJ1dHRvbiBjb2xvcj1cInByaW1hcnlcIiBjbGFzcz1cImFkZEZpbGVCdXR0b25cIj5cclxuICAgICAgICAgIHt7IGkxOG4hLmFkZEZpbGUgfX1cclxuICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJsYWJlbHNcIj5cclxuICAgICAgICA8bWF0LWxhYmVsICpuZ0lmPVwidXNlSWNvbkJ1dHRvblwiIGNsYXNzPVwibGFiZWwgcHJpbWFyeSB0aXRsZVwiPlxyXG4gICAgICAgICAge3sgaTE4biEuYWRkRmlsZSB9fVxyXG4gICAgICAgIDwvbWF0LWxhYmVsPlxyXG4gICAgICAgIDxtYXQtbGFiZWwgY2xhc3M9XCJsYWJlbCBzZWNvbmRhcnlcIj4ge3sgaTE4biEuYnJvd3NlT3JEcmFnIH19IDwvbWF0LWxhYmVsPlxyXG4gICAgICAgIDxtYXQtbGFiZWwgY2xhc3M9XCJzdWJMYWJlbCBwcmltYXJ5XCI+IHt7IGkxOG4hLm1heFNpemUgfX0gPC9tYXQtbGFiZWw+XHJcbiAgICAgICAgPG1hdC1sYWJlbCBjbGFzcz1cInN1YkxhYmVsIHByaW1hcnlcIj4ge3sgaTE4biEuZm9ybWF0cyB9fSA8L21hdC1sYWJlbD5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJ1cGxvYWRCdXR0b25cIiAqbmdJZj1cImZpbGVzLmxlbmd0aFwiPlxyXG4gICAgICAgIDx1aS1hY3Rpb24tYnV0dG9uXHJcbiAgICAgICAgICAoYWN0aW9uQ2xpY2spPVwidXBsb2FkRmlsZSgkZXZlbnQpXCJcclxuICAgICAgICAgIFtjb2RlXT1cIidkZWZhdWx0LXVwbG9hZCdcIlxyXG4gICAgICAgICAgW2Rlc2NyaXB0b3JdPVwidXBsb2FkQnV0dG9uXCJcclxuICAgICAgICA+XHJcbiAgICAgICAgPC91aS1hY3Rpb24tYnV0dG9uPlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG5cclxuICA8ZGl2ICpuZ0lmPVwiZXJyb3JzLmxlbmd0aFwiIGNsYXNzPVwiZXJyb3JNZXNzYWdlXCI+XHJcbiAgICA8c21hcnQtaWNvbiBbaWNvbl09XCInZXJyb3InXCIgW2NvbG9yXT1cIid3YXJuJ1wiPjwvc21hcnQtaWNvbj5cclxuICAgIDxkaXYgY2xhc3M9XCJlcnJvcnNcIj5cclxuICAgICAgPHNwYW4gKm5nRm9yPVwibGV0IGVycm9yIG9mIGVycm9yc1wiPnt7IGVycm9yIH19PC9zcGFuPlxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcblxyXG4gIDxkaXYgKm5nSWY9XCJmaWxlcy5sZW5ndGhcIiBjbGFzcz1cInVwbG9hZGVkRmlsZXNDb250YWluZXJcIj5cclxuICAgIDxkaXYgKm5nRm9yPVwibGV0IGZpbGUgb2YgZmlsZXM7IGxldCBpID0gaW5kZXhcIiBjbGFzcz1cInVwbG9hZGVkRmlsZVwiPlxyXG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiZmlsZVByZXZpZXdVcmwoZmlsZSk7IGVsc2UgZmlsZUljb25cIj5cclxuICAgICAgICA8aW1nIFtzcmNdPVwiZmlsZVByZXZpZXdVcmwoZmlsZSlcIiBbYWx0XT1cImZpbGUubmFtZVwiIHdpZHRoPVwiNTBcIiBoZWlnaHQ9XCI1MFwiIC8+XHJcbiAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICA8bmctdGVtcGxhdGUgI2ZpbGVJY29uPlxyXG4gICAgICAgIDxzbWFydC1pY29uIFtpY29uXT1cIidpbnNlcnRfZHJpdmVfZmlsZSdcIj48L3NtYXJ0LWljb24+XHJcbiAgICAgIDwvbmctdGVtcGxhdGU+XHJcblxyXG4gICAgICA8ZGl2IGNsYXNzPVwiZmlsZURhdGFcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiZmlsZURhdGFDb250YWluZXJcIj5cclxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZmlsZU5hbWVcIj57eyBmaWxlLm5hbWUgfX08L3NwYW4+XHJcbiAgICAgICAgICA8c3BhbiBjbGFzcz1cImZpbGVTaXplXCI+e3sgZm9ybWF0U2l6ZShmaWxlLnNpemUpIH19PC9zcGFuPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuXHJcbiAgICAgIDxkaXYgY2xhc3M9XCJmaWxlQWN0aW9uc1wiPlxyXG4gICAgICAgIDxzbWFydC1pY29uXHJcbiAgICAgICAgICBjbGFzcz1cImRvd25sb2FkSWNvblwiXHJcbiAgICAgICAgICBpY29uPVwiZG93bmxvYWRcIlxyXG4gICAgICAgICAgKGNsaWNrKT1cImRvd25sb2FkRmlsZShmaWxlKVwiXHJcbiAgICAgICAgICBbYXR0ci5kYXRhLXRlc3RpZF09XCInZGVmYXVsdF9kb3dubG9hZCdcIlxyXG4gICAgICAgID48L3NtYXJ0LWljb24+XHJcbiAgICAgICAgPHNtYXJ0LWljb25cclxuICAgICAgICAgIGNsYXNzPVwicmVtb3ZlSWNvblwiXHJcbiAgICAgICAgICBpY29uPVwiZGVsZXRlXCJcclxuICAgICAgICAgIFthdHRyLmRhdGEtdGVzdGlkXT1cIidkZWZhdWx0X3JlbW92ZSdcIlxyXG4gICAgICAgICAgKGNsaWNrKT1cInJlbW92ZShpKVwiXHJcbiAgICAgICAgPjwvc21hcnQtaWNvbj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuPC9kaXY+XHJcbiJdfQ==