occam-verify-cli 0.0.308 → 0.0.310

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.
Files changed (49) hide show
  1. package/bin/abbreviations.js +2 -4
  2. package/bin/main.js +10 -10
  3. package/bin/options.js +1 -3
  4. package/bin/utilities/logging.js +42 -0
  5. package/bin/utilities/release.js +77 -0
  6. package/lib/context/file.js +33 -16
  7. package/lib/context/metaproof.js +13 -13
  8. package/lib/context/proof.js +13 -13
  9. package/lib/context/release.js +38 -68
  10. package/lib/mixins/log.js +41 -0
  11. package/lib/utilities/customGrammar.js +32 -0
  12. package/lib/utilities/tokens.js +63 -0
  13. package/lib/verify/assertion/type.js +4 -4
  14. package/lib/verify/axiom.js +3 -3
  15. package/lib/verify/label.js +2 -2
  16. package/lib/verify/metastatement/qualified.js +2 -2
  17. package/lib/verify/metastatement/unqualified.js +2 -2
  18. package/lib/verify/release.js +2 -2
  19. package/lib/verify/rule.js +3 -3
  20. package/lib/verify/statement.js +3 -3
  21. package/lib/verify/statementAsCombinator.js +4 -4
  22. package/lib/verify/term.js +2 -2
  23. package/lib/verify/termAsConstructor.js +7 -7
  24. package/lib/verify/termAsVariable.js +2 -2
  25. package/lib/verify/type.js +5 -5
  26. package/lib/verify/variable.js +4 -4
  27. package/package.json +2 -2
  28. package/src/context/file.js +26 -10
  29. package/src/context/metaproof.js +6 -6
  30. package/src/context/proof.js +6 -6
  31. package/src/context/release.js +38 -54
  32. package/src/mixins/log.js +28 -0
  33. package/src/utilities/customGrammar.js +27 -0
  34. package/src/utilities/tokens.js +67 -0
  35. package/src/verify/assertion/type.js +3 -3
  36. package/src/verify/axiom.js +2 -2
  37. package/src/verify/label.js +1 -1
  38. package/src/verify/metastatement/qualified.js +1 -1
  39. package/src/verify/metastatement/unqualified.js +1 -1
  40. package/src/verify/release.js +1 -1
  41. package/src/verify/rule.js +2 -2
  42. package/src/verify/statement.js +2 -2
  43. package/src/verify/statementAsCombinator.js +3 -3
  44. package/src/verify/term.js +1 -1
  45. package/src/verify/termAsConstructor.js +6 -6
  46. package/src/verify/termAsVariable.js +1 -1
  47. package/src/verify/type.js +4 -4
  48. package/src/verify/variable.js +3 -3
  49. package/bin/loadReleaseContexts.js +0 -68
@@ -5,11 +5,13 @@ Object.defineProperty(exports, "__esModule", {
5
5
  Object.defineProperty(exports, "default", {
6
6
  enumerable: true,
7
7
  get: function() {
8
- return ReleaseContext;
8
+ return _default;
9
9
  }
10
10
  });
11
11
  var _occamCustomGrammars = require("occam-custom-grammars");
12
+ var _log = /*#__PURE__*/ _interopRequireDefault(require("../mixins/log"));
12
13
  var _array = require("../utilities/array");
14
+ var _customGrammar = require("../utilities/customGrammar");
13
15
  function _arrayLikeToArray(arr, len) {
14
16
  if (len == null || len > arr.length) len = arr.length;
15
17
  for(var i = 0, arr2 = new Array(len); i < len; i++)arr2[i] = arr[i];
@@ -65,6 +67,11 @@ function _createClass(Constructor, protoProps, staticProps) {
65
67
  if (staticProps) _defineProperties(Constructor, staticProps);
66
68
  return Constructor;
67
69
  }
70
+ function _interopRequireDefault(obj) {
71
+ return obj && obj.__esModule ? obj : {
72
+ default: obj
73
+ };
74
+ }
68
75
  function _iterableToArray(iter) {
69
76
  if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter);
70
77
  }
@@ -91,11 +98,12 @@ function _unsupportedIterableToArray(o, minLen) {
91
98
  }
92
99
  var florenceLexerFromCombinedCustomGrammar = _occamCustomGrammars.lexersUtilities.florenceLexerFromCombinedCustomGrammar, florenceParserFromCombinedCustomGrammar = _occamCustomGrammars.parsersUtilities.florenceParserFromCombinedCustomGrammar;
93
100
  var ReleaseContext = /*#__PURE__*/ function() {
94
- function ReleaseContext(log, release, verified, fileContexts, florenceLexer, florenceParser, releaseContexts) {
101
+ function ReleaseContext(log, release, verified, customGrammar, fileContexts, florenceLexer, florenceParser, releaseContexts) {
95
102
  _classCallCheck(this, ReleaseContext);
96
103
  this.log = log;
97
104
  this.release = release;
98
105
  this.verified = verified;
106
+ this.customGrammar = customGrammar;
99
107
  this.fileContexts = fileContexts;
100
108
  this.florenceLexer = florenceLexer;
101
109
  this.florenceParser = florenceParser;
@@ -120,6 +128,12 @@ var ReleaseContext = /*#__PURE__*/ function() {
120
128
  return this.verified;
121
129
  }
122
130
  },
131
+ {
132
+ key: "getCustomGrammar",
133
+ value: function getCustomGrammar() {
134
+ return this.customGrammar;
135
+ }
136
+ },
123
137
  {
124
138
  key: "getFileContexts",
125
139
  value: function getFileContexts() {
@@ -145,10 +159,15 @@ var ReleaseContext = /*#__PURE__*/ function() {
145
159
  }
146
160
  },
147
161
  {
148
- key: "getReleaseName",
149
- value: function getReleaseName() {
150
- var releaseName = this.release.getName();
151
- return releaseName;
162
+ key: "getFile",
163
+ value: function getFile(filePath) {
164
+ return this.release.getFile(filePath);
165
+ }
166
+ },
167
+ {
168
+ key: "getName",
169
+ value: function getName() {
170
+ return this.release.getName();
152
171
  }
153
172
  },
154
173
  {
@@ -160,13 +179,7 @@ var ReleaseContext = /*#__PURE__*/ function() {
160
179
  {
161
180
  key: "getFilePaths",
162
181
  value: function getFilePaths() {
163
- return this.release.getFilePatns();
164
- }
165
- },
166
- {
167
- key: "getFileContent",
168
- value: function getFileContent(filePath) {
169
- return this.release.getFileContent(filePath);
182
+ return this.release.getFilePaths();
170
183
  }
171
184
  },
172
185
  {
@@ -179,7 +192,7 @@ var ReleaseContext = /*#__PURE__*/ function() {
179
192
  key: "getRules",
180
193
  value: function getRules() {
181
194
  var releaseNames = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : [];
182
- var rules = [], releaseName = this.getReleaseName(), releaseNamesIncludesReleaseName = releaseNames.includes(releaseName);
195
+ var name = this.getName(), rules = [], releaseName = name, releaseNamesIncludesReleaseName = releaseNames.includes(releaseName);
183
196
  if (!releaseNamesIncludesReleaseName) {
184
197
  releaseNames.push(releaseName);
185
198
  var bubble = false;
@@ -199,7 +212,7 @@ var ReleaseContext = /*#__PURE__*/ function() {
199
212
  key: "getTypes",
200
213
  value: function getTypes() {
201
214
  var releaseNames = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : [];
202
- var types = [], releaseName = this.getReleaesName(), releaseNamesIncludesReleaseName = releaseNames.includes(releaseName);
215
+ var name = this.getName(), types = [], releaseName = name, releaseNamesIncludesReleaseName = releaseNames.includes(releaseName);
203
216
  if (!releaseNamesIncludesReleaseName) {
204
217
  releaseNames.push(releaseName);
205
218
  var bubble = false;
@@ -219,7 +232,7 @@ var ReleaseContext = /*#__PURE__*/ function() {
219
232
  key: "getAxioms",
220
233
  value: function getAxioms() {
221
234
  var releaseNames = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : [];
222
- var axioms = [], releaseName = this.getReleaseName(), releaseNamesIncludesReleaseName = releaseNames.includes(releaseName);
235
+ var name = this.getName(), axioms = [], releaseName = name, releaseNamesIncludesReleaseName = releaseNames.includes(releaseName);
223
236
  if (!releaseNamesIncludesReleaseName) {
224
237
  releaseNames.push(releaseName);
225
238
  var bubble = false;
@@ -239,7 +252,7 @@ var ReleaseContext = /*#__PURE__*/ function() {
239
252
  key: "getCombinators",
240
253
  value: function getCombinators() {
241
254
  var releaseNames = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : [];
242
- var combinators = [], releaseName = this.getReleaseName(), releaseNamesIncludesReleaseName = releaseNames.includes(releaseName);
255
+ var name = this.getName(), combinators = [], releaseName = name, releaseNamesIncludesReleaseName = releaseNames.includes(releaseName);
243
256
  if (!releaseNamesIncludesReleaseName) {
244
257
  releaseNames.push(releaseName);
245
258
  var bubble = false;
@@ -259,7 +272,7 @@ var ReleaseContext = /*#__PURE__*/ function() {
259
272
  key: "getConstructors",
260
273
  value: function getConstructors() {
261
274
  var releaseNames = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : [];
262
- var releaseName = this.getReleaseName(), constructors = [], releaseNamesIncludesReleaseName = releaseNames.includes(releaseName);
275
+ var name = this.getName(), constructors = [], releaseName = name, releaseNamesIncludesReleaseName = releaseNames.includes(releaseName);
263
276
  if (!releaseNamesIncludesReleaseName) {
264
277
  releaseNames.push(releaseName);
265
278
  var bubble = false;
@@ -275,13 +288,6 @@ var ReleaseContext = /*#__PURE__*/ function() {
275
288
  return constructors;
276
289
  }
277
290
  },
278
- {
279
- key: "getCustomGrammar",
280
- value: function getCustomGrammar() {
281
- var releaseName = this.getReleaseName(), name = releaseName, termBNF = this.release.getTermBNF(), statementBNF = this.release.getStatementBNF(), metastatementBNF = this.release.getMetastatementBNF(), typePattern = this.release.getTypePattern(), symbolPattern = this.release.getSymbolPattern(), operatorPattern = this.release.getOperatorPattern(), customGrammar = _occamCustomGrammars.CustomGrammar.fromNameTermBNFStatementBNFMetastatementBNFTypePatternSymbolPatternAndOperatorPattern(name, termBNF, statementBNF, metastatementBNF, typePattern, symbolPattern, operatorPattern);
282
- return customGrammar;
283
- }
284
- },
285
291
  {
286
292
  key: "addFileContext",
287
293
  value: function addFileContext(fileContext) {
@@ -300,56 +306,17 @@ var ReleaseContext = /*#__PURE__*/ function() {
300
306
  return this.florenceParser.parse(tokens);
301
307
  }
302
308
  },
303
- {
304
- key: "trace",
305
- value: function trace(message) {
306
- this.log.trace(message);
307
- }
308
- },
309
- {
310
- key: "debug",
311
- value: function debug(message) {
312
- this.log.debug(message);
313
- }
314
- },
315
- {
316
- key: "info",
317
- value: function info(message) {
318
- this.log.info(message);
319
- }
320
- },
321
- {
322
- key: "warning",
323
- value: function warning(message) {
324
- this.log.warning(message);
325
- }
326
- },
327
- {
328
- key: "error",
329
- value: function error(message) {
330
- this.log.error(message);
331
- }
332
- },
333
- {
334
- key: "fatal",
335
- value: function fatal(message) {
336
- this.log.fatal(message);
337
- }
338
- },
339
309
  {
340
310
  key: "initialise",
341
311
  value: function initialise(releaseContexts, dependencyReleaseContexts) {
342
- this.releaseContexts = releaseContexts;
343
312
  var releaseContext = this; ///
344
313
  releaseContexts = [
345
314
  releaseContext
346
315
  ].concat(_toConsumableArray(dependencyReleaseContexts)); ///
347
- var customGrammars = releaseContexts.map(function(releaseContext) {
348
- var customGrammar = releaseContext.getCustomGrammar();
349
- return customGrammar;
350
- }), combinedCustomGrammar = _occamCustomGrammars.CombinedCustomGrammar.fromCustomGrammars(customGrammars);
316
+ var combinedCustomGrammar = (0, _customGrammar.combinedCustomGrammarFromReleaseContexts)(releaseContexts);
351
317
  this.florenceLexer = florenceLexerFromCombinedCustomGrammar(combinedCustomGrammar);
352
318
  this.florenceParser = florenceParserFromCombinedCustomGrammar(combinedCustomGrammar);
319
+ this.releaseContexts = releaseContexts;
353
320
  }
354
321
  }
355
322
  ], [
@@ -359,10 +326,11 @@ var ReleaseContext = /*#__PURE__*/ function() {
359
326
  for(var _len = arguments.length, remainingArguments = new Array(_len > 2 ? _len - 2 : 0), _key = 2; _key < _len; _key++){
360
327
  remainingArguments[_key - 2] = arguments[_key];
361
328
  }
362
- var verified = false, fileContexts = [], florenceLexer = null, florenceParser = null, releaseContexts = [], releaseContext = _construct(ReleaseContext, [
329
+ var verified = false, customGrammar = (0, _customGrammar.customGrammarFromRelease)(release), fileContexts = [], florenceLexer = null, florenceParser = null, releaseContexts = [], releaseContext = _construct(ReleaseContext, [
363
330
  log,
364
331
  release,
365
332
  verified,
333
+ customGrammar,
366
334
  fileContexts,
367
335
  florenceLexer,
368
336
  florenceParser,
@@ -374,5 +342,7 @@ var ReleaseContext = /*#__PURE__*/ function() {
374
342
  ]);
375
343
  return ReleaseContext;
376
344
  }();
345
+ Object.assign(ReleaseContext.prototype, _log.default);
346
+ var _default = ReleaseContext;
377
347
 
378
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb250ZXh0L3JlbGVhc2UuanMiLCI8PGpzeC1jb25maWctcHJhZ21hLmpzPj4iXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmltcG9ydCB7IEN1c3RvbUdyYW1tYXIsIGxleGVyc1V0aWxpdGllcywgcGFyc2Vyc1V0aWxpdGllcywgQ29tYmluZWRDdXN0b21HcmFtbWFyIH0gZnJvbSBcIm9jY2FtLWN1c3RvbS1ncmFtbWFyc1wiO1xuXG5pbXBvcnQgeyBwdXNoIH0gZnJvbSBcIi4uL3V0aWxpdGllcy9hcnJheVwiO1xuXG5jb25zdCB7IGZsb3JlbmNlTGV4ZXJGcm9tQ29tYmluZWRDdXN0b21HcmFtbWFyIH0gPSBsZXhlcnNVdGlsaXRpZXMsXG4gICAgICB7IGZsb3JlbmNlUGFyc2VyRnJvbUNvbWJpbmVkQ3VzdG9tR3JhbW1hciB9ID0gcGFyc2Vyc1V0aWxpdGllcztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgUmVsZWFzZUNvbnRleHQge1xuICBjb25zdHJ1Y3Rvcihsb2csIHJlbGVhc2UsIHZlcmlmaWVkLCBmaWxlQ29udGV4dHMsIGZsb3JlbmNlTGV4ZXIsIGZsb3JlbmNlUGFyc2VyLCByZWxlYXNlQ29udGV4dHMpIHtcbiAgICB0aGlzLmxvZyA9IGxvZztcbiAgICB0aGlzLnJlbGVhc2UgPSByZWxlYXNlO1xuICAgIHRoaXMudmVyaWZpZWQgPSB2ZXJpZmllZDtcbiAgICB0aGlzLmZpbGVDb250ZXh0cyA9IGZpbGVDb250ZXh0cztcbiAgICB0aGlzLmZsb3JlbmNlTGV4ZXIgPSBmbG9yZW5jZUxleGVyO1xuICAgIHRoaXMuZmxvcmVuY2VQYXJzZXIgPSBmbG9yZW5jZVBhcnNlcjtcbiAgICB0aGlzLnJlbGVhc2VDb250ZXh0cyA9IHJlbGVhc2VDb250ZXh0cztcbiAgfVxuXG4gIGdldExvZygpIHtcbiAgICByZXR1cm4gdGhpcy5sb2c7XG4gIH1cblxuICBnZXRSZWxlYXNlKCkge1xuICAgIHJldHVybiB0aGlzLnJlbGVhc2U7XG4gIH1cblxuICBpc1ZlcmlmaWVkKCkge1xuICAgIHJldHVybiB0aGlzLnZlcmlmaWVkO1xuICB9XG5cbiAgZ2V0RmlsZUNvbnRleHRzKCkge1xuICAgIHJldHVybiB0aGlzLmZpbGVDb250ZXh0cztcbiAgfVxuXG4gIGdldEZsb3JlbmNlTGV4ZXIoKSB7XG4gICAgcmV0dXJuIHRoaXMuZmxvcmVuY2VMZXhlcjtcbiAgfVxuXG4gIGdldEZsb3JlbmNlUGFyc2VyKCkge1xuICAgIHJldHVybiB0aGlzLmZsb3JlbmNlUGFyc2VyO1xuICB9XG5cbiAgZ2V0UmVsZWFzZUNvbnRleHRzKCkge1xuICAgIHJldHVybiB0aGlzLnJlbGVhc2VDb250ZXh0cztcbiAgfVxuXG4gIGdldFJlbGVhc2VOYW1lKCkge1xuICAgIGNvbnN0IHJlbGVhc2VOYW1lID0gdGhpcy5yZWxlYXNlLmdldE5hbWUoKTtcblxuICAgIHJldHVybiByZWxlYXNlTmFtZTtcbiAgfVxuXG4gIGdldFZlcnNpb24oKSB7IHJldHVybiB0aGlzLnJlbGVhc2UuZ2V0VmVyc2lvbigpOyB9XG5cbiAgZ2V0RmlsZVBhdGhzKCkgeyByZXR1cm4gdGhpcy5yZWxlYXNlLmdldEZpbGVQYXRucygpOyB9XG5cbiAgZ2V0RmlsZUNvbnRlbnQoZmlsZVBhdGgpIHsgcmV0dXJuIHRoaXMucmVsZWFzZS5nZXRGaWxlQ29udGVudChmaWxlUGF0aCk7IH1cblxuICBnZXREZXBlbmRlbmNpZXMoKSB7IHJldHVybiB0aGlzLnJlbGVhc2UuZ2V0RGVwZW5kZW5jaWVzKCk7IH1cblxuICBnZXRSdWxlcyhyZWxlYXNlTmFtZXMgPSBbXSkge1xuICAgIGNvbnN0IHJ1bGVzID0gW10sXG4gICAgICAgICAgcmVsZWFzZU5hbWUgPSB0aGlzLmdldFJlbGVhc2VOYW1lKCksXG4gICAgICAgICAgcmVsZWFzZU5hbWVzSW5jbHVkZXNSZWxlYXNlTmFtZSA9IHJlbGVhc2VOYW1lcy5pbmNsdWRlcyhyZWxlYXNlTmFtZSk7XG5cbiAgICBpZiAoIXJlbGVhc2VOYW1lc0luY2x1ZGVzUmVsZWFzZU5hbWUpIHtcbiAgICAgIHJlbGVhc2VOYW1lcy5wdXNoKHJlbGVhc2VOYW1lKTtcblxuICAgICAgY29uc3QgYnViYmxlID0gZmFsc2U7XG5cbiAgICAgIHRoaXMuZmlsZUNvbnRleHRzLmZvckVhY2goKGZpbGVDb250ZXh0KSA9PiB7XG4gICAgICAgIGNvbnN0IGZpbGVDb250ZXh0UnVsZXMgPSBmaWxlQ29udGV4dC5nZXRSdWxlcyhidWJibGUpO1xuXG4gICAgICAgIHB1c2gocnVsZXMsIGZpbGVDb250ZXh0UnVsZXMpO1xuICAgICAgfSk7XG5cbiAgICAgIHRoaXMucmVsZWFzZUNvbnRleHRzLmZvckVhY2goKHJlbGVhc2VDb250ZXh0KSA9PiB7XG4gICAgICAgIGNvbnN0IHJlbGVhc2VDb250ZXh0UnVsZXMgPSByZWxlYXNlQ29udGV4dC5nZXRSdWxlcyhyZWxlYXNlTmFtZXMpO1xuXG4gICAgICAgIHB1c2gocnVsZXMsIHJlbGVhc2VDb250ZXh0UnVsZXMpO1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHJ1bGVzO1xuICB9XG5cbiAgZ2V0VHlwZXMocmVsZWFzZU5hbWVzID0gW10pIHtcbiAgICBjb25zdCB0eXBlcyA9IFtdLFxuICAgICAgICAgIHJlbGVhc2VOYW1lID0gdGhpcy5nZXRSZWxlYWVzTmFtZSgpLFxuICAgICAgICAgIHJlbGVhc2VOYW1lc0luY2x1ZGVzUmVsZWFzZU5hbWUgPSByZWxlYXNlTmFtZXMuaW5jbHVkZXMocmVsZWFzZU5hbWUpO1xuXG4gICAgaWYgKCFyZWxlYXNlTmFtZXNJbmNsdWRlc1JlbGVhc2VOYW1lKSB7XG4gICAgICByZWxlYXNlTmFtZXMucHVzaChyZWxlYXNlTmFtZSk7XG5cbiAgICAgIGNvbnN0IGJ1YmJsZSA9IGZhbHNlO1xuXG4gICAgICB0aGlzLmZpbGVDb250ZXh0cy5mb3JFYWNoKChmaWxlQ29udGV4dCkgPT4ge1xuICAgICAgICBjb25zdCBmaWxlQ29udGV4dFR5cGVzID0gZmlsZUNvbnRleHQuZ2V0VHlwZXMoYnViYmxlKTtcblxuICAgICAgICBwdXNoKHR5cGVzLCBmaWxlQ29udGV4dFR5cGVzKTtcbiAgICAgIH0pO1xuXG4gICAgICB0aGlzLnJlbGVhc2VDb250ZXh0cy5mb3JFYWNoKChyZWxlYXNlQ29udGV4dCkgPT4ge1xuICAgICAgICBjb25zdCByZWxlYXNlQ29udGV4dFR5cGVzID0gcmVsZWFzZUNvbnRleHQuZ2V0VHlwZXMocmVsZWFzZU5hbWVzKTtcblxuICAgICAgICBwdXNoKHR5cGVzLCByZWxlYXNlQ29udGV4dFR5cGVzKTtcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIHJldHVybiB0eXBlcztcbiAgfVxuXG4gIGdldEF4aW9tcyhyZWxlYXNlTmFtZXMgPSBbXSkge1xuICAgIGNvbnN0IGF4aW9tcyA9IFtdLFxuICAgICAgICAgIHJlbGVhc2VOYW1lID0gdGhpcy5nZXRSZWxlYXNlTmFtZSgpLFxuICAgICAgICAgIHJlbGVhc2VOYW1lc0luY2x1ZGVzUmVsZWFzZU5hbWUgPSByZWxlYXNlTmFtZXMuaW5jbHVkZXMocmVsZWFzZU5hbWUpO1xuXG4gICAgaWYgKCFyZWxlYXNlTmFtZXNJbmNsdWRlc1JlbGVhc2VOYW1lKSB7XG4gICAgICByZWxlYXNlTmFtZXMucHVzaChyZWxlYXNlTmFtZSk7XG5cbiAgICAgIGNvbnN0IGJ1YmJsZSA9IGZhbHNlO1xuXG4gICAgICB0aGlzLmZpbGVDb250ZXh0cy5mb3JFYWNoKChmaWxlQ29udGV4dCkgPT4ge1xuICAgICAgICBjb25zdCBmaWxlQ29udGV4dEF4aW9tcyA9IGZpbGVDb250ZXh0LmdldEF4aW9tcyhidWJibGUpO1xuXG4gICAgICAgIHB1c2goYXhpb21zLCBmaWxlQ29udGV4dEF4aW9tcyk7XG4gICAgICB9KTtcblxuICAgICAgdGhpcy5yZWxlYXNlQ29udGV4dHMuZm9yRWFjaCgocmVsZWFzZUNvbnRleHQpID0+IHtcbiAgICAgICAgY29uc3QgcmVsZWFzZUNvbnRleHRBeGlvbXMgPSByZWxlYXNlQ29udGV4dC5nZXRBeGlvbXMocmVsZWFzZU5hbWVzKTtcblxuICAgICAgICBwdXNoKGF4aW9tcywgcmVsZWFzZUNvbnRleHRBeGlvbXMpO1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGF4aW9tcztcbiAgfVxuXG4gIGdldENvbWJpbmF0b3JzKHJlbGVhc2VOYW1lcyA9IFtdKSB7XG4gICAgY29uc3QgY29tYmluYXRvcnMgPSBbXSxcbiAgICAgICAgICByZWxlYXNlTmFtZSA9IHRoaXMuZ2V0UmVsZWFzZU5hbWUoKSxcbiAgICAgICAgICByZWxlYXNlTmFtZXNJbmNsdWRlc1JlbGVhc2VOYW1lID0gcmVsZWFzZU5hbWVzLmluY2x1ZGVzKHJlbGVhc2VOYW1lKTtcblxuICAgIGlmICghcmVsZWFzZU5hbWVzSW5jbHVkZXNSZWxlYXNlTmFtZSkge1xuICAgICAgcmVsZWFzZU5hbWVzLnB1c2gocmVsZWFzZU5hbWUpO1xuXG4gICAgICBjb25zdCBidWJibGUgPSBmYWxzZTtcblxuICAgICAgdGhpcy5maWxlQ29udGV4dHMuZm9yRWFjaCgoZmlsZUNvbnRleHQpID0+IHtcbiAgICAgICAgY29uc3QgZmlsZUNvbnRleHRDb21iaW5hdG9ycyA9IGZpbGVDb250ZXh0LmdldENvbWJpbmF0b3JzKGJ1YmJsZSk7XG5cbiAgICAgICAgcHVzaChjb21iaW5hdG9ycywgZmlsZUNvbnRleHRDb21iaW5hdG9ycyk7XG4gICAgICB9KTtcblxuICAgICAgdGhpcy5yZWxlYXNlQ29udGV4dHMuZm9yRWFjaCgocmVsZWFzZUNvbnRleHQpID0+IHtcbiAgICAgICAgY29uc3QgcmVsZWFzZUNvbnRleHRDb21iaW5hdG9ycyA9IHJlbGVhc2VDb250ZXh0LmdldENvbWJpbmF0b3JzKHJlbGVhc2VOYW1lcyk7XG5cbiAgICAgICAgcHVzaChjb21iaW5hdG9ycywgcmVsZWFzZUNvbnRleHRDb21iaW5hdG9ycyk7XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICByZXR1cm4gY29tYmluYXRvcnM7XG4gIH1cblxuICBnZXRDb25zdHJ1Y3RvcnMocmVsZWFzZU5hbWVzID0gW10pIHtcbiAgICBjb25zdCByZWxlYXNlTmFtZSA9IHRoaXMuZ2V0UmVsZWFzZU5hbWUoKSxcbiAgICAgICAgICBjb25zdHJ1Y3RvcnMgPSBbXSxcbiAgICAgICAgICByZWxlYXNlTmFtZXNJbmNsdWRlc1JlbGVhc2VOYW1lID0gcmVsZWFzZU5hbWVzLmluY2x1ZGVzKHJlbGVhc2VOYW1lKTtcblxuICAgIGlmICghcmVsZWFzZU5hbWVzSW5jbHVkZXNSZWxlYXNlTmFtZSkge1xuICAgICAgcmVsZWFzZU5hbWVzLnB1c2gocmVsZWFzZU5hbWUpO1xuXG4gICAgICBjb25zdCBidWJibGUgPSBmYWxzZTtcblxuICAgICAgdGhpcy5maWxlQ29udGV4dHMuZm9yRWFjaCgoZmlsZUNvbnRleHQpID0+IHtcbiAgICAgICAgY29uc3QgZmlsZUNvbnRleHRDb25zdHJ1Y3RvcnMgPSBmaWxlQ29udGV4dC5nZXRDb25zdHJ1Y3RvcnMoYnViYmxlKTtcblxuICAgICAgICBwdXNoKGNvbnN0cnVjdG9ycywgZmlsZUNvbnRleHRDb25zdHJ1Y3RvcnMpO1xuICAgICAgfSk7XG5cbiAgICAgIHRoaXMucmVsZWFzZUNvbnRleHRzLmZvckVhY2goKHJlbGVhc2VDb250ZXh0KSA9PiB7XG4gICAgICAgIGNvbnN0IHJlbGVhc2VDb250ZXh0Q29uc3RydWN0b3JzID0gcmVsZWFzZUNvbnRleHQuZ2V0Q29uc3RydWN0b3JzKHJlbGVhc2VOYW1lcyk7XG5cbiAgICAgICAgcHVzaChjb25zdHJ1Y3RvcnMsIHJlbGVhc2VDb250ZXh0Q29uc3RydWN0b3JzKTtcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIHJldHVybiBjb25zdHJ1Y3RvcnM7XG4gIH1cblxuICBnZXRDdXN0b21HcmFtbWFyKCkge1xuICAgIGNvbnN0IHJlbGVhc2VOYW1lID0gdGhpcy5nZXRSZWxlYXNlTmFtZSgpLFxuICAgICAgICAgIG5hbWUgPSByZWxlYXNlTmFtZSwgLy8vXG4gICAgICAgICAgdGVybUJORiA9IHRoaXMucmVsZWFzZS5nZXRUZXJtQk5GKCksXG4gICAgICAgICAgc3RhdGVtZW50Qk5GID0gdGhpcy5yZWxlYXNlLmdldFN0YXRlbWVudEJORigpLFxuICAgICAgICAgIG1ldGFzdGF0ZW1lbnRCTkYgPSB0aGlzLnJlbGVhc2UuZ2V0TWV0YXN0YXRlbWVudEJORigpLFxuICAgICAgICAgIHR5cGVQYXR0ZXJuID0gdGhpcy5yZWxlYXNlLmdldFR5cGVQYXR0ZXJuKCksXG4gICAgICAgICAgc3ltYm9sUGF0dGVybiA9IHRoaXMucmVsZWFzZS5nZXRTeW1ib2xQYXR0ZXJuKCksXG4gICAgICAgICAgb3BlcmF0b3JQYXR0ZXJuID0gdGhpcy5yZWxlYXNlLmdldE9wZXJhdG9yUGF0dGVybigpLFxuICAgICAgICAgIGN1c3RvbUdyYW1tYXIgPSBDdXN0b21HcmFtbWFyLmZyb21OYW1lVGVybUJORlN0YXRlbWVudEJORk1ldGFzdGF0ZW1lbnRCTkZUeXBlUGF0dGVyblN5bWJvbFBhdHRlcm5BbmRPcGVyYXRvclBhdHRlcm4obmFtZSwgdGVybUJORiwgc3RhdGVtZW50Qk5GLCBtZXRhc3RhdGVtZW50Qk5GLCB0eXBlUGF0dGVybiwgc3ltYm9sUGF0dGVybiwgb3BlcmF0b3JQYXR0ZXJuKTtcblxuICAgIHJldHVybiBjdXN0b21HcmFtbWFyO1xuICB9XG5cbiAgYWRkRmlsZUNvbnRleHQoZmlsZUNvbnRleHQpIHtcbiAgICB0aGlzLmZpbGVDb250ZXh0cy5wdXNoKGZpbGVDb250ZXh0KTtcbiAgfVxuXG4gIHRva2VuaXNlKGNvbnRlbnQpIHsgcmV0dXJuIHRoaXMuZmxvcmVuY2VMZXhlci50b2tlbmlzZShjb250ZW50KTsgfVxuXG4gIHBhcnNlKHRva2VucykgeyByZXR1cm4gdGhpcy5mbG9yZW5jZVBhcnNlci5wYXJzZSh0b2tlbnMpOyB9XG5cbiAgdHJhY2UobWVzc2FnZSkgeyB0aGlzLmxvZy50cmFjZShtZXNzYWdlKTsgfVxuXG4gIGRlYnVnKG1lc3NhZ2UpIHsgdGhpcy5sb2cuZGVidWcobWVzc2FnZSk7IH1cblxuICBpbmZvKG1lc3NhZ2UpIHsgdGhpcy5sb2cuaW5mbyhtZXNzYWdlKTsgfVxuXG4gIHdhcm5pbmcobWVzc2FnZSkgeyB0aGlzLmxvZy53YXJuaW5nKG1lc3NhZ2UpOyB9XG5cbiAgZXJyb3IobWVzc2FnZSkgeyB0aGlzLmxvZy5lcnJvcihtZXNzYWdlKTsgfVxuXG4gIGZhdGFsKG1lc3NhZ2UpIHsgdGhpcy5sb2cuZmF0YWwobWVzc2FnZSk7IH1cblxuICBpbml0aWFsaXNlKHJlbGVhc2VDb250ZXh0cywgZGVwZW5kZW5jeVJlbGVhc2VDb250ZXh0cykge1xuICAgIHRoaXMucmVsZWFzZUNvbnRleHRzID0gcmVsZWFzZUNvbnRleHRzO1xuXG4gICAgY29uc3QgcmVsZWFzZUNvbnRleHQgPSB0aGlzOyAgLy8vXG5cbiAgICByZWxlYXNlQ29udGV4dHMgPSBbIHJlbGVhc2VDb250ZXh0LCAuLi5kZXBlbmRlbmN5UmVsZWFzZUNvbnRleHRzIF07IC8vL1xuXG4gICAgY29uc3QgY3VzdG9tR3JhbW1hcnMgPSByZWxlYXNlQ29udGV4dHMubWFwKChyZWxlYXNlQ29udGV4dCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgY3VzdG9tR3JhbW1hciA9IHJlbGVhc2VDb250ZXh0LmdldEN1c3RvbUdyYW1tYXIoKTtcblxuICAgICAgICAgICAgcmV0dXJuIGN1c3RvbUdyYW1tYXI7XG4gICAgICAgICAgfSksXG4gICAgICAgICAgY29tYmluZWRDdXN0b21HcmFtbWFyID0gQ29tYmluZWRDdXN0b21HcmFtbWFyLmZyb21DdXN0b21HcmFtbWFycyhjdXN0b21HcmFtbWFycyk7XG5cbiAgICB0aGlzLmZsb3JlbmNlTGV4ZXIgPSBmbG9yZW5jZUxleGVyRnJvbUNvbWJpbmVkQ3VzdG9tR3JhbW1hcihjb21iaW5lZEN1c3RvbUdyYW1tYXIpO1xuXG4gICAgdGhpcy5mbG9yZW5jZVBhcnNlciA9IGZsb3JlbmNlUGFyc2VyRnJvbUNvbWJpbmVkQ3VzdG9tR3JhbW1hcihjb21iaW5lZEN1c3RvbUdyYW1tYXIpO1xuICB9XG5cbiAgc3RhdGljIGZyb21Mb2dBbmRSZWxlYXNlKGxvZywgcmVsZWFzZSwgLi4ucmVtYWluaW5nQXJndW1lbnRzKSB7XG4gICAgY29uc3QgdmVyaWZpZWQgPSBmYWxzZSxcbiAgICAgICAgICBmaWxlQ29udGV4dHMgPSBbXSxcbiAgICAgICAgICBmbG9yZW5jZUxleGVyID0gbnVsbCxcbiAgICAgICAgICBmbG9yZW5jZVBhcnNlciA9IG51bGwsXG4gICAgICAgICAgcmVsZWFzZUNvbnRleHRzID0gW10sXG4gICAgICAgICAgcmVsZWFzZUNvbnRleHQgPSBuZXcgUmVsZWFzZUNvbnRleHQobG9nLCByZWxlYXNlLCB2ZXJpZmllZCwgZmlsZUNvbnRleHRzLCBmbG9yZW5jZUxleGVyLCBmbG9yZW5jZVBhcnNlciwgcmVsZWFzZUNvbnRleHRzLCAuLi5yZW1haW5pbmdBcmd1bWVudHMpO1xuXG4gICAgcmV0dXJuIHJlbGVhc2VDb250ZXh0O1xuICB9XG59XG4iLCJSZWFjdC5jcmVhdGVFbGVtZW50Il0sIm5hbWVzIjpbIlJlbGVhc2VDb250ZXh0IiwiZmxvcmVuY2VMZXhlckZyb21Db21iaW5lZEN1c3RvbUdyYW1tYXIiLCJsZXhlcnNVdGlsaXRpZXMiLCJmbG9yZW5jZVBhcnNlckZyb21Db21iaW5lZEN1c3RvbUdyYW1tYXIiLCJwYXJzZXJzVXRpbGl0aWVzIiwibG9nIiwicmVsZWFzZSIsInZlcmlmaWVkIiwiZmlsZUNvbnRleHRzIiwiZmxvcmVuY2VMZXhlciIsImZsb3JlbmNlUGFyc2VyIiwicmVsZWFzZUNvbnRleHRzIiwiZ2V0TG9nIiwiZ2V0UmVsZWFzZSIsImlzVmVyaWZpZWQiLCJnZXRGaWxlQ29udGV4dHMiLCJnZXRGbG9yZW5jZUxleGVyIiwiZ2V0RmxvcmVuY2VQYXJzZXIiLCJnZXRSZWxlYXNlQ29udGV4dHMiLCJnZXRSZWxlYXNlTmFtZSIsInJlbGVhc2VOYW1lIiwiZ2V0TmFtZSIsImdldFZlcnNpb24iLCJnZXRGaWxlUGF0aHMiLCJnZXRGaWxlUGF0bnMiLCJnZXRGaWxlQ29udGVudCIsImZpbGVQYXRoIiwiZ2V0RGVwZW5kZW5jaWVzIiwiZ2V0UnVsZXMiLCJyZWxlYXNlTmFtZXMiLCJydWxlcyIsInJlbGVhc2VOYW1lc0luY2x1ZGVzUmVsZWFzZU5hbWUiLCJpbmNsdWRlcyIsInB1c2giLCJidWJibGUiLCJmb3JFYWNoIiwiZmlsZUNvbnRleHQiLCJmaWxlQ29udGV4dFJ1bGVzIiwicmVsZWFzZUNvbnRleHQiLCJyZWxlYXNlQ29udGV4dFJ1bGVzIiwiZ2V0VHlwZXMiLCJ0eXBlcyIsImdldFJlbGVhZXNOYW1lIiwiZmlsZUNvbnRleHRUeXBlcyIsInJlbGVhc2VDb250ZXh0VHlwZXMiLCJnZXRBeGlvbXMiLCJheGlvbXMiLCJmaWxlQ29udGV4dEF4aW9tcyIsInJlbGVhc2VDb250ZXh0QXhpb21zIiwiZ2V0Q29tYmluYXRvcnMiLCJjb21iaW5hdG9ycyIsImZpbGVDb250ZXh0Q29tYmluYXRvcnMiLCJyZWxlYXNlQ29udGV4dENvbWJpbmF0b3JzIiwiZ2V0Q29uc3RydWN0b3JzIiwiY29uc3RydWN0b3JzIiwiZmlsZUNvbnRleHRDb25zdHJ1Y3RvcnMiLCJyZWxlYXNlQ29udGV4dENvbnN0cnVjdG9ycyIsImdldEN1c3RvbUdyYW1tYXIiLCJuYW1lIiwidGVybUJORiIsImdldFRlcm1CTkYiLCJzdGF0ZW1lbnRCTkYiLCJnZXRTdGF0ZW1lbnRCTkYiLCJtZXRhc3RhdGVtZW50Qk5GIiwiZ2V0TWV0YXN0YXRlbWVudEJORiIsInR5cGVQYXR0ZXJuIiwiZ2V0VHlwZVBhdHRlcm4iLCJzeW1ib2xQYXR0ZXJuIiwiZ2V0U3ltYm9sUGF0dGVybiIsIm9wZXJhdG9yUGF0dGVybiIsImdldE9wZXJhdG9yUGF0dGVybiIsImN1c3RvbUdyYW1tYXIiLCJDdXN0b21HcmFtbWFyIiwiZnJvbU5hbWVUZXJtQk5GU3RhdGVtZW50Qk5GTWV0YXN0YXRlbWVudEJORlR5cGVQYXR0ZXJuU3ltYm9sUGF0dGVybkFuZE9wZXJhdG9yUGF0dGVybiIsImFkZEZpbGVDb250ZXh0IiwidG9rZW5pc2UiLCJjb250ZW50IiwicGFyc2UiLCJ0b2tlbnMiLCJ0cmFjZSIsIm1lc3NhZ2UiLCJkZWJ1ZyIsImluZm8iLCJ3YXJuaW5nIiwiZXJyb3IiLCJmYXRhbCIsImluaXRpYWxpc2UiLCJkZXBlbmRlbmN5UmVsZWFzZUNvbnRleHRzIiwiY3VzdG9tR3JhbW1hcnMiLCJtYXAiLCJjb21iaW5lZEN1c3RvbUdyYW1tYXIiLCJDb21iaW5lZEN1c3RvbUdyYW1tYXIiLCJmcm9tQ3VzdG9tR3JhbW1hcnMiLCJmcm9tTG9nQW5kUmVsZWFzZSIsInJlbWFpbmluZ0FyZ3VtZW50cyJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7ZUFTcUJBOzs7bUNBUG1FO3FCQUVuRTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFFckIsSUFBTSxBQUFFQyx5Q0FBMkNDLG9DQUFlLENBQTFERCx3Q0FDRixBQUFFRSwwQ0FBNENDLHFDQUFnQixDQUE1REQ7QUFFTyxJQUFBLEFBQU1ILCtCQUFOO2FBQU1BLGVBQ1BLLEdBQUcsRUFBRUMsT0FBTyxFQUFFQyxRQUFRLEVBQUVDLFlBQVksRUFBRUMsYUFBYSxFQUFFQyxjQUFjLEVBQUVDLGVBQWU7OEJBRDdFWDtRQUVqQixJQUFJLENBQUNLLEdBQUcsR0FBR0E7UUFDWCxJQUFJLENBQUNDLE9BQU8sR0FBR0E7UUFDZixJQUFJLENBQUNDLFFBQVEsR0FBR0E7UUFDaEIsSUFBSSxDQUFDQyxZQUFZLEdBQUdBO1FBQ3BCLElBQUksQ0FBQ0MsYUFBYSxHQUFHQTtRQUNyQixJQUFJLENBQUNDLGNBQWMsR0FBR0E7UUFDdEIsSUFBSSxDQUFDQyxlQUFlLEdBQUdBOztpQkFSTlg7O1lBV25CWSxLQUFBQTttQkFBQUEsU0FBQUEsU0FBUztnQkFDUCxPQUFPLElBQUksQ0FBQ1AsR0FBRztZQUNqQjs7O1lBRUFRLEtBQUFBO21CQUFBQSxTQUFBQSxhQUFhO2dCQUNYLE9BQU8sSUFBSSxDQUFDUCxPQUFPO1lBQ3JCOzs7WUFFQVEsS0FBQUE7bUJBQUFB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
348
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb250ZXh0L3JlbGVhc2UuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmltcG9ydCB7IGxleGVyc1V0aWxpdGllcywgcGFyc2Vyc1V0aWxpdGllcyB9IGZyb20gXCJvY2NhbS1jdXN0b20tZ3JhbW1hcnNcIjtcblxuaW1wb3J0IGxvZ01peGlucyBmcm9tIFwiLi4vbWl4aW5zL2xvZ1wiO1xuXG5pbXBvcnQgeyBwdXNoIH0gZnJvbSBcIi4uL3V0aWxpdGllcy9hcnJheVwiO1xuaW1wb3J0IHsgY3VzdG9tR3JhbW1hckZyb21SZWxlYXNlLCBjb21iaW5lZEN1c3RvbUdyYW1tYXJGcm9tUmVsZWFzZUNvbnRleHRzIH0gZnJvbSBcIi4uL3V0aWxpdGllcy9jdXN0b21HcmFtbWFyXCI7XG5cbmNvbnN0IHsgZmxvcmVuY2VMZXhlckZyb21Db21iaW5lZEN1c3RvbUdyYW1tYXIgfSA9IGxleGVyc1V0aWxpdGllcyxcbiAgICAgIHsgZmxvcmVuY2VQYXJzZXJGcm9tQ29tYmluZWRDdXN0b21HcmFtbWFyIH0gPSBwYXJzZXJzVXRpbGl0aWVzO1xuXG5jbGFzcyBSZWxlYXNlQ29udGV4dCB7XG4gIGNvbnN0cnVjdG9yKGxvZywgcmVsZWFzZSwgdmVyaWZpZWQsIGN1c3RvbUdyYW1tYXIsIGZpbGVDb250ZXh0cywgZmxvcmVuY2VMZXhlciwgZmxvcmVuY2VQYXJzZXIsIHJlbGVhc2VDb250ZXh0cykge1xuICAgIHRoaXMubG9nID0gbG9nO1xuICAgIHRoaXMucmVsZWFzZSA9IHJlbGVhc2U7XG4gICAgdGhpcy52ZXJpZmllZCA9IHZlcmlmaWVkO1xuICAgIHRoaXMuY3VzdG9tR3JhbW1hciA9IGN1c3RvbUdyYW1tYXI7XG5cbiAgICB0aGlzLmZpbGVDb250ZXh0cyA9IGZpbGVDb250ZXh0cztcbiAgICB0aGlzLmZsb3JlbmNlTGV4ZXIgPSBmbG9yZW5jZUxleGVyO1xuICAgIHRoaXMuZmxvcmVuY2VQYXJzZXIgPSBmbG9yZW5jZVBhcnNlcjtcbiAgICB0aGlzLnJlbGVhc2VDb250ZXh0cyA9IHJlbGVhc2VDb250ZXh0cztcbiAgfVxuXG4gIGdldExvZygpIHtcbiAgICByZXR1cm4gdGhpcy5sb2c7XG4gIH1cblxuICBnZXRSZWxlYXNlKCkge1xuICAgIHJldHVybiB0aGlzLnJlbGVhc2U7XG4gIH1cblxuICBpc1ZlcmlmaWVkKCkge1xuICAgIHJldHVybiB0aGlzLnZlcmlmaWVkO1xuICB9XG5cbiAgZ2V0Q3VzdG9tR3JhbW1hcigpIHtcbiAgICByZXR1cm4gdGhpcy5jdXN0b21HcmFtbWFyO1xuICB9XG5cbiAgZ2V0RmlsZUNvbnRleHRzKCkge1xuICAgIHJldHVybiB0aGlzLmZpbGVDb250ZXh0cztcbiAgfVxuXG4gIGdldEZsb3JlbmNlTGV4ZXIoKSB7XG4gICAgcmV0dXJuIHRoaXMuZmxvcmVuY2VMZXhlcjtcbiAgfVxuXG4gIGdldEZsb3JlbmNlUGFyc2VyKCkge1xuICAgIHJldHVybiB0aGlzLmZsb3JlbmNlUGFyc2VyO1xuICB9XG5cbiAgZ2V0UmVsZWFzZUNvbnRleHRzKCkge1xuICAgIHJldHVybiB0aGlzLnJlbGVhc2VDb250ZXh0cztcbiAgfVxuXG4gIGdldEZpbGUoZmlsZVBhdGgpIHsgcmV0dXJuIHRoaXMucmVsZWFzZS5nZXRGaWxlKGZpbGVQYXRoKTsgfVxuXG4gIGdldE5hbWUoKSB7IHJldHVybiB0aGlzLnJlbGVhc2UuZ2V0TmFtZSgpOyB9XG5cbiAgZ2V0VmVyc2lvbigpIHsgcmV0dXJuIHRoaXMucmVsZWFzZS5nZXRWZXJzaW9uKCk7IH1cblxuICBnZXRGaWxlUGF0aHMoKSB7IHJldHVybiB0aGlzLnJlbGVhc2UuZ2V0RmlsZVBhdGhzKCk7IH1cblxuICBnZXREZXBlbmRlbmNpZXMoKSB7IHJldHVybiB0aGlzLnJlbGVhc2UuZ2V0RGVwZW5kZW5jaWVzKCk7IH1cblxuICBnZXRSdWxlcyhyZWxlYXNlTmFtZXMgPSBbXSkge1xuICAgIGNvbnN0IG5hbWUgPSB0aGlzLmdldE5hbWUoKSxcbiAgICAgICAgICBydWxlcyA9IFtdLFxuICAgICAgICAgIHJlbGVhc2VOYW1lID0gbmFtZSwgLy8vXG4gICAgICAgICAgcmVsZWFzZU5hbWVzSW5jbHVkZXNSZWxlYXNlTmFtZSA9IHJlbGVhc2VOYW1lcy5pbmNsdWRlcyhyZWxlYXNlTmFtZSk7XG5cbiAgICBpZiAoIXJlbGVhc2VOYW1lc0luY2x1ZGVzUmVsZWFzZU5hbWUpIHtcbiAgICAgIHJlbGVhc2VOYW1lcy5wdXNoKHJlbGVhc2VOYW1lKTtcblxuICAgICAgY29uc3QgYnViYmxlID0gZmFsc2U7XG5cbiAgICAgIHRoaXMuZmlsZUNvbnRleHRzLmZvckVhY2goKGZpbGVDb250ZXh0KSA9PiB7XG4gICAgICAgIGNvbnN0IGZpbGVDb250ZXh0UnVsZXMgPSBmaWxlQ29udGV4dC5nZXRSdWxlcyhidWJibGUpO1xuXG4gICAgICAgIHB1c2gocnVsZXMsIGZpbGVDb250ZXh0UnVsZXMpO1xuICAgICAgfSk7XG5cbiAgICAgIHRoaXMucmVsZWFzZUNvbnRleHRzLmZvckVhY2goKHJlbGVhc2VDb250ZXh0KSA9PiB7XG4gICAgICAgIGNvbnN0IHJlbGVhc2VDb250ZXh0UnVsZXMgPSByZWxlYXNlQ29udGV4dC5nZXRSdWxlcyhyZWxlYXNlTmFtZXMpO1xuXG4gICAgICAgIHB1c2gocnVsZXMsIHJlbGVhc2VDb250ZXh0UnVsZXMpO1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHJ1bGVzO1xuICB9XG5cbiAgZ2V0VHlwZXMocmVsZWFzZU5hbWVzID0gW10pIHtcbiAgICBjb25zdCBuYW1lID0gdGhpcy5nZXROYW1lKCksXG4gICAgICAgICAgdHlwZXMgPSBbXSxcbiAgICAgICAgICByZWxlYXNlTmFtZSA9IG5hbWUsIC8vL1xuICAgICAgICAgIHJlbGVhc2VOYW1lc0luY2x1ZGVzUmVsZWFzZU5hbWUgPSByZWxlYXNlTmFtZXMuaW5jbHVkZXMocmVsZWFzZU5hbWUpO1xuXG4gICAgaWYgKCFyZWxlYXNlTmFtZXNJbmNsdWRlc1JlbGVhc2VOYW1lKSB7XG4gICAgICByZWxlYXNlTmFtZXMucHVzaChyZWxlYXNlTmFtZSk7XG5cbiAgICAgIGNvbnN0IGJ1YmJsZSA9IGZhbHNlO1xuXG4gICAgICB0aGlzLmZpbGVDb250ZXh0cy5mb3JFYWNoKChmaWxlQ29udGV4dCkgPT4ge1xuICAgICAgICBjb25zdCBmaWxlQ29udGV4dFR5cGVzID0gZmlsZUNvbnRleHQuZ2V0VHlwZXMoYnViYmxlKTtcblxuICAgICAgICBwdXNoKHR5cGVzLCBmaWxlQ29udGV4dFR5cGVzKTtcbiAgICAgIH0pO1xuXG4gICAgICB0aGlzLnJlbGVhc2VDb250ZXh0cy5mb3JFYWNoKChyZWxlYXNlQ29udGV4dCkgPT4ge1xuICAgICAgICBjb25zdCByZWxlYXNlQ29udGV4dFR5cGVzID0gcmVsZWFzZUNvbnRleHQuZ2V0VHlwZXMocmVsZWFzZU5hbWVzKTtcblxuICAgICAgICBwdXNoKHR5cGVzLCByZWxlYXNlQ29udGV4dFR5cGVzKTtcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIHJldHVybiB0eXBlcztcbiAgfVxuXG4gIGdldEF4aW9tcyhyZWxlYXNlTmFtZXMgPSBbXSkge1xuICAgIGNvbnN0IG5hbWUgPSB0aGlzLmdldE5hbWUoKSxcbiAgICAgICAgICBheGlvbXMgPSBbXSxcbiAgICAgICAgICByZWxlYXNlTmFtZSA9IG5hbWUsIC8vL1xuICAgICAgICAgIHJlbGVhc2VOYW1lc0luY2x1ZGVzUmVsZWFzZU5hbWUgPSByZWxlYXNlTmFtZXMuaW5jbHVkZXMocmVsZWFzZU5hbWUpO1xuXG4gICAgaWYgKCFyZWxlYXNlTmFtZXNJbmNsdWRlc1JlbGVhc2VOYW1lKSB7XG4gICAgICByZWxlYXNlTmFtZXMucHVzaChyZWxlYXNlTmFtZSk7XG5cbiAgICAgIGNvbnN0IGJ1YmJsZSA9IGZhbHNlO1xuXG4gICAgICB0aGlzLmZpbGVDb250ZXh0cy5mb3JFYWNoKChmaWxlQ29udGV4dCkgPT4ge1xuICAgICAgICBjb25zdCBmaWxlQ29udGV4dEF4aW9tcyA9IGZpbGVDb250ZXh0LmdldEF4aW9tcyhidWJibGUpO1xuXG4gICAgICAgIHB1c2goYXhpb21zLCBmaWxlQ29udGV4dEF4aW9tcyk7XG4gICAgICB9KTtcblxuICAgICAgdGhpcy5yZWxlYXNlQ29udGV4dHMuZm9yRWFjaCgocmVsZWFzZUNvbnRleHQpID0+IHtcbiAgICAgICAgY29uc3QgcmVsZWFzZUNvbnRleHRBeGlvbXMgPSByZWxlYXNlQ29udGV4dC5nZXRBeGlvbXMocmVsZWFzZU5hbWVzKTtcblxuICAgICAgICBwdXNoKGF4aW9tcywgcmVsZWFzZUNvbnRleHRBeGlvbXMpO1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGF4aW9tcztcbiAgfVxuXG4gIGdldENvbWJpbmF0b3JzKHJlbGVhc2VOYW1lcyA9IFtdKSB7XG4gICAgY29uc3QgbmFtZSA9IHRoaXMuZ2V0TmFtZSgpLFxuICAgICAgICAgIGNvbWJpbmF0b3JzID0gW10sXG4gICAgICAgICAgcmVsZWFzZU5hbWUgPSBuYW1lLCAvLy9cbiAgICAgICAgICByZWxlYXNlTmFtZXNJbmNsdWRlc1JlbGVhc2VOYW1lID0gcmVsZWFzZU5hbWVzLmluY2x1ZGVzKHJlbGVhc2VOYW1lKTtcblxuICAgIGlmICghcmVsZWFzZU5hbWVzSW5jbHVkZXNSZWxlYXNlTmFtZSkge1xuICAgICAgcmVsZWFzZU5hbWVzLnB1c2gocmVsZWFzZU5hbWUpO1xuXG4gICAgICBjb25zdCBidWJibGUgPSBmYWxzZTtcblxuICAgICAgdGhpcy5maWxlQ29udGV4dHMuZm9yRWFjaCgoZmlsZUNvbnRleHQpID0+IHtcbiAgICAgICAgY29uc3QgZmlsZUNvbnRleHRDb21iaW5hdG9ycyA9IGZpbGVDb250ZXh0LmdldENvbWJpbmF0b3JzKGJ1YmJsZSk7XG5cbiAgICAgICAgcHVzaChjb21iaW5hdG9ycywgZmlsZUNvbnRleHRDb21iaW5hdG9ycyk7XG4gICAgICB9KTtcblxuICAgICAgdGhpcy5yZWxlYXNlQ29udGV4dHMuZm9yRWFjaCgocmVsZWFzZUNvbnRleHQpID0+IHtcbiAgICAgICAgY29uc3QgcmVsZWFzZUNvbnRleHRDb21iaW5hdG9ycyA9IHJlbGVhc2VDb250ZXh0LmdldENvbWJpbmF0b3JzKHJlbGVhc2VOYW1lcyk7XG5cbiAgICAgICAgcHVzaChjb21iaW5hdG9ycywgcmVsZWFzZUNvbnRleHRDb21iaW5hdG9ycyk7XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICByZXR1cm4gY29tYmluYXRvcnM7XG4gIH1cblxuICBnZXRDb25zdHJ1Y3RvcnMocmVsZWFzZU5hbWVzID0gW10pIHtcbiAgICBjb25zdCBuYW1lID0gdGhpcy5nZXROYW1lKCksXG4gICAgICAgICAgY29uc3RydWN0b3JzID0gW10sXG4gICAgICAgICAgcmVsZWFzZU5hbWUgPSBuYW1lLCAvLy9cbiAgICAgICAgICByZWxlYXNlTmFtZXNJbmNsdWRlc1JlbGVhc2VOYW1lID0gcmVsZWFzZU5hbWVzLmluY2x1ZGVzKHJlbGVhc2VOYW1lKTtcblxuICAgIGlmICghcmVsZWFzZU5hbWVzSW5jbHVkZXNSZWxlYXNlTmFtZSkge1xuICAgICAgcmVsZWFzZU5hbWVzLnB1c2gocmVsZWFzZU5hbWUpO1xuXG4gICAgICBjb25zdCBidWJibGUgPSBmYWxzZTtcblxuICAgICAgdGhpcy5maWxlQ29udGV4dHMuZm9yRWFjaCgoZmlsZUNvbnRleHQpID0+IHtcbiAgICAgICAgY29uc3QgZmlsZUNvbnRleHRDb25zdHJ1Y3RvcnMgPSBmaWxlQ29udGV4dC5nZXRDb25zdHJ1Y3RvcnMoYnViYmxlKTtcblxuICAgICAgICBwdXNoKGNvbnN0cnVjdG9ycywgZmlsZUNvbnRleHRDb25zdHJ1Y3RvcnMpO1xuICAgICAgfSk7XG5cbiAgICAgIHRoaXMucmVsZWFzZUNvbnRleHRzLmZvckVhY2goKHJlbGVhc2VDb250ZXh0KSA9PiB7XG4gICAgICAgIGNvbnN0IHJlbGVhc2VDb250ZXh0Q29uc3RydWN0b3JzID0gcmVsZWFzZUNvbnRleHQuZ2V0Q29uc3RydWN0b3JzKHJlbGVhc2VOYW1lcyk7XG5cbiAgICAgICAgcHVzaChjb25zdHJ1Y3RvcnMsIHJlbGVhc2VDb250ZXh0Q29uc3RydWN0b3JzKTtcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIHJldHVybiBjb25zdHJ1Y3RvcnM7XG4gIH1cblxuICBhZGRGaWxlQ29udGV4dChmaWxlQ29udGV4dCkge1xuICAgIHRoaXMuZmlsZUNvbnRleHRzLnB1c2goZmlsZUNvbnRleHQpO1xuICB9XG5cbiAgdG9rZW5pc2UoY29udGVudCkgeyByZXR1cm4gdGhpcy5mbG9yZW5jZUxleGVyLnRva2VuaXNlKGNvbnRlbnQpOyB9XG5cbiAgcGFyc2UodG9rZW5zKSB7IHJldHVybiB0aGlzLmZsb3JlbmNlUGFyc2VyLnBhcnNlKHRva2Vucyk7IH1cblxuICBpbml0aWFsaXNlKHJlbGVhc2VDb250ZXh0cywgZGVwZW5kZW5jeVJlbGVhc2VDb250ZXh0cykge1xuICAgIGNvbnN0IHJlbGVhc2VDb250ZXh0ID0gdGhpczsgIC8vL1xuXG4gICAgcmVsZWFzZUNvbnRleHRzID0gWyByZWxlYXNlQ29udGV4dCwgLi4uZGVwZW5kZW5jeVJlbGVhc2VDb250ZXh0cyBdOyAvLy9cblxuICAgIGNvbnN0IGNvbWJpbmVkQ3VzdG9tR3JhbW1hciA9IGNvbWJpbmVkQ3VzdG9tR3JhbW1hckZyb21SZWxlYXNlQ29udGV4dHMocmVsZWFzZUNvbnRleHRzKTtcblxuICAgIHRoaXMuZmxvcmVuY2VMZXhlciA9IGZsb3JlbmNlTGV4ZXJGcm9tQ29tYmluZWRDdXN0b21HcmFtbWFyKGNvbWJpbmVkQ3VzdG9tR3JhbW1hcik7XG5cbiAgICB0aGlzLmZsb3JlbmNlUGFyc2VyID0gZmxvcmVuY2VQYXJzZXJGcm9tQ29tYmluZWRDdXN0b21HcmFtbWFyKGNvbWJpbmVkQ3VzdG9tR3JhbW1hcik7XG5cbiAgICB0aGlzLnJlbGVhc2VDb250ZXh0cyA9IHJlbGVhc2VDb250ZXh0cztcbiAgfVxuXG4gIHN0YXRpYyBmcm9tTG9nQW5kUmVsZWFzZShsb2csIHJlbGVhc2UsIC4uLnJlbWFpbmluZ0FyZ3VtZW50cykge1xuICAgIGNvbnN0IHZlcmlmaWVkID0gZmFsc2UsXG4gICAgICAgICAgY3VzdG9tR3JhbW1hciA9IGN1c3RvbUdyYW1tYXJGcm9tUmVsZWFzZShyZWxlYXNlKSxcbiAgICAgICAgICBmaWxlQ29udGV4dHMgPSBbXSxcbiAgICAgICAgICBmbG9yZW5jZUxleGVyID0gbnVsbCxcbiAgICAgICAgICBmbG9yZW5jZVBhcnNlciA9IG51bGwsXG4gICAgICAgICAgcmVsZWFzZUNvbnRleHRzID0gW10sXG4gICAgICAgICAgcmVsZWFzZUNvbnRleHQgPSBuZXcgUmVsZWFzZUNvbnRleHQobG9nLCByZWxlYXNlLCB2ZXJpZmllZCwgY3VzdG9tR3JhbW1hciwgZmlsZUNvbnRleHRzLCBmbG9yZW5jZUxleGVyLCBmbG9yZW5jZVBhcnNlciwgcmVsZWFzZUNvbnRleHRzLCAuLi5yZW1haW5pbmdBcmd1bWVudHMpO1xuXG4gICAgcmV0dXJuIHJlbGVhc2VDb250ZXh0O1xuICB9XG59XG5cbk9iamVjdC5hc3NpZ24oUmVsZWFzZUNvbnRleHQucHJvdG90eXBlLCBsb2dNaXhpbnMpO1xuXG5leHBvcnQgZGVmYXVsdCBSZWxlYXNlQ29udGV4dDtcbiJdLCJuYW1lcyI6WyJmbG9yZW5jZUxleGVyRnJvbUNvbWJpbmVkQ3VzdG9tR3JhbW1hciIsImxleGVyc1V0aWxpdGllcyIsImZsb3JlbmNlUGFyc2VyRnJvbUNvbWJpbmVkQ3VzdG9tR3JhbW1hciIsInBhcnNlcnNVdGlsaXRpZXMiLCJSZWxlYXNlQ29udGV4dCIsImxvZyIsInJlbGVhc2UiLCJ2ZXJpZmllZCIsImN1c3RvbUdyYW1tYXIiLCJmaWxlQ29udGV4dHMiLCJmbG9yZW5jZUxleGVyIiwiZmxvcmVuY2VQYXJzZXIiLCJyZWxlYXNlQ29udGV4dHMiLCJnZXRMb2ciLCJnZXRSZWxlYXNlIiwiaXNWZXJpZmllZCIsImdldEN1c3RvbUdyYW1tYXIiLCJnZXRGaWxlQ29udGV4dHMiLCJnZXRGbG9yZW5jZUxleGVyIiwiZ2V0RmxvcmVuY2VQYXJzZXIiLCJnZXRSZWxlYXNlQ29udGV4dHMiLCJnZXRGaWxlIiwiZmlsZVBhdGgiLCJnZXROYW1lIiwiZ2V0VmVyc2lvbiIsImdldEZpbGVQYXRocyIsImdldERlcGVuZGVuY2llcyIsImdldFJ1bGVzIiwicmVsZWFzZU5hbWVzIiwibmFtZSIsInJ1bGVzIiwicmVsZWFzZU5hbWUiLCJyZWxlYXNlTmFtZXNJbmNsdWRlc1JlbGVhc2VOYW1lIiwiaW5jbHVkZXMiLCJwdXNoIiwiYnViYmxlIiwiZm9yRWFjaCIsImZpbGVDb250ZXh0IiwiZmlsZUNvbnRleHRSdWxlcyIsInJlbGVhc2VDb250ZXh0IiwicmVsZWFzZUNvbnRleHRSdWxlcyIsImdldFR5cGVzIiwidHlwZXMiLCJmaWxlQ29udGV4dFR5cGVzIiwicmVsZWFzZUNvbnRleHRUeXBlcyIsImdldEF4aW9tcyIsImF4aW9tcyIsImZpbGVDb250ZXh0QXhpb21zIiwicmVsZWFzZUNvbnRleHRBeGlvbXMiLCJnZXRDb21iaW5hdG9ycyIsImNvbWJpbmF0b3JzIiwiZmlsZUNvbnRleHRDb21iaW5hdG9ycyIsInJlbGVhc2VDb250ZXh0Q29tYmluYXRvcnMiLCJnZXRDb25zdHJ1Y3RvcnMiLCJjb25zdHJ1Y3RvcnMiLCJmaWxlQ29udGV4dENvbnN0cnVjdG9ycyIsInJlbGVhc2VDb250ZXh0Q29uc3RydWN0b3JzIiwiYWRkRmlsZUNvbnRleHQiLCJ0b2tlbmlzZSIsImNvbnRlbnQiLCJwYXJzZSIsInRva2VucyIsImluaXRpYWxpc2UiLCJkZXBlbmRlbmN5UmVsZWFzZUNvbnRleHRzIiwiY29tYmluZWRDdXN0b21HcmFtbWFyIiwiY29tYmluZWRDdXN0b21HcmFtbWFyRnJvbVJlbGVhc2VDb250ZXh0cyIsImZyb21Mb2dBbmRSZWxlYXNlIiwicmVtYWluaW5nQXJndW1lbnRzIiwiY3VzdG9tR3JhbW1hckZyb21SZWxlYXNlIiwiT2JqZWN0IiwiYXNzaWduIiwicHJvdG90eXBlIiwibG9nTWl4aW5zIl0sIm1hcHBpbmdzIjoiQUFBQTs7OzsrQkErT0E7OztlQUFBOzs7bUNBN09rRDt3REFFNUI7cUJBRUQ7NkJB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
@@ -0,0 +1,41 @@
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 _default;
9
+ }
10
+ });
11
+ var _necessary = require("necessary");
12
+ var TRACE_LEVEL = _necessary.levels.TRACE_LEVEL, DEBUG_LEVEL = _necessary.levels.DEBUG_LEVEL, INFO_LEVEL = _necessary.levels.INFO_LEVEL, WARNING_LEVEL = _necessary.levels.WARNING_LEVEL, ERROR_LEVEL = _necessary.levels.ERROR_LEVEL, FATAL_LEVEL = _necessary.levels.FATAL_LEVEL;
13
+ function trace(message) {
14
+ this.log(TRACE_LEVEL, message);
15
+ }
16
+ function debug(message) {
17
+ this.log(DEBUG_LEVEL, message);
18
+ }
19
+ function info(message) {
20
+ this.log(INFO_LEVEL, message);
21
+ }
22
+ function warning(message) {
23
+ this.log(WARNING_LEVEL, message);
24
+ }
25
+ function error(message) {
26
+ this.log(ERROR_LEVEL, message);
27
+ }
28
+ function fatal(message) {
29
+ this.log(FATAL_LEVEL, message);
30
+ }
31
+ var logMixins = {
32
+ trace: trace,
33
+ debug: debug,
34
+ info: info,
35
+ warning: warning,
36
+ error: error,
37
+ fatal: fatal
38
+ };
39
+ var _default = logMixins;
40
+
41
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9taXhpbnMvbG9nLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgeyBsZXZlbHMgfSBmcm9tIFwibmVjZXNzYXJ5XCI7XG5cbmNvbnN0IHsgVFJBQ0VfTEVWRUwsIERFQlVHX0xFVkVMLCBJTkZPX0xFVkVMLCBXQVJOSU5HX0xFVkVMLCBFUlJPUl9MRVZFTCwgRkFUQUxfTEVWRUwgfSA9IGxldmVscztcblxuZnVuY3Rpb24gdHJhY2UobWVzc2FnZSkgeyB0aGlzLmxvZyhUUkFDRV9MRVZFTCwgbWVzc2FnZSk7IH1cblxuZnVuY3Rpb24gZGVidWcobWVzc2FnZSkgeyB0aGlzLmxvZyhERUJVR19MRVZFTCwgbWVzc2FnZSk7IH1cblxuZnVuY3Rpb24gaW5mbyhtZXNzYWdlKSB7IHRoaXMubG9nKElORk9fTEVWRUwsIG1lc3NhZ2UpOyB9XG5cbmZ1bmN0aW9uIHdhcm5pbmcobWVzc2FnZSkgeyB0aGlzLmxvZyhXQVJOSU5HX0xFVkVMLCBtZXNzYWdlKTsgfVxuXG5mdW5jdGlvbiBlcnJvcihtZXNzYWdlKSB7IHRoaXMubG9nKEVSUk9SX0xFVkVMLCBtZXNzYWdlKTsgfVxuXG5mdW5jdGlvbiBmYXRhbChtZXNzYWdlKSB7IHRoaXMubG9nKEZBVEFMX0xFVkVMLCBtZXNzYWdlKTsgfVxuXG5jb25zdCBsb2dNaXhpbnMgPSB7XG4gIHRyYWNlLFxuICBkZWJ1ZyxcbiAgaW5mbyxcbiAgd2FybmluZyxcbiAgZXJyb3IsXG4gIGZhdGFsXG59O1xuXG5leHBvcnQgZGVmYXVsdCBsb2dNaXhpbnM7XG4iXSwibmFtZXMiOlsiVFJBQ0VfTEVWRUwiLCJsZXZlbHMiLCJERUJVR19MRVZFTCIsIklORk9fTEVWRUwiLCJXQVJOSU5HX0xFVkVMIiwiRVJST1JfTEVWRUwiLCJGQVRBTF9MRVZFTCIsInRyYWNlIiwibWVzc2FnZSIsImxvZyIsImRlYnVnIiwiaW5mbyIsIndhcm5pbmciLCJlcnJvciIsImZhdGFsIiwibG9nTWl4aW5zIl0sIm1hcHBpbmdzIjoiQUFBQTs7OzsrQkEyQkE7OztlQUFBOzs7eUJBekJ1QjtBQUV2QixJQUFRQSxjQUFrRkMsaUJBQU0sQ0FBeEZELGFBQWFFLGNBQXFFRCxpQkFBTSxDQUEzRUMsYUFBYUMsYUFBd0RGLGlCQUFNLENBQTlERSxZQUFZQyxnQkFBNENILGlCQUFNLENBQWxERyxlQUFlQyxjQUE2QkosaUJBQU0sQ0FBbkNJLGFBQWFDLGNBQWdCTCxpQkFBTSxDQUF0Qks7QUFFMUUsU0FBU0MsTUFBTUMsT0FBTyxFQUFFO0lBQUUsSUFBSSxDQUFDQyxHQUFHLENBQUNULGFBQWFRO0FBQVU7QUFFMUQsU0FBU0UsTUFBTUYsT0FBTyxFQUFFO0lBQUUsSUFBSSxDQUFDQyxHQUFHLENBQUNQLGFBQWFNO0FBQVU7QUFFMUQsU0FBU0csS0FBS0gsT0FBTyxFQUFFO0lBQUUsSUFBSSxDQUFDQyxHQUFHLENBQUNOLFlBQVlLO0FBQVU7QUFFeEQsU0FBU0ksUUFBUUosT0FBTyxFQUFFO0lBQUUsSUFBSSxDQUFDQyxHQUFHLENBQUNMLGVBQWVJO0FBQVU7QUFFOUQsU0FBU0ssTUFBTUwsT0FBTyxFQUFFO0lBQUUsSUFBSSxDQUFDQyxHQUFHLENBQUNKLGFBQWFHO0FBQVU7QUFFMUQsU0FBU00sTUFBTU4sT0FBTyxFQUFFO0lBQUUsSUFBSSxDQUFDQyxHQUFHLENBQUNILGFBQWFFO0FBQVU7QUFFMUQsSUFBTU8sWUFBWTtJQUNoQlIsT0FBQUE7SUFDQUcsT0FBQUE7SUFDQUMsTUFBQUE7SUFDQUMsU0FBQUE7SUFDQUMsT0FBQUE7SUFDQUMsT0FBQUE7QUFDRjtJQUVBLFdBQWVDIn0=
@@ -0,0 +1,32 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", {
3
+ value: true
4
+ });
5
+ function _export(target, all) {
6
+ for(var name in all)Object.defineProperty(target, name, {
7
+ enumerable: true,
8
+ get: all[name]
9
+ });
10
+ }
11
+ _export(exports, {
12
+ customGrammarFromRelease: function() {
13
+ return customGrammarFromRelease;
14
+ },
15
+ combinedCustomGrammarFromReleaseContexts: function() {
16
+ return combinedCustomGrammarFromReleaseContexts;
17
+ }
18
+ });
19
+ var _occamCustomGrammars = require("occam-custom-grammars");
20
+ function customGrammarFromRelease(release) {
21
+ var name = release.getName(), termBNF = release.getTermBNF(), statementBNF = release.getStatementBNF(), metastatementBNF = release.getMetastatementBNF(), typePattern = release.getTypePattern(), symbolPattern = release.getSymbolPattern(), operatorPattern = release.getOperatorPattern(), customGrammar = _occamCustomGrammars.CustomGrammar.fromNameTermBNFStatementBNFMetastatementBNFTypePatternSymbolPatternAndOperatorPattern(name, termBNF, statementBNF, metastatementBNF, typePattern, symbolPattern, operatorPattern);
22
+ return customGrammar;
23
+ }
24
+ function combinedCustomGrammarFromReleaseContexts(releaseContexts) {
25
+ var customGrammars = releaseContexts.map(function(releaseContext) {
26
+ var customGrammar = releaseContext.getCustomGrammar();
27
+ return customGrammar;
28
+ }), combinedCustomGrammar = _occamCustomGrammars.CombinedCustomGrammar.fromCustomGrammars(customGrammars);
29
+ return combinedCustomGrammar;
30
+ }
31
+
32
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlsaXRpZXMvY3VzdG9tR3JhbW1hci5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuaW1wb3J0IHsgQ3VzdG9tR3JhbW1hciwgQ29tYmluZWRDdXN0b21HcmFtbWFyIH0gZnJvbSBcIm9jY2FtLWN1c3RvbS1ncmFtbWFyc1wiO1xuXG5leHBvcnQgZnVuY3Rpb24gY3VzdG9tR3JhbW1hckZyb21SZWxlYXNlKHJlbGVhc2UpIHtcbiAgY29uc3QgbmFtZSA9IHJlbGVhc2UuZ2V0TmFtZSgpLFxuICAgICAgICB0ZXJtQk5GID0gcmVsZWFzZS5nZXRUZXJtQk5GKCksXG4gICAgICAgIHN0YXRlbWVudEJORiA9IHJlbGVhc2UuZ2V0U3RhdGVtZW50Qk5GKCksXG4gICAgICAgIG1ldGFzdGF0ZW1lbnRCTkYgPSByZWxlYXNlLmdldE1ldGFzdGF0ZW1lbnRCTkYoKSxcbiAgICAgICAgdHlwZVBhdHRlcm4gPSByZWxlYXNlLmdldFR5cGVQYXR0ZXJuKCksXG4gICAgICAgIHN5bWJvbFBhdHRlcm4gPSByZWxlYXNlLmdldFN5bWJvbFBhdHRlcm4oKSxcbiAgICAgICAgb3BlcmF0b3JQYXR0ZXJuID0gcmVsZWFzZS5nZXRPcGVyYXRvclBhdHRlcm4oKSxcbiAgICAgICAgY3VzdG9tR3JhbW1hciA9IEN1c3RvbUdyYW1tYXIuZnJvbU5hbWVUZXJtQk5GU3RhdGVtZW50Qk5GTWV0YXN0YXRlbWVudEJORlR5cGVQYXR0ZXJuU3ltYm9sUGF0dGVybkFuZE9wZXJhdG9yUGF0dGVybihuYW1lLCB0ZXJtQk5GLCBzdGF0ZW1lbnRCTkYsIG1ldGFzdGF0ZW1lbnRCTkYsIHR5cGVQYXR0ZXJuLCBzeW1ib2xQYXR0ZXJuLCBvcGVyYXRvclBhdHRlcm4pO1xuXG4gIHJldHVybiBjdXN0b21HcmFtbWFyO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY29tYmluZWRDdXN0b21HcmFtbWFyRnJvbVJlbGVhc2VDb250ZXh0cyhyZWxlYXNlQ29udGV4dHMpIHtcbiAgY29uc3QgY3VzdG9tR3JhbW1hcnMgPSByZWxlYXNlQ29udGV4dHMubWFwKChyZWxlYXNlQ29udGV4dCkgPT4ge1xuICAgICAgICAgIGNvbnN0IGN1c3RvbUdyYW1tYXIgPSByZWxlYXNlQ29udGV4dC5nZXRDdXN0b21HcmFtbWFyKCk7XG5cbiAgICAgICAgICByZXR1cm4gY3VzdG9tR3JhbW1hcjtcbiAgICAgICAgfSksXG4gICAgICAgIGNvbWJpbmVkQ3VzdG9tR3JhbW1hciA9IENvbWJpbmVkQ3VzdG9tR3JhbW1hci5mcm9tQ3VzdG9tR3JhbW1hcnMoY3VzdG9tR3JhbW1hcnMpO1xuXG4gIHJldHVybiBjb21iaW5lZEN1c3RvbUdyYW1tYXI7XG59Il0sIm5hbWVzIjpbImN1c3RvbUdyYW1tYXJGcm9tUmVsZWFzZSIsImNvbWJpbmVkQ3VzdG9tR3JhbW1hckZyb21SZWxlYXNlQ29udGV4dHMiLCJyZWxlYXNlIiwibmFtZSIsImdldE5hbWUiLCJ0ZXJtQk5GIiwiZ2V0VGVybUJORiIsInN0YXRlbWVudEJORiIsImdldFN0YXRlbWVudEJORiIsIm1ldGFzdGF0ZW1lbnRCTkYiLCJnZXRNZXRhc3RhdGVtZW50Qk5GIiwidHlwZVBhdHRlcm4iLCJnZXRUeXBlUGF0dGVybiIsInN5bWJvbFBhdHRlcm4iLCJnZXRTeW1ib2xQYXR0ZXJuIiwib3BlcmF0b3JQYXR0ZXJuIiwiZ2V0T3BlcmF0b3JQYXR0ZXJuIiwiY3VzdG9tR3JhbW1hciIsIkN1c3RvbUdyYW1tYXIiLCJmcm9tTmFtZVRlcm1CTkZTdGF0ZW1lbnRCTkZNZXRhc3RhdGVtZW50Qk5GVHlwZVBhdHRlcm5TeW1ib2xQYXR0ZXJuQW5kT3BlcmF0b3JQYXR0ZXJuIiwicmVsZWFzZUNvbnRleHRzIiwiY3VzdG9tR3JhbW1hcnMiLCJtYXAiLCJyZWxlYXNlQ29udGV4dCIsImdldEN1c3RvbUdyYW1tYXIiLCJjb21iaW5lZEN1c3RvbUdyYW1tYXIiLCJDb21iaW5lZEN1c3RvbUdyYW1tYXIiLCJmcm9tQ3VzdG9tR3JhbW1hcnMiXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7OztJQUlnQkEsd0JBQXdCO2VBQXhCQTs7SUFhQUMsd0NBQXdDO2VBQXhDQTs7O21DQWZxQztBQUU5QyxTQUFTRCx5QkFBeUJFLE9BQU8sRUFBRTtJQUNoRCxJQUFNQyxPQUFPRCxRQUFRRSxPQUFPLElBQ3RCQyxVQUFVSCxRQUFRSSxVQUFVLElBQzVCQyxlQUFlTCxRQUFRTSxlQUFlLElBQ3RDQyxtQkFBbUJQLFFBQVFRLG1CQUFtQixJQUM5Q0MsY0FBY1QsUUFBUVUsY0FBYyxJQUNwQ0MsZ0JBQWdCWCxRQUFRWSxnQkFBZ0IsSUFDeENDLGtCQUFrQmIsUUFBUWMsa0JBQWtCLElBQzVDQyxnQkFBZ0JDLGtDQUFhLENBQUNDLHFGQUFxRixDQUFDaEIsTUFBTUUsU0FBU0UsY0FBY0Usa0JBQWtCRSxhQUFhRSxlQUFlRTtJQUVyTSxPQUFPRTtBQUNUO0FBRU8sU0FBU2hCLHlDQUF5Q21CLGVBQWUsRUFBRTtJQUN4RSxJQUFNQyxpQkFBaUJELGdCQUFnQkUsR0FBRyxDQUFDLFNBQUNDLGdCQUFtQjtRQUN2RCxJQUFNTixnQkFBZ0JNLGVBQWVDLGdCQUFnQjtRQUVyRCxPQUFPUDtJQUNULElBQ0FRLHdCQUF3QkMsMENBQXFCLENBQUNDLGtCQUFrQixDQUFDTjtJQUV2RSxPQUFPSTtBQUNUIn0=
@@ -0,0 +1,63 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", {
3
+ value: true
4
+ });
5
+ function _export(target, all) {
6
+ for(var name in all)Object.defineProperty(target, name, {
7
+ enumerable: true,
8
+ get: all[name]
9
+ });
10
+ }
11
+ _export(exports, {
12
+ leastLineIndexFromNodeAndTokens: function() {
13
+ return leastLineIndexFromNodeAndTokens;
14
+ },
15
+ greatestLineIndexFromNodeAndTokens: function() {
16
+ return greatestLineIndexFromNodeAndTokens;
17
+ }
18
+ });
19
+ function leastLineIndexFromNodeAndTokens(node, tokens) {
20
+ var leastLineIndex = undefined; ///
21
+ var firstSignificantToken = node.getFirstSignificantToken(), firstSignificantTokenIndex = significantTokenIndexFromSignificantTokenAndTokens(firstSignificantToken, tokens); ///
22
+ var lineIndex = 0;
23
+ tokens.some(function(token, tokenIndex) {
24
+ if (tokenIndex === firstSignificantTokenIndex) {
25
+ leastLineIndex = lineIndex; ///
26
+ return true;
27
+ }
28
+ var tokenEndOfLineToken = token.isEndOfLineToken();
29
+ if (tokenEndOfLineToken) {
30
+ lineIndex += 1;
31
+ }
32
+ });
33
+ return leastLineIndex;
34
+ }
35
+ function greatestLineIndexFromNodeAndTokens(node, tokens) {
36
+ var greatestLineIndex = undefined; ///
37
+ var lastSignificantToken = node.getLastSignificantToken(), lastSignificantTokenIndex = significantTokenIndexFromSignificantTokenAndTokens(lastSignificantToken, tokens);
38
+ var lineIndex = 0;
39
+ tokens.some(function(token, tokenIndex) {
40
+ if (tokenIndex === lastSignificantTokenIndex) {
41
+ greatestLineIndex = lineIndex; ///
42
+ return true;
43
+ }
44
+ var tokenEndOfLineToken = token.isEndOfLineToken();
45
+ if (tokenEndOfLineToken) {
46
+ lineIndex += 1;
47
+ }
48
+ });
49
+ return greatestLineIndex;
50
+ }
51
+ function significantTokenIndexFromSignificantTokenAndTokens(significantToken, tokens) {
52
+ var significantTokenIndex = -1;
53
+ tokens.some(function(token) {
54
+ significantTokenIndex++;
55
+ var tokenEqualToSignificantToken = token.isEqualTo(significantToken);
56
+ if (tokenEqualToSignificantToken) {
57
+ return true;
58
+ }
59
+ });
60
+ return significantTokenIndex;
61
+ }
62
+
63
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlsaXRpZXMvdG9rZW5zLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5leHBvcnQgZnVuY3Rpb24gbGVhc3RMaW5lSW5kZXhGcm9tTm9kZUFuZFRva2Vucyhub2RlLCB0b2tlbnMpIHtcbiAgbGV0IGxlYXN0TGluZUluZGV4ID0gdW5kZWZpbmVkOyAvLy9cblxuICBjb25zdCBmaXJzdFNpZ25pZmljYW50VG9rZW4gPSBub2RlLmdldEZpcnN0U2lnbmlmaWNhbnRUb2tlbigpLFxuICAgICAgICBmaXJzdFNpZ25pZmljYW50VG9rZW5JbmRleCA9IHNpZ25pZmljYW50VG9rZW5JbmRleEZyb21TaWduaWZpY2FudFRva2VuQW5kVG9rZW5zKGZpcnN0U2lnbmlmaWNhbnRUb2tlbiwgdG9rZW5zKTsgLy8vXG5cbiAgbGV0IGxpbmVJbmRleCA9IDA7XG5cbiAgdG9rZW5zLnNvbWUoKHRva2VuLCB0b2tlbkluZGV4KSA9PiB7ICAvLy9cbiAgICBpZiAodG9rZW5JbmRleCA9PT0gZmlyc3RTaWduaWZpY2FudFRva2VuSW5kZXgpIHtcbiAgICAgIGxlYXN0TGluZUluZGV4ID0gbGluZUluZGV4OyAgLy8vXG5cbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIGNvbnN0IHRva2VuRW5kT2ZMaW5lVG9rZW4gPSB0b2tlbi5pc0VuZE9mTGluZVRva2VuKCk7XG5cbiAgICBpZiAodG9rZW5FbmRPZkxpbmVUb2tlbikge1xuICAgICAgbGluZUluZGV4ICs9IDE7XG4gICAgfVxuICB9KTtcblxuICByZXR1cm4gbGVhc3RMaW5lSW5kZXg7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBncmVhdGVzdExpbmVJbmRleEZyb21Ob2RlQW5kVG9rZW5zKG5vZGUsIHRva2Vucykge1xuICBsZXQgZ3JlYXRlc3RMaW5lSW5kZXggPSB1bmRlZmluZWQ7ICAvLy9cblxuICBjb25zdCBsYXN0U2lnbmlmaWNhbnRUb2tlbiA9IG5vZGUuZ2V0TGFzdFNpZ25pZmljYW50VG9rZW4oKSxcbiAgICAgICAgbGFzdFNpZ25pZmljYW50VG9rZW5JbmRleCA9IHNpZ25pZmljYW50VG9rZW5JbmRleEZyb21TaWduaWZpY2FudFRva2VuQW5kVG9rZW5zKGxhc3RTaWduaWZpY2FudFRva2VuLCB0b2tlbnMpO1xuXG4gIGxldCBsaW5lSW5kZXggPSAwO1xuXG4gIHRva2Vucy5zb21lKCh0b2tlbiwgdG9rZW5JbmRleCkgPT4geyAgLy8vXG4gICAgaWYgKHRva2VuSW5kZXggPT09IGxhc3RTaWduaWZpY2FudFRva2VuSW5kZXgpIHtcbiAgICAgIGdyZWF0ZXN0TGluZUluZGV4ID0gbGluZUluZGV4OyAgLy8vXG5cbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIGNvbnN0IHRva2VuRW5kT2ZMaW5lVG9rZW4gPSB0b2tlbi5pc0VuZE9mTGluZVRva2VuKCk7XG5cbiAgICBpZiAodG9rZW5FbmRPZkxpbmVUb2tlbikge1xuICAgICAgbGluZUluZGV4ICs9IDE7XG4gICAgfVxuICB9KTtcblxuICByZXR1cm4gZ3JlYXRlc3RMaW5lSW5kZXg7XG59XG5cbmZ1bmN0aW9uIHNpZ25pZmljYW50VG9rZW5JbmRleEZyb21TaWduaWZpY2FudFRva2VuQW5kVG9rZW5zKHNpZ25pZmljYW50VG9rZW4sIHRva2Vucykge1xuICBsZXQgc2lnbmlmaWNhbnRUb2tlbkluZGV4ID0gLTE7XG5cbiAgdG9rZW5zLnNvbWUoKHRva2VuKSA9PiB7XG4gICAgc2lnbmlmaWNhbnRUb2tlbkluZGV4Kys7XG5cbiAgICBjb25zdCB0b2tlbkVxdWFsVG9TaWduaWZpY2FudFRva2VuID0gdG9rZW4uaXNFcXVhbFRvKHNpZ25pZmljYW50VG9rZW4pO1xuXG4gICAgaWYgKHRva2VuRXF1YWxUb1NpZ25pZmljYW50VG9rZW4pIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgfSk7XG5cbiAgcmV0dXJuIHNpZ25pZmljYW50VG9rZW5JbmRleDtcbn1cbiJdLCJuYW1lcyI6WyJsZWFzdExpbmVJbmRleEZyb21Ob2RlQW5kVG9rZW5zIiwiZ3JlYXRlc3RMaW5lSW5kZXhGcm9tTm9kZUFuZFRva2VucyIsIm5vZGUiLCJ0b2tlbnMiLCJsZWFzdExpbmVJbmRleCIsInVuZGVmaW5lZCIsImZpcnN0U2lnbmlmaWNhbnRUb2tlbiIsImdldEZpcnN0U2lnbmlmaWNhbnRUb2tlbiIsImZpcnN0U2lnbmlmaWNhbnRUb2tlbkluZGV4Iiwic2lnbmlmaWNhbnRUb2tlbkluZGV4RnJvbVNpZ25pZmljYW50VG9rZW5BbmRUb2tlbnMiLCJsaW5lSW5kZXgiLCJzb21lIiwidG9rZW4iLCJ0b2tlbkluZGV4IiwidG9rZW5FbmRPZkxpbmVUb2tlbiIsImlzRW5kT2ZMaW5lVG9rZW4iLCJncmVhdGVzdExpbmVJbmRleCIsImxhc3RTaWduaWZpY2FudFRva2VuIiwiZ2V0TGFzdFNpZ25pZmljYW50VG9rZW4iLCJsYXN0U2lnbmlmaWNhbnRUb2tlbkluZGV4Iiwic2lnbmlmaWNhbnRUb2tlbiIsInNpZ25pZmljYW50VG9rZW5JbmRleCIsInRva2VuRXF1YWxUb1NpZ25pZmljYW50VG9rZW4iLCJpc0VxdWFsVG8iXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7OztJQUVnQkEsK0JBQStCO2VBQS9CQTs7SUF5QkFDLGtDQUFrQztlQUFsQ0E7OztBQXpCVCxTQUFTRCxnQ0FBZ0NFLElBQUksRUFBRUMsTUFBTSxFQUFFO0lBQzVELElBQUlDLGlCQUFpQkMsV0FBVyxHQUFHO0lBRW5DLElBQU1DLHdCQUF3QkosS0FBS0ssd0JBQXdCLElBQ3JEQyw2QkFBNkJDLG1EQUFtREgsdUJBQXVCSCxTQUFTLEdBQUc7SUFFekgsSUFBSU8sWUFBWTtJQUVoQlAsT0FBT1EsSUFBSSxDQUFDLFNBQUNDLE9BQU9DLFlBQWU7UUFDakMsSUFBSUEsZUFBZUwsNEJBQTRCO1lBQzdDSixpQkFBaUJNLFdBQVksR0FBRztZQUVoQyxPQUFPLElBQUk7UUFDYixDQUFDO1FBRUQsSUFBTUksc0JBQXNCRixNQUFNRyxnQkFBZ0I7UUFFbEQsSUFBSUQscUJBQXFCO1lBQ3ZCSixhQUFhO1FBQ2YsQ0FBQztJQUNIO0lBRUEsT0FBT047QUFDVDtBQUVPLFNBQVNILG1DQUFtQ0MsSUFBSSxFQUFFQyxNQUFNLEVBQUU7SUFDL0QsSUFBSWEsb0JBQW9CWCxXQUFZLEdBQUc7SUFFdkMsSUFBTVksdUJBQXVCZixLQUFLZ0IsdUJBQXVCLElBQ25EQyw0QkFBNEJWLG1EQUFtRFEsc0JBQXNCZDtJQUUzRyxJQUFJTyxZQUFZO0lBRWhCUCxPQUFPUSxJQUFJLENBQUMsU0FBQ0MsT0FBT0MsWUFBZTtRQUNqQyxJQUFJQSxlQUFlTSwyQkFBMkI7WUFDNUNILG9CQUFvQk4sV0FBWSxHQUFHO1lBRW5DLE9BQU8sSUFBSTtRQUNiLENBQUM7UUFFRCxJQUFNSSxzQkFBc0JGLE1BQU1HLGdCQUFnQjtRQUVsRCxJQUFJRCxxQkFBcUI7WUFDdkJKLGFBQWE7UUFDZixDQUFDO0lBQ0g7SUFFQSxPQUFPTTtBQUNUO0FBRUEsU0FBU1AsbURBQW1EVyxnQkFBZ0IsRUFBRWpCLE1BQU0sRUFBRTtJQUNwRixJQUFJa0Isd0JBQXdCLENBQUM7SUFFN0JsQixPQUFPUSxJQUFJLENBQUMsU0FBQ0MsT0FBVTtRQUNyQlM7UUFFQSxJQUFNQywrQkFBK0JWLE1BQU1XLFNBQVMsQ0FBQ0g7UUFFckQsSUFBSUUsOEJBQThCO1lBQ2hDLE9BQU8sSUFBSTtRQUNiLENBQUM7SUFDSDtJQUVBLE9BQU9EO0FBQ1QifQ==
@@ -22,7 +22,7 @@ function verifyTypeAssertion(typeAssertionNode, context) {
22
22
  var typeAssertionVerified = false;
23
23
  var typeNode = typeNodeQuery(typeAssertionNode), typeName = (0, _query.typeNameFromTypeNode)(typeNode), typePresent = context.isTypePresentByTypeName(typeName);
24
24
  if (!typePresent) {
25
- context.error("The ".concat(typeName, " type is not present."));
25
+ context.error("The ".concat(typeName, " type is not present."), typeAssertionNode);
26
26
  } else {
27
27
  var derived = context.isDerived();
28
28
  if (derived) {
@@ -32,11 +32,11 @@ function verifyTypeAssertion(typeAssertionNode, context) {
32
32
  if (termVerified) {
33
33
  var firstName = (0, _array.first)(names), firstValue = (0, _array.first)(values), variableName = firstName, value = firstValue;
34
34
  if (value !== undefined) {
35
- context.error("The value of the ".concat(variableName, " variable is not undefined."));
35
+ context.error("The value of the ".concat(variableName, " variable is not undefined."), typeAssertionNode);
36
36
  } else {
37
37
  var type = context.findTypeByTypeName(typeName), firstType = (0, _array.first)(types), variableType = firstType, typeSubTypeOfVariableType = type.isSubTypeOf(variableType);
38
38
  if (!typeSubTypeOfVariableType) {
39
- context.error("The asserted type of the ".concat(variableName, " variable is not a sub-type of its declared type."));
39
+ context.error("The asserted type of the ".concat(variableName, " variable is not a sub-type of its declared type."), typeAssertionNode);
40
40
  } else {
41
41
  var name = variableName, variable = _variable.default.fromTypeAndName(type, name);
42
42
  context.addVariable(variable);
@@ -49,4 +49,4 @@ function verifyTypeAssertion(typeAssertionNode, context) {
49
49
  return typeAssertionVerified;
50
50
  }
51
51
 
52
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy92ZXJpZnkvYXNzZXJ0aW9uL3R5cGUuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmltcG9ydCBWYXJpYWJsZSBmcm9tIFwiLi4vLi4vdmFyaWFibGVcIjtcbmltcG9ydCB2ZXJpZnlUZXJtQXNWYXJpYWJsZSBmcm9tIFwiLi4vLi4vdmVyaWZ5L3Rlcm1Bc1ZhcmlhYmxlXCI7XG5cbmltcG9ydCB7IGZpcnN0IH0gZnJvbSBcIi4uLy4uL3V0aWxpdGllcy9hcnJheVwiO1xuaW1wb3J0IHsgbm9kZVF1ZXJ5LCB0eXBlTmFtZUZyb21UeXBlTm9kZSB9IGZyb20gXCIuLi8uLi91dGlsaXRpZXMvcXVlcnlcIjtcblxuY29uc3QgdGVybU5vZGVRdWVyeSA9IG5vZGVRdWVyeShcIi90eXBlQXNzZXJ0aW9uL3Rlcm1cIiksXG4gICAgICB0eXBlTm9kZVF1ZXJ5ID0gbm9kZVF1ZXJ5KFwiL3R5cGVBc3NlcnRpb24vdHlwZVwiKTtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gdmVyaWZ5VHlwZUFzc2VydGlvbih0eXBlQXNzZXJ0aW9uTm9kZSwgY29udGV4dCkge1xuICBsZXQgdHlwZUFzc2VydGlvblZlcmlmaWVkID0gZmFsc2U7XG5cbiAgY29uc3QgdHlwZU5vZGUgPSB0eXBlTm9kZVF1ZXJ5KHR5cGVBc3NlcnRpb25Ob2RlKSxcbiAgICAgICAgdHlwZU5hbWUgPSB0eXBlTmFtZUZyb21UeXBlTm9kZSh0eXBlTm9kZSksXG4gICAgICAgIHR5cGVQcmVzZW50ID0gY29udGV4dC5pc1R5cGVQcmVzZW50QnlUeXBlTmFtZSh0eXBlTmFtZSk7XG5cbiAgaWYgKCF0eXBlUHJlc2VudCkge1xuICAgIGNvbnRleHQuZXJyb3IoYFRoZSAke3R5cGVOYW1lfSB0eXBlIGlzIG5vdCBwcmVzZW50LmApO1xuICB9IGVsc2Uge1xuICAgIGNvbnN0IGRlcml2ZWQgPSBjb250ZXh0LmlzRGVyaXZlZCgpO1xuXG4gICAgaWYgKGRlcml2ZWQpIHtcbiAgICAgIGRlYnVnZ2VyXG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IHR5cGVzID0gW10sXG4gICAgICAgICAgICBuYW1lcyA9IFtdLFxuICAgICAgICAgICAgdmFsdWVzID0gW10sXG4gICAgICAgICAgICB0ZXJtTm9kZSA9IHRlcm1Ob2RlUXVlcnkodHlwZUFzc2VydGlvbk5vZGUpLFxuICAgICAgICAgICAgdGVybVZlcmlmaWVkID0gdmVyaWZ5VGVybUFzVmFyaWFibGUodGVybU5vZGUsIHR5cGVzLCBuYW1lcywgdmFsdWVzLCBjb250ZXh0KTtcblxuICAgICAgaWYgKHRlcm1WZXJpZmllZCkge1xuICAgICAgICBjb25zdCBmaXJzdE5hbWUgPSBmaXJzdChuYW1lcyksXG4gICAgICAgICAgICAgIGZpcnN0VmFsdWUgPSBmaXJzdCh2YWx1ZXMpLFxuICAgICAgICAgICAgICB2YXJpYWJsZU5hbWUgPSBmaXJzdE5hbWUsIC8vL1xuICAgICAgICAgICAgICB2YWx1ZSA9IGZpcnN0VmFsdWU7XG5cbiAgICAgICAgaWYgKHZhbHVlICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICBjb250ZXh0LmVycm9yKGBUaGUgdmFsdWUgb2YgdGhlICR7dmFyaWFibGVOYW1lfSB2YXJpYWJsZSBpcyBub3QgdW5kZWZpbmVkLmApO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGNvbnN0IHR5cGUgPSBjb250ZXh0LmZpbmRUeXBlQnlUeXBlTmFtZSh0eXBlTmFtZSksXG4gICAgICAgICAgICAgICAgZmlyc3RUeXBlID0gZmlyc3QodHlwZXMpLFxuICAgICAgICAgICAgICAgIHZhcmlhYmxlVHlwZSA9IGZpcnN0VHlwZSwgLy8vXG4gICAgICAgICAgICAgICAgdHlwZVN1YlR5cGVPZlZhcmlhYmxlVHlwZSA9IHR5cGUuaXNTdWJUeXBlT2YodmFyaWFibGVUeXBlKTtcblxuICAgICAgICAgIGlmICghdHlwZVN1YlR5cGVPZlZhcmlhYmxlVHlwZSkge1xuICAgICAgICAgICAgY29udGV4dC5lcnJvcihgVGhlIGFzc2VydGVkIHR5cGUgb2YgdGhlICR7dmFyaWFibGVOYW1lfSB2YXJpYWJsZSBpcyBub3QgYSBzdWItdHlwZSBvZiBpdHMgZGVjbGFyZWQgdHlwZS5gKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY29uc3QgbmFtZSA9IHZhcmlhYmxlTmFtZSwgIC8vL1xuICAgICAgICAgICAgICAgICAgdmFyaWFibGUgPSBWYXJpYWJsZS5mcm9tVHlwZUFuZE5hbWUodHlwZSwgbmFtZSk7XG5cbiAgICAgICAgICAgIGNvbnRleHQuYWRkVmFyaWFibGUodmFyaWFibGUpO1xuXG4gICAgICAgICAgICB0eXBlQXNzZXJ0aW9uVmVyaWZpZWQgPSB0cnVlO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiB0eXBlQXNzZXJ0aW9uVmVyaWZpZWQ7XG59XG4iXSwibmFtZXMiOlsidmVyaWZ5VHlwZUFzc2VydGlvbiIsInRlcm1Ob2RlUXVlcnkiLCJub2RlUXVlcnkiLCJ0eXBlTm9kZVF1ZXJ5IiwidHlwZUFzc2VydGlvbk5vZGUiLCJjb250ZXh0IiwidHlwZUFzc2VydGlvblZlcmlmaWVkIiwidHlwZU5vZGUiLCJ0eXBlTmFtZSIsInR5cGVOYW1lRnJvbVR5cGVOb2RlIiwidHlwZVByZXNlbnQiLCJpc1R5cGVQcmVzZW50QnlUeXBlTmFtZSIsImVycm9yIiwiZGVyaXZlZCIsImlzRGVyaXZlZCIsInR5cGVzIiwibmFtZXMiLCJ2YWx1ZXMiLCJ0ZXJtTm9kZSIsInRlcm1WZXJpZmllZCIsInZlcmlmeVRlcm1Bc1ZhcmlhYmxlIiwiZmlyc3ROYW1lIiwiZmlyc3QiLCJmaXJzdFZhbHVlIiwidmFyaWFibGVOYW1lIiwidmFsdWUiLCJ1bmRlZmluZWQiLCJ0eXBlIiwiZmluZFR5cGVCeVR5cGVOYW1lIiwiZmlyc3RUeXBlIiwidmFyaWFibGVUeXBlIiwidHlwZVN1YlR5cGVPZlZhcmlhYmxlVHlwZSIsImlzU3ViVHlwZU9mIiwibmFtZSIsInZhcmlhYmxlIiwiVmFyaWFibGUiLCJmcm9tVHlwZUFuZE5hbWUiLCJhZGRWYXJpYWJsZSJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7K0JBV0E7OztlQUF3QkE7Ozs2REFUSDttRUFDWTtxQkFFWDtxQkFDMEI7Ozs7OztBQUVoRCxJQUFNQyxnQkFBZ0JDLElBQUFBLGdCQUFTLEVBQUMsd0JBQzFCQyxnQkFBZ0JELElBQUFBLGdCQUFTLEVBQUM7QUFFakIsU0FBU0Ysb0JBQW9CSSxpQkFBaUIsRUFBRUMsT0FBTyxFQUFFO0lBQ3RFLElBQUlDLHdCQUF3QixLQUFLO0lBRWpDLElBQU1DLFdBQVdKLGNBQWNDLG9CQUN6QkksV0FBV0MsSUFBQUEsMkJBQW9CLEVBQUNGLFdBQ2hDRyxjQUFjTCxRQUFRTSx1QkFBdUIsQ0FBQ0g7SUFFcEQsSUFBSSxDQUFDRSxhQUFhO1FBQ2hCTCxRQUFRTyxLQUFLLENBQUMsQUFBQyxPQUFlLE9BQVRKLFVBQVM7SUFDaEMsT0FBTztRQUNMLElBQU1LLFVBQVVSLFFBQVFTLFNBQVM7UUFFakMsSUFBSUQsU0FBUztZQUNYLFFBQVE7UUFDVixPQUFPO1lBQ0wsSUFBTUUsUUFBUSxFQUFFLEVBQ1ZDLFFBQVEsRUFBRSxFQUNWQyxTQUFTLEVBQUUsRUFDWEMsV0FBV2pCLGNBQWNHLG9CQUN6QmUsZUFBZUMsSUFBQUEsdUJBQW9CLEVBQUNGLFVBQVVILE9BQU9DLE9BQU9DLFFBQVFaO1lBRTFFLElBQUljLGNBQWM7Z0JBQ2hCLElBQU1FLFlBQVlDLElBQUFBLFlBQUssRUFBQ04sUUFDbEJPLGFBQWFELElBQUFBLFlBQUssRUFBQ0wsU0FDbkJPLGVBQWVILFdBQ2ZJLFFBQVFGO2dCQUVkLElBQUlFLFVBQVVDLFdBQVc7b0JBQ3ZCckIsUUFBUU8sS0FBSyxDQUFDLEFBQUMsb0JBQWdDLE9BQWJZLGNBQWE7Z0JBQ2pELE9BQU87b0JBQ0wsSUFBTUcsT0FBT3RCLFFBQVF1QixrQkFBa0IsQ0FBQ3BCLFdBQ2xDcUIsWUFBWVAsSUFBQUEsWUFBSyxFQUFDUCxRQUNsQmUsZUFBZUQsV0FDZkUsNEJBQTRCSixLQUFLSyxXQUFXLENBQUNGO29CQUVuRCxJQUFJLENBQUNDLDJCQUEyQjt3QkFDOUIxQixRQUFRTyxLQUFLLENBQUMsQUFBQyw0QkFBd0MsT0FBYlksY0FBYTtvQkFDekQsT0FBTzt3QkFDTCxJQUFNUyxPQUFPVCxjQUNQVSxXQUFXQyxpQkFBUSxDQUFDQyxlQUFlLENBQUNULE1BQU1NO3dCQUVoRDVCLFFBQVFnQyxXQUFXLENBQUNIO3dCQUVwQjVCLHdCQUF3QixJQUFJO29CQUM5QixDQUFDO2dCQUNILENBQUM7WUFDSCxDQUFDO1FBQ0gsQ0FBQztJQUNILENBQUM7SUFFRCxPQUFPQTtBQUNUIn0=
52
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy92ZXJpZnkvYXNzZXJ0aW9uL3R5cGUuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmltcG9ydCBWYXJpYWJsZSBmcm9tIFwiLi4vLi4vdmFyaWFibGVcIjtcbmltcG9ydCB2ZXJpZnlUZXJtQXNWYXJpYWJsZSBmcm9tIFwiLi4vLi4vdmVyaWZ5L3Rlcm1Bc1ZhcmlhYmxlXCI7XG5cbmltcG9ydCB7IGZpcnN0IH0gZnJvbSBcIi4uLy4uL3V0aWxpdGllcy9hcnJheVwiO1xuaW1wb3J0IHsgbm9kZVF1ZXJ5LCB0eXBlTmFtZUZyb21UeXBlTm9kZSB9IGZyb20gXCIuLi8uLi91dGlsaXRpZXMvcXVlcnlcIjtcblxuY29uc3QgdGVybU5vZGVRdWVyeSA9IG5vZGVRdWVyeShcIi90eXBlQXNzZXJ0aW9uL3Rlcm1cIiksXG4gICAgICB0eXBlTm9kZVF1ZXJ5ID0gbm9kZVF1ZXJ5KFwiL3R5cGVBc3NlcnRpb24vdHlwZVwiKTtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gdmVyaWZ5VHlwZUFzc2VydGlvbih0eXBlQXNzZXJ0aW9uTm9kZSwgY29udGV4dCkge1xuICBsZXQgdHlwZUFzc2VydGlvblZlcmlmaWVkID0gZmFsc2U7XG5cbiAgY29uc3QgdHlwZU5vZGUgPSB0eXBlTm9kZVF1ZXJ5KHR5cGVBc3NlcnRpb25Ob2RlKSxcbiAgICAgICAgdHlwZU5hbWUgPSB0eXBlTmFtZUZyb21UeXBlTm9kZSh0eXBlTm9kZSksXG4gICAgICAgIHR5cGVQcmVzZW50ID0gY29udGV4dC5pc1R5cGVQcmVzZW50QnlUeXBlTmFtZSh0eXBlTmFtZSk7XG5cbiAgaWYgKCF0eXBlUHJlc2VudCkge1xuICAgIGNvbnRleHQuZXJyb3IoYFRoZSAke3R5cGVOYW1lfSB0eXBlIGlzIG5vdCBwcmVzZW50LmAsIHR5cGVBc3NlcnRpb25Ob2RlKTtcbiAgfSBlbHNlIHtcbiAgICBjb25zdCBkZXJpdmVkID0gY29udGV4dC5pc0Rlcml2ZWQoKTtcblxuICAgIGlmIChkZXJpdmVkKSB7XG4gICAgICBkZWJ1Z2dlclxuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCB0eXBlcyA9IFtdLFxuICAgICAgICAgICAgbmFtZXMgPSBbXSxcbiAgICAgICAgICAgIHZhbHVlcyA9IFtdLFxuICAgICAgICAgICAgdGVybU5vZGUgPSB0ZXJtTm9kZVF1ZXJ5KHR5cGVBc3NlcnRpb25Ob2RlKSxcbiAgICAgICAgICAgIHRlcm1WZXJpZmllZCA9IHZlcmlmeVRlcm1Bc1ZhcmlhYmxlKHRlcm1Ob2RlLCB0eXBlcywgbmFtZXMsIHZhbHVlcywgY29udGV4dCk7XG5cbiAgICAgIGlmICh0ZXJtVmVyaWZpZWQpIHtcbiAgICAgICAgY29uc3QgZmlyc3ROYW1lID0gZmlyc3QobmFtZXMpLFxuICAgICAgICAgICAgICBmaXJzdFZhbHVlID0gZmlyc3QodmFsdWVzKSxcbiAgICAgICAgICAgICAgdmFyaWFibGVOYW1lID0gZmlyc3ROYW1lLCAvLy9cbiAgICAgICAgICAgICAgdmFsdWUgPSBmaXJzdFZhbHVlO1xuXG4gICAgICAgIGlmICh2YWx1ZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgY29udGV4dC5lcnJvcihgVGhlIHZhbHVlIG9mIHRoZSAke3ZhcmlhYmxlTmFtZX0gdmFyaWFibGUgaXMgbm90IHVuZGVmaW5lZC5gLCB0eXBlQXNzZXJ0aW9uTm9kZSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY29uc3QgdHlwZSA9IGNvbnRleHQuZmluZFR5cGVCeVR5cGVOYW1lKHR5cGVOYW1lKSxcbiAgICAgICAgICAgICAgICBmaXJzdFR5cGUgPSBmaXJzdCh0eXBlcyksXG4gICAgICAgICAgICAgICAgdmFyaWFibGVUeXBlID0gZmlyc3RUeXBlLCAvLy9cbiAgICAgICAgICAgICAgICB0eXBlU3ViVHlwZU9mVmFyaWFibGVUeXBlID0gdHlwZS5pc1N1YlR5cGVPZih2YXJpYWJsZVR5cGUpO1xuXG4gICAgICAgICAgaWYgKCF0eXBlU3ViVHlwZU9mVmFyaWFibGVUeXBlKSB7XG4gICAgICAgICAgICBjb250ZXh0LmVycm9yKGBUaGUgYXNzZXJ0ZWQgdHlwZSBvZiB0aGUgJHt2YXJpYWJsZU5hbWV9IHZhcmlhYmxlIGlzIG5vdCBhIHN1Yi10eXBlIG9mIGl0cyBkZWNsYXJlZCB0eXBlLmAsIHR5cGVBc3NlcnRpb25Ob2RlKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY29uc3QgbmFtZSA9IHZhcmlhYmxlTmFtZSwgIC8vL1xuICAgICAgICAgICAgICAgICAgdmFyaWFibGUgPSBWYXJpYWJsZS5mcm9tVHlwZUFuZE5hbWUodHlwZSwgbmFtZSk7XG5cbiAgICAgICAgICAgIGNvbnRleHQuYWRkVmFyaWFibGUodmFyaWFibGUpO1xuXG4gICAgICAgICAgICB0eXBlQXNzZXJ0aW9uVmVyaWZpZWQgPSB0cnVlO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiB0eXBlQXNzZXJ0aW9uVmVyaWZpZWQ7XG59XG4iXSwibmFtZXMiOlsidmVyaWZ5VHlwZUFzc2VydGlvbiIsInRlcm1Ob2RlUXVlcnkiLCJub2RlUXVlcnkiLCJ0eXBlTm9kZVF1ZXJ5IiwidHlwZUFzc2VydGlvbk5vZGUiLCJjb250ZXh0IiwidHlwZUFzc2VydGlvblZlcmlmaWVkIiwidHlwZU5vZGUiLCJ0eXBlTmFtZSIsInR5cGVOYW1lRnJvbVR5cGVOb2RlIiwidHlwZVByZXNlbnQiLCJpc1R5cGVQcmVzZW50QnlUeXBlTmFtZSIsImVycm9yIiwiZGVyaXZlZCIsImlzRGVyaXZlZCIsInR5cGVzIiwibmFtZXMiLCJ2YWx1ZXMiLCJ0ZXJtTm9kZSIsInRlcm1WZXJpZmllZCIsInZlcmlmeVRlcm1Bc1ZhcmlhYmxlIiwiZmlyc3ROYW1lIiwiZmlyc3QiLCJmaXJzdFZhbHVlIiwidmFyaWFibGVOYW1lIiwidmFsdWUiLCJ1bmRlZmluZWQiLCJ0eXBlIiwiZmluZFR5cGVCeVR5cGVOYW1lIiwiZmlyc3RUeXBlIiwidmFyaWFibGVUeXBlIiwidHlwZVN1YlR5cGVPZlZhcmlhYmxlVHlwZSIsImlzU3ViVHlwZU9mIiwibmFtZSIsInZhcmlhYmxlIiwiVmFyaWFibGUiLCJmcm9tVHlwZUFuZE5hbWUiLCJhZGRWYXJpYWJsZSJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7K0JBV0E7OztlQUF3QkE7Ozs2REFUSDttRUFDWTtxQkFFWDtxQkFDMEI7Ozs7OztBQUVoRCxJQUFNQyxnQkFBZ0JDLElBQUFBLGdCQUFTLEVBQUMsd0JBQzFCQyxnQkFBZ0JELElBQUFBLGdCQUFTLEVBQUM7QUFFakIsU0FBU0Ysb0JBQW9CSSxpQkFBaUIsRUFBRUMsT0FBTyxFQUFFO0lBQ3RFLElBQUlDLHdCQUF3QixLQUFLO0lBRWpDLElBQU1DLFdBQVdKLGNBQWNDLG9CQUN6QkksV0FBV0MsSUFBQUEsMkJBQW9CLEVBQUNGLFdBQ2hDRyxjQUFjTCxRQUFRTSx1QkFBdUIsQ0FBQ0g7SUFFcEQsSUFBSSxDQUFDRSxhQUFhO1FBQ2hCTCxRQUFRTyxLQUFLLENBQUMsQUFBQyxPQUFlLE9BQVRKLFVBQVMsMEJBQXdCSjtJQUN4RCxPQUFPO1FBQ0wsSUFBTVMsVUFBVVIsUUFBUVMsU0FBUztRQUVqQyxJQUFJRCxTQUFTO1lBQ1gsUUFBUTtRQUNWLE9BQU87WUFDTCxJQUFNRSxRQUFRLEVBQUUsRUFDVkMsUUFBUSxFQUFFLEVBQ1ZDLFNBQVMsRUFBRSxFQUNYQyxXQUFXakIsY0FBY0csb0JBQ3pCZSxlQUFlQyxJQUFBQSx1QkFBb0IsRUFBQ0YsVUFBVUgsT0FBT0MsT0FBT0MsUUFBUVo7WUFFMUUsSUFBSWMsY0FBYztnQkFDaEIsSUFBTUUsWUFBWUMsSUFBQUEsWUFBSyxFQUFDTixRQUNsQk8sYUFBYUQsSUFBQUEsWUFBSyxFQUFDTCxTQUNuQk8sZUFBZUgsV0FDZkksUUFBUUY7Z0JBRWQsSUFBSUUsVUFBVUMsV0FBVztvQkFDdkJyQixRQUFRTyxLQUFLLENBQUMsQUFBQyxvQkFBZ0MsT0FBYlksY0FBYSxnQ0FBOEJwQjtnQkFDL0UsT0FBTztvQkFDTCxJQUFNdUIsT0FBT3RCLFFBQVF1QixrQkFBa0IsQ0FBQ3BCLFdBQ2xDcUIsWUFBWVAsSUFBQUEsWUFBSyxFQUFDUCxRQUNsQmUsZUFBZUQsV0FDZkUsNEJBQTRCSixLQUFLSyxXQUFXLENBQUNGO29CQUVuRCxJQUFJLENBQUNDLDJCQUEyQjt3QkFDOUIxQixRQUFRTyxLQUFLLENBQUMsQUFBQyw0QkFBd0MsT0FBYlksY0FBYSxzREFBb0RwQjtvQkFDN0csT0FBTzt3QkFDTCxJQUFNNkIsT0FBT1QsY0FDUFUsV0FBV0MsaUJBQVEsQ0FBQ0MsZUFBZSxDQUFDVCxNQUFNTTt3QkFFaEQ1QixRQUFRZ0MsV0FBVyxDQUFDSDt3QkFFcEI1Qix3QkFBd0IsSUFBSTtvQkFDOUIsQ0FBQztnQkFDSCxDQUFDO1lBQ0gsQ0FBQztRQUNILENBQUM7SUFDSCxDQUFDO0lBRUQsT0FBT0E7QUFDVCJ9
@@ -22,7 +22,7 @@ function _interopRequireDefault(obj) {
22
22
  var labelNodesQuery = (0, _query.nodesQuery)("/axiom/label"), statementNodeQuery = (0, _query.nodeQuery)("/*/statement"), unqualifiedStatementNodeQuery = (0, _query.nodeQuery)("/axiom/unqualifiedStatement!"), indicativeConditionalNodeQuery = (0, _query.nodeQuery)("/axiom/indicativeConditional!");
23
23
  function verifyAxiom(axiomNode, context) {
24
24
  var labelNodes = labelNodesQuery(axiomNode), labelsString = (0, _string.nodesAsString)(labelNodes);
25
- context.debug("Verifying the '".concat(labelsString, "' axiom..."));
25
+ context.debug("Verifying the '".concat(labelsString, "' axiom..."), axiomNode);
26
26
  var proofContext = _proof.default.fromContext(context);
27
27
  context = proofContext; ///
28
28
  var unqualifiedStatementNode = unqualifiedStatementNodeQuery(axiomNode), indicativeConditionalNode = indicativeConditionalNodeQuery(axiomNode);
@@ -44,9 +44,9 @@ function verifyAxiom(axiomNode, context) {
44
44
  }
45
45
  }
46
46
  if (axiomVerified) {
47
- context.info("Verified the '".concat(labelsString, "' axiom."));
47
+ context.info("Verified the '".concat(labelsString, "' axiom."), axiomNode);
48
48
  }
49
49
  return axiomVerified;
50
50
  }
51
51
 
52
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy92ZXJpZnkvYXhpb20uanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmltcG9ydCBQcm9vZkNvbnRleHQgZnJvbSBcIi4uL2NvbnRleHQvcHJvb2ZcIjtcbmltcG9ydCB2ZXJpZnlVbnF1YWxpZmllZFN0YXRlbWVudCBmcm9tIFwiLi4vdmVyaWZ5L3N0YXRlbWVudC91bnF1YWxpZmllZFwiO1xuaW1wb3J0IHZlcmlmeUluZGljYXRpdmVDb25kaXRpb25hbCBmcm9tIFwiLi4vdmVyaWZ5L2luZGljYXRpdmVDb25kaXRpb25hbFwiO1xuXG5pbXBvcnQgeyBmaXJzdCwgc2Vjb25kIH0gZnJvbSBcIi4uL3V0aWxpdGllcy9hcnJheVwiO1xuaW1wb3J0IHsgbm9kZXNBc1N0cmluZyB9IGZyb20gXCIuLi91dGlsaXRpZXMvc3RyaW5nXCI7XG5pbXBvcnQgeyBub2RlUXVlcnksIG5vZGVzUXVlcnkgfSBmcm9tIFwiLi4vdXRpbGl0aWVzL3F1ZXJ5XCI7XG5cbmNvbnN0IGxhYmVsTm9kZXNRdWVyeSA9IG5vZGVzUXVlcnkoXCIvYXhpb20vbGFiZWxcIiksXG4gICAgICBzdGF0ZW1lbnROb2RlUXVlcnkgPSBub2RlUXVlcnkoXCIvKi9zdGF0ZW1lbnRcIiksXG4gICAgICB1bnF1YWxpZmllZFN0YXRlbWVudE5vZGVRdWVyeSA9IG5vZGVRdWVyeShcIi9heGlvbS91bnF1YWxpZmllZFN0YXRlbWVudCFcIiksXG4gICAgICBpbmRpY2F0aXZlQ29uZGl0aW9uYWxOb2RlUXVlcnkgPSBub2RlUXVlcnkoXCIvYXhpb20vaW5kaWNhdGl2ZUNvbmRpdGlvbmFsIVwiKTtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gdmVyaWZ5QXhpb20oYXhpb21Ob2RlLCBjb250ZXh0KSB7XG4gIGNvbnN0IGxhYmVsTm9kZXMgPSBsYWJlbE5vZGVzUXVlcnkoYXhpb21Ob2RlKSxcbiAgICAgICAgbGFiZWxzU3RyaW5nID0gbm9kZXNBc1N0cmluZyhsYWJlbE5vZGVzKTtcblxuICBjb250ZXh0LmRlYnVnKGBWZXJpZnlpbmcgdGhlICcke2xhYmVsc1N0cmluZ30nIGF4aW9tLi4uYCk7XG5cbiAgY29uc3QgcHJvb2ZDb250ZXh0ID0gUHJvb2ZDb250ZXh0LmZyb21Db250ZXh0KGNvbnRleHQpO1xuXG4gIGNvbnRleHQgPSBwcm9vZkNvbnRleHQ7IC8vL1xuXG4gIGNvbnN0IHVucXVhbGlmaWVkU3RhdGVtZW50Tm9kZSA9IHVucXVhbGlmaWVkU3RhdGVtZW50Tm9kZVF1ZXJ5KGF4aW9tTm9kZSksXG4gICAgICAgIGluZGljYXRpdmVDb25kaXRpb25hbE5vZGUgPSBpbmRpY2F0aXZlQ29uZGl0aW9uYWxOb2RlUXVlcnkoYXhpb21Ob2RlKTtcblxuICBsZXQgYXhpb21WZXJpZmllZCA9IGZhbHNlO1xuXG4gIGlmICh1bnF1YWxpZmllZFN0YXRlbWVudE5vZGUgIT09IG51bGwpIHtcbiAgICBjb25zdCB1bnF1YWxpZmllZFN0YXRlbWVudFZlcmlmaWVkID0gdmVyaWZ5VW5xdWFsaWZpZWRTdGF0ZW1lbnQodW5xdWFsaWZpZWRTdGF0ZW1lbnROb2RlLCBjb250ZXh0KTtcblxuICAgIGlmICh1bnF1YWxpZmllZFN0YXRlbWVudFZlcmlmaWVkKSB7XG4gICAgICBjb25zdCBzdGF0ZW1lbnROb2RlID0gc3RhdGVtZW50Tm9kZVF1ZXJ5KHVucXVhbGlmaWVkU3RhdGVtZW50Tm9kZSksXG4gICAgICAgICAgICBsYWJlbHMgPSBsYWJlbHNTdHJpbmcsICAvLy9cbiAgICAgICAgICAgIGF4aW9tID0gQXhpb20uZnJvbVN0YXRlbWVudE5vZGVBbmRMYWJlbHMoc3RhdGVtZW50Tm9kZSwgbGFiZWxzKTtcblxuICAgICAgY29udGV4dC5hZGRBeGlvbShheGlvbSk7XG5cbiAgICAgIGF4aW9tVmVyaWZpZWQgPSB0cnVlO1xuICAgIH1cbiAgfVxuXG4gIGlmIChpbmRpY2F0aXZlQ29uZGl0aW9uYWxOb2RlICE9PSBudWxsKSB7XG4gICAgY29uc3Qgc3RhdGVtZW50Tm9kZXMgPSBbXSxcbiAgICAgICAgICBpbmRpY2F0aXZlQ29uZGl0aW9uYWxWZXJpZmllZCA9IHZlcmlmeUluZGljYXRpdmVDb25kaXRpb25hbChpbmRpY2F0aXZlQ29uZGl0aW9uYWxOb2RlLCBzdGF0ZW1lbnROb2RlcywgY29udGV4dCk7XG5cbiAgICBpZiAoaW5kaWNhdGl2ZUNvbmRpdGlvbmFsVmVyaWZpZWQgIT09IG51bGwpIHtcbiAgICAgIGNvbnN0IGxhYmVscyA9IGxhYmVsc1N0cmluZywgIC8vL1xuICAgICAgICAgICAgZmlyc3RTdGF0ZW1lbnROb2RlID0gZmlyc3Qoc3RhdGVtZW50Tm9kZXMpLFxuICAgICAgICAgICAgc2Vjb25kU3RhdGVtZW50Tm9kZSA9IHNlY29uZChzdGF0ZW1lbnROb2RlcyksXG4gICAgICAgICAgICBzdXBwb3NpdGlvblN0YXRlbWVudE5vZGUgPSBmaXJzdFN0YXRlbWVudE5vZGUsICAvLy9cbiAgICAgICAgICAgIGNvbnNlcXVlbnRTdGF0ZW1lbnROb2RlID0gc2Vjb25kU3RhdGVtZW50Tm9kZSwgIC8vL1xuICAgICAgICAgICAgYXhpb20gPSBBeGlvbS5mcm9tU3VwcG9zaXRpb25TdGF0ZW1lbnROb2RlQ29uc2VxdWVudFN0YXRlbWVudE5vZGVBbmRMYWJlbHMoc3VwcG9zaXRpb25TdGF0ZW1lbnROb2RlLCBjb25zZXF1ZW50U3RhdGVtZW50Tm9kZSwgbGFiZWxzKTtcblxuICAgICAgY29udGV4dC5hZGRBeGlvbShheGlvbSk7XG5cbiAgICAgIGF4aW9tVmVyaWZpZWQgPSB0cnVlO1xuICAgIH1cbiAgfVxuXG4gIGlmIChheGlvbVZlcmlmaWVkKSB7XG4gICAgY29udGV4dC5pbmZvKGBWZXJpZmllZCB0aGUgJyR7bGFiZWxzU3RyaW5nfScgYXhpb20uYCk7XG4gIH1cblxuICByZXR1cm4gYXhpb21WZXJpZmllZDtcbn1cbiJdLCJuYW1lcyI6WyJ2ZXJpZnlBeGlvbSIsImxhYmVsTm9kZXNRdWVyeSIsIm5vZGVzUXVlcnkiLCJzdGF0ZW1lbnROb2RlUXVlcnkiLCJub2RlUXVlcnkiLCJ1bnF1YWxpZmllZFN0YXRlbWVudE5vZGVRdWVyeSIsImluZGljYXRpdmVDb25kaXRpb25hbE5vZGVRdWVyeSIsImF4aW9tTm9kZSIsImNvbnRleHQiLCJsYWJlbE5vZGVzIiwibGFiZWxzU3RyaW5nIiwibm9kZXNBc1N0cmluZyIsImRlYnVnIiwicHJvb2ZDb250ZXh0IiwiUHJvb2ZDb250ZXh0IiwiZnJvbUNvbnRleHQiLCJ1bnF1YWxpZmllZFN0YXRlbWVudE5vZGUiLCJpbmRpY2F0aXZlQ29uZGl0aW9uYWxOb2RlIiwiYXhpb21WZXJpZmllZCIsInVucXVhbGlmaWVkU3RhdGVtZW50VmVyaWZpZWQiLCJ2ZXJpZnlVbnF1YWxpZmllZFN0YXRlbWVudCIsInN0YXRlbWVudE5vZGUiLCJsYWJlbHMiLCJheGlvbSIsIkF4aW9tIiwiZnJvbVN0YXRlbWVudE5vZGVBbmRMYWJlbHMiLCJhZGRBeGlvbSIsInN0YXRlbWVudE5vZGVzIiwiaW5kaWNhdGl2ZUNvbmRpdGlvbmFsVmVyaWZpZWQiLCJ2ZXJpZnlJbmRpY2F0aXZlQ29uZGl0aW9uYWwiLCJmaXJzdFN0YXRlbWVudE5vZGUiLCJmaXJzdCIsInNlY29uZFN0YXRlbWVudE5vZGUiLCJzZWNvbmQiLCJzdXBwb3NpdGlvblN0YXRlbWVudE5vZGUiLCJjb25zZXF1ZW50U3RhdGVtZW50Tm9kZSIsImZyb21TdXBwb3NpdGlvblN0YXRlbWVudE5vZGVDb25zZXF1ZW50U3RhdGVtZW50Tm9kZUFuZExhYmVscyIsImluZm8iXSwibWFwcGluZ3MiOiJBQUFBOzs7OytCQWVBOzs7ZUFBd0JBOzs7MERBYkM7Z0VBQ2M7MEVBQ0M7cUJBRVY7c0JBQ0E7cUJBQ1E7Ozs7OztBQUV0QyxJQUFNQyxrQkFBa0JDLElBQUFBLGlCQUFVLEVBQUMsaUJBQzdCQyxxQkFBcUJDLElBQUFBLGdCQUFTLEVBQUMsaUJBQy9CQyxnQ0FBZ0NELElBQUFBLGdCQUFTLEVBQUMsaUNBQzFDRSxpQ0FBaUNGLElBQUFBLGdCQUFTLEVBQUM7QUFFbEMsU0FBU0osWUFBWU8sU0FBUyxFQUFFQyxPQUFPLEVBQUU7SUFDdEQsSUFBTUMsYUFBYVIsZ0JBQWdCTSxZQUM3QkcsZUFBZUMsSUFBQUEscUJBQWEsRUFBQ0Y7SUFFbkNELFFBQVFJLEtBQUssQ0FBQyxBQUFDLGtCQUE4QixPQUFiRixjQUFhO0lBRTdDLElBQU1HLGVBQWVDLGNBQVksQ0FBQ0MsV0FBVyxDQUFDUDtJQUU5Q0EsVUFBVUssY0FBYyxHQUFHO0lBRTNCLElBQU1HLDJCQUEyQlgsOEJBQThCRSxZQUN6RFUsNEJBQTRCWCwrQkFBK0JDO0lBRWpFLElBQUlXLGdCQUFnQixLQUFLO0lBRXpCLElBQUlGLDZCQUE2QixJQUFJLEVBQUU7UUFDckMsSUFBTUcsK0JBQStCQyxJQUFBQSxvQkFBMEIsRUFBQ0osMEJBQTBCUjtRQUUxRixJQUFJVyw4QkFBOEI7WUFDaEMsSUFBTUUsZ0JBQWdCbEIsbUJBQW1CYSwyQkFDbkNNLFNBQVNaLGNBQ1RhLFFBQVFDLE1BQU1DLDBCQUEwQixDQUFDSixlQUFlQztZQUU5RGQsUUFBUWtCLFFBQVEsQ0FBQ0g7WUFFakJMLGdCQUFnQixJQUFJO1FBQ3RCLENBQUM7SUFDSCxDQUFDO0lBRUQsSUFBSUQsOEJBQThCLElBQUksRUFBRTtRQUN0QyxJQUFNVSxpQkFBaUIsRUFBRSxFQUNuQkMsZ0NBQWdDQyxJQUFBQSw4QkFBMkIsRUFBQ1osMkJBQTJCVSxnQkFBZ0JuQjtRQUU3RyxJQUFJb0Isa0NBQWtDLElBQUksRUFBRTtZQUMxQyxJQUFNTixVQUFTWixjQUNUb0IscUJBQXFCQyxJQUFBQSxZQUFLLEVBQUNKLGlCQUMzQkssc0JBQXNCQyxJQUFBQSxhQUFNLEVBQUNOLGlCQUM3Qk8sMkJBQTJCSixvQkFDM0JLLDBCQUEwQkgscUJBQzFCVCxTQUFRQyxNQUFNWSw0REFBNEQsQ0FBQ0YsMEJBQTBCQyx5QkFBeUJiO1lBRXBJZCxRQUFRa0IsUUFBUSxDQUFDSDtZQUVqQkwsZ0JBQWdCLElBQUk7UUFDdEIsQ0FBQztJQUNILENBQUM7SUFFRCxJQUFJQSxlQUFlO1FBQ2pCVixRQUFRNkIsSUFBSSxDQUFDLEFBQUMsaUJBQTZCLE9BQWIzQixjQUFhO0lBQzdDLENBQUM7SUFFRCxPQUFPUTtBQUNUIn0=
52
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy92ZXJpZnkvYXhpb20uanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmltcG9ydCBQcm9vZkNvbnRleHQgZnJvbSBcIi4uL2NvbnRleHQvcHJvb2ZcIjtcbmltcG9ydCB2ZXJpZnlVbnF1YWxpZmllZFN0YXRlbWVudCBmcm9tIFwiLi4vdmVyaWZ5L3N0YXRlbWVudC91bnF1YWxpZmllZFwiO1xuaW1wb3J0IHZlcmlmeUluZGljYXRpdmVDb25kaXRpb25hbCBmcm9tIFwiLi4vdmVyaWZ5L2luZGljYXRpdmVDb25kaXRpb25hbFwiO1xuXG5pbXBvcnQgeyBmaXJzdCwgc2Vjb25kIH0gZnJvbSBcIi4uL3V0aWxpdGllcy9hcnJheVwiO1xuaW1wb3J0IHsgbm9kZXNBc1N0cmluZyB9IGZyb20gXCIuLi91dGlsaXRpZXMvc3RyaW5nXCI7XG5pbXBvcnQgeyBub2RlUXVlcnksIG5vZGVzUXVlcnkgfSBmcm9tIFwiLi4vdXRpbGl0aWVzL3F1ZXJ5XCI7XG5cbmNvbnN0IGxhYmVsTm9kZXNRdWVyeSA9IG5vZGVzUXVlcnkoXCIvYXhpb20vbGFiZWxcIiksXG4gICAgICBzdGF0ZW1lbnROb2RlUXVlcnkgPSBub2RlUXVlcnkoXCIvKi9zdGF0ZW1lbnRcIiksXG4gICAgICB1bnF1YWxpZmllZFN0YXRlbWVudE5vZGVRdWVyeSA9IG5vZGVRdWVyeShcIi9heGlvbS91bnF1YWxpZmllZFN0YXRlbWVudCFcIiksXG4gICAgICBpbmRpY2F0aXZlQ29uZGl0aW9uYWxOb2RlUXVlcnkgPSBub2RlUXVlcnkoXCIvYXhpb20vaW5kaWNhdGl2ZUNvbmRpdGlvbmFsIVwiKTtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gdmVyaWZ5QXhpb20oYXhpb21Ob2RlLCBjb250ZXh0KSB7XG4gIGNvbnN0IGxhYmVsTm9kZXMgPSBsYWJlbE5vZGVzUXVlcnkoYXhpb21Ob2RlKSxcbiAgICAgICAgbGFiZWxzU3RyaW5nID0gbm9kZXNBc1N0cmluZyhsYWJlbE5vZGVzKTtcblxuICBjb250ZXh0LmRlYnVnKGBWZXJpZnlpbmcgdGhlICcke2xhYmVsc1N0cmluZ30nIGF4aW9tLi4uYCwgYXhpb21Ob2RlKTtcblxuICBjb25zdCBwcm9vZkNvbnRleHQgPSBQcm9vZkNvbnRleHQuZnJvbUNvbnRleHQoY29udGV4dCk7XG5cbiAgY29udGV4dCA9IHByb29mQ29udGV4dDsgLy8vXG5cbiAgY29uc3QgdW5xdWFsaWZpZWRTdGF0ZW1lbnROb2RlID0gdW5xdWFsaWZpZWRTdGF0ZW1lbnROb2RlUXVlcnkoYXhpb21Ob2RlKSxcbiAgICAgICAgaW5kaWNhdGl2ZUNvbmRpdGlvbmFsTm9kZSA9IGluZGljYXRpdmVDb25kaXRpb25hbE5vZGVRdWVyeShheGlvbU5vZGUpO1xuXG4gIGxldCBheGlvbVZlcmlmaWVkID0gZmFsc2U7XG5cbiAgaWYgKHVucXVhbGlmaWVkU3RhdGVtZW50Tm9kZSAhPT0gbnVsbCkge1xuICAgIGNvbnN0IHVucXVhbGlmaWVkU3RhdGVtZW50VmVyaWZpZWQgPSB2ZXJpZnlVbnF1YWxpZmllZFN0YXRlbWVudCh1bnF1YWxpZmllZFN0YXRlbWVudE5vZGUsIGNvbnRleHQpO1xuXG4gICAgaWYgKHVucXVhbGlmaWVkU3RhdGVtZW50VmVyaWZpZWQpIHtcbiAgICAgIGNvbnN0IHN0YXRlbWVudE5vZGUgPSBzdGF0ZW1lbnROb2RlUXVlcnkodW5xdWFsaWZpZWRTdGF0ZW1lbnROb2RlKSxcbiAgICAgICAgICAgIGxhYmVscyA9IGxhYmVsc1N0cmluZywgIC8vL1xuICAgICAgICAgICAgYXhpb20gPSBBeGlvbS5mcm9tU3RhdGVtZW50Tm9kZUFuZExhYmVscyhzdGF0ZW1lbnROb2RlLCBsYWJlbHMpO1xuXG4gICAgICBjb250ZXh0LmFkZEF4aW9tKGF4aW9tKTtcblxuICAgICAgYXhpb21WZXJpZmllZCA9IHRydWU7XG4gICAgfVxuICB9XG5cbiAgaWYgKGluZGljYXRpdmVDb25kaXRpb25hbE5vZGUgIT09IG51bGwpIHtcbiAgICBjb25zdCBzdGF0ZW1lbnROb2RlcyA9IFtdLFxuICAgICAgICAgIGluZGljYXRpdmVDb25kaXRpb25hbFZlcmlmaWVkID0gdmVyaWZ5SW5kaWNhdGl2ZUNvbmRpdGlvbmFsKGluZGljYXRpdmVDb25kaXRpb25hbE5vZGUsIHN0YXRlbWVudE5vZGVzLCBjb250ZXh0KTtcblxuICAgIGlmIChpbmRpY2F0aXZlQ29uZGl0aW9uYWxWZXJpZmllZCAhPT0gbnVsbCkge1xuICAgICAgY29uc3QgbGFiZWxzID0gbGFiZWxzU3RyaW5nLCAgLy8vXG4gICAgICAgICAgICBmaXJzdFN0YXRlbWVudE5vZGUgPSBmaXJzdChzdGF0ZW1lbnROb2RlcyksXG4gICAgICAgICAgICBzZWNvbmRTdGF0ZW1lbnROb2RlID0gc2Vjb25kKHN0YXRlbWVudE5vZGVzKSxcbiAgICAgICAgICAgIHN1cHBvc2l0aW9uU3RhdGVtZW50Tm9kZSA9IGZpcnN0U3RhdGVtZW50Tm9kZSwgIC8vL1xuICAgICAgICAgICAgY29uc2VxdWVudFN0YXRlbWVudE5vZGUgPSBzZWNvbmRTdGF0ZW1lbnROb2RlLCAgLy8vXG4gICAgICAgICAgICBheGlvbSA9IEF4aW9tLmZyb21TdXBwb3NpdGlvblN0YXRlbWVudE5vZGVDb25zZXF1ZW50U3RhdGVtZW50Tm9kZUFuZExhYmVscyhzdXBwb3NpdGlvblN0YXRlbWVudE5vZGUsIGNvbnNlcXVlbnRTdGF0ZW1lbnROb2RlLCBsYWJlbHMpO1xuXG4gICAgICBjb250ZXh0LmFkZEF4aW9tKGF4aW9tKTtcblxuICAgICAgYXhpb21WZXJpZmllZCA9IHRydWU7XG4gICAgfVxuICB9XG5cbiAgaWYgKGF4aW9tVmVyaWZpZWQpIHtcbiAgICBjb250ZXh0LmluZm8oYFZlcmlmaWVkIHRoZSAnJHtsYWJlbHNTdHJpbmd9JyBheGlvbS5gLCBheGlvbU5vZGUpO1xuICB9XG5cbiAgcmV0dXJuIGF4aW9tVmVyaWZpZWQ7XG59XG4iXSwibmFtZXMiOlsidmVyaWZ5QXhpb20iLCJsYWJlbE5vZGVzUXVlcnkiLCJub2Rlc1F1ZXJ5Iiwic3RhdGVtZW50Tm9kZVF1ZXJ5Iiwibm9kZVF1ZXJ5IiwidW5xdWFsaWZpZWRTdGF0ZW1lbnROb2RlUXVlcnkiLCJpbmRpY2F0aXZlQ29uZGl0aW9uYWxOb2RlUXVlcnkiLCJheGlvbU5vZGUiLCJjb250ZXh0IiwibGFiZWxOb2RlcyIsImxhYmVsc1N0cmluZyIsIm5vZGVzQXNTdHJpbmciLCJkZWJ1ZyIsInByb29mQ29udGV4dCIsIlByb29mQ29udGV4dCIsImZyb21Db250ZXh0IiwidW5xdWFsaWZpZWRTdGF0ZW1lbnROb2RlIiwiaW5kaWNhdGl2ZUNvbmRpdGlvbmFsTm9kZSIsImF4aW9tVmVyaWZpZWQiLCJ1bnF1YWxpZmllZFN0YXRlbWVudFZlcmlmaWVkIiwidmVyaWZ5VW5xdWFsaWZpZWRTdGF0ZW1lbnQiLCJzdGF0ZW1lbnROb2RlIiwibGFiZWxzIiwiYXhpb20iLCJBeGlvbSIsImZyb21TdGF0ZW1lbnROb2RlQW5kTGFiZWxzIiwiYWRkQXhpb20iLCJzdGF0ZW1lbnROb2RlcyIsImluZGljYXRpdmVDb25kaXRpb25hbFZlcmlmaWVkIiwidmVyaWZ5SW5kaWNhdGl2ZUNvbmRpdGlvbmFsIiwiZmlyc3RTdGF0ZW1lbnROb2RlIiwiZmlyc3QiLCJzZWNvbmRTdGF0ZW1lbnROb2RlIiwic2Vjb25kIiwic3VwcG9zaXRpb25TdGF0ZW1lbnROb2RlIiwiY29uc2VxdWVudFN0YXRlbWVudE5vZGUiLCJmcm9tU3VwcG9zaXRpb25TdGF0ZW1lbnROb2RlQ29uc2VxdWVudFN0YXRlbWVudE5vZGVBbmRMYWJlbHMiLCJpbmZvIl0sIm1hcHBpbmdzIjoiQUFBQTs7OzsrQkFlQTs7O2VBQXdCQTs7OzBEQWJDO2dFQUNjOzBFQUNDO3FCQUVWO3NCQUNBO3FCQUNROzs7Ozs7QUFFdEMsSUFBTUMsa0JBQWtCQyxJQUFBQSxpQkFBVSxFQUFDLGlCQUM3QkMscUJBQXFCQyxJQUFBQSxnQkFBUyxFQUFDLGlCQUMvQkMsZ0NBQWdDRCxJQUFBQSxnQkFBUyxFQUFDLGlDQUMxQ0UsaUNBQWlDRixJQUFBQSxnQkFBUyxFQUFDO0FBRWxDLFNBQVNKLFlBQVlPLFNBQVMsRUFBRUMsT0FBTyxFQUFFO0lBQ3RELElBQU1DLGFBQWFSLGdCQUFnQk0sWUFDN0JHLGVBQWVDLElBQUFBLHFCQUFhLEVBQUNGO0lBRW5DRCxRQUFRSSxLQUFLLENBQUMsQUFBQyxrQkFBOEIsT0FBYkYsY0FBYSxlQUFhSDtJQUUxRCxJQUFNTSxlQUFlQyxjQUFZLENBQUNDLFdBQVcsQ0FBQ1A7SUFFOUNBLFVBQVVLLGNBQWMsR0FBRztJQUUzQixJQUFNRywyQkFBMkJYLDhCQUE4QkUsWUFDekRVLDRCQUE0QlgsK0JBQStCQztJQUVqRSxJQUFJVyxnQkFBZ0IsS0FBSztJQUV6QixJQUFJRiw2QkFBNkIsSUFBSSxFQUFFO1FBQ3JDLElBQU1HLCtCQUErQkMsSUFBQUEsb0JBQTBCLEVBQUNKLDBCQUEwQlI7UUFFMUYsSUFBSVcsOEJBQThCO1lBQ2hDLElBQU1FLGdCQUFnQmxCLG1CQUFtQmEsMkJBQ25DTSxTQUFTWixjQUNUYSxRQUFRQyxNQUFNQywwQkFBMEIsQ0FBQ0osZUFBZUM7WUFFOURkLFFBQVFrQixRQUFRLENBQUNIO1lBRWpCTCxnQkFBZ0IsSUFBSTtRQUN0QixDQUFDO0lBQ0gsQ0FBQztJQUVELElBQUlELDhCQUE4QixJQUFJLEVBQUU7UUFDdEMsSUFBTVUsaUJBQWlCLEVBQUUsRUFDbkJDLGdDQUFnQ0MsSUFBQUEsOEJBQTJCLEVBQUNaLDJCQUEyQlUsZ0JBQWdCbkI7UUFFN0csSUFBSW9CLGtDQUFrQyxJQUFJLEVBQUU7WUFDMUMsSUFBTU4sVUFBU1osY0FDVG9CLHFCQUFxQkMsSUFBQUEsWUFBSyxFQUFDSixpQkFDM0JLLHNCQUFzQkMsSUFBQUEsYUFBTSxFQUFDTixpQkFDN0JPLDJCQUEyQkosb0JBQzNCSywwQkFBMEJILHFCQUMxQlQsU0FBUUMsTUFBTVksNERBQTRELENBQUNGLDBCQUEwQkMseUJBQXlCYjtZQUVwSWQsUUFBUWtCLFFBQVEsQ0FBQ0g7WUFFakJMLGdCQUFnQixJQUFJO1FBQ3RCLENBQUM7SUFDSCxDQUFDO0lBRUQsSUFBSUEsZUFBZTtRQUNqQlYsUUFBUTZCLElBQUksQ0FBQyxBQUFDLGlCQUE2QixPQUFiM0IsY0FBYSxhQUFXSDtJQUN4RCxDQUFDO0lBRUQsT0FBT1c7QUFDVCJ9
@@ -13,7 +13,7 @@ function verifyLabel(labelNode, labels, context) {
13
13
  var labelVerified = false;
14
14
  var labelName = (0, _query.labelNameFromLabelNode)(labelNode), label = labelName, labelPresent = context.isLabelPresent(label);
15
15
  if (labelPresent) {
16
- context.error("The label ".concat(label, " is already present"));
16
+ context.error("The label ".concat(label, " is already present"), labelNode);
17
17
  } else {
18
18
  labels.push(label);
19
19
  labelVerified = true;
@@ -21,4 +21,4 @@ function verifyLabel(labelNode, labels, context) {
21
21
  return labelVerified;
22
22
  }
23
23
 
24
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy92ZXJpZnkvbGFiZWwuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmltcG9ydCB7IGxhYmVsTmFtZUZyb21MYWJlbE5vZGUgfSBmcm9tIFwiLi4vdXRpbGl0aWVzL3F1ZXJ5XCI7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHZlcmlmeUxhYmVsKGxhYmVsTm9kZSwgbGFiZWxzLCBjb250ZXh0KSB7XG4gIGxldCBsYWJlbFZlcmlmaWVkID0gZmFsc2U7XG5cbiAgY29uc3QgbGFiZWxOYW1lID0gbGFiZWxOYW1lRnJvbUxhYmVsTm9kZShsYWJlbE5vZGUpLFxuICAgICAgICBsYWJlbCA9IGxhYmVsTmFtZSwgIC8vL1xuICAgICAgICBsYWJlbFByZXNlbnQgPSBjb250ZXh0LmlzTGFiZWxQcmVzZW50KGxhYmVsKTtcblxuICBpZiAobGFiZWxQcmVzZW50KSB7XG4gICAgY29udGV4dC5lcnJvcihgVGhlIGxhYmVsICR7bGFiZWx9IGlzIGFscmVhZHkgcHJlc2VudGApO1xuICB9IGVsc2Uge1xuICAgIGxhYmVscy5wdXNoKGxhYmVsKTtcblxuICAgIGxhYmVsVmVyaWZpZWQgPSB0cnVlO1xuICB9XG5cbiAgcmV0dXJuIGxhYmVsVmVyaWZpZWQ7XG59XG4iXSwibmFtZXMiOlsidmVyaWZ5TGFiZWwiLCJsYWJlbE5vZGUiLCJsYWJlbHMiLCJjb250ZXh0IiwibGFiZWxWZXJpZmllZCIsImxhYmVsTmFtZSIsImxhYmVsTmFtZUZyb21MYWJlbE5vZGUiLCJsYWJlbCIsImxhYmVsUHJlc2VudCIsImlzTGFiZWxQcmVzZW50IiwiZXJyb3IiLCJwdXNoIl0sIm1hcHBpbmdzIjoiQUFBQTs7OzsrQkFJQTs7O2VBQXdCQTs7O3FCQUZlO0FBRXhCLFNBQVNBLFlBQVlDLFNBQVMsRUFBRUMsTUFBTSxFQUFFQyxPQUFPLEVBQUU7SUFDOUQsSUFBSUMsZ0JBQWdCLEtBQUs7SUFFekIsSUFBTUMsWUFBWUMsSUFBQUEsNkJBQXNCLEVBQUNMLFlBQ25DTSxRQUFRRixXQUNSRyxlQUFlTCxRQUFRTSxjQUFjLENBQUNGO0lBRTVDLElBQUlDLGNBQWM7UUFDaEJMLFFBQVFPLEtBQUssQ0FBQyxBQUFDLGFBQWtCLE9BQU5ILE9BQU07SUFDbkMsT0FBTztRQUNMTCxPQUFPUyxJQUFJLENBQUNKO1FBRVpILGdCQUFnQixJQUFJO0lBQ3RCLENBQUM7SUFFRCxPQUFPQTtBQUNUIn0=
24
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy92ZXJpZnkvbGFiZWwuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmltcG9ydCB7IGxhYmVsTmFtZUZyb21MYWJlbE5vZGUgfSBmcm9tIFwiLi4vdXRpbGl0aWVzL3F1ZXJ5XCI7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHZlcmlmeUxhYmVsKGxhYmVsTm9kZSwgbGFiZWxzLCBjb250ZXh0KSB7XG4gIGxldCBsYWJlbFZlcmlmaWVkID0gZmFsc2U7XG5cbiAgY29uc3QgbGFiZWxOYW1lID0gbGFiZWxOYW1lRnJvbUxhYmVsTm9kZShsYWJlbE5vZGUpLFxuICAgICAgICBsYWJlbCA9IGxhYmVsTmFtZSwgIC8vL1xuICAgICAgICBsYWJlbFByZXNlbnQgPSBjb250ZXh0LmlzTGFiZWxQcmVzZW50KGxhYmVsKTtcblxuICBpZiAobGFiZWxQcmVzZW50KSB7XG4gICAgY29udGV4dC5lcnJvcihgVGhlIGxhYmVsICR7bGFiZWx9IGlzIGFscmVhZHkgcHJlc2VudGAsIGxhYmVsTm9kZSk7XG4gIH0gZWxzZSB7XG4gICAgbGFiZWxzLnB1c2gobGFiZWwpO1xuXG4gICAgbGFiZWxWZXJpZmllZCA9IHRydWU7XG4gIH1cblxuICByZXR1cm4gbGFiZWxWZXJpZmllZDtcbn1cbiJdLCJuYW1lcyI6WyJ2ZXJpZnlMYWJlbCIsImxhYmVsTm9kZSIsImxhYmVscyIsImNvbnRleHQiLCJsYWJlbFZlcmlmaWVkIiwibGFiZWxOYW1lIiwibGFiZWxOYW1lRnJvbUxhYmVsTm9kZSIsImxhYmVsIiwibGFiZWxQcmVzZW50IiwiaXNMYWJlbFByZXNlbnQiLCJlcnJvciIsInB1c2giXSwibWFwcGluZ3MiOiJBQUFBOzs7OytCQUlBOzs7ZUFBd0JBOzs7cUJBRmU7QUFFeEIsU0FBU0EsWUFBWUMsU0FBUyxFQUFFQyxNQUFNLEVBQUVDLE9BQU8sRUFBRTtJQUM5RCxJQUFJQyxnQkFBZ0IsS0FBSztJQUV6QixJQUFNQyxZQUFZQyxJQUFBQSw2QkFBc0IsRUFBQ0wsWUFDbkNNLFFBQVFGLFdBQ1JHLGVBQWVMLFFBQVFNLGNBQWMsQ0FBQ0Y7SUFFNUMsSUFBSUMsY0FBYztRQUNoQkwsUUFBUU8sS0FBSyxDQUFDLEFBQUMsYUFBa0IsT0FBTkgsT0FBTSx3QkFBc0JOO0lBQ3pELE9BQU87UUFDTEMsT0FBT1MsSUFBSSxDQUFDSjtRQUVaSCxnQkFBZ0IsSUFBSTtJQUN0QixDQUFDO0lBRUQsT0FBT0E7QUFDVCJ9
@@ -23,9 +23,9 @@ function verifyQualifiedMetastatement(qualifiedMetastatementNode, context) {
23
23
  }
24
24
  if (qualifiedMetastatementVerified) {
25
25
  var metastatementString = (0, _string.nodeAsString)(metastatementNode);
26
- context.debug("Verified the '".concat(metastatementString, "' qualified metastatement."));
26
+ context.debug("Verified the '".concat(metastatementString, "' qualified metastatement."), qualifiedMetastatementNode);
27
27
  }
28
28
  return qualifiedMetastatementVerified;
29
29
  }
30
30
 
31
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy92ZXJpZnkvbWV0YXN0YXRlbWVudC9xdWFsaWZpZWQuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmltcG9ydCB7IG5vZGVBc1N0cmluZyB9IGZyb20gXCIuLi8uLi91dGlsaXRpZXMvc3RyaW5nXCI7XG5pbXBvcnQgeyBub2RlUXVlcnksIHJlZmVyZW5jZU5hbWVGcm9tUmVmZXJlbmNlTm9kZSB9IGZyb20gXCIuLi8uLi91dGlsaXRpZXMvcXVlcnlcIjtcblxuY29uc3QgcmVmZXJlbmNlTm9kZVF1ZXJ5ID0gbm9kZVF1ZXJ5KFwiL3F1YWxpZmllZE1ldGFzdGF0ZW1lbnQvcXVhbGlmaWNhdGlvbiEvcmVmZXJlbmNlIVwiKSxcbiAgICAgIG1ldGFzdGF0ZW1lbnROb2RlUXVlcnkgPSBub2RlUXVlcnkoXCIvcXVhbGlmaWVkTWV0YXN0YXRlbWVudC9tZXRhc3RhdGVtZW50IVwiKTtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gdmVyaWZ5UXVhbGlmaWVkTWV0YXN0YXRlbWVudChxdWFsaWZpZWRNZXRhc3RhdGVtZW50Tm9kZSwgY29udGV4dCkge1xuICBsZXQgcXVhbGlmaWVkTWV0YXN0YXRlbWVudFZlcmlmaWVkID0gZmFsc2U7XG5cbiAgY29uc3QgbWV0YXN0YXRlbWVudE5vZGUgPSBtZXRhc3RhdGVtZW50Tm9kZVF1ZXJ5KHF1YWxpZmllZE1ldGFzdGF0ZW1lbnROb2RlKTtcblxuICBpZiAobWV0YXN0YXRlbWVudE5vZGUgIT09IG51bGwpIHtcbiAgICBjb25zdCByZWZlcmVuY2VOb2RlID0gcmVmZXJlbmNlTm9kZVF1ZXJ5KHF1YWxpZmllZE1ldGFzdGF0ZW1lbnROb2RlKSxcbiAgICAgICAgICByZWZlcmVuY2VOYW1lID0gcmVmZXJlbmNlTmFtZUZyb21SZWZlcmVuY2VOb2RlKHJlZmVyZW5jZU5vZGUpLFxuICAgICAgICAgIHJ1bGUgPSBjb250ZXh0LmZpbmRSdWxlQnlSZWZlcmVuY2VOYW1lKHJlZmVyZW5jZU5hbWUpO1xuXG4gICAgaWYgKHJ1bGUgIT09IG51bGwpIHtcbiAgICAgIGNvbnN0IHJ1bGVNYXRjaGVzTWV0YXN0YXRlbWVudCA9IHJ1bGUubWF0Y2hNZXRhc3RhdGVtZW50KG1ldGFzdGF0ZW1lbnROb2RlLCBjb250ZXh0KTtcblxuICAgICAgcXVhbGlmaWVkTWV0YXN0YXRlbWVudFZlcmlmaWVkID0gcnVsZU1hdGNoZXNNZXRhc3RhdGVtZW50OyAgLy8vXG4gICAgfVxuICB9XG5cbiAgaWYgKHF1YWxpZmllZE1ldGFzdGF0ZW1lbnRWZXJpZmllZCkge1xuICAgIGNvbnN0IG1ldGFzdGF0ZW1lbnRTdHJpbmcgPSBub2RlQXNTdHJpbmcobWV0YXN0YXRlbWVudE5vZGUpO1xuXG4gICAgY29udGV4dC5kZWJ1ZyhgVmVyaWZpZWQgdGhlICcke21ldGFzdGF0ZW1lbnRTdHJpbmd9JyBxdWFsaWZpZWQgbWV0YXN0YXRlbWVudC5gKTtcbiAgfVxuXG4gIHJldHVybiBxdWFsaWZpZWRNZXRhc3RhdGVtZW50VmVyaWZpZWQ7XG59XG4iXSwibmFtZXMiOlsidmVyaWZ5UXVhbGlmaWVkTWV0YXN0YXRlbWVudCIsInJlZmVyZW5jZU5vZGVRdWVyeSIsIm5vZGVRdWVyeSIsIm1ldGFzdGF0ZW1lbnROb2RlUXVlcnkiLCJxdWFsaWZpZWRNZXRhc3RhdGVtZW50Tm9kZSIsImNvbnRleHQiLCJxdWFsaWZpZWRNZXRhc3RhdGVtZW50VmVyaWZpZWQiLCJtZXRhc3RhdGVtZW50Tm9kZSIsInJlZmVyZW5jZU5vZGUiLCJyZWZlcmVuY2VOYW1lIiwicmVmZXJlbmNlTmFtZUZyb21SZWZlcmVuY2VOb2RlIiwicnVsZSIsImZpbmRSdWxlQnlSZWZlcmVuY2VOYW1lIiwicnVsZU1hdGNoZXNNZXRhc3RhdGVtZW50IiwibWF0Y2hNZXRhc3RhdGVtZW50IiwibWV0YXN0YXRlbWVudFN0cmluZyIsIm5vZGVBc1N0cmluZyIsImRlYnVnIl0sIm1hcHBpbmdzIjoiQUFBQTs7OzsrQkFRQTs7O2VBQXdCQTs7O3NCQU5LO3FCQUM2QjtBQUUxRCxJQUFNQyxxQkFBcUJDLElBQUFBLGdCQUFTLEVBQUMsc0RBQy9CQyx5QkFBeUJELElBQUFBLGdCQUFTLEVBQUM7QUFFMUIsU0FBU0YsNkJBQTZCSSwwQkFBMEIsRUFBRUMsT0FBTyxFQUFFO0lBQ3hGLElBQUlDLGlDQUFpQyxLQUFLO0lBRTFDLElBQU1DLG9CQUFvQkosdUJBQXVCQztJQUVqRCxJQUFJRyxzQkFBc0IsSUFBSSxFQUFFO1FBQzlCLElBQU1DLGdCQUFnQlAsbUJBQW1CRyw2QkFDbkNLLGdCQUFnQkMsSUFBQUEscUNBQThCLEVBQUNGLGdCQUMvQ0csT0FBT04sUUFBUU8sdUJBQXVCLENBQUNIO1FBRTdDLElBQUlFLFNBQVMsSUFBSSxFQUFFO1lBQ2pCLElBQU1FLDJCQUEyQkYsS0FBS0csa0JBQWtCLENBQUNQLG1CQUFtQkY7WUFFNUVDLGlDQUFpQ08sMEJBQTJCLEdBQUc7UUFDakUsQ0FBQztJQUNILENBQUM7SUFFRCxJQUFJUCxnQ0FBZ0M7UUFDbEMsSUFBTVMsc0JBQXNCQyxJQUFBQSxvQkFBWSxFQUFDVDtRQUV6Q0YsUUFBUVksS0FBSyxDQUFDLEFBQUMsaUJBQW9DLE9BQXBCRixxQkFBb0I7SUFDckQsQ0FBQztJQUVELE9BQU9UO0FBQ1QifQ==
31
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy92ZXJpZnkvbWV0YXN0YXRlbWVudC9xdWFsaWZpZWQuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmltcG9ydCB7IG5vZGVBc1N0cmluZyB9IGZyb20gXCIuLi8uLi91dGlsaXRpZXMvc3RyaW5nXCI7XG5pbXBvcnQgeyBub2RlUXVlcnksIHJlZmVyZW5jZU5hbWVGcm9tUmVmZXJlbmNlTm9kZSB9IGZyb20gXCIuLi8uLi91dGlsaXRpZXMvcXVlcnlcIjtcblxuY29uc3QgcmVmZXJlbmNlTm9kZVF1ZXJ5ID0gbm9kZVF1ZXJ5KFwiL3F1YWxpZmllZE1ldGFzdGF0ZW1lbnQvcXVhbGlmaWNhdGlvbiEvcmVmZXJlbmNlIVwiKSxcbiAgICAgIG1ldGFzdGF0ZW1lbnROb2RlUXVlcnkgPSBub2RlUXVlcnkoXCIvcXVhbGlmaWVkTWV0YXN0YXRlbWVudC9tZXRhc3RhdGVtZW50IVwiKTtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gdmVyaWZ5UXVhbGlmaWVkTWV0YXN0YXRlbWVudChxdWFsaWZpZWRNZXRhc3RhdGVtZW50Tm9kZSwgY29udGV4dCkge1xuICBsZXQgcXVhbGlmaWVkTWV0YXN0YXRlbWVudFZlcmlmaWVkID0gZmFsc2U7XG5cbiAgY29uc3QgbWV0YXN0YXRlbWVudE5vZGUgPSBtZXRhc3RhdGVtZW50Tm9kZVF1ZXJ5KHF1YWxpZmllZE1ldGFzdGF0ZW1lbnROb2RlKTtcblxuICBpZiAobWV0YXN0YXRlbWVudE5vZGUgIT09IG51bGwpIHtcbiAgICBjb25zdCByZWZlcmVuY2VOb2RlID0gcmVmZXJlbmNlTm9kZVF1ZXJ5KHF1YWxpZmllZE1ldGFzdGF0ZW1lbnROb2RlKSxcbiAgICAgICAgICByZWZlcmVuY2VOYW1lID0gcmVmZXJlbmNlTmFtZUZyb21SZWZlcmVuY2VOb2RlKHJlZmVyZW5jZU5vZGUpLFxuICAgICAgICAgIHJ1bGUgPSBjb250ZXh0LmZpbmRSdWxlQnlSZWZlcmVuY2VOYW1lKHJlZmVyZW5jZU5hbWUpO1xuXG4gICAgaWYgKHJ1bGUgIT09IG51bGwpIHtcbiAgICAgIGNvbnN0IHJ1bGVNYXRjaGVzTWV0YXN0YXRlbWVudCA9IHJ1bGUubWF0Y2hNZXRhc3RhdGVtZW50KG1ldGFzdGF0ZW1lbnROb2RlLCBjb250ZXh0KTtcblxuICAgICAgcXVhbGlmaWVkTWV0YXN0YXRlbWVudFZlcmlmaWVkID0gcnVsZU1hdGNoZXNNZXRhc3RhdGVtZW50OyAgLy8vXG4gICAgfVxuICB9XG5cbiAgaWYgKHF1YWxpZmllZE1ldGFzdGF0ZW1lbnRWZXJpZmllZCkge1xuICAgIGNvbnN0IG1ldGFzdGF0ZW1lbnRTdHJpbmcgPSBub2RlQXNTdHJpbmcobWV0YXN0YXRlbWVudE5vZGUpO1xuXG4gICAgY29udGV4dC5kZWJ1ZyhgVmVyaWZpZWQgdGhlICcke21ldGFzdGF0ZW1lbnRTdHJpbmd9JyBxdWFsaWZpZWQgbWV0YXN0YXRlbWVudC5gLCBxdWFsaWZpZWRNZXRhc3RhdGVtZW50Tm9kZSk7XG4gIH1cblxuICByZXR1cm4gcXVhbGlmaWVkTWV0YXN0YXRlbWVudFZlcmlmaWVkO1xufVxuIl0sIm5hbWVzIjpbInZlcmlmeVF1YWxpZmllZE1ldGFzdGF0ZW1lbnQiLCJyZWZlcmVuY2VOb2RlUXVlcnkiLCJub2RlUXVlcnkiLCJtZXRhc3RhdGVtZW50Tm9kZVF1ZXJ5IiwicXVhbGlmaWVkTWV0YXN0YXRlbWVudE5vZGUiLCJjb250ZXh0IiwicXVhbGlmaWVkTWV0YXN0YXRlbWVudFZlcmlmaWVkIiwibWV0YXN0YXRlbWVudE5vZGUiLCJyZWZlcmVuY2VOb2RlIiwicmVmZXJlbmNlTmFtZSIsInJlZmVyZW5jZU5hbWVGcm9tUmVmZXJlbmNlTm9kZSIsInJ1bGUiLCJmaW5kUnVsZUJ5UmVmZXJlbmNlTmFtZSIsInJ1bGVNYXRjaGVzTWV0YXN0YXRlbWVudCIsIm1hdGNoTWV0YXN0YXRlbWVudCIsIm1ldGFzdGF0ZW1lbnRTdHJpbmciLCJub2RlQXNTdHJpbmciLCJkZWJ1ZyJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7K0JBUUE7OztlQUF3QkE7OztzQkFOSztxQkFDNkI7QUFFMUQsSUFBTUMscUJBQXFCQyxJQUFBQSxnQkFBUyxFQUFDLHNEQUMvQkMseUJBQXlCRCxJQUFBQSxnQkFBUyxFQUFDO0FBRTFCLFNBQVNGLDZCQUE2QkksMEJBQTBCLEVBQUVDLE9BQU8sRUFBRTtJQUN4RixJQUFJQyxpQ0FBaUMsS0FBSztJQUUxQyxJQUFNQyxvQkFBb0JKLHVCQUF1QkM7SUFFakQsSUFBSUcsc0JBQXNCLElBQUksRUFBRTtRQUM5QixJQUFNQyxnQkFBZ0JQLG1CQUFtQkcsNkJBQ25DSyxnQkFBZ0JDLElBQUFBLHFDQUE4QixFQUFDRixnQkFDL0NHLE9BQU9OLFFBQVFPLHVCQUF1QixDQUFDSDtRQUU3QyxJQUFJRSxTQUFTLElBQUksRUFBRTtZQUNqQixJQUFNRSwyQkFBMkJGLEtBQUtHLGtCQUFrQixDQUFDUCxtQkFBbUJGO1lBRTVFQyxpQ0FBaUNPLDBCQUEyQixHQUFHO1FBQ2pFLENBQUM7SUFDSCxDQUFDO0lBRUQsSUFBSVAsZ0NBQWdDO1FBQ2xDLElBQU1TLHNCQUFzQkMsSUFBQUEsb0JBQVksRUFBQ1Q7UUFFekNGLFFBQVFZLEtBQUssQ0FBQyxBQUFDLGlCQUFvQyxPQUFwQkYscUJBQW9CLCtCQUE2Qlg7SUFDbEYsQ0FBQztJQUVELE9BQU9FO0FBQ1QifQ==