@aws-cdk/aws-medialive-alpha 2.268.0-alpha.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.jsii +60888 -0
- package/.jsii.tabl.json.gz +0 -0
- package/.warnings.jsii.js +524 -0
- package/LICENSE +201 -0
- package/NOTICE +2 -0
- package/README.md +1297 -0
- package/grants.json +27 -0
- package/lib/audio-codec-settings.d.ts +901 -0
- package/lib/audio-codec-settings.js +1098 -0
- package/lib/audio-selector.d.ts +170 -0
- package/lib/audio-selector.js +306 -0
- package/lib/avail-settings.d.ts +231 -0
- package/lib/avail-settings.js +226 -0
- package/lib/caption-selector.d.ts +234 -0
- package/lib/caption-selector.js +413 -0
- package/lib/caption-settings.d.ts +349 -0
- package/lib/caption-settings.js +482 -0
- package/lib/channel-features.d.ts +106 -0
- package/lib/channel-features.js +85 -0
- package/lib/channel-placement-group.d.ts +73 -0
- package/lib/channel-placement-group.js +132 -0
- package/lib/channel.d.ts +687 -0
- package/lib/channel.js +1096 -0
- package/lib/cluster.d.ts +129 -0
- package/lib/cluster.js +158 -0
- package/lib/color-correction.d.ts +39 -0
- package/lib/color-correction.js +29 -0
- package/lib/destinations.d.ts +242 -0
- package/lib/destinations.js +455 -0
- package/lib/encode-configuration.d.ts +615 -0
- package/lib/encode-configuration.js +629 -0
- package/lib/enums.d.ts +698 -0
- package/lib/enums.js +1045 -0
- package/lib/file-location.d.ts +65 -0
- package/lib/file-location.js +150 -0
- package/lib/framerate.d.ts +31 -0
- package/lib/framerate.js +71 -0
- package/lib/index.d.ts +26 -0
- package/lib/index.js +43 -0
- package/lib/input-attachment.d.ts +319 -0
- package/lib/input-attachment.js +228 -0
- package/lib/input-security-group.d.ts +51 -0
- package/lib/input-security-group.js +123 -0
- package/lib/input-specification.d.ts +111 -0
- package/lib/input-specification.js +181 -0
- package/lib/input.d.ts +505 -0
- package/lib/input.js +803 -0
- package/lib/m2ts-settings.d.ts +421 -0
- package/lib/m2ts-settings.js +469 -0
- package/lib/m3u8-settings.d.ts +272 -0
- package/lib/m3u8-settings.js +304 -0
- package/lib/medialive-grants.generated.d.ts +30 -0
- package/lib/medialive-grants.generated.js +92 -0
- package/lib/network.d.ts +83 -0
- package/lib/network.js +132 -0
- package/lib/output-group.d.ts +924 -0
- package/lib/output-group.js +941 -0
- package/lib/outputs.d.ts +304 -0
- package/lib/outputs.js +598 -0
- package/lib/sdi-source.d.ts +124 -0
- package/lib/sdi-source.js +180 -0
- package/lib/shared.d.ts +44 -0
- package/lib/shared.js +146 -0
- package/lib/video-codec-settings.d.ts +1500 -0
- package/lib/video-codec-settings.js +1722 -0
- package/lib/video-selection.d.ts +92 -0
- package/lib/video-selection.js +95 -0
- package/package.json +135 -0
- package/rosetta/_generated.ts-fixture +6 -0
- package/rosetta/default.ts-fixture +21 -0
|
@@ -0,0 +1,1098 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.AudioCodecSettings = exports.WavCodingMode = exports.Mp2CodingMode = exports.Eac3AtmosDrcRf = exports.Eac3AtmosDrcLine = exports.Eac3AtmosCodingMode = exports.Eac3SurroundMode = exports.Eac3SurroundExMode = exports.Eac3StereoDownmix = exports.Eac3PhaseControl = exports.Eac3PassthroughControl = exports.Eac3MetadataControl = exports.Eac3LfeFilter = exports.Eac3LfeControl = exports.Eac3DrcRf = exports.Eac3DrcLine = exports.Eac3DcFilter = exports.Eac3CodingMode = exports.Eac3BitstreamMode = exports.Eac3AttenuationControl = exports.Ac3MetadataControl = exports.Ac3LfeFilter = exports.Ac3DrcProfile = exports.Ac3CodingMode = exports.Ac3BitstreamMode = exports.Ac3AttenuationControl = exports.AacVbrQuality = exports.AacInputType = exports.AacSpec = exports.AacRawFormat = exports.AacRateControlMode = exports.AacCodingMode = exports.AacProfile = exports.AudioCodecType = exports.AudioBitDepth = exports.AudioSampleRate = void 0;
|
|
4
|
+
const jsiiDeprecationWarnings = require("../.warnings.jsii.js");
|
|
5
|
+
const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
|
|
6
|
+
/**
|
|
7
|
+
* Audio sample rate for AAC, MP2, and WAV codecs.
|
|
8
|
+
*
|
|
9
|
+
* Use one of the standard presets or `AudioSampleRate.of(hz)` for a custom value.
|
|
10
|
+
*/
|
|
11
|
+
class AudioSampleRate {
|
|
12
|
+
hz;
|
|
13
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-medialive-alpha.AudioSampleRate", version: "2.268.0-alpha.0" };
|
|
14
|
+
/** 8,000 Hz */
|
|
15
|
+
static HZ_8000 = new AudioSampleRate(8000);
|
|
16
|
+
/** 12,000 Hz */
|
|
17
|
+
static HZ_12000 = new AudioSampleRate(12000);
|
|
18
|
+
/** 16,000 Hz */
|
|
19
|
+
static HZ_16000 = new AudioSampleRate(16000);
|
|
20
|
+
/** 22,050 Hz */
|
|
21
|
+
static HZ_22050 = new AudioSampleRate(22050);
|
|
22
|
+
/** 24,000 Hz */
|
|
23
|
+
static HZ_24000 = new AudioSampleRate(24000);
|
|
24
|
+
/** 32,000 Hz */
|
|
25
|
+
static HZ_32000 = new AudioSampleRate(32000);
|
|
26
|
+
/** 44,100 Hz */
|
|
27
|
+
static HZ_44100 = new AudioSampleRate(44100);
|
|
28
|
+
/** 48,000 Hz */
|
|
29
|
+
static HZ_48000 = new AudioSampleRate(48000);
|
|
30
|
+
/** 88,200 Hz */
|
|
31
|
+
static HZ_88200 = new AudioSampleRate(88200);
|
|
32
|
+
/** 96,000 Hz */
|
|
33
|
+
static HZ_96000 = new AudioSampleRate(96000);
|
|
34
|
+
/**
|
|
35
|
+
* A custom sample rate in Hz.
|
|
36
|
+
* @param hz the sample rate in Hz
|
|
37
|
+
*/
|
|
38
|
+
static of(hz) {
|
|
39
|
+
return new AudioSampleRate(hz);
|
|
40
|
+
}
|
|
41
|
+
constructor(hz) {
|
|
42
|
+
this.hz = hz;
|
|
43
|
+
}
|
|
44
|
+
/** @internal */
|
|
45
|
+
_toHz() {
|
|
46
|
+
return this.hz;
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
exports.AudioSampleRate = AudioSampleRate;
|
|
50
|
+
/**
|
|
51
|
+
* Audio bit depth for WAV codec.
|
|
52
|
+
*
|
|
53
|
+
* Use one of the standard presets or `AudioBitDepth.of(bits)` for a custom value.
|
|
54
|
+
*/
|
|
55
|
+
class AudioBitDepth {
|
|
56
|
+
bits;
|
|
57
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-medialive-alpha.AudioBitDepth", version: "2.268.0-alpha.0" };
|
|
58
|
+
/** 16-bit */
|
|
59
|
+
static DEPTH_16 = new AudioBitDepth(16);
|
|
60
|
+
/** 24-bit */
|
|
61
|
+
static DEPTH_24 = new AudioBitDepth(24);
|
|
62
|
+
/**
|
|
63
|
+
* A custom bit depth.
|
|
64
|
+
* @param bits the bit depth
|
|
65
|
+
*/
|
|
66
|
+
static of(bits) {
|
|
67
|
+
return new AudioBitDepth(bits);
|
|
68
|
+
}
|
|
69
|
+
constructor(bits) {
|
|
70
|
+
this.bits = bits;
|
|
71
|
+
}
|
|
72
|
+
/** @internal */
|
|
73
|
+
_toBits() {
|
|
74
|
+
return this.bits;
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
exports.AudioBitDepth = AudioBitDepth;
|
|
78
|
+
/**
|
|
79
|
+
* The type of audio codec. Users select a codec via the
|
|
80
|
+
* `AudioCodecSettings` factory methods, never by passing this type directly.
|
|
81
|
+
* @internal
|
|
82
|
+
*/
|
|
83
|
+
var AudioCodecType;
|
|
84
|
+
(function (AudioCodecType) {
|
|
85
|
+
/** AAC */
|
|
86
|
+
AudioCodecType["AAC"] = "AAC";
|
|
87
|
+
/** Dolby Digital (AC3) */
|
|
88
|
+
AudioCodecType["AC3"] = "AC3";
|
|
89
|
+
/** Dolby Digital Plus (EAC3) */
|
|
90
|
+
AudioCodecType["EAC3"] = "EAC3";
|
|
91
|
+
/** Dolby Digital Plus with Atmos (EAC3 Atmos) */
|
|
92
|
+
AudioCodecType["EAC3_ATMOS"] = "EAC3_ATMOS";
|
|
93
|
+
/** MPEG-1 Layer II (MP2) */
|
|
94
|
+
AudioCodecType["MP2"] = "MP2";
|
|
95
|
+
/** WAV */
|
|
96
|
+
AudioCodecType["WAV"] = "WAV";
|
|
97
|
+
/** Passthrough (no transcoding) */
|
|
98
|
+
AudioCodecType["PASSTHROUGH"] = "PASSTHROUGH";
|
|
99
|
+
})(AudioCodecType || (exports.AudioCodecType = AudioCodecType = {}));
|
|
100
|
+
/**
|
|
101
|
+
* AAC profile.
|
|
102
|
+
*/
|
|
103
|
+
class AacProfile {
|
|
104
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-medialive-alpha.AacProfile", version: "2.268.0-alpha.0" };
|
|
105
|
+
/** HEV1 */
|
|
106
|
+
static HEV1 = new AacProfile('HEV1');
|
|
107
|
+
/** HEV2 */
|
|
108
|
+
static HEV2 = new AacProfile('HEV2');
|
|
109
|
+
/** LC (Low Complexity) */
|
|
110
|
+
static LC = new AacProfile('LC');
|
|
111
|
+
/** A value not yet modelled by AWS CDK. */
|
|
112
|
+
static of(value) {
|
|
113
|
+
return new AacProfile(value);
|
|
114
|
+
}
|
|
115
|
+
/** The underlying string value passed to CloudFormation. */
|
|
116
|
+
value;
|
|
117
|
+
constructor(value) {
|
|
118
|
+
this.value = value;
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
exports.AacProfile = AacProfile;
|
|
122
|
+
/**
|
|
123
|
+
* AAC coding mode.
|
|
124
|
+
*/
|
|
125
|
+
class AacCodingMode {
|
|
126
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-medialive-alpha.AacCodingMode", version: "2.268.0-alpha.0" };
|
|
127
|
+
/** Ad receiver mix — receives stereo audio description + control track per ETSI TS 101 154 Annex E. */
|
|
128
|
+
static AD_RECEIVER_MIX = new AacCodingMode('AD_RECEIVER_MIX');
|
|
129
|
+
/** 1.0 (mono) */
|
|
130
|
+
static CODING_MODE_1_0 = new AacCodingMode('CODING_MODE_1_0');
|
|
131
|
+
/** 1+1 (dual mono) */
|
|
132
|
+
static CODING_MODE_1_1 = new AacCodingMode('CODING_MODE_1_1');
|
|
133
|
+
/** 2.0 (stereo) */
|
|
134
|
+
static CODING_MODE_2_0 = new AacCodingMode('CODING_MODE_2_0');
|
|
135
|
+
/** 5.1 surround */
|
|
136
|
+
static CODING_MODE_5_1 = new AacCodingMode('CODING_MODE_5_1');
|
|
137
|
+
/** A value not yet modelled by AWS CDK. */
|
|
138
|
+
static of(value) {
|
|
139
|
+
return new AacCodingMode(value);
|
|
140
|
+
}
|
|
141
|
+
/** The underlying string value passed to CloudFormation. */
|
|
142
|
+
value;
|
|
143
|
+
constructor(value) {
|
|
144
|
+
this.value = value;
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
exports.AacCodingMode = AacCodingMode;
|
|
148
|
+
/**
|
|
149
|
+
* AAC rate control mode.
|
|
150
|
+
*/
|
|
151
|
+
class AacRateControlMode {
|
|
152
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-medialive-alpha.AacRateControlMode", version: "2.268.0-alpha.0" };
|
|
153
|
+
/** Constant bitrate */
|
|
154
|
+
static CBR = new AacRateControlMode('CBR');
|
|
155
|
+
/** Variable bitrate */
|
|
156
|
+
static VBR = new AacRateControlMode('VBR');
|
|
157
|
+
/** A value not yet modelled by AWS CDK. */
|
|
158
|
+
static of(value) {
|
|
159
|
+
return new AacRateControlMode(value);
|
|
160
|
+
}
|
|
161
|
+
/** The underlying string value passed to CloudFormation. */
|
|
162
|
+
value;
|
|
163
|
+
constructor(value) {
|
|
164
|
+
this.value = value;
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
exports.AacRateControlMode = AacRateControlMode;
|
|
168
|
+
/**
|
|
169
|
+
* AAC raw format.
|
|
170
|
+
*/
|
|
171
|
+
class AacRawFormat {
|
|
172
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-medialive-alpha.AacRawFormat", version: "2.268.0-alpha.0" };
|
|
173
|
+
/** LATM/LOAS */
|
|
174
|
+
static LATM_LOAS = new AacRawFormat('LATM_LOAS');
|
|
175
|
+
/** None */
|
|
176
|
+
static NONE = new AacRawFormat('NONE');
|
|
177
|
+
/** A value not yet modelled by AWS CDK. */
|
|
178
|
+
static of(value) {
|
|
179
|
+
return new AacRawFormat(value);
|
|
180
|
+
}
|
|
181
|
+
/** The underlying string value passed to CloudFormation. */
|
|
182
|
+
value;
|
|
183
|
+
constructor(value) {
|
|
184
|
+
this.value = value;
|
|
185
|
+
}
|
|
186
|
+
}
|
|
187
|
+
exports.AacRawFormat = AacRawFormat;
|
|
188
|
+
/**
|
|
189
|
+
* AAC specification.
|
|
190
|
+
*/
|
|
191
|
+
class AacSpec {
|
|
192
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-medialive-alpha.AacSpec", version: "2.268.0-alpha.0" };
|
|
193
|
+
/** MPEG-2 AAC */
|
|
194
|
+
static MPEG2 = new AacSpec('MPEG2');
|
|
195
|
+
/** MPEG-4 AAC */
|
|
196
|
+
static MPEG4 = new AacSpec('MPEG4');
|
|
197
|
+
/** A value not yet modelled by AWS CDK. */
|
|
198
|
+
static of(value) {
|
|
199
|
+
return new AacSpec(value);
|
|
200
|
+
}
|
|
201
|
+
/** The underlying string value passed to CloudFormation. */
|
|
202
|
+
value;
|
|
203
|
+
constructor(value) {
|
|
204
|
+
this.value = value;
|
|
205
|
+
}
|
|
206
|
+
}
|
|
207
|
+
exports.AacSpec = AacSpec;
|
|
208
|
+
/**
|
|
209
|
+
* AAC input type.
|
|
210
|
+
*/
|
|
211
|
+
class AacInputType {
|
|
212
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-medialive-alpha.AacInputType", version: "2.268.0-alpha.0" };
|
|
213
|
+
/** Broadcaster mixed AD */
|
|
214
|
+
static BROADCASTER_MIXED_AD = new AacInputType('BROADCASTER_MIXED_AD');
|
|
215
|
+
/** Normal */
|
|
216
|
+
static NORMAL = new AacInputType('NORMAL');
|
|
217
|
+
/** A value not yet modelled by AWS CDK. */
|
|
218
|
+
static of(value) {
|
|
219
|
+
return new AacInputType(value);
|
|
220
|
+
}
|
|
221
|
+
/** The underlying string value passed to CloudFormation. */
|
|
222
|
+
value;
|
|
223
|
+
constructor(value) {
|
|
224
|
+
this.value = value;
|
|
225
|
+
}
|
|
226
|
+
}
|
|
227
|
+
exports.AacInputType = AacInputType;
|
|
228
|
+
/**
|
|
229
|
+
* AAC VBR quality level.
|
|
230
|
+
*/
|
|
231
|
+
class AacVbrQuality {
|
|
232
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-medialive-alpha.AacVbrQuality", version: "2.268.0-alpha.0" };
|
|
233
|
+
/** High */
|
|
234
|
+
static HIGH = new AacVbrQuality('HIGH');
|
|
235
|
+
/** Low */
|
|
236
|
+
static LOW = new AacVbrQuality('LOW');
|
|
237
|
+
/** Medium high */
|
|
238
|
+
static MEDIUM_HIGH = new AacVbrQuality('MEDIUM_HIGH');
|
|
239
|
+
/** Medium low */
|
|
240
|
+
static MEDIUM_LOW = new AacVbrQuality('MEDIUM_LOW');
|
|
241
|
+
/** A value not yet modelled by AWS CDK. */
|
|
242
|
+
static of(value) {
|
|
243
|
+
return new AacVbrQuality(value);
|
|
244
|
+
}
|
|
245
|
+
/** The underlying string value passed to CloudFormation. */
|
|
246
|
+
value;
|
|
247
|
+
constructor(value) {
|
|
248
|
+
this.value = value;
|
|
249
|
+
}
|
|
250
|
+
}
|
|
251
|
+
exports.AacVbrQuality = AacVbrQuality;
|
|
252
|
+
// =============================================================================
|
|
253
|
+
// AC3 enums
|
|
254
|
+
// =============================================================================
|
|
255
|
+
/**
|
|
256
|
+
* AC3 attenuation control.
|
|
257
|
+
*/
|
|
258
|
+
class Ac3AttenuationControl {
|
|
259
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-medialive-alpha.Ac3AttenuationControl", version: "2.268.0-alpha.0" };
|
|
260
|
+
/** Apply 3 dB attenuation to surround channels */
|
|
261
|
+
static ATTENUATE_3_DB = new Ac3AttenuationControl('ATTENUATE_3_DB');
|
|
262
|
+
/** No attenuation */
|
|
263
|
+
static NONE = new Ac3AttenuationControl('NONE');
|
|
264
|
+
/** A value not yet modelled by AWS CDK. */
|
|
265
|
+
static of(value) {
|
|
266
|
+
return new Ac3AttenuationControl(value);
|
|
267
|
+
}
|
|
268
|
+
/** The underlying string value passed to CloudFormation. */
|
|
269
|
+
value;
|
|
270
|
+
constructor(value) {
|
|
271
|
+
this.value = value;
|
|
272
|
+
}
|
|
273
|
+
}
|
|
274
|
+
exports.Ac3AttenuationControl = Ac3AttenuationControl;
|
|
275
|
+
/**
|
|
276
|
+
* AC3 bitstream mode.
|
|
277
|
+
*/
|
|
278
|
+
class Ac3BitstreamMode {
|
|
279
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-medialive-alpha.Ac3BitstreamMode", version: "2.268.0-alpha.0" };
|
|
280
|
+
/** Commentary */
|
|
281
|
+
static COMMENTARY = new Ac3BitstreamMode('COMMENTARY');
|
|
282
|
+
/** Complete main */
|
|
283
|
+
static COMPLETE_MAIN = new Ac3BitstreamMode('COMPLETE_MAIN');
|
|
284
|
+
/** Dialogue */
|
|
285
|
+
static DIALOGUE = new Ac3BitstreamMode('DIALOGUE');
|
|
286
|
+
/** Emergency */
|
|
287
|
+
static EMERGENCY = new Ac3BitstreamMode('EMERGENCY');
|
|
288
|
+
/** Hearing impaired */
|
|
289
|
+
static HEARING_IMPAIRED = new Ac3BitstreamMode('HEARING_IMPAIRED');
|
|
290
|
+
/** Music and effects */
|
|
291
|
+
static MUSIC_AND_EFFECTS = new Ac3BitstreamMode('MUSIC_AND_EFFECTS');
|
|
292
|
+
/** Visually impaired */
|
|
293
|
+
static VISUALLY_IMPAIRED = new Ac3BitstreamMode('VISUALLY_IMPAIRED');
|
|
294
|
+
/** Voice over */
|
|
295
|
+
static VOICE_OVER = new Ac3BitstreamMode('VOICE_OVER');
|
|
296
|
+
/** A value not yet modelled by AWS CDK. */
|
|
297
|
+
static of(value) {
|
|
298
|
+
return new Ac3BitstreamMode(value);
|
|
299
|
+
}
|
|
300
|
+
/** The underlying string value passed to CloudFormation. */
|
|
301
|
+
value;
|
|
302
|
+
constructor(value) {
|
|
303
|
+
this.value = value;
|
|
304
|
+
}
|
|
305
|
+
}
|
|
306
|
+
exports.Ac3BitstreamMode = Ac3BitstreamMode;
|
|
307
|
+
/**
|
|
308
|
+
* AC3 coding mode.
|
|
309
|
+
*/
|
|
310
|
+
class Ac3CodingMode {
|
|
311
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-medialive-alpha.Ac3CodingMode", version: "2.268.0-alpha.0" };
|
|
312
|
+
/** 1.0 (mono) */
|
|
313
|
+
static CODING_MODE_1_0 = new Ac3CodingMode('CODING_MODE_1_0');
|
|
314
|
+
/** 1+1 (dual mono) */
|
|
315
|
+
static CODING_MODE_1_1 = new Ac3CodingMode('CODING_MODE_1_1');
|
|
316
|
+
/** 2.0 (stereo) */
|
|
317
|
+
static CODING_MODE_2_0 = new Ac3CodingMode('CODING_MODE_2_0');
|
|
318
|
+
/** 3/2 (5.0 surround) */
|
|
319
|
+
static CODING_MODE_3_2_LFE = new Ac3CodingMode('CODING_MODE_3_2_LFE');
|
|
320
|
+
/** A value not yet modelled by AWS CDK. */
|
|
321
|
+
static of(value) {
|
|
322
|
+
return new Ac3CodingMode(value);
|
|
323
|
+
}
|
|
324
|
+
/** The underlying string value passed to CloudFormation. */
|
|
325
|
+
value;
|
|
326
|
+
constructor(value) {
|
|
327
|
+
this.value = value;
|
|
328
|
+
}
|
|
329
|
+
}
|
|
330
|
+
exports.Ac3CodingMode = Ac3CodingMode;
|
|
331
|
+
/**
|
|
332
|
+
* AC3 DRC profile.
|
|
333
|
+
*/
|
|
334
|
+
class Ac3DrcProfile {
|
|
335
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-medialive-alpha.Ac3DrcProfile", version: "2.268.0-alpha.0" };
|
|
336
|
+
/** Film standard */
|
|
337
|
+
static FILM_STANDARD = new Ac3DrcProfile('FILM_STANDARD');
|
|
338
|
+
/** None */
|
|
339
|
+
static NONE = new Ac3DrcProfile('NONE');
|
|
340
|
+
/** A value not yet modelled by AWS CDK. */
|
|
341
|
+
static of(value) {
|
|
342
|
+
return new Ac3DrcProfile(value);
|
|
343
|
+
}
|
|
344
|
+
/** The underlying string value passed to CloudFormation. */
|
|
345
|
+
value;
|
|
346
|
+
constructor(value) {
|
|
347
|
+
this.value = value;
|
|
348
|
+
}
|
|
349
|
+
}
|
|
350
|
+
exports.Ac3DrcProfile = Ac3DrcProfile;
|
|
351
|
+
/**
|
|
352
|
+
* AC3 LFE filter.
|
|
353
|
+
*/
|
|
354
|
+
class Ac3LfeFilter {
|
|
355
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-medialive-alpha.Ac3LfeFilter", version: "2.268.0-alpha.0" };
|
|
356
|
+
/** Disabled */
|
|
357
|
+
static DISABLED = new Ac3LfeFilter('DISABLED');
|
|
358
|
+
/** Enabled */
|
|
359
|
+
static ENABLED = new Ac3LfeFilter('ENABLED');
|
|
360
|
+
/** A value not yet modelled by AWS CDK. */
|
|
361
|
+
static of(value) {
|
|
362
|
+
return new Ac3LfeFilter(value);
|
|
363
|
+
}
|
|
364
|
+
/** The underlying string value passed to CloudFormation. */
|
|
365
|
+
value;
|
|
366
|
+
constructor(value) {
|
|
367
|
+
this.value = value;
|
|
368
|
+
}
|
|
369
|
+
}
|
|
370
|
+
exports.Ac3LfeFilter = Ac3LfeFilter;
|
|
371
|
+
/**
|
|
372
|
+
* AC3 metadata control.
|
|
373
|
+
*/
|
|
374
|
+
class Ac3MetadataControl {
|
|
375
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-medialive-alpha.Ac3MetadataControl", version: "2.268.0-alpha.0" };
|
|
376
|
+
/** Follow input */
|
|
377
|
+
static FOLLOW_INPUT = new Ac3MetadataControl('FOLLOW_INPUT');
|
|
378
|
+
/** Use configured */
|
|
379
|
+
static USE_CONFIGURED = new Ac3MetadataControl('USE_CONFIGURED');
|
|
380
|
+
/** A value not yet modelled by AWS CDK. */
|
|
381
|
+
static of(value) {
|
|
382
|
+
return new Ac3MetadataControl(value);
|
|
383
|
+
}
|
|
384
|
+
/** The underlying string value passed to CloudFormation. */
|
|
385
|
+
value;
|
|
386
|
+
constructor(value) {
|
|
387
|
+
this.value = value;
|
|
388
|
+
}
|
|
389
|
+
}
|
|
390
|
+
exports.Ac3MetadataControl = Ac3MetadataControl;
|
|
391
|
+
// =============================================================================
|
|
392
|
+
// EAC3 enums
|
|
393
|
+
// =============================================================================
|
|
394
|
+
/**
|
|
395
|
+
* EAC3 attenuation control.
|
|
396
|
+
*/
|
|
397
|
+
class Eac3AttenuationControl {
|
|
398
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-medialive-alpha.Eac3AttenuationControl", version: "2.268.0-alpha.0" };
|
|
399
|
+
/** Apply 3 dB attenuation to surround channels */
|
|
400
|
+
static ATTENUATE_3_DB = new Eac3AttenuationControl('ATTENUATE_3_DB');
|
|
401
|
+
/** No attenuation */
|
|
402
|
+
static NONE = new Eac3AttenuationControl('NONE');
|
|
403
|
+
/** A value not yet modelled by AWS CDK. */
|
|
404
|
+
static of(value) {
|
|
405
|
+
return new Eac3AttenuationControl(value);
|
|
406
|
+
}
|
|
407
|
+
/** The underlying string value passed to CloudFormation. */
|
|
408
|
+
value;
|
|
409
|
+
constructor(value) {
|
|
410
|
+
this.value = value;
|
|
411
|
+
}
|
|
412
|
+
}
|
|
413
|
+
exports.Eac3AttenuationControl = Eac3AttenuationControl;
|
|
414
|
+
/**
|
|
415
|
+
* EAC3 bitstream mode.
|
|
416
|
+
*/
|
|
417
|
+
class Eac3BitstreamMode {
|
|
418
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-medialive-alpha.Eac3BitstreamMode", version: "2.268.0-alpha.0" };
|
|
419
|
+
/** Commentary */
|
|
420
|
+
static COMMENTARY = new Eac3BitstreamMode('COMMENTARY');
|
|
421
|
+
/** Complete main */
|
|
422
|
+
static COMPLETE_MAIN = new Eac3BitstreamMode('COMPLETE_MAIN');
|
|
423
|
+
/** Emergency */
|
|
424
|
+
static EMERGENCY = new Eac3BitstreamMode('EMERGENCY');
|
|
425
|
+
/** Hearing impaired */
|
|
426
|
+
static HEARING_IMPAIRED = new Eac3BitstreamMode('HEARING_IMPAIRED');
|
|
427
|
+
/** Visually impaired */
|
|
428
|
+
static VISUALLY_IMPAIRED = new Eac3BitstreamMode('VISUALLY_IMPAIRED');
|
|
429
|
+
/** A value not yet modelled by AWS CDK. */
|
|
430
|
+
static of(value) {
|
|
431
|
+
return new Eac3BitstreamMode(value);
|
|
432
|
+
}
|
|
433
|
+
/** The underlying string value passed to CloudFormation. */
|
|
434
|
+
value;
|
|
435
|
+
constructor(value) {
|
|
436
|
+
this.value = value;
|
|
437
|
+
}
|
|
438
|
+
}
|
|
439
|
+
exports.Eac3BitstreamMode = Eac3BitstreamMode;
|
|
440
|
+
/**
|
|
441
|
+
* EAC3 coding mode.
|
|
442
|
+
*/
|
|
443
|
+
class Eac3CodingMode {
|
|
444
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-medialive-alpha.Eac3CodingMode", version: "2.268.0-alpha.0" };
|
|
445
|
+
/** 1.0 (mono) */
|
|
446
|
+
static CODING_MODE_1_0 = new Eac3CodingMode('CODING_MODE_1_0');
|
|
447
|
+
/** 2.0 (stereo) */
|
|
448
|
+
static CODING_MODE_2_0 = new Eac3CodingMode('CODING_MODE_2_0');
|
|
449
|
+
/** 3/2 (5.0 surround) */
|
|
450
|
+
static CODING_MODE_3_2 = new Eac3CodingMode('CODING_MODE_3_2');
|
|
451
|
+
/** A value not yet modelled by AWS CDK. */
|
|
452
|
+
static of(value) {
|
|
453
|
+
return new Eac3CodingMode(value);
|
|
454
|
+
}
|
|
455
|
+
/** The underlying string value passed to CloudFormation. */
|
|
456
|
+
value;
|
|
457
|
+
constructor(value) {
|
|
458
|
+
this.value = value;
|
|
459
|
+
}
|
|
460
|
+
}
|
|
461
|
+
exports.Eac3CodingMode = Eac3CodingMode;
|
|
462
|
+
/**
|
|
463
|
+
* EAC3 DC filter.
|
|
464
|
+
*/
|
|
465
|
+
class Eac3DcFilter {
|
|
466
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-medialive-alpha.Eac3DcFilter", version: "2.268.0-alpha.0" };
|
|
467
|
+
/** Disabled */
|
|
468
|
+
static DISABLED = new Eac3DcFilter('DISABLED');
|
|
469
|
+
/** Enabled */
|
|
470
|
+
static ENABLED = new Eac3DcFilter('ENABLED');
|
|
471
|
+
/** A value not yet modelled by AWS CDK. */
|
|
472
|
+
static of(value) {
|
|
473
|
+
return new Eac3DcFilter(value);
|
|
474
|
+
}
|
|
475
|
+
/** The underlying string value passed to CloudFormation. */
|
|
476
|
+
value;
|
|
477
|
+
constructor(value) {
|
|
478
|
+
this.value = value;
|
|
479
|
+
}
|
|
480
|
+
}
|
|
481
|
+
exports.Eac3DcFilter = Eac3DcFilter;
|
|
482
|
+
/**
|
|
483
|
+
* EAC3 DRC line mode profile.
|
|
484
|
+
*/
|
|
485
|
+
class Eac3DrcLine {
|
|
486
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-medialive-alpha.Eac3DrcLine", version: "2.268.0-alpha.0" };
|
|
487
|
+
/** Film light */
|
|
488
|
+
static FILM_LIGHT = new Eac3DrcLine('FILM_LIGHT');
|
|
489
|
+
/** Film standard */
|
|
490
|
+
static FILM_STANDARD = new Eac3DrcLine('FILM_STANDARD');
|
|
491
|
+
/** Music light */
|
|
492
|
+
static MUSIC_LIGHT = new Eac3DrcLine('MUSIC_LIGHT');
|
|
493
|
+
/** Music standard */
|
|
494
|
+
static MUSIC_STANDARD = new Eac3DrcLine('MUSIC_STANDARD');
|
|
495
|
+
/** None */
|
|
496
|
+
static NONE = new Eac3DrcLine('NONE');
|
|
497
|
+
/** Speech */
|
|
498
|
+
static SPEECH = new Eac3DrcLine('SPEECH');
|
|
499
|
+
/** A value not yet modelled by AWS CDK. */
|
|
500
|
+
static of(value) {
|
|
501
|
+
return new Eac3DrcLine(value);
|
|
502
|
+
}
|
|
503
|
+
/** The underlying string value passed to CloudFormation. */
|
|
504
|
+
value;
|
|
505
|
+
constructor(value) {
|
|
506
|
+
this.value = value;
|
|
507
|
+
}
|
|
508
|
+
}
|
|
509
|
+
exports.Eac3DrcLine = Eac3DrcLine;
|
|
510
|
+
/**
|
|
511
|
+
* EAC3 DRC RF mode profile.
|
|
512
|
+
*/
|
|
513
|
+
class Eac3DrcRf {
|
|
514
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-medialive-alpha.Eac3DrcRf", version: "2.268.0-alpha.0" };
|
|
515
|
+
/** Film light */
|
|
516
|
+
static FILM_LIGHT = new Eac3DrcRf('FILM_LIGHT');
|
|
517
|
+
/** Film standard */
|
|
518
|
+
static FILM_STANDARD = new Eac3DrcRf('FILM_STANDARD');
|
|
519
|
+
/** Music light */
|
|
520
|
+
static MUSIC_LIGHT = new Eac3DrcRf('MUSIC_LIGHT');
|
|
521
|
+
/** Music standard */
|
|
522
|
+
static MUSIC_STANDARD = new Eac3DrcRf('MUSIC_STANDARD');
|
|
523
|
+
/** None */
|
|
524
|
+
static NONE = new Eac3DrcRf('NONE');
|
|
525
|
+
/** Speech */
|
|
526
|
+
static SPEECH = new Eac3DrcRf('SPEECH');
|
|
527
|
+
/** A value not yet modelled by AWS CDK. */
|
|
528
|
+
static of(value) {
|
|
529
|
+
return new Eac3DrcRf(value);
|
|
530
|
+
}
|
|
531
|
+
/** The underlying string value passed to CloudFormation. */
|
|
532
|
+
value;
|
|
533
|
+
constructor(value) {
|
|
534
|
+
this.value = value;
|
|
535
|
+
}
|
|
536
|
+
}
|
|
537
|
+
exports.Eac3DrcRf = Eac3DrcRf;
|
|
538
|
+
/**
|
|
539
|
+
* EAC3 LFE control.
|
|
540
|
+
*/
|
|
541
|
+
class Eac3LfeControl {
|
|
542
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-medialive-alpha.Eac3LfeControl", version: "2.268.0-alpha.0" };
|
|
543
|
+
/** LFE */
|
|
544
|
+
static LFE = new Eac3LfeControl('LFE');
|
|
545
|
+
/** No LFE */
|
|
546
|
+
static NO_LFE = new Eac3LfeControl('NO_LFE');
|
|
547
|
+
/** A value not yet modelled by AWS CDK. */
|
|
548
|
+
static of(value) {
|
|
549
|
+
return new Eac3LfeControl(value);
|
|
550
|
+
}
|
|
551
|
+
/** The underlying string value passed to CloudFormation. */
|
|
552
|
+
value;
|
|
553
|
+
constructor(value) {
|
|
554
|
+
this.value = value;
|
|
555
|
+
}
|
|
556
|
+
}
|
|
557
|
+
exports.Eac3LfeControl = Eac3LfeControl;
|
|
558
|
+
/**
|
|
559
|
+
* EAC3 LFE filter.
|
|
560
|
+
*/
|
|
561
|
+
class Eac3LfeFilter {
|
|
562
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-medialive-alpha.Eac3LfeFilter", version: "2.268.0-alpha.0" };
|
|
563
|
+
/** Disabled */
|
|
564
|
+
static DISABLED = new Eac3LfeFilter('DISABLED');
|
|
565
|
+
/** Enabled */
|
|
566
|
+
static ENABLED = new Eac3LfeFilter('ENABLED');
|
|
567
|
+
/** A value not yet modelled by AWS CDK. */
|
|
568
|
+
static of(value) {
|
|
569
|
+
return new Eac3LfeFilter(value);
|
|
570
|
+
}
|
|
571
|
+
/** The underlying string value passed to CloudFormation. */
|
|
572
|
+
value;
|
|
573
|
+
constructor(value) {
|
|
574
|
+
this.value = value;
|
|
575
|
+
}
|
|
576
|
+
}
|
|
577
|
+
exports.Eac3LfeFilter = Eac3LfeFilter;
|
|
578
|
+
/**
|
|
579
|
+
* EAC3 metadata control.
|
|
580
|
+
*/
|
|
581
|
+
class Eac3MetadataControl {
|
|
582
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-medialive-alpha.Eac3MetadataControl", version: "2.268.0-alpha.0" };
|
|
583
|
+
/** Follow input */
|
|
584
|
+
static FOLLOW_INPUT = new Eac3MetadataControl('FOLLOW_INPUT');
|
|
585
|
+
/** Use configured */
|
|
586
|
+
static USE_CONFIGURED = new Eac3MetadataControl('USE_CONFIGURED');
|
|
587
|
+
/** A value not yet modelled by AWS CDK. */
|
|
588
|
+
static of(value) {
|
|
589
|
+
return new Eac3MetadataControl(value);
|
|
590
|
+
}
|
|
591
|
+
/** The underlying string value passed to CloudFormation. */
|
|
592
|
+
value;
|
|
593
|
+
constructor(value) {
|
|
594
|
+
this.value = value;
|
|
595
|
+
}
|
|
596
|
+
}
|
|
597
|
+
exports.Eac3MetadataControl = Eac3MetadataControl;
|
|
598
|
+
/**
|
|
599
|
+
* EAC3 passthrough control.
|
|
600
|
+
*/
|
|
601
|
+
class Eac3PassthroughControl {
|
|
602
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-medialive-alpha.Eac3PassthroughControl", version: "2.268.0-alpha.0" };
|
|
603
|
+
/** No passthrough */
|
|
604
|
+
static NO_PASSTHROUGH = new Eac3PassthroughControl('NO_PASSTHROUGH');
|
|
605
|
+
/** When possible */
|
|
606
|
+
static WHEN_POSSIBLE = new Eac3PassthroughControl('WHEN_POSSIBLE');
|
|
607
|
+
/** A value not yet modelled by AWS CDK. */
|
|
608
|
+
static of(value) {
|
|
609
|
+
return new Eac3PassthroughControl(value);
|
|
610
|
+
}
|
|
611
|
+
/** The underlying string value passed to CloudFormation. */
|
|
612
|
+
value;
|
|
613
|
+
constructor(value) {
|
|
614
|
+
this.value = value;
|
|
615
|
+
}
|
|
616
|
+
}
|
|
617
|
+
exports.Eac3PassthroughControl = Eac3PassthroughControl;
|
|
618
|
+
/**
|
|
619
|
+
* EAC3 phase control.
|
|
620
|
+
*/
|
|
621
|
+
class Eac3PhaseControl {
|
|
622
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-medialive-alpha.Eac3PhaseControl", version: "2.268.0-alpha.0" };
|
|
623
|
+
/** No shift */
|
|
624
|
+
static NO_SHIFT = new Eac3PhaseControl('NO_SHIFT');
|
|
625
|
+
/** Shift 90 degrees */
|
|
626
|
+
static SHIFT_90_DEGREES = new Eac3PhaseControl('SHIFT_90_DEGREES');
|
|
627
|
+
/** A value not yet modelled by AWS CDK. */
|
|
628
|
+
static of(value) {
|
|
629
|
+
return new Eac3PhaseControl(value);
|
|
630
|
+
}
|
|
631
|
+
/** The underlying string value passed to CloudFormation. */
|
|
632
|
+
value;
|
|
633
|
+
constructor(value) {
|
|
634
|
+
this.value = value;
|
|
635
|
+
}
|
|
636
|
+
}
|
|
637
|
+
exports.Eac3PhaseControl = Eac3PhaseControl;
|
|
638
|
+
/**
|
|
639
|
+
* EAC3 stereo downmix preference.
|
|
640
|
+
*/
|
|
641
|
+
class Eac3StereoDownmix {
|
|
642
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-medialive-alpha.Eac3StereoDownmix", version: "2.268.0-alpha.0" };
|
|
643
|
+
/** DPL2 */
|
|
644
|
+
static DPL2 = new Eac3StereoDownmix('DPL2');
|
|
645
|
+
/** Lo/Ro */
|
|
646
|
+
static LO_RO = new Eac3StereoDownmix('LO_RO');
|
|
647
|
+
/** Lt/Rt */
|
|
648
|
+
static LT_RT = new Eac3StereoDownmix('LT_RT');
|
|
649
|
+
/** Not indicated */
|
|
650
|
+
static NOT_INDICATED = new Eac3StereoDownmix('NOT_INDICATED');
|
|
651
|
+
/** A value not yet modelled by AWS CDK. */
|
|
652
|
+
static of(value) {
|
|
653
|
+
return new Eac3StereoDownmix(value);
|
|
654
|
+
}
|
|
655
|
+
/** The underlying string value passed to CloudFormation. */
|
|
656
|
+
value;
|
|
657
|
+
constructor(value) {
|
|
658
|
+
this.value = value;
|
|
659
|
+
}
|
|
660
|
+
}
|
|
661
|
+
exports.Eac3StereoDownmix = Eac3StereoDownmix;
|
|
662
|
+
/**
|
|
663
|
+
* EAC3 surround ex mode.
|
|
664
|
+
*/
|
|
665
|
+
class Eac3SurroundExMode {
|
|
666
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-medialive-alpha.Eac3SurroundExMode", version: "2.268.0-alpha.0" };
|
|
667
|
+
/** Disabled */
|
|
668
|
+
static DISABLED = new Eac3SurroundExMode('DISABLED');
|
|
669
|
+
/** Enabled */
|
|
670
|
+
static ENABLED = new Eac3SurroundExMode('ENABLED');
|
|
671
|
+
/** Not indicated */
|
|
672
|
+
static NOT_INDICATED = new Eac3SurroundExMode('NOT_INDICATED');
|
|
673
|
+
/** A value not yet modelled by AWS CDK. */
|
|
674
|
+
static of(value) {
|
|
675
|
+
return new Eac3SurroundExMode(value);
|
|
676
|
+
}
|
|
677
|
+
/** The underlying string value passed to CloudFormation. */
|
|
678
|
+
value;
|
|
679
|
+
constructor(value) {
|
|
680
|
+
this.value = value;
|
|
681
|
+
}
|
|
682
|
+
}
|
|
683
|
+
exports.Eac3SurroundExMode = Eac3SurroundExMode;
|
|
684
|
+
/**
|
|
685
|
+
* EAC3 surround mode.
|
|
686
|
+
*/
|
|
687
|
+
class Eac3SurroundMode {
|
|
688
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-medialive-alpha.Eac3SurroundMode", version: "2.268.0-alpha.0" };
|
|
689
|
+
/** Disabled */
|
|
690
|
+
static DISABLED = new Eac3SurroundMode('DISABLED');
|
|
691
|
+
/** Enabled */
|
|
692
|
+
static ENABLED = new Eac3SurroundMode('ENABLED');
|
|
693
|
+
/** Not indicated */
|
|
694
|
+
static NOT_INDICATED = new Eac3SurroundMode('NOT_INDICATED');
|
|
695
|
+
/** A value not yet modelled by AWS CDK. */
|
|
696
|
+
static of(value) {
|
|
697
|
+
return new Eac3SurroundMode(value);
|
|
698
|
+
}
|
|
699
|
+
/** The underlying string value passed to CloudFormation. */
|
|
700
|
+
value;
|
|
701
|
+
constructor(value) {
|
|
702
|
+
this.value = value;
|
|
703
|
+
}
|
|
704
|
+
}
|
|
705
|
+
exports.Eac3SurroundMode = Eac3SurroundMode;
|
|
706
|
+
// =============================================================================
|
|
707
|
+
// EAC3 Atmos enums
|
|
708
|
+
// =============================================================================
|
|
709
|
+
/**
|
|
710
|
+
* EAC3 Atmos coding mode.
|
|
711
|
+
*/
|
|
712
|
+
class Eac3AtmosCodingMode {
|
|
713
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-medialive-alpha.Eac3AtmosCodingMode", version: "2.268.0-alpha.0" };
|
|
714
|
+
/** 5.1.4 surround */
|
|
715
|
+
static CODING_MODE_5_1_4 = new Eac3AtmosCodingMode('CODING_MODE_5_1_4');
|
|
716
|
+
/** 7.1.4 surround */
|
|
717
|
+
static CODING_MODE_7_1_4 = new Eac3AtmosCodingMode('CODING_MODE_7_1_4');
|
|
718
|
+
/** 9.1.6 surround */
|
|
719
|
+
static CODING_MODE_9_1_6 = new Eac3AtmosCodingMode('CODING_MODE_9_1_6');
|
|
720
|
+
/** A value not yet modelled by AWS CDK. */
|
|
721
|
+
static of(value) {
|
|
722
|
+
return new Eac3AtmosCodingMode(value);
|
|
723
|
+
}
|
|
724
|
+
/** The underlying string value passed to CloudFormation. */
|
|
725
|
+
value;
|
|
726
|
+
constructor(value) {
|
|
727
|
+
this.value = value;
|
|
728
|
+
}
|
|
729
|
+
}
|
|
730
|
+
exports.Eac3AtmosCodingMode = Eac3AtmosCodingMode;
|
|
731
|
+
/**
|
|
732
|
+
* EAC3 Atmos DRC line mode profile.
|
|
733
|
+
*/
|
|
734
|
+
class Eac3AtmosDrcLine {
|
|
735
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-medialive-alpha.Eac3AtmosDrcLine", version: "2.268.0-alpha.0" };
|
|
736
|
+
/** Film light */
|
|
737
|
+
static FILM_LIGHT = new Eac3AtmosDrcLine('FILM_LIGHT');
|
|
738
|
+
/** Film standard */
|
|
739
|
+
static FILM_STANDARD = new Eac3AtmosDrcLine('FILM_STANDARD');
|
|
740
|
+
/** Music light */
|
|
741
|
+
static MUSIC_LIGHT = new Eac3AtmosDrcLine('MUSIC_LIGHT');
|
|
742
|
+
/** Music standard */
|
|
743
|
+
static MUSIC_STANDARD = new Eac3AtmosDrcLine('MUSIC_STANDARD');
|
|
744
|
+
/** None */
|
|
745
|
+
static NONE = new Eac3AtmosDrcLine('NONE');
|
|
746
|
+
/** Speech */
|
|
747
|
+
static SPEECH = new Eac3AtmosDrcLine('SPEECH');
|
|
748
|
+
/** A value not yet modelled by AWS CDK. */
|
|
749
|
+
static of(value) {
|
|
750
|
+
return new Eac3AtmosDrcLine(value);
|
|
751
|
+
}
|
|
752
|
+
/** The underlying string value passed to CloudFormation. */
|
|
753
|
+
value;
|
|
754
|
+
constructor(value) {
|
|
755
|
+
this.value = value;
|
|
756
|
+
}
|
|
757
|
+
}
|
|
758
|
+
exports.Eac3AtmosDrcLine = Eac3AtmosDrcLine;
|
|
759
|
+
/**
|
|
760
|
+
* EAC3 Atmos DRC RF mode profile.
|
|
761
|
+
*/
|
|
762
|
+
class Eac3AtmosDrcRf {
|
|
763
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-medialive-alpha.Eac3AtmosDrcRf", version: "2.268.0-alpha.0" };
|
|
764
|
+
/** Film light */
|
|
765
|
+
static FILM_LIGHT = new Eac3AtmosDrcRf('FILM_LIGHT');
|
|
766
|
+
/** Film standard */
|
|
767
|
+
static FILM_STANDARD = new Eac3AtmosDrcRf('FILM_STANDARD');
|
|
768
|
+
/** Music light */
|
|
769
|
+
static MUSIC_LIGHT = new Eac3AtmosDrcRf('MUSIC_LIGHT');
|
|
770
|
+
/** Music standard */
|
|
771
|
+
static MUSIC_STANDARD = new Eac3AtmosDrcRf('MUSIC_STANDARD');
|
|
772
|
+
/** None */
|
|
773
|
+
static NONE = new Eac3AtmosDrcRf('NONE');
|
|
774
|
+
/** Speech */
|
|
775
|
+
static SPEECH = new Eac3AtmosDrcRf('SPEECH');
|
|
776
|
+
/** A value not yet modelled by AWS CDK. */
|
|
777
|
+
static of(value) {
|
|
778
|
+
return new Eac3AtmosDrcRf(value);
|
|
779
|
+
}
|
|
780
|
+
/** The underlying string value passed to CloudFormation. */
|
|
781
|
+
value;
|
|
782
|
+
constructor(value) {
|
|
783
|
+
this.value = value;
|
|
784
|
+
}
|
|
785
|
+
}
|
|
786
|
+
exports.Eac3AtmosDrcRf = Eac3AtmosDrcRf;
|
|
787
|
+
// =============================================================================
|
|
788
|
+
// MP2 enums
|
|
789
|
+
// =============================================================================
|
|
790
|
+
/**
|
|
791
|
+
* MP2 coding mode.
|
|
792
|
+
*/
|
|
793
|
+
class Mp2CodingMode {
|
|
794
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-medialive-alpha.Mp2CodingMode", version: "2.268.0-alpha.0" };
|
|
795
|
+
/** 1.0 (mono) */
|
|
796
|
+
static CODING_MODE_1_0 = new Mp2CodingMode('CODING_MODE_1_0');
|
|
797
|
+
/** 2.0 (stereo) */
|
|
798
|
+
static CODING_MODE_2_0 = new Mp2CodingMode('CODING_MODE_2_0');
|
|
799
|
+
/** A value not yet modelled by AWS CDK. */
|
|
800
|
+
static of(value) {
|
|
801
|
+
return new Mp2CodingMode(value);
|
|
802
|
+
}
|
|
803
|
+
/** The underlying string value passed to CloudFormation. */
|
|
804
|
+
value;
|
|
805
|
+
constructor(value) {
|
|
806
|
+
this.value = value;
|
|
807
|
+
}
|
|
808
|
+
}
|
|
809
|
+
exports.Mp2CodingMode = Mp2CodingMode;
|
|
810
|
+
// =============================================================================
|
|
811
|
+
// WAV enums
|
|
812
|
+
// =============================================================================
|
|
813
|
+
/**
|
|
814
|
+
* WAV coding mode.
|
|
815
|
+
*/
|
|
816
|
+
class WavCodingMode {
|
|
817
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-medialive-alpha.WavCodingMode", version: "2.268.0-alpha.0" };
|
|
818
|
+
/** 1.0 (mono) */
|
|
819
|
+
static CODING_MODE_1_0 = new WavCodingMode('CODING_MODE_1_0');
|
|
820
|
+
/** 2.0 (stereo) */
|
|
821
|
+
static CODING_MODE_2_0 = new WavCodingMode('CODING_MODE_2_0');
|
|
822
|
+
/** 4.0 */
|
|
823
|
+
static CODING_MODE_4_0 = new WavCodingMode('CODING_MODE_4_0');
|
|
824
|
+
/** 8.0 */
|
|
825
|
+
static CODING_MODE_8_0 = new WavCodingMode('CODING_MODE_8_0');
|
|
826
|
+
/** A value not yet modelled by AWS CDK. */
|
|
827
|
+
static of(value) {
|
|
828
|
+
return new WavCodingMode(value);
|
|
829
|
+
}
|
|
830
|
+
/** The underlying string value passed to CloudFormation. */
|
|
831
|
+
value;
|
|
832
|
+
constructor(value) {
|
|
833
|
+
this.value = value;
|
|
834
|
+
}
|
|
835
|
+
}
|
|
836
|
+
exports.WavCodingMode = WavCodingMode;
|
|
837
|
+
// =============================================================================
|
|
838
|
+
// Abstract class and implementations
|
|
839
|
+
// =============================================================================
|
|
840
|
+
/**
|
|
841
|
+
* Audio codec settings. Use the static factory methods to create.
|
|
842
|
+
*/
|
|
843
|
+
class AudioCodecSettings {
|
|
844
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-medialive-alpha.AudioCodecSettings", version: "2.268.0-alpha.0" };
|
|
845
|
+
/**
|
|
846
|
+
* Create AAC codec settings.
|
|
847
|
+
*/
|
|
848
|
+
static aac(props) {
|
|
849
|
+
try {
|
|
850
|
+
jsiiDeprecationWarnings._aws_cdk_aws_medialive_alpha_AacSettingsProps(props);
|
|
851
|
+
}
|
|
852
|
+
catch (error) {
|
|
853
|
+
if (process.env.JSII_DEBUG !== "1" && error.name === "DeprecationError") {
|
|
854
|
+
Error.captureStackTrace(error, this.aac);
|
|
855
|
+
}
|
|
856
|
+
throw error;
|
|
857
|
+
}
|
|
858
|
+
return new AacAudioCodecSettings(props ?? {});
|
|
859
|
+
}
|
|
860
|
+
/**
|
|
861
|
+
* Create AC3 codec settings.
|
|
862
|
+
*/
|
|
863
|
+
static ac3(props) {
|
|
864
|
+
try {
|
|
865
|
+
jsiiDeprecationWarnings._aws_cdk_aws_medialive_alpha_Ac3SettingsProps(props);
|
|
866
|
+
}
|
|
867
|
+
catch (error) {
|
|
868
|
+
if (process.env.JSII_DEBUG !== "1" && error.name === "DeprecationError") {
|
|
869
|
+
Error.captureStackTrace(error, this.ac3);
|
|
870
|
+
}
|
|
871
|
+
throw error;
|
|
872
|
+
}
|
|
873
|
+
return new Ac3AudioCodecSettings(props ?? {});
|
|
874
|
+
}
|
|
875
|
+
/**
|
|
876
|
+
* Create EAC3 (Dolby Digital Plus) codec settings.
|
|
877
|
+
*/
|
|
878
|
+
static eac3(props) {
|
|
879
|
+
try {
|
|
880
|
+
jsiiDeprecationWarnings._aws_cdk_aws_medialive_alpha_Eac3SettingsProps(props);
|
|
881
|
+
}
|
|
882
|
+
catch (error) {
|
|
883
|
+
if (process.env.JSII_DEBUG !== "1" && error.name === "DeprecationError") {
|
|
884
|
+
Error.captureStackTrace(error, this.eac3);
|
|
885
|
+
}
|
|
886
|
+
throw error;
|
|
887
|
+
}
|
|
888
|
+
return new Eac3AudioCodecSettings(props ?? {});
|
|
889
|
+
}
|
|
890
|
+
/**
|
|
891
|
+
* Create EAC3 Atmos (Dolby Digital Plus with Atmos) codec settings.
|
|
892
|
+
*/
|
|
893
|
+
static eac3Atmos(props) {
|
|
894
|
+
try {
|
|
895
|
+
jsiiDeprecationWarnings._aws_cdk_aws_medialive_alpha_Eac3AtmosSettingsProps(props);
|
|
896
|
+
}
|
|
897
|
+
catch (error) {
|
|
898
|
+
if (process.env.JSII_DEBUG !== "1" && error.name === "DeprecationError") {
|
|
899
|
+
Error.captureStackTrace(error, this.eac3Atmos);
|
|
900
|
+
}
|
|
901
|
+
throw error;
|
|
902
|
+
}
|
|
903
|
+
return new Eac3AtmosAudioCodecSettings(props ?? {});
|
|
904
|
+
}
|
|
905
|
+
/**
|
|
906
|
+
* Create MP2 codec settings.
|
|
907
|
+
*/
|
|
908
|
+
static mp2(props) {
|
|
909
|
+
try {
|
|
910
|
+
jsiiDeprecationWarnings._aws_cdk_aws_medialive_alpha_Mp2SettingsProps(props);
|
|
911
|
+
}
|
|
912
|
+
catch (error) {
|
|
913
|
+
if (process.env.JSII_DEBUG !== "1" && error.name === "DeprecationError") {
|
|
914
|
+
Error.captureStackTrace(error, this.mp2);
|
|
915
|
+
}
|
|
916
|
+
throw error;
|
|
917
|
+
}
|
|
918
|
+
return new Mp2AudioCodecSettings(props ?? {});
|
|
919
|
+
}
|
|
920
|
+
/**
|
|
921
|
+
* Create WAV codec settings.
|
|
922
|
+
*/
|
|
923
|
+
static wav(props) {
|
|
924
|
+
try {
|
|
925
|
+
jsiiDeprecationWarnings._aws_cdk_aws_medialive_alpha_WavSettingsProps(props);
|
|
926
|
+
}
|
|
927
|
+
catch (error) {
|
|
928
|
+
if (process.env.JSII_DEBUG !== "1" && error.name === "DeprecationError") {
|
|
929
|
+
Error.captureStackTrace(error, this.wav);
|
|
930
|
+
}
|
|
931
|
+
throw error;
|
|
932
|
+
}
|
|
933
|
+
return new WavAudioCodecSettings(props ?? {});
|
|
934
|
+
}
|
|
935
|
+
/**
|
|
936
|
+
* Create passthrough audio settings (no transcoding).
|
|
937
|
+
*/
|
|
938
|
+
static passthrough() {
|
|
939
|
+
return new PassthroughAudioCodecSettings();
|
|
940
|
+
}
|
|
941
|
+
}
|
|
942
|
+
exports.AudioCodecSettings = AudioCodecSettings;
|
|
943
|
+
/** @internal */
|
|
944
|
+
class AacAudioCodecSettings extends AudioCodecSettings {
|
|
945
|
+
props;
|
|
946
|
+
_codecType = AudioCodecType.AAC;
|
|
947
|
+
constructor(props) {
|
|
948
|
+
super();
|
|
949
|
+
this.props = props;
|
|
950
|
+
}
|
|
951
|
+
_bind() {
|
|
952
|
+
const p = this.props;
|
|
953
|
+
return {
|
|
954
|
+
aacSettings: {
|
|
955
|
+
bitrate: p.bitrate?.toBps() ?? 192000,
|
|
956
|
+
profile: (p.profile ?? AacProfile.LC).value,
|
|
957
|
+
codingMode: (p.codingMode ?? AacCodingMode.CODING_MODE_2_0).value,
|
|
958
|
+
rateControlMode: (p.rateControlMode ?? AacRateControlMode.CBR).value,
|
|
959
|
+
sampleRate: (p.sampleRate ?? AudioSampleRate.HZ_48000)._toHz(),
|
|
960
|
+
rawFormat: (p.rawFormat ?? AacRawFormat.NONE).value,
|
|
961
|
+
spec: (p.spec ?? AacSpec.MPEG4).value,
|
|
962
|
+
inputType: (p.inputType ?? AacInputType.NORMAL).value,
|
|
963
|
+
vbrQuality: p.vbrQuality?.value,
|
|
964
|
+
},
|
|
965
|
+
};
|
|
966
|
+
}
|
|
967
|
+
}
|
|
968
|
+
/** @internal */
|
|
969
|
+
class Ac3AudioCodecSettings extends AudioCodecSettings {
|
|
970
|
+
props;
|
|
971
|
+
_codecType = AudioCodecType.AC3;
|
|
972
|
+
constructor(props) {
|
|
973
|
+
super();
|
|
974
|
+
this.props = props;
|
|
975
|
+
}
|
|
976
|
+
_bind() {
|
|
977
|
+
const p = this.props;
|
|
978
|
+
return {
|
|
979
|
+
ac3Settings: {
|
|
980
|
+
bitrate: p.bitrate?.toBps(),
|
|
981
|
+
codingMode: (p.codingMode ?? Ac3CodingMode.CODING_MODE_2_0).value,
|
|
982
|
+
dialnorm: p.dialNorm,
|
|
983
|
+
attenuationControl: p.attenuationControl?.value,
|
|
984
|
+
bitstreamMode: (p.bitstreamMode ?? Ac3BitstreamMode.COMPLETE_MAIN).value,
|
|
985
|
+
drcProfile: p.drcProfile?.value,
|
|
986
|
+
lfeFilter: (p.lfeFilter ?? Ac3LfeFilter.DISABLED).value,
|
|
987
|
+
metadataControl: p.metadataControl?.value,
|
|
988
|
+
},
|
|
989
|
+
};
|
|
990
|
+
}
|
|
991
|
+
}
|
|
992
|
+
/** @internal */
|
|
993
|
+
class Eac3AudioCodecSettings extends AudioCodecSettings {
|
|
994
|
+
props;
|
|
995
|
+
_codecType = AudioCodecType.EAC3;
|
|
996
|
+
constructor(props) {
|
|
997
|
+
super();
|
|
998
|
+
this.props = props;
|
|
999
|
+
}
|
|
1000
|
+
_bind() {
|
|
1001
|
+
const p = this.props;
|
|
1002
|
+
return {
|
|
1003
|
+
eac3Settings: {
|
|
1004
|
+
bitrate: p.bitrate?.toBps(),
|
|
1005
|
+
codingMode: (p.codingMode ?? Eac3CodingMode.CODING_MODE_3_2).value,
|
|
1006
|
+
dialnorm: p.dialNorm,
|
|
1007
|
+
attenuationControl: (p.attenuationControl ?? Eac3AttenuationControl.NONE).value,
|
|
1008
|
+
bitstreamMode: (p.bitstreamMode ?? Eac3BitstreamMode.COMPLETE_MAIN).value,
|
|
1009
|
+
dcFilter: p.dcFilter?.value,
|
|
1010
|
+
drcLine: p.drcLine?.value,
|
|
1011
|
+
drcRf: p.drcRf?.value,
|
|
1012
|
+
lfeControl: p.lfeControl?.value,
|
|
1013
|
+
lfeFilter: p.lfeFilter?.value,
|
|
1014
|
+
loRoCenterMixLevel: p.loRoCenterMixLevel,
|
|
1015
|
+
loRoSurroundMixLevel: p.loRoSurroundMixLevel,
|
|
1016
|
+
ltRtCenterMixLevel: p.ltRtCenterMixLevel,
|
|
1017
|
+
ltRtSurroundMixLevel: p.ltRtSurroundMixLevel,
|
|
1018
|
+
metadataControl: p.metadataControl?.value,
|
|
1019
|
+
passthroughControl: p.passthroughControl?.value,
|
|
1020
|
+
phaseControl: p.phaseControl?.value,
|
|
1021
|
+
stereoDownmix: p.stereoDownmix?.value,
|
|
1022
|
+
surroundExMode: p.surroundExMode?.value,
|
|
1023
|
+
surroundMode: p.surroundMode?.value,
|
|
1024
|
+
},
|
|
1025
|
+
};
|
|
1026
|
+
}
|
|
1027
|
+
}
|
|
1028
|
+
/** @internal */
|
|
1029
|
+
class Eac3AtmosAudioCodecSettings extends AudioCodecSettings {
|
|
1030
|
+
props;
|
|
1031
|
+
_codecType = AudioCodecType.EAC3_ATMOS;
|
|
1032
|
+
constructor(props) {
|
|
1033
|
+
super();
|
|
1034
|
+
this.props = props;
|
|
1035
|
+
}
|
|
1036
|
+
_bind() {
|
|
1037
|
+
const p = this.props;
|
|
1038
|
+
return {
|
|
1039
|
+
eac3AtmosSettings: {
|
|
1040
|
+
bitrate: p.bitrate?.toBps(),
|
|
1041
|
+
codingMode: (p.codingMode ?? Eac3AtmosCodingMode.CODING_MODE_5_1_4).value,
|
|
1042
|
+
dialnorm: p.dialNorm,
|
|
1043
|
+
drcLine: p.drcLine?.value,
|
|
1044
|
+
drcRf: p.drcRf?.value,
|
|
1045
|
+
heightTrim: p.heightTrim,
|
|
1046
|
+
surroundTrim: p.surroundTrim,
|
|
1047
|
+
},
|
|
1048
|
+
};
|
|
1049
|
+
}
|
|
1050
|
+
}
|
|
1051
|
+
/** @internal */
|
|
1052
|
+
class Mp2AudioCodecSettings extends AudioCodecSettings {
|
|
1053
|
+
props;
|
|
1054
|
+
_codecType = AudioCodecType.MP2;
|
|
1055
|
+
constructor(props) {
|
|
1056
|
+
super();
|
|
1057
|
+
this.props = props;
|
|
1058
|
+
}
|
|
1059
|
+
_bind() {
|
|
1060
|
+
const p = this.props;
|
|
1061
|
+
return {
|
|
1062
|
+
mp2Settings: {
|
|
1063
|
+
bitrate: p.bitrate?.toBps(),
|
|
1064
|
+
codingMode: (p.codingMode ?? Mp2CodingMode.CODING_MODE_2_0).value,
|
|
1065
|
+
sampleRate: (p.sampleRate ?? AudioSampleRate.HZ_48000)._toHz(),
|
|
1066
|
+
},
|
|
1067
|
+
};
|
|
1068
|
+
}
|
|
1069
|
+
}
|
|
1070
|
+
/** @internal */
|
|
1071
|
+
class WavAudioCodecSettings extends AudioCodecSettings {
|
|
1072
|
+
props;
|
|
1073
|
+
_codecType = AudioCodecType.WAV;
|
|
1074
|
+
constructor(props) {
|
|
1075
|
+
super();
|
|
1076
|
+
this.props = props;
|
|
1077
|
+
}
|
|
1078
|
+
_bind() {
|
|
1079
|
+
const p = this.props;
|
|
1080
|
+
return {
|
|
1081
|
+
wavSettings: {
|
|
1082
|
+
bitDepth: (p.bitDepth ?? AudioBitDepth.DEPTH_16)._toBits(),
|
|
1083
|
+
codingMode: (p.codingMode ?? WavCodingMode.CODING_MODE_2_0).value,
|
|
1084
|
+
sampleRate: (p.sampleRate ?? AudioSampleRate.HZ_48000)._toHz(),
|
|
1085
|
+
},
|
|
1086
|
+
};
|
|
1087
|
+
}
|
|
1088
|
+
}
|
|
1089
|
+
/** @internal */
|
|
1090
|
+
class PassthroughAudioCodecSettings extends AudioCodecSettings {
|
|
1091
|
+
_codecType = AudioCodecType.PASSTHROUGH;
|
|
1092
|
+
_bind() {
|
|
1093
|
+
return {
|
|
1094
|
+
passThroughSettings: {},
|
|
1095
|
+
};
|
|
1096
|
+
}
|
|
1097
|
+
}
|
|
1098
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXVkaW8tY29kZWMtc2V0dGluZ3MuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJhdWRpby1jb2RlYy1zZXR0aW5ncy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUdBOzs7O0dBSUc7QUFDSCxNQUFhLGVBQWU7SUE4Qlc7O0lBN0JyQyxlQUFlO0lBQ1IsTUFBTSxDQUFVLE9BQU8sR0FBRyxJQUFJLGVBQWUsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUMzRCxnQkFBZ0I7SUFDVCxNQUFNLENBQVUsUUFBUSxHQUFHLElBQUksZUFBZSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzdELGdCQUFnQjtJQUNULE1BQU0sQ0FBVSxRQUFRLEdBQUcsSUFBSSxlQUFlLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDN0QsZ0JBQWdCO0lBQ1QsTUFBTSxDQUFVLFFBQVEsR0FBRyxJQUFJLGVBQWUsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUM3RCxnQkFBZ0I7SUFDVCxNQUFNLENBQVUsUUFBUSxHQUFHLElBQUksZUFBZSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzdELGdCQUFnQjtJQUNULE1BQU0sQ0FBVSxRQUFRLEdBQUcsSUFBSSxlQUFlLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDN0QsZ0JBQWdCO0lBQ1QsTUFBTSxDQUFVLFFBQVEsR0FBRyxJQUFJLGVBQWUsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUM3RCxnQkFBZ0I7SUFDVCxNQUFNLENBQVUsUUFBUSxHQUFHLElBQUksZUFBZSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzdELGdCQUFnQjtJQUNULE1BQU0sQ0FBVSxRQUFRLEdBQUcsSUFBSSxlQUFlLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDN0QsZ0JBQWdCO0lBQ1QsTUFBTSxDQUFVLFFBQVEsR0FBRyxJQUFJLGVBQWUsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUU3RDs7O09BR0c7SUFDSSxNQUFNLENBQUMsRUFBRSxDQUFDLEVBQVU7UUFDekIsT0FBTyxJQUFJLGVBQWUsQ0FBQyxFQUFFLENBQUMsQ0FBQztLQUNoQztJQUVELFlBQXFDLEVBQVU7UUFBVixPQUFFLEdBQUYsRUFBRSxDQUFRO0tBQUk7SUFFbkQsZ0JBQWdCO0lBQ1QsS0FBSztRQUNWLE9BQU8sSUFBSSxDQUFDLEVBQUUsQ0FBQztLQUNoQjs7QUFuQ0gsMENBb0NDO0FBRUQ7Ozs7R0FJRztBQUNILE1BQWEsYUFBYTtJQWNhOztJQWJyQyxhQUFhO0lBQ04sTUFBTSxDQUFVLFFBQVEsR0FBRyxJQUFJLGFBQWEsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUN4RCxhQUFhO0lBQ04sTUFBTSxDQUFVLFFBQVEsR0FBRyxJQUFJLGFBQWEsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUV4RDs7O09BR0c7SUFDSSxNQUFNLENBQUMsRUFBRSxDQUFDLElBQVk7UUFDM0IsT0FBTyxJQUFJLGFBQWEsQ0FBQyxJQUFJLENBQUMsQ0FBQztLQUNoQztJQUVELFlBQXFDLElBQVk7UUFBWixTQUFJLEdBQUosSUFBSSxDQUFRO0tBQUk7SUFFckQsZ0JBQWdCO0lBQ1QsT0FBTztRQUNaLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQztLQUNsQjs7QUFuQkgsc0NBb0JDO0FBRUQ7Ozs7R0FJRztBQUNILElBQVksY0FlWDtBQWZELFdBQVksY0FBYztJQUN4QixVQUFVO0lBQ1YsNkJBQVcsQ0FBQTtJQUNYLDBCQUEwQjtJQUMxQiw2QkFBVyxDQUFBO0lBQ1gsZ0NBQWdDO0lBQ2hDLCtCQUFhLENBQUE7SUFDYixpREFBaUQ7SUFDakQsMkNBQXlCLENBQUE7SUFDekIsNEJBQTRCO0lBQzVCLDZCQUFXLENBQUE7SUFDWCxVQUFVO0lBQ1YsNkJBQVcsQ0FBQTtJQUNYLG1DQUFtQztJQUNuQyw2Q0FBMkIsQ0FBQTtBQUM3QixDQUFDLEVBZlcsY0FBYyw4QkFBZCxjQUFjLFFBZXpCO0FBRUQ7O0dBRUc7QUFDSCxNQUFhLFVBQVU7O0lBQ3JCLFdBQVc7SUFDSixNQUFNLENBQVUsSUFBSSxHQUFHLElBQUksVUFBVSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ3JELFdBQVc7SUFDSixNQUFNLENBQVUsSUFBSSxHQUFHLElBQUksVUFBVSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ3JELDBCQUEwQjtJQUNuQixNQUFNLENBQVUsRUFBRSxHQUFHLElBQUksVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBRWpELDJDQUEyQztJQUNwQyxNQUFNLENBQUMsRUFBRSxDQUFDLEtBQWE7UUFDNUIsT0FBTyxJQUFJLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQztLQUM5QjtJQUVELDREQUE0RDtJQUM1QyxLQUFLLENBQVM7SUFFOUIsWUFBb0IsS0FBYTtRQUMvQixJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztLQUNwQjs7QUFsQkgsZ0NBbUJDO0FBRUQ7O0dBRUc7QUFDSCxNQUFhLGFBQWE7O0lBQ3hCLHVHQUF1RztJQUNoRyxNQUFNLENBQVUsZUFBZSxHQUFHLElBQUksYUFBYSxDQUFDLGlCQUFpQixDQUFDLENBQUM7SUFDOUUsaUJBQWlCO0lBQ1YsTUFBTSxDQUFVLGVBQWUsR0FBRyxJQUFJLGFBQWEsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO0lBQzlFLHNCQUFzQjtJQUNmLE1BQU0sQ0FBVSxlQUFlLEdBQUcsSUFBSSxhQUFhLENBQUMsaUJBQWlCLENBQUMsQ0FBQztJQUM5RSxtQkFBbUI7SUFDWixNQUFNLENBQVUsZUFBZSxHQUFHLElBQUksYUFBYSxDQUFDLGlCQUFpQixDQUFDLENBQUM7SUFDOUUsbUJBQW1CO0lBQ1osTUFBTSxDQUFVLGVBQWUsR0FBRyxJQUFJLGFBQWEsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO0lBRTlFLDJDQUEyQztJQUNwQyxNQUFNLENBQUMsRUFBRSxDQUFDLEtBQWE7UUFDNUIsT0FBTyxJQUFJLGFBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQztLQUNqQztJQUVELDREQUE0RDtJQUM1QyxLQUFLLENBQVM7SUFFOUIsWUFBb0IsS0FBYTtRQUMvQixJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztLQUNwQjs7QUF0Qkgsc0NBdUJDO0FBRUQ7O0dBRUc7QUFDSCxNQUFhLGtCQUFrQjs7SUFDN0IsdUJBQXVCO0lBQ2hCLE1BQU0sQ0FBVSxHQUFHLEdBQUcsSUFBSSxrQkFBa0IsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUMzRCx1QkFBdUI7SUFDaEIsTUFBTSxDQUFVLEdBQUcsR0FBRyxJQUFJLGtCQUFrQixDQUFDLEtBQUssQ0FBQyxDQUFDO0lBRTNELDJDQUEyQztJQUNwQyxNQUFNLENBQUMsRUFBRSxDQUFDLEtBQWE7UUFDNUIsT0FBTyxJQUFJLGtCQUFrQixDQUFDLEtBQUssQ0FBQyxDQUFDO0tBQ3RDO0lBRUQsNERBQTREO0lBQzVDLEtBQUssQ0FBUztJQUU5QixZQUFvQixLQUFhO1FBQy9CLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO0tBQ3BCOztBQWhCSCxnREFpQkM7QUFFRDs7R0FFRztBQUNILE1BQWEsWUFBWTs7SUFDdkIsZ0JBQWdCO0lBQ1QsTUFBTSxDQUFVLFNBQVMsR0FBRyxJQUFJLFlBQVksQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUNqRSxXQUFXO0lBQ0osTUFBTSxDQUFVLElBQUksR0FBRyxJQUFJLFlBQVksQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUV2RCwyQ0FBMkM7SUFDcEMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxLQUFhO1FBQzVCLE9BQU8sSUFBSSxZQUFZLENBQUMsS0FBSyxDQUFDLENBQUM7S0FDaEM7SUFFRCw0REFBNEQ7SUFDNUMsS0FBSyxDQUFTO0lBRTlCLFlBQW9CLEtBQWE7UUFDL0IsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7S0FDcEI7O0FBaEJILG9DQWlCQztBQUVEOztHQUVHO0FBQ0gsTUFBYSxPQUFPOztJQUNsQixpQkFBaUI7SUFDVixNQUFNLENBQVUsS0FBSyxHQUFHLElBQUksT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ3BELGlCQUFpQjtJQUNWLE1BQU0sQ0FBVSxLQUFLLEdBQUcsSUFBSSxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUM7SUFFcEQsMkNBQTJDO0lBQ3BDLE1BQU0sQ0FBQyxFQUFFLENBQUMsS0FBYTtRQUM1QixPQUFPLElBQUksT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO0tBQzNCO0lBRUQsNERBQTREO0lBQzVDLEtBQUssQ0FBUztJQUU5QixZQUFvQixLQUFhO1FBQy9CLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO0tBQ3BCOztBQWhCSCwwQkFpQkM7QUFFRDs7R0FFRztBQUNILE1BQWEsWUFBWTs7SUFDdkIsMkJBQTJCO0lBQ3BCLE1BQU0sQ0FBVSxvQkFBb0IsR0FBRyxJQUFJLFlBQVksQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDO0lBQ3ZGLGFBQWE7SUFDTixNQUFNLENBQVUsTUFBTSxHQUFHLElBQUksWUFBWSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBRTNELDJDQUEyQztJQUNwQyxNQUFNLENBQUMsRUFBRSxDQUFDLEtBQWE7UUFDNUIsT0FBTyxJQUFJLFlBQVksQ0FBQyxLQUFLLENBQUMsQ0FBQztLQUNoQztJQUVELDREQUE0RDtJQUM1QyxLQUFLLENBQVM7SUFFOUIsWUFBb0IsS0FBYTtRQUMvQixJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztLQUNwQjs7QUFoQkgsb0NBaUJDO0FBRUQ7O0dBRUc7QUFDSCxNQUFhLGFBQWE7O0lBQ3hCLFdBQVc7SUFDSixNQUFNLENBQVUsSUFBSSxHQUFHLElBQUksYUFBYSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ3hELFVBQVU7SUFDSCxNQUFNLENBQVUsR0FBRyxHQUFHLElBQUksYUFBYSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3RELGtCQUFrQjtJQUNYLE1BQU0sQ0FBVSxXQUFXLEdBQUcsSUFBSSxhQUFhLENBQUMsYUFBYSxDQUFDLENBQUM7SUFDdEUsaUJBQWlCO0lBQ1YsTUFBTSxDQUFVLFVBQVUsR0FBRyxJQUFJLGFBQWEsQ0FBQyxZQUFZLENBQUMsQ0FBQztJQUVwRSwyQ0FBMkM7SUFDcEMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxLQUFhO1FBQzVCLE9BQU8sSUFBSSxhQUFhLENBQUMsS0FBSyxDQUFDLENBQUM7S0FDakM7SUFFRCw0REFBNEQ7SUFDNUMsS0FBSyxDQUFTO0lBRTlCLFlBQW9CLEtBQWE7UUFDL0IsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7S0FDcEI7O0FBcEJILHNDQXFCQztBQUVELGdGQUFnRjtBQUNoRixZQUFZO0FBQ1osZ0ZBQWdGO0FBRWhGOztHQUVHO0FBQ0gsTUFBYSxxQkFBcUI7O0lBQ2hDLGtEQUFrRDtJQUMzQyxNQUFNLENBQVUsY0FBYyxHQUFHLElBQUkscUJBQXFCLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztJQUNwRixxQkFBcUI7SUFDZCxNQUFNLENBQVUsSUFBSSxHQUFHLElBQUkscUJBQXFCLENBQUMsTUFBTSxDQUFDLENBQUM7SUFFaEUsMkNBQTJDO0lBQ3BDLE1BQU0sQ0FBQyxFQUFFLENBQUMsS0FBYTtRQUM1QixPQUFPLElBQUkscUJBQXFCLENBQUMsS0FBSyxDQUFDLENBQUM7S0FDekM7SUFFRCw0REFBNEQ7SUFDNUMsS0FBSyxDQUFTO0lBRTlCLFlBQW9CLEtBQWE7UUFDL0IsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7S0FDcEI7O0FBaEJILHNEQWlCQztBQUVEOztHQUVHO0FBQ0gsTUFBYSxnQkFBZ0I7O0lBQzNCLGlCQUFpQjtJQUNWLE1BQU0sQ0FBVSxVQUFVLEdBQUcsSUFBSSxnQkFBZ0IsQ0FBQyxZQUFZLENBQUMsQ0FBQztJQUN2RSxvQkFBb0I7SUFDYixNQUFNLENBQVUsYUFBYSxHQUFHLElBQUksZ0JBQWdCLENBQUMsZUFBZSxDQUFDLENBQUM7SUFDN0UsZUFBZTtJQUNSLE1BQU0sQ0FBVSxRQUFRLEdBQUcsSUFBSSxnQkFBZ0IsQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUNuRSxnQkFBZ0I7SUFDVCxNQUFNLENBQVUsU0FBUyxHQUFHLElBQUksZ0JBQWdCLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDckUsdUJBQXVCO0lBQ2hCLE1BQU0sQ0FBVSxnQkFBZ0IsR0FBRyxJQUFJLGdCQUFnQixDQUFDLGtCQUFrQixDQUFDLENBQUM7SUFDbkYsd0JBQXdCO0lBQ2pCLE1BQU0sQ0FBVSxpQkFBaUIsR0FBRyxJQUFJLGdCQUFnQixDQUFDLG1CQUFtQixDQUFDLENBQUM7SUFDckYsd0JBQXdCO0lBQ2pCLE1BQU0sQ0FBVSxpQkFBaUIsR0FBRyxJQUFJLGdCQUFnQixDQUFDLG1CQUFtQixDQUFDLENBQUM7SUFDckYsaUJBQWlCO0lBQ1YsTUFBTSxDQUFVLFVBQVUsR0FBRyxJQUFJLGdCQUFnQixDQUFDLFlBQVksQ0FBQyxDQUFDO0lBRXZFLDJDQUEyQztJQUNwQyxNQUFNLENBQUMsRUFBRSxDQUFDLEtBQWE7UUFDNUIsT0FBTyxJQUFJLGdCQUFnQixDQUFDLEtBQUssQ0FBQyxDQUFDO0tBQ3BDO0lBRUQsNERBQTREO0lBQzVDLEtBQUssQ0FBUztJQUU5QixZQUFvQixLQUFhO1FBQy9CLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO0tBQ3BCOztBQTVCSCw0Q0E2QkM7QUFFRDs7R0FFRztBQUNILE1BQWEsYUFBYTs7SUFDeEIsaUJBQWlCO0lBQ1YsTUFBTSxDQUFVLGVBQWUsR0FBRyxJQUFJLGFBQWEsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO0lBQzlFLHNCQUFzQjtJQUNmLE1BQU0sQ0FBVSxlQUFlLEdBQUcsSUFBSSxhQUFhLENBQUMsaUJBQWlCLENBQUMsQ0FBQztJQUM5RSxtQkFBbUI7SUFDWixNQUFNLENBQVUsZUFBZSxHQUFHLElBQUksYUFBYSxDQUFDLGlCQUFpQixDQUFDLENBQUM7SUFDOUUseUJBQXlCO0lBQ2xCLE1BQU0sQ0FBVSxtQkFBbUIsR0FBRyxJQUFJLGFBQWEsQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO0lBRXRGLDJDQUEyQztJQUNwQyxNQUFNLENBQUMsRUFBRSxDQUFDLEtBQWE7UUFDNUIsT0FBTyxJQUFJLGFBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQztLQUNqQztJQUVELDREQUE0RDtJQUM1QyxLQUFLLENBQVM7SUFFOUIsWUFBb0IsS0FBYTtRQUMvQixJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztLQUNwQjs7QUFwQkgsc0NBcUJDO0FBRUQ7O0dBRUc7QUFDSCxNQUFhLGFBQWE7O0lBQ3hCLG9CQUFvQjtJQUNiLE1BQU0sQ0FBVSxhQUFhLEdBQUcsSUFBSSxhQUFhLENBQUMsZUFBZSxDQUFDLENBQUM7SUFDMUUsV0FBVztJQUNKLE1BQU0sQ0FBVSxJQUFJLEdBQUcsSUFBSSxhQUFhLENBQUMsTUFBTSxDQUFDLENBQUM7SUFFeEQsMkNBQTJDO0lBQ3BDLE1BQU0sQ0FBQyxFQUFFLENBQUMsS0FBYTtRQUM1QixPQUFPLElBQUksYUFBYSxDQUFDLEtBQUssQ0FBQyxDQUFDO0tBQ2pDO0lBRUQsNERBQTREO0lBQzVDLEtBQUssQ0FBUztJQUU5QixZQUFvQixLQUFhO1FBQy9CLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO0tBQ3BCOztBQWhCSCxzQ0FpQkM7QUFFRDs7R0FFRztBQUNILE1BQWEsWUFBWTs7SUFDdkIsZUFBZTtJQUNSLE1BQU0sQ0FBVSxRQUFRLEdBQUcsSUFBSSxZQUFZLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDL0QsY0FBYztJQUNQLE1BQU0sQ0FBVSxPQUFPLEdBQUcsSUFBSSxZQUFZLENBQUMsU0FBUyxDQUFDLENBQUM7SUFFN0QsMkNBQTJDO0lBQ3BDLE1BQU0sQ0FBQyxFQUFFLENBQUMsS0FBYTtRQUM1QixPQUFPLElBQUksWUFBWSxDQUFDLEtBQUssQ0FBQyxDQUFDO0tBQ2hDO0lBRUQsNERBQTREO0lBQzVDLEtBQUssQ0FBUztJQUU5QixZQUFvQixLQUFhO1FBQy9CLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO0tBQ3BCOztBQWhCSCxvQ0FpQkM7QUFFRDs7R0FFRztBQUNILE1BQWEsa0JBQWtCOztJQUM3QixtQkFBbUI7SUFDWixNQUFNLENBQVUsWUFBWSxHQUFHLElBQUksa0JBQWtCLENBQUMsY0FBYyxDQUFDLENBQUM7SUFDN0UscUJBQXFCO0lBQ2QsTUFBTSxDQUFVLGNBQWMsR0FBRyxJQUFJLGtCQUFrQixDQUFDLGdCQUFnQixDQUFDLENBQUM7SUFFakYsMkNBQTJDO0lBQ3BDLE1BQU0sQ0FBQyxFQUFFLENBQUMsS0FBYTtRQUM1QixPQUFPLElBQUksa0JBQWtCLENBQUMsS0FBSyxDQUFDLENBQUM7S0FDdEM7SUFFRCw0REFBNEQ7SUFDNUMsS0FBSyxDQUFTO0lBRTlCLFlBQW9CLEtBQWE7UUFDL0IsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7S0FDcEI7O0FBaEJILGdEQWlCQztBQUVELGdGQUFnRjtBQUNoRixhQUFhO0FBQ2IsZ0ZBQWdGO0FBRWhGOztHQUVHO0FBQ0gsTUFBYSxzQkFBc0I7O0lBQ2pDLGtEQUFrRDtJQUMzQyxNQUFNLENBQVUsY0FBYyxHQUFHLElBQUksc0JBQXNCLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztJQUNyRixxQkFBcUI7SUFDZCxNQUFNLENBQVUsSUFBSSxHQUFHLElBQUksc0JBQXNCLENBQUMsTUFBTSxDQUFDLENBQUM7SUFFakUsMkNBQTJDO0lBQ3BDLE1BQU0sQ0FBQyxFQUFFLENBQUMsS0FBYTtRQUM1QixPQUFPLElBQUksc0JBQXNCLENBQUMsS0FBSyxDQUFDLENBQUM7S0FDMUM7SUFFRCw0REFBNEQ7SUFDNUMsS0FBSyxDQUFTO0lBRTlCLFlBQW9CLEtBQWE7UUFDL0IsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7S0FDcEI7O0FBaEJILHdEQWlCQztBQUVEOztHQUVHO0FBQ0gsTUFBYSxpQkFBaUI7O0lBQzVCLGlCQUFpQjtJQUNWLE1BQU0sQ0FBVSxVQUFVLEdBQUcsSUFBSSxpQkFBaUIsQ0FBQyxZQUFZLENBQUMsQ0FBQztJQUN4RSxvQkFBb0I7SUFDYixNQUFNLENBQVUsYUFBYSxHQUFHLElBQUksaUJBQWlCLENBQUMsZUFBZSxDQUFDLENBQUM7SUFDOUUsZ0JBQWdCO0lBQ1QsTUFBTSxDQUFVLFNBQVMsR0FBRyxJQUFJLGlCQUFpQixDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQ3RFLHVCQUF1QjtJQUNoQixNQUFNLENBQVUsZ0JBQWdCLEdBQUcsSUFBSSxpQkFBaUIsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO0lBQ3BGLHdCQUF3QjtJQUNqQixNQUFNLENBQVUsaUJBQWlCLEdBQUcsSUFBSSxpQkFBaUIsQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO0lBRXRGLDJDQUEyQztJQUNwQyxNQUFNLENBQUMsRUFBRSxDQUFDLEtBQWE7UUFDNUIsT0FBTyxJQUFJLGlCQUFpQixDQUFDLEtBQUssQ0FBQyxDQUFDO0tBQ3JDO0lBRUQsNERBQTREO0lBQzVDLEtBQUssQ0FBUztJQUU5QixZQUFvQixLQUFhO1FBQy9CLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO0tBQ3BCOztBQXRCSCw4Q0F1QkM7QUFFRDs7R0FFRztBQUNILE1BQWEsY0FBYzs7SUFDekIsaUJBQWlCO0lBQ1YsTUFBTSxDQUFVLGVBQWUsR0FBRyxJQUFJLGNBQWMsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO0lBQy9FLG1CQUFtQjtJQUNaLE1BQU0sQ0FBVSxlQUFlLEdBQUcsSUFBSSxjQUFjLENBQUMsaUJBQWlCLENBQUMsQ0FBQztJQUMvRSx5QkFBeUI7SUFDbEIsTUFBTSxDQUFVLGVBQWUsR0FBRyxJQUFJLGNBQWMsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO0lBRS9FLDJDQUEyQztJQUNwQyxNQUFNLENBQUMsRUFBRSxDQUFDLEtBQWE7UUFDNUIsT0FBTyxJQUFJLGNBQWMsQ0FBQyxLQUFLLENBQUMsQ0FBQztLQUNsQztJQUVELDREQUE0RDtJQUM1QyxLQUFLLENBQVM7SUFFOUIsWUFBb0IsS0FBYTtRQUMvQixJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztLQUNwQjs7QUFsQkgsd0NBbUJDO0FBRUQ7O0dBRUc7QUFDSCxNQUFhLFlBQVk7O0lBQ3ZCLGVBQWU7SUFDUixNQUFNLENBQVUsUUFBUSxHQUFHLElBQUksWUFBWSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQy9ELGNBQWM7SUFDUCxNQUFNLENBQVUsT0FBTyxHQUFHLElBQUksWUFBWSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBRTdELDJDQUEyQztJQUNwQyxNQUFNLENBQUMsRUFBRSxDQUFDLEtBQWE7UUFDNUIsT0FBTyxJQUFJLFlBQVksQ0FBQyxLQUFLLENBQUMsQ0FBQztLQUNoQztJQUVELDREQUE0RDtJQUM1QyxLQUFLLENBQVM7SUFFOUIsWUFBb0IsS0FBYTtRQUMvQixJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztLQUNwQjs7QUFoQkgsb0NBaUJDO0FBRUQ7O0dBRUc7QUFDSCxNQUFhLFdBQVc7O0lBQ3RCLGlCQUFpQjtJQUNWLE1BQU0sQ0FBVSxVQUFVLEdBQUcsSUFBSSxXQUFXLENBQUMsWUFBWSxDQUFDLENBQUM7SUFDbEUsb0JBQW9CO0lBQ2IsTUFBTSxDQUFVLGFBQWEsR0FBRyxJQUFJLFdBQVcsQ0FBQyxlQUFlLENBQUMsQ0FBQztJQUN4RSxrQkFBa0I7SUFDWCxNQUFNLENBQVUsV0FBVyxHQUFHLElBQUksV0FBVyxDQUFDLGFBQWEsQ0FBQyxDQUFDO0lBQ3BFLHFCQUFxQjtJQUNkLE1BQU0sQ0FBVSxjQUFjLEdBQUcsSUFBSSxXQUFXLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztJQUMxRSxXQUFXO0lBQ0osTUFBTSxDQUFVLElBQUksR0FBRyxJQUFJLFdBQVcsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUN0RCxhQUFhO0lBQ04sTUFBTSxDQUFVLE1BQU0sR0FBRyxJQUFJLFdBQVcsQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUUxRCwyQ0FBMkM7SUFDcEMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxLQUFhO1FBQzVCLE9BQU8sSUFBSSxXQUFXLENBQUMsS0FBSyxDQUFDLENBQUM7S0FDL0I7SUFFRCw0REFBNEQ7SUFDNUMsS0FBSyxDQUFTO0lBRTlCLFlBQW9CLEtBQWE7UUFDL0IsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7S0FDcEI7O0FBeEJILGtDQXlCQztBQUVEOztHQUVHO0FBQ0gsTUFBYSxTQUFTOztJQUNwQixpQkFBaUI7SUFDVixNQUFNLENBQVUsVUFBVSxHQUFHLElBQUksU0FBUyxDQUFDLFlBQVksQ0FBQyxDQUFDO0lBQ2hFLG9CQUFvQjtJQUNiLE1BQU0sQ0FBVSxhQUFhLEdBQUcsSUFBSSxTQUFTLENBQUMsZUFBZSxDQUFDLENBQUM7SUFDdEUsa0JBQWtCO0lBQ1gsTUFBTSxDQUFVLFdBQVcsR0FBRyxJQUFJLFNBQVMsQ0FBQyxhQUFhLENBQUMsQ0FBQztJQUNsRSxxQkFBcUI7SUFDZCxNQUFNLENBQVUsY0FBYyxHQUFHLElBQUksU0FBUyxDQUFDLGdCQUFnQixDQUFDLENBQUM7SUFDeEUsV0FBVztJQUNKLE1BQU0sQ0FBVSxJQUFJLEdBQUcsSUFBSSxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDcEQsYUFBYTtJQUNOLE1BQU0sQ0FBVSxNQUFNLEdBQUcsSUFBSSxTQUFTLENBQUMsUUFBUSxDQUFDLENBQUM7SUFFeEQsMkNBQTJDO0lBQ3BDLE1BQU0sQ0FBQyxFQUFFLENBQUMsS0FBYTtRQUM1QixPQUFPLElBQUksU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDO0tBQzdCO0lBRUQsNERBQTREO0lBQzVDLEtBQUssQ0FBUztJQUU5QixZQUFvQixLQUFhO1FBQy9CLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO0tBQ3BCOztBQXhCSCw4QkF5QkM7QUFFRDs7R0FFRztBQUNILE1BQWEsY0FBYzs7SUFDekIsVUFBVTtJQUNILE1BQU0sQ0FBVSxHQUFHLEdBQUcsSUFBSSxjQUFjLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDdkQsYUFBYTtJQUNOLE1BQU0sQ0FBVSxNQUFNLEdBQUcsSUFBSSxjQUFjLENBQUMsUUFBUSxDQUFDLENBQUM7SUFFN0QsMkNBQTJDO0lBQ3BDLE1BQU0sQ0FBQyxFQUFFLENBQUMsS0FBYTtRQUM1QixPQUFPLElBQUksY0FBYyxDQUFDLEtBQUssQ0FBQyxDQUFDO0tBQ2xDO0lBRUQsNERBQTREO0lBQzVDLEtBQUssQ0FBUztJQUU5QixZQUFvQixLQUFhO1FBQy9CLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO0tBQ3BCOztBQWhCSCx3Q0FpQkM7QUFFRDs7R0FFRztBQUNILE1BQWEsYUFBYTs7SUFDeEIsZUFBZTtJQUNSLE1BQU0sQ0FBVSxRQUFRLEdBQUcsSUFBSSxhQUFhLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDaEUsY0FBYztJQUNQLE1BQU0sQ0FBVSxPQUFPLEdBQUcsSUFBSSxhQUFhLENBQUMsU0FBUyxDQUFDLENBQUM7SUFFOUQsMkNBQTJDO0lBQ3BDLE1BQU0sQ0FBQyxFQUFFLENBQUMsS0FBYTtRQUM1QixPQUFPLElBQUksYUFBYSxDQUFDLEtBQUssQ0FBQyxDQUFDO0tBQ2pDO0lBRUQsNERBQTREO0lBQzVDLEtBQUssQ0FBUztJQUU5QixZQUFvQixLQUFhO1FBQy9CLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO0tBQ3BCOztBQWhCSCxzQ0FpQkM7QUFFRDs7R0FFRztBQUNILE1BQWEsbUJBQW1COztJQUM5QixtQkFBbUI7SUFDWixNQUFNLENBQVUsWUFBWSxHQUFHLElBQUksbUJBQW1CLENBQUMsY0FBYyxDQUFDLENBQUM7SUFDOUUscUJBQXFCO0lBQ2QsTUFBTSxDQUFVLGNBQWMsR0FBRyxJQUFJLG1CQUFtQixDQUFDLGdCQUFnQixDQUFDLENBQUM7SUFFbEYsMkNBQTJDO0lBQ3BDLE1BQU0sQ0FBQyxFQUFFLENBQUMsS0FBYTtRQUM1QixPQUFPLElBQUksbUJBQW1CLENBQUMsS0FBSyxDQUFDLENBQUM7S0FDdkM7SUFFRCw0REFBNEQ7SUFDNUMsS0FBSyxDQUFTO0lBRTlCLFlBQW9CLEtBQWE7UUFDL0IsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7S0FDcEI7O0FBaEJILGtEQWlCQztBQUVEOztHQUVHO0FBQ0gsTUFBYSxzQkFBc0I7O0lBQ2pDLHFCQUFxQjtJQUNkLE1BQU0sQ0FBVSxjQUFjLEdBQUcsSUFBSSxzQkFBc0IsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO0lBQ3JGLG9CQUFvQjtJQUNiLE1BQU0sQ0FBVSxhQUFhLEdBQUcsSUFBSSxzQkFBc0IsQ0FBQyxlQUFlLENBQUMsQ0FBQztJQUVuRiwyQ0FBMkM7SUFDcEMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxLQUFhO1FBQzVCLE9BQU8sSUFBSSxzQkFBc0IsQ0FBQyxLQUFLLENBQUMsQ0FBQztLQUMxQztJQUVELDREQUE0RDtJQUM1QyxLQUFLLENBQVM7SUFFOUIsWUFBb0IsS0FBYTtRQUMvQixJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztLQUNwQjs7QUFoQkgsd0RBaUJDO0FBRUQ7O0dBRUc7QUFDSCxNQUFhLGdCQUFnQjs7SUFDM0IsZUFBZTtJQUNSLE1BQU0sQ0FBVSxRQUFRLEdBQUcsSUFBSSxnQkFBZ0IsQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUNuRSx1QkFBdUI7SUFDaEIsTUFBTSxDQUFVLGdCQUFnQixHQUFHLElBQUksZ0JBQWdCLENBQUMsa0JBQWtCLENBQUMsQ0FBQztJQUVuRiwyQ0FBMkM7SUFDcEMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxLQUFhO1FBQzVCLE9BQU8sSUFBSSxnQkFBZ0IsQ0FBQyxLQUFLLENBQUMsQ0FBQztLQUNwQztJQUVELDREQUE0RDtJQUM1QyxLQUFLLENBQVM7SUFFOUIsWUFBb0IsS0FBYTtRQUMvQixJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztLQUNwQjs7QUFoQkgsNENBaUJDO0FBRUQ7O0dBRUc7QUFDSCxNQUFhLGlCQUFpQjs7SUFDNUIsV0FBVztJQUNKLE1BQU0sQ0FBVSxJQUFJLEdBQUcsSUFBSSxpQkFBaUIsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUM1RCxZQUFZO0lBQ0wsTUFBTSxDQUFVLEtBQUssR0FBRyxJQUFJLGlCQUFpQixDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQzlELFlBQVk7SUFDTCxNQUFNLENBQVUsS0FBSyxHQUFHLElBQUksaUJBQWlCLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDOUQsb0JBQW9CO0lBQ2IsTUFBTSxDQUFVLGFBQWEsR0FBRyxJQUFJLGlCQUFpQixDQUFDLGVBQWUsQ0FBQyxDQUFDO0lBRTlFLDJDQUEyQztJQUNwQyxNQUFNLENBQUMsRUFBRSxDQUFDLEtBQWE7UUFDNUIsT0FBTyxJQUFJLGlCQUFpQixDQUFDLEtBQUssQ0FBQyxDQUFDO0tBQ3JDO0lBRUQsNERBQTREO0lBQzVDLEtBQUssQ0FBUztJQUU5QixZQUFvQixLQUFhO1FBQy9CLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO0tBQ3BCOztBQXBCSCw4Q0FxQkM7QUFFRDs7R0FFRztBQUNILE1BQWEsa0JBQWtCOztJQUM3QixlQUFlO0lBQ1IsTUFBTSxDQUFVLFFBQVEsR0FBRyxJQUFJLGtCQUFrQixDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQ3JFLGNBQWM7SUFDUCxNQUFNLENBQVUsT0FBTyxHQUFHLElBQUksa0JBQWtCLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDbkUsb0JBQW9CO0lBQ2IsTUFBTSxDQUFVLGFBQWEsR0FBRyxJQUFJLGtCQUFrQixDQUFDLGVBQWUsQ0FBQyxDQUFDO0lBRS9FLDJDQUEyQztJQUNwQyxNQUFNLENBQUMsRUFBRSxDQUFDLEtBQWE7UUFDNUIsT0FBTyxJQUFJLGtCQUFrQixDQUFDLEtBQUssQ0FBQyxDQUFDO0tBQ3RDO0lBRUQsNERBQTREO0lBQzVDLEtBQUssQ0FBUztJQUU5QixZQUFvQixLQUFhO1FBQy9CLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO0tBQ3BCOztBQWxCSCxnREFtQkM7QUFFRDs7R0FFRztBQUNILE1BQWEsZ0JBQWdCOztJQUMzQixlQUFlO0lBQ1IsTUFBTSxDQUFVLFFBQVEsR0FBRyxJQUFJLGdCQUFnQixDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQ25FLGNBQWM7SUFDUCxNQUFNLENBQVUsT0FBTyxHQUFHLElBQUksZ0JBQWdCLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDakUsb0JBQW9CO0lBQ2IsTUFBTSxDQUFVLGFBQWEsR0FBRyxJQUFJLGdCQUFnQixDQUFDLGVBQWUsQ0FBQyxDQUFDO0lBRTdFLDJDQUEyQztJQUNwQyxNQUFNLENBQUMsRUFBRSxDQUFDLEtBQWE7UUFDNUIsT0FBTyxJQUFJLGdCQUFnQixDQUFDLEtBQUssQ0FBQyxDQUFDO0tBQ3BDO0lBRUQsNERBQTREO0lBQzVDLEtBQUssQ0FBUztJQUU5QixZQUFvQixLQUFhO1FBQy9CLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO0tBQ3BCOztBQWxCSCw0Q0FtQkM7QUFFRCxnRkFBZ0Y7QUFDaEYsbUJBQW1CO0FBQ25CLGdGQUFnRjtBQUVoRjs7R0FFRztBQUNILE1BQWEsbUJBQW1COztJQUM5QixxQkFBcUI7SUFDZCxNQUFNLENBQVUsaUJBQWlCLEdBQUcsSUFBSSxtQkFBbUIsQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO0lBQ3hGLHFCQUFxQjtJQUNkLE1BQU0sQ0FBVSxpQkFBaUIsR0FBRyxJQUFJLG1CQUFtQixDQUFDLG1CQUFtQixDQUFDLENBQUM7SUFDeEYscUJBQXFCO0lBQ2QsTUFBTSxDQUFVLGlCQUFpQixHQUFHLElBQUksbUJBQW1CLENBQUMsbUJBQW1CLENBQUMsQ0FBQztJQUV4RiwyQ0FBMkM7SUFDcEMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxLQUFhO1FBQzVCLE9BQU8sSUFBSSxtQkFBbUIsQ0FBQyxLQUFLLENBQUMsQ0FBQztLQUN2QztJQUVELDREQUE0RDtJQUM1QyxLQUFLLENBQVM7SUFFOUIsWUFBb0IsS0FBYTtRQUMvQixJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztLQUNwQjs7QUFsQkgsa0RBbUJDO0FBRUQ7O0dBRUc7QUFDSCxNQUFhLGdCQUFnQjs7SUFDM0IsaUJBQWlCO0lBQ1YsTUFBTSxDQUFVLFVBQVUsR0FBRyxJQUFJLGdCQUFnQixDQUFDLFlBQVksQ0FBQyxDQUFDO0lBQ3ZFLG9CQUFvQjtJQUNiLE1BQU0sQ0FBVSxhQUFhLEdBQUcsSUFBSSxnQkFBZ0IsQ0FBQyxlQUFlLENBQUMsQ0FBQztJQUM3RSxrQkFBa0I7SUFDWCxNQUFNLENBQVUsV0FBVyxHQUFHLElBQUksZ0JBQWdCLENBQUMsYUFBYSxDQUFDLENBQUM7SUFDekUscUJBQXFCO0lBQ2QsTUFBTSxDQUFVLGNBQWMsR0FBRyxJQUFJLGdCQUFnQixDQUFDLGdCQUFnQixDQUFDLENBQUM7SUFDL0UsV0FBVztJQUNKLE1BQU0sQ0FBVSxJQUFJLEdBQUcsSUFBSSxnQkFBZ0IsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUMzRCxhQUFhO0lBQ04sTUFBTSxDQUFVLE1BQU0sR0FBRyxJQUFJLGdCQUFnQixDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBRS9ELDJDQUEyQztJQUNwQyxNQUFNLENBQUMsRUFBRSxDQUFDLEtBQWE7UUFDNUIsT0FBTyxJQUFJLGdCQUFnQixDQUFDLEtBQUssQ0FBQyxDQUFDO0tBQ3BDO0lBRUQsNERBQTREO0lBQzVDLEtBQUssQ0FBUztJQUU5QixZQUFvQixLQUFhO1FBQy9CLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO0tBQ3BCOztBQXhCSCw0Q0F5QkM7QUFFRDs7R0FFRztBQUNILE1BQWEsY0FBYzs7SUFDekIsaUJBQWlCO0lBQ1YsTUFBTSxDQUFVLFVBQVUsR0FBRyxJQUFJLGNBQWMsQ0FBQyxZQUFZLENBQUMsQ0FBQztJQUNyRSxvQkFBb0I7SUFDYixNQUFNLENBQVUsYUFBYSxHQUFHLElBQUksY0FBYyxDQUFDLGVBQWUsQ0FBQyxDQUFDO0lBQzNFLGtCQUFrQjtJQUNYLE1BQU0sQ0FBVSxXQUFXLEdBQUcsSUFBSSxjQUFjLENBQUMsYUFBYSxDQUFDLENBQUM7SUFDdkUscUJBQXFCO0lBQ2QsTUFBTSxDQUFVLGNBQWMsR0FBRyxJQUFJLGNBQWMsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO0lBQzdFLFdBQVc7SUFDSixNQUFNLENBQVUsSUFBSSxHQUFHLElBQUksY0FBYyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ3pELGFBQWE7SUFDTixNQUFNLENBQVUsTUFBTSxHQUFHLElBQUksY0FBYyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBRTdELDJDQUEyQztJQUNwQyxNQUFNLENBQUMsRUFBRSxDQUFDLEtBQWE7UUFDNUIsT0FBTyxJQUFJLGNBQWMsQ0FBQyxLQUFLLENBQUMsQ0FBQztLQUNsQztJQUVELDREQUE0RDtJQUM1QyxLQUFLLENBQVM7SUFFOUIsWUFBb0IsS0FBYTtRQUMvQixJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztLQUNwQjs7QUF4Qkgsd0NBeUJDO0FBRUQsZ0ZBQWdGO0FBQ2hGLFlBQVk7QUFDWixnRkFBZ0Y7QUFFaEY7O0dBRUc7QUFDSCxNQUFhLGFBQWE7O0lBQ3hCLGlCQUFpQjtJQUNWLE1BQU0sQ0FBVSxlQUFlLEdBQUcsSUFBSSxhQUFhLENBQUMsaUJBQWlCLENBQUMsQ0FBQztJQUM5RSxtQkFBbUI7SUFDWixNQUFNLENBQVUsZUFBZSxHQUFHLElBQUksYUFBYSxDQUFDLGlCQUFpQixDQUFDLENBQUM7SUFFOUUsMkNBQTJDO0lBQ3BDLE1BQU0sQ0FBQyxFQUFFLENBQUMsS0FBYTtRQUM1QixPQUFPLElBQUksYUFBYSxDQUFDLEtBQUssQ0FBQyxDQUFDO0tBQ2pDO0lBRUQsNERBQTREO0lBQzVDLEtBQUssQ0FBUztJQUU5QixZQUFvQixLQUFhO1FBQy9CLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO0tBQ3BCOztBQWhCSCxzQ0FpQkM7QUFFRCxnRkFBZ0Y7QUFDaEYsWUFBWTtBQUNaLGdGQUFnRjtBQUVoRjs7R0FFRztBQUNILE1BQWEsYUFBYTs7SUFDeEIsaUJBQWlCO0lBQ1YsTUFBTSxDQUFVLGVBQWUsR0FBRyxJQUFJLGFBQWEsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO0lBQzlFLG1CQUFtQjtJQUNaLE1BQU0sQ0FBVSxlQUFlLEdBQUcsSUFBSSxhQUFhLENBQUMsaUJBQWlCLENBQUMsQ0FBQztJQUM5RSxVQUFVO0lBQ0gsTUFBTSxDQUFVLGVBQWUsR0FBRyxJQUFJLGFBQWEsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO0lBQzlFLFVBQVU7SUFDSCxNQUFNLENBQVUsZUFBZSxHQUFHLElBQUksYUFBYSxDQUFDLGlCQUFpQixDQUFDLENBQUM7SUFFOUUsMkNBQTJDO0lBQ3BDLE1BQU0sQ0FBQyxFQUFFLENBQUMsS0FBYTtRQUM1QixPQUFPLElBQUksYUFBYSxDQUFDLEtBQUssQ0FBQyxDQUFDO0tBQ2pDO0lBRUQsNERBQTREO0lBQzVDLEtBQUssQ0FBUztJQUU5QixZQUFvQixLQUFhO1FBQy9CLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO0tBQ3BCOztBQXBCSCxzQ0FxQkM7QUF5U0QsZ0ZBQWdGO0FBQ2hGLHFDQUFxQztBQUNyQyxnRkFBZ0Y7QUFFaEY7O0dBRUc7QUFDSCxNQUFzQixrQkFBa0I7O0lBQ3RDOztPQUVHO0lBQ0ksTUFBTSxDQUFDLEdBQUcsQ0FBQyxLQUF3Qjs7Ozs7Ozs7OztRQUN4QyxPQUFPLElBQUkscUJBQXFCLENBQUMsS0FBSyxJQUFJLEVBQUUsQ0FBQyxDQUFDO0tBQy9DO0lBRUQ7O09BRUc7SUFDSSxNQUFNLENBQUMsR0FBRyxDQUFDLEtBQXdCOzs7Ozs7Ozs7O1FBQ3hDLE9BQU8sSUFBSSxxQkFBcUIsQ0FBQyxLQUFLLElBQUksRUFBRSxDQUFDLENBQUM7S0FDL0M7SUFFRDs7T0FFRztJQUNJLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBeUI7Ozs7Ozs7Ozs7UUFDMUMsT0FBTyxJQUFJLHNCQUFzQixDQUFDLEtBQUssSUFBSSxFQUFFLENBQUMsQ0FBQztLQUNoRDtJQUVEOztPQUVHO0lBQ0ksTUFBTSxDQUFDLFNBQVMsQ0FBQyxLQUE4Qjs7Ozs7Ozs7OztRQUNwRCxPQUFPLElBQUksMkJBQTJCLENBQUMsS0FBSyxJQUFJLEVBQUUsQ0FBQyxDQUFDO0tBQ3JEO0lBRUQ7O09BRUc7SUFDSSxNQUFNLENBQUMsR0FBRyxDQUFDLEtBQXdCOzs7Ozs7Ozs7O1FBQ3hDLE9BQU8sSUFBSSxxQkFBcUIsQ0FBQyxLQUFLLElBQUksRUFBRSxDQUFDLENBQUM7S0FDL0M7SUFFRDs7T0FFRztJQUNJLE1BQU0sQ0FBQyxHQUFHLENBQUMsS0FBd0I7Ozs7Ozs7Ozs7UUFDeEMsT0FBTyxJQUFJLHFCQUFxQixDQUFDLEtBQUssSUFBSSxFQUFFLENBQUMsQ0FBQztLQUMvQztJQUVEOztPQUVHO0lBQ0ksTUFBTSxDQUFDLFdBQVc7UUFDdkIsT0FBTyxJQUFJLDZCQUE2QixFQUFFLENBQUM7S0FDNUM7O0FBaERILGdEQXNEQztBQUVELGdCQUFnQjtBQUNoQixNQUFNLHFCQUFzQixTQUFRLGtCQUFrQjtJQUV2QjtJQURiLFVBQVUsR0FBRyxjQUFjLENBQUMsR0FBRyxDQUFDO0lBQ2hELFlBQTZCLEtBQXVCO1FBQ2xELEtBQUssRUFBRSxDQUFDO1FBRG1CLFVBQUssR0FBTCxLQUFLLENBQWtCO0tBRW5EO0lBRU0sS0FBSztRQUNWLE1BQU0sQ0FBQyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUM7UUFDckIsT0FBTztZQUNMLFdBQVcsRUFBRTtnQkFDWCxPQUFPLEVBQUUsQ0FBQyxDQUFDLE9BQU8sRUFBRSxLQUFLLEVBQUUsSUFBSSxNQUFNO2dCQUNyQyxPQUFPLEVBQUUsQ0FBQyxDQUFDLENBQUMsT0FBTyxJQUFJLFVBQVUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxLQUFLO2dCQUMzQyxVQUFVLEVBQUUsQ0FBQyxDQUFDLENBQUMsVUFBVSxJQUFJLGFBQWEsQ0FBQyxlQUFlLENBQUMsQ0FBQyxLQUFLO2dCQUNqRSxlQUFlLEVBQUUsQ0FBQyxDQUFDLENBQUMsZUFBZSxJQUFJLGtCQUFrQixDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUs7Z0JBQ3BFLFVBQVUsRUFBRSxDQUFDLENBQUMsQ0FBQyxVQUFVLElBQUksZUFBZSxDQUFDLFFBQVEsQ0FBQyxDQUFDLEtBQUssRUFBRTtnQkFDOUQsU0FBUyxFQUFFLENBQUMsQ0FBQyxDQUFDLFNBQVMsSUFBSSxZQUFZLENBQUMsSUFBSSxDQUFDLENBQUMsS0FBSztnQkFDbkQsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksSUFBSSxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsS0FBSztnQkFDckMsU0FBUyxFQUFFLENBQUMsQ0FBQyxDQUFDLFNBQVMsSUFBSSxZQUFZLENBQUMsTUFBTSxDQUFDLENBQUMsS0FBSztnQkFDckQsVUFBVSxFQUFFLENBQUMsQ0FBQyxVQUFVLEVBQUUsS0FBSzthQUNoQztTQUNGLENBQUM7S0FDSDtDQUNGO0FBRUQsZ0JBQWdCO0FBQ2hCLE1BQU0scUJBQXNCLFNBQVEsa0JBQWtCO0lBRXZCO0lBRGIsVUFBVSxHQUFHLGNBQWMsQ0FBQyxHQUFHLENBQUM7SUFDaEQsWUFBNkIsS0FBdUI7UUFDbEQsS0FBSyxFQUFFLENBQUM7UUFEbUIsVUFBSyxHQUFMLEtBQUssQ0FBa0I7S0FFbkQ7SUFFTSxLQUFLO1FBQ1YsTUFBTSxDQUFDLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQztRQUNyQixPQUFPO1lBQ0wsV0FBVyxFQUFFO2dCQUNYLE9BQU8sRUFBRSxDQUFDLENBQUMsT0FBTyxFQUFFLEtBQUssRUFBRTtnQkFDM0IsVUFBVSxFQUFFLENBQUMsQ0FBQyxDQUFDLFVBQVUsSUFBSSxhQUFhLENBQUMsZUFBZSxDQUFDLENBQUMsS0FBSztnQkFDakUsUUFBUSxFQUFFLENBQUMsQ0FBQyxRQUFRO2dCQUNwQixrQkFBa0IsRUFBRSxDQUFDLENBQUMsa0JBQWtCLEVBQUUsS0FBSztnQkFDL0MsYUFBYSxFQUFFLENBQUMsQ0FBQyxDQUFDLGFBQWEsSUFBSSxnQkFBZ0IsQ0FBQyxhQUFhLENBQUMsQ0FBQyxLQUFLO2dCQUN4RSxVQUFVLEVBQUUsQ0FBQyxDQUFDLFVBQVUsRUFBRSxLQUFLO2dCQUMvQixTQUFTLEVBQUUsQ0FBQyxDQUFDLENBQUMsU0FBUyxJQUFJLFlBQVksQ0FBQyxRQUFRLENBQUMsQ0FBQyxLQUFLO2dCQUN2RCxlQUFlLEVBQUUsQ0FBQyxDQUFDLGVBQWUsRUFBRSxLQUFLO2FBQzFDO1NBQ0YsQ0FBQztLQUNIO0NBQ0Y7QUFFRCxnQkFBZ0I7QUFDaEIsTUFBTSxzQkFBdUIsU0FBUSxrQkFBa0I7SUFFeEI7SUFEYixVQUFVLEdBQUcsY0FBYyxDQUFDLElBQUksQ0FBQztJQUNqRCxZQUE2QixLQUF3QjtRQUNuRCxLQUFLLEVBQUUsQ0FBQztRQURtQixVQUFLLEdBQUwsS0FBSyxDQUFtQjtLQUVwRDtJQUVNLEtBQUs7UUFDVixNQUFNLENBQUMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDO1FBQ3JCLE9BQU87WUFDTCxZQUFZLEVBQUU7Z0JBQ1osT0FBTyxFQUFFLENBQUMsQ0FBQyxPQUFPLEVBQUUsS0FBSyxFQUFFO2dCQUMzQixVQUFVLEVBQUUsQ0FBQyxDQUFDLENBQUMsVUFBVSxJQUFJLGNBQWMsQ0FBQyxlQUFlLENBQUMsQ0FBQyxLQUFLO2dCQUNsRSxRQUFRLEVBQUUsQ0FBQyxDQUFDLFFBQVE7Z0JBQ3BCLGtCQUFrQixFQUFFLENBQUMsQ0FBQyxDQUFDLGtCQUFrQixJQUFJLHNCQUFzQixDQUFDLElBQUksQ0FBQyxDQUFDLEtBQUs7Z0JBQy9FLGFBQWEsRUFBRSxDQUFDLENBQUMsQ0FBQyxhQUFhLElBQUksaUJBQWlCLENBQUMsYUFBYSxDQUFDLENBQUMsS0FBSztnQkFDekUsUUFBUSxFQUFFLENBQUMsQ0FBQyxRQUFRLEVBQUUsS0FBSztnQkFDM0IsT0FBTyxFQUFFLENBQUMsQ0FBQyxPQUFPLEVBQUUsS0FBSztnQkFDekIsS0FBSyxFQUFFLENBQUMsQ0FBQyxLQUFLLEVBQUUsS0FBSztnQkFDckIsVUFBVSxFQUFFLENBQUMsQ0FBQyxVQUFVLEVBQUUsS0FBSztnQkFDL0IsU0FBUyxFQUFFLENBQUMsQ0FBQyxTQUFTLEVBQUUsS0FBSztnQkFDN0Isa0JBQWtCLEVBQUUsQ0FBQyxDQUFDLGtCQUFrQjtnQkFDeEMsb0JBQW9CLEVBQUUsQ0FBQyxDQUFDLG9CQUFvQjtnQkFDNUMsa0JBQWtCLEVBQUUsQ0FBQyxDQUFDLGtCQUFrQjtnQkFDeEMsb0JBQW9CLEVBQUUsQ0FBQyxDQUFDLG9CQUFvQjtnQkFDNUMsZUFBZSxFQUFFLENBQUMsQ0FBQyxlQUFlLEVBQUUsS0FBSztnQkFDekMsa0JBQWtCLEVBQUUsQ0FBQyxDQUFDLGtCQUFrQixFQUFFLEtBQUs7Z0JBQy9DLFlBQVksRUFBRSxDQUFDLENBQUMsWUFBWSxFQUFFLEtBQUs7Z0JBQ25DLGFBQWEsRUFBRSxDQUFDLENBQUMsYUFBYSxFQUFFLEtBQUs7Z0JBQ3JDLGNBQWMsRUFBRSxDQUFDLENBQUMsY0FBYyxFQUFFLEtBQUs7Z0JBQ3ZDLFlBQVksRUFBRSxDQUFDLENBQUMsWUFBWSxFQUFFLEtBQUs7YUFDcEM7U0FDRixDQUFDO0tBQ0g7Q0FDRjtBQUVELGdCQUFnQjtBQUNoQixNQUFNLDJCQUE0QixTQUFRLGtCQUFrQjtJQUU3QjtJQURiLFVBQVUsR0FBRyxjQUFjLENBQUMsVUFBVSxDQUFDO0lBQ3ZELFlBQTZCLEtBQTZCO1FBQ3hELEtBQUssRUFBRSxDQUFDO1FBRG1CLFVBQUssR0FBTCxLQUFLLENBQXdCO0tBRXpEO0lBRU0sS0FBSztRQUNWLE1BQU0sQ0FBQyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUM7UUFDckIsT0FBTztZQUNMLGlCQUFpQixFQUFFO2dCQUNqQixPQUFPLEVBQUUsQ0FBQyxDQUFDLE9BQU8sRUFBRSxLQUFLLEVBQUU7Z0JBQzNCLFVBQVUsRUFBRSxDQUFDLENBQUMsQ0FBQyxVQUFVLElBQUksbUJBQW1CLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxLQUFLO2dCQUN6RSxRQUFRLEVBQUUsQ0FBQyxDQUFDLFFBQVE7Z0JBQ3BCLE9BQU8sRUFBRSxDQUFDLENBQUMsT0FBTyxFQUFFLEtBQUs7Z0JBQ3pCLEtBQUssRUFBRSxDQUFDLENBQUMsS0FBSyxFQUFFLEtBQUs7Z0JBQ3JCLFVBQVUsRUFBRSxDQUFDLENBQUMsVUFBVTtnQkFDeEIsWUFBWSxFQUFFLENBQUMsQ0FBQyxZQUFZO2FBQzdCO1NBQ0YsQ0FBQztLQUNIO0NBQ0Y7QUFFRCxnQkFBZ0I7QUFDaEIsTUFBTSxxQkFBc0IsU0FBUSxrQkFBa0I7SUFFdkI7SUFEYixVQUFVLEdBQUcsY0FBYyxDQUFDLEdBQUcsQ0FBQztJQUNoRCxZQUE2QixLQUF1QjtRQUNsRCxLQUFLLEVBQUUsQ0FBQztRQURtQixVQUFLLEdBQUwsS0FBSyxDQUFrQjtLQUVuRDtJQUVNLEtBQUs7UUFDVixNQUFNLENBQUMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDO1FBQ3JCLE9BQU87WUFDTCxXQUFXLEVBQUU7Z0JBQ1gsT0FBTyxFQUFFLENBQUMsQ0FBQyxPQUFPLEVBQUUsS0FBSyxFQUFFO2dCQUMzQixVQUFVLEVBQUUsQ0FBQyxDQUFDLENBQUMsVUFBVSxJQUFJLGFBQWEsQ0FBQyxlQUFlLENBQUMsQ0FBQyxLQUFLO2dCQUNqRSxVQUFVLEVBQUUsQ0FBQyxDQUFDLENBQUMsVUFBVSxJQUFJLGVBQWUsQ0FBQyxRQUFRLENBQUMsQ0FBQyxLQUFLLEVBQUU7YUFDL0Q7U0FDRixDQUFDO0tBQ0g7Q0FDRjtBQUVELGdCQUFnQjtBQUNoQixNQUFNLHFCQUFzQixTQUFRLGtCQUFrQjtJQUV2QjtJQURiLFVBQVUsR0FBRyxjQUFjLENBQUMsR0FBRyxDQUFDO0lBQ2hELFlBQTZCLEtBQXVCO1FBQ2xELEtBQUssRUFBRSxDQUFDO1FBRG1CLFVBQUssR0FBTCxLQUFLLENBQWtCO0tBRW5EO0lBRU0sS0FBSztRQUNWLE1BQU0sQ0FBQyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUM7UUFDckIsT0FBTztZQUNMLFdBQVcsRUFBRTtnQkFDWCxRQUFRLEVBQUUsQ0FBQyxDQUFDLENBQUMsUUFBUSxJQUFJLGFBQWEsQ0FBQyxRQUFRLENBQUMsQ0FBQyxPQUFPLEVBQUU7Z0JBQzFELFVBQVUsRUFBRSxDQUFDLENBQUMsQ0FBQyxVQUFVLElBQUksYUFBYSxDQUFDLGVBQWUsQ0FBQyxDQUFDLEtBQUs7Z0JBQ2pFLFVBQVUsRUFBRSxDQUFDLENBQUMsQ0FBQyxVQUFVLElBQUksZUFBZSxDQUFDLFFBQVEsQ0FBQyxDQUFDLEtBQUssRUFBRTthQUMvRDtTQUNGLENBQUM7S0FDSDtDQUNGO0FBRUQsZ0JBQWdCO0FBQ2hCLE1BQU0sNkJBQThCLFNBQVEsa0JBQWtCO0lBQzVDLFVBQVUsR0FBRyxjQUFjLENBQUMsV0FBVyxDQUFDO0lBQ2pELEtBQUs7UUFDVixPQUFPO1lBQ0wsbUJBQW1CLEVBQUUsRUFBRTtTQUN4QixDQUFDO0tBQ0g7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgQml0cmF0ZSB9IGZyb20gJ2F3cy1jZGstbGliJztcbmltcG9ydCB0eXBlIHsgQ2ZuQ2hhbm5lbCB9IGZyb20gJ2F3cy1jZGstbGliL2F3cy1tZWRpYWxpdmUnO1xuXG4vKipcbiAqIEF1ZGlvIHNhbXBsZSByYXRlIGZvciBBQUMsIE1QMiwgYW5kIFdBViBjb2RlY3MuXG4gKlxuICogVXNlIG9uZSBvZiB0aGUgc3RhbmRhcmQgcHJlc2V0cyBvciBgQXVkaW9TYW1wbGVSYXRlLm9mKGh6KWAgZm9yIGEgY3VzdG9tIHZhbHVlLlxuICovXG5leHBvcnQgY2xhc3MgQXVkaW9TYW1wbGVSYXRlIHtcbiAgLyoqIDgsMDAwIEh6ICovXG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgSFpfODAwMCA9IG5ldyBBdWRpb1NhbXBsZVJhdGUoODAwMCk7XG4gIC8qKiAxMiwwMDAgSHogKi9cbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBIWl8xMjAwMCA9IG5ldyBBdWRpb1NhbXBsZVJhdGUoMTIwMDApO1xuICAvKiogMTYsMDAwIEh6ICovXG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgSFpfMTYwMDAgPSBuZXcgQXVkaW9TYW1wbGVSYXRlKDE2MDAwKTtcbiAgLyoqIDIyLDA1MCBIeiAqL1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IEhaXzIyMDUwID0gbmV3IEF1ZGlvU2FtcGxlUmF0ZSgyMjA1MCk7XG4gIC8qKiAyNCwwMDAgSHogKi9cbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBIWl8yNDAwMCA9IG5ldyBBdWRpb1NhbXBsZVJhdGUoMjQwMDApO1xuICAvKiogMzIsMDAwIEh6ICovXG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgSFpfMzIwMDAgPSBuZXcgQXVkaW9TYW1wbGVSYXRlKDMyMDAwKTtcbiAgLyoqIDQ0LDEwMCBIeiAqL1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IEhaXzQ0MTAwID0gbmV3IEF1ZGlvU2FtcGxlUmF0ZSg0NDEwMCk7XG4gIC8qKiA0OCwwMDAgSHogKi9cbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBIWl80ODAwMCA9IG5ldyBBdWRpb1NhbXBsZVJhdGUoNDgwMDApO1xuICAvKiogODgsMjAwIEh6ICovXG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgSFpfODgyMDAgPSBuZXcgQXVkaW9TYW1wbGVSYXRlKDg4MjAwKTtcbiAgLyoqIDk2LDAwMCBIeiAqL1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IEhaXzk2MDAwID0gbmV3IEF1ZGlvU2FtcGxlUmF0ZSg5NjAwMCk7XG5cbiAgLyoqXG4gICAqIEEgY3VzdG9tIHNhbXBsZSByYXRlIGluIEh6LlxuICAgKiBAcGFyYW0gaHogdGhlIHNhbXBsZSByYXRlIGluIEh6XG4gICAqL1xuICBwdWJsaWMgc3RhdGljIG9mKGh6OiBudW1iZXIpOiBBdWRpb1NhbXBsZVJhdGUge1xuICAgIHJldHVybiBuZXcgQXVkaW9TYW1wbGVSYXRlKGh6KTtcbiAgfVxuXG4gIHByaXZhdGUgY29uc3RydWN0b3IocHJpdmF0ZSByZWFkb25seSBoejogbnVtYmVyKSB7fVxuXG4gIC8qKiBAaW50ZXJuYWwgKi9cbiAgcHVibGljIF90b0h6KCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuaHo7XG4gIH1cbn1cblxuLyoqXG4gKiBBdWRpbyBiaXQgZGVwdGggZm9yIFdBViBjb2RlYy5cbiAqXG4gKiBVc2Ugb25lIG9mIHRoZSBzdGFuZGFyZCBwcmVzZXRzIG9yIGBBdWRpb0JpdERlcHRoLm9mKGJpdHMpYCBmb3IgYSBjdXN0b20gdmFsdWUuXG4gKi9cbmV4cG9ydCBjbGFzcyBBdWRpb0JpdERlcHRoIHtcbiAgLyoqIDE2LWJpdCAqL1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IERFUFRIXzE2ID0gbmV3IEF1ZGlvQml0RGVwdGgoMTYpO1xuICAvKiogMjQtYml0ICovXG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgREVQVEhfMjQgPSBuZXcgQXVkaW9CaXREZXB0aCgyNCk7XG5cbiAgLyoqXG4gICAqIEEgY3VzdG9tIGJpdCBkZXB0aC5cbiAgICogQHBhcmFtIGJpdHMgdGhlIGJpdCBkZXB0aFxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBvZihiaXRzOiBudW1iZXIpOiBBdWRpb0JpdERlcHRoIHtcbiAgICByZXR1cm4gbmV3IEF1ZGlvQml0RGVwdGgoYml0cyk7XG4gIH1cblxuICBwcml2YXRlIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgYml0czogbnVtYmVyKSB7fVxuXG4gIC8qKiBAaW50ZXJuYWwgKi9cbiAgcHVibGljIF90b0JpdHMoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5iaXRzO1xuICB9XG59XG5cbi8qKlxuICogVGhlIHR5cGUgb2YgYXVkaW8gY29kZWMuIFVzZXJzIHNlbGVjdCBhIGNvZGVjIHZpYSB0aGVcbiAqIGBBdWRpb0NvZGVjU2V0dGluZ3NgIGZhY3RvcnkgbWV0aG9kcywgbmV2ZXIgYnkgcGFzc2luZyB0aGlzIHR5cGUgZGlyZWN0bHkuXG4gKiBAaW50ZXJuYWxcbiAqL1xuZXhwb3J0IGVudW0gQXVkaW9Db2RlY1R5cGUge1xuICAvKiogQUFDICovXG4gIEFBQyA9ICdBQUMnLFxuICAvKiogRG9sYnkgRGlnaXRhbCAoQUMzKSAqL1xuICBBQzMgPSAnQUMzJyxcbiAgLyoqIERvbGJ5IERpZ2l0YWwgUGx1cyAoRUFDMykgKi9cbiAgRUFDMyA9ICdFQUMzJyxcbiAgLyoqIERvbGJ5IERpZ2l0YWwgUGx1cyB3aXRoIEF0bW9zIChFQUMzIEF0bW9zKSAqL1xuICBFQUMzX0FUTU9TID0gJ0VBQzNfQVRNT1MnLFxuICAvKiogTVBFRy0xIExheWVyIElJIChNUDIpICovXG4gIE1QMiA9ICdNUDInLFxuICAvKiogV0FWICovXG4gIFdBViA9ICdXQVYnLFxuICAvKiogUGFzc3Rocm91Z2ggKG5vIHRyYW5zY29kaW5nKSAqL1xuICBQQVNTVEhST1VHSCA9ICdQQVNTVEhST1VHSCcsXG59XG5cbi8qKlxuICogQUFDIHByb2ZpbGUuXG4gKi9cbmV4cG9ydCBjbGFzcyBBYWNQcm9maWxlIHtcbiAgLyoqIEhFVjEgKi9cbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBIRVYxID0gbmV3IEFhY1Byb2ZpbGUoJ0hFVjEnKTtcbiAgLyoqIEhFVjIgKi9cbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBIRVYyID0gbmV3IEFhY1Byb2ZpbGUoJ0hFVjInKTtcbiAgLyoqIExDIChMb3cgQ29tcGxleGl0eSkgKi9cbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBMQyA9IG5ldyBBYWNQcm9maWxlKCdMQycpO1xuXG4gIC8qKiBBIHZhbHVlIG5vdCB5ZXQgbW9kZWxsZWQgYnkgQVdTIENESy4gKi9cbiAgcHVibGljIHN0YXRpYyBvZih2YWx1ZTogc3RyaW5nKTogQWFjUHJvZmlsZSB7XG4gICAgcmV0dXJuIG5ldyBBYWNQcm9maWxlKHZhbHVlKTtcbiAgfVxuXG4gIC8qKiBUaGUgdW5kZXJseWluZyBzdHJpbmcgdmFsdWUgcGFzc2VkIHRvIENsb3VkRm9ybWF0aW9uLiAqL1xuICBwdWJsaWMgcmVhZG9ubHkgdmFsdWU6IHN0cmluZztcblxuICBwcml2YXRlIGNvbnN0cnVjdG9yKHZhbHVlOiBzdHJpbmcpIHtcbiAgICB0aGlzLnZhbHVlID0gdmFsdWU7XG4gIH1cbn1cblxuLyoqXG4gKiBBQUMgY29kaW5nIG1vZGUuXG4gKi9cbmV4cG9ydCBjbGFzcyBBYWNDb2RpbmdNb2RlIHtcbiAgLyoqIEFkIHJlY2VpdmVyIG1peCDigJQgcmVjZWl2ZXMgc3RlcmVvIGF1ZGlvIGRlc2NyaXB0aW9uICsgY29udHJvbCB0cmFjayBwZXIgRVRTSSBUUyAxMDEgMTU0IEFubmV4IEUuICovXG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgQURfUkVDRUlWRVJfTUlYID0gbmV3IEFhY0NvZGluZ01vZGUoJ0FEX1JFQ0VJVkVSX01JWCcpO1xuICAvKiogMS4wIChtb25vKSAqL1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IENPRElOR19NT0RFXzFfMCA9IG5ldyBBYWNDb2RpbmdNb2RlKCdDT0RJTkdfTU9ERV8xXzAnKTtcbiAgLyoqIDErMSAoZHVhbCBtb25vKSAqL1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IENPRElOR19NT0RFXzFfMSA9IG5ldyBBYWNDb2RpbmdNb2RlKCdDT0RJTkdfTU9ERV8xXzEnKTtcbiAgLyoqIDIuMCAoc3RlcmVvKSAqL1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IENPRElOR19NT0RFXzJfMCA9IG5ldyBBYWNDb2RpbmdNb2RlKCdDT0RJTkdfTU9ERV8yXzAnKTtcbiAgLyoqIDUuMSBzdXJyb3VuZCAqL1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IENPRElOR19NT0RFXzVfMSA9IG5ldyBBYWNDb2RpbmdNb2RlKCdDT0RJTkdfTU9ERV81XzEnKTtcblxuICAvKiogQSB2YWx1ZSBub3QgeWV0IG1vZGVsbGVkIGJ5IEFXUyBDREsuICovXG4gIHB1YmxpYyBzdGF0aWMgb2YodmFsdWU6IHN0cmluZyk6IEFhY0NvZGluZ01vZGUge1xuICAgIHJldHVybiBuZXcgQWFjQ29kaW5nTW9kZSh2YWx1ZSk7XG4gIH1cblxuICAvKiogVGhlIHVuZGVybHlpbmcgc3RyaW5nIHZhbHVlIHBhc3NlZCB0byBDbG91ZEZvcm1hdGlvbi4gKi9cbiAgcHVibGljIHJlYWRvbmx5IHZhbHVlOiBzdHJpbmc7XG5cbiAgcHJpdmF0ZSBjb25zdHJ1Y3Rvcih2YWx1ZTogc3RyaW5nKSB7XG4gICAgdGhpcy52YWx1ZSA9IHZhbHVlO1xuICB9XG59XG5cbi8qKlxuICogQUFDIHJhdGUgY29udHJvbCBtb2RlLlxuICovXG5leHBvcnQgY2xhc3MgQWFjUmF0ZUNvbnRyb2xNb2RlIHtcbiAgLyoqIENvbnN0YW50IGJpdHJhdGUgKi9cbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBDQlIgPSBuZXcgQWFjUmF0ZUNvbnRyb2xNb2RlKCdDQlInKTtcbiAgLyoqIFZhcmlhYmxlIGJpdHJhdGUgKi9cbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBWQlIgPSBuZXcgQWFjUmF0ZUNvbnRyb2xNb2RlKCdWQlInKTtcblxuICAvKiogQSB2YWx1ZSBub3QgeWV0IG1vZGVsbGVkIGJ5IEFXUyBDREsuICovXG4gIHB1YmxpYyBzdGF0aWMgb2YodmFsdWU6IHN0cmluZyk6IEFhY1JhdGVDb250cm9sTW9kZSB7XG4gICAgcmV0dXJuIG5ldyBBYWNSYXRlQ29udHJvbE1vZGUodmFsdWUpO1xuICB9XG5cbiAgLyoqIFRoZSB1bmRlcmx5aW5nIHN0cmluZyB2YWx1ZSBwYXNzZWQgdG8gQ2xvdWRGb3JtYXRpb24uICovXG4gIHB1YmxpYyByZWFkb25seSB2YWx1ZTogc3RyaW5nO1xuXG4gIHByaXZhdGUgY29uc3RydWN0b3IodmFsdWU6IHN0cmluZykge1xuICAgIHRoaXMudmFsdWUgPSB2YWx1ZTtcbiAgfVxufVxuXG4vKipcbiAqIEFBQyByYXcgZm9ybWF0LlxuICovXG5leHBvcnQgY2xhc3MgQWFjUmF3Rm9ybWF0IHtcbiAgLyoqIExBVE0vTE9BUyAqL1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IExBVE1fTE9BUyA9IG5ldyBBYWNSYXdGb3JtYXQoJ0xBVE1fTE9BUycpO1xuICAvKiogTm9uZSAqL1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IE5PTkUgPSBuZXcgQWFjUmF3Rm9ybWF0KCdOT05FJyk7XG5cbiAgLyoqIEEgdmFsdWUgbm90IHlldCBtb2RlbGxlZCBieSBBV1MgQ0RLLiAqL1xuICBwdWJsaWMgc3RhdGljIG9mKHZhbHVlOiBzdHJpbmcpOiBBYWNSYXdGb3JtYXQge1xuICAgIHJldHVybiBuZXcgQWFjUmF3Rm9ybWF0KHZhbHVlKTtcbiAgfVxuXG4gIC8qKiBUaGUgdW5kZXJseWluZyBzdHJpbmcgdmFsdWUgcGFzc2VkIHRvIENsb3VkRm9ybWF0aW9uLiAqL1xuICBwdWJsaWMgcmVhZG9ubHkgdmFsdWU6IHN0cmluZztcblxuICBwcml2YXRlIGNvbnN0cnVjdG9yKHZhbHVlOiBzdHJpbmcpIHtcbiAgICB0aGlzLnZhbHVlID0gdmFsdWU7XG4gIH1cbn1cblxuLyoqXG4gKiBBQUMgc3BlY2lmaWNhdGlvbi5cbiAqL1xuZXhwb3J0IGNsYXNzIEFhY1NwZWMge1xuICAvKiogTVBFRy0yIEFBQyAqL1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IE1QRUcyID0gbmV3IEFhY1NwZWMoJ01QRUcyJyk7XG4gIC8qKiBNUEVHLTQgQUFDICovXG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgTVBFRzQgPSBuZXcgQWFjU3BlYygnTVBFRzQnKTtcblxuICAvKiogQSB2YWx1ZSBub3QgeWV0IG1vZGVsbGVkIGJ5IEFXUyBDREsuICovXG4gIHB1YmxpYyBzdGF0aWMgb2YodmFsdWU6IHN0cmluZyk6IEFhY1NwZWMge1xuICAgIHJldHVybiBuZXcgQWFjU3BlYyh2YWx1ZSk7XG4gIH1cblxuICAvKiogVGhlIHVuZGVybHlpbmcgc3RyaW5nIHZhbHVlIHBhc3NlZCB0byBDbG91ZEZvcm1hdGlvbi4gKi9cbiAgcHVibGljIHJlYWRvbmx5IHZhbHVlOiBzdHJpbmc7XG5cbiAgcHJpdmF0ZSBjb25zdHJ1Y3Rvcih2YWx1ZTogc3RyaW5nKSB7XG4gICAgdGhpcy52YWx1ZSA9IHZhbHVlO1xuICB9XG59XG5cbi8qKlxuICogQUFDIGlucHV0IHR5cGUuXG4gKi9cbmV4cG9ydCBjbGFzcyBBYWNJbnB1dFR5cGUge1xuICAvKiogQnJvYWRjYXN0ZXIgbWl4ZWQgQUQgKi9cbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBCUk9BRENBU1RFUl9NSVhFRF9BRCA9IG5ldyBBYWNJbnB1dFR5cGUoJ0JST0FEQ0FTVEVSX01JWEVEX0FEJyk7XG4gIC8qKiBOb3JtYWwgKi9cbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBOT1JNQUwgPSBuZXcgQWFjSW5wdXRUeXBlKCdOT1JNQUwnKTtcblxuICAvKiogQSB2YWx1ZSBub3QgeWV0IG1vZGVsbGVkIGJ5IEFXUyBDREsuICovXG4gIHB1YmxpYyBzdGF0aWMgb2YodmFsdWU6IHN0cmluZyk6IEFhY0lucHV0VHlwZSB7XG4gICAgcmV0dXJuIG5ldyBBYWNJbnB1dFR5cGUodmFsdWUpO1xuICB9XG5cbiAgLyoqIFRoZSB1bmRlcmx5aW5nIHN0cmluZyB2YWx1ZSBwYXNzZWQgdG8gQ2xvdWRGb3JtYXRpb24uICovXG4gIHB1YmxpYyByZWFkb25seSB2YWx1ZTogc3RyaW5nO1xuXG4gIHByaXZhdGUgY29uc3RydWN0b3IodmFsdWU6IHN0cmluZykge1xuICAgIHRoaXMudmFsdWUgPSB2YWx1ZTtcbiAgfVxufVxuXG4vKipcbiAqIEFBQyBWQlIgcXVhbGl0eSBsZXZlbC5cbiAqL1xuZXhwb3J0IGNsYXNzIEFhY1ZiclF1YWxpdHkge1xuICAvKiogSGlnaCAqL1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IEhJR0ggPSBuZXcgQWFjVmJyUXVhbGl0eSgnSElHSCcpO1xuICAvKiogTG93ICovXG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgTE9XID0gbmV3IEFhY1ZiclF1YWxpdHkoJ0xPVycpO1xuICAvKiogTWVkaXVtIGhpZ2ggKi9cbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBNRURJVU1fSElHSCA9IG5ldyBBYWNWYnJRdWFsaXR5KCdNRURJVU1fSElHSCcpO1xuICAvKiogTWVkaXVtIGxvdyAqL1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IE1FRElVTV9MT1cgPSBuZXcgQWFjVmJyUXVhbGl0eSgnTUVESVVNX0xPVycpO1xuXG4gIC8qKiBBIHZhbHVlIG5vdCB5ZXQgbW9kZWxsZWQgYnkgQVdTIENESy4gKi9cbiAgcHVibGljIHN0YXRpYyBvZih2YWx1ZTogc3RyaW5nKTogQWFjVmJyUXVhbGl0eSB7XG4gICAgcmV0dXJuIG5ldyBBYWNWYnJRdWFsaXR5KHZhbHVlKTtcbiAgfVxuXG4gIC8qKiBUaGUgdW5kZXJseWluZyBzdHJpbmcgdmFsdWUgcGFzc2VkIHRvIENsb3VkRm9ybWF0aW9uLiAqL1xuICBwdWJsaWMgcmVhZG9ubHkgdmFsdWU6IHN0cmluZztcblxuICBwcml2YXRlIGNvbnN0cnVjdG9yKHZhbHVlOiBzdHJpbmcpIHtcbiAgICB0aGlzLnZhbHVlID0gdmFsdWU7XG4gIH1cbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIEFDMyBlbnVtc1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLyoqXG4gKiBBQzMgYXR0ZW51YXRpb24gY29udHJvbC5cbiAqL1xuZXhwb3J0IGNsYXNzIEFjM0F0dGVudWF0aW9uQ29udHJvbCB7XG4gIC8qKiBBcHBseSAzIGRCIGF0dGVudWF0aW9uIHRvIHN1cnJvdW5kIGNoYW5uZWxzICovXG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgQVRURU5VQVRFXzNfREIgPSBuZXcgQWMzQXR0ZW51YXRpb25Db250cm9sKCdBVFRFTlVBVEVfM19EQicpO1xuICAvKiogTm8gYXR0ZW51YXRpb24gKi9cbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBOT05FID0gbmV3IEFjM0F0dGVudWF0aW9uQ29udHJvbCgnTk9ORScpO1xuXG4gIC8qKiBBIHZhbHVlIG5vdCB5ZXQgbW9kZWxsZWQgYnkgQVdTIENESy4gKi9cbiAgcHVibGljIHN0YXRpYyBvZih2YWx1ZTogc3RyaW5nKTogQWMzQXR0ZW51YXRpb25Db250cm9sIHtcbiAgICByZXR1cm4gbmV3IEFjM0F0dGVudWF0aW9uQ29udHJvbCh2YWx1ZSk7XG4gIH1cblxuICAvKiogVGhlIHVuZGVybHlpbmcgc3RyaW5nIHZhbHVlIHBhc3NlZCB0byBDbG91ZEZvcm1hdGlvbi4gKi9cbiAgcHVibGljIHJlYWRvbmx5IHZhbHVlOiBzdHJpbmc7XG5cbiAgcHJpdmF0ZSBjb25zdHJ1Y3Rvcih2YWx1ZTogc3RyaW5nKSB7XG4gICAgdGhpcy52YWx1ZSA9IHZhbHVlO1xuICB9XG59XG5cbi8qKlxuICogQUMzIGJpdHN0cmVhbSBtb2RlLlxuICovXG5leHBvcnQgY2xhc3MgQWMzQml0c3RyZWFtTW9kZSB7XG4gIC8qKiBDb21tZW50YXJ5ICovXG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgQ09NTUVOVEFSWSA9IG5ldyBBYzNCaXRzdHJlYW1Nb2RlKCdDT01NRU5UQVJZJyk7XG4gIC8qKiBDb21wbGV0ZSBtYWluICovXG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgQ09NUExFVEVfTUFJTiA9IG5ldyBBYzNCaXRzdHJlYW1Nb2RlKCdDT01QTEVURV9NQUlOJyk7XG4gIC8qKiBEaWFsb2d1ZSAqL1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IERJQUxPR1VFID0gbmV3IEFjM0JpdHN0cmVhbU1vZGUoJ0RJQUxPR1VFJyk7XG4gIC8qKiBFbWVyZ2VuY3kgKi9cbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBFTUVSR0VOQ1kgPSBuZXcgQWMzQml0c3RyZWFtTW9kZSgnRU1FUkdFTkNZJyk7XG4gIC8qKiBIZWFyaW5nIGltcGFpcmVkICovXG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgSEVBUklOR19JTVBBSVJFRCA9IG5ldyBBYzNCaXRzdHJlYW1Nb2RlKCdIRUFSSU5HX0lNUEFJUkVEJyk7XG4gIC8qKiBNdXNpYyBhbmQgZWZmZWN0cyAqL1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IE1VU0lDX0FORF9FRkZFQ1RTID0gbmV3IEFjM0JpdHN0cmVhbU1vZGUoJ01VU0lDX0FORF9FRkZFQ1RTJyk7XG4gIC8qKiBWaXN1YWxseSBpbXBhaXJlZCAqL1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IFZJU1VBTExZX0lNUEFJUkVEID0gbmV3IEFjM0JpdHN0cmVhbU1vZGUoJ1ZJU1VBTExZX0lNUEFJUkVEJyk7XG4gIC8qKiBWb2ljZSBvdmVyICovXG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgVk9JQ0VfT1ZFUiA9IG5ldyBBYzNCaXRzdHJlYW1Nb2RlKCdWT0lDRV9PVkVSJyk7XG5cbiAgLyoqIEEgdmFsdWUgbm90IHlldCBtb2RlbGxlZCBieSBBV1MgQ0RLLiAqL1xuICBwdWJsaWMgc3RhdGljIG9mKHZhbHVlOiBzdHJpbmcpOiBBYzNCaXRzdHJlYW1Nb2RlIHtcbiAgICByZXR1cm4gbmV3IEFjM0JpdHN0cmVhbU1vZGUodmFsdWUpO1xuICB9XG5cbiAgLyoqIFRoZSB1bmRlcmx5aW5nIHN0cmluZyB2YWx1ZSBwYXNzZWQgdG8gQ2xvdWRGb3JtYXRpb24uICovXG4gIHB1YmxpYyByZWFkb25seSB2YWx1ZTogc3RyaW5nO1xuXG4gIHByaXZhdGUgY29uc3RydWN0b3IodmFsdWU6IHN0cmluZykge1xuICAgIHRoaXMudmFsdWUgPSB2YWx1ZTtcbiAgfVxufVxuXG4vKipcbiAqIEFDMyBjb2RpbmcgbW9kZS5cbiAqL1xuZXhwb3J0IGNsYXNzIEFjM0NvZGluZ01vZGUge1xuICAvKiogMS4wIChtb25vKSAqL1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IENPRElOR19NT0RFXzFfMCA9IG5ldyBBYzNDb2RpbmdNb2RlKCdDT0RJTkdfTU9ERV8xXzAnKTtcbiAgLyoqIDErMSAoZHVhbCBtb25vKSAqL1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IENPRElOR19NT0RFXzFfMSA9IG5ldyBBYzNDb2RpbmdNb2RlKCdDT0RJTkdfTU9ERV8xXzEnKTtcbiAgLyoqIDIuMCAoc3RlcmVvKSAqL1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IENPRElOR19NT0RFXzJfMCA9IG5ldyBBYzNDb2RpbmdNb2RlKCdDT0RJTkdfTU9ERV8yXzAnKTtcbiAgLyoqIDMvMiAoNS4wIHN1cnJvdW5kKSAqL1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IENPRElOR19NT0RFXzNfMl9MRkUgPSBuZXcgQWMzQ29kaW5nTW9kZSgnQ09ESU5HX01PREVfM18yX0xGRScpO1xuXG4gIC8qKiBBIHZhbHVlIG5vdCB5ZXQgbW9kZWxsZWQgYnkgQVdTIENESy4gKi9cbiAgcHVibGljIHN0YXRpYyBvZih2YWx1ZTogc3RyaW5nKTogQWMzQ29kaW5nTW9kZSB7XG4gICAgcmV0dXJuIG5ldyBBYzNDb2RpbmdNb2RlKHZhbHVlKTtcbiAgfVxuXG4gIC8qKiBUaGUgdW5kZXJseWluZyBzdHJpbmcgdmFsdWUgcGFzc2VkIHRvIENsb3VkRm9ybWF0aW9uLiAqL1xuICBwdWJsaWMgcmVhZG9ubHkgdmFsdWU6IHN0cmluZztcblxuICBwcml2YXRlIGNvbnN0cnVjdG9yKHZhbHVlOiBzdHJpbmcpIHtcbiAgICB0aGlzLnZhbHVlID0gdmFsdWU7XG4gIH1cbn1cblxuLyoqXG4gKiBBQzMgRFJDIHByb2ZpbGUuXG4gKi9cbmV4cG9ydCBjbGFzcyBBYzNEcmNQcm9maWxlIHtcbiAgLyoqIEZpbG0gc3RhbmRhcmQgKi9cbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBGSUxNX1NUQU5EQVJEID0gbmV3IEFjM0RyY1Byb2ZpbGUoJ0ZJTE1fU1RBTkRBUkQnKTtcbiAgLyoqIE5vbmUgKi9cbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBOT05FID0gbmV3IEFjM0RyY1Byb2ZpbGUoJ05PTkUnKTtcblxuICAvKiogQSB2YWx1ZSBub3QgeWV0IG1vZGVsbGVkIGJ5IEFXUyBDREsuICovXG4gIHB1YmxpYyBzdGF0aWMgb2YodmFsdWU6IHN0cmluZyk6IEFjM0RyY1Byb2ZpbGUge1xuICAgIHJldHVybiBuZXcgQWMzRHJjUHJvZmlsZSh2YWx1ZSk7XG4gIH1cblxuICAvKiogVGhlIHVuZGVybHlpbmcgc3RyaW5nIHZhbHVlIHBhc3NlZCB0byBDbG91ZEZvcm1hdGlvbi4gKi9cbiAgcHVibGljIHJlYWRvbmx5IHZhbHVlOiBzdHJpbmc7XG5cbiAgcHJpdmF0ZSBjb25zdHJ1Y3Rvcih2YWx1ZTogc3RyaW5nKSB7XG4gICAgdGhpcy52YWx1ZSA9IHZhbHVlO1xuICB9XG59XG5cbi8qKlxuICogQUMzIExGRSBmaWx0ZXIuXG4gKi9cbmV4cG9ydCBjbGFzcyBBYzNMZmVGaWx0ZXIge1xuICAvKiogRGlzYWJsZWQgKi9cbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBESVNBQkxFRCA9IG5ldyBBYzNMZmVGaWx0ZXIoJ0RJU0FCTEVEJyk7XG4gIC8qKiBFbmFibGVkICovXG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgRU5BQkxFRCA9IG5ldyBBYzNMZmVGaWx0ZXIoJ0VOQUJMRUQnKTtcblxuICAvKiogQSB2YWx1ZSBub3QgeWV0IG1vZGVsbGVkIGJ5IEFXUyBDREsuICovXG4gIHB1YmxpYyBzdGF0aWMgb2YodmFsdWU6IHN0cmluZyk6IEFjM0xmZUZpbHRlciB7XG4gICAgcmV0dXJuIG5ldyBBYzNMZmVGaWx0ZXIodmFsdWUpO1xuICB9XG5cbiAgLyoqIFRoZSB1bmRlcmx5aW5nIHN0cmluZyB2YWx1ZSBwYXNzZWQgdG8gQ2xvdWRGb3JtYXRpb24uICovXG4gIHB1YmxpYyByZWFkb25seSB2YWx1ZTogc3RyaW5nO1xuXG4gIHByaXZhdGUgY29uc3RydWN0b3IodmFsdWU6IHN0cmluZykge1xuICAgIHRoaXMudmFsdWUgPSB2YWx1ZTtcbiAgfVxufVxuXG4vKipcbiAqIEFDMyBtZXRhZGF0YSBjb250cm9sLlxuICovXG5leHBvcnQgY2xhc3MgQWMzTWV0YWRhdGFDb250cm9sIHtcbiAgLyoqIEZvbGxvdyBpbnB1dCAqL1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IEZPTExPV19JTlBVVCA9IG5ldyBBYzNNZXRhZGF0YUNvbnRyb2woJ0ZPTExPV19JTlBVVCcpO1xuICAvKiogVXNlIGNvbmZpZ3VyZWQgKi9cbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBVU0VfQ09ORklHVVJFRCA9IG5ldyBBYzNNZXRhZGF0YUNvbnRyb2woJ1VTRV9DT05GSUdVUkVEJyk7XG5cbiAgLyoqIEEgdmFsdWUgbm90IHlldCBtb2RlbGxlZCBieSBBV1MgQ0RLLiAqL1xuICBwdWJsaWMgc3RhdGljIG9mKHZhbHVlOiBzdHJpbmcpOiBBYzNNZXRhZGF0YUNvbnRyb2wge1xuICAgIHJldHVybiBuZXcgQWMzTWV0YWRhdGFDb250cm9sKHZhbHVlKTtcbiAgfVxuXG4gIC8qKiBUaGUgdW5kZXJseWluZyBzdHJpbmcgdmFsdWUgcGFzc2VkIHRvIENsb3VkRm9ybWF0aW9uLiAqL1xuICBwdWJsaWMgcmVhZG9ubHkgdmFsdWU6IHN0cmluZztcblxuICBwcml2YXRlIGNvbnN0cnVjdG9yKHZhbHVlOiBzdHJpbmcpIHtcbiAgICB0aGlzLnZhbHVlID0gdmFsdWU7XG4gIH1cbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIEVBQzMgZW51bXNcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi8qKlxuICogRUFDMyBhdHRlbnVhdGlvbiBjb250cm9sLlxuICovXG5leHBvcnQgY2xhc3MgRWFjM0F0dGVudWF0aW9uQ29udHJvbCB7XG4gIC8qKiBBcHBseSAzIGRCIGF0dGVudWF0aW9uIHRvIHN1cnJvdW5kIGNoYW5uZWxzICovXG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgQVRURU5VQVRFXzNfREIgPSBuZXcgRWFjM0F0dGVudWF0aW9uQ29udHJvbCgnQVRURU5VQVRFXzNfREInKTtcbiAgLyoqIE5vIGF0dGVudWF0aW9uICovXG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgTk9ORSA9IG5ldyBFYWMzQXR0ZW51YXRpb25Db250cm9sKCdOT05FJyk7XG5cbiAgLyoqIEEgdmFsdWUgbm90IHlldCBtb2RlbGxlZCBieSBBV1MgQ0RLLiAqL1xuICBwdWJsaWMgc3RhdGljIG9mKHZhbHVlOiBzdHJpbmcpOiBFYWMzQXR0ZW51YXRpb25Db250cm9sIHtcbiAgICByZXR1cm4gbmV3IEVhYzNBdHRlbnVhdGlvbkNvbnRyb2wodmFsdWUpO1xuICB9XG5cbiAgLyoqIFRoZSB1bmRlcmx5aW5nIHN0cmluZyB2YWx1ZSBwYXNzZWQgdG8gQ2xvdWRGb3JtYXRpb24uICovXG4gIHB1YmxpYyByZWFkb25seSB2YWx1ZTogc3RyaW5nO1xuXG4gIHByaXZhdGUgY29uc3RydWN0b3IodmFsdWU6IHN0cmluZykge1xuICAgIHRoaXMudmFsdWUgPSB2YWx1ZTtcbiAgfVxufVxuXG4vKipcbiAqIEVBQzMgYml0c3RyZWFtIG1vZGUuXG4gKi9cbmV4cG9ydCBjbGFzcyBFYWMzQml0c3RyZWFtTW9kZSB7XG4gIC8qKiBDb21tZW50YXJ5ICovXG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgQ09NTUVOVEFSWSA9IG5ldyBFYWMzQml0c3RyZWFtTW9kZSgnQ09NTUVOVEFSWScpO1xuICAvKiogQ29tcGxldGUgbWFpbiAqL1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IENPTVBMRVRFX01BSU4gPSBuZXcgRWFjM0JpdHN0cmVhbU1vZGUoJ0NPTVBMRVRFX01BSU4nKTtcbiAgLyoqIEVtZXJnZW5jeSAqL1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IEVNRVJHRU5DWSA9IG5ldyBFYWMzQml0c3RyZWFtTW9kZSgnRU1FUkdFTkNZJyk7XG4gIC8qKiBIZWFyaW5nIGltcGFpcmVkICovXG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgSEVBUklOR19JTVBBSVJFRCA9IG5ldyBFYWMzQml0c3RyZWFtTW9kZSgnSEVBUklOR19JTVBBSVJFRCcpO1xuICAvKiogVmlzdWFsbHkgaW1wYWlyZWQgKi9cbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBWSVNVQUxMWV9JTVBBSVJFRCA9IG5ldyBFYWMzQml0c3RyZWFtTW9kZSgnVklTVUFMTFlfSU1QQUlSRUQnKTtcblxuICAvKiogQSB2YWx1ZSBub3QgeWV0IG1vZGVsbGVkIGJ5IEFXUyBDREsuICovXG4gIHB1YmxpYyBzdGF0aWMgb2YodmFsdWU6IHN0cmluZyk6IEVhYzNCaXRzdHJlYW1Nb2RlIHtcbiAgICByZXR1cm4gbmV3IEVhYzNCaXRzdHJlYW1Nb2RlKHZhbHVlKTtcbiAgfVxuXG4gIC8qKiBUaGUgdW5kZXJseWluZyBzdHJpbmcgdmFsdWUgcGFzc2VkIHRvIENsb3VkRm9ybWF0aW9uLiAqL1xuICBwdWJsaWMgcmVhZG9ubHkgdmFsdWU6IHN0cmluZztcblxuICBwcml2YXRlIGNvbnN0cnVjdG9yKHZhbHVlOiBzdHJpbmcpIHtcbiAgICB0aGlzLnZhbHVlID0gdmFsdWU7XG4gIH1cbn1cblxuLyoqXG4gKiBFQUMzIGNvZGluZyBtb2RlLlxuICovXG5leHBvcnQgY2xhc3MgRWFjM0NvZGluZ01vZGUge1xuICAvKiogMS4wIChtb25vKSAqL1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IENPRElOR19NT0RFXzFfMCA9IG5ldyBFYWMzQ29kaW5nTW9kZSgnQ09ESU5HX01PREVfMV8wJyk7XG4gIC8qKiAyLjAgKHN0ZXJlbykgKi9cbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBDT0RJTkdfTU9ERV8yXzAgPSBuZXcgRWFjM0NvZGluZ01vZGUoJ0NPRElOR19NT0RFXzJfMCcpO1xuICAvKiogMy8yICg1LjAgc3Vycm91bmQpICovXG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgQ09ESU5HX01PREVfM18yID0gbmV3IEVhYzNDb2RpbmdNb2RlKCdDT0RJTkdfTU9ERV8zXzInKTtcblxuICAvKiogQSB2YWx1ZSBub3QgeWV0IG1vZGVsbGVkIGJ5IEFXUyBDREsuICovXG4gIHB1YmxpYyBzdGF0aWMgb2YodmFsdWU6IHN0cmluZyk6IEVhYzNDb2RpbmdNb2RlIHtcbiAgICByZXR1cm4gbmV3IEVhYzNDb2RpbmdNb2RlKHZhbHVlKTtcbiAgfVxuXG4gIC8qKiBUaGUgdW5kZXJseWluZyBzdHJpbmcgdmFsdWUgcGFzc2VkIHRvIENsb3VkRm9ybWF0aW9uLiAqL1xuICBwdWJsaWMgcmVhZG9ubHkgdmFsdWU6IHN0cmluZztcblxuICBwcml2YXRlIGNvbnN0cnVjdG9yKHZhbHVlOiBzdHJpbmcpIHtcbiAgICB0aGlzLnZhbHVlID0gdmFsdWU7XG4gIH1cbn1cblxuLyoqXG4gKiBFQUMzIERDIGZpbHRlci5cbiAqL1xuZXhwb3J0IGNsYXNzIEVhYzNEY0ZpbHRlciB7XG4gIC8qKiBEaXNhYmxlZCAqL1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IERJU0FCTEVEID0gbmV3IEVhYzNEY0ZpbHRlcignRElTQUJMRUQnKTtcbiAgLyoqIEVuYWJsZWQgKi9cbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBFTkFCTEVEID0gbmV3IEVhYzNEY0ZpbHRlcignRU5BQkxFRCcpO1xuXG4gIC8qKiBBIHZhbHVlIG5vdCB5ZXQgbW9kZWxsZWQgYnkgQVdTIENESy4gKi9cbiAgcHVibGljIHN0YXRpYyBvZih2YWx1ZTogc3RyaW5nKTogRWFjM0RjRmlsdGVyIHtcbiAgICByZXR1cm4gbmV3IEVhYzNEY0ZpbHRlcih2YWx1ZSk7XG4gIH1cblxuICAvKiogVGhlIHVuZGVybHlpbmcgc3RyaW5nIHZhbHVlIHBhc3NlZCB0byBDbG91ZEZvcm1hdGlvbi4gKi9cbiAgcHVibGljIHJlYWRvbmx5IHZhbHVlOiBzdHJpbmc7XG5cbiAgcHJpdmF0ZSBjb25zdHJ1Y3Rvcih2YWx1ZTogc3RyaW5nKSB7XG4gICAgdGhpcy52YWx1ZSA9IHZhbHVlO1xuICB9XG59XG5cbi8qKlxuICogRUFDMyBEUkMgbGluZSBtb2RlIHByb2ZpbGUuXG4gKi9cbmV4cG9ydCBjbGFzcyBFYWMzRHJjTGluZSB7XG4gIC8qKiBGaWxtIGxpZ2h0ICovXG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgRklMTV9MSUdIVCA9IG5ldyBFYWMzRHJjTGluZSgnRklMTV9MSUdIVCcpO1xuICAvKiogRmlsbSBzdGFuZGFyZCAqL1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IEZJTE1fU1RBTkRBUkQgPSBuZXcgRWFjM0RyY0xpbmUoJ0ZJTE1fU1RBTkRBUkQnKTtcbiAgLyoqIE11c2ljIGxpZ2h0ICovXG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgTVVTSUNfTElHSFQgPSBuZXcgRWFjM0RyY0xpbmUoJ01VU0lDX0xJR0hUJyk7XG4gIC8qKiBNdXNpYyBzdGFuZGFyZCAqL1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IE1VU0lDX1NUQU5EQVJEID0gbmV3IEVhYzNEcmNMaW5lKCdNVVNJQ19TVEFOREFSRCcpO1xuICAvKiogTm9uZSAqL1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IE5PTkUgPSBuZXcgRWFjM0RyY0xpbmUoJ05PTkUnKTtcbiAgLyoqIFNwZWVjaCAqL1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IFNQRUVDSCA9IG5ldyBFYWMzRHJjTGluZSgnU1BFRUNIJyk7XG5cbiAgLyoqIEEgdmFsdWUgbm90IHlldCBtb2RlbGxlZCBieSBBV1MgQ0RLLiAqL1xuICBwdWJsaWMgc3RhdGljIG9mKHZhbHVlOiBzdHJpbmcpOiBFYWMzRHJjTGluZSB7XG4gICAgcmV0dXJuIG5ldyBFYWMzRHJjTGluZSh2YWx1ZSk7XG4gIH1cblxuICAvKiogVGhlIHVuZGVybHlpbmcgc3RyaW5nIHZhbHVlIHBhc3NlZCB0byBDbG91ZEZvcm1hdGlvbi4gKi9cbiAgcHVibGljIHJlYWRvbmx5IHZhbHVlOiBzdHJpbmc7XG5cbiAgcHJpdmF0ZSBjb25zdHJ1Y3Rvcih2YWx1ZTogc3RyaW5nKSB7XG4gICAgdGhpcy52YWx1ZSA9IHZhbHVlO1xuICB9XG59XG5cbi8qKlxuICogRUFDMyBEUkMgUkYgbW9kZSBwcm9maWxlLlxuICovXG5leHBvcnQgY2xhc3MgRWFjM0RyY1JmIHtcbiAgLyoqIEZpbG0gbGlnaHQgKi9cbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBGSUxNX0xJR0hUID0gbmV3IEVhYzNEcmNSZignRklMTV9MSUdIVCcpO1xuICAvKiogRmlsbSBzdGFuZGFyZCAqL1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IEZJTE1fU1RBTkRBUkQgPSBuZXcgRWFjM0RyY1JmKCdGSUxNX1NUQU5EQVJEJyk7XG4gIC8qKiBNdXNpYyBsaWdodCAqL1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IE1VU0lDX0xJR0hUID0gbmV3IEVhYzNEcmNSZignTVVTSUNfTElHSFQnKTtcbiAgLyoqIE11c2ljIHN0YW5kYXJkICovXG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgTVVTSUNfU1RBTkRBUkQgPSBuZXcgRWFjM0RyY1JmKCdNVVNJQ19TVEFOREFSRCcpO1xuICAvKiogTm9uZSAqL1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IE5PTkUgPSBuZXcgRWFjM0RyY1JmKCdOT05FJyk7XG4gIC8qKiBTcGVlY2ggKi9cbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBTUEVFQ0ggPSBuZXcgRWFjM0RyY1JmKCdTUEVFQ0gnKTtcblxuICAvKiogQSB2YWx1ZSBub3QgeWV0IG1vZGVsbGVkIGJ5IEFXUyBDREsuICovXG4gIHB1YmxpYyBzdGF0aWMgb2YodmFsdWU6IHN0cmluZyk6IEVhYzNEcmNSZiB7XG4gICAgcmV0dXJuIG5ldyBFYWMzRHJjUmYodmFsdWUpO1xuICB9XG5cbiAgLyoqIFRoZSB1bmRlcmx5aW5nIHN0cmluZyB2YWx1ZSBwYXNzZWQgdG8gQ2xvdWRGb3JtYXRpb24uICovXG4gIHB1YmxpYyByZWFkb25seSB2YWx1ZTogc3RyaW5nO1xuXG4gIHByaXZhdGUgY29uc3RydWN0b3IodmFsdWU6IHN0cmluZykge1xuICAgIHRoaXMudmFsdWUgPSB2YWx1ZTtcbiAgfVxufVxuXG4vKipcbiAqIEVBQzMgTEZFIGNvbnRyb2wuXG4gKi9cbmV4cG9ydCBjbGFzcyBFYWMzTGZlQ29udHJvbCB7XG4gIC8qKiBMRkUgKi9cbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBMRkUgPSBuZXcgRWFjM0xmZUNvbnRyb2woJ0xGRScpO1xuICAvKiogTm8gTEZFICovXG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgTk9fTEZFID0gbmV3IEVhYzNMZmVDb250cm9sKCdOT19MRkUnKTtcblxuICAvKiogQSB2YWx1ZSBub3QgeWV0IG1vZGVsbGVkIGJ5IEFXUyBDREsuICovXG4gIHB1YmxpYyBzdGF0aWMgb2YodmFsdWU6IHN0cmluZyk6IEVhYzNMZmVDb250cm9sIHtcbiAgICByZXR1cm4gbmV3IEVhYzNMZmVDb250cm9sKHZhbHVlKTtcbiAgfVxuXG4gIC8qKiBUaGUgdW5kZXJseWluZyBzdHJpbmcgdmFsdWUgcGFzc2VkIHRvIENsb3VkRm9ybWF0aW9uLiAqL1xuICBwdWJsaWMgcmVhZG9ubHkgdmFsdWU6IHN0cmluZztcblxuICBwcml2YXRlIGNvbnN0cnVjdG9yKHZhbHVlOiBzdHJpbmcpIHtcbiAgICB0aGlzLnZhbHVlID0gdmFsdWU7XG4gIH1cbn1cblxuLyoqXG4gKiBFQUMzIExGRSBmaWx0ZXIuXG4gKi9cbmV4cG9ydCBjbGFzcyBFYWMzTGZlRmlsdGVyIHtcbiAgLyoqIERpc2FibGVkICovXG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgRElTQUJMRUQgPSBuZXcgRWFjM0xmZUZpbHRlcignRElTQUJMRUQnKTtcbiAgLyoqIEVuYWJsZWQgKi9cbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBFTkFCTEVEID0gbmV3IEVhYzNMZmVGaWx0ZXIoJ0VOQUJMRUQnKTtcblxuICAvKiogQSB2YWx1ZSBub3QgeWV0IG1vZGVsbGVkIGJ5IEFXUyBDREsuICovXG4gIHB1YmxpYyBzdGF0aWMgb2YodmFsdWU6IHN0cmluZyk6IEVhYzNMZmVGaWx0ZXIge1xuICAgIHJldHVybiBuZXcgRWFjM0xmZUZpbHRlcih2YWx1ZSk7XG4gIH1cblxuICAvKiogVGhlIHVuZGVybHlpbmcgc3RyaW5nIHZhbHVlIHBhc3NlZCB0byBDbG91ZEZvcm1hdGlvbi4gKi9cbiAgcHVibGljIHJlYWRvbmx5IHZhbHVlOiBzdHJpbmc7XG5cbiAgcHJpdmF0ZSBjb25zdHJ1Y3Rvcih2YWx1ZTogc3RyaW5nKSB7XG4gICAgdGhpcy52YWx1ZSA9IHZhbHVlO1xuICB9XG59XG5cbi8qKlxuICogRUFDMyBtZXRhZGF0YSBjb250cm9sLlxuICovXG5leHBvcnQgY2xhc3MgRWFjM01ldGFkYXRhQ29udHJvbCB7XG4gIC8qKiBGb2xsb3cgaW5wdXQgKi9cbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBGT0xMT1dfSU5QVVQgPSBuZXcgRWFjM01ldGFkYXRhQ29udHJvbCgnRk9MTE9XX0lOUFVUJyk7XG4gIC8qKiBVc2UgY29uZmlndXJlZCAqL1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IFVTRV9DT05GSUdVUkVEID0gbmV3IEVhYzNNZXRhZGF0YUNvbnRyb2woJ1VTRV9DT05GSUdVUkVEJyk7XG5cbiAgLyoqIEEgdmFsdWUgbm90IHlldCBtb2RlbGxlZCBieSBBV1MgQ0RLLiAqL1xuICBwdWJsaWMgc3RhdGljIG9mKHZhbHVlOiBzdHJpbmcpOiBFYWMzTWV0YWRhdGFDb250cm9sIHtcbiAgICByZXR1cm4gbmV3IEVhYzNNZXRhZGF0YUNvbnRyb2wodmFsdWUpO1xuICB9XG5cbiAgLyoqIFRoZSB1bmRlcmx5aW5nIHN0cmluZyB2YWx1ZSBwYXNzZWQgdG8gQ2xvdWRGb3JtYXRpb24uICovXG4gIHB1YmxpYyByZWFkb25seSB2YWx1ZTogc3RyaW5nO1xuXG4gIHByaXZhdGUgY29uc3RydWN0b3IodmFsdWU6IHN0cmluZykge1xuICAgIHRoaXMudmFsdWUgPSB2YWx1ZTtcbiAgfVxufVxuXG4vKipcbiAqIEVBQzMgcGFzc3Rocm91Z2ggY29udHJvbC5cbiAqL1xuZXhwb3J0IGNsYXNzIEVhYzNQYXNzdGhyb3VnaENvbnRyb2wge1xuICAvKiogTm8gcGFzc3Rocm91Z2ggKi9cbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBOT19QQVNTVEhST1VHSCA9IG5ldyBFYWMzUGFzc3Rocm91Z2hDb250cm9sKCdOT19QQVNTVEhST1VHSCcpO1xuICAvKiogV2hlbiBwb3NzaWJsZSAqL1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IFdIRU5fUE9TU0lCTEUgPSBuZXcgRWFjM1Bhc3N0aHJvdWdoQ29udHJvbCgnV0hFTl9QT1NTSUJMRScpO1xuXG4gIC8qKiBBIHZhbHVlIG5vdCB5ZXQgbW9kZWxsZWQgYnkgQVdTIENESy4gKi9cbiAgcHVibGljIHN0YXRpYyBvZih2YWx1ZTogc3RyaW5nKTogRWFjM1Bhc3N0aHJvdWdoQ29udHJvbCB7XG4gICAgcmV0dXJuIG5ldyBFYWMzUGFzc3Rocm91Z2hDb250cm9sKHZhbHVlKTtcbiAgfVxuXG4gIC8qKiBUaGUgdW5kZXJseWluZyBzdHJpbmcgdmFsdWUgcGFzc2VkIHRvIENsb3VkRm9ybWF0aW9uLiAqL1xuICBwdWJsaWMgcmVhZG9ubHkgdmFsdWU6IHN0cmluZztcblxuICBwcml2YXRlIGNvbnN0cnVjdG9yKHZhbHVlOiBzdHJpbmcpIHtcbiAgICB0aGlzLnZhbHVlID0gdmFsdWU7XG4gIH1cbn1cblxuLyoqXG4gKiBFQUMzIHBoYXNlIGNvbnRyb2wuXG4gKi9cbmV4cG9ydCBjbGFzcyBFYWMzUGhhc2VDb250cm9sIHtcbiAgLyoqIE5vIHNoaWZ0ICovXG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgTk9fU0hJRlQgPSBuZXcgRWFjM1BoYXNlQ29udHJvbCgnTk9fU0hJRlQnKTtcbiAgLyoqIFNoaWZ0IDkwIGRlZ3JlZXMgKi9cbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBTSElGVF85MF9ERUdSRUVTID0gbmV3IEVhYzNQaGFzZUNvbnRyb2woJ1NISUZUXzkwX0RFR1JFRVMnKTtcblxuICAvKiogQSB2YWx1ZSBub3QgeWV0IG1vZGVsbGVkIGJ5IEFXUyBDREsuICovXG4gIHB1YmxpYyBzdGF0aWMgb2YodmFsdWU6IHN0cmluZyk6IEVhYzNQaGFzZUNvbnRyb2wge1xuICAgIHJldHVybiBuZXcgRWFjM1BoYXNlQ29udHJvbCh2YWx1ZSk7XG4gIH1cblxuICAvKiogVGhlIHVuZGVybHlpbmcgc3RyaW5nIHZhbHVlIHBhc3NlZCB0byBDbG91ZEZvcm1hdGlvbi4gKi9cbiAgcHVibGljIHJlYWRvbmx5IHZhbHVlOiBzdHJpbmc7XG5cbiAgcHJpdmF0ZSBjb25zdHJ1Y3Rvcih2YWx1ZTogc3RyaW5nKSB7XG4gICAgdGhpcy52YWx1ZSA9IHZhbHVlO1xuICB9XG59XG5cbi8qKlxuICogRUFDMyBzdGVyZW8gZG93bm1peCBwcmVmZXJlbmNlLlxuICovXG5leHBvcnQgY2xhc3MgRWFjM1N0ZXJlb0Rvd25taXgge1xuICAvKiogRFBMMiAqL1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IERQTDIgPSBuZXcgRWFjM1N0ZXJlb0Rvd25taXgoJ0RQTDInKTtcbiAgLyoqIExvL1JvICovXG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgTE9fUk8gPSBuZXcgRWFjM1N0ZXJlb0Rvd25taXgoJ0xPX1JPJyk7XG4gIC8qKiBMdC9SdCAqL1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IExUX1JUID0gbmV3IEVhYzNTdGVyZW9Eb3dubWl4KCdMVF9SVCcpO1xuICAvKiogTm90IGluZGljYXRlZCAqL1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IE5PVF9JTkRJQ0FURUQgPSBuZXcgRWFjM1N0ZXJlb0Rvd25taXgoJ05PVF9JTkRJQ0FURUQnKTtcblxuICAvKiogQSB2YWx1ZSBub3QgeWV0IG1vZGVsbGVkIGJ5IEFXUyBDREsuICovXG4gIHB1YmxpYyBzdGF0aWMgb2YodmFsdWU6IHN0cmluZyk6IEVhYzNTdGVyZW9Eb3dubWl4IHtcbiAgICByZXR1cm4gbmV3IEVhYzNTdGVyZW9Eb3dubWl4KHZhbHVlKTtcbiAgfVxuXG4gIC8qKiBUaGUgdW5kZXJseWluZyBzdHJpbmcgdmFsdWUgcGFzc2VkIHRvIENsb3VkRm9ybWF0aW9uLiAqL1xuICBwdWJsaWMgcmVhZG9ubHkgdmFsdWU6IHN0cmluZztcblxuICBwcml2YXRlIGNvbnN0cnVjdG9yKHZhbHVlOiBzdHJpbmcpIHtcbiAgICB0aGlzLnZhbHVlID0gdmFsdWU7XG4gIH1cbn1cblxuLyoqXG4gKiBFQUMzIHN1cnJvdW5kIGV4IG1vZGUuXG4gKi9cbmV4cG9ydCBjbGFzcyBFYWMzU3Vycm91bmRFeE1vZGUge1xuICAvKiogRGlzYWJsZWQgKi9cbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBESVNBQkxFRCA9IG5ldyBFYWMzU3Vycm91bmRFeE1vZGUoJ0RJU0FCTEVEJyk7XG4gIC8qKiBFbmFibGVkICovXG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgRU5BQkxFRCA9IG5ldyBFYWMzU3Vycm91bmRFeE1vZGUoJ0VOQUJMRUQnKTtcbiAgLyoqIE5vdCBpbmRpY2F0ZWQgKi9cbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBOT1RfSU5ESUNBVEVEID0gbmV3IEVhYzNTdXJyb3VuZEV4TW9kZSgnTk9UX0lORElDQVRFRCcpO1xuXG4gIC8qKiBBIHZhbHVlIG5vdCB5ZXQgbW9kZWxsZWQgYnkgQVdTIENESy4gKi9cbiAgcHVibGljIHN0YXRpYyBvZih2YWx1ZTogc3RyaW5nKTogRWFjM1N1cnJvdW5kRXhNb2RlIHtcbiAgICByZXR1cm4gbmV3IEVhYzNTdXJyb3VuZEV4TW9kZSh2YWx1ZSk7XG4gIH1cblxuICAvKiogVGhlIHVuZGVybHlpbmcgc3RyaW5nIHZhbHVlIHBhc3NlZCB0byBDbG91ZEZvcm1hdGlvbi4gKi9cbiAgcHVibGljIHJlYWRvbmx5IHZhbHVlOiBzdHJpbmc7XG5cbiAgcHJpdmF0ZSBjb25zdHJ1Y3Rvcih2YWx1ZTogc3RyaW5nKSB7XG4gICAgdGhpcy52YWx1ZSA9IHZhbHVlO1xuICB9XG59XG5cbi8qKlxuICogRUFDMyBzdXJyb3VuZCBtb2RlLlxuICovXG5leHBvcnQgY2xhc3MgRWFjM1N1cnJvdW5kTW9kZSB7XG4gIC8qKiBEaXNhYmxlZCAqL1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IERJU0FCTEVEID0gbmV3IEVhYzNTdXJyb3VuZE1vZGUoJ0RJU0FCTEVEJyk7XG4gIC8qKiBFbmFibGVkICovXG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgRU5BQkxFRCA9IG5ldyBFYWMzU3Vycm91bmRNb2RlKCdFTkFCTEVEJyk7XG4gIC8qKiBOb3QgaW5kaWNhdGVkICovXG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgTk9UX0lORElDQVRFRCA9IG5ldyBFYWMzU3Vycm91bmRNb2RlKCdOT1RfSU5ESUNBVEVEJyk7XG5cbiAgLyoqIEEgdmFsdWUgbm90IHlldCBtb2RlbGxlZCBieSBBV1MgQ0RLLiAqL1xuICBwdWJsaWMgc3RhdGljIG9mKHZhbHVlOiBzdHJpbmcpOiBFYWMzU3Vycm91bmRNb2RlIHtcbiAgICByZXR1cm4gbmV3IEVhYzNTdXJyb3VuZE1vZGUodmFsdWUpO1xuICB9XG5cbiAgLyoqIFRoZSB1bmRlcmx5aW5nIHN0cmluZyB2YWx1ZSBwYXNzZWQgdG8gQ2xvdWRGb3JtYXRpb24uICovXG4gIHB1YmxpYyByZWFkb25seSB2YWx1ZTogc3RyaW5nO1xuXG4gIHByaXZhdGUgY29uc3RydWN0b3IodmFsdWU6IHN0cmluZykge1xuICAgIHRoaXMudmFsdWUgPSB2YWx1ZTtcbiAgfVxufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gRUFDMyBBdG1vcyBlbnVtc1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLyoqXG4gKiBFQUMzIEF0bW9zIGNvZGluZyBtb2RlLlxuICovXG5leHBvcnQgY2xhc3MgRWFjM0F0bW9zQ29kaW5nTW9kZSB7XG4gIC8qKiA1LjEuNCBzdXJyb3VuZCAqL1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IENPRElOR19NT0RFXzVfMV80ID0gbmV3IEVhYzNBdG1vc0NvZGluZ01vZGUoJ0NPRElOR19NT0RFXzVfMV80Jyk7XG4gIC8qKiA3LjEuNCBzdXJyb3VuZCAqL1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IENPRElOR19NT0RFXzdfMV80ID0gbmV3IEVhYzNBdG1vc0NvZGluZ01vZGUoJ0NPRElOR19NT0RFXzdfMV80Jyk7XG4gIC8qKiA5LjEuNiBzdXJyb3VuZCAqL1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IENPRElOR19NT0RFXzlfMV82ID0gbmV3IEVhYzNBdG1vc0NvZGluZ01vZGUoJ0NPRElOR19NT0RFXzlfMV82Jyk7XG5cbiAgLyoqIEEgdmFsdWUgbm90IHlldCBtb2RlbGxlZCBieSBBV1MgQ0RLLiAqL1xuICBwdWJsaWMgc3RhdGljIG9mKHZhbHVlOiBzdHJpbmcpOiBFYWMzQXRtb3NDb2RpbmdNb2RlIHtcbiAgICByZXR1cm4gbmV3IEVhYzNBdG1vc0NvZGluZ01vZGUodmFsdWUpO1xuICB9XG5cbiAgLyoqIFRoZSB1bmRlcmx5aW5nIHN0cmluZyB2YWx1ZSBwYXNzZWQgdG8gQ2xvdWRGb3JtYXRpb24uICovXG4gIHB1YmxpYyByZWFkb25seSB2YWx1ZTogc3RyaW5nO1xuXG4gIHByaXZhdGUgY29uc3RydWN0b3IodmFsdWU6IHN0cmluZykge1xuICAgIHRoaXMudmFsdWUgPSB2YWx1ZTtcbiAgfVxufVxuXG4vKipcbiAqIEVBQzMgQXRtb3MgRFJDIGxpbmUgbW9kZSBwcm9maWxlLlxuICovXG5leHBvcnQgY2xhc3MgRWFjM0F0bW9zRHJjTGluZSB7XG4gIC8qKiBGaWxtIGxpZ2h0ICovXG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgRklMTV9MSUdIVCA9IG5ldyBFYWMzQXRtb3NEcmNMaW5lKCdGSUxNX0xJR0hUJyk7XG4gIC8qKiBGaWxtIHN0YW5kYXJkICovXG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgRklMTV9TVEFOREFSRCA9IG5ldyBFYWMzQXRtb3NEcmNMaW5lKCdGSUxNX1NUQU5EQVJEJyk7XG4gIC8qKiBNdXNpYyBsaWdodCAqL1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IE1VU0lDX0xJR0hUID0gbmV3IEVhYzNBdG1vc0RyY0xpbmUoJ01VU0lDX0xJR0hUJyk7XG4gIC8qKiBNdXNpYyBzdGFuZGFyZCAqL1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IE1VU0lDX1NUQU5EQVJEID0gbmV3IEVhYzNBdG1vc0RyY0xpbmUoJ01VU0lDX1NUQU5EQVJEJyk7XG4gIC8qKiBOb25lICovXG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgTk9ORSA9IG5ldyBFYWMzQXRtb3NEcmNMaW5lKCdOT05FJyk7XG4gIC8qKiBTcGVlY2ggKi9cbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBTUEVFQ0ggPSBuZXcgRWFjM0F0bW9zRHJjTGluZSgnU1BFRUNIJyk7XG5cbiAgLyoqIEEgdmFsdWUgbm90IHlldCBtb2RlbGxlZCBieSBBV1MgQ0RLLiAqL1xuICBwdWJsaWMgc3RhdGljIG9mKHZhbHVlOiBzdHJpbmcpOiBFYWMzQXRtb3NEcmNMaW5lIHtcbiAgICByZXR1cm4gbmV3IEVhYzNBdG1vc0RyY0xpbmUodmFsdWUpO1xuICB9XG5cbiAgLyoqIFRoZSB1bmRlcmx5aW5nIHN0cmluZyB2YWx1ZSBwYXNzZWQgdG8gQ2xvdWRGb3JtYXRpb24uICovXG4gIHB1YmxpYyByZWFkb25seSB2YWx1ZTogc3RyaW5nO1xuXG4gIHByaXZhdGUgY29uc3RydWN0b3IodmFsdWU6IHN0cmluZykge1xuICAgIHRoaXMudmFsdWUgPSB2YWx1ZTtcbiAgfVxufVxuXG4vKipcbiAqIEVBQzMgQXRtb3MgRFJDIFJGIG1vZGUgcHJvZmlsZS5cbiAqL1xuZXhwb3J0IGNsYXNzIEVhYzNBdG1vc0RyY1JmIHtcbiAgLyoqIEZpbG0gbGlnaHQgKi9cbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBGSUxNX0xJR0hUID0gbmV3IEVhYzNBdG1vc0RyY1JmKCdGSUxNX0xJR0hUJyk7XG4gIC8qKiBGaWxtIHN0YW5kYXJkICovXG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgRklMTV9TVEFOREFSRCA9IG5ldyBFYWMzQXRtb3NEcmNSZignRklMTV9TVEFOREFSRCcpO1xuICAvKiogTXVzaWMgbGlnaHQgKi9cbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBNVVNJQ19MSUdIVCA9IG5ldyBFYWMzQXRtb3NEcmNSZignTVVTSUNfTElHSFQnKTtcbiAgLyoqIE11c2ljIHN0YW5kYXJkICovXG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgTVVTSUNfU1RBTkRBUkQgPSBuZXcgRWFjM0F0bW9zRHJjUmYoJ01VU0lDX1NUQU5EQVJEJyk7XG4gIC8qKiBOb25lICovXG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgTk9ORSA9IG5ldyBFYWMzQXRtb3NEcmNSZignTk9ORScpO1xuICAvKiogU3BlZWNoICovXG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgU1BFRUNIID0gbmV3IEVhYzNBdG1vc0RyY1JmKCdTUEVFQ0gnKTtcblxuICAvKiogQSB2YWx1ZSBub3QgeWV0IG1vZGVsbGVkIGJ5IEFXUyBDREsuICovXG4gIHB1YmxpYyBzdGF0aWMgb2YodmFsdWU6IHN0cmluZyk6IEVhYzNBdG1vc0RyY1JmIHtcbiAgICByZXR1cm4gbmV3IEVhYzNBdG1vc0RyY1JmKHZhbHVlKTtcbiAgfVxuXG4gIC8qKiBUaGUgdW5kZXJseWluZyBzdHJpbmcgdmFsdWUgcGFzc2VkIHRvIENsb3VkRm9ybWF0aW9uLiAqL1xuICBwdWJsaWMgcmVhZG9ubHkgdmFsdWU6IHN0cmluZztcblxuICBwcml2YXRlIGNvbnN0cnVjdG9yKHZhbHVlOiBzdHJpbmcpIHtcbiAgICB0aGlzLnZhbHVlID0gdmFsdWU7XG4gIH1cbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIE1QMiBlbnVtc1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLyoqXG4gKiBNUDIgY29kaW5nIG1vZGUuXG4gKi9cbmV4cG9ydCBjbGFzcyBNcDJDb2RpbmdNb2RlIHtcbiAgLyoqIDEuMCAobW9ubykgKi9cbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBDT0RJTkdfTU9ERV8xXzAgPSBuZXcgTXAyQ29kaW5nTW9kZSgnQ09ESU5HX01PREVfMV8wJyk7XG4gIC8qKiAyLjAgKHN0ZXJlbykgKi9cbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBDT0RJTkdfTU9ERV8yXzAgPSBuZXcgTXAyQ29kaW5nTW9kZSgnQ09ESU5HX01PREVfMl8wJyk7XG5cbiAgLyoqIEEgdmFsdWUgbm90IHlldCBtb2RlbGxlZCBieSBBV1MgQ0RLLiAqL1xuICBwdWJsaWMgc3RhdGljIG9mKHZhbHVlOiBzdHJpbmcpOiBNcDJDb2RpbmdNb2RlIHtcbiAgICByZXR1cm4gbmV3IE1wMkNvZGluZ01vZGUodmFsdWUpO1xuICB9XG5cbiAgLyoqIFRoZSB1bmRlcmx5aW5nIHN0cmluZyB2YWx1ZSBwYXNzZWQgdG8gQ2xvdWRGb3JtYXRpb24uICovXG4gIHB1YmxpYyByZWFkb25seSB2YWx1ZTogc3RyaW5nO1xuXG4gIHByaXZhdGUgY29uc3RydWN0b3IodmFsdWU6IHN0cmluZykge1xuICAgIHRoaXMudmFsdWUgPSB2YWx1ZTtcbiAgfVxufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gV0FWIGVudW1zXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4vKipcbiAqIFdBViBjb2RpbmcgbW9kZS5cbiAqL1xuZXhwb3J0IGNsYXNzIFdhdkNvZGluZ01vZGUge1xuICAvKiogMS4wIChtb25vKSAqL1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IENPRElOR19NT0RFXzFfMCA9IG5ldyBXYXZDb2RpbmdNb2RlKCdDT0RJTkdfTU9ERV8xXzAnKTtcbiAgLyoqIDIuMCAoc3RlcmVvKSAqL1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IENPRElOR19NT0RFXzJfMCA9IG5ldyBXYXZDb2RpbmdNb2RlKCdDT0RJTkdfTU9ERV8yXzAnKTtcbiAgLyoqIDQuMCAqL1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IENPRElOR19NT0RFXzRfMCA9IG5ldyBXYXZDb2RpbmdNb2RlKCdDT0RJTkdfTU9ERV80XzAnKTtcbiAgLyoqIDguMCAqL1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IENPRElOR19NT0RFXzhfMCA9IG5ldyBXYXZDb2RpbmdNb2RlKCdDT0RJTkdfTU9ERV84XzAnKTtcblxuICAvKiogQSB2YWx1ZSBub3QgeWV0IG1vZGVsbGVkIGJ5IEFXUyBDREsuICovXG4gIHB1YmxpYyBzdGF0aWMgb2YodmFsdWU6IHN0cmluZyk6IFdhdkNvZGluZ01vZGUge1xuICAgIHJldHVybiBuZXcgV2F2Q29kaW5nTW9kZSh2YWx1ZSk7XG4gIH1cblxuICAvKiogVGhlIHVuZGVybHlpbmcgc3RyaW5nIHZhbHVlIHBhc3NlZCB0byBDbG91ZEZvcm1hdGlvbi4gKi9cbiAgcHVibGljIHJlYWRvbmx5IHZhbHVlOiBzdHJpbmc7XG5cbiAgcHJpdmF0ZSBjb25zdHJ1Y3Rvcih2YWx1ZTogc3RyaW5nKSB7XG4gICAgdGhpcy52YWx1ZSA9IHZhbHVlO1xuICB9XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBQcm9wcyBpbnRlcmZhY2VzXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4vKipcbiAqIFByb3BlcnRpZXMgZm9yIEFBQyBjb2RlYyBzZXR0aW5ncy5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBBYWNTZXR0aW5nc1Byb3BzIHtcbiAgLyoqXG4gICAqIFRoZSBhdmVyYWdlIGJpdHJhdGUuXG4gICAqIEBkZWZhdWx0IEJpdHJhdGUua2JwcygxOTIpXG4gICAqL1xuICByZWFkb25seSBiaXRyYXRlPzogQml0cmF0ZTtcbiAgLyoqXG4gICAqIFRoZSBBQUMgcHJvZmlsZS5cbiAgICogQGRlZmF1bHQgQWFjUHJvZmlsZS5MQ1xuICAgKi9cbiAgcmVhZG9ubHkgcHJvZmlsZT86IEFhY1Byb2ZpbGU7XG4gIC8qKlxuICAgKiBUaGUgY29kaW5nIG1vZGUgKG1vbm8sIHN0ZXJlbywgNS4xKS5cbiAgICogQGRlZmF1bHQgQWFjQ29kaW5nTW9kZS5DT0RJTkdfTU9ERV8yXzBcbiAgICovXG4gIHJlYWRvbmx5IGNvZGluZ01vZGU/OiBBYWNDb2RpbmdNb2RlO1xuICAvKipcbiAgICogVGhlIHJhdGUgY29udHJvbCBtb2RlLlxuICAgKiBAZGVmYXVsdCBBYWNSYXRlQ29udHJvbE1vZGUuQ0JSXG4gICAqL1xuICByZWFkb25seSByYXRlQ29udHJvbE1vZGU/OiBBYWNSYXRlQ29udHJvbE1vZGU7XG4gIC8qKlxuICAgKiBUaGUgc2FtcGxlIHJhdGUuXG4gICAqIEBkZWZhdWx0IEF1ZGlvU2FtcGxlUmF0ZS5IWl80ODAwMFxuICAgKi9cbiAgcmVhZG9ubHkgc2FtcGxlUmF0ZT86IEF1ZGlvU2FtcGxlUmF0ZTtcbiAgLyoqXG4gICAqIFNldCB0byBicm9hZGNhc3Rlck1peGVkQWQgd2hlbiB0aGUgaW5wdXQgY29udGFpbnMgcHJlLW1peGVkIG1haW4gYXVkaW8gKyBBRCAobmFycmF0aW9uKSBhcyBhIHN0ZXJlbyBwYWlyLlxuICAgKiBAZGVmYXVsdCBBYWNJbnB1dFR5cGUuTk9STUFMXG4gICAqL1xuICByZWFkb25seSBpbnB1dFR5cGU/OiBBYWNJbnB1dFR5cGU7XG4gIC8qKlxuICAgKiBTZXRzIHRoZSBMQVRNL0xPQVMgQUFDIG91dHB1dCBmb3IgcmF3IGNvbnRhaW5lcnMuXG4gICAqIEBkZWZhdWx0IEFhY1Jhd0Zvcm1hdC5OT05FXG4gICAqL1xuICByZWFkb25seSByYXdGb3JtYXQ/OiBBYWNSYXdGb3JtYXQ7XG4gIC8qKlxuICAgKiBUaGUgQUFDIHNwZWNpZmljYXRpb24gKE1QRUctNCBvciBNUEVHLTIpIHVzZWQgdG8gZW5jb2RlIHRoZSBhdWRpby5cbiAgICpcbiAgICogU2V0IHRvIGBBYWNTcGVjLk1QRUcyYCB0byBlbWl0IE1QRUctMiBBQUMgaW5zdGVhZCBvZiBNUEVHLTQgQUFDIGZvciByYXcgb3IgTVBFRy0yIFRyYW5zcG9ydFxuICAgKiBTdHJlYW0gY29udGFpbmVycy5cbiAgICogQGRlZmF1bHQgQWFjU3BlYy5NUEVHNFxuICAgKi9cbiAgcmVhZG9ubHkgc3BlYz86IEFhY1NwZWM7XG4gIC8qKlxuICAgKiBUaGUgVkJSIHF1YWxpdHkgbGV2ZWwuIFVzZWQgb25seSBpZiByYXRlQ29udHJvbE1vZGUgaXMgVkJSLlxuICAgKiBAZGVmYXVsdCAtIHNlcnZpY2UgZGVmYXVsdFxuICAgKi9cbiAgcmVhZG9ubHkgdmJyUXVhbGl0eT86IEFhY1ZiclF1YWxpdHk7XG59XG5cbi8qKlxuICogUHJvcGVydGllcyBmb3IgQUMzIGNvZGVjIHNldHRpbmdzLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEFjM1NldHRpbmdzUHJvcHMge1xuICAvKipcbiAgICogVGhlIGF2ZXJhZ2UgYml0cmF0ZS5cbiAgICogQGRlZmF1bHQgLSBzZXJ2aWNlIGRlZmF1bHRcbiAgICovXG4gIHJlYWRvbmx5IGJpdHJhdGU/OiBCaXRyYXRlO1xuICAvKipcbiAgICogVGhlIERvbGJ5IERpZ2l0YWwgY29kaW5nIG1vZGUuXG4gICAqIEBkZWZhdWx0IEFjM0NvZGluZ01vZGUuQ09ESU5HX01PREVfMl8wXG4gICAqL1xuICByZWFkb25seSBjb2RpbmdNb2RlPzogQWMzQ29kaW5nTW9kZTtcbiAgLyoqXG4gICAqIFRoZSBkaWFsb2d1ZSBub3JtYWxpemF0aW9uIGxldmVsICgx4oCTMzEpLlxuICAgKiBAZGVmYXVsdCAtIHNlcnZpY2UgZGVmYXVsdFxuICAgKi9cbiAgcmVhZG9ubHkgZGlhbE5vcm0/OiBudW1iZXI7XG4gIC8qKlxuICAgKiBBcHBsaWVzIGEgMyBkQiBhdHRlbnVhdGlvbiB0byB0aGUgc3Vycm91bmQgY2hhbm5lbHMuIFVzZWQgb25seSBmb3IgdGhlIDMvMiBjb2RpbmcgbW9kZS5cbiAgICogQGRlZmF1bHQgLSBzZXJ2aWNlIGRlZmF1bHRcbiAgICovXG4gIHJlYWRvbmx5IGF0dGVudWF0aW9uQ29udHJvbD86IEFjM0F0dGVudWF0aW9uQ29udHJvbDtcbiAgLyoqXG4gICAqIFNwZWNpZmllcyB0aGUgYml0c3RyZWFtIG1vZGUgKGJzbW9kKSBmb3IgdGhlIGVtaXR0ZWQgQUMtMyBzdHJlYW0uXG4gICAqIEBkZWZhdWx0IEFjM0JpdHN0cmVhbU1vZGUuQ09NUExFVEVfTUFJTlxuICAgKi9cbiAgcmVhZG9ubHkgYml0c3RyZWFtTW9kZT86IEFjM0JpdHN0cmVhbU1vZGU7XG4gIC8qKlxuICAgKiBJZiBzZXQgdG8gZmlsbVN0YW5kYXJkLCBhZGRzIGR5bmFtaWMgcmFuZ2UgY29tcHJlc3Npb24gc2lnbmFsaW5nIHRvIHRoZSBvdXRwdXQgYml0c3RyZWFtLlxuICAgKiBAZGVmYXVsdCAtIHNlcnZpY2UgZGVmYXVsdFxuICAgKi9cbiAgcmVhZG9ubHkgZHJjUHJvZmlsZT86IEFjM0RyY1Byb2ZpbGU7XG4gIC8qKlxuICAgKiBXaGVuIHNldCB0byBlbmFibGVkLCBhcHBsaWVzIGEgMTIwSHogbG93cGFzcyBmaWx0ZXIgdG8gdGhlIExGRSBjaGFubmVsIHByaW9yIHRvIGVuY29kaW5nLlxuICAgKiBWYWxpZCBvbmx5IGluIGNvZGluZ01vZGUzMkxmZSBtb2RlLlxuICAgKiBAZGVmYXVsdCBBYzNMZmVGaWx0ZXIuRElTQUJMRURcbiAgICovXG4gIHJlYWRvbmx5IGxmZUZpbHRlcj86IEFjM0xmZUZpbHRlcjtcbiAgLyoqXG4gICAqIFdoZW4gc2V0IHRvIGZvbGxvd0lucHV0LCBlbmNvZGVyIG1ldGFkYXRhIGlzIHNvdXJjZWQgZnJvbSB0aGUgREQsIEREKywgb3IgRG9sYnlFIGRlY29kZXIgdGhhdCBzdXBwbGllcyB0aGlzIGF1ZGlvIGRhdGEuXG4gICAqIEBkZWZhdWx0IC0gc2VydmljZSBkZWZhdWx0XG4gICAqL1xuICByZWFkb25seSBtZXRhZGF0YUNvbnRyb2w/OiBBYzNNZXRhZGF0YUNvbnRyb2w7XG59XG5cbi8qKlxuICogUHJvcGVydGllcyBmb3IgRUFDMyBjb2RlYyBzZXR0aW5ncy5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBFYWMzU2V0dGluZ3NQcm9wcyB7XG4gIC8qKlxuICAgKiBUaGUgYXZlcmFnZSBiaXRyYXRlLlxuICAgKiBAZGVmYXVsdCAtIHNlcnZpY2UgZGVmYXVsdFxuICAgKi9cbiAgcmVhZG9ubHkgYml0cmF0ZT86IEJpdHJhdGU7XG4gIC8qKlxuICAgKiBUaGUgRG9sYnkgRGlnaXRhbCBQbHVzIGNvZGluZyBtb2RlLlxuICAgKiBAZGVmYXVsdCBFYWMzQ29kaW5nTW9kZS5DT0RJTkdfTU9ERV8zXzJcbiAgICovXG4gIHJlYWRvbmx5IGNvZGluZ01vZGU/OiBFYWMzQ29kaW5nTW9kZTtcbiAgLyoqXG4gICAqIFRoZSBkaWFsb2d1ZSBub3JtYWxpemF0aW9uIGxldmVsICgx4oCTMzEpLlxuICAgKiBAZGVmYXVsdCAtIHNlcnZpY2UgZGVmYXVsdFxuICAgKi9cbiAgcmVhZG9ubHkgZGlhbE5vcm0/OiBudW1iZXI7XG4gIC8qKlxuICAgKiBXaGVuIHNldCB0byBhdHRlbnVhdGUzRGIsIGFwcGxpZXMgYSAzIGRCIGF0dGVudWF0aW9uIHRvIHRoZSBzdXJyb3VuZCBjaGFubmVscy4gVXNlZCBvbmx5IGZvciB0aGUgMy8yIGNvZGluZyBtb2RlLlxuICAgKiBAZGVmYXVsdCBFYWMzQXR0ZW51YXRpb25Db250cm9sLk5PTkVcbiAgICovXG4gIHJlYWRvbmx5IGF0dGVudWF0aW9uQ29udHJvbD86IEVhYzNBdHRlbnVhdGlvbkNvbnRyb2w7XG4gIC8qKlxuICAgKiBTcGVjaWZpZXMgdGhlIGJpdHN0cmVhbSBtb2RlIChic21vZCkgZm9yIHRoZSBlbWl0dGVkIEUtQUMtMyBzdHJlYW0uXG4gICAqIEBkZWZhdWx0IEVhYzNCaXRzdHJlYW1Nb2RlLkNPTVBMRVRFX01BSU5cbiAgICovXG4gIHJlYWRvbmx5IGJpdHN0cmVhbU1vZGU/OiBFYWMzQml0c3RyZWFtTW9kZTtcbiAgLyoqXG4gICAqIFdoZW4gc2V0IHRvIGVuYWJsZWQsIGFjdGl2YXRlcyBhIERDIGhpZ2hwYXNzIGZpbHRlciBmb3IgYWxsIGlucHV0IGNoYW5uZWxzLlxuICAgKiBAZGVmYXVsdCAtIHNlcnZpY2UgZGVmYXVsdFxuICAgKi9cbiAgcmVhZG9ubHkgZGNGaWx0ZXI/OiBFYWMzRGNGaWx0ZXI7XG4gIC8qKlxuICAgKiBTZXRzIHRoZSBEb2xieSBkeW5hbWljIHJhbmdlIGNvbXByZXNzaW9uIHByb2ZpbGUuXG4gICAqIEBkZWZhdWx0IC0gc2VydmljZSBkZWZhdWx0XG4gICAqL1xuICByZWFkb25seSBkcmNMaW5lPzogRWFjM0RyY0xpbmU7XG4gIC8qKlxuICAgKiBTZXRzIHRoZSBwcm9maWxlIGZvciBoZWF2eSBEb2xieSBkeW5hbWljIHJhbmdlIGNvbXByZXNzaW9uLCBlbnN1cmluZyB0aGF0IHRoZSBpbnN0YW50YW5lb3VzIHNpZ25hbCBwZWFrcyBkbyBub3QgZXhjZWVkIHNwZWNpZmllZCBsZXZlbHMuXG4gICAqIEBkZWZhdWx0IC0gc2VydmljZSBkZWZhdWx0XG4gICAqL1xuICByZWFkb25seSBkcmNSZj86IEVhYzNEcmNSZjtcbiAgLyoqXG4gICAqIFdoZW4gZW5jb2RpbmcgMy8yIGF1ZGlvLCBzZXR0aW5nIHRvIGxmZSBlbmFibGVzIHRoZSBMRkUgY2hhbm5lbC5cbiAgICogQGRlZmF1bHQgLSBzZXJ2aWNlIGRlZmF1bHRcbiAgICovXG4gIHJlYWRvbmx5IGxmZUNvbnRyb2w/OiBFYWMzTGZlQ29udHJvbDtcbiAgLyoqXG4gICAqIFdoZW4gc2V0IHRvIGVuYWJsZWQsIGFwcGxpZXMgYSAxMjBIeiBsb3dwYXNzIGZpbHRlciB0byB0aGUgTEZFIGNoYW5uZWwgcHJpb3IgdG8gZW5jb2RpbmcuXG4gICAqIFZhbGlkIG9ubHkgd2l0aCBhIGNvZGluZ01vZGUzMiBjb2RpbmcgbW9kZS5cbiAgICogQGRlZmF1bHQgLSBzZXJ2aWNlIGRlZmF1bHRcbiAgICovXG4gIHJlYWRvbmx5IGxmZUZpbHRlcj86IEVhYzNMZmVGaWx0ZXI7XG4gIC8qKlxuICAgKiBUaGUgTGVmdCBvbmx5L1JpZ2h0IG9ubHkgY2VudGVyIG1peCBsZXZlbC4gVXNlZCBvbmx5IGZvciB0aGUgMy8yIGNvZGluZyBtb2RlLlxuICAgKiBAZGVmYXVsdCAtIHNlcnZpY2UgZGVmYXVsdFxuICAgKi9cbiAgcmVhZG9ubHkgbG9Sb0NlbnRlck1peExldmVsPzogbnVtYmVyO1xuICAvKipcbiAgICogVGhlIExlZnQgb25seS9SaWdodCBvbmx5IHN1cnJvdW5kIG1peCBsZXZlbC4gVXNlZCBvbmx5IGZvciBhIDMvMiBjb2RpbmcgbW9kZS5cbiAgICogQGRlZmF1bHQgLSBzZXJ2aWNlIGRlZmF1bHRcbiAgICovXG4gIHJlYWRvbmx5IGxvUm9TdXJyb3VuZE1peExldmVsPzogbnVtYmVyO1xuICAvKipcbiAgICogVGhlIExlZnQgdG90YWwvUmlnaHQgdG90YWwgY2VudGVyIG1peCBsZXZlbC4gVXNlZCBvbmx5IGZvciBhIDMvMiBjb2RpbmcgbW9kZS5cbiAgICogQGRlZmF1bHQgLSBzZXJ2aWNlIGRlZmF1bHRcbiAgICovXG4gIHJlYWRvbmx5IGx0UnRDZW50ZXJNaXhMZXZlbD86IG51bWJlcjtcbiAgLyoqXG4gICAqIFRoZSBMZWZ0IHRvdGFsL1JpZ2h0IHRvdGFsIHN1cnJvdW5kIG1peCBsZXZlbC4gVXNlZCBvbmx5IGZvciB0aGUgMy8yIGNvZGluZyBtb2RlLlxuICAgKiBAZGVmYXVsdCAtIHNlcnZpY2UgZGVmYXVsdFxuICAgKi9cbiAgcmVhZG9ubHkgbHRSdFN1cnJvdW5kTWl4TGV2ZWw/OiBudW1iZXI7XG4gIC8qKlxuICAgKiBXaGVuIHNldCB0byBmb2xsb3dJbnB1dCwgZW5jb2RlciBtZXRhZGF0YSBpcyBzb3VyY2VkIGZyb20gdGhlIERELCBERCssIG9yIERvbGJ5RSBkZWNvZGVyIHRoYXQgc3VwcGxpZXMgdGhpcyBhdWRpbyBkYXRhLlxuICAgKiBAZGVmYXVsdCAtIHNlcnZpY2UgZGVmYXVsdFxuICAgKi9cbiAgcmVhZG9ubHkgbWV0YWRhdGFDb250cm9sPzogRWFjM01ldGFkYXRhQ29udHJvbDtcbiAgLyoqXG4gICAqIFdoZW4gc2V0IHRvIHdoZW5Qb3NzaWJsZSwgaW5wdXQgREQrIGF1ZGlvIHdpbGwgYmUgcGFzc2VkIHRocm91Z2ggaWYgaXQgaXMgcHJlc2VudCBvbiB0aGUgaW5wdXQuXG4gICAqIEBkZWZhdWx0IC0gc2VydmljZSBkZWZhdWx0XG4gICAqL1xuICByZWFkb25seSBwYXNzdGhyb3VnaENvbnRyb2w/OiBFYWMzUGFzc3Rocm91Z2hDb250cm9sO1xuICAvKipcbiAgICogV2hlbiBzZXQgdG8gc2hpZnQ5MERlZ3JlZXMsIGFwcGxpZXMgYSA5MC1kZWdyZWUgcGhhc2Ugc2hpZnQgdG8gdGhlIHN1cnJvdW5kIGNoYW5uZWxzLiBVc2VkIG9ubHkgZm9yIGEgMy8yIGNvZGluZyBtb2RlLlxuICAgKiBAZGVmYXVsdCAtIHNlcnZpY2UgZGVmYXVsdFxuICAgKi9cbiAgcmVhZG9ubHkgcGhhc2VDb250cm9sPzogRWFjM1BoYXNlQ29udHJvbDtcbiAgLyoqXG4gICAqIEEgc3RlcmVvIGRvd25taXggcHJlZmVyZW5jZS4gVXNlZCBvbmx5IGZvciB0aGUgMy8yIGNvZGluZyBtb2RlLlxuICAgKiBAZGVmYXVsdCAtIHNlcnZpY2UgZGVmYXVsdFxuICAgKi9cbiAgcmVhZG9ubHkgc3RlcmVvRG93bm1peD86IEVhYzNTdGVyZW9Eb3dubWl4O1xuICAvKipcbiAgICogV2hlbiBlbmNvZGluZyAzLzIgYXVkaW8sIHNldHMgd2hldGhlciBhbiBleHRyYSBjZW50ZXIgYmFjayBzdXJyb3VuZCBjaGFubmVsIGlzIG1hdHJpeCBlbmNvZGVkIGludG8gdGhlIGxlZnQgYW5kIHJpZ2h0IHN1cnJvdW5kIGNoYW5uZWxzLlxuICAgKiBAZGVmYXVsdCAtIHNlcnZpY2UgZGVmYXVsdFxuICAgKi9cbiAgcmVhZG9ubHkgc3Vycm91bmRFeE1vZGU/OiBFYWMzU3Vycm91bmRFeE1vZGU7XG4gIC8qKlxuICAgKiBXaGVuIGVuY29kaW5nIDIvMCBhdWRpbywgc2V0cyB3aGV0aGVyIERvbGJ5IFN1cnJvdW5kIGlzIG1hdHJpeC1lbmNvZGVkIGludG8gdGhlIHR3byBjaGFubmVscy5cbiAgICogQGRlZmF1bHQgLSBzZXJ2aWNlIGRlZmF1bHRcbiAgICovXG4gIHJlYWRvbmx5IHN1cnJvdW5kTW9kZT86IEVhYzNTdXJyb3VuZE1vZGU7XG59XG5cbi8qKlxuICogUHJvcGVydGllcyBmb3IgRUFDMyBBdG1vcyBjb2RlYyBzZXR0aW5ncy5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBFYWMzQXRtb3NTZXR0aW5nc1Byb3BzIHtcbiAgLyoqXG4gICAqIFRoZSBhdmVyYWdlIGJpdHJhdGUuXG4gICAqIEBkZWZhdWx0IC0gc2VydmljZSBkZWZhdWx0XG4gICAqL1xuICByZWFkb25seSBiaXRyYXRlPzogQml0cmF0ZTtcbiAgLyoqXG4gICAqIFRoZSBjb2RpbmcgbW9kZSAoZS5nLiBDT0RJTkdfTU9ERV81XzFfNCwgQ09ESU5HX01PREVfN18xXzQsIENPRElOR19NT0RFXzlfMV82KS5cbiAgICogQGRlZmF1bHQgRWFjM0F0bW9zQ29kaW5nTW9kZS5DT0RJTkdfTU9ERV81XzFfNFxuICAgKi9cbiAgcmVhZG9ubHkgY29kaW5nTW9kZT86IEVhYzNBdG1vc0NvZGluZ01vZGU7XG4gIC8qKlxuICAgKiBUaGUgZGlhbG9ndWUgbm9ybWFsaXphdGlvbiBsZXZlbCAoMeKAkzMxKS5cbiAgICogQGRlZmF1bHQgLSBzZXJ2aWNlIGRlZmF1bHRcbiAgICovXG4gIHJlYWRvbmx5IGRpYWxOb3JtPzogbnVtYmVyO1xuICAvKipcbiAgICogU2V0cyB0aGUgRG9sYnkgZHluYW1pYyByYW5nZSBjb21wcmVzc2lvbiBsaW5lIG1vZGUgcHJvZmlsZS5cbiAgICogQGRlZmF1bHQgLSBzZXJ2aWNlIGRlZmF1bHRcbiAgICovXG4gIHJlYWRvbmx5IGRyY0xpbmU/OiBFYWMzQXRtb3NEcmNMaW5lO1xuICAvKipcbiAgICogU2V0cyB0aGUgRG9sYnkgZHluYW1pYyByYW5nZSBjb21wcmVzc2lvbiBSRiBtb2RlIHByb2ZpbGUuXG4gICAqIEBkZWZhdWx0IC0gc2VydmljZSBkZWZhdWx0XG4gICAqL1xuICByZWFkb25seSBkcmNSZj86IEVhYzNBdG1vc0RyY1JmO1xuICAvKipcbiAgICogSGVpZ2h0IGNoYW5uZWwgdHJpbSBsZXZlbC5cbiAgICogQGRlZmF1bHQgLSBzZXJ2aWNlIGRlZmF1bHRcbiAgICovXG4gIHJlYWRvbmx5IGhlaWdodFRyaW0/OiBudW1iZXI7XG4gIC8qKlxuICAgKiBTdXJyb3VuZCBjaGFubmVsIHRyaW0gbGV2ZWwuXG4gICAqIEBkZWZhdWx0IC0gc2VydmljZSBkZWZhdWx0XG4gICAqL1xuICByZWFkb25seSBzdXJyb3VuZFRyaW0/OiBudW1iZXI7XG59XG5cbi8qKlxuICogUHJvcGVydGllcyBmb3IgTVAyIGNvZGVjIHNldHRpbmdzLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIE1wMlNldHRpbmdzUHJvcHMge1xuICAvKipcbiAgICogVGhlIGF2ZXJhZ2UgYml0cmF0ZS5cbiAgICogQGRlZmF1bHQgLSBzZXJ2aWNlIGRlZmF1bHRcbiAgICovXG4gIHJlYWRvbmx5IGJpdHJhdGU/OiBCaXRyYXRlO1xuICAvKipcbiAgICogVGhlIE1QRUcyIEF1ZGlvIGNvZGluZyBtb2RlLlxuICAgKiBAZGVmYXVsdCBNcDJDb2RpbmdNb2RlLkNPRElOR19NT0RFXzJfMFxuICAgKi9cbiAgcmVhZG9ubHkgY29kaW5nTW9kZT86IE1wMkNvZGluZ01vZGU7XG4gIC8qKlxuICAgKiBUaGUgc2FtcGxlIHJhdGUuXG4gICAqIEBkZWZhdWx0IEF1ZGlvU2FtcGxlUmF0ZS5IWl80ODAwMFxuICAgKi9cbiAgcmVhZG9ubHkgc2FtcGxlUmF0ZT86IEF1ZGlvU2FtcGxlUmF0ZTtcbn1cblxuLyoqXG4gKiBQcm9wZXJ0aWVzIGZvciBXQVYgY29kZWMgc2V0dGluZ3MuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgV2F2U2V0dGluZ3NQcm9wcyB7XG4gIC8qKlxuICAgKiBUaGUgYml0IGRlcHRoIG9mIHRoZSBXQVYgb3V0cHV0LlxuICAgKiBAZGVmYXVsdCBBdWRpb0JpdERlcHRoLkRFUFRIXzE2XG4gICAqL1xuICByZWFkb25seSBiaXREZXB0aD86IEF1ZGlvQml0RGVwdGg7XG4gIC8qKlxuICAgKiBUaGUgYXVkaW8gY29kaW5nIG1vZGUgZm9yIHRoZSBXQVYgYXVkaW8uXG4gICAqIEBkZWZhdWx0IFdhdkNvZGluZ01vZGUuQ09ESU5HX01PREVfMl8wXG4gICAqL1xuICByZWFkb25seSBjb2RpbmdNb2RlPzogV2F2Q29kaW5nTW9kZTtcbiAgLyoqXG4gICAqIFRoZSBzYW1wbGUgcmF0ZS5cbiAgICogQGRlZmF1bHQgQXVkaW9TYW1wbGVSYXRlLkhaXzQ4MDAwXG4gICAqL1xuICByZWFkb25seSBzYW1wbGVSYXRlPzogQXVkaW9TYW1wbGVSYXRlO1xufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gQWJzdHJhY3QgY2xhc3MgYW5kIGltcGxlbWVudGF0aW9uc1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLyoqXG4gKiBBdWRpbyBjb2RlYyBzZXR0aW5ncy4gVXNlIHRoZSBzdGF0aWMgZmFjdG9yeSBtZXRob2RzIHRvIGNyZWF0ZS5cbiAqL1xuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEF1ZGlvQ29kZWNTZXR0aW5ncyB7XG4gIC8qKlxuICAgKiBDcmVhdGUgQUFDIGNvZGVjIHNldHRpbmdzLlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBhYWMocHJvcHM/OiBBYWNTZXR0aW5nc1Byb3BzKTogQXVkaW9Db2RlY1NldHRpbmdzIHtcbiAgICByZXR1cm4gbmV3IEFhY0F1ZGlvQ29kZWNTZXR0aW5ncyhwcm9wcyA/PyB7fSk7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlIEFDMyBjb2RlYyBzZXR0aW5ncy5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgYWMzKHByb3BzPzogQWMzU2V0dGluZ3NQcm9wcyk6IEF1ZGlvQ29kZWNTZXR0aW5ncyB7XG4gICAgcmV0dXJuIG5ldyBBYzNBdWRpb0NvZGVjU2V0dGluZ3MocHJvcHMgPz8ge30pO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZSBFQUMzIChEb2xieSBEaWdpdGFsIFBsdXMpIGNvZGVjIHNldHRpbmdzLlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBlYWMzKHByb3BzPzogRWFjM1NldHRpbmdzUHJvcHMpOiBBdWRpb0NvZGVjU2V0dGluZ3Mge1xuICAgIHJldHVybiBuZXcgRWFjM0F1ZGlvQ29kZWNTZXR0aW5ncyhwcm9wcyA/PyB7fSk7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlIEVBQzMgQXRtb3MgKERvbGJ5IERpZ2l0YWwgUGx1cyB3aXRoIEF0bW9zKSBjb2RlYyBzZXR0aW5ncy5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgZWFjM0F0bW9zKHByb3BzPzogRWFjM0F0bW9zU2V0dGluZ3NQcm9wcyk6IEF1ZGlvQ29kZWNTZXR0aW5ncyB7XG4gICAgcmV0dXJuIG5ldyBFYWMzQXRtb3NBdWRpb0NvZGVjU2V0dGluZ3MocHJvcHMgPz8ge30pO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZSBNUDIgY29kZWMgc2V0dGluZ3MuXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIG1wMihwcm9wcz86IE1wMlNldHRpbmdzUHJvcHMpOiBBdWRpb0NvZGVjU2V0dGluZ3Mge1xuICAgIHJldHVybiBuZXcgTXAyQXVkaW9Db2RlY1NldHRpbmdzKHByb3BzID8/IHt9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGUgV0FWIGNvZGVjIHNldHRpbmdzLlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyB3YXYocHJvcHM/OiBXYXZTZXR0aW5nc1Byb3BzKTogQXVkaW9Db2RlY1NldHRpbmdzIHtcbiAgICByZXR1cm4gbmV3IFdhdkF1ZGlvQ29kZWNTZXR0aW5ncyhwcm9wcyA/PyB7fSk7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlIHBhc3N0aHJvdWdoIGF1ZGlvIHNldHRpbmdzIChubyB0cmFuc2NvZGluZykuXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIHBhc3N0aHJvdWdoKCk6IEF1ZGlvQ29kZWNTZXR0aW5ncyB7XG4gICAgcmV0dXJuIG5ldyBQYXNzdGhyb3VnaEF1ZGlvQ29kZWNTZXR0aW5ncygpO1xuICB9XG5cbiAgLyoqIEBpbnRlcm5hbCAqL1xuICBwdWJsaWMgYWJzdHJhY3QgcmVhZG9ubHkgX2NvZGVjVHlwZTogQXVkaW9Db2RlY1R5cGU7XG4gIC8qKiBAaW50ZXJuYWwgKi9cbiAgcHVibGljIGFic3RyYWN0IF9iaW5kKCk6IENmbkNoYW5uZWwuQXVkaW9Db2RlY1NldHRpbmdzUHJvcGVydHk7XG59XG5cbi8qKiBAaW50ZXJuYWwgKi9cbmNsYXNzIEFhY0F1ZGlvQ29kZWNTZXR0aW5ncyBleHRlbmRzIEF1ZGlvQ29kZWNTZXR0aW5ncyB7XG4gIHB1YmxpYyByZWFkb25seSBfY29kZWNUeXBlID0gQXVkaW9Db2RlY1R5cGUuQUFDO1xuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlYWRvbmx5IHByb3BzOiBBYWNTZXR0aW5nc1Byb3BzKSB7XG4gICAgc3VwZXIoKTtcbiAgfVxuXG4gIHB1YmxpYyBfYmluZCgpOiBDZm5DaGFubmVsLkF1ZGlvQ29kZWNTZXR0aW5nc1Byb3BlcnR5IHtcbiAgICBjb25zdCBwID0gdGhpcy5wcm9wcztcbiAgICByZXR1cm4ge1xuICAgICAgYWFjU2V0dGluZ3M6IHtcbiAgICAgICAgYml0cmF0ZTogcC5iaXRyYXRlPy50b0JwcygpID8/IDE5MjAwMCxcbiAgICAgICAgcHJvZmlsZTogKHAucHJvZmlsZSA/PyBBYWNQcm9maWxlLkxDKS52YWx1ZSxcbiAgICAgICAgY29kaW5nTW9kZTogKHAuY29kaW5nTW9kZSA/PyBBYWNDb2RpbmdNb2RlLkNPRElOR19NT0RFXzJfMCkudmFsdWUsXG4gICAgICAgIHJhdGVDb250cm9sTW9kZTogKHAucmF0ZUNvbnRyb2xNb2RlID8/IEFhY1JhdGVDb250cm9sTW9kZS5DQlIpLnZhbHVlLFxuICAgICAgICBzYW1wbGVSYXRlOiAocC5zYW1wbGVSYXRlID8/IEF1ZGlvU2FtcGxlUmF0ZS5IWl80ODAwMCkuX3RvSHooKSxcbiAgICAgICAgcmF3Rm9ybWF0OiAocC5yYXdGb3JtYXQgPz8gQWFjUmF3Rm9ybWF0Lk5PTkUpLnZhbHVlLFxuICAgICAgICBzcGVjOiAocC5zcGVjID8/IEFhY1NwZWMuTVBFRzQpLnZhbHVlLFxuICAgICAgICBpbnB1dFR5cGU6IChwLmlucHV0VHlwZSA/PyBBYWNJbnB1dFR5cGUuTk9STUFMKS52YWx1ZSxcbiAgICAgICAgdmJyUXVhbGl0eTogcC52YnJRdWFsaXR5Py52YWx1ZSxcbiAgICAgIH0sXG4gICAgfTtcbiAgfVxufVxuXG4vKiogQGludGVybmFsICovXG5jbGFzcyBBYzNBdWRpb0NvZGVjU2V0dGluZ3MgZXh0ZW5kcyBBdWRpb0NvZGVjU2V0dGluZ3Mge1xuICBwdWJsaWMgcmVhZG9ubHkgX2NvZGVjVHlwZSA9IEF1ZGlvQ29kZWNUeXBlLkFDMztcbiAgY29uc3RydWN0b3IocHJpdmF0ZSByZWFkb25seSBwcm9wczogQWMzU2V0dGluZ3NQcm9wcykge1xuICAgIHN1cGVyKCk7XG4gIH1cblxuICBwdWJsaWMgX2JpbmQoKTogQ2ZuQ2hhbm5lbC5BdWRpb0NvZGVjU2V0dGluZ3NQcm9wZXJ0eSB7XG4gICAgY29uc3QgcCA9IHRoaXMucHJvcHM7XG4gICAgcmV0dXJuIHtcbiAgICAgIGFjM1NldHRpbmdzOiB7XG4gICAgICAgIGJpdHJhdGU6IHAuYml0cmF0ZT8udG9CcHMoKSxcbiAgICAgICAgY29kaW5nTW9kZTogKHAuY29kaW5nTW9kZSA/PyBBYzNDb2RpbmdNb2RlLkNPRElOR19NT0RFXzJfMCkudmFsdWUsXG4gICAgICAgIGRpYWxub3JtOiBwLmRpYWxOb3JtLFxuICAgICAgICBhdHRlbnVhdGlvbkNvbnRyb2w6IHAuYXR0ZW51YXRpb25Db250cm9sPy52YWx1ZSxcbiAgICAgICAgYml0c3RyZWFtTW9kZTogKHAuYml0c3RyZWFtTW9kZSA/PyBBYzNCaXRzdHJlYW1Nb2RlLkNPTVBMRVRFX01BSU4pLnZhbHVlLFxuICAgICAgICBkcmNQcm9maWxlOiBwLmRyY1Byb2ZpbGU/LnZhbHVlLFxuICAgICAgICBsZmVGaWx0ZXI6IChwLmxmZUZpbHRlciA/PyBBYzNMZmVGaWx0ZXIuRElTQUJMRUQpLnZhbHVlLFxuICAgICAgICBtZXRhZGF0YUNvbnRyb2w6IHAubWV0YWRhdGFDb250cm9sPy52YWx1ZSxcbiAgICAgIH0sXG4gICAgfTtcbiAgfVxufVxuXG4vKiogQGludGVybmFsICovXG5jbGFzcyBFYWMzQXVkaW9Db2RlY1NldHRpbmdzIGV4dGVuZHMgQXVkaW9Db2RlY1NldHRpbmdzIHtcbiAgcHVibGljIHJlYWRvbmx5IF9jb2RlY1R5cGUgPSBBdWRpb0NvZGVjVHlwZS5FQUMzO1xuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlYWRvbmx5IHByb3BzOiBFYWMzU2V0dGluZ3NQcm9wcykge1xuICAgIHN1cGVyKCk7XG4gIH1cblxuICBwdWJsaWMgX2JpbmQoKTogQ2ZuQ2hhbm5lbC5BdWRpb0NvZGVjU2V0dGluZ3NQcm9wZXJ0eSB7XG4gICAgY29uc3QgcCA9IHRoaXMucHJvcHM7XG4gICAgcmV0dXJuIHtcbiAgICAgIGVhYzNTZXR0aW5nczoge1xuICAgICAgICBiaXRyYXRlOiBwLmJpdHJhdGU/LnRvQnBzKCksXG4gICAgICAgIGNvZGluZ01vZGU6IChwLmNvZGluZ01vZGUgPz8gRWFjM0NvZGluZ01vZGUuQ09ESU5HX01PREVfM18yKS52YWx1ZSxcbiAgICAgICAgZGlhbG5vcm06IHAuZGlhbE5vcm0sXG4gICAgICAgIGF0dGVudWF0aW9uQ29udHJvbDogKHAuYXR0ZW51YXRpb25Db250cm9sID8/IEVhYzNBdHRlbnVhdGlvbkNvbnRyb2wuTk9ORSkudmFsdWUsXG4gICAgICAgIGJpdHN0cmVhbU1vZGU6IChwLmJpdHN0cmVhbU1vZGUgPz8gRWFjM0JpdHN0cmVhbU1vZGUuQ09NUExFVEVfTUFJTikudmFsdWUsXG4gICAgICAgIGRjRmlsdGVyOiBwLmRjRmlsdGVyPy52YWx1ZSxcbiAgICAgICAgZHJjTGluZTogcC5kcmNMaW5lPy52YWx1ZSxcbiAgICAgICAgZHJjUmY6IHAuZHJjUmY/LnZhbHVlLFxuICAgICAgICBsZmVDb250cm9sOiBwLmxmZUNvbnRyb2w/LnZhbHVlLFxuICAgICAgICBsZmVGaWx0ZXI6IHAubGZlRmlsdGVyPy52YWx1ZSxcbiAgICAgICAgbG9Sb0NlbnRlck1peExldmVsOiBwLmxvUm9DZW50ZXJNaXhMZXZlbCxcbiAgICAgICAgbG9Sb1N1cnJvdW5kTWl4TGV2ZWw6IHAubG9Sb1N1cnJvdW5kTWl4TGV2ZWwsXG4gICAgICAgIGx0UnRDZW50ZXJNaXhMZXZlbDogcC5sdFJ0Q2VudGVyTWl4TGV2ZWwsXG4gICAgICAgIGx0UnRTdXJyb3VuZE1peExldmVsOiBwLmx0UnRTdXJyb3VuZE1peExldmVsLFxuICAgICAgICBtZXRhZGF0YUNvbnRyb2w6IHAubWV0YWRhdGFDb250cm9sPy52YWx1ZSxcbiAgICAgICAgcGFzc3Rocm91Z2hDb250cm9sOiBwLnBhc3N0aHJvdWdoQ29udHJvbD8udmFsdWUsXG4gICAgICAgIHBoYXNlQ29udHJvbDogcC5waGFzZUNvbnRyb2w/LnZhbHVlLFxuICAgICAgICBzdGVyZW9Eb3dubWl4OiBwLnN0ZXJlb0Rvd25taXg/LnZhbHVlLFxuICAgICAgICBzdXJyb3VuZEV4TW9kZTogcC5zdXJyb3VuZEV4TW9kZT8udmFsdWUsXG4gICAgICAgIHN1cnJvdW5kTW9kZTogcC5zdXJyb3VuZE1vZGU/LnZhbHVlLFxuICAgICAgfSxcbiAgICB9O1xuICB9XG59XG5cbi8qKiBAaW50ZXJuYWwgKi9cbmNsYXNzIEVhYzNBdG1vc0F1ZGlvQ29kZWNTZXR0aW5ncyBleHRlbmRzIEF1ZGlvQ29kZWNTZXR0aW5ncyB7XG4gIHB1YmxpYyByZWFkb25seSBfY29kZWNUeXBlID0gQXVkaW9Db2RlY1R5cGUuRUFDM19BVE1PUztcbiAgY29uc3RydWN0b3IocHJpdmF0ZSByZWFkb25seSBwcm9wczogRWFjM0F0bW9zU2V0dGluZ3NQcm9wcykge1xuICAgIHN1cGVyKCk7XG4gIH1cblxuICBwdWJsaWMgX2JpbmQoKTogQ2ZuQ2hhbm5lbC5BdWRpb0NvZGVjU2V0dGluZ3NQcm9wZXJ0eSB7XG4gICAgY29uc3QgcCA9IHRoaXMucHJvcHM7XG4gICAgcmV0dXJuIHtcbiAgICAgIGVhYzNBdG1vc1NldHRpbmdzOiB7XG4gICAgICAgIGJpdHJhdGU6IHAuYml0cmF0ZT8udG9CcHMoKSxcbiAgICAgICAgY29kaW5nTW9kZTogKHAuY29kaW5nTW9kZSA/PyBFYWMzQXRtb3NDb2RpbmdNb2RlLkNPRElOR19NT0RFXzVfMV80KS52YWx1ZSxcbiAgICAgICAgZGlhbG5vcm06IHAuZGlhbE5vcm0sXG4gICAgICAgIGRyY0xpbmU6IHAuZHJjTGluZT8udmFsdWUsXG4gICAgICAgIGRyY1JmOiBwLmRyY1JmPy52YWx1ZSxcbiAgICAgICAgaGVpZ2h0VHJpbTogcC5oZWlnaHRUcmltLFxuICAgICAgICBzdXJyb3VuZFRyaW06IHAuc3Vycm91bmRUcmltLFxuICAgICAgfSxcbiAgICB9O1xuICB9XG59XG5cbi8qKiBAaW50ZXJuYWwgKi9cbmNsYXNzIE1wMkF1ZGlvQ29kZWNTZXR0aW5ncyBleHRlbmRzIEF1ZGlvQ29kZWNTZXR0aW5ncyB7XG4gIHB1YmxpYyByZWFkb25seSBfY29kZWNUeXBlID0gQXVkaW9Db2RlY1R5cGUuTVAyO1xuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlYWRvbmx5IHByb3BzOiBNcDJTZXR0aW5nc1Byb3BzKSB7XG4gICAgc3VwZXIoKTtcbiAgfVxuXG4gIHB1YmxpYyBfYmluZCgpOiBDZm5DaGFubmVsLkF1ZGlvQ29kZWNTZXR0aW5nc1Byb3BlcnR5IHtcbiAgICBjb25zdCBwID0gdGhpcy5wcm9wcztcbiAgICByZXR1cm4ge1xuICAgICAgbXAyU2V0dGluZ3M6IHtcbiAgICAgICAgYml0cmF0ZTogcC5iaXRyYXRlPy50b0JwcygpLFxuICAgICAgICBjb2RpbmdNb2RlOiAocC5jb2RpbmdNb2RlID8/IE1wMkNvZGluZ01vZGUuQ09ESU5HX01PREVfMl8wKS52YWx1ZSxcbiAgICAgICAgc2FtcGxlUmF0ZTogKHAuc2FtcGxlUmF0ZSA/PyBBdWRpb1NhbXBsZVJhdGUuSFpfNDgwMDApLl90b0h6KCksXG4gICAgICB9LFxuICAgIH07XG4gIH1cbn1cblxuLyoqIEBpbnRlcm5hbCAqL1xuY2xhc3MgV2F2QXVkaW9Db2RlY1NldHRpbmdzIGV4dGVuZHMgQXVkaW9Db2RlY1NldHRpbmdzIHtcbiAgcHVibGljIHJlYWRvbmx5IF9jb2RlY1R5cGUgPSBBdWRpb0NvZGVjVHlwZS5XQVY7XG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgcHJvcHM6IFdhdlNldHRpbmdzUHJvcHMpIHtcbiAgICBzdXBlcigpO1xuICB9XG5cbiAgcHVibGljIF9iaW5kKCk6IENmbkNoYW5uZWwuQXVkaW9Db2RlY1NldHRpbmdzUHJvcGVydHkge1xuICAgIGNvbnN0IHAgPSB0aGlzLnByb3BzO1xuICAgIHJldHVybiB7XG4gICAgICB3YXZTZXR0aW5nczoge1xuICAgICAgICBiaXREZXB0aDogKHAuYml0RGVwdGggPz8gQXVkaW9CaXREZXB0aC5ERVBUSF8xNikuX3RvQml0cygpLFxuICAgICAgICBjb2RpbmdNb2RlOiAocC5jb2RpbmdNb2RlID8/IFdhdkNvZGluZ01vZGUuQ09ESU5HX01PREVfMl8wKS52YWx1ZSxcbiAgICAgICAgc2FtcGxlUmF0ZTogKHAuc2FtcGxlUmF0ZSA/PyBBdWRpb1NhbXBsZVJhdGUuSFpfNDgwMDApLl90b0h6KCksXG4gICAgICB9LFxuICAgIH07XG4gIH1cbn1cblxuLyoqIEBpbnRlcm5hbCAqL1xuY2xhc3MgUGFzc3Rocm91Z2hBdWRpb0NvZGVjU2V0dGluZ3MgZXh0ZW5kcyBBdWRpb0NvZGVjU2V0dGluZ3Mge1xuICBwdWJsaWMgcmVhZG9ubHkgX2NvZGVjVHlwZSA9IEF1ZGlvQ29kZWNUeXBlLlBBU1NUSFJPVUdIO1xuICBwdWJsaWMgX2JpbmQoKTogQ2ZuQ2hhbm5lbC5BdWRpb0NvZGVjU2V0dGluZ3NQcm9wZXJ0eSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHBhc3NUaHJvdWdoU2V0dGluZ3M6IHt9LFxuICAgIH07XG4gIH1cbn1cbiJdfQ==
|