ng-configcat-publicapi-ui 3.0.8 → 4.0.0

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 (136) hide show
  1. package/esm2022/lib/_directives/input-display-normalizer.directive.mjs +38 -0
  2. package/esm2022/lib/_models/flag-state.mjs +2 -0
  3. package/esm2022/lib/_models/setting-value-formgroup.mjs +2 -0
  4. package/esm2022/lib/_models/user-comparator.mjs +100 -0
  5. package/esm2022/lib/_services/app-data-adapter.mjs +18 -0
  6. package/esm2022/lib/_services/comparison-value-list-helper.mjs +72 -0
  7. package/esm2022/lib/_services/date-helper.mjs +56 -0
  8. package/esm2022/lib/_services/form-generator.mjs +359 -0
  9. package/esm2022/lib/_services/form-helper.mjs +107 -0
  10. package/esm2022/lib/_services/messaging.service.mjs +26 -0
  11. package/esm2022/lib/_services/public-api.service.mjs +77 -0
  12. package/esm2022/lib/_services/setting-list-form-helper.mjs +171 -0
  13. package/esm2022/lib/_services/tracking.directive.mjs +16 -0
  14. package/esm2022/lib/ace-editor/ace-editor.component.mjs +137 -0
  15. package/esm2022/lib/authorization/authorization.component.mjs +62 -0
  16. package/{esm2020 → esm2022}/lib/base/base-select.component.mjs +4 -4
  17. package/esm2022/lib/base/base.component.mjs +48 -0
  18. package/esm2022/lib/bootstrap.mjs +10 -0
  19. package/{esm2020 → esm2022}/lib/configuration.mjs +4 -4
  20. package/esm2022/lib/dialogs/confirmation-dialog/confirmation-dialog.mjs +28 -0
  21. package/{esm2020 → esm2022}/lib/dialogs/delete-setting-dialog/delete-setting-dialog.component.mjs +6 -6
  22. package/esm2022/lib/dialogs/expand-dialog/expand-dialog.component.mjs +80 -0
  23. package/esm2022/lib/dialogs/info-dialog/info-dialog.mjs +29 -0
  24. package/esm2022/lib/dialogs/reason-dialog/reason-dialog.component.mjs +36 -0
  25. package/{esm2020 → esm2022}/lib/dialogs/save-snackbar/save-snackbar.component.mjs +5 -5
  26. package/esm2022/lib/ng-configcat-publicapi-ui.module.mjs +285 -0
  27. package/esm2022/lib/selects/config-select/config-select.component.mjs +60 -0
  28. package/esm2022/lib/selects/environment-select/environment-select.component.mjs +47 -0
  29. package/esm2022/lib/selects/product-select/product-select.component.mjs +40 -0
  30. package/esm2022/lib/selects/setting-select/setting-select.component.mjs +47 -0
  31. package/esm2022/lib/setting-item/setting-item.component.mjs +118 -0
  32. package/esm2022/lib/setting-list/setting/rollout-percentage-items/rollout-percentage-items.component.mjs +81 -0
  33. package/esm2022/lib/setting-list/setting/rollout-rules/rollout-rules.component.mjs +293 -0
  34. package/{esm2020 → esm2022}/lib/setting-list/setting/setting.component.mjs +5 -5
  35. package/esm2022/lib/setting-list/setting/value/value.component.mjs +37 -0
  36. package/esm2022/lib/setting-list/setting-list.component.mjs +194 -0
  37. package/esm2022/lib/v2/feature-flag/date-time-picker/date-time-picker.component.mjs +123 -0
  38. package/esm2022/lib/v2/feature-flag/dependees-dialog/dependees-dialog.component.mjs +30 -0
  39. package/esm2022/lib/v2/feature-flag/evaluation-formula/evaluation-formula.component.mjs +220 -0
  40. package/esm2022/lib/v2/feature-flag/evaluation-formula/feature-flag-value/feature-flag-value.component.mjs +61 -0
  41. package/esm2022/lib/v2/feature-flag/evaluation-formula/popout-text-editor-dialog/popout-text-editor-dialog.component.mjs +72 -0
  42. package/esm2022/lib/v2/feature-flag/evaluation-formula/targeting-rule/conditions/condition-chip/condition-chip.component.mjs +25 -0
  43. package/esm2022/lib/v2/feature-flag/evaluation-formula/targeting-rule/conditions/conditions.component.mjs +105 -0
  44. package/esm2022/lib/v2/feature-flag/evaluation-formula/targeting-rule/conditions/prerequisite-flag-condition/prerequisite-flag-condition.component.mjs +75 -0
  45. package/esm2022/lib/v2/feature-flag/evaluation-formula/targeting-rule/conditions/segment-condition/segment-condition.component.mjs +48 -0
  46. package/esm2022/lib/v2/feature-flag/evaluation-formula/targeting-rule/conditions/user-condition/comparator-dialog/comparator-dialog.component.mjs +113 -0
  47. package/esm2022/lib/v2/feature-flag/evaluation-formula/targeting-rule/conditions/user-condition/popout-list-editor-dialog/popout-list-editor-dialog.component.mjs +251 -0
  48. package/esm2022/lib/v2/feature-flag/evaluation-formula/targeting-rule/conditions/user-condition/user-condition.component.mjs +444 -0
  49. package/esm2022/lib/v2/feature-flag/evaluation-formula/targeting-rule/percentage-options/percentage-options.component.mjs +84 -0
  50. package/esm2022/lib/v2/feature-flag/evaluation-formula/targeting-rule/targeting-rule.component.mjs +129 -0
  51. package/esm2022/lib/v2/feature-flag/feature-flag.component.mjs +190 -0
  52. package/esm2022/lib/v2/feature-flag/percentage-evaluation-attribute-dialog/percentage-evaluation-attribute-dialog.component.mjs +65 -0
  53. package/esm2022/lib/v2/feature-flag-item.component.mjs +319 -0
  54. package/{esm2020 → esm2022}/public-api.mjs +2 -1
  55. package/fesm2022/ng-configcat-publicapi-ui.mjs +4790 -0
  56. package/fesm2022/ng-configcat-publicapi-ui.mjs.map +1 -0
  57. package/lib/_models/flag-state.d.ts +20 -0
  58. package/lib/_models/setting-value-formgroup.d.ts +69 -0
  59. package/lib/_models/user-comparator.d.ts +84 -0
  60. package/lib/_services/app-data-adapter.d.ts +7 -0
  61. package/lib/_services/comparison-value-list-helper.d.ts +17 -0
  62. package/lib/_services/date-helper.d.ts +6 -0
  63. package/lib/_services/form-generator.d.ts +59 -0
  64. package/lib/_services/form-helper.d.ts +4 -1
  65. package/lib/_services/messaging.service.d.ts +12 -0
  66. package/lib/_services/public-api.service.d.ts +2 -1
  67. package/lib/_services/setting-list-form-helper.d.ts +1 -1
  68. package/lib/_services/tracking.directive.d.ts +6 -0
  69. package/lib/ace-editor/ace-editor.component.d.ts +32 -0
  70. package/lib/authorization/authorization.component.d.ts +2 -2
  71. package/lib/base/base-select.component.d.ts +1 -1
  72. package/lib/base/base.component.d.ts +2 -1
  73. package/lib/bootstrap.d.ts +12 -0
  74. package/lib/dialogs/confirmation-dialog/confirmation-dialog.d.ts +19 -0
  75. package/lib/dialogs/info-dialog/info-dialog.d.ts +17 -0
  76. package/lib/ng-configcat-publicapi-ui.module.d.ts +47 -19
  77. package/lib/selects/config-select/config-select.component.d.ts +1 -1
  78. package/lib/selects/environment-select/environment-select.component.d.ts +1 -1
  79. package/lib/selects/product-select/product-select.component.d.ts +1 -1
  80. package/lib/selects/setting-select/setting-select.component.d.ts +1 -1
  81. package/lib/setting-item/setting-item.component.d.ts +4 -2
  82. package/lib/setting-list/setting/rollout-percentage-items/rollout-percentage-items.component.d.ts +1 -1
  83. package/lib/setting-list/setting/rollout-rules/rollout-rules.component.d.ts +4 -4
  84. package/lib/setting-list/setting/setting.component.d.ts +1 -1
  85. package/lib/setting-list/setting/value/value.component.d.ts +1 -1
  86. package/lib/setting-list/setting-list.component.d.ts +1 -1
  87. package/lib/v2/feature-flag/date-time-picker/date-time-picker.component.d.ts +25 -0
  88. package/lib/v2/feature-flag/dependees-dialog/dependees-dialog.component.d.ts +27 -0
  89. package/lib/v2/feature-flag/evaluation-formula/evaluation-formula.component.d.ts +41 -0
  90. package/lib/v2/feature-flag/evaluation-formula/feature-flag-value/feature-flag-value.component.d.ts +18 -0
  91. package/lib/v2/feature-flag/evaluation-formula/popout-text-editor-dialog/popout-text-editor-dialog.component.d.ts +30 -0
  92. package/lib/v2/feature-flag/evaluation-formula/targeting-rule/conditions/condition-chip/condition-chip.component.d.ts +10 -0
  93. package/lib/v2/feature-flag/evaluation-formula/targeting-rule/conditions/conditions.component.d.ts +27 -0
  94. package/lib/v2/feature-flag/evaluation-formula/targeting-rule/conditions/prerequisite-flag-condition/prerequisite-flag-condition.component.d.ts +36 -0
  95. package/lib/v2/feature-flag/evaluation-formula/targeting-rule/conditions/segment-condition/segment-condition.component.d.ts +21 -0
  96. package/lib/v2/feature-flag/evaluation-formula/targeting-rule/conditions/user-condition/comparator-dialog/comparator-dialog.component.d.ts +79 -0
  97. package/lib/v2/feature-flag/evaluation-formula/targeting-rule/conditions/user-condition/popout-list-editor-dialog/popout-list-editor-dialog.component.d.ts +63 -0
  98. package/lib/v2/feature-flag/evaluation-formula/targeting-rule/conditions/user-condition/user-condition.component.d.ts +94 -0
  99. package/lib/v2/feature-flag/evaluation-formula/targeting-rule/percentage-options/percentage-options.component.d.ts +31 -0
  100. package/lib/v2/feature-flag/evaluation-formula/targeting-rule/targeting-rule.component.d.ts +33 -0
  101. package/lib/v2/feature-flag/feature-flag.component.d.ts +49 -0
  102. package/lib/v2/feature-flag/percentage-evaluation-attribute-dialog/percentage-evaluation-attribute-dialog.component.d.ts +28 -0
  103. package/lib/v2/feature-flag-item.component.d.ts +66 -0
  104. package/package.json +12 -16
  105. package/public-api.d.ts +1 -0
  106. package/public-api.scss +205 -3
  107. package/esm2020/lib/_directives/input-display-normalizer.directive.mjs +0 -38
  108. package/esm2020/lib/_services/form-helper.mjs +0 -104
  109. package/esm2020/lib/_services/public-api.service.mjs +0 -71
  110. package/esm2020/lib/_services/setting-list-form-helper.mjs +0 -171
  111. package/esm2020/lib/authorization/authorization.component.mjs +0 -62
  112. package/esm2020/lib/base/base.component.mjs +0 -45
  113. package/esm2020/lib/dialogs/expand-dialog/expand-dialog.component.mjs +0 -80
  114. package/esm2020/lib/dialogs/reason-dialog/reason-dialog.component.mjs +0 -36
  115. package/esm2020/lib/ng-configcat-publicapi-ui.module.mjs +0 -179
  116. package/esm2020/lib/selects/config-select/config-select.component.mjs +0 -60
  117. package/esm2020/lib/selects/environment-select/environment-select.component.mjs +0 -47
  118. package/esm2020/lib/selects/product-select/product-select.component.mjs +0 -40
  119. package/esm2020/lib/selects/setting-select/setting-select.component.mjs +0 -47
  120. package/esm2020/lib/setting-item/setting-item.component.mjs +0 -116
  121. package/esm2020/lib/setting-list/setting/rollout-percentage-items/rollout-percentage-items.component.mjs +0 -81
  122. package/esm2020/lib/setting-list/setting/rollout-rules/rollout-rules.component.mjs +0 -293
  123. package/esm2020/lib/setting-list/setting/value/value.component.mjs +0 -37
  124. package/esm2020/lib/setting-list/setting-list.component.mjs +0 -194
  125. package/fesm2015/ng-configcat-publicapi-ui.mjs +0 -1786
  126. package/fesm2015/ng-configcat-publicapi-ui.mjs.map +0 -1
  127. package/fesm2020/ng-configcat-publicapi-ui.mjs +0 -1763
  128. package/fesm2020/ng-configcat-publicapi-ui.mjs.map +0 -1
  129. /package/{esm2020 → esm2022}/lib/_directives/index.mjs +0 -0
  130. /package/{esm2020 → esm2022}/lib/_models/deleteSettingModel.mjs +0 -0
  131. /package/{esm2020 → esm2022}/lib/_models/index.mjs +0 -0
  132. /package/{esm2020 → esm2022}/lib/_models/settingValuesModel.mjs +0 -0
  133. /package/{esm2020 → esm2022}/lib/_models/updateSettingValuesModel.mjs +0 -0
  134. /package/{esm2020 → esm2022}/lib/_services/index.mjs +0 -0
  135. /package/{esm2020 → esm2022}/lib/_services/platform-helper.mjs +0 -0
  136. /package/{esm2020 → esm2022}/ng-configcat-publicapi-ui.mjs +0 -0
@@ -0,0 +1,77 @@
1
+ import { Injectable, Optional } from '@angular/core';
2
+ import { Configuration as PublicApiConfiguration, ProductsService, EnvironmentsService, ConfigsService, FeatureFlagsSettingsService, FeatureFlagSettingValuesService, MeService, IntegrationLinksService, SegmentsService, FeatureFlagSettingValuesV2Service } from 'ng-configcat-publicapi';
3
+ import * as i0 from "@angular/core";
4
+ import * as i1 from "@angular/common/http";
5
+ import * as i2 from "../configuration";
6
+ export class PublicApiService {
7
+ constructor(httpClient, configuration) {
8
+ this.httpClient = httpClient;
9
+ this.configuration = configuration;
10
+ }
11
+ createMeService(basicAuthUsername = null, basicAuthPassword = null, basePath = null) {
12
+ return new MeService(this.httpClient, basePath ?? this.configuration?.basePath, new PublicApiConfiguration({
13
+ username: basicAuthUsername ?? this.configuration?.basicAuthUsername,
14
+ password: basicAuthPassword ?? this.configuration?.basicAuthPassword
15
+ }));
16
+ }
17
+ createProductsService(basicAuthUsername = null, basicAuthPassword = null, basePath = null) {
18
+ return new ProductsService(this.httpClient, basePath ?? this.configuration?.basePath, new PublicApiConfiguration({
19
+ username: basicAuthUsername ?? this.configuration?.basicAuthUsername,
20
+ password: basicAuthPassword ?? this.configuration?.basicAuthPassword
21
+ }));
22
+ }
23
+ createConfigsService(basicAuthUsername = null, basicAuthPassword = null, basePath = null) {
24
+ return new ConfigsService(this.httpClient, basePath ?? this.configuration?.basePath, new PublicApiConfiguration({
25
+ username: basicAuthUsername ?? this.configuration?.basicAuthUsername,
26
+ password: basicAuthPassword ?? this.configuration?.basicAuthPassword
27
+ }));
28
+ }
29
+ createEnvironmentsService(basicAuthUsername = null, basicAuthPassword = null, basePath = null) {
30
+ return new EnvironmentsService(this.httpClient, basePath ?? this.configuration?.basePath, new PublicApiConfiguration({
31
+ username: basicAuthUsername ?? this.configuration?.basicAuthUsername,
32
+ password: basicAuthPassword ?? this.configuration?.basicAuthPassword
33
+ }));
34
+ }
35
+ createSettingsService(basicAuthUsername = null, basicAuthPassword = null, basePath = null) {
36
+ return new FeatureFlagsSettingsService(this.httpClient, basePath ?? this.configuration?.basePath, new PublicApiConfiguration({
37
+ username: basicAuthUsername ?? this.configuration?.basicAuthUsername,
38
+ password: basicAuthPassword ?? this.configuration?.basicAuthPassword
39
+ }));
40
+ }
41
+ createSettingValuesV2Service(basicAuthUsername = null, basicAuthPassword = null, basePath = null) {
42
+ return new FeatureFlagSettingValuesV2Service(this.httpClient, basePath ?? this.configuration?.basePath, new PublicApiConfiguration({
43
+ username: basicAuthUsername ?? this.configuration?.basicAuthUsername,
44
+ password: basicAuthPassword ?? this.configuration?.basicAuthPassword
45
+ }));
46
+ }
47
+ createSettingValuesService(basicAuthUsername = null, basicAuthPassword = null, basePath = null) {
48
+ return new FeatureFlagSettingValuesService(this.httpClient, basePath ?? this.configuration?.basePath, new PublicApiConfiguration({
49
+ username: basicAuthUsername ?? this.configuration?.basicAuthUsername,
50
+ password: basicAuthPassword ?? this.configuration?.basicAuthPassword
51
+ }));
52
+ }
53
+ createIntegrationLinksService(basicAuthUsername = null, basicAuthPassword = null, basePath = null) {
54
+ return new IntegrationLinksService(this.httpClient, basePath ?? this.configuration?.basePath, new PublicApiConfiguration({
55
+ username: basicAuthUsername ?? this.configuration?.basicAuthUsername,
56
+ password: basicAuthPassword ?? this.configuration?.basicAuthPassword
57
+ }));
58
+ }
59
+ createSegmentsService(basicAuthUsername = null, basicAuthPassword = null, basePath = null) {
60
+ return new SegmentsService(this.httpClient, basePath ?? this.configuration?.basePath, new PublicApiConfiguration({
61
+ username: basicAuthUsername ?? this.configuration?.basicAuthUsername,
62
+ password: basicAuthPassword ?? this.configuration?.basicAuthPassword
63
+ }));
64
+ }
65
+ getDashboardBasePath() {
66
+ return this.configuration?.dashboardBasePath ?? 'https://app.configcat.com';
67
+ }
68
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: PublicApiService, deps: [{ token: i1.HttpClient }, { token: i2.Configuration, optional: true }], target: i0.ɵɵFactoryTarget.Injectable }); }
69
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: PublicApiService, providedIn: 'root' }); }
70
+ }
71
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: PublicApiService, decorators: [{
72
+ type: Injectable,
73
+ args: [{ providedIn: 'root' }]
74
+ }], ctorParameters: () => [{ type: i1.HttpClient }, { type: i2.Configuration, decorators: [{
75
+ type: Optional
76
+ }] }] });
77
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctY29uZmlnY2F0LXB1YmxpY2FwaS11aS9zcmMvbGliL19zZXJ2aWNlcy9wdWJsaWMtYXBpLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFckQsT0FBTyxFQUNILGFBQWEsSUFBSSxzQkFBc0IsRUFDdkMsZUFBZSxFQUFFLG1CQUFtQixFQUFFLGNBQWMsRUFDcEQsMkJBQTJCLEVBQUUsK0JBQStCLEVBQUUsU0FBUyxFQUN2RSx1QkFBdUIsRUFDdkIsZUFBZSxFQUNmLGlDQUFpQyxFQUNwQyxNQUFNLHdCQUF3QixDQUFDOzs7O0FBSWhDLE1BQU0sT0FBTyxnQkFBZ0I7SUFFekIsWUFDWSxVQUFzQixFQUNWLGFBQTRCO1FBRHhDLGVBQVUsR0FBVixVQUFVLENBQVk7UUFDVixrQkFBYSxHQUFiLGFBQWEsQ0FBZTtJQUNwRCxDQUFDO0lBRUQsZUFBZSxDQUFDLG9CQUFtQyxJQUFJLEVBQUUsb0JBQW1DLElBQUksRUFBRSxXQUEwQixJQUFJO1FBQzVILE9BQU8sSUFBSSxTQUFTLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxRQUFRLElBQUksSUFBSSxDQUFDLGFBQWEsRUFBRSxRQUFRLEVBQzFFLElBQUksc0JBQXNCLENBQUM7WUFDdkIsUUFBUSxFQUFFLGlCQUFpQixJQUFJLElBQUksQ0FBQyxhQUFhLEVBQUUsaUJBQWlCO1lBQ3BFLFFBQVEsRUFBRSxpQkFBaUIsSUFBSSxJQUFJLENBQUMsYUFBYSxFQUFFLGlCQUFpQjtTQUN2RSxDQUFDLENBQUMsQ0FBQztJQUNaLENBQUM7SUFFRCxxQkFBcUIsQ0FBQyxvQkFBbUMsSUFBSSxFQUFFLG9CQUFtQyxJQUFJLEVBQUUsV0FBMEIsSUFBSTtRQUNsSSxPQUFPLElBQUksZUFB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QUFtQyxJQUFJLEVBQUUsV0FBMEIsSUFBSTtRQUMxSSxPQUFPLElBQUksdUJBQXVCLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxRQUFRLElBQUksSUFBSSxDQUFDLGFBQWEsRUFBRSxRQUFRLEVBQUUsSUFBSSxzQkFBc0IsQ0FBQztZQUNySCxRQUFRLEVBQUUsaUJBQWlCLElBQUksSUFBSSxDQUFDLGFBQWEsRUFBRSxpQkFBaUI7WUFDcEUsUUFBUSxFQUFFLGlCQUFpQixJQUFJLElBQUksQ0FBQyxhQUFhLEVBQUUsaUJBQWlCO1NBQ3ZFLENBQUMsQ0FBQyxDQUFDO0lBQ1IsQ0FBQztJQUVELHFCQUFxQixDQUFDLG9CQUFtQyxJQUFJLEVBQUUsb0JBQW1DLElBQUksRUFBRSxXQUEwQixJQUFJO1FBQ2xJLE9BQU8sSUFBSSxlQUFlLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxRQUFRLElBQUksSUFBSSxDQUFDLGFBQWEsRUFBRSxRQUFRLEVBQUUsSUFBSSxzQkFBc0IsQ0FBQztZQUM3RyxRQUFRLEVBQUUsaUJBQWlCLElBQUksSUFBSSxDQUFDLGFBQWEsRUFBRSxpQkFBaUI7WUFDcEUsUUFBUSxFQUFFLGlCQUFpQixJQUFJLElBQUksQ0FBQyxhQUFhLEVBQUUsaUJBQWlCO1NBQ3ZFLENBQUMsQ0FBQyxDQUFDO0lBQ1IsQ0FBQztJQUVELG9CQUFvQjtRQUNoQixPQUFPLElBQUksQ0FBQyxhQUFhLEVBQUUsaUJBQWlCLElBQUksMkJBQTJCLENBQUM7SUFDaEYsQ0FBQzs4R0ExRVEsZ0JBQWdCO2tIQUFoQixnQkFBZ0IsY0FESCxNQUFNOzsyRkFDbkIsZ0JBQWdCO2tCQUQ1QixVQUFVO21CQUFDLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRTs7MEJBS3pCLFFBQVEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBPcHRpb25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgSHR0cENsaWVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7XG4gICAgQ29uZmlndXJhdGlvbiBhcyBQdWJsaWNBcGlDb25maWd1cmF0aW9uLFxuICAgIFByb2R1Y3RzU2VydmljZSwgRW52aXJvbm1lbnRzU2VydmljZSwgQ29uZmlnc1NlcnZpY2UsXG4gICAgRmVhdHVyZUZsYWdzU2V0dGluZ3NTZXJ2aWNlLCBGZWF0dXJlRmxhZ1NldHRpbmdWYWx1ZXNTZXJ2aWNlLCBNZVNlcnZpY2UsXG4gICAgSW50ZWdyYXRpb25MaW5rc1NlcnZpY2UsXG4gICAgU2VnbWVudHNTZXJ2aWNlLFxuICAgIEZlYXR1cmVGbGFnU2V0dGluZ1ZhbHVlc1YyU2VydmljZVxufSBmcm9tICduZy1jb25maWdjYXQtcHVibGljYXBpJztcbmltcG9ydCB7IENvbmZpZ3VyYXRpb24gfSBmcm9tICcuLi9jb25maWd1cmF0aW9uJztcblxuQEluamVjdGFibGUoeyBwcm92aWRlZEluOiAncm9vdCcgfSlcbmV4cG9ydCBjbGFzcyBQdWJsaWNBcGlTZXJ2aWNlIHtcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcml2YXRlIGh0dHBDbGllbnQ6IEh0dHBDbGllbnQsXG4gICAgICAgIEBPcHRpb25hbCgpIHByaXZhdGUgY29uZmlndXJhdGlvbjogQ29uZmlndXJhdGlvbikge1xuICAgIH1cblxuICAgIGNyZWF0ZU1lU2VydmljZShiYXNpY0F1dGhVc2VybmFtZTogc3RyaW5nIHwgbnVsbCA9IG51bGwsIGJhc2ljQXV0aFBhc3N3b3JkOiBzdHJpbmcgfCBudWxsID0gbnVsbCwgYmFzZVBhdGg6IHN0cmluZyB8IG51bGwgPSBudWxsKSB7XG4gICAgICAgIHJldHVybiBuZXcgTWVTZXJ2aWNlKHRoaXMuaHR0cENsaWVudCwgYmFzZVBhdGggPz8gdGhpcy5jb25maWd1cmF0aW9uPy5iYXNlUGF0aCxcbiAgICAgICAgICAgIG5ldyBQdWJsaWNBcGlDb25maWd1cmF0aW9uKHtcbiAgICAgICAgICAgICAgICB1c2VybmFtZTogYmFzaWNBdXRoVXNlcm5hbWUgPz8gdGhpcy5jb25maWd1cmF0aW9uPy5iYXNpY0F1dGhVc2VybmFtZSxcbiAgICAgICAgICAgICAgICBwYXNzd29yZDogYmFzaWNBdXRoUGFzc3dvcmQgPz8gdGhpcy5jb25maWd1cmF0aW9uPy5iYXNpY0F1dGhQYXNzd29yZFxuICAgICAgICAgICAgfSkpO1xuICAgIH1cblxuICAgIGNyZWF0ZVByb2R1Y3RzU2VydmljZShiYXNpY0F1dGhVc2VybmFtZTogc3RyaW5nIHwgbnVsbCA9IG51bGwsIGJhc2ljQXV0aFBhc3N3b3JkOiBzdHJpbmcgfCBudWxsID0gbnVsbCwgYmFzZVBhdGg6IHN0cmluZyB8IG51bGwgPSBudWxsKSB7XG4gICAgICAgIHJldHVybiBuZXcgUHJvZHVjdHNTZXJ2aWNlKHRoaXMuaHR0cENsaWVudCwgYmFzZVBhdGggPz8gdGhpcy5jb25maWd1cmF0aW9uPy5iYXNlUGF0aCxcbiAgICAgICAgICAgIG5ldyBQdWJsaWNBcGlDb25maWd1cmF0aW9uKHtcbiAgICAgICAgICAgICAgICB1c2VybmFtZTogYmFzaWNBdXRoVXNlcm5hbWUgPz8gdGhpcy5jb25maWd1cmF0aW9uPy5iYXNpY0F1dGhVc2VybmFtZSxcbiAgICAgICAgICAgICAgICBwYXNzd29yZDogYmFzaWNBdXRoUGFzc3dvcmQgPz8gdGhpcy5jb25maWd1cmF0aW9uPy5iYXNpY0F1dGhQYXNzd29yZFxuICAgICAgICAgICAgfSkpO1xuICAgIH1cblxuICAgIGNyZWF0ZUNvbmZpZ3NTZXJ2aWNlKGJhc2ljQXV0aFVzZXJuYW1lOiBzdHJpbmcgfCBudWxsID0gbnVsbCwgYmFzaWNBdXRoUGFzc3dvcmQ6IHN0cmluZyB8IG51bGwgPSBudWxsLCBiYXNlUGF0aDogc3RyaW5nIHwgbnVsbCA9IG51bGwpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBDb25maWdzU2VydmljZSh0aGlzLmh0dHBDbGllbnQsIGJhc2VQYXRoID8/IHRoaXMuY29uZmlndXJhdGlvbj8uYmFzZVBhdGgsIG5ldyBQdWJsaWNBcGlDb25maWd1cmF0aW9uKHtcbiAgICAgICAgICAgIHVzZXJuYW1lOiBiYXNpY0F1dGhVc2VybmFtZSA/PyB0aGlzLmNvbmZpZ3VyYXRpb24/LmJhc2ljQXV0aFVzZXJuYW1lLFxuICAgICAgICAgICAgcGFzc3dvcmQ6IGJhc2ljQXV0aFBhc3N3b3JkID8/IHRoaXMuY29uZmlndXJhdGlvbj8uYmFzaWNBdXRoUGFzc3dvcmRcbiAgICAgICAgfSkpO1xuICAgIH1cblxuICAgIGNyZWF0ZUVudmlyb25tZW50c1NlcnZpY2UoYmFzaWNBdXRoVXNlcm5hbWU6IHN0cmluZyB8IG51bGwgPSBudWxsLCBiYXNpY0F1dGhQYXNzd29yZDogc3RyaW5nIHwgbnVsbCA9IG51bGwsIGJhc2VQYXRoOiBzdHJpbmcgfCBudWxsID0gbnVsbCkge1xuICAgICAgICByZXR1cm4gbmV3IEVudmlyb25tZW50c1NlcnZpY2UodGhpcy5odHRwQ2xpZW50LCBiYXNlUGF0aCA/PyB0aGlzLmNvbmZpZ3VyYXRpb24/LmJhc2VQYXRoLCBuZXcgUHVibGljQXBpQ29uZmlndXJhdGlvbih7XG4gICAgICAgICAgICB1c2VybmFtZTogYmFzaWNBdXRoVXNlcm5hbWUgPz8gdGhpcy5jb25maWd1cmF0aW9uPy5iYXNpY0F1dGhVc2VybmFtZSxcbiAgICAgICAgICAgIHBhc3N3b3JkOiBiYXNpY0F1dGhQYXNzd29yZCA/PyB0aGlzLmNvbmZpZ3VyYXRpb24/LmJhc2ljQXV0aFBhc3N3b3JkXG4gICAgICAgIH0pKTtcbiAgICB9XG5cbiAgICBjcmVhdGVTZXR0aW5nc1NlcnZpY2UoYmFzaWNBdXRoVXNlcm5hbWU6IHN0cmluZyB8IG51bGwgPSBudWxsLCBiYXNpY0F1dGhQYXNzd29yZDogc3RyaW5nIHwgbnVsbCA9IG51bGwsIGJhc2VQYXRoOiBzdHJpbmcgfCBudWxsID0gbnVsbCkge1xuICAgICAgICByZXR1cm4gbmV3IEZlYXR1cmVGbGFnc1NldHRpbmdzU2VydmljZSh0aGlzLmh0dHBDbGllbnQsIGJhc2VQYXRoID8/IHRoaXMuY29uZmlndXJhdGlvbj8uYmFzZVBhdGgsIG5ldyBQdWJsaWNBcGlDb25maWd1cmF0aW9uKHtcbiAgICAgICAgICAgIHVzZXJuYW1lOiBiYXNpY0F1dGhVc2VybmFtZSA/PyB0aGlzLmNvbmZpZ3VyYXRpb24/LmJhc2ljQXV0aFVzZXJuYW1lLFxuICAgICAgICAgICAgcGFzc3dvcmQ6IGJhc2ljQXV0aFBhc3N3b3JkID8/IHRoaXMuY29uZmlndXJhdGlvbj8uYmFzaWNBdXRoUGFzc3dvcmRcbiAgICAgICAgfSkpO1xuICAgIH1cblxuICAgIGNyZWF0ZVNldHRpbmdWYWx1ZXNWMlNlcnZpY2UoYmFzaWNBdXRoVXNlcm5hbWU6IHN0cmluZyB8IG51bGwgPSBudWxsLCBiYXNpY0F1dGhQYXNzd29yZDogc3RyaW5nIHwgbnVsbCA9IG51bGwsIGJhc2VQYXRoOiBzdHJpbmcgfCBudWxsID0gbnVsbCkge1xuICAgICAgICByZXR1cm4gbmV3IEZlYXR1cmVGbGFnU2V0dGluZ1ZhbHVlc1YyU2VydmljZSh0aGlzLmh0dHBDbGllbnQsIGJhc2VQYXRoID8/IHRoaXMuY29uZmlndXJhdGlvbj8uYmFzZVBhdGgsIG5ldyBQdWJsaWNBcGlDb25maWd1cmF0aW9uKHtcbiAgICAgICAgICAgIHVzZXJuYW1lOiBiYXNpY0F1dGhVc2VybmFtZSA/PyB0aGlzLmNvbmZpZ3VyYXRpb24/LmJhc2ljQXV0aFVzZXJuYW1lLFxuICAgICAgICAgICAgcGFzc3dvcmQ6IGJhc2ljQXV0aFBhc3N3b3JkID8/IHRoaXMuY29uZmlndXJhdGlvbj8uYmFzaWNBdXRoUGFzc3dvcmRcbiAgICAgICAgfSkpO1xuICAgIH1cblxuICAgIGNyZWF0ZVNldHRpbmdWYWx1ZXNTZXJ2aWNlKGJhc2ljQXV0aFVzZXJuYW1lOiBzdHJpbmcgfCBudWxsID0gbnVsbCwgYmFzaWNBdXRoUGFzc3dvcmQ6IHN0cmluZyB8IG51bGwgPSBudWxsLCBiYXNlUGF0aDogc3RyaW5nIHwgbnVsbCA9IG51bGwpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBGZWF0dXJlRmxhZ1NldHRpbmdWYWx1ZXNTZXJ2aWNlKHRoaXMuaHR0cENsaWVudCwgYmFzZVBhdGggPz8gdGhpcy5jb25maWd1cmF0aW9uPy5iYXNlUGF0aCwgbmV3IFB1YmxpY0FwaUNvbmZpZ3VyYXRpb24oe1xuICAgICAgICAgICAgdXNlcm5hbWU6IGJhc2ljQXV0aFVzZXJuYW1lID8/IHRoaXMuY29uZmlndXJhdGlvbj8uYmFzaWNBdXRoVXNlcm5hbWUsXG4gICAgICAgICAgICBwYXNzd29yZDogYmFzaWNBdXRoUGFzc3dvcmQgPz8gdGhpcy5jb25maWd1cmF0aW9uPy5iYXNpY0F1dGhQYXNzd29yZFxuICAgICAgICB9KSk7XG4gICAgfVxuXG4gICAgY3JlYXRlSW50ZWdyYXRpb25MaW5rc1NlcnZpY2UoYmFzaWNBdXRoVXNlcm5hbWU6IHN0cmluZyB8IG51bGwgPSBudWxsLCBiYXNpY0F1dGhQYXNzd29yZDogc3RyaW5nIHwgbnVsbCA9IG51bGwsIGJhc2VQYXRoOiBzdHJpbmcgfCBudWxsID0gbnVsbCkge1xuICAgICAgICByZXR1cm4gbmV3IEludGVncmF0aW9uTGlua3NTZXJ2aWNlKHRoaXMuaHR0cENsaWVudCwgYmFzZVBhdGggPz8gdGhpcy5jb25maWd1cmF0aW9uPy5iYXNlUGF0aCwgbmV3IFB1YmxpY0FwaUNvbmZpZ3VyYXRpb24oe1xuICAgICAgICAgICAgdXNlcm5hbWU6IGJhc2ljQXV0aFVzZXJuYW1lID8/IHRoaXMuY29uZmlndXJhdGlvbj8uYmFzaWNBdXRoVXNlcm5hbWUsXG4gICAgICAgICAgICBwYXNzd29yZDogYmFzaWNBdXRoUGFzc3dvcmQgPz8gdGhpcy5jb25maWd1cmF0aW9uPy5iYXNpY0F1dGhQYXNzd29yZFxuICAgICAgICB9KSk7XG4gICAgfVxuXG4gICAgY3JlYXRlU2VnbWVudHNTZXJ2aWNlKGJhc2ljQXV0aFVzZXJuYW1lOiBzdHJpbmcgfCBudWxsID0gbnVsbCwgYmFzaWNBdXRoUGFzc3dvcmQ6IHN0cmluZyB8IG51bGwgPSBudWxsLCBiYXNlUGF0aDogc3RyaW5nIHwgbnVsbCA9IG51bGwpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBTZWdtZW50c1NlcnZpY2UodGhpcy5odHRwQ2xpZW50LCBiYXNlUGF0aCA/PyB0aGlzLmNvbmZpZ3VyYXRpb24/LmJhc2VQYXRoLCBuZXcgUHVibGljQXBpQ29uZmlndXJhdGlvbih7XG4gICAgICAgICAgICB1c2VybmFtZTogYmFzaWNBdXRoVXNlcm5hbWUgPz8gdGhpcy5jb25maWd1cmF0aW9uPy5iYXNpY0F1dGhVc2VybmFtZSxcbiAgICAgICAgICAgIHBhc3N3b3JkOiBiYXNpY0F1dGhQYXNzd29yZCA/PyB0aGlzLmNvbmZpZ3VyYXRpb24/LmJhc2ljQXV0aFBhc3N3b3JkXG4gICAgICAgIH0pKTtcbiAgICB9XG5cbiAgICBnZXREYXNoYm9hcmRCYXNlUGF0aCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY29uZmlndXJhdGlvbj8uZGFzaGJvYXJkQmFzZVBhdGggPz8gJ2h0dHBzOi8vYXBwLmNvbmZpZ2NhdC5jb20nO1xuICAgIH1cbn1cbiJdfQ==
@@ -0,0 +1,171 @@
1
+ import { Injectable } from '@angular/core';
2
+ import { Validators } from '@angular/forms';
3
+ import { RolloutRuleComparator, SettingType } from 'ng-configcat-publicapi';
4
+ import { FormHelper } from './form-helper';
5
+ import * as i0 from "@angular/core";
6
+ import * as i1 from "@angular/forms";
7
+ export class SettingListFormHelper {
8
+ constructor(formBuilder) {
9
+ this.formBuilder = formBuilder;
10
+ }
11
+ createSettingValuesFormGroup(settingValuesModel) {
12
+ const formGroup = this.formBuilder.group({
13
+ settingValues: this.formBuilder.array(settingValuesModel.settingValues.map(sv => {
14
+ return this.createSettingValueFormGroup(sv, settingValuesModel.readOnly);
15
+ })),
16
+ // Decorator
17
+ environment: this.formBuilder.group({
18
+ environmentId: [{ value: settingValuesModel.environment.environmentId, disabled: true }],
19
+ name: [{ value: settingValuesModel.environment.name, disabled: true }],
20
+ }),
21
+ comparisonAttributes: [[]]
22
+ });
23
+ const rolloutRules = this.getAllRolloutRules(formGroup);
24
+ const comparisonAttributes = this.getComparisonAttributes(rolloutRules);
25
+ formGroup.patchValue({ comparisonAttributes: comparisonAttributes });
26
+ return formGroup;
27
+ }
28
+ createSettingValueFormGroup(settingValueModel, readOnly) {
29
+ if (!settingValueModel.setting) {
30
+ return this.formBuilder.group({});
31
+ }
32
+ return this.formBuilder.group({
33
+ settingId: [settingValueModel.setting.settingId],
34
+ value: [
35
+ { value: settingValueModel.value, disabled: readOnly },
36
+ this.getValidatorsForSettingType(settingValueModel.setting.settingType)
37
+ ],
38
+ rolloutPercentageItems: settingValueModel.rolloutPercentageItems
39
+ ? this.formBuilder.array(settingValueModel.rolloutPercentageItems.map(p => {
40
+ // @ts-ignore()
41
+ return this.createRolloutPercentageItemFormGroup(p, readOnly, settingValueModel.setting.settingType);
42
+ }))
43
+ : this.formBuilder.array([]), rolloutRules: settingValueModel.rolloutRules
44
+ ? this.formBuilder.array(settingValueModel.rolloutRules.map(r => {
45
+ // @ts-ignore()
46
+ return this.createRolloutRuleFormGroup(r, readOnly, settingValueModel.setting.settingType);
47
+ }))
48
+ : this.formBuilder.array([]),
49
+ updatedAt: [{ value: settingValueModel.updatedAt, disabled: true }],
50
+ lastUpdaterUserEmail: [{ value: settingValueModel.lastUpdaterUserEmail, disabled: true }],
51
+ lastUpdaterUserFullName: [{ value: settingValueModel.lastUpdaterUserFullName, disabled: true }],
52
+ rolloutPercentageItemsSum: [{ value: 100, disabled: false }, [Validators.min(100), Validators.max(100)]],
53
+ // Decoration
54
+ setting: this.formBuilder.group({
55
+ settingId: [{ value: settingValueModel.setting.settingId, disabled: true }],
56
+ key: [{ value: settingValueModel.setting.key, disabled: true }],
57
+ name: [{ value: settingValueModel.setting.name, disabled: true }],
58
+ hint: [{ value: settingValueModel.setting.hint, disabled: true }],
59
+ settingType: [{ value: settingValueModel.setting.settingType, disabled: true }],
60
+ creatorEmail: [{ value: settingValueModel.setting.creatorEmail, disabled: true }],
61
+ creatorFullName: [{ value: settingValueModel.setting.creatorFullName, disabled: true }],
62
+ createdAt: [{ value: settingValueModel.setting.createdAt, disabled: true }]
63
+ }),
64
+ integrationLinks: settingValueModel.integrationLinks ? this.formBuilder.array(settingValueModel.integrationLinks.map(il => {
65
+ return this.formBuilder.group({
66
+ key: [{ value: il.key, disabled: true }],
67
+ description: [{ value: il.description, disabled: true }],
68
+ integrationLinkType: [{ value: il.integrationLinkType, disabled: true }],
69
+ url: [{ value: il.url, disabled: true }],
70
+ });
71
+ })) : this.formBuilder.array([])
72
+ });
73
+ }
74
+ createRolloutPercentageItemFormGroup(p, readOnly, settingType) {
75
+ return this.formBuilder.group({
76
+ percentage: [{ value: p.percentage, disabled: readOnly }, [Validators.required, Validators.min(0), Validators.max(100)]],
77
+ value: [
78
+ { value: p.value, disabled: readOnly },
79
+ this.getValidatorsForSettingType(settingType)
80
+ ],
81
+ valueDisabled: [
82
+ { value: p.value, disabled: true }, // For percentage item value
83
+ ]
84
+ });
85
+ }
86
+ createRolloutRuleFormGroup(r, readOnly, settingType) {
87
+ if (r.comparator) {
88
+ return this.formBuilder.group({
89
+ type: [{ value: 0, disabled: true }],
90
+ comparisonAttribute: [{ value: r.comparisonAttribute, disabled: readOnly }, [Validators.required]],
91
+ comparator: [{ value: r.comparator, disabled: readOnly }, [Validators.required]],
92
+ comparisonValue: [{ value: r.comparisonValue, disabled: readOnly }, [Validators.required]],
93
+ value: [
94
+ { value: r.value, disabled: readOnly },
95
+ this.getValidatorsForSettingType(settingType)
96
+ ],
97
+ });
98
+ }
99
+ else if (r.segmentComparator) {
100
+ return this.formBuilder.group({
101
+ type: [{ value: 1, disabled: true }],
102
+ segmentComparator: [{ value: r.segmentComparator, disabled: readOnly }, [Validators.required]],
103
+ segmentId: [{ value: r.segmentId, disabled: readOnly }, [Validators.required]],
104
+ value: [
105
+ { value: r.value, disabled: readOnly },
106
+ this.getValidatorsForSettingType(settingType)
107
+ ],
108
+ });
109
+ }
110
+ else {
111
+ throw new Error('Invalid rollout rule');
112
+ }
113
+ }
114
+ getValidatorsForSettingType(settingType) {
115
+ switch (settingType) {
116
+ case SettingType.Int:
117
+ return [Validators.required,
118
+ Validators.min(-2147483648), Validators.max(2147483647), Validators.pattern('^[-+]?[0-9]\\d*$')];
119
+ case SettingType.Double:
120
+ return [Validators.required, Validators.min(-1.79769313486232E+308), Validators.max(1.79769313486232E+308)];
121
+ case SettingType.String:
122
+ case SettingType.Boolean:
123
+ return [Validators.required];
124
+ default:
125
+ return [];
126
+ }
127
+ }
128
+ getAllRolloutRules(formGroup) {
129
+ const settingValues = formGroup.get('settingValues');
130
+ const rolloutRules = settingValues.controls.map(cv => cv.get('rolloutRules').value);
131
+ return rolloutRules.length === 0 ? rolloutRules : rolloutRules.reduce((a, b) => a.concat(b));
132
+ }
133
+ getComparisonAttributes(rolloutRules) {
134
+ if (rolloutRules.length > 0) {
135
+ const currentComparisonAttributes = rolloutRules.map(r => r.comparisonAttribute);
136
+ const defaultComparisonAttributes = ['Identifier', 'Email', 'Country'];
137
+ const comparisonAttributes = currentComparisonAttributes.filter(c => defaultComparisonAttributes.indexOf(c) === -1);
138
+ return Array.from(new Set(comparisonAttributes));
139
+ }
140
+ else {
141
+ return [];
142
+ }
143
+ }
144
+ getComparisonValueType(comparator) {
145
+ switch (comparator) {
146
+ case RolloutRuleComparator.NumberEquals:
147
+ case RolloutRuleComparator.NumberDoesNotEqual:
148
+ case RolloutRuleComparator.NumberLess:
149
+ case RolloutRuleComparator.NumberLessOrEquals:
150
+ case RolloutRuleComparator.NumberGreater:
151
+ case RolloutRuleComparator.NumberGreaterOrEquals:
152
+ return 'number';
153
+ default:
154
+ return 'text';
155
+ }
156
+ }
157
+ normalizeComparisonValue(comparator, comparisonValue) {
158
+ // In the case of number inputs value is a number but API expects
159
+ // a string, so we need to make sure that it's converted to string.
160
+ return comparator && this.getComparisonValueType(comparator) === "number"
161
+ ? FormHelper.normalizeNumberStoredAsString(comparisonValue)
162
+ : comparisonValue;
163
+ }
164
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: SettingListFormHelper, deps: [{ token: i1.UntypedFormBuilder }], target: i0.ɵɵFactoryTarget.Injectable }); }
165
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: SettingListFormHelper, providedIn: 'root' }); }
166
+ }
167
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: SettingListFormHelper, decorators: [{
168
+ type: Injectable,
169
+ args: [{ providedIn: 'root' }]
170
+ }], ctorParameters: () => [{ type: i1.UntypedFormBuilder }] });
171
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2V0dGluZy1saXN0LWZvcm0taGVscGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctY29uZmlnY2F0LXB1YmxpY2FwaS11aS9zcmMvbGliL19zZXJ2aWNlcy9zZXR0aW5nLWxpc3QtZm9ybS1oZWxwZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUUzQyxPQUFPLEVBQXNCLFVBQVUsRUFBc0MsTUFBTSxnQkFBZ0IsQ0FBQztBQUNwRyxPQUFPLEVBQThCLHFCQUFxQixFQUFvQixXQUFXLEVBQXFCLE1BQU0sd0JBQXdCLENBQUM7QUFDN0ksT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7O0FBRzNDLE1BQU0sT0FBTyxxQkFBcUI7SUFFOUIsWUFBb0IsV0FBK0I7UUFBL0IsZ0JBQVcsR0FBWCxXQUFXLENBQW9CO0lBQUksQ0FBQztJQUV4RCw0QkFBNEIsQ0FBQyxrQkFBc0M7UUFDL0QsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUM7WUFDckMsYUFBYSxFQUFFLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUNqQyxrQkFBa0IsQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFO2dCQUN0QyxPQUFPLElBQUksQ0FBQywyQkFBMkIsQ0FBQyxFQUFFLEVBQUUsa0JBQWtCLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDN0UsQ0FBQyxDQUFDLENBQUM7WUFFUCxZQUFZO1lBQ1osV0FBVyxFQUFFLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDO2dCQUNoQyxhQUFhLEVBQUUsQ0FBQyxFQUFFLEtBQUssRUFBRSxrQkFBa0IsQ0FBQyxXQUFXLENBQUMsYUFBYSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsQ0FBQztnQkFDeEYsSUFBSSxFQUFFLENBQUMsRUFBRSxLQUFLLEVBQUUsa0JBQWtCLENBQUMsV0FBVyxDQUFDLElBQUksRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLENBQUM7YUFDekUsQ0FBQztZQUVGLG9CQUFvQixFQUFFLENBQUMsRUFBRSxDQUFDO1NBQzdCLENBQUMsQ0FBQztRQUVILE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUN4RCxNQUFNLG9CQUFvQixHQUFHLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUN4RSxTQUFTLENBQUMsVUFBVSxDQUFDLEVBQUUsb0JBQW9CLEVBQUUsb0JBQW9CLEVBQUUsQ0FBQyxDQUFDO1FBQ3JFLE9BQU8sU0FBUyxDQUFDO0lBQ3JCLENBQUM7SUFHRCwyQkFBMkIsQ0FBQyxpQkFBb0MsRUFBRSxRQUFpQjtRQUMvRSxJQUFJLENBQUMsaUJBQWlCLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDN0IsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUN0QyxDQUFDO1FBQ0QsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQztZQUMxQixTQUFTLEVBQUUsQ0FBQyxpQkFBaUIsQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDO1lBQ2hELEtBQUssRUFBRTtnQkFDSCxFQUFFLEtBQUssRUFBRSxpQkFBaUIsQ0FBQyxLQUFLLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRTtnQkFDdEQsSUFBSSxDQUFDLDJCQUEyQixDQUFDLGlCQUFpQixDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUM7YUFDMUU7WUFDRCxzQkFBc0IsRUFBRSxpQkFBaUIsQ0FBQyxzQkFBc0I7Z0JBQzVELENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQyxzQkFBc0IsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUU7b0JBQ3RFLGVBQWU7b0JBQ2YsT0FBTyxJQUFJLENBQUMsb0NBQW9DLENBQUMsQ0FBQyxFQUFFLFFBQVEsRUFBRSxpQkFBaUIsQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDLENBQUM7Z0JBQ3pHLENBQUMsQ0FBQyxDQUFDO2dCQUNILENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsRUFBRSxZQUFZLEVBQUUsaUJBQWlCLENBQUMsWUFBWTtnQkFDdEUsQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLGlCQUFpQixDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUU7b0JBQzVELGVBQWU7b0JBQ2YsT0FBTyxJQUFJLENBQUMsMEJBQTBCLENBQUMsQ0FBQyxFQUFFLFFBQVEsRUFBRSxpQkFBaUIsQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDLENBQUM7Z0JBQy9GLENBQUMsQ0FBQyxDQUFDO2dCQUNILENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFFcEMsU0FBUyxFQUFFLENBQUMsRUFBRSxLQUFLLEVBQUUsaUJBQWlCLENBQUMsU0FBUyxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsQ0FBQztZQUNuRSxvQkFBb0IsRUFBRSxDQUFDLEVBQUUsS0FBSyxFQUFFLGlCQUFpQixDQUFDLG9CQUFvQixFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsQ0FBQztZQUN6Rix1QkFBdUIsRUFBRSxDQUFDLEVBQUUsS0FBSyxFQUFFLGlCQUFpQixDQUFDLHVCQUF1QixFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsQ0FBQztZQUUvRix5QkFBeUIsRUFBRSxDQUFDLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLEVBQUUsQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFLFVBQVUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztZQUN4RyxhQUFhO1lBQ2IsT0FBTyxFQUFFLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDO2dCQUM1QixTQUFTLEVBQUUsQ0FBQyxFQUFFLEtBQUssRUFBRSxpQkFBaUIsQ0FBQyxPQUFPLENBQUMsU0FBUyxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsQ0FBQztnQkFDM0UsR0FBRyxFQUFFLENBQUMsRUFBRSxLQUFLLEVBQUUsaUJBQWlCLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLENBQUM7Z0JBQy9ELElBQUksRUFBRSxDQUFDLEVBQUUsS0FBSyxFQUFFLGlCQUFpQixDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxDQUFDO2dCQUNqRSxJQUFJLEVBQUUsQ0FBQyxFQUFFLEtBQUssRUFBRSxpQkFBaUIsQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsQ0FBQztnQkFDakUsV0FBVyxFQUFFLENBQUMsRUFBRSxLQUFLLEVBQUUsaUJBQWlCLENBQUMsT0FBTyxDQUFDLFdBQVcsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLENBQUM7Z0JBQy9FLFlBQVksRUFBRSxDQUFDLEVBQUUsS0FBSyxFQUFFLGlCQUFpQixDQUFDLE9BQU8sQ0FBQyxZQUFZLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxDQUFDO2dCQUNqRixlQUFlLEVBQUUsQ0FBQyxFQUFFLEtBQUssRUFBRSxpQkFBaUIsQ0FBQyxPQUFPLENBQUMsZUFBZSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsQ0FBQztnQkFDdkYsU0FBUyxFQUFFLENBQUMsRUFBRSxLQUFLLEVBQUUsaUJBQWlCLENBQUMsT0FBTyxDQUFDLFNBQVMsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLENBQUM7YUFDOUUsQ0FBQztZQUVGLGdCQUFnQixFQUFFLGlCQUFpQixDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQyxnQkFBZ0IsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUU7Z0JBQ3RILE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUM7b0JBQzFCLEdBQUcsRUFBRSxDQUFDLEVBQUUsS0FBSyxFQUFFLEVBQUUsQ0FBQyxHQUFHLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxDQUFDO29CQUN4QyxXQUFXLEVBQUUsQ0FBQyxFQUFFLEtBQUssRUFBRSxFQUFFLENBQUMsV0FBVyxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsQ0FBQztvQkFDeEQsbUJBQW1CLEVBQUUsQ0FBQyxFQUFFLEtBQUssRUFBRSxFQUFFLENBQUMsbUJBQW1CLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxDQUFDO29CQUN4RSxHQUFHLEVBQUUsQ0FBQyxFQUFFLEtBQUssRUFBRSxFQUFFLENBQUMsR0FBRyxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsQ0FBQztpQkFDM0MsQ0FBQyxDQUFDO1lBQ1AsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO1NBQ25DLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFRCxvQ0FBb0MsQ0FBQyxDQUE2QixFQUFFLFFBQWlCLEVBQUUsV0FBb0M7UUFDdkgsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQztZQUMxQixVQUFVLEVBQUUsQ0FBQyxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUMsVUFBVSxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsRUFBRSxDQUFDLFVBQVUsQ0FBQyxRQUFRLEVBQUUsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxVQUFVLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7WUFDeEgsS0FBSyxFQUFFO2dCQUNILEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQyxLQUFLLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRTtnQkFDdEMsSUFBSSxDQUFDLDJCQUEyQixDQUFDLFdBQVcsQ0FBQzthQUNoRDtZQUNELGFBQWEsRUFBRTtnQkFDWCxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUMsS0FBSyxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsRUFBRSw0QkFBNEI7YUFDbkU7U0FDSixDQUFDLENBQUM7SUFDUCxDQUFDO0lBRUQsMEJBQTBCLENBQUMsQ0FBbUIsRUFBRSxRQUFpQixFQUFFLFdBQW9DO1FBQ25HLElBQUksQ0FBQyxDQUFDLFVBQVUsRUFBRSxDQUFDO1lBQ2YsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQztnQkFDMUIsSUFBSSxFQUFFLENBQUMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsQ0FBQztnQkFDcEMsbUJBQW1CLEVBQUUsQ0FBQyxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUMsbUJBQW1CLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxFQUFFLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxDQUFDO2dCQUNsRyxVQUFVLEVBQUUsQ0FBQyxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUMsVUFBVSxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsRUFBRSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsQ0FBQztnQkFDaEYsZUFBZSxFQUFFLENBQUMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDLGVBQWUsRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLEVBQUUsQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLENBQUM7Z0JBQzFGLEtBQUssRUFBRTtvQkFDSCxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUMsS0FBSyxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUU7b0JBQ3RDLElBQUksQ0FBQywyQkFBMkIsQ0FBQyxXQUFXLENBQUM7aUJBQ2hEO2FBQ0osQ0FBQyxDQUFDO1FBQ1AsQ0FBQzthQUFNLElBQUksQ0FBQyxDQUFDLGlCQUFpQixFQUFFLENBQUM7WUFDN0IsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQztnQkFDMUIsSUFBSSxFQUFFLENBQUMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsQ0FBQztnQkFDcEMsaUJBQWlCLEVBQUUsQ0FBQyxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUMsaUJBQWlCLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxFQUFFLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxDQUFDO2dCQUM5RixTQUFTLEVBQUUsQ0FBQyxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUMsU0FBUyxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsRUFBRSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsQ0FBQztnQkFDOUUsS0FBSyxFQUFFO29CQUNILEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQyxLQUFLLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRTtvQkFDdEMsSUFBSSxDQUFDLDJCQUEyQixDQUFDLFdBQVcsQ0FBQztpQkFDaEQ7YUFDSixDQUFDLENBQUM7UUFDUCxDQUFDO2FBQU0sQ0FBQztZQUNKLE1BQU0sSUFBSSxLQUFLLENBQUMsc0JBQXNCLENBQUMsQ0FBQztRQUM1QyxDQUFDO0lBQ0wsQ0FBQztJQUVPLDJCQUEyQixDQUFDLFdBQW9DO1FBQ3BFLFFBQVEsV0FBVyxFQUFFLENBQUM7WUFDbEIsS0FBSyxXQUFXLENBQUMsR0FBRztnQkFDaEIsT0FBTyxDQUFDLFVBQVUsQ0FBQyxRQUFRO29CQUMzQixVQUFVLENBQUMsR0FBRyxDQUFDLENBQUMsVUFBVSxDQUFDLEVBQUUsVUFBVSxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsRUFBRSxVQUFVLENBQUMsT0FBTyxDQUFDLGtCQUFrQixDQUFDLENBQUMsQ0FBQztZQUNyRyxLQUFLLFdBQVcsQ0FBQyxNQUFNO2dCQUNuQixPQUFPLENBQUMsVUFBVSxDQUFDLFFBQVEsRUFBRSxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUMscUJBQXFCLENBQUMsRUFBRSxVQUFVLENBQUMsR0FBRyxDQUFDLHFCQUFxQixDQUFDLENBQUMsQ0FBQztZQUNoSCxLQUFLLFdBQVcsQ0FBQyxNQUFNLENBQUM7WUFDeEIsS0FBSyxXQUFXLENBQUMsT0FBTztnQkFDcEIsT0FBTyxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUNqQztnQkFDSSxPQUFPLEVBQUUsQ0FBQztRQUNsQixDQUFDO0lBQ0wsQ0FBQztJQUVPLGtCQUFrQixDQUFDLFNBQTJCO1FBQ2xELE1BQU0sYUFBYSxHQUFHLFNBQVMsQ0FBQyxHQUFHLENBQUMsZUFBZSxDQUFxQixDQUFDO1FBQ3pFLE1BQU0sWUFBWSxHQUFHLGFBQWEsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxjQUFjLENBQXNCLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDMUcsT0FBTyxZQUFZLENBQUMsTUFBTSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2pHLENBQUM7SUFFTyx1QkFBdUIsQ0FBQyxZQUFtQjtRQUMvQyxJQUFJLFlBQVksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDMUIsTUFBTSwyQkFBMkIsR0FBRyxZQUFZLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLG1CQUFtQixDQUFDLENBQUM7WUFFakYsTUFBTSwyQkFBMkIsR0FBRyxDQUFDLFlBQVksRUFBRSxPQUFPLEVBQUUsU0FBUyxDQUFDLENBQUM7WUFDdkUsTUFBTSxvQkFBb0IsR0FBRywyQkFBMkIsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQywyQkFBMkIsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUNwSCxPQUFPLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxHQUFHLENBQUMsb0JBQW9CLENBQUMsQ0FBQyxDQUFDO1FBQ3JELENBQUM7YUFBTSxDQUFDO1lBQ0osT0FBTyxFQUFFLENBQUM7UUFDZCxDQUFDO0lBQ0wsQ0FBQztJQUVELHNCQUFzQixDQUFDLFVBQWlDO1FBQ3BELFFBQVEsVUFBVSxFQUFFLENBQUM7WUFDakIsS0FBSyxxQkFBcUIsQ0FBQyxZQUFZLENBQUM7WUFDeEMsS0FBSyxxQkFBcUIsQ0FBQyxrQkFBa0IsQ0FBQztZQUM5QyxLQUFLLHFCQUFxQixDQUFDLFVBQVUsQ0FBQztZQUN0QyxLQUFLLHFCQUFxQixDQUFDLGtCQUFrQixDQUFDO1lBQzlDLEtBQUsscUJBQXFCLENBQUMsYUFBYSxDQUFDO1lBQ3pDLEtBQUsscUJBQXFCLENBQUMscUJBQXFCO2dCQUM1QyxPQUFPLFFBQVEsQ0FBQztZQUNwQjtnQkFDSSxPQUFPLE1BQU0sQ0FBQztRQUN0QixDQUFDO0lBQ0wsQ0FBQztJQUVELHdCQUF3QixDQUFDLFVBQTZDLEVBQUUsZUFBb0I7UUFDeEYsaUVBQWlFO1FBQ2pFLG1FQUFtRTtRQUNuRSxPQUFPLFVBQVUsSUFBSSxJQUFJLENBQUMsc0JBQXNCLENBQUMsVUFBVSxDQUFDLEtBQUssUUFBUTtZQUNyRSxDQUFDLENBQUMsVUFBVSxDQUFDLDZCQUE2QixDQUFDLGVBQWUsQ0FBQztZQUMzRCxDQUFDLENBQUMsZUFBZSxDQUFDO0lBQzFCLENBQUM7OEdBMUtRLHFCQUFxQjtrSEFBckIscUJBQXFCLGNBRFIsTUFBTTs7MkZBQ25CLHFCQUFxQjtrQkFEakMsVUFBVTttQkFBQyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBTZXR0aW5nVmFsdWVzTW9kZWwgfSBmcm9tICcuLi9fbW9kZWxzL3NldHRpbmdWYWx1ZXNNb2RlbCc7XG5pbXBvcnQgeyBVbnR5cGVkRm9ybUJ1aWxkZXIsIFZhbGlkYXRvcnMsIFVudHlwZWRGb3JtR3JvdXAsIFVudHlwZWRGb3JtQXJyYXkgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBSb2xsb3V0UGVyY2VudGFnZUl0ZW1Nb2RlbCwgUm9sbG91dFJ1bGVDb21wYXJhdG9yLCBSb2xsb3V0UnVsZU1vZGVsLCBTZXR0aW5nVHlwZSwgU2V0dGluZ1ZhbHVlTW9kZWwgfSBmcm9tICduZy1jb25maWdjYXQtcHVibGljYXBpJztcbmltcG9ydCB7IEZvcm1IZWxwZXIgfSBmcm9tICcuL2Zvcm0taGVscGVyJztcblxuQEluamVjdGFibGUoeyBwcm92aWRlZEluOiAncm9vdCcgfSlcbmV4cG9ydCBjbGFzcyBTZXR0aW5nTGlzdEZvcm1IZWxwZXIge1xuXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSBmb3JtQnVpbGRlcjogVW50eXBlZEZvcm1CdWlsZGVyKSB7IH1cblxuICAgIGNyZWF0ZVNldHRpbmdWYWx1ZXNGb3JtR3JvdXAoc2V0dGluZ1ZhbHVlc01vZGVsOiBTZXR0aW5nVmFsdWVzTW9kZWwpIHtcbiAgICAgICAgY29uc3QgZm9ybUdyb3VwID0gdGhpcy5mb3JtQnVpbGRlci5ncm91cCh7XG4gICAgICAgICAgICBzZXR0aW5nVmFsdWVzOiB0aGlzLmZvcm1CdWlsZGVyLmFycmF5KFxuICAgICAgICAgICAgICAgIHNldHRpbmdWYWx1ZXNNb2RlbC5zZXR0aW5nVmFsdWVzLm1hcChzdiA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmNyZWF0ZVNldHRpbmdWYWx1ZUZvcm1Hcm91cChzdiwgc2V0dGluZ1ZhbHVlc01vZGVsLnJlYWRPbmx5KTtcbiAgICAgICAgICAgICAgICB9KSksXG5cbiAgICAgICAgICAgIC8vIERlY29yYXRvclxuICAgICAgICAgICAgZW52aXJvbm1lbnQ6IHRoaXMuZm9ybUJ1aWxkZXIuZ3JvdXAoe1xuICAgICAgICAgICAgICAgIGVudmlyb25tZW50SWQ6IFt7IHZhbHVlOiBzZXR0aW5nVmFsdWVzTW9kZWwuZW52aXJvbm1lbnQuZW52aXJvbm1lbnRJZCwgZGlzYWJsZWQ6IHRydWUgfV0sXG4gICAgICAgICAgICAgICAgbmFtZTogW3sgdmFsdWU6IHNldHRpbmdWYWx1ZXNNb2RlbC5lbnZpcm9ubWVudC5uYW1lLCBkaXNhYmxlZDogdHJ1ZSB9XSxcbiAgICAgICAgICAgIH0pLFxuXG4gICAgICAgICAgICBjb21wYXJpc29uQXR0cmlidXRlczogW1tdXVxuICAgICAgICB9KTtcblxuICAgICAgICBjb25zdCByb2xsb3V0UnVsZXMgPSB0aGlzLmdldEFsbFJvbGxvdXRSdWxlcyhmb3JtR3JvdXApO1xuICAgICAgICBjb25zdCBjb21wYXJpc29uQXR0cmlidXRlcyA9IHRoaXMuZ2V0Q29tcGFyaXNvbkF0dHJpYnV0ZXMocm9sbG91dFJ1bGVzKTtcbiAgICAgICAgZm9ybUdyb3VwLnBhdGNoVmFsdWUoeyBjb21wYXJpc29uQXR0cmlidXRlczogY29tcGFyaXNvbkF0dHJpYnV0ZXMgfSk7XG4gICAgICAgIHJldHVybiBmb3JtR3JvdXA7XG4gICAgfVxuXG5cbiAgICBjcmVhdGVTZXR0aW5nVmFsdWVGb3JtR3JvdXAoc2V0dGluZ1ZhbHVlTW9kZWw6IFNldHRpbmdWYWx1ZU1vZGVsLCByZWFkT25seTogYm9vbGVhbikge1xuICAgICAgICBpZiAoIXNldHRpbmdWYWx1ZU1vZGVsLnNldHRpbmcpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmZvcm1CdWlsZGVyLmdyb3VwKHt9KTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy5mb3JtQnVpbGRlci5ncm91cCh7XG4gICAgICAgICAgICBzZXR0aW5nSWQ6IFtzZXR0aW5nVmFsdWVNb2RlbC5zZXR0aW5nLnNldHRpbmdJZF0sXG4gICAgICAgICAgICB2YWx1ZTogW1xuICAgICAgICAgICAgICAgIHsgdmFsdWU6IHNldHRpbmdWYWx1ZU1vZGVsLnZhbHVlLCBkaXNhYmxlZDogcmVhZE9ubHkgfSxcbiAgICAgICAgICAgICAgICB0aGlzLmdldFZhbGlkYXRvcnNGb3JTZXR0aW5nVHlwZShzZXR0aW5nVmFsdWVNb2RlbC5zZXR0aW5nLnNldHRpbmdUeXBlKVxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIHJvbGxvdXRQZXJjZW50YWdlSXRlbXM6IHNldHRpbmdWYWx1ZU1vZGVsLnJvbGxvdXRQZXJjZW50YWdlSXRlbXNcbiAgICAgICAgICAgICAgICA/IHRoaXMuZm9ybUJ1aWxkZXIuYXJyYXkoc2V0dGluZ1ZhbHVlTW9kZWwucm9sbG91dFBlcmNlbnRhZ2VJdGVtcy5tYXAocCA9PiB7XG4gICAgICAgICAgICAgICAgICAgIC8vIEB0cy1pZ25vcmUoKVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5jcmVhdGVSb2xsb3V0UGVyY2VudGFnZUl0ZW1Gb3JtR3JvdXAocCwgcmVhZE9ubHksIHNldHRpbmdWYWx1ZU1vZGVsLnNldHRpbmcuc2V0dGluZ1R5cGUpO1xuICAgICAgICAgICAgICAgIH0pKVxuICAgICAgICAgICAgICAgIDogdGhpcy5mb3JtQnVpbGRlci5hcnJheShbXSksIHJvbGxvdXRSdWxlczogc2V0dGluZ1ZhbHVlTW9kZWwucm9sbG91dFJ1bGVzXG4gICAgICAgICAgICAgICAgICAgID8gdGhpcy5mb3JtQnVpbGRlci5hcnJheShzZXR0aW5nVmFsdWVNb2RlbC5yb2xsb3V0UnVsZXMubWFwKHIgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gQHRzLWlnbm9yZSgpXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5jcmVhdGVSb2xsb3V0UnVsZUZvcm1Hcm91cChyLCByZWFkT25seSwgc2V0dGluZ1ZhbHVlTW9kZWwuc2V0dGluZy5zZXR0aW5nVHlwZSk7XG4gICAgICAgICAgICAgICAgICAgIH0pKVxuICAgICAgICAgICAgICAgICAgICA6IHRoaXMuZm9ybUJ1aWxkZXIuYXJyYXkoW10pLFxuXG4gICAgICAgICAgICB1cGRhdGVkQXQ6IFt7IHZhbHVlOiBzZXR0aW5nVmFsdWVNb2RlbC51cGRhdGVkQXQsIGRpc2FibGVkOiB0cnVlIH1dLFxuICAgICAgICAgICAgbGFzdFVwZGF0ZXJVc2VyRW1haWw6IFt7IHZhbHVlOiBzZXR0aW5nVmFsdWVNb2RlbC5sYXN0VXBkYXRlclVzZXJFbWFpbCwgZGlzYWJsZWQ6IHRydWUgfV0sXG4gICAgICAgICAgICBsYXN0VXBkYXRlclVzZXJGdWxsTmFtZTogW3sgdmFsdWU6IHNldHRpbmdWYWx1ZU1vZGVsLmxhc3RVcGRhdGVyVXNlckZ1bGxOYW1lLCBkaXNhYmxlZDogdHJ1ZSB9XSxcblxuICAgICAgICAgICAgcm9sbG91dFBlcmNlbnRhZ2VJdGVtc1N1bTogW3sgdmFsdWU6IDEwMCwgZGlzYWJsZWQ6IGZhbHNlIH0sIFtWYWxpZGF0b3JzLm1pbigxMDApLCBWYWxpZGF0b3JzLm1heCgxMDApXV0sXG4gICAgICAgICAgICAvLyBEZWNvcmF0aW9uXG4gICAgICAgICAgICBzZXR0aW5nOiB0aGlzLmZvcm1CdWlsZGVyLmdyb3VwKHtcbiAgICAgICAgICAgICAgICBzZXR0aW5nSWQ6IFt7IHZhbHVlOiBzZXR0aW5nVmFsdWVNb2RlbC5zZXR0aW5nLnNldHRpbmdJZCwgZGlzYWJsZWQ6IHRydWUgfV0sXG4gICAgICAgICAgICAgICAga2V5OiBbeyB2YWx1ZTogc2V0dGluZ1ZhbHVlTW9kZWwuc2V0dGluZy5rZXksIGRpc2FibGVkOiB0cnVlIH1dLFxuICAgICAgICAgICAgICAgIG5hbWU6IFt7IHZhbHVlOiBzZXR0aW5nVmFsdWVNb2RlbC5zZXR0aW5nLm5hbWUsIGRpc2FibGVkOiB0cnVlIH1dLFxuICAgICAgICAgICAgICAgIGhpbnQ6IFt7IHZhbHVlOiBzZXR0aW5nVmFsdWVNb2RlbC5zZXR0aW5nLmhpbnQsIGRpc2FibGVkOiB0cnVlIH1dLFxuICAgICAgICAgICAgICAgIHNldHRpbmdUeXBlOiBbeyB2YWx1ZTogc2V0dGluZ1ZhbHVlTW9kZWwuc2V0dGluZy5zZXR0aW5nVHlwZSwgZGlzYWJsZWQ6IHRydWUgfV0sXG4gICAgICAgICAgICAgICAgY3JlYXRvckVtYWlsOiBbeyB2YWx1ZTogc2V0dGluZ1ZhbHVlTW9kZWwuc2V0dGluZy5jcmVhdG9yRW1haWwsIGRpc2FibGVkOiB0cnVlIH1dLFxuICAgICAgICAgICAgICAgIGNyZWF0b3JGdWxsTmFtZTogW3sgdmFsdWU6IHNldHRpbmdWYWx1ZU1vZGVsLnNldHRpbmcuY3JlYXRvckZ1bGxOYW1lLCBkaXNhYmxlZDogdHJ1ZSB9XSxcbiAgICAgICAgICAgICAgICBjcmVhdGVkQXQ6IFt7IHZhbHVlOiBzZXR0aW5nVmFsdWVNb2RlbC5zZXR0aW5nLmNyZWF0ZWRBdCwgZGlzYWJsZWQ6IHRydWUgfV1cbiAgICAgICAgICAgIH0pLFxuXG4gICAgICAgICAgICBpbnRlZ3JhdGlvbkxpbmtzOiBzZXR0aW5nVmFsdWVNb2RlbC5pbnRlZ3JhdGlvbkxpbmtzID8gdGhpcy5mb3JtQnVpbGRlci5hcnJheShzZXR0aW5nVmFsdWVNb2RlbC5pbnRlZ3JhdGlvbkxpbmtzLm1hcChpbCA9PiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZm9ybUJ1aWxkZXIuZ3JvdXAoe1xuICAgICAgICAgICAgICAgICAgICBrZXk6IFt7IHZhbHVlOiBpbC5rZXksIGRpc2FibGVkOiB0cnVlIH1dLFxuICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogW3sgdmFsdWU6IGlsLmRlc2NyaXB0aW9uLCBkaXNhYmxlZDogdHJ1ZSB9XSxcbiAgICAgICAgICAgICAgICAgICAgaW50ZWdyYXRpb25MaW5rVHlwZTogW3sgdmFsdWU6IGlsLmludGVncmF0aW9uTGlua1R5cGUsIGRpc2FibGVkOiB0cnVlIH1dLFxuICAgICAgICAgICAgICAgICAgICB1cmw6IFt7IHZhbHVlOiBpbC51cmwsIGRpc2FibGVkOiB0cnVlIH1dLFxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSkpIDogdGhpcy5mb3JtQnVpbGRlci5hcnJheShbXSlcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgY3JlYXRlUm9sbG91dFBlcmNlbnRhZ2VJdGVtRm9ybUdyb3VwKHA6IFJvbGxvdXRQZXJjZW50YWdlSXRlbU1vZGVsLCByZWFkT25seTogYm9vbGVhbiwgc2V0dGluZ1R5cGU6IFNldHRpbmdUeXBlIHwgdW5kZWZpbmVkKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmZvcm1CdWlsZGVyLmdyb3VwKHtcbiAgICAgICAgICAgIHBlcmNlbnRhZ2U6IFt7IHZhbHVlOiBwLnBlcmNlbnRhZ2UsIGRpc2FibGVkOiByZWFkT25seSB9LCBbVmFsaWRhdG9ycy5yZXF1aXJlZCwgVmFsaWRhdG9ycy5taW4oMCksIFZhbGlkYXRvcnMubWF4KDEwMCldXSxcbiAgICAgICAgICAgIHZhbHVlOiBbXG4gICAgICAgICAgICAgICAgeyB2YWx1ZTogcC52YWx1ZSwgZGlzYWJsZWQ6IHJlYWRPbmx5IH0sXG4gICAgICAgICAgICAgICAgdGhpcy5nZXRWYWxpZGF0b3JzRm9yU2V0dGluZ1R5cGUoc2V0dGluZ1R5cGUpXG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgdmFsdWVEaXNhYmxlZDogW1xuICAgICAgICAgICAgICAgIHsgdmFsdWU6IHAudmFsdWUsIGRpc2FibGVkOiB0cnVlIH0sIC8vIEZvciBwZXJjZW50YWdlIGl0ZW0gdmFsdWVcbiAgICAgICAgICAgIF1cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgY3JlYXRlUm9sbG91dFJ1bGVGb3JtR3JvdXAocjogUm9sbG91dFJ1bGVNb2RlbCwgcmVhZE9ubHk6IGJvb2xlYW4sIHNldHRpbmdUeXBlOiBTZXR0aW5nVHlwZSB8IHVuZGVmaW5lZCkge1xuICAgICAgICBpZiAoci5jb21wYXJhdG9yKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5mb3JtQnVpbGRlci5ncm91cCh7XG4gICAgICAgICAgICAgICAgdHlwZTogW3sgdmFsdWU6IDAsIGRpc2FibGVkOiB0cnVlIH1dLFxuICAgICAgICAgICAgICAgIGNvbXBhcmlzb25BdHRyaWJ1dGU6IFt7IHZhbHVlOiByLmNvbXBhcmlzb25BdHRyaWJ1dGUsIGRpc2FibGVkOiByZWFkT25seSB9LCBbVmFsaWRhdG9ycy5yZXF1aXJlZF1dLFxuICAgICAgICAgICAgICAgIGNvbXBhcmF0b3I6IFt7IHZhbHVlOiByLmNvbXBhcmF0b3IsIGRpc2FibGVkOiByZWFkT25seSB9LCBbVmFsaWRhdG9ycy5yZXF1aXJlZF1dLFxuICAgICAgICAgICAgICAgIGNvbXBhcmlzb25WYWx1ZTogW3sgdmFsdWU6IHIuY29tcGFyaXNvblZhbHVlLCBkaXNhYmxlZDogcmVhZE9ubHkgfSwgW1ZhbGlkYXRvcnMucmVxdWlyZWRdXSxcbiAgICAgICAgICAgICAgICB2YWx1ZTogW1xuICAgICAgICAgICAgICAgICAgICB7IHZhbHVlOiByLnZhbHVlLCBkaXNhYmxlZDogcmVhZE9ubHkgfSxcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5nZXRWYWxpZGF0b3JzRm9yU2V0dGluZ1R5cGUoc2V0dGluZ1R5cGUpXG4gICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9IGVsc2UgaWYgKHIuc2VnbWVudENvbXBhcmF0b3IpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmZvcm1CdWlsZGVyLmdyb3VwKHtcbiAgICAgICAgICAgICAgICB0eXBlOiBbeyB2YWx1ZTogMSwgZGlzYWJsZWQ6IHRydWUgfV0sXG4gICAgICAgICAgICAgICAgc2VnbWVudENvbXBhcmF0b3I6IFt7IHZhbHVlOiByLnNlZ21lbnRDb21wYXJhdG9yLCBkaXNhYmxlZDogcmVhZE9ubHkgfSwgW1ZhbGlkYXRvcnMucmVxdWlyZWRdXSxcbiAgICAgICAgICAgICAgICBzZWdtZW50SWQ6IFt7IHZhbHVlOiByLnNlZ21lbnRJZCwgZGlzYWJsZWQ6IHJlYWRPbmx5IH0sIFtWYWxpZGF0b3JzLnJlcXVpcmVkXV0sXG4gICAgICAgICAgICAgICAgdmFsdWU6IFtcbiAgICAgICAgICAgICAgICAgICAgeyB2YWx1ZTogci52YWx1ZSwgZGlzYWJsZWQ6IHJlYWRPbmx5IH0sXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZ2V0VmFsaWRhdG9yc0ZvclNldHRpbmdUeXBlKHNldHRpbmdUeXBlKVxuICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignSW52YWxpZCByb2xsb3V0IHJ1bGUnKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0VmFsaWRhdG9yc0ZvclNldHRpbmdUeXBlKHNldHRpbmdUeXBlOiBTZXR0aW5nVHlwZSB8IHVuZGVmaW5lZCkge1xuICAgICAgICBzd2l0Y2ggKHNldHRpbmdUeXBlKSB7XG4gICAgICAgICAgICBjYXNlIFNldHRpbmdUeXBlLkludDpcbiAgICAgICAgICAgICAgICByZXR1cm4gW1ZhbGlkYXRvcnMucmVxdWlyZWQsXG4gICAgICAgICAgICAgICAgVmFsaWRhdG9ycy5taW4oLTIxNDc0ODM2NDgpLCBWYWxpZGF0b3JzLm1heCgyMTQ3NDgzNjQ3KSwgVmFsaWRhdG9ycy5wYXR0ZXJuKCdeWy0rXT9bMC05XVxcXFxkKiQnKV07XG4gICAgICAgICAgICBjYXNlIFNldHRpbmdUeXBlLkRvdWJsZTpcbiAgICAgICAgICAgICAgICByZXR1cm4gW1ZhbGlkYXRvcnMucmVxdWlyZWQsIFZhbGlkYXRvcnMubWluKC0xLjc5NzY5MzEzNDg2MjMyRSszMDgpLCBWYWxpZGF0b3JzLm1heCgxLjc5NzY5MzEzNDg2MjMyRSszMDgpXTtcbiAgICAgICAgICAgIGNhc2UgU2V0dGluZ1R5cGUuU3RyaW5nOlxuICAgICAgICAgICAgY2FzZSBTZXR0aW5nVHlwZS5Cb29sZWFuOlxuICAgICAgICAgICAgICAgIHJldHVybiBbVmFsaWRhdG9ycy5yZXF1aXJlZF07XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIHJldHVybiBbXTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0QWxsUm9sbG91dFJ1bGVzKGZvcm1Hcm91cDogVW50eXBlZEZvcm1Hcm91cCkge1xuICAgICAgICBjb25zdCBzZXR0aW5nVmFsdWVzID0gZm9ybUdyb3VwLmdldCgnc2V0dGluZ1ZhbHVlcycpIGFzIFVudHlwZWRGb3JtQXJyYXk7XG4gICAgICAgIGNvbnN0IHJvbGxvdXRSdWxlcyA9IHNldHRpbmdWYWx1ZXMuY29udHJvbHMubWFwKGN2ID0+IChjdi5nZXQoJ3JvbGxvdXRSdWxlcycpIGFzIFVudHlwZWRGb3JtQXJyYXkpLnZhbHVlKTtcbiAgICAgICAgcmV0dXJuIHJvbGxvdXRSdWxlcy5sZW5ndGggPT09IDAgPyByb2xsb3V0UnVsZXMgOiByb2xsb3V0UnVsZXMucmVkdWNlKChhLCBiKSA9PiBhLmNvbmNhdChiKSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRDb21wYXJpc29uQXR0cmlidXRlcyhyb2xsb3V0UnVsZXM6IGFueVtdKSB7XG4gICAgICAgIGlmIChyb2xsb3V0UnVsZXMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgY29uc3QgY3VycmVudENvbXBhcmlzb25BdHRyaWJ1dGVzID0gcm9sbG91dFJ1bGVzLm1hcChyID0+IHIuY29tcGFyaXNvbkF0dHJpYnV0ZSk7XG5cbiAgICAgICAgICAgIGNvbnN0IGRlZmF1bHRDb21wYXJpc29uQXR0cmlidXRlcyA9IFsnSWRlbnRpZmllcicsICdFbWFpbCcsICdDb3VudHJ5J107XG4gICAgICAgICAgICBjb25zdCBjb21wYXJpc29uQXR0cmlidXRlcyA9IGN1cnJlbnRDb21wYXJpc29uQXR0cmlidXRlcy5maWx0ZXIoYyA9PiBkZWZhdWx0Q29tcGFyaXNvbkF0dHJpYnV0ZXMuaW5kZXhPZihjKSA9PT0gLTEpO1xuICAgICAgICAgICAgcmV0dXJuIEFycmF5LmZyb20obmV3IFNldChjb21wYXJpc29uQXR0cmlidXRlcykpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIFtdO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZ2V0Q29tcGFyaXNvblZhbHVlVHlwZShjb21wYXJhdG9yOiBSb2xsb3V0UnVsZUNvbXBhcmF0b3IpIHtcbiAgICAgICAgc3dpdGNoIChjb21wYXJhdG9yKSB7XG4gICAgICAgICAgICBjYXNlIFJvbGxvdXRSdWxlQ29tcGFyYXRvci5OdW1iZXJFcXVhbHM6XG4gICAgICAgICAgICBjYXNlIFJvbGxvdXRSdWxlQ29tcGFyYXRvci5OdW1iZXJEb2VzTm90RXF1YWw6XG4gICAgICAgICAgICBjYXNlIFJvbGxvdXRSdWxlQ29tcGFyYXRvci5OdW1iZXJMZXNzOlxuICAgICAgICAgICAgY2FzZSBSb2xsb3V0UnVsZUNvbXBhcmF0b3IuTnVtYmVyTGVzc09yRXF1YWxzOlxuICAgICAgICAgICAgY2FzZSBSb2xsb3V0UnVsZUNvbXBhcmF0b3IuTnVtYmVyR3JlYXRlcjpcbiAgICAgICAgICAgIGNhc2UgUm9sbG91dFJ1bGVDb21wYXJhdG9yLk51bWJlckdyZWF0ZXJPckVxdWFsczpcbiAgICAgICAgICAgICAgICByZXR1cm4gJ251bWJlcic7XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIHJldHVybiAndGV4dCc7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBub3JtYWxpemVDb21wYXJpc29uVmFsdWUoY29tcGFyYXRvcjogUm9sbG91dFJ1bGVDb21wYXJhdG9yIHwgdW5kZWZpbmVkLCBjb21wYXJpc29uVmFsdWU6IGFueSkge1xuICAgICAgICAvLyBJbiB0aGUgY2FzZSBvZiBudW1iZXIgaW5wdXRzIHZhbHVlIGlzIGEgbnVtYmVyIGJ1dCBBUEkgZXhwZWN0c1xuICAgICAgICAvLyBhIHN0cmluZywgc28gd2UgbmVlZCB0byBtYWtlIHN1cmUgdGhhdCBpdCdzIGNvbnZlcnRlZCB0byBzdHJpbmcuXG4gICAgICAgIHJldHVybiBjb21wYXJhdG9yICYmIHRoaXMuZ2V0Q29tcGFyaXNvblZhbHVlVHlwZShjb21wYXJhdG9yKSA9PT0gXCJudW1iZXJcIlxuICAgICAgICAgICAgPyBGb3JtSGVscGVyLm5vcm1hbGl6ZU51bWJlclN0b3JlZEFzU3RyaW5nKGNvbXBhcmlzb25WYWx1ZSlcbiAgICAgICAgICAgIDogY29tcGFyaXNvblZhbHVlO1xuICAgIH1cbn1cbiJdfQ==
@@ -0,0 +1,16 @@
1
+ import { Directive, Input } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ export class TrackingDirective {
4
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: TrackingDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
5
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.1.3", type: TrackingDirective, selector: "[track]", inputs: { track: "track" }, ngImport: i0 }); }
6
+ }
7
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: TrackingDirective, decorators: [{
8
+ type: Directive,
9
+ args: [{
10
+ // eslint-disable-next-line @angular-eslint/directive-selector
11
+ selector: '[track]'
12
+ }]
13
+ }], propDecorators: { track: [{
14
+ type: Input
15
+ }] } });
16
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhY2tpbmcuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctY29uZmlnY2F0LXB1YmxpY2FwaS11aS9zcmMvbGliL19zZXJ2aWNlcy90cmFja2luZy5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7O0FBTWpELE1BQU0sT0FBTyxpQkFBaUI7OEdBQWpCLGlCQUFpQjtrR0FBakIsaUJBQWlCOzsyRkFBakIsaUJBQWlCO2tCQUo3QixTQUFTO21CQUFDO29CQUNQLDhEQUE4RDtvQkFDOUQsUUFBUSxFQUFFLFNBQVM7aUJBQ3RCOzhCQUVZLEtBQUs7c0JBQWIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERpcmVjdGl2ZSwgSW5wdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuQERpcmVjdGl2ZSh7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9kaXJlY3RpdmUtc2VsZWN0b3JcbiAgICBzZWxlY3RvcjogJ1t0cmFja10nXG59KVxuZXhwb3J0IGNsYXNzIFRyYWNraW5nRGlyZWN0aXZlIHtcbiAgICBASW5wdXQoKSB0cmFjazogc3RyaW5nW107XG4gICAgLy8gSW50ZW50aW9uYWxseSBlbXB0eSBjbGFzcywgdG8gYmUgZWFzaWVyIHRvIGNvcHkgdGhlIHNvdXJjZSBmcm9tIHRoZSBEYXNoYm9hcmQsIHdlIGhhZCB0byBjcmVhdGUgdGhpcyBkaXJlY3RpdmUsIGJ1dCB3ZSBkbyBub3Qgd2FudCB0byB0cmFjayBpbiBpbnRlZ3JhdGlvbnMuXG59XG4iXX0=
@@ -0,0 +1,137 @@
1
+ import { ChangeDetectionStrategy, Component, EventEmitter, forwardRef, Input, Output, ViewChild } from "@angular/core";
2
+ import { config, edit } from "ace-builds/src-noconflict/ace";
3
+ import "ace-builds/src-noconflict/mode-json";
4
+ import "ace-builds/src-noconflict/theme-tomorrow";
5
+ import { NG_VALUE_ACCESSOR } from "@angular/forms";
6
+ import * as i0 from "@angular/core";
7
+ export class AceEditorComponent {
8
+ constructor() {
9
+ this.onChangeDisabled = false;
10
+ this.valueChange = new EventEmitter();
11
+ // eslint-disable-next-line @angular-eslint/no-output-on-prefix
12
+ this.onChange = new EventEmitter();
13
+ }
14
+ set value(value) {
15
+ const checked = this.transformBoundValue(value);
16
+ if (this._value == checked)
17
+ return;
18
+ this._value = checked ? checked : this.produceDefaultValue();
19
+ if (this.aceEditor) {
20
+ this.writeJsonValue(this._value);
21
+ }
22
+ }
23
+ ngOnInit() {
24
+ config.setModuleUrl("ace/mode/json_worker", "assets/scripts/worker-json.js");
25
+ }
26
+ ngAfterViewInit() {
27
+ setTimeout(() => {
28
+ this.init();
29
+ }, 200);
30
+ }
31
+ ngOnDestroy() {
32
+ this.destroy();
33
+ }
34
+ init() {
35
+ this.aceEditor = edit(this.editor.nativeElement, {
36
+ wrap: true,
37
+ tabSize: 2,
38
+ highlightActiveLine: true,
39
+ theme: "ace/theme/tomorrow",
40
+ fontSize: 14,
41
+ value: this.formatValue(this._value),
42
+ });
43
+ this.aceEditor.setReadOnly(this.readOnly);
44
+ this.aceEditor.session.setMode("ace/mode/json");
45
+ this.aceEditor.on("change", () => {
46
+ if (!this.onChangeDisabled) {
47
+ this._value = this.produceOutput(this.aceEditor.getValue());
48
+ if (this.onChangeModel) {
49
+ this.onChangeModel(this._value);
50
+ }
51
+ this.onChange.emit(this._value);
52
+ this.valueChange.emit(this._value);
53
+ }
54
+ });
55
+ }
56
+ writeJsonValue(value) {
57
+ this.onChangeDisabled = true;
58
+ this.aceEditor.setValue(this.formatValue(value), -1);
59
+ this.onChangeDisabled = false;
60
+ }
61
+ formatValue(value) {
62
+ const parsed = this.parseJsonOrNull(value);
63
+ return parsed ? JSON.stringify(parsed, null, 2) : value;
64
+ }
65
+ produceDefaultValue() {
66
+ return "{}";
67
+ }
68
+ produceOutput(value) {
69
+ const parsed = this.parseJsonOrNull(value);
70
+ return parsed ? JSON.stringify(parsed) : value;
71
+ }
72
+ destroy() {
73
+ if (this.aceEditor) {
74
+ this.aceEditor.destroy();
75
+ }
76
+ }
77
+ parseJsonOrNull(value) {
78
+ try {
79
+ const parsed = JSON.parse(value);
80
+ if (parsed === Infinity) {
81
+ return null;
82
+ }
83
+ return parsed;
84
+ }
85
+ catch (e) {
86
+ return null;
87
+ }
88
+ }
89
+ transformBoundValue(value) {
90
+ if (typeof value === 'object' && value !== null) {
91
+ return JSON.stringify(value);
92
+ }
93
+ return value;
94
+ }
95
+ // ControlValueAccessor
96
+ writeValue(value) {
97
+ this.value = value;
98
+ }
99
+ // ControlValueAccessor
100
+ registerOnChange(fn) {
101
+ this.onChangeModel = fn;
102
+ }
103
+ // ControlValueAccessor
104
+ registerOnTouched() {
105
+ /* unused */
106
+ }
107
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: AceEditorComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
108
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.1.3", type: AceEditorComponent, selector: "app-ace-editor", inputs: { value: "value", readOnly: "readOnly" }, outputs: { valueChange: "valueChange", onChange: "onChange" }, providers: [
109
+ {
110
+ provide: NG_VALUE_ACCESSOR,
111
+ useExisting: forwardRef(() => AceEditorComponent),
112
+ multi: true
113
+ }
114
+ ], viewQueries: [{ propertyName: "editor", first: true, predicate: ["aceEditor"], descendants: true, static: true }], ngImport: i0, template: "<div class=\"ace-editor-container\" #aceEditor></div>", styles: [".ace-editor-container{width:100%;height:100%;border:thin solid #83b2ff;box-sizing:border-box}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
115
+ }
116
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: AceEditorComponent, decorators: [{
117
+ type: Component,
118
+ args: [{ selector: 'app-ace-editor', changeDetection: ChangeDetectionStrategy.OnPush, providers: [
119
+ {
120
+ provide: NG_VALUE_ACCESSOR,
121
+ useExisting: forwardRef(() => AceEditorComponent),
122
+ multi: true
123
+ }
124
+ ], preserveWhitespaces: false, template: "<div class=\"ace-editor-container\" #aceEditor></div>", styles: [".ace-editor-container{width:100%;height:100%;border:thin solid #83b2ff;box-sizing:border-box}\n"] }]
125
+ }], propDecorators: { editor: [{
126
+ type: ViewChild,
127
+ args: ["aceEditor", { static: true }]
128
+ }], value: [{
129
+ type: Input
130
+ }], readOnly: [{
131
+ type: Input
132
+ }], valueChange: [{
133
+ type: Output
134
+ }], onChange: [{
135
+ type: Output
136
+ }] } });
137
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWNlLWVkaXRvci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy1jb25maWdjYXQtcHVibGljYXBpLXVpL3NyYy9saWIvYWNlLWVkaXRvci9hY2UtZWRpdG9yLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLWNvbmZpZ2NhdC1wdWJsaWNhcGktdWkvc3JjL2xpYi9hY2UtZWRpdG9yL2FjZS1lZGl0b3IuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFpQix1QkFBdUIsRUFBRSxTQUFTLEVBQWMsWUFBWSxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQXFCLE1BQU0sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDckssT0FBTyxFQUFPLE1BQU0sRUFBRSxJQUFJLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUNsRSxPQUFPLHFDQUFxQyxDQUFDO0FBQzdDLE9BQU8sMENBQTBDLENBQUM7QUFDbEQsT0FBTyxFQUF3QixpQkFBaUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDOztBQWdCekUsTUFBTSxPQUFPLGtCQUFrQjtJQWQvQjtRQWlCVSxxQkFBZ0IsR0FBRyxLQUFLLENBQUM7UUFpQnZCLGdCQUFXLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUMzQywrREFBK0Q7UUFDckQsYUFBUSxHQUFHLElBQUksWUFBWSxFQUFVLENBQUM7S0FtR2pEO0lBakhDLElBQ0ksS0FBSyxDQUFDLEtBQWE7UUFDckIsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLG1CQUFtQixDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ2hELElBQUksSUFBSSxDQUFDLE1BQU0sSUFBSSxPQUFPO1lBQUUsT0FBTztRQUNuQyxJQUFJLENBQUMsTUFBTSxHQUFHLE9BQU8sQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsbUJB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a0I7a0JBZDlCLFNBQVM7K0JBQ0UsZ0JBQWdCLG1CQUdULHVCQUF1QixDQUFDLE1BQU0sYUFDcEM7d0JBQ1Q7NEJBQ0UsT0FBTyxFQUFFLGlCQUFpQjs0QkFDMUIsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsbUJBQW1CLENBQUM7NEJBQ2pELEtBQUssRUFBRSxJQUFJO3lCQUNaO3FCQUNGLHVCQUNvQixLQUFLOzhCQVN3QixNQUFNO3NCQUF2RCxTQUFTO3VCQUFDLFdBQVcsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUU7Z0JBRXBDLEtBQUs7c0JBRFIsS0FBSztnQkFVRyxRQUFRO3NCQUFoQixLQUFLO2dCQUVJLFdBQVc7c0JBQXBCLE1BQU07Z0JBRUcsUUFBUTtzQkFBakIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFmdGVyVmlld0luaXQsIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIEVsZW1lbnRSZWYsIEV2ZW50RW1pdHRlciwgZm9yd2FyZFJlZiwgSW5wdXQsIE9uRGVzdHJveSwgT25Jbml0LCBPdXRwdXQsIFZpZXdDaGlsZCB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQgeyBBY2UsIGNvbmZpZywgZWRpdCB9IGZyb20gXCJhY2UtYnVpbGRzL3NyYy1ub2NvbmZsaWN0L2FjZVwiO1xuaW1wb3J0IFwiYWNlLWJ1aWxkcy9zcmMtbm9jb25mbGljdC9tb2RlLWpzb25cIjtcbmltcG9ydCBcImFjZS1idWlsZHMvc3JjLW5vY29uZmxpY3QvdGhlbWUtdG9tb3Jyb3dcIjtcbmltcG9ydCB7IENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBOR19WQUxVRV9BQ0NFU1NPUiB9IGZyb20gXCJAYW5ndWxhci9mb3Jtc1wiO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdhcHAtYWNlLWVkaXRvcicsXG4gIHRlbXBsYXRlVXJsOiAnLi9hY2UtZWRpdG9yLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vYWNlLWVkaXRvci5jb21wb25lbnQuc2NzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgcHJvdmlkZXJzOiBbXG4gICAge1xuICAgICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXG4gICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBBY2VFZGl0b3JDb21wb25lbnQpLFxuICAgICAgbXVsdGk6IHRydWVcbiAgICB9XG4gIF0sXG4gIHByZXNlcnZlV2hpdGVzcGFjZXM6IGZhbHNlLFxufSlcbmV4cG9ydCBjbGFzcyBBY2VFZGl0b3JDb21wb25lbnQgaW1wbGVtZW50cyBDb250cm9sVmFsdWVBY2Nlc3NvciwgT25Jbml0LCBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3kge1xuXG4gIHByaXZhdGUgYWNlRWRpdG9yOiBBY2UuRWRpdG9yO1xuICBwcml2YXRlIG9uQ2hhbmdlRGlzYWJsZWQgPSBmYWxzZTtcbiAgcHJpdmF0ZSBvbkNoYW5nZU1vZGVsOiBhbnk7XG4gIHByaXZhdGUgX3ZhbHVlOiBhbnk7XG5cbiAgQFZpZXdDaGlsZChcImFjZUVkaXRvclwiLCB7IHN0YXRpYzogdHJ1ZSB9KSBwcml2YXRlIGVkaXRvcjogRWxlbWVudFJlZjxIVE1MRWxlbWVudD47XG4gIEBJbnB1dCgpXG4gIHNldCB2YWx1ZSh2YWx1ZTogc3RyaW5nKSB7XG4gICAgY29uc3QgY2hlY2tlZCA9IHRoaXMudHJhbnNmb3JtQm91bmRWYWx1ZSh2YWx1ZSk7XG4gICAgaWYgKHRoaXMuX3ZhbHVlID09IGNoZWNrZWQpIHJldHVybjtcbiAgICB0aGlzLl92YWx1ZSA9IGNoZWNrZWQgPyBjaGVja2VkIDogdGhpcy5wcm9kdWNlRGVmYXVsdFZhbHVlKCk7XG4gICAgaWYgKHRoaXMuYWNlRWRpdG9yKSB7XG4gICAgICB0aGlzLndyaXRlSnNvblZhbHVlKHRoaXMuX3ZhbHVlKTtcbiAgICB9XG4gIH1cblxuICBASW5wdXQoKSByZWFkT25seTogYm9vbGVhbjtcblxuICBAT3V0cHV0KCkgdmFsdWVDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8tb3V0cHV0LW9uLXByZWZpeFxuICBAT3V0cHV0KCkgb25DaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZz4oKTtcblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICBjb25maWcuc2V0TW9kdWxlVXJsKFwiYWNlL21vZGUvanNvbl93b3JrZXJcIiwgXCJhc3NldHMvc2NyaXB0cy93b3JrZXItanNvbi5qc1wiKTtcbiAgfVxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHRoaXMuaW5pdCgpO1xuICAgIH0sIDIwMCk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLmRlc3Ryb3koKTtcbiAgfVxuXG4gIHByaXZhdGUgaW5pdCgpIHtcbiAgICB0aGlzLmFjZUVkaXRvciA9IGVkaXQodGhpcy5lZGl0b3IubmF0aXZlRWxlbWVudCwge1xuICAgICAgd3JhcDogdHJ1ZSxcbiAgICAgIHRhYlNpemU6IDIsXG4gICAgICBoaWdobGlnaHRBY3RpdmVMaW5lOiB0cnVlLFxuICAgICAgdGhlbWU6IFwiYWNlL3RoZW1lL3RvbW9ycm93XCIsXG4gICAgICBmb250U2l6ZTogMTQsXG4gICAgICB2YWx1ZTogdGhpcy5mb3JtYXRWYWx1ZSh0aGlzLl92YWx1ZSksXG4gICAgfSk7XG4gICAgdGhpcy5hY2VFZGl0b3Iuc2V0UmVhZE9ubHkodGhpcy5yZWFkT25seSk7XG4gICAgdGhpcy5hY2VFZGl0b3Iuc2Vzc2lvbi5zZXRNb2RlKFwiYWNlL21vZGUvanNvblwiKTtcblxuICAgIHRoaXMuYWNlRWRpdG9yLm9uKFwiY2hhbmdlXCIsICgpID0+IHtcbiAgICAgIGlmICghdGhpcy5vbkNoYW5nZURpc2FibGVkKSB7XG4gICAgICAgIHRoaXMuX3ZhbHVlID0gdGhpcy5wcm9kdWNlT3V0cHV0KHRoaXMuYWNlRWRpdG9yLmdldFZhbHVlKCkpO1xuICAgICAgICBpZiAodGhpcy5vbkNoYW5nZU1vZGVsKSB7XG4gICAgICAgICAgdGhpcy5vbkNoYW5nZU1vZGVsKHRoaXMuX3ZhbHVlKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLm9uQ2hhbmdlLmVtaXQodGhpcy5fdmFsdWUpO1xuICAgICAgICB0aGlzLnZhbHVlQ2hhbmdlLmVtaXQodGhpcy5fdmFsdWUpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSB3cml0ZUpzb25WYWx1ZSh2YWx1ZTogYW55KSB7XG4gICAgdGhpcy5vbkNoYW5nZURpc2FibGVkID0gdHJ1ZTtcbiAgICB0aGlzLmFjZUVkaXRvci5zZXRWYWx1ZSh0aGlzLmZvcm1hdFZhbHVlKHZhbHVlKSwgLTEpO1xuICAgIHRoaXMub25DaGFuZ2VEaXNhYmxlZCA9IGZhbHNlO1xuICB9XG5cbiAgcHJpdmF0ZSBmb3JtYXRWYWx1ZSh2YWx1ZTogYW55KTogc3RyaW5nIHtcbiAgICBjb25zdCBwYXJzZWQgPSB0aGlzLnBhcnNlSnNvbk9yTnVsbCh2YWx1ZSk7XG4gICAgcmV0dXJuIHBhcnNlZCA/IEpTT04uc3RyaW5naWZ5KHBhcnNlZCwgbnVsbCwgMikgOiB2YWx1ZTtcbiAgfVxuXG4gIHByaXZhdGUgcHJvZHVjZURlZmF1bHRWYWx1ZSgpIHtcbiAgICByZXR1cm4gXCJ7fVwiO1xuICB9XG5cbiAgcHJpdmF0ZSBwcm9kdWNlT3V0cHV0KHZhbHVlOiBhbnkpIHtcbiAgICBjb25zdCBwYXJzZWQgPSB0aGlzLnBhcnNlSnNvbk9yTnVsbCh2YWx1ZSk7XG4gICAgcmV0dXJuIHBhcnNlZCA/IEpTT04uc3RyaW5naWZ5KHBhcnNlZCkgOiB2YWx1ZTtcbiAgfVxuXG4gIHByaXZhdGUgZGVzdHJveSgpIHtcbiAgICBpZiAodGhpcy5hY2VFZGl0b3IpIHtcbiAgICAgIHRoaXMuYWNlRWRpdG9yLmRlc3Ryb3koKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHBhcnNlSnNvbk9yTnVsbCh2YWx1ZTogc3RyaW5nKSB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHBhcnNlZCA9IEpTT04ucGFyc2UodmFsdWUpO1xuICAgICAgaWYgKHBhcnNlZCA9PT0gSW5maW5pdHkpIHtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICB9XG4gICAgICByZXR1cm4gcGFyc2VkO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgdHJhbnNmb3JtQm91bmRWYWx1ZSh2YWx1ZTogYW55KTogc3RyaW5nIHtcbiAgICBpZiAodHlwZW9mIHZhbHVlID09PSAnb2JqZWN0JyAmJiB2YWx1ZSAhPT0gbnVsbCkge1xuICAgICAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KHZhbHVlKTtcbiAgICB9XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9XG5cbiAgLy8gQ29udHJvbFZhbHVlQWNjZXNzb3JcbiAgd3JpdGVWYWx1ZSh2YWx1ZTogYW55KSB7XG4gICAgdGhpcy52YWx1ZSA9IHZhbHVlO1xuICB9XG5cbiAgLy8gQ29udHJvbFZhbHVlQWNjZXNzb3JcbiAgcmVnaXN0ZXJPbkNoYW5nZShmbjogYW55KSB7XG4gICAgdGhpcy5vbkNoYW5nZU1vZGVsID0gZm47XG4gIH1cblxuICAvLyBDb250cm9sVmFsdWVBY2Nlc3NvclxuICByZWdpc3Rlck9uVG91Y2hlZCgpIHtcbiAgICAvKiB1bnVzZWQgKi9cbiAgfVxufSIsIjxkaXYgY2xhc3M9XCJhY2UtZWRpdG9yLWNvbnRhaW5lclwiICNhY2VFZGl0b3I+PC9kaXY+Il19
@@ -0,0 +1,62 @@
1
+ import { Component, Input, Output, EventEmitter } from '@angular/core';
2
+ import { Validators } from '@angular/forms';
3
+ import { FormHelper } from '../_services/form-helper';
4
+ import * as i0 from "@angular/core";
5
+ import * as i1 from "@angular/forms";
6
+ import * as i2 from "../_services";
7
+ import * as i3 from "@angular/common";
8
+ import * as i4 from "@angular/material/form-field";
9
+ import * as i5 from "@angular/material/button";
10
+ import * as i6 from "@angular/material/input";
11
+ export class AuthorizationComponent {
12
+ constructor(formBuilder, publicApiService) {
13
+ this.formBuilder = formBuilder;
14
+ this.publicApiService = publicApiService;
15
+ this.basePath = null;
16
+ this.integrationName = 'ConfigCat Feature Flags';
17
+ this.authorized = new EventEmitter();
18
+ this.error = new EventEmitter();
19
+ this.FormHelper = FormHelper;
20
+ }
21
+ ngOnInit() {
22
+ this.formGroup = this.formBuilder.group({
23
+ basicAuthUsername: ['', Validators.required],
24
+ basicAuthPassword: ['', Validators.required],
25
+ });
26
+ }
27
+ onSubmit() {
28
+ if (!this.formGroup.valid) {
29
+ return;
30
+ }
31
+ const meService = this.publicApiService.createMeService(this.formGroup.controls.basicAuthUsername.value, this.formGroup.controls.basicAuthPassword.value, this.basePath);
32
+ meService.getMe().subscribe(me => {
33
+ this.authorized.emit({
34
+ basicAuthUsername: this.formGroup.controls.basicAuthUsername.value,
35
+ basicAuthPassword: this.formGroup.controls.basicAuthPassword.value,
36
+ email: me.email,
37
+ fullName: me.fullName
38
+ });
39
+ }, () => {
40
+ this.formGroup.setErrors({ invalidAuthorization: 'Invalid Basic auth user name or password' });
41
+ this.error.emit();
42
+ });
43
+ }
44
+ getPublicApiUrl() {
45
+ return this.publicApiService.getDashboardBasePath() + '/my-account/public-api-credentials';
46
+ }
47
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: AuthorizationComponent, deps: [{ token: i1.UntypedFormBuilder }, { token: i2.PublicApiService }], target: i0.ɵɵFactoryTarget.Component }); }
48
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.1.3", type: AuthorizationComponent, selector: "configcat-authorization", inputs: { basePath: "basePath", integrationName: "integrationName" }, outputs: { authorized: "authorized", error: "error" }, ngImport: i0, template: "<form [formGroup]=\"formGroup\" (ngSubmit)=\"onSubmit()\">\n <div class=\"container\">\n <div class=\"form\">\n <p>\n In order to use {{integrationName}} you have to authorize first with your ConfigCat Public API\n credentials.\n </p>\n <ul>\n <li>\n <a [href]=\"getPublicApiUrl()\" target=\"_blank\" rel=\"noopener noreferrer\">\n Get your Basic Auth user name and password</a> to access ConfigCat Public API.\n <br />\n <b>Note!</b> Your ConfigCat account's email address and password will not work here.\n </li>\n <li>\n Type your credentials here and click the Authorize button.\n </li>\n </ul>\n\n <mat-form-field class=\"form-field\" appearance=\"outline\">\n <mat-label>Basic auth user name</mat-label>\n <input matInput placeholder=\"Basic auth user name\" formControlName=\"basicAuthUsername\">\n <mat-error *ngIf=\"formGroup.controls.basicAuthUsername.invalid\">\n {{FormHelper.getErrorMessage(formGroup.controls.basicAuthUsername)}}\n </mat-error>\n </mat-form-field>\n <mat-form-field class=\"form-field\" appearance=\"outline\">\n <mat-label>Basic auth password</mat-label>\n <input matInput placeholder=\"Basic auth password\" formControlName=\"basicAuthPassword\" type=\"password\"\n autocomplete=\"current-password\">\n <mat-error *ngIf=\"formGroup.controls.basicAuthPassword.invalid\">\n {{FormHelper.getErrorMessage(formGroup.controls.basicAuthPassword)}}\n </mat-error>\n </mat-form-field>\n <div>\n <button mat-flat-button color=\"primary\" type=\"submit\" class=\"submit\">Authorize</button>\n <mat-error *ngIf=\"formGroup.invalid && formGroup.errors && formGroup.errors.invalidAuthorization\">\n {{formGroup.errors.invalidAuthorization}}</mat-error>\n </div>\n </div>\n </div>\n</form>", styles: [".container{display:flex;margin:8px}.form{width:100%}.form-field{width:100%;margin-bottom:8px}.submit{margin-top:8px;margin-bottom:8px}\n"], dependencies: [{ kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: i4.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i4.MatLabel, selector: "mat-label" }, { kind: "directive", type: i4.MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "component", type: i5.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "directive", type: i6.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }] }); }
49
+ }
50
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: AuthorizationComponent, decorators: [{
51
+ type: Component,
52
+ args: [{ selector: 'configcat-authorization', template: "<form [formGroup]=\"formGroup\" (ngSubmit)=\"onSubmit()\">\n <div class=\"container\">\n <div class=\"form\">\n <p>\n In order to use {{integrationName}} you have to authorize first with your ConfigCat Public API\n credentials.\n </p>\n <ul>\n <li>\n <a [href]=\"getPublicApiUrl()\" target=\"_blank\" rel=\"noopener noreferrer\">\n Get your Basic Auth user name and password</a> to access ConfigCat Public API.\n <br />\n <b>Note!</b> Your ConfigCat account's email address and password will not work here.\n </li>\n <li>\n Type your credentials here and click the Authorize button.\n </li>\n </ul>\n\n <mat-form-field class=\"form-field\" appearance=\"outline\">\n <mat-label>Basic auth user name</mat-label>\n <input matInput placeholder=\"Basic auth user name\" formControlName=\"basicAuthUsername\">\n <mat-error *ngIf=\"formGroup.controls.basicAuthUsername.invalid\">\n {{FormHelper.getErrorMessage(formGroup.controls.basicAuthUsername)}}\n </mat-error>\n </mat-form-field>\n <mat-form-field class=\"form-field\" appearance=\"outline\">\n <mat-label>Basic auth password</mat-label>\n <input matInput placeholder=\"Basic auth password\" formControlName=\"basicAuthPassword\" type=\"password\"\n autocomplete=\"current-password\">\n <mat-error *ngIf=\"formGroup.controls.basicAuthPassword.invalid\">\n {{FormHelper.getErrorMessage(formGroup.controls.basicAuthPassword)}}\n </mat-error>\n </mat-form-field>\n <div>\n <button mat-flat-button color=\"primary\" type=\"submit\" class=\"submit\">Authorize</button>\n <mat-error *ngIf=\"formGroup.invalid && formGroup.errors && formGroup.errors.invalidAuthorization\">\n {{formGroup.errors.invalidAuthorization}}</mat-error>\n </div>\n </div>\n </div>\n</form>", styles: [".container{display:flex;margin:8px}.form{width:100%}.form-field{width:100%;margin-bottom:8px}.submit{margin-top:8px;margin-bottom:8px}\n"] }]
53
+ }], ctorParameters: () => [{ type: i1.UntypedFormBuilder }, { type: i2.PublicApiService }], propDecorators: { basePath: [{
54
+ type: Input
55
+ }], integrationName: [{
56
+ type: Input
57
+ }], authorized: [{
58
+ type: Output
59
+ }], error: [{
60
+ type: Output
61
+ }] } });
62
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aG9yaXphdGlvbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy1jb25maWdjYXQtcHVibGljYXBpLXVpL3NyYy9saWIvYXV0aG9yaXphdGlvbi9hdXRob3JpemF0aW9uLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLWNvbmZpZ2NhdC1wdWJsaWNhcGktdWkvc3JjL2xpYi9hdXRob3JpemF0aW9uL2F1dGhvcml6YXRpb24uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBVSxLQUFLLEVBQUUsTUFBTSxFQUFFLFlBQVksRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMvRSxPQUFPLEVBQXdDLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRWxGLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQzs7Ozs7Ozs7QUFPdEQsTUFBTSxPQUFPLHNCQUFzQjtJQVNqQyxZQUNVLFdBQStCLEVBQy9CLGdCQUFrQztRQURsQyxnQkFBVyxHQUFYLFdBQVcsQ0FBb0I7UUFDL0IscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFrQjtRQVJuQyxhQUFRLEdBQUcsSUFBSSxDQUFDO1FBQ2hCLG9CQUFlLEdBQUcseUJBQXlCLENBQUM7UUFDM0MsZUFBVSxHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7UUFDaEMsVUFBSyxHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7UUFDckMsZUFBVSxHQUFHLFVBQVUsQ0FBQztJQUtwQixDQUFDO0lBRUwsUUFBUTtRQUNOLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUM7WUFDdEMsaUJBQWlCLEVBQUUsQ0FBQyxFQUFFLEVBQUUsVUFBVSxDQUFDLFFBQVEsQ0FBQztZQUM1QyxpQkFBaUIsRUFBRSxDQUFDLEVBQUUsRUFBRSxVQUFVLENBQUMsUUFBUSxDQUFDO1NBQzdDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxRQUFRO1FBQ04sSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDMUIsT0FBTztRQUNULENBQUM7UUFFRCxNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsZUFBZSxDQUNyRCxJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxpQkFBaUIsQ0FBQyxLQUFLLEVBQy9DLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLGlCQUFpQixDQUFDLEtBQUssRUFDL0MsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBRWpCLFNBQVMsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLEVBQUU7WUFDL0IsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUM7Z0JBQ25CLGlCQUFpQixFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLGlCQUFpQixDQUFDLEtBQUs7Z0JBQ2xFLGlCQUFpQixFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLGlCQUFpQixDQUFDLEtBQUs7Z0JBQ2xFLEtBQUssRUFBRSxFQUFFLENBQUMsS0FBSztnQkFDZixRQUFRLEVBQUUsRUFBRSxDQUFDLFFBQVE7YUFDdEIsQ0FBQyxDQUFDO1FBQ0wsQ0FBQyxFQUNDLEdBQUcsRUFBRTtZQUNILElBQUksQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDLEVBQUUsb0JBQW9CLEVBQUUsMENBQTBDLEVBQUUsQ0FBQyxDQUFDO1lBQy9GLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDcEIsQ0FBQyxDQUNGLENBQUM7SUFDSixDQUFDO0lBRUQsZUFBZTtRQUNiLE9BQU8sSUFBSSxDQUFDLGdCQUFnQixDQUFDLG9CQUFvQixFQUFFLEdBQUcsb0NBQW9DLENBQUM7SUFDN0YsQ0FBQzs4R0FoRFUsc0JBQXNCO2tHQUF0QixzQkFBc0IsNExDVm5DLDhzRUF5Q087OzJGRC9CTSxzQkFBc0I7a0JBTGxDLFNBQVM7K0JBQ0UseUJBQXlCO3NIQU8xQixRQUFRO3NCQUFoQixLQUFLO2dCQUNHLGVBQWU7c0JBQXZCLEtBQUs7Z0JBQ0ksVUFBVTtzQkFBbkIsTUFBTTtnQkFDRyxLQUFLO3NCQUFkLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCwgSW5wdXQsIE91dHB1dCwgRXZlbnRFbWl0dGVyIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBVbnR5cGVkRm9ybUdyb3VwLCBVbnR5cGVkRm9ybUJ1aWxkZXIsIFZhbGlkYXRvcnMgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBQdWJsaWNBcGlTZXJ2aWNlIH0gZnJvbSAnLi4vX3NlcnZpY2VzJztcbmltcG9ydCB7IEZvcm1IZWxwZXIgfSBmcm9tICcuLi9fc2VydmljZXMvZm9ybS1oZWxwZXInO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdjb25maWdjYXQtYXV0aG9yaXphdGlvbicsXG4gIHRlbXBsYXRlVXJsOiAnLi9hdXRob3JpemF0aW9uLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vYXV0aG9yaXphdGlvbi5jb21wb25lbnQuc2NzcyddXG59KVxuZXhwb3J0IGNsYXNzIEF1dGhvcml6YXRpb25Db21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuXG4gIGZvcm1Hcm91cCE6IFVudHlwZWRGb3JtR3JvdXA7XG4gIEBJbnB1dCgpIGJhc2VQYXRoID0gbnVsbDtcbiAgQElucHV0KCkgaW50ZWdyYXRpb25OYW1lID0gJ0NvbmZpZ0NhdCBGZWF0dXJlIEZsYWdzJztcbiAgQE91dHB1dCgpIGF1dGhvcml6ZWQgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIEBPdXRwdXQoKSBlcnJvciA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgRm9ybUhlbHBlciA9IEZvcm1IZWxwZXI7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBmb3JtQnVpbGRlcjogVW50eXBlZEZvcm1CdWlsZGVyLFxuICAgIHByaXZhdGUgcHVibGljQXBpU2VydmljZTogUHVibGljQXBpU2VydmljZVxuICApIHsgfVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuZm9ybUdyb3VwID0gdGhpcy5mb3JtQnVpbGRlci5ncm91cCh7XG4gICAgICBiYXNpY0F1dGhVc2VybmFtZTogWycnLCBWYWxpZGF0b3JzLnJlcXVpcmVkXSxcbiAgICAgIGJhc2ljQXV0aFBhc3N3b3JkOiBbJycsIFZhbGlkYXRvcnMucmVxdWlyZWRdLFxuICAgIH0pO1xuICB9XG5cbiAgb25TdWJtaXQoKSB7XG4gICAgaWYgKCF0aGlzLmZvcm1Hcm91cC52YWxpZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IG1lU2VydmljZSA9IHRoaXMucHVibGljQXBpU2VydmljZS5jcmVhdGVNZVNlcnZpY2UoXG4gICAgICB0aGlzLmZvcm1Hcm91cC5jb250cm9scy5iYXNpY0F1dGhVc2VybmFtZS52YWx1ZSxcbiAgICAgIHRoaXMuZm9ybUdyb3VwLmNvbnRyb2xzLmJhc2ljQXV0aFBhc3N3b3JkLnZhbHVlLFxuICAgICAgdGhpcy5iYXNlUGF0aCk7XG5cbiAgICBtZVNlcnZpY2UuZ2V0TWUoKS5zdWJzY3JpYmUobWUgPT4ge1xuICAgICAgdGhpcy5hdXRob3JpemVkLmVtaXQoe1xuICAgICAgICBiYXNpY0F1dGhVc2VybmFtZTogdGhpcy5mb3JtR3JvdXAuY29udHJvbHMuYmFzaWNBdXRoVXNlcm5hbWUudmFsdWUsXG4gICAgICAgIGJhc2ljQXV0aFBhc3N3b3JkOiB0aGlzLmZvcm1Hcm91cC5jb250cm9scy5iYXNpY0F1dGhQYXNzd29yZC52YWx1ZSxcbiAgICAgICAgZW1haWw6IG1lLmVtYWlsLFxuICAgICAgICBmdWxsTmFtZTogbWUuZnVsbE5hbWVcbiAgICAgIH0pO1xuICAgIH0sXG4gICAgICAoKSA9PiB7XG4gICAgICAgIHRoaXMuZm9ybUdyb3VwLnNldEVycm9ycyh7IGludmFsaWRBdXRob3JpemF0aW9uOiAnSW52YWxpZCBCYXNpYyBhdXRoIHVzZXIgbmFtZSBvciBwYXNzd29yZCcgfSk7XG4gICAgICAgIHRoaXMuZXJyb3IuZW1pdCgpO1xuICAgICAgfVxuICAgICk7XG4gIH1cblxuICBnZXRQdWJsaWNBcGlVcmwoKSB7XG4gICAgcmV0dXJuIHRoaXMucHVibGljQXBpU2VydmljZS5nZXREYXNoYm9hcmRCYXNlUGF0aCgpICsgJy9teS1hY2NvdW50L3B1YmxpYy1hcGktY3JlZGVudGlhbHMnO1xuICB9XG59XG4iLCI8Zm9ybSBbZm9ybUdyb3VwXT1cImZvcm1Hcm91cFwiIChuZ1N1Ym1pdCk9XCJvblN1Ym1pdCgpXCI+XG4gICAgPGRpdiBjbGFzcz1cImNvbnRhaW5lclwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybVwiPlxuICAgICAgICAgICAgPHA+XG4gICAgICAgICAgICAgICAgSW4gb3JkZXIgdG8gdXNlIHt7aW50ZWdyYXRpb25OYW1lfX0geW91IGhhdmUgdG8gYXV0aG9yaXplIGZpcnN0IHdpdGggeW91ciBDb25maWdDYXQgUHVibGljIEFQSVxuICAgICAgICAgICAgICAgIGNyZWRlbnRpYWxzLlxuICAgICAgICAgICAgPC9wPlxuICAgICAgICAgICAgPHVsPlxuICAgICAgICAgICAgICAgIDxsaT5cbiAgICAgICAgICAgICAgICAgICAgPGEgW2hyZWZdPVwiZ2V0UHVibGljQXBpVXJsKClcIiB0YXJnZXQ9XCJfYmxhbmtcIiByZWw9XCJub29wZW5lciBub3JlZmVycmVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICBHZXQgeW91ciBCYXNpYyBBdXRoIHVzZXIgbmFtZSBhbmQgcGFzc3dvcmQ8L2E+IHRvIGFjY2VzcyBDb25maWdDYXQgUHVibGljIEFQSS5cbiAgICAgICAgICAgICAgICAgICAgPGJyIC8+XG4gICAgICAgICAgICAgICAgICAgIDxiPk5vdGUhPC9iPiBZb3VyIENvbmZpZ0NhdCBhY2NvdW50J3MgZW1haWwgYWRkcmVzcyBhbmQgcGFzc3dvcmQgd2lsbCBub3Qgd29yayBoZXJlLlxuICAgICAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICAgICAgPGxpPlxuICAgICAgICAgICAgICAgICAgICBUeXBlIHlvdXIgY3JlZGVudGlhbHMgaGVyZSBhbmQgY2xpY2sgdGhlIEF1dGhvcml6ZSBidXR0b24uXG4gICAgICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgIDwvdWw+XG5cbiAgICAgICAgICAgIDxtYXQtZm9ybS1maWVsZCBjbGFzcz1cImZvcm0tZmllbGRcIiBhcHBlYXJhbmNlPVwib3V0bGluZVwiPlxuICAgICAgICAgICAgICAgIDxtYXQtbGFiZWw+QmFzaWMgYXV0aCB1c2VyIG5hbWU8L21hdC1sYWJlbD5cbiAgICAgICAgICAgICAgICA8aW5wdXQgbWF0SW5wdXQgcGxhY2Vob2xkZXI9XCJCYXNpYyBhdXRoIHVzZXIgbmFtZVwiIGZvcm1Db250cm9sTmFtZT1cImJhc2ljQXV0aFVzZXJuYW1lXCI+XG4gICAgICAgICAgICAgICAgPG1hdC1lcnJvciAqbmdJZj1cImZvcm1Hcm91cC5jb250cm9scy5iYXNpY0F1dGhVc2VybmFtZS5pbnZhbGlkXCI+XG4gICAgICAgICAgICAgICAgICAgIHt7Rm9ybUhlbHBlci5nZXRFcnJvck1lc3NhZ2UoZm9ybUdyb3VwLmNvbnRyb2xzLmJhc2ljQXV0aFVzZXJuYW1lKX19XG4gICAgICAgICAgICAgICAgPC9tYXQtZXJyb3I+XG4gICAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxuICAgICAgICAgICAgPG1hdC1mb3JtLWZpZWxkIGNsYXNzPVwiZm9ybS1maWVsZFwiIGFwcGVhcmFuY2U9XCJvdXRsaW5lXCI+XG4gICAgICAgICAgICAgICAgPG1hdC1sYWJlbD5CYXNpYyBhdXRoIHBhc3N3b3JkPC9tYXQtbGFiZWw+XG4gICAgICAgICAgICAgICAgPGlucHV0IG1hdElucHV0IHBsYWNlaG9sZGVyPVwiQmFzaWMgYXV0aCBwYXNzd29yZFwiIGZvcm1Db250cm9sTmFtZT1cImJhc2ljQXV0aFBhc3N3b3JkXCIgdHlwZT1cInBhc3N3b3JkXCJcbiAgICAgICAgICAgICAgICAgICAgYXV0b2NvbXBsZXRlPVwiY3VycmVudC1wYXNzd29yZFwiPlxuICAgICAgICAgICAgICAgIDxtYXQtZXJyb3IgKm5nSWY9XCJmb3JtR3JvdXAuY29udHJvbHMuYmFzaWNBdXRoUGFzc3dvcmQuaW52YWxpZFwiPlxuICAgICAgICAgICAgICAgICAgICB7e0Zvcm1IZWxwZXIuZ2V0RXJyb3JNZXNzYWdlKGZvcm1Hcm91cC5jb250cm9scy5iYXNpY0F1dGhQYXNzd29yZCl9fVxuICAgICAgICAgICAgICAgIDwvbWF0LWVycm9yPlxuICAgICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cbiAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgPGJ1dHRvbiBtYXQtZmxhdC1idXR0b24gY29sb3I9XCJwcmltYXJ5XCIgdHlwZT1cInN1Ym1pdFwiIGNsYXNzPVwic3VibWl0XCI+QXV0aG9yaXplPC9idXR0b24+XG4gICAgICAgICAgICAgICAgPG1hdC1lcnJvciAqbmdJZj1cImZvcm1Hcm91cC5pbnZhbGlkICYmIGZvcm1Hcm91cC5lcnJvcnMgJiYgZm9ybUdyb3VwLmVycm9ycy5pbnZhbGlkQXV0aG9yaXphdGlvblwiPlxuICAgICAgICAgICAgICAgICAgICB7e2Zvcm1Hcm91cC5lcnJvcnMuaW52YWxpZEF1dGhvcml6YXRpb259fTwvbWF0LWVycm9yPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuPC9mb3JtPiJdfQ==
@@ -10,10 +10,10 @@ export class BaseSelectComponent extends BaseComponent {
10
10
  openChanged(event) {
11
11
  this.dropdownOpened.emit(event);
12
12
  }
13
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: BaseSelectComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
14
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.1.3", type: BaseSelectComponent, selector: "base-select", inputs: { customDropdown: "customDropdown" }, outputs: { dropdownOpened: "dropdownOpened" }, usesInheritance: true, ngImport: i0, template: '<div></div>', isInline: true }); }
13
15
  }
14
- BaseSelectComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: BaseSelectComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
15
- BaseSelectComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: BaseSelectComponent, selector: "base-select", inputs: { customDropdown: "customDropdown" }, outputs: { dropdownOpened: "dropdownOpened" }, usesInheritance: true, ngImport: i0, template: '<div></div>', isInline: true });
16
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: BaseSelectComponent, decorators: [{
16
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: BaseSelectComponent, decorators: [{
17
17
  type: Component,
18
18
  args: [{
19
19
  selector: 'base-select',
@@ -24,4 +24,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImpo
24
24
  }], dropdownOpened: [{
25
25
  type: Output
26
26
  }] } });
27
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS1zZWxlY3QuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctY29uZmlnY2F0LXB1YmxpY2FwaS11aS9zcmMvbGliL2Jhc2UvYmFzZS1zZWxlY3QuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDdkUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGtCQUFrQixDQUFDOztBQU1qRCxNQUFNLE9BQU8sbUJBQW9CLFNBQVEsYUFBYTtJQUp0RDs7UUFNVyxtQkFBYyxHQUFZLEtBQUssQ0FBQztRQUUvQixtQkFBYyxHQUFHLElBQUksWUFBWSxFQUFXLENBQUM7S0FLeEQ7SUFIVyxXQUFXLENBQUMsS0FBVTtRQUM5QixJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNsQyxDQUFDOztpSEFSVSxtQkFBbUI7cUdBQW5CLG1CQUFtQix1S0FGcEIsYUFBYTs0RkFFWixtQkFBbUI7a0JBSi9CLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLGFBQWE7b0JBQ3ZCLFFBQVEsRUFBRSxhQUFhO2lCQUN4Qjs4QkFHVSxjQUFjO3NCQUF0QixLQUFLO2dCQUVJLGNBQWM7c0JBQXZCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQmFzZUNvbXBvbmVudCB9IGZyb20gJy4vYmFzZS5jb21wb25lbnQnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdiYXNlLXNlbGVjdCcsXG4gIHRlbXBsYXRlOiAnPGRpdj48L2Rpdj4nXG59KVxuZXhwb3J0IGNsYXNzIEJhc2VTZWxlY3RDb21wb25lbnQgZXh0ZW5kcyBCYXNlQ29tcG9uZW50IHtcblxuICBASW5wdXQoKSBjdXN0b21Ecm9wZG93bjogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIEBPdXRwdXQoKSBkcm9wZG93bk9wZW5lZCA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcblxuICBwcm90ZWN0ZWQgb3BlbkNoYW5nZWQoZXZlbnQ6IGFueSkge1xuICAgIHRoaXMuZHJvcGRvd25PcGVuZWQuZW1pdChldmVudCk7XG4gIH1cbn1cblxuXG4iXX0=
27
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS1zZWxlY3QuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctY29uZmlnY2F0LXB1YmxpY2FwaS11aS9zcmMvbGliL2Jhc2UvYmFzZS1zZWxlY3QuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDdkUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGtCQUFrQixDQUFDOztBQU1qRCxNQUFNLE9BQU8sbUJBQW9CLFNBQVEsYUFBYTtJQUp0RDs7UUFNVyxtQkFBYyxHQUFZLEtBQUssQ0FBQztRQUUvQixtQkFBYyxHQUFHLElBQUksWUFBWSxFQUFXLENBQUM7S0FLeEQ7SUFIVyxXQUFXLENBQUMsS0FBVTtRQUM5QixJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNsQyxDQUFDOzhHQVJVLG1CQUFtQjtrR0FBbkIsbUJBQW1CLHVLQUZwQixhQUFhOzsyRkFFWixtQkFBbUI7a0JBSi9CLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLGFBQWE7b0JBQ3ZCLFFBQVEsRUFBRSxhQUFhO2lCQUN4Qjs4QkFHVSxjQUFjO3NCQUF0QixLQUFLO2dCQUVJLGNBQWM7c0JBQXZCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQmFzZUNvbXBvbmVudCB9IGZyb20gJy4vYmFzZS5jb21wb25lbnQnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdiYXNlLXNlbGVjdCcsXG4gIHRlbXBsYXRlOiAnPGRpdj48L2Rpdj4nXG59KVxuZXhwb3J0IGNsYXNzIEJhc2VTZWxlY3RDb21wb25lbnQgZXh0ZW5kcyBCYXNlQ29tcG9uZW50IHtcblxuICBASW5wdXQoKSBjdXN0b21Ecm9wZG93bjogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIEBPdXRwdXQoKSBkcm9wZG93bk9wZW5lZCA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcblxuICBwcm90ZWN0ZWQgb3BlbkNoYW5nZWQoZXZlbnQ6IGFueSkge1xuICAgIHRoaXMuZHJvcGRvd25PcGVuZWQuZW1pdChldmVudCk7XG4gIH1cbn1cblxuXG4iXX0=