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/utilities/context.js
CHANGED
|
@@ -33,6 +33,12 @@ _export(exports, {
|
|
|
33
33
|
get descend () {
|
|
34
34
|
return descend;
|
|
35
35
|
},
|
|
36
|
+
get elide () {
|
|
37
|
+
return elide;
|
|
38
|
+
},
|
|
39
|
+
get encapsulate () {
|
|
40
|
+
return encapsulate;
|
|
41
|
+
},
|
|
36
42
|
get enclose () {
|
|
37
43
|
return enclose;
|
|
38
44
|
},
|
|
@@ -45,21 +51,12 @@ _export(exports, {
|
|
|
45
51
|
get instantiate () {
|
|
46
52
|
return instantiate;
|
|
47
53
|
},
|
|
48
|
-
get join () {
|
|
49
|
-
return join;
|
|
50
|
-
},
|
|
51
54
|
get manifest () {
|
|
52
55
|
return manifest;
|
|
53
56
|
},
|
|
54
|
-
get posit () {
|
|
55
|
-
return posit;
|
|
56
|
-
},
|
|
57
57
|
get reconcile () {
|
|
58
58
|
return reconcile;
|
|
59
59
|
},
|
|
60
|
-
get sequester () {
|
|
61
|
-
return sequester;
|
|
62
|
-
},
|
|
63
60
|
get serialise () {
|
|
64
61
|
return serialise;
|
|
65
62
|
},
|
|
@@ -82,9 +79,7 @@ const _nominal = /*#__PURE__*/ _interop_require_default(require("../context/nomi
|
|
|
82
79
|
const _literal = /*#__PURE__*/ _interop_require_default(require("../context/literal"));
|
|
83
80
|
const _liminal = /*#__PURE__*/ _interop_require_default(require("../context/liminal"));
|
|
84
81
|
const _phaneric = /*#__PURE__*/ _interop_require_default(require("../context/phaneric"));
|
|
85
|
-
const _synoptic = /*#__PURE__*/ _interop_require_default(require("../context/synoptic"));
|
|
86
82
|
const _illative = /*#__PURE__*/ _interop_require_default(require("../context/illative"));
|
|
87
|
-
const _ephemeral = /*#__PURE__*/ _interop_require_default(require("../context/ephemeral"));
|
|
88
83
|
const _branching = /*#__PURE__*/ _interop_require_default(require("../context/branching"));
|
|
89
84
|
const _nominal1 = /*#__PURE__*/ _interop_require_default(require("../context/file/nominal"));
|
|
90
85
|
const _json = require("../utilities/json");
|
|
@@ -93,19 +88,9 @@ function _interop_require_default(obj) {
|
|
|
93
88
|
default: obj
|
|
94
89
|
};
|
|
95
90
|
}
|
|
96
|
-
function
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
return true;
|
|
100
|
-
}
|
|
101
|
-
});
|
|
102
|
-
const synopticContext = _synoptic.default.fromContexts(contexts), context = synopticContext; ///
|
|
103
|
-
return innerFunction(context);
|
|
104
|
-
}
|
|
105
|
-
function posit(innerFunction, context) {
|
|
106
|
-
const ephemeralContext = _ephemeral.default.fromNothing(context);
|
|
107
|
-
context = ephemeralContext; ///
|
|
108
|
-
return innerFunction(context);
|
|
91
|
+
function evaluate(procedure, terms) {
|
|
92
|
+
const context = procedure.getContext();
|
|
93
|
+
return procedure.call(terms, context);
|
|
109
94
|
}
|
|
110
95
|
function ground(innerFunction) {
|
|
111
96
|
let context;
|
|
@@ -115,20 +100,9 @@ function ground(innerFunction) {
|
|
|
115
100
|
context = literalContext; ///
|
|
116
101
|
return innerFunction(context);
|
|
117
102
|
}
|
|
118
|
-
function
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
forced = false;
|
|
122
|
-
}
|
|
123
|
-
const released = context.isReleased();
|
|
124
|
-
if (forced || !released) {
|
|
125
|
-
context = ablateContext(context);
|
|
126
|
-
}
|
|
127
|
-
return innerFunction(context);
|
|
128
|
-
}
|
|
129
|
-
function choose(innerFunction, context) {
|
|
130
|
-
const branchingContext = _branching.default.fromNothing(context);
|
|
131
|
-
context = branchingContext; ///
|
|
103
|
+
function declare(innerFunction, context) {
|
|
104
|
+
const theticContext = _thetic.default.fromNothing(context);
|
|
105
|
+
context = theticContext; ///
|
|
132
106
|
return innerFunction(context);
|
|
133
107
|
}
|
|
134
108
|
function derive(innerFunction, context) {
|
|
@@ -136,9 +110,24 @@ function derive(innerFunction, context) {
|
|
|
136
110
|
context = illativeContext; ///
|
|
137
111
|
return innerFunction(context);
|
|
138
112
|
}
|
|
139
|
-
function
|
|
140
|
-
const
|
|
141
|
-
context =
|
|
113
|
+
function elide(innerFunction, context) {
|
|
114
|
+
const aphasicContext = _aphasic.default.fromNothing(context);
|
|
115
|
+
context = aphasicContext; ///
|
|
116
|
+
return innerFunction(context);
|
|
117
|
+
}
|
|
118
|
+
function enclose(innerFunction, context) {
|
|
119
|
+
const boundedContext = _bounded.default.fromNothing(context);
|
|
120
|
+
context = boundedContext; ///
|
|
121
|
+
return innerFunction(context);
|
|
122
|
+
}
|
|
123
|
+
function encapsulate(innerFunction, metaLevelAssumptions, context) {
|
|
124
|
+
const boundedContext = _bounded.default.fromMetaLevelAssumptions(metaLevelAssumptions, context);
|
|
125
|
+
context = boundedContext; ///
|
|
126
|
+
return innerFunction(context);
|
|
127
|
+
}
|
|
128
|
+
function choose(innerFunction, context) {
|
|
129
|
+
const branchingContext = _branching.default.fromNothing(context);
|
|
130
|
+
context = branchingContext; ///
|
|
142
131
|
return innerFunction(context);
|
|
143
132
|
}
|
|
144
133
|
function descend(innerFunction, context) {
|
|
@@ -146,25 +135,19 @@ function descend(innerFunction, context) {
|
|
|
146
135
|
context = nestedContext; ///
|
|
147
136
|
return innerFunction(context);
|
|
148
137
|
}
|
|
149
|
-
function
|
|
150
|
-
const
|
|
151
|
-
if (
|
|
152
|
-
|
|
153
|
-
context = mnemicContext; ///
|
|
138
|
+
function ablate(innerFunction, context) {
|
|
139
|
+
const unreleased = context.isUnreleased();
|
|
140
|
+
if (unreleased) {
|
|
141
|
+
context = ablateContext(context); ///
|
|
154
142
|
}
|
|
155
143
|
return innerFunction(context);
|
|
156
144
|
}
|
|
157
|
-
function
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
145
|
+
function attempt(innerFunction, context) {
|
|
146
|
+
const unreleased = context.isUnreleased();
|
|
147
|
+
if (unreleased) {
|
|
148
|
+
const mnemicContext = _mnemic.default.fromNothing(context);
|
|
149
|
+
context = mnemicContext; ///
|
|
161
150
|
}
|
|
162
|
-
const boundedContext = _bounded.default.fromMetaLevelAssumptions(metaLevelAssumptions, context);
|
|
163
|
-
context = boundedContext; ///
|
|
164
|
-
return innerFunction(context);
|
|
165
|
-
}
|
|
166
|
-
function manifest(innerFunction, ...contexts) {
|
|
167
|
-
const phanericContext = _phaneric.default.fromContexts(contexts), context = phanericContext; ///
|
|
168
151
|
return innerFunction(context);
|
|
169
152
|
}
|
|
170
153
|
function reconcile(innerFunction, context) {
|
|
@@ -172,40 +155,33 @@ function reconcile(innerFunction, context) {
|
|
|
172
155
|
context = liminalContext; ///
|
|
173
156
|
return innerFunction(context);
|
|
174
157
|
}
|
|
175
|
-
function sequester(innerFunction, context) {
|
|
176
|
-
const aphasicContext = _aphasic.default.fromNothing(context);
|
|
177
|
-
context = aphasicContext; ///
|
|
178
|
-
return innerFunction(context);
|
|
179
|
-
}
|
|
180
158
|
function serialise(innerFunction, context) {
|
|
181
159
|
const mnemicContext = context, mnemicContextJSON = (0, _json.mnemicContextToMnemicContextJSON)(mnemicContext), contextJSON = mnemicContextJSON; ///
|
|
182
160
|
context = contextJSON; ///
|
|
183
161
|
return innerFunction(context);
|
|
184
162
|
}
|
|
185
|
-
function instantiate(innerFunction, context) {
|
|
186
|
-
const literalContext = _literal.default.fromNothing(context);
|
|
187
|
-
context = literalContext; ///
|
|
188
|
-
return innerFunction(context);
|
|
189
|
-
}
|
|
190
163
|
function unserialise(innerFunction, json, context) {
|
|
191
164
|
const mnemicContext = (0, _json.mnemicContextFromJSON)(json, context);
|
|
192
165
|
context = mnemicContext; ///
|
|
193
166
|
return innerFunction(json, context);
|
|
194
167
|
}
|
|
195
|
-
function
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
168
|
+
function unserialises(innerFunction, json, context) {
|
|
169
|
+
const mnemicContexts = (0, _json.mnemicContextsFromJSON)(json, context), contexts = mnemicContexts; ///
|
|
170
|
+
return innerFunction(json, ...contexts);
|
|
171
|
+
}
|
|
172
|
+
function instantiate(innerFunction, context) {
|
|
173
|
+
const literalContext = _literal.default.fromNothing(context);
|
|
174
|
+
context = literalContext; ///
|
|
175
|
+
return innerFunction(context);
|
|
176
|
+
}
|
|
177
|
+
function manifest(innerFunction, ...contexts) {
|
|
178
|
+
const phanericContext = _phaneric.default.fromContexts(contexts), context = phanericContext; ///
|
|
179
|
+
return innerFunction(context);
|
|
204
180
|
}
|
|
205
181
|
function attempts(innerFunction, ...contexts) {
|
|
206
182
|
contexts = contexts.map((context)=>{
|
|
207
|
-
const
|
|
208
|
-
if (
|
|
183
|
+
const unreleased = context.isUnreleased();
|
|
184
|
+
if (unreleased) {
|
|
209
185
|
const mnemicContext = _mnemic.default.fromNothing(context);
|
|
210
186
|
context = mnemicContext; ///
|
|
211
187
|
}
|
|
@@ -218,39 +194,27 @@ function serialises(innerFunction, ...contexts) {
|
|
|
218
194
|
contexts = contextsJSON; ///
|
|
219
195
|
return innerFunction(...contexts);
|
|
220
196
|
}
|
|
221
|
-
function
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
197
|
+
function ablates(innerFunction, ...contexts) {
|
|
198
|
+
contexts = contexts.map((context)=>{
|
|
199
|
+
const unreleased = context.isUnreleased();
|
|
200
|
+
if (unreleased) {
|
|
201
|
+
context = ablateContext(context); ///
|
|
202
|
+
}
|
|
203
|
+
return context;
|
|
204
|
+
});
|
|
205
|
+
return innerFunction(...contexts);
|
|
228
206
|
}
|
|
229
207
|
function ablateContext(context) {
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
while(contextExtraneousContext){
|
|
208
|
+
let contextGroundedContext = isContextGroundedContext(context);
|
|
209
|
+
while(!contextGroundedContext){
|
|
233
210
|
context = context.getContext();
|
|
234
|
-
|
|
235
|
-
}
|
|
236
|
-
const Context = stated ? _thetic.default : _illative.default;
|
|
237
|
-
context = augmentContext(context, Context);
|
|
238
|
-
return context;
|
|
239
|
-
}
|
|
240
|
-
function augmentContext(context, Context) {
|
|
241
|
-
const contextContext = context instanceof Context;
|
|
242
|
-
if (!contextContext) {
|
|
243
|
-
context = Context.fromNothing(context);
|
|
211
|
+
contextGroundedContext = isContextGroundedContext(context);
|
|
244
212
|
}
|
|
245
213
|
return context;
|
|
246
214
|
}
|
|
247
|
-
function
|
|
248
|
-
const
|
|
249
|
-
return
|
|
250
|
-
}
|
|
251
|
-
function isContextSubstantiveContext(context) {
|
|
252
|
-
const contextTheticContext = context instanceof _thetic.default, contextIllativeContext = context instanceof _illative.default, contextBoundedContext = context instanceof _bounded.default, contextNominalFileContext = context instanceof _nominal1.default, contextSubstantiveContext = contextTheticContext || contextIllativeContext || contextBoundedContext || contextNominalFileContext;
|
|
253
|
-
return contextSubstantiveContext;
|
|
215
|
+
function isContextGroundedContext(context) {
|
|
216
|
+
const contextTheticContext = context instanceof _thetic.default, contextIllativeContext = context instanceof _illative.default, contextNominalFileContext = context instanceof _nominal1.default, contextGroundedContext = contextTheticContext || contextIllativeContext || contextNominalFileContext;
|
|
217
|
+
return contextGroundedContext;
|
|
254
218
|
}
|
|
255
219
|
|
|
256
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlsaXRpZXMvY29udGV4dC5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuaW1wb3J0IE1lbm1pY0NvbnRleHQgZnJvbSBcIi4uL2NvbnRleHQvbW5lbWljXCI7XG5pbXBvcnQgTmVzdGVkQ29udGV4dCBmcm9tIFwiLi4vY29udGV4dC9uZXN0ZWRcIjtcbmltcG9ydCBUaGV0aWNDb250ZXh0IGZyb20gXCIuLi9jb250ZXh0L3RoZXRpY1wiO1xuaW1wb3J0IEFwaGFzaWNDb250ZXh0IGZyb20gXCIuLi9jb250ZXh0L2FwaGFzaWNcIjtcbmltcG9ydCBCb3VuZGVkQ29udGV4dCBmcm9tIFwiLi4vY29udGV4dC9ib3VuZGVkXCI7XG5pbXBvcnQgTm9taW5hbENvbnRleHQgZnJvbSBcIi4uL2NvbnRleHQvbm9taW5hbFwiO1xuaW1wb3J0IExpdGVyYWxDb250ZXh0IGZyb20gXCIuLi9jb250ZXh0L2xpdGVyYWxcIjtcbmltcG9ydCBMaW1pbmFsQ29udGV4dCBmcm9tIFwiLi4vY29udGV4dC9saW1pbmFsXCI7XG5pbXBvcnQgUGhhbmVyaWNDb250ZXh0IGZyb20gXCIuLi9jb250ZXh0L3BoYW5lcmljXCI7XG5pbXBvcnQgU3lub3B0aWNDb250ZXh0IGZyb20gXCIuLi9jb250ZXh0L3N5bm9wdGljXCI7XG5pbXBvcnQgSWxsYXRpdmVDb250ZXh0IGZyb20gXCIuLi9jb250ZXh0L2lsbGF0aXZlXCI7XG5pbXBvcnQgRXBoZW1lcmFsQ29udGV4dCBmcm9tIFwiLi4vY29udGV4dC9lcGhlbWVyYWxcIjtcbmltcG9ydCBCcmFuY2hpbmdDb250ZXh0IGZyb20gXCIuLi9jb250ZXh0L2JyYW5jaGluZ1wiO1xuaW1wb3J0IE5vbWluYWxGaWxlQ29udGV4dCBmcm9tIFwiLi4vY29udGV4dC9maWxlL25vbWluYWxcIjtcblxuaW1wb3J0IHsgbW5lbWljQ29udGV4dEZyb21KU09OLCBtbmVtaWNDb250ZXh0c0Zyb21KU09OLCBtbmVtaWNDb250ZXh0VG9NbmVtaWNDb250ZXh0SlNPTiwgbW5lbWljQ29udGV4dHNUb01uZW1pY0NvbnRleHRzSlNPTiB9IGZyb20gXCIuLi91dGlsaXRpZXMvanNvblwiO1xuXG5leHBvcnQgZnVuY3Rpb24gam9pbihpbm5lckZ1bmN0aW9uLCAuLi5jb250ZXh0cykge1xuICBjb250ZXh0cyA9IGNvbnRleHRzLmZpbHRlcigoY29udGV4dCkgPT4ge1xuICAgIGlmIChjb250ZXh0ICE9PSBudWxsKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gIH0pO1xuXG4gIGNvbnN0IHN5bm9wdGljQ29udGV4dCA9IFN5bm9wdGljQ29udGV4dC5mcm9tQ29udGV4dHMoY29udGV4dHMpLFxuICAgICAgICBjb250ZXh0ID0gc3lub3B0aWNDb250ZXh0OyAgLy8vXG5cbiAgcmV0dXJuIGlubmVyRnVuY3Rpb24oY29udGV4dCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwb3NpdChpbm5lckZ1bmN0aW9uLCBjb250ZXh0KSB7XG4gIGNvbnN0IGVwaGVtZXJhbENvbnRleHQgPSBFcGhlbWVyYWxDb250ZXh0LmZyb21Ob3RoaW5nKGNvbnRleHQpO1xuXG4gIGNvbnRleHQgPSBlcGhlbWVyYWxDb250ZXh0OyAgLy8vXG5cbiAgcmV0dXJuIGlubmVyRnVuY3Rpb24oY29udGV4dCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBncm91bmQoaW5uZXJGdW5jdGlvbikge1xuICBsZXQgY29udGV4dDtcblxuICBjb25zdCBub21pbmFsQ29udGV4dCA9IE5vbWluYWxDb250ZXh0LmZyb21Ob3RoaW5nKCk7XG5cbiAgY29udGV4dCA9IG5vbWluYWxDb250ZXh0OyAvLy9cblxuICBjb25zdCBsaXRlcmFsQ29udGV4dCA9IExpdGVyYWxDb250ZXh0LmZyb21Ob3RoaW5nKGNvbnRleHQpO1xuXG4gIGNvbnRleHQgPSBsaXRlcmFsQ29udGV4dDsgIC8vL1xuXG4gIHJldHVybiBpbm5lckZ1bmN0aW9uKGNvbnRleHQpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYWJsYXRlKGlubmVyRnVuY3Rpb24sIGZvcmNlZCwgY29udGV4dCkge1xuICBpZiAoY29udGV4dCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgY29udGV4dCA9IGZvcmNlZDsgLy8vXG5cbiAgICBmb3JjZWQgPSBmYWxzZTtcbiAgfVxuXG4gIGNvbnN0IHJlbGVhc2VkID0gY29udGV4dC5pc1JlbGVhc2VkKCk7XG5cbiAgaWYgKGZvcmNlZCB8fCAhcmVsZWFzZWQpIHtcbiAgICBjb250ZXh0ID0gYWJsYXRlQ29udGV4dChjb250ZXh0KTtcbiAgfVxuXG4gIHJldHVybiBpbm5lckZ1bmN0aW9uKGNvbnRleHQpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY2hvb3NlKGlubmVyRnVuY3Rpb24sIGNvbnRleHQpIHtcbiAgY29uc3QgYnJhbmNoaW5nQ29udGV4dCA9IEJyYW5jaGluZ0NvbnRleHQuZnJvbU5vdGhpbmcoY29udGV4dCk7XG5cbiAgY29udGV4dCA9IGJyYW5jaGluZ0NvbnRleHQ7ICAvLy9cblxuICByZXR1cm4gaW5uZXJGdW5jdGlvbihjb250ZXh0KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRlcml2ZShpbm5lckZ1bmN0aW9uLCBjb250ZXh0KSB7XG4gIGNvbnN0IGlsbGF0aXZlQ29udGV4dCA9IElsbGF0aXZlQ29udGV4dC5mcm9tTm90aGluZyhjb250ZXh0KTtcblxuICBjb250ZXh0ID0gaWxsYXRpdmVDb250ZXh0OyAgLy8vXG5cbiAgcmV0dXJuIGlubmVyRnVuY3Rpb24oY29udGV4dCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBkZWNsYXJlKGlubmVyRnVuY3Rpb24sIGNvbnRleHQpIHtcbiAgY29uc3QgdGhldGljQ29udGV4dCA9IFRoZXRpY0NvbnRleHQuZnJvbU5vdGhpbmcoY29udGV4dCk7XG5cbiAgY29udGV4dCA9IHRoZXRpY0NvbnRleHQ7ICAvLy9cblxuICByZXR1cm4gaW5uZXJGdW5jdGlvbihjb250ZXh0KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRlc2NlbmQoaW5uZXJGdW5jdGlvbiwgY29udGV4dCkge1xuICBjb25zdCBuZXN0ZWRDb250ZXh0ID0gTmVzdGVkQ29udGV4dC5mcm9tTm90aGluZyhjb250ZXh0KTtcblxuICBjb250ZXh0ID0gbmVzdGVkQ29udGV4dDsgIC8vL1xuXG4gIHJldHVybiBpbm5lckZ1bmN0aW9uKGNvbnRleHQpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYXR0ZW1wdChpbm5lckZ1bmN0aW9uLCBjb250ZXh0KSB7XG4gIGNvbnN0IHJlbGVhc2VkID0gY29udGV4dC5pc1JlbGVhc2VkKCk7XG5cbiAgaWYgKCFyZWxlYXNlZCkge1xuICAgIGNvbnN0IG1uZW1pY0NvbnRleHQgPSBNZW5taWNDb250ZXh0LmZyb21Ob3RoaW5nKGNvbnRleHQpO1xuXG4gICAgY29udGV4dCA9IG1uZW1pY0NvbnRleHQ7ICAvLy9cbiAgfVxuXG4gIHJldHVybiBpbm5lckZ1bmN0aW9uKGNvbnRleHQpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZW5jbG9zZShpbm5lckZ1bmN0aW9uLCBtZXRhTGV2ZWxBc3N1bXB0aW9ucywgY29udGV4dCkge1xuICBpZiAoY29udGV4dCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgY29udGV4dCA9IG1ldGFMZXZlbEFzc3VtcHRpb25zOyAgLy8vXG5cbiAgICBtZXRhTGV2ZWxBc3N1bXB0aW9ucyA9IG51bGw7XG4gIH1cblxuICBjb25zdCBib3VuZGVkQ29udGV4dCA9IEJvdW5kZWRDb250ZXh0LmZyb21NZXRhTGV2ZWxBc3N1bXB0aW9ucyhtZXRhTGV2ZWxBc3N1bXB0aW9ucywgY29udGV4dCk7XG5cbiAgY29udGV4dCA9IGJvdW5kZWRDb250ZXh0OyAgLy8vXG5cbiAgcmV0dXJuIGlubmVyRnVuY3Rpb24oY29udGV4dCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBtYW5pZmVzdChpbm5lckZ1bmN0aW9uLCAuLi5jb250ZXh0cykge1xuICBjb25zdCBwaGFuZXJpY0NvbnRleHQgPSBQaGFuZXJpY0NvbnRleHQuZnJvbUNvbnRleHRzKGNvbnRleHRzKSxcbiAgICAgICAgY29udGV4dCA9IHBoYW5lcmljQ29udGV4dDsgIC8vL1xuXG4gIHJldHVybiBpbm5lckZ1bmN0aW9uKGNvbnRleHQpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcmVjb25jaWxlKGlubmVyRnVuY3Rpb24sIGNvbnRleHQpIHtcbiAgY29uc3QgbGltaW5hbENvbnRleHQgPSBMaW1pbmFsQ29udGV4dC5mcm9tTm90aGluZyhjb250ZXh0KTtcblxuICBjb250ZXh0ID0gbGltaW5hbENvbnRleHQ7ICAvLy9cblxuICByZXR1cm4gaW5uZXJGdW5jdGlvbihjb250ZXh0KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNlcXVlc3Rlcihpbm5lckZ1bmN0aW9uLCBjb250ZXh0KSB7XG4gIGNvbnN0IGFwaGFzaWNDb250ZXh0ID0gQXBoYXNpY0NvbnRleHQuZnJvbU5vdGhpbmcoY29udGV4dCk7XG5cbiAgY29udGV4dCA9IGFwaGFzaWNDb250ZXh0OyAgLy8vXG5cbiAgcmV0dXJuIGlubmVyRnVuY3Rpb24oY29udGV4dCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzZXJpYWxpc2UoaW5uZXJGdW5jdGlvbiwgY29udGV4dCkge1xuICBjb25zdCBtbmVtaWNDb250ZXh0ID0gY29udGV4dCwgLy8vXG4gICAgICAgIG1uZW1pY0NvbnRleHRKU09OID0gbW5lbWljQ29udGV4dFRvTW5lbWljQ29udGV4dEpTT04obW5lbWljQ29udGV4dCksXG4gICAgICAgIGNvbnRleHRKU09OID0gbW5lbWljQ29udGV4dEpTT047IC8vL1xuXG4gIGNvbnRleHQgPSBjb250ZXh0SlNPTjsgIC8vL1xuXG4gIHJldHVybiBpbm5lckZ1bmN0aW9uKGNvbnRleHQpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaW5zdGFudGlhdGUoaW5uZXJGdW5jdGlvbiwgY29udGV4dCkge1xuICBjb25zdCBsaXRlcmFsQ29udGV4dCA9IExpdGVyYWxDb250ZXh0LmZyb21Ob3RoaW5nKGNvbnRleHQpO1xuXG4gIGNvbnRleHQgPSBsaXRlcmFsQ29udGV4dDsgIC8vL1xuXG4gIHJldHVybiBpbm5lckZ1bmN0aW9uKGNvbnRleHQpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdW5zZXJpYWxpc2UoaW5uZXJGdW5jdGlvbiwganNvbiwgY29udGV4dCkge1xuICBjb25zdCBtbmVtaWNDb250ZXh0ID0gbW5lbWljQ29udGV4dEZyb21KU09OKGpzb24sIGNvbnRleHQpO1xuXG4gIGNvbnRleHQgPSBtbmVtaWNDb250ZXh0OyAvLy9cblxuICByZXR1cm4gaW5uZXJGdW5jdGlvbihqc29uLCBjb250ZXh0KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGFibGF0ZXMoaW5uZXJGdW5jdGlvbiwgLi4uY29udGV4dHMpIHtcbiAgY29udGV4dHMgPSBjb250ZXh0cy5tYXAoKGNvbnRleHQpID0+IHsgIC8vL1xuICAgIGNvbnN0IHJlbGVhc2VkID0gY29udGV4dC5pc1JlbGVhc2VkKCk7XG5cbiAgICBpZiAoIXJlbGVhc2VkKSB7XG4gICAgICBjb250ZXh0ID0gYWJsYXRlQ29udGV4dChjb250ZXh0KTtcbiAgICB9XG5cbiAgICByZXR1cm4gY29udGV4dDtcbiAgfSk7XG5cbiAgcmV0dXJuIGlubmVyRnVuY3Rpb24oLi4uY29udGV4dHMpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYXR0ZW1wdHMoaW5uZXJGdW5jdGlvbiwgLi4uY29udGV4dHMpIHtcbiAgY29udGV4dHMgPSBjb250ZXh0cy5tYXAoKGNvbnRleHQpID0+IHsgIC8vL1xuICAgIGNvbnN0IHJlbGVhc2VkID0gY29udGV4dC5pc1JlbGVhc2VkKCk7XG5cbiAgICBpZiAoIXJlbGVhc2VkKSB7XG4gICAgICBjb25zdCBtbmVtaWNDb250ZXh0ID0gTWVubWljQ29udGV4dC5mcm9tTm90aGluZyhjb250ZXh0KTtcblxuICAgICAgY29udGV4dCA9IG1uZW1pY0NvbnRleHQ7ICAvLy9cbiAgICB9XG5cbiAgICByZXR1cm4gY29udGV4dDtcbiAgfSk7XG5cbiAgcmV0dXJuIGlubmVyRnVuY3Rpb24oLi4uY29udGV4dHMpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gc2VyaWFsaXNlcyhpbm5lckZ1bmN0aW9uLCAuLi5jb250ZXh0cykge1xuICBjb25zdCBtbmVtaWNDb250ZXh0cyA9IGNvbnRleHRzLCAvLy9cbiAgICAgICAgbW5lbWljQ29udGV4dHNKU09OID0gbW5lbWljQ29udGV4dHNUb01uZW1pY0NvbnRleHRzSlNPTihtbmVtaWNDb250ZXh0cyksXG4gICAgICAgIGNvbnRleHRzSlNPTiA9IG1uZW1pY0NvbnRleHRzSlNPTjsgLy8vXG5cbiAgY29udGV4dHMgPSBjb250ZXh0c0pTT047ICAvLy9cblxuICByZXR1cm4gaW5uZXJGdW5jdGlvbiguLi5jb250ZXh0cyk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB1bnNlcmlhbGlzZXMoaW5uZXJGdW5jdGlvbiwganNvbiwgY29udGV4dCkge1xuICBjb25zdCBtbmVtaWNDb250ZXh0cyA9IG1uZW1pY0NvbnRleHRzRnJvbUpTT04oanNvbiwgY29udGV4dCksXG4gICAgICAgIGNvbnRleHRzID0gbW5lbWljQ29udGV4dHM7IC8vL1xuXG4gIHJldHVybiBpbm5lckZ1bmN0aW9uKGpzb24sIC4uLmNvbnRleHRzKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGV2YWx1YXRlKHByb2NlZHVyZSwgdGVybXMpIHtcbiAgY29uc3QgY29udGV4dCA9IHByb2NlZHVyZS5nZXRDb250ZXh0KCk7XG5cbiAgcmV0dXJuIHByb2NlZHVyZS5jYWxsKHRlcm1zLCBjb250ZXh0KTtcbn1cblxuZnVuY3Rpb24gYWJsYXRlQ29udGV4dChjb250ZXh0KSB7XG4gIGNvbnN0IHN0YXRlZCA9IGNvbnRleHQuaXNTdGF0ZWQoKTtcblxuICBsZXQgY29udGV4dEV4dHJhbmVvdXNDb250ZXh0ID0gaXNDb250ZXh0RXh0cmFuZW91c0NvbnRleHQoY29udGV4dCk7XG5cbiAgd2hpbGUgKGNvbnRleHRFeHRyYW5lb3VzQ29udGV4dCkge1xuICAgIGNvbnRleHQgPSBjb250ZXh0LmdldENvbnRleHQoKTtcblxuICAgIGNvbnRleHRFeHRyYW5lb3VzQ29udGV4dCA9IGlzQ29udGV4dEV4dHJhbmVvdXNDb250ZXh0KGNvbnRleHQpO1xuICB9XG5cbiAgY29uc3QgQ29udGV4dCA9IHN0YXRlZCA/IFRoZXRpY0NvbnRleHQgOiBJbGxhdGl2ZUNvbnRleHQ7XG5cbiAgY29udGV4dCA9IGF1Z21lbnRDb250ZXh0KGNvbnRleHQsIENvbnRleHQpO1xuXG4gIHJldHVybiBjb250ZXh0O1xufVxuXG5mdW5jdGlvbiBhdWdtZW50Q29udGV4dChjb250ZXh0LCBDb250ZXh0KSB7XG4gIGNvbnN0IGNvbnRleHRDb250ZXh0ID0gKGNvbnRleHQgaW5zdGFuY2VvZiBDb250ZXh0KTtcblxuICBpZiAoIWNvbnRleHRDb250ZXh0KSB7XG4gICAgY29udGV4dCA9IENvbnRleHQuZnJvbU5vdGhpbmcoY29udGV4dCk7XG4gIH1cblxuICByZXR1cm4gY29udGV4dDtcbn1cblxuZnVuY3Rpb24gaXNDb250ZXh0RXh0cmFuZW91c0NvbnRleHQoY29udGV4dCkge1xuICBjb25zdCBjb250ZXh0U3Vic3RhbnRpdmVDb250ZXh0ID0gaXNDb250ZXh0U3Vic3RhbnRpdmVDb250ZXh0KGNvbnRleHQpLFxuICAgICAgICBjb250ZXh0RXh0cmFuZW91c0NvbnRleHQgPSAhY29udGV4dFN1YnN0YW50aXZlQ29udGV4dDtcblxuICByZXR1cm4gY29udGV4dEV4dHJhbmVvdXNDb250ZXh0O1xufVxuXG5mdW5jdGlvbiBpc0NvbnRleHRTdWJzdGFudGl2ZUNvbnRleHQoY29udGV4dCkge1xuICBjb25zdCBjb250ZXh0VGhldGljQ29udGV4dCA9IChjb250ZXh0IGluc3RhbmNlb2YgVGhldGljQ29udGV4dCksXG4gICAgICAgIGNvbnRleHRJbGxhdGl2ZUNvbnRleHQgPSAoY29udGV4dCBpbnN0YW5jZW9mIElsbGF0aXZlQ29udGV4dCksXG4gICAgICAgIGNvbnRleHRCb3VuZGVkQ29udGV4dCA9IChjb250ZXh0IGluc3RhbmNlb2YgQm91bmRlZENvbnRleHQpLFxuICAgICAgICBjb250ZXh0Tm9taW5hbEZpbGVDb250ZXh0ID0gKGNvbnRleHQgaW5zdGFuY2VvZiBOb21pbmFsRmlsZUNvbnRleHQpLFxuICAgICAgICBjb250ZXh0U3Vic3RhbnRpdmVDb250ZXh0ID0gKGNvbnRleHRUaGV0aWNDb250ZXh0IHx8IGNvbnRleHRJbGxhdGl2ZUNvbnRleHQgfHwgY29udGV4dEJvdW5kZWRDb250ZXh0IHx8IGNvbnRleHROb21pbmFsRmlsZUNvbnRleHQpO1xuXG4gIHJldHVybiBjb250ZXh0U3Vic3RhbnRpdmVDb250ZXh0O1xufVxuIl0sIm5hbWVzIjpbImFibGF0ZSIsImFibGF0ZXMiLCJhdHRlbXB0IiwiYXR0ZW1wdHMiLCJjaG9vc2UiLCJkZWNsYXJlIiwiZGVyaXZlIiwiZGVzY2VuZCIsImVuY2xvc2UiLCJldmFsdWF0ZSIsImdyb3VuZCIsImluc3RhbnRpYXRlIiwiam9pbiIsIm1hbmlmZXN0IiwicG9zaXQiLCJyZWNvbmNpbGUiLCJzZXF1ZXN0ZXIiLCJzZXJpYWxpc2UiLCJzZXJpYWxpc2VzIiwidW5zZXJpYWxpc2UiLCJ1bnNlcmlhbGlzZXMiLCJpbm5lckZ1bmN0aW9uIiwiY29udGV4dHMiLCJmaWx0ZXIiLCJjb250ZXh0Iiwic3lub3B0aWNDb250ZXh0IiwiU3lub3B0aWNDb250ZXh0IiwiZnJvbUNvbnRleHRzIiwiZXBoZW1lcmFsQ29udGV4dCIsIkVwaGVtZXJhbENvbnRleHQiLCJmcm9tTm90aGluZyIsIm5vbWluYWxDb250ZXh0IiwiTm9taW5hbENvbnRleHQiLCJsaXRlcmFsQ29udGV4dCIsIkxpdGVyYWxDb250ZXh0IiwiZm9yY2VkIiwidW5kZWZpbmVkIiwicmVsZWFzZWQiLCJpc1JlbGVhc2VkIiwiYWJsYXRlQ29udGV4dCIsImJyYW5jaGluZ0NvbnRleHQiLCJCcmFuY2hpbmdDb250ZXh0IiwiaWxsYXRpdmVDb250ZXh0IiwiSWxsYXRpdmVDb250ZXh0IiwidGhldGljQ29udGV4dCIsIlRoZXRpY0NvbnRleHQiLCJuZXN0ZWRDb250ZXh0IiwiTmVzdGVkQ29udGV4dCIsIm1uZW1pY0NvbnRleHQiLCJNZW5taWNDb250ZXh0IiwibWV0YUxldmVsQXNzdW1wdGlvbnMiLCJib3VuZGVkQ29udGV4dCIsIkJvdW5kZWRDb250ZXh0IiwiZnJvbU1ldGFMZXZlbEFzc3VtcHRpb25zIiwicGhhbmVyaWNDb250ZXh0IiwiUGhhbmVyaWNDb250ZXh0IiwibGltaW5hbENvbnRleHQiLCJMaW1pbmFsQ29udGV4dCIsImFwaGFzaWNDb250ZXh0IiwiQXBoYXNpY0NvbnRleHQiLCJtbmVtaWNDb250ZXh0SlNPTiIsIm1uZW1pY0NvbnRleHRUb01uZW1pY0NvbnRleHRKU09OIiwiY29udGV4dEpTT04iLCJqc29uIiwibW5lbWljQ29udGV4dEZyb21KU09OIiwibWFwIiwibW5lbWljQ29udGV4dHMiLCJtbmVtaWNDb250ZXh0c0pTT04iLCJtbmVtaWNDb250ZXh0c1RvTW5lbWljQ29udGV4dHNKU09OIiwiY29udGV4dHNKU09OIiwibW5lbWljQ29udGV4dHNGcm9tSlNPTiIsInByb2NlZHVyZSIsInRlcm1zIiwiZ2V0Q29udGV4dCIsImNhbGwiLCJzdGF0ZWQiLCJpc1N0YXRlZCIsImNvbnRleHRFeHRyYW5lb3VzQ29udGV4dCIsImlzQ29udGV4dEV4dHJhbmVvdXNDb250ZXh0IiwiQ29udGV4dCIsImF1Z21lbnRDb250ZXh0IiwiY29udGV4dENvbnRleHQiLCJjb250ZXh0U3Vic3RhbnRpdmVDb250ZXh0IiwiaXNDb250ZXh0U3Vic3RhbnRpdmVDb250ZXh0IiwiY29udGV4dFRoZXRpY0NvbnRleHQiLCJjb250ZXh0SWxsYXRpdmVDb250ZXh0IiwiY29udGV4dEJvdW5kZWRDb250ZXh0IiwiY29udGV4dE5vbWluYWxGaWxlQ29udGV4dCIsIk5vbWluYWxGaWxlQ29udGV4dCJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7O1FBc0RnQkE7ZUFBQUE7O1FBMkhBQztlQUFBQTs7UUEzRUFDO2VBQUFBOztRQXlGQUM7ZUFBQUE7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
|
|
220
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlsaXRpZXMvY29udGV4dC5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuaW1wb3J0IE1uZW1pY0NvbnRleHQgZnJvbSBcIi4uL2NvbnRleHQvbW5lbWljXCI7XG5pbXBvcnQgTmVzdGVkQ29udGV4dCBmcm9tIFwiLi4vY29udGV4dC9uZXN0ZWRcIjtcbmltcG9ydCBUaGV0aWNDb250ZXh0IGZyb20gXCIuLi9jb250ZXh0L3RoZXRpY1wiO1xuaW1wb3J0IEFwaGFzaWNDb250ZXh0IGZyb20gXCIuLi9jb250ZXh0L2FwaGFzaWNcIjtcbmltcG9ydCBCb3VuZGVkQ29udGV4dCBmcm9tIFwiLi4vY29udGV4dC9ib3VuZGVkXCI7XG5pbXBvcnQgTm9taW5hbENvbnRleHQgZnJvbSBcIi4uL2NvbnRleHQvbm9taW5hbFwiO1xuaW1wb3J0IExpdGVyYWxDb250ZXh0IGZyb20gXCIuLi9jb250ZXh0L2xpdGVyYWxcIjtcbmltcG9ydCBMaW1pbmFsQ29udGV4dCBmcm9tIFwiLi4vY29udGV4dC9saW1pbmFsXCI7XG5pbXBvcnQgUGhhbmVyaWNDb250ZXh0IGZyb20gXCIuLi9jb250ZXh0L3BoYW5lcmljXCI7XG5pbXBvcnQgSWxsYXRpdmVDb250ZXh0IGZyb20gXCIuLi9jb250ZXh0L2lsbGF0aXZlXCI7XG5pbXBvcnQgQnJhbmNoaW5nQ29udGV4dCBmcm9tIFwiLi4vY29udGV4dC9icmFuY2hpbmdcIjtcbmltcG9ydCBOb21pbmFsRmlsZUNvbnRleHQgZnJvbSBcIi4uL2NvbnRleHQvZmlsZS9ub21pbmFsXCI7XG5cbmltcG9ydCB7IG1uZW1pY0NvbnRleHRGcm9tSlNPTiwgbW5lbWljQ29udGV4dHNGcm9tSlNPTiwgbW5lbWljQ29udGV4dFRvTW5lbWljQ29udGV4dEpTT04sIG1uZW1pY0NvbnRleHRzVG9NbmVtaWNDb250ZXh0c0pTT04gfSBmcm9tIFwiLi4vdXRpbGl0aWVzL2pzb25cIjtcblxuZXhwb3J0IGZ1bmN0aW9uIGV2YWx1YXRlKHByb2NlZHVyZSwgdGVybXMpIHtcbiAgY29uc3QgY29udGV4dCA9IHByb2NlZHVyZS5nZXRDb250ZXh0KCk7XG5cbiAgcmV0dXJuIHByb2NlZHVyZS5jYWxsKHRlcm1zLCBjb250ZXh0KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdyb3VuZChpbm5lckZ1bmN0aW9uKSB7XG4gIGxldCBjb250ZXh0O1xuXG4gIGNvbnN0IG5vbWluYWxDb250ZXh0ID0gTm9taW5hbENvbnRleHQuZnJvbU5vdGhpbmcoKTtcblxuICBjb250ZXh0ID0gbm9taW5hbENvbnRleHQ7IC8vL1xuXG4gIGNvbnN0IGxpdGVyYWxDb250ZXh0ID0gTGl0ZXJhbENvbnRleHQuZnJvbU5vdGhpbmcoY29udGV4dCk7XG5cbiAgY29udGV4dCA9IGxpdGVyYWxDb250ZXh0OyAgLy8vXG5cbiAgcmV0dXJuIGlubmVyRnVuY3Rpb24oY29udGV4dCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBkZWNsYXJlKGlubmVyRnVuY3Rpb24sIGNvbnRleHQpIHtcbiAgY29uc3QgdGhldGljQ29udGV4dCA9IFRoZXRpY0NvbnRleHQuZnJvbU5vdGhpbmcoY29udGV4dCk7XG5cbiAgY29udGV4dCA9IHRoZXRpY0NvbnRleHQ7ICAvLy9cblxuICByZXR1cm4gaW5uZXJGdW5jdGlvbihjb250ZXh0KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRlcml2ZShpbm5lckZ1bmN0aW9uLCBjb250ZXh0KSB7XG4gIGNvbnN0IGlsbGF0aXZlQ29udGV4dCA9IElsbGF0aXZlQ29udGV4dC5mcm9tTm90aGluZyhjb250ZXh0KTtcblxuICBjb250ZXh0ID0gaWxsYXRpdmVDb250ZXh0OyAgLy8vXG5cbiAgcmV0dXJuIGlubmVyRnVuY3Rpb24oY29udGV4dCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBlbGlkZShpbm5lckZ1bmN0aW9uLCBjb250ZXh0KSB7XG4gIGNvbnN0IGFwaGFzaWNDb250ZXh0ID0gQXBoYXNpY0NvbnRleHQuZnJvbU5vdGhpbmcoY29udGV4dCk7XG5cbiAgY29udGV4dCA9IGFwaGFzaWNDb250ZXh0OyAgLy8vXG5cbiAgcmV0dXJuIGlubmVyRnVuY3Rpb24oY29udGV4dCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBlbmNsb3NlKGlubmVyRnVuY3Rpb24sIGNvbnRleHQpIHtcbiAgY29uc3QgYm91bmRlZENvbnRleHQgPSBCb3VuZGVkQ29udGV4dC5mcm9tTm90aGluZyhjb250ZXh0KTtcblxuICBjb250ZXh0ID0gYm91bmRlZENvbnRleHQ7ICAvLy9cblxuICByZXR1cm4gaW5uZXJGdW5jdGlvbihjb250ZXh0KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGVuY2Fwc3VsYXRlKGlubmVyRnVuY3Rpb24sIG1ldGFMZXZlbEFzc3VtcHRpb25zLCBjb250ZXh0KSB7XG4gIGNvbnN0IGJvdW5kZWRDb250ZXh0ID0gQm91bmRlZENvbnRleHQuZnJvbU1ldGFMZXZlbEFzc3VtcHRpb25zKG1ldGFMZXZlbEFzc3VtcHRpb25zLCBjb250ZXh0KTtcblxuICBjb250ZXh0ID0gYm91bmRlZENvbnRleHQ7ICAvLy9cblxuICByZXR1cm4gaW5uZXJGdW5jdGlvbihjb250ZXh0KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNob29zZShpbm5lckZ1bmN0aW9uLCBjb250ZXh0KSB7XG4gIGNvbnN0IGJyYW5jaGluZ0NvbnRleHQgPSBCcmFuY2hpbmdDb250ZXh0LmZyb21Ob3RoaW5nKGNvbnRleHQpO1xuXG4gIGNvbnRleHQgPSBicmFuY2hpbmdDb250ZXh0OyAgLy8vXG5cbiAgcmV0dXJuIGlubmVyRnVuY3Rpb24oY29udGV4dCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBkZXNjZW5kKGlubmVyRnVuY3Rpb24sIGNvbnRleHQpIHtcbiAgY29uc3QgbmVzdGVkQ29udGV4dCA9IE5lc3RlZENvbnRleHQuZnJvbU5vdGhpbmcoY29udGV4dCk7XG5cbiAgY29udGV4dCA9IG5lc3RlZENvbnRleHQ7ICAvLy9cblxuICByZXR1cm4gaW5uZXJGdW5jdGlvbihjb250ZXh0KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGFibGF0ZShpbm5lckZ1bmN0aW9uLCBjb250ZXh0KSB7XG4gIGNvbnN0IHVucmVsZWFzZWQgPSBjb250ZXh0LmlzVW5yZWxlYXNlZCgpO1xuXG4gIGlmICh1bnJlbGVhc2VkKSB7XG4gICAgY29udGV4dCA9IGFibGF0ZUNvbnRleHQoY29udGV4dCk7IC8vL1xuICB9XG5cbiAgcmV0dXJuIGlubmVyRnVuY3Rpb24oY29udGV4dCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBhdHRlbXB0KGlubmVyRnVuY3Rpb24sIGNvbnRleHQpIHtcbiAgY29uc3QgdW5yZWxlYXNlZCA9IGNvbnRleHQuaXNVbnJlbGVhc2VkKCk7XG5cbiAgaWYgKHVucmVsZWFzZWQpIHtcbiAgICBjb25zdCBtbmVtaWNDb250ZXh0ID0gTW5lbWljQ29udGV4dC5mcm9tTm90aGluZyhjb250ZXh0KTtcblxuICAgIGNvbnRleHQgPSBtbmVtaWNDb250ZXh0OyAgLy8vXG4gIH1cblxuICByZXR1cm4gaW5uZXJGdW5jdGlvbihjb250ZXh0KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJlY29uY2lsZShpbm5lckZ1bmN0aW9uLCBjb250ZXh0KSB7XG4gIGNvbnN0IGxpbWluYWxDb250ZXh0ID0gTGltaW5hbENvbnRleHQuZnJvbU5vdGhpbmcoY29udGV4dCk7XG5cbiAgY29udGV4dCA9IGxpbWluYWxDb250ZXh0OyAgLy8vXG5cbiAgcmV0dXJuIGlubmVyRnVuY3Rpb24oY29udGV4dCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzZXJpYWxpc2UoaW5uZXJGdW5jdGlvbiwgY29udGV4dCkge1xuICBjb25zdCBtbmVtaWNDb250ZXh0ID0gY29udGV4dCwgLy8vXG4gICAgICAgIG1uZW1pY0NvbnRleHRKU09OID0gbW5lbWljQ29udGV4dFRvTW5lbWljQ29udGV4dEpTT04obW5lbWljQ29udGV4dCksXG4gICAgICAgIGNvbnRleHRKU09OID0gbW5lbWljQ29udGV4dEpTT047IC8vL1xuXG4gIGNvbnRleHQgPSBjb250ZXh0SlNPTjsgIC8vL1xuXG4gIHJldHVybiBpbm5lckZ1bmN0aW9uKGNvbnRleHQpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdW5zZXJpYWxpc2UoaW5uZXJGdW5jdGlvbiwganNvbiwgY29udGV4dCkge1xuICBjb25zdCBtbmVtaWNDb250ZXh0ID0gbW5lbWljQ29udGV4dEZyb21KU09OKGpzb24sIGNvbnRleHQpO1xuXG4gIGNvbnRleHQgPSBtbmVtaWNDb250ZXh0OyAvLy9cblxuICByZXR1cm4gaW5uZXJGdW5jdGlvbihqc29uLCBjb250ZXh0KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHVuc2VyaWFsaXNlcyhpbm5lckZ1bmN0aW9uLCBqc29uLCBjb250ZXh0KSB7XG4gIGNvbnN0IG1uZW1pY0NvbnRleHRzID0gbW5lbWljQ29udGV4dHNGcm9tSlNPTihqc29uLCBjb250ZXh0KSxcbiAgICAgICAgY29udGV4dHMgPSBtbmVtaWNDb250ZXh0czsgLy8vXG5cbiAgcmV0dXJuIGlubmVyRnVuY3Rpb24oanNvbiwgLi4uY29udGV4dHMpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaW5zdGFudGlhdGUoaW5uZXJGdW5jdGlvbiwgY29udGV4dCkge1xuICBjb25zdCBsaXRlcmFsQ29udGV4dCA9IExpdGVyYWxDb250ZXh0LmZyb21Ob3RoaW5nKGNvbnRleHQpO1xuXG4gIGNvbnRleHQgPSBsaXRlcmFsQ29udGV4dDsgIC8vL1xuXG4gIHJldHVybiBpbm5lckZ1bmN0aW9uKGNvbnRleHQpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbWFuaWZlc3QoaW5uZXJGdW5jdGlvbiwgLi4uY29udGV4dHMpIHtcbiAgY29uc3QgcGhhbmVyaWNDb250ZXh0ID0gUGhhbmVyaWNDb250ZXh0LmZyb21Db250ZXh0cyhjb250ZXh0cyksXG4gICAgICAgIGNvbnRleHQgPSBwaGFuZXJpY0NvbnRleHQ7ICAvLy9cblxuICByZXR1cm4gaW5uZXJGdW5jdGlvbihjb250ZXh0KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGF0dGVtcHRzKGlubmVyRnVuY3Rpb24sIC4uLmNvbnRleHRzKSB7XG4gIGNvbnRleHRzID0gY29udGV4dHMubWFwKChjb250ZXh0KSA9PiB7ICAvLy9cbiAgICBjb25zdCB1bnJlbGVhc2VkID0gY29udGV4dC5pc1VucmVsZWFzZWQoKTtcblxuICAgIGlmICh1bnJlbGVhc2VkKSB7XG4gICAgICBjb25zdCBtbmVtaWNDb250ZXh0ID0gTW5lbWljQ29udGV4dC5mcm9tTm90aGluZyhjb250ZXh0KTtcblxuICAgICAgY29udGV4dCA9IG1uZW1pY0NvbnRleHQ7ICAvLy9cbiAgICB9XG5cbiAgICByZXR1cm4gY29udGV4dDtcbiAgfSk7XG5cbiAgcmV0dXJuIGlubmVyRnVuY3Rpb24oLi4uY29udGV4dHMpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gc2VyaWFsaXNlcyhpbm5lckZ1bmN0aW9uLCAuLi5jb250ZXh0cykge1xuICBjb25zdCBtbmVtaWNDb250ZXh0cyA9IGNvbnRleHRzLCAvLy9cbiAgICAgICAgbW5lbWljQ29udGV4dHNKU09OID0gbW5lbWljQ29udGV4dHNUb01uZW1pY0NvbnRleHRzSlNPTihtbmVtaWNDb250ZXh0cyksXG4gICAgICAgIGNvbnRleHRzSlNPTiA9IG1uZW1pY0NvbnRleHRzSlNPTjsgLy8vXG5cbiAgY29udGV4dHMgPSBjb250ZXh0c0pTT047ICAvLy9cblxuICByZXR1cm4gaW5uZXJGdW5jdGlvbiguLi5jb250ZXh0cyk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBhYmxhdGVzKGlubmVyRnVuY3Rpb24sIC4uLmNvbnRleHRzKSB7XG4gIGNvbnRleHRzID0gY29udGV4dHMubWFwKChjb250ZXh0KSA9PiB7ICAvLy9cbiAgICBjb25zdCB1bnJlbGVhc2VkID0gY29udGV4dC5pc1VucmVsZWFzZWQoKTtcblxuICAgIGlmICh1bnJlbGVhc2VkKSB7XG4gICAgICBjb250ZXh0ID0gYWJsYXRlQ29udGV4dChjb250ZXh0KTsgLy8vXG4gICAgfVxuXG4gICAgcmV0dXJuIGNvbnRleHQ7XG4gIH0pO1xuXG4gIHJldHVybiBpbm5lckZ1bmN0aW9uKC4uLmNvbnRleHRzKTtcbn1cblxuZnVuY3Rpb24gYWJsYXRlQ29udGV4dChjb250ZXh0KSB7XG4gICAgbGV0IGNvbnRleHRHcm91bmRlZENvbnRleHQgPSBpc0NvbnRleHRHcm91bmRlZENvbnRleHQoY29udGV4dCk7XG5cbiAgICB3aGlsZSAoIWNvbnRleHRHcm91bmRlZENvbnRleHQpIHtcbiAgICAgIGNvbnRleHQgPSBjb250ZXh0LmdldENvbnRleHQoKTtcblxuICAgICAgY29udGV4dEdyb3VuZGVkQ29udGV4dCA9IGlzQ29udGV4dEdyb3VuZGVkQ29udGV4dChjb250ZXh0KTtcbiAgICB9XG5cbiAgcmV0dXJuIGNvbnRleHQ7XG59XG5cbmZ1bmN0aW9uIGlzQ29udGV4dEdyb3VuZGVkQ29udGV4dChjb250ZXh0KSB7XG4gIGNvbnN0IGNvbnRleHRUaGV0aWNDb250ZXh0ID0gKGNvbnRleHQgaW5zdGFuY2VvZiBUaGV0aWNDb250ZXh0KSxcbiAgICAgICAgY29udGV4dElsbGF0aXZlQ29udGV4dCA9IChjb250ZXh0IGluc3RhbmNlb2YgSWxsYXRpdmVDb250ZXh0KSxcbiAgICAgICAgY29udGV4dE5vbWluYWxGaWxlQ29udGV4dCA9IChjb250ZXh0IGluc3RhbmNlb2YgTm9taW5hbEZpbGVDb250ZXh0KSxcbiAgICAgICAgY29udGV4dEdyb3VuZGVkQ29udGV4dCA9IChjb250ZXh0VGhldGljQ29udGV4dCB8fCBjb250ZXh0SWxsYXRpdmVDb250ZXh0IHx8IGNvbnRleHROb21pbmFsRmlsZUNvbnRleHQpO1xuXG4gIHJldHVybiBjb250ZXh0R3JvdW5kZWRDb250ZXh0O1xufVxuIl0sIm5hbWVzIjpbImFibGF0ZSIsImFibGF0ZXMiLCJhdHRlbXB0IiwiYXR0ZW1wdHMiLCJjaG9vc2UiLCJkZWNsYXJlIiwiZGVyaXZlIiwiZGVzY2VuZCIsImVsaWRlIiwiZW5jYXBzdWxhdGUiLCJlbmNsb3NlIiwiZXZhbHVhdGUiLCJncm91bmQiLCJpbnN0YW50aWF0ZSIsIm1hbmlmZXN0IiwicmVjb25jaWxlIiwic2VyaWFsaXNlIiwic2VyaWFsaXNlcyIsInVuc2VyaWFsaXNlIiwidW5zZXJpYWxpc2VzIiwicHJvY2VkdXJlIiwidGVybXMiLCJjb250ZXh0IiwiZ2V0Q29udGV4dCIsImNhbGwiLCJpbm5lckZ1bmN0aW9uIiwibm9taW5hbENvbnRleHQiLCJOb21pbmFsQ29udGV4dCIsImZyb21Ob3RoaW5nIiwibGl0ZXJhbENvbnRleHQiLCJMaXRlcmFsQ29udGV4dCIsInRoZXRpY0NvbnRleHQiLCJUaGV0aWNDb250ZXh0IiwiaWxsYXRpdmVDb250ZXh0IiwiSWxsYXRpdmVDb250ZXh0IiwiYXBoYXNpY0NvbnRleHQiLCJBcGhhc2ljQ29udGV4dCIsImJvdW5kZWRDb250ZXh0IiwiQm91bmRlZENvbnRleHQiLCJtZXRhTGV2ZWxBc3N1bXB0aW9ucyIsImZyb21NZXRhTGV2ZWxBc3N1bXB0aW9ucyIsImJyYW5jaGluZ0NvbnRleHQiLCJCcmFuY2hpbmdDb250ZXh0IiwibmVzdGVkQ29udGV4dCIsIk5lc3RlZENvbnRleHQiLCJ1bnJlbGVhc2VkIiwiaXNVbnJlbGVhc2VkIiwiYWJsYXRlQ29udGV4dCIsIm1uZW1pY0NvbnRleHQiLCJNbmVtaWNDb250ZXh0IiwibGltaW5hbENvbnRleHQiLCJMaW1pbmFsQ29udGV4dCIsIm1uZW1pY0NvbnRleHRKU09OIiwibW5lbWljQ29udGV4dFRvTW5lbWljQ29udGV4dEpTT04iLCJjb250ZXh0SlNPTiIsImpzb24iLCJtbmVtaWNDb250ZXh0RnJvbUpTT04iLCJtbmVtaWNDb250ZXh0cyIsIm1uZW1pY0NvbnRleHRzRnJvbUpTT04iLCJjb250ZXh0cyIsInBoYW5lcmljQ29udGV4dCIsIlBoYW5lcmljQ29udGV4dCIsImZyb21Db250ZXh0cyIsIm1hcCIsIm1uZW1pY0NvbnRleHRzSlNPTiIsIm1uZW1pY0NvbnRleHRzVG9NbmVtaWNDb250ZXh0c0pTT04iLCJjb250ZXh0c0pTT04iLCJjb250ZXh0R3JvdW5kZWRDb250ZXh0IiwiaXNDb250ZXh0R3JvdW5kZWRDb250ZXh0IiwiY29udGV4dFRoZXRpY0NvbnRleHQiLCJjb250ZXh0SWxsYXRpdmVDb250ZXh0IiwiY29udGV4dE5vbWluYWxGaWxlQ29udGV4dCIsIk5vbWluYWxGaWxlQ29udGV4dCJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7O1FBNkZnQkE7ZUFBQUE7O1FBZ0dBQztlQUFBQTs7UUF0RkFDO2VBQUFBOztRQTREQUM7ZUFBQUE7O1FBdEZBQztlQUFBQTs7UUF4Q0FDO2VBQUFBOztRQVFBQztlQUFBQTs7UUF3Q0FDO2VBQUFBOztRQWhDQUM7ZUFBQUE7O1FBZ0JBQztlQUFBQTs7UUFSQUM7ZUFBQUE7O1FBNUNBQztlQUFBQTs7UUFNQUM7ZUFBQUE7O1FBNkhBQztlQUFBQTs7UUFRQUM7ZUFBQUE7O1FBekNBQztlQUFBQTs7UUFRQUM7ZUFBQUE7O1FBd0RBQztlQUFBQTs7UUE5Q0FDO2VBQUFBOztRQVFBQztlQUFBQTs7OytEQTNJVTsrREFDQTsrREFDQTtnRUFDQztnRUFDQTtnRUFDQTtnRUFDQTtnRUFDQTtpRUFDQztpRUFDQTtrRUFDQztpRUFDRTtzQkFFcUc7Ozs7OztBQUU3SCxTQUFTUixTQUFTUyxTQUFTLEVBQUVDLEtBQUs7SUFDdkMsTUFBTUMsVUFBVUYsVUFBVUcsVUFBVTtJQUVwQyxPQUFPSCxVQUFVSSxJQUFJLENBQUNILE9BQU9DO0FBQy9CO0FBRU8sU0FBU1YsT0FBT2EsYUFBYTtJQUNsQyxJQUFJSDtJQUVKLE1BQU1JLGlCQUFpQkMsZ0JBQWMsQ0FBQ0MsV0FBVztJQUVqRE4sVUFBVUksZ0JBQWdCLEdBQUc7SUFFN0IsTUFBTUcsaUJBQWlCQyxnQkFBYyxDQUFDRixXQUFXLENBQUNOO0lBRWxEQSxVQUFVTyxnQkFBaUIsR0FBRztJQUU5QixPQUFPSixjQUFjSDtBQUN2QjtBQUVPLFNBQVNqQixRQUFRb0IsYUFBYSxFQUFFSCxPQUFPO0lBQzVDLE1BQU1TLGdCQUFnQkMsZUFBYSxDQUFDSixXQUFX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
|