occam-verify-cli 1.0.281 → 1.0.285
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/lib/context/file.js +51 -9
- package/lib/context/local.js +11 -6
- package/lib/context/release.js +11 -11
- package/lib/dom/axiom.js +18 -18
- package/lib/dom/conclusion.js +16 -9
- package/lib/dom/conjecture.js +4 -4
- package/lib/dom/constructor/bracketed.js +3 -3
- package/lib/dom/constructor.js +3 -3
- package/lib/dom/declaration/combinator.js +14 -7
- package/lib/dom/declaration/complexType.js +28 -21
- package/lib/dom/declaration/constructor.js +18 -11
- package/lib/dom/declaration/metavariable.js +19 -12
- package/lib/dom/declaration/simpleType.js +21 -14
- package/lib/dom/declaration/variable.js +19 -12
- package/lib/dom/deduction.js +18 -11
- package/lib/dom/error.js +11 -4
- package/lib/dom/hypothesis.js +16 -9
- package/lib/dom/lemma.js +4 -4
- package/lib/dom/metaLemma.js +4 -4
- package/lib/dom/metatheorem.js +4 -4
- package/lib/dom/premise.js +18 -11
- package/lib/dom/procedureCall.js +17 -10
- package/lib/dom/rule.js +14 -7
- package/lib/dom/section.js +12 -5
- package/lib/dom/statement.js +15 -15
- package/lib/dom/step.js +18 -11
- package/lib/dom/subproof.js +11 -10
- package/lib/dom/supposition.js +20 -13
- package/lib/dom/theorem.js +4 -4
- package/lib/dom/topLevelAssertion.js +13 -6
- package/lib/dom/topLevelMetaAssertion.js +11 -4
- package/lib/log.js +25 -10
- package/package.json +1 -1
- package/src/context/file.js +68 -9
- package/src/context/local.js +5 -5
- package/src/context/release.js +5 -5
- package/src/dom/axiom.js +23 -18
- package/src/dom/conclusion.js +14 -8
- package/src/dom/conjecture.js +4 -3
- package/src/dom/constructor/bracketed.js +2 -2
- package/src/dom/constructor.js +2 -2
- package/src/dom/declaration/combinator.js +11 -6
- package/src/dom/declaration/complexType.js +26 -20
- package/src/dom/declaration/constructor.js +16 -11
- package/src/dom/declaration/metavariable.js +17 -11
- package/src/dom/declaration/simpleType.js +19 -13
- package/src/dom/declaration/variable.js +17 -12
- package/src/dom/deduction.js +16 -10
- package/src/dom/error.js +8 -3
- package/src/dom/hypothesis.js +14 -8
- package/src/dom/lemma.js +5 -4
- package/src/dom/metaLemma.js +4 -3
- package/src/dom/metatheorem.js +4 -3
- package/src/dom/premise.js +16 -10
- package/src/dom/procedureCall.js +16 -9
- package/src/dom/rule.js +14 -7
- package/src/dom/section.js +10 -4
- package/src/dom/statement.js +14 -14
- package/src/dom/step.js +16 -10
- package/src/dom/subproof.js +8 -6
- package/src/dom/supposition.js +18 -12
- package/src/dom/theorem.js +4 -3
- package/src/dom/topLevelAssertion.js +11 -5
- package/src/dom/topLevelMetaAssertion.js +9 -3
- package/src/log.js +29 -16
|
@@ -111,9 +111,10 @@ function _unsupported_iterable_to_array(o, minLen) {
|
|
|
111
111
|
}
|
|
112
112
|
var _ComplexTypeDeclaration;
|
|
113
113
|
var _default = (0, _dom.domAssigned)((_ComplexTypeDeclaration = /*#__PURE__*/ function() {
|
|
114
|
-
function ComplexTypeDeclaration(context, string, type) {
|
|
114
|
+
function ComplexTypeDeclaration(context, node, string, type) {
|
|
115
115
|
_class_call_check(this, ComplexTypeDeclaration);
|
|
116
116
|
this.context = context;
|
|
117
|
+
this.node = node;
|
|
117
118
|
this.string = string;
|
|
118
119
|
this.type = type;
|
|
119
120
|
}
|
|
@@ -124,6 +125,12 @@ var _default = (0, _dom.domAssigned)((_ComplexTypeDeclaration = /*#__PURE__*/ fu
|
|
|
124
125
|
return this.context;
|
|
125
126
|
}
|
|
126
127
|
},
|
|
128
|
+
{
|
|
129
|
+
key: "getNode",
|
|
130
|
+
value: function getNode() {
|
|
131
|
+
return this.node;
|
|
132
|
+
}
|
|
133
|
+
},
|
|
127
134
|
{
|
|
128
135
|
key: "getString",
|
|
129
136
|
value: function getString() {
|
|
@@ -154,7 +161,7 @@ var _default = (0, _dom.domAssigned)((_ComplexTypeDeclaration = /*#__PURE__*/ fu
|
|
|
154
161
|
value: function verify() {
|
|
155
162
|
var verifies = false;
|
|
156
163
|
var complexTypeDeclarationString = this.getString();
|
|
157
|
-
this.context.trace("Verifying the '".concat(complexTypeDeclarationString, "' complex type declaration..."));
|
|
164
|
+
this.context.trace("Verifying the '".concat(complexTypeDeclarationString, "' complex type declaration..."), this.node);
|
|
158
165
|
var typeVerifies = this.verifyType();
|
|
159
166
|
if (typeVerifies) {
|
|
160
167
|
var superTypesVerify = this.verifySuperTypes();
|
|
@@ -167,7 +174,7 @@ var _default = (0, _dom.domAssigned)((_ComplexTypeDeclaration = /*#__PURE__*/ fu
|
|
|
167
174
|
}
|
|
168
175
|
}
|
|
169
176
|
if (verifies) {
|
|
170
|
-
this.context.debug("...verified the '".concat(complexTypeDeclarationString, "' complex type declaration."));
|
|
177
|
+
this.context.debug("...verified the '".concat(complexTypeDeclarationString, "' complex type declaration."), this.node);
|
|
171
178
|
}
|
|
172
179
|
return verifies;
|
|
173
180
|
}
|
|
@@ -177,7 +184,7 @@ var _default = (0, _dom.domAssigned)((_ComplexTypeDeclaration = /*#__PURE__*/ fu
|
|
|
177
184
|
value: function verifyType() {
|
|
178
185
|
var typeVerifies = false;
|
|
179
186
|
var complexTypeString = this.type.getString();
|
|
180
|
-
this.context.trace("Verifying the '".concat(complexTypeString, "' complex type..."));
|
|
187
|
+
this.context.trace("Verifying the '".concat(complexTypeString, "' complex type..."), this.node);
|
|
181
188
|
var typeName = this.type.getName(), releaseTypes = this.getReleaseTypes(), typePresent = releaseTypes.some(function(releaseType) {
|
|
182
189
|
var releaseTypeNameMatches = releaseType.matchTypeName(typeName);
|
|
183
190
|
if (releaseTypeNameMatches) {
|
|
@@ -185,12 +192,12 @@ var _default = (0, _dom.domAssigned)((_ComplexTypeDeclaration = /*#__PURE__*/ fu
|
|
|
185
192
|
}
|
|
186
193
|
});
|
|
187
194
|
if (typePresent) {
|
|
188
|
-
this.context.debug("The type '".concat(complexTypeString, "' is already present in the package."));
|
|
195
|
+
this.context.debug("The type '".concat(complexTypeString, "' is already present in the package."), this.node);
|
|
189
196
|
} else {
|
|
190
197
|
typeVerifies = true;
|
|
191
198
|
}
|
|
192
199
|
if (typeVerifies) {
|
|
193
|
-
this.context.debug("...verified the '".concat(complexTypeString, "' complex type."));
|
|
200
|
+
this.context.debug("...verified the '".concat(complexTypeString, "' complex type."), this.node);
|
|
194
201
|
}
|
|
195
202
|
return typeVerifies;
|
|
196
203
|
}
|
|
@@ -200,13 +207,13 @@ var _default = (0, _dom.domAssigned)((_ComplexTypeDeclaration = /*#__PURE__*/ fu
|
|
|
200
207
|
value: function verifySuperType(superType) {
|
|
201
208
|
var superTypeVerifies = false;
|
|
202
209
|
var superTypeString = superType.getString();
|
|
203
|
-
this.context.trace("Verifying the '".concat(superTypeString, "' super-type..."));
|
|
210
|
+
this.context.trace("Verifying the '".concat(superTypeString, "' super-type..."), this.node);
|
|
204
211
|
var superTypeName = superType.getName(), superTypePresent = this.context.isTypePresentByTypeName(superTypeName);
|
|
205
212
|
if (superTypePresent) {
|
|
206
213
|
superTypeVerifies = true;
|
|
207
214
|
}
|
|
208
215
|
if (superTypeVerifies) {
|
|
209
|
-
this.context.debug("...verified the '".concat(superTypeString, "' super-type."));
|
|
216
|
+
this.context.debug("...verified the '".concat(superTypeString, "' super-type."), this.node);
|
|
210
217
|
}
|
|
211
218
|
return superTypeVerifies;
|
|
212
219
|
}
|
|
@@ -216,7 +223,7 @@ var _default = (0, _dom.domAssigned)((_ComplexTypeDeclaration = /*#__PURE__*/ fu
|
|
|
216
223
|
value: function verifySuperTypes() {
|
|
217
224
|
var _this = this;
|
|
218
225
|
var superTypesVerify = false;
|
|
219
|
-
this.context.trace("Verifying the super-types...");
|
|
226
|
+
this.context.trace("Verifying the super-types...", this.node);
|
|
220
227
|
var superTypes;
|
|
221
228
|
superTypes = this.type.getSuperTypes();
|
|
222
229
|
var typeName = this.type.getName(), superTypesLength = superTypes.length;
|
|
@@ -230,14 +237,14 @@ var _default = (0, _dom.domAssigned)((_ComplexTypeDeclaration = /*#__PURE__*/ fu
|
|
|
230
237
|
var typeBasic = this.type.isBasic(), typeString = this.type.getString();
|
|
231
238
|
if (typeBasic) {
|
|
232
239
|
superTypesVerify = true;
|
|
233
|
-
this.context.trace("The '".concat(typeString, "' type is basic."));
|
|
240
|
+
this.context.trace("The '".concat(typeString, "' type is basic., this.node"));
|
|
234
241
|
} else {
|
|
235
242
|
var superTypeNames = superTypes.map(function(superType) {
|
|
236
243
|
var superTypeName = superType.getName();
|
|
237
244
|
return superTypeName;
|
|
238
245
|
}), superTypeNamesIncludesTypeName = superTypeNames.includes(typeName);
|
|
239
246
|
if (superTypeNamesIncludesTypeName) {
|
|
240
|
-
this.context.trace("The '".concat(typeName, "' type cannot be a super-type "));
|
|
247
|
+
this.context.trace("The '".concat(typeName, "' type cannot be a super-type "), this.node);
|
|
241
248
|
} else {
|
|
242
249
|
if (superTypesLength === 0) {
|
|
243
250
|
var type1 = this.context.findTypeByTypeName(typeName), superType1 = type1; ///
|
|
@@ -262,7 +269,7 @@ var _default = (0, _dom.domAssigned)((_ComplexTypeDeclaration = /*#__PURE__*/ fu
|
|
|
262
269
|
}
|
|
263
270
|
}
|
|
264
271
|
if (superTypesVerify) {
|
|
265
|
-
this.context.debug("...verified the super-types.");
|
|
272
|
+
this.context.debug("...verified the super-types.", this.node);
|
|
266
273
|
}
|
|
267
274
|
return superTypesVerify;
|
|
268
275
|
}
|
|
@@ -272,7 +279,7 @@ var _default = (0, _dom.domAssigned)((_ComplexTypeDeclaration = /*#__PURE__*/ fu
|
|
|
272
279
|
value: function verifyProperty(property, properties, superTypeProperties) {
|
|
273
280
|
var propertyVerifies = false;
|
|
274
281
|
var propertyString = property.getString();
|
|
275
|
-
this.context.trace("Verifying the '".concat(propertyString, "' property..."));
|
|
282
|
+
this.context.trace("Verifying the '".concat(propertyString, "' property..."), this.node);
|
|
276
283
|
var propertyIdentifier = property.getIdentifier(), count = properties.reduce(function(count, property) {
|
|
277
284
|
var propertyIdentifierMatches = property.matchPropertyIdentifier(propertyIdentifier);
|
|
278
285
|
if (propertyIdentifierMatches) {
|
|
@@ -281,7 +288,7 @@ var _default = (0, _dom.domAssigned)((_ComplexTypeDeclaration = /*#__PURE__*/ fu
|
|
|
281
288
|
return count;
|
|
282
289
|
}, 0);
|
|
283
290
|
if (count > 1) {
|
|
284
|
-
this.context.debug("The '".concat(propertyString, "' property appears more than once."));
|
|
291
|
+
this.context.debug("The '".concat(propertyString, "' property appears more than once."), this.node);
|
|
285
292
|
} else {
|
|
286
293
|
var superTypeProperty = superTypeProperties.find(function(superTypeProperty) {
|
|
287
294
|
var propertyIdentifierMatches = superTypeProperty.matchPropertyIdentifier(propertyIdentifier);
|
|
@@ -291,7 +298,7 @@ var _default = (0, _dom.domAssigned)((_ComplexTypeDeclaration = /*#__PURE__*/ fu
|
|
|
291
298
|
}) || null;
|
|
292
299
|
if (superTypeProperty !== null) {
|
|
293
300
|
var superTypePropertyString = superTypeProperty.getString();
|
|
294
|
-
this.context.debug("The '".concat(propertyString, "' property matches the super-type's '").concat(superTypePropertyString, "' property."));
|
|
301
|
+
this.context.debug("The '".concat(propertyString, "' property matches the super-type's '").concat(superTypePropertyString, "' property."), this.node);
|
|
295
302
|
} else {
|
|
296
303
|
var propertyType;
|
|
297
304
|
propertyType = property.getType();
|
|
@@ -310,7 +317,7 @@ var _default = (0, _dom.domAssigned)((_ComplexTypeDeclaration = /*#__PURE__*/ fu
|
|
|
310
317
|
if (typeNameMatches) {
|
|
311
318
|
property.setType(this.type);
|
|
312
319
|
}
|
|
313
|
-
this.context.debug("verifies the '".concat(propertyString, "' property."));
|
|
320
|
+
this.context.debug("verifies the '".concat(propertyString, "' property."), this.node);
|
|
314
321
|
}
|
|
315
322
|
return propertyVerifies;
|
|
316
323
|
}
|
|
@@ -344,16 +351,16 @@ var _default = (0, _dom.domAssigned)((_ComplexTypeDeclaration = /*#__PURE__*/ fu
|
|
|
344
351
|
propertyTypeVerifies = true;
|
|
345
352
|
} else {
|
|
346
353
|
var propertyTypeString = propertyType.getString(); ///
|
|
347
|
-
this.context.trace("Verifying the '".concat(propertyTypeString, "' property type..."));
|
|
354
|
+
this.context.trace("Verifying the '".concat(propertyTypeString, "' property type..."), this.node);
|
|
348
355
|
var propertyTypeName = propertyType.getName(), propertyTypePresent = this.context.isTypePresentByTypeName(propertyTypeName);
|
|
349
356
|
if (!propertyTypePresent) {
|
|
350
357
|
var propertyTypeString1 = propertyType.getString();
|
|
351
|
-
this.context.debug("The '".concat(propertyTypeString1, "' property type is not present."));
|
|
358
|
+
this.context.debug("The '".concat(propertyTypeString1, "' property type is not present."), this.node);
|
|
352
359
|
} else {
|
|
353
360
|
propertyTypeVerifies = true;
|
|
354
361
|
}
|
|
355
362
|
if (propertyTypeVerifies) {
|
|
356
|
-
this.context.debug("...verified the '".concat(propertyTypeString, "' property type."));
|
|
363
|
+
this.context.debug("...verified the '".concat(propertyTypeString, "' property type."), this.node);
|
|
357
364
|
}
|
|
358
365
|
}
|
|
359
366
|
return propertyTypeVerifies;
|
|
@@ -363,7 +370,7 @@ var _default = (0, _dom.domAssigned)((_ComplexTypeDeclaration = /*#__PURE__*/ fu
|
|
|
363
370
|
{
|
|
364
371
|
key: "fromComplexTypeDeclarationNode",
|
|
365
372
|
value: function fromComplexTypeDeclarationNode(complexTypeDeclarationNode, context) {
|
|
366
|
-
var Type = _dom.default.Type, type = Type.fromComplexTypeDeclarationNode(complexTypeDeclarationNode, context), typeName = type.getName(), superTypes = type.getSuperTypes(), string = (0, _type1.stringFromTypeNameNameAndSuperTypes)(typeName, superTypes), complexTypeDeclaration = new ComplexTypeDeclaration(context, string, type);
|
|
373
|
+
var Type = _dom.default.Type, node = complexTypeDeclarationNode, type = Type.fromComplexTypeDeclarationNode(complexTypeDeclarationNode, context), typeName = type.getName(), superTypes = type.getSuperTypes(), string = (0, _type1.stringFromTypeNameNameAndSuperTypes)(typeName, superTypes), complexTypeDeclaration = new ComplexTypeDeclaration(context, node, string, type);
|
|
367
374
|
return complexTypeDeclaration;
|
|
368
375
|
}
|
|
369
376
|
}
|
|
@@ -371,4 +378,4 @@ var _default = (0, _dom.domAssigned)((_ComplexTypeDeclaration = /*#__PURE__*/ fu
|
|
|
371
378
|
return ComplexTypeDeclaration;
|
|
372
379
|
}(), _define_property(_ComplexTypeDeclaration, "name", "ComplexTypeDeclaration"), _ComplexTypeDeclaration));
|
|
373
380
|
|
|
374
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9kb20vZGVjbGFyYXRpb24vY29tcGxleFR5cGUuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmltcG9ydCBkb20gZnJvbSBcIi4uLy4uL2RvbVwiO1xuXG5pbXBvcnQgeyBvYmplY3RUeXBlIH0gZnJvbSBcIi4uL3R5cGVcIjtcbmltcG9ydCB7IGRvbUFzc2lnbmVkIH0gZnJvbSBcIi4uLy4uL2RvbVwiO1xuaW1wb3J0IHsgc3RyaW5nRnJvbVR5cGVOYW1lTmFtZUFuZFN1cGVyVHlwZXMgfSBmcm9tIFwiLi4vLi4vdXRpbGl0aWVzL3R5cGVcIjtcblxuZXhwb3J0IGRlZmF1bHQgZG9tQXNzaWduZWQoY2xhc3MgQ29tcGxleFR5cGVEZWNsYXJhdGlvbiB7XG4gIGNvbnN0cnVjdG9yKGNvbnRleHQsIHN0cmluZywgdHlwZSkge1xuICAgIHRoaXMuY29udGV4dCA9IGNvbnRleHQ7XG4gICAgdGhpcy5zdHJpbmcgPSBzdHJpbmc7XG4gICAgdGhpcy50eXBlID0gdHlwZTtcbiAgfVxuXG4gIGdldENvbnRleHQoKSB7XG4gICAgcmV0dXJuIHRoaXMuY29udGV4dDtcbiAgfVxuXG4gIGdldFN0cmluZygpIHtcbiAgICByZXR1cm4gdGhpcy5zdHJpbmc7XG4gIH1cblxuICBnZXRUeXBlKCkge1xuICAgIHJldHVybiB0aGlzLnR5cGU7XG4gIH1cblxuICBnZXRSZWxlYXNlQ29udGV4dCgpIHsgcmV0dXJuIHRoaXMuY29udGV4dC5nZXRSZWxlYXNlQ29udGV4dCgpOyB9XG5cbiAgZ2V0UmVsZWFzZVR5cGVzKCkge1xuICAgIGNvbnN0IGluY2x1ZGVEZXBlbmRlbmNpZXMgPSBmYWxzZSxcbiAgICAgICAgICBpbmNsdWRlUmVsZWFzZSA9IGZhbHNlLFxuICAgICAgICAgIHJlbGVhc2VDb250ZXh0ID0gdGhpcy5nZXRSZWxlYXNlQ29udGV4dCgpLFxuICAgICAgICAgIGNvbnRleHRUeXBlcyA9IHRoaXMuY29udGV4dC5nZXRUeXBlcyhpbmNsdWRlUmVsZWFzZSksXG4gICAgICAgICAgcmVsZWFzZUNvbnRleHRUeXBlcyA9IHJlbGVhc2VDb250ZXh0LmdldFR5cGVzKGluY2x1ZGVEZXBlbmRlbmNpZXMpLFxuICAgICAgICAgIHJlbGVhc2VUeXBlcyA9IFtcbiAgICAgICAgICAgIC4uLmNvbnRleHRUeXBlcyxcbiAgICAgICAgICAgIC4uLnJlbGVhc2VDb250ZXh0VHlwZXNcbiAgICAgICAgICBdO1xuXG4gICAgcmV0dXJuIHJlbGVhc2VUeXBlcztcbiAgfVxuXG4gIHZlcmlmeSgpIHtcbiAgICBsZXQgdmVyaWZpZXMgPSBmYWxzZTtcblxuICAgIGNvbnN0IGNvbXBsZXhUeXBlRGVjbGFyYXRpb25TdHJpbmcgPSB0aGlzLmdldFN0cmluZygpO1xuXG4gICAgdGhpcy5jb250ZXh0LnRyYWNlKGBWZXJpZnlpbmcgdGhlICcke2NvbXBsZXhUeXBlRGVjbGFyYXRpb25TdHJpbmd9JyBjb21wbGV4IHR5cGUgZGVjbGFyYXRpb24uLi5gKTtcblxuICAgIGNvbnN0IHR5cGVWZXJpZmllcyA9IHRoaXMudmVyaWZ5VHlwZSgpO1xuXG4gICAgaWYgKHR5cGVWZXJpZmllcykge1xuICAgICAgY29uc3Qgc3VwZXJUeXBlc1ZlcmlmeSA9IHRoaXMudmVyaWZ5U3VwZXJUeXBlcygpO1xuXG4gICAgICBpZiAoc3VwZXJUeXBlc1ZlcmlmeSkge1xuICAgICAgICBjb25zdCBwcm9wZXJ0aWVzVmVyaWZ5ID0gdGhpcy52ZXJpZnlQcm9wZXJ0aWVzKCk7XG5cbiAgICAgICAgaWYgKHByb3BlcnRpZXNWZXJpZnkpIHtcbiAgICAgICAgICB0aGlzLmNvbnRleHQuYWRkVHlwZSh0aGlzLnR5cGUpO1xuXG4gICAgICAgICAgdmVyaWZpZXMgPSB0cnVlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHZlcmlmaWVzKSB7XG4gICAgICB0aGlzLmNvbnRleHQuZGVidWcoYC4uLnZlcmlmaWVkIHRoZSAnJHtjb21wbGV4VHlwZURlY2xhcmF0aW9uU3RyaW5nfScgY29tcGxleCB0eXBlIGRlY2xhcmF0aW9uLmApO1xuICAgIH1cblxuICAgIHJldHVybiB2ZXJpZmllcztcbiAgfVxuXG4gIHZlcmlmeVR5cGUoKSB7XG4gICAgbGV0IHR5cGVWZXJpZmllcyA9IGZhbHNlO1xuXG4gICAgY29uc3QgY29tcGxleFR5cGVTdHJpbmcgPSB0aGlzLnR5cGUuZ2V0U3RyaW5nKCk7XG5cbiAgICB0aGlzLmNvbnRleHQudHJhY2UoYFZlcmlmeWluZyB0aGUgJyR7Y29tcGxleFR5cGVTdHJpbmd9JyBjb21wbGV4IHR5cGUuLi5gKTtcblxuICAgIGNvbnN0IHR5cGVOYW1lID0gdGhpcy50eXBlLmdldE5hbWUoKSxcbiAgICAgICAgICByZWxlYXNlVHlwZXMgPSB0aGlzLmdldFJlbGVhc2VUeXBlcygpLFxuICAgICAgICAgIHR5cGVQcmVzZW50ID0gcmVsZWFzZVR5cGVzLnNvbWUoKHJlbGVhc2VUeXBlKSA9PiB7XG4gICAgICAgICAgICBjb25zdCByZWxlYXNlVHlwZU5hbWVNYXRjaGVzID0gcmVsZWFzZVR5cGUubWF0Y2hUeXBlTmFtZSh0eXBlTmFtZSk7XG5cbiAgICAgICAgICAgIGlmIChyZWxlYXNlVHlwZU5hbWVNYXRjaGVzKSB7XG4gICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pO1xuXG4gICAgaWYgKHR5cGVQcmVzZW50KSB7XG4gICAgICB0aGlzLmNvbnRleHQuZGVidWcoYFRoZSB0eXBlICcke2NvbXBsZXhUeXBlU3RyaW5nfScgaXMgYWxyZWFkeSBwcmVzZW50IGluIHRoZSBwYWNrYWdlLmApO1xuICAgIH0gZWxzZSB7XG4gICAgICB0eXBlVmVyaWZpZXMgPSB0cnVlO1xuICAgIH1cblxuICAgIGlmICh0eXBlVmVyaWZpZXMpIHtcbiAgICAgIHRoaXMuY29udGV4dC5kZWJ1ZyhgLi4udmVyaWZpZWQgdGhlICcke2NvbXBsZXhUeXBlU3RyaW5nfScgY29tcGxleCB0eXBlLmApO1xuICAgIH1cblxuICAgIHJldHVybiB0eXBlVmVyaWZpZXM7XG4gIH1cblxuICB2ZXJpZnlTdXBlclR5cGUoc3VwZXJUeXBlKSB7XG4gICAgbGV0IHN1cGVyVHlwZVZlcmlmaWVzID0gZmFsc2U7XG5cbiAgICBjb25zdCBzdXBlclR5cGVTdHJpbmcgPSBzdXBlclR5cGUuZ2V0U3RyaW5nKCk7XG5cbiAgICB0aGlzLmNvbnRleHQudHJhY2UoYFZlcmlmeWluZyB0aGUgJyR7c3VwZXJUeXBlU3RyaW5nfScgc3VwZXItdHlwZS4uLmApO1xuXG4gICAgY29uc3Qgc3VwZXJUeXBlTmFtZSA9IHN1cGVyVHlwZS5nZXROYW1lKCksXG4gICAgICAgICAgc3VwZXJUeXBlUHJlc2VudCA9IHRoaXMuY29udGV4dC5pc1R5cGVQcmVzZW50QnlUeXBlTmFtZShzdXBlclR5cGVOYW1lKTtcblxuICAgIGlmIChzdXBlclR5cGVQcmVzZW50KSB7XG4gICAgICBzdXBlclR5cGVWZXJpZmllcyA9IHRydWU7XG4gICAgfVxuXG4gICAgaWYgKHN1cGVyVHlwZVZlcmlmaWVzKSB7XG4gICAgICB0aGlzLmNvbnRleHQuZGVidWcoYC4uLnZlcmlmaWVkIHRoZSAnJHtzdXBlclR5cGVTdHJpbmd9JyBzdXBlci10eXBlLmApO1xuICAgIH1cblxuICAgIHJldHVybiBzdXBlclR5cGVWZXJpZmllcztcbiAgfVxuXG4gIHZlcmlmeVN1cGVyVHlwZXMoKSB7XG4gICAgbGV0IHN1cGVyVHlwZXNWZXJpZnkgPSBmYWxzZTtcblxuICAgIHRoaXMuY29udGV4dC50cmFjZShgVmVyaWZ5aW5nIHRoZSBzdXBlci10eXBlcy4uLmApO1xuXG4gICAgbGV0IHN1cGVyVHlwZXM7XG5cbiAgICBzdXBlclR5cGVzID0gdGhpcy50eXBlLmdldFN1cGVyVHlwZXMoKTtcblxuICAgIGNvbnN0IHR5cGVOYW1lID0gdGhpcy50eXBlLmdldE5hbWUoKSxcbiAgICAgICAgICBzdXBlclR5cGVzTGVuZ3RoID0gc3VwZXJUeXBlcy5sZW5ndGg7XG5cbiAgICBpZiAoc3VwZXJUeXBlc0xlbmd0aCA9PT0gMCkge1xuICAgICAgY29uc3QgdHlwZSA9IHRoaXMuY29udGV4dC5maW5kVHlwZUJ5VHlwZU5hbWUodHlwZU5hbWUpO1xuXG4gICAgICBpZiAodHlwZSA9PT0gbnVsbCkge1xuICAgICAgICBjb25zdCBzdXBlclR5cGUgPSBvYmplY3RUeXBlOyAvLy9cblxuICAgICAgICBzdXBlclR5cGVzLnB1c2goc3VwZXJUeXBlKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBjb25zdCB0eXBlQmFzaWMgPSB0aGlzLnR5cGUuaXNCYXNpYygpLFxuICAgICAgICAgIHR5cGVTdHJpbmcgPSB0aGlzLnR5cGUuZ2V0U3RyaW5nKCk7XG5cbiAgICBpZiAodHlwZUJhc2ljKSB7XG4gICAgICBzdXBlclR5cGVzVmVyaWZ5ID0gdHJ1ZTtcblxuICAgICAgdGhpcy5jb250ZXh0LnRyYWNlKGBUaGUgJyR7dHlwZVN0cmluZ30nIHR5cGUgaXMgYmFzaWMuYClcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3Qgc3VwZXJUeXBlTmFtZXMgPSBzdXBlclR5cGVzLm1hcCgoc3VwZXJUeXBlKSA9PiB7XG4gICAgICAgICAgICAgIGNvbnN0IHN1cGVyVHlwZU5hbWUgPSBzdXBlclR5cGUuZ2V0TmFtZSgpO1xuXG4gICAgICAgICAgICAgIHJldHVybiBzdXBlclR5cGVOYW1lO1xuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICBzdXBlclR5cGVOYW1lc0luY2x1ZGVzVHlwZU5hbWUgPSBzdXBlclR5cGVOYW1lcy5pbmNsdWRlcyh0eXBlTmFtZSk7XG5cbiAgICAgIGlmIChzdXBlclR5cGVOYW1lc0luY2x1ZGVzVHlwZU5hbWUpIHtcbiAgICAgICAgdGhpcy5jb250ZXh0LnRyYWNlKGBUaGUgJyR7dHlwZU5hbWV9JyB0eXBlIGNhbm5vdCBiZSBhIHN1cGVyLXR5cGUgYCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpZiAoc3VwZXJUeXBlc0xlbmd0aCA9PT0gMCkge1xuICAgICAgICAgIGNvbnN0IHR5cGUgPSB0aGlzLmNvbnRleHQuZmluZFR5cGVCeVR5cGVOYW1lKHR5cGVOYW1lKSxcbiAgICAgICAgICAgICAgICBzdXBlclR5cGUgPSB0eXBlOyAvLy9cblxuICAgICAgICAgIHN1cGVyVHlwZXMucHVzaChzdXBlclR5cGUpO1xuICAgICAgICB9XG5cbiAgICAgICAgc3VwZXJUeXBlc1ZlcmlmeSA9IHN1cGVyVHlwZXMuZXZlcnkoKHN1cGVyVHlwZSkgPT4ge1xuICAgICAgICAgIGNvbnN0IHN1cGVyVHlwZVZlcmlmaWVzID0gdGhpcy52ZXJpZnlTdXBlclR5cGUoc3VwZXJUeXBlKTtcblxuICAgICAgICAgIGlmIChzdXBlclR5cGVWZXJpZmllcykge1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcblxuICAgICAgICBpZiAoc3VwZXJUeXBlc1ZlcmlmeSkge1xuICAgICAgICAgIHN1cGVyVHlwZXMgPSBzdXBlclR5cGVzLm1hcCgoc3VwZXJUeXBlKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBzdXBlclR5cGVOYW1lID0gc3VwZXJUeXBlLmdldE5hbWUoKTtcblxuICAgICAgICAgICAgc3VwZXJUeXBlID0gdGhpcy5jb250ZXh0LmZpbmRUeXBlQnlUeXBlTmFtZShzdXBlclR5cGVOYW1lKTtcblxuICAgICAgICAgICAgcmV0dXJuIHN1cGVyVHlwZTtcbiAgICAgICAgICB9KTtcblxuICAgICAgICAgIGNvbnN0IHR5cGVOYW1lID0gdGhpcy50eXBlLmdldE5hbWUoKSxcbiAgICAgICAgICAgIHN0cmluZyA9IHN0cmluZ0Zyb21UeXBlTmFtZU5hbWVBbmRTdXBlclR5cGVzKHR5cGVOYW1lLCBzdXBlclR5cGVzKTtcblxuICAgICAgICAgIHRoaXMudHlwZS5zZXRTdHJpbmcoc3RyaW5nKTtcblxuICAgICAgICAgIHRoaXMudHlwZS5zZXRTdXBlclR5cGVzKHN1cGVyVHlwZXMpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHN1cGVyVHlwZXNWZXJpZnkpIHtcbiAgICAgIHRoaXMuY29udGV4dC5kZWJ1ZyhgLi4udmVyaWZpZWQgdGhlIHN1cGVyLXR5cGVzLmApO1xuICAgIH1cblxuICAgIHJldHVybiBzdXBlclR5cGVzVmVyaWZ5O1xuICB9XG5cbiAgdmVyaWZ5UHJvcGVydHkocHJvcGVydHksIHByb3BlcnRpZXMsIHN1cGVyVHlwZVByb3BlcnRpZXMpIHtcbiAgICBsZXQgcHJvcGVydHlWZXJpZmllcyA9IGZhbHNlO1xuXG4gICAgY29uc3QgcHJvcGVydHlTdHJpbmcgPSBwcm9wZXJ0eS5nZXRTdHJpbmcoKTtcblxuICAgIHRoaXMuY29udGV4dC50cmFjZShgVmVyaWZ5aW5nIHRoZSAnJHtwcm9wZXJ0eVN0cmluZ30nIHByb3BlcnR5Li4uYCk7XG5cbiAgICBjb25zdCBwcm9wZXJ0eUlkZW50aWZpZXIgPSBwcm9wZXJ0eS5nZXRJZGVudGlmaWVyKCksXG4gICAgICAgICAgY291bnQgPSBwcm9wZXJ0aWVzLnJlZHVjZSgoY291bnQsIHByb3BlcnR5KSA9PiB7XG4gICAgICAgICAgICBjb25zdCBwcm9wZXJ0eUlkZW50aWZpZXJNYXRjaGVzID0gcHJvcGVydHkubWF0Y2hQcm9wZXJ0eUlkZW50aWZpZXIocHJvcGVydHlJZGVudGlmaWVyKTtcblxuICAgICAgICAgICAgaWYgKHByb3BlcnR5SWRlbnRpZmllck1hdGNoZXMpIHtcbiAgICAgICAgICAgICAgY291bnQrKztcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIGNvdW50O1xuICAgICAgICAgIH0sIDApO1xuXG4gICAgaWYgKGNvdW50ID4gMSkge1xuICAgICAgdGhpcy5jb250ZXh0LmRlYnVnKGBUaGUgJyR7cHJvcGVydHlTdHJpbmd9JyBwcm9wZXJ0eSBhcHBlYXJzIG1vcmUgdGhhbiBvbmNlLmApO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBzdXBlclR5cGVQcm9wZXJ0eSA9IHN1cGVyVHlwZVByb3BlcnRpZXMuZmluZCgoc3VwZXJUeXBlUHJvcGVydHkpID0+IHtcbiAgICAgICAgY29uc3QgcHJvcGVydHlJZGVudGlmaWVyTWF0Y2hlcyA9IHN1cGVyVHlwZVByb3BlcnR5Lm1hdGNoUHJvcGVydHlJZGVudGlmaWVyKHByb3BlcnR5SWRlbnRpZmllcik7XG5cbiAgICAgICAgaWYgKHByb3BlcnR5SWRlbnRpZmllck1hdGNoZXMpIHtcbiAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgfSkgfHwgbnVsbDtcblxuICAgICAgaWYgKHN1cGVyVHlwZVByb3BlcnR5ICE9PSBudWxsKSB7XG4gICAgICAgIGNvbnN0IHN1cGVyVHlwZVByb3BlcnR5U3RyaW5nID0gc3VwZXJUeXBlUHJvcGVydHkuZ2V0U3RyaW5nKCk7XG5cbiAgICAgICAgdGhpcy5jb250ZXh0LmRlYnVnKGBUaGUgJyR7cHJvcGVydHlTdHJpbmd9JyBwcm9wZXJ0eSBtYXRjaGVzIHRoZSBzdXBlci10eXBlJ3MgJyR7c3VwZXJUeXBlUHJvcGVydHlTdHJpbmd9JyBwcm9wZXJ0eS5gKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGxldCBwcm9wZXJ0eVR5cGU7XG5cbiAgICAgICAgcHJvcGVydHlUeXBlID0gcHJvcGVydHkuZ2V0VHlwZSgpO1xuXG4gICAgICAgIGNvbnN0IHByb3BlcnR5VHlwZVZlcmlmaWVzID0gdGhpcy52ZXJpZnlQcm9wZXJ0eVR5cGUocHJvcGVydHlUeXBlKTtcblxuICAgICAgICBpZiAocHJvcGVydHlUeXBlVmVyaWZpZXMpIHtcbiAgICAgICAgICBjb25zdCBwcm9wZXJ0eVR5cGVOYW1lID0gcHJvcGVydHlUeXBlLmdldE5hbWUoKTtcblxuICAgICAgICAgIHByb3BlcnR5VHlwZSA9IHRoaXMuY29udGV4dC5maW5kVHlwZUJ5VHlwZU5hbWUocHJvcGVydHlUeXBlTmFtZSk7XG5cbiAgICAgICAgICBjb25zdCB0eXBlID0gcHJvcGVydHlUeXBlOyAgLy8vXG5cbiAgICAgICAgICBwcm9wZXJ0eS5zZXRUeXBlKHR5cGUpO1xuXG4gICAgICAgICAgcHJvcGVydHlWZXJpZmllcyA9IHRydWU7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAocHJvcGVydHlWZXJpZmllcykge1xuICAgICAgY29uc3QgdHlwZU5hbWUgPSB0aGlzLnR5cGUuZ2V0TmFtZSgpLFxuICAgICAgICAgICAgdHlwZU5hbWVNYXRjaGVzID0gcHJvcGVydHkubWF0Y2hUeXBlTmFtZSh0eXBlTmFtZSk7XG5cbiAgICAgIGlmICh0eXBlTmFtZU1hdGNoZXMpIHtcbiAgICAgICAgcHJvcGVydHkuc2V0VHlwZSh0aGlzLnR5cGUpO1xuICAgICAgfVxuXG4gICAgICB0aGlzLmNvbnRleHQuZGVidWcoYHZlcmlmaWVzIHRoZSAnJHtwcm9wZXJ0eVN0cmluZ30nIHByb3BlcnR5LmApO1xuICAgIH1cblxuICAgIHJldHVybiBwcm9wZXJ0eVZlcmlmaWVzO1xuICB9XG5cbiAgdmVyaWZ5UHJvcGVydGllcygpIHtcbiAgICBsZXQgcHJvcGVydGllc1ZlcmlmeTtcblxuICAgIGNvbnN0IGluY2x1ZGVTdXBlclR5cGVzID0gZmFsc2UsXG4gICAgICAgICAgcHJvcGVydGllcyA9IHRoaXMudHlwZS5nZXRQcm9wZXJ0aWVzKGluY2x1ZGVTdXBlclR5cGVzKSxcbiAgICAgICAgICBzdXBlclR5cGVzID0gdGhpcy50eXBlLmdldFN1cGVyVHlwZXMoKVxuXG4gICAgcHJvcGVydGllc1ZlcmlmeSA9IHN1cGVyVHlwZXMuZXZlcnkoKHN1cGVyVHlwZSkgPT4ge1xuICAgICAgY29uc3Qgc3VwZXJUeXBlUHJvcGVydGllcyA9IHN1cGVyVHlwZS5nZXRQcm9wZXJ0aWVzKCksXG4gICAgICAgICAgICBwcm9wZXJ0aWVzVmVyaWZ5ID0gcHJvcGVydGllcy5ldmVyeSgocHJvcGVydHkpID0+IHtcbiAgICAgICAgICAgICAgY29uc3QgcHJvcGVydHlWZXJpZmllcyA9IHRoaXMudmVyaWZ5UHJvcGVydHkocHJvcGVydHksIHByb3BlcnRpZXMsIHN1cGVyVHlwZVByb3BlcnRpZXMpO1xuXG4gICAgICAgICAgICAgIGlmIChwcm9wZXJ0eVZlcmlmaWVzKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuXG4gICAgICBpZiAocHJvcGVydGllc1ZlcmlmeSkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHJldHVybiBwcm9wZXJ0aWVzVmVyaWZ5O1xuICB9XG5cbiAgdmVyaWZ5UHJvcGVydHlUeXBlKHByb3BlcnR5VHlwZSkge1xuICAgIGxldCBwcm9wZXJ0eVR5cGVWZXJpZmllcyA9IGZhbHNlO1xuXG4gICAgY29uc3QgdHlwZUVxdWFsVG9Qcm9wZXJ0eVR5cGUgPSB0aGlzLnR5cGUuaXNFcXVhbFRvKHByb3BlcnR5VHlwZSk7XG5cbiAgICBpZiAodHlwZUVxdWFsVG9Qcm9wZXJ0eVR5cGUpIHtcbiAgICAgIHByb3BlcnR5VHlwZVZlcmlmaWVzID0gdHJ1ZTtcbiAgICB9IGVsc2UgIHtcbiAgICAgIGNvbnN0IHByb3BlcnR5VHlwZVN0cmluZyA9IHByb3BlcnR5VHlwZS5nZXRTdHJpbmcoKTsgLy8vXG5cbiAgICAgIHRoaXMuY29udGV4dC50cmFjZShgVmVyaWZ5aW5nIHRoZSAnJHtwcm9wZXJ0eVR5cGVTdHJpbmd9JyBwcm9wZXJ0eSB0eXBlLi4uYCk7XG5cbiAgICAgIGNvbnN0IHByb3BlcnR5VHlwZU5hbWUgPSBwcm9wZXJ0eVR5cGUuZ2V0TmFtZSgpLFxuICAgICAgICAgICAgcHJvcGVydHlUeXBlUHJlc2VudCA9IHRoaXMuY29udGV4dC5pc1R5cGVQcmVzZW50QnlUeXBlTmFtZShwcm9wZXJ0eVR5cGVOYW1lKTtcblxuICAgICAgaWYgKCFwcm9wZXJ0eVR5cGVQcmVzZW50KSB7XG4gICAgICAgIGNvbnN0IHByb3BlcnR5VHlwZVN0cmluZyA9IHByb3BlcnR5VHlwZS5nZXRTdHJpbmcoKTtcblxuICAgICAgICB0aGlzLmNvbnRleHQuZGVidWcoYFRoZSAnJHtwcm9wZXJ0eVR5cGVTdHJpbmd9JyBwcm9wZXJ0eSB0eXBlIGlzIG5vdCBwcmVzZW50LmApO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcHJvcGVydHlUeXBlVmVyaWZpZXMgPSB0cnVlO1xuICAgICAgfVxuXG4gICAgICBpZiAocHJvcGVydHlUeXBlVmVyaWZpZXMpIHtcbiAgICAgICAgdGhpcy5jb250ZXh0LmRlYnVnKGAuLi52ZXJpZmllZCB0aGUgJyR7cHJvcGVydHlUeXBlU3RyaW5nfScgcHJvcGVydHkgdHlwZS5gKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gcHJvcGVydHlUeXBlVmVyaWZpZXM7XG4gIH1cblxuICBzdGF0aWMgbmFtZSA9IFwiQ29tcGxleFR5cGVEZWNsYXJhdGlvblwiO1xuXG4gIHN0YXRpYyBmcm9tQ29tcGxleFR5cGVEZWNsYXJhdGlvbk5vZGUoY29tcGxleFR5cGVEZWNsYXJhdGlvbk5vZGUsIGNvbnRleHQpIHtcbiAgICBjb25zdCB7IFR5cGUgfSA9IGRvbSxcbiAgICAgICAgICB0eXBlID0gVHlwZS5mcm9tQ29tcGxleFR5cGVEZWNsYXJhdGlvbk5vZGUoY29tcGxleFR5cGVEZWNsYXJhdGlvbk5vZGUsIGNvbnRleHQpLFxuICAgICAgICAgIHR5cGVOYW1lID0gdHlwZS5nZXROYW1lKCksXG4gICAgICAgICAgc3VwZXJUeXBlcyA9IHR5cGUuZ2V0U3VwZXJUeXBlcygpLFxuICAgICAgICAgIHN0cmluZyA9IHN0cmluZ0Zyb21UeXBlTmFtZU5hbWVBbmRTdXBlclR5cGVzKHR5cGVOYW1lLCBzdXBlclR5cGVzKSxcbiAgICAgICAgICBjb21wbGV4VHlwZURlY2xhcmF0aW9uID0gbmV3IENvbXBsZXhUeXBlRGVjbGFyYXRpb24oY29udGV4dCwgc3RyaW5nLCB0eXBlKTtcblxuICAgIHJldHVybiBjb21wbGV4VHlwZURlY2xhcmF0aW9uO1xuICB9XG59KTtcbiJdLCJuYW1lcyI6WyJkb21Bc3NpZ25lZCIsIkNvbXBsZXhUeXBlRGVjbGFyYXRpb24iLCJjb250ZXh0Iiwic3RyaW5nIiwidHlwZSIsImdldENvbnRleHQiLCJnZXRTdHJpbmciLCJnZXRUeXBlIiwiZ2V0UmVsZWFzZUNvbnRleHQiLCJnZXRSZWxlYXNlVHlwZXMiLCJpbmNsdWRlRGVwZW5kZW5jaWVzIiwiaW5jbHVkZVJlbGVhc2UiLCJyZWxlYXNlQ29udGV4dCIsImNvbnRleHRUeXBlcyIsImdldFR5cGVzIiwicmVsZWFzZUNvbnRleHRUeXBlcyIsInJlbGVhc2VUeXBlcyIsInZlcmlmeSIsInZlcmlmaWVzIiwiY29tcGxleFR5cGVEZWNsYXJhdGlvblN0cmluZyIsInRyYWNlIiwidHlwZVZlcmlmaWVzIiwidmVyaWZ5VHlwZSIsInN1cGVyVHlwZXNWZXJpZnkiLCJ2ZXJpZnlTdXBlclR5cGVzIiwicHJvcGVydGllc1ZlcmlmeSIsInZlcmlmeVByb3BlcnRpZXMiLCJhZGRUeXBlIiwiZGVidWciLCJjb21wbGV4VHlwZVN0cmluZyIsInR5cGVOYW1lIiwiZ2V0TmFtZSIsInR5cGVQcmVzZW50Iiwic29tZSIsInJlbGVhc2VUeXBlIiwicmVsZWFzZVR5cGVOYW1lTWF0Y2hlcyIsIm1hdGNoVHlwZU5hbWUiLCJ2ZXJpZnlTdXBlclR5cGUiLCJzdXBlclR5cGUiLCJzdXBlclR5cGVWZXJpZmllcyIsInN1cGVyVHlwZVN0cmluZyIsInN1cGVyVHlwZU5hbWUiLCJzdXBlclR5cGVQcmVzZW50IiwiaXNUeXBlUHJlc2VudEJ5VHlwZU5hbWUiLCJzdXBlclR5cGVzIiwiZ2V0U3VwZXJUeXBlcyIsInN1cGVyVHlwZXNMZW5ndGgiLCJsZW5ndGgiLCJmaW5kVHlwZUJ5VHlwZU5hbWUiLCJvYmplY3RUeXBlIiwicHVzaCIsInR5cGVCYXNpYyIsImlzQmFzaWMiLCJ0eXBlU3RyaW5nIiwic3VwZXJUeXBlTmFtZXMiLCJtYXAiLCJzdXBlclR5cGVOYW1lc0luY2x1ZGVzVHlwZU5hbWUiLCJpbmNsdWRlcyIsImV2ZXJ5Iiwic3RyaW5nRnJvbVR5cGVOYW1lTmFtZUFuZFN1cGVyVHlwZXMiLCJzZXRTdHJpbmciLCJzZXRTdXBlclR5cGVzIiwidmVyaWZ5UHJvcGVydHkiLCJwcm9wZXJ0eSIsInByb3BlcnRpZXMiLCJzdXBlclR5cGVQcm9wZXJ0aWVzIiwicHJvcGVydHlWZXJpZmllcyIsInByb3BlcnR5U3RyaW5nIiwicHJvcGVydHlJZGVudGlmaWVyIiwiZ2V0SWRlbnRpZmllciIsImNvdW50IiwicmVkdWNlIiwicHJvcGVydHlJZGVudGlmaWVyTWF0Y2hlcyIsIm1hdGNoUHJvcGVydHlJZGVudGlmaWVyIiwic3VwZXJUeXBlUHJvcGVydHkiLCJmaW5kIiwic3VwZXJUeXBlUHJvcGVydHlTdHJpbmciLCJwcm9wZXJ0eVR5cGUiLCJwcm9wZXJ0eVR5cGVWZXJpZmllcyIsInZlcmlmeVByb3BlcnR5VHlwZSIsInByb3BlcnR5VHlwZU5hbWUiLCJzZXRUeXBlIiwidHlwZU5hbWVNYXRjaGVzIiwiaW5jbHVkZVN1cGVyVHlwZXMiLCJnZXRQcm9wZXJ0aWVzIiwidHlwZUVxdWFsVG9Qcm9wZXJ0eVR5cGUiLCJpc0VxdWFsVG8iLCJwcm9wZXJ0eVR5cGVTdHJpbmciLCJwcm9wZXJ0eVR5cGVQcmVzZW50IiwiZnJvbUNvbXBsZXhUeXBlRGVjbGFyYXRpb25Ob2RlIiwiY29tcGxleFR5cGVEZWNsYXJhdGlvbk5vZGUiLCJUeXBlIiwiZG9tIiwiY29tcGxleFR5cGVEZWNsYXJhdGlvbiIsIm5hbWUiXSwibWFwcGluZ3MiOiJBQUFBOzs7OytCQVFBOzs7ZUFBQTs7OzJEQU5nQjtvQkFFVztxQkFFeUI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SUFFcEQsV0FBZUEsSUFBQUEsZ0JBQVcsMkNBQUM7YUFBTUMsdUJBQ25CQyxPQUFPLEVBQUVDLE1BQU0sRUFBRUMsSUFBSTtnQ0FERkg7UUFFN0IsSUFBSSxDQUFDQyxPQUFPLEdBQUdBO1FBQ2YsSUFBSSxDQUFDQyxNQUFNLEdBQUdBO1FBQ2QsSUFBSSxDQUFDQyxJQUFJLEdBQUdB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
|
|
381
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9kb20vZGVjbGFyYXRpb24vY29tcGxleFR5cGUuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmltcG9ydCBkb20gZnJvbSBcIi4uLy4uL2RvbVwiO1xuXG5pbXBvcnQgeyBvYmplY3RUeXBlIH0gZnJvbSBcIi4uL3R5cGVcIjtcbmltcG9ydCB7IGRvbUFzc2lnbmVkIH0gZnJvbSBcIi4uLy4uL2RvbVwiO1xuaW1wb3J0IHsgc3RyaW5nRnJvbVR5cGVOYW1lTmFtZUFuZFN1cGVyVHlwZXMgfSBmcm9tIFwiLi4vLi4vdXRpbGl0aWVzL3R5cGVcIjtcblxuZXhwb3J0IGRlZmF1bHQgZG9tQXNzaWduZWQoY2xhc3MgQ29tcGxleFR5cGVEZWNsYXJhdGlvbiB7XG4gIGNvbnN0cnVjdG9yKGNvbnRleHQsIG5vZGUsIHN0cmluZywgdHlwZSkge1xuICAgIHRoaXMuY29udGV4dCA9IGNvbnRleHQ7XG4gICAgdGhpcy5ub2RlID0gbm9kZTtcbiAgICB0aGlzLnN0cmluZyA9IHN0cmluZztcbiAgICB0aGlzLnR5cGUgPSB0eXBlO1xuICB9XG5cbiAgZ2V0Q29udGV4dCgpIHtcbiAgICByZXR1cm4gdGhpcy5jb250ZXh0O1xuICB9XG5cbiAgZ2V0Tm9kZSgpIHtcbiAgICByZXR1cm4gdGhpcy5ub2RlO1xuICB9XG5cbiAgZ2V0U3RyaW5nKCkge1xuICAgIHJldHVybiB0aGlzLnN0cmluZztcbiAgfVxuXG4gIGdldFR5cGUoKSB7XG4gICAgcmV0dXJuIHRoaXMudHlwZTtcbiAgfVxuXG4gIGdldFJlbGVhc2VDb250ZXh0KCkgeyByZXR1cm4gdGhpcy5jb250ZXh0LmdldFJlbGVhc2VDb250ZXh0KCk7IH1cblxuICBnZXRSZWxlYXNlVHlwZXMoKSB7XG4gICAgY29uc3QgaW5jbHVkZURlcGVuZGVuY2llcyA9IGZhbHNlLFxuICAgICAgICAgIGluY2x1ZGVSZWxlYXNlID0gZmFsc2UsXG4gICAgICAgICAgcmVsZWFzZUNvbnRleHQgPSB0aGlzLmdldFJlbGVhc2VDb250ZXh0KCksXG4gICAgICAgICAgY29udGV4dFR5cGVzID0gdGhpcy5jb250ZXh0LmdldFR5cGVzKGluY2x1ZGVSZWxlYXNlKSxcbiAgICAgICAgICByZWxlYXNlQ29udGV4dFR5cGVzID0gcmVsZWFzZUNvbnRleHQuZ2V0VHlwZXMoaW5jbHVkZURlcGVuZGVuY2llcyksXG4gICAgICAgICAgcmVsZWFzZVR5cGVzID0gW1xuICAgICAgICAgICAgLi4uY29udGV4dFR5cGVzLFxuICAgICAgICAgICAgLi4ucmVsZWFzZUNvbnRleHRUeXBlc1xuICAgICAgICAgIF07XG5cbiAgICByZXR1cm4gcmVsZWFzZVR5cGVzO1xuICB9XG5cbiAgdmVyaWZ5KCkge1xuICAgIGxldCB2ZXJpZmllcyA9IGZhbHNlO1xuXG4gICAgY29uc3QgY29tcGxleFR5cGVEZWNsYXJhdGlvblN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7XG5cbiAgICB0aGlzLmNvbnRleHQudHJhY2UoYFZlcmlmeWluZyB0aGUgJyR7Y29tcGxleFR5cGVEZWNsYXJhdGlvblN0cmluZ30nIGNvbXBsZXggdHlwZSBkZWNsYXJhdGlvbi4uLmAsIHRoaXMubm9kZSk7XG5cbiAgICBjb25zdCB0eXBlVmVyaWZpZXMgPSB0aGlzLnZlcmlmeVR5cGUoKTtcblxuICAgIGlmICh0eXBlVmVyaWZpZXMpIHtcbiAgICAgIGNvbnN0IHN1cGVyVHlwZXNWZXJpZnkgPSB0aGlzLnZlcmlmeVN1cGVyVHlwZXMoKTtcblxuICAgICAgaWYgKHN1cGVyVHlwZXNWZXJpZnkpIHtcbiAgICAgICAgY29uc3QgcHJvcGVydGllc1ZlcmlmeSA9IHRoaXMudmVyaWZ5UHJvcGVydGllcygpO1xuXG4gICAgICAgIGlmIChwcm9wZXJ0aWVzVmVyaWZ5KSB7XG4gICAgICAgICAgdGhpcy5jb250ZXh0LmFkZFR5cGUodGhpcy50eXBlKTtcblxuICAgICAgICAgIHZlcmlmaWVzID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIGlmICh2ZXJpZmllcykge1xuICAgICAgdGhpcy5jb250ZXh0LmRlYnVnKGAuLi52ZXJpZmllZCB0aGUgJyR7Y29tcGxleFR5cGVEZWNsYXJhdGlvblN0cmluZ30nIGNvbXBsZXggdHlwZSBkZWNsYXJhdGlvbi5gLCB0aGlzLm5vZGUpO1xuICAgIH1cblxuICAgIHJldHVybiB2ZXJpZmllcztcbiAgfVxuXG4gIHZlcmlmeVR5cGUoKSB7XG4gICAgbGV0IHR5cGVWZXJpZmllcyA9IGZhbHNlO1xuXG4gICAgY29uc3QgY29tcGxleFR5cGVTdHJpbmcgPSB0aGlzLnR5cGUuZ2V0U3RyaW5nKCk7XG5cbiAgICB0aGlzLmNvbnRleHQudHJhY2UoYFZlcmlmeWluZyB0aGUgJyR7Y29tcGxleFR5cGVTdHJpbmd9JyBjb21wbGV4IHR5cGUuLi5gLCB0aGlzLm5vZGUpO1xuXG4gICAgY29uc3QgdHlwZU5hbWUgPSB0aGlzLnR5cGUuZ2V0TmFtZSgpLFxuICAgICAgICAgIHJlbGVhc2VUeXBlcyA9IHRoaXMuZ2V0UmVsZWFzZVR5cGVzKCksXG4gICAgICAgICAgdHlwZVByZXNlbnQgPSByZWxlYXNlVHlwZXMuc29tZSgocmVsZWFzZVR5cGUpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHJlbGVhc2VUeXBlTmFtZU1hdGNoZXMgPSByZWxlYXNlVHlwZS5tYXRjaFR5cGVOYW1lKHR5cGVOYW1lKTtcblxuICAgICAgICAgICAgaWYgKHJlbGVhc2VUeXBlTmFtZU1hdGNoZXMpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSk7XG5cbiAgICBpZiAodHlwZVByZXNlbnQpIHtcbiAgICAgIHRoaXMuY29udGV4dC5kZWJ1ZyhgVGhlIHR5cGUgJyR7Y29tcGxleFR5cGVTdHJpbmd9JyBpcyBhbHJlYWR5IHByZXNlbnQgaW4gdGhlIHBhY2thZ2UuYCwgdGhpcy5ub2RlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdHlwZVZlcmlmaWVzID0gdHJ1ZTtcbiAgICB9XG5cbiAgICBpZiAodHlwZVZlcmlmaWVzKSB7XG4gICAgICB0aGlzLmNvbnRleHQuZGVidWcoYC4uLnZlcmlmaWVkIHRoZSAnJHtjb21wbGV4VHlwZVN0cmluZ30nIGNvbXBsZXggdHlwZS5gLCB0aGlzLm5vZGUpO1xuICAgIH1cblxuICAgIHJldHVybiB0eXBlVmVyaWZpZXM7XG4gIH1cblxuICB2ZXJpZnlTdXBlclR5cGUoc3VwZXJUeXBlKSB7XG4gICAgbGV0IHN1cGVyVHlwZVZlcmlmaWVzID0gZmFsc2U7XG5cbiAgICBjb25zdCBzdXBlclR5cGVTdHJpbmcgPSBzdXBlclR5cGUuZ2V0U3RyaW5nKCk7XG5cbiAgICB0aGlzLmNvbnRleHQudHJhY2UoYFZlcmlmeWluZyB0aGUgJyR7c3VwZXJUeXBlU3RyaW5nfScgc3VwZXItdHlwZS4uLmAsIHRoaXMubm9kZSk7XG5cbiAgICBjb25zdCBzdXBlclR5cGVOYW1lID0gc3VwZXJUeXBlLmdldE5hbWUoKSxcbiAgICAgICAgICBzdXBlclR5cGVQcmVzZW50ID0gdGhpcy5jb250ZXh0LmlzVHlwZVByZXNlbnRCeVR5cGVOYW1lKHN1cGVyVHlwZU5hbWUpO1xuXG4gICAgaWYgKHN1cGVyVHlwZVByZXNlbnQpIHtcbiAgICAgIHN1cGVyVHlwZVZlcmlmaWVzID0gdHJ1ZTtcbiAgICB9XG5cbiAgICBpZiAoc3VwZXJUeXBlVmVyaWZpZXMpIHtcbiAgICAgIHRoaXMuY29udGV4dC5kZWJ1ZyhgLi4udmVyaWZpZWQgdGhlICcke3N1cGVyVHlwZVN0cmluZ30nIHN1cGVyLXR5cGUuYCwgdGhpcy5ub2RlKTtcbiAgICB9XG5cbiAgICByZXR1cm4gc3VwZXJUeXBlVmVyaWZpZXM7XG4gIH1cblxuICB2ZXJpZnlTdXBlclR5cGVzKCkge1xuICAgIGxldCBzdXBlclR5cGVzVmVyaWZ5ID0gZmFsc2U7XG5cbiAgICB0aGlzLmNvbnRleHQudHJhY2UoYFZlcmlmeWluZyB0aGUgc3VwZXItdHlwZXMuLi5gLCB0aGlzLm5vZGUpO1xuXG4gICAgbGV0IHN1cGVyVHlwZXM7XG5cbiAgICBzdXBlclR5cGVzID0gdGhpcy50eXBlLmdldFN1cGVyVHlwZXMoKTtcblxuICAgIGNvbnN0IHR5cGVOYW1lID0gdGhpcy50eXBlLmdldE5hbWUoKSxcbiAgICAgICAgICBzdXBlclR5cGVzTGVuZ3RoID0gc3VwZXJUeXBlcy5sZW5ndGg7XG5cbiAgICBpZiAoc3VwZXJUeXBlc0xlbmd0aCA9PT0gMCkge1xuICAgICAgY29uc3QgdHlwZSA9IHRoaXMuY29udGV4dC5maW5kVHlwZUJ5VHlwZU5hbWUodHlwZU5hbWUpO1xuXG4gICAgICBpZiAodHlwZSA9PT0gbnVsbCkge1xuICAgICAgICBjb25zdCBzdXBlclR5cGUgPSBvYmplY3RUeXBlOyAvLy9cblxuICAgICAgICBzdXBlclR5cGVzLnB1c2goc3VwZXJUeXBlKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBjb25zdCB0eXBlQmFzaWMgPSB0aGlzLnR5cGUuaXNCYXNpYygpLFxuICAgICAgICAgIHR5cGVTdHJpbmcgPSB0aGlzLnR5cGUuZ2V0U3RyaW5nKCk7XG5cbiAgICBpZiAodHlwZUJhc2ljKSB7XG4gICAgICBzdXBlclR5cGVzVmVyaWZ5ID0gdHJ1ZTtcblxuICAgICAgdGhpcy5jb250ZXh0LnRyYWNlKGBUaGUgJyR7dHlwZVN0cmluZ30nIHR5cGUgaXMgYmFzaWMuLCB0aGlzLm5vZGVgKVxuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBzdXBlclR5cGVOYW1lcyA9IHN1cGVyVHlwZXMubWFwKChzdXBlclR5cGUpID0+IHtcbiAgICAgICAgICAgICAgY29uc3Qgc3VwZXJUeXBlTmFtZSA9IHN1cGVyVHlwZS5nZXROYW1lKCk7XG5cbiAgICAgICAgICAgICAgcmV0dXJuIHN1cGVyVHlwZU5hbWU7XG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIHN1cGVyVHlwZU5hbWVzSW5jbHVkZXNUeXBlTmFtZSA9IHN1cGVyVHlwZU5hbWVzLmluY2x1ZGVzKHR5cGVOYW1lKTtcblxuICAgICAgaWYgKHN1cGVyVHlwZU5hbWVzSW5jbHVkZXNUeXBlTmFtZSkge1xuICAgICAgICB0aGlzLmNvbnRleHQudHJhY2UoYFRoZSAnJHt0eXBlTmFtZX0nIHR5cGUgY2Fubm90IGJlIGEgc3VwZXItdHlwZSBgLCB0aGlzLm5vZGUpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaWYgKHN1cGVyVHlwZXNMZW5ndGggPT09IDApIHtcbiAgICAgICAgICBjb25zdCB0eXBlID0gdGhpcy5jb250ZXh0LmZpbmRUeXBlQnlUeXBlTmFtZSh0eXBlTmFtZSksXG4gICAgICAgICAgICAgICAgc3VwZXJUeXBlID0gdHlwZTsgLy8vXG5cbiAgICAgICAgICBzdXBlclR5cGVzLnB1c2goc3VwZXJUeXBlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHN1cGVyVHlwZXNWZXJpZnkgPSBzdXBlclR5cGVzLmV2ZXJ5KChzdXBlclR5cGUpID0+IHtcbiAgICAgICAgICBjb25zdCBzdXBlclR5cGVWZXJpZmllcyA9IHRoaXMudmVyaWZ5U3VwZXJUeXBlKHN1cGVyVHlwZSk7XG5cbiAgICAgICAgICBpZiAoc3VwZXJUeXBlVmVyaWZpZXMpIHtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG5cbiAgICAgICAgaWYgKHN1cGVyVHlwZXNWZXJpZnkpIHtcbiAgICAgICAgICBzdXBlclR5cGVzID0gc3VwZXJUeXBlcy5tYXAoKHN1cGVyVHlwZSkgPT4ge1xuICAgICAgICAgICAgY29uc3Qgc3VwZXJUeXBlTmFtZSA9IHN1cGVyVHlwZS5nZXROYW1lKCk7XG5cbiAgICAgICAgICAgIHN1cGVyVHlwZSA9IHRoaXMuY29udGV4dC5maW5kVHlwZUJ5VHlwZU5hbWUoc3VwZXJUeXBlTmFtZSk7XG5cbiAgICAgICAgICAgIHJldHVybiBzdXBlclR5cGU7XG4gICAgICAgICAgfSk7XG5cbiAgICAgICAgICBjb25zdCB0eXBlTmFtZSA9IHRoaXMudHlwZS5nZXROYW1lKCksXG4gICAgICAgICAgICBzdHJpbmcgPSBzdHJpbmdGcm9tVHlwZU5hbWVOYW1lQW5kU3VwZXJUeXBlcyh0eXBlTmFtZSwgc3VwZXJUeXBlcyk7XG5cbiAgICAgICAgICB0aGlzLnR5cGUuc2V0U3RyaW5nKHN0cmluZyk7XG5cbiAgICAgICAgICB0aGlzLnR5cGUuc2V0U3VwZXJUeXBlcyhzdXBlclR5cGVzKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChzdXBlclR5cGVzVmVyaWZ5KSB7XG4gICAgICB0aGlzLmNvbnRleHQuZGVidWcoYC4uLnZlcmlmaWVkIHRoZSBzdXBlci10eXBlcy5gLCB0aGlzLm5vZGUpO1xuICAgIH1cblxuICAgIHJldHVybiBzdXBlclR5cGVzVmVyaWZ5O1xuICB9XG5cbiAgdmVyaWZ5UHJvcGVydHkocHJvcGVydHksIHByb3BlcnRpZXMsIHN1cGVyVHlwZVByb3BlcnRpZXMpIHtcbiAgICBsZXQgcHJvcGVydHlWZXJpZmllcyA9IGZhbHNlO1xuXG4gICAgY29uc3QgcHJvcGVydHlTdHJpbmcgPSBwcm9wZXJ0eS5nZXRTdHJpbmcoKTtcblxuICAgIHRoaXMuY29udGV4dC50cmFjZShgVmVyaWZ5aW5nIHRoZSAnJHtwcm9wZXJ0eVN0cmluZ30nIHByb3BlcnR5Li4uYCwgdGhpcy5ub2RlKTtcblxuICAgIGNvbnN0IHByb3BlcnR5SWRlbnRpZmllciA9IHByb3BlcnR5LmdldElkZW50aWZpZXIoKSxcbiAgICAgICAgICBjb3VudCA9IHByb3BlcnRpZXMucmVkdWNlKChjb3VudCwgcHJvcGVydHkpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHByb3BlcnR5SWRlbnRpZmllck1hdGNoZXMgPSBwcm9wZXJ0eS5tYXRjaFByb3BlcnR5SWRlbnRpZmllcihwcm9wZXJ0eUlkZW50aWZpZXIpO1xuXG4gICAgICAgICAgICBpZiAocHJvcGVydHlJZGVudGlmaWVyTWF0Y2hlcykge1xuICAgICAgICAgICAgICBjb3VudCsrO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gY291bnQ7XG4gICAgICAgICAgfSwgMCk7XG5cbiAgICBpZiAoY291bnQgPiAxKSB7XG4gICAgICB0aGlzLmNvbnRleHQuZGVidWcoYFRoZSAnJHtwcm9wZXJ0eVN0cmluZ30nIHByb3BlcnR5IGFwcGVhcnMgbW9yZSB0aGFuIG9uY2UuYCwgdGhpcy5ub2RlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3Qgc3VwZXJUeXBlUHJvcGVydHkgPSBzdXBlclR5cGVQcm9wZXJ0aWVzLmZpbmQoKHN1cGVyVHlwZVByb3BlcnR5KSA9PiB7XG4gICAgICAgIGNvbnN0IHByb3BlcnR5SWRlbnRpZmllck1hdGNoZXMgPSBzdXBlclR5cGVQcm9wZXJ0eS5tYXRjaFByb3BlcnR5SWRlbnRpZmllcihwcm9wZXJ0eUlkZW50aWZpZXIpO1xuXG4gICAgICAgIGlmIChwcm9wZXJ0eUlkZW50aWZpZXJNYXRjaGVzKSB7XG4gICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cbiAgICAgIH0pIHx8IG51bGw7XG5cbiAgICAgIGlmIChzdXBlclR5cGVQcm9wZXJ0eSAhPT0gbnVsbCkge1xuICAgICAgICBjb25zdCBzdXBlclR5cGVQcm9wZXJ0eVN0cmluZyA9IHN1cGVyVHlwZVByb3BlcnR5LmdldFN0cmluZygpO1xuXG4gICAgICAgIHRoaXMuY29udGV4dC5kZWJ1ZyhgVGhlICcke3Byb3BlcnR5U3RyaW5nfScgcHJvcGVydHkgbWF0Y2hlcyB0aGUgc3VwZXItdHlwZSdzICcke3N1cGVyVHlwZVByb3BlcnR5U3RyaW5nfScgcHJvcGVydHkuYCwgdGhpcy5ub2RlKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGxldCBwcm9wZXJ0eVR5cGU7XG5cbiAgICAgICAgcHJvcGVydHlUeXBlID0gcHJvcGVydHkuZ2V0VHlwZSgpO1xuXG4gICAgICAgIGNvbnN0IHByb3BlcnR5VHlwZVZlcmlmaWVzID0gdGhpcy52ZXJpZnlQcm9wZXJ0eVR5cGUocHJvcGVydHlUeXBlKTtcblxuICAgICAgICBpZiAocHJvcGVydHlUeXBlVmVyaWZpZXMpIHtcbiAgICAgICAgICBjb25zdCBwcm9wZXJ0eVR5cGVOYW1lID0gcHJvcGVydHlUeXBlLmdldE5hbWUoKTtcblxuICAgICAgICAgIHByb3BlcnR5VHlwZSA9IHRoaXMuY29udGV4dC5maW5kVHlwZUJ5VHlwZU5hbWUocHJvcGVydHlUeXBlTmFtZSk7XG5cbiAgICAgICAgICBjb25zdCB0eXBlID0gcHJvcGVydHlUeXBlOyAgLy8vXG5cbiAgICAgICAgICBwcm9wZXJ0eS5zZXRUeXBlKHR5cGUpO1xuXG4gICAgICAgICAgcHJvcGVydHlWZXJpZmllcyA9IHRydWU7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAocHJvcGVydHlWZXJpZmllcykge1xuICAgICAgY29uc3QgdHlwZU5hbWUgPSB0aGlzLnR5cGUuZ2V0TmFtZSgpLFxuICAgICAgICAgICAgdHlwZU5hbWVNYXRjaGVzID0gcHJvcGVydHkubWF0Y2hUeXBlTmFtZSh0eXBlTmFtZSk7XG5cbiAgICAgIGlmICh0eXBlTmFtZU1hdGNoZXMpIHtcbiAgICAgICAgcHJvcGVydHkuc2V0VHlwZSh0aGlzLnR5cGUpO1xuICAgICAgfVxuXG4gICAgICB0aGlzLmNvbnRleHQuZGVidWcoYHZlcmlmaWVzIHRoZSAnJHtwcm9wZXJ0eVN0cmluZ30nIHByb3BlcnR5LmAsIHRoaXMubm9kZSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHByb3BlcnR5VmVyaWZpZXM7XG4gIH1cblxuICB2ZXJpZnlQcm9wZXJ0aWVzKCkge1xuICAgIGxldCBwcm9wZXJ0aWVzVmVyaWZ5O1xuXG4gICAgY29uc3QgaW5jbHVkZVN1cGVyVHlwZXMgPSBmYWxzZSxcbiAgICAgICAgICBwcm9wZXJ0aWVzID0gdGhpcy50eXBlLmdldFByb3BlcnRpZXMoaW5jbHVkZVN1cGVyVHlwZXMpLFxuICAgICAgICAgIHN1cGVyVHlwZXMgPSB0aGlzLnR5cGUuZ2V0U3VwZXJUeXBlcygpXG5cbiAgICBwcm9wZXJ0aWVzVmVyaWZ5ID0gc3VwZXJUeXBlcy5ldmVyeSgoc3VwZXJUeXBlKSA9PiB7XG4gICAgICBjb25zdCBzdXBlclR5cGVQcm9wZXJ0aWVzID0gc3VwZXJUeXBlLmdldFByb3BlcnRpZXMoKSxcbiAgICAgICAgICAgIHByb3BlcnRpZXNWZXJpZnkgPSBwcm9wZXJ0aWVzLmV2ZXJ5KChwcm9wZXJ0eSkgPT4ge1xuICAgICAgICAgICAgICBjb25zdCBwcm9wZXJ0eVZlcmlmaWVzID0gdGhpcy52ZXJpZnlQcm9wZXJ0eShwcm9wZXJ0eSwgcHJvcGVydGllcywgc3VwZXJUeXBlUHJvcGVydGllcyk7XG5cbiAgICAgICAgICAgICAgaWYgKHByb3BlcnR5VmVyaWZpZXMpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG5cbiAgICAgIGlmIChwcm9wZXJ0aWVzVmVyaWZ5KSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIHByb3BlcnRpZXNWZXJpZnk7XG4gIH1cblxuICB2ZXJpZnlQcm9wZXJ0eVR5cGUocHJvcGVydHlUeXBlKSB7XG4gICAgbGV0IHByb3BlcnR5VHlwZVZlcmlmaWVzID0gZmFsc2U7XG5cbiAgICBjb25zdCB0eXBlRXF1YWxUb1Byb3BlcnR5VHlwZSA9IHRoaXMudHlwZS5pc0VxdWFsVG8ocHJvcGVydHlUeXBlKTtcblxuICAgIGlmICh0eXBlRXF1YWxUb1Byb3BlcnR5VHlwZSkge1xuICAgICAgcHJvcGVydHlUeXBlVmVyaWZpZXMgPSB0cnVlO1xuICAgIH0gZWxzZSAge1xuICAgICAgY29uc3QgcHJvcGVydHlUeXBlU3RyaW5nID0gcHJvcGVydHlUeXBlLmdldFN0cmluZygpOyAvLy9cblxuICAgICAgdGhpcy5jb250ZXh0LnRyYWNlKGBWZXJpZnlpbmcgdGhlICcke3Byb3BlcnR5VHlwZVN0cmluZ30nIHByb3BlcnR5IHR5cGUuLi5gLCB0aGlzLm5vZGUpO1xuXG4gICAgICBjb25zdCBwcm9wZXJ0eVR5cGVOYW1lID0gcHJvcGVydHlUeXBlLmdldE5hbWUoKSxcbiAgICAgICAgICAgIHByb3BlcnR5VHlwZVByZXNlbnQgPSB0aGlzLmNvbnRleHQuaXNUeXBlUHJlc2VudEJ5VHlwZU5hbWUocHJvcGVydHlUeXBlTmFtZSk7XG5cbiAgICAgIGlmICghcHJvcGVydHlUeXBlUHJlc2VudCkge1xuICAgICAgICBjb25zdCBwcm9wZXJ0eVR5cGVTdHJpbmcgPSBwcm9wZXJ0eVR5cGUuZ2V0U3RyaW5nKCk7XG5cbiAgICAgICAgdGhpcy5jb250ZXh0LmRlYnVnKGBUaGUgJyR7cHJvcGVydHlUeXBlU3RyaW5nfScgcHJvcGVydHkgdHlwZSBpcyBub3QgcHJlc2VudC5gLCB0aGlzLm5vZGUpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcHJvcGVydHlUeXBlVmVyaWZpZXMgPSB0cnVlO1xuICAgICAgfVxuXG4gICAgICBpZiAocHJvcGVydHlUeXBlVmVyaWZpZXMpIHtcbiAgICAgICAgdGhpcy5jb250ZXh0LmRlYnVnKGAuLi52ZXJpZmllZCB0aGUgJyR7cHJvcGVydHlUeXBlU3RyaW5nfScgcHJvcGVydHkgdHlwZS5gLCB0aGlzLm5vZGUpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBwcm9wZXJ0eVR5cGVWZXJpZmllcztcbiAgfVxuXG4gIHN0YXRpYyBuYW1lID0gXCJDb21wbGV4VHlwZURlY2xhcmF0aW9uXCI7XG5cbiAgc3RhdGljIGZyb21Db21wbGV4VHlwZURlY2xhcmF0aW9uTm9kZShjb21wbGV4VHlwZURlY2xhcmF0aW9uTm9kZSwgY29udGV4dCkge1xuICAgIGNvbnN0IHsgVHlwZSB9ID0gZG9tLFxuICAgICAgICAgIG5vZGUgPSBjb21wbGV4VHlwZURlY2xhcmF0aW9uTm9kZSwgIC8vL1xuICAgICAgICAgIHR5cGUgPSBUeXBlLmZyb21Db21wbGV4VHlwZURlY2xhcmF0aW9uTm9kZShjb21wbGV4VHlwZURlY2xhcmF0aW9uTm9kZSwgY29udGV4dCksXG4gICAgICAgICAgdHlwZU5hbWUgPSB0eXBlLmdldE5hbWUoKSxcbiAgICAgICAgICBzdXBlclR5cGVzID0gdHlwZS5nZXRTdXBlclR5cGVzKCksXG4gICAgICAgICAgc3RyaW5nID0gc3RyaW5nRnJvbVR5cGVOYW1lTmFtZUFuZFN1cGVyVHlwZXModHlwZU5hbWUsIHN1cGVyVHlwZXMpLFxuICAgICAgICAgIGNvbXBsZXhUeXBlRGVjbGFyYXRpb24gPSBuZXcgQ29tcGxleFR5cGVEZWNsYXJhdGlvbihjb250ZXh0LCBub2RlLCBzdHJpbmcsIHR5cGUpO1xuXG4gICAgcmV0dXJuIGNvbXBsZXhUeXBlRGVjbGFyYXRpb247XG4gIH1cbn0pO1xuIl0sIm5hbWVzIjpbImRvbUFzc2lnbmVkIiwiQ29tcGxleFR5cGVEZWNsYXJhdGlvbiIsImNvbnRleHQiLCJub2RlIiwic3RyaW5nIiwidHlwZSIsImdldENvbnRleHQiLCJnZXROb2RlIiwiZ2V0U3RyaW5nIiwiZ2V0VHlwZSIsImdldFJlbGVhc2VDb250ZXh0IiwiZ2V0UmVsZWFzZVR5cGVzIiwiaW5jbHVkZURlcGVuZGVuY2llcyIsImluY2x1ZGVSZWxlYXNlIiwicmVsZWFzZUNvbnRleHQiLCJjb250ZXh0VHlwZXMiLCJnZXRUeXBlcyIsInJlbGVhc2VDb250ZXh0VHlwZXMiLCJyZWxlYXNlVHlwZXMiLCJ2ZXJpZnkiLCJ2ZXJpZmllcyIsImNvbXBsZXhUeXBlRGVjbGFyYXRpb25TdHJpbmciLCJ0cmFjZSIsInR5cGVWZXJpZmllcyIsInZlcmlmeVR5cGUiLCJzdXBlclR5cGVzVmVyaWZ5IiwidmVyaWZ5U3VwZXJUeXBlcyIsInByb3BlcnRpZXNWZXJpZnkiLCJ2ZXJpZnlQcm9wZXJ0aWVzIiwiYWRkVHlwZSIsImRlYnVnIiwiY29tcGxleFR5cGVTdHJpbmciLCJ0eXBlTmFtZSIsImdldE5hbWUiLCJ0eXBlUHJlc2VudCIsInNvbWUiLCJyZWxlYXNlVHlwZSIsInJlbGVhc2VUeXBlTmFtZU1hdGNoZXMiLCJtYXRjaFR5cGVOYW1lIiwidmVyaWZ5U3VwZXJUeXBlIiwic3VwZXJUeXBlIiwic3VwZXJUeXBlVmVyaWZpZXMiLCJzdXBlclR5cGVTdHJpbmciLCJzdXBlclR5cGVOYW1lIiwic3VwZXJUeXBlUHJlc2VudCIsImlzVHlwZVByZXNlbnRCeVR5cGVOYW1lIiwic3VwZXJUeXBlcyIsImdldFN1cGVyVHlwZXMiLCJzdXBlclR5cGVzTGVuZ3RoIiwibGVuZ3RoIiwiZmluZFR5cGVCeVR5cGVOYW1lIiwib2JqZWN0VHlwZSIsInB1c2giLCJ0eXBlQmFzaWMiLCJpc0Jhc2ljIiwidHlwZVN0cmluZyIsInN1cGVyVHlwZU5hbWVzIiwibWFwIiwic3VwZXJUeXBlTmFtZXNJbmNsdWRlc1R5cGVOYW1lIiwiaW5jbHVkZXMiLCJldmVyeSIsInN0cmluZ0Zyb21UeXBlTmFtZU5hbWVBbmRTdXBlclR5cGVzIiwic2V0U3RyaW5nIiwic2V0U3VwZXJUeXBlcyIsInZlcmlmeVByb3BlcnR5IiwicHJvcGVydHkiLCJwcm9wZXJ0aWVzIiwic3VwZXJUeXBlUHJvcGVydGllcyIsInByb3BlcnR5VmVyaWZpZXMiLCJwcm9wZXJ0eVN0cmluZyIsInByb3BlcnR5SWRlbnRpZmllciIsImdldElkZW50aWZpZXIiLCJjb3VudCIsInJlZHVjZSIsInByb3BlcnR5SWRlbnRpZmllck1hdGNoZXMiLCJtYXRjaFByb3BlcnR5SWRlbnRpZmllciIsInN1cGVyVHlwZVByb3BlcnR5IiwiZmluZCIsInN1cGVyVHlwZVByb3BlcnR5U3RyaW5nIiwicHJvcGVydHlUeXBlIiwicHJvcGVydHlUeXBlVmVyaWZpZXMiLCJ2ZXJpZnlQcm9wZXJ0eVR5cGUiLCJwcm9wZXJ0eVR5cGVOYW1lIiwic2V0VHlwZSIsInR5cGVOYW1lTWF0Y2hlcyIsImluY2x1ZGVTdXBlclR5cGVzIiwiZ2V0UHJvcGVydGllcyIsInR5cGVFcXVhbFRvUHJvcGVydHlUeXBlIiwiaXNFcXVhbFRvIiwicHJvcGVydHlUeXBlU3RyaW5nIiwicHJvcGVydHlUeXBlUHJlc2VudCIsImZyb21Db21wbGV4VHlwZURlY2xhcmF0aW9uTm9kZSIsImNvbXBsZXhUeXBlRGVjbGFyYXRpb25Ob2RlIiwiVHlwZSIsImRvbSIsImNvbXBsZXhUeXBlRGVjbGFyYXRpb24iLCJuYW1lIl0sIm1hcHBpbmdzIjoiQUFBQTs7OzsrQkFRQTs7O2VBQUE7OzsyREFOZ0I7b0JBRVc7cUJBRXlCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0lBRXBELFdBQWVBLElBQUFBLGdCQUFXLDJDQUFDO2FBQU1DLHVCQUNuQkMsT0FBTyxFQUFFQyxJQUFJLEVBQUVDLE1BQU0sRUFBRUMsSUFBSTtnQ0FEUko7UUFFN0IsSUFBSSxDQUFDQyxPQUFPLEdBQUdBO1FBQ2YsSUFBSSxDQUFDQyxJQUFJLEdBQUdBO1FBQ1osSUFBSSxDQUFDQyxNQUFNLEdBQUdBO1FBQ2QsSUFBSSxDQUFDQyxJQUFJLEdBQUdBOzs7O1lBR2RDLEtBQUFBO21CQUFBQSxTQUFBQTtnQkFDRSxPQUFPLElBQUksQ0FBQ0osT0FBTztZQUNyQjs7O1lBRUFLLEtBQUFBO21CQUFBQSxTQUFBQTtnQkFDRSxPQUFPLElBQUksQ0FBQ0osSUFBSTtZQUNsQjs7O1lBRUFLLEtBQUFBO21CQUFBQSxTQUFBQTtnQkFDRSxPQUFPLElBQUksQ0FBQ0osTUFBTTtZQUNwQjs7O1lBRUFLLEtBQUFBO21CQUFBQSxTQUFBQTtnQkFDRSxPQUFPLElBQUksQ0FBQ0osSUFBSTtZQUNsQjs7O1lBRUFLLEtBQUFBO21CQUFBQSxTQUFBQTtnQkFBc0IsT0FBTyxJQUFJLENBQUNSLE9BQU8sQ0FBQ1EsaUJBQWlCO1lBQUk7OztZQUUvREMsS0FBQUE7bUJBQUFBLFNBQUFBO2dCQUNFLElBQU1DLHNCQUFzQixPQUN0QkMsaUJBQWlCLE9BQ2pCQyxpQkFBaUIsSUFBSSxDQUFDSixpQkFBaUIsSUFDdkNLLGVBQWUsSUFBSSxDQUFDYixPQUFPLENBQUNjLFFBQVEsQ0FBQ0gsaUJBQ3JDSSxzQkFBc0JILGVBQWVFLFFBQVEsQ0FBQ0osc0JBQzlDTSxlQUFlLEFBQ2IscUJBQUdILHFCQUNILHFCQUFHRTtnQkFHWCxPQUFPQztZQUNUOzs7WUFFQUMsS0FBQUE7bUJBQUFBLFNBQUFBO2dCQUNFLElBQUlDLFdBQVc7Z0JBRWYsSUFBTUMsK0JBQStCLElBQUksQ0FBQ2IsU0FBUztnQkFFbkQsSUFBSSxDQUFDTixPQUFPLENBQUNvQixLQUFLLENBQUMsQUFBQyxrQkFBOEMsT0FBN0JELDhCQUE2QixrQ0FBZ0MsSUFBSSxDQUFDbEIsSUFBSTtnQkFFM0csSUFBTW9CLGVBQWUsSUFBSSxDQUFDQyxVQUFVO2dCQUVwQyxJQUFJRCxjQUFjO29CQUNoQixJQUFNRSxtQkFBbUIsSUFBSSxDQUFDQyxnQkFBZ0I7b0JBRTlDLElBQUlELGtCQUFrQjt3QkFDcEIsSUFBTUUsbUJBQW1CLElBQUksQ0FBQ0MsZ0JBQWdCO3dCQUU5QyxJQUFJRCxrQkFBa0I7NEJBQ3BCLElBQUksQ0FBQ3pCLE9BQU8sQ0FBQzJCLE9BQU8sQ0FBQyxJQUFJLENBQUN4QixJQUFJOzRCQUU5QmUsV0FBVzt3QkFDYjtvQkFDRjtnQkFDRjtnQkFFQSxJQUFJQSxVQUFVO29CQUNaLElBQUksQ0FBQ2xCLE9BQU8sQ0FBQzRCLEtBQUssQ0FBQyxBQUFDLG9CQUFnRCxPQUE3QlQsOEJBQTZCLGdDQUE4QixJQUFJLENBQUNsQixJQUFJO2dCQUM3RztnQkFFQSxPQUFPaUI7WUFDVDs7O1lBRUFJLEtBQUFBO21CQUFBQSxTQUFBQTtnQkFDRSxJQUFJRCxlQUFlO2dCQUVuQixJQUFNUSxvQkFBb0IsSUFBSSxDQUFDMUIsSUFBSSxDQUFDRyxTQUFTO2dCQUU3QyxJQUFJLENBQUNOLE9BQU8sQ0FBQ29CLEtBQUssQ0FBQyxBQUFDLGtCQUFtQyxPQUFsQlMsbUJBQWtCLHNCQUFvQixJQUFJLENBQUM1QixJQUFJO2dCQUVwRixJQUFNNkIsV0FBVyxJQUFJLENBQUMzQixJQUFJLENBQUM0QixPQUFPLElBQzVCZixlQUFlLElBQUksQ0FBQ1AsZUFBZSxJQUNuQ3VCLGNBQWNoQixhQUFhaUIsSUFBSSxDQUFDLFNBQUNDO29CQUMvQixJQUFNQyx5QkFBeUJELFlBQVlFLGFBQWEsQ0FBQ047b0JBRXpELElBQUlLLHdCQUF3Qjt3QkFDMUIsT0FBTztvQkFDVDtnQkFDRjtnQkFFTixJQUFJSCxhQUFhO29CQUNmLElBQUksQ0FBQ2hDLE9BQU8sQ0FBQzRCLEtBQUssQ0FBQyxBQUFDLGFBQThCLE9BQWxCQyxtQkFBa0IseUNBQXVDLElBQUksQ0FBQzVCLElBQUk7Z0JBQ3BHLE9BQU87b0JBQ0xvQixlQUFlO2dCQUNqQjtnQkFFQSxJQUFJQSxjQUFjO29CQUNoQixJQUFJLENBQUNyQixPQUFPLENBQUM0QixLQUFLLENBQUMsQUFBQyxvQkFBcUMsT0FBbEJDLG1CQUFrQixvQkFBa0IsSUFBSSxDQUFDNUIsSUFBSTtnQkFDdEY7Z0JBRUEsT0FBT29CO1lBQ1Q7OztZQUVBZ0IsS0FBQUE7bUJBQUFBLFNBQUFBLGdCQUFnQkMsU0FBUztnQkFDdkIsSUFBSUMsb0JBQW9CO2dCQUV4QixJQUFNQyxrQkFBa0JGLFVBQVVoQyxTQUFTO2dCQUUzQyxJQUFJLENBQUNOLE9BQU8sQ0FBQ29CLEtBQUssQ0FBQyxBQUFDLGtCQUFpQyxPQUFoQm9CLGlCQUFnQixvQkFBa0IsSUFBSSxDQUFDdkMsSUFBSTtnQkFFaEYsSUFBTXdDLGdCQUFnQkgsVUFBVVAsT0FBTyxJQUNqQ1csbUJBQW1CLElBQUksQ0FBQzFDLE9BQU8sQ0FBQzJDLHVCQUF1QixDQUFDRjtnQkFFOUQsSUFBSUMsa0JBQWtCO29CQUNwQkgsb0JBQW9CO2dCQUN0QjtnQkFFQSxJQUFJQSxtQkFBbUI7b0JBQ3JCLElBQUksQ0FBQ3ZDLE9BQU8sQ0FBQzRCLEtBQUssQ0FBQyxBQUFDLG9CQUFtQyxPQUFoQlksaUJBQWdCLGtCQUFnQixJQUFJLENBQUN2QyxJQUFJO2dCQUNsRjtnQkFFQSxPQUFPc0M7WUFDVDs7O1lBRUFmLEtBQUFBO21CQUFBQSxTQUFBQTs7Z0JBQ0UsSUFBSUQsbUJBQW1CO2dCQUV2QixJQUFJLENBQUN2QixPQUFPLENBQUNvQixLQUFLLENBQUUsZ0NBQStCLElBQUksQ0FBQ25CLElBQUk7Z0JBRTVELElBQUkyQztnQkFFSkEsYUFBYSxJQUFJLENBQUN6QyxJQUFJLENBQUMwQyxhQUFhO2dCQUVwQyxJQUFNZixXQUFXLElBQUksQ0FBQzNCLElBQUksQ0FBQzRCLE9BQU8sSUFDNUJlLG1CQUFtQkYsV0FBV0csTUFBTTtnQkFFMUMsSUFBSUQscUJBQXFCLEdBQUc7b0JBQzFCLElBQU0zQyxPQUFPLElBQUksQ0FBQ0gsT0FBTyxDQUFDZ0Qsa0JBQWtCLENBQUNsQjtvQkFFN0MsSUFBSTNCLFNBQVMsTUFBTTt3QkFDakIsSUFBTW1DLFlBQVlXLGdCQUFVLEVBQUUsR0FBRzt3QkFFakNMLFdBQVdNLElBQUksQ0FBQ1o7b0JBQ2xCO2dCQUNGO2dCQUVBLElBQU1hLFlBQVksSUFBSSxDQUFDaEQsSUFBSSxDQUFDaUQsT0FBTyxJQUM3QkMsYUFBYSxJQUFJLENBQUNsRCxJQUFJLENBQUNHLFNBQVM7Z0JBRXRDLElBQUk2QyxXQUFXO29CQUNiNUIsbUJBQW1CO29CQUVuQixJQUFJLENBQUN2QixPQUFPLENBQUNvQixLQUFLLENBQUMsQUFBQyxRQUFrQixPQUFYaUMsWUFBVztnQkFDeEMsT0FBTztvQkFDTCxJQUFNQyxpQkFBaUJWLFdBQVdXLEdBQUcsQ0FBQyxTQUFDakI7d0JBQy9CLElBQU1HLGdCQUFnQkgsVUFBVVAsT0FBTzt3QkFFdkMsT0FBT1U7b0JBQ1QsSUFDQWUsaUNBQWlDRixlQUFlRyxRQUFRLENBQUMzQjtvQkFFL0QsSUFBSTBCLGdDQUFnQzt3QkFDbEMsSUFBSSxDQUFDeEQsT0FBTyxDQUFDb0IsS0FBSyxDQUFDLEFBQUMsUUFBZ0IsT0FBVFUsVUFBUyxtQ0FBaUMsSUFBSSxDQUFDN0IsSUFBSTtvQkFDaEYsT0FBTzt3QkFDTCxJQUFJNkMscUJBQXFCLEdBQUc7NEJBQzFCLElBQU0zQyxRQUFPLElBQUksQ0FBQ0gsT0FBTyxDQUFDZ0Qsa0JBQWtCLENBQUNsQixXQUN2Q1EsYUFBWW5DLE9BQU0sR0FBRzs0QkFFM0J5QyxXQUFXTSxJQUFJLENBQUNaO3dCQUNsQjt3QkFFQWYsbUJBQW1CcUIsV0FBV2MsS0FBSyxDQUFDLFNBQUNwQjs0QkFDbkMsSUFBTUMsb0JBQW9CLE1BQUtGLGVBQWUsQ0FBQ0M7NEJBRS9DLElBQUlDLG1CQUFtQjtnQ0FDckIsT0FBTzs0QkFDVDt3QkFDRjt3QkFFQSxJQUFJaEIsa0JBQWtCOzRCQUNwQnFCLGFBQWFBLFdBQVdXLEdBQUcsQ0FBQyxTQUFDakI7Z0NBQzNCLElBQU1HLGdCQUFnQkgsVUFBVVAsT0FBTztnQ0FFdkNPLFlBQVksTUFBS3RDLE9BQU8sQ0FBQ2dELGtCQUFrQixDQUFDUDtnQ0FFNUMsT0FBT0g7NEJBQ1Q7NEJBRUEsSUFBTVIsWUFBVyxJQUFJLENBQUMzQixJQUFJLENBQUM0QixPQUFPLElBQ2hDN0IsU0FBU3lELElBQUFBLDBDQUFtQyxFQUFDN0IsV0FBVWM7NEJBRXpELElBQUksQ0FBQ3pDLElBQUksQ0FBQ3lELFNBQVMsQ0FBQzFEOzRCQUVwQixJQUFJLENBQUNDLElBQUksQ0FBQzBELGFBQWEsQ0FBQ2pCO3dCQUMxQjtvQkFDRjtnQkFDRjtnQkFFQSxJQUFJckIsa0JBQWtCO29CQUNwQixJQUFJLENBQUN2QixPQUFPLENBQUM0QixLQUFLLENBQUUsZ0NBQStCLElBQUksQ0FBQzNCLElBQUk7Z0JBQzlEO2dCQUVBLE9BQU9zQjtZQUNUOzs7WUFFQXVDLEtBQUFBO21CQUFBQSxTQUFBQSxlQUFlQyxRQUFRLEVBQUVDLFVBQVUsRUFBRUMsbUJBQW1CO2dCQUN0RCxJQUFJQyxtQkFBbUI7Z0JBRXZCLElBQU1DLGlCQUFpQkosU0FBU3pELFNBQVM7Z0JBRXpDLElBQUksQ0FBQ04sT0FBTyxDQUFDb0IsS0FBSyxDQUFDLEFBQUMsa0JBQWdDLE9BQWYrQyxnQkFBZSxrQkFBZ0IsSUFBSSxDQUFDbEUsSUFBSTtnQkFFN0UsSUFBTW1FLHFCQUFxQkwsU0FBU00sYUFBYSxJQUMzQ0MsUUFBUU4sV0FBV08sTUFBTSxDQUFDLFNBQUNELE9BQU9QO29CQUNoQyxJQUFNUyw0QkFBNEJULFNBQVNVLHVCQUF1QixDQUFDTDtvQkFFbkUsSUFBSUksMkJBQTJCO3dCQUM3QkY7b0JBQ0Y7b0JBRUEsT0FBT0E7Z0JBQ1QsR0FBRztnQkFFVCxJQUFJQSxRQUFRLEdBQUc7b0JBQ2IsSUFBSSxDQUFDdEUsT0FBTyxDQUFDNEIsS0FBSyxDQUFDLEFBQUMsUUFBc0IsT0FBZnVDLGdCQUFlLHVDQUFxQyxJQUFJLENBQUNsRSxJQUFJO2dCQUMxRixPQUFPO29CQUNMLElBQU15RSxvQkFBb0JULG9CQUFvQlUsSUFBSSxDQUFDLFNBQUNEO3dCQUNsRCxJQUFNRiw0QkFBNEJFLGtCQUFrQkQsdUJBQXVCLENBQUNMO3dCQUU1RSxJQUFJSSwyQkFBMkI7NEJBQzdCLE9BQU87d0JBQ1Q7b0JBQ0YsTUFBTTtvQkFFTixJQUFJRSxzQkFBc0IsTUFBTTt3QkFDOUIsSUFBTUUsMEJBQTBCRixrQkFBa0JwRSxTQUFTO3dCQUUzRCxJQUFJLENBQUNOLE9BQU8sQ0FBQzRCLEtBQUssQ0FBQyxBQUFDLFFBQTZEZ0QsT0FBdERULGdCQUFlLHlDQUErRCxPQUF4QlMseUJBQXdCLGdCQUFjLElBQUksQ0FBQzNFLElBQUk7b0JBQ2xJLE9BQU87d0JBQ0wsSUFBSTRFO3dCQUVKQSxlQUFlZCxTQUFTeEQsT0FBTzt3QkFFL0IsSUFBTXVFLHVCQUF1QixJQUFJLENBQUNDLGtCQUFrQixDQUFDRjt3QkFFckQsSUFBSUMsc0JBQXNCOzRCQUN4QixJQUFNRSxtQkFBbUJILGFBQWE5QyxPQUFPOzRCQUU3QzhDLGVBQWUsSUFBSSxDQUFDN0UsT0FBTyxDQUFDZ0Qsa0JBQWtCLENBQUNnQzs0QkFFL0MsSUFBTTdFLE9BQU8wRSxjQUFlLEdBQUc7NEJBRS9CZCxTQUFTa0IsT0FBTyxDQUFDOUU7NEJBRWpCK0QsbUJBQW1CO3dCQUNyQjtvQkFDRjtnQkFDRjtnQkFFQSxJQUFJQSxrQkFBa0I7b0JBQ3BCLElBQU1wQyxXQUFXLElBQUksQ0FBQzNCLElBQUksQ0FBQzRCLE9BQU8sSUFDNUJtRCxrQkFBa0JuQixTQUFTM0IsYUFBYSxDQUFDTjtvQkFFL0MsSUFBSW9ELGlCQUFpQjt3QkFDbkJuQixTQUFTa0IsT0FBTyxDQUFDLElBQUksQ0FBQzlFLElBQUk7b0JBQzVCO29CQUVBLElBQUksQ0FBQ0gsT0FBTyxDQUFDNEIsS0FBSyxDQUFDLEFBQUMsaUJBQStCLE9BQWZ1QyxnQkFBZSxnQkFBYyxJQUFJLENBQUNsRSxJQUFJO2dCQUM1RTtnQkFFQSxPQUFPaUU7WUFDVDs7O1lBRUF4QyxLQUFBQTttQkFBQUEsU0FBQUE7O2dCQUNFLElBQUlEO2dCQUVKLElBQU0wRCxvQkFBb0IsT0FDcEJuQixhQUFhLElBQUksQ0FBQzdELElBQUksQ0FBQ2lGLGFBQWEsQ0FBQ0Qsb0JBQ3JDdkMsYUFBYSxJQUFJLENBQUN6QyxJQUFJLENBQUMwQyxhQUFhO2dCQUUxQ3BCLG1CQUFtQm1CLFdBQVdjLEtBQUssQ0FBQyxTQUFDcEI7b0JBQ25DLElBQU0yQixzQkFBc0IzQixVQUFVOEMsYUFBYSxJQUM3QzNELG1CQUFtQnVDLFdBQVdOLEtBQUssQ0FBQyxTQUFDSzt3QkFDbkMsSUFBTUcsbUJBQW1CLE1BQUtKLGNBQWMsQ0FBQ0MsVUFBVUMsWUFBWUM7d0JBRW5FLElBQUlDLGtCQUFrQjs0QkFDcEIsT0FBTzt3QkFDVDtvQkFDRjtvQkFFTixJQUFJekMsa0JBQWtCO3dCQUNwQixPQUFPO29CQUNUO2dCQUNGO2dCQUVBLE9BQU9BO1lBQ1Q7OztZQUVBc0QsS0FBQUE7bUJBQUFBLFNBQUFBLG1CQUFtQkYsWUFBWTtnQkFDN0IsSUFBSUMsdUJBQXVCO2dCQUUzQixJQUFNTywwQkFBMEIsSUFBSSxDQUFDbEYsSUFBSSxDQUFDbUYsU0FBUyxDQUFDVDtnQkFFcEQsSUFBSVEseUJBQXlCO29CQUMzQlAsdUJBQXVCO2dCQUN6QixPQUFRO29CQUNOLElBQU1TLHFCQUFxQlYsYUFBYXZFLFNBQVMsSUFBSSxHQUFHO29CQUV4RCxJQUFJLENBQUNOLE9BQU8sQ0FBQ29CLEtBQUssQ0FBQyxBQUFDLGtCQUFvQyxPQUFuQm1FLG9CQUFtQix1QkFBcUIsSUFBSSxDQUFDdEYsSUFBSTtvQkFFdEYsSUFBTStFLG1CQUFtQkgsYUFBYTlDLE9BQU8sSUFDdkN5RCxzQkFBc0IsSUFBSSxDQUFDeEYsT0FBTyxDQUFDMkMsdUJBQXVCLENBQUNxQztvQkFFakUsSUFBSSxDQUFDUSxxQkFBcUI7d0JBQ3hCLElBQU1ELHNCQUFxQlYsYUFBYXZFLFNBQVM7d0JBRWpELElBQUksQ0FBQ04sT0FBTyxDQUFDNEIsS0FBSyxDQUFDLEFBQUMsUUFBMEIsT0FBbkIyRCxxQkFBbUIsb0NBQWtDLElBQUksQ0FBQ3RGLElBQUk7b0JBQzNGLE9BQU87d0JBQ0w2RSx1QkFBdUI7b0JBQ3pCO29CQUVBLElBQUlBLHNCQUFzQjt3QkFDeEIsSUFBSSxDQUFDOUUsT0FBTyxDQUFDNEIsS0FBSyxDQUFDLEFBQUMsb0JBQXNDLE9BQW5CMkQsb0JBQW1CLHFCQUFtQixJQUFJLENBQUN0RixJQUFJO29CQUN4RjtnQkFDRjtnQkFFQSxPQUFPNkU7WUFDVDs7OztZQUlPVyxLQUFBQTttQkFBUCxTQUFPQSwrQkFBK0JDLDBCQUEwQixFQUFFMUYsT0FBTztnQkFDdkUsSUFBTSxBQUFFMkYsT0FBU0MsWUFBRyxDQUFaRCxNQUNGMUYsT0FBT3lGLDRCQUNQdkYsT0FBT3dGLEtBQUtGLDhCQUE4QixDQUFDQyw0QkFBNEIxRixVQUN2RThCLFdBQVczQixLQUFLNEIsT0FBTyxJQUN2QmEsYUFBYXpDLEtBQUswQyxhQUFhLElBQy9CM0MsU0FBU3lELElBQUFBLDBDQUFtQyxFQUFDN0IsVUFBVWMsYUFDdkRpRCx5QkFBeUIsSUFBSTlGLHVCQUF1QkMsU0FBU0MsTUFBTUMsUUFBUUM7Z0JBRWpGLE9BQU8wRjtZQUNUOzs7O0tBWkEsMENBQU9DLFFBQU8ifQ==
|
|
@@ -90,9 +90,10 @@ function _interop_require_wildcard(obj, nodeInterop) {
|
|
|
90
90
|
}
|
|
91
91
|
var _ConstructorDeclaration;
|
|
92
92
|
var _default = (0, _dom.domAssigned)((_ConstructorDeclaration = /*#__PURE__*/ function() {
|
|
93
|
-
function ConstructorDeclaration(context, string, constructor) {
|
|
93
|
+
function ConstructorDeclaration(context, node, string, constructor) {
|
|
94
94
|
_class_call_check(this, ConstructorDeclaration);
|
|
95
95
|
this.context = context;
|
|
96
|
+
this.node = node;
|
|
96
97
|
this.string = string;
|
|
97
98
|
this.constructor = constructor;
|
|
98
99
|
}
|
|
@@ -103,6 +104,12 @@ var _default = (0, _dom.domAssigned)((_ConstructorDeclaration = /*#__PURE__*/ fu
|
|
|
103
104
|
return this.context;
|
|
104
105
|
}
|
|
105
106
|
},
|
|
107
|
+
{
|
|
108
|
+
key: "getNode",
|
|
109
|
+
value: function getNode() {
|
|
110
|
+
return this.node;
|
|
111
|
+
}
|
|
112
|
+
},
|
|
106
113
|
{
|
|
107
114
|
key: "getString",
|
|
108
115
|
value: function getString() {
|
|
@@ -120,7 +127,7 @@ var _default = (0, _dom.domAssigned)((_ConstructorDeclaration = /*#__PURE__*/ fu
|
|
|
120
127
|
value: function verify() {
|
|
121
128
|
var verifies;
|
|
122
129
|
var constructorDeclarationString = this.getString(); ///
|
|
123
|
-
this.context.trace("Verifying the '".concat(constructorDeclarationString, "' constructor declaration..."));
|
|
130
|
+
this.context.trace("Verifying the '".concat(constructorDeclarationString, "' constructor declaration..."), this.node);
|
|
124
131
|
var constructorTypeVerifies = this.verifyConstructorType();
|
|
125
132
|
if (constructorTypeVerifies) {
|
|
126
133
|
var constructorVerifies = this.verifyConstructor();
|
|
@@ -130,7 +137,7 @@ var _default = (0, _dom.domAssigned)((_ConstructorDeclaration = /*#__PURE__*/ fu
|
|
|
130
137
|
}
|
|
131
138
|
}
|
|
132
139
|
if (verifies) {
|
|
133
|
-
this.context.debug("...verified the '".concat(constructorDeclarationString, "' constructor declaration."));
|
|
140
|
+
this.context.debug("...verified the '".concat(constructorDeclarationString, "' constructor declaration."), this.node);
|
|
134
141
|
}
|
|
135
142
|
return verifies;
|
|
136
143
|
}
|
|
@@ -140,11 +147,11 @@ var _default = (0, _dom.domAssigned)((_ConstructorDeclaration = /*#__PURE__*/ fu
|
|
|
140
147
|
value: function verifyConstructor() {
|
|
141
148
|
var constructorVerifies;
|
|
142
149
|
var constructorString = this.constructor.getString();
|
|
143
|
-
this.context.trace("Verifying the '".concat(constructorString, "' constructor..."));
|
|
150
|
+
this.context.trace("Verifying the '".concat(constructorString, "' constructor..."), this.node);
|
|
144
151
|
var term = this.constructor.getTerm(), termNode = term.getNode();
|
|
145
152
|
constructorVerifies = _constructor.default.verifyTerm(termNode, this.context);
|
|
146
153
|
if (constructorVerifies) {
|
|
147
|
-
this.context.debug("...verified the '".concat(constructorString, "' constructor."));
|
|
154
|
+
this.context.debug("...verified the '".concat(constructorString, "' constructor."), this.node);
|
|
148
155
|
}
|
|
149
156
|
return constructorVerifies;
|
|
150
157
|
}
|
|
@@ -156,23 +163,23 @@ var _default = (0, _dom.domAssigned)((_ConstructorDeclaration = /*#__PURE__*/ fu
|
|
|
156
163
|
var type;
|
|
157
164
|
type = this.constructor.getType();
|
|
158
165
|
var typeName = type.getName(), typeString = type.getString();
|
|
159
|
-
this.context.trace("Verifying the '".concat(typeString, "' type..."));
|
|
166
|
+
this.context.trace("Verifying the '".concat(typeString, "' type..."), this.node);
|
|
160
167
|
var includeSupertypes = false, provisional = type.isProvisional(includeSupertypes);
|
|
161
168
|
type = this.context.findTypeByTypeName(typeName);
|
|
162
169
|
var typePresent = type !== null;
|
|
163
170
|
if (!typePresent) {
|
|
164
|
-
this.context.debug("The '".concat(typeString, "' type is not present."));
|
|
171
|
+
this.context.debug("The '".concat(typeString, "' type is not present."), this.node);
|
|
165
172
|
} else {
|
|
166
173
|
var provisionalMatches = type.matchProvisional(provisional);
|
|
167
174
|
if (!provisionalMatches) {
|
|
168
|
-
provisional ? this.context.debug("The '".concat(typeString, "' type is present but not provisional.")) : this.context.debug("The '".concat(typeString, "' type is present but provisional."));
|
|
175
|
+
provisional ? this.context.debug("The '".concat(typeString, "' type is present but not provisional."), this.node) : this.context.debug("The '".concat(typeString, "' type is present but provisional."), this.node);
|
|
169
176
|
} else {
|
|
170
177
|
this.constructor.setType(type);
|
|
171
178
|
constructorTypeVerifies = true;
|
|
172
179
|
}
|
|
173
180
|
}
|
|
174
181
|
if (constructorTypeVerifies) {
|
|
175
|
-
this.context.debug("...verified the '".concat(typeString, "' type."));
|
|
182
|
+
this.context.debug("...verified the '".concat(typeString, "' type."), this.node);
|
|
176
183
|
}
|
|
177
184
|
return constructorTypeVerifies;
|
|
178
185
|
}
|
|
@@ -181,7 +188,7 @@ var _default = (0, _dom.domAssigned)((_ConstructorDeclaration = /*#__PURE__*/ fu
|
|
|
181
188
|
{
|
|
182
189
|
key: "fromConstructorDeclarationNode",
|
|
183
190
|
value: function fromConstructorDeclarationNode(constructorDeclarationNode, context) {
|
|
184
|
-
var Constructor = _dom.default.Constructor, node = constructorDeclarationNode, string = context.nodeAsString(node), constructor = Constructor.fromConstructorDeclarationNode(constructorDeclarationNode, context), constructorDeclaration = new ConstructorDeclaration(context, string, constructor);
|
|
191
|
+
var Constructor = _dom.default.Constructor, node = constructorDeclarationNode, string = context.nodeAsString(node), constructor = Constructor.fromConstructorDeclarationNode(constructorDeclarationNode, context), constructorDeclaration = new ConstructorDeclaration(context, node, string, constructor);
|
|
185
192
|
return constructorDeclaration;
|
|
186
193
|
}
|
|
187
194
|
}
|
|
@@ -189,4 +196,4 @@ var _default = (0, _dom.domAssigned)((_ConstructorDeclaration = /*#__PURE__*/ fu
|
|
|
189
196
|
return ConstructorDeclaration;
|
|
190
197
|
}(), _define_property(_ConstructorDeclaration, "name", "ConstructorDeclaration"), _ConstructorDeclaration));
|
|
191
198
|
|
|
192
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
199
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9kb20vZGVjbGFyYXRpb24vY29uc3RydWN0b3IuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmltcG9ydCBkb20gZnJvbSBcIi4uLy4uL2RvbVwiO1xuXG5pbXBvcnQgY29uc3RydWN0b3JWZXJpZmllciBmcm9tIFwiLi4vLi4vdmVyaWZpZXIvY29uc3RydWN0b3JcIjtcblxuaW1wb3J0IHsgZG9tQXNzaWduZWQgfSBmcm9tIFwiLi4vLi4vZG9tXCI7XG5cbmV4cG9ydCBkZWZhdWx0IGRvbUFzc2lnbmVkKGNsYXNzIENvbnN0cnVjdG9yRGVjbGFyYXRpb24ge1xuICBjb25zdHJ1Y3Rvcihjb250ZXh0LCBub2RlLCBzdHJpbmcsIGNvbnN0cnVjdG9yKSB7XG4gICAgdGhpcy5jb250ZXh0ID0gY29udGV4dDtcbiAgICB0aGlzLm5vZGUgPSBub2RlO1xuICAgIHRoaXMuc3RyaW5nID0gc3RyaW5nO1xuICAgIHRoaXMuY29uc3RydWN0b3IgPSBjb25zdHJ1Y3RvcjtcbiAgfVxuXG4gIGdldENvbnRleHQoKSB7XG4gICAgcmV0dXJuIHRoaXMuY29udGV4dDtcbiAgfVxuXG4gIGdldE5vZGUoKSB7XG4gICAgcmV0dXJuIHRoaXMubm9kZTtcbiAgfVxuXG4gIGdldFN0cmluZygpIHtcbiAgICByZXR1cm4gdGhpcy5zdHJpbmc7XG4gIH1cblxuICBnZXRDb25zdHJ1Y3RvcigpIHtcbiAgICByZXR1cm4gdGhpcy5jb25zdHJ1Y3RvcjtcbiAgfVxuXG4gIHZlcmlmeSgpIHtcbiAgICBsZXQgdmVyaWZpZXM7XG5cbiAgICBjb25zdCBjb25zdHJ1Y3RvckRlY2xhcmF0aW9uU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTsgLy8vXG5cbiAgICB0aGlzLmNvbnRleHQudHJhY2UoYFZlcmlmeWluZyB0aGUgJyR7Y29uc3RydWN0b3JEZWNsYXJhdGlvblN0cmluZ30nIGNvbnN0cnVjdG9yIGRlY2xhcmF0aW9uLi4uYCwgdGhpcy5ub2RlKTtcblxuICAgIGNvbnN0IGNvbnN0cnVjdG9yVHlwZVZlcmlmaWVzID0gdGhpcy52ZXJpZnlDb25zdHJ1Y3RvclR5cGUoKTtcblxuICAgIGlmIChjb25zdHJ1Y3RvclR5cGVWZXJpZmllcykge1xuICAgICAgY29uc3QgY29uc3RydWN0b3JWZXJpZmllcyA9IHRoaXMudmVyaWZ5Q29uc3RydWN0b3IoKTtcblxuICAgICAgaWYgKGNvbnN0cnVjdG9yVmVyaWZpZXMpIHtcbiAgICAgICAgdGhpcy5jb250ZXh0LmFkZENvbnN0cnVjdG9yKHRoaXMuY29uc3RydWN0b3IpO1xuXG4gICAgICAgIHZlcmlmaWVzID0gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAodmVyaWZpZXMpIHtcbiAgICAgIHRoaXMuY29udGV4dC5kZWJ1ZyhgLi4udmVyaWZpZWQgdGhlICcke2NvbnN0cnVjdG9yRGVjbGFyYXRpb25TdHJpbmd9JyBjb25zdHJ1Y3RvciBkZWNsYXJhdGlvbi5gLCB0aGlzLm5vZGUpO1xuICAgIH1cblxuICAgIHJldHVybiB2ZXJpZmllcztcbiAgfVxuXG4gIHZlcmlmeUNvbnN0cnVjdG9yKCkge1xuICAgIGxldCBjb25zdHJ1Y3RvclZlcmlmaWVzO1xuXG4gICAgY29uc3QgY29uc3RydWN0b3JTdHJpbmcgPSB0aGlzLmNvbnN0cnVjdG9yLmdldFN0cmluZygpO1xuXG4gICAgdGhpcy5jb250ZXh0LnRyYWNlKGBWZXJpZnlpbmcgdGhlICcke2NvbnN0cnVjdG9yU3RyaW5nfScgY29uc3RydWN0b3IuLi5gLCB0aGlzLm5vZGUpO1xuXG4gICAgY29uc3QgdGVybSA9IHRoaXMuY29uc3RydWN0b3IuZ2V0VGVybSgpLFxuICAgICAgICAgIHRlcm1Ob2RlID0gdGVybS5nZXROb2RlKCk7XG5cbiAgICBjb25zdHJ1Y3RvclZlcmlmaWVzID0gY29uc3RydWN0b3JWZXJpZmllci52ZXJpZnlUZXJtKHRlcm1Ob2RlLCB0aGlzLmNvbnRleHQpO1xuXG4gICAgaWYgKGNvbnN0cnVjdG9yVmVyaWZpZXMpIHtcbiAgICAgIHRoaXMuY29udGV4dC5kZWJ1ZyhgLi4udmVyaWZpZWQgdGhlICcke2NvbnN0cnVjdG9yU3RyaW5nfScgY29uc3RydWN0b3IuYCwgdGhpcy5ub2RlKTtcbiAgICB9XG5cbiAgICByZXR1cm4gY29uc3RydWN0b3JWZXJpZmllcztcbiAgfVxuXG4gIHZlcmlmeUNvbnN0cnVjdG9yVHlwZSgpIHtcbiAgICBsZXQgY29uc3RydWN0b3JUeXBlVmVyaWZpZXMgPSBmYWxzZTtcblxuICAgIGxldCB0eXBlO1xuXG4gICAgdHlwZSA9IHRoaXMuY29uc3RydWN0b3IuZ2V0VHlwZSgpO1xuXG4gICAgY29uc3QgdHlwZU5hbWUgPSB0eXBlLmdldE5hbWUoKSxcbiAgICAgICAgICB0eXBlU3RyaW5nID0gdHlwZS5nZXRTdHJpbmcoKTtcblxuICAgIHRoaXMuY29udGV4dC50cmFjZShgVmVyaWZ5aW5nIHRoZSAnJHt0eXBlU3RyaW5nfScgdHlwZS4uLmAsIHRoaXMubm9kZSk7XG5cbiAgICBjb25zdCBpbmNsdWRlU3VwZXJ0eXBlcyA9IGZhbHNlLFxuICAgICAgICAgIHByb3Zpc2lvbmFsID0gdHlwZS5pc1Byb3Zpc2lvbmFsKGluY2x1ZGVTdXBlcnR5cGVzKTtcblxuICAgIHR5cGUgPSB0aGlzLmNvbnRleHQuZmluZFR5cGVCeVR5cGVOYW1lKHR5cGVOYW1lKTtcblxuICAgIGNvbnN0IHR5cGVQcmVzZW50ID0gKHR5cGUgIT09IG51bGwpXG5cbiAgICBpZiAoIXR5cGVQcmVzZW50KSB7XG4gICAgICB0aGlzLmNvbnRleHQuZGVidWcoYFRoZSAnJHt0eXBlU3RyaW5nfScgdHlwZSBpcyBub3QgcHJlc2VudC5gLCB0aGlzLm5vZGUpO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBwcm92aXNpb25hbE1hdGNoZXMgPSB0eXBlLm1hdGNoUHJvdmlzaW9uYWwocHJvdmlzaW9uYWwpO1xuXG4gICAgICBpZiAoIXByb3Zpc2lvbmFsTWF0Y2hlcykge1xuICAgICAgICBwcm92aXNpb25hbCA/XG4gICAgICAgICAgdGhpcy5jb250ZXh0LmRlYnVnKGBUaGUgJyR7dHlwZVN0cmluZ30nIHR5cGUgaXMgcHJlc2VudCBidXQgbm90IHByb3Zpc2lvbmFsLmAsIHRoaXMubm9kZSkgOlxuICAgICAgICAgICAgdGhpcy5jb250ZXh0LmRlYnVnKGBUaGUgJyR7dHlwZVN0cmluZ30nIHR5cGUgaXMgcHJlc2VudCBidXQgcHJvdmlzaW9uYWwuYCwgdGhpcy5ub2RlKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuY29uc3RydWN0b3Iuc2V0VHlwZSh0eXBlKTtcblxuICAgICAgICBjb25zdHJ1Y3RvclR5cGVWZXJpZmllcyA9IHRydWU7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKGNvbnN0cnVjdG9yVHlwZVZlcmlmaWVzKSB7XG4gICAgICB0aGlzLmNvbnRleHQuZGVidWcoYC4uLnZlcmlmaWVkIHRoZSAnJHt0eXBlU3RyaW5nfScgdHlwZS5gLCB0aGlzLm5vZGUpO1xuICAgIH1cblxuICAgIHJldHVybiBjb25zdHJ1Y3RvclR5cGVWZXJpZmllcztcbiAgfVxuXG4gIHN0YXRpYyBuYW1lID0gXCJDb25zdHJ1Y3RvckRlY2xhcmF0aW9uXCI7XG5cbiAgc3RhdGljIGZyb21Db25zdHJ1Y3RvckRlY2xhcmF0aW9uTm9kZShjb25zdHJ1Y3RvckRlY2xhcmF0aW9uTm9kZSwgY29udGV4dCkge1xuICAgIGNvbnN0IHsgQ29uc3RydWN0b3IgfSA9IGRvbSxcbiAgICAgICAgICBub2RlID0gY29uc3RydWN0b3JEZWNsYXJhdGlvbk5vZGUsICAvLy9cbiAgICAgICAgICBzdHJpbmcgPSBjb250ZXh0Lm5vZGVBc1N0cmluZyhub2RlKSxcbiAgICAgICAgICBjb25zdHJ1Y3RvciA9IENvbnN0cnVjdG9yLmZyb21Db25zdHJ1Y3RvckRlY2xhcmF0aW9uTm9kZShjb25zdHJ1Y3RvckRlY2xhcmF0aW9uTm9kZSwgY29udGV4dCksXG4gICAgICAgICAgY29uc3RydWN0b3JEZWNsYXJhdGlvbiA9IG5ldyBDb25zdHJ1Y3RvckRlY2xhcmF0aW9uKGNvbnRleHQsIG5vZGUsIHN0cmluZywgY29uc3RydWN0b3IpO1xuXG4gICAgcmV0dXJuIGNvbnN0cnVjdG9yRGVjbGFyYXRpb247XG4gIH1cbn0pO1xuIl0sIm5hbWVzIjpbImRvbUFzc2lnbmVkIiwiQ29uc3RydWN0b3JEZWNsYXJhdGlvbiIsImNvbnRleHQiLCJub2RlIiwic3RyaW5nIiwiY29uc3RydWN0b3IiLCJnZXRDb250ZXh0IiwiZ2V0Tm9kZSIsImdldFN0cmluZyIsImdldENvbnN0cnVjdG9yIiwidmVyaWZ5IiwidmVyaWZpZXMiLCJjb25zdHJ1Y3RvckRlY2xhcmF0aW9uU3RyaW5nIiwidHJhY2UiLCJjb25zdHJ1Y3RvclR5cGVWZXJpZmllcyIsInZlcmlmeUNvbnN0cnVjdG9yVHlwZSIsImNvbnN0cnVjdG9yVmVyaWZpZXMiLCJ2ZXJpZnlDb25zdHJ1Y3RvciIsImFkZENvbnN0cnVjdG9yIiwiZGVidWciLCJjb25zdHJ1Y3RvclN0cmluZyIsInRlcm0iLCJnZXRUZXJtIiwidGVybU5vZGUiLCJjb25zdHJ1Y3RvclZlcmlmaWVyIiwidmVyaWZ5VGVybSIsInR5cGUiLCJnZXRUeXBlIiwidHlwZU5hbWUiLCJnZXROYW1lIiwidHlwZVN0cmluZyIsImluY2x1ZGVTdXBlcnR5cGVzIiwicHJvdmlzaW9uYWwiLCJpc1Byb3Zpc2lvbmFsIiwiZmluZFR5cGVCeVR5cGVOYW1lIiwidHlwZVByZXNlbnQiLCJwcm92aXNpb25hbE1hdGNoZXMiLCJtYXRjaFByb3Zpc2lvbmFsIiwic2V0VHlwZSIsImZyb21Db25zdHJ1Y3RvckRlY2xhcmF0aW9uTm9kZSIsImNvbnN0cnVjdG9yRGVjbGFyYXRpb25Ob2RlIiwiQ29uc3RydWN0b3IiLCJkb20iLCJub2RlQXNTdHJpbmciLCJjb25zdHJ1Y3RvckRlY2xhcmF0aW9uIiwibmFtZSJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7K0JBUUE7OztlQUFBOzs7MkRBTmdCO2tFQUVnQjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7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
|
|
@@ -84,9 +84,10 @@ function _interop_require_wildcard(obj, nodeInterop) {
|
|
|
84
84
|
}
|
|
85
85
|
var _MetavariableDeclaration;
|
|
86
86
|
var _default = (0, _dom.domAssigned)((_MetavariableDeclaration = /*#__PURE__*/ function() {
|
|
87
|
-
function MetavariableDeclaration(context, string, metavariable) {
|
|
87
|
+
function MetavariableDeclaration(context, node, string, metavariable) {
|
|
88
88
|
_class_call_check(this, MetavariableDeclaration);
|
|
89
89
|
this.context = context;
|
|
90
|
+
this.node = node;
|
|
90
91
|
this.string = string;
|
|
91
92
|
this.metavariable = metavariable;
|
|
92
93
|
}
|
|
@@ -97,6 +98,12 @@ var _default = (0, _dom.domAssigned)((_MetavariableDeclaration = /*#__PURE__*/ f
|
|
|
97
98
|
return this.context;
|
|
98
99
|
}
|
|
99
100
|
},
|
|
101
|
+
{
|
|
102
|
+
key: "getNode",
|
|
103
|
+
value: function getNode() {
|
|
104
|
+
return this.node;
|
|
105
|
+
}
|
|
106
|
+
},
|
|
100
107
|
{
|
|
101
108
|
key: "getString",
|
|
102
109
|
value: function getString() {
|
|
@@ -114,14 +121,14 @@ var _default = (0, _dom.domAssigned)((_MetavariableDeclaration = /*#__PURE__*/ f
|
|
|
114
121
|
value: function verify() {
|
|
115
122
|
var verifies;
|
|
116
123
|
var metavariableDeclarationString = this.string; ///
|
|
117
|
-
this.context.trace("Verifying the '".concat(metavariableDeclarationString, "' metavariable declaration..."));
|
|
124
|
+
this.context.trace("Verifying the '".concat(metavariableDeclarationString, "' metavariable declaration..."), this.node);
|
|
118
125
|
var metavariableVerifies = this.verifyMetavariable(this.metavariable);
|
|
119
126
|
if (metavariableVerifies) {
|
|
120
127
|
this.context.addMetavariable(this.metavariable);
|
|
121
128
|
verifies = true;
|
|
122
129
|
}
|
|
123
130
|
if (verifies) {
|
|
124
|
-
this.context.debug("...verified the '".concat(metavariableDeclarationString, "' metavariable declaration."));
|
|
131
|
+
this.context.debug("...verified the '".concat(metavariableDeclarationString, "' metavariable declaration."), this.node);
|
|
125
132
|
}
|
|
126
133
|
return verifies;
|
|
127
134
|
}
|
|
@@ -134,15 +141,15 @@ var _default = (0, _dom.domAssigned)((_MetavariableDeclaration = /*#__PURE__*/ f
|
|
|
134
141
|
typeVerifies = true;
|
|
135
142
|
} else {
|
|
136
143
|
var typeName = type.getName(), typeString = type.getString();
|
|
137
|
-
this.context.trace("Verifying the '".concat(typeString, "' type..."));
|
|
144
|
+
this.context.trace("Verifying the '".concat(typeString, "' type..."), this.node);
|
|
138
145
|
var typePresent = this.context.isTypePresentByTypeName(typeName);
|
|
139
146
|
if (!typePresent) {
|
|
140
|
-
this.context.debug("The '".concat(typeString, "' type is not present."));
|
|
147
|
+
this.context.debug("The '".concat(typeString, "' type is not present."), this.node);
|
|
141
148
|
} else {
|
|
142
149
|
typeVerifies = true;
|
|
143
150
|
}
|
|
144
151
|
if (typeVerifies) {
|
|
145
|
-
this.context.debug("...verified the '".concat(typeString, "' type."));
|
|
152
|
+
this.context.debug("...verified the '".concat(typeString, "' type."), this.node);
|
|
146
153
|
}
|
|
147
154
|
}
|
|
148
155
|
return typeVerifies;
|
|
@@ -153,21 +160,21 @@ var _default = (0, _dom.domAssigned)((_MetavariableDeclaration = /*#__PURE__*/ f
|
|
|
153
160
|
value: function verifyMetavariable(metavariable) {
|
|
154
161
|
var metavariableVerifies = false;
|
|
155
162
|
var metavariableString = metavariable.getString();
|
|
156
|
-
this.context.trace("Verifying the '".concat(metavariableString, "' metavariable when declared..."));
|
|
163
|
+
this.context.trace("Verifying the '".concat(metavariableString, "' metavariable when declared..."), this.node);
|
|
157
164
|
var metavariableNode = metavariable.getNode(), termNode = metavariableNode.getTermNode();
|
|
158
165
|
if (termNode !== null) {
|
|
159
|
-
this.context.debug("A term was found in the '".concat(metavariableString, "' metavariable when a type should have been present."));
|
|
166
|
+
this.context.debug("A term was found in the '".concat(metavariableString, "' metavariable when a type should have been present."), this.node);
|
|
160
167
|
} else {
|
|
161
168
|
var metavariableName = metavariable.getName(), metavariablePresent = this.context.isMetavariablePresentByMetavariableName(metavariableName);
|
|
162
169
|
if (metavariablePresent) {
|
|
163
|
-
this.context.debug("The '".concat(metavariableName, "' metavariable is already present."));
|
|
170
|
+
this.context.debug("The '".concat(metavariableName, "' metavariable is already present."), this.node);
|
|
164
171
|
} else {
|
|
165
172
|
var type = metavariable.getType(), typeVerifies = this.verifyType(type);
|
|
166
173
|
metavariableVerifies = typeVerifies; ///
|
|
167
174
|
}
|
|
168
175
|
}
|
|
169
176
|
if (metavariableVerifies) {
|
|
170
|
-
this.context.debug("...verified the '".concat(metavariableString, "' metavariable when declared."));
|
|
177
|
+
this.context.debug("...verified the '".concat(metavariableString, "' metavariable when declared."), this.node);
|
|
171
178
|
}
|
|
172
179
|
return metavariableVerifies;
|
|
173
180
|
}
|
|
@@ -176,7 +183,7 @@ var _default = (0, _dom.domAssigned)((_MetavariableDeclaration = /*#__PURE__*/ f
|
|
|
176
183
|
{
|
|
177
184
|
key: "fromMetavariableDeclarationNode",
|
|
178
185
|
value: function fromMetavariableDeclarationNode(metavariableDeclarationNode, context) {
|
|
179
|
-
var Metavariable = _dom.default.Metavariable, metaType = metaTypeFromMetavariableDeclarationNode(metavariableDeclarationNode, context), metavariable = Metavariable.fromMetavariableDeclarationNode(metavariableDeclarationNode, context), string = stringFromMetavariableAndMetaType(metavariable, metaType), metavariableDeclaration = new MetavariableDeclaration(context, string, metavariable);
|
|
186
|
+
var Metavariable = _dom.default.Metavariable, node = metavariableDeclarationNode, metaType = metaTypeFromMetavariableDeclarationNode(metavariableDeclarationNode, context), metavariable = Metavariable.fromMetavariableDeclarationNode(metavariableDeclarationNode, context), string = stringFromMetavariableAndMetaType(metavariable, metaType), metavariableDeclaration = new MetavariableDeclaration(context, node, string, metavariable);
|
|
180
187
|
return metavariableDeclaration;
|
|
181
188
|
}
|
|
182
189
|
}
|
|
@@ -199,4 +206,4 @@ function metaTypeFromMetavariableDeclarationNode(metavariableDeclarationNode, co
|
|
|
199
206
|
return metaType;
|
|
200
207
|
}
|
|
201
208
|
|
|
202
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9kb20vZGVjbGFyYXRpb24vbWV0YXZhcmlhYmxlLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgZG9tIGZyb20gXCIuLi8uLi9kb21cIjtcblxuaW1wb3J0IHsgZG9tQXNzaWduZWQgfSBmcm9tIFwiLi4vLi4vZG9tXCI7XG5cbmV4cG9ydCBkZWZhdWx0IGRvbUFzc2lnbmVkKGNsYXNzIE1ldGF2YXJpYWJsZURlY2xhcmF0aW9uIHtcbiAgY29uc3RydWN0b3IoY29udGV4dCwgc3RyaW5nLCBtZXRhdmFyaWFibGUpIHtcbiAgICB0aGlzLmNvbnRleHQgPSBjb250ZXh0O1xuICAgIHRoaXMuc3RyaW5nID0gc3RyaW5nO1xuICAgIHRoaXMubWV0YXZhcmlhYmxlID0gbWV0YXZhcmlhYmxlO1xuICB9XG5cbiAgZ2V0Q29udGV4dCgpIHtcbiAgICByZXR1cm4gdGhpcy5jb250ZXh0O1xuICB9XG5cbiAgZ2V0U3RyaW5nKCkge1xuICAgIHJldHVybiB0aGlzLnN0cmluZztcbiAgfVxuXG4gIGdldE1ldGF2YXJpYWJsZSgpIHtcbiAgICByZXR1cm4gdGhpcy5tZXRhdmFyaWFibGU7XG4gIH1cblxuICB2ZXJpZnkoKSB7XG4gICAgbGV0IHZlcmlmaWVzO1xuXG4gICAgY29uc3QgbWV0YXZhcmlhYmxlRGVjbGFyYXRpb25TdHJpbmcgPSB0aGlzLnN0cmluZzsgLy8vXG5cbiAgICB0aGlzLmNvbnRleHQudHJhY2UoYFZlcmlmeWluZyB0aGUgJyR7bWV0YXZhcmlhYmxlRGVjbGFyYXRpb25TdHJpbmd9JyBtZXRhdmFyaWFibGUgZGVjbGFyYXRpb24uLi5gKTtcblxuICAgIGNvbnN0IG1ldGF2YXJpYWJsZVZlcmlmaWVzID0gdGhpcy52ZXJpZnlNZXRhdmFyaWFibGUodGhpcy5tZXRhdmFyaWFibGUpO1xuXG4gICAgaWYgKG1ldGF2YXJpYWJsZVZlcmlmaWVzKSB7XG4gICAgICB0aGlzLmNvbnRleHQuYWRkTWV0YXZhcmlhYmxlKHRoaXMubWV0YXZhcmlhYmxlKTtcblxuICAgICAgdmVyaWZpZXMgPSB0cnVlO1xuICAgIH1cblxuICAgIGlmICh2ZXJpZmllcykge1xuICAgICAgdGhpcy5jb250ZXh0LmRlYnVnKGAuLi52ZXJpZmllZCB0aGUgJyR7bWV0YXZhcmlhYmxlRGVjbGFyYXRpb25TdHJpbmd9JyBtZXRhdmFyaWFibGUgZGVjbGFyYXRpb24uYCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHZlcmlmaWVzO1xuICB9XG5cbiAgdmVyaWZ5VHlwZSh0eXBlKSB7XG4gICAgbGV0IHR5cGVWZXJpZmllcztcblxuICAgIGlmICh0eXBlID09PSBudWxsKSB7XG4gICAgICB0eXBlVmVyaWZpZXMgPSB0cnVlO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCB0eXBlTmFtZSA9IHR5cGUuZ2V0TmFtZSgpLFxuICAgICAgICAgICAgdHlwZVN0cmluZyA9IHR5cGUuZ2V0U3RyaW5nKCk7XG5cbiAgICAgIHRoaXMuY29udGV4dC50cmFjZShgVmVyaWZ5aW5nIHRoZSAnJHt0eXBlU3RyaW5nfScgdHlwZS4uLmApO1xuXG4gICAgICBjb25zdCB0eXBlUHJlc2VudCA9IHRoaXMuY29udGV4dC5pc1R5cGVQcmVzZW50QnlUeXBlTmFtZSh0eXBlTmFtZSk7XG5cbiAgICAgIGlmICghdHlwZVByZXNlbnQpIHtcbiAgICAgICAgdGhpcy5jb250ZXh0LmRlYnVnKGBUaGUgJyR7dHlwZVN0cmluZ30nIHR5cGUgaXMgbm90IHByZXNlbnQuYCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0eXBlVmVyaWZpZXMgPSB0cnVlO1xuICAgICAgfVxuXG4gICAgICBpZiAodHlwZVZlcmlmaWVzKSB7XG4gICAgICAgIHRoaXMuY29udGV4dC5kZWJ1ZyhgLi4udmVyaWZpZWQgdGhlICcke3R5cGVTdHJpbmd9JyB0eXBlLmApO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB0eXBlVmVyaWZpZXM7XG4gIH1cblxuICB2ZXJpZnlNZXRhdmFyaWFibGUobWV0YXZhcmlhYmxlKSB7XG4gICAgbGV0IG1ldGF2YXJpYWJsZVZlcmlmaWVzID0gZmFsc2U7XG5cbiAgICBjb25zdCBtZXRhdmFyaWFibGVTdHJpbmcgPSBtZXRhdmFyaWFibGUuZ2V0U3RyaW5nKCk7XG5cbiAgICB0aGlzLmNvbnRleHQudHJhY2UoYFZlcmlmeWluZyB0aGUgJyR7bWV0YXZhcmlhYmxlU3RyaW5nfScgbWV0YXZhcmlhYmxlIHdoZW4gZGVjbGFyZWQuLi5gKTtcblxuICAgIGNvbnN0IG1ldGF2YXJpYWJsZU5vZGUgPSBtZXRhdmFyaWFibGUuZ2V0Tm9kZSgpLCAvLy9cbiAgICAgICAgICB0ZXJtTm9kZSA9IG1ldGF2YXJpYWJsZU5vZGUuZ2V0VGVybU5vZGUoKTtcblxuICAgIGlmICh0ZXJtTm9kZSAhPT0gbnVsbCkge1xuICAgICAgdGhpcy5jb250ZXh0LmRlYnVnKGBBIHRlcm0gd2FzIGZvdW5kIGluIHRoZSAnJHttZXRhdmFyaWFibGVTdHJpbmd9JyBtZXRhdmFyaWFibGUgd2hlbiBhIHR5cGUgc2hvdWxkIGhhdmUgYmVlbiBwcmVzZW50LmApO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBtZXRhdmFyaWFibGVOYW1lID0gbWV0YXZhcmlhYmxlLmdldE5hbWUoKSxcbiAgICAgICAgICAgIG1ldGF2YXJpYWJsZVByZXNlbnQgPSB0aGlzLmNvbnRleHQuaXNNZXRhdmFyaWFibGVQcmVzZW50QnlNZXRhdmFyaWFibGVOYW1lKG1ldGF2YXJpYWJsZU5hbWUpO1xuXG4gICAgICBpZiAobWV0YXZhcmlhYmxlUHJlc2VudCkge1xuICAgICAgICB0aGlzLmNvbnRleHQuZGVidWcoYFRoZSAnJHttZXRhdmFyaWFibGVOYW1lfScgbWV0YXZhcmlhYmxlIGlzIGFscmVhZHkgcHJlc2VudC5gKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnN0IHR5cGUgPSBtZXRhdmFyaWFibGUuZ2V0VHlwZSgpLFxuICAgICAgICAgICAgICB0eXBlVmVyaWZpZXMgPSB0aGlzLnZlcmlmeVR5cGUodHlwZSk7XG5cbiAgICAgICAgbWV0YXZhcmlhYmxlVmVyaWZpZXMgPSB0eXBlVmVyaWZpZXM7ICAvLy9cbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAobWV0YXZhcmlhYmxlVmVyaWZpZXMpIHtcbiAgICAgIHRoaXMuY29udGV4dC5kZWJ1ZyhgLi4udmVyaWZpZWQgdGhlICcke21ldGF2YXJpYWJsZVN0cmluZ30nIG1ldGF2YXJpYWJsZSB3aGVuIGRlY2xhcmVkLmApO1xuICAgIH1cblxuICAgIHJldHVybiBtZXRhdmFyaWFibGVWZXJpZmllcztcbiAgfVxuXG4gIHN0YXRpYyBuYW1lID0gXCJNZXRhdmFyaWFibGVEZWNsYXJhdGlvblwiO1xuXG4gIHN0YXRpYyBmcm9tTWV0YXZhcmlhYmxlRGVjbGFyYXRpb25Ob2RlKG1ldGF2YXJpYWJsZURlY2xhcmF0aW9uTm9kZSwgY29udGV4dCkge1xuICAgIGNvbnN0IHsgTWV0YXZhcmlhYmxlIH0gPSBkb20sXG4gICAgICAgICAgbWV0YVR5cGUgPSBtZXRhVHlwZUZyb21NZXRhdmFyaWFibGVEZWNsYXJhdGlvbk5vZGUobWV0YXZhcmlhYmxlRGVjbGFyYXRpb25Ob2RlLCBjb250ZXh0KSxcbiAgICAgICAgICBtZXRhdmFyaWFibGUgPSBNZXRhdmFyaWFibGUuZnJvbU1ldGF2YXJpYWJsZURlY2xhcmF0aW9uTm9kZShtZXRhdmFyaWFibGVEZWNsYXJhdGlvbk5vZGUsIGNvbnRleHQpLFxuICAgICAgICAgIHN0cmluZyA9IHN0cmluZ0Zyb21NZXRhdmFyaWFibGVBbmRNZXRhVHlwZShtZXRhdmFyaWFibGUsIG1ldGFUeXBlKSxcbiAgICAgICAgICBtZXRhdmFyaWFibGVEZWNsYXJhdGlvbiA9IG5ldyBNZXRhdmFyaWFibGVEZWNsYXJhdGlvbihjb250ZXh0LCBzdHJpbmcsIG1ldGF2YXJpYWJsZSk7XG5cbiAgICByZXR1cm4gbWV0YXZhcmlhYmxlRGVjbGFyYXRpb247XG4gIH1cbn0pO1xuXG5mdW5jdGlvbiBzdHJpbmdGcm9tTWV0YXZhcmlhYmxlQW5kTWV0YVR5cGUobWV0YXZhcmlhYmxlLCBtZXRhVHlwZSkge1xuICBsZXQgc3RyaW5nO1xuXG4gIGNvbnN0IG1ldGF2YXJpYWJsZVN0cmluZyA9IG1ldGF2YXJpYWJsZS5nZXRTdHJpbmcoKTtcblxuICBpZiAobWV0YVR5cGUgPT09IG51bGwpIHtcbiAgICBzdHJpbmcgPSBtZXRhdmFyaWFibGVTdHJpbmc7IC8vL1xuICB9IGVsc2Uge1xuICAgIGNvbnN0IG1ldGFUeXBlU3RyaW5nID0gbWV0YVR5cGUuZ2V0U3RyaW5nKCk7XG5cbiAgICBzdHJpbmcgPSBgJHttZXRhdmFyaWFibGVTdHJpbmd9OiR7bWV0YVR5cGVTdHJpbmd9YDtcbiAgfVxuXG4gIHJldHVybiBzdHJpbmc7XG59XG5cbmZ1bmN0aW9uIG1ldGFUeXBlRnJvbU1ldGF2YXJpYWJsZURlY2xhcmF0aW9uTm9kZShtZXRhdmFyaWFibGVEZWNsYXJhdGlvbk5vZGUsIGNvbnRleHQpIHtcbiAgY29uc3QgeyBNZXRhVHlwZSB9ID0gZG9tLFxuICAgICAgICBtZXRhVHlwZU5vZGUgPSBtZXRhdmFyaWFibGVEZWNsYXJhdGlvbk5vZGUuZ2V0TWV0YVR5cGVOb2RlKCksXG4gICAgICAgIG1ldGFUeXBlID0gTWV0YVR5cGUuZnJvbU1ldGFUeXBlTm9kZShtZXRhVHlwZU5vZGUsIGNvbnRleHQpO1xuXG4gIHJldHVybiBtZXRhVHlwZTtcbn1cbiJdLCJuYW1lcyI6WyJkb21Bc3NpZ25lZCIsIk1ldGF2YXJpYWJsZURlY2xhcmF0aW9uIiwiY29udGV4dCIsInN0cmluZyIsIm1ldGF2YXJpYWJsZSIsImdldENvbnRleHQiLCJnZXRTdHJpbmciLCJnZXRNZXRhdmFyaWFibGUiLCJ2ZXJpZnkiLCJ2ZXJpZmllcyIsIm1ldGF2YXJpYWJsZURlY2xhcmF0aW9uU3RyaW5nIiwidHJhY2UiLCJtZXRhdmFyaWFibGVWZXJpZmllcyIsInZlcmlmeU1ldGF2YXJpYWJsZSIsImFkZE1ldGF2YXJpYWJsZSIsImRlYnVnIiwidmVyaWZ5VHlwZSIsInR5cGUiLCJ0eXBlVmVyaWZpZXMiLCJ0eXBlTmFtZSIsImdldE5hbWUiLCJ0eXBlU3RyaW5nIiwidHlwZVByZXNlbnQiLCJpc1R5cGVQcmVzZW50QnlUeXBlTmFtZSIsIm1ldGF2YXJpYWJsZVN0cmluZyIsIm1ldGF2YXJpYWJsZU5vZGUiLCJnZXROb2RlIiwidGVybU5vZGUiLCJnZXRUZXJtTm9kZSIsIm1ldGF2YXJpYWJsZU5hbWUiLCJtZXRhdmFyaWFibGVQcmVzZW50IiwiaXNNZXRhdmFyaWFibGVQcmVzZW50QnlNZXRhdmFyaWFibGVOYW1lIiwiZ2V0VHlwZSIsImZyb21NZXRhdmFyaWFibGVEZWNsYXJhdGlvbk5vZGUiLCJtZXRhdmFyaWFibGVEZWNsYXJhdGlvbk5vZGUiLCJNZXRhdmFyaWFibGUiLCJkb20iLCJtZXRhVHlwZSIsIm1ldGFUeXBlRnJvbU1ldGF2YXJpYWJsZURlY2xhcmF0aW9uTm9kZSIsInN0cmluZ0Zyb21NZXRhdmFyaWFibGVBbmRNZXRhVHlwZSIsIm1ldGF2YXJpYWJsZURlY2xhcmF0aW9uIiwibmFtZSIsIm1ldGFUeXBlU3RyaW5nIiwiTWV0YVR5cGUiLCJtZXRhVHlwZU5vZGUiLCJnZXRNZXRhVHlwZU5vZGUiLCJmcm9tTWV0YVR5cGVOb2RlIl0sIm1hcHBpbmdzIjoiQUFBQTs7OzsrQkFNQTs7O2VBQUE7OzsyREFKZ0I7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJQUloQixXQUFlQSxJQUFBQSxnQkFBVyw0Q0FBQzthQUFNQyx3QkFDbkJDLE9BQU8sRUFBRUMsTUFBTSxFQUFFQyxZQUFZO2dDQURWSDtRQUU3QixJQUFJLENBQUNDLE9BQU8sR0FBR0E7UUFDZixJQUFJLENBQUNDLE1BQU0sR0FBR0E7UUFDZCxJQUFJLENBQUNDLFlBQVksR0FBR0E7Ozs7WUFHdEJDLEtBQUFBO21CQUFBQSxTQUFBQTtnQkFDRSxPQUFPLElBQUksQ0FBQ0gsT0FBTztZQUNyQjs7O1lBRUFJLEtBQUFBO21CQUFB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
|
|
209
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9kb20vZGVjbGFyYXRpb24vbWV0YXZhcmlhYmxlLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgZG9tIGZyb20gXCIuLi8uLi9kb21cIjtcblxuaW1wb3J0IHsgZG9tQXNzaWduZWQgfSBmcm9tIFwiLi4vLi4vZG9tXCI7XG5cbmV4cG9ydCBkZWZhdWx0IGRvbUFzc2lnbmVkKGNsYXNzIE1ldGF2YXJpYWJsZURlY2xhcmF0aW9uIHtcbiAgY29uc3RydWN0b3IoY29udGV4dCwgbm9kZSwgc3RyaW5nLCBtZXRhdmFyaWFibGUpIHtcbiAgICB0aGlzLmNvbnRleHQgPSBjb250ZXh0O1xuICAgIHRoaXMubm9kZSA9IG5vZGU7XG4gICAgdGhpcy5zdHJpbmcgPSBzdHJpbmc7XG4gICAgdGhpcy5tZXRhdmFyaWFibGUgPSBtZXRhdmFyaWFibGU7XG4gIH1cblxuICBnZXRDb250ZXh0KCkge1xuICAgIHJldHVybiB0aGlzLmNvbnRleHQ7XG4gIH1cblxuICBnZXROb2RlKCkge1xuICAgIHJldHVybiB0aGlzLm5vZGU7XG4gIH1cblxuICBnZXRTdHJpbmcoKSB7XG4gICAgcmV0dXJuIHRoaXMuc3RyaW5nO1xuICB9XG5cbiAgZ2V0TWV0YXZhcmlhYmxlKCkge1xuICAgIHJldHVybiB0aGlzLm1ldGF2YXJpYWJsZTtcbiAgfVxuXG4gIHZlcmlmeSgpIHtcbiAgICBsZXQgdmVyaWZpZXM7XG5cbiAgICBjb25zdCBtZXRhdmFyaWFibGVEZWNsYXJhdGlvblN0cmluZyA9IHRoaXMuc3RyaW5nOyAvLy9cblxuICAgIHRoaXMuY29udGV4dC50cmFjZShgVmVyaWZ5aW5nIHRoZSAnJHttZXRhdmFyaWFibGVEZWNsYXJhdGlvblN0cmluZ30nIG1ldGF2YXJpYWJsZSBkZWNsYXJhdGlvbi4uLmAsIHRoaXMubm9kZSk7XG5cbiAgICBjb25zdCBtZXRhdmFyaWFibGVWZXJpZmllcyA9IHRoaXMudmVyaWZ5TWV0YXZhcmlhYmxlKHRoaXMubWV0YXZhcmlhYmxlKTtcblxuICAgIGlmIChtZXRhdmFyaWFibGVWZXJpZmllcykge1xuICAgICAgdGhpcy5jb250ZXh0LmFkZE1ldGF2YXJpYWJsZSh0aGlzLm1ldGF2YXJpYWJsZSk7XG5cbiAgICAgIHZlcmlmaWVzID0gdHJ1ZTtcbiAgICB9XG5cbiAgICBpZiAodmVyaWZpZXMpIHtcbiAgICAgIHRoaXMuY29udGV4dC5kZWJ1ZyhgLi4udmVyaWZpZWQgdGhlICcke21ldGF2YXJpYWJsZURlY2xhcmF0aW9uU3RyaW5nfScgbWV0YXZhcmlhYmxlIGRlY2xhcmF0aW9uLmAsIHRoaXMubm9kZSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHZlcmlmaWVzO1xuICB9XG5cbiAgdmVyaWZ5VHlwZSh0eXBlKSB7XG4gICAgbGV0IHR5cGVWZXJpZmllcztcblxuICAgIGlmICh0eXBlID09PSBudWxsKSB7XG4gICAgICB0eXBlVmVyaWZpZXMgPSB0cnVlO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCB0eXBlTmFtZSA9IHR5cGUuZ2V0TmFtZSgpLFxuICAgICAgICAgICAgdHlwZVN0cmluZyA9IHR5cGUuZ2V0U3RyaW5nKCk7XG5cbiAgICAgIHRoaXMuY29udGV4dC50cmFjZShgVmVyaWZ5aW5nIHRoZSAnJHt0eXBlU3RyaW5nfScgdHlwZS4uLmAsIHRoaXMubm9kZSk7XG5cbiAgICAgIGNvbnN0IHR5cGVQcmVzZW50ID0gdGhpcy5jb250ZXh0LmlzVHlwZVByZXNlbnRCeVR5cGVOYW1lKHR5cGVOYW1lKTtcblxuICAgICAgaWYgKCF0eXBlUHJlc2VudCkge1xuICAgICAgICB0aGlzLmNvbnRleHQuZGVidWcoYFRoZSAnJHt0eXBlU3RyaW5nfScgdHlwZSBpcyBub3QgcHJlc2VudC5gLCB0aGlzLm5vZGUpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdHlwZVZlcmlmaWVzID0gdHJ1ZTtcbiAgICAgIH1cblxuICAgICAgaWYgKHR5cGVWZXJpZmllcykge1xuICAgICAgICB0aGlzLmNvbnRleHQuZGVidWcoYC4uLnZlcmlmaWVkIHRoZSAnJHt0eXBlU3RyaW5nfScgdHlwZS5gLCB0aGlzLm5vZGUpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB0eXBlVmVyaWZpZXM7XG4gIH1cblxuICB2ZXJpZnlNZXRhdmFyaWFibGUobWV0YXZhcmlhYmxlKSB7XG4gICAgbGV0IG1ldGF2YXJpYWJsZVZlcmlmaWVzID0gZmFsc2U7XG5cbiAgICBjb25zdCBtZXRhdmFyaWFibGVTdHJpbmcgPSBtZXRhdmFyaWFibGUuZ2V0U3RyaW5nKCk7XG5cbiAgICB0aGlzLmNvbnRleHQudHJhY2UoYFZlcmlmeWluZyB0aGUgJyR7bWV0YXZhcmlhYmxlU3RyaW5nfScgbWV0YXZhcmlhYmxlIHdoZW4gZGVjbGFyZWQuLi5gLCB0aGlzLm5vZGUpO1xuXG4gICAgY29uc3QgbWV0YXZhcmlhYmxlTm9kZSA9IG1ldGF2YXJpYWJsZS5nZXROb2RlKCksIC8vL1xuICAgICAgICAgIHRlcm1Ob2RlID0gbWV0YXZhcmlhYmxlTm9kZS5nZXRUZXJtTm9kZSgpO1xuXG4gICAgaWYgKHRlcm1Ob2RlICE9PSBudWxsKSB7XG4gICAgICB0aGlzLmNvbnRleHQuZGVidWcoYEEgdGVybSB3YXMgZm91bmQgaW4gdGhlICcke21ldGF2YXJpYWJsZVN0cmluZ30nIG1ldGF2YXJpYWJsZSB3aGVuIGEgdHlwZSBzaG91bGQgaGF2ZSBiZWVuIHByZXNlbnQuYCwgdGhpcy5ub2RlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgbWV0YXZhcmlhYmxlTmFtZSA9IG1ldGF2YXJpYWJsZS5nZXROYW1lKCksXG4gICAgICAgICAgICBtZXRhdmFyaWFibGVQcmVzZW50ID0gdGhpcy5jb250ZXh0LmlzTWV0YXZhcmlhYmxlUHJlc2VudEJ5TWV0YXZhcmlhYmxlTmFtZShtZXRhdmFyaWFibGVOYW1lKTtcblxuICAgICAgaWYgKG1ldGF2YXJpYWJsZVByZXNlbnQpIHtcbiAgICAgICAgdGhpcy5jb250ZXh0LmRlYnVnKGBUaGUgJyR7bWV0YXZhcmlhYmxlTmFtZX0nIG1ldGF2YXJpYWJsZSBpcyBhbHJlYWR5IHByZXNlbnQuYCwgdGhpcy5ub2RlKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnN0IHR5cGUgPSBtZXRhdmFyaWFibGUuZ2V0VHlwZSgpLFxuICAgICAgICAgICAgICB0eXBlVmVyaWZpZXMgPSB0aGlzLnZlcmlmeVR5cGUodHlwZSk7XG5cbiAgICAgICAgbWV0YXZhcmlhYmxlVmVyaWZpZXMgPSB0eXBlVmVyaWZpZXM7ICAvLy9cbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAobWV0YXZhcmlhYmxlVmVyaWZpZXMpIHtcbiAgICAgIHRoaXMuY29udGV4dC5kZWJ1ZyhgLi4udmVyaWZpZWQgdGhlICcke21ldGF2YXJpYWJsZVN0cmluZ30nIG1ldGF2YXJpYWJsZSB3aGVuIGRlY2xhcmVkLmAsIHRoaXMubm9kZSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIG1ldGF2YXJpYWJsZVZlcmlmaWVzO1xuICB9XG5cbiAgc3RhdGljIG5hbWUgPSBcIk1ldGF2YXJpYWJsZURlY2xhcmF0aW9uXCI7XG5cbiAgc3RhdGljIGZyb21NZXRhdmFyaWFibGVEZWNsYXJhdGlvbk5vZGUobWV0YXZhcmlhYmxlRGVjbGFyYXRpb25Ob2RlLCBjb250ZXh0KSB7XG4gICAgY29uc3QgeyBNZXRhdmFyaWFibGUgfSA9IGRvbSxcbiAgICAgICAgICBub2RlID0gbWV0YXZhcmlhYmxlRGVjbGFyYXRpb25Ob2RlLCAvLy9cbiAgICAgICAgICBtZXRhVHlwZSA9IG1ldGFUeXBlRnJvbU1ldGF2YXJpYWJsZURlY2xhcmF0aW9uTm9kZShtZXRhdmFyaWFibGVEZWNsYXJhdGlvbk5vZGUsIGNvbnRleHQpLFxuICAgICAgICAgIG1ldGF2YXJpYWJsZSA9IE1ldGF2YXJpYWJsZS5mcm9tTWV0YXZhcmlhYmxlRGVjbGFyYXRpb25Ob2RlKG1ldGF2YXJpYWJsZURlY2xhcmF0aW9uTm9kZSwgY29udGV4dCksXG4gICAgICAgICAgc3RyaW5nID0gc3RyaW5nRnJvbU1ldGF2YXJpYWJsZUFuZE1ldGFUeXBlKG1ldGF2YXJpYWJsZSwgbWV0YVR5cGUpLFxuICAgICAgICAgIG1ldGF2YXJpYWJsZURlY2xhcmF0aW9uID0gbmV3IE1ldGF2YXJpYWJsZURlY2xhcmF0aW9uKGNvbnRleHQsIG5vZGUsIHN0cmluZywgbWV0YXZhcmlhYmxlKTtcblxuICAgIHJldHVybiBtZXRhdmFyaWFibGVEZWNsYXJhdGlvbjtcbiAgfVxufSk7XG5cbmZ1bmN0aW9uIHN0cmluZ0Zyb21NZXRhdmFyaWFibGVBbmRNZXRhVHlwZShtZXRhdmFyaWFibGUsIG1ldGFUeXBlKSB7XG4gIGxldCBzdHJpbmc7XG5cbiAgY29uc3QgbWV0YXZhcmlhYmxlU3RyaW5nID0gbWV0YXZhcmlhYmxlLmdldFN0cmluZygpO1xuXG4gIGlmIChtZXRhVHlwZSA9PT0gbnVsbCkge1xuICAgIHN0cmluZyA9IG1ldGF2YXJpYWJsZVN0cmluZzsgLy8vXG4gIH0gZWxzZSB7XG4gICAgY29uc3QgbWV0YVR5cGVTdHJpbmcgPSBtZXRhVHlwZS5nZXRTdHJpbmcoKTtcblxuICAgIHN0cmluZyA9IGAke21ldGF2YXJpYWJsZVN0cmluZ306JHttZXRhVHlwZVN0cmluZ31gO1xuICB9XG5cbiAgcmV0dXJuIHN0cmluZztcbn1cblxuZnVuY3Rpb24gbWV0YVR5cGVGcm9tTWV0YXZhcmlhYmxlRGVjbGFyYXRpb25Ob2RlKG1ldGF2YXJpYWJsZURlY2xhcmF0aW9uTm9kZSwgY29udGV4dCkge1xuICBjb25zdCB7IE1ldGFUeXBlIH0gPSBkb20sXG4gICAgICAgIG1ldGFUeXBlTm9kZSA9IG1ldGF2YXJpYWJsZURlY2xhcmF0aW9uTm9kZS5nZXRNZXRhVHlwZU5vZGUoKSxcbiAgICAgICAgbWV0YVR5cGUgPSBNZXRhVHlwZS5mcm9tTWV0YVR5cGVOb2RlKG1ldGFUeXBlTm9kZSwgY29udGV4dCk7XG5cbiAgcmV0dXJuIG1ldGFUeXBlO1xufVxuIl0sIm5hbWVzIjpbImRvbUFzc2lnbmVkIiwiTWV0YXZhcmlhYmxlRGVjbGFyYXRpb24iLCJjb250ZXh0Iiwibm9kZSIsInN0cmluZyIsIm1ldGF2YXJpYWJsZSIsImdldENvbnRleHQiLCJnZXROb2RlIiwiZ2V0U3RyaW5nIiwiZ2V0TWV0YXZhcmlhYmxlIiwidmVyaWZ5IiwidmVyaWZpZXMiLCJtZXRhdmFyaWFibGVEZWNsYXJhdGlvblN0cmluZyIsInRyYWNlIiwibWV0YXZhcmlhYmxlVmVyaWZpZXMiLCJ2ZXJpZnlNZXRhdmFyaWFibGUiLCJhZGRNZXRhdmFyaWFibGUiLCJkZWJ1ZyIsInZlcmlmeVR5cGUiLCJ0eXBlIiwidHlwZVZlcmlmaWVzIiwidHlwZU5hbWUiLCJnZXROYW1lIiwidHlwZVN0cmluZyIsInR5cGVQcmVzZW50IiwiaXNUeXBlUHJlc2VudEJ5VHlwZU5hbWUiLCJtZXRhdmFyaWFibGVTdHJpbmciLCJtZXRhdmFyaWFibGVOb2RlIiwidGVybU5vZGUiLCJnZXRUZXJtTm9kZSIsIm1ldGF2YXJpYWJsZU5hbWUiLCJtZXRhdmFyaWFibGVQcmVzZW50IiwiaXNNZXRhdmFyaWFibGVQcmVzZW50QnlNZXRhdmFyaWFibGVOYW1lIiwiZ2V0VHlwZSIsImZyb21NZXRhdmFyaWFibGVEZWNsYXJhdGlvbk5vZGUiLCJtZXRhdmFyaWFibGVEZWNsYXJhdGlvbk5vZGUiLCJNZXRhdmFyaWFibGUiLCJkb20iLCJtZXRhVHlwZSIsIm1ldGFUeXBlRnJvbU1ldGF2YXJpYWJsZURlY2xhcmF0aW9uTm9kZSIsInN0cmluZ0Zyb21NZXRhdmFyaWFibGVBbmRNZXRhVHlwZSIsIm1ldGF2YXJpYWJsZURlY2xhcmF0aW9uIiwibmFtZSIsIm1ldGFUeXBlU3RyaW5nIiwiTWV0YVR5cGUiLCJtZXRhVHlwZU5vZGUiLCJnZXRNZXRhVHlwZU5vZGUiLCJmcm9tTWV0YVR5cGVOb2RlIl0sIm1hcHBpbmdzIjoiQUFBQTs7OzsrQkFNQTs7O2VBQUE7OzsyREFKZ0I7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJQUlo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
|