@alauda-fe/network 1.0.1 → 1.0.2
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.
- package/esm2022/index.mjs +10 -2
- package/esm2022/lib/components/certificate-status/component.mjs +7 -6
- package/esm2022/lib/components/fixed-ip/component.mjs +134 -91
- package/esm2022/lib/components/loadbalancer-spec-form/component.mjs +57 -57
- package/esm2022/lib/components/service-annotations-form/annotations.component.mjs +136 -142
- package/esm2022/lib/components/service-annotations-form-item/annotations.component.mjs +24 -25
- package/esm2022/lib/components/service-form/component.mjs +34 -33
- package/esm2022/lib/components/service-form/fieldset/component.mjs +92 -95
- package/esm2022/lib/directives/subnet-validator.directive.mjs +5 -5
- package/esm2022/lib/features/network-policy/components/add-peer-rule-handler/component.mjs +69 -0
- package/esm2022/lib/features/network-policy/components/ip-block-display/component.mjs +54 -0
- package/esm2022/lib/features/network-policy/components/label-selector-display/component.mjs +117 -0
- package/esm2022/lib/features/network-policy/components/peer-container/component.mjs +81 -0
- package/esm2022/lib/features/network-policy/components/pod-review/component.mjs +250 -0
- package/esm2022/lib/features/network-policy/components/rule-table/component.mjs +269 -0
- package/esm2022/lib/features/network-policy/form/network-policy/component.mjs +429 -0
- package/esm2022/lib/features/network-policy/form/network-policy-ip-block/component.mjs +102 -0
- package/esm2022/lib/features/network-policy/form/network-policy-peer/component.mjs +247 -0
- package/esm2022/lib/features/network-policy/form/network-policy-ports/component.mjs +161 -0
- package/esm2022/lib/features/network-policy/form/network-policy-remote-except-input/component.mjs +128 -0
- package/esm2022/lib/features/network-policy/form/network-policy-rule/component.mjs +142 -0
- package/esm2022/lib/services/alb-api.service.mjs +26 -6
- package/esm2022/lib/services/certificate-api.service.mjs +4 -4
- package/esm2022/lib/services/network-util.service.mjs +18 -4
- package/esm2022/lib/services/subnet-util.service.mjs +121 -0
- package/esm2022/lib/types/alb-exports.mjs +1 -1
- package/esm2022/lib/types/k8s-exports.mjs +2 -1
- package/esm2022/lib/types/metallb-exports.mjs +2 -0
- package/esm2022/lib/types/resource-definition.mjs +28 -2
- package/esm2022/lib/utils/alb-exports.mjs +1 -1
- package/esm2022/lib/utils/cidr-exports.mjs +3 -3
- package/esm2022/lib/utils/common-exports.mjs +22 -0
- package/esm2022/lib/utils/service-exports.mjs +1 -1
- package/esm2022/lib/utils/validators-exports.mjs +44 -0
- package/index.d.ts +9 -1
- package/lib/components/fixed-ip/component.d.ts +10 -3
- package/lib/components/service-annotations-form/annotations.component.d.ts +6 -6
- package/lib/components/service-annotations-form-item/annotations.component.d.ts +1 -1
- package/lib/components/service-form/component.d.ts +1 -1
- package/lib/features/network-policy/components/add-peer-rule-handler/component.d.ts +8 -0
- package/lib/features/network-policy/components/ip-block-display/component.d.ts +7 -0
- package/lib/features/network-policy/components/label-selector-display/component.d.ts +13 -0
- package/lib/features/network-policy/components/peer-container/component.d.ts +18 -0
- package/lib/features/network-policy/components/pod-review/component.d.ts +37 -0
- package/lib/features/network-policy/components/rule-table/component.d.ts +21 -0
- package/lib/features/network-policy/form/network-policy/component.d.ts +70 -0
- package/lib/features/network-policy/form/network-policy-ip-block/component.d.ts +23 -0
- package/lib/features/network-policy/form/network-policy-peer/component.d.ts +43 -0
- package/lib/features/network-policy/form/network-policy-ports/component.d.ts +17 -0
- package/lib/features/network-policy/form/network-policy-remote-except-input/component.d.ts +23 -0
- package/lib/features/network-policy/form/network-policy-rule/component.d.ts +28 -0
- package/lib/services/alb-api.service.d.ts +4 -2
- package/lib/services/network-util.service.d.ts +1 -0
- package/lib/services/subnet-util.service.d.ts +25 -0
- package/lib/types/alb-exports.d.ts +23 -0
- package/lib/types/k8s-exports.d.ts +51 -1
- package/lib/types/metallb-exports.d.ts +65 -0
- package/lib/types/resource-definition.d.ts +143 -0
- package/lib/utils/common-exports.d.ts +5 -0
- package/lib/utils/validators-exports.d.ts +16 -0
- package/package.json +9 -4
- package/styles.css +1 -0
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { AutocompleteModule, ButtonModule, IconModule, InputModule, } from '@alauda/ui';
|
|
2
|
-
import { ArrayFormTableComponent, ArrayFormTableHeaderDirective, ArrayFormTableRowControlDirective, ArrayFormTableRowDirective, ArrayFormTableRowErrorDirective, BaseStringMapFormComponent,
|
|
2
|
+
import { ArrayFormTableComponent, ArrayFormTableHeaderDirective, ArrayFormTableRowControlDirective, ArrayFormTableRowDirective, ArrayFormTableRowErrorDirective, BaseStringMapFormComponent, ERRORS_MAPPER_MODULE, FALSE, HelpDocumentModule, PurePipe, TOKEN_BASE_DOMAIN, TOKEN_BASE_HREF, TRUE, TRANSLATE_MODULE, TranslateService, getK8sResourceAnnotationErrorMapper$, k8sResourceAnnotationKeyValidator, } from '@alauda-fe/common';
|
|
3
3
|
import { AsyncPipe, NgForOf, NgIf } from '@angular/common';
|
|
4
4
|
import { ChangeDetectionStrategy, Component, Inject, Injector, Input, inject, } from '@angular/core';
|
|
5
5
|
import { ReactiveFormsModule } from '@angular/forms';
|
|
@@ -7,15 +7,19 @@ import { sortBy } from 'lodash-es';
|
|
|
7
7
|
import { ClusterType } from '../../utils/cluster-exports';
|
|
8
8
|
import * as i0 from "@angular/core";
|
|
9
9
|
import * as i1 from "@angular/forms";
|
|
10
|
-
import * as i2 from "@alauda
|
|
11
|
-
import * as i3 from "@alauda/
|
|
10
|
+
import * as i2 from "@alauda/ui";
|
|
11
|
+
import * as i3 from "@alauda-fe/common";
|
|
12
|
+
const _c0 = ["*"];
|
|
13
|
+
const _c1 = (a0, a1) => ({ config: a0, readonly: a1 });
|
|
14
|
+
const _c2 = (a0, a1) => ({ path: a0, rawUrl: a1, type: "page" });
|
|
15
|
+
const _c3 = a0 => ({ example: a0 });
|
|
12
16
|
function ServiceAnnotationsFormComponent_ng_container_1_Template(rf, ctx) { if (rf & 1) {
|
|
13
17
|
i0.ɵɵelementContainerStart(0);
|
|
14
|
-
i0.ɵɵelementStart(1, "th",
|
|
18
|
+
i0.ɵɵelementStart(1, "th", 8);
|
|
15
19
|
i0.ɵɵtext(2);
|
|
16
20
|
i0.ɵɵpipe(3, "translate");
|
|
17
21
|
i0.ɵɵelementEnd();
|
|
18
|
-
i0.ɵɵelementStart(4, "th",
|
|
22
|
+
i0.ɵɵelementStart(4, "th", 8);
|
|
19
23
|
i0.ɵɵtext(5);
|
|
20
24
|
i0.ɵɵpipe(6, "translate");
|
|
21
25
|
i0.ɵɵelementEnd();
|
|
@@ -31,9 +35,9 @@ function ServiceAnnotationsFormComponent_ng_container_2_ng_container_1_aui_sugge
|
|
|
31
35
|
i0.ɵɵtext(1);
|
|
32
36
|
i0.ɵɵelementEnd();
|
|
33
37
|
} if (rf & 2) {
|
|
34
|
-
const
|
|
35
|
-
i0.ɵɵadvance(
|
|
36
|
-
i0.ɵɵtextInterpolate1(" ",
|
|
38
|
+
const tip_r4 = ctx.ngIf;
|
|
39
|
+
i0.ɵɵadvance();
|
|
40
|
+
i0.ɵɵtextInterpolate1(" ", tip_r4, " ");
|
|
37
41
|
} }
|
|
38
42
|
function ServiceAnnotationsFormComponent_ng_container_2_ng_container_1_aui_suggestion_5_Template(rf, ctx) { if (rf & 1) {
|
|
39
43
|
i0.ɵɵelementStart(0, "aui-suggestion", 15);
|
|
@@ -42,12 +46,12 @@ function ServiceAnnotationsFormComponent_ng_container_2_ng_container_1_aui_sugge
|
|
|
42
46
|
i0.ɵɵpipe(3, "translate");
|
|
43
47
|
i0.ɵɵelementEnd();
|
|
44
48
|
} if (rf & 2) {
|
|
45
|
-
const
|
|
46
|
-
i0.ɵɵproperty("value",
|
|
47
|
-
i0.ɵɵadvance(
|
|
48
|
-
i0.ɵɵtextInterpolate1(" ",
|
|
49
|
-
i0.ɵɵadvance(
|
|
50
|
-
i0.ɵɵproperty("ngIf", i0.ɵɵpipeBind1(3, 3,
|
|
49
|
+
const option_r5 = ctx.$implicit;
|
|
50
|
+
i0.ɵɵproperty("value", option_r5.key);
|
|
51
|
+
i0.ɵɵadvance();
|
|
52
|
+
i0.ɵɵtextInterpolate1(" ", option_r5.key, " ");
|
|
53
|
+
i0.ɵɵadvance();
|
|
54
|
+
i0.ɵɵproperty("ngIf", i0.ɵɵpipeBind1(3, 3, option_r5.tip));
|
|
51
55
|
} }
|
|
52
56
|
function ServiceAnnotationsFormComponent_ng_container_2_ng_container_1_ng_container_6_div_1_ng_container_1_Template(rf, ctx) { if (rf & 1) {
|
|
53
57
|
i0.ɵɵelementContainerStart(0);
|
|
@@ -55,47 +59,46 @@ function ServiceAnnotationsFormComponent_ng_container_2_ng_container_1_ng_contai
|
|
|
55
59
|
i0.ɵɵpipe(2, "translate");
|
|
56
60
|
i0.ɵɵelementContainerEnd();
|
|
57
61
|
} if (rf & 2) {
|
|
58
|
-
const
|
|
59
|
-
i0.ɵɵadvance(
|
|
60
|
-
i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(2, 1,
|
|
62
|
+
const doc_r6 = i0.ɵɵnextContext(2).ngIf;
|
|
63
|
+
i0.ɵɵadvance();
|
|
64
|
+
i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(2, 1, doc_r6.tipPrefix), " ");
|
|
61
65
|
} }
|
|
62
|
-
const _c0 = function (a0, a1) { return { path: a0, rawUrl: a1, type: "page" }; };
|
|
63
66
|
function ServiceAnnotationsFormComponent_ng_container_2_ng_container_1_ng_container_6_div_1_Template(rf, ctx) { if (rf & 1) {
|
|
64
67
|
i0.ɵɵelementStart(0, "div", 17);
|
|
65
|
-
i0.ɵɵtemplate(1, ServiceAnnotationsFormComponent_ng_container_2_ng_container_1_ng_container_6_div_1_ng_container_1_Template, 3, 3, "ng-container",
|
|
68
|
+
i0.ɵɵtemplate(1, ServiceAnnotationsFormComponent_ng_container_2_ng_container_1_ng_container_6_div_1_ng_container_1_Template, 3, 3, "ng-container", 10);
|
|
66
69
|
i0.ɵɵelementStart(2, "a", 18);
|
|
67
70
|
i0.ɵɵtext(3);
|
|
68
71
|
i0.ɵɵpipe(4, "translate");
|
|
69
72
|
i0.ɵɵelement(5, "aui-icon", 19);
|
|
70
73
|
i0.ɵɵelementEnd()();
|
|
71
74
|
} if (rf & 2) {
|
|
72
|
-
const
|
|
73
|
-
i0.ɵɵadvance(
|
|
74
|
-
i0.ɵɵproperty("ngIf",
|
|
75
|
-
i0.ɵɵadvance(
|
|
76
|
-
i0.ɵɵproperty("aclDocs", i0.ɵɵpureFunction2(5,
|
|
77
|
-
i0.ɵɵadvance(
|
|
78
|
-
i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(4, 3,
|
|
75
|
+
const doc_r6 = i0.ɵɵnextContext().ngIf;
|
|
76
|
+
i0.ɵɵadvance();
|
|
77
|
+
i0.ɵɵproperty("ngIf", doc_r6.tipPrefix);
|
|
78
|
+
i0.ɵɵadvance();
|
|
79
|
+
i0.ɵɵproperty("aclDocs", i0.ɵɵpureFunction2(5, _c2, doc_r6.path, doc_r6.rawUrl));
|
|
80
|
+
i0.ɵɵadvance();
|
|
81
|
+
i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(4, 3, doc_r6.tip), " ");
|
|
79
82
|
} }
|
|
80
83
|
function ServiceAnnotationsFormComponent_ng_container_2_ng_container_1_ng_container_6_Template(rf, ctx) { if (rf & 1) {
|
|
81
84
|
i0.ɵɵelementContainerStart(0);
|
|
82
|
-
i0.ɵɵtemplate(1, ServiceAnnotationsFormComponent_ng_container_2_ng_container_1_ng_container_6_div_1_Template, 6, 8, "div",
|
|
85
|
+
i0.ɵɵtemplate(1, ServiceAnnotationsFormComponent_ng_container_2_ng_container_1_ng_container_6_div_1_Template, 6, 8, "div", 7);
|
|
83
86
|
i0.ɵɵpipe(2, "pure");
|
|
84
87
|
i0.ɵɵelementContainerEnd();
|
|
85
88
|
} if (rf & 2) {
|
|
86
|
-
const
|
|
87
|
-
const
|
|
88
|
-
i0.ɵɵadvance(
|
|
89
|
-
i0.ɵɵproperty("ngIf", i0.ɵɵpipeBind3(2, 1,
|
|
89
|
+
const doc_r6 = ctx.ngIf;
|
|
90
|
+
const ctx_r1 = i0.ɵɵnextContext(3);
|
|
91
|
+
i0.ɵɵadvance();
|
|
92
|
+
i0.ɵɵproperty("ngIf", i0.ɵɵpipeBind3(2, 1, ctx_r1.baseHref, ctx_r1.showDocLink, doc_r6.product));
|
|
90
93
|
} }
|
|
91
94
|
function ServiceAnnotationsFormComponent_ng_container_2_ng_container_1_aui_suggestion_12_div_2_Template(rf, ctx) { if (rf & 1) {
|
|
92
95
|
i0.ɵɵelementStart(0, "div", 16);
|
|
93
96
|
i0.ɵɵtext(1);
|
|
94
97
|
i0.ɵɵelementEnd();
|
|
95
98
|
} if (rf & 2) {
|
|
96
|
-
const
|
|
97
|
-
i0.ɵɵadvance(
|
|
98
|
-
i0.ɵɵtextInterpolate1(" ",
|
|
99
|
+
const tip_r7 = ctx.ngIf;
|
|
100
|
+
i0.ɵɵadvance();
|
|
101
|
+
i0.ɵɵtextInterpolate1(" ", tip_r7, " ");
|
|
99
102
|
} }
|
|
100
103
|
function ServiceAnnotationsFormComponent_ng_container_2_ng_container_1_aui_suggestion_12_Template(rf, ctx) { if (rf & 1) {
|
|
101
104
|
i0.ɵɵelementStart(0, "aui-suggestion", 15);
|
|
@@ -104,12 +107,12 @@ function ServiceAnnotationsFormComponent_ng_container_2_ng_container_1_aui_sugge
|
|
|
104
107
|
i0.ɵɵpipe(3, "translate");
|
|
105
108
|
i0.ɵɵelementEnd();
|
|
106
109
|
} if (rf & 2) {
|
|
107
|
-
const
|
|
108
|
-
i0.ɵɵproperty("value",
|
|
109
|
-
i0.ɵɵadvance(
|
|
110
|
-
i0.ɵɵtextInterpolate1(" ",
|
|
111
|
-
i0.ɵɵadvance(
|
|
112
|
-
i0.ɵɵproperty("ngIf", i0.ɵɵpipeBind1(3, 3,
|
|
110
|
+
const option_r8 = ctx.$implicit;
|
|
111
|
+
i0.ɵɵproperty("value", option_r8.value);
|
|
112
|
+
i0.ɵɵadvance();
|
|
113
|
+
i0.ɵɵtextInterpolate1(" ", option_r8.value, " ");
|
|
114
|
+
i0.ɵɵadvance();
|
|
115
|
+
i0.ɵɵproperty("ngIf", i0.ɵɵpipeBind1(3, 3, option_r8.tip));
|
|
113
116
|
} }
|
|
114
117
|
function ServiceAnnotationsFormComponent_ng_container_2_ng_container_1_div_14_div_1_Template(rf, ctx) { if (rf & 1) {
|
|
115
118
|
i0.ɵɵelementStart(0, "div", 24);
|
|
@@ -117,19 +120,18 @@ function ServiceAnnotationsFormComponent_ng_container_2_ng_container_1_div_14_di
|
|
|
117
120
|
i0.ɵɵpipe(2, "translate");
|
|
118
121
|
i0.ɵɵelementEnd();
|
|
119
122
|
} if (rf & 2) {
|
|
120
|
-
i0.ɵɵadvance(
|
|
121
|
-
i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(2, 1, "read_filling_instructions_tip"), " ");
|
|
123
|
+
i0.ɵɵadvance();
|
|
124
|
+
i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(2, 1, "network.read_filling_instructions_tip"), " ");
|
|
122
125
|
} }
|
|
123
|
-
const _c1 = function (a0) { return { example: a0 }; };
|
|
124
126
|
function ServiceAnnotationsFormComponent_ng_container_2_ng_container_1_div_14_Template(rf, ctx) { if (rf & 1) {
|
|
125
|
-
const
|
|
127
|
+
const _r9 = i0.ɵɵgetCurrentView();
|
|
126
128
|
i0.ɵɵelementStart(0, "div", 16);
|
|
127
129
|
i0.ɵɵtemplate(1, ServiceAnnotationsFormComponent_ng_container_2_ng_container_1_div_14_div_1_Template, 3, 3, "div", 20);
|
|
128
130
|
i0.ɵɵelementStart(2, "div", 21);
|
|
129
131
|
i0.ɵɵtext(3);
|
|
130
132
|
i0.ɵɵpipe(4, "translate");
|
|
131
133
|
i0.ɵɵelementStart(5, "aui-icon", 22);
|
|
132
|
-
i0.ɵɵlistener("click", function ServiceAnnotationsFormComponent_ng_container_2_ng_container_1_div_14_Template_aui_icon_click_5_listener() { const
|
|
134
|
+
i0.ɵɵlistener("click", function ServiceAnnotationsFormComponent_ng_container_2_ng_container_1_div_14_Template_aui_icon_click_5_listener() { const valueConfig_r10 = i0.ɵɵrestoreView(_r9).ngIf; const control_r3 = i0.ɵɵnextContext(2).$implicit; return i0.ɵɵresetView(control_r3.get("1").setValue(valueConfig_r10.example)); });
|
|
133
135
|
i0.ɵɵelementEnd()();
|
|
134
136
|
i0.ɵɵelementStart(6, "a", 23);
|
|
135
137
|
i0.ɵɵtext(7);
|
|
@@ -137,34 +139,34 @@ function ServiceAnnotationsFormComponent_ng_container_2_ng_container_1_div_14_Te
|
|
|
137
139
|
i0.ɵɵelement(9, "aui-icon", 19);
|
|
138
140
|
i0.ɵɵelementEnd()();
|
|
139
141
|
} if (rf & 2) {
|
|
140
|
-
const
|
|
141
|
-
const
|
|
142
|
-
i0.ɵɵadvance(
|
|
143
|
-
i0.ɵɵproperty("ngIf",
|
|
142
|
+
const valueConfig_r10 = ctx.ngIf;
|
|
143
|
+
const control_r3 = i0.ɵɵnextContext(2).$implicit;
|
|
144
|
+
i0.ɵɵadvance();
|
|
145
|
+
i0.ɵɵproperty("ngIf", control_r3.get("1").value === valueConfig_r10.example);
|
|
144
146
|
i0.ɵɵadvance(2);
|
|
145
|
-
i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind2(4, 4,
|
|
147
|
+
i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind2(4, 4, valueConfig_r10.tip, i0.ɵɵpureFunction1(9, _c3, valueConfig_r10.example)), " ");
|
|
146
148
|
i0.ɵɵadvance(3);
|
|
147
|
-
i0.ɵɵproperty("href",
|
|
148
|
-
i0.ɵɵadvance(
|
|
149
|
-
i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(8, 7, "filling_instructions"), " ");
|
|
149
|
+
i0.ɵɵproperty("href", valueConfig_r10.docLink, i0.ɵɵsanitizeUrl);
|
|
150
|
+
i0.ɵɵadvance();
|
|
151
|
+
i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(8, 7, "network.filling_instructions"), " ");
|
|
150
152
|
} }
|
|
151
153
|
function ServiceAnnotationsFormComponent_ng_container_2_ng_container_1_Template(rf, ctx) { if (rf & 1) {
|
|
152
|
-
const
|
|
154
|
+
const _r1 = i0.ɵɵgetCurrentView();
|
|
153
155
|
i0.ɵɵelementContainerStart(0);
|
|
154
|
-
i0.ɵɵelementStart(1, "td",
|
|
155
|
-
i0.ɵɵlistener("blur", function ServiceAnnotationsFormComponent_ng_container_2_ng_container_1_Template_input_blur_2_listener() { i0.ɵɵrestoreView(
|
|
156
|
+
i0.ɵɵelementStart(1, "td", 8)(2, "input", 11);
|
|
157
|
+
i0.ɵɵlistener("blur", function ServiceAnnotationsFormComponent_ng_container_2_ng_container_1_Template_input_blur_2_listener() { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.onBlur()); })("auiAutocompleteSelected", function ServiceAnnotationsFormComponent_ng_container_2_ng_container_1_Template_input_auiAutocompleteSelected_2_listener() { i0.ɵɵrestoreView(_r1); const control_r3 = i0.ɵɵnextContext().$implicit; const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.onKeySelected(control_r3)); });
|
|
156
158
|
i0.ɵɵelementEnd();
|
|
157
|
-
i0.ɵɵelementStart(3, "aui-autocomplete", null,
|
|
158
|
-
i0.ɵɵtemplate(5, ServiceAnnotationsFormComponent_ng_container_2_ng_container_1_aui_suggestion_5_Template, 4, 5, "aui-suggestion",
|
|
159
|
+
i0.ɵɵelementStart(3, "aui-autocomplete", null, 0);
|
|
160
|
+
i0.ɵɵtemplate(5, ServiceAnnotationsFormComponent_ng_container_2_ng_container_1_aui_suggestion_5_Template, 4, 5, "aui-suggestion", 12);
|
|
159
161
|
i0.ɵɵelementEnd();
|
|
160
|
-
i0.ɵɵtemplate(6, ServiceAnnotationsFormComponent_ng_container_2_ng_container_1_ng_container_6_Template, 3, 5, "ng-container",
|
|
162
|
+
i0.ɵɵtemplate(6, ServiceAnnotationsFormComponent_ng_container_2_ng_container_1_ng_container_6_Template, 3, 5, "ng-container", 10);
|
|
161
163
|
i0.ɵɵpipe(7, "pure");
|
|
162
164
|
i0.ɵɵelementEnd();
|
|
163
|
-
i0.ɵɵelementStart(8, "td",
|
|
164
|
-
i0.ɵɵlistener("blur", function ServiceAnnotationsFormComponent_ng_container_2_ng_container_1_Template_input_blur_9_listener() { i0.ɵɵrestoreView(
|
|
165
|
+
i0.ɵɵelementStart(8, "td", 8)(9, "input", 13);
|
|
166
|
+
i0.ɵɵlistener("blur", function ServiceAnnotationsFormComponent_ng_container_2_ng_container_1_Template_input_blur_9_listener() { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.onBlur()); });
|
|
165
167
|
i0.ɵɵelementEnd();
|
|
166
|
-
i0.ɵɵelementStart(10, "aui-autocomplete", null,
|
|
167
|
-
i0.ɵɵtemplate(12, ServiceAnnotationsFormComponent_ng_container_2_ng_container_1_aui_suggestion_12_Template, 4, 5, "aui-suggestion",
|
|
168
|
+
i0.ɵɵelementStart(10, "aui-autocomplete", null, 1);
|
|
169
|
+
i0.ɵɵtemplate(12, ServiceAnnotationsFormComponent_ng_container_2_ng_container_1_aui_suggestion_12_Template, 4, 5, "aui-suggestion", 12);
|
|
168
170
|
i0.ɵɵpipe(13, "pure");
|
|
169
171
|
i0.ɵɵelementEnd();
|
|
170
172
|
i0.ɵɵtemplate(14, ServiceAnnotationsFormComponent_ng_container_2_ng_container_1_div_14_Template, 10, 11, "div", 14);
|
|
@@ -172,41 +174,40 @@ function ServiceAnnotationsFormComponent_ng_container_2_ng_container_1_Template(
|
|
|
172
174
|
i0.ɵɵelementEnd();
|
|
173
175
|
i0.ɵɵelementContainerEnd();
|
|
174
176
|
} if (rf & 2) {
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
const
|
|
179
|
-
const
|
|
180
|
-
const
|
|
181
|
-
const
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
177
|
+
let tmp_10_0;
|
|
178
|
+
let tmp_13_0;
|
|
179
|
+
let tmp_14_0;
|
|
180
|
+
const __r11 = ctx.ngIf;
|
|
181
|
+
const keySuggestion_r12 = i0.ɵɵreference(4);
|
|
182
|
+
const valueSuggestion_r13 = i0.ɵɵreference(11);
|
|
183
|
+
const ctx_r13 = i0.ɵɵnextContext();
|
|
184
|
+
const control_r3 = ctx_r13.$implicit;
|
|
185
|
+
const index_r15 = ctx_r13.index;
|
|
186
|
+
const ctx_r1 = i0.ɵɵnextContext();
|
|
185
187
|
i0.ɵɵadvance(2);
|
|
186
|
-
i0.ɵɵproperty("readonly",
|
|
188
|
+
i0.ɵɵproperty("readonly", __r11.readonly)("auiAutocomplete", keySuggestion_r12);
|
|
187
189
|
i0.ɵɵadvance(3);
|
|
188
|
-
i0.ɵɵproperty("ngForOf",
|
|
189
|
-
i0.ɵɵadvance(
|
|
190
|
-
i0.ɵɵproperty("ngIf", (
|
|
190
|
+
i0.ɵɵproperty("ngForOf", __r11.readonly ? null : ctx_r1.filterOptions(__r11.config == null ? null : __r11.config.options, index_r15));
|
|
191
|
+
i0.ɵɵadvance();
|
|
192
|
+
i0.ɵɵproperty("ngIf", (tmp_10_0 = i0.ɵɵpipeBind3(7, 8, __r11.config == null ? null : __r11.config.options, ctx_r1.getActiveConfigOption, control_r3.get("0").value)) == null ? null : tmp_10_0.doc);
|
|
191
193
|
i0.ɵɵadvance(3);
|
|
192
|
-
i0.ɵɵproperty("readonly",
|
|
194
|
+
i0.ɵɵproperty("readonly", __r11.readonly)("auiAutocomplete", valueSuggestion_r13);
|
|
193
195
|
i0.ɵɵadvance(3);
|
|
194
|
-
i0.ɵɵproperty("ngForOf",
|
|
196
|
+
i0.ɵɵproperty("ngForOf", __r11.readonly ? null : (tmp_13_0 = i0.ɵɵpipeBind3(13, 12, __r11.config == null ? null : __r11.config.options, ctx_r1.getConfigOption, control_r3.get("0").value)) == null ? null : tmp_13_0.values);
|
|
195
197
|
i0.ɵɵadvance(2);
|
|
196
|
-
i0.ɵɵproperty("ngIf", (
|
|
198
|
+
i0.ɵɵproperty("ngIf", (tmp_14_0 = i0.ɵɵpipeBind3(15, 16, __r11.config == null ? null : __r11.config.options, ctx_r1.getActiveConfigOption, control_r3.get("0").value)) == null ? null : tmp_14_0.value);
|
|
197
199
|
} }
|
|
198
|
-
const _c2 = function (a0, a1) { return { config: a0, readonly: a1 }; };
|
|
199
200
|
function ServiceAnnotationsFormComponent_ng_container_2_Template(rf, ctx) { if (rf & 1) {
|
|
200
|
-
i0.ɵɵelementContainerStart(0,
|
|
201
|
-
i0.ɵɵtemplate(1, ServiceAnnotationsFormComponent_ng_container_2_ng_container_1_Template, 16, 20, "ng-container",
|
|
201
|
+
i0.ɵɵelementContainerStart(0, 9);
|
|
202
|
+
i0.ɵɵtemplate(1, ServiceAnnotationsFormComponent_ng_container_2_ng_container_1_Template, 16, 20, "ng-container", 10);
|
|
202
203
|
i0.ɵɵelementContainerEnd();
|
|
203
204
|
} if (rf & 2) {
|
|
204
|
-
const
|
|
205
|
-
const
|
|
205
|
+
const control_r3 = ctx.$implicit;
|
|
206
|
+
const index_r15 = ctx.index;
|
|
206
207
|
const ctx_r1 = i0.ɵɵnextContext();
|
|
207
|
-
i0.ɵɵproperty("formGroupName",
|
|
208
|
-
i0.ɵɵadvance(
|
|
209
|
-
i0.ɵɵproperty("ngIf", i0.ɵɵpureFunction2(2,
|
|
208
|
+
i0.ɵɵproperty("formGroupName", index_r15);
|
|
209
|
+
i0.ɵɵadvance();
|
|
210
|
+
i0.ɵɵproperty("ngIf", i0.ɵɵpureFunction2(2, _c1, ctx_r1.KNOWN_ANNOTATIONS[ctx_r1.clusterType], ctx_r1.isLabelReadonly(control_r3)));
|
|
210
211
|
} }
|
|
211
212
|
function ServiceAnnotationsFormComponent_ng_container_3_td_1_ng_container_1_Template(rf, ctx) { if (rf & 1) {
|
|
212
213
|
i0.ɵɵelementContainerStart(0);
|
|
@@ -214,7 +215,7 @@ function ServiceAnnotationsFormComponent_ng_container_3_td_1_ng_container_1_Temp
|
|
|
214
215
|
i0.ɵɵpipe(2, "translate");
|
|
215
216
|
i0.ɵɵelementContainerEnd();
|
|
216
217
|
} if (rf & 2) {
|
|
217
|
-
i0.ɵɵadvance(
|
|
218
|
+
i0.ɵɵadvance();
|
|
218
219
|
i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(2, 1, "k8s_resource_label_key_required"), " ");
|
|
219
220
|
} }
|
|
220
221
|
function ServiceAnnotationsFormComponent_ng_container_3_td_1_ng_container_2_Template(rf, ctx) { if (rf & 1) {
|
|
@@ -223,69 +224,68 @@ function ServiceAnnotationsFormComponent_ng_container_3_td_1_ng_container_2_Temp
|
|
|
223
224
|
i0.ɵɵpipe(2, "translate");
|
|
224
225
|
i0.ɵɵelementContainerEnd();
|
|
225
226
|
} if (rf & 2) {
|
|
226
|
-
i0.ɵɵadvance(
|
|
227
|
+
i0.ɵɵadvance();
|
|
227
228
|
i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(2, 1, "k8s_resource_label_key_duplicated"), " ");
|
|
228
229
|
} }
|
|
229
230
|
function ServiceAnnotationsFormComponent_ng_container_3_td_1_Template(rf, ctx) { if (rf & 1) {
|
|
230
231
|
i0.ɵɵelementStart(0, "td", 26);
|
|
231
|
-
i0.ɵɵtemplate(1, ServiceAnnotationsFormComponent_ng_container_3_td_1_ng_container_1_Template, 3, 3, "ng-container",
|
|
232
|
-
i0.ɵɵtemplate(2, ServiceAnnotationsFormComponent_ng_container_3_td_1_ng_container_2_Template, 3, 3, "ng-container", 8);
|
|
232
|
+
i0.ɵɵtemplate(1, ServiceAnnotationsFormComponent_ng_container_3_td_1_ng_container_1_Template, 3, 3, "ng-container", 10)(2, ServiceAnnotationsFormComponent_ng_container_3_td_1_ng_container_2_Template, 3, 3, "ng-container", 10);
|
|
233
233
|
i0.ɵɵelement(3, "acl-errors-mapper", 27);
|
|
234
234
|
i0.ɵɵpipe(4, "async");
|
|
235
235
|
i0.ɵɵelement(5, "acl-errors-mapper", 28);
|
|
236
236
|
i0.ɵɵelementEnd();
|
|
237
237
|
} if (rf & 2) {
|
|
238
|
-
const
|
|
239
|
-
const
|
|
240
|
-
i0.ɵɵadvance(
|
|
241
|
-
i0.ɵɵproperty("ngIf",
|
|
242
|
-
i0.ɵɵadvance(
|
|
243
|
-
i0.ɵɵproperty("ngIf",
|
|
244
|
-
i0.ɵɵadvance(
|
|
245
|
-
i0.ɵɵproperty("errors",
|
|
238
|
+
const control_r16 = i0.ɵɵnextContext().$implicit;
|
|
239
|
+
const ctx_r1 = i0.ɵɵnextContext();
|
|
240
|
+
i0.ɵɵadvance();
|
|
241
|
+
i0.ɵɵproperty("ngIf", control_r16.errors == null ? null : control_r16.errors.keyIsMissing);
|
|
242
|
+
i0.ɵɵadvance();
|
|
243
|
+
i0.ɵɵproperty("ngIf", control_r16.errors == null ? null : control_r16.errors.duplicateError);
|
|
244
|
+
i0.ɵɵadvance();
|
|
245
|
+
i0.ɵɵproperty("errors", control_r16.get("0").errors)("errorsMapper", i0.ɵɵpipeBind1(4, 5, ctx_r1.annotationsErrorsMapper).key);
|
|
246
246
|
i0.ɵɵadvance(2);
|
|
247
|
-
i0.ɵɵproperty("errors",
|
|
247
|
+
i0.ɵɵproperty("errors", control_r16.get("1").errors);
|
|
248
248
|
} }
|
|
249
249
|
function ServiceAnnotationsFormComponent_ng_container_3_Template(rf, ctx) { if (rf & 1) {
|
|
250
250
|
i0.ɵɵelementContainerStart(0);
|
|
251
251
|
i0.ɵɵtemplate(1, ServiceAnnotationsFormComponent_ng_container_3_td_1_Template, 6, 7, "td", 25);
|
|
252
252
|
i0.ɵɵelementContainerEnd();
|
|
253
253
|
} if (rf & 2) {
|
|
254
|
-
const
|
|
255
|
-
i0.ɵɵadvance(
|
|
256
|
-
i0.ɵɵproperty("ngIf",
|
|
254
|
+
const control_r16 = ctx.$implicit;
|
|
255
|
+
i0.ɵɵadvance();
|
|
256
|
+
i0.ɵɵproperty("ngIf", control_r16.invalid);
|
|
257
257
|
} }
|
|
258
258
|
function ServiceAnnotationsFormComponent_ng_container_4_Template(rf, ctx) { if (rf & 1) {
|
|
259
|
-
const
|
|
259
|
+
const _r17 = i0.ɵɵgetCurrentView();
|
|
260
260
|
i0.ɵɵelementContainerStart(0);
|
|
261
261
|
i0.ɵɵelementStart(1, "button", 29);
|
|
262
|
-
i0.ɵɵlistener("click", function ServiceAnnotationsFormComponent_ng_container_4_Template_button_click_1_listener() { const
|
|
262
|
+
i0.ɵɵlistener("click", function ServiceAnnotationsFormComponent_ng_container_4_Template_button_click_1_listener() { const index_r18 = i0.ɵɵrestoreView(_r17).index; const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.remove(index_r18)); });
|
|
263
263
|
i0.ɵɵelement(2, "aui-icon", 30);
|
|
264
264
|
i0.ɵɵelementEnd();
|
|
265
265
|
i0.ɵɵelementContainerEnd();
|
|
266
266
|
} if (rf & 2) {
|
|
267
|
-
const
|
|
268
|
-
const
|
|
269
|
-
i0.ɵɵadvance(
|
|
270
|
-
i0.ɵɵproperty("square", true)("plain", true)("disabled",
|
|
267
|
+
const item_r19 = ctx.$implicit;
|
|
268
|
+
const ctx_r1 = i0.ɵɵnextContext();
|
|
269
|
+
i0.ɵɵadvance();
|
|
270
|
+
i0.ɵɵproperty("square", true)("plain", true)("disabled", ctx_r1.isLabelReadonly(item_r19));
|
|
271
271
|
} }
|
|
272
272
|
function ServiceAnnotationsFormComponent_div_6_ng_container_2_Template(rf, ctx) { if (rf & 1) {
|
|
273
273
|
i0.ɵɵelementContainerStart(0);
|
|
274
274
|
i0.ɵɵtext(1);
|
|
275
275
|
i0.ɵɵelementContainerEnd();
|
|
276
276
|
} if (rf & 2) {
|
|
277
|
-
const
|
|
278
|
-
i0.ɵɵadvance(
|
|
279
|
-
i0.ɵɵtextInterpolate(
|
|
277
|
+
const text_r20 = ctx.$implicit;
|
|
278
|
+
i0.ɵɵadvance();
|
|
279
|
+
i0.ɵɵtextInterpolate(text_r20);
|
|
280
280
|
} }
|
|
281
281
|
function ServiceAnnotationsFormComponent_div_6_ng_container_3_Template(rf, ctx) { if (rf & 1) {
|
|
282
282
|
i0.ɵɵelementContainerStart(0);
|
|
283
283
|
i0.ɵɵtext(1);
|
|
284
284
|
i0.ɵɵelementContainerEnd();
|
|
285
285
|
} if (rf & 2) {
|
|
286
|
-
const
|
|
287
|
-
i0.ɵɵadvance(
|
|
288
|
-
i0.ɵɵtextInterpolate(
|
|
286
|
+
const config_r21 = i0.ɵɵnextContext().ngIf;
|
|
287
|
+
i0.ɵɵadvance();
|
|
288
|
+
i0.ɵɵtextInterpolate(config_r21.label);
|
|
289
289
|
} }
|
|
290
290
|
function ServiceAnnotationsFormComponent_div_6_a_4_Template(rf, ctx) { if (rf & 1) {
|
|
291
291
|
i0.ɵɵelementStart(0, "a", 35);
|
|
@@ -294,28 +294,25 @@ function ServiceAnnotationsFormComponent_div_6_a_4_Template(rf, ctx) { if (rf &
|
|
|
294
294
|
i0.ɵɵelement(3, "aui-icon", 19);
|
|
295
295
|
i0.ɵɵelementEnd();
|
|
296
296
|
} if (rf & 2) {
|
|
297
|
-
const
|
|
298
|
-
i0.ɵɵproperty("href",
|
|
299
|
-
i0.ɵɵadvance(
|
|
297
|
+
const config_r21 = i0.ɵɵnextContext().ngIf;
|
|
298
|
+
i0.ɵɵproperty("href", config_r21.docLink, i0.ɵɵsanitizeUrl);
|
|
299
|
+
i0.ɵɵadvance();
|
|
300
300
|
i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(2, 2, "documentation"), " ");
|
|
301
301
|
} }
|
|
302
302
|
function ServiceAnnotationsFormComponent_div_6_Template(rf, ctx) { if (rf & 1) {
|
|
303
303
|
i0.ɵɵelementStart(0, "div", 17);
|
|
304
304
|
i0.ɵɵelementContainerStart(1, 31);
|
|
305
|
-
i0.ɵɵtemplate(2, ServiceAnnotationsFormComponent_div_6_ng_container_2_Template, 2, 1, "ng-container", 32);
|
|
306
|
-
i0.ɵɵtemplate(3, ServiceAnnotationsFormComponent_div_6_ng_container_3_Template, 2, 1, "ng-container", 33);
|
|
307
|
-
i0.ɵɵtemplate(4, ServiceAnnotationsFormComponent_div_6_a_4_Template, 4, 4, "a", 34);
|
|
305
|
+
i0.ɵɵtemplate(2, ServiceAnnotationsFormComponent_div_6_ng_container_2_Template, 2, 1, "ng-container", 32)(3, ServiceAnnotationsFormComponent_div_6_ng_container_3_Template, 2, 1, "ng-container", 33)(4, ServiceAnnotationsFormComponent_div_6_a_4_Template, 4, 4, "a", 34);
|
|
308
306
|
i0.ɵɵelementContainerEnd();
|
|
309
307
|
i0.ɵɵelementEnd();
|
|
310
308
|
} if (rf & 2) {
|
|
311
|
-
i0.ɵɵadvance(
|
|
309
|
+
i0.ɵɵadvance();
|
|
312
310
|
i0.ɵɵproperty("aclTranslate", "documentation_for_lb_service_annotations");
|
|
313
311
|
i0.ɵɵadvance(2);
|
|
314
312
|
i0.ɵɵproperty("aclTranslateMatch", "type");
|
|
315
|
-
i0.ɵɵadvance(
|
|
313
|
+
i0.ɵɵadvance();
|
|
316
314
|
i0.ɵɵproperty("aclTranslateMatch", "documentation");
|
|
317
315
|
} }
|
|
318
|
-
const _c3 = ["*"];
|
|
319
316
|
var PRODUCT_BASE_HREF_MAP;
|
|
320
317
|
(function (PRODUCT_BASE_HREF_MAP) {
|
|
321
318
|
PRODUCT_BASE_HREF_MAP["devops"] = "/console-devops/";
|
|
@@ -619,17 +616,14 @@ export class ServiceAnnotationsFormComponent extends BaseStringMapFormComponent
|
|
|
619
616
|
return PRODUCT_BASE_HREF_MAP[product] === baseHref;
|
|
620
617
|
}
|
|
621
618
|
static { this.ɵfac = function ServiceAnnotationsFormComponent_Factory(t) { return new (t || ServiceAnnotationsFormComponent)(i0.ɵɵdirectiveInject(i0.Injector), i0.ɵɵdirectiveInject(TOKEN_BASE_DOMAIN)); }; }
|
|
622
|
-
static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: ServiceAnnotationsFormComponent, selectors: [["acl-service-annotations-form"]], inputs: { isUpdate: "isUpdate", clusterType: "clusterType", resourceName: "resourceName" }, standalone: true, features: [i0.ɵɵInheritDefinitionFeature, i0.ɵɵStandaloneFeature], ngContentSelectors:
|
|
619
|
+
static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: ServiceAnnotationsFormComponent, selectors: [["acl-service-annotations-form"]], inputs: { isUpdate: "isUpdate", clusterType: "clusterType", resourceName: "resourceName" }, standalone: true, features: [i0.ɵɵInheritDefinitionFeature, i0.ɵɵStandaloneFeature], ngContentSelectors: _c0, decls: 7, vars: 4, consts: [["keySuggestion", ""], ["valueSuggestion", ""], [3, "add", "remove", "formGroup", "rows", "resourceName"], [4, "aclArrayFormTableHeader"], [3, "formGroupName", 4, "aclArrayFormTableRow"], [4, "aclArrayFormTableRowError"], [4, "aclArrayFormTableRowControl"], ["class", "tw-text-help-text tw-text-s tw-mt-4", 4, "ngIf"], [1, "column"], [3, "formGroupName"], [4, "ngIf"], ["aui-input", "", "formControlName", "0", 3, "blur", "auiAutocompleteSelected", "readonly", "auiAutocomplete"], [3, "value", 4, "ngFor", "ngForOf"], ["aui-input", "", "formControlName", "1", 3, "blur", "readonly", "auiAutocomplete"], ["class", "tw-text-help-text tw-text-s", 4, "ngIf"], [3, "value"], [1, "tw-text-help-text", "tw-text-s"], [1, "tw-text-help-text", "tw-text-s", "tw-mt-4"], [3, "aclDocs"], ["icon", "jump"], ["class", "tw-text-yellow tw-mt-4", 4, "ngIf"], [1, "tw-break-all", "tw-my-4"], ["icon", "arrow_turn_up", 1, "tw-text-primary", "tw-cursor-pointer", 3, "click"], ["rel", "noopener noreferrer", "target", "_blank", 3, "href"], [1, "tw-text-yellow", "tw-mt-4"], ["colspan", "3", "class", "acl-table-form-error-hint", 4, "ngIf"], ["colspan", "3", 1, "acl-table-form-error-hint"], ["auiFormItemError", "", 3, "errors", "errorsMapper"], ["auiFormItemError", "", 3, "errors"], ["aui-button", "text", "type", "button", 3, "click", "square", "plain", "disabled"], ["icon", "minus_circle"], [3, "aclTranslate"], [4, "aclTranslateText"], [4, "aclTranslateMatch"], ["target", "_blank", "rel", "noopener noreferrer", 3, "href", 4, "aclTranslateMatch"], ["target", "_blank", "rel", "noopener noreferrer", 3, "href"]], template: function ServiceAnnotationsFormComponent_Template(rf, ctx) { if (rf & 1) {
|
|
623
620
|
i0.ɵɵprojectionDef();
|
|
624
|
-
i0.ɵɵelementStart(0, "acl-array-form-table",
|
|
621
|
+
i0.ɵɵelementStart(0, "acl-array-form-table", 2);
|
|
625
622
|
i0.ɵɵlistener("add", function ServiceAnnotationsFormComponent_Template_acl_array_form_table_add_0_listener() { return ctx.form.push(ctx.createNewControl()); })("remove", function ServiceAnnotationsFormComponent_Template_acl_array_form_table_remove_0_listener($event) { return ctx.remove($event); });
|
|
626
|
-
i0.ɵɵtemplate(1, ServiceAnnotationsFormComponent_ng_container_1_Template, 7, 6, "ng-container", 1);
|
|
627
|
-
i0.ɵɵtemplate(2, ServiceAnnotationsFormComponent_ng_container_2_Template, 2, 5, "ng-container", 2);
|
|
628
|
-
i0.ɵɵtemplate(3, ServiceAnnotationsFormComponent_ng_container_3_Template, 2, 1, "ng-container", 3);
|
|
629
|
-
i0.ɵɵtemplate(4, ServiceAnnotationsFormComponent_ng_container_4_Template, 3, 3, "ng-container", 4);
|
|
623
|
+
i0.ɵɵtemplate(1, ServiceAnnotationsFormComponent_ng_container_1_Template, 7, 6, "ng-container", 3)(2, ServiceAnnotationsFormComponent_ng_container_2_Template, 2, 5, "ng-container", 4)(3, ServiceAnnotationsFormComponent_ng_container_3_Template, 2, 1, "ng-container", 5)(4, ServiceAnnotationsFormComponent_ng_container_4_Template, 3, 3, "ng-container", 6);
|
|
630
624
|
i0.ɵɵelementEnd();
|
|
631
625
|
i0.ɵɵprojection(5);
|
|
632
|
-
i0.ɵɵtemplate(6, ServiceAnnotationsFormComponent_div_6_Template, 5, 3, "div",
|
|
626
|
+
i0.ɵɵtemplate(6, ServiceAnnotationsFormComponent_div_6_Template, 5, 3, "div", 7);
|
|
633
627
|
} if (rf & 2) {
|
|
634
628
|
i0.ɵɵproperty("formGroup", ctx.form)("rows", ctx.form.controls)("resourceName", ctx.resourceName);
|
|
635
629
|
i0.ɵɵadvance(6);
|
|
@@ -637,21 +631,19 @@ export class ServiceAnnotationsFormComponent extends BaseStringMapFormComponent
|
|
|
637
631
|
} }, dependencies: [AsyncPipe,
|
|
638
632
|
NgIf,
|
|
639
633
|
NgForOf,
|
|
640
|
-
ReactiveFormsModule, i1.DefaultValueAccessor, i1.NgControlStatus, i1.NgControlStatusGroup, i1.FormGroupDirective, i1.FormControlName, i1.FormGroupName,
|
|
634
|
+
ReactiveFormsModule, i1.DefaultValueAccessor, i1.NgControlStatus, i1.NgControlStatusGroup, i1.FormGroupDirective, i1.FormControlName, i1.FormGroupName, AutocompleteModule, i2.AutoCompleteDirective, i2.AutocompleteComponent, i2.SuggestionComponent, ButtonModule, i2.ButtonComponent, IconModule, i2.IconComponent, InputModule, i2.InputComponent, ArrayFormTableComponent,
|
|
641
635
|
ArrayFormTableHeaderDirective,
|
|
642
636
|
ArrayFormTableRowDirective,
|
|
643
637
|
ArrayFormTableRowControlDirective,
|
|
644
|
-
ArrayFormTableRowErrorDirective,
|
|
645
|
-
ErrorsMapperModule, i2.ErrorsMapperComponent, HelpDocumentModule, i2.DocsDirective, PurePipe], styles: ["[_nghost-%COMP%]{flex:1}.column[_ngcontent-%COMP%]{width:50%;vertical-align:top}"], changeDetection: 0 }); }
|
|
638
|
+
ArrayFormTableRowErrorDirective, i3.TranslatePipe, i3.TranslateDirective, i3.TranslateMatchDirective, i3.TranslateTextDirective, i3.ErrorsMapperComponent, HelpDocumentModule, i3.DocsDirective, PurePipe], styles: ["[_nghost-%COMP%]{flex:1}.column[_ngcontent-%COMP%]{width:50%;vertical-align:top}"], changeDetection: 0 }); }
|
|
646
639
|
}
|
|
647
|
-
(
|
|
640
|
+
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(ServiceAnnotationsFormComponent, [{
|
|
648
641
|
type: Component,
|
|
649
642
|
args: [{ selector: 'acl-service-annotations-form', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [
|
|
650
643
|
AsyncPipe,
|
|
651
644
|
NgIf,
|
|
652
645
|
NgForOf,
|
|
653
646
|
ReactiveFormsModule,
|
|
654
|
-
TranslateModule,
|
|
655
647
|
AutocompleteModule,
|
|
656
648
|
ButtonModule,
|
|
657
649
|
IconModule,
|
|
@@ -661,14 +653,15 @@ export class ServiceAnnotationsFormComponent extends BaseStringMapFormComponent
|
|
|
661
653
|
ArrayFormTableRowDirective,
|
|
662
654
|
ArrayFormTableRowControlDirective,
|
|
663
655
|
ArrayFormTableRowErrorDirective,
|
|
664
|
-
|
|
656
|
+
TRANSLATE_MODULE,
|
|
657
|
+
ERRORS_MAPPER_MODULE,
|
|
665
658
|
HelpDocumentModule,
|
|
666
659
|
PurePipe,
|
|
667
|
-
], template: "<acl-array-form-table\n [formGroup]=\"$any(form)\"\n [rows]=\"form.controls\"\n (add)=\"form.push(createNewControl())\"\n (remove)=\"remove($event)\"\n [resourceName]=\"resourceName\"\n>\n <ng-container *aclArrayFormTableHeader>\n <th class=\"column\">{{ 'key' | translate }}</th>\n <th class=\"column\">{{ 'value' | translate }}</th>\n </ng-container>\n\n <ng-container\n *aclArrayFormTableRow=\"let control; let index = index\"\n [formGroupName]=\"index\"\n >\n <ng-container\n *ngIf=\"{\n config: KNOWN_ANNOTATIONS[clusterType],\n readonly: isLabelReadonly(control)\n } as _\"\n >\n <td class=\"column\">\n <input\n aui-input\n [readonly]=\"_.readonly\"\n (blur)=\"onBlur()\"\n formControlName=\"0\"\n [auiAutocomplete]=\"keySuggestion\"\n (auiAutocompleteSelected)=\"onKeySelected(control)\"\n />\n <aui-autocomplete #keySuggestion>\n <aui-suggestion\n *ngFor=\"\n let option of _.readonly\n ? null\n : filterOptions(_.config?.options, index)\n \"\n [value]=\"option.key\"\n >\n {{ option.key }}\n <div\n *ngIf=\"option.tip | translate as tip\"\n class=\"tw-text-help-text tw-text-s\"\n >\n {{ tip }}\n </div>\n </aui-suggestion>\n </aui-autocomplete>\n <ng-container\n *ngIf=\"\n (\n _.config?.options\n | pure: getActiveConfigOption:control.get('0').value\n )?.doc as doc\n \"\n >\n <div\n *ngIf=\"baseHref | pure: showDocLink:doc.product\"\n class=\"tw-text-help-text tw-text-s tw-mt-4\"\n >\n <ng-container *ngIf=\"doc.tipPrefix\">\n {{ doc.tipPrefix | translate }}\n </ng-container>\n <a\n [aclDocs]=\"{\n path: doc.path,\n rawUrl: doc.rawUrl,\n type: 'page',\n }\"\n >\n {{ doc.tip | translate }}\n <aui-icon icon=\"jump\"></aui-icon>\n </a>\n </div>\n </ng-container>\n </td>\n <td class=\"column\">\n <input\n aui-input\n [readonly]=\"_.readonly\"\n (blur)=\"onBlur()\"\n formControlName=\"1\"\n [auiAutocomplete]=\"valueSuggestion\"\n />\n <aui-autocomplete #valueSuggestion>\n <aui-suggestion\n *ngFor=\"\n let option of _.readonly\n ? null\n : (\n _.config?.options\n | pure: getConfigOption:control.get('0').value\n )?.values\n \"\n [value]=\"option.value\"\n >\n {{ option.value }}\n <div\n *ngIf=\"option.tip | translate as tip\"\n class=\"tw-text-help-text tw-text-s\"\n >\n {{ tip }}\n </div>\n </aui-suggestion>\n </aui-autocomplete>\n <div\n *ngIf=\"\n (\n _.config?.options\n | pure: getActiveConfigOption:control.get('0').value\n )?.value as valueConfig\n \"\n class=\"tw-text-help-text tw-text-s\"\n >\n <div\n *ngIf=\"control.get('1').value === valueConfig.example\"\n class=\"tw-text-yellow tw-mt-4\"\n >\n {{ 'read_filling_instructions_tip' | translate }}\n </div>\n <div class=\"tw-break-all tw-my-4\">\n {{ valueConfig.tip | translate: { example: valueConfig.example } }}\n <aui-icon\n class=\"tw-text-primary tw-cursor-pointer\"\n icon=\"arrow_turn_up\"\n (click)=\"control.get('1').setValue(valueConfig.example)\"\n ></aui-icon>\n </div>\n <a\n [href]=\"valueConfig.docLink\"\n rel=\"noopener noreferrer\"\n target=\"_blank\"\n >\n {{ 'filling_instructions' | translate }}\n <aui-icon icon=\"jump\"></aui-icon>\n </a>\n </div>\n </td>\n </ng-container>\n </ng-container>\n\n <ng-container *aclArrayFormTableRowError=\"let control\">\n <td\n *ngIf=\"control.invalid\"\n colspan=\"3\"\n class=\"acl-table-form-error-hint\"\n >\n <ng-container *ngIf=\"control.errors?.keyIsMissing\">\n {{ 'k8s_resource_label_key_required' | translate }}\n </ng-container>\n\n <ng-container *ngIf=\"control.errors?.duplicateError\">\n {{ 'k8s_resource_label_key_duplicated' | translate }}\n </ng-container>\n\n <acl-errors-mapper\n auiFormItemError\n [errors]=\"control.get('0').errors\"\n [errorsMapper]=\"(annotationsErrorsMapper | async).key\"\n ></acl-errors-mapper>\n <acl-errors-mapper\n auiFormItemError\n [errors]=\"control.get('1').errors\"\n ></acl-errors-mapper>\n </td>\n </ng-container>\n\n <ng-container *aclArrayFormTableRowControl=\"let item; let index = index\">\n <button\n aui-button=\"text\"\n type=\"button\"\n [square]=\"true\"\n [plain]=\"true\"\n [disabled]=\"isLabelReadonly(item)\"\n (click)=\"remove(index)\"\n >\n <aui-icon icon=\"minus_circle\"></aui-icon>\n </button>\n </ng-container>\n</acl-array-form-table>\n\n<ng-content></ng-content>\n\n<div\n *ngIf=\"KNOWN_ANNOTATIONS[clusterType] as config\"\n class=\"tw-text-help-text tw-text-s tw-mt-4\"\n>\n <ng-container [aclTranslate]=\"'documentation_for_lb_service_annotations'\">\n <ng-container *aclTranslateText=\"let text\">{{ text }}</ng-container>\n <ng-container *aclTranslateMatch=\"'type'\">{{ config.label }}</ng-container>\n <a\n *aclTranslateMatch=\"'documentation'\"\n [href]=\"config.docLink\"\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n >\n {{ 'documentation' | translate }}\n <aui-icon icon=\"jump\"></aui-icon> </a\n ></ng-container>\n</div>\n", styles: [":host{flex:1}.column{width:50%;vertical-align:top}\n"] }]
|
|
668
|
-
}],
|
|
660
|
+
], template: "<acl-array-form-table\n [formGroup]=\"$any(form)\"\n [rows]=\"form.controls\"\n (add)=\"form.push(createNewControl())\"\n (remove)=\"remove($event)\"\n [resourceName]=\"resourceName\"\n>\n <ng-container *aclArrayFormTableHeader>\n <th class=\"column\">{{ 'key' | translate }}</th>\n <th class=\"column\">{{ 'value' | translate }}</th>\n </ng-container>\n\n <ng-container\n *aclArrayFormTableRow=\"let control; let index = index\"\n [formGroupName]=\"index\"\n >\n <ng-container\n *ngIf=\"{\n config: KNOWN_ANNOTATIONS[clusterType],\n readonly: isLabelReadonly(control)\n } as _\"\n >\n <td class=\"column\">\n <input\n aui-input\n [readonly]=\"_.readonly\"\n (blur)=\"onBlur()\"\n formControlName=\"0\"\n [auiAutocomplete]=\"keySuggestion\"\n (auiAutocompleteSelected)=\"onKeySelected(control)\"\n />\n <aui-autocomplete #keySuggestion>\n <aui-suggestion\n *ngFor=\"\n let option of _.readonly\n ? null\n : filterOptions(_.config?.options, index)\n \"\n [value]=\"option.key\"\n >\n {{ option.key }}\n <div\n *ngIf=\"option.tip | translate as tip\"\n class=\"tw-text-help-text tw-text-s\"\n >\n {{ tip }}\n </div>\n </aui-suggestion>\n </aui-autocomplete>\n <ng-container\n *ngIf=\"\n (\n _.config?.options\n | pure: getActiveConfigOption:control.get('0').value\n )?.doc as doc\n \"\n >\n <div\n *ngIf=\"baseHref | pure: showDocLink:doc.product\"\n class=\"tw-text-help-text tw-text-s tw-mt-4\"\n >\n <ng-container *ngIf=\"doc.tipPrefix\">\n {{ doc.tipPrefix | translate }}\n </ng-container>\n <a\n [aclDocs]=\"{\n path: doc.path,\n rawUrl: doc.rawUrl,\n type: 'page',\n }\"\n >\n {{ doc.tip | translate }}\n <aui-icon icon=\"jump\"></aui-icon>\n </a>\n </div>\n </ng-container>\n </td>\n <td class=\"column\">\n <input\n aui-input\n [readonly]=\"_.readonly\"\n (blur)=\"onBlur()\"\n formControlName=\"1\"\n [auiAutocomplete]=\"valueSuggestion\"\n />\n <aui-autocomplete #valueSuggestion>\n <aui-suggestion\n *ngFor=\"\n let option of _.readonly\n ? null\n : (\n _.config?.options\n | pure: getConfigOption:control.get('0').value\n )?.values\n \"\n [value]=\"option.value\"\n >\n {{ option.value }}\n <div\n *ngIf=\"option.tip | translate as tip\"\n class=\"tw-text-help-text tw-text-s\"\n >\n {{ tip }}\n </div>\n </aui-suggestion>\n </aui-autocomplete>\n <div\n *ngIf=\"\n (\n _.config?.options\n | pure: getActiveConfigOption:control.get('0').value\n )?.value as valueConfig\n \"\n class=\"tw-text-help-text tw-text-s\"\n >\n <div\n *ngIf=\"control.get('1').value === valueConfig.example\"\n class=\"tw-text-yellow tw-mt-4\"\n >\n {{ 'network.read_filling_instructions_tip' | translate }}\n </div>\n <div class=\"tw-break-all tw-my-4\">\n {{ valueConfig.tip | translate: { example: valueConfig.example } }}\n <aui-icon\n class=\"tw-text-primary tw-cursor-pointer\"\n icon=\"arrow_turn_up\"\n (click)=\"control.get('1').setValue(valueConfig.example)\"\n ></aui-icon>\n </div>\n <a\n [href]=\"valueConfig.docLink\"\n rel=\"noopener noreferrer\"\n target=\"_blank\"\n >\n {{ 'network.filling_instructions' | translate }}\n <aui-icon icon=\"jump\"></aui-icon>\n </a>\n </div>\n </td>\n </ng-container>\n </ng-container>\n\n <ng-container *aclArrayFormTableRowError=\"let control\">\n <td\n *ngIf=\"control.invalid\"\n colspan=\"3\"\n class=\"acl-table-form-error-hint\"\n >\n <ng-container *ngIf=\"control.errors?.keyIsMissing\">\n {{ 'k8s_resource_label_key_required' | translate }}\n </ng-container>\n\n <ng-container *ngIf=\"control.errors?.duplicateError\">\n {{ 'k8s_resource_label_key_duplicated' | translate }}\n </ng-container>\n\n <acl-errors-mapper\n auiFormItemError\n [errors]=\"control.get('0').errors\"\n [errorsMapper]=\"(annotationsErrorsMapper | async).key\"\n ></acl-errors-mapper>\n <acl-errors-mapper\n auiFormItemError\n [errors]=\"control.get('1').errors\"\n ></acl-errors-mapper>\n </td>\n </ng-container>\n\n <ng-container *aclArrayFormTableRowControl=\"let item; let index = index\">\n <button\n aui-button=\"text\"\n type=\"button\"\n [square]=\"true\"\n [plain]=\"true\"\n [disabled]=\"isLabelReadonly(item)\"\n (click)=\"remove(index)\"\n >\n <aui-icon icon=\"minus_circle\"></aui-icon>\n </button>\n </ng-container>\n</acl-array-form-table>\n\n<ng-content></ng-content>\n\n<div\n *ngIf=\"KNOWN_ANNOTATIONS[clusterType] as config\"\n class=\"tw-text-help-text tw-text-s tw-mt-4\"\n>\n <ng-container [aclTranslate]=\"'documentation_for_lb_service_annotations'\">\n <ng-container *aclTranslateText=\"let text\">{{ text }}</ng-container>\n <ng-container *aclTranslateMatch=\"'type'\">{{ config.label }}</ng-container>\n <a\n *aclTranslateMatch=\"'documentation'\"\n [href]=\"config.docLink\"\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n >\n {{ 'documentation' | translate }}\n <aui-icon icon=\"jump\"></aui-icon> </a\n ></ng-container>\n</div>\n", styles: [":host{flex:1}.column{width:50%;vertical-align:top}\n"] }]
|
|
661
|
+
}], () => [{ type: i0.Injector }, { type: undefined, decorators: [{
|
|
669
662
|
type: Inject,
|
|
670
663
|
args: [TOKEN_BASE_DOMAIN]
|
|
671
|
-
}] }]
|
|
664
|
+
}] }], { isUpdate: [{
|
|
672
665
|
type: Input,
|
|
673
666
|
args: [{ required: true }]
|
|
674
667
|
}], clusterType: [{
|
|
@@ -678,4 +671,5 @@ export class ServiceAnnotationsFormComponent extends BaseStringMapFormComponent
|
|
|
678
671
|
type: Input,
|
|
679
672
|
args: [{ required: true }]
|
|
680
673
|
}] }); })();
|
|
681
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5ub3RhdGlvbnMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbW9kdWxlcy9uZXR3b3JrL3NyYy9saWIvY29tcG9uZW50cy9zZXJ2aWNlLWFubm90YXRpb25zLWZvcm0vYW5ub3RhdGlvbnMuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbW9kdWxlcy9uZXR3b3JrL3NyYy9saWIvY29tcG9uZW50cy9zZXJ2aWNlLWFubm90YXRpb25zLWZvcm0vYW5ub3RhdGlvbnMuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLGtCQUFrQixFQUNsQixZQUFZLEVBQ1osVUFBVSxFQUNWLFdBQVcsR0FDWixNQUFNLFlBQVksQ0FBQztBQUNwQixPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLDZCQUE2QixFQUM3QixpQ0FBaUMsRUFDakMsMEJBQTBCLEVBQzFCLCtCQUErQixFQUMvQiwwQkFBMEIsRUFFMUIsa0JBQWtCLEVBQ2xCLEtBQUssRUFDTCxrQkFBa0IsRUFFbEIsUUFBUSxFQUVSLGlCQUFpQixFQUNqQixlQUFlLEVBQ2YsSUFBSSxFQUVKLGVBQWUsRUFDZixnQkFBZ0IsRUFDaEIsb0NBQW9DLEVBQ3BDLGlDQUFpQyxHQUNsQyxNQUFNLG1CQUFtQixDQUFDO0FBQzNCLE9BQU8sRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzNELE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULE1BQU0sRUFDTixRQUFRLEVBQ1IsS0FBSyxFQUNMLE1BQU0sR0FDUCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQTBCLG1CQUFtQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0UsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUVuQyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1B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QUFNLGNBQ25DLElBQUksV0FDUDtvQkFDUCxTQUFTO29CQUNULElBQUk7b0JBQ0osT0FBTztvQkFDUCxtQkFBbUI7b0JBQ25CLGVBQWU7b0JBQ2Ysa0JBQWtCO29CQUNsQixZQUFZO29CQUNaLFVBQVU7b0JBQ1YsV0FBVztvQkFDWCx1QkFBdUI7b0JBQ3ZCLDZCQUE2QjtvQkFDN0IsMEJBQTBCO29CQUMxQixpQ0FBaUM7b0JBQ2pDLCtCQUErQjtvQkFDL0Isa0JBQWtCO29CQUNsQixrQkFBa0I7b0JBQ2xCLFFBQVE7aUJBQ1Q7O3NCQTJCRSxNQUFNO3VCQUFDLGlCQUFpQjt3QkF2QjNCLFFBQVE7a0JBRFAsS0FBSzttQkFBQyxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUU7WUFJekIsV0FBVztrQkFEVixLQUFLO21CQUFDLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRTtZQUl6QixZQUFZO2tCQURYLEtBQUs7bUJBQUMsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQXV0b2NvbXBsZXRlTW9kdWxlLFxuICBCdXR0b25Nb2R1bGUsXG4gIEljb25Nb2R1bGUsXG4gIElucHV0TW9kdWxlLFxufSBmcm9tICdAYWxhdWRhL3VpJztcbmltcG9ydCB7XG4gIEFycmF5Rm9ybVRhYmxlQ29tcG9uZW50LFxuICBBcnJheUZvcm1UYWJsZUhlYWRlckRpcmVjdGl2ZSxcbiAgQXJyYXlGb3JtVGFibGVSb3dDb250cm9sRGlyZWN0aXZlLFxuICBBcnJheUZvcm1UYWJsZVJvd0RpcmVjdGl2ZSxcbiAgQXJyYXlGb3JtVGFibGVSb3dFcnJvckRpcmVjdGl2ZSxcbiAgQmFzZVN0cmluZ01hcEZvcm1Db21wb25lbnQsXG4gIEtleVZhbHVlVHVwbGUsXG4gIEVycm9yc01hcHBlck1vZHVsZSxcbiAgRkFMU0UsXG4gIEhlbHBEb2N1bWVudE1vZHVsZSxcbiAgTG9jYWxlLFxuICBQdXJlUGlwZSxcbiAgU3RyaW5nTWFwLFxuICBUT0tFTl9CQVNFX0RPTUFJTixcbiAgVE9LRU5fQkFTRV9IUkVGLFxuICBUUlVFLFxuICBUcmFuc2xhdGVLZXksXG4gIFRyYW5zbGF0ZU1vZHVsZSxcbiAgVHJhbnNsYXRlU2VydmljZSxcbiAgZ2V0SzhzUmVzb3VyY2VBbm5vdGF0aW9uRXJyb3JNYXBwZXIkLFxuICBrOHNSZXNvdXJjZUFubm90YXRpb25LZXlWYWxpZGF0b3IsXG59IGZyb20gJ0BhbGF1ZGEtZmUvY29tbW9uJztcbmltcG9ydCB7IEFzeW5jUGlwZSwgTmdGb3JPZiwgTmdJZiB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge1xuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ29tcG9uZW50LFxuICBJbmplY3QsXG4gIEluamVjdG9yLFxuICBJbnB1dCxcbiAgaW5qZWN0LFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvcm1BcnJheSwgRm9ybUNvbnRyb2wsIFJlYWN0aXZlRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBzb3J0QnkgfSBmcm9tICdsb2Rhc2gtZXMnO1xuXG5pbXBvcnQgeyBDbHVzdGVyVHlwZSB9IGZyb20gJy4uLy4uL3V0aWxzL2NsdXN0ZXItZXhwb3J0cyc7XG5cbmVudW0gUFJPRFVDVF9CQVNFX0hSRUZfTUFQIHtcbiAgZGV2b3BzID0gJy9jb25zb2xlLWRldm9wcy8nLFxuICBhY3AgPSAnL2NvbnNvbGUtYWNwLycsXG4gIGFzbSA9ICcvY29uc29sZS1hc20vJyxcbiAgZGF0YXNlcnZpY2VzID0gJy9jb25zb2xlLWRhdGFzZXJ2aWNlcy8nLFxuICBjZWMgPSAnL2NvbnNvbGUtY2VjLycsXG4gIHBsYXRmb3JtID0gJy9jb25zb2xlLXBsYXRmb3JtLycsXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQW5ub3RhdGlvbkNvbmZpZ09wdGlvbiB7XG4gIGtleTogc3RyaW5nO1xuICB0aXA6IFRyYW5zbGF0ZUtleTxMb2NhbGU+O1xuICBkb2M/OiB7XG4gICAgdGlwOiBUcmFuc2xhdGVLZXk8TG9jYWxlPjtcbiAgICB0aXBQcmVmaXg/OiBUcmFuc2xhdGVLZXk8TG9jYWxlPjtcbiAgICBwYXRoPzogc3RyaW5nOyAvLyDmoIflh4bmlofmoaPpk77mjqUsIOWvueW6lCBEb2NzT3B0aW9uLnBhdGhcbiAgICByYXdVcmw/OiBzdHJpbmc7IC8vIOmdnuagh+WHhuaWh+aho+mTvuaOpSwg5a+55bqUIERvY3NPcHRpb24ucmF3VXJsXG4gICAgcHJvZHVjdD86IGtleW9mIHR5cGVvZiBQUk9EVUNUX0JBU0VfSFJFRl9NQVA7XG4gIH07XG4gIHZhbHVlPzoge1xuICAgIGV4YW1wbGU6IHN0cmluZztcbiAgICB0aXA6IFRyYW5zbGF0ZUtleTxMb2NhbGU+O1xuICAgIGRvY0xpbms6IHN0cmluZztcbiAgfTtcbiAgdmFsdWVzPzogQXJyYXk8e1xuICAgIHZhbHVlOiBzdHJpbmc7XG4gICAgdGlwPzogVHJhbnNsYXRlS2V5PExvY2FsZT47XG4gIH0+O1xufVxuXG5leHBvcnQgY29uc3QgS05PV05fQU5OT1RBVElPTlM6IFBhcnRpYWw8XG4gIFJlY29yZDxcbiAgICBDbHVzdGVyVHlwZSxcbiAgICB7XG4gICAgICBsYWJlbDogc3RyaW5nO1xuICAgICAgZG9jTGluazogc3RyaW5nO1xuICAgICAgb3B0aW9uczogQW5ub3RhdGlvbkNvbmZpZ09wdGlvbltdO1xuICAgIH1cbiAgPlxuPiA9IHtcbiAgW0NsdXN0ZXJUeXBlLkF6dXJlQUtTXToge1xuICAgIGxhYmVsOiAnQUtTJyxcbiAgICBkb2NMaW5rOlxuICAgICAgJ2h0dHBzOi8vY2xvdWQtcHJvdmlkZXItYXp1cmUuc2lncy5rOHMuaW8vdG9waWNzL2xvYWRiYWxhbmNlci8jbG9hZGJhbGFuY2VyLWFubm90YXRpb25zJyxcbiAgICBvcHRpb25zOiBbXG4gICAgICB7XG4gICAgICAgIGtleTogJ3NlcnZpY2UuYmV0YS5rdWJlcm5ldGVzLmlvL2F6dXJlLWxvYWQtYmFsYW5jZXItaW50ZXJuYWwnLFxuICAgICAgICB0aXA6IHtcbiAgICAgICAgICBlbjogJ1NwZWNpZnkgdGhlIHVzZSBvZiBpbnRyYW5ldC9wdWJsaWMgbmV0d29yaycsXG4gICAgICAgICAgemg6ICfmjIflrprkvb/nlKjlhoXnvZEv5YWs572RJyxcbiAgICAgICAgfSxcbiAgICAgICAgdmFsdWVzOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgdmFsdWU6IFRSVUUsXG4gICAgICAgICAgICB0aXA6IHtcbiAgICAgICAgICAgICAgZW46ICdJbnRyYW5ldCcsXG4gICAgICAgICAgICAgIHpoOiAn5YaF572RJyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICB2YWx1ZTogRkFMU0UsXG4gICAgICAgICAgICB0aXA6IHtcbiAgICAgICAgICAgICAgZW46ICdQdWJsaWMgbmV0d29yaycsXG4gICAgICAgICAgICAgIHpoOiAn5YWs572RJyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICAgIH0sXG4gICAgXSxcbiAgfSxcbiAgW0NsdXN0ZXJUeXBlLkFtYXpvbkVLU106IHtcbiAgICBsYWJlbDogJ0VLUycsXG4gICAgZG9jTGluazpcbiAgICAgICdodHRwczovL2t1YmVybmV0ZXMtc2lncy5naXRodWIuaW8vYXdzLWxvYWQtYmFsYW5jZXItY29udHJvbGxlci92Mi41L2d1aWRlL3NlcnZpY2UvYW5ub3RhdGlvbnMvJyxcbiAgICBvcHRpb25zOiBbXG4gICAgICB7XG4gICAgICAgIGtleTogJ3NlcnZpY2UuYmV0YS5rdWJlcm5ldGVzLmlvL2F3cy1sb2FkLWJhbGFuY2VyLXR5cGUnLFxuICAgICAgICB0aXA6IHtcbiAgICAgICAgICBlbjogJ1NwZWNpZnkgdGhlIExvYWRCYWxhbmNlciBTZXJ2aWNlIENvbnRyb2xsZXIgaW4gdXNlJyxcbiAgICAgICAgICB6aDogJ+aMh+WumuaJgOS9v+eUqOeahCBMb2FkQmFsYW5jZXIg57G75Z6L5YaF6YOo6Lev55Sx5o6n5Yi25ZmoJyxcbiAgICAgICAgfSxcbiAgICAgICAgZG9jOiB7XG4gICAgICAgICAgdGlwOiB7XG4gICAgICAgICAgICBlbjogJ0NvbnRyb2xsZXIgSW5zdGFsbGF0aW9uJyxcbiAgICAgICAgICAgIHpoOiAn5o6n5Yi25Zmo5a6J6KOFJyxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHByb2R1Y3Q6ICdwbGF0Zm9ybScsXG4gICAgICAgICAgcGF0aDogJ3BsYXRmb3JtLXVzZXJtYW51YWwvY2x1c3RlcmFsbC8xY2x1c3Rlci9jbG91ZGluaXQvbmV0d29yazEvZWtzaW5ncmVzc2NvbnRyb2xsZXIvIzInLFxuICAgICAgICB9LFxuICAgICAgICB2YWx1ZXM6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICB2YWx1ZTogJ2V4dGVybmFsJyxcbiAgICAgICAgICAgIHRpcDoge1xuICAgICAgICAgICAgICBlbjogJ1VzaW5nIHRoZSBvZmZpY2lhbCBBV1MgTG9hZEJhbGFuY2VyIENvbnRyb2xsZXInLFxuICAgICAgICAgICAgICB6aDogJ+S9v+eUqCBBV1Mg5a6Y5pa555qEIEFXUyBMb2FkQmFsYW5jZXIgQ29udHJvbGxlcicsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH0sXG4gICAgICAgIF0sXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBrZXk6ICdzZXJ2aWNlLmJldGEua3ViZXJuZXRlcy5pby9hd3MtbG9hZC1iYWxhbmNlci1ubGItdGFyZ2V0LXR5cGUnLFxuICAgICAgICB0aXA6IHtcbiAgICAgICAgICBlbjogJ1NwZWNpZnkgdGhlIHdheSB0cmFmZmljIGlzIGRlbGl2ZXJlZCB0byB0aGUgcG9kcycsXG4gICAgICAgICAgemg6ICfmjIflrprmtYHph4/pgIHovr7lrrnlmajnu4TnmoTmlrnlvI8nLFxuICAgICAgICB9LFxuICAgICAgICB2YWx1ZXM6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICB2YWx1ZTogJ2luc3RhbmNlJyxcbiAgICAgICAgICAgIHRpcDoge1xuICAgICAgICAgICAgICBlbjogJ1RyYWZmaWMgd2lsbCBiZSBzZW50IHRvIHRoZSBwb2RzIHZpYSBOb2RlUG9ydCcsXG4gICAgICAgICAgICAgIHpoOiAn5rWB6YeP5bCG6YCa6L+HIE5vZGVQb3J0IOmAgeW+gOWuueWZqOe7hCcsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgdmFsdWU6ICdpcCcsXG4gICAgICAgICAgICB0aXA6IHtcbiAgICAgICAgICAgICAgZW46ICdUcmFmZmljIGlzIGRpcmVjdGx5IHJvdXRlZCB0byB0aGUgcG9kcyAoQW1hem9uIFZQQyBDTkkgaXMgcmVxdWlyZWQgZm9yIHRoZSBjbHVzdGVyKScsXG4gICAgICAgICAgICAgIHpoOiAn5rWB6YeP55u05o6l6Lev55Sx5Yiw5a655Zmo57uE77yI6ZuG576k6ZyA5L2/55SoIEFtYXpvbiBWUEMgQ05J77yJJyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGtleTogJ3NlcnZpY2UuYmV0YS5rdWJlcm5ldGVzLmlvL2F3cy1sb2FkLWJhbGFuY2VyLXNjaGVtZScsXG4gICAgICAgIHRpcDoge1xuICAgICAgICAgIGVuOiAnU3BlY2lmeSB0aGUgdXNlIG9mIGludHJhbmV0L3B1YmxpYyBuZXR3b3JrJyxcbiAgICAgICAgICB6aDogJ+aMh+WumuS9v+eUqOWGhee9kS/lhaznvZEnLFxuICAgICAgICB9LFxuICAgICAgICB2YWx1ZXM6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICB2YWx1ZTogJ2ludGVybmFsJyxcbiAgICAgICAgICAgIHRpcDoge1xuICAgICAgICAgICAgICBlbjogJ0ludHJhbmV0JyxcbiAgICAgICAgICAgICAgemg6ICflhoXnvZEnLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHZhbHVlOiAnaW50ZXJuZXQtZmFjaW5nJyxcbiAgICAgICAgICAgIHRpcDoge1xuICAgICAgICAgICAgICBlbjogJ1B1YmxpYyBuZXR3b3JrJyxcbiAgICAgICAgICAgICAgemg6ICflhaznvZEnLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9LFxuICAgICAgICBdLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAga2V5OiAnc2VydmljZS5iZXRhLmt1YmVybmV0ZXMuaW8vYXdzLWxvYWQtYmFsYW5jZXItaXAtYWRkcmVzcy10eXBlJyxcbiAgICAgICAgdGlwOiB7XG4gICAgICAgICAgZW46ICdTcGVjaWZ5IHRoZSBzdXBwb3J0ZWQgSVAgcHJvdG9jb2wgc3RhY2snLFxuICAgICAgICAgIHpoOiAn5oyH5a6a5pSv5oyB55qEIElQIOWNj+iuruagiCcsXG4gICAgICAgIH0sXG4gICAgICAgIHZhbHVlczogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIHZhbHVlOiAnaXB2NCcsXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICB2YWx1ZTogJ2R1YWxzdGFjaycsXG4gICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICAgIH0sXG4gICAgXSxcbiAgfSxcbiAgW0NsdXN0ZXJUeXBlLkh1YXdlaUNsb3VkQ0NFXToge1xuICAgIGxhYmVsOiAnQ0NFJyxcbiAgICBkb2NMaW5rOlxuICAgICAgJ2h0dHBzOi8vc3VwcG9ydC5odWF3ZWljbG91ZC5jb20vaW50bC9lbi11cy91c2VybWFudWFsLWNjZS9jY2VfMTBfMDM4NS5odG1sJyxcbiAgICBvcHRpb25zOiBbXG4gICAgICB7XG4gICAgICAgIGtleTogJ2t1YmVybmV0ZXMuaW8vZWxiLmlkJyxcbiAgICAgICAgdGlwOiB7XG4gICAgICAgICAgZW46ICdQbGVhc2UgcHJvdmlkZSB0aGUgSUQgb2YgdGhlIGNsb3VkIExvYWRCYWxhbmNlciwgWW91IHNob3VsZCB1c2UgYW4gZXhpc3RpbmcgY2xvdWQgTG9hZEJhbGFuY2VyLicsXG4gICAgICAgICAgemg6ICfloavlhpnkupHkuIrotJ/ovb3lnYfooaHlmajnmoQgSUTvvIzpnIDkvb/nlKjlt7LmnInkupHkuIrotJ/ovb3lnYfooaHlmagnLFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAga2V5OiAna3ViZXJuZXRlcy5pby9lbGIuYXV0b2NyZWF0ZScsXG4gICAgICAgIHRpcDoge1xuICAgICAgICAgIGVuOiAnQ3JlYXRlIGEgbmV3IGNsb3VkIExvYWRCYWxhbmNlcicsXG4gICAgICAgICAgemg6ICfmlrDliJvlu7rkupHkuIrotJ/ovb3lnYfooaHlmagnLFxuICAgICAgICB9LFxuICAgICAgICB2YWx1ZToge1xuICAgICAgICAgIGV4YW1wbGU6IGB7XCJ0eXBlXCI6XCJwdWJsaWNcIixcImJhbmR3aWR0aF9uYW1lXCI6XCJjY2UtYmFuZHdpZHRoLTE1NTExNjMzNzk2MjdcIixcImJhbmR3aWR0aF9jaGFyZ2Vtb2RlXCI6XCJiYW5kd2lkdGhcIixcImJhbmR3aWR0aF9zaXplXCI6NSxcImJhbmR3aWR0aF9zaGFyZXR5cGVcIjpcIlBFUlwiLFwiZWlwX3R5cGVcIjpcIjVfYmdwXCIsXCJhdmFpbGFibGVfem9uZVwiOltcImNuLW5vcnRoLTRiXCJdLFwibDRfZmxhdm9yX25hbWVcIjpcIkw0X2ZsYXZvci5lbGIuczEuc21hbGxcIn1gLFxuICAgICAgICAgIHRpcDoge1xuICAgICAgICAgICAgZW46ICdGb3IgZXhhbXBsZToge3sgZXhhbXBsZSB9fScsXG4gICAgICAgICAgICB6aDogJ+S+i+Wmgu+8mnt7IGV4YW1wbGUgfX0nLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgZG9jTGluazpcbiAgICAgICAgICAgICdodHRwczovL3N1cHBvcnQuaHVhd2VpY2xvdWQuY29tL2ludGwvZW4tdXMvdXNlcm1hbnVhbC1jY2UvY2NlXzEwXzAzODUuaHRtbCNzZWN0aW9uOCcsXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBrZXk6ICdrdWJlcm5ldGVzLmlvL2VsYi5zdWJuZXQtaWQnLFxuICAgICAgICB0aXA6IHtcbiAgICAgICAgICBlbjogJ1N1Ym5ldCBJRCBvZiB0aGUgY2x1c3Rlciwgd2hpY2ggaXMgcmVxdWlyZWQgd2hlbiBjcmVhdGluZyBhIG5ldyBjbG91ZCBMb2FkQmFsYW5jZXIgYW5kIEt1YmVybmV0ZXMgdmVyc2lvbiBpcyAxLjExLjctcjAgYW5kIGJlbG93LicsXG4gICAgICAgICAgemg6ICfpm4bnvqTmiYDlnKjlrZDnvZHnmoQgSUTvvIzlvZMgS3ViZXJuZXRlcyDniYjmnKzkuLogMS4xMS43LXIwIOWPiuS7peS4i++8jOaWsOWIm+W7uuS6keS4iui0n+i9veWdh+ihoeWZqOaXtuW/hemhu+Whq+WGmeatpOmhuScsXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBrZXk6ICdrdWJlcm5ldGVzLmlvL2VsYi5jbGFzcycsXG4gICAgICAgIHRpcDoge1xuICAgICAgICAgIGVuOiAnU3BlY2lmeSB0aGUgdHlwZSBvZiB0aGUgbmV3bHkgY3JlYXRlZCBjbG91ZCBMb2FkQmFsYW5jZXInLFxuICAgICAgICAgIHpoOiAn5oyH5a6a5paw5Yib5bu655qE5LqR5LiK6LSf6L295Z2H6KGh5Zmo55qE57G75Z6LJyxcbiAgICAgICAgfSxcbiAgICAgICAgZG9jOiB7XG4gICAgICAgICAgdGlwOiB7XG4gICAgICAgICAgICBlbjogJ0RpZmZlcmVuY2VzIEJldHdlZW4gRGVkaWNhdGVkIGFuZCBTaGFyZWQgTG9hZCBCYWxhbmNlcnMnLFxuICAgICAgICAgICAgemg6ICflhbHkuqvlnovlvLnmgKfotJ/ovb3lnYfooaHkuI7ni6zkuqvlnovotJ/ovb3lnYfooaHnmoTlip/og73ljLrliKsnLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgcmF3VXJsOlxuICAgICAgICAgICAgJ2h0dHBzOi8vc3VwcG9ydC5odWF3ZWljbG91ZC5jb20vaW50bC96aC1jbi9wcm9kdWN0ZGVzYy1lbGIvZWxiX3Byb18wMDA0Lmh0bWwnLFxuICAgICAgICAgIHRpcFByZWZpeDoge1xuICAgICAgICAgICAgZW46ICdGb3IgbW9yZSBkZXRhaWxzLCBwbGVhc2UgcmVmZXIgdG8gJyxcbiAgICAgICAgICAgIHpoOiAn6K+m5oOF6K+35Y+C6KeBJyxcbiAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgICB2YWx1ZXM6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICB2YWx1ZTogJ3VuaW9uJyxcbiAgICAgICAgICAgIHRpcDoge1xuICAgICAgICAgICAgICBlbjogJ1NoYXJlZCBMb2FkQmFsYW5jZXInLFxuICAgICAgICAgICAgICB6aDogJ+WFseS6q+Wei+i0n+i9veWdh+ihoScsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgdmFsdWU6ICdwZXJmb3JtYW5jZScsXG4gICAgICAgICAgICB0aXA6IHtcbiAgICAgICAgICAgICAgZW46ICdEZWRpY2F0ZWQgTG9hZEJhbGFuY2VyLCB3aGljaCBjYW4gYmUgdXNlZCBvbmx5IGluIGNsdXN0ZXJzIG9mIHYxLjE3IGFuZCBsYXRlcicsXG4gICAgICAgICAgICAgIHpoOiAn54us5Lqr5Z6L6LSf6L295Z2H6KGh77yM5LuF5pSv5oyB5ZyoIEt1YmVybmV0ZXMg54mI5pys5Li6IDEuMTcg5Y+K5Lul5LiK55qE6ZuG576k5Lit5L2/55SoJyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGtleTogJ2t1YmVybmV0ZXMuaW8vZWxiLmVudGVycHJpc2VJRCcsXG4gICAgICAgIHRpcDoge1xuICAgICAgICAgIGVuOiAnU3BlY2lmeSB0aGUgZW50ZXJwcmlzZSBwcm9qZWN0IHRvIHdoaWNoIHRoZSBuZXdseSBjcmVhdGVkIGNsb3VkIExvYWRCYWxhbmNlciB3aWxsIGJlbG9uZycsXG4gICAgICAgICAgemg6ICfmjIflrprmlrDliJvlu7rkupHkuIrotJ/ovb3lnYfooaHlmajmiYDlsZ7nmoTkvIHkuJrpobnnm64nLFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICBdLFxuICB9LFxuICBbQ2x1c3RlclR5cGUuR29vZ2xlQ2xvdWRHS0VdOiB7XG4gICAgbGFiZWw6ICdHS0UnLFxuICAgIGRvY0xpbms6XG4gICAgICAnaHR0cHM6Ly9jbG91ZC5nb29nbGUuY29tL2t1YmVybmV0ZXMtZW5naW5lL2RvY3MvY29uY2VwdHMvc2VydmljZS1sb2FkLWJhbGFuY2VyLXBhcmFtZXRlcnMnLFxuICAgIG9wdGlvbnM6IFtcbiAgICAgIHtcbiAgICAgICAga2V5OiAnbmV0d29ya2luZy5na2UuaW8vbG9hZC1iYWxhbmNlci10eXBlJyxcbiAgICAgICAgdGlwOiB7XG4gICAgICAgICAgZW46ICdTcGVjaWZ5IHRoZSB1c2Ugb2YgSW50cmFuZXQnLFxuICAgICAgICAgIHpoOiAn5oyH5a6a5L2/55So5YaF572RJyxcbiAgICAgICAgfSxcbiAgICAgICAgdmFsdWVzOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgdmFsdWU6ICdJbnRlcm5hbCcsXG4gICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGtleTogJ2Nsb3VkLmdvb2dsZS5jb20vbDQtcmJzJyxcbiAgICAgICAgdGlwOiB7XG4gICAgICAgICAgZW46ICdUaGUgZGVmYXVsdCBpcyBwdWJsaWMgbmV0d29yaywgd2hlbiB0aGlzIHBhcmFtZXRlciBpcyBjb25maWd1cmVkLCB0cmFmZmljIHdpbGwgYmUgcm91dGVkIGRpcmVjdGx5IHRvIHRoZSBwb2RzJyxcbiAgICAgICAgICB6aDogJ+m7mOiupOS4uuWFrOe9ke+8jOmFjee9ruatpOWPguaVsOaXtu+8jOa1gemHj+WwhuebtOaOpei3r+eUseiHs+WuueWZqOe7hCcsXG4gICAgICAgIH0sXG4gICAgICAgIHZhbHVlczogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIHZhbHVlOiAnZW5hYmxlZCcsXG4gICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICAgIH0sXG4gICAgXSxcbiAgfSxcbn07XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2FjbC1zZXJ2aWNlLWFubm90YXRpb25zLWZvcm0nLFxuICB0ZW1wbGF0ZVVybDogJ2Fubm90YXRpb25zLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJ2Fubm90YXRpb25zLmNvbXBvbmVudC5zY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbXG4gICAgQXN5bmNQaXBlLFxuICAgIE5nSWYsXG4gICAgTmdGb3JPZixcbiAgICBSZWFjdGl2ZUZvcm1zTW9kdWxlLFxuICAgIFRyYW5zbGF0ZU1vZHVsZSxcbiAgICBBdXRvY29tcGxldGVNb2R1bGUsXG4gICAgQnV0dG9uTW9kdWxlLFxuICAgIEljb25Nb2R1bGUsXG4gICAgSW5wdXRNb2R1bGUsXG4gICAgQXJyYXlGb3JtVGFibGVDb21wb25lbnQsXG4gICAgQXJyYXlGb3JtVGFibGVIZWFkZXJEaXJlY3RpdmUsXG4gICAgQXJyYXlGb3JtVGFibGVSb3dEaXJlY3RpdmUsXG4gICAgQXJyYXlGb3JtVGFibGVSb3dDb250cm9sRGlyZWN0aXZlLFxuICAgIEFycmF5Rm9ybVRhYmxlUm93RXJyb3JEaXJlY3RpdmUsXG4gICAgRXJyb3JzTWFwcGVyTW9kdWxlLFxuICAgIEhlbHBEb2N1bWVudE1vZHVsZSxcbiAgICBQdXJlUGlwZSxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgU2VydmljZUFubm90YXRpb25zRm9ybUNvbXBvbmVudCBleHRlbmRzIEJhc2VTdHJpbmdNYXBGb3JtQ29tcG9uZW50IHtcbiAgQElucHV0KHsgcmVxdWlyZWQ6IHRydWUgfSlcbiAgaXNVcGRhdGU6IGJvb2xlYW47XG5cbiAgQElucHV0KHsgcmVxdWlyZWQ6IHRydWUgfSlcbiAgY2x1c3RlclR5cGU6IENsdXN0ZXJUeXBlO1xuXG4gIEBJbnB1dCh7IHJlcXVpcmVkOiB0cnVlIH0pXG4gIHJlc291cmNlTmFtZTogc3RyaW5nO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgdHJhbnNsYXRlID0gaW5qZWN0KFRyYW5zbGF0ZVNlcnZpY2UpO1xuXG4gIHByb3RlY3RlZCByZWFkb25seSBiYXNlSHJlZiA9IGluamVjdChUT0tFTl9CQVNFX0hSRUYpO1xuXG4gIC8vIOemgeeUqOaOieWMheWQqyBjcGFhcy5pbyDlj4ogb3ZuLmt1YmVybmV0ZXMuaW8g55qEIGtleVxuICByZWFkb25seSByZWFkb25seVBhcnRpYWxLZXlzID0gWydvdm4ua3ViZXJuZXRlcy5pbycsIHRoaXMuYmFzZURvbWFpbl07XG5cbiAgYW5ub3RhdGlvbnNFcnJvcnNNYXBwZXIgPSBnZXRLOHNSZXNvdXJjZUFubm90YXRpb25FcnJvck1hcHBlciQoXG4gICAgdGhpcy50cmFuc2xhdGUsXG4gICk7XG5cbiAgS05PV05fQU5OT1RBVElPTlMgPSBLTk9XTl9BTk5PVEFUSU9OUztcblxuICBjb25zdHJ1Y3RvcihcbiAgICBpbmplY3RvcjogSW5qZWN0b3IsXG4gICAgQEluamVjdChUT0tFTl9CQVNFX0RPTUFJTikgcHJpdmF0ZSByZWFkb25seSBiYXNlRG9tYWluOiBzdHJpbmcsXG4gICkge1xuICAgIHN1cGVyKGluamVjdG9yKTtcbiAgfVxuXG4gIGZpbHRlck9wdGlvbnMob3B0aW9uczogQW5ub3RhdGlvbkNvbmZpZ09wdGlvbltdIHwgdW5kZWZpbmVkLCBpbmRleDogbnVtYmVyKSB7XG4gICAgY29uc3Qga2V5cyA9ICh0aGlzLmZvcm0udmFsdWUgYXMgS2V5VmFsdWVUdXBsZVtdKS5tYXAoKFtrZXldKSA9PiBrZXkpO1xuICAgIHJldHVybiBvcHRpb25zPy5maWx0ZXIobyA9PiB7XG4gICAgICBjb25zdCBrZXlJbmRleCA9IGtleXMuaW5kZXhPZihvLmtleSk7XG4gICAgICByZXR1cm4ga2V5SW5kZXggPT09IC0xIHx8IGtleUluZGV4ID09PSBpbmRleDtcbiAgICB9KTtcbiAgfVxuXG4gIGdldENvbmZpZ09wdGlvbihvcHRpb25zOiBBbm5vdGF0aW9uQ29uZmlnT3B0aW9uW10gfCB1bmRlZmluZWQsIGtleTogc3RyaW5nKSB7XG4gICAgcmV0dXJuIG9wdGlvbnM/LmZpbmQob3B0aW9uID0+IG9wdGlvbi5rZXkgPT09IGtleSk7XG4gIH1cblxuICBpc1JlYWRvbmx5KGtleTogc3RyaW5nKSB7XG4gICAgcmV0dXJuIHRoaXMuaXNVcGRhdGUgJiYgdGhpcy5yZWFkb25seVBhcnRpYWxLZXlzLnNvbWUoayA9PiBrZXkuaW5jbHVkZXMoaykpO1xuICB9XG5cbiAgb3ZlcnJpZGUgZ2V0RGVmYXVsdEZvcm1Nb2RlbCgpOiBLZXlWYWx1ZVR1cGxlW10ge1xuICAgIHJldHVybiBbWycnLCAnJ11dO1xuICB9XG5cbiAgb3ZlcnJpZGUgYWRhcHRSZXNvdXJjZU1vZGVsKHJlc291cmNlOiBTdHJpbmdNYXApIHtcbiAgICBsZXQgbmV3Rm9ybU1vZGVsID0gT2JqZWN0LmVudHJpZXMocmVzb3VyY2UgfHwge30pO1xuICAgIC8vIOaOkuW6j++8jOWFiOaMieWtl+avjeaOkuW6j++8jOWGjeaKiiByZWFkb25seSDnmoTmlL7liY3pnaJcbiAgICBuZXdGb3JtTW9kZWwgPSBzb3J0QnkobmV3Rm9ybU1vZGVsLCAoYXJyOiBbc3RyaW5nLCBzdHJpbmddKSA9PiBhcnJbMF0pO1xuICAgIG5ld0Zvcm1Nb2RlbC5zb3J0KChhcnIxOiBbc3RyaW5nLCBzdHJpbmddLCBhcnIyOiBbc3RyaW5nLCBzdHJpbmddKSA9PiB7XG4gICAgICBjb25zdCBmbGFnMSA9IHRoaXMuaXNSZWFkb25seShhcnIxWzBdKTtcbiAgICAgIGNvbnN0IGZsYWcyID0gdGhpcy5pc1JlYWRvbmx5KGFycjJbMF0pO1xuICAgICAgaWYgKChmbGFnMSAmJiBmbGFnMikgfHwgKCFmbGFnMSAmJiAhZmxhZzIpKSB7XG4gICAgICAgIHJldHVybiAwO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGZsYWcxID8gLTEgOiAxO1xuICAgIH0pO1xuXG4gICAgaWYgKG5ld0Zvcm1Nb2RlbC5sZW5ndGggPT09IDApIHtcbiAgICAgIG5ld0Zvcm1Nb2RlbCA9IHRoaXMuZ2V0RGVmYXVsdEZvcm1Nb2RlbCgpO1xuICAgIH1cblxuICAgIHJldHVybiBuZXdGb3JtTW9kZWw7XG4gIH1cblxuICBvdmVycmlkZSBnZXRLZXlWYWxpZGF0b3JzKCkge1xuICAgIHJldHVybiBrOHNSZXNvdXJjZUFubm90YXRpb25LZXlWYWxpZGF0b3I7XG4gIH1cblxuICBpc0xhYmVsUmVhZG9ubHkoY29udHJvbDogRm9ybUFycmF5PEZvcm1Db250cm9sPHN0cmluZz4+KSB7XG4gICAgcmV0dXJuIGNvbnRyb2wudmFsaWQgJiYgdGhpcy5pc1JlYWRvbmx5KGNvbnRyb2wuZ2V0KCcwJykudmFsdWUpO1xuICB9XG5cbiAgZ2V0QWN0aXZlQ29uZmlnT3B0aW9uKFxuICAgIG9wdGlvbnM6IEFubm90YXRpb25Db25maWdPcHRpb25bXSB8IHVuZGVmaW5lZCxcbiAgICBrZXk6IHN0cmluZyxcbiAgKSB7XG4gICAgcmV0dXJuIG9wdGlvbnM/LmZpbmQobyA9PiBvLmtleSA9PT0ga2V5KTtcbiAgfVxuXG4gIG9uS2V5U2VsZWN0ZWQoY29udHJvbDogRm9ybUFycmF5PEZvcm1Db250cm9sPHN0cmluZz4+KSB7XG4gICAgY29uc3Qga2V5Q3RybCA9IGNvbnRyb2wuZ2V0KCcwJyk7XG4gICAga2V5Q3RybC5tYXJrQXNEaXJ0eSgpO1xuICAgIGtleUN0cmwudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xuICB9XG5cbiAgLy8gQW5ub3RhdGlvbkNvbmZpZ09wdGlvbi5kb2Mg6YWN572u5LqG5Lqn5ZOBIO+8iHByb2R1Y3TvvInlsZ7mgKfkuYvlkI7pnIDopoHlvZPliY3op4blm77pmrblsZ7kuo7or6Xkuqflk4Hml7bmiY3lsZXnpLogZG9jIOmTvuaOpe+8jOacqumFjee9rueahOivneS4jeWPl+mZkOWItlxuICBzaG93RG9jTGluayhiYXNlSHJlZjogc3RyaW5nLCBwcm9kdWN0Pzoga2V5b2YgdHlwZW9mIFBST0RVQ1RfQkFTRV9IUkVGX01BUCkge1xuICAgIGlmICghcHJvZHVjdCkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgcmV0dXJuIFBST0RVQ1RfQkFTRV9IUkVGX01BUFtwcm9kdWN0XSA9PT0gYmFzZUhyZWY7XG4gIH1cbn1cbiIsIjxhY2wtYXJyYXktZm9ybS10YWJsZVxuICBbZm9ybUdyb3VwXT1cIiRhbnkoZm9ybSlcIlxuICBbcm93c109XCJmb3JtLmNvbnRyb2xzXCJcbiAgKGFkZCk9XCJmb3JtLnB1c2goY3JlYXRlTmV3Q29udHJvbCgpKVwiXG4gIChyZW1vdmUpPVwicmVtb3ZlKCRldmVudClcIlxuICBbcmVzb3VyY2VOYW1lXT1cInJlc291cmNlTmFtZVwiXG4+XG4gIDxuZy1jb250YWluZXIgKmFjbEFycmF5Rm9ybVRhYmxlSGVhZGVyPlxuICAgIDx0aCBjbGFzcz1cImNvbHVtblwiPnt7ICdrZXknIHwgdHJhbnNsYXRlIH19PC90aD5cbiAgICA8dGggY2xhc3M9XCJjb2x1bW5cIj57eyAndmFsdWUnIHwgdHJhbnNsYXRlIH19PC90aD5cbiAgPC9uZy1jb250YWluZXI+XG5cbiAgPG5nLWNvbnRhaW5lclxuICAgICphY2xBcnJheUZvcm1UYWJsZVJvdz1cImxldCBjb250cm9sOyBsZXQgaW5kZXggPSBpbmRleFwiXG4gICAgW2Zvcm1Hcm91cE5hbWVdPVwiaW5kZXhcIlxuICA+XG4gICAgPG5nLWNvbnRhaW5lclxuICAgICAgKm5nSWY9XCJ7XG4gICAgICAgIGNvbmZpZzogS05PV05fQU5OT1RBVElPTlNbY2x1c3RlclR5cGVdLFxuICAgICAgICByZWFkb25seTogaXNMYWJlbFJlYWRvbmx5KGNvbnRyb2wpXG4gICAgICB9IGFzIF9cIlxuICAgID5cbiAgICAgIDx0ZCBjbGFzcz1cImNvbHVtblwiPlxuICAgICAgICA8aW5wdXRcbiAgICAgICAgICBhdWktaW5wdXRcbiAgICAgICAgICBbcmVhZG9ubHldPVwiXy5yZWFkb25seVwiXG4gICAgICAgICAgKGJsdXIpPVwib25CbHVyKClcIlxuICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cIjBcIlxuICAgICAgICAgIFthdWlBdXRvY29tcGxldGVdPVwia2V5U3VnZ2VzdGlvblwiXG4gICAgICAgICAgKGF1aUF1dG9jb21wbGV0ZVNlbGVjdGVkKT1cIm9uS2V5U2VsZWN0ZWQoY29udHJvbClcIlxuICAgICAgICAvPlxuICAgICAgICA8YXVpLWF1dG9jb21wbGV0ZSAja2V5U3VnZ2VzdGlvbj5cbiAgICAgICAgICA8YXVpLXN1Z2dlc3Rpb25cbiAgICAgICAgICAgICpuZ0Zvcj1cIlxuICAgICAgICAgICAgICBsZXQgb3B0aW9uIG9mIF8ucmVhZG9ubHlcbiAgICAgICAgICAgICAgICA/IG51bGxcbiAgICAgICAgICAgICAgICA6IGZpbHRlck9wdGlvbnMoXy5jb25maWc/Lm9wdGlvbnMsIGluZGV4KVxuICAgICAgICAgICAgXCJcbiAgICAgICAgICAgIFt2YWx1ZV09XCJvcHRpb24ua2V5XCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICB7eyBvcHRpb24ua2V5IH19XG4gICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICpuZ0lmPVwib3B0aW9uLnRpcCB8IHRyYW5zbGF0ZSBhcyB0aXBcIlxuICAgICAgICAgICAgICBjbGFzcz1cInR3LXRleHQtaGVscC10ZXh0IHR3LXRleHQtc1wiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIHt7IHRpcCB9fVxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9hdWktc3VnZ2VzdGlvbj5cbiAgICAgICAgPC9hdWktYXV0b2NvbXBsZXRlPlxuICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgKm5nSWY9XCJcbiAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgXy5jb25maWc/Lm9wdGlvbnNcbiAgICAgICAgICAgICAgfCBwdXJlOiBnZXRBY3RpdmVDb25maWdPcHRpb246Y29udHJvbC5nZXQoJzAnKS52YWx1ZVxuICAgICAgICAgICAgKT8uZG9jIGFzIGRvY1xuICAgICAgICAgIFwiXG4gICAgICAgID5cbiAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAqbmdJZj1cImJhc2VIcmVmIHwgcHVyZTogc2hvd0RvY0xpbms6ZG9jLnByb2R1Y3RcIlxuICAgICAgICAgICAgY2xhc3M9XCJ0dy10ZXh0LWhlbHAtdGV4dCB0dy10ZXh0LXMgdHctbXQtNFwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImRvYy50aXBQcmVmaXhcIj5cbiAgICAgICAgICAgICAge3sgZG9jLnRpcFByZWZpeCB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8YVxuICAgICAgICAgICAgICBbYWNsRG9jc109XCJ7XG4gICAgICAgICAgICAgICAgcGF0aDogZG9jLnBhdGgsXG4gICAgICAgICAgICAgICAgcmF3VXJsOiBkb2MucmF3VXJsLFxuICAgICAgICAgICAgICAgIHR5cGU6ICdwYWdlJyxcbiAgICAgICAgICAgICAgfVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIHt7IGRvYy50aXAgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICAgICAgPGF1aS1pY29uIGljb249XCJqdW1wXCI+PC9hdWktaWNvbj5cbiAgICAgICAgICAgIDwvYT5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICA8L3RkPlxuICAgICAgPHRkIGNsYXNzPVwiY29sdW1uXCI+XG4gICAgICAgIDxpbnB1dFxuICAgICAgICAgIGF1aS1pbnB1dFxuICAgICAgICAgIFtyZWFkb25seV09XCJfLnJlYWRvbmx5XCJcbiAgICAgICAgICAoYmx1cik9XCJvbkJsdXIoKVwiXG4gICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwiMVwiXG4gICAgICAgICAgW2F1aUF1dG9jb21wbGV0ZV09XCJ2YWx1ZVN1Z2dlc3Rpb25cIlxuICAgICAgICAvPlxuICAgICAgICA8YXVpLWF1dG9jb21wbGV0ZSAjdmFsdWVTdWdnZXN0aW9uPlxuICAgICAgICAgIDxhdWktc3VnZ2VzdGlvblxuICAgICAgICAgICAgKm5nRm9yPVwiXG4gICAgICAgICAgICAgIGxldCBvcHRpb24gb2YgXy5yZWFkb25seVxuICAgICAgICAgICAgICAgID8gbnVsbFxuICAgICAgICAgICAgICAgIDogKFxuICAgICAgICAgICAgICAgICAgICBfLmNvbmZpZz8ub3B0aW9uc1xuICAgICAgICAgICAgICAgICAgICB8IHB1cmU6IGdldENvbmZpZ09wdGlvbjpjb250cm9sLmdldCgnMCcpLnZhbHVlXG4gICAgICAgICAgICAgICAgICApPy52YWx1ZXNcbiAgICAgICAgICAgIFwiXG4gICAgICAgICAgICBbdmFsdWVdPVwib3B0aW9uLnZhbHVlXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICB7eyBvcHRpb24udmFsdWUgfX1cbiAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgKm5nSWY9XCJvcHRpb24udGlwIHwgdHJhbnNsYXRlIGFzIHRpcFwiXG4gICAgICAgICAgICAgIGNsYXNzPVwidHctdGV4dC1oZWxwLXRleHQgdHctdGV4dC1zXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAge3sgdGlwIH19XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2F1aS1zdWdnZXN0aW9uPlxuICAgICAgICA8L2F1aS1hdXRvY29tcGxldGU+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICAqbmdJZj1cIlxuICAgICAgICAgICAgKFxuICAgICAgICAgICAgICBfLmNvbmZpZz8ub3B0aW9uc1xuICAgICAgICAgICAgICB8IHB1cmU6IGdldEFjdGl2ZUNvbmZpZ09wdGlvbjpjb250cm9sLmdldCgnMCcpLnZhbHVlXG4gICAgICAgICAgICApPy52YWx1ZSBhcyB2YWx1ZUNvbmZpZ1xuICAgICAgICAgIFwiXG4gICAgICAgICAgY2xhc3M9XCJ0dy10ZXh0LWhlbHAtdGV4dCB0dy10ZXh0LXNcIlxuICAgICAgICA+XG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgKm5nSWY9XCJjb250cm9sLmdldCgnMScpLnZhbHVlID09PSB2YWx1ZUNvbmZpZy5leGFtcGxlXCJcbiAgICAgICAgICAgIGNsYXNzPVwidHctdGV4dC15ZWxsb3cgdHctbXQtNFwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAge3sgJ3JlYWRfZmlsbGluZ19pbnN0cnVjdGlvbnNfdGlwJyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0dy1icmVhay1hbGwgdHctbXktNFwiPlxuICAgICAgICAgICAge3sgdmFsdWVDb25maWcudGlwIHwgdHJhbnNsYXRlOiB7IGV4YW1wbGU6IHZhbHVlQ29uZmlnLmV4YW1wbGUgfSB9fVxuICAgICAgICAgICAgPGF1aS1pY29uXG4gICAgICAgICAgICAgIGNsYXNzPVwidHctdGV4dC1wcmltYXJ5IHR3LWN1cnNvci1wb2ludGVyXCJcbiAgICAgICAgICAgICAgaWNvbj1cImFycm93X3R1cm5fdXBcIlxuICAgICAgICAgICAgICAoY2xpY2spPVwiY29udHJvbC5nZXQoJzEnKS5zZXRWYWx1ZSh2YWx1ZUNvbmZpZy5leGFtcGxlKVwiXG4gICAgICAgICAgICA+PC9hdWktaWNvbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8YVxuICAgICAgICAgICAgW2hyZWZdPVwidmFsdWVDb25maWcuZG9jTGlua1wiXG4gICAgICAgICAgICByZWw9XCJub29wZW5lciBub3JlZmVycmVyXCJcbiAgICAgICAgICAgIHRhcmdldD1cIl9ibGFua1wiXG4gICAgICAgICAgPlxuICAgICAgICAgICAge3sgJ2ZpbGxpbmdfaW5zdHJ1Y3Rpb25zJyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgICAgPGF1aS1pY29uIGljb249XCJqdW1wXCI+PC9hdWktaWNvbj5cbiAgICAgICAgICA8L2E+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC90ZD5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgPC9uZy1jb250YWluZXI+XG5cbiAgPG5nLWNvbnRhaW5lciAqYWNsQXJyYXlGb3JtVGFibGVSb3dFcnJvcj1cImxldCBjb250cm9sXCI+XG4gICAgPHRkXG4gICAgICAqbmdJZj1cImNvbnRyb2wuaW52YWxpZFwiXG4gICAgICBjb2xzcGFuPVwiM1wiXG4gICAgICBjbGFzcz1cImFjbC10YWJsZS1mb3JtLWVycm9yLWhpbnRcIlxuICAgID5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb250cm9sLmVycm9ycz8ua2V5SXNNaXNzaW5nXCI+XG4gICAgICAgIHt7ICdrOHNfcmVzb3VyY2VfbGFiZWxfa2V5X3JlcXVpcmVkJyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb250cm9sLmVycm9ycz8uZHVwbGljYXRlRXJyb3JcIj5cbiAgICAgICAge3sgJ2s4c19yZXNvdXJjZV9sYWJlbF9rZXlfZHVwbGljYXRlZCcgfCB0cmFuc2xhdGUgfX1cbiAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICA8YWNsLWVycm9ycy1tYXBwZXJcbiAgICAgICAgYXVpRm9ybUl0ZW1FcnJvclxuICAgICAgICBbZXJyb3JzXT1cImNvbnRyb2wuZ2V0KCcwJykuZXJyb3JzXCJcbiAgICAgICAgW2Vycm9yc01hcHBlcl09XCIoYW5ub3RhdGlvbnNFcnJvcnNNYXBwZXIgfCBhc3luYykua2V5XCJcbiAgICAgID48L2FjbC1lcnJvcnMtbWFwcGVyPlxuICAgICAgPGFjbC1lcnJvcnMtbWFwcGVyXG4gICAgICAgIGF1aUZvcm1JdGVtRXJyb3JcbiAgICAgICAgW2Vycm9yc109XCJjb250cm9sLmdldCgnMScpLmVycm9yc1wiXG4gICAgICA+PC9hY2wtZXJyb3JzLW1hcHBlcj5cbiAgICA8L3RkPlxuICA8L25nLWNvbnRhaW5lcj5cblxuICA8bmctY29udGFpbmVyICphY2xBcnJheUZvcm1UYWJsZVJvd0NvbnRyb2w9XCJsZXQgaXRlbTsgbGV0IGluZGV4ID0gaW5kZXhcIj5cbiAgICA8YnV0dG9uXG4gICAgICBhdWktYnV0dG9uPVwidGV4dFwiXG4gICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgIFtzcXVhcmVdPVwidHJ1ZVwiXG4gICAgICBbcGxhaW5dPVwidHJ1ZVwiXG4gICAgICBbZGlzYWJsZWRdPVwiaXNMYWJlbFJlYWRvbmx5KGl0ZW0pXCJcbiAgICAgIChjbGljayk9XCJyZW1vdmUoaW5kZXgpXCJcbiAgICA+XG4gICAgICA8YXVpLWljb24gaWNvbj1cIm1pbnVzX2NpcmNsZVwiPjwvYXVpLWljb24+XG4gICAgPC9idXR0b24+XG4gIDwvbmctY29udGFpbmVyPlxuPC9hY2wtYXJyYXktZm9ybS10YWJsZT5cblxuPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuXG48ZGl2XG4gICpuZ0lmPVwiS05PV05fQU5OT1RBVElPTlNbY2x1c3RlclR5cGVdIGFzIGNvbmZpZ1wiXG4gIGNsYXNzPVwidHctdGV4dC1oZWxwLXRleHQgdHctdGV4dC1zIHR3LW10LTRcIlxuPlxuICA8bmctY29udGFpbmVyIFthY2xUcmFuc2xhdGVdPVwiJ2RvY3VtZW50YXRpb25fZm9yX2xiX3NlcnZpY2VfYW5ub3RhdGlvbnMnXCI+XG4gICAgPG5nLWNvbnRhaW5lciAqYWNsVHJhbnNsYXRlVGV4dD1cImxldCB0ZXh0XCI+e3sgdGV4dCB9fTwvbmctY29udGFpbmVyPlxuICAgIDxuZy1jb250YWluZXIgKmFjbFRyYW5zbGF0ZU1hdGNoPVwiJ3R5cGUnXCI+e3sgY29uZmlnLmxhYmVsIH19PC9uZy1jb250YWluZXI+XG4gICAgPGFcbiAgICAgICphY2xUcmFuc2xhdGVNYXRjaD1cIidkb2N1bWVudGF0aW9uJ1wiXG4gICAgICBbaHJlZl09XCJjb25maWcuZG9jTGlua1wiXG4gICAgICB0YXJnZXQ9XCJfYmxhbmtcIlxuICAgICAgcmVsPVwibm9vcGVuZXIgbm9yZWZlcnJlclwiXG4gICAgPlxuICAgICAge3sgJ2RvY3VtZW50YXRpb24nIHwgdHJhbnNsYXRlIH19XG4gICAgICA8YXVpLWljb24gaWNvbj1cImp1bXBcIj48L2F1aS1pY29uPiA8L2FcbiAgPjwvbmctY29udGFpbmVyPlxuPC9kaXY+XG4iXX0=
|
|
674
|
+
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(ServiceAnnotationsFormComponent, { className: "ServiceAnnotationsFormComponent", filePath: "lib/components/service-annotations-form/annotations.component.ts", lineNumber: 343 }); })();
|
|
675
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5ub3RhdGlvbnMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbW9kdWxlcy9uZXR3b3JrL3NyYy9saWIvY29tcG9uZW50cy9zZXJ2aWNlLWFubm90YXRpb25zLWZvcm0vYW5ub3RhdGlvbnMuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbW9kdWxlcy9uZXR3b3JrL3NyYy9saWIvY29tcG9uZW50cy9zZXJ2aWNlLWFubm90YXRpb25zLWZvcm0vYW5ub3RhdGlvbnMuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLGtCQUFrQixFQUNsQixZQUFZLEVBQ1osVUFBVSxFQUNWLFdBQVcsR0FDWixNQUFNLFlBQVksQ0FBQztBQUNwQixPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLDZCQUE2QixFQUM3QixpQ0FBaUMsRUFDakMsMEJBQTBCLEVBQzFCLCtCQUErQixFQUMvQiwwQkFBMEIsRUFFMUIsb0JBQW9CLEVBQ3BCLEtBQUssRUFDTCxrQkFBa0IsRUFDbEIsUUFBUSxFQUVSLGlCQUFpQixFQUNqQixlQUFlLEVBQ2YsSUFBSSxFQUVKLGdCQUFnQixFQUNoQixnQkFBZ0IsRUFDaEIsb0NBQW9DLEVBQ3BDLGlDQUFpQyxHQUNsQyxNQUFNLG1CQUFtQixDQUFDO0FBQzNCLE9BQU8sRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzNELE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULE1BQU0sRUFDTixRQUFRLEVBQ1IsS0FBSyxFQUNMLE1BQU0sR0FDUCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQTBCLG1CQUFtQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0UsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUVuQyxPQUFPLEVBQUUsV0FBVyxFQUFF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QUFVO29CQUNWLFdBQVc7b0JBQ1gsdUJBQXVCO29CQUN2Qiw2QkFBNkI7b0JBQzdCLDBCQUEwQjtvQkFDMUIsaUNBQWlDO29CQUNqQywrQkFBK0I7b0JBQy9CLGdCQUFnQjtvQkFDaEIsb0JBQW9CO29CQUNwQixrQkFBa0I7b0JBQ2xCLFFBQVE7aUJBQ1Q7O3NCQTJCRSxNQUFNO3VCQUFDLGlCQUFpQjtxQkF2QjNCLFFBQVE7a0JBRFAsS0FBSzttQkFBQyxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUU7WUFJekIsV0FBVztrQkFEVixLQUFLO21CQUFDLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRTtZQUl6QixZQUFZO2tCQURYLEtBQUs7bUJBQUMsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFOztrRkFQZCwrQkFBK0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBdXRvY29tcGxldGVNb2R1bGUsXG4gIEJ1dHRvbk1vZHVsZSxcbiAgSWNvbk1vZHVsZSxcbiAgSW5wdXRNb2R1bGUsXG59IGZyb20gJ0BhbGF1ZGEvdWknO1xuaW1wb3J0IHtcbiAgQXJyYXlGb3JtVGFibGVDb21wb25lbnQsXG4gIEFycmF5Rm9ybVRhYmxlSGVhZGVyRGlyZWN0aXZlLFxuICBBcnJheUZvcm1UYWJsZVJvd0NvbnRyb2xEaXJlY3RpdmUsXG4gIEFycmF5Rm9ybVRhYmxlUm93RGlyZWN0aXZlLFxuICBBcnJheUZvcm1UYWJsZVJvd0Vycm9yRGlyZWN0aXZlLFxuICBCYXNlU3RyaW5nTWFwRm9ybUNvbXBvbmVudCxcbiAgS2V5VmFsdWVUdXBsZSxcbiAgRVJST1JTX01BUFBFUl9NT0RVTEUsXG4gIEZBTFNFLFxuICBIZWxwRG9jdW1lbnRNb2R1bGUsXG4gIFB1cmVQaXBlLFxuICBTdHJpbmdNYXAsXG4gIFRPS0VOX0JBU0VfRE9NQUlOLFxuICBUT0tFTl9CQVNFX0hSRUYsXG4gIFRSVUUsXG4gIFRyYW5zbGF0ZUtleSxcbiAgVFJBTlNMQVRFX01PRFVMRSxcbiAgVHJhbnNsYXRlU2VydmljZSxcbiAgZ2V0SzhzUmVzb3VyY2VBbm5vdGF0aW9uRXJyb3JNYXBwZXIkLFxuICBrOHNSZXNvdXJjZUFubm90YXRpb25LZXlWYWxpZGF0b3IsXG59IGZyb20gJ0BhbGF1ZGEtZmUvY29tbW9uJztcbmltcG9ydCB7IEFzeW5jUGlwZSwgTmdGb3JPZiwgTmdJZiB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge1xuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ29tcG9uZW50LFxuICBJbmplY3QsXG4gIEluamVjdG9yLFxuICBJbnB1dCxcbiAgaW5qZWN0LFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvcm1BcnJheSwgRm9ybUNvbnRyb2wsIFJlYWN0aXZlRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBzb3J0QnkgfSBmcm9tICdsb2Rhc2gtZXMnO1xuXG5pbXBvcnQgeyBDbHVzdGVyVHlwZSB9IGZyb20gJy4uLy4uL3V0aWxzL2NsdXN0ZXItZXhwb3J0cyc7XG5cbmVudW0gUFJPRFVDVF9CQVNFX0hSRUZfTUFQIHtcbiAgZGV2b3BzID0gJy9jb25zb2xlLWRldm9wcy8nLFxuICBhY3AgPSAnL2NvbnNvbGUtYWNwLycsXG4gIGFzbSA9ICcvY29uc29sZS1hc20vJyxcbiAgZGF0YXNlcnZpY2VzID0gJy9jb25zb2xlLWRhdGFzZXJ2aWNlcy8nLFxuICBjZWMgPSAnL2NvbnNvbGUtY2VjLycsXG4gIHBsYXRmb3JtID0gJy9jb25zb2xlLXBsYXRmb3JtLycsXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQW5ub3RhdGlvbkNvbmZpZ09wdGlvbiB7XG4gIGtleTogc3RyaW5nO1xuICB0aXA6IFRyYW5zbGF0ZUtleTtcbiAgZG9jPzoge1xuICAgIHRpcDogVHJhbnNsYXRlS2V5O1xuICAgIHRpcFByZWZpeD86IFRyYW5zbGF0ZUtleTtcbiAgICBwYXRoPzogc3RyaW5nOyAvLyDmoIflh4bmlofmoaPpk77mjqUsIOWvueW6lCBEb2NzT3B0aW9uLnBhdGhcbiAgICByYXdVcmw/OiBzdHJpbmc7IC8vIOmdnuagh+WHhuaWh+aho+mTvuaOpSwg5a+55bqUIERvY3NPcHRpb24ucmF3VXJsXG4gICAgcHJvZHVjdD86IGtleW9mIHR5cGVvZiBQUk9EVUNUX0JBU0VfSFJFRl9NQVA7XG4gIH07XG4gIHZhbHVlPzoge1xuICAgIGV4YW1wbGU6IHN0cmluZztcbiAgICB0aXA6IFRyYW5zbGF0ZUtleTtcbiAgICBkb2NMaW5rOiBzdHJpbmc7XG4gIH07XG4gIHZhbHVlcz86IEFycmF5PHtcbiAgICB2YWx1ZTogc3RyaW5nO1xuICAgIHRpcD86IFRyYW5zbGF0ZUtleTtcbiAgfT47XG59XG5cbmV4cG9ydCBjb25zdCBLTk9XTl9BTk5PVEFUSU9OUzogUGFydGlhbDxcbiAgUmVjb3JkPFxuICAgIENsdXN0ZXJUeXBlLFxuICAgIHtcbiAgICAgIGxhYmVsOiBzdHJpbmc7XG4gICAgICBkb2NMaW5rOiBzdHJpbmc7XG4gICAgICBvcHRpb25zOiBBbm5vdGF0aW9uQ29uZmlnT3B0aW9uW107XG4gICAgfVxuICA+XG4+ID0ge1xuICBbQ2x1c3RlclR5cGUuQXp1cmVBS1NdOiB7XG4gICAgbGFiZWw6ICdBS1MnLFxuICAgIGRvY0xpbms6XG4gICAgICAnaHR0cHM6Ly9jbG91ZC1wcm92aWRlci1henVyZS5zaWdzLms4cy5pby90b3BpY3MvbG9hZGJhbGFuY2VyLyNsb2FkYmFsYW5jZXItYW5ub3RhdGlvbnMnLFxuICAgIG9wdGlvbnM6IFtcbiAgICAgIHtcbiAgICAgICAga2V5OiAnc2VydmljZS5iZXRhLmt1YmVybmV0ZXMuaW8vYXp1cmUtbG9hZC1iYWxhbmNlci1pbnRlcm5hbCcsXG4gICAgICAgIHRpcDoge1xuICAgICAgICAgIGVuOiAnU3BlY2lmeSB0aGUgdXNlIG9mIGludHJhbmV0L3B1YmxpYyBuZXR3b3JrJyxcbiAgICAgICAgICB6aDogJ+aMh+WumuS9v+eUqOWGhee9kS/lhaznvZEnLFxuICAgICAgICB9LFxuICAgICAgICB2YWx1ZXM6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICB2YWx1ZTogVFJVRSxcbiAgICAgICAgICAgIHRpcDoge1xuICAgICAgICAgICAgICBlbjogJ0ludHJhbmV0JyxcbiAgICAgICAgICAgICAgemg6ICflhoXnvZEnLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHZhbHVlOiBGQUxTRSxcbiAgICAgICAgICAgIHRpcDoge1xuICAgICAgICAgICAgICBlbjogJ1B1YmxpYyBuZXR3b3JrJyxcbiAgICAgICAgICAgICAgemg6ICflhaznvZEnLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9LFxuICAgICAgICBdLFxuICAgICAgfSxcbiAgICBdLFxuICB9LFxuICBbQ2x1c3RlclR5cGUuQW1hem9uRUtTXToge1xuICAgIGxhYmVsOiAnRUtTJyxcbiAgICBkb2NMaW5rOlxuICAgICAgJ2h0dHBzOi8va3ViZXJuZXRlcy1zaWdzLmdpdGh1Yi5pby9hd3MtbG9hZC1iYWxhbmNlci1jb250cm9sbGVyL3YyLjUvZ3VpZGUvc2VydmljZS9hbm5vdGF0aW9ucy8nLFxuICAgIG9wdGlvbnM6IFtcbiAgICAgIHtcbiAgICAgICAga2V5OiAnc2VydmljZS5iZXRhLmt1YmVybmV0ZXMuaW8vYXdzLWxvYWQtYmFsYW5jZXItdHlwZScsXG4gICAgICAgIHRpcDoge1xuICAgICAgICAgIGVuOiAnU3BlY2lmeSB0aGUgTG9hZEJhbGFuY2VyIFNlcnZpY2UgQ29udHJvbGxlciBpbiB1c2UnLFxuICAgICAgICAgIHpoOiAn5oyH5a6a5omA5L2/55So55qEIExvYWRCYWxhbmNlciDnsbvlnovlhoXpg6jot6/nlLHmjqfliLblmagnLFxuICAgICAgICB9LFxuICAgICAgICBkb2M6IHtcbiAgICAgICAgICB0aXA6IHtcbiAgICAgICAgICAgIGVuOiAnQ29udHJvbGxlciBJbnN0YWxsYXRpb24nLFxuICAgICAgICAgICAgemg6ICfmjqfliLblmajlronoo4UnLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgcHJvZHVjdDogJ3BsYXRmb3JtJyxcbiAgICAgICAgICBwYXRoOiAncGxhdGZvcm0tdXNlcm1hbnVhbC9jbHVzdGVyYWxsLzFjbHVzdGVyL2Nsb3VkaW5pdC9uZXR3b3JrMS9la3NpbmdyZXNzY29udHJvbGxlci8jMicsXG4gICAgICAgIH0sXG4gICAgICAgIHZhbHVlczogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIHZhbHVlOiAnZXh0ZXJuYWwnLFxuICAgICAgICAgICAgdGlwOiB7XG4gICAgICAgICAgICAgIGVuOiAnVXNpbmcgdGhlIG9mZmljaWFsIEFXUyBMb2FkQmFsYW5jZXIgQ29udHJvbGxlcicsXG4gICAgICAgICAgICAgIHpoOiAn5L2/55SoIEFXUyDlrpjmlrnnmoQgQVdTIExvYWRCYWxhbmNlciBDb250cm9sbGVyJyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGtleTogJ3NlcnZpY2UuYmV0YS5rdWJlcm5ldGVzLmlvL2F3cy1sb2FkLWJhbGFuY2VyLW5sYi10YXJnZXQtdHlwZScsXG4gICAgICAgIHRpcDoge1xuICAgICAgICAgIGVuOiAnU3BlY2lmeSB0aGUgd2F5IHRyYWZmaWMgaXMgZGVsaXZlcmVkIHRvIHRoZSBwb2RzJyxcbiAgICAgICAgICB6aDogJ+aMh+Wumua1gemHj+mAgei+vuWuueWZqOe7hOeahOaWueW8jycsXG4gICAgICAgIH0sXG4gICAgICAgIHZhbHVlczogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIHZhbHVlOiAnaW5zdGFuY2UnLFxuICAgICAgICAgICAgdGlwOiB7XG4gICAgICAgICAgICAgIGVuOiAnVHJhZmZpYyB3aWxsIGJlIHNlbnQgdG8gdGhlIHBvZHMgdmlhIE5vZGVQb3J0JyxcbiAgICAgICAgICAgICAgemg6ICfmtYHph4/lsIbpgJrov4cgTm9kZVBvcnQg6YCB5b6A5a655Zmo57uEJyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICB2YWx1ZTogJ2lwJyxcbiAgICAgICAgICAgIHRpcDoge1xuICAgICAgICAgICAgICBlbjogJ1RyYWZmaWMgaXMgZGlyZWN0bHkgcm91dGVkIHRvIHRoZSBwb2RzIChBbWF6b24gVlBDIENOSSBpcyByZXF1aXJlZCBmb3IgdGhlIGNsdXN0ZXIpJyxcbiAgICAgICAgICAgICAgemg6ICfmtYHph4/nm7TmjqXot6/nlLHliLDlrrnlmajnu4TvvIjpm4bnvqTpnIDkvb/nlKggQW1hem9uIFZQQyBDTknvvIknLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9LFxuICAgICAgICBdLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAga2V5OiAnc2VydmljZS5iZXRhLmt1YmVybmV0ZXMuaW8vYXdzLWxvYWQtYmFsYW5jZXItc2NoZW1lJyxcbiAgICAgICAgdGlwOiB7XG4gICAgICAgICAgZW46ICdTcGVjaWZ5IHRoZSB1c2Ugb2YgaW50cmFuZXQvcHVibGljIG5ldHdvcmsnLFxuICAgICAgICAgIHpoOiAn5oyH5a6a5L2/55So5YaF572RL+WFrOe9kScsXG4gICAgICAgIH0sXG4gICAgICAgIHZhbHVlczogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIHZhbHVlOiAnaW50ZXJuYWwnLFxuICAgICAgICAgICAgdGlwOiB7XG4gICAgICAgICAgICAgIGVuOiAnSW50cmFuZXQnLFxuICAgICAgICAgICAgICB6aDogJ+WGhee9kScsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgdmFsdWU6ICdpbnRlcm5ldC1mYWNpbmcnLFxuICAgICAgICAgICAgdGlwOiB7XG4gICAgICAgICAgICAgIGVuOiAnUHVibGljIG5ldHdvcmsnLFxuICAgICAgICAgICAgICB6aDogJ+WFrOe9kScsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH0sXG4gICAgICAgIF0sXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBrZXk6ICdzZXJ2aWNlLmJldGEua3ViZXJuZXRlcy5pby9hd3MtbG9hZC1iYWxhbmNlci1pcC1hZGRyZXNzLXR5cGUnLFxuICAgICAgICB0aXA6IHtcbiAgICAgICAgICBlbjogJ1NwZWNpZnkgdGhlIHN1cHBvcnRlZCBJUCBwcm90b2NvbCBzdGFjaycsXG4gICAgICAgICAgemg6ICfmjIflrprmlK/mjIHnmoQgSVAg5Y2P6K6u5qCIJyxcbiAgICAgICAgfSxcbiAgICAgICAgdmFsdWVzOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgdmFsdWU6ICdpcHY0JyxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHZhbHVlOiAnZHVhbHN0YWNrJyxcbiAgICAgICAgICB9LFxuICAgICAgICBdLFxuICAgICAgfSxcbiAgICBdLFxuICB9LFxuICBbQ2x1c3RlclR5cGUuSHVhd2VpQ2xvdWRDQ0VdOiB7XG4gICAgbGFiZWw6ICdDQ0UnLFxuICAgIGRvY0xpbms6XG4gICAgICAnaHR0cHM6Ly9zdXBwb3J0Lmh1YXdlaWNsb3VkLmNvbS9pbnRsL2VuLXVzL3VzZXJtYW51YWwtY2NlL2NjZV8xMF8wMzg1Lmh0bWwnLFxuICAgIG9wdGlvbnM6IFtcbiAgICAgIHtcbiAgICAgICAga2V5OiAna3ViZXJuZXRlcy5pby9lbGIuaWQnLFxuICAgICAgICB0aXA6IHtcbiAgICAgICAgICBlbjogJ1BsZWFzZSBwcm92aWRlIHRoZSBJRCBvZiB0aGUgY2xvdWQgTG9hZEJhbGFuY2VyLCBZb3Ugc2hvdWxkIHVzZSBhbiBleGlzdGluZyBjbG91ZCBMb2FkQmFsYW5jZXIuJyxcbiAgICAgICAgICB6aDogJ+Whq+WGmeS6keS4iui0n+i9veWdh+ihoeWZqOeahCBJRO+8jOmcgOS9v+eUqOW3suacieS6keS4iui0n+i9veWdh+ihoeWZqCcsXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBrZXk6ICdrdWJlcm5ldGVzLmlvL2VsYi5hdXRvY3JlYXRlJyxcbiAgICAgICAgdGlwOiB7XG4gICAgICAgICAgZW46ICdDcmVhdGUgYSBuZXcgY2xvdWQgTG9hZEJhbGFuY2VyJyxcbiAgICAgICAgICB6aDogJ+aWsOWIm+W7uuS6keS4iui0n+i9veWdh+ihoeWZqCcsXG4gICAgICAgIH0sXG4gICAgICAgIHZhbHVlOiB7XG4gICAgICAgICAgZXhhbXBsZTogYHtcInR5cGVcIjpcInB1YmxpY1wiLFwiYmFuZHdpZHRoX25hbWVcIjpcImNjZS1iYW5kd2lkdGgtMTU1MTE2MzM3OTYyN1wiLFwiYmFuZHdpZHRoX2NoYXJnZW1vZGVcIjpcImJhbmR3aWR0aFwiLFwiYmFuZHdpZHRoX3NpemVcIjo1LFwiYmFuZHdpZHRoX3NoYXJldHlwZVwiOlwiUEVSXCIsXCJlaXBfdHlwZVwiOlwiNV9iZ3BcIixcImF2YWlsYWJsZV96b25lXCI6W1wiY24tbm9ydGgtNGJcIl0sXCJsNF9mbGF2b3JfbmFtZVwiOlwiTDRfZmxhdm9yLmVsYi5zMS5zbWFsbFwifWAsXG4gICAgICAgICAgdGlwOiB7XG4gICAgICAgICAgICBlbjogJ0ZvciBleGFtcGxlOiB7eyBleGFtcGxlIH19JyxcbiAgICAgICAgICAgIHpoOiAn5L6L5aaC77yae3sgZXhhbXBsZSB9fScsXG4gICAgICAgICAgfSxcbiAgICAgICAgICBkb2NMaW5rOlxuICAgICAgICAgICAgJ2h0dHBzOi8vc3VwcG9ydC5odWF3ZWljbG91ZC5jb20vaW50bC9lbi11cy91c2VybWFudWFsLWNjZS9jY2VfMTBfMDM4NS5odG1sI3NlY3Rpb244JyxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGtleTogJ2t1YmVybmV0ZXMuaW8vZWxiLnN1Ym5ldC1pZCcsXG4gICAgICAgIHRpcDoge1xuICAgICAgICAgIGVuOiAnU3VibmV0IElEIG9mIHRoZSBjbHVzdGVyLCB3aGljaCBpcyByZXF1aXJlZCB3aGVuIGNyZWF0aW5nIGEgbmV3IGNsb3VkIExvYWRCYWxhbmNlciBhbmQgS3ViZXJuZXRlcyB2ZXJzaW9uIGlzIDEuMTEuNy1yMCBhbmQgYmVsb3cuJyxcbiAgICAgICAgICB6aDogJ+mbhue+pOaJgOWcqOWtkOe9keeahCBJRO+8jOW9kyBLdWJlcm5ldGVzIOeJiOacrOS4uiAxLjExLjctcjAg5Y+K5Lul5LiL77yM5paw5Yib5bu65LqR5LiK6LSf6L295Z2H6KGh5Zmo5pe25b+F6aG75aGr5YaZ5q2k6aG5JyxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGtleTogJ2t1YmVybmV0ZXMuaW8vZWxiLmNsYXNzJyxcbiAgICAgICAgdGlwOiB7XG4gICAgICAgICAgZW46ICdTcGVjaWZ5IHRoZSB0eXBlIG9mIHRoZSBuZXdseSBjcmVhdGVkIGNsb3VkIExvYWRCYWxhbmNlcicsXG4gICAgICAgICAgemg6ICfmjIflrprmlrDliJvlu7rnmoTkupHkuIrotJ/ovb3lnYfooaHlmajnmoTnsbvlnosnLFxuICAgICAgICB9LFxuICAgICAgICBkb2M6IHtcbiAgICAgICAgICB0aXA6IHtcbiAgICAgICAgICAgIGVuOiAnRGlmZmVyZW5jZXMgQmV0d2VlbiBEZWRpY2F0ZWQgYW5kIFNoYXJlZCBMb2FkIEJhbGFuY2VycycsXG4gICAgICAgICAgICB6aDogJ+WFseS6q+Wei+W8ueaAp+i0n+i9veWdh+ihoeS4jueLrOS6q+Wei+i0n+i9veWdh+ihoeeahOWKn+iDveWMuuWIqycsXG4gICAgICAgICAgfSxcbiAgICAgICAgICByYXdVcmw6XG4gICAgICAgICAgICAnaHR0cHM6Ly9zdXBwb3J0Lmh1YXdlaWNsb3VkLmNvbS9pbnRsL3poLWNuL3Byb2R1Y3RkZXNjLWVsYi9lbGJfcHJvXzAwMDQuaHRtbCcsXG4gICAgICAgICAgdGlwUHJlZml4OiB7XG4gICAgICAgICAgICBlbjogJ0ZvciBtb3JlIGRldGFpbHMsIHBsZWFzZSByZWZlciB0byAnLFxuICAgICAgICAgICAgemg6ICfor6bmg4Xor7flj4Lop4EnLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICAgIHZhbHVlczogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIHZhbHVlOiAndW5pb24nLFxuICAgICAgICAgICAgdGlwOiB7XG4gICAgICAgICAgICAgIGVuOiAnU2hhcmVkIExvYWRCYWxhbmNlcicsXG4gICAgICAgICAgICAgIHpoOiAn5YWx5Lqr5Z6L6LSf6L295Z2H6KGhJyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICB2YWx1ZTogJ3BlcmZvcm1hbmNlJyxcbiAgICAgICAgICAgIHRpcDoge1xuICAgICAgICAgICAgICBlbjogJ0RlZGljYXRlZCBMb2FkQmFsYW5jZXIsIHdoaWNoIGNhbiBiZSB1c2VkIG9ubHkgaW4gY2x1c3RlcnMgb2YgdjEuMTcgYW5kIGxhdGVyJyxcbiAgICAgICAgICAgICAgemg6ICfni6zkuqvlnovotJ/ovb3lnYfooaHvvIzku4XmlK/mjIHlnKggS3ViZXJuZXRlcyDniYjmnKzkuLogMS4xNyDlj4rku6XkuIrnmoTpm4bnvqTkuK3kvb/nlKgnLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9LFxuICAgICAgICBdLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAga2V5OiAna3ViZXJuZXRlcy5pby9lbGIuZW50ZXJwcmlzZUlEJyxcbiAgICAgICAgdGlwOiB7XG4gICAgICAgICAgZW46ICdTcGVjaWZ5IHRoZSBlbnRlcnByaXNlIHByb2plY3QgdG8gd2hpY2ggdGhlIG5ld2x5IGNyZWF0ZWQgY2xvdWQgTG9hZEJhbGFuY2VyIHdpbGwgYmVsb25nJyxcbiAgICAgICAgICB6aDogJ+aMh+WumuaWsOWIm+W7uuS6keS4iui0n+i9veWdh+ihoeWZqOaJgOWxnueahOS8geS4mumhueebricsXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgIF0sXG4gIH0sXG4gIFtDbHVzdGVyVHlwZS5Hb29nbGVDbG91ZEdLRV06IHtcbiAgICBsYWJlbDogJ0dLRScsXG4gICAgZG9jTGluazpcbiAgICAgICdodHRwczovL2Nsb3VkLmdvb2dsZS5jb20va3ViZXJuZXRlcy1lbmdpbmUvZG9jcy9jb25jZXB0cy9zZXJ2aWNlLWxvYWQtYmFsYW5jZXItcGFyYW1ldGVycycsXG4gICAgb3B0aW9uczogW1xuICAgICAge1xuICAgICAgICBrZXk6ICduZXR3b3JraW5nLmdrZS5pby9sb2FkLWJhbGFuY2VyLXR5cGUnLFxuICAgICAgICB0aXA6IHtcbiAgICAgICAgICBlbjogJ1NwZWNpZnkgdGhlIHVzZSBvZiBJbnRyYW5ldCcsXG4gICAgICAgICAgemg6ICfmjIflrprkvb/nlKjlhoXnvZEnLFxuICAgICAgICB9LFxuICAgICAgICB2YWx1ZXM6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICB2YWx1ZTogJ0ludGVybmFsJyxcbiAgICAgICAgICB9LFxuICAgICAgICBdLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAga2V5OiAnY2xvdWQuZ29vZ2xlLmNvbS9sNC1yYnMnLFxuICAgICAgICB0aXA6IHtcbiAgICAgICAgICBlbjogJ1RoZSBkZWZhdWx0IGlzIHB1YmxpYyBuZXR3b3JrLCB3aGVuIHRoaXMgcGFyYW1ldGVyIGlzIGNvbmZpZ3VyZWQsIHRyYWZmaWMgd2lsbCBiZSByb3V0ZWQgZGlyZWN0bHkgdG8gdGhlIHBvZHMnLFxuICAgICAgICAgIHpoOiAn6buY6K6k5Li65YWs572R77yM6YWN572u5q2k5Y+C5pWw5pe277yM5rWB6YeP5bCG55u05o6l6Lev55Sx6Iez5a655Zmo57uEJyxcbiAgICAgICAgfSxcbiAgICAgICAgdmFsdWVzOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgdmFsdWU6ICdlbmFibGVkJyxcbiAgICAgICAgICB9LFxuICAgICAgICBdLFxuICAgICAgfSxcbiAgICBdLFxuICB9LFxufTtcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYWNsLXNlcnZpY2UtYW5ub3RhdGlvbnMtZm9ybScsXG4gIHRlbXBsYXRlVXJsOiAnYW5ub3RhdGlvbnMuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnYW5ub3RhdGlvbnMuY29tcG9uZW50LnNjc3MnXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtcbiAgICBBc3luY1BpcGUsXG4gICAgTmdJZixcbiAgICBOZ0Zvck9mLFxuICAgIFJlYWN0aXZlRm9ybXNNb2R1bGUsXG4gICAgQXV0b2NvbXBsZXRlTW9kdWxlLFxuICAgIEJ1dHRvbk1vZHVsZSxcbiAgICBJY29uTW9kdWxlLFxuICAgIElucHV0TW9kdWxlLFxuICAgIEFycmF5Rm9ybVRhYmxlQ29tcG9uZW50LFxuICAgIEFycmF5Rm9ybVRhYmxlSGVhZGVyRGlyZWN0aXZlLFxuICAgIEFycmF5Rm9ybVRhYmxlUm93RGlyZWN0aXZlLFxuICAgIEFycmF5Rm9ybVRhYmxlUm93Q29udHJvbERpcmVjdGl2ZSxcbiAgICBBcnJheUZvcm1UYWJsZVJvd0Vycm9yRGlyZWN0aXZlLFxuICAgIFRSQU5TTEFURV9NT0RVTEUsXG4gICAgRVJST1JTX01BUFBFUl9NT0RVTEUsXG4gICAgSGVscERvY3VtZW50TW9kdWxlLFxuICAgIFB1cmVQaXBlLFxuICBdLFxufSlcbmV4cG9ydCBjbGFzcyBTZXJ2aWNlQW5ub3RhdGlvbnNGb3JtQ29tcG9uZW50IGV4dGVuZHMgQmFzZVN0cmluZ01hcEZvcm1Db21wb25lbnQge1xuICBASW5wdXQoeyByZXF1aXJlZDogdHJ1ZSB9KVxuICBpc1VwZGF0ZTogYm9vbGVhbjtcblxuICBASW5wdXQoeyByZXF1aXJlZDogdHJ1ZSB9KVxuICBjbHVzdGVyVHlwZTogQ2x1c3RlclR5cGU7XG5cbiAgQElucHV0KHsgcmVxdWlyZWQ6IHRydWUgfSlcbiAgcmVzb3VyY2VOYW1lOiBzdHJpbmc7XG5cbiAgcHJpdmF0ZSByZWFkb25seSB0cmFuc2xhdGUgPSBpbmplY3QoVHJhbnNsYXRlU2VydmljZSk7XG5cbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGJhc2VIcmVmID0gaW5qZWN0KFRPS0VOX0JBU0VfSFJFRik7XG5cbiAgLy8g56aB55So5o6J5YyF5ZCrIGNwYWFzLmlvIOWPiiBvdm4ua3ViZXJuZXRlcy5pbyDnmoQga2V5XG4gIHJlYWRvbmx5IHJlYWRvbmx5UGFydGlhbEtleXMgPSBbJ292bi5rdWJlcm5ldGVzLmlvJywgdGhpcy5iYXNlRG9tYWluXTtcblxuICBhbm5vdGF0aW9uc0Vycm9yc01hcHBlciA9IGdldEs4c1Jlc291cmNlQW5ub3RhdGlvbkVycm9yTWFwcGVyJChcbiAgICB0aGlzLnRyYW5zbGF0ZSxcbiAgKTtcblxuICBLTk9XTl9BTk5PVEFUSU9OUyA9IEtOT1dOX0FOTk9UQVRJT05TO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIGluamVjdG9yOiBJbmplY3RvcixcbiAgICBASW5qZWN0KFRPS0VOX0JBU0VfRE9NQUlOKSBwcml2YXRlIHJlYWRvbmx5IGJhc2VEb21haW46IHN0cmluZyxcbiAgKSB7XG4gICAgc3VwZXIoaW5qZWN0b3IpO1xuICB9XG5cbiAgZmlsdGVyT3B0aW9ucyhvcHRpb25zOiBBbm5vdGF0aW9uQ29uZmlnT3B0aW9uW10gfCB1bmRlZmluZWQsIGluZGV4OiBudW1iZXIpIHtcbiAgICBjb25zdCBrZXlzID0gKHRoaXMuZm9ybS52YWx1ZSBhcyBLZXlWYWx1ZVR1cGxlW10pLm1hcCgoW2tleV0pID0+IGtleSk7XG4gICAgcmV0dXJuIG9wdGlvbnM/LmZpbHRlcihvID0+IHtcbiAgICAgIGNvbnN0IGtleUluZGV4ID0ga2V5cy5pbmRleE9mKG8ua2V5KTtcbiAgICAgIHJldHVybiBrZXlJbmRleCA9PT0gLTEgfHwga2V5SW5kZXggPT09IGluZGV4O1xuICAgIH0pO1xuICB9XG5cbiAgZ2V0Q29uZmlnT3B0aW9uKG9wdGlvbnM6IEFubm90YXRpb25Db25maWdPcHRpb25bXSB8IHVuZGVmaW5lZCwga2V5OiBzdHJpbmcpIHtcbiAgICByZXR1cm4gb3B0aW9ucz8uZmluZChvcHRpb24gPT4gb3B0aW9uLmtleSA9PT0ga2V5KTtcbiAgfVxuXG4gIGlzUmVhZG9ubHkoa2V5OiBzdHJpbmcpIHtcbiAgICByZXR1cm4gdGhpcy5pc1VwZGF0ZSAmJiB0aGlzLnJlYWRvbmx5UGFydGlhbEtleXMuc29tZShrID0+IGtleS5pbmNsdWRlcyhrKSk7XG4gIH1cblxuICBvdmVycmlkZSBnZXREZWZhdWx0Rm9ybU1vZGVsKCk6IEtleVZhbHVlVHVwbGVbXSB7XG4gICAgcmV0dXJuIFtbJycsICcnXV07XG4gIH1cblxuICBvdmVycmlkZSBhZGFwdFJlc291cmNlTW9kZWwocmVzb3VyY2U6IFN0cmluZ01hcCkge1xuICAgIGxldCBuZXdGb3JtTW9kZWwgPSBPYmplY3QuZW50cmllcyhyZXNvdXJjZSB8fCB7fSk7XG4gICAgLy8g5o6S5bqP77yM5YWI5oyJ5a2X5q+N5o6S5bqP77yM5YaN5oqKIHJlYWRvbmx5IOeahOaUvuWJjemdolxuICAgIG5ld0Zvcm1Nb2RlbCA9IHNvcnRCeShuZXdGb3JtTW9kZWwsIChhcnI6IFtzdHJpbmcsIHN0cmluZ10pID0+IGFyclswXSk7XG4gICAgbmV3Rm9ybU1vZGVsLnNvcnQoKGFycjE6IFtzdHJpbmcsIHN0cmluZ10sIGFycjI6IFtzdHJpbmcsIHN0cmluZ10pID0+IHtcbiAgICAgIGNvbnN0IGZsYWcxID0gdGhpcy5pc1JlYWRvbmx5KGFycjFbMF0pO1xuICAgICAgY29uc3QgZmxhZzIgPSB0aGlzLmlzUmVhZG9ubHkoYXJyMlswXSk7XG4gICAgICBpZiAoKGZsYWcxICYmIGZsYWcyKSB8fCAoIWZsYWcxICYmICFmbGFnMikpIHtcbiAgICAgICAgcmV0dXJuIDA7XG4gICAgICB9XG4gICAgICByZXR1cm4gZmxhZzEgPyAtMSA6IDE7XG4gICAgfSk7XG5cbiAgICBpZiAobmV3Rm9ybU1vZGVsLmxlbmd0aCA9PT0gMCkge1xuICAgICAgbmV3Rm9ybU1vZGVsID0gdGhpcy5nZXREZWZhdWx0Rm9ybU1vZGVsKCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIG5ld0Zvcm1Nb2RlbDtcbiAgfVxuXG4gIG92ZXJyaWRlIGdldEtleVZhbGlkYXRvcnMoKSB7XG4gICAgcmV0dXJuIGs4c1Jlc291cmNlQW5ub3RhdGlvbktleVZhbGlkYXRvcjtcbiAgfVxuXG4gIGlzTGFiZWxSZWFkb25seShjb250cm9sOiBGb3JtQXJyYXk8Rm9ybUNvbnRyb2w8c3RyaW5nPj4pIHtcbiAgICByZXR1cm4gY29udHJvbC52YWxpZCAmJiB0aGlzLmlzUmVhZG9ubHkoY29udHJvbC5nZXQoJzAnKS52YWx1ZSk7XG4gIH1cblxuICBnZXRBY3RpdmVDb25maWdPcHRpb24oXG4gICAgb3B0aW9uczogQW5ub3RhdGlvbkNvbmZpZ09wdGlvbltdIHwgdW5kZWZpbmVkLFxuICAgIGtleTogc3RyaW5nLFxuICApIHtcbiAgICByZXR1cm4gb3B0aW9ucz8uZmluZChvID0+IG8ua2V5ID09PSBrZXkpO1xuICB9XG5cbiAgb25LZXlTZWxlY3RlZChjb250cm9sOiBGb3JtQXJyYXk8Rm9ybUNvbnRyb2w8c3RyaW5nPj4pIHtcbiAgICBjb25zdCBrZXlDdHJsID0gY29udHJvbC5nZXQoJzAnKTtcbiAgICBrZXlDdHJsLm1hcmtBc0RpcnR5KCk7XG4gICAga2V5Q3RybC51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XG4gIH1cblxuICAvLyBBbm5vdGF0aW9uQ29uZmlnT3B0aW9uLmRvYyDphY3nva7kuobkuqflk4Eg77yIcHJvZHVjdO+8ieWxnuaAp+S5i+WQjumcgOimgeW9k+WJjeinhuWbvumatuWxnuS6juivpeS6p+WTgeaXtuaJjeWxleekuiBkb2Mg6ZO+5o6l77yM5pyq6YWN572u55qE6K+d5LiN5Y+X6ZmQ5Yi2XG4gIHNob3dEb2NMaW5rKGJhc2VIcmVmOiBzdHJpbmcsIHByb2R1Y3Q/OiBrZXlvZiB0eXBlb2YgUFJPRFVDVF9CQVNFX0hSRUZfTUFQKSB7XG4gICAgaWYgKCFwcm9kdWN0KSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICByZXR1cm4gUFJPRFVDVF9CQVNFX0hSRUZfTUFQW3Byb2R1Y3RdID09PSBiYXNlSHJlZjtcbiAgfVxufVxuIiwiPGFjbC1hcnJheS1mb3JtLXRhYmxlXG4gIFtmb3JtR3JvdXBdPVwiJGFueShmb3JtKVwiXG4gIFtyb3dzXT1cImZvcm0uY29udHJvbHNcIlxuICAoYWRkKT1cImZvcm0ucHVzaChjcmVhdGVOZXdDb250cm9sKCkpXCJcbiAgKHJlbW92ZSk9XCJyZW1vdmUoJGV2ZW50KVwiXG4gIFtyZXNvdXJjZU5hbWVdPVwicmVzb3VyY2VOYW1lXCJcbj5cbiAgPG5nLWNvbnRhaW5lciAqYWNsQXJyYXlGb3JtVGFibGVIZWFkZXI+XG4gICAgPHRoIGNsYXNzPVwiY29sdW1uXCI+e3sgJ2tleScgfCB0cmFuc2xhdGUgfX08L3RoPlxuICAgIDx0aCBjbGFzcz1cImNvbHVtblwiPnt7ICd2YWx1ZScgfCB0cmFuc2xhdGUgfX08L3RoPlxuICA8L25nLWNvbnRhaW5lcj5cblxuICA8bmctY29udGFpbmVyXG4gICAgKmFjbEFycmF5Rm9ybVRhYmxlUm93PVwibGV0IGNvbnRyb2w7IGxldCBpbmRleCA9IGluZGV4XCJcbiAgICBbZm9ybUdyb3VwTmFtZV09XCJpbmRleFwiXG4gID5cbiAgICA8bmctY29udGFpbmVyXG4gICAgICAqbmdJZj1cIntcbiAgICAgICAgY29uZmlnOiBLTk9XTl9BTk5PVEFUSU9OU1tjbHVzdGVyVHlwZV0sXG4gICAgICAgIHJlYWRvbmx5OiBpc0xhYmVsUmVhZG9ubHkoY29udHJvbClcbiAgICAgIH0gYXMgX1wiXG4gICAgPlxuICAgICAgPHRkIGNsYXNzPVwiY29sdW1uXCI+XG4gICAgICAgIDxpbnB1dFxuICAgICAgICAgIGF1aS1pbnB1dFxuICAgICAgICAgIFtyZWFkb25seV09XCJfLnJlYWRvbmx5XCJcbiAgICAgICAgICAoYmx1cik9XCJvbkJsdXIoKVwiXG4gICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwiMFwiXG4gICAgICAgICAgW2F1aUF1dG9jb21wbGV0ZV09XCJrZXlTdWdnZXN0aW9uXCJcbiAgICAgICAgICAoYXVpQXV0b2NvbXBsZXRlU2VsZWN0ZWQpPVwib25LZXlTZWxlY3RlZChjb250cm9sKVwiXG4gICAgICAgIC8+XG4gICAgICAgIDxhdWktYXV0b2NvbXBsZXRlICNrZXlTdWdnZXN0aW9uPlxuICAgICAgICAgIDxhdWktc3VnZ2VzdGlvblxuICAgICAgICAgICAgKm5nRm9yPVwiXG4gICAgICAgICAgICAgIGxldCBvcHRpb24gb2YgXy5yZWFkb25seVxuICAgICAgICAgICAgICAgID8gbnVsbFxuICAgICAgICAgICAgICAgIDogZmlsdGVyT3B0aW9ucyhfLmNvbmZpZz8ub3B0aW9ucywgaW5kZXgpXG4gICAgICAgICAgICBcIlxuICAgICAgICAgICAgW3ZhbHVlXT1cIm9wdGlvbi5rZXlcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIHt7IG9wdGlvbi5rZXkgfX1cbiAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgKm5nSWY9XCJvcHRpb24udGlwIHwgdHJhbnNsYXRlIGFzIHRpcFwiXG4gICAgICAgICAgICAgIGNsYXNzPVwidHctdGV4dC1oZWxwLXRleHQgdHctdGV4dC1zXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAge3sgdGlwIH19XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2F1aS1zdWdnZXN0aW9uPlxuICAgICAgICA8L2F1aS1hdXRvY29tcGxldGU+XG4gICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAqbmdJZj1cIlxuICAgICAgICAgICAgKFxuICAgICAgICAgICAgICBfLmNvbmZpZz8ub3B0aW9uc1xuICAgICAgICAgICAgICB8IHB1cmU6IGdldEFjdGl2ZUNvbmZpZ09wdGlvbjpjb250cm9sLmdldCgnMCcpLnZhbHVlXG4gICAgICAgICAgICApPy5kb2MgYXMgZG9jXG4gICAgICAgICAgXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICpuZ0lmPVwiYmFzZUhyZWYgfCBwdXJlOiBzaG93RG9jTGluazpkb2MucHJvZHVjdFwiXG4gICAgICAgICAgICBjbGFzcz1cInR3LXRleHQtaGVscC10ZXh0IHR3LXRleHQtcyB0dy1tdC00XCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiZG9jLnRpcFByZWZpeFwiPlxuICAgICAgICAgICAgICB7eyBkb2MudGlwUHJlZml4IHwgdHJhbnNsYXRlIH19XG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIDxhXG4gICAgICAgICAgICAgIFthY2xEb2NzXT1cIntcbiAgICAgICAgICAgICAgICBwYXRoOiBkb2MucGF0aCxcbiAgICAgICAgICAgICAgICByYXdVcmw6IGRvYy5yYXdVcmwsXG4gICAgICAgICAgICAgICAgdHlwZTogJ3BhZ2UnLFxuICAgICAgICAgICAgICB9XCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAge3sgZG9jLnRpcCB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgICAgICA8YXVpLWljb24gaWNvbj1cImp1bXBcIj48L2F1aS1pY29uPlxuICAgICAgICAgICAgPC9hPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgIDwvdGQ+XG4gICAgICA8dGQgY2xhc3M9XCJjb2x1bW5cIj5cbiAgICAgICAgPGlucHV0XG4gICAgICAgICAgYXVpLWlucHV0XG4gICAgICAgICAgW3JlYWRvbmx5XT1cIl8ucmVhZG9ubHlcIlxuICAgICAgICAgIChibHVyKT1cIm9uQmx1cigpXCJcbiAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCIxXCJcbiAgICAgICAgICBbYXVpQXV0b2NvbXBsZXRlXT1cInZhbHVlU3VnZ2VzdGlvblwiXG4gICAgICAgIC8+XG4gICAgICAgIDxhdWktYXV0b2NvbXBsZXRlICN2YWx1ZVN1Z2dlc3Rpb24+XG4gICAgICAgICAgPGF1aS1zdWdnZXN0aW9uXG4gICAgICAgICAgICAqbmdGb3I9XCJcbiAgICAgICAgICAgICAgbGV0IG9wdGlvbiBvZiBfLnJlYWRvbmx5XG4gICAgICAgICAgICAgICAgPyBudWxsXG4gICAgICAgICAgICAgICAgOiAoXG4gICAgICAgICAgICAgICAgICAgIF8uY29uZmlnPy5vcHRpb25zXG4gICAgICAgICAgICAgICAgICAgIHwgcHVyZTogZ2V0Q29uZmlnT3B0aW9uOmNvbnRyb2wuZ2V0KCcwJykudmFsdWVcbiAgICAgICAgICAgICAgICAgICk/LnZhbHVlc1xuICAgICAgICAgICAgXCJcbiAgICAgICAgICAgIFt2YWx1ZV09XCJvcHRpb24udmFsdWVcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIHt7IG9wdGlvbi52YWx1ZSB9fVxuICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAqbmdJZj1cIm9wdGlvbi50aXAgfCB0cmFuc2xhdGUgYXMgdGlwXCJcbiAgICAgICAgICAgICAgY2xhc3M9XCJ0dy10ZXh0LWhlbHAtdGV4dCB0dy10ZXh0LXNcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICB7eyB0aXAgfX1cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvYXVpLXN1Z2dlc3Rpb24+XG4gICAgICAgIDwvYXVpLWF1dG9jb21wbGV0ZT5cbiAgICAgICAgPGRpdlxuICAgICAgICAgICpuZ0lmPVwiXG4gICAgICAgICAgICAoXG4gICAgICAgICAgICAgIF8uY29uZmlnPy5vcHRpb25zXG4gICAgICAgICAgICAgIHwgcHVyZTogZ2V0QWN0aXZlQ29uZmlnT3B0aW9uOmNvbnRyb2wuZ2V0KCcwJykudmFsdWVcbiAgICAgICAgICAgICk/LnZhbHVlIGFzIHZhbHVlQ29uZmlnXG4gICAgICAgICAgXCJcbiAgICAgICAgICBjbGFzcz1cInR3LXRleHQtaGVscC10ZXh0IHR3LXRleHQtc1wiXG4gICAgICAgID5cbiAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAqbmdJZj1cImNvbnRyb2wuZ2V0KCcxJykudmFsdWUgPT09IHZhbHVlQ29uZmlnLmV4YW1wbGVcIlxuICAgICAgICAgICAgY2xhc3M9XCJ0dy10ZXh0LXllbGxvdyB0dy1tdC00XCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICB7eyAnbmV0d29yay5yZWFkX2ZpbGxpbmdfaW5zdHJ1Y3Rpb25zX3RpcCcgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwidHctYnJlYWstYWxsIHR3LW15LTRcIj5cbiAgICAgICAgICAgIHt7IHZhbHVlQ29uZmlnLnRpcCB8IHRyYW5zbGF0ZTogeyBleGFtcGxlOiB2YWx1ZUNvbmZpZy5leGFtcGxlIH0gfX1cbiAgICAgICAgICAgIDxhdWktaWNvblxuICAgICAgICAgICAgICBjbGFzcz1cInR3LXRleHQtcHJpbWFyeSB0dy1jdXJzb3ItcG9pbnRlclwiXG4gICAgICAgICAgICAgIGljb249XCJhcnJvd190dXJuX3VwXCJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cImNvbnRyb2wuZ2V0KCcxJykuc2V0VmFsdWUodmFsdWVDb25maWcuZXhhbXBsZSlcIlxuICAgICAgICAgICAgPjwvYXVpLWljb24+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGFcbiAgICAgICAgICAgIFtocmVmXT1cInZhbHVlQ29uZmlnLmRvY0xpbmtcIlxuICAgICAgICAgICAgcmVsPVwibm9vcGVuZXIgbm9yZWZlcnJlclwiXG4gICAgICAgICAgICB0YXJnZXQ9XCJfYmxhbmtcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIHt7ICduZXR3b3JrLmZpbGxpbmdfaW5zdHJ1Y3Rpb25zJyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgICAgPGF1aS1pY29uIGljb249XCJqdW1wXCI+PC9hdWktaWNvbj5cbiAgICAgICAgICA8L2E+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC90ZD5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgPC9uZy1jb250YWluZXI+XG5cbiAgPG5nLWNvbnRhaW5lciAqYWNsQXJyYXlGb3JtVGFibGVSb3dFcnJvcj1cImxldCBjb250cm9sXCI+XG4gICAgPHRkXG4gICAgICAqbmdJZj1cImNvbnRyb2wuaW52YWxpZFwiXG4gICAgICBjb2xzcGFuPVwiM1wiXG4gICAgICBjbGFzcz1cImFjbC10YWJsZS1mb3JtLWVycm9yLWhpbnRcIlxuICAgID5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb250cm9sLmVycm9ycz8ua2V5SXNNaXNzaW5nXCI+XG4gICAgICAgIHt7ICdrOHNfcmVzb3VyY2VfbGFiZWxfa2V5X3JlcXVpcmVkJyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb250cm9sLmVycm9ycz8uZHVwbGljYXRlRXJyb3JcIj5cbiAgICAgICAge3sgJ2s4c19yZXNvdXJjZV9sYWJlbF9rZXlfZHVwbGljYXRlZCcgfCB0cmFuc2xhdGUgfX1cbiAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICA8YWNsLWVycm9ycy1tYXBwZXJcbiAgICAgICAgYXVpRm9ybUl0ZW1FcnJvclxuICAgICAgICBbZXJyb3JzXT1cImNvbnRyb2wuZ2V0KCcwJykuZXJyb3JzXCJcbiAgICAgICAgW2Vycm9yc01hcHBlcl09XCIoYW5ub3RhdGlvbnNFcnJvcnNNYXBwZXIgfCBhc3luYykua2V5XCJcbiAgICAgID48L2FjbC1lcnJvcnMtbWFwcGVyPlxuICAgICAgPGFjbC1lcnJvcnMtbWFwcGVyXG4gICAgICAgIGF1aUZvcm1JdGVtRXJyb3JcbiAgICAgICAgW2Vycm9yc109XCJjb250cm9sLmdldCgnMScpLmVycm9yc1wiXG4gICAgICA+PC9hY2wtZXJyb3JzLW1hcHBlcj5cbiAgICA8L3RkPlxuICA8L25nLWNvbnRhaW5lcj5cblxuICA8bmctY29udGFpbmVyICphY2xBcnJheUZvcm1UYWJsZVJvd0NvbnRyb2w9XCJsZXQgaXRlbTsgbGV0IGluZGV4ID0gaW5kZXhcIj5cbiAgICA8YnV0dG9uXG4gICAgICBhdWktYnV0dG9uPVwidGV4dFwiXG4gICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgIFtzcXVhcmVdPVwidHJ1ZVwiXG4gICAgICBbcGxhaW5dPVwidHJ1ZVwiXG4gICAgICBbZGlzYWJsZWRdPVwiaXNMYWJlbFJlYWRvbmx5KGl0ZW0pXCJcbiAgICAgIChjbGljayk9XCJyZW1vdmUoaW5kZXgpXCJcbiAgICA+XG4gICAgICA8YXVpLWljb24gaWNvbj1cIm1pbnVzX2NpcmNsZVwiPjwvYXVpLWljb24+XG4gICAgPC9idXR0b24+XG4gIDwvbmctY29udGFpbmVyPlxuPC9hY2wtYXJyYXktZm9ybS10YWJsZT5cblxuPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuXG48ZGl2XG4gICpuZ0lmPVwiS05PV05fQU5OT1RBVElPTlNbY2x1c3RlclR5cGVdIGFzIGNvbmZpZ1wiXG4gIGNsYXNzPVwidHctdGV4dC1oZWxwLXRleHQgdHctdGV4dC1zIHR3LW10LTRcIlxuPlxuICA8bmctY29udGFpbmVyIFthY2xUcmFuc2xhdGVdPVwiJ2RvY3VtZW50YXRpb25fZm9yX2xiX3NlcnZpY2VfYW5ub3RhdGlvbnMnXCI+XG4gICAgPG5nLWNvbnRhaW5lciAqYWNsVHJhbnNsYXRlVGV4dD1cImxldCB0ZXh0XCI+e3sgdGV4dCB9fTwvbmctY29udGFpbmVyPlxuICAgIDxuZy1jb250YWluZXIgKmFjbFRyYW5zbGF0ZU1hdGNoPVwiJ3R5cGUnXCI+e3sgY29uZmlnLmxhYmVsIH19PC9uZy1jb250YWluZXI+XG4gICAgPGFcbiAgICAgICphY2xUcmFuc2xhdGVNYXRjaD1cIidkb2N1bWVudGF0aW9uJ1wiXG4gICAgICBbaHJlZl09XCJjb25maWcuZG9jTGlua1wiXG4gICAgICB0YXJnZXQ9XCJfYmxhbmtcIlxuICAgICAgcmVsPVwibm9vcGVuZXIgbm9yZWZlcnJlclwiXG4gICAgPlxuICAgICAge3sgJ2RvY3VtZW50YXRpb24nIHwgdHJhbnNsYXRlIH19XG4gICAgICA8YXVpLWljb24gaWNvbj1cImp1bXBcIj48L2F1aS1pY29uPiA8L2FcbiAgPjwvbmctY29udGFpbmVyPlxuPC9kaXY+XG4iXX0=
|