@osovitny/anatoly 3.17.160 → 3.19.1

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 (179) hide show
  1. package/fesm2022/osovitny-anatoly.mjs +553 -522
  2. package/fesm2022/osovitny-anatoly.mjs.map +1 -1
  3. package/lib/billing/utils.d.ts +2 -1
  4. package/lib/core/converts/convert.d.ts +1 -1
  5. package/lib/core/guid.d.ts +1 -1
  6. package/lib/core/is.d.ts +5 -5
  7. package/lib/ui/components/base/components/component.d.ts +1 -1
  8. package/lib/ui/components/base/components/edit.component.d.ts +1 -1
  9. package/lib/ui/components/base/components/enum-edit.component.d.ts +1 -1
  10. package/lib/ui/components/data-grid/control-panel.component.d.ts +6 -5
  11. package/lib/ui/components/dropdownlists/country/country.dropdownlist.d.ts +1 -3
  12. package/lib/ui/directives/index.d.ts +1 -1
  13. package/lib/ui/directives/replacer/replacer.base.directive.d.ts +1 -1
  14. package/package.json +58 -60
  15. package/esm2022/lib/anatoly.module.mjs +0 -62
  16. package/esm2022/lib/billing/billing.module.mjs +0 -81
  17. package/esm2022/lib/billing/components/buttons/buyaccess-button.component.mjs +0 -104
  18. package/esm2022/lib/billing/components/buttons/subscribe-plan-button.component.mjs +0 -113
  19. package/esm2022/lib/billing/components/exports.mjs +0 -28
  20. package/esm2022/lib/billing/components/index.mjs +0 -31
  21. package/esm2022/lib/billing/components/order-summary/order-summary.component.mjs +0 -154
  22. package/esm2022/lib/billing/components/payment-methods/payment-methods.component.mjs +0 -106
  23. package/esm2022/lib/billing/components/payment-options/payment-options.component.mjs +0 -97
  24. package/esm2022/lib/billing/components/pm/braintree/braintree.component.mjs +0 -155
  25. package/esm2022/lib/billing/components/pm/paypal/paypal-button.component.mjs +0 -159
  26. package/esm2022/lib/billing/components/pm/paypal/paypal-subscribe-button.component.mjs +0 -149
  27. package/esm2022/lib/billing/components/pm/paypal/paypal.component.mjs +0 -317
  28. package/esm2022/lib/billing/components/pm/stripe/stripe.component.mjs +0 -109
  29. package/esm2022/lib/billing/exports.mjs +0 -19
  30. package/esm2022/lib/billing/models/paypal-models.mjs +0 -16
  31. package/esm2022/lib/billing/services/payments.service.mjs +0 -170
  32. package/esm2022/lib/billing/services/paypal-script.service.mjs +0 -90
  33. package/esm2022/lib/billing/utils.mjs +0 -28
  34. package/esm2022/lib/core/browser.mjs +0 -24
  35. package/esm2022/lib/core/consts/app-settings.mjs +0 -55
  36. package/esm2022/lib/core/consts/core-settings.mjs +0 -29
  37. package/esm2022/lib/core/consts/formats.mjs +0 -27
  38. package/esm2022/lib/core/consts/ga.mjs +0 -26
  39. package/esm2022/lib/core/consts/storageKeys.mjs +0 -23
  40. package/esm2022/lib/core/converts/convert.mjs +0 -103
  41. package/esm2022/lib/core/converts/dateConvert.mjs +0 -60
  42. package/esm2022/lib/core/converts/tz/tzParseTimezone.mjs +0 -122
  43. package/esm2022/lib/core/converts/tz/tzTokenizeDate.mjs +0 -101
  44. package/esm2022/lib/core/converts/xmlFormatter.mjs +0 -34
  45. package/esm2022/lib/core/core.module.mjs +0 -112
  46. package/esm2022/lib/core/dom.mjs +0 -153
  47. package/esm2022/lib/core/enums/billing.mjs +0 -56
  48. package/esm2022/lib/core/enums/enums.mjs +0 -35
  49. package/esm2022/lib/core/enums/index.mjs +0 -17
  50. package/esm2022/lib/core/exports.mjs +0 -67
  51. package/esm2022/lib/core/go/apps-go.service.mjs +0 -88
  52. package/esm2022/lib/core/go/go.service.mjs +0 -86
  53. package/esm2022/lib/core/guards/once-import.guard.mjs +0 -21
  54. package/esm2022/lib/core/guards/starter.guard.mjs +0 -46
  55. package/esm2022/lib/core/guid.mjs +0 -22
  56. package/esm2022/lib/core/interceptors/httpInterceptor.mjs +0 -161
  57. package/esm2022/lib/core/is.mjs +0 -98
  58. package/esm2022/lib/core/localization/localization.module.mjs +0 -45
  59. package/esm2022/lib/core/localization/localization.service.mjs +0 -164
  60. package/esm2022/lib/core/localization/localize.pipe.mjs +0 -83
  61. package/esm2022/lib/core/localization/settings.module.mjs +0 -103
  62. package/esm2022/lib/core/localization/utils.mjs +0 -41
  63. package/esm2022/lib/core/logging/globalErrorHandler.mjs +0 -41
  64. package/esm2022/lib/core/logging/logging.service.mjs +0 -40
  65. package/esm2022/lib/core/models/qs.mjs +0 -17
  66. package/esm2022/lib/core/notifications/alerts.mjs +0 -116
  67. package/esm2022/lib/core/notifications/interfaces/notification.mjs +0 -17
  68. package/esm2022/lib/core/notifications/services/notification-service.mjs +0 -83
  69. package/esm2022/lib/core/performance/stopwatch.mjs +0 -50
  70. package/esm2022/lib/core/services/appcontext.service.mjs +0 -186
  71. package/esm2022/lib/core/services/dm.service.mjs +0 -69
  72. package/esm2022/lib/core/services/google-analytics.service.mjs +0 -75
  73. package/esm2022/lib/core/services/idle.service.mjs +0 -77
  74. package/esm2022/lib/core/services/loading.service.mjs +0 -67
  75. package/esm2022/lib/core/services/script.service.mjs +0 -77
  76. package/esm2022/lib/core/services/starter.service.mjs +0 -85
  77. package/esm2022/lib/core/services/web-storage.service.mjs +0 -66
  78. package/esm2022/lib/core/subs.mjs +0 -31
  79. package/esm2022/lib/core/utils/qsutils.mjs +0 -84
  80. package/esm2022/lib/core/utils/utils.mjs +0 -112
  81. package/esm2022/lib/data/base/api.service.mjs +0 -94
  82. package/esm2022/lib/data/base/grid/grid-edit.service.mjs +0 -80
  83. package/esm2022/lib/data/base/grid/grid-read.service.mjs +0 -60
  84. package/esm2022/lib/data/data.module.mjs +0 -66
  85. package/esm2022/lib/data/exports.mjs +0 -29
  86. package/esm2022/lib/data/services/billing/currencies-api.service.mjs +0 -41
  87. package/esm2022/lib/data/services/billing/currencies-storage.service.mjs +0 -92
  88. package/esm2022/lib/data/services/billing/discountcodes-api.service.mjs +0 -37
  89. package/esm2022/lib/data/services/billing/payments-api.service.mjs +0 -64
  90. package/esm2022/lib/data/services/billing/subscriptions-api.service.mjs +0 -61
  91. package/esm2022/lib/data/services/billing/transactions-api.service.mjs +0 -43
  92. package/esm2022/lib/data/services/core-api.service.mjs +0 -44
  93. package/esm2022/lib/data/services/emails-api.service.mjs +0 -47
  94. package/esm2022/lib/external/fa.module.mjs +0 -45
  95. package/esm2022/lib/external/kendo.module.mjs +0 -179
  96. package/esm2022/lib/iam/b2c/b2c.mjs +0 -40
  97. package/esm2022/lib/iam/b2c/consts.mjs +0 -25
  98. package/esm2022/lib/iam/b2c/index.mjs +0 -21
  99. package/esm2022/lib/iam/configs.mjs +0 -109
  100. package/esm2022/lib/iam/consts.mjs +0 -22
  101. package/esm2022/lib/iam/exports.mjs +0 -22
  102. package/esm2022/lib/iam/guards/admin.guard.mjs +0 -46
  103. package/esm2022/lib/iam/guards/authentication.guard.mjs +0 -30
  104. package/esm2022/lib/iam/guards/index.mjs +0 -20
  105. package/esm2022/lib/iam/iam-pages.module.mjs +0 -57
  106. package/esm2022/lib/iam/iam-pages.routes.mjs +0 -45
  107. package/esm2022/lib/iam/iam.module.mjs +0 -84
  108. package/esm2022/lib/iam/pages/signin.page.mjs +0 -40
  109. package/esm2022/lib/iam/pages/signout.page.mjs +0 -40
  110. package/esm2022/lib/iam/pages/signup.page.mjs +0 -40
  111. package/esm2022/lib/iam/redirect.mjs +0 -29
  112. package/esm2022/lib/iam/services/auth.service.mjs +0 -436
  113. package/esm2022/lib/iam/storage.mjs +0 -42
  114. package/esm2022/lib/iam/utils.mjs +0 -49
  115. package/esm2022/lib/ui/components/base/components/component.mjs +0 -76
  116. package/esm2022/lib/ui/components/base/components/edit.component.mjs +0 -146
  117. package/esm2022/lib/ui/components/base/components/enum-edit.component.mjs +0 -92
  118. package/esm2022/lib/ui/components/base/dialog.mjs +0 -71
  119. package/esm2022/lib/ui/components/base/list.mjs +0 -100
  120. package/esm2022/lib/ui/components/base/pages/edit.page.mjs +0 -32
  121. package/esm2022/lib/ui/components/base/pages/page.mjs +0 -32
  122. package/esm2022/lib/ui/components/base/pages/paged.page.mjs +0 -68
  123. package/esm2022/lib/ui/components/card/card-body.component.mjs +0 -37
  124. package/esm2022/lib/ui/components/card/card-footer.component.mjs +0 -37
  125. package/esm2022/lib/ui/components/card/card-header.component.mjs +0 -51
  126. package/esm2022/lib/ui/components/card/card.component.mjs +0 -41
  127. package/esm2022/lib/ui/components/check-icon/check-icon.component.mjs +0 -43
  128. package/esm2022/lib/ui/components/copy-2-clipboard/copy-2-clipboard.component.mjs +0 -57
  129. package/esm2022/lib/ui/components/data-grid/control-panel.component.mjs +0 -201
  130. package/esm2022/lib/ui/components/datapager/datapager.component.mjs +0 -95
  131. package/esm2022/lib/ui/components/dropdownlists/country/country.dropdownlist.mjs +0 -96
  132. package/esm2022/lib/ui/components/dropdownlists/moderationstatus/moderationstatus.dropdownlist.mjs +0 -88
  133. package/esm2022/lib/ui/components/dropdownlists/publishstatus/publishstatus.dropdownlist.mjs +0 -88
  134. package/esm2022/lib/ui/components/dropdownlists/timezone/timezone.dropdownlist.mjs +0 -112
  135. package/esm2022/lib/ui/components/exports.mjs +0 -53
  136. package/esm2022/lib/ui/components/feature-will-be-ready/feature-will-be-ready.component.mjs +0 -55
  137. package/esm2022/lib/ui/components/html-editor/base-editor.component.mjs +0 -94
  138. package/esm2022/lib/ui/components/html-editor/defaultoptions.mjs +0 -87
  139. package/esm2022/lib/ui/components/html-editor/html-editor.component.mjs +0 -114
  140. package/esm2022/lib/ui/components/identity/signin-button.component.mjs +0 -105
  141. package/esm2022/lib/ui/components/identity/signout-button.component.mjs +0 -105
  142. package/esm2022/lib/ui/components/identity/signup-button.component.mjs +0 -105
  143. package/esm2022/lib/ui/components/index.mjs +0 -57
  144. package/esm2022/lib/ui/components/no-mobile-support/no-mobile-support.component.mjs +0 -45
  145. package/esm2022/lib/ui/components/nodata/nodata.component.mjs +0 -76
  146. package/esm2022/lib/ui/components/spinners/loading/loading.component.mjs +0 -53
  147. package/esm2022/lib/ui/components/spinners/pagespinner/pagespinner.component.mjs +0 -85
  148. package/esm2022/lib/ui/components/spinners/pagespinner/spinkits.mjs +0 -12
  149. package/esm2022/lib/ui/components/urlslug/urlslug.component.mjs +0 -130
  150. package/esm2022/lib/ui/components/you-agree-to-our-terms/you-agree-to-our-terms.component.mjs +0 -63
  151. package/esm2022/lib/ui/dialogs/contact-us/contact-us.dialog.mjs +0 -78
  152. package/esm2022/lib/ui/dialogs/exports.mjs +0 -16
  153. package/esm2022/lib/ui/dialogs/index.mjs +0 -19
  154. package/esm2022/lib/ui/directives/exports.mjs +0 -19
  155. package/esm2022/lib/ui/directives/hover.directive.mjs +0 -50
  156. package/esm2022/lib/ui/directives/index.mjs +0 -22
  157. package/esm2022/lib/ui/directives/native-element.directive.mjs +0 -37
  158. package/esm2022/lib/ui/directives/replacer/a-replacer.directive.mjs +0 -48
  159. package/esm2022/lib/ui/directives/replacer/image-replacer.directive.mjs +0 -44
  160. package/esm2022/lib/ui/directives/replacer/replacer.base.directive.mjs +0 -44
  161. package/esm2022/lib/ui/exports.mjs +0 -22
  162. package/esm2022/lib/ui/forms/components/address/address.component.mjs +0 -240
  163. package/esm2022/lib/ui/forms/components/company/company.component.mjs +0 -138
  164. package/esm2022/lib/ui/forms/contact-us/contact-us.mjs +0 -213
  165. package/esm2022/lib/ui/forms/exports.mjs +0 -20
  166. package/esm2022/lib/ui/forms/index.mjs +0 -21
  167. package/esm2022/lib/ui/pipes/exports.mjs +0 -19
  168. package/esm2022/lib/ui/pipes/filesize.pipe.mjs +0 -42
  169. package/esm2022/lib/ui/pipes/index.mjs +0 -22
  170. package/esm2022/lib/ui/pipes/replace-text.pipe.mjs +0 -37
  171. package/esm2022/lib/ui/pipes/safeHtml.pipe.mjs +0 -34
  172. package/esm2022/lib/ui/ui.module.mjs +0 -122
  173. package/esm2022/lib/ui/validation/exports.mjs +0 -19
  174. package/esm2022/lib/ui/validation/form-validation-summary.component.mjs +0 -90
  175. package/esm2022/lib/ui/validation/index.mjs +0 -21
  176. package/esm2022/lib/ui/validation/item-validation-summary.component.mjs +0 -53
  177. package/esm2022/lib/ui/validation/validation-summary.component.mjs +0 -124
  178. package/esm2022/osovitny-anatoly.mjs +0 -5
  179. package/esm2022/public-api.mjs +0 -22
@@ -1,240 +0,0 @@
1
- /*
2
- <file>
3
- Project:
4
- @osovitny/anatoly
5
-
6
- Authors:
7
- Vadim Osovitny vadim.osovitny@osovitny.com
8
- Anatoly Osovitny anatoly.osovitny@osovitny.com
9
-
10
- Created:
11
- 02 Aug 2022
12
-
13
- Copyright (c) 2017-2025 Osovitny Inc. All rights reserved.
14
- </file>
15
- */
16
- //Node
17
- import { Component, EventEmitter, Input, Output } from '@angular/core';
18
- import { Validators } from '@angular/forms';
19
- import { Convert } from '../../../../core/exports';
20
- import { EditComponentBase } from '../../../components/exports';
21
- import * as i0 from "@angular/core";
22
- import * as i1 from "@angular/forms";
23
- import * as i2 from "../../../../data/exports";
24
- import * as i3 from "@angular/common";
25
- import * as i4 from "../../../components/card/card.component";
26
- import * as i5 from "../../../components/card/card-header.component";
27
- import * as i6 from "../../../components/card/card-body.component";
28
- import * as i7 from "../../../directives/native-element.directive";
29
- import * as i8 from "../../../validation/item-validation-summary.component";
30
- function AddressComponent_anatoly_card_header_1_Template(rf, ctx) { if (rf & 1) {
31
- i0.ɵɵelement(0, "anatoly-card-header", 18);
32
- } if (rf & 2) {
33
- const ctx_r0 = i0.ɵɵnextContext();
34
- i0.ɵɵproperty("title", ctx_r0.title);
35
- } }
36
- function AddressComponent_div_18_option_4_Template(rf, ctx) { if (rf & 1) {
37
- i0.ɵɵelementStart(0, "option", 21);
38
- i0.ɵɵtext(1);
39
- i0.ɵɵelementEnd();
40
- } if (rf & 2) {
41
- const state_r4 = ctx.$implicit;
42
- i0.ɵɵproperty("value", state_r4.code);
43
- i0.ɵɵadvance();
44
- i0.ɵɵtextInterpolate(state_r4.name);
45
- } }
46
- const _c0 = a0 => ({ "has-error": a0 });
47
- function AddressComponent_div_18_Template(rf, ctx) { if (rf & 1) {
48
- const _r6 = i0.ɵɵgetCurrentView();
49
- i0.ɵɵelementStart(0, "div", 9)(1, "label");
50
- i0.ɵɵtext(2, "State");
51
- i0.ɵɵelementEnd();
52
- i0.ɵɵelementStart(3, "select", 19);
53
- i0.ɵɵlistener("change", function AddressComponent_div_18_Template_select_change_3_listener($event) { i0.ɵɵrestoreView(_r6); const ctx_r5 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r5.onUSStateChange($event)); });
54
- i0.ɵɵtemplate(4, AddressComponent_div_18_option_4_Template, 2, 2, "option", 16);
55
- i0.ɵɵelementEnd();
56
- i0.ɵɵelement(5, "anatoly-item-validation-summary", 20);
57
- i0.ɵɵelementEnd();
58
- } if (rf & 2) {
59
- const ctx_r1 = i0.ɵɵnextContext();
60
- i0.ɵɵproperty("ngClass", i0.ɵɵpureFunction1(4, _c0, ctx_r1.isControlInvalid("address_stateOrRegion")));
61
- i0.ɵɵadvance(4);
62
- i0.ɵɵproperty("ngForOf", ctx_r1.usStateData);
63
- i0.ɵɵadvance();
64
- i0.ɵɵproperty("formGroup", ctx_r1.formGroup)("formSubmitted", ctx_r1.formSubmitted);
65
- } }
66
- function AddressComponent_option_28_Template(rf, ctx) { if (rf & 1) {
67
- i0.ɵɵelementStart(0, "option", 21);
68
- i0.ɵɵtext(1);
69
- i0.ɵɵelementEnd();
70
- } if (rf & 2) {
71
- const country_r7 = ctx.$implicit;
72
- i0.ɵɵproperty("value", country_r7.code);
73
- i0.ɵɵadvance();
74
- i0.ɵɵtextInterpolate(country_r7.name);
75
- } }
76
- export class AddressComponent extends EditComponentBase {
77
- //Inputs
78
- get address() {
79
- return this._address;
80
- }
81
- set address(value) {
82
- this._address = value;
83
- if (value) {
84
- this.init();
85
- }
86
- }
87
- constructor(fb, api) {
88
- super();
89
- this.fb = fb;
90
- this.api = api;
91
- this.formGroupGenerated = false;
92
- this.countryData = [];
93
- this.usStateData = [];
94
- this.currentCountry = 'US';
95
- this.currentUSState = 'NY';
96
- //Outputs
97
- this.change = new EventEmitter();
98
- this.title = 'Address';
99
- }
100
- ngOnInit() {
101
- this.api.getCountriesJsonFile().subscribe({
102
- next: (data) => {
103
- this.countryData = data;
104
- }
105
- });
106
- this.api.getUSStatesJsonFile().subscribe({
107
- next: (data) => {
108
- this.usStateData = data;
109
- }
110
- });
111
- this.createFormGroup();
112
- this.init();
113
- }
114
- createFormGroup() {
115
- let isRequired = Convert.stringToBoolean(this.isRequired);
116
- if (isRequired) {
117
- this.formGroup.addControl('address_street', this.fb.control('', [Validators.required]));
118
- this.formGroup.addControl('address_street2', this.fb.control('', []));
119
- this.formGroup.addControl('address_city', this.fb.control('', [Validators.required]));
120
- this.formGroup.addControl('address_stateOrRegion', this.fb.control(this.currentUSState, [Validators.required]));
121
- this.formGroup.addControl('address_country', this.fb.control(this.currentCountry, [Validators.required]));
122
- this.formGroup.addControl('address_zipcode', this.fb.control('', [Validators.required]));
123
- }
124
- else {
125
- this.formGroup.addControl('address_street', this.fb.control('', []));
126
- this.formGroup.addControl('address_street2', this.fb.control('', []));
127
- this.formGroup.addControl('address_city', this.fb.control('', []));
128
- this.formGroup.addControl('address_stateOrRegion', this.fb.control(this.currentUSState, []));
129
- this.formGroup.addControl('address_country', this.fb.control(this.currentCountry, []));
130
- this.formGroup.addControl('address_zipcode', this.fb.control('', []));
131
- }
132
- this.formGroupGenerated = true;
133
- }
134
- init() {
135
- if (!this.formGroupGenerated) {
136
- return;
137
- }
138
- if (this._address !== undefined) {
139
- let address = JSON.parse(this._address);
140
- this.setFormValue('address_street', address.street);
141
- this.setFormValue('address_street2', address.street2);
142
- this.setFormValue('address_city', address.city);
143
- this.setFormValue('address_stateOrRegion', address.stateOrRegion);
144
- this.setFormValue('address_zipcode', address.zipcode);
145
- this.setFormValue('address_country', address.country);
146
- }
147
- }
148
- getAddress() {
149
- const data = {
150
- street: this.getFormValue('address_street') || null,
151
- street2: this.getFormValue('address_street2') || null,
152
- city: this.getFormValue('address_city') || null,
153
- stateOrRegion: this.getFormValue('address_stateOrRegion') || null,
154
- zipcode: this.getFormValue('address_zipcode') || null,
155
- country: this.getFormValue('address_country') || null
156
- };
157
- return JSON.stringify(data);
158
- }
159
- //Events
160
- onCountryChange(event) {
161
- let country = event.target.value;
162
- this.change.emit(country);
163
- }
164
- onUSStateChange(event) {
165
- let usState = event.target.value;
166
- this.change.emit(usState);
167
- }
168
- static { this.ɵfac = function AddressComponent_Factory(t) { return new (t || AddressComponent)(i0.ɵɵdirectiveInject(i1.FormBuilder), i0.ɵɵdirectiveInject(i2.CoreApiService)); }; }
169
- static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: AddressComponent, selectors: [["anatoly-forms-address"]], inputs: { address: "address" }, outputs: { change: "change" }, features: [i0.ɵɵInheritDefinitionFeature], decls: 30, vars: 29, consts: [["classes", "card-outline card-primary"], [3, "title", 4, "ngIf"], [3, "formGroup"], [1, "row"], [1, "form-group", 3, "ngClass"], ["type", "text", "formControlName", "address_street", "placeholder", "Street Address", 1, "form-control"], ["controlName", "address_street", "controlTitle", "Street", 3, "formGroup", "formSubmitted"], ["type", "text", "formControlName", "address_street2", "placeholder", "Apartment, suite, unit, building, floor, etc.", 1, "form-control"], ["controlName", "address_street2", "controlTitle", "Street2", 3, "formGroup", "formSubmitted"], [1, "form-group", "col-3", "mb-0", 3, "ngClass"], ["type", "text", "formControlName", "address_city", "placeholder", "City", 1, "form-control"], ["controlName", "address_city", "controlTitle", "City", 3, "formGroup", "formSubmitted"], ["class", "form-group col-3 mb-0", 3, "ngClass", 4, "ngIf"], ["type", "text", "formControlName", "address_zipcode", "placeholder", "zipcode", 1, "form-control"], ["controlName", "address_zipcode", "controlTitle", "zipcode", 3, "formGroup", "formSubmitted"], ["formControlName", "address_country", "data-placeholder", "Select a Country", 1, "form-control", 3, "change"], [3, "value", 4, "ngFor", "ngForOf"], ["controlName", "address_country", "controlTitle", "Country", 3, "formGroup", "formSubmitted"], [3, "title"], ["formControlName", "address_stateOrRegion", 1, "form-control", 3, "change"], ["controlName", "address_stateOrRegion", "controlTitle", "State", 3, "formGroup", "formSubmitted"], [3, "value"]], template: function AddressComponent_Template(rf, ctx) { if (rf & 1) {
170
- i0.ɵɵelementStart(0, "anatoly-card", 0);
171
- i0.ɵɵtemplate(1, AddressComponent_anatoly_card_header_1_Template, 1, 1, "anatoly-card-header", 1);
172
- i0.ɵɵelementStart(2, "anatoly-card-body", 2)(3, "div", 3)(4, "div", 4)(5, "label");
173
- i0.ɵɵtext(6, "Street Address");
174
- i0.ɵɵelementEnd();
175
- i0.ɵɵelement(7, "input", 5)(8, "anatoly-item-validation-summary", 6);
176
- i0.ɵɵelementEnd();
177
- i0.ɵɵelementStart(9, "div", 4);
178
- i0.ɵɵelement(10, "input", 7)(11, "anatoly-item-validation-summary", 8);
179
- i0.ɵɵelementEnd()();
180
- i0.ɵɵelementStart(12, "div", 3)(13, "div", 9)(14, "label");
181
- i0.ɵɵtext(15, "City");
182
- i0.ɵɵelementEnd();
183
- i0.ɵɵelement(16, "input", 10)(17, "anatoly-item-validation-summary", 11);
184
- i0.ɵɵelementEnd();
185
- i0.ɵɵtemplate(18, AddressComponent_div_18_Template, 6, 6, "div", 12);
186
- i0.ɵɵelementStart(19, "div", 9)(20, "label");
187
- i0.ɵɵtext(21, "Zipcode");
188
- i0.ɵɵelementEnd();
189
- i0.ɵɵelement(22, "input", 13)(23, "anatoly-item-validation-summary", 14);
190
- i0.ɵɵelementEnd();
191
- i0.ɵɵelementStart(24, "div", 9)(25, "label");
192
- i0.ɵɵtext(26, "Country");
193
- i0.ɵɵelementEnd();
194
- i0.ɵɵelementStart(27, "select", 15);
195
- i0.ɵɵlistener("change", function AddressComponent_Template_select_change_27_listener($event) { return ctx.onCountryChange($event); });
196
- i0.ɵɵtemplate(28, AddressComponent_option_28_Template, 2, 2, "option", 16);
197
- i0.ɵɵelementEnd();
198
- i0.ɵɵelement(29, "anatoly-item-validation-summary", 17);
199
- i0.ɵɵelementEnd()()()();
200
- } if (rf & 2) {
201
- i0.ɵɵadvance();
202
- i0.ɵɵproperty("ngIf", ctx.isTitleVisible);
203
- i0.ɵɵadvance();
204
- i0.ɵɵproperty("formGroup", ctx.formGroup);
205
- i0.ɵɵadvance(2);
206
- i0.ɵɵproperty("ngClass", i0.ɵɵpureFunction1(19, _c0, ctx.isControlInvalid("address_street")));
207
- i0.ɵɵadvance(4);
208
- i0.ɵɵproperty("formGroup", ctx.formGroup)("formSubmitted", ctx.formSubmitted);
209
- i0.ɵɵadvance();
210
- i0.ɵɵproperty("ngClass", i0.ɵɵpureFunction1(21, _c0, ctx.isControlInvalid("address_street2")));
211
- i0.ɵɵadvance(2);
212
- i0.ɵɵproperty("formGroup", ctx.formGroup)("formSubmitted", ctx.formSubmitted);
213
- i0.ɵɵadvance(2);
214
- i0.ɵɵproperty("ngClass", i0.ɵɵpureFunction1(23, _c0, ctx.isControlInvalid("address_city")));
215
- i0.ɵɵadvance(4);
216
- i0.ɵɵproperty("formGroup", ctx.formGroup)("formSubmitted", ctx.formSubmitted);
217
- i0.ɵɵadvance();
218
- i0.ɵɵproperty("ngIf", ctx.formGroup.value.address_country == "US");
219
- i0.ɵɵadvance();
220
- i0.ɵɵproperty("ngClass", i0.ɵɵpureFunction1(25, _c0, ctx.isControlInvalid("address_zipcode")));
221
- i0.ɵɵadvance(4);
222
- i0.ɵɵproperty("formGroup", ctx.formGroup)("formSubmitted", ctx.formSubmitted);
223
- i0.ɵɵadvance();
224
- i0.ɵɵproperty("ngClass", i0.ɵɵpureFunction1(27, _c0, ctx.isControlInvalid("address_country")));
225
- i0.ɵɵadvance(4);
226
- i0.ɵɵproperty("ngForOf", ctx.countryData);
227
- i0.ɵɵadvance();
228
- i0.ɵɵproperty("formGroup", ctx.formGroup)("formSubmitted", ctx.formSubmitted);
229
- } }, dependencies: [i3.NgClass, i3.NgForOf, i3.NgIf, i1.NgSelectOption, i1.ɵNgSelectMultipleOption, i1.DefaultValueAccessor, i1.SelectControlValueAccessor, i1.NgControlStatus, i1.NgControlStatusGroup, i1.FormGroupDirective, i1.FormControlName, i4.CardComponent, i5.CardHeaderComponent, i6.CardBodyComponent, i7.NativeElementDirective, i8.ItemValidationSummaryComponent], encapsulation: 2 }); }
230
- }
231
- (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(AddressComponent, [{
232
- type: Component,
233
- args: [{ selector: 'anatoly-forms-address', template: "<anatoly-card classes='card-outline card-primary'>\r\n <anatoly-card-header *ngIf='isTitleVisible' [title]='title' />\r\n <anatoly-card-body [formGroup]='formGroup'>\r\n <div class=\"row\">\r\n <div class='form-group' [ngClass]=\"{'has-error': isControlInvalid('address_street')}\" >\r\n <label>Street Address</label>\r\n <input type='text' class='form-control' formControlName='address_street' placeholder='Street Address'>\r\n <anatoly-item-validation-summary controlName='address_street'\r\n controlTitle='Street'\r\n [formGroup]='formGroup'\r\n [formSubmitted]='formSubmitted'>\r\n </anatoly-item-validation-summary>\r\n </div>\r\n <div class='form-group' [ngClass]=\"{'has-error': isControlInvalid('address_street2')}\" >\r\n <input type='text' class='form-control' formControlName='address_street2' placeholder='Apartment, suite, unit, building, floor, etc.'>\r\n <anatoly-item-validation-summary controlName='address_street2'\r\n controlTitle='Street2'\r\n [formGroup]='formGroup'\r\n [formSubmitted]='formSubmitted'>\r\n </anatoly-item-validation-summary>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class='form-group col-3 mb-0' [ngClass]=\"{'has-error': isControlInvalid('address_city')}\">\r\n <label>City</label>\r\n <input type='text' class='form-control' formControlName='address_city' placeholder='City'>\r\n <anatoly-item-validation-summary controlName='address_city'\r\n controlTitle='City'\r\n [formGroup]='formGroup'\r\n [formSubmitted]='formSubmitted'>\r\n </anatoly-item-validation-summary>\r\n </div>\r\n <div class='form-group col-3 mb-0' *ngIf=\"formGroup.value.address_country == 'US'\" [ngClass]=\"{'has-error': isControlInvalid('address_stateOrRegion')}\">\r\n <label>State</label>\r\n <select class='form-control' (change)='onUSStateChange($event)' formControlName='address_stateOrRegion'>\r\n <option *ngFor='let state of usStateData' [value]='state.code'>{{state.name}}</option>\r\n </select>\r\n <anatoly-item-validation-summary controlName='address_stateOrRegion'\r\n controlTitle='State'\r\n [formGroup]='formGroup'\r\n [formSubmitted]='formSubmitted'>\r\n </anatoly-item-validation-summary>\r\n </div>\r\n <div class='form-group col-3 mb-0' [ngClass]=\"{'has-error': isControlInvalid('address_zipcode')}\" >\r\n <label>Zipcode</label>\r\n <input type='text' class='form-control' formControlName='address_zipcode' placeholder='zipcode'>\r\n <anatoly-item-validation-summary controlName='address_zipcode'\r\n controlTitle='zipcode'\r\n [formGroup]='formGroup'\r\n [formSubmitted]='formSubmitted'>\r\n </anatoly-item-validation-summary>\r\n </div>\r\n <div class='form-group col-3 mb-0' [ngClass]=\"{'has-error': isControlInvalid('address_country')}\">\r\n <label>Country</label>\r\n <select class='form-control' (change)='onCountryChange($event)' formControlName='address_country' data-placeholder='Select a Country'>\r\n <option *ngFor='let country of countryData' [value]='country.code'>{{country.name}}</option>\r\n </select>\r\n <anatoly-item-validation-summary controlName='address_country'\r\n controlTitle='Country'\r\n [formGroup]='formGroup'\r\n [formSubmitted]='formSubmitted'>\r\n </anatoly-item-validation-summary>\r\n </div>\r\n </div>\r\n </anatoly-card-body>\r\n</anatoly-card>\r\n" }]
234
- }], () => [{ type: i1.FormBuilder }, { type: i2.CoreApiService }], { address: [{
235
- type: Input
236
- }], change: [{
237
- type: Output
238
- }] }); })();
239
- (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(AddressComponent, { className: "AddressComponent", filePath: "lib\\ui\\forms\\components\\address\\address.component.ts", lineNumber: 35 }); })();
240
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRkcmVzcy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmF0b2x5L3NyYy9saWIvdWkvZm9ybXMvY29tcG9uZW50cy9hZGRyZXNzL2FkZHJlc3MuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5hdG9seS9zcmMvbGliL3VpL2Zvcm1zL2NvbXBvbmVudHMvYWRkcmVzcy9hZGRyZXNzLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7OztFQWNFO0FBRUYsTUFBTTtBQUNOLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBVSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDL0UsT0FBTyxFQUFlLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBSXpELE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUNuRCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQzs7Ozs7Ozs7Ozs7SUN0QjlELDBDQUE4RDs7O0lBQWxCLG9DQUFlOzs7SUFrQ25ELGtDQUErRDtJQUFBLFlBQWM7SUFBQSxpQkFBUzs7O0lBQTVDLHFDQUFvQjtJQUFDLGNBQWM7SUFBZCxtQ0FBYzs7Ozs7SUFIakYsOEJBQXdKLFlBQUE7SUFDL0kscUJBQUs7SUFBQSxpQkFBUTtJQUNwQixrQ0FBd0c7SUFBM0Usc0tBQVUsZUFBQSw4QkFBdUIsQ0FBQSxJQUFDO0lBQzdELCtFQUFzRjtJQUN4RixpQkFBUztJQUNULHNEQUlrQztJQUNwQyxpQkFBTTs7O0lBVjZFLHNHQUFvRTtJQUd6SCxlQUFjO0lBQWQsNENBQWM7SUFJVCxjQUF1QjtJQUF2Qiw0Q0FBdUIsdUNBQUE7OztJQWdCdEQsa0NBQW1FO0lBQUEsWUFBZ0I7SUFBQSxpQkFBUzs7O0lBQWhELHVDQUFzQjtJQUFDLGNBQWdCO0lBQWhCLHFDQUFnQjs7QURyQjdGLE1BQU0sT0FBTyxnQkFBaUIsU0FBUSxpQkFBaUI7SUFXckQsUUFBUTtJQUNSLElBQ0ksT0FBTztRQUNULE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQztJQUN2QixDQUFDO0lBQ0QsSUFBSSxPQUFPLENBQUMsS0FBSztRQUNmLElBQUksQ0FBQyxRQUFRLEdBQUcsS0FBSyxDQUFDO1FBRXRCLElBQUksS0FBSyxFQUFFLENBQUM7WUFDVixJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDZCxDQUFDO0lBQ0gsQ0FBQztJQUtELFlBQW9CLEVBQWUsRUFBVSxHQUFtQjtRQUM5RCxLQUFLLEVBQUUsQ0FBQztRQURVLE9BQUUsR0FBRixFQUFFLENBQWE7UUFBVSxRQUFHLEdBQUgsR0FBRyxDQUFnQjtRQXZCaEUsdUJBQWtCLEdBQUcsS0FBSyxDQUFDO1FBRTNCLGdCQUFXLEdBQW9CLEVBQUUsQ0FBQztRQUNsQyxnQkFBVyxHQUFvQixFQUFFLENBQUM7UUFDbEMsbUJBQWMsR0FBRyxJQUFJLENBQUM7UUFDdEIsbUJBQWMsR0FBRyxJQUFJLENBQUM7UUFldEIsU0FBUztRQUNDLFdBQU0sR0FBRyxJQUFJLFlBQVksRUFBTyxDQUFDO1FBSXpDLElBQUksQ0FBQyxLQUFLLEdBQUcsU0FBUyxDQUFDO0lBQ3pCLENBQUM7SUFFRCxRQUFRO1FBQ04sSUFBSSxDQUFDLEdBQUcsQ0FBQyxvQkFBb0IsRUFBRSxDQUFDLFNBQVMsQ0FBQztZQUN4QyxJQUFJLEVBQUUsQ0FBQyxJQUFJLEVBQUUsRUFBRTtnQkFDYixJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQztZQUMxQixDQUFDO1NBQ0YsQ0FBQyxDQUFDO1FBRUgsSUFBSSxDQUFDLEdBQUcsQ0FBQyxtQkFBbUIsRUFBRSxDQUFDLFNBQVMsQ0FBQztZQUN2QyxJQUFJLEVBQUUsQ0FBQyxJQUFJLEVBQUUsRUFBRTtnQkFDYixJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQztZQUMxQixDQUFDO1NBQ0YsQ0FBQyxDQUFDO1FBRUgsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUNkLENBQUM7SUFFTyxlQUFlO1FBQ3JCLElBQUksVUFBVSxHQUFHLE9BQU8sQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBRTFELElBQUksVUFBVSxFQUFFLENBQUM7WUFDZixJQUFJLENBQUMsU0FBUyxDQUFDLFVBQVUsQ0FBQyxnQkFBZ0IsRUFBRSxJQUFJLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxFQUFFLEVBQUUsQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ3hGLElBQUksQ0FBQyxTQUFTLENBQUMsVUFBVSxDQUFDLGlCQUFpQixFQUFFLElBQUksQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDO1lBQ3RFLElBQUksQ0FBQyxTQUFTLENBQUMsVUFBVSxDQUFDLGNBQWMsRUFBRSxJQUFJLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxFQUFFLEVBQUUsQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ3RGLElBQUksQ0FBQyxTQUFTLENBQUMsVUFBVSxDQUFDLHVCQUF1QixFQUFFLElBQUksQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ2hILElBQUksQ0FBQyxTQUFTLENBQUMsVUFBVSxDQUFDLGlCQUFpQixFQUFFLElBQUksQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQzFHLElBQUksQ0FBQyxTQUFTLENBQUMsVUFBVSxDQUFDLGlCQUFpQixFQUFFLElBQUksQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLEVBQUUsRUFBRSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDM0YsQ0FBQzthQUNJLENBQUM7WUFDSixJQUFJLENBQUMsU0FBUyxDQUFDLFVBQVUsQ0FBQyxnQkFBZ0IsRUFBRSxJQUFJLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQztZQUNyRSxJQUFJLENBQUMsU0FBUyxDQUFDLFVBQVUsQ0FBQyxpQkFBaUIsRUFBRSxJQUFJLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQztZQUN0RSxJQUFJLENBQUMsU0FBUyxDQUFDLFVBQVUsQ0FBQyxjQUFjLEVBQUUsSUFBSSxDQUFDLEVBQUUsQ0FBQyxPQUFPLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUM7WUFDbkUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxVQUFVLENBQUMsdUJBQXVCLEVBQUUsSUFBSSxDQUFDLEVBQUUsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLGNBQWMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDO1lBQzdGLElBQUksQ0FBQyxTQUFTLENBQUMsVUFBVSxDQUFDLGlCQUFpQixFQUFFLElBQUksQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxjQUFjLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQztZQUN2RixJQUFJLENBQUMsU0FBUyxDQUFDLFVBQVUsQ0FBQyxpQkFBaUIsRUFBRSxJQUFJLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUN4RSxDQUFDO1FBRUQsSUFBSSxDQUFDLGtCQUFrQixHQUFHLElBQUksQ0FBQztJQUNqQyxDQUFDO0lBRU8sSUFBSTtRQUNWLElBQUksQ0FBQyxJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztZQUM3QixPQUFPO1FBQ1QsQ0FBQztRQUVELElBQUksSUFBSSxDQUFDLFFBQVEsS0FBSyxTQUFTLEVBQUUsQ0FBQztZQUNoQyxJQUFJLE9BQU8sR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUV4QyxJQUFJLENBQUMsWUFBWSxDQUFDLGdCQUFnQixFQUFFLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUNwRCxJQUFJLENBQUMsWUFBWSxDQUFDLGlCQUFpQixFQUFFLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUN0RCxJQUFJLENBQUMsWUFBWSxDQUFDLGNBQWMsRUFBRSxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDaEQsSUFBSSxDQUFDLFlBQVksQ0FBQyx1QkFBdUIsRUFBRSxPQUFPLENBQUMsYUFBYSxDQUFDLENBQUM7WUFDbEUsSUFBSSxDQUFDLFlBQVksQ0FBQyxpQkFBaUIsRUFBRSxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDdEQsSUFBSSxDQUFDLFlBQVksQ0FBQyxpQkFBaUIsRUFBRSxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDeEQsQ0FBQztJQUNILENBQUM7SUFFRCxVQUFVO1FBQ1IsTUFBTSxJQUFJLEdBQUc7WUFDWCxNQUFNLEVBQUUsSUFBSSxDQUFDLFlBQVksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLElBQUk7WUFDbkQsT0FBTyxFQUFFLElBQUksQ0FBQyxZQUFZLENBQUMsaUJBQWlCLENBQUMsSUFBSSxJQUFJO1lBQ3JELElBQUksRUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDLGNBQWMsQ0FBQyxJQUFJLElBQUk7WUFDL0MsYUFBYSxFQUFFLElBQUksQ0FBQyxZQUFZLENBQUMsdUJBQXVCLENBQUMsSUFBSSxJQUFJO1lBQ2pFLE9BQU8sRUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDLGlCQUFpQixDQUFDLElBQUksSUFBSTtZQUNyRCxPQUFPLEVBQUUsSUFBSSxDQUFDLFlBQVksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLElBQUk7U0FDdEQsQ0FBQztRQUVGLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUM5QixDQUFDO0lBRUQsUUFBUTtJQUNSLGVBQWUsQ0FBQyxLQUFLO1FBQ25CLElBQUksT0FBTyxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDO1FBQ2pDLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQzVCLENBQUM7SUFFRCxlQUFlLENBQUMsS0FBSztRQUNuQixJQUFJLE9BQU8sR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQztRQUNqQyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUM1QixDQUFDO2lGQS9HVSxnQkFBZ0I7b0VBQWhCLGdCQUFnQjtZQ2xDN0IsdUNBQWtEO1lBQ2hELGlHQUE4RDtZQUM5RCw0Q0FBMkMsYUFBQSxhQUFBLFlBQUE7WUFHOUIsOEJBQWM7WUFBQSxpQkFBUTtZQUM3QiwyQkFBc0cseUNBQUE7WUFNeEcsaUJBQU07WUFDTiw4QkFBd0Y7WUFDdEYsNEJBQXNJLDBDQUFBO1lBTXhJLGlCQUFNLEVBQUE7WUFFUiwrQkFBaUIsY0FBQSxhQUFBO1lBRU4scUJBQUk7WUFBQSxpQkFBUTtZQUNuQiw2QkFBMEYsMkNBQUE7WUFNNUYsaUJBQU07WUFDTixvRUFVTTtZQUNOLCtCQUFtRyxhQUFBO1lBQzFGLHdCQUFPO1lBQUEsaUJBQVE7WUFDdEIsNkJBQWdHLDJDQUFBO1lBTWxHLGlCQUFNO1lBQ04sK0JBQWtHLGFBQUE7WUFDekYsd0JBQU87WUFBQSxpQkFBUTtZQUN0QixtQ0FBc0k7WUFBekcsc0dBQVUsMkJBQXVCLElBQUM7WUFDN0QsMEVBQTRGO1lBQzlGLGlCQUFTO1lBQ1QsdURBSWtDO1lBQ3BDLGlCQUFNLEVBQUEsRUFBQSxFQUFBOztZQTdEWSxjQUFvQjtZQUFwQix5Q0FBb0I7WUFDdkIsY0FBdUI7WUFBdkIseUNBQXVCO1lBRWQsZUFBNkQ7WUFBN0QsNkZBQTZEO1lBS2xELGVBQXVCO1lBQXZCLHlDQUF1QixvQ0FBQTtZQUlsQyxjQUE4RDtZQUE5RCw4RkFBOEQ7WUFJbkQsZUFBdUI7WUFBdkIseUNBQXVCLG9DQUFBO1lBTXZCLGVBQTJEO1lBQTNELDJGQUEyRDtZQUszRCxlQUF1QjtZQUF2Qix5Q0FBdUIsb0NBQUE7WUFJdEIsY0FBNkM7WUFBN0Msa0VBQTZDO1lBVzlDLGNBQThEO1lBQTlELDhGQUE4RDtZQUs5RCxlQUF1QjtZQUF2Qix5Q0FBdUIsb0NBQUE7WUFJdkIsY0FBOEQ7WUFBOUQsOEZBQThEO1lBR2pFLGVBQWM7WUFBZCx5Q0FBYztZQUlYLGNBQXVCO1lBQXZCLHlDQUF1QixvQ0FBQTs7O2lGRHpCbkQsZ0JBQWdCO2NBSjVCLFNBQVM7MkJBQ0UsdUJBQXVCO3lFQWdCN0IsT0FBTztrQkFEVixLQUFLO1lBYUksTUFBTTtrQkFBZixNQUFNOztrRkF6QkksZ0JBQWdCIiwic291cmNlc0NvbnRlbnQiOlsiLypcclxuPGZpbGU+XHJcbiAgUHJvamVjdDpcclxuICAgIEBvc292aXRueS9hbmF0b2x5XHJcblxyXG4gIEF1dGhvcnM6XHJcbiAgICBWYWRpbSBPc292aXRueSB2YWRpbS5vc292aXRueUBvc292aXRueS5jb21cclxuICAgIEFuYXRvbHkgT3Nvdml0bnkgYW5hdG9seS5vc292aXRueUBvc292aXRueS5jb21cclxuXHJcbiAgQ3JlYXRlZDpcclxuICAgIDAyIEF1ZyAyMDIyXHJcblxyXG4gIENvcHlyaWdodCAoYykgMjAxNy0yMDI1IE9zb3ZpdG55IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC5cclxuPC9maWxlPlxyXG4qL1xyXG5cclxuLy9Ob2RlXHJcbmltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25Jbml0LCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgRm9ybUJ1aWxkZXIsIFZhbGlkYXRvcnMgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcblxyXG4vL0FwcFxyXG5pbXBvcnQgeyBDb3JlQXBpU2VydmljZSB9IGZyb20gJy4uLy4uLy4uLy4uL2RhdGEvZXhwb3J0cyc7XHJcbmltcG9ydCB7IENvbnZlcnQgfSBmcm9tICcuLi8uLi8uLi8uLi9jb3JlL2V4cG9ydHMnO1xyXG5pbXBvcnQgeyBFZGl0Q29tcG9uZW50QmFzZSB9IGZyb20gJy4uLy4uLy4uL2NvbXBvbmVudHMvZXhwb3J0cyc7XHJcblxyXG5pbnRlcmZhY2UgQ29kZU5hbWUge1xyXG4gIGNvZGU6IHN0cmluZyxcclxuICBuYW1lOiBzdHJpbmdcclxufVxyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdhbmF0b2x5LWZvcm1zLWFkZHJlc3MnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9hZGRyZXNzLmNvbXBvbmVudC5odG1sJ1xyXG59KVxyXG5leHBvcnQgY2xhc3MgQWRkcmVzc0NvbXBvbmVudCBleHRlbmRzIEVkaXRDb21wb25lbnRCYXNlIGltcGxlbWVudHMgT25Jbml0IHtcclxuICAvL1ByaXZhdGVcclxuICBwcml2YXRlIF9hZGRyZXNzO1xyXG5cclxuICBmb3JtR3JvdXBHZW5lcmF0ZWQgPSBmYWxzZTtcclxuXHJcbiAgY291bnRyeURhdGE6IEFycmF5PENvZGVOYW1lPiA9IFtdO1xyXG4gIHVzU3RhdGVEYXRhOiBBcnJheTxDb2RlTmFtZT4gPSBbXTtcclxuICBjdXJyZW50Q291bnRyeSA9ICdVUyc7XHJcbiAgY3VycmVudFVTU3RhdGUgPSAnTlknO1xyXG5cclxuICAvL0lucHV0c1xyXG4gIEBJbnB1dCgpXHJcbiAgZ2V0IGFkZHJlc3MoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5fYWRkcmVzcztcclxuICB9XHJcbiAgc2V0IGFkZHJlc3ModmFsdWUpIHtcclxuICAgIHRoaXMuX2FkZHJlc3MgPSB2YWx1ZTtcclxuXHJcbiAgICBpZiAodmFsdWUpIHtcclxuICAgICAgdGhpcy5pbml0KCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvL091dHB1dHNcclxuICBAT3V0cHV0KCkgY2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XHJcblxyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgZmI6IEZvcm1CdWlsZGVyLCBwcml2YXRlIGFwaTogQ29yZUFwaVNlcnZpY2UpIHtcclxuICAgIHN1cGVyKCk7XHJcbiAgICB0aGlzLnRpdGxlID0gJ0FkZHJlc3MnO1xyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKSB7XHJcbiAgICB0aGlzLmFwaS5nZXRDb3VudHJpZXNKc29uRmlsZSgpLnN1YnNjcmliZSh7XHJcbiAgICAgIG5leHQ6IChkYXRhKSA9PiB7XHJcbiAgICAgICAgdGhpcy5jb3VudHJ5RGF0YSA9IGRhdGE7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG5cclxuICAgIHRoaXMuYXBpLmdldFVTU3RhdGVzSnNvbkZpbGUoKS5zdWJzY3JpYmUoe1xyXG4gICAgICBuZXh0OiAoZGF0YSkgPT4ge1xyXG4gICAgICAgIHRoaXMudXNTdGF0ZURhdGEgPSBkYXRhO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuXHJcbiAgICB0aGlzLmNyZWF0ZUZvcm1Hcm91cCgpO1xyXG4gICAgdGhpcy5pbml0KCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGNyZWF0ZUZvcm1Hcm91cCgpIHtcclxuICAgIGxldCBpc1JlcXVpcmVkID0gQ29udmVydC5zdHJpbmdUb0Jvb2xlYW4odGhpcy5pc1JlcXVpcmVkKTtcclxuXHJcbiAgICBpZiAoaXNSZXF1aXJlZCkge1xyXG4gICAgICB0aGlzLmZvcm1Hcm91cC5hZGRDb250cm9sKCdhZGRyZXNzX3N0cmVldCcsIHRoaXMuZmIuY29udHJvbCgnJywgW1ZhbGlkYXRvcnMucmVxdWlyZWRdKSk7XHJcbiAgICAgIHRoaXMuZm9ybUdyb3VwLmFkZENvbnRyb2woJ2FkZHJlc3Nfc3RyZWV0MicsIHRoaXMuZmIuY29udHJvbCgnJywgW10pKTtcclxuICAgICAgdGhpcy5mb3JtR3JvdXAuYWRkQ29udHJvbCgnYWRkcmVzc19jaXR5JywgdGhpcy5mYi5jb250cm9sKCcnLCBbVmFsaWRhdG9ycy5yZXF1aXJlZF0pKTtcclxuICAgICAgdGhpcy5mb3JtR3JvdXAuYWRkQ29udHJvbCgnYWRkcmVzc19zdGF0ZU9yUmVnaW9uJywgdGhpcy5mYi5jb250cm9sKHRoaXMuY3VycmVudFVTU3RhdGUsIFtWYWxpZGF0b3JzLnJlcXVpcmVkXSkpO1xyXG4gICAgICB0aGlzLmZvcm1Hcm91cC5hZGRDb250cm9sKCdhZGRyZXNzX2NvdW50cnknLCB0aGlzLmZiLmNvbnRyb2wodGhpcy5jdXJyZW50Q291bnRyeSwgW1ZhbGlkYXRvcnMucmVxdWlyZWRdKSk7XHJcbiAgICAgIHRoaXMuZm9ybUdyb3VwLmFkZENvbnRyb2woJ2FkZHJlc3NfemlwY29kZScsIHRoaXMuZmIuY29udHJvbCgnJywgW1ZhbGlkYXRvcnMucmVxdWlyZWRdKSk7XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgdGhpcy5mb3JtR3JvdXAuYWRkQ29udHJvbCgnYWRkcmVzc19zdHJlZXQnLCB0aGlzLmZiLmNvbnRyb2woJycsIFtdKSk7XHJcbiAgICAgIHRoaXMuZm9ybUdyb3VwLmFkZENvbnRyb2woJ2FkZHJlc3Nfc3RyZWV0MicsIHRoaXMuZmIuY29udHJvbCgnJywgW10pKTtcclxuICAgICAgdGhpcy5mb3JtR3JvdXAuYWRkQ29udHJvbCgnYWRkcmVzc19jaXR5JywgdGhpcy5mYi5jb250cm9sKCcnLCBbXSkpO1xyXG4gICAgICB0aGlzLmZvcm1Hcm91cC5hZGRDb250cm9sKCdhZGRyZXNzX3N0YXRlT3JSZWdpb24nLCB0aGlzLmZiLmNvbnRyb2wodGhpcy5jdXJyZW50VVNTdGF0ZSwgW10pKTtcclxuICAgICAgdGhpcy5mb3JtR3JvdXAuYWRkQ29udHJvbCgnYWRkcmVzc19jb3VudHJ5JywgdGhpcy5mYi5jb250cm9sKHRoaXMuY3VycmVudENvdW50cnksIFtdKSk7XHJcbiAgICAgIHRoaXMuZm9ybUdyb3VwLmFkZENvbnRyb2woJ2FkZHJlc3NfemlwY29kZScsIHRoaXMuZmIuY29udHJvbCgnJywgW10pKTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmZvcm1Hcm91cEdlbmVyYXRlZCA9IHRydWU7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGluaXQoKSB7XHJcbiAgICBpZiAoIXRoaXMuZm9ybUdyb3VwR2VuZXJhdGVkKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICBpZiAodGhpcy5fYWRkcmVzcyAhPT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgIGxldCBhZGRyZXNzID0gSlNPTi5wYXJzZSh0aGlzLl9hZGRyZXNzKTtcclxuXHJcbiAgICAgIHRoaXMuc2V0Rm9ybVZhbHVlKCdhZGRyZXNzX3N0cmVldCcsIGFkZHJlc3Muc3RyZWV0KTtcclxuICAgICAgdGhpcy5zZXRGb3JtVmFsdWUoJ2FkZHJlc3Nfc3RyZWV0MicsIGFkZHJlc3Muc3RyZWV0Mik7XHJcbiAgICAgIHRoaXMuc2V0Rm9ybVZhbHVlKCdhZGRyZXNzX2NpdHknLCBhZGRyZXNzLmNpdHkpO1xyXG4gICAgICB0aGlzLnNldEZvcm1WYWx1ZSgnYWRkcmVzc19zdGF0ZU9yUmVnaW9uJywgYWRkcmVzcy5zdGF0ZU9yUmVnaW9uKTtcclxuICAgICAgdGhpcy5zZXRGb3JtVmFsdWUoJ2FkZHJlc3NfemlwY29kZScsIGFkZHJlc3MuemlwY29kZSk7XHJcbiAgICAgIHRoaXMuc2V0Rm9ybVZhbHVlKCdhZGRyZXNzX2NvdW50cnknLCBhZGRyZXNzLmNvdW50cnkpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZ2V0QWRkcmVzcygpIHtcclxuICAgIGNvbnN0IGRhdGEgPSB7XHJcbiAgICAgIHN0cmVldDogdGhpcy5nZXRGb3JtVmFsdWUoJ2FkZHJlc3Nfc3RyZWV0JykgfHwgbnVsbCxcclxuICAgICAgc3RyZWV0MjogdGhpcy5nZXRGb3JtVmFsdWUoJ2FkZHJlc3Nfc3RyZWV0MicpIHx8IG51bGwsXHJcbiAgICAgIGNpdHk6IHRoaXMuZ2V0Rm9ybVZhbHVlKCdhZGRyZXNzX2NpdHknKSB8fCBudWxsLFxyXG4gICAgICBzdGF0ZU9yUmVnaW9uOiB0aGlzLmdldEZvcm1WYWx1ZSgnYWRkcmVzc19zdGF0ZU9yUmVnaW9uJykgfHwgbnVsbCxcclxuICAgICAgemlwY29kZTogdGhpcy5nZXRGb3JtVmFsdWUoJ2FkZHJlc3NfemlwY29kZScpIHx8IG51bGwsXHJcbiAgICAgIGNvdW50cnk6IHRoaXMuZ2V0Rm9ybVZhbHVlKCdhZGRyZXNzX2NvdW50cnknKSB8fCBudWxsXHJcbiAgICB9O1xyXG5cclxuICAgIHJldHVybiBKU09OLnN0cmluZ2lmeShkYXRhKTtcclxuICB9XHJcblxyXG4gIC8vRXZlbnRzXHJcbiAgb25Db3VudHJ5Q2hhbmdlKGV2ZW50KSB7XHJcbiAgICBsZXQgY291bnRyeSA9IGV2ZW50LnRhcmdldC52YWx1ZTtcclxuICAgIHRoaXMuY2hhbmdlLmVtaXQoY291bnRyeSk7XHJcbiAgfVxyXG5cclxuICBvblVTU3RhdGVDaGFuZ2UoZXZlbnQpIHtcclxuICAgIGxldCB1c1N0YXRlID0gZXZlbnQudGFyZ2V0LnZhbHVlO1xyXG4gICAgdGhpcy5jaGFuZ2UuZW1pdCh1c1N0YXRlKTtcclxuICB9XHJcbn1cclxuIiwiPGFuYXRvbHktY2FyZCBjbGFzc2VzPSdjYXJkLW91dGxpbmUgY2FyZC1wcmltYXJ5Jz5cclxuICA8YW5hdG9seS1jYXJkLWhlYWRlciAqbmdJZj0naXNUaXRsZVZpc2libGUnIFt0aXRsZV09J3RpdGxlJyAvPlxyXG4gIDxhbmF0b2x5LWNhcmQtYm9keSBbZm9ybUdyb3VwXT0nZm9ybUdyb3VwJz5cclxuICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgPGRpdiBjbGFzcz0nZm9ybS1ncm91cCcgW25nQ2xhc3NdPVwieydoYXMtZXJyb3InOiBpc0NvbnRyb2xJbnZhbGlkKCdhZGRyZXNzX3N0cmVldCcpfVwiID5cclxuICAgICAgICA8bGFiZWw+U3RyZWV0IEFkZHJlc3M8L2xhYmVsPlxyXG4gICAgICAgIDxpbnB1dCB0eXBlPSd0ZXh0JyBjbGFzcz0nZm9ybS1jb250cm9sJyBmb3JtQ29udHJvbE5hbWU9J2FkZHJlc3Nfc3RyZWV0JyBwbGFjZWhvbGRlcj0nU3RyZWV0IEFkZHJlc3MnPlxyXG4gICAgICAgIDxhbmF0b2x5LWl0ZW0tdmFsaWRhdGlvbi1zdW1tYXJ5IGNvbnRyb2xOYW1lPSdhZGRyZXNzX3N0cmVldCdcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250cm9sVGl0bGU9J1N0cmVldCdcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZm9ybUdyb3VwXT0nZm9ybUdyb3VwJ1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtmb3JtU3VibWl0dGVkXT0nZm9ybVN1Ym1pdHRlZCc+XHJcbiAgICAgICAgPC9hbmF0b2x5LWl0ZW0tdmFsaWRhdGlvbi1zdW1tYXJ5PlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdiBjbGFzcz0nZm9ybS1ncm91cCcgW25nQ2xhc3NdPVwieydoYXMtZXJyb3InOiBpc0NvbnRyb2xJbnZhbGlkKCdhZGRyZXNzX3N0cmVldDInKX1cIiA+XHJcbiAgICAgICAgPGlucHV0IHR5cGU9J3RleHQnIGNsYXNzPSdmb3JtLWNvbnRyb2wnIGZvcm1Db250cm9sTmFtZT0nYWRkcmVzc19zdHJlZXQyJyBwbGFjZWhvbGRlcj0nQXBhcnRtZW50LCBzdWl0ZSwgdW5pdCwgYnVpbGRpbmcsIGZsb29yLCBldGMuJz5cclxuICAgICAgICA8YW5hdG9seS1pdGVtLXZhbGlkYXRpb24tc3VtbWFyeSBjb250cm9sTmFtZT0nYWRkcmVzc19zdHJlZXQyJ1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRyb2xUaXRsZT0nU3RyZWV0MidcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZm9ybUdyb3VwXT0nZm9ybUdyb3VwJ1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtmb3JtU3VibWl0dGVkXT0nZm9ybVN1Ym1pdHRlZCc+XHJcbiAgICAgICAgPC9hbmF0b2x5LWl0ZW0tdmFsaWRhdGlvbi1zdW1tYXJ5PlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICA8ZGl2IGNsYXNzPSdmb3JtLWdyb3VwIGNvbC0zIG1iLTAnIFtuZ0NsYXNzXT1cInsnaGFzLWVycm9yJzogaXNDb250cm9sSW52YWxpZCgnYWRkcmVzc19jaXR5Jyl9XCI+XHJcbiAgICAgICAgPGxhYmVsPkNpdHk8L2xhYmVsPlxyXG4gICAgICAgIDxpbnB1dCB0eXBlPSd0ZXh0JyBjbGFzcz0nZm9ybS1jb250cm9sJyBmb3JtQ29udHJvbE5hbWU9J2FkZHJlc3NfY2l0eScgcGxhY2Vob2xkZXI9J0NpdHknPlxyXG4gICAgICAgIDxhbmF0b2x5LWl0ZW0tdmFsaWRhdGlvbi1zdW1tYXJ5IGNvbnRyb2xOYW1lPSdhZGRyZXNzX2NpdHknXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udHJvbFRpdGxlPSdDaXR5J1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtmb3JtR3JvdXBdPSdmb3JtR3JvdXAnXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Zvcm1TdWJtaXR0ZWRdPSdmb3JtU3VibWl0dGVkJz5cclxuICAgICAgICA8L2FuYXRvbHktaXRlbS12YWxpZGF0aW9uLXN1bW1hcnk+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8ZGl2IGNsYXNzPSdmb3JtLWdyb3VwIGNvbC0zIG1iLTAnICpuZ0lmPVwiZm9ybUdyb3VwLnZhbHVlLmFkZHJlc3NfY291bnRyeSA9PSAnVVMnXCIgW25nQ2xhc3NdPVwieydoYXMtZXJyb3InOiBpc0NvbnRyb2xJbnZhbGlkKCdhZGRyZXNzX3N0YXRlT3JSZWdpb24nKX1cIj5cclxuICAgICAgICA8bGFiZWw+U3RhdGU8L2xhYmVsPlxyXG4gICAgICAgIDxzZWxlY3QgY2xhc3M9J2Zvcm0tY29udHJvbCcgKGNoYW5nZSk9J29uVVNTdGF0ZUNoYW5nZSgkZXZlbnQpJyBmb3JtQ29udHJvbE5hbWU9J2FkZHJlc3Nfc3RhdGVPclJlZ2lvbic+XHJcbiAgICAgICAgICA8b3B0aW9uICpuZ0Zvcj0nbGV0IHN0YXRlIG9mIHVzU3RhdGVEYXRhJyBbdmFsdWVdPSdzdGF0ZS5jb2RlJz57e3N0YXRlLm5hbWV9fTwvb3B0aW9uPlxyXG4gICAgICAgIDwvc2VsZWN0PlxyXG4gICAgICAgIDxhbmF0b2x5LWl0ZW0tdmFsaWRhdGlvbi1zdW1tYXJ5IGNvbnRyb2xOYW1lPSdhZGRyZXNzX3N0YXRlT3JSZWdpb24nXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udHJvbFRpdGxlPSdTdGF0ZSdcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZm9ybUdyb3VwXT0nZm9ybUdyb3VwJ1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtmb3JtU3VibWl0dGVkXT0nZm9ybVN1Ym1pdHRlZCc+XHJcbiAgICAgICAgPC9hbmF0b2x5LWl0ZW0tdmFsaWRhdGlvbi1zdW1tYXJ5PlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdiBjbGFzcz0nZm9ybS1ncm91cCBjb2wtMyBtYi0wJyBbbmdDbGFzc109XCJ7J2hhcy1lcnJvcic6IGlzQ29udHJvbEludmFsaWQoJ2FkZHJlc3NfemlwY29kZScpfVwiID5cclxuICAgICAgICA8bGFiZWw+WmlwY29kZTwvbGFiZWw+XHJcbiAgICAgICAgPGlucHV0IHR5cGU9J3RleHQnIGNsYXNzPSdmb3JtLWNvbnRyb2wnIGZvcm1Db250cm9sTmFtZT0nYWRkcmVzc196aXBjb2RlJyBwbGFjZWhvbGRlcj0nemlwY29kZSc+XHJcbiAgICAgICAgPGFuYXRvbHktaXRlbS12YWxpZGF0aW9uLXN1bW1hcnkgY29udHJvbE5hbWU9J2FkZHJlc3NfemlwY29kZSdcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250cm9sVGl0bGU9J3ppcGNvZGUnXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Zvcm1Hcm91cF09J2Zvcm1Hcm91cCdcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZm9ybVN1Ym1pdHRlZF09J2Zvcm1TdWJtaXR0ZWQnPlxyXG4gICAgICAgIDwvYW5hdG9seS1pdGVtLXZhbGlkYXRpb24tc3VtbWFyeT5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXYgY2xhc3M9J2Zvcm0tZ3JvdXAgY29sLTMgbWItMCcgW25nQ2xhc3NdPVwieydoYXMtZXJyb3InOiBpc0NvbnRyb2xJbnZhbGlkKCdhZGRyZXNzX2NvdW50cnknKX1cIj5cclxuICAgICAgICA8bGFiZWw+Q291bnRyeTwvbGFiZWw+XHJcbiAgICAgICAgPHNlbGVjdCBjbGFzcz0nZm9ybS1jb250cm9sJyAoY2hhbmdlKT0nb25Db3VudHJ5Q2hhbmdlKCRldmVudCknIGZvcm1Db250cm9sTmFtZT0nYWRkcmVzc19jb3VudHJ5JyBkYXRhLXBsYWNlaG9sZGVyPSdTZWxlY3QgYSBDb3VudHJ5Jz5cclxuICAgICAgICAgIDxvcHRpb24gKm5nRm9yPSdsZXQgY291bnRyeSBvZiBjb3VudHJ5RGF0YScgW3ZhbHVlXT0nY291bnRyeS5jb2RlJz57e2NvdW50cnkubmFtZX19PC9vcHRpb24+XHJcbiAgICAgICAgPC9zZWxlY3Q+XHJcbiAgICAgICAgPGFuYXRvbHktaXRlbS12YWxpZGF0aW9uLXN1bW1hcnkgY29udHJvbE5hbWU9J2FkZHJlc3NfY291bnRyeSdcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250cm9sVGl0bGU9J0NvdW50cnknXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Zvcm1Hcm91cF09J2Zvcm1Hcm91cCdcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZm9ybVN1Ym1pdHRlZF09J2Zvcm1TdWJtaXR0ZWQnPlxyXG4gICAgICAgIDwvYW5hdG9seS1pdGVtLXZhbGlkYXRpb24tc3VtbWFyeT5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICA8L2FuYXRvbHktY2FyZC1ib2R5PlxyXG48L2FuYXRvbHktY2FyZD5cclxuIl19
@@ -1,138 +0,0 @@
1
- /*
2
- <file>
3
- Project:
4
- @osovitny/anatoly
5
-
6
- Authors:
7
- Vadim Osovitny vadim.osovitny@osovitny.com
8
- Anatoly Osovitny anatoly.osovitny@osovitny.com
9
-
10
- Created:
11
- 02 Aug 2022
12
-
13
- Copyright (c) 2017-2025 Osovitny Inc. All rights reserved.
14
- </file>
15
- */
16
- //Node
17
- import { Component, Input } from '@angular/core';
18
- //App
19
- import { EditComponentBase } from '../../../components/exports';
20
- import * as i0 from "@angular/core";
21
- import * as i1 from "@angular/forms";
22
- import * as i2 from "@angular/common";
23
- import * as i3 from "../../../components/card/card.component";
24
- import * as i4 from "../../../components/card/card-header.component";
25
- import * as i5 from "../../../components/card/card-body.component";
26
- import * as i6 from "../../../directives/native-element.directive";
27
- import * as i7 from "../../../validation/item-validation-summary.component";
28
- function CompanyComponent_anatoly_card_header_1_Template(rf, ctx) { if (rf & 1) {
29
- i0.ɵɵelement(0, "anatoly-card-header", 14);
30
- } if (rf & 2) {
31
- const ctx_r0 = i0.ɵɵnextContext();
32
- i0.ɵɵproperty("title", ctx_r0.title);
33
- } }
34
- const _c0 = a0 => ({ "has-error": a0 });
35
- export class CompanyComponent extends EditComponentBase {
36
- //Inputs
37
- get company() {
38
- return this._company;
39
- }
40
- set company(value) {
41
- this._company = value;
42
- if (value) {
43
- this.init();
44
- }
45
- }
46
- constructor(fb) {
47
- super();
48
- this.fb = fb;
49
- this.formGroupGenerated = false;
50
- this.title = 'Company / Organization';
51
- }
52
- ngOnInit() {
53
- this.createFormGroup();
54
- this.init();
55
- }
56
- createFormGroup() {
57
- this.formGroup.addControl('company_name', this.fb.control('', []));
58
- this.formGroup.addControl('company_phone', this.fb.control('', []));
59
- this.formGroup.addControl('company_email', this.fb.control('', []));
60
- this.formGroup.addControl('company_websiteUrl', this.fb.control('', []));
61
- this.formGroupGenerated = true;
62
- }
63
- init() {
64
- if (!this.formGroupGenerated) {
65
- return;
66
- }
67
- if (this._company !== undefined) {
68
- let company = JSON.parse(this._company);
69
- this.setFormValue('company_name', company.name);
70
- this.setFormValue('company_phone', company.phone);
71
- this.setFormValue('company_email', company.email);
72
- this.setFormValue('company_websiteUrl', company.websiteUrl);
73
- }
74
- }
75
- getCompany() {
76
- const data = {
77
- name: this.getFormValue('company_name') || null,
78
- phone: this.getFormValue('company_phone') || null,
79
- email: this.getFormValue('company_email') || null,
80
- websiteUrl: this.getFormValue('company_websiteUrl') || null
81
- };
82
- return JSON.stringify(data);
83
- }
84
- static { this.ɵfac = function CompanyComponent_Factory(t) { return new (t || CompanyComponent)(i0.ɵɵdirectiveInject(i1.FormBuilder)); }; }
85
- static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: CompanyComponent, selectors: [["anatoly-forms-company"]], inputs: { company: "company" }, features: [i0.ɵɵInheritDefinitionFeature], decls: 25, vars: 22, consts: [["classes", "card-outline card-primary"], [3, "title", 4, "ngIf"], [3, "formGroup"], [1, "row"], [1, "form-group", "col-6", 3, "ngClass"], ["type", "text", "formControlName", "company_name", "placeholder", "Company Name", 1, "form-control"], ["controlName", "company_name", "controlTitle", "Company Name", 3, "formGroup", "formSubmitted"], ["type", "tel", "formControlName", "company_phone", "placeholder", "Company Phone", 1, "form-control"], ["controlName", "company_phone", "controlTitle", "Company Phone", 3, "formGroup", "formSubmitted"], [1, "form-group", "col-6", "mb-0", 3, "ngClass"], ["type", "email", "formControlName", "company_email", "placeholder", "Company Email", 1, "form-control"], ["controlName", "company_email", "controlTitle", "Company Email", 3, "formGroup", "formSubmitted"], ["type", "url", "placeholder", "https://example.com", "pattern", "https://.*", "size", "30", "formControlName", "company_websiteUrl", 1, "form-control"], ["controlName", "company_websiteUrl", "controlTitle", "Company website url", 3, "formGroup", "formSubmitted"], [3, "title"]], template: function CompanyComponent_Template(rf, ctx) { if (rf & 1) {
86
- i0.ɵɵelementStart(0, "anatoly-card", 0);
87
- i0.ɵɵtemplate(1, CompanyComponent_anatoly_card_header_1_Template, 1, 1, "anatoly-card-header", 1);
88
- i0.ɵɵelementStart(2, "anatoly-card-body", 2)(3, "div", 3)(4, "div", 4)(5, "label");
89
- i0.ɵɵtext(6, "Name");
90
- i0.ɵɵelementEnd();
91
- i0.ɵɵelement(7, "input", 5)(8, "anatoly-item-validation-summary", 6);
92
- i0.ɵɵelementEnd();
93
- i0.ɵɵelementStart(9, "div", 4)(10, "label");
94
- i0.ɵɵtext(11, "Phone");
95
- i0.ɵɵelementEnd();
96
- i0.ɵɵelement(12, "input", 7)(13, "anatoly-item-validation-summary", 8);
97
- i0.ɵɵelementEnd()();
98
- i0.ɵɵelementStart(14, "div", 3)(15, "div", 9)(16, "label");
99
- i0.ɵɵtext(17, "Email");
100
- i0.ɵɵelementEnd();
101
- i0.ɵɵelement(18, "input", 10)(19, "anatoly-item-validation-summary", 11);
102
- i0.ɵɵelementEnd();
103
- i0.ɵɵelementStart(20, "div", 9)(21, "label");
104
- i0.ɵɵtext(22, "Website Url");
105
- i0.ɵɵelementEnd();
106
- i0.ɵɵelement(23, "input", 12)(24, "anatoly-item-validation-summary", 13);
107
- i0.ɵɵelementEnd()()()();
108
- } if (rf & 2) {
109
- i0.ɵɵadvance();
110
- i0.ɵɵproperty("ngIf", ctx.isTitleVisible);
111
- i0.ɵɵadvance();
112
- i0.ɵɵproperty("formGroup", ctx.formGroup);
113
- i0.ɵɵadvance(2);
114
- i0.ɵɵproperty("ngClass", i0.ɵɵpureFunction1(14, _c0, ctx.isControlInvalid("company_name")));
115
- i0.ɵɵadvance(4);
116
- i0.ɵɵproperty("formGroup", ctx.formGroup)("formSubmitted", ctx.formSubmitted);
117
- i0.ɵɵadvance();
118
- i0.ɵɵproperty("ngClass", i0.ɵɵpureFunction1(16, _c0, ctx.isControlInvalid("company_phone")));
119
- i0.ɵɵadvance(4);
120
- i0.ɵɵproperty("formGroup", ctx.formGroup)("formSubmitted", ctx.formSubmitted);
121
- i0.ɵɵadvance(2);
122
- i0.ɵɵproperty("ngClass", i0.ɵɵpureFunction1(18, _c0, ctx.isControlInvalid("company_email")));
123
- i0.ɵɵadvance(4);
124
- i0.ɵɵproperty("formGroup", ctx.formGroup)("formSubmitted", ctx.formSubmitted);
125
- i0.ɵɵadvance();
126
- i0.ɵɵproperty("ngClass", i0.ɵɵpureFunction1(20, _c0, ctx.isControlInvalid("company_websiteUrl")));
127
- i0.ɵɵadvance(4);
128
- i0.ɵɵproperty("formGroup", ctx.formGroup)("formSubmitted", ctx.formSubmitted);
129
- } }, dependencies: [i2.NgClass, i2.NgIf, i1.DefaultValueAccessor, i1.NgControlStatus, i1.NgControlStatusGroup, i1.PatternValidator, i1.FormGroupDirective, i1.FormControlName, i3.CardComponent, i4.CardHeaderComponent, i5.CardBodyComponent, i6.NativeElementDirective, i7.ItemValidationSummaryComponent], encapsulation: 2 }); }
130
- }
131
- (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(CompanyComponent, [{
132
- type: Component,
133
- args: [{ selector: 'anatoly-forms-company', template: "<anatoly-card classes='card-outline card-primary'>\r\n <anatoly-card-header *ngIf='isTitleVisible' [title]='title' />\r\n <anatoly-card-body [formGroup]='formGroup' >\r\n <div class=\"row\">\r\n <div class='form-group col-6' [ngClass]=\"{'has-error': isControlInvalid('company_name') }\">\r\n <label>Name</label>\r\n <input type='text' class='form-control' formControlName='company_name' placeholder='Company Name'>\r\n <anatoly-item-validation-summary controlName='company_name'\r\n controlTitle='Company Name'\r\n [formGroup]='formGroup'\r\n [formSubmitted]='formSubmitted'>\r\n </anatoly-item-validation-summary>\r\n </div>\r\n <div class='form-group col-6' [ngClass]=\"{'has-error': isControlInvalid('company_phone') }\">\r\n <label>Phone</label>\r\n <input type='tel' class='form-control' formControlName='company_phone' placeholder='Company Phone'>\r\n <anatoly-item-validation-summary controlName='company_phone'\r\n controlTitle='Company Phone'\r\n [formGroup]='formGroup'\r\n [formSubmitted]='formSubmitted'>\r\n </anatoly-item-validation-summary>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class='form-group col-6 mb-0' [ngClass]=\"{'has-error': isControlInvalid('company_email') }\">\r\n <label>Email</label>\r\n <input type='email' class='form-control' formControlName='company_email' placeholder='Company Email'>\r\n <anatoly-item-validation-summary controlName='company_email'\r\n controlTitle='Company Email'\r\n [formGroup]='formGroup'\r\n [formSubmitted]='formSubmitted'>\r\n </anatoly-item-validation-summary>\r\n </div>\r\n <div class='form-group col-6 mb-0' [ngClass]=\"{'has-error': isControlInvalid('company_websiteUrl') }\">\r\n <label>Website Url</label>\r\n <input type='url' placeholder='https://example.com' pattern='https://.*' size='30'\r\n class='form-control' formControlName='company_websiteUrl'>\r\n <anatoly-item-validation-summary controlName='company_websiteUrl'\r\n controlTitle='Company website url'\r\n [formGroup]='formGroup'\r\n [formSubmitted]='formSubmitted'>\r\n </anatoly-item-validation-summary>\r\n </div>\r\n </div>\r\n </anatoly-card-body>\r\n</anatoly-card>\r\n" }]
134
- }], () => [{ type: i1.FormBuilder }], { company: [{
135
- type: Input
136
- }] }); })();
137
- (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(CompanyComponent, { className: "CompanyComponent", filePath: "lib\\ui\\forms\\components\\company\\company.component.ts", lineNumber: 28 }); })();
138
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcGFueS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmF0b2x5L3NyYy9saWIvdWkvZm9ybXMvY29tcG9uZW50cy9jb21wYW55L2NvbXBhbnkuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5hdG9seS9zcmMvbGliL3VpL2Zvcm1zL2NvbXBvbmVudHMvY29tcGFueS9jb21wYW55LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7OztFQWNFO0FBRUYsTUFBTTtBQUNOLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBR3pELEtBQUs7QUFDTCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQzs7Ozs7Ozs7OztJQ3BCOUQsMENBQThEOzs7SUFBbEIsb0NBQWU7OztBRDBCN0QsTUFBTSxPQUFPLGdCQUFpQixTQUFRLGlCQUFpQjtJQU1yRCxRQUFRO0lBQ1IsSUFDSSxPQUFPO1FBQ1QsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDO0lBQ3ZCLENBQUM7SUFDRCxJQUFJLE9BQU8sQ0FBQyxLQUFLO1FBQ2YsSUFBSSxDQUFDLFFBQVEsR0FBRyxLQUFLLENBQUM7UUFFdEIsSUFBSSxLQUFLLEVBQUUsQ0FBQztZQUNWLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUNkLENBQUM7SUFDSCxDQUFDO0lBRUQsWUFBb0IsRUFBZTtRQUNqQyxLQUFLLEVBQUUsQ0FBQztRQURVLE9BQUUsR0FBRixFQUFFLENBQWE7UUFmbkMsdUJBQWtCLEdBQUcsS0FBSyxDQUFDO1FBaUJ6QixJQUFJLENBQUMsS0FBSyxHQUFHLHdCQUF3QixDQUFDO0lBQ3hDLENBQUM7SUFFRCxRQUFRO1FBQ04sSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO1FBQ3ZCLElB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RCxlQUF1QjtZQUF2Qix5Q0FBdUIsb0NBQUE7WUFNdkIsZUFBNkQ7WUFBN0QsNEZBQTZEO1lBSzdELGVBQXVCO1lBQXZCLHlDQUF1QixvQ0FBQTtZQUl2QixjQUFrRTtZQUFsRSxpR0FBa0U7WUFNbEUsZUFBdUI7WUFBdkIseUNBQXVCLG9DQUFBOzs7aUZEWm5ELGdCQUFnQjtjQUo1QixTQUFTOzJCQUNFLHVCQUF1Qjs0Q0FXN0IsT0FBTztrQkFEVixLQUFLOztrRkFQSyxnQkFBZ0IiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxyXG48ZmlsZT5cclxuICBQcm9qZWN0OlxyXG4gICAgQG9zb3ZpdG55L2FuYXRvbHlcclxuXHJcbiAgQXV0aG9yczpcclxuICAgIFZhZGltIE9zb3ZpdG55IHZhZGltLm9zb3ZpdG55QG9zb3ZpdG55LmNvbVxyXG4gICAgQW5hdG9seSBPc292aXRueSBhbmF0b2x5Lm9zb3ZpdG55QG9zb3ZpdG55LmNvbVxyXG5cclxuICBDcmVhdGVkOlxyXG4gICAgMDIgQXVnIDIwMjJcclxuXHJcbiAgQ29weXJpZ2h0IChjKSAyMDE3LTIwMjUgT3Nvdml0bnkgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLlxyXG48L2ZpbGU+XHJcbiovXHJcblxyXG4vL05vZGVcclxuaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEZvcm1CdWlsZGVyIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5cclxuLy9BcHBcclxuaW1wb3J0IHsgRWRpdENvbXBvbmVudEJhc2UgfSBmcm9tICcuLi8uLi8uLi9jb21wb25lbnRzL2V4cG9ydHMnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdhbmF0b2x5LWZvcm1zLWNvbXBhbnknLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9jb21wYW55LmNvbXBvbmVudC5odG1sJ1xyXG59KVxyXG5leHBvcnQgY2xhc3MgQ29tcGFueUNvbXBvbmVudCBleHRlbmRzIEVkaXRDb21wb25lbnRCYXNlIGltcGxlbWVudHMgT25Jbml0IHtcclxuICAvL1ByaXZhdGVcclxuICBwcml2YXRlIF9jb21wYW55O1xyXG5cclxuICBmb3JtR3JvdXBHZW5lcmF0ZWQgPSBmYWxzZTtcclxuXHJcbiAgLy9JbnB1dHNcclxuICBASW5wdXQoKVxyXG4gIGdldCBjb21wYW55KCkge1xyXG4gICAgcmV0dXJuIHRoaXMuX2NvbXBhbnk7XHJcbiAgfVxyXG4gIHNldCBjb21wYW55KHZhbHVlKSB7XHJcbiAgICB0aGlzLl9jb21wYW55ID0gdmFsdWU7XHJcblxyXG4gICAgaWYgKHZhbHVlKSB7XHJcbiAgICAgIHRoaXMuaW5pdCgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBmYjogRm9ybUJ1aWxkZXIpIHtcclxuICAgIHN1cGVyKCk7XHJcbiAgICB0aGlzLnRpdGxlID0gJ0NvbXBhbnkgLyBPcmdhbml6YXRpb24nO1xyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKSB7XHJcbiAgICB0aGlzLmNyZWF0ZUZvcm1Hcm91cCgpO1xyXG4gICAgdGhpcy5pbml0KCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGNyZWF0ZUZvcm1Hcm91cCgpIHtcclxuICAgIHRoaXMuZm9ybUdyb3VwLmFkZENvbnRyb2woJ2NvbXBhbnlfbmFtZScsIHRoaXMuZmIuY29udHJvbCgnJywgW10pKTtcclxuICAgIHRoaXMuZm9ybUdyb3VwLmFkZENvbnRyb2woJ2NvbXBhbnlfcGhvbmUnLCB0aGlzLmZiLmNvbnRyb2woJycsIFtdKSk7XHJcbiAgICB0aGlzLmZvcm1Hcm91cC5hZGRDb250cm9sKCdjb21wYW55X2VtYWlsJywgdGhpcy5mYi5jb250cm9sKCcnLCBbXSkpO1xyXG4gICAgdGhpcy5mb3JtR3JvdXAuYWRkQ29udHJvbCgnY29tcGFueV93ZWJzaXRlVXJsJywgdGhpcy5mYi5jb250cm9sKCcnLCBbXSkpO1xyXG5cclxuICAgIHRoaXMuZm9ybUdyb3VwR2VuZXJhdGVkID0gdHJ1ZTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgaW5pdCgpIHtcclxuICAgIGlmICghdGhpcy5mb3JtR3JvdXBHZW5lcmF0ZWQpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLl9jb21wYW55ICE9PSB1bmRlZmluZWQpIHtcclxuICAgICAgbGV0IGNvbXBhbnkgPSBKU09OLnBhcnNlKHRoaXMuX2NvbXBhbnkpO1xyXG5cclxuICAgICAgdGhpcy5zZXRGb3JtVmFsdWUoJ2NvbXBhbnlfbmFtZScsIGNvbXBhbnkubmFtZSk7XHJcbiAgICAgIHRoaXMuc2V0Rm9ybVZhbHVlKCdjb21wYW55X3Bob25lJywgY29tcGFueS5waG9uZSk7XHJcbiAgICAgIHRoaXMuc2V0Rm9ybVZhbHVlKCdjb21wYW55X2VtYWlsJywgY29tcGFueS5lbWFpbCk7XHJcbiAgICAgIHRoaXMuc2V0Rm9ybVZhbHVlKCdjb21wYW55X3dlYnNpdGVVcmwnLCBjb21wYW55LndlYnNpdGVVcmwpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZ2V0Q29tcGFueSgpIHtcclxuICAgIGNvbnN0IGRhdGEgPSB7XHJcbiAgICAgIG5hbWU6IHRoaXMuZ2V0Rm9ybVZhbHVlKCdjb21wYW55X25hbWUnKSB8fCBudWxsLFxyXG4gICAgICBwaG9uZTogdGhpcy5nZXRGb3JtVmFsdWUoJ2NvbXBhbnlfcGhvbmUnKSB8fCBudWxsLFxyXG4gICAgICBlbWFpbDogdGhpcy5nZXRGb3JtVmFsdWUoJ2NvbXBhbnlfZW1haWwnKSB8fCBudWxsLFxyXG4gICAgICB3ZWJzaXRlVXJsOiB0aGlzLmdldEZvcm1WYWx1ZSgnY29tcGFueV93ZWJzaXRlVXJsJykgfHwgbnVsbFxyXG4gICAgfTtcclxuXHJcbiAgICByZXR1cm4gSlNPTi5zdHJpbmdpZnkoZGF0YSk7XHJcbiAgfVxyXG59XHJcbiIsIjxhbmF0b2x5LWNhcmQgY2xhc3Nlcz0nY2FyZC1vdXRsaW5lIGNhcmQtcHJpbWFyeSc+XHJcbiAgPGFuYXRvbHktY2FyZC1oZWFkZXIgKm5nSWY9J2lzVGl0bGVWaXNpYmxlJyBbdGl0bGVdPSd0aXRsZScgLz5cclxuICA8YW5hdG9seS1jYXJkLWJvZHkgW2Zvcm1Hcm91cF09J2Zvcm1Hcm91cCcgPlxyXG4gICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgPGRpdiBjbGFzcz0nZm9ybS1ncm91cCBjb2wtNicgW25nQ2xhc3NdPVwieydoYXMtZXJyb3InOiBpc0NvbnRyb2xJbnZhbGlkKCdjb21wYW55X25hbWUnKSB9XCI+XHJcbiAgICAgICAgPGxhYmVsPk5hbWU8L2xhYmVsPlxyXG4gICAgICAgIDxpbnB1dCB0eXBlPSd0ZXh0JyBjbGFzcz0nZm9ybS1jb250cm9sJyBmb3JtQ29udHJvbE5hbWU9J2NvbXBhbnlfbmFtZScgcGxhY2Vob2xkZXI9J0NvbXBhbnkgTmFtZSc+XHJcbiAgICAgICAgPGFuYXRvbHktaXRlbS12YWxpZGF0aW9uLXN1bW1hcnkgY29udHJvbE5hbWU9J2NvbXBhbnlfbmFtZSdcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250cm9sVGl0bGU9J0NvbXBhbnkgTmFtZSdcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZm9ybUdyb3VwXT0nZm9ybUdyb3VwJ1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtmb3JtU3VibWl0dGVkXT0nZm9ybVN1Ym1pdHRlZCc+XHJcbiAgICAgICAgPC9hbmF0b2x5LWl0ZW0tdmFsaWRhdGlvbi1zdW1tYXJ5PlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdiBjbGFzcz0nZm9ybS1ncm91cCBjb2wtNicgW25nQ2xhc3NdPVwieydoYXMtZXJyb3InOiBpc0NvbnRyb2xJbnZhbGlkKCdjb21wYW55X3Bob25lJykgfVwiPlxyXG4gICAgICAgIDxsYWJlbD5QaG9uZTwvbGFiZWw+XHJcbiAgICAgICAgPGlucHV0IHR5cGU9J3RlbCcgY2xhc3M9J2Zvcm0tY29udHJvbCcgZm9ybUNvbnRyb2xOYW1lPSdjb21wYW55X3Bob25lJyBwbGFjZWhvbGRlcj0nQ29tcGFueSBQaG9uZSc+XHJcbiAgICAgICAgPGFuYXRvbHktaXRlbS12YWxpZGF0aW9uLXN1bW1hcnkgY29udHJvbE5hbWU9J2NvbXBhbnlfcGhvbmUnXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udHJvbFRpdGxlPSdDb21wYW55IFBob25lJ1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtmb3JtR3JvdXBdPSdmb3JtR3JvdXAnXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Zvcm1TdWJtaXR0ZWRdPSdmb3JtU3VibWl0dGVkJz5cclxuICAgICAgICA8L2FuYXRvbHktaXRlbS12YWxpZGF0aW9uLXN1bW1hcnk+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgIDwvZGl2PlxyXG4gICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgPGRpdiBjbGFzcz0nZm9ybS1ncm91cCBjb2wtNiBtYi0wJyBbbmdDbGFzc109XCJ7J2hhcy1lcnJvcic6IGlzQ29udHJvbEludmFsaWQoJ2NvbXBhbnlfZW1haWwnKSB9XCI+XHJcbiAgICAgICAgPGxhYmVsPkVtYWlsPC9sYWJlbD5cclxuICAgICAgICA8aW5wdXQgdHlwZT0nZW1haWwnIGNsYXNzPSdmb3JtLWNvbnRyb2wnIGZvcm1Db250cm9sTmFtZT0nY29tcGFueV9lbWFpbCcgcGxhY2Vob2xkZXI9J0NvbXBhbnkgRW1haWwnPlxyXG4gICAgICAgIDxhbmF0b2x5LWl0ZW0tdmFsaWRhdGlvbi1zdW1tYXJ5IGNvbnRyb2xOYW1lPSdjb21wYW55X2VtYWlsJ1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRyb2xUaXRsZT0nQ29tcGFueSBFbWFpbCdcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZm9ybUdyb3VwXT0nZm9ybUdyb3VwJ1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtmb3JtU3VibWl0dGVkXT0nZm9ybVN1Ym1pdHRlZCc+XHJcbiAgICAgICAgPC9hbmF0b2x5LWl0ZW0tdmFsaWRhdGlvbi1zdW1tYXJ5PlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdiBjbGFzcz0nZm9ybS1ncm91cCBjb2wtNiBtYi0wJyBbbmdDbGFzc109XCJ7J2hhcy1lcnJvcic6IGlzQ29udHJvbEludmFsaWQoJ2NvbXBhbnlfd2Vic2l0ZVVybCcpIH1cIj5cclxuICAgICAgICA8bGFiZWw+V2Vic2l0ZSBVcmw8L2xhYmVsPlxyXG4gICAgICAgIDxpbnB1dCB0eXBlPSd1cmwnIHBsYWNlaG9sZGVyPSdodHRwczovL2V4YW1wbGUuY29tJyBwYXR0ZXJuPSdodHRwczovLy4qJyBzaXplPSczMCdcclxuICAgICAgICAgICAgICAgY2xhc3M9J2Zvcm0tY29udHJvbCcgZm9ybUNvbnRyb2xOYW1lPSdjb21wYW55X3dlYnNpdGVVcmwnPlxyXG4gICAgICAgIDxhbmF0b2x5LWl0ZW0tdmFsaWRhdGlvbi1zdW1tYXJ5IGNvbnRyb2xOYW1lPSdjb21wYW55X3dlYnNpdGVVcmwnXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udHJvbFRpdGxlPSdDb21wYW55IHdlYnNpdGUgdXJsJ1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtmb3JtR3JvdXBdPSdmb3JtR3JvdXAnXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Zvcm1TdWJtaXR0ZWRdPSdmb3JtU3VibWl0dGVkJz5cclxuICAgICAgICA8L2FuYXRvbHktaXRlbS12YWxpZGF0aW9uLXN1bW1hcnk+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgIDwvZGl2PlxyXG4gIDwvYW5hdG9seS1jYXJkLWJvZHk+XHJcbjwvYW5hdG9seS1jYXJkPlxyXG4iXX0=