occam-verify-cli 1.0.956 → 1.0.973
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/bounded.js +11 -7
- package/lib/context.js +17 -5
- package/lib/element/assertion/signature.js +17 -19
- package/lib/element/assertion/subproof.js +36 -39
- package/lib/element/assertion/type.js +20 -1
- package/lib/element/assumption/metaLevel.js +18 -17
- package/lib/element/assumption.js +52 -3
- package/lib/element/combinator.js +10 -12
- package/lib/element/conclusion.js +33 -33
- package/lib/element/constructor.js +7 -11
- package/lib/element/deduction.js +33 -33
- package/lib/element/equivalence.js +11 -7
- package/lib/element/hypothesis.js +45 -19
- package/lib/element/judgement.js +1 -1
- package/lib/element/label.js +9 -11
- package/lib/element/proofAssertion/premise.js +98 -87
- package/lib/element/proofAssertion/step.js +27 -27
- package/lib/element/proofAssertion/supposition.js +99 -88
- package/lib/element/proofAssertion.js +3 -3
- package/lib/element/reference.js +30 -38
- package/lib/element/signature.js +38 -47
- package/lib/element/statement.js +18 -58
- package/lib/element/substitution/frame.js +34 -42
- package/lib/element/substitution/reference.js +12 -13
- package/lib/element/substitution/statement.js +26 -31
- package/lib/element/substitution/term.js +32 -37
- package/lib/element/term.js +2 -2
- package/lib/element/topLevelAssertion/axiom.js +33 -34
- package/lib/element/topLevelAssertion.js +30 -7
- package/lib/element/topLevelMetaAssertion.js +2 -2
- package/lib/process/discharge.js +38 -0
- package/lib/process/unification.js +228 -0
- package/lib/process/unify.js +9 -5
- package/lib/process/validation.js +291 -0
- package/lib/utilities/context.js +69 -105
- package/lib/utilities/element.js +2 -4
- package/lib/utilities/string.js +4 -4
- package/package.json +1 -1
- package/src/context/bounded.js +19 -7
- package/src/context.js +26 -6
- package/src/element/assertion/signature.js +21 -26
- package/src/element/assertion/subproof.js +43 -45
- package/src/element/assertion/type.js +30 -1
- package/src/element/assumption/metaLevel.js +26 -22
- package/src/element/assumption.js +80 -2
- package/src/element/combinator.js +11 -14
- package/src/element/conclusion.js +38 -37
- package/src/element/constructor.js +8 -13
- package/src/element/deduction.js +38 -37
- package/src/element/equivalence.js +17 -13
- package/src/element/hypothesis.js +59 -19
- package/src/element/judgement.js +1 -1
- package/src/element/label.js +10 -12
- package/src/element/proofAssertion/premise.js +123 -107
- package/src/element/proofAssertion/step.js +29 -29
- package/src/element/proofAssertion/supposition.js +124 -108
- package/src/element/proofAssertion.js +2 -2
- package/src/element/reference.js +36 -47
- package/src/element/signature.js +42 -53
- package/src/element/statement.js +18 -89
- package/src/element/substitution/frame.js +45 -58
- package/src/element/substitution/reference.js +13 -16
- package/src/element/substitution/statement.js +27 -34
- package/src/element/substitution/term.js +37 -46
- package/src/element/term.js +1 -1
- package/src/element/topLevelAssertion/axiom.js +43 -45
- package/src/element/topLevelAssertion.js +42 -6
- package/src/element/topLevelMetaAssertion.js +2 -2
- package/src/process/discharge.js +33 -0
- package/src/{utilities → process}/unification.js +21 -27
- package/src/process/unify.js +9 -5
- package/src/{utilities → process}/validation.js +2 -2
- package/src/utilities/context.js +77 -128
- package/src/utilities/element.js +2 -5
- package/src/utilities/string.js +6 -6
- package/lib/context/ephemeral.js +0 -28
- package/lib/context/synoptic.js +0 -255
- package/lib/utilities/unification.js +0 -233
- package/lib/utilities/validation.js +0 -291
- package/src/context/ephemeral.js +0 -17
- package/src/context/synoptic.js +0 -361
package/lib/context/synoptic.js
DELETED
|
@@ -1,255 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", {
|
|
3
|
-
value: true
|
|
4
|
-
});
|
|
5
|
-
Object.defineProperty(exports, "default", {
|
|
6
|
-
enumerable: true,
|
|
7
|
-
get: function() {
|
|
8
|
-
return SynopticContext;
|
|
9
|
-
}
|
|
10
|
-
});
|
|
11
|
-
const _necessary = require("necessary");
|
|
12
|
-
const _context = /*#__PURE__*/ _interop_require_default(require("../context"));
|
|
13
|
-
const _synoptic = require("../utilities/synoptic");
|
|
14
|
-
function _interop_require_default(obj) {
|
|
15
|
-
return obj && obj.__esModule ? obj : {
|
|
16
|
-
default: obj
|
|
17
|
-
};
|
|
18
|
-
}
|
|
19
|
-
const { first, last } = _necessary.arrayUtilities;
|
|
20
|
-
class SynopticContext extends _context.default {
|
|
21
|
-
constructor(context, contexts){
|
|
22
|
-
super(context);
|
|
23
|
-
this.contexts = contexts;
|
|
24
|
-
}
|
|
25
|
-
getContexts() {
|
|
26
|
-
return this.contexts;
|
|
27
|
-
}
|
|
28
|
-
isStated() {
|
|
29
|
-
const firstContext = first(this.contexts), context = firstContext, stated = context.isStated();
|
|
30
|
-
return stated;
|
|
31
|
-
}
|
|
32
|
-
getTerms(terms = []) {
|
|
33
|
-
this.contexts.forEach((context)=>{
|
|
34
|
-
context.getTerms(terms);
|
|
35
|
-
});
|
|
36
|
-
(0, _synoptic.compressTerms)(terms);
|
|
37
|
-
return terms;
|
|
38
|
-
}
|
|
39
|
-
getFrames(frames = []) {
|
|
40
|
-
this.contexts.forEach((context)=>{
|
|
41
|
-
context.getFrames(frames);
|
|
42
|
-
});
|
|
43
|
-
(0, _synoptic.compressFrames)(frames);
|
|
44
|
-
return frames;
|
|
45
|
-
}
|
|
46
|
-
getProperties(properties = []) {
|
|
47
|
-
this.contexts.forEach((context)=>{
|
|
48
|
-
context.getProperties(properties);
|
|
49
|
-
});
|
|
50
|
-
(0, _synoptic.compressProperties)(properties);
|
|
51
|
-
return properties;
|
|
52
|
-
}
|
|
53
|
-
getEqualities(equalities = []) {
|
|
54
|
-
this.contexts.forEach((context)=>{
|
|
55
|
-
context.getEqualities(equalities);
|
|
56
|
-
});
|
|
57
|
-
(0, _synoptic.compressEqualities)(equalities);
|
|
58
|
-
return equalities;
|
|
59
|
-
}
|
|
60
|
-
getJudgements(judgements = []) {
|
|
61
|
-
this.contexts.forEach((context)=>{
|
|
62
|
-
context.getJudgements(judgements);
|
|
63
|
-
});
|
|
64
|
-
(0, _synoptic.compressJudgements)(judgements);
|
|
65
|
-
return judgements;
|
|
66
|
-
}
|
|
67
|
-
getAssertions(assertions = []) {
|
|
68
|
-
this.contexts.forEach((context)=>{
|
|
69
|
-
context.getAssertions(assertions);
|
|
70
|
-
});
|
|
71
|
-
(0, _synoptic.compressAssertions)(assertions);
|
|
72
|
-
return assertions;
|
|
73
|
-
}
|
|
74
|
-
getStatements(statements = []) {
|
|
75
|
-
this.contexts.forEach((context)=>{
|
|
76
|
-
context.getStatements(statements);
|
|
77
|
-
});
|
|
78
|
-
(0, _synoptic.compressStatements)(statements);
|
|
79
|
-
return statements;
|
|
80
|
-
}
|
|
81
|
-
getSignatures(signatures = []) {
|
|
82
|
-
this.contexts.forEach((context)=>{
|
|
83
|
-
context.getSignatures(signatures);
|
|
84
|
-
});
|
|
85
|
-
(0, _synoptic.compressSignatures)(signatures);
|
|
86
|
-
return signatures;
|
|
87
|
-
}
|
|
88
|
-
getReferences(references = []) {
|
|
89
|
-
this.contexts.forEach((context)=>{
|
|
90
|
-
context.getReferences(references);
|
|
91
|
-
});
|
|
92
|
-
(0, _synoptic.compressReferences)(references);
|
|
93
|
-
return references;
|
|
94
|
-
}
|
|
95
|
-
getAssumptions(assumptions = []) {
|
|
96
|
-
this.contexts.forEach((context)=>{
|
|
97
|
-
context.getAssumptions(assumptions);
|
|
98
|
-
});
|
|
99
|
-
(0, _synoptic.compressAssumptions)(assumptions);
|
|
100
|
-
return assumptions;
|
|
101
|
-
}
|
|
102
|
-
getMetavariables(metavariables = []) {
|
|
103
|
-
this.contexts.forEach((context)=>{
|
|
104
|
-
context.getMetavariables(metavariables);
|
|
105
|
-
});
|
|
106
|
-
(0, _synoptic.compressMetavariables)(metavariables);
|
|
107
|
-
return metavariables;
|
|
108
|
-
}
|
|
109
|
-
getSubstitutions(substitutions = []) {
|
|
110
|
-
this.contexts.forEach((context)=>{
|
|
111
|
-
context.getSubstitutions(substitutions);
|
|
112
|
-
});
|
|
113
|
-
(0, _synoptic.compressSubstitutions)(substitutions);
|
|
114
|
-
return substitutions;
|
|
115
|
-
}
|
|
116
|
-
getPropertyRelations(propertyRelations = []) {
|
|
117
|
-
this.contexts.forEach((context)=>{
|
|
118
|
-
context.getPropertyRelations(propertyRelations);
|
|
119
|
-
});
|
|
120
|
-
(0, _synoptic.compressPropertyRelations)(propertyRelations);
|
|
121
|
-
return propertyRelations;
|
|
122
|
-
}
|
|
123
|
-
findTermByTermNode(termNode) {
|
|
124
|
-
const terms = this.getTerms(), term = terms.find((term)=>{
|
|
125
|
-
const termNodeMatches = term.matchTermNode(termNode);
|
|
126
|
-
if (termNodeMatches) {
|
|
127
|
-
return true;
|
|
128
|
-
}
|
|
129
|
-
}) || null;
|
|
130
|
-
return term;
|
|
131
|
-
}
|
|
132
|
-
findFrameByFrameNode(frameNode) {
|
|
133
|
-
const frames = this.getFrames(), frame = frames.find((frame)=>{
|
|
134
|
-
const frameNodeMatches = frame.matchFrameNode(frameNode);
|
|
135
|
-
if (frameNodeMatches) {
|
|
136
|
-
return true;
|
|
137
|
-
}
|
|
138
|
-
}) || null;
|
|
139
|
-
return frame;
|
|
140
|
-
}
|
|
141
|
-
findPropertyByPropetyNode(propertyNode) {
|
|
142
|
-
const propertys = this.getProperties(), property = propertys.find((property)=>{
|
|
143
|
-
const propertyNodeMatches = property.matchFrameNode(propertyNode);
|
|
144
|
-
if (propertyNodeMatches) {
|
|
145
|
-
return true;
|
|
146
|
-
}
|
|
147
|
-
}) || null;
|
|
148
|
-
return property;
|
|
149
|
-
}
|
|
150
|
-
findEqualityByEqualityNode(equalityNode) {
|
|
151
|
-
const equalities = this.getEqualities(), equality = equalities.find((equality)=>{
|
|
152
|
-
const equalityNodeMatches = equality.matchEqualityNode(equalityNode);
|
|
153
|
-
if (equalityNodeMatches) {
|
|
154
|
-
return true;
|
|
155
|
-
}
|
|
156
|
-
}) || null;
|
|
157
|
-
return equality;
|
|
158
|
-
}
|
|
159
|
-
findJudgementByJudgementNode(judgementNode) {
|
|
160
|
-
const judgements = this.getJudgements(), judgement = judgements.find((judgement)=>{
|
|
161
|
-
const judgementNodeMatches = judgement.matchJudgementNode(judgementNode);
|
|
162
|
-
if (judgementNodeMatches) {
|
|
163
|
-
return true;
|
|
164
|
-
}
|
|
165
|
-
}) || null;
|
|
166
|
-
return judgement;
|
|
167
|
-
}
|
|
168
|
-
findAssertionByAssertionNode(assertionNode) {
|
|
169
|
-
const assertions = this.getAssertions(), assertion = assertions.find((assertion)=>{
|
|
170
|
-
const assertionNodeMatches = assertion.matchAssertionNode(assertionNode);
|
|
171
|
-
if (assertionNodeMatches) {
|
|
172
|
-
return true;
|
|
173
|
-
}
|
|
174
|
-
}) || null;
|
|
175
|
-
return assertion;
|
|
176
|
-
}
|
|
177
|
-
findStatementByStatementNode(statementNode) {
|
|
178
|
-
const statements = this.getStatements(), statement = statements.find((statement)=>{
|
|
179
|
-
const statementNodeMatches = statement.matchStatementNode(statementNode);
|
|
180
|
-
if (statementNodeMatches) {
|
|
181
|
-
return true;
|
|
182
|
-
}
|
|
183
|
-
}) || null;
|
|
184
|
-
return statement;
|
|
185
|
-
}
|
|
186
|
-
findSignatureBySignatureNode(signatureNode) {
|
|
187
|
-
const signatures = this.getSignatures(), signature = signatures.find((signature)=>{
|
|
188
|
-
const signatureNodeMatches = signature.matchSignatureNode(signatureNode);
|
|
189
|
-
if (signatureNodeMatches) {
|
|
190
|
-
return true;
|
|
191
|
-
}
|
|
192
|
-
}) || null;
|
|
193
|
-
return signature;
|
|
194
|
-
}
|
|
195
|
-
findReferenceByReferenceNode(referenceNode) {
|
|
196
|
-
const references = this.getReferences(), reference = references.find((reference)=>{
|
|
197
|
-
const referenceMatcheReferenceNode = reference.matchReferenceNode(referenceNode);
|
|
198
|
-
if (referenceMatcheReferenceNode) {
|
|
199
|
-
return true;
|
|
200
|
-
}
|
|
201
|
-
}) || null;
|
|
202
|
-
return reference;
|
|
203
|
-
}
|
|
204
|
-
findAssumptionByAssumptionNode(assumptionNode) {
|
|
205
|
-
const assumptions = this.getAssumptions(), assumption = assumptions.find((assumption)=>{
|
|
206
|
-
const assumptionNodeMatches = assumption.matchAssumptionNode(assumptionNode);
|
|
207
|
-
if (assumptionNodeMatches) {
|
|
208
|
-
return true;
|
|
209
|
-
}
|
|
210
|
-
}) || null;
|
|
211
|
-
return assumption;
|
|
212
|
-
}
|
|
213
|
-
findReferenceByMetavariableNode(metavariableNode) {
|
|
214
|
-
const references = this.getReferences(), reference = references.find((reference)=>{
|
|
215
|
-
const referenceMatcheMetavariableNode = reference.matchMetavariableNode(metavariableNode);
|
|
216
|
-
if (referenceMatcheMetavariableNode) {
|
|
217
|
-
return true;
|
|
218
|
-
}
|
|
219
|
-
}) || null;
|
|
220
|
-
return reference;
|
|
221
|
-
}
|
|
222
|
-
findMetavariableByMetavariableNode(metavariableNode) {
|
|
223
|
-
const metavariables = this.getMetavariables(), metavariable = metavariables.find((metavariable)=>{
|
|
224
|
-
const metavariableNodeMatches = metavariable.matchMetavariableNode(metavariableNode);
|
|
225
|
-
if (metavariableNodeMatches) {
|
|
226
|
-
return true;
|
|
227
|
-
}
|
|
228
|
-
}) || null;
|
|
229
|
-
return metavariable;
|
|
230
|
-
}
|
|
231
|
-
findSubstitutionBySubstitutionNode(substitutionNode) {
|
|
232
|
-
const substitutions = this.getSubstitutions(), substitution = substitutions.find((substitution)=>{
|
|
233
|
-
const substitutionNodeMatches = substitution.matchSubstitutionNode(substitutionNode);
|
|
234
|
-
if (substitutionNodeMatches) {
|
|
235
|
-
return true;
|
|
236
|
-
}
|
|
237
|
-
}) || null;
|
|
238
|
-
return substitution;
|
|
239
|
-
}
|
|
240
|
-
findPropertyRelationByPropertyRelationNode(propertyRelationNode) {
|
|
241
|
-
const propertyRelations = this.getPropertyRelations(), propertyRelation = propertyRelations.find((propertyRelation)=>{
|
|
242
|
-
const propertyRelationNodeMatches = propertyRelation.matchPropertyRelationNode(propertyRelationNode);
|
|
243
|
-
if (propertyRelationNodeMatches) {
|
|
244
|
-
return true;
|
|
245
|
-
}
|
|
246
|
-
}) || null;
|
|
247
|
-
return propertyRelation;
|
|
248
|
-
}
|
|
249
|
-
static fromContexts(contexts) {
|
|
250
|
-
const lastContext = last(contexts), context = lastContext, synopticContext = new SynopticContext(context, contexts);
|
|
251
|
-
return synopticContext;
|
|
252
|
-
}
|
|
253
|
-
}
|
|
254
|
-
|
|
255
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb250ZXh0L3N5bm9wdGljLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgeyBhcnJheVV0aWxpdGllcyB9IGZyb20gXCJuZWNlc3NhcnlcIjtcblxuaW1wb3J0IENvbnRleHQgZnJvbSBcIi4uL2NvbnRleHRcIjtcblxuaW1wb3J0IHsgY29tcHJlc3NUZXJtcyxcbiAgICAgICAgIGNvbXByZXNzRnJhbWVzLFxuICAgICAgICAgY29tcHJlc3NQcm9wZXJ0aWVzLFxuICAgICAgICAgY29tcHJlc3NFcXVhbGl0aWVzLFxuICAgICAgICAgY29tcHJlc3NKdWRnZW1lbnRzLFxuICAgICAgICAgY29tcHJlc3NBc3NlcnRpb25zLFxuICAgICAgICAgY29tcHJlc3NTdGF0ZW1lbnRzLFxuICAgICAgICAgY29tcHJlc3NTaWduYXR1cmVzLFxuICAgICAgICAgY29tcHJlc3NSZWZlcmVuY2VzLFxuICAgICAgICAgY29tcHJlc3NBc3N1bXB0aW9ucyxcbiAgICAgICAgIGNvbXByZXNzTWV0YXZhcmlhYmxlcyxcbiAgICAgICAgIGNvbXByZXNzU3Vic3RpdHV0aW9ucyxcbiAgICAgICAgIGNvbXByZXNzUHJvcGVydHlSZWxhdGlvbnMsfSBmcm9tIFwiLi4vdXRpbGl0aWVzL3N5bm9wdGljXCI7XG5cbmNvbnN0IHsgZmlyc3QsIGxhc3QgfSA9IGFycmF5VXRpbGl0aWVzO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBTeW5vcHRpY0NvbnRleHQgZXh0ZW5kcyBDb250ZXh0IHtcbiAgY29uc3RydWN0b3IoY29udGV4dCwgY29udGV4dHMpIHtcbiAgICBzdXBlcihjb250ZXh0KTtcblxuICAgIHRoaXMuY29udGV4dHMgPSBjb250ZXh0cztcbiAgfVxuXG4gIGdldENvbnRleHRzKCkge1xuICAgIHJldHVybiB0aGlzLmNvbnRleHRzO1xuICB9XG5cbiAgaXNTdGF0ZWQoKSB7XG4gICAgY29uc3QgZmlyc3RDb250ZXh0ID0gZmlyc3QodGhpcy5jb250ZXh0cyksXG4gICAgICAgICAgY29udGV4dCA9IGZpcnN0Q29udGV4dCwgLy8vXG4gICAgICAgICAgc3RhdGVkID0gY29udGV4dC5pc1N0YXRlZCgpO1xuXG4gICAgcmV0dXJuIHN0YXRlZDtcbiAgfVxuXG4gIGdldFRlcm1zKHRlcm1zID0gW10pIHtcbiAgICB0aGlzLmNvbnRleHRzLmZvckVhY2goKGNvbnRleHQpID0+IHtcbiAgICAgIGNvbnRleHQuZ2V0VGVybXModGVybXMpO1xuICAgIH0pO1xuXG4gICAgY29tcHJlc3NUZXJtcyh0ZXJtcyk7XG5cbiAgICByZXR1cm4gdGVybXM7XG4gIH1cblxuICBnZXRGcmFtZXMoZnJhbWVzID0gW10pIHtcbiAgICB0aGlzLmNvbnRleHRzLmZvckVhY2goKGNvbnRleHQpID0+IHtcbiAgICAgIGNvbnRleHQuZ2V0RnJhbWVzKGZyYW1lcyk7XG4gICAgfSk7XG5cbiAgICBjb21wcmVzc0ZyYW1lcyhmcmFtZXMpO1xuXG4gICAgcmV0dXJuIGZyYW1lcztcbiAgfVxuXG4gIGdldFByb3BlcnRpZXMocHJvcGVydGllcyA9IFtdKSB7XG4gICAgdGhpcy5jb250ZXh0cy5mb3JFYWNoKChjb250ZXh0KSA9PiB7XG4gICAgICBjb250ZXh0LmdldFByb3BlcnRpZXMocHJvcGVydGllcyk7XG4gICAgfSk7XG5cbiAgICBjb21wcmVzc1Byb3BlcnRpZXMocHJvcGVydGllcyk7XG5cbiAgICByZXR1cm4gcHJvcGVydGllcztcbiAgfVxuXG4gIGdldEVxdWFsaXRpZXMoZXF1YWxpdGllcyA9IFtdKSB7XG4gICAgdGhpcy5jb250ZXh0cy5mb3JFYWNoKChjb250ZXh0KSA9PiB7XG4gICAgICBjb250ZXh0LmdldEVxdWFsaXRpZXMoZXF1YWxpdGllcyk7XG4gICAgfSk7XG5cbiAgICBjb21wcmVzc0VxdWFsaXRpZXMoZXF1YWxpdGllcyk7XG5cbiAgICByZXR1cm4gZXF1YWxpdGllcztcbiAgfVxuXG4gIGdldEp1ZGdlbWVudHMoanVkZ2VtZW50cyA9IFtdKSB7XG4gICAgdGhpcy5jb250ZXh0cy5mb3JFYWNoKChjb250ZXh0KSA9PiB7XG4gICAgICBjb250ZXh0LmdldEp1ZGdlbWVudHMoanVkZ2VtZW50cyk7XG4gICAgfSk7XG5cbiAgICBjb21wcmVzc0p1ZGdlbWVudHMoanVkZ2VtZW50cyk7XG5cbiAgICByZXR1cm4ganVkZ2VtZW50cztcbiAgfVxuXG4gIGdldEFzc2VydGlvbnMoYXNzZXJ0aW9ucyA9IFtdKSB7XG4gICAgdGhpcy5jb250ZXh0cy5mb3JFYWNoKChjb250ZXh0KSA9PiB7XG4gICAgICBjb250ZXh0LmdldEFzc2VydGlvbnMoYXNzZXJ0aW9ucyk7XG4gICAgfSk7XG5cbiAgICBjb21wcmVzc0Fzc2VydGlvbnMoYXNzZXJ0aW9ucyk7XG5cbiAgICByZXR1cm4gYXNzZXJ0aW9ucztcbiAgfVxuXG4gIGdldFN0YXRlbWVudHMoc3RhdGVtZW50cyA9IFtdKSB7XG4gICAgdGhpcy5jb250ZXh0cy5mb3JFYWNoKChjb250ZXh0KSA9PiB7XG4gICAgICBjb250ZXh0LmdldFN0YXRlbWVudHMoc3RhdGVtZW50cyk7XG4gICAgfSk7XG5cbiAgICBjb21wcmVzc1N0YXRlbWVudHMoc3RhdGVtZW50cyk7XG5cbiAgICByZXR1cm4gc3RhdGVtZW50cztcbiAgfVxuXG4gIGdldFNpZ25hdHVyZXMoc2lnbmF0dXJlcyA9IFtdKSB7XG4gICAgdGhpcy5jb250ZXh0cy5mb3JFYWNoKChjb250ZXh0KSA9PiB7XG4gICAgICBjb250ZXh0LmdldFNpZ25hdHVyZXMoc2lnbmF0dXJlcyk7XG4gICAgfSk7XG5cbiAgICBjb21wcmVzc1NpZ25hdHVyZXMoc2lnbmF0dXJlcyk7XG5cbiAgICByZXR1cm4gc2lnbmF0dXJlcztcbiAgfVxuXG4gIGdldFJlZmVyZW5jZXMocmVmZXJlbmNlcyA9IFtdKSB7XG4gICAgdGhpcy5jb250ZXh0cy5mb3JFYWNoKChjb250ZXh0KSA9PiB7XG4gICAgICBjb250ZXh0LmdldFJlZmVyZW5jZXMocmVmZXJlbmNlcyk7XG4gICAgfSk7XG5cbiAgICBjb21wcmVzc1JlZmVyZW5jZXMocmVmZXJlbmNlcyk7XG5cbiAgICByZXR1cm4gcmVmZXJlbmNlcztcbiAgfVxuXG4gIGdldEFzc3VtcHRpb25zKGFzc3VtcHRpb25zID0gW10pIHtcbiAgICB0aGlzLmNvbnRleHRzLmZvckVhY2goKGNvbnRleHQpID0+IHtcbiAgICAgIGNvbnRleHQuZ2V0QXNzdW1wdGlvbnMoYXNzdW1wdGlvbnMpO1xuICAgIH0pO1xuXG4gICAgY29tcHJlc3NBc3N1bXB0aW9ucyhhc3N1bXB0aW9ucyk7XG5cbiAgICByZXR1cm4gYXNzdW1wdGlvbnM7XG4gIH1cblxuICBnZXRNZXRhdmFyaWFibGVzKG1ldGF2YXJpYWJsZXMgPSBbXSkge1xuICAgIHRoaXMuY29udGV4dHMuZm9yRWFjaCgoY29udGV4dCkgPT4ge1xuICAgICAgY29udGV4dC5nZXRNZXRhdmFyaWFibGVzKG1ldGF2YXJpYWJsZXMpO1xuICAgIH0pO1xuXG4gICAgY29tcHJlc3NNZXRhdmFyaWFibGVzKG1ldGF2YXJpYWJsZXMpO1xuXG4gICAgcmV0dXJuIG1ldGF2YXJpYWJsZXM7XG4gIH1cblxuICBnZXRTdWJzdGl0dXRpb25zKHN1YnN0aXR1dGlvbnMgPSBbXSkge1xuICAgIHRoaXMuY29udGV4dHMuZm9yRWFjaCgoY29udGV4dCkgPT4ge1xuICAgICAgY29udGV4dC5nZXRTdWJzdGl0dXRpb25zKHN1YnN0aXR1dGlvbnMpO1xuICAgIH0pO1xuXG4gICAgY29tcHJlc3NTdWJzdGl0dXRpb25zKHN1YnN0aXR1dGlvbnMpO1xuXG4gICAgcmV0dXJuIHN1YnN0aXR1dGlvbnM7XG4gIH1cblxuICBnZXRQcm9wZXJ0eVJlbGF0aW9ucyhwcm9wZXJ0eVJlbGF0aW9ucyA9IFtdKSB7XG4gICAgdGhpcy5jb250ZXh0cy5mb3JFYWNoKChjb250ZXh0KSA9PiB7XG4gICAgICBjb250ZXh0LmdldFByb3BlcnR5UmVsYXRpb25zKHByb3BlcnR5UmVsYXRpb25zKTtcbiAgICB9KTtcblxuICAgIGNvbXByZXNzUHJvcGVydHlSZWxhdGlvbnMocHJvcGVydHlSZWxhdGlvbnMpO1xuXG4gICAgcmV0dXJuIHByb3BlcnR5UmVsYXRpb25zO1xuICB9XG5cbiAgZmluZFRlcm1CeVRlcm1Ob2RlKHRlcm1Ob2RlKSB7XG4gICAgY29uc3QgdGVybXMgPSB0aGlzLmdldFRlcm1zKCksXG4gICAgICAgICAgdGVybSA9IHRlcm1zLmZpbmQoKHRlcm0pID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHRlcm1Ob2RlTWF0Y2hlcyA9IHRlcm0ubWF0Y2hUZXJtTm9kZSh0ZXJtTm9kZSk7XG5cbiAgICAgICAgICAgIGlmICh0ZXJtTm9kZU1hdGNoZXMpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSkgfHwgbnVsbDtcblxuICAgIHJldHVybiB0ZXJtO1xuICB9XG5cbiAgZmluZEZyYW1lQnlGcmFtZU5vZGUoZnJhbWVOb2RlKSB7XG4gICAgY29uc3QgZnJhbWVzID0gdGhpcy5nZXRGcmFtZXMoKSxcbiAgICAgICAgICBmcmFtZSA9IGZyYW1lcy5maW5kKChmcmFtZSkgPT4ge1xuICAgICAgICAgICAgY29uc3QgZnJhbWVOb2RlTWF0Y2hlcyA9IGZyYW1lLm1hdGNoRnJhbWVOb2RlKGZyYW1lTm9kZSk7XG5cbiAgICAgICAgICAgIGlmIChmcmFtZU5vZGVNYXRjaGVzKSB7XG4gICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pIHx8IG51bGw7XG5cbiAgICByZXR1cm4gZnJhbWU7XG4gIH1cblxuICBmaW5kUHJvcGVydHlCeVByb3BldHlOb2RlKHByb3BlcnR5Tm9kZSkge1xuICAgIGNvbnN0IHByb3BlcnR5cyA9IHRoaXMuZ2V0UHJvcGVydGllcygpLFxuICAgICAgICAgIHByb3BlcnR5ID0gcHJvcGVydHlzLmZpbmQoKHByb3BlcnR5KSA9PiB7XG4gICAgICAgICAgICBjb25zdCBwcm9wZXJ0eU5vZGVNYXRjaGVzID0gcHJvcGVydHkubWF0Y2hGcmFtZU5vZGUocHJvcGVydHlOb2RlKTtcblxuICAgICAgICAgICAgaWYgKHByb3BlcnR5Tm9kZU1hdGNoZXMpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSkgfHwgbnVsbDtcblxuICAgIHJldHVybiBwcm9wZXJ0eTtcbiAgfVxuXG4gIGZpbmRFcXVhbGl0eUJ5RXF1YWxpdHlOb2RlKGVxdWFsaXR5Tm9kZSkge1xuICAgIGNvbnN0IGVxdWFsaXRpZXMgPSB0aGlzLmdldEVxdWFsaXRpZXMoKSxcbiAgICAgICAgICBlcXVhbGl0eSA9IGVxdWFsaXRpZXMuZmluZCgoZXF1YWxpdHkpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGVxdWFsaXR5Tm9kZU1hdGNoZXMgPSBlcXVhbGl0eS5tYXRjaEVxdWFsaXR5Tm9kZShlcXVhbGl0eU5vZGUpO1xuXG4gICAgICAgICAgICBpZiAoZXF1YWxpdHlOb2RlTWF0Y2hlcykge1xuICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KSB8fCBudWxsO1xuXG4gICAgcmV0dXJuIGVxdWFsaXR5O1xuICB9XG5cbiAgZmluZEp1ZGdlbWVudEJ5SnVkZ2VtZW50Tm9kZShqdWRnZW1lbnROb2RlKSB7XG4gICAgY29uc3QganVkZ2VtZW50cyA9IHRoaXMuZ2V0SnVkZ2VtZW50cygpLFxuICAgICAgICAgIGp1ZGdlbWVudCA9IGp1ZGdlbWVudHMuZmluZCgoanVkZ2VtZW50KSA9PiB7XG4gICAgICAgICAgICBjb25zdCBqdWRnZW1lbnROb2RlTWF0Y2hlcyA9IGp1ZGdlbWVudC5tYXRjaEp1ZGdlbWVudE5vZGUoanVkZ2VtZW50Tm9kZSk7XG5cbiAgICAgICAgICAgIGlmIChqdWRnZW1lbnROb2RlTWF0Y2hlcykge1xuICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KSB8fCBudWxsO1xuXG4gICAgcmV0dXJuIGp1ZGdlbWVudDtcbiAgfVxuXG4gIGZpbmRBc3NlcnRpb25CeUFzc2VydGlvbk5vZGUoYXNzZXJ0aW9uTm9kZSkge1xuICAgIGNvbnN0IGFzc2VydGlvbnMgPSB0aGlzLmdldEFzc2VydGlvbnMoKSxcbiAgICAgICAgICBhc3NlcnRpb24gPSBhc3NlcnRpb25zLmZpbmQoKGFzc2VydGlvbikgPT4ge1xuICAgICAgICAgICAgY29uc3QgYXNzZXJ0aW9uTm9kZU1hdGNoZXMgPSBhc3NlcnRpb24ubWF0Y2hBc3NlcnRpb25Ob2RlKGFzc2VydGlvbk5vZGUpO1xuXG4gICAgICAgICAgICBpZiAoYXNzZXJ0aW9uTm9kZU1hdGNoZXMpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSkgfHwgbnVsbDtcblxuICAgIHJldHVybiBhc3NlcnRpb247XG4gIH1cblxuICBmaW5kU3RhdGVtZW50QnlTdGF0ZW1lbnROb2RlKHN0YXRlbWVudE5vZGUpIHtcbiAgICBjb25zdCBzdGF0ZW1lbnRzID0gdGhpcy5nZXRTdGF0ZW1lbnRzKCksXG4gICAgICAgICAgc3RhdGVtZW50ID0gc3RhdGVtZW50cy5maW5kKChzdGF0ZW1lbnQpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHN0YXRlbWVudE5vZGVNYXRjaGVzID0gc3RhdGVtZW50Lm1hdGNoU3RhdGVtZW50Tm9kZShzdGF0ZW1lbnROb2RlKTtcblxuICAgICAgICAgICAgaWYgKHN0YXRlbWVudE5vZGVNYXRjaGVzKSB7XG4gICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pIHx8IG51bGw7XG5cbiAgICByZXR1cm4gc3RhdGVtZW50O1xuICB9XG5cbiAgZmluZFNpZ25hdHVyZUJ5U2lnbmF0dXJlTm9kZShzaWduYXR1cmVOb2RlKSB7XG4gICAgY29uc3Qgc2lnbmF0dXJlcyA9IHRoaXMuZ2V0U2lnbmF0dXJlcygpLFxuICAgICAgICAgIHNpZ25hdHVyZSA9IHNpZ25hdHVyZXMuZmluZCgoc2lnbmF0dXJlKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBzaWduYXR1cmVOb2RlTWF0Y2hlcyA9IHNpZ25hdHVyZS5tYXRjaFNpZ25hdHVyZU5vZGUoc2lnbmF0dXJlTm9kZSk7XG5cbiAgICAgICAgICAgIGlmIChzaWduYXR1cmVOb2RlTWF0Y2hlcykge1xuICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KSB8fCBudWxsO1xuXG4gICAgcmV0dXJuIHNpZ25hdHVyZTtcbiAgfVxuXG4gIGZpbmRSZWZlcmVuY2VCeVJlZmVyZW5jZU5vZGUocmVmZXJlbmNlTm9kZSkge1xuICAgIGNvbnN0IHJlZmVyZW5jZXMgPSB0aGlzLmdldFJlZmVyZW5jZXMoKSxcbiAgICAgICAgICByZWZlcmVuY2UgPSByZWZlcmVuY2VzLmZpbmQoKHJlZmVyZW5jZSkgPT4ge1xuICAgICAgICAgICAgY29uc3QgcmVmZXJlbmNlTWF0Y2hlUmVmZXJlbmNlTm9kZSA9IHJlZmVyZW5jZS5tYXRjaFJlZmVyZW5jZU5vZGUocmVmZXJlbmNlTm9kZSk7XG5cbiAgICAgICAgICAgIGlmIChyZWZlcmVuY2VNYXRjaGVSZWZlcmVuY2VOb2RlKSB7XG4gICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pIHx8IG51bGw7XG5cbiAgICByZXR1cm4gcmVmZXJlbmNlO1xuICB9XG5cbiAgZmluZEFzc3VtcHRpb25CeUFzc3VtcHRpb25Ob2RlKGFzc3VtcHRpb25Ob2RlKSB7XG4gICAgY29uc3QgYXNzdW1wdGlvbnMgPSB0aGlzLmdldEFzc3VtcHRpb25zKCksXG4gICAgICAgICAgYXNzdW1wdGlvbiA9IGFzc3VtcHRpb25zLmZpbmQoKGFzc3VtcHRpb24pID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGFzc3VtcHRpb25Ob2RlTWF0Y2hlcyA9IGFzc3VtcHRpb24ubWF0Y2hBc3N1bXB0aW9uTm9kZShhc3N1bXB0aW9uTm9kZSk7XG5cbiAgICAgICAgICAgIGlmIChhc3N1bXB0aW9uTm9kZU1hdGNoZXMpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSkgfHwgbnVsbDtcblxuICAgIHJldHVybiBhc3N1bXB0aW9uO1xuICB9XG5cbiAgZmluZFJlZmVyZW5jZUJ5TWV0YXZhcmlhYmxlTm9kZShtZXRhdmFyaWFibGVOb2RlKSB7XG4gICAgY29uc3QgcmVmZXJlbmNlcyA9IHRoaXMuZ2V0UmVmZXJlbmNlcygpLFxuICAgICAgICAgIHJlZmVyZW5jZSA9IHJlZmVyZW5jZXMuZmluZCgocmVmZXJlbmNlKSA9PiB7XG4gICAgICAgICAgICBjb25zdCByZWZlcmVuY2VNYXRjaGVNZXRhdmFyaWFibGVOb2RlID0gcmVmZXJlbmNlLm1hdGNoTWV0YXZhcmlhYmxlTm9kZShtZXRhdmFyaWFibGVOb2RlKTtcblxuICAgICAgICAgICAgaWYgKHJlZmVyZW5jZU1hdGNoZU1ldGF2YXJpYWJsZU5vZGUpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSkgfHwgbnVsbDtcblxuICAgIHJldHVybiByZWZlcmVuY2U7XG4gIH1cblxuICBmaW5kTWV0YXZhcmlhYmxlQnlNZXRhdmFyaWFibGVOb2RlKG1ldGF2YXJpYWJsZU5vZGUpIHtcbiAgICBjb25zdCBtZXRhdmFyaWFibGVzID0gdGhpcy5nZXRNZXRhdmFyaWFibGVzKCksXG4gICAgICAgICAgbWV0YXZhcmlhYmxlID0gbWV0YXZhcmlhYmxlcy5maW5kKChtZXRhdmFyaWFibGUpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IG1ldGF2YXJpYWJsZU5vZGVNYXRjaGVzID0gbWV0YXZhcmlhYmxlLm1hdGNoTWV0YXZhcmlhYmxlTm9kZShtZXRhdmFyaWFibGVOb2RlKTtcblxuICAgICAgICAgICAgaWYgKG1ldGF2YXJpYWJsZU5vZGVNYXRjaGVzKSB7XG4gICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pIHx8IG51bGw7XG5cbiAgICByZXR1cm4gbWV0YXZhcmlhYmxlO1xuICB9XG5cbiAgZmluZFN1YnN0aXR1dGlvbkJ5U3Vic3RpdHV0aW9uTm9kZShzdWJzdGl0dXRpb25Ob2RlKSB7XG4gICAgY29uc3Qgc3Vic3RpdHV0aW9ucyA9IHRoaXMuZ2V0U3Vic3RpdHV0aW9ucygpLFxuICAgICAgICAgIHN1YnN0aXR1dGlvbiA9IHN1YnN0aXR1dGlvbnMuZmluZCgoc3Vic3RpdHV0aW9uKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBzdWJzdGl0dXRpb25Ob2RlTWF0Y2hlcyA9IHN1YnN0aXR1dGlvbi5tYXRjaFN1YnN0aXR1dGlvbk5vZGUoc3Vic3RpdHV0aW9uTm9kZSk7XG5cbiAgICAgICAgICAgIGlmIChzdWJzdGl0dXRpb25Ob2RlTWF0Y2hlcykge1xuICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KSB8fCBudWxsO1xuXG4gICAgcmV0dXJuIHN1YnN0aXR1dGlvbjtcbiAgfVxuXG4gIGZpbmRQcm9wZXJ0eVJlbGF0aW9uQnlQcm9wZXJ0eVJlbGF0aW9uTm9kZShwcm9wZXJ0eVJlbGF0aW9uTm9kZSkge1xuICAgIGNvbnN0IHByb3BlcnR5UmVsYXRpb25zID0gdGhpcy5nZXRQcm9wZXJ0eVJlbGF0aW9ucygpLFxuICAgICAgICAgIHByb3BlcnR5UmVsYXRpb24gPSBwcm9wZXJ0eVJlbGF0aW9ucy5maW5kKChwcm9wZXJ0eVJlbGF0aW9uKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBwcm9wZXJ0eVJlbGF0aW9uTm9kZU1hdGNoZXMgPSBwcm9wZXJ0eVJlbGF0aW9uLm1hdGNoUHJvcGVydHlSZWxhdGlvbk5vZGUocHJvcGVydHlSZWxhdGlvbk5vZGUpO1xuXG4gICAgICAgICAgICBpZiAocHJvcGVydHlSZWxhdGlvbk5vZGVNYXRjaGVzKSB7XG4gICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pIHx8IG51bGw7XG5cbiAgICByZXR1cm4gcHJvcGVydHlSZWxhdGlvbjtcbiAgfVxuXG4gIHN0YXRpYyBmcm9tQ29udGV4dHMoY29udGV4dHMpIHtcbiAgICBjb25zdCBsYXN0Q29udGV4dCA9IGxhc3QoY29udGV4dHMpLFxuICAgICAgICAgIGNvbnRleHQgPSBsYXN0Q29udGV4dCwgIC8vL1xuICAgICAgICAgIHN5bm9wdGljQ29udGV4dCA9IG5ldyBTeW5vcHRpY0NvbnRleHQoY29udGV4dCwgY29udGV4dHMpO1xuXG4gICAgcmV0dXJuIHN5bm9wdGljQ29udGV4dDtcbiAgfVxufVxuIl0sIm5hbWVzIjpbIlN5bm9wdGljQ29udGV4dCIsImZpcnN0IiwibGFzdCIsImFycmF5VXRpbGl0aWVzIiwiQ29udGV4dCIsImNvbnRleHQiLCJjb250ZXh0cyIsImdldENvbnRleHRzIiwiaXNTdGF0ZWQiLCJmaXJzdENvbnRleHQiLCJzdGF0ZWQiLCJnZXRUZXJtcyIsInRlcm1zIiwiZm9yRWFjaCIsImNvbXByZXNzVGVybXMiLCJnZXRGcmFtZXMiLCJmcmFtZXMiLCJjb21wcmVzc0ZyYW1lcyIsImdldFByb3BlcnRpZXMiLCJwcm9wZXJ0aWVzIiwiY29tcHJlc3NQcm9wZXJ0aWVzIiwiZ2V0RXF1YWxpdGllcyIsImVxdWFsaXRpZXMiLCJjb21wcmVzc0VxdWFsaXRpZXMiLCJnZXRKdWRnZW1lbnRzIiwianVkZ2VtZW50cyIsImNvbXByZXNzSnVkZ2VtZW50cyIsImdldEFzc2VydGlvbnMiLCJhc3NlcnRpb25zIiwiY29tcHJlc3NBc3NlcnRpb25zIiwiZ2V0U3RhdGVtZW50cyIsInN0YXRlbWVudHMiLCJjb21wcmVzc1N0YXRlbWVudHMiLCJnZXRTaWduYXR1cmVzIiwic2lnbmF0dXJlcyIsImNvbXByZXNzU2lnbmF0dXJlcyIsImdldFJlZmVyZW5jZXMiLCJyZWZlcmVuY2VzIiwiY29tcHJlc3NSZWZlcmVuY2VzIiwiZ2V0QXNzdW1wdGlvbnMiLCJhc3N1bXB0aW9ucyIsImNvbXByZXNzQXNzdW1wdGlvbnMiLCJnZXRNZXRhdmFyaWFibGVzIiwibWV0YXZhcmlhYmxlcyIsImNvbXByZXNzTWV0YXZhcmlhYmxlcyIsImdldFN1YnN0aXR1dGlvbnMiLCJzdWJzdGl0dXRpb25zIiwiY29tcHJlc3NTdWJzdGl0dXRpb25zIiwiZ2V0UHJvcGVydHlSZWxhdGlvbnMiLCJwcm9wZXJ0eVJlbGF0aW9ucyIsImNvbXByZXNzUHJvcGVydHlSZWxhdGlvbnMiLCJmaW5kVGVybUJ5VGVybU5vZGUiLCJ0ZXJtTm9kZSIsInRlcm0iLCJmaW5kIiwidGVybU5vZGVNYXRjaGVzIiwibWF0Y2hUZXJtTm9kZSIsImZpbmRGcmFtZUJ5RnJhbWVOb2RlIiwiZnJhbWVOb2RlIiwiZnJhbWUiLCJmcmFtZU5vZGVNYXRjaGVzIiwibWF0Y2hGcmFtZU5vZGUiLCJmaW5kUHJvcGVydHlCeVByb3BldHlOb2RlIiwicHJvcGVydHlOb2RlIiwicHJvcGVydHlzIiwicHJvcGVydHkiLCJwcm9wZXJ0eU5vZGVNYXRjaGVzIiwiZmluZEVxdWFsaXR5QnlFcXVhbGl0eU5vZGUiLCJlcXVhbGl0eU5vZGUiLCJlcXVhbGl0eSIsImVxdWFsaXR5Tm9kZU1hdGNoZXMiLCJtYXRjaEVxdWFsaXR5Tm9kZSIsImZpbmRKdWRnZW1lbnRCeUp1ZGdlbWVudE5vZGUiLCJqdWRnZW1lbnROb2RlIiwianVkZ2VtZW50IiwianVkZ2VtZW50Tm9kZU1hdGNoZXMiLCJtYXRjaEp1ZGdlbWVudE5vZGUiLCJmaW5kQXNzZXJ0aW9uQnlBc3NlcnRpb25Ob2RlIiwiYXNzZXJ0aW9uTm9kZSIsImFzc2VydGlvbiIsImFzc2VydGlvbk5vZGVNYXRjaGVzIiwibWF0Y2hBc3NlcnRpb25Ob2RlIiwiZmluZFN0YXRlbWVudEJ5U3RhdGVtZW50Tm9kZSIsInN0YXRlbWVudE5vZGUiLCJzdGF0ZW1lbnQiLCJzdGF0ZW1lbnROb2RlTWF0Y2hlcyIsIm1hdGNoU3RhdGVtZW50Tm9kZSIsImZpbmRTaWduYXR1cmVCeVNpZ25hdHVyZU5vZGUiLCJzaWduYXR1cmVOb2RlIiwic2lnbmF0dXJlIiwic2lnbmF0dXJlTm9kZU1hdGNoZXMiLCJtYXRjaFNpZ25hdHVyZU5vZGUiLCJmaW5kUmVmZXJlbmNlQnlSZWZlcmVuY2VOb2RlIiwicmVmZXJlbmNlTm9kZSIsInJlZmVyZW5jZSIsInJlZmVyZW5jZU1hdGNoZVJlZmVyZW5jZU5vZGUiLCJtYXRjaFJlZmVyZW5jZU5vZGUiLCJmaW5kQXNzdW1wdGlvbkJ5QXNzdW1wdGlvbk5vZGUiLCJhc3N1bXB0aW9uTm9kZSIsImFzc3VtcHRpb24iLCJhc3N1bXB0aW9uTm9kZU1hdGNoZXMiLCJtYXRjaEFzc3VtcHRpb25Ob2RlIiwiZmluZFJlZmVyZW5jZUJ5TWV0YXZhcmlhYmxlTm9kZSIsIm1ldGF2YXJpYWJsZU5vZGUiLCJyZWZlcmVuY2VNYXRjaGVNZXRhdmFyaWFibGVOb2RlIiwibWF0Y2hNZXRhdmFyaWFibGVOb2RlIiwiZmluZE1ldGF2YXJpYWJsZUJ5TWV0YXZhcmlhYmxlTm9kZSIsIm1ldGF2YXJpYWJsZSIsIm1ldGF2YXJpYWJsZU5vZGVNYXRjaGVzIiwiZmluZFN1YnN0aXR1dGlvbkJ5U3Vic3RpdHV0aW9uTm9kZSIsInN1YnN0aXR1dGlvbk5vZGUiLCJzdWJzdGl0dXRpb24iLCJzdWJzdGl0dXRpb25Ob2RlTWF0Y2hlcyIsIm1hdGNoU3Vic3RpdHV0aW9uTm9kZSIsImZpbmRQcm9wZXJ0eVJlbGF0aW9uQnlQcm9wZXJ0eVJlbGF0aW9uTm9kZSIsInByb3BlcnR5UmVsYXRpb25Ob2RlIiwicHJvcGVydHlSZWxhdGlvbiIsInByb3BlcnR5UmVsYXRpb25Ob2RlTWF0Y2hlcyIsIm1hdGNoUHJvcGVydHlSZWxhdGlvbk5vZGUiLCJmcm9tQ29udGV4dHMiLCJsYXN0Q29udGV4dCIsInN5bm9wdGljQ29udGV4dCJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7K0JBc0JBOzs7ZUFBcUJBOzs7MkJBcEJVO2dFQUVYOzBCQWNzQjs7Ozs7O0FBRTFDLE1BQU0sRUFBRUMsS0FBSyxFQUFFQyxJQUFJLEVBQUUs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
|
|
@@ -1,233 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", {
|
|
3
|
-
value: true
|
|
4
|
-
});
|
|
5
|
-
Object.defineProperty(exports, "unifySteps", {
|
|
6
|
-
enumerable: true,
|
|
7
|
-
get: function() {
|
|
8
|
-
return unifySteps;
|
|
9
|
-
}
|
|
10
|
-
});
|
|
11
|
-
const _elements = /*#__PURE__*/ _interop_require_default(require("../elements"));
|
|
12
|
-
const _context = require("./context");
|
|
13
|
-
function _interop_require_default(obj) {
|
|
14
|
-
return obj && obj.__esModule ? obj : {
|
|
15
|
-
default: obj
|
|
16
|
-
};
|
|
17
|
-
}
|
|
18
|
-
async function unifyStepWithRule(step, context) {
|
|
19
|
-
let stepUnifiesWithRule = false;
|
|
20
|
-
const reference = step.getReference();
|
|
21
|
-
if (reference !== null) {
|
|
22
|
-
const rule = context.findRuleByReference(reference);
|
|
23
|
-
if (rule !== null) {
|
|
24
|
-
const stepString = step.getString(), ruleString = rule.getString();
|
|
25
|
-
context.trace(`Unifying the '${stepString}' step with the '${ruleString}' rule...`);
|
|
26
|
-
const subproofOrProofAssertions = context.getSubproofOrProofAssertions(), stepAndSubproofOrProofAssertionsUnify = await rule.unifyStepAndSubproofOrProofAssertions(step, subproofOrProofAssertions, context);
|
|
27
|
-
if (stepAndSubproofOrProofAssertionsUnify) {
|
|
28
|
-
stepUnifiesWithRule = true;
|
|
29
|
-
}
|
|
30
|
-
if (stepUnifiesWithRule) {
|
|
31
|
-
context.debug(`...unified the '${stepString}' step with the '${ruleString}' rule.`);
|
|
32
|
-
}
|
|
33
|
-
}
|
|
34
|
-
}
|
|
35
|
-
return stepUnifiesWithRule;
|
|
36
|
-
}
|
|
37
|
-
async function unifyStepWithTopLevelAssertion(step, context) {
|
|
38
|
-
let stepUnifiesWithTopLevelAssertion = false;
|
|
39
|
-
const reference = step.getReference();
|
|
40
|
-
if (reference !== null) {
|
|
41
|
-
const topLevelAssertion = context.findTopLevelAssertionByReference(reference);
|
|
42
|
-
if (topLevelAssertion !== null) {
|
|
43
|
-
const satisfiable = topLevelAssertion.isSatisfiable();
|
|
44
|
-
if (!satisfiable) {
|
|
45
|
-
const stepString = step.getString(), topLevelAssertionString = reference.getString();
|
|
46
|
-
context.trace(`Unifying the '${stepString}' step with the '${topLevelAssertionString}' top level assertion...`);
|
|
47
|
-
const subproofOrProofAssertions = context.getSubproofOrProofAssertions(), stepAndSubproofOrProofAssertionsUnify = await topLevelAssertion.unifyStepAndSubproofOrProofAssertions(step, subproofOrProofAssertions, context);
|
|
48
|
-
if (stepAndSubproofOrProofAssertionsUnify) {
|
|
49
|
-
stepUnifiesWithTopLevelAssertion = true;
|
|
50
|
-
}
|
|
51
|
-
if (stepUnifiesWithTopLevelAssertion) {
|
|
52
|
-
context.debug(`...unified the '${stepString}' step with the '${topLevelAssertionString}' top level assertion.`);
|
|
53
|
-
}
|
|
54
|
-
}
|
|
55
|
-
}
|
|
56
|
-
}
|
|
57
|
-
return stepUnifiesWithTopLevelAssertion;
|
|
58
|
-
}
|
|
59
|
-
async function unifyStepWithSignatureAssertion(step, context) {
|
|
60
|
-
let stepUnifiesWithSignatureAssertion = false;
|
|
61
|
-
const signatureAssertion = step.getSignatureAssertion();
|
|
62
|
-
if (signatureAssertion !== null) {
|
|
63
|
-
const stepString = step.getString(), signatureAssertionString = signatureAssertion.getString();
|
|
64
|
-
context.trace(`Unifying the '${stepString}' step with the '${signatureAssertionString}' signature assertion...`);
|
|
65
|
-
const subproofOrProofAssertions = context.getSubproofOrProofAssertions(), stepAndSubproofOrProofAssertionsUnify = await signatureAssertion.unifyStepAndSubproofOrProofAssertions(step, subproofOrProofAssertions, context);
|
|
66
|
-
if (stepAndSubproofOrProofAssertionsUnify) {
|
|
67
|
-
stepUnifiesWithSignatureAssertion = true;
|
|
68
|
-
}
|
|
69
|
-
if (stepUnifiesWithSignatureAssertion) {
|
|
70
|
-
context.debug(`...unified the '${stepString}' step with the '${signatureAssertionString}' signature assertion.`);
|
|
71
|
-
}
|
|
72
|
-
}
|
|
73
|
-
return stepUnifiesWithSignatureAssertion;
|
|
74
|
-
}
|
|
75
|
-
async function unifyStepAsUnqualifiedEquality(step, context) {
|
|
76
|
-
let stepUnifiesAUnqualifiedEquality = false;
|
|
77
|
-
const unqualified = step.isUnqualified();
|
|
78
|
-
if (unqualified) {
|
|
79
|
-
const { Equality } = _elements.default, statement = step.getStatement(), equality = Equality.fromStatement(statement, context);
|
|
80
|
-
if (equality !== null) {
|
|
81
|
-
const stepString = step.getString();
|
|
82
|
-
context.trace(`Unifying the '${stepString}' step as an unqualified equality...`);
|
|
83
|
-
stepUnifiesAUnqualifiedEquality = true;
|
|
84
|
-
if (stepUnifiesAUnqualifiedEquality) {
|
|
85
|
-
context.debug(`...unified the '${stepString}' step as an unqualified equality.`);
|
|
86
|
-
}
|
|
87
|
-
}
|
|
88
|
-
}
|
|
89
|
-
return stepUnifiesAUnqualifiedEquality;
|
|
90
|
-
}
|
|
91
|
-
async function unifyStepAsUNqualifiedJudgement(step, context) {
|
|
92
|
-
let stepUnifiesAsUnqualifiedJudgement = false;
|
|
93
|
-
const unqualified = step.isUnqualified();
|
|
94
|
-
if (unqualified) {
|
|
95
|
-
const { Judgement } = _elements.default, statement = step.getStatement(), judgement = Judgement.fromStatement(statement, context);
|
|
96
|
-
if (judgement !== null) {
|
|
97
|
-
const stepString = step.getString();
|
|
98
|
-
context.trace(`Unifying the '${stepString}' step as an unqualified judgement...`);
|
|
99
|
-
stepUnifiesAsUnqualifiedJudgement = true;
|
|
100
|
-
if (stepUnifiesAsUnqualifiedJudgement) {
|
|
101
|
-
context.debug(`...unified the '${stepString}' step as an unqualified judgement.`);
|
|
102
|
-
}
|
|
103
|
-
}
|
|
104
|
-
}
|
|
105
|
-
return stepUnifiesAsUnqualifiedJudgement;
|
|
106
|
-
}
|
|
107
|
-
async function unifyStepAsUnqualifiedTypeAssertion(step, context) {
|
|
108
|
-
let stepUnifiesAsUnqualifiedTypeAssertion = false;
|
|
109
|
-
const unqualified = step.isUnqualified();
|
|
110
|
-
if (unqualified) {
|
|
111
|
-
const { TypeAssertion } = _elements.default, statement = step.getStatement(), typeAssertion = TypeAssertion.fromStatement(statement, context);
|
|
112
|
-
if (typeAssertion !== null) {
|
|
113
|
-
const stepString = step.getString();
|
|
114
|
-
context.trace(`Unifying the '${stepString}' step as an unqualified type assertion...`);
|
|
115
|
-
stepUnifiesAsUnqualifiedTypeAssertion = true;
|
|
116
|
-
if (stepUnifiesAsUnqualifiedTypeAssertion) {
|
|
117
|
-
context.debug(`...unified the '${stepString}' step as an unqualified type assertion.`);
|
|
118
|
-
}
|
|
119
|
-
}
|
|
120
|
-
}
|
|
121
|
-
return stepUnifiesAsUnqualifiedTypeAssertion;
|
|
122
|
-
}
|
|
123
|
-
async function unifyStepAsUnqualifiedPropertyAssertion(step, context) {
|
|
124
|
-
let stepUnifiesAsUnqualifiedPropertyAssertion = false;
|
|
125
|
-
const unqualified = step.isUnqualified();
|
|
126
|
-
if (unqualified) {
|
|
127
|
-
const { PropertyAssertion } = _elements.default, statement = step.getStatement(), propertyAssertion = PropertyAssertion.fromStatement(statement, context);
|
|
128
|
-
if (propertyAssertion !== null) {
|
|
129
|
-
const stepString = step.getString();
|
|
130
|
-
context.trace(`Unifying the '${stepString}' step as an unqualified property assertion...`);
|
|
131
|
-
stepUnifiesAsUnqualifiedPropertyAssertion = true;
|
|
132
|
-
if (stepUnifiesAsUnqualifiedPropertyAssertion) {
|
|
133
|
-
context.debug(`...unified the '${stepString}' step as an unqualified property assertion.`);
|
|
134
|
-
}
|
|
135
|
-
}
|
|
136
|
-
}
|
|
137
|
-
return stepUnifiesAsUnqualifiedPropertyAssertion;
|
|
138
|
-
}
|
|
139
|
-
async function unifyStepAsUnqualifiedSignatureAssertion(step, context) {
|
|
140
|
-
let stepUnifiesAsUnqualifiedSignatureAssertion = false;
|
|
141
|
-
const unqualified = step.isUnqualified();
|
|
142
|
-
if (unqualified) {
|
|
143
|
-
const { SignatureAssertion } = _elements.default, statement = step.getStatement(), signatureAssertion = SignatureAssertion.fromStatement(statement, context);
|
|
144
|
-
if (signatureAssertion !== null) {
|
|
145
|
-
const stepString = step.getString();
|
|
146
|
-
context.trace(`Unifying the '${stepString}' step as a signature assertion...`);
|
|
147
|
-
stepUnifiesAsUnqualifiedSignatureAssertion = true;
|
|
148
|
-
if (stepUnifiesAsUnqualifiedSignatureAssertion) {
|
|
149
|
-
context.debug(`...unified the '${stepString}' step as a signature assertion.`);
|
|
150
|
-
}
|
|
151
|
-
}
|
|
152
|
-
}
|
|
153
|
-
return stepUnifiesAsUnqualifiedSignatureAssertion;
|
|
154
|
-
}
|
|
155
|
-
async function validateStepAsMetaLevelAssumption(step, context) {
|
|
156
|
-
let stepValidatesAsMetaLevelAssumption = false;
|
|
157
|
-
const metaLevel = context.isMetaLevel();
|
|
158
|
-
if (metaLevel) {
|
|
159
|
-
const reference = step.getReference();
|
|
160
|
-
if (reference !== null) {
|
|
161
|
-
const stepString = step.getString(), topLevelAssertion = context.findTopLevelAssertionByReference(reference);
|
|
162
|
-
if (topLevelAssertion === null) {
|
|
163
|
-
context.trace(`Validating the '${stepString}' step as a meta-level assumption...`);
|
|
164
|
-
(0, _context.descend)((context)=>{
|
|
165
|
-
let metaLevelAssumption;
|
|
166
|
-
const { MetaLevelAssumption } = _elements.default;
|
|
167
|
-
metaLevelAssumption = MetaLevelAssumption.fromStep(step, context);
|
|
168
|
-
metaLevelAssumption = metaLevelAssumption.validate(context); ///
|
|
169
|
-
if (metaLevelAssumption !== null) {
|
|
170
|
-
stepValidatesAsMetaLevelAssumption = true;
|
|
171
|
-
}
|
|
172
|
-
}, context);
|
|
173
|
-
if (stepValidatesAsMetaLevelAssumption) {
|
|
174
|
-
context.debug(`...validated the '${stepString}' step as a meta-level assumption.`);
|
|
175
|
-
}
|
|
176
|
-
}
|
|
177
|
-
}
|
|
178
|
-
}
|
|
179
|
-
return stepValidatesAsMetaLevelAssumption;
|
|
180
|
-
}
|
|
181
|
-
async function unifyStepAsSignatureAssertion(step, context) {
|
|
182
|
-
let stepUnifiesAsSignatureAssertion = false;
|
|
183
|
-
const reference = step.getReference();
|
|
184
|
-
if (reference !== null) {
|
|
185
|
-
const topLevelAssertion = context.findTopLevelAssertionByReference(reference);
|
|
186
|
-
if (topLevelAssertion !== null) {
|
|
187
|
-
const statementNode = step.getStatementNode(), signatureAssertionNode = statementNode.getSignatureAssertionNode();
|
|
188
|
-
if (signatureAssertionNode !== null) {
|
|
189
|
-
const stepString = step.getString(), referenceString = reference.getString(), signatureAssertion = context.findAssertionByAssertionNode(signatureAssertionNode);
|
|
190
|
-
context.trace(`Unifying the '${stepString}' step as a signature assertion with the '${referenceString}' reference...`);
|
|
191
|
-
const unifyTopLevelAssertion = await signatureAssertion.unifyTopLevelAssertion(topLevelAssertion, context);
|
|
192
|
-
if (unifyTopLevelAssertion) {
|
|
193
|
-
stepUnifiesAsSignatureAssertion = true;
|
|
194
|
-
}
|
|
195
|
-
if (stepUnifiesAsSignatureAssertion) {
|
|
196
|
-
context.debug(`...unified the '${stepString}' step as a signature assertion with the '${referenceString}' reference.`);
|
|
197
|
-
}
|
|
198
|
-
}
|
|
199
|
-
}
|
|
200
|
-
}
|
|
201
|
-
return stepUnifiesAsSignatureAssertion;
|
|
202
|
-
}
|
|
203
|
-
async function compareStepWithSubproofOrProofAssertions(step, context) {
|
|
204
|
-
let stepComparesToSubproofOrProofAssertions = false;
|
|
205
|
-
const unqualified = step.isUnqualified();
|
|
206
|
-
if (unqualified) {
|
|
207
|
-
const stepString = step.getString();
|
|
208
|
-
context.trace(`Comparing the '${stepString}' step with the subproofs or proof asssertions...`);
|
|
209
|
-
const subproofOrProofAssertions = context.getSubproofOrProofAssertions(), comparesToSubproofOrProofAssertions = step.compareSubproofOrProofAssertions(subproofOrProofAssertions, context);
|
|
210
|
-
if (comparesToSubproofOrProofAssertions) {
|
|
211
|
-
stepComparesToSubproofOrProofAssertions = true;
|
|
212
|
-
}
|
|
213
|
-
if (stepComparesToSubproofOrProofAssertions) {
|
|
214
|
-
context.debug(`...compared the '${stepString}' step with the subproofs or proof asssertions.`);
|
|
215
|
-
}
|
|
216
|
-
}
|
|
217
|
-
return stepComparesToSubproofOrProofAssertions;
|
|
218
|
-
}
|
|
219
|
-
const unifySteps = [
|
|
220
|
-
unifyStepWithRule,
|
|
221
|
-
unifyStepWithTopLevelAssertion,
|
|
222
|
-
unifyStepWithSignatureAssertion,
|
|
223
|
-
unifyStepAsUnqualifiedEquality,
|
|
224
|
-
unifyStepAsUNqualifiedJudgement,
|
|
225
|
-
unifyStepAsUnqualifiedTypeAssertion,
|
|
226
|
-
unifyStepAsUnqualifiedPropertyAssertion,
|
|
227
|
-
unifyStepAsUnqualifiedSignatureAssertion,
|
|
228
|
-
validateStepAsMetaLevelAssumption,
|
|
229
|
-
unifyStepAsSignatureAssertion,
|
|
230
|
-
compareStepWithSubproofOrProofAssertions
|
|
231
|
-
];
|
|
232
|
-
|
|
233
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlsaXRpZXMvdW5pZmljYXRpb24uanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmltcG9ydCBlbGVtZW50cyBmcm9tIFwiLi4vZWxlbWVudHNcIjtcblxuaW1wb3J0IHsgZGVzY2VuZCB9IGZyb20gXCIuL2NvbnRleHRcIjtcblxuYXN5bmMgZnVuY3Rpb24gdW5pZnlTdGVwV2l0aFJ1bGUoc3RlcCwgY29udGV4dCkge1xuICBsZXQgc3RlcFVuaWZpZXNXaXRoUnVsZSA9IGZhbHNlO1xuXG4gIGNvbnN0IHJlZmVyZW5jZSA9IHN0ZXAuZ2V0UmVmZXJlbmNlKCk7XG5cbiAgaWYgKHJlZmVyZW5jZSAhPT0gbnVsbCkge1xuICAgIGNvbnN0IHJ1bGUgPSBjb250ZXh0LmZpbmRSdWxlQnlSZWZlcmVuY2UocmVmZXJlbmNlKTtcblxuICAgIGlmIChydWxlICE9PSBudWxsKSB7XG4gICAgICBjb25zdCBzdGVwU3RyaW5nID0gc3RlcC5nZXRTdHJpbmcoKSxcbiAgICAgICAgICAgIHJ1bGVTdHJpbmcgPSBydWxlLmdldFN0cmluZygpO1xuXG4gICAgICBjb250ZXh0LnRyYWNlKGBVbmlmeWluZyB0aGUgJyR7c3RlcFN0cmluZ30nIHN0ZXAgd2l0aCB0aGUgJyR7cnVsZVN0cmluZ30nIHJ1bGUuLi5gKTtcblxuICAgICAgY29uc3Qgc3VicHJvb2ZPclByb29mQXNzZXJ0aW9ucyA9IGNvbnRleHQuZ2V0U3VicHJvb2ZPclByb29mQXNzZXJ0aW9ucygpLFxuICAgICAgICAgICAgc3RlcEFuZFN1YnByb29mT3JQcm9vZkFzc2VydGlvbnNVbmlmeSA9IGF3YWl0IHJ1bGUudW5pZnlTdGVwQW5kU3VicHJvb2ZPclByb29mQXNzZXJ0aW9ucyhzdGVwLCBzdWJwcm9vZk9yUHJvb2ZBc3NlcnRpb25zLCBjb250ZXh0KTtcblxuICAgICAgaWYgKHN0ZXBBbmRTdWJwcm9vZk9yUHJvb2ZBc3NlcnRpb25zVW5pZnkpIHtcbiAgICAgICAgc3RlcFVuaWZpZXNXaXRoUnVsZSA9IHRydWU7XG4gICAgICB9XG5cbiAgICAgIGlmIChzdGVwVW5pZmllc1dpdGhSdWxlKSB7XG4gICAgICAgIGNvbnRleHQuZGVidWcoYC4uLnVuaWZpZWQgdGhlICcke3N0ZXBTdHJpbmd9JyBzdGVwIHdpdGggdGhlICcke3J1bGVTdHJpbmd9JyBydWxlLmApO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiBzdGVwVW5pZmllc1dpdGhSdWxlO1xufVxuXG5hc3luYyBmdW5jdGlvbiB1bmlmeVN0ZXBXaXRoVG9wTGV2ZWxBc3NlcnRpb24oc3RlcCwgY29udGV4dCkge1xuICBsZXQgc3RlcFVuaWZpZXNXaXRoVG9wTGV2ZWxBc3NlcnRpb24gPSBmYWxzZTtcblxuICBjb25zdCByZWZlcmVuY2UgPSBzdGVwLmdldFJlZmVyZW5jZSgpO1xuXG4gIGlmIChyZWZlcmVuY2UgIT09IG51bGwpIHtcbiAgICBjb25zdCB0b3BMZXZlbEFzc2VydGlvbiA9IGNvbnRleHQuZmluZFRvcExldmVsQXNzZXJ0aW9uQnlSZWZlcmVuY2UocmVmZXJlbmNlKTtcblxuICAgIGlmICh0b3BMZXZlbEFzc2VydGlvbiAhPT0gbnVsbCkge1xuICAgICAgY29uc3Qgc2F0aXNmaWFibGUgPSB0b3BMZXZlbEFzc2VydGlvbi5pc1NhdGlzZmlhYmxlKCk7XG5cbiAgICAgIGlmICghc2F0aXNmaWFibGUpIHtcbiAgICAgICAgY29uc3Qgc3RlcFN0cmluZyA9IHN0ZXAuZ2V0U3RyaW5nKCksXG4gICAgICAgICAgICAgIHRvcExldmVsQXNzZXJ0aW9uU3RyaW5nID0gcmVmZXJlbmNlLmdldFN0cmluZygpO1xuXG4gICAgICAgIGNvbnRleHQudHJhY2UoYFVuaWZ5aW5nIHRoZSAnJHtzdGVwU3RyaW5nfScgc3RlcCB3aXRoIHRoZSAnJHt0b3BMZXZlbEFzc2VydGlvblN0cmluZ30nIHRvcCBsZXZlbCBhc3NlcnRpb24uLi5gKTtcblxuICAgICAgICBjb25zdCBzdWJwcm9vZk9yUHJvb2ZBc3NlcnRpb25zID0gY29udGV4dC5nZXRTdWJwcm9vZk9yUHJvb2ZBc3NlcnRpb25zKCksXG4gICAgICAgICAgICAgIHN0ZXBBbmRTdWJwcm9vZk9yUHJvb2ZBc3NlcnRpb25zVW5pZnkgPSBhd2FpdCB0b3BMZXZlbEFzc2VydGlvbi51bmlmeVN0ZXBBbmRTdWJwcm9vZk9yUHJvb2ZBc3NlcnRpb25zKHN0ZXAsIHN1YnByb29mT3JQcm9vZkFzc2VydGlvbnMsIGNvbnRleHQpO1xuXG4gICAgICAgIGlmIChzdGVwQW5kU3VicHJvb2ZPclByb29mQXNzZXJ0aW9uc1VuaWZ5KSB7XG4gICAgICAgICAgc3RlcFVuaWZpZXNXaXRoVG9wTGV2ZWxBc3NlcnRpb24gPSB0cnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHN0ZXBVbmlmaWVzV2l0aFRvcExldmVsQXNzZXJ0aW9uKSB7XG4gICAgICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udW5pZmllZCB0aGUgJyR7c3RlcFN0cmluZ30nIHN0ZXAgd2l0aCB0aGUgJyR7dG9wTGV2ZWxBc3NlcnRpb25TdHJpbmd9JyB0b3AgbGV2ZWwgYXNzZXJ0aW9uLmApO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHN0ZXBVbmlmaWVzV2l0aFRvcExldmVsQXNzZXJ0aW9uO1xufVxuXG5hc3luYyBmdW5jdGlvbiB1bmlmeVN0ZXBXaXRoU2lnbmF0dXJlQXNzZXJ0aW9uKHN0ZXAsIGNvbnRleHQpIHtcbiAgbGV0IHN0ZXBVbmlmaWVzV2l0aFNpZ25hdHVyZUFzc2VydGlvbiA9IGZhbHNlO1xuXG4gIGNvbnN0IHNpZ25hdHVyZUFzc2VydGlvbiA9IHN0ZXAuZ2V0U2lnbmF0dXJlQXNzZXJ0aW9uKCk7XG5cbiAgaWYgKHNpZ25hdHVyZUFzc2VydGlvbiAhPT0gbnVsbCkge1xuICAgIGNvbnN0IHN0ZXBTdHJpbmcgPSBzdGVwLmdldFN0cmluZygpLFxuICAgICAgICAgIHNpZ25hdHVyZUFzc2VydGlvblN0cmluZyA9IHNpZ25hdHVyZUFzc2VydGlvbi5nZXRTdHJpbmcoKTtcblxuICAgIGNvbnRleHQudHJhY2UoYFVuaWZ5aW5nIHRoZSAnJHtzdGVwU3RyaW5nfScgc3RlcCB3aXRoIHRoZSAnJHtzaWduYXR1cmVBc3NlcnRpb25TdHJpbmd9JyBzaWduYXR1cmUgYXNzZXJ0aW9uLi4uYCk7XG5cbiAgICBjb25zdCBzdWJwcm9vZk9yUHJvb2ZBc3NlcnRpb25zID0gY29udGV4dC5nZXRTdWJwcm9vZk9yUHJvb2ZBc3NlcnRpb25zKCksXG4gICAgICAgICAgc3RlcEFuZFN1YnByb29mT3JQcm9vZkFzc2VydGlvbnNVbmlmeSA9IGF3YWl0IHNpZ25hdHVyZUFzc2VydGlvbi51bmlmeVN0ZXBBbmRTdWJwcm9vZk9yUHJvb2ZBc3NlcnRpb25zKHN0ZXAsIHN1YnByb29mT3JQcm9vZkFzc2VydGlvbnMsIGNvbnRleHQpO1xuXG4gICAgaWYgKHN0ZXBBbmRTdWJwcm9vZk9yUHJvb2ZBc3NlcnRpb25zVW5pZnkpIHtcbiAgICAgIHN0ZXBVbmlmaWVzV2l0aFNpZ25hdHVyZUFzc2VydGlvbiA9IHRydWU7XG4gICAgfVxuXG4gICAgaWYgKHN0ZXBVbmlmaWVzV2l0aFNpZ25hdHVyZUFzc2VydGlvbikge1xuICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udW5pZmllZCB0aGUgJyR7c3RlcFN0cmluZ30nIHN0ZXAgd2l0aCB0aGUgJyR7c2lnbmF0dXJlQXNzZXJ0aW9uU3RyaW5nfScgc2lnbmF0dXJlIGFzc2VydGlvbi5gKTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gc3RlcFVuaWZpZXNXaXRoU2lnbmF0dXJlQXNzZXJ0aW9uO1xufVxuXG5hc3luYyBmdW5jdGlvbiB1bmlmeVN0ZXBBc1VucXVhbGlmaWVkRXF1YWxpdHkoc3RlcCwgY29udGV4dCkge1xuICBsZXQgc3RlcFVuaWZpZXNBVW5xdWFsaWZpZWRFcXVhbGl0eSA9IGZhbHNlO1xuXG4gIGNvbnN0IHVucXVhbGlmaWVkID0gc3RlcC5pc1VucXVhbGlmaWVkKCk7XG5cbiAgaWYgKHVucXVhbGlmaWVkKSB7XG4gICAgY29uc3QgeyBFcXVhbGl0eSB9ID0gZWxlbWVudHMsXG4gICAgICAgICAgc3RhdGVtZW50ID0gc3RlcC5nZXRTdGF0ZW1lbnQoKSxcbiAgICAgICAgICBlcXVhbGl0eSA9IEVxdWFsaXR5LmZyb21TdGF0ZW1lbnQoc3RhdGVtZW50LCBjb250ZXh0KTtcblxuICAgIGlmIChlcXVhbGl0eSAhPT0gbnVsbCkge1xuICAgICAgY29uc3Qgc3RlcFN0cmluZyA9IHN0ZXAuZ2V0U3RyaW5nKCk7XG5cbiAgICAgIGNvbnRleHQudHJhY2UoYFVuaWZ5aW5nIHRoZSAnJHtzdGVwU3RyaW5nfScgc3RlcCBhcyBhbiB1bnF1YWxpZmllZCBlcXVhbGl0eS4uLmApO1xuXG4gICAgICBzdGVwVW5pZmllc0FVbnF1YWxpZmllZEVxdWFsaXR5ID0gdHJ1ZTtcblxuICAgICAgaWYgKHN0ZXBVbmlmaWVzQVVucXVhbGlmaWVkRXF1YWxpdHkpIHtcbiAgICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udW5pZmllZCB0aGUgJyR7c3RlcFN0cmluZ30nIHN0ZXAgYXMgYW4gdW5xdWFsaWZpZWQgZXF1YWxpdHkuYCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHN0ZXBVbmlmaWVzQVVucXVhbGlmaWVkRXF1YWxpdHk7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIHVuaWZ5U3RlcEFzVU5xdWFsaWZpZWRKdWRnZW1lbnQoc3RlcCwgY29udGV4dCkge1xuICBsZXQgc3RlcFVuaWZpZXNBc1VucXVhbGlmaWVkSnVkZ2VtZW50ID0gZmFsc2U7XG5cbiAgY29uc3QgdW5xdWFsaWZpZWQgPSBzdGVwLmlzVW5xdWFsaWZpZWQoKTtcblxuICBpZiAodW5xdWFsaWZpZWQpIHtcbiAgICBjb25zdCB7IEp1ZGdlbWVudCB9ID0gZWxlbWVudHMsXG4gICAgICAgICAgc3RhdGVtZW50ID0gc3RlcC5nZXRTdGF0ZW1lbnQoKSxcbiAgICAgICAgICBqdWRnZW1lbnQgPSBKdWRnZW1lbnQuZnJvbVN0YXRlbWVudChzdGF0ZW1lbnQsIGNvbnRleHQpO1xuXG4gICAgaWYgKGp1ZGdlbWVudCAhPT0gbnVsbCkge1xuICAgICAgY29uc3Qgc3RlcFN0cmluZyA9IHN0ZXAuZ2V0U3RyaW5nKCk7XG5cbiAgICAgIGNvbnRleHQudHJhY2UoYFVuaWZ5aW5nIHRoZSAnJHtzdGVwU3RyaW5nfScgc3RlcCBhcyBhbiB1bnF1YWxpZmllZCBqdWRnZW1lbnQuLi5gKTtcblxuICAgICAgc3RlcFVuaWZpZXNBc1VucXVhbGlmaWVkSnVkZ2VtZW50ID0gdHJ1ZTtcblxuICAgICAgaWYgKHN0ZXBVbmlmaWVzQXNVbnF1YWxpZmllZEp1ZGdlbWVudCkge1xuICAgICAgICBjb250ZXh0LmRlYnVnKGAuLi51bmlmaWVkIHRoZSAnJHtzdGVwU3RyaW5nfScgc3RlcCBhcyBhbiB1bnF1YWxpZmllZCBqdWRnZW1lbnQuYCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHN0ZXBVbmlmaWVzQXNVbnF1YWxpZmllZEp1ZGdlbWVudDtcbn1cblxuYXN5bmMgZnVuY3Rpb24gdW5pZnlTdGVwQXNVbnF1YWxpZmllZFR5cGVBc3NlcnRpb24oc3RlcCwgY29udGV4dCkge1xuICBsZXQgc3RlcFVuaWZpZXNBc1VucXVhbGlmaWVkVHlwZUFzc2VydGlvbiA9IGZhbHNlO1xuXG4gIGNvbnN0IHVucXVhbGlmaWVkID0gc3RlcC5pc1VucXVhbGlmaWVkKCk7XG5cbiAgaWYgKHVucXVhbGlmaWVkKSB7XG4gICAgY29uc3QgeyBUeXBlQXNzZXJ0aW9uIH0gPSBlbGVtZW50cyxcbiAgICAgICAgICBzdGF0ZW1lbnQgPSBzdGVwLmdldFN0YXRlbWVudCgpLFxuICAgICAgICAgIHR5cGVBc3NlcnRpb24gPSBUeXBlQXNzZXJ0aW9uLmZyb21TdGF0ZW1lbnQoc3RhdGVtZW50LCBjb250ZXh0KTtcblxuICAgIGlmICh0eXBlQXNzZXJ0aW9uICE9PSBudWxsKSB7XG4gICAgICBjb25zdCBzdGVwU3RyaW5nID0gc3RlcC5nZXRTdHJpbmcoKTtcblxuICAgICAgY29udGV4dC50cmFjZShgVW5pZnlpbmcgdGhlICcke3N0ZXBTdHJpbmd9JyBzdGVwIGFzIGFuIHVucXVhbGlmaWVkIHR5cGUgYXNzZXJ0aW9uLi4uYCk7XG5cbiAgICAgIHN0ZXBVbmlmaWVzQXNVbnF1YWxpZmllZFR5cGVBc3NlcnRpb24gPSB0cnVlO1xuXG4gICAgICBpZiAoc3RlcFVuaWZpZXNBc1VucXVhbGlmaWVkVHlwZUFzc2VydGlvbikge1xuICAgICAgICBjb250ZXh0LmRlYnVnKGAuLi51bmlmaWVkIHRoZSAnJHtzdGVwU3RyaW5nfScgc3RlcCBhcyBhbiB1bnF1YWxpZmllZCB0eXBlIGFzc2VydGlvbi5gKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZXR1cm4gc3RlcFVuaWZpZXNBc1VucXVhbGlmaWVkVHlwZUFzc2VydGlvbjtcbn1cblxuYXN5bmMgZnVuY3Rpb24gdW5pZnlTdGVwQXNVbnF1YWxpZmllZFByb3BlcnR5QXNzZXJ0aW9uKHN0ZXAsIGNvbnRleHQpIHtcbiAgbGV0IHN0ZXBVbmlmaWVzQXNVbnF1YWxpZmllZFByb3BlcnR5QXNzZXJ0aW9uID0gZmFsc2U7XG5cbiAgY29uc3QgdW5xdWFsaWZpZWQgPSBzdGVwLmlzVW5xdWFsaWZpZWQoKTtcblxuICBpZiAodW5xdWFsaWZpZWQpIHtcbiAgICBjb25zdCB7IFByb3BlcnR5QXNzZXJ0aW9uIH0gPSBlbGVtZW50cyxcbiAgICAgICAgICBzdGF0ZW1lbnQgPSBzdGVwLmdldFN0YXRlbWVudCgpLFxuICAgICAgICAgIHByb3BlcnR5QXNzZXJ0aW9uID0gUHJvcGVydHlBc3NlcnRpb24uZnJvbVN0YXRlbWVudChzdGF0ZW1lbnQsIGNvbnRleHQpO1xuXG4gICAgaWYgKHByb3BlcnR5QXNzZXJ0aW9uICE9PSBudWxsKSB7XG4gICAgICBjb25zdCBzdGVwU3RyaW5nID0gc3RlcC5nZXRTdHJpbmcoKTtcblxuICAgICAgY29udGV4dC50cmFjZShgVW5pZnlpbmcgdGhlICcke3N0ZXBTdHJpbmd9JyBzdGVwIGFzIGFuIHVucXVhbGlmaWVkIHByb3BlcnR5IGFzc2VydGlvbi4uLmApO1xuXG4gICAgICBzdGVwVW5pZmllc0FzVW5xdWFsaWZpZWRQcm9wZXJ0eUFzc2VydGlvbiA9IHRydWU7XG5cbiAgICAgIGlmIChzdGVwVW5pZmllc0FzVW5xdWFsaWZpZWRQcm9wZXJ0eUFzc2VydGlvbikge1xuICAgICAgICBjb250ZXh0LmRlYnVnKGAuLi51bmlmaWVkIHRoZSAnJHtzdGVwU3RyaW5nfScgc3RlcCBhcyBhbiB1bnF1YWxpZmllZCBwcm9wZXJ0eSBhc3NlcnRpb24uYCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHN0ZXBVbmlmaWVzQXNVbnF1YWxpZmllZFByb3BlcnR5QXNzZXJ0aW9uO1xufVxuXG5hc3luYyBmdW5jdGlvbiB1bmlmeVN0ZXBBc1VucXVhbGlmaWVkU2lnbmF0dXJlQXNzZXJ0aW9uKHN0ZXAsIGNvbnRleHQpIHtcbiAgbGV0IHN0ZXBVbmlmaWVzQXNVbnF1YWxpZmllZFNpZ25hdHVyZUFzc2VydGlvbiA9IGZhbHNlO1xuXG4gIGNvbnN0IHVucXVhbGlmaWVkID0gc3RlcC5pc1VucXVhbGlmaWVkKCk7XG5cbiAgaWYgKHVucXVhbGlmaWVkKSB7XG4gICAgY29uc3QgeyBTaWduYXR1cmVBc3NlcnRpb24gfSA9IGVsZW1lbnRzLFxuICAgICAgICAgIHN0YXRlbWVudCA9IHN0ZXAuZ2V0U3RhdGVtZW50KCksXG4gICAgICAgICAgc2lnbmF0dXJlQXNzZXJ0aW9uID0gU2lnbmF0dXJlQXNzZXJ0aW9uLmZyb21TdGF0ZW1lbnQoc3RhdGVtZW50LCBjb250ZXh0KTtcblxuICAgIGlmIChzaWduYXR1cmVBc3NlcnRpb24gIT09IG51bGwpIHtcbiAgICAgIGNvbnN0IHN0ZXBTdHJpbmcgPSBzdGVwLmdldFN0cmluZygpO1xuXG4gICAgICBjb250ZXh0LnRyYWNlKGBVbmlmeWluZyB0aGUgJyR7c3RlcFN0cmluZ30nIHN0ZXAgYXMgYSBzaWduYXR1cmUgYXNzZXJ0aW9uLi4uYCk7XG5cbiAgICAgIHN0ZXBVbmlmaWVzQXNVbnF1YWxpZmllZFNpZ25hdHVyZUFzc2VydGlvbiA9IHRydWU7XG5cbiAgICAgIGlmIChzdGVwVW5pZmllc0FzVW5xdWFsaWZpZWRTaWduYXR1cmVBc3NlcnRpb24pIHtcbiAgICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udW5pZmllZCB0aGUgJyR7c3RlcFN0cmluZ30nIHN0ZXAgYXMgYSBzaWduYXR1cmUgYXNzZXJ0aW9uLmApO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiBzdGVwVW5pZmllc0FzVW5xdWFsaWZpZWRTaWduYXR1cmVBc3NlcnRpb247XG59XG5cbmFzeW5jIGZ1bmN0aW9uIHZhbGlkYXRlU3RlcEFzTWV0YUxldmVsQXNzdW1wdGlvbihzdGVwLCBjb250ZXh0KSB7XG4gIGxldCBzdGVwVmFsaWRhdGVzQXNNZXRhTGV2ZWxBc3N1bXB0aW9uID0gZmFsc2U7XG5cbiAgY29uc3QgbWV0YUxldmVsID0gY29udGV4dC5pc01ldGFMZXZlbCgpO1xuXG4gIGlmIChtZXRhTGV2ZWwpIHtcbiAgICBjb25zdCByZWZlcmVuY2UgPSBzdGVwLmdldFJlZmVyZW5jZSgpO1xuXG4gICAgaWYgKHJlZmVyZW5jZSAhPT0gbnVsbCkge1xuICAgICAgY29uc3Qgc3RlcFN0cmluZyA9IHN0ZXAuZ2V0U3RyaW5nKCksXG4gICAgICAgICAgICB0b3BMZXZlbEFzc2VydGlvbiA9IGNvbnRleHQuZmluZFRvcExldmVsQXNzZXJ0aW9uQnlSZWZlcmVuY2UocmVmZXJlbmNlKTtcblxuICAgICAgaWYgKHRvcExldmVsQXNzZXJ0aW9uID09PSBudWxsKSB7XG4gICAgICAgIGNvbnRleHQudHJhY2UoYFZhbGlkYXRpbmcgdGhlICcke3N0ZXBTdHJpbmd9JyBzdGVwIGFzIGEgbWV0YS1sZXZlbCBhc3N1bXB0aW9uLi4uYCk7XG5cbiAgICAgICAgZGVzY2VuZCgoY29udGV4dCkgPT4ge1xuICAgICAgICAgIGxldCBtZXRhTGV2ZWxBc3N1bXB0aW9uO1xuXG4gICAgICAgICAgY29uc3QgeyBNZXRhTGV2ZWxBc3N1bXB0aW9uIH0gPSBlbGVtZW50cztcblxuICAgICAgICAgIG1ldGFMZXZlbEFzc3VtcHRpb24gPSBNZXRhTGV2ZWxBc3N1bXB0aW9uLmZyb21TdGVwKHN0ZXAsIGNvbnRleHQpO1xuXG4gICAgICAgICAgbWV0YUxldmVsQXNzdW1wdGlvbiA9IG1ldGFMZXZlbEFzc3VtcHRpb24udmFsaWRhdGUoY29udGV4dCk7ICAvLy9cblxuICAgICAgICAgIGlmIChtZXRhTGV2ZWxBc3N1bXB0aW9uICE9PSBudWxsKSB7XG4gICAgICAgICAgICBzdGVwVmFsaWRhdGVzQXNNZXRhTGV2ZWxBc3N1bXB0aW9uID0gdHJ1ZTtcbiAgICAgICAgICB9XG4gICAgICAgIH0sIGNvbnRleHQpO1xuXG4gICAgICAgIGlmIChzdGVwVmFsaWRhdGVzQXNNZXRhTGV2ZWxBc3N1bXB0aW9uKSB7XG4gICAgICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udmFsaWRhdGVkIHRoZSAnJHtzdGVwU3RyaW5nfScgc3RlcCBhcyBhIG1ldGEtbGV2ZWwgYXNzdW1wdGlvbi5gKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiBzdGVwVmFsaWRhdGVzQXNNZXRhTGV2ZWxBc3N1bXB0aW9uO1xufVxuXG5hc3luYyBmdW5jdGlvbiB1bmlmeVN0ZXBBc1NpZ25hdHVyZUFzc2VydGlvbihzdGVwLCBjb250ZXh0KSB7XG4gIGxldCBzdGVwVW5pZmllc0FzU2lnbmF0dXJlQXNzZXJ0aW9uID0gZmFsc2U7XG5cbiAgY29uc3QgcmVmZXJlbmNlID0gc3RlcC5nZXRSZWZlcmVuY2UoKTtcblxuICBpZiAocmVmZXJlbmNlICE9PSBudWxsKSB7XG4gICAgY29uc3QgdG9wTGV2ZWxBc3NlcnRpb24gPSBjb250ZXh0LmZpbmRUb3BMZXZlbEFzc2VydGlvbkJ5UmVmZXJlbmNlKHJlZmVyZW5jZSk7XG5cbiAgICBpZiAodG9wTGV2ZWxBc3NlcnRpb24gIT09IG51bGwpIHtcbiAgICAgIGNvbnN0IHN0YXRlbWVudE5vZGUgPSBzdGVwLmdldFN0YXRlbWVudE5vZGUoKSxcbiAgICAgICAgICAgIHNpZ25hdHVyZUFzc2VydGlvbk5vZGUgPSBzdGF0ZW1lbnROb2RlLmdldFNpZ25hdHVyZUFzc2VydGlvbk5vZGUoKTtcblxuICAgICAgaWYgKHNpZ25hdHVyZUFzc2VydGlvbk5vZGUgIT09IG51bGwpIHtcbiAgICAgICAgY29uc3Qgc3RlcFN0cmluZyA9IHN0ZXAuZ2V0U3RyaW5nKCksXG4gICAgICAgICAgICAgIHJlZmVyZW5jZVN0cmluZyA9IHJlZmVyZW5jZS5nZXRTdHJpbmcoKSxcbiAgICAgICAgICAgICAgc2lnbmF0dXJlQXNzZXJ0aW9uID0gY29udGV4dC5maW5kQXNzZXJ0aW9uQnlBc3NlcnRpb25Ob2RlKHNpZ25hdHVyZUFzc2VydGlvbk5vZGUpO1xuXG4gICAgICAgIGNvbnRleHQudHJhY2UoYFVuaWZ5aW5nIHRoZSAnJHtzdGVwU3RyaW5nfScgc3RlcCBhcyBhIHNpZ25hdHVyZSBhc3NlcnRpb24gd2l0aCB0aGUgJyR7cmVmZXJlbmNlU3RyaW5nfScgcmVmZXJlbmNlLi4uYCk7XG5cbiAgICAgICAgY29uc3QgdW5pZnlUb3BMZXZlbEFzc2VydGlvbiA9IGF3YWl0IHNpZ25hdHVyZUFzc2VydGlvbi51bmlmeVRvcExldmVsQXNzZXJ0aW9uKHRvcExldmVsQXNzZXJ0aW9uLCBjb250ZXh0KTtcblxuICAgICAgICBpZiAodW5pZnlUb3BMZXZlbEFzc2VydGlvbikge1xuICAgICAgICAgIHN0ZXBVbmlmaWVzQXNTaWduYXR1cmVBc3NlcnRpb24gPSB0cnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHN0ZXBVbmlmaWVzQXNTaWduYXR1cmVBc3NlcnRpb24pIHtcbiAgICAgICAgICBjb250ZXh0LmRlYnVnKGAuLi51bmlmaWVkIHRoZSAnJHtzdGVwU3RyaW5nfScgc3RlcCBhcyBhIHNpZ25hdHVyZSBhc3NlcnRpb24gd2l0aCB0aGUgJyR7cmVmZXJlbmNlU3RyaW5nfScgcmVmZXJlbmNlLmApO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHN0ZXBVbmlmaWVzQXNTaWduYXR1cmVBc3NlcnRpb247XG59XG5cbmFzeW5jIGZ1bmN0aW9uIGNvbXBhcmVTdGVwV2l0aFN1YnByb29mT3JQcm9vZkFzc2VydGlvbnMoc3RlcCwgY29udGV4dCkge1xuICBsZXQgc3RlcENvbXBhcmVzVG9TdWJwcm9vZk9yUHJvb2ZBc3NlcnRpb25zID0gZmFsc2U7XG5cbiAgY29uc3QgdW5xdWFsaWZpZWQgPSBzdGVwLmlzVW5xdWFsaWZpZWQoKTtcblxuICBpZiAodW5xdWFsaWZpZWQpIHtcbiAgICBjb25zdCBzdGVwU3RyaW5nID0gc3RlcC5nZXRTdHJpbmcoKTtcblxuICAgIGNvbnRleHQudHJhY2UoYENvbXBhcmluZyB0aGUgJyR7c3RlcFN0cmluZ30nIHN0ZXAgd2l0aCB0aGUgc3VicHJvb2ZzIG9yIHByb29mIGFzc3NlcnRpb25zLi4uYCk7XG5cbiAgICBjb25zdCBzdWJwcm9vZk9yUHJvb2ZBc3NlcnRpb25zID0gY29udGV4dC5nZXRTdWJwcm9vZk9yUHJvb2ZBc3NlcnRpb25zKCksXG4gICAgICAgICAgY29tcGFyZXNUb1N1YnByb29mT3JQcm9vZkFzc2VydGlvbnMgPSBzdGVwLmNvbXBhcmVTdWJwcm9vZk9yUHJvb2ZBc3NlcnRpb25zKHN1YnByb29mT3JQcm9vZkFzc2VydGlvbnMsIGNvbnRleHQpO1xuXG4gICAgaWYgKGNvbXBhcmVzVG9TdWJwcm9vZk9yUHJvb2ZBc3NlcnRpb25zKSB7XG4gICAgICBzdGVwQ29tcGFyZXNUb1N1YnByb29mT3JQcm9vZkFzc2VydGlvbnMgPSB0cnVlO1xuICAgIH1cblxuICAgIGlmIChzdGVwQ29tcGFyZXNUb1N1YnByb29mT3JQcm9vZkFzc2VydGlvbnMpIHtcbiAgICAgIGNvbnRleHQuZGVidWcoYC4uLmNvbXBhcmVkIHRoZSAnJHtzdGVwU3RyaW5nfScgc3RlcCB3aXRoIHRoZSBzdWJwcm9vZnMgb3IgcHJvb2YgYXNzc2VydGlvbnMuYCk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHN0ZXBDb21wYXJlc1RvU3VicHJvb2ZPclByb29mQXNzZXJ0aW9ucztcbn1cblxuZXhwb3J0IGNvbnN0IHVuaWZ5U3RlcHMgPSBbXG4gIHVuaWZ5U3RlcFdpdGhSdWxlLFxuICB1bmlmeVN0ZXBXaXRoVG9wTGV2ZWxBc3NlcnRpb24sXG4gIHVuaWZ5U3RlcFdpdGhTaWduYXR1cmVBc3NlcnRpb24sXG4gIHVuaWZ5U3RlcEFzVW5xdWFsaWZpZWRFcXVhbGl0eSxcbiAgdW5pZnlTdGVwQXNVTnF1YWxpZmllZEp1ZGdlbWVudCxcbiAgdW5pZnlTdGVwQXNVbnF1YWxpZmllZFR5cGVBc3NlcnRpb24sXG4gIHVuaWZ5U3RlcEFzVW5xdWFsaWZpZWRQcm9wZXJ0eUFzc2VydGlvbixcbiAgdW5pZnlTdGVwQXNVbnF1YWxpZmllZFNpZ25hdHVyZUFzc2VydGlvbixcbiAgdmFsaWRhdGVTdGVwQXNNZXRhTGV2ZWxBc3N1bXB0aW9uLFxuICB1bmlmeVN0ZXBBc1NpZ25hdHVyZUFzc2VydGlvbixcbiAgY29tcGFyZVN0ZXBXaXRoU3VicHJvb2ZPclByb29mQXNzZXJ0aW9uc1xuXTtcbiJdLCJuYW1lcyI6WyJ1bmlmeVN0ZXBzIiwidW5pZnlTdGVwV2l0aFJ1bGUiLCJzdGVwIiwiY29udGV4dCIsInN0ZXBVbmlmaWVzV2l0aFJ1bGUiLCJyZWZlcmVuY2UiLCJnZXRSZWZlcmVuY2UiLCJydWxlIiwiZmluZFJ1bGVCeVJlZmVyZW5jZSIsInN0ZXBTdHJpbmciLCJnZXRTdHJpbmciLCJydWxlU3RyaW5nIiwidHJhY2UiLCJzdWJwcm9vZk9yUHJvb2ZBc3NlcnRpb25zIiwiZ2V0U3VicHJvb2ZPclByb29mQXNzZXJ0aW9ucyIsInN0ZXBBbmRTdWJwcm9vZk9yUHJvb2ZBc3NlcnRpb25zVW5pZnkiLCJ1bmlmeVN0ZXBBbmRTdWJwcm9vZk9yUHJvb2ZBc3NlcnRpb25zIiwiZGVidWciLCJ1bmlmeVN0ZXBXaXRoVG9wTGV2ZWxBc3NlcnRpb24iLCJzdGVwVW5pZmllc1dpdGhUb3BMZXZlbEFzc2VydGlvbiIsInRvcExldmVsQXNzZXJ0aW9uIiwiZmluZFRvcExldmVsQXNzZXJ0aW9uQnlSZWZlcmVuY2UiLCJzYXRpc2ZpYWJsZSIsImlzU2F0aXNmaWFibGUiLCJ0b3BMZXZlbEFzc2VydGlvblN0cmluZyIsInVuaWZ5U3RlcFdpdGhTaWduYXR1cmVBc3NlcnRpb24iLCJzdGVwVW5pZmllc1dpdGhTaWduYXR1cmVBc3NlcnRpb24iLCJzaWduYXR1cmVBc3NlcnRpb24iLCJnZXRTaWduYXR1cmVBc3NlcnRpb24iLCJzaWduYXR1cmVBc3NlcnRpb25TdHJpbmciLCJ1bmlmeVN0ZXBBc1VucXVhbGlmaWVkRXF1YWxpdHkiLCJzdGVwVW5pZmllc0FVbnF1YWxpZmllZEVxdWFsaXR5IiwidW5xdWFsaWZpZWQiLCJpc1VucXVhbGlmaWVkIiwiRXF1YWxpdHkiLCJlbGVtZW50cyIsInN0YXRlbWVudCIsImdldFN0YXRlbWVudCIsImVxdWFsaXR5IiwiZnJvbVN0YXRlbWVudCIsInVuaWZ5U3RlcEFzVU5xdWFsaWZpZWRKdWRnZW1lbnQiLCJzdGVwVW5pZmllc0FzVW5xdWFsaWZpZWRKdWRnZW1lbnQiLCJKdWRnZW1lbnQiLCJqdWRnZW1lbnQiLCJ1bmlmeVN0ZXBBc1VucXVhbGlmaWVkVHlwZUFzc2VydGlvbiIsInN0ZXBVbmlmaWVzQXNVbnF1YWxpZmllZFR5cGVBc3NlcnRpb24iLCJUeXBlQXNzZXJ0aW9uIiwidHlwZUFzc2VydGlvbiIsInVuaWZ5U3RlcEFzVW5xdWFsaWZpZWRQcm9wZXJ0eUFzc2VydGlvbiIsInN0ZXBVbmlmaWVzQXNVbnF1YWxpZmllZFByb3BlcnR5QXNzZXJ0aW9uIiwiUHJvcGVydHlBc3NlcnRpb24iLCJwcm9wZXJ0eUFzc2VydGlvbiIsInVuaWZ5U3RlcEFzVW5xdWFsaWZpZWRTaWduYXR1cmVBc3NlcnRpb24iLCJzdGVwVW5pZmllc0FzVW5xdWFsaWZpZWRTaWduYXR1cmVBc3NlcnRpb24iLCJTaWduYXR1cmVBc3NlcnRpb24iLCJ2YWxpZGF0ZVN0ZXBBc01ldGFMZXZlbEFzc3VtcHRpb24iLCJzdGVwVmFsaWRhdGVzQXNNZXRhTGV2ZWxBc3N1bXB0aW9uIiwibWV0YUxldmVsIiwiaXNNZXRhTGV2ZWwiLCJkZXNjZW5kIiwibWV0YUxldmVsQXNzdW1wdGlvbiIsIk1ldGFMZXZlbEFzc3VtcHRpb24iLCJmcm9tU3RlcCIsInZhbGlkYXRlIiwidW5pZnlTdGVwQXNTaWduYXR1cmVBc3NlcnRpb24iLCJzdGVwVW5pZmllc0FzU2lnbmF0dXJlQXNzZXJ0aW9uIiwic3RhdGVtZW50Tm9kZSIsImdldFN0YXRlbWVudE5vZGUiLCJzaWduYXR1cmVBc3NlcnRpb25Ob2RlIiwiZ2V0U2lnbmF0dXJlQXNzZXJ0aW9uTm9kZSIsInJlZmVyZW5jZVN0cmluZyIsImZpbmRBc3NlcnRpb25CeUFzc2VydGlvbk5vZGUiLCJ1bmlmeVRvcExldmVsQXNzZXJ0aW9uIiwiY29tcGFyZVN0ZXBXaXRoU3VicHJvb2ZPclByb29mQXNzZXJ0aW9ucyIsInN0ZXBDb21wYXJlc1RvU3VicHJvb2ZPclByb29mQXNzZXJ0aW9ucyIsImNvbXBhcmVzVG9TdWJwcm9vZk9yUHJvb2ZBc3NlcnRpb25zIiwiY29tcGFyZVN1YnByb29mT3JQcm9vZkFzc2VydGlvbnMiXSwibWFwcGluZ3MiOiJBQUFBOzs7OytCQXFVYUE7OztlQUFBQTs7O2lFQW5VUTt5QkFFRzs7Ozs7O0FBRXhCLGVBQWVDLGtCQUFrQkMsSUFBSSxFQUFFQyxPQUFPO0lBQzVDLElBQUlDLHNCQUFzQjtJQUUxQixNQUFNQyxZQUFZSCxLQUFLSSxZQUFZO0lBRW5DLElBQUlELGNBQWMsTUFBTTtRQUN0QixNQUFNRSxPQUFPSixRQUFRSyxtQkFBbUIsQ0FBQ0g7UUFFekMsSUFBSUUsU0FBUyxNQUFNO1lBQ2pCLE1BQU1FLGFBQWFQLEtBQUtRLFNBQVMsSUFDM0JDLGFBQWFKLEtBQUtHLFNBQVM7WUFFakNQLFFBQVFTLEtBQUssQ0FBQyxDQUFDLGNBQWMsRUFBRUgsV0FBVyxpQkFBaUIsRUFBRUUsV0FBVyxTQUFTLENBQUM7WUFFbEYsTUFBTUUsNEJBQTRCVixRQUFRVyw0QkFBNEIs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
|