@skyux/inline-form 7.0.0-beta.4 → 7.0.0-beta.5
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/documentation.json +52 -52
- package/esm2020/lib/modules/inline-form/inline-form.component.mjs +123 -129
- package/fesm2015/skyux-inline-form.mjs +122 -129
- package/fesm2015/skyux-inline-form.mjs.map +1 -1
- package/fesm2020/skyux-inline-form.mjs +122 -128
- package/fesm2020/skyux-inline-form.mjs.map +1 -1
- package/lib/modules/inline-form/inline-form.component.d.ts +0 -3
- package/package.json +3 -3
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
var _SkyInlineFormComponent_instances, _SkyInlineFormComponent__config, _SkyInlineFormComponent__showForm, _SkyInlineFormComponent_adapter, _SkyInlineFormComponent_elementRef, _SkyInlineFormComponent_resourcesService, _SkyInlineFormComponent_skyAppWindowRef, _SkyInlineFormComponent_changeDetectorRef, _SkyInlineFormComponent_setupButtons;
|
|
1
|
+
var _SkyInlineFormComponent_instances, _SkyInlineFormComponent__config, _SkyInlineFormComponent__showForm, _SkyInlineFormComponent_ngUnsubscribe, _SkyInlineFormComponent_adapter, _SkyInlineFormComponent_elementRef, _SkyInlineFormComponent_resourcesService, _SkyInlineFormComponent_skyAppWindowRef, _SkyInlineFormComponent_changeDetectorRef, _SkyInlineFormComponent_setupButtons, _SkyInlineFormComponent_getPresetButtons, _SkyInlineFormComponent_getCustomButtons, _SkyInlineFormComponent_isValidCustomConfig;
|
|
2
2
|
import { __classPrivateFieldGet, __classPrivateFieldSet } from "tslib";
|
|
3
3
|
import { ChangeDetectionStrategy, ChangeDetectorRef, Component, ElementRef, EventEmitter, Input, Output, } from '@angular/core';
|
|
4
4
|
import { SkyAppWindowRef } from '@skyux/core';
|
|
5
5
|
import { SkyLibResourcesService } from '@skyux/i18n';
|
|
6
|
-
import { zip as observableZip } from 'rxjs';
|
|
7
|
-
import {
|
|
6
|
+
import { ReplaySubject, Subject, zip as observableZip } from 'rxjs';
|
|
7
|
+
import { takeUntil } from 'rxjs/operators';
|
|
8
8
|
import { skySlideDissolve } from './animations/slide-dissolve';
|
|
9
9
|
import { SkyInlineFormAdapterService } from './inline-form-adapter.service';
|
|
10
10
|
import { SkyInlineFormButtonLayout } from './types/inline-form-button-layout';
|
|
@@ -25,6 +25,7 @@ export class SkyInlineFormComponent {
|
|
|
25
25
|
this.close = new EventEmitter();
|
|
26
26
|
_SkyInlineFormComponent__config.set(this, void 0);
|
|
27
27
|
_SkyInlineFormComponent__showForm.set(this, false);
|
|
28
|
+
_SkyInlineFormComponent_ngUnsubscribe.set(this, new Subject());
|
|
28
29
|
_SkyInlineFormComponent_adapter.set(this, void 0);
|
|
29
30
|
_SkyInlineFormComponent_elementRef.set(this, void 0);
|
|
30
31
|
_SkyInlineFormComponent_resourcesService.set(this, void 0);
|
|
@@ -72,6 +73,8 @@ export class SkyInlineFormComponent {
|
|
|
72
73
|
__classPrivateFieldGet(this, _SkyInlineFormComponent_instances, "m", _SkyInlineFormComponent_setupButtons).call(this);
|
|
73
74
|
}
|
|
74
75
|
ngOnDestroy() {
|
|
76
|
+
__classPrivateFieldGet(this, _SkyInlineFormComponent_ngUnsubscribe, "f").next();
|
|
77
|
+
__classPrivateFieldGet(this, _SkyInlineFormComponent_ngUnsubscribe, "f").complete();
|
|
75
78
|
this.close.complete();
|
|
76
79
|
}
|
|
77
80
|
closeInlineForm(event) {
|
|
@@ -80,140 +83,131 @@ export class SkyInlineFormComponent {
|
|
|
80
83
|
};
|
|
81
84
|
this.close.emit(args);
|
|
82
85
|
}
|
|
83
|
-
getPresetButtons() {
|
|
84
|
-
const buttonType = this.config
|
|
85
|
-
? this.config.buttonLayout
|
|
86
|
-
: SkyInlineFormButtonLayout.DoneCancel;
|
|
87
|
-
let promise;
|
|
88
|
-
switch (buttonType) {
|
|
89
|
-
/* istanbul ignore next */
|
|
90
|
-
default:
|
|
91
|
-
case SkyInlineFormButtonLayout.DoneCancel:
|
|
92
|
-
observableZip(__classPrivateFieldGet(this, _SkyInlineFormComponent_resourcesService, "f").getString('skyux_inline_form_button_done'), __classPrivateFieldGet(this, _SkyInlineFormComponent_resourcesService, "f").getString('skyux_inline_form_button_cancel'))
|
|
93
|
-
.pipe(take(1))
|
|
94
|
-
.subscribe((values) => {
|
|
95
|
-
promise = new Promise((resolve) => {
|
|
96
|
-
resolve([
|
|
97
|
-
{
|
|
98
|
-
text: values[0],
|
|
99
|
-
styleType: 'primary',
|
|
100
|
-
action: 'done',
|
|
101
|
-
},
|
|
102
|
-
{
|
|
103
|
-
text: values[1],
|
|
104
|
-
styleType: 'link',
|
|
105
|
-
action: 'cancel',
|
|
106
|
-
},
|
|
107
|
-
]);
|
|
108
|
-
});
|
|
109
|
-
});
|
|
110
|
-
break;
|
|
111
|
-
case SkyInlineFormButtonLayout.SaveCancel:
|
|
112
|
-
observableZip(__classPrivateFieldGet(this, _SkyInlineFormComponent_resourcesService, "f").getString('skyux_inline_form_button_save'), __classPrivateFieldGet(this, _SkyInlineFormComponent_resourcesService, "f").getString('skyux_inline_form_button_cancel'))
|
|
113
|
-
.pipe(take(1))
|
|
114
|
-
.subscribe((values) => {
|
|
115
|
-
promise = new Promise((resolve) => {
|
|
116
|
-
resolve([
|
|
117
|
-
{
|
|
118
|
-
text: values[0],
|
|
119
|
-
styleType: 'primary',
|
|
120
|
-
action: 'save',
|
|
121
|
-
},
|
|
122
|
-
{
|
|
123
|
-
text: values[1],
|
|
124
|
-
styleType: 'link',
|
|
125
|
-
action: 'cancel',
|
|
126
|
-
},
|
|
127
|
-
]);
|
|
128
|
-
});
|
|
129
|
-
});
|
|
130
|
-
break;
|
|
131
|
-
case SkyInlineFormButtonLayout.DoneDeleteCancel:
|
|
132
|
-
observableZip(__classPrivateFieldGet(this, _SkyInlineFormComponent_resourcesService, "f").getString('skyux_inline_form_button_done'), __classPrivateFieldGet(this, _SkyInlineFormComponent_resourcesService, "f").getString('skyux_inline_form_button_delete'), __classPrivateFieldGet(this, _SkyInlineFormComponent_resourcesService, "f").getString('skyux_inline_form_button_cancel'))
|
|
133
|
-
.pipe(take(1))
|
|
134
|
-
.subscribe((values) => {
|
|
135
|
-
promise = new Promise((resolve) => {
|
|
136
|
-
resolve([
|
|
137
|
-
{
|
|
138
|
-
text: values[0],
|
|
139
|
-
styleType: 'primary',
|
|
140
|
-
action: 'done',
|
|
141
|
-
},
|
|
142
|
-
{
|
|
143
|
-
text: values[1],
|
|
144
|
-
styleType: 'default',
|
|
145
|
-
action: 'delete',
|
|
146
|
-
},
|
|
147
|
-
{
|
|
148
|
-
text: values[2],
|
|
149
|
-
styleType: 'link',
|
|
150
|
-
action: 'cancel',
|
|
151
|
-
},
|
|
152
|
-
]);
|
|
153
|
-
});
|
|
154
|
-
});
|
|
155
|
-
break;
|
|
156
|
-
case SkyInlineFormButtonLayout.SaveDeleteCancel:
|
|
157
|
-
observableZip(__classPrivateFieldGet(this, _SkyInlineFormComponent_resourcesService, "f").getString('skyux_inline_form_button_save'), __classPrivateFieldGet(this, _SkyInlineFormComponent_resourcesService, "f").getString('skyux_inline_form_button_delete'), __classPrivateFieldGet(this, _SkyInlineFormComponent_resourcesService, "f").getString('skyux_inline_form_button_cancel'))
|
|
158
|
-
.pipe(take(1))
|
|
159
|
-
.subscribe((values) => {
|
|
160
|
-
promise = new Promise((resolve) => {
|
|
161
|
-
resolve([
|
|
162
|
-
{
|
|
163
|
-
text: values[0],
|
|
164
|
-
styleType: 'primary',
|
|
165
|
-
action: 'save',
|
|
166
|
-
},
|
|
167
|
-
{
|
|
168
|
-
text: values[1],
|
|
169
|
-
styleType: 'default',
|
|
170
|
-
action: 'delete',
|
|
171
|
-
},
|
|
172
|
-
{
|
|
173
|
-
text: values[2],
|
|
174
|
-
styleType: 'link',
|
|
175
|
-
action: 'cancel',
|
|
176
|
-
},
|
|
177
|
-
]);
|
|
178
|
-
});
|
|
179
|
-
});
|
|
180
|
-
break;
|
|
181
|
-
}
|
|
182
|
-
return promise;
|
|
183
|
-
}
|
|
184
|
-
getCustomButtons(buttonConfigs) {
|
|
185
|
-
const buttons = [];
|
|
186
|
-
buttonConfigs.forEach((config) => {
|
|
187
|
-
/* istanbul ignore next */
|
|
188
|
-
const styleType = config.styleType || 'default';
|
|
189
|
-
buttons.push({
|
|
190
|
-
action: config.action,
|
|
191
|
-
disabled: config.disabled,
|
|
192
|
-
styleType: styleType,
|
|
193
|
-
text: config.text,
|
|
194
|
-
});
|
|
195
|
-
});
|
|
196
|
-
return buttons;
|
|
197
|
-
}
|
|
198
|
-
isValidCustomConfig(config) {
|
|
199
|
-
return (!!config &&
|
|
200
|
-
!!config.buttons &&
|
|
201
|
-
config.buttons.length > 0 &&
|
|
202
|
-
config.buttonLayout === SkyInlineFormButtonLayout.Custom);
|
|
203
|
-
}
|
|
204
86
|
}
|
|
205
|
-
_SkyInlineFormComponent__config = new WeakMap(), _SkyInlineFormComponent__showForm = new WeakMap(), _SkyInlineFormComponent_adapter = new WeakMap(), _SkyInlineFormComponent_elementRef = new WeakMap(), _SkyInlineFormComponent_resourcesService = new WeakMap(), _SkyInlineFormComponent_skyAppWindowRef = new WeakMap(), _SkyInlineFormComponent_changeDetectorRef = new WeakMap(), _SkyInlineFormComponent_instances = new WeakSet(), _SkyInlineFormComponent_setupButtons = function _SkyInlineFormComponent_setupButtons() {
|
|
206
|
-
if (this.
|
|
87
|
+
_SkyInlineFormComponent__config = new WeakMap(), _SkyInlineFormComponent__showForm = new WeakMap(), _SkyInlineFormComponent_ngUnsubscribe = new WeakMap(), _SkyInlineFormComponent_adapter = new WeakMap(), _SkyInlineFormComponent_elementRef = new WeakMap(), _SkyInlineFormComponent_resourcesService = new WeakMap(), _SkyInlineFormComponent_skyAppWindowRef = new WeakMap(), _SkyInlineFormComponent_changeDetectorRef = new WeakMap(), _SkyInlineFormComponent_instances = new WeakSet(), _SkyInlineFormComponent_setupButtons = function _SkyInlineFormComponent_setupButtons() {
|
|
88
|
+
if (__classPrivateFieldGet(this, _SkyInlineFormComponent_instances, "m", _SkyInlineFormComponent_isValidCustomConfig).call(this, this.config) &&
|
|
207
89
|
this.config &&
|
|
208
90
|
this.config.buttons) {
|
|
209
|
-
this.buttons = this.
|
|
91
|
+
this.buttons = __classPrivateFieldGet(this, _SkyInlineFormComponent_instances, "m", _SkyInlineFormComponent_getCustomButtons).call(this, this.config.buttons);
|
|
210
92
|
__classPrivateFieldGet(this, _SkyInlineFormComponent_changeDetectorRef, "f").markForCheck();
|
|
211
93
|
return;
|
|
212
94
|
}
|
|
213
|
-
this.
|
|
95
|
+
__classPrivateFieldGet(this, _SkyInlineFormComponent_instances, "m", _SkyInlineFormComponent_getPresetButtons).call(this)
|
|
96
|
+
.pipe(takeUntil(__classPrivateFieldGet(this, _SkyInlineFormComponent_ngUnsubscribe, "f")))
|
|
97
|
+
.subscribe((buttons) => {
|
|
214
98
|
this.buttons = buttons;
|
|
215
99
|
__classPrivateFieldGet(this, _SkyInlineFormComponent_changeDetectorRef, "f").markForCheck();
|
|
216
100
|
});
|
|
101
|
+
}, _SkyInlineFormComponent_getPresetButtons = function _SkyInlineFormComponent_getPresetButtons() {
|
|
102
|
+
const emitter = new ReplaySubject(1);
|
|
103
|
+
const buttonType = this.config
|
|
104
|
+
? this.config.buttonLayout
|
|
105
|
+
: SkyInlineFormButtonLayout.DoneCancel;
|
|
106
|
+
switch (buttonType) {
|
|
107
|
+
/* istanbul ignore next */
|
|
108
|
+
default:
|
|
109
|
+
case SkyInlineFormButtonLayout.DoneCancel:
|
|
110
|
+
observableZip(__classPrivateFieldGet(this, _SkyInlineFormComponent_resourcesService, "f").getString('skyux_inline_form_button_done'), __classPrivateFieldGet(this, _SkyInlineFormComponent_resourcesService, "f").getString('skyux_inline_form_button_cancel'))
|
|
111
|
+
.pipe(takeUntil(__classPrivateFieldGet(this, _SkyInlineFormComponent_ngUnsubscribe, "f")))
|
|
112
|
+
.subscribe((values) => {
|
|
113
|
+
emitter.next([
|
|
114
|
+
{
|
|
115
|
+
text: values[0],
|
|
116
|
+
styleType: 'primary',
|
|
117
|
+
action: 'done',
|
|
118
|
+
},
|
|
119
|
+
{
|
|
120
|
+
text: values[1],
|
|
121
|
+
styleType: 'link',
|
|
122
|
+
action: 'cancel',
|
|
123
|
+
},
|
|
124
|
+
]);
|
|
125
|
+
});
|
|
126
|
+
break;
|
|
127
|
+
case SkyInlineFormButtonLayout.SaveCancel:
|
|
128
|
+
observableZip(__classPrivateFieldGet(this, _SkyInlineFormComponent_resourcesService, "f").getString('skyux_inline_form_button_save'), __classPrivateFieldGet(this, _SkyInlineFormComponent_resourcesService, "f").getString('skyux_inline_form_button_cancel'))
|
|
129
|
+
.pipe(takeUntil(__classPrivateFieldGet(this, _SkyInlineFormComponent_ngUnsubscribe, "f")))
|
|
130
|
+
.subscribe((values) => {
|
|
131
|
+
emitter.next([
|
|
132
|
+
{
|
|
133
|
+
text: values[0],
|
|
134
|
+
styleType: 'primary',
|
|
135
|
+
action: 'save',
|
|
136
|
+
},
|
|
137
|
+
{
|
|
138
|
+
text: values[1],
|
|
139
|
+
styleType: 'link',
|
|
140
|
+
action: 'cancel',
|
|
141
|
+
},
|
|
142
|
+
]);
|
|
143
|
+
});
|
|
144
|
+
break;
|
|
145
|
+
case SkyInlineFormButtonLayout.DoneDeleteCancel:
|
|
146
|
+
observableZip(__classPrivateFieldGet(this, _SkyInlineFormComponent_resourcesService, "f").getString('skyux_inline_form_button_done'), __classPrivateFieldGet(this, _SkyInlineFormComponent_resourcesService, "f").getString('skyux_inline_form_button_delete'), __classPrivateFieldGet(this, _SkyInlineFormComponent_resourcesService, "f").getString('skyux_inline_form_button_cancel'))
|
|
147
|
+
.pipe(takeUntil(__classPrivateFieldGet(this, _SkyInlineFormComponent_ngUnsubscribe, "f")))
|
|
148
|
+
.subscribe((values) => {
|
|
149
|
+
emitter.next([
|
|
150
|
+
{
|
|
151
|
+
text: values[0],
|
|
152
|
+
styleType: 'primary',
|
|
153
|
+
action: 'done',
|
|
154
|
+
},
|
|
155
|
+
{
|
|
156
|
+
text: values[1],
|
|
157
|
+
styleType: 'default',
|
|
158
|
+
action: 'delete',
|
|
159
|
+
},
|
|
160
|
+
{
|
|
161
|
+
text: values[2],
|
|
162
|
+
styleType: 'link',
|
|
163
|
+
action: 'cancel',
|
|
164
|
+
},
|
|
165
|
+
]);
|
|
166
|
+
});
|
|
167
|
+
break;
|
|
168
|
+
case SkyInlineFormButtonLayout.SaveDeleteCancel:
|
|
169
|
+
observableZip(__classPrivateFieldGet(this, _SkyInlineFormComponent_resourcesService, "f").getString('skyux_inline_form_button_save'), __classPrivateFieldGet(this, _SkyInlineFormComponent_resourcesService, "f").getString('skyux_inline_form_button_delete'), __classPrivateFieldGet(this, _SkyInlineFormComponent_resourcesService, "f").getString('skyux_inline_form_button_cancel'))
|
|
170
|
+
.pipe(takeUntil(__classPrivateFieldGet(this, _SkyInlineFormComponent_ngUnsubscribe, "f")))
|
|
171
|
+
.subscribe((values) => {
|
|
172
|
+
emitter.next([
|
|
173
|
+
{
|
|
174
|
+
text: values[0],
|
|
175
|
+
styleType: 'primary',
|
|
176
|
+
action: 'save',
|
|
177
|
+
},
|
|
178
|
+
{
|
|
179
|
+
text: values[1],
|
|
180
|
+
styleType: 'default',
|
|
181
|
+
action: 'delete',
|
|
182
|
+
},
|
|
183
|
+
{
|
|
184
|
+
text: values[2],
|
|
185
|
+
styleType: 'link',
|
|
186
|
+
action: 'cancel',
|
|
187
|
+
},
|
|
188
|
+
]);
|
|
189
|
+
});
|
|
190
|
+
break;
|
|
191
|
+
}
|
|
192
|
+
return emitter.asObservable();
|
|
193
|
+
}, _SkyInlineFormComponent_getCustomButtons = function _SkyInlineFormComponent_getCustomButtons(buttonConfigs) {
|
|
194
|
+
const buttons = [];
|
|
195
|
+
buttonConfigs.forEach((config) => {
|
|
196
|
+
/* istanbul ignore next */
|
|
197
|
+
const styleType = config.styleType || 'default';
|
|
198
|
+
buttons.push({
|
|
199
|
+
action: config.action,
|
|
200
|
+
disabled: config.disabled,
|
|
201
|
+
styleType: styleType,
|
|
202
|
+
text: config.text,
|
|
203
|
+
});
|
|
204
|
+
});
|
|
205
|
+
return buttons;
|
|
206
|
+
}, _SkyInlineFormComponent_isValidCustomConfig = function _SkyInlineFormComponent_isValidCustomConfig(config) {
|
|
207
|
+
return (!!config &&
|
|
208
|
+
!!config.buttons &&
|
|
209
|
+
config.buttons.length > 0 &&
|
|
210
|
+
config.buttonLayout === SkyInlineFormButtonLayout.Custom);
|
|
217
211
|
};
|
|
218
212
|
SkyInlineFormComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: SkyInlineFormComponent, deps: [{ token: i1.SkyInlineFormAdapterService }, { token: i0.ElementRef }, { token: i2.SkyLibResourcesService }, { token: i3.SkyAppWindowRef }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
|
|
219
213
|
SkyInlineFormComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.0", type: SkyInlineFormComponent, selector: "sky-inline-form", inputs: { config: "config", template: "template", showForm: "showForm" }, outputs: { close: "close" }, providers: [SkyInlineFormAdapterService], ngImport: i0, template: "<div [@skySlideDissolve]=\"showForm\">\n <div *ngIf=\"!showForm\" class=\"sky-slide-dissolve-first\">\n <ng-content></ng-content>\n </div>\n\n <div *ngIf=\"template && showForm\" class=\"sky-slide-dissolve-last\">\n <div class=\"sky-inline-form sky-shadow sky-box sky-elevation-3\">\n <div class=\"sky-inline-form-content\">\n <ng-container [ngTemplateOutlet]=\"template\"> </ng-container>\n </div>\n <div class=\"sky-inline-form-footer\">\n <button\n *ngFor=\"let button of buttons\"\n class=\"sky-btn {{ 'sky-btn-' + button.styleType }}\"\n type=\"button\"\n [disabled]=\"button.disabled ? true : null\"\n [ngClass]=\"{ 'sky-btn-disabled': button.disabled }\"\n (click)=\"closeInlineForm(button)\"\n >\n {{ button.text }}\n </button>\n </div>\n </div>\n </div>\n</div>\n", styles: [".sky-inline-form{background:#eeeeef;border:1px solid #cdcfd2;padding:10px;width:100%}.sky-inline-form .sky-inline-form-footer{margin-top:20px}.sky-inline-form .sky-inline-form-footer button{margin:0 5px 0 0}:host-context(.sky-theme-modern) .sky-inline-form{background-color:#fff;border:none;padding:15px}:host-context(.sky-theme-modern) .sky-inline-form .sky-inline-form-footer{margin-top:30px}:host-context(.sky-theme-modern) .sky-inline-form .sky-inline-form-footer button{margin-right:10px}.sky-theme-modern .sky-inline-form{background-color:#fff;border:none;padding:15px}.sky-theme-modern .sky-inline-form .sky-inline-form-footer{margin-top:30px}.sky-theme-modern .sky-inline-form .sky-inline-form-footer button{margin-right:10px}:host-context(.sky-theme-modern.sky-theme-mode-dark) .sky-inline-form{background-color:#232427}.sky-theme-modern.sky-theme-mode-dark .sky-inline-form{background-color:#232427}\n"], dependencies: [{ kind: "directive", type: i4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }], animations: [skySlideDissolve], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
@@ -229,4 +223,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.0", ngImpor
|
|
|
229
223
|
}], close: [{
|
|
230
224
|
type: Output
|
|
231
225
|
}] } });
|
|
232
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5saW5lLWZvcm0uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL2lubGluZS1mb3JtL3NyYy9saWIvbW9kdWxlcy9pbmxpbmUtZm9ybS9pbmxpbmUtZm9ybS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvaW5saW5lLWZvcm0vc3JjL2xpYi9tb2R1bGVzL2lubGluZS1mb3JtL2lubGluZS1mb3JtLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixpQkFBaUIsRUFDakIsU0FBUyxFQUNULFVBQVUsRUFDVixZQUFZLEVBQ1osS0FBSyxFQUdMLE1BQU0sR0FFUCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQzlDLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUVyRCxPQUFPLEVBQUUsR0FBRyxJQUFJLGFBQWEsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUM1QyxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFdEMsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDL0QsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFFNUUsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sbUNBQW1DLENBQUM7Ozs7OztBQUk5RTs7R0FFRztBQVNILE1BQU0sT0FBTyxzQkFBc0I7SUFtRWpDLFlBQ0UsT0FBb0MsRUFDcEMsVUFBc0IsRUFDdEIsZ0JBQXdDLEVBQ3hDLGVBQWdDLEVBQ2hDLGlCQUFvQzs7UUF6QnRDOztXQUVHO1FBR0ksVUFBSyxHQUFHLElBQUksWUFBWSxFQUEwQixDQUFDO1FBSzFELGtE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LElBQUksQ0FBQyxNQUFNLENBQUM7UUFDckMsSUFBSSxDQUFDLE1BQU07UUFDWCxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sRUFDbkI7UUFDQSxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQzFELHVCQUFBLElBQUksaURBQW1CLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDdkMsT0FBTztLQUNSO0lBRUQsSUFBSSxDQUFDLGdCQUFnQixFQUFFLEVBQUUsSUFBSSxDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUU7UUFDeEMsSUFBSSxDQUFDLE9BQU8sR0FBRyxPQUFPLENBQUM7UUFDdkIsdUJBQUEsSUFBSSxpREFBbUIsQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUN6QyxDQUFDLENBQUMsQ0FBQztBQUNMLENBQUM7bUhBL0dVLHNCQUFzQjt1R0FBdEIsc0JBQXNCLGlKQUh0QixDQUFDLDJCQUEyQixDQUFDLDBCQ2pDMUMsazRCQXlCQSxpNkNEU2MsQ0FBQyxnQkFBZ0IsQ0FBQzsyRkFFbkIsc0JBQXNCO2tCQVJsQyxTQUFTOytCQUNFLGlCQUFpQixtQkFHVix1QkFBdUIsQ0FBQyxNQUFNLGFBQ3BDLENBQUMsMkJBQTJCLENBQUMsY0FDNUIsQ0FBQyxnQkFBZ0IsQ0FBQzs4T0FRbkIsTUFBTTtzQkFEaEIsS0FBSztnQkFpQkMsUUFBUTtzQkFEZCxLQUFLO2dCQVNLLFFBQVE7c0JBRGxCLEtBQUs7Z0JBdUJDLEtBQUs7c0JBRlgsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29tcG9uZW50LFxuICBFbGVtZW50UmVmLFxuICBFdmVudEVtaXR0ZXIsXG4gIElucHV0LFxuICBPbkRlc3Ryb3ksXG4gIE9uSW5pdCxcbiAgT3V0cHV0LFxuICBUZW1wbGF0ZVJlZixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBTa3lBcHBXaW5kb3dSZWYgfSBmcm9tICdAc2t5dXgvY29yZSc7XG5pbXBvcnQgeyBTa3lMaWJSZXNvdXJjZXNTZXJ2aWNlIH0gZnJvbSAnQHNreXV4L2kxOG4nO1xuXG5pbXBvcnQgeyB6aXAgYXMgb2JzZXJ2YWJsZVppcCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgdGFrZSB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHsgc2t5U2xpZGVEaXNzb2x2ZSB9IGZyb20gJy4vYW5pbWF0aW9ucy9zbGlkZS1kaXNzb2x2ZSc7XG5pbXBvcnQgeyBTa3lJbmxpbmVGb3JtQWRhcHRlclNlcnZpY2UgfSBmcm9tICcuL2lubGluZS1mb3JtLWFkYXB0ZXIuc2VydmljZSc7XG5pbXBvcnQgeyBTa3lJbmxpbmVGb3JtQnV0dG9uQ29uZmlnIH0gZnJvbSAnLi90eXBlcy9pbmxpbmUtZm9ybS1idXR0b24tY29uZmlnJztcbmltcG9ydCB7IFNreUlubGluZUZvcm1CdXR0b25MYXlvdXQgfSBmcm9tICcuL3R5cGVzL2lubGluZS1mb3JtLWJ1dHRvbi1sYXlvdXQnO1xuaW1wb3J0IHsgU2t5SW5saW5lRm9ybUNsb3NlQXJncyB9IGZyb20gJy4vdHlwZXMvaW5saW5lLWZvcm0tY2xvc2UtYXJncyc7XG5pbXBvcnQgeyBTa3lJbmxpbmVGb3JtQ29uZmlnIH0gZnJvbSAnLi90eXBlcy9pbmxpbmUtZm9ybS1jb25maWcnO1xuXG4vKipcbiAqIFJlbmRlcnMgZm9ybSBjb250ZW50IGluIHRoZSBjdXJyZW50IHZpZXcgaW5zdGVhZCBvZiBhIHNlcGFyYXRlIG1vZGFsLlxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdza3ktaW5saW5lLWZvcm0nLFxuICB0ZW1wbGF0ZVVybDogJy4vaW5saW5lLWZvcm0uY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9pbmxpbmUtZm9ybS5jb21wb25lbnQuc2NzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgcHJvdmlkZXJzOiBbU2t5SW5saW5lRm9ybUFkYXB0ZXJTZXJ2aWNlXSxcbiAgYW5pbWF0aW9uczogW3NreVNsaWRlRGlzc29sdmVdLFxufSlcbmV4cG9ydCBjbGFzcyBTa3lJbmxpbmVGb3JtQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICAvKipcbiAgICogU3BlY2lmaWVzIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBmb3IgdGhlIGJ1dHRvbnMgdG8gZGlzcGxheSB3aXRoIHRoZSBpbmxpbmUgZm9ybS5cbiAgICogQHJlcXVpcmVkXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IGNvbmZpZyh2YWx1ZTogU2t5SW5saW5lRm9ybUNvbmZpZyB8IHVuZGVmaW5lZCkge1xuICAgIGlmICh2YWx1ZSAhPT0gdGhpcy4jX2NvbmZpZyAmJiAhIXZhbHVlKSB7XG4gICAgICB0aGlzLiNfY29uZmlnID0gdmFsdWU7XG4gICAgICB0aGlzLiNzZXR1cEJ1dHRvbnMoKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgZ2V0IGNvbmZpZygpOiBTa3lJbmxpbmVGb3JtQ29uZmlnIHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy4jX2NvbmZpZztcbiAgfVxuXG4gIC8qKlxuICAgKiBTcGVjaWZpZXMgYSB0ZW1wbGF0ZSB0byB1c2UgdG8gaW5zdGFudGlhdGUgdGhlIGlubGluZSBmb3JtLlxuICAgKiBAcmVxdWlyZWRcbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyB0ZW1wbGF0ZTogVGVtcGxhdGVSZWY8dW5rbm93bj4gfCB1bmRlZmluZWQ7XG5cbiAgLyoqXG4gICAqIEluZGljYXRlcyB3aGV0aGVyIHRvIGRpc3BsYXkgdGhlIGlubGluZSBmb3JtLiBVc2VycyBjYW4gdG9nZ2xlIGJldHdlZW4gZGlzcGxheWluZ1xuICAgKiBhbmQgaGlkaW5nIHRoZSBpbmxpbmUgZm9ybS5cbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZXQgc2hvd0Zvcm0odmFsdWU6IGJvb2xlYW4gfCB1bmRlZmluZWQpIHtcbiAgICB0aGlzLiNfc2hvd0Zvcm0gPSB2YWx1ZTtcblxuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gICAgaWYgKHZhbHVlKSB7XG4gICAgICAvLyBzZXRUaW1lb3V0KCkgcHJldmVudHMgYXBwbHlBdXRvZm9jdXMoKSBmcm9tIGZpcmluZ1xuICAgICAgLy8gdW50aWwgYWZ0ZXIgKm5nSWYgaGFzIGFkZGVkIHRoZSBmb3JtIGVsZW1lbnQgdG8gdGhlIERPTS5cbiAgICAgIHRoaXMuI3NreUFwcFdpbmRvd1JlZi5uYXRpdmVXaW5kb3cuc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIHRoaXMuI2FkYXB0ZXIuYXBwbHlBdXRvZm9jdXModGhpcy4jZWxlbWVudFJlZik7XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgZ2V0IHNob3dGb3JtKCk6IGJvb2xlYW4gfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLiNfc2hvd0Zvcm07XG4gIH1cblxuICAvKipcbiAgICogRmlyZXMgd2hlbiB1c2VycyBjbG9zZSB0aGUgaW5saW5lIGZvcm0uXG4gICAqL1xuICBAT3V0cHV0KClcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1vdXRwdXQtbmF0aXZlXG4gIHB1YmxpYyBjbG9zZSA9IG5ldyBFdmVudEVtaXR0ZXI8U2t5SW5saW5lRm9ybUNsb3NlQXJncz4oKTtcblxuICAvLyBUT0RPOiBoYW5kbGUgYnV0dG9ucyBiZWluZyBzZXQgYXN5bmNocm9ub3VzbHkgKFwifCB1bmRlZmluZWRcIikgd2hlbiBzZXR0aW5nIGF1dG9mb2N1c1xuICBwdWJsaWMgYnV0dG9ucyE6IFNreUlubGluZUZvcm1CdXR0b25Db25maWdbXTtcblxuICAjX2NvbmZpZzogU2t5SW5saW5lRm9ybUNvbmZpZyB8IHVuZGVmaW5lZDtcblxuICAjX3Nob3dGb3JtOiBib29sZWFuIHwgdW5kZWZpbmVkID0gZmFsc2U7XG5cbiAgI2FkYXB0ZXI6IFNreUlubGluZUZvcm1BZGFwdGVyU2VydmljZTtcbiAgI2VsZW1lbnRSZWY6IEVsZW1lbnRSZWY7XG4gICNyZXNvdXJjZXNTZXJ2aWNlOiBTa3lMaWJSZXNvdXJjZXNTZXJ2aWNlO1xuICAjc2t5QXBwV2luZG93UmVmOiBTa3lBcHBXaW5kb3dSZWY7XG4gICNjaGFuZ2VEZXRlY3RvclJlZjogQ2hhbmdlRGV0ZWN0b3JSZWY7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgYWRhcHRlcjogU2t5SW5saW5lRm9ybUFkYXB0ZXJTZXJ2aWNlLFxuICAgIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWYsXG4gICAgcmVzb3VyY2VzU2VydmljZTogU2t5TGliUmVzb3VyY2VzU2VydmljZSxcbiAgICBza3lBcHBXaW5kb3dSZWY6IFNreUFwcFdpbmRvd1JlZixcbiAgICBjaGFuZ2VEZXRlY3RvclJlZjogQ2hhbmdlRGV0ZWN0b3JSZWZcbiAgKSB7XG4gICAgdGhpcy4jYWRhcHRlciA9IGFkYXB0ZXI7XG4gICAgdGhpcy4jZWxlbWVudFJlZiA9IGVsZW1lbnRSZWY7XG4gICAgdGhpcy4jcmVzb3VyY2VzU2VydmljZSA9IHJlc291cmNlc1NlcnZpY2U7XG4gICAgdGhpcy4jc2t5QXBwV2luZG93UmVmID0gc2t5QXBwV2luZG93UmVmO1xuICAgIHRoaXMuI2NoYW5nZURldGVjdG9yUmVmID0gY2hhbmdlRGV0ZWN0b3JSZWY7XG4gIH1cblxuICBwdWJsaWMgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy4jc2V0dXBCdXR0b25zKCk7XG4gIH1cblxuICBwdWJsaWMgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5jbG9zZS5jb21wbGV0ZSgpO1xuICB9XG5cbiAgcHVibGljIGNsb3NlSW5saW5lRm9ybShldmVudDogU2t5SW5saW5lRm9ybUJ1dHRvbkNvbmZpZyk6IHZvaWQge1xuICAgIGNvbnN0IGFyZ3M6IFNreUlubGluZUZvcm1DbG9zZUFyZ3MgPSB7XG4gICAgICByZWFzb246IGV2ZW50LmFjdGlvbixcbiAgICB9O1xuICAgIHRoaXMuY2xvc2UuZW1pdChhcmdzKTtcbiAgfVxuXG4gICNzZXR1cEJ1dHRvbnMoKTogdm9pZCB7XG4gICAgaWYgKFxuICAgICAgdGhpcy5pc1ZhbGlkQ3VzdG9tQ29uZmlnKHRoaXMuY29uZmlnKSAmJlxuICAgICAgdGhpcy5jb25maWcgJiZcbiAgICAgIHRoaXMuY29uZmlnLmJ1dHRvbnNcbiAgICApIHtcbiAgICAgIHRoaXMuYnV0dG9ucyA9IHRoaXMuZ2V0Q3VzdG9tQnV0dG9ucyh0aGlzLmNvbmZpZy5idXR0b25zKTtcbiAgICAgIHRoaXMuI2NoYW5nZURldGVjdG9yUmVmLm1hcmtGb3JDaGVjaygpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuZ2V0UHJlc2V0QnV0dG9ucygpPy50aGVuKChidXR0b25zKSA9PiB7XG4gICAgICB0aGlzLmJ1dHRvbnMgPSBidXR0b25zO1xuICAgICAgdGhpcy4jY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKCk7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGdldFByZXNldEJ1dHRvbnMoKTogUHJvbWlzZTxTa3lJbmxpbmVGb3JtQnV0dG9uQ29uZmlnW10+IHwgdW5kZWZpbmVkIHtcbiAgICBjb25zdCBidXR0b25UeXBlID0gdGhpcy5jb25maWdcbiAgICAgID8gdGhpcy5jb25maWcuYnV0dG9uTGF5b3V0XG4gICAgICA6IFNreUlubGluZUZvcm1CdXR0b25MYXlvdXQuRG9uZUNhbmNlbDtcblxuICAgIGxldCBwcm9taXNlOiBQcm9taXNlPFNreUlubGluZUZvcm1CdXR0b25Db25maWdbXT4gfCB1bmRlZmluZWQ7XG5cbiAgICBzd2l0Y2ggKGJ1dHRvblR5cGUpIHtcbiAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG4gICAgICBkZWZhdWx0OlxuICAgICAgY2FzZSBTa3lJbmxpbmVGb3JtQnV0dG9uTGF5b3V0LkRvbmVDYW5jZWw6XG4gICAgICAgIG9ic2VydmFibGVaaXAoXG4gICAgICAgICAgdGhpcy4jcmVzb3VyY2VzU2VydmljZS5nZXRTdHJpbmcoJ3NreXV4X2lubGluZV9mb3JtX2J1dHRvbl9kb25lJyksXG4gICAgICAgICAgdGhpcy4jcmVzb3VyY2VzU2VydmljZS5nZXRTdHJpbmcoJ3NreXV4X2lubGluZV9mb3JtX2J1dHRvbl9jYW5jZWwnKVxuICAgICAgICApXG4gICAgICAgICAgLnBpcGUodGFrZSgxKSlcbiAgICAgICAgICAuc3Vic2NyaWJlKCh2YWx1ZXM6IHN0cmluZ1tdKSA9PiB7XG4gICAgICAgICAgICBwcm9taXNlID0gbmV3IFByb21pc2U8U2t5SW5saW5lRm9ybUJ1dHRvbkNvbmZpZ1tdPihcbiAgICAgICAgICAgICAgKHJlc29sdmU6ICh2YWx1ZTogU2t5SW5saW5lRm9ybUJ1dHRvbkNvbmZpZ1tdKSA9PiB2b2lkKSA9PiB7XG4gICAgICAgICAgICAgICAgcmVzb2x2ZShbXG4gICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIHRleHQ6IHZhbHVlc1swXSxcbiAgICAgICAgICAgICAgICAgICAgc3R5bGVUeXBlOiAncHJpbWFyeScsXG4gICAgICAgICAgICAgICAgICAgIGFjdGlvbjogJ2RvbmUnLFxuICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgdGV4dDogdmFsdWVzWzFdLFxuICAgICAgICAgICAgICAgICAgICBzdHlsZVR5cGU6ICdsaW5rJyxcbiAgICAgICAgICAgICAgICAgICAgYWN0aW9uOiAnY2FuY2VsJyxcbiAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgXSk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfSk7XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBjYXNlIFNreUlubGluZUZvcm1CdXR0b25MYXlvdXQuU2F2ZUNhbmNlbDpcbiAgICAgICAgb2JzZXJ2YWJsZVppcChcbiAgICAgICAgICB0aGlzLiNyZXNvdXJjZXNTZXJ2aWNlLmdldFN0cmluZygnc2t5dXhfaW5saW5lX2Zvcm1fYnV0dG9uX3NhdmUnKSxcbiAgICAgICAgICB0aGlzLiNyZXNvdXJjZXNTZXJ2aWNlLmdldFN0cmluZygnc2t5dXhfaW5saW5lX2Zvcm1fYnV0dG9uX2NhbmNlbCcpXG4gICAgICAgIClcbiAgICAgICAgICAucGlwZSh0YWtlKDEpKVxuICAgICAgICAgIC5zdWJzY3JpYmUoKHZhbHVlczogc3RyaW5nW10pID0+IHtcbiAgICAgICAgICAgIHByb21pc2UgPSBuZXcgUHJvbWlzZTxTa3lJbmxpbmVGb3JtQnV0dG9uQ29uZmlnW10+KFxuICAgICAgICAgICAgICAocmVzb2x2ZTogKHZhbHVlOiBTa3lJbmxpbmVGb3JtQnV0dG9uQ29uZmlnW10pID0+IHZvaWQpID0+IHtcbiAgICAgICAgICAgICAgICByZXNvbHZlKFtcbiAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgdGV4dDogdmFsdWVzWzBdLFxuICAgICAgICAgICAgICAgICAgICBzdHlsZVR5cGU6ICdwcmltYXJ5JyxcbiAgICAgICAgICAgICAgICAgICAgYWN0aW9uOiAnc2F2ZScsXG4gICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICB0ZXh0OiB2YWx1ZXNbMV0sXG4gICAgICAgICAgICAgICAgICAgIHN0eWxlVHlwZTogJ2xpbmsnLFxuICAgICAgICAgICAgICAgICAgICBhY3Rpb246ICdjYW5jZWwnLFxuICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBdKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGNhc2UgU2t5SW5saW5lRm9ybUJ1dHRvbkxheW91dC5Eb25lRGVsZXRlQ2FuY2VsOlxuICAgICAgICBvYnNlcnZhYmxlWmlwKFxuICAgICAgICAgIHRoaXMuI3Jlc291cmNlc1NlcnZpY2UuZ2V0U3RyaW5nKCdza3l1eF9pbmxpbmVfZm9ybV9idXR0b25fZG9uZScpLFxuICAgICAgICAgIHRoaXMuI3Jlc291cmNlc1NlcnZpY2UuZ2V0U3RyaW5nKCdza3l1eF9pbmxpbmVfZm9ybV9idXR0b25fZGVsZXRlJyksXG4gICAgICAgICAgdGhpcy4jcmVzb3VyY2VzU2VydmljZS5nZXRTdHJpbmcoJ3NreXV4X2lubGluZV9mb3JtX2J1dHRvbl9jYW5jZWwnKVxuICAgICAgICApXG4gICAgICAgICAgLnBpcGUodGFrZSgxKSlcbiAgICAgICAgICAuc3Vic2NyaWJlKCh2YWx1ZXM6IHN0cmluZ1tdKSA9PiB7XG4gICAgICAgICAgICBwcm9taXNlID0gbmV3IFByb21pc2U8U2t5SW5saW5lRm9ybUJ1dHRvbkNvbmZpZ1tdPihcbiAgICAgICAgICAgICAgKHJlc29sdmU6ICh2YWx1ZTogU2t5SW5saW5lRm9ybUJ1dHRvbkNvbmZpZ1tdKSA9PiB2b2lkKSA9PiB7XG4gICAgICAgICAgICAgICAgcmVzb2x2ZShbXG4gICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIHRleHQ6IHZhbHVlc1swXSxcbiAgICAgICAgICAgICAgICAgICAgc3R5bGVUeXBlOiAncHJpbWFyeScsXG4gICAgICAgICAgICAgICAgICAgIGFjdGlvbjogJ2RvbmUnLFxuICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgdGV4dDogdmFsdWVzWzFdLFxuICAgICAgICAgICAgICAgICAgICBzdHlsZVR5cGU6ICdkZWZhdWx0JyxcbiAgICAgICAgICAgICAgICAgICAgYWN0aW9uOiAnZGVsZXRlJyxcbiAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIHRleHQ6IHZhbHVlc1syXSxcbiAgICAgICAgICAgICAgICAgICAgc3R5bGVUeXBlOiAnbGluaycsXG4gICAgICAgICAgICAgICAgICAgIGFjdGlvbjogJ2NhbmNlbCcsXG4gICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIF0pO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICApO1xuICAgICAgICAgIH0pO1xuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSBTa3lJbmxpbmVGb3JtQnV0dG9uTGF5b3V0LlNhdmVEZWxldGVDYW5jZWw6XG4gICAgICAgIG9ic2VydmFibGVaaXAoXG4gICAgICAgICAgdGhpcy4jcmVzb3VyY2VzU2VydmljZS5nZXRTdHJpbmcoJ3NreXV4X2lubGluZV9mb3JtX2J1dHRvbl9zYXZlJyksXG4gICAgICAgICAgdGhpcy4jcmVzb3VyY2VzU2VydmljZS5nZXRTdHJpbmcoJ3NreXV4X2lubGluZV9mb3JtX2J1dHRvbl9kZWxldGUnKSxcbiAgICAgICAgICB0aGlzLiNyZXNvdXJjZXNTZXJ2aWNlLmdldFN0cmluZygnc2t5dXhfaW5saW5lX2Zvcm1fYnV0dG9uX2NhbmNlbCcpXG4gICAgICAgIClcbiAgICAgICAgICAucGlwZSh0YWtlKDEpKVxuICAgICAgICAgIC5zdWJzY3JpYmUoKHZhbHVlczogc3RyaW5nW10pID0+IHtcbiAgICAgICAgICAgIHByb21pc2UgPSBuZXcgUHJvbWlzZTxTa3lJbmxpbmVGb3JtQnV0dG9uQ29uZmlnW10+KFxuICAgICAgICAgICAgICAocmVzb2x2ZTogKHZhbHVlOiBTa3lJbmxpbmVGb3JtQnV0dG9uQ29uZmlnW10pID0+IHZvaWQpID0+IHtcbiAgICAgICAgICAgICAgICByZXNvbHZlKFtcbiAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgdGV4dDogdmFsdWVzWzBdLFxuICAgICAgICAgICAgICAgICAgICBzdHlsZVR5cGU6ICdwcmltYXJ5JyxcbiAgICAgICAgICAgICAgICAgICAgYWN0aW9uOiAnc2F2ZScsXG4gICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICB0ZXh0OiB2YWx1ZXNbMV0sXG4gICAgICAgICAgICAgICAgICAgIHN0eWxlVHlwZTogJ2RlZmF1bHQnLFxuICAgICAgICAgICAgICAgICAgICBhY3Rpb246ICdkZWxldGUnLFxuICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgdGV4dDogdmFsdWVzWzJdLFxuICAgICAgICAgICAgICAgICAgICBzdHlsZVR5cGU6ICdsaW5rJyxcbiAgICAgICAgICAgICAgICAgICAgYWN0aW9uOiAnY2FuY2VsJyxcbiAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgXSk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfSk7XG4gICAgICAgIGJyZWFrO1xuICAgIH1cblxuICAgIHJldHVybiBwcm9taXNlO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRDdXN0b21CdXR0b25zKFxuICAgIGJ1dHRvbkNvbmZpZ3M6IFNreUlubGluZUZvcm1CdXR0b25Db25maWdbXVxuICApOiBTa3lJbmxpbmVGb3JtQnV0dG9uQ29uZmlnW10ge1xuICAgIGNvbnN0IGJ1dHRvbnM6IFNreUlubGluZUZvcm1CdXR0b25Db25maWdbXSA9IFtdO1xuXG4gICAgYnV0dG9uQ29uZmlncy5mb3JFYWNoKChjb25maWc6IFNreUlubGluZUZvcm1CdXR0b25Db25maWcpID0+IHtcbiAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG4gICAgICBjb25zdCBzdHlsZVR5cGUgPSBjb25maWcuc3R5bGVUeXBlIHx8ICdkZWZhdWx0JztcblxuICAgICAgYnV0dG9ucy5wdXNoKHtcbiAgICAgICAgYWN0aW9uOiBjb25maWcuYWN0aW9uLFxuICAgICAgICBkaXNhYmxlZDogY29uZmlnLmRpc2FibGVkLFxuICAgICAgICBzdHlsZVR5cGU6IHN0eWxlVHlwZSxcbiAgICAgICAgdGV4dDogY29uZmlnLnRleHQsXG4gICAgICB9IGFzIFNreUlubGluZUZvcm1CdXR0b25Db25maWcpO1xuICAgIH0pO1xuXG4gICAgcmV0dXJuIGJ1dHRvbnM7XG4gIH1cblxuICBwcml2YXRlIGlzVmFsaWRDdXN0b21Db25maWcoXG4gICAgY29uZmlnOiBTa3lJbmxpbmVGb3JtQ29uZmlnIHwgdW5kZWZpbmVkXG4gICk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAoXG4gICAgICAhIWNvbmZpZyAmJlxuICAgICAgISFjb25maWcuYnV0dG9ucyAmJlxuICAgICAgY29uZmlnLmJ1dHRvbnMubGVuZ3RoID4gMCAmJlxuICAgICAgY29uZmlnLmJ1dHRvbkxheW91dCA9PT0gU2t5SW5saW5lRm9ybUJ1dHRvbkxheW91dC5DdXN0b21cbiAgICApO1xuICB9XG59XG4iLCI8ZGl2IFtAc2t5U2xpZGVEaXNzb2x2ZV09XCJzaG93Rm9ybVwiPlxuICA8ZGl2ICpuZ0lmPVwiIXNob3dGb3JtXCIgY2xhc3M9XCJza3ktc2xpZGUtZGlzc29sdmUtZmlyc3RcIj5cbiAgICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XG4gIDwvZGl2PlxuXG4gIDxkaXYgKm5nSWY9XCJ0ZW1wbGF0ZSAmJiBzaG93Rm9ybVwiIGNsYXNzPVwic2t5LXNsaWRlLWRpc3NvbHZlLWxhc3RcIj5cbiAgICA8ZGl2IGNsYXNzPVwic2t5LWlubGluZS1mb3JtIHNreS1zaGFkb3cgc2t5LWJveCBza3ktZWxldmF0aW9uLTNcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJza3ktaW5saW5lLWZvcm0tY29udGVudFwiPlxuICAgICAgICA8bmctY29udGFpbmVyIFtuZ1RlbXBsYXRlT3V0bGV0XT1cInRlbXBsYXRlXCI+IDwvbmctY29udGFpbmVyPlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwic2t5LWlubGluZS1mb3JtLWZvb3RlclwiPlxuICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgKm5nRm9yPVwibGV0IGJ1dHRvbiBvZiBidXR0b25zXCJcbiAgICAgICAgICBjbGFzcz1cInNreS1idG4ge3sgJ3NreS1idG4tJyArIGJ1dHRvbi5zdHlsZVR5cGUgfX1cIlxuICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgIFtkaXNhYmxlZF09XCJidXR0b24uZGlzYWJsZWQgPyB0cnVlIDogbnVsbFwiXG4gICAgICAgICAgW25nQ2xhc3NdPVwieyAnc2t5LWJ0bi1kaXNhYmxlZCc6IGJ1dHRvbi5kaXNhYmxlZCB9XCJcbiAgICAgICAgICAoY2xpY2spPVwiY2xvc2VJbmxpbmVGb3JtKGJ1dHRvbilcIlxuICAgICAgICA+XG4gICAgICAgICAge3sgYnV0dG9uLnRleHQgfX1cbiAgICAgICAgPC9idXR0b24+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==
|
|
226
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5saW5lLWZvcm0uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL2lubGluZS1mb3JtL3NyYy9saWIvbW9kdWxlcy9pbmxpbmUtZm9ybS9pbmxpbmUtZm9ybS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvaW5saW5lLWZvcm0vc3JjL2xpYi9tb2R1bGVzL2lubGluZS1mb3JtL2lubGluZS1mb3JtLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixpQkFBaUIsRUFDakIsU0FBUyxFQUNULFVBQVUsRUFDVixZQUFZLEVBQ1osS0FBSyxFQUdMLE1BQU0sR0FFUCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQzlDLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUVyRCxPQUFPLEVBQWMsYUFBYSxFQUFFLE9BQU8sRUFBRSxHQUFHLElBQUksYUFBYSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ2hGLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUUzQyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUMvRCxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUU1RSxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQzs7Ozs7O0FBSTlFOztHQUVHO0FBU0gsTUFBTSxPQUFPLHNCQUFzQjtJQXFFakMsWUFDRSxPQUFvQyxFQUNwQyxVQUFzQixFQUN0QixnQkFBd0MsRUFDeEMsZUFBZ0MsRUFDaEMsaUJBQW9DOztRQTNCdEM7O1dBRUc7UUFHSSxVQUFLLEdBQUcsSUFBSSxZQUFZ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QUFDLFNBQVMsSUFBSSxTQUFTLENBQUM7UUFFaEQsT0FBTyxDQUFDLElBQUksQ0FBQztZQUNYLE1BQU0sRUFBRSxNQUFNLENBQUMsTUFBTTtZQUNyQixRQUFRLEVBQUUsTUFBTSxDQUFDLFFBQVE7WUFDekIsU0FBUyxFQUFFLFNBQVM7WUFDcEIsSUFBSSxFQUFFLE1BQU0sQ0FBQyxJQUFJO1NBQ1csQ0FBQyxDQUFDO0lBQ2xDLENBQUMsQ0FBQyxDQUFDO0lBRUgsT0FBTyxPQUFPLENBQUM7QUFDakIsQ0FBQyxxR0FFb0IsTUFBdUM7SUFDMUQsT0FBTyxDQUNMLENBQUMsQ0FBQyxNQUFNO1FBQ1IsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxPQUFPO1FBQ2hCLE1BQU0sQ0FBQyxPQUFPLENBQUMsTUFBTSxHQUFHLENBQUM7UUFDekIsTUFBTSxDQUFDLFlBQVksS0FBSyx5QkFBeUIsQ0FBQyxNQUFNLENBQ3pELENBQUM7QUFDSixDQUFDO21IQXJRVSxzQkFBc0I7dUdBQXRCLHNCQUFzQixpSkFIdEIsQ0FBQywyQkFBMkIsQ0FBQywwQkNqQzFDLGs0QkF5QkEsaTZDRFNjLENBQUMsZ0JBQWdCLENBQUM7MkZBRW5CLHNCQUFzQjtrQkFSbEMsU0FBUzsrQkFDRSxpQkFBaUIsbUJBR1YsdUJBQXVCLENBQUMsTUFBTSxhQUNwQyxDQUFDLDJCQUEyQixDQUFDLGNBQzVCLENBQUMsZ0JBQWdCLENBQUM7OE9BUW5CLE1BQU07c0JBRGhCLEtBQUs7Z0JBaUJDLFFBQVE7c0JBRGQsS0FBSztnQkFTSyxRQUFRO3NCQURsQixLQUFLO2dCQXVCQyxLQUFLO3NCQUZYLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgRWxlbWVudFJlZixcbiAgRXZlbnRFbWl0dGVyLFxuICBJbnB1dCxcbiAgT25EZXN0cm95LFxuICBPbkluaXQsXG4gIE91dHB1dCxcbiAgVGVtcGxhdGVSZWYsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgU2t5QXBwV2luZG93UmVmIH0gZnJvbSAnQHNreXV4L2NvcmUnO1xuaW1wb3J0IHsgU2t5TGliUmVzb3VyY2VzU2VydmljZSB9IGZyb20gJ0Bza3l1eC9pMThuJztcblxuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgUmVwbGF5U3ViamVjdCwgU3ViamVjdCwgemlwIGFzIG9ic2VydmFibGVaaXAgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHsgc2t5U2xpZGVEaXNzb2x2ZSB9IGZyb20gJy4vYW5pbWF0aW9ucy9zbGlkZS1kaXNzb2x2ZSc7XG5pbXBvcnQgeyBTa3lJbmxpbmVGb3JtQWRhcHRlclNlcnZpY2UgfSBmcm9tICcuL2lubGluZS1mb3JtLWFkYXB0ZXIuc2VydmljZSc7XG5pbXBvcnQgeyBTa3lJbmxpbmVGb3JtQnV0dG9uQ29uZmlnIH0gZnJvbSAnLi90eXBlcy9pbmxpbmUtZm9ybS1idXR0b24tY29uZmlnJztcbmltcG9ydCB7IFNreUlubGluZUZvcm1CdXR0b25MYXlvdXQgfSBmcm9tICcuL3R5cGVzL2lubGluZS1mb3JtLWJ1dHRvbi1sYXlvdXQnO1xuaW1wb3J0IHsgU2t5SW5saW5lRm9ybUNsb3NlQXJncyB9IGZyb20gJy4vdHlwZXMvaW5saW5lLWZvcm0tY2xvc2UtYXJncyc7XG5pbXBvcnQgeyBTa3lJbmxpbmVGb3JtQ29uZmlnIH0gZnJvbSAnLi90eXBlcy9pbmxpbmUtZm9ybS1jb25maWcnO1xuXG4vKipcbiAqIFJlbmRlcnMgZm9ybSBjb250ZW50IGluIHRoZSBjdXJyZW50IHZpZXcgaW5zdGVhZCBvZiBhIHNlcGFyYXRlIG1vZGFsLlxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdza3ktaW5saW5lLWZvcm0nLFxuICB0ZW1wbGF0ZVVybDogJy4vaW5saW5lLWZvcm0uY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9pbmxpbmUtZm9ybS5jb21wb25lbnQuc2NzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgcHJvdmlkZXJzOiBbU2t5SW5saW5lRm9ybUFkYXB0ZXJTZXJ2aWNlXSxcbiAgYW5pbWF0aW9uczogW3NreVNsaWRlRGlzc29sdmVdLFxufSlcbmV4cG9ydCBjbGFzcyBTa3lJbmxpbmVGb3JtQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICAvKipcbiAgICogU3BlY2lmaWVzIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBmb3IgdGhlIGJ1dHRvbnMgdG8gZGlzcGxheSB3aXRoIHRoZSBpbmxpbmUgZm9ybS5cbiAgICogQHJlcXVpcmVkXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IGNvbmZpZyh2YWx1ZTogU2t5SW5saW5lRm9ybUNvbmZpZyB8IHVuZGVmaW5lZCkge1xuICAgIGlmICh2YWx1ZSAhPT0gdGhpcy4jX2NvbmZpZyAmJiAhIXZhbHVlKSB7XG4gICAgICB0aGlzLiNfY29uZmlnID0gdmFsdWU7XG4gICAgICB0aGlzLiNzZXR1cEJ1dHRvbnMoKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgZ2V0IGNvbmZpZygpOiBTa3lJbmxpbmVGb3JtQ29uZmlnIHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy4jX2NvbmZpZztcbiAgfVxuXG4gIC8qKlxuICAgKiBTcGVjaWZpZXMgYSB0ZW1wbGF0ZSB0byB1c2UgdG8gaW5zdGFudGlhdGUgdGhlIGlubGluZSBmb3JtLlxuICAgKiBAcmVxdWlyZWRcbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyB0ZW1wbGF0ZTogVGVtcGxhdGVSZWY8dW5rbm93bj4gfCB1bmRlZmluZWQ7XG5cbiAgLyoqXG4gICAqIEluZGljYXRlcyB3aGV0aGVyIHRvIGRpc3BsYXkgdGhlIGlubGluZSBmb3JtLiBVc2VycyBjYW4gdG9nZ2xlIGJldHdlZW4gZGlzcGxheWluZ1xuICAgKiBhbmQgaGlkaW5nIHRoZSBpbmxpbmUgZm9ybS5cbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZXQgc2hvd0Zvcm0odmFsdWU6IGJvb2xlYW4gfCB1bmRlZmluZWQpIHtcbiAgICB0aGlzLiNfc2hvd0Zvcm0gPSB2YWx1ZTtcblxuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gICAgaWYgKHZhbHVlKSB7XG4gICAgICAvLyBzZXRUaW1lb3V0KCkgcHJldmVudHMgYXBwbHlBdXRvZm9jdXMoKSBmcm9tIGZpcmluZ1xuICAgICAgLy8gdW50aWwgYWZ0ZXIgKm5nSWYgaGFzIGFkZGVkIHRoZSBmb3JtIGVsZW1lbnQgdG8gdGhlIERPTS5cbiAgICAgIHRoaXMuI3NreUFwcFdpbmRvd1JlZi5uYXRpdmVXaW5kb3cuc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIHRoaXMuI2FkYXB0ZXIuYXBwbHlBdXRvZm9jdXModGhpcy4jZWxlbWVudFJlZik7XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgZ2V0IHNob3dGb3JtKCk6IGJvb2xlYW4gfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLiNfc2hvd0Zvcm07XG4gIH1cblxuICAvKipcbiAgICogRmlyZXMgd2hlbiB1c2VycyBjbG9zZSB0aGUgaW5saW5lIGZvcm0uXG4gICAqL1xuICBAT3V0cHV0KClcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1vdXRwdXQtbmF0aXZlXG4gIHB1YmxpYyBjbG9zZSA9IG5ldyBFdmVudEVtaXR0ZXI8U2t5SW5saW5lRm9ybUNsb3NlQXJncz4oKTtcblxuICAvLyBUT0RPOiBoYW5kbGUgYnV0dG9ucyBiZWluZyBzZXQgYXN5bmNocm9ub3VzbHkgKFwifCB1bmRlZmluZWRcIikgd2hlbiBzZXR0aW5nIGF1dG9mb2N1c1xuICBwdWJsaWMgYnV0dG9ucyE6IFNreUlubGluZUZvcm1CdXR0b25Db25maWdbXTtcblxuICAjX2NvbmZpZzogU2t5SW5saW5lRm9ybUNvbmZpZyB8IHVuZGVmaW5lZDtcblxuICAjX3Nob3dGb3JtOiBib29sZWFuIHwgdW5kZWZpbmVkID0gZmFsc2U7XG5cbiAgI25nVW5zdWJzY3JpYmUgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gICNhZGFwdGVyOiBTa3lJbmxpbmVGb3JtQWRhcHRlclNlcnZpY2U7XG4gICNlbGVtZW50UmVmOiBFbGVtZW50UmVmO1xuICAjcmVzb3VyY2VzU2VydmljZTogU2t5TGliUmVzb3VyY2VzU2VydmljZTtcbiAgI3NreUFwcFdpbmRvd1JlZjogU2t5QXBwV2luZG93UmVmO1xuICAjY2hhbmdlRGV0ZWN0b3JSZWY6IENoYW5nZURldGVjdG9yUmVmO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIGFkYXB0ZXI6IFNreUlubGluZUZvcm1BZGFwdGVyU2VydmljZSxcbiAgICBlbGVtZW50UmVmOiBFbGVtZW50UmVmLFxuICAgIHJlc291cmNlc1NlcnZpY2U6IFNreUxpYlJlc291cmNlc1NlcnZpY2UsXG4gICAgc2t5QXBwV2luZG93UmVmOiBTa3lBcHBXaW5kb3dSZWYsXG4gICAgY2hhbmdlRGV0ZWN0b3JSZWY6IENoYW5nZURldGVjdG9yUmVmXG4gICkge1xuICAgIHRoaXMuI2FkYXB0ZXIgPSBhZGFwdGVyO1xuICAgIHRoaXMuI2VsZW1lbnRSZWYgPSBlbGVtZW50UmVmO1xuICAgIHRoaXMuI3Jlc291cmNlc1NlcnZpY2UgPSByZXNvdXJjZXNTZXJ2aWNlO1xuICAgIHRoaXMuI3NreUFwcFdpbmRvd1JlZiA9IHNreUFwcFdpbmRvd1JlZjtcbiAgICB0aGlzLiNjaGFuZ2VEZXRlY3RvclJlZiA9IGNoYW5nZURldGVjdG9yUmVmO1xuICB9XG5cbiAgcHVibGljIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuI3NldHVwQnV0dG9ucygpO1xuICB9XG5cbiAgcHVibGljIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuI25nVW5zdWJzY3JpYmUubmV4dCgpO1xuICAgIHRoaXMuI25nVW5zdWJzY3JpYmUuY29tcGxldGUoKTtcblxuICAgIHRoaXMuY2xvc2UuY29tcGxldGUoKTtcbiAgfVxuXG4gIHB1YmxpYyBjbG9zZUlubGluZUZvcm0oZXZlbnQ6IFNreUlubGluZUZvcm1CdXR0b25Db25maWcpOiB2b2lkIHtcbiAgICBjb25zdCBhcmdzOiBTa3lJbmxpbmVGb3JtQ2xvc2VBcmdzID0ge1xuICAgICAgcmVhc29uOiBldmVudC5hY3Rpb24sXG4gICAgfTtcbiAgICB0aGlzLmNsb3NlLmVtaXQoYXJncyk7XG4gIH1cblxuICAjc2V0dXBCdXR0b25zKCk6IHZvaWQge1xuICAgIGlmIChcbiAgICAgIHRoaXMuI2lzVmFsaWRDdXN0b21Db25maWcodGhpcy5jb25maWcpICYmXG4gICAgICB0aGlzLmNvbmZpZyAmJlxuICAgICAgdGhpcy5jb25maWcuYnV0dG9uc1xuICAgICkge1xuICAgICAgdGhpcy5idXR0b25zID0gdGhpcy4jZ2V0Q3VzdG9tQnV0dG9ucyh0aGlzLmNvbmZpZy5idXR0b25zKTtcbiAgICAgIHRoaXMuI2NoYW5nZURldGVjdG9yUmVmLm1hcmtGb3JDaGVjaygpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuI2dldFByZXNldEJ1dHRvbnMoKVxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuI25nVW5zdWJzY3JpYmUpKVxuICAgICAgLnN1YnNjcmliZSgoYnV0dG9uczogU2t5SW5saW5lRm9ybUJ1dHRvbkNvbmZpZ1tdKSA9PiB7XG4gICAgICAgIHRoaXMuYnV0dG9ucyA9IGJ1dHRvbnM7XG4gICAgICAgIHRoaXMuI2NoYW5nZURldGVjdG9yUmVmLm1hcmtGb3JDaGVjaygpO1xuICAgICAgfSk7XG4gIH1cblxuICAjZ2V0UHJlc2V0QnV0dG9ucygpOiBPYnNlcnZhYmxlPFNreUlubGluZUZvcm1CdXR0b25Db25maWdbXT4ge1xuICAgIGNvbnN0IGVtaXR0ZXIgPSBuZXcgUmVwbGF5U3ViamVjdDxTa3lJbmxpbmVGb3JtQnV0dG9uQ29uZmlnW10+KDEpO1xuXG4gICAgY29uc3QgYnV0dG9uVHlwZSA9IHRoaXMuY29uZmlnXG4gICAgICA/IHRoaXMuY29uZmlnLmJ1dHRvbkxheW91dFxuICAgICAgOiBTa3lJbmxpbmVGb3JtQnV0dG9uTGF5b3V0LkRvbmVDYW5jZWw7XG5cbiAgICBzd2l0Y2ggKGJ1dHRvblR5cGUpIHtcbiAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG4gICAgICBkZWZhdWx0OlxuICAgICAgY2FzZSBTa3lJbmxpbmVGb3JtQnV0dG9uTGF5b3V0LkRvbmVDYW5jZWw6XG4gICAgICAgIG9ic2VydmFibGVaaXAoXG4gICAgICAgICAgdGhpcy4jcmVzb3VyY2VzU2VydmljZS5nZXRTdHJpbmcoJ3NreXV4X2lubGluZV9mb3JtX2J1dHRvbl9kb25lJyksXG4gICAgICAgICAgdGhpcy4jcmVzb3VyY2VzU2VydmljZS5nZXRTdHJpbmcoJ3NreXV4X2lubGluZV9mb3JtX2J1dHRvbl9jYW5jZWwnKVxuICAgICAgICApXG4gICAgICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuI25nVW5zdWJzY3JpYmUpKVxuICAgICAgICAgIC5zdWJzY3JpYmUoKHZhbHVlczogc3RyaW5nW10pID0+IHtcbiAgICAgICAgICAgIGVtaXR0ZXIubmV4dChbXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICB0ZXh0OiB2YWx1ZXNbMF0sXG4gICAgICAgICAgICAgICAgc3R5bGVUeXBlOiAncHJpbWFyeScsXG4gICAgICAgICAgICAgICAgYWN0aW9uOiAnZG9uZScsXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICB0ZXh0OiB2YWx1ZXNbMV0sXG4gICAgICAgICAgICAgICAgc3R5bGVUeXBlOiAnbGluaycsXG4gICAgICAgICAgICAgICAgYWN0aW9uOiAnY2FuY2VsJyxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIF0pO1xuICAgICAgICAgIH0pO1xuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSBTa3lJbmxpbmVGb3JtQnV0dG9uTGF5b3V0LlNhdmVDYW5jZWw6XG4gICAgICAgIG9ic2VydmFibGVaaXAoXG4gICAgICAgICAgdGhpcy4jcmVzb3VyY2VzU2VydmljZS5nZXRTdHJpbmcoJ3NreXV4X2lubGluZV9mb3JtX2J1dHRvbl9zYXZlJyksXG4gICAgICAgICAgdGhpcy4jcmVzb3VyY2VzU2VydmljZS5nZXRTdHJpbmcoJ3NreXV4X2lubGluZV9mb3JtX2J1dHRvbl9jYW5jZWwnKVxuICAgICAgICApXG4gICAgICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuI25nVW5zdWJzY3JpYmUpKVxuICAgICAgICAgIC5zdWJzY3JpYmUoKHZhbHVlczogc3RyaW5nW10pID0+IHtcbiAgICAgICAgICAgIGVtaXR0ZXIubmV4dChbXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICB0ZXh0OiB2YWx1ZXNbMF0sXG4gICAgICAgICAgICAgICAgc3R5bGVUeXBlOiAncHJpbWFyeScsXG4gICAgICAgICAgICAgICAgYWN0aW9uOiAnc2F2ZScsXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICB0ZXh0OiB2YWx1ZXNbMV0sXG4gICAgICAgICAgICAgICAgc3R5bGVUeXBlOiAnbGluaycsXG4gICAgICAgICAgICAgICAgYWN0aW9uOiAnY2FuY2VsJyxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIF0pO1xuICAgICAgICAgIH0pO1xuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSBTa3lJbmxpbmVGb3JtQnV0dG9uTGF5b3V0LkRvbmVEZWxldGVDYW5jZWw6XG4gICAgICAgIG9ic2VydmFibGVaaXAoXG4gICAgICAgICAgdGhpcy4jcmVzb3VyY2VzU2VydmljZS5nZXRTdHJpbmcoJ3NreXV4X2lubGluZV9mb3JtX2J1dHRvbl9kb25lJyksXG4gICAgICAgICAgdGhpcy4jcmVzb3VyY2VzU2VydmljZS5nZXRTdHJpbmcoJ3NreXV4X2lubGluZV9mb3JtX2J1dHRvbl9kZWxldGUnKSxcbiAgICAgICAgICB0aGlzLiNyZXNvdXJjZXNTZXJ2aWNlLmdldFN0cmluZygnc2t5dXhfaW5saW5lX2Zvcm1fYnV0dG9uX2NhbmNlbCcpXG4gICAgICAgIClcbiAgICAgICAgICAucGlwZSh0YWtlVW50aWwodGhpcy4jbmdVbnN1YnNjcmliZSkpXG4gICAgICAgICAgLnN1YnNjcmliZSgodmFsdWVzOiBzdHJpbmdbXSkgPT4ge1xuICAgICAgICAgICAgZW1pdHRlci5uZXh0KFtcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHRleHQ6IHZhbHVlc1swXSxcbiAgICAgICAgICAgICAgICBzdHlsZVR5cGU6ICdwcmltYXJ5JyxcbiAgICAgICAgICAgICAgICBhY3Rpb246ICdkb25lJyxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHRleHQ6IHZhbHVlc1sxXSxcbiAgICAgICAgICAgICAgICBzdHlsZVR5cGU6ICdkZWZhdWx0JyxcbiAgICAgICAgICAgICAgICBhY3Rpb246ICdkZWxldGUnLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgdGV4dDogdmFsdWVzWzJdLFxuICAgICAgICAgICAgICAgIHN0eWxlVHlwZTogJ2xpbmsnLFxuICAgICAgICAgICAgICAgIGFjdGlvbjogJ2NhbmNlbCcsXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBdKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGNhc2UgU2t5SW5saW5lRm9ybUJ1dHRvbkxheW91dC5TYXZlRGVsZXRlQ2FuY2VsOlxuICAgICAgICBvYnNlcnZhYmxlWmlwKFxuICAgICAgICAgIHRoaXMuI3Jlc291cmNlc1NlcnZpY2UuZ2V0U3RyaW5nKCdza3l1eF9pbmxpbmVfZm9ybV9idXR0b25fc2F2ZScpLFxuICAgICAgICAgIHRoaXMuI3Jlc291cmNlc1NlcnZpY2UuZ2V0U3RyaW5nKCdza3l1eF9pbmxpbmVfZm9ybV9idXR0b25fZGVsZXRlJyksXG4gICAgICAgICAgdGhpcy4jcmVzb3VyY2VzU2VydmljZS5nZXRTdHJpbmcoJ3NreXV4X2lubGluZV9mb3JtX2J1dHRvbl9jYW5jZWwnKVxuICAgICAgICApXG4gICAgICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuI25nVW5zdWJzY3JpYmUpKVxuICAgICAgICAgIC5zdWJzY3JpYmUoKHZhbHVlczogc3RyaW5nW10pID0+IHtcbiAgICAgICAgICAgIGVtaXR0ZXIubmV4dChbXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICB0ZXh0OiB2YWx1ZXNbMF0sXG4gICAgICAgICAgICAgICAgc3R5bGVUeXBlOiAncHJpbWFyeScsXG4gICAgICAgICAgICAgICAgYWN0aW9uOiAnc2F2ZScsXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICB0ZXh0OiB2YWx1ZXNbMV0sXG4gICAgICAgICAgICAgICAgc3R5bGVUeXBlOiAnZGVmYXVsdCcsXG4gICAgICAgICAgICAgICAgYWN0aW9uOiAnZGVsZXRlJyxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHRleHQ6IHZhbHVlc1syXSxcbiAgICAgICAgICAgICAgICBzdHlsZVR5cGU6ICdsaW5rJyxcbiAgICAgICAgICAgICAgICBhY3Rpb246ICdjYW5jZWwnLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgXSk7XG4gICAgICAgICAgfSk7XG4gICAgICAgIGJyZWFrO1xuICAgIH1cblxuICAgIHJldHVybiBlbWl0dGVyLmFzT2JzZXJ2YWJsZSgpO1xuICB9XG5cbiAgI2dldEN1c3RvbUJ1dHRvbnMoXG4gICAgYnV0dG9uQ29uZmlnczogU2t5SW5saW5lRm9ybUJ1dHRvbkNvbmZpZ1tdXG4gICk6IFNreUlubGluZUZvcm1CdXR0b25Db25maWdbXSB7XG4gICAgY29uc3QgYnV0dG9uczogU2t5SW5saW5lRm9ybUJ1dHRvbkNvbmZpZ1tdID0gW107XG5cbiAgICBidXR0b25Db25maWdzLmZvckVhY2goKGNvbmZpZzogU2t5SW5saW5lRm9ybUJ1dHRvbkNvbmZpZykgPT4ge1xuICAgICAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgICAgIGNvbnN0IHN0eWxlVHlwZSA9IGNvbmZpZy5zdHlsZVR5cGUgfHwgJ2RlZmF1bHQnO1xuXG4gICAgICBidXR0b25zLnB1c2goe1xuICAgICAgICBhY3Rpb246IGNvbmZpZy5hY3Rpb24sXG4gICAgICAgIGRpc2FibGVkOiBjb25maWcuZGlzYWJsZWQsXG4gICAgICAgIHN0eWxlVHlwZTogc3R5bGVUeXBlLFxuICAgICAgICB0ZXh0OiBjb25maWcudGV4dCxcbiAgICAgIH0gYXMgU2t5SW5saW5lRm9ybUJ1dHRvbkNvbmZpZyk7XG4gICAgfSk7XG5cbiAgICByZXR1cm4gYnV0dG9ucztcbiAgfVxuXG4gICNpc1ZhbGlkQ3VzdG9tQ29uZmlnKGNvbmZpZzogU2t5SW5saW5lRm9ybUNvbmZpZyB8IHVuZGVmaW5lZCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAoXG4gICAgICAhIWNvbmZpZyAmJlxuICAgICAgISFjb25maWcuYnV0dG9ucyAmJlxuICAgICAgY29uZmlnLmJ1dHRvbnMubGVuZ3RoID4gMCAmJlxuICAgICAgY29uZmlnLmJ1dHRvbkxheW91dCA9PT0gU2t5SW5saW5lRm9ybUJ1dHRvbkxheW91dC5DdXN0b21cbiAgICApO1xuICB9XG59XG4iLCI8ZGl2IFtAc2t5U2xpZGVEaXNzb2x2ZV09XCJzaG93Rm9ybVwiPlxuICA8ZGl2ICpuZ0lmPVwiIXNob3dGb3JtXCIgY2xhc3M9XCJza3ktc2xpZGUtZGlzc29sdmUtZmlyc3RcIj5cbiAgICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XG4gIDwvZGl2PlxuXG4gIDxkaXYgKm5nSWY9XCJ0ZW1wbGF0ZSAmJiBzaG93Rm9ybVwiIGNsYXNzPVwic2t5LXNsaWRlLWRpc3NvbHZlLWxhc3RcIj5cbiAgICA8ZGl2IGNsYXNzPVwic2t5LWlubGluZS1mb3JtIHNreS1zaGFkb3cgc2t5LWJveCBza3ktZWxldmF0aW9uLTNcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJza3ktaW5saW5lLWZvcm0tY29udGVudFwiPlxuICAgICAgICA8bmctY29udGFpbmVyIFtuZ1RlbXBsYXRlT3V0bGV0XT1cInRlbXBsYXRlXCI+IDwvbmctY29udGFpbmVyPlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwic2t5LWlubGluZS1mb3JtLWZvb3RlclwiPlxuICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgKm5nRm9yPVwibGV0IGJ1dHRvbiBvZiBidXR0b25zXCJcbiAgICAgICAgICBjbGFzcz1cInNreS1idG4ge3sgJ3NreS1idG4tJyArIGJ1dHRvbi5zdHlsZVR5cGUgfX1cIlxuICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgIFtkaXNhYmxlZF09XCJidXR0b24uZGlzYWJsZWQgPyB0cnVlIDogbnVsbFwiXG4gICAgICAgICAgW25nQ2xhc3NdPVwieyAnc2t5LWJ0bi1kaXNhYmxlZCc6IGJ1dHRvbi5kaXNhYmxlZCB9XCJcbiAgICAgICAgICAoY2xpY2spPVwiY2xvc2VJbmxpbmVGb3JtKGJ1dHRvbilcIlxuICAgICAgICA+XG4gICAgICAgICAge3sgYnV0dG9uLnRleHQgfX1cbiAgICAgICAgPC9idXR0b24+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==
|