mnemonica 0.9.992 → 0.9.995

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 (77) hide show
  1. package/README.md +5 -1
  2. package/build/api/errors/exceptionConstructor.js +4 -2
  3. package/build/api/errors/index.d.ts +3 -1
  4. package/build/api/errors/index.js +1 -1
  5. package/build/api/errors/throwModificationError.js +1 -1
  6. package/build/api/hooks/flowCheckers.js +1 -1
  7. package/build/api/hooks/index.js +1 -1
  8. package/build/api/hooks/invokeHook.js +1 -1
  9. package/build/api/hooks/registerHook.js +1 -1
  10. package/build/api/index.js +1 -1
  11. package/build/api/types/InstanceCreator.js +5 -4
  12. package/build/api/types/InstanceModificator.js +1 -1
  13. package/build/api/types/Mnemosyne.d.ts +1 -15
  14. package/build/api/types/Mnemosyne.js +104 -12
  15. package/build/api/types/TypeProxy.js +6 -89
  16. package/build/api/types/addProps.d.ts +35 -0
  17. package/build/api/types/addProps.js +31 -12
  18. package/build/api/types/compileNewModificatorFunctionBody.d.ts +1 -1
  19. package/build/api/types/compileNewModificatorFunctionBody.js +1 -1
  20. package/build/api/types/createInstanceModificator.js +4 -2
  21. package/build/api/types/index.js +5 -5
  22. package/build/api/types/obeyConstructor.js +4 -9
  23. package/build/api/utils/index.d.ts +1 -1
  24. package/build/api/utils/index.js +12 -8
  25. package/build/constants/index.d.ts +0 -1
  26. package/build/constants/index.js +1 -5
  27. package/build/descriptors/errors/index.js +1 -1
  28. package/build/descriptors/index.js +1 -1
  29. package/build/descriptors/types/index.js +1 -1
  30. package/build/index.d.ts +1 -0
  31. package/build/index.js +4 -2
  32. package/build/types/index.js +1 -1
  33. package/build/utils/collectConstructors.js +1 -1
  34. package/build/utils/defineStackCleaner.js +1 -1
  35. package/build/utils/extract.js +1 -5
  36. package/build/utils/hop.js +1 -1
  37. package/build/utils/index.js +1 -1
  38. package/build/utils/merge.js +1 -1
  39. package/build/utils/parent.js +5 -3
  40. package/build/utils/parse.js +1 -1
  41. package/build/utils/pick.js +1 -1
  42. package/build/utils/toJSON.js +1 -1
  43. package/package.json +12 -12
  44. package/build/api/errors/exceptionConstructor.js.map +0 -1
  45. package/build/api/errors/index.js.map +0 -1
  46. package/build/api/errors/throwModificationError.js.map +0 -1
  47. package/build/api/hooks/flowCheckers.js.map +0 -1
  48. package/build/api/hooks/index.js.map +0 -1
  49. package/build/api/hooks/invokeHook.js.map +0 -1
  50. package/build/api/hooks/registerHook.js.map +0 -1
  51. package/build/api/index.js.map +0 -1
  52. package/build/api/types/InstanceCreator.js.map +0 -1
  53. package/build/api/types/InstanceModificator.js.map +0 -1
  54. package/build/api/types/Mnemosyne.js.map +0 -1
  55. package/build/api/types/TypeProxy.js.map +0 -1
  56. package/build/api/types/addProps.js.map +0 -1
  57. package/build/api/types/compileNewModificatorFunctionBody.js.map +0 -1
  58. package/build/api/types/createInstanceModificator.js.map +0 -1
  59. package/build/api/types/index.js.map +0 -1
  60. package/build/api/types/obeyConstructor.js.map +0 -1
  61. package/build/api/utils/index.js.map +0 -1
  62. package/build/constants/index.js.map +0 -1
  63. package/build/descriptors/errors/index.js.map +0 -1
  64. package/build/descriptors/index.js.map +0 -1
  65. package/build/descriptors/types/index.js.map +0 -1
  66. package/build/index.js.map +0 -1
  67. package/build/types/index.js.map +0 -1
  68. package/build/utils/collectConstructors.js.map +0 -1
  69. package/build/utils/defineStackCleaner.js.map +0 -1
  70. package/build/utils/extract.js.map +0 -1
  71. package/build/utils/hop.js.map +0 -1
  72. package/build/utils/index.js.map +0 -1
  73. package/build/utils/merge.js.map +0 -1
  74. package/build/utils/parent.js.map +0 -1
  75. package/build/utils/parse.js.map +0 -1
  76. package/build/utils/pick.js.map +0 -1
  77. package/build/utils/toJSON.js.map +0 -1
package/README.md CHANGED
@@ -492,7 +492,7 @@ And we wish to get reference to one of the prececessors, though we have only ref
492
492
  ```js
493
493
 
494
494
  // fisrst parent
495
- // simply equal to instance.__parent__
495
+ // simply equal to getProps(instance).__parent__
496
496
  const parent = instance.parent();
497
497
 
498
498
  // deep parent from chain
@@ -715,6 +715,10 @@ It is important: if we make `util.callbackify` from our instance async creation
715
715
 
716
716
  Also starting from `v0.3.8` the following non enumerable props are availiable from instance itself (`instance.hasOwnProperty(__prop__)`):
717
717
 
718
+ ## Breaking Changes for 0.9.995
719
+
720
+ ### all props below available from `getProps(instance)` :
721
+
718
722
  ## `.__args__`
719
723
 
720
724
  Arguments, used for calling instance creation constructor.
@@ -10,6 +10,7 @@ const { parse } = utils_1.utils;
10
10
  const utils_2 = require("../utils");
11
11
  const { makeFakeModificatorType } = utils_2.default;
12
12
  const InstanceModificator_1 = require("../types/InstanceModificator");
13
+ const addProps_1 = require("../types/addProps");
13
14
  const checkThrowArgs = (instance, target, error, args) => {
14
15
  let wrongThrow;
15
16
  if (!target) {
@@ -94,7 +95,8 @@ const exceptionConsctructHandler = function (opts) {
94
95
  const prepareException = function (target, error, ...args) {
95
96
  const instance = this;
96
97
  checkThrowArgs(instance, target, error, args);
97
- const { __type__, __creator__ } = instance;
98
+ const props = (0, addProps_1.getProps)(instance);
99
+ const { __type__, __creator__ } = props;
98
100
  const { stack: typeStack, TypeName } = __type__;
99
101
  const ExceptionCreator = Object.create(__creator__);
100
102
  ExceptionCreator.config = Object.assign({}, __creator__.config);
@@ -113,4 +115,4 @@ const prepareException = function (target, error, ...args) {
113
115
  return new ExceptionCreator.InstanceModificator();
114
116
  };
115
117
  exports.default = prepareException;
116
- //# sourceMappingURL=exceptionConstructor.js.map
118
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXhjZXB0aW9uQ29uc3RydWN0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXBpL2Vycm9ycy9leGNlcHRpb25Db25zdHJ1Y3Rvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxZQUFZLENBQUM7O0FBRWIsK0NBQTRDO0FBQzVDLE1BQU0sRUFBRSxHQUFHLEVBQUUsR0FBRyxxQkFBUyxDQUFDO0FBRTFCLHFEQUF1RDtBQUN2RCxNQUFNLEVBQ0wsb0JBQW9CLEVBQ3BCLHlCQUF5QixFQUN6QixHQUFHLG9CQUFXLENBQUM7QUFFaEIsc0NBQW1EO0FBRW5ELHVDQUFvQztBQUNwQyxNQUFNLEVBQ0wsS0FBSyxFQUNMLEdBQUcsYUFBSyxDQUFDO0FBRVYsb0NBQWtDO0FBRWxDLE1BQU0sRUFDTCx1QkFBdUIsRUFDdkIsR0FBRyxlQUFVLENBQUM7QUFFZixzRUFBdUU7QUFFdkUsZ0RBQW9EO0FBRXBELE1BQU0sY0FBYyxHQUFHLENBQUUsUUFBYSxFQUFFLE1BQVcsRUFBRSxLQUFZLEVBQUUsSUFBVyxFQUFHLEVBQUU7SUFFbEYsSUFBSSxVQUFVLENBQUM7SUFXZixJQUFLLENBQUMsTUFBTSxFQUFHLENBQUM7UUFDZixNQUFNLElBQUkseUJBQXlCLENBQUUsMkNBQTJDLENBQUUsQ0FBQztJQUNwRixDQUFDO0lBRUQsSUFBSyxDQUFDLENBQUUsS0FBSyxZQUFZLEtBQUssQ0FBRSxFQUFHLENBQUM7UUFDbkMsVUFBVSxHQUFHLElBQUksb0JBQW9CLENBQUUsZ0NBQWdDLENBQUUsQ0FBQztJQUMzRSxDQUFDO0lBRUQsSUFBSyxDQUFDLENBQUUsVUFBVSxZQUFZLEtBQUssQ0FBRSxFQUFHLENBQUM7UUFDeEMsT0FBTztJQUNSLENBQUM7SUFFRCxHQUFHLENBQUUsVUFBVSxFQUFFLFVBQVUsRUFBRTtRQUM1QixHQUFHO1lBQ0YsT0FBTyxRQUFRLENBQUM7UUFDakIsQ0FBQztLQUNELENBQUUsQ0FBQztJQUVKLEdBQUcsQ0FB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LEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxJQUFJLENBQUUsQ0FBQztJQUVoRCxNQUFNLEtBQUssR0FBRyxJQUFBLG1CQUFRLEVBQUMsUUFBUSxDQUFVLENBQUM7SUFFMUMsTUFBTSxFQUNMLFFBQVEsRUFDUixXQUFXLEVBQ1gsR0FBRyxLQUFLLENBQUM7SUFHVixNQUFNLEVBQ0wsS0FBSyxFQUFFLFNBQVMsRUFDaEIsUUFBUSxFQUNSLEdBQUcsUUFBUSxDQUFDO0lBVWIsTUFBTSxnQkFBZ0IsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFFLFdBQVcsQ0FBRSxDQUFDO0lBQ3RELGdCQUFnQixDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFFLEVBQUUsRUFBRSxXQUFXLENBQUMsTUFBTSxDQUFFLENBQUM7SUFDbEUsZ0JBQWdCLENBQUMsTUFBTSxDQUFDLFdBQVcsR0FBRyxLQUFLLENBQUM7SUFFNUMsZ0JBQWdCLENBQUMsZ0JBQWdCLEdBQUcsS0FBSyxDQUFDO0lBRTFDLGdCQUFnQixDQUFDLGVBQWUsR0FBRyx1QkFBdUIsQ0FBRSxRQUFRLEVBQUU7UUFDckUsT0FBTywwQkFBMEIsQ0FBQyxJQUFJLENBQUUsSUFBSSxFQUFFO1lBQzdDLFFBQVE7WUFDUixRQUFRO1lBQ1IsU0FBUztZQUNULElBQUk7WUFDSixLQUFLO1NBQ0wsQ0FBRSxDQUFDO0lBQ0wsQ0FBQyxDQUFFLENBQUM7SUFFSixnQkFBZ0IsQ0FBQyxtQkFBbUIsR0FBRyxJQUFBLDZDQUF1QixFQUFFLGdCQUFnQixDQUFFLENBQUM7SUFFbkYsT0FBTyxJQUFJLGdCQUFnQixDQUFDLG1CQUFtQixFQUFFLENBQUM7QUFDbkQsQ0FBQyxDQUFDO0FBRUYsa0JBQWUsZ0JBQWdCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIHN0cmljdCc7XG5cbmltcG9ydCB7IGNvbnN0YW50cyB9IGZyb20gJy4uLy4uL2NvbnN0YW50cyc7XG5jb25zdCB7IG9kcCB9ID0gY29uc3RhbnRzO1xuXG5pbXBvcnQgeyBFcnJvcnNUeXBlcyB9IGZyb20gJy4uLy4uL2Rlc2NyaXB0b3JzL2Vycm9ycyc7XG5jb25zdCB7XG5cdFdST05HX0FSR1VNRU5UU19VU0VELFxuXHRXUk9OR19JTlNUQU5DRV9JTlZPQ0FUSU9OXG59ID0gRXJyb3JzVHlwZXM7XG5cbmltcG9ydCB7IGNsZWFudXBTdGFjaywgZ2V0U3RhY2sgfSBmcm9tICcuLi9lcnJvcnMnO1xuXG5pbXBvcnQgeyB1dGlscyB9IGZyb20gJy4uLy4uL3V0aWxzJztcbmNvbnN0IHtcblx0cGFyc2Vcbn0gPSB1dGlscztcblxuaW1wb3J0IFR5cGVzVXRpbHMgZnJvbSAnLi4vdXRpbHMnO1xuXG5jb25zdCB7XG5cdG1ha2VGYWtlTW9kaWZpY2F0b3JUeXBlXG59ID0gVHlwZXNVdGlscztcblxuaW1wb3J0IHsgbWFrZUluc3RhbmNlTW9kaWZpY2F0b3IgfSBmcm9tICcuLi90eXBlcy9JbnN0YW5jZU1vZGlmaWNhdG9yJztcblxuaW1wb3J0IHsgZ2V0UHJvcHMsIFByb3BzIH0gZnJvbSAnLi4vdHlwZXMvYWRkUHJvcHMnO1xuXG5jb25zdCBjaGVja1Rocm93QXJncyA9ICggaW5zdGFuY2U6IGFueSwgdGFyZ2V0OiBhbnksIGVycm9yOiBFcnJvciwgYXJnczogYW55W10gKSA9PiB7XG5cblx0bGV0IHdyb25nVGhyb3c7XG5cblx0LyogdW5yZWFjaGVibGUsIGN1cyBpbnN0YW5jZSBib3VuZCBpbnNpZGUgb2YgTW5lbW9zeW5lXG5cdGlmIChpbnN0YW5jZSAhPT0gT2JqZWN0KGluc3RhbmNlKSkge1xuXHRcdHdyb25nVGhyb3cgPSBuZXcgV1JPTkdfQVJHVU1FTlRTX1VTRUQoJ1widGhpc1wiIG11c3QgYmUgYW4gb2JqZWN0Jyk7XG5cdH1cblx0aWYgKGluc3RhbmNlLmNvbnN0cnVjdG9yW1N5bWJvbENvbnN0cnVjdG9yTmFtZV0gIT09IGluc3RhbmNlLmNvbnN0cnVjdG9yLm5hbWUpIHtcblx0XHR3cm9uZ1Rocm93ID0gbmV3IFdST05HX0FSR1VNRU5UU19VU0VEKCdcInRoaXNcIiBtdXN0IGJlIGFuIG9iamVjdCcpO1xuXHR9XG5cdCovXG5cblx0aWYgKCAhdGFyZ2V0ICkge1xuXHRcdHRocm93IG5ldyBXUk9OR19JTlNUQU5DRV9JTlZPQ0FUSU9OKCAnZXhjZXB0aW9uIHNob3VsZCBiZSBtYWRlIHdpdGggbmV3IGtleXdvcmQnICk7XG5cdH1cblxuXHRpZiAoICEoIGVycm9yIGluc3RhbmNlb2YgRXJyb3IgKSApIHtcblx0XHR3cm9uZ1Rocm93ID0gbmV3IFdST05HX0FSR1VNRU5UU19VU0VEKCAnZXJyb3IgbXVzdCBiZSBpbnN0YW5jZW9mIEVycm9yJyApO1xuXHR9XG5cblx0aWYgKCAhKCB3cm9uZ1Rocm93IGluc3RhbmNlb2YgRXJyb3IgKSApIHtcblx0XHRyZXR1cm47XG5cdH1cblxuXHRvZHAoIHdyb25nVGhyb3csICdpbnN0YW5jZScsIHtcblx0XHRnZXQgKCkge1xuXHRcdFx0cmV0dXJuIGluc3RhbmNlO1xuXHRcdH1cblx0fSApO1xuXG5cdG9kcCggd3JvbmdUaHJvdywgJ2Vycm9yJywge1xuXHRcdGdldCAoKSB7XG5cdFx0XHRyZXR1cm4gZXJyb3I7XG5cdFx0fVxuXHR9ICk7XG5cblx0b2RwKCB3cm9uZ1Rocm93LCAnYXJncycsIHtcblx0XHRnZXQgKCkge1xuXHRcdFx0cmV0dXJuIGFyZ3M7XG5cdFx0fVxuXHR9ICk7XG5cblx0dGhyb3cgd3JvbmdUaHJvdztcblxufTtcblxuY29uc3QgZXhjZXB0aW9uQ29uc2N0cnVjdEhhbmRsZXIgPSBmdW5jdGlvbiAoIHRoaXM6IGFueSwgb3B0czogeyBbIGluZGV4OiBzdHJpbmcgXTogYW55IH0gKSB7XG5cblx0Y29uc3Qge1xuXHRcdGluc3RhbmNlLFxuXHRcdFR5cGVOYW1lLFxuXHRcdHR5cGVTdGFjayxcblx0XHRhcmdzLFxuXHRcdGVycm9yXG5cdH0gPSBvcHRzO1xuXG5cblx0Ly8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby10aGlzLWFsaWFzXG5cdGNvbnN0IGV4Y2VwdGlvbiA9IHRoaXM7XG5cblx0b2RwKCBleGNlcHRpb24sICdhcmdzJywge1xuXHRcdGdldCAoKSB7XG5cdFx0XHRyZXR1cm4gYXJncztcblx0XHR9XG5cdH0gKTtcblxuXHRvZHAoIGV4Y2VwdGlvbiwgJ29yaWdpbmFsRXJyb3InLCB7XG5cdFx0Z2V0ICgpIHtcblx0XHRcdHJldHVybiBlcnJvcjtcblx0XHR9XG5cdH0gKTtcblxuXHRvZHAoIGV4Y2VwdGlvbiwgJ2luc3RhbmNlJywge1xuXHRcdGdldCAoKSB7XG5cdFx0XHRyZXR1cm4gaW5zdGFuY2U7XG5cdFx0fVxuXHR9ICk7XG5cblx0b2RwKCBleGNlcHRpb24sICdleHRyYWN0Jywge1xuXHRcdGdldCAoKSB7XG5cdFx0XHRyZXR1cm4gKCkgPT4ge1xuXHRcdFx0XHRyZXR1cm4gaW5zdGFuY2UuZXh0cmFjdCgpO1xuXHRcdFx0fTtcblx0XHR9XG5cdH0gKTtcblxuXHRvZHAoIGV4Y2VwdGlvbiwgJ3BhcnNlJywge1xuXHRcdGdldCAoKSB7XG5cdFx0XHRyZXR1cm4gKCkgPT4ge1xuXHRcdFx0XHRyZXR1cm4gcGFyc2UoIGluc3RhbmNlICk7XG5cdFx0XHR9O1xuXHRcdH1cblx0fSApO1xuXG5cdC8vIHJlYWwgZXJyb3Igc3RhY2tcblx0Y29uc3QgZXJyb3JTdGFjayA9IGV4Y2VwdGlvbi5zdGFjay5zcGxpdCggJ1xcbicgKTtcblxuXHRjb25zdCBzdGFjazogc3RyaW5nW10gPSBbXTtcblxuXHRjb25zdCB0aXRsZSA9IGBcXG48LS0gbGlmZWN5Y2xlIG9mIFsgJHtUeXBlTmFtZX0gXSB0cmFjZWQgLS0+YDtcblxuXHRnZXRTdGFjay5jYWxsKCBleGNlcHRpb24sIHRpdGxlLCBbXSwgcHJlcGFyZUV4Y2VwdGlvbiApO1xuXG5cdHN0YWNrLnB1c2goIC4uLmV4Y2VwdGlvbi5zdGFjayApO1xuXG5cdHN0YWNrLnB1c2goICc8LS0gd2l0aCB0aGUgZm9sbG93aW5nIGVycm9yIC0tPicgKTtcblxuXHRlcnJvclN0YWNrLmZvckVhY2goICggbGluZTogc3RyaW5nICkgPT4ge1xuXHRcdGlmICggIXN0YWNrLmluY2x1ZGVzKCBsaW5lICkgKSB7XG5cdFx0XHRzdGFjay5wdXNoKCBsaW5lICk7XG5cdFx0fVxuXHR9ICk7XG5cblx0c3RhY2sucHVzaCggJ1xcbjwtLSBvZiBjb25zdHJ1Y3RvciBkZWZpbml0aW9ucyBzdGFjayAtLT4nICk7XG5cdHN0YWNrLnB1c2goIC4uLnR5cGVTdGFjayApO1xuXG5cdGNvbnN0IGV4Y2VwdGlvblN0YWNrID0gY2xlYW51cFN0YWNrKCBzdGFjayApLmpvaW4oICdcXG4nICk7XG5cblx0b2RwKCBleGNlcHRpb24sICdzdGFjaycsIHtcblx0XHRnZXQgKCkge1xuXHRcdFx0cmV0dXJuIGV4Y2VwdGlvblN0YWNrO1xuXHRcdH1cblx0fSk7XG5cblx0cmV0dXJuIGV4Y2VwdGlvbjtcblxuXG59O1xuXG5jb25zdCBwcmVwYXJlRXhjZXB0aW9uID0gZnVuY3Rpb24gKCB0aGlzOiBhbnksIHRhcmdldDogYW55LCBlcnJvcjogRXJyb3IsIC4uLmFyZ3M6IGFueVtdICkge1xuXG5cdC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdGhpcy1hbGlhc1xuXHRjb25zdCBpbnN0YW5jZSA9IHRoaXM7XG5cblx0Y2hlY2tUaHJvd0FyZ3MoIGluc3RhbmNlLCB0YXJnZXQsIGVycm9yLCBhcmdzICk7XG5cblx0Y29uc3QgcHJvcHMgPSBnZXRQcm9wcyhpbnN0YW5jZSkgYXMgUHJvcHM7XG5cblx0Y29uc3Qge1xuXHRcdF9fdHlwZV9fLFxuXHRcdF9fY3JlYXRvcl9fXG5cdH0gPSBwcm9wcztcblxuXG5cdGNvbnN0IHtcblx0XHRzdGFjazogdHlwZVN0YWNrLFxuXHRcdFR5cGVOYW1lXG5cdH0gPSBfX3R5cGVfXztcblxuXHQvKiBzaG9ydCB3YXksIG1ha2VzIGhvb2tzIGNhbGxzLCB3aWxsIG5vdCB1c2VcblxuXHRjb25zdCB0eXBlID0gT2JqZWN0LmNyZWF0ZShfX3R5cGVfXyk7XG5cdHR5cGUuY29uZmlnLmJsb2NrRXJyb3JzID0gZmFsc2U7XG5cblx0bGV0IGVycm9yZWQgPSBuZXcgSW5zdGFuY2VDcmVhdG9yKHR5cGUsIGVycm9yLCBhcmdzKTtcblx0Ki9cblxuXHRjb25zdCBFeGNlcHRpb25DcmVhdG9yID0gT2JqZWN0LmNyZWF0ZSggX19jcmVhdG9yX18gKTtcblx0RXhjZXB0aW9uQ3JlYXRvci5jb25maWcgPSBPYmplY3QuYXNzaWduKCB7fSwgX19jcmVhdG9yX18uY29uZmlnICk7XG5cdEV4Y2VwdGlvbkNyZWF0b3IuY29uZmlnLmJsb2NrRXJyb3JzID0gZmFsc2U7XG5cblx0RXhjZXB0aW9uQ3JlYXRvci5leGlzdGVudEluc3RhbmNlID0gZXJyb3I7XG5cdC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1zaGFkb3dcblx0RXhjZXB0aW9uQ3JlYXRvci5Nb2RpZmljYXRvclR5cGUgPSBtYWtlRmFrZU1vZGlmaWNhdG9yVHlwZSggVHlwZU5hbWUsIGZ1bmN0aW9uICggdGhpczogdW5rbm93biApIHtcblx0XHRyZXR1cm4gZXhjZXB0aW9uQ29uc2N0cnVjdEhhbmRsZXIuY2FsbCggdGhpcywge1xuXHRcdFx0aW5zdGFuY2UsXG5cdFx0XHRUeXBlTmFtZSxcblx0XHRcdHR5cGVTdGFjayxcblx0XHRcdGFyZ3MsXG5cdFx0XHRlcnJvclxuXHRcdH0gKTtcblx0fSApO1xuXG5cdEV4Y2VwdGlvbkNyZWF0b3IuSW5zdGFuY2VNb2RpZmljYXRvciA9IG1ha2VJbnN0YW5jZU1vZGlmaWNhdG9yKCBFeGNlcHRpb25DcmVhdG9yICk7XG5cblx0cmV0dXJuIG5ldyBFeGNlcHRpb25DcmVhdG9yLkluc3RhbmNlTW9kaWZpY2F0b3IoKTtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IHByZXBhcmVFeGNlcHRpb247XG4iXX0=
@@ -1,8 +1,9 @@
1
+ declare const SymbolConstructorName: symbol;
1
2
  export declare const stackCleaners: RegExp[];
2
3
  export declare const cleanupStack: (stack: string[]) => string[];
3
4
  export declare const getStack: (this: any, title: string, stackAddition: string[], tillFunction?: CallableFunction) => any;
4
5
  export declare class BASE_MNEMONICA_ERROR extends Error {
5
- static [x: symbol]: String;
6
+ static [SymbolConstructorName]: String;
6
7
  constructor(message: string | undefined, additionalStack: string[]);
7
8
  }
8
9
  export declare const constructError: (name: string, message: string) => {
@@ -10,3 +11,4 @@ export declare const constructError: (name: string, message: string) => {
10
11
  constructor: CallableFunction;
11
12
  };
12
13
  };
14
+ export {};
@@ -76,4 +76,4 @@ const constructError = (name, message) => {
76
76
  return reNamer[name];
77
77
  };
78
78
  exports.constructError = constructError;
79
- //# sourceMappingURL=index.js.map
79
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXBpL2Vycm9ycy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxZQUFZLENBQUM7OztBQUViLCtDQUE0QztBQUU1QyxNQUFNLEVBQ0wsR0FBRyxFQUNILHFCQUFxQixFQUNyQixTQUFTLEVBQ1QsYUFBYSxHQUNiLEdBQUcscUJBQVMsQ0FBQztBQUVkLE1BQU0sRUFDTCxrQkFBa0IsRUFDbEIsR0FBRyxhQUFhLENBQUM7QUFFTCxRQUFBLGFBQWEsR0FBYSxFQUFFLENBQUM7QUFFbkMsTUFBTSxZQUFZLEdBQUcsQ0FBRSxLQUFlLEVBQUcsRUFBRTtJQUNqRCxNQUFNLE9BQU8sR0FBYSxLQUFLLENBQUMsTUFBTSxDQUFFLENBQUUsR0FBYSxFQUFFLElBQVksRUFBRyxFQUFFO1FBQ3pFLHFCQUFhLENBQUMsT0FBTyxDQUFFLGFBQWEsQ0FBQyxFQUFFO1lBQ3RDLElBQUssQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFFLElBQUksQ0FBRSxFQUFHLENBQUM7Z0JBQ25DLEdBQUcsQ0FBQyxJQUFJLENBQUUsSUFBSSxDQUFFLENBQUM7WUFDbEIsQ0FBQztRQUNGLENBQUMsQ0FBRSxDQUFDO1FBQ0osT0FBTyxHQUFHLENBQUM7SUFDWixDQUFDLEVBQUUsRUFBRSxDQUFFLENBQUM7SUFDUixPQUFPLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDO0FBQ3pDLENBQUMsQ0FBQztBQVZXLFFBQUEsWUFBWSxnQkFVdkI7QUFFSyxNQUFNLFFBQVEsR0FBRyxVQUFzQixLQUFhLEVBQUUsYUFBdUIsRUFBRSxZQUErQjtJQUVwSCxJQUFLLEtBQUssQ0FBQyxpQkFBaUIsRUFBRyxDQUFDO1FBQy9CLEtBQUssQ0FBQyxpQkFBaUIsQ0FBRSxJQUFJLEVBQUUsWUFBWSxJQUFJLGdCQUFRLENBQUUsQ0FBQztJQUMzRCxDQUFD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QU8sQ0FBRSxJQUFJLENBQUUsQ0FBQztBQUN4QixDQUFDLENBQUM7QUF0QlcsUUFBQSxjQUFjLGtCQXNCekIiLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIHN0cmljdCc7XG5cbmltcG9ydCB7IGNvbnN0YW50cyB9IGZyb20gJy4uLy4uL2NvbnN0YW50cyc7XG5cbmNvbnN0IHtcblx0b2RwLFxuXHRTeW1ib2xDb25zdHJ1Y3Rvck5hbWUsXG5cdE1ORU1PTklDQSxcblx0RXJyb3JNZXNzYWdlcyxcbn0gPSBjb25zdGFudHM7XG5cbmNvbnN0IHtcblx0QkFTRV9FUlJPUl9NRVNTQUdFXG59ID0gRXJyb3JNZXNzYWdlcztcblxuZXhwb3J0IGNvbnN0IHN0YWNrQ2xlYW5lcnM6IFJlZ0V4cFtdID0gW107XG5cbmV4cG9ydCBjb25zdCBjbGVhbnVwU3RhY2sgPSAoIHN0YWNrOiBzdHJpbmdbXSApID0+IHtcblx0Y29uc3QgY2xlYW5lZDogc3RyaW5nW10gPSBzdGFjay5yZWR1Y2UoICggYXJyOiBzdHJpbmdbXSwgbGluZTogc3RyaW5nICkgPT4ge1xuXHRcdHN0YWNrQ2xlYW5lcnMuZm9yRWFjaCggY2xlYW5lclJlZ0V4cCA9PiB7XG5cdFx0XHRpZiAoICFjbGVhbmVyUmVnRXhwLnRlc3QoIGxpbmUgKSApIHtcblx0XHRcdFx0YXJyLnB1c2goIGxpbmUgKTtcblx0XHRcdH1cblx0XHR9ICk7XG5cdFx0cmV0dXJuIGFycjtcblx0fSwgW10gKTtcblx0cmV0dXJuIGNsZWFuZWQubGVuZ3RoID8gY2xlYW5lZCA6IHN0YWNrO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldFN0YWNrID0gZnVuY3Rpb24gKCB0aGlzOiBhbnksIHRpdGxlOiBzdHJpbmcsIHN0YWNrQWRkaXRpb246IHN0cmluZ1tdLCB0aWxsRnVuY3Rpb24/OiBDYWxsYWJsZUZ1bmN0aW9uICkge1xuXG5cdGlmICggRXJyb3IuY2FwdHVyZVN0YWNrVHJhY2UgKSB7XG5cdFx0RXJyb3IuY2FwdHVyZVN0YWNrVHJhY2UoIHRoaXMsIHRpbGxGdW5jdGlvbiB8fCBnZXRTdGFjayApO1xuXHR9IGVsc2Uge1xuXHRcdHRoaXMuc3RhY2sgPSAoIG5ldyBFcnJvcigpICkuc3RhY2s7XG5cdH1cblxuXHR0aGlzLnN0YWNrID0gdGhpcy5zdGFjay5zcGxpdCggJ1xcbicgKS5zbGljZSggMSApO1xuXHR0aGlzLnN0YWNrID0gY2xlYW51cFN0YWNrKCB0aGlzLnN0YWNrICk7XG5cblx0dGhpcy5zdGFjay51bnNoaWZ0KCB0aXRsZSApO1xuXHRpZiAoIEFycmF5LmlzQXJyYXkoIHN0YWNrQWRkaXRpb24gKSAmJiBzdGFja0FkZGl0aW9uLmxlbmd0aCApIHtcblx0XHR0aGlzLnN0YWNrLnB1c2goIC4uLnN0YWNrQWRkaXRpb24gKTtcblx0fVxuXHR0aGlzLnN0YWNrLnB1c2goICdcXG4nICk7XG5cblx0cmV0dXJuIHRoaXMuc3RhY2s7XG5cbn07XG5cbmV4cG9ydCBjbGFzcyBCQVNFX01ORU1PTklDQV9FUlJPUiBleHRlbmRzIEVycm9yIHtcblxuXHRjb25zdHJ1Y3RvciAoIG1lc3NhZ2UgPSBCQVNFX0VSUk9SX01FU1NBR0UsIGFkZGl0aW9uYWxTdGFjazogc3RyaW5nW10gKSB7XG5cblx0XHRzdXBlciggbWVzc2FnZSApO1xuXHRcdGNvbnN0IEJhc2VTdGFjazogYW55ID0gdGhpcy5zdGFjaztcblx0XHRvZHAoIHRoaXMsICdCYXNlU3RhY2snLCB7XG5cdFx0XHRnZXQgKCkge1xuXHRcdFx0XHRyZXR1cm4gQmFzZVN0YWNrO1xuXHRcdFx0fVxuXHRcdH0gKTtcblxuXHRcdGNvbnN0IHN0YWNrID0gY2xlYW51cFN0YWNrKCBCYXNlU3RhY2suc3BsaXQoICdcXG4nICkgKTtcblxuXHRcdGlmICggYWRkaXRpb25hbFN0YWNrICkge1xuXHRcdFx0c3RhY2sudW5zaGlmdCggLi4uYWRkaXRpb25hbFN0YWNrICk7XG5cdFx0fVxuXG5cdFx0dGhpcy5zdGFjayA9IHN0YWNrLmpvaW4oICdcXG4nICk7XG5cblx0fVxuXG5cdHN0YXRpYyBnZXQgWyBTeW1ib2xDb25zdHJ1Y3Rvck5hbWUgXSAoKSB7XG5cdFx0cmV0dXJuIG5ldyBTdHJpbmcoIGBiYXNlIG9mIDogJHtNTkVNT05JQ0F9IDogZXJyb3JzYCApO1xuXHR9XG5cbn1cblxuT2JqZWN0LmRlZmluZVByb3BlcnR5KCBCQVNFX01ORU1PTklDQV9FUlJPUi5wcm90b3R5cGUuY29uc3RydWN0b3IsICduYW1lJywge1xuXHRnZXQgKCkge1xuXHRcdHJldHVybiBuZXcgU3RyaW5nKCAnQkFTRV9NTkVNT05JQ0FfRVJST1InICk7XG5cdH1cbn0gKTtcblxuXG5leHBvcnQgY29uc3QgY29uc3RydWN0RXJyb3IgPSAoIG5hbWU6IHN0cmluZywgbWVzc2FnZTogc3RyaW5nICkgPT4ge1xuXHRjb25zdCBOYW1lZEVycm9yQ29uc3RydWN0b3IgPSBjbGFzcyBleHRlbmRzIEJBU0VfTU5FTU9OSUNBX0VSUk9SIHtcblx0XHRjb25zdHJ1Y3RvciAoIGFkZGl0aW9uOiBzdHJpbmcsIHN0YWNrOiBzdHJpbmdbXSApIHtcblx0XHRcdGNvbnN0IHNheWluZyA9IGFkZGl0aW9uID8gYCR7bWVzc2FnZX0gOiAke2FkZGl0aW9ufWAgOiBgJHttZXNzYWdlfWA7XG5cdFx0XHRzdXBlciggc2F5aW5nLCBzdGFjayApO1xuXHRcdH1cblx0fTtcblxuXHRjb25zdCByZU5hbWVyID0ge30gYXMge1xuXHRcdFsga2V5OiBzdHJpbmcgXToge1xuXHRcdFx0cHJvdG90eXBlOiB7XG5cdFx0XHRcdGNvbnN0cnVjdG9yOiBDYWxsYWJsZUZ1bmN0aW9uXG5cdFx0XHR9XG5cdFx0fSxcblx0fTtcblx0cmVOYW1lclsgbmFtZSBdID0gTmFtZWRFcnJvckNvbnN0cnVjdG9yO1xuXHRPYmplY3QuZGVmaW5lUHJvcGVydHkoIHJlTmFtZXJbIG5hbWUgXS5wcm90b3R5cGUuY29uc3RydWN0b3IsICduYW1lJywge1xuXHRcdGdldCAoKSB7XG5cdFx0XHRyZXR1cm4gbmV3IFN0cmluZyggbmFtZSApO1xuXHRcdH1cblx0fSApO1xuXHRyZXR1cm4gcmVOYW1lclsgbmFtZSBdO1xufTtcbiJdfQ==
@@ -106,4 +106,4 @@ const throwModificationError = function (error) {
106
106
  throw erroredInstance;
107
107
  };
108
108
  exports.throwModificationError = throwModificationError;
109
- //# sourceMappingURL=throwModificationError.js.map
109
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGhyb3dNb2RpZmljYXRpb25FcnJvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hcGkvZXJyb3JzL3Rocm93TW9kaWZpY2F0aW9uRXJyb3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsWUFBWSxDQUFDOzs7QUFFYiwrQ0FBNEM7QUFDNUMsTUFBTSxFQUNMLEdBQUcsRUFDSCxtQkFBbUIsR0FFbkIsR0FBRyxxQkFBUyxDQUFDO0FBRWQscURBQXVEO0FBQ3ZELE1BQU0sRUFDTCxvQkFBb0IsRUFDcEIsR0FBRyxvQkFBVyxDQUFDO0FBRWhCLHlCQUE0QztBQUU1QyxvQ0FBa0M7QUFDbEMsTUFBTSxFQUNMLHVCQUF1QixFQUN2QixHQUFHLGVBQVUsQ0FBQztBQUVmLHVDQUFvQztBQUNwQyxNQUFNLEVBQ0wsS0FBSyxFQUNMLEdBQUcsYUFBSyxDQUFDO0FBRVYsc0VBQXVFO0FBRWhFLE1BQU0sc0JBQXNCLEdBQUcsVUFBc0IsS0FBVTtJQUlyRSxNQUFNLElBQUksR0FBRyxJQUFJLENBQUM7SUFFbEIsTUFBTSxFQUNMLFFBQVEsRUFDUixJQUFJLEVBQUUsRUFDTCxLQUFLLEVBQUUsU0FBUyxFQUNoQixFQUNELElBQUksRUFDSixHQUFHLElBQUksQ0FBQztJQU1ULE1BQU0sZUFBZSxHQUFHLEtBQUssQ0FBQyxlQUFlLElBQUksS0FBSyxDQUFDO0lBRXZELElBQUssS0FBSyxDQUFDLGVBQWUsS0FBSyxTQUFTLEVBQUcsQ0FBQztRQUUzQyxLQUFLLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBRSxLQUFLLENBQUMsZUFBZSxDQUFFLENBQUM7UUFDNUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUUsS0FBSyxDQUFFLENBQUM7UUFFNUIsTUFBTSxLQUFLLENBQUM7SUFFYixDQUFDO0lBRUQsR0FBRyxDQUFFLEtBQUssRUFBRSxpQkFBaUIsRUFBRTtRQUM5QixHQUFHO1lBQ0YsT0FBTyxlQUFlLENBQUM7UUFDeEIsQ0FB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T0FBTyxLQUFLLENBQUM7UUFDZCxDQUFDO0tBQ0QsQ0FBRSxDQUFDO0lBRUosR0FBRyxDQUFFLGVBQWUsRUFBRSxVQUFVLEVBQUU7UUFDakMsR0FBRztZQUNGLE9BQU8sZUFBZSxDQUFDO1FBQ3hCLENBQUM7S0FDRCxDQUFFLENBQUM7SUFFSixHQUFHLENBQUUsZUFBZSxFQUFFLFNBQVMsRUFBRTtRQUNoQyxHQUFHO1lBQ0YsT0FBTyxHQUFHLEVBQUU7Z0JBQ1gsT0FBTyxlQUFlLENBQUMsUUFBUSxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQzNDLENBQUMsQ0FBQztRQUNILENBQUM7S0FDRCxDQUFFLENBQUM7SUFFSixHQUFHLENBQUUsZUFBZSxFQUFFLE9BQU8sRUFBRTtRQUM5QixHQUFHO1lBQ0YsT0FBTyxHQUFHLEVBQUU7Z0JBQ1gsT0FBTyxLQUFLLENBQUUsZUFBZSxDQUFFLENBQUM7WUFDakMsQ0FBQyxDQUFDO1FBQ0gsQ0FBQztLQUNELENBQUUsQ0FBQztJQUVKLE1BQU0sZUFBZSxDQUFDO0FBRXZCLENBQUMsQ0FBQztBQXpKVyxRQUFBLHNCQUFzQiwwQkF5SmpDIiwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzdHJpY3QnO1xuXG5pbXBvcnQgeyBjb25zdGFudHMgfSBmcm9tICcuLi8uLi9jb25zdGFudHMnO1xuY29uc3Qge1xuXHRvZHAsXG5cdFN5bWJvbFJlcGxhY2VVcmFudXMsXG5cdC8vIFN5bWJvbENvbnN0cnVjdG9yTmFtZVxufSA9IGNvbnN0YW50cztcblxuaW1wb3J0IHsgRXJyb3JzVHlwZXMgfSBmcm9tICcuLi8uLi9kZXNjcmlwdG9ycy9lcnJvcnMnO1xuY29uc3Qge1xuXHRCQVNFX01ORU1PTklDQV9FUlJPUlxufSA9IEVycm9yc1R5cGVzO1xuXG5pbXBvcnQgeyBjbGVhbnVwU3RhY2ssIGdldFN0YWNrIH0gZnJvbSAnLi8nO1xuXG5pbXBvcnQgVHlwZXNVdGlscyBmcm9tICcuLi91dGlscyc7XG5jb25zdCB7XG5cdG1ha2VGYWtlTW9kaWZpY2F0b3JUeXBlXG59ID0gVHlwZXNVdGlscztcblxuaW1wb3J0IHsgdXRpbHMgfSBmcm9tICcuLi8uLi91dGlscyc7XG5jb25zdCB7XG5cdHBhcnNlXG59ID0gdXRpbHM7XG5cbmltcG9ydCB7IG1ha2VJbnN0YW5jZU1vZGlmaWNhdG9yIH0gZnJvbSAnLi4vdHlwZXMvSW5zdGFuY2VNb2RpZmljYXRvcic7XG5cbmV4cG9ydCBjb25zdCB0aHJvd01vZGlmaWNhdGlvbkVycm9yID0gZnVuY3Rpb24gKCB0aGlzOiBhbnksIGVycm9yOiBhbnkgKSB7XG5cblx0Ly8gSW5zdGFuY2VDcmVhdG9yXG5cdC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdGhpcy1hbGlhc1xuXHRjb25zdCBzZWxmID0gdGhpcztcblxuXHRjb25zdCB7XG5cdFx0VHlwZU5hbWUsXG5cdFx0dHlwZToge1xuXHRcdFx0c3RhY2s6IHR5cGVTdGFja1xuXHRcdH0sXG5cdFx0YXJnc1xuXHR9ID0gc2VsZjtcblxuXHQvLyBpZiAoIGVycm9yWyBTeW1ib2xDb25zdHJ1Y3Rvck5hbWUgXSApIHtcblx0Ly8gXHRkZWJ1Z2dlcjtcblx0Ly8gfVxuXG5cdGNvbnN0IGV4Y2VwdGlvblJlYXNvbiA9IGVycm9yLmV4Y2VwdGlvblJlYXNvbiB8fCBlcnJvcjtcblxuXHRpZiAoIGVycm9yLmV4Y2VwdGlvblJlYXNvbiAhPT0gdW5kZWZpbmVkICkge1xuXG5cdFx0ZXJyb3IucmVhc29ucy5wdXNoKCBlcnJvci5leGNlcHRpb25SZWFzb24gKTtcblx0XHRlcnJvci5zdXJwbHVzLnB1c2goIGVycm9yICk7XG5cblx0XHR0aHJvdyBlcnJvcjtcblxuXHR9XG5cblx0b2RwKCBlcnJvciwgJ2V4Y2VwdGlvblJlYXNvbicsIHtcblx0XHRnZXQgKCkge1xuXHRcdFx0cmV0dXJuIGV4Y2VwdGlvblJlYXNvbjtcblx0XHR9LFxuXHRcdGVudW1lcmFibGUgOiB0cnVlXG5cdH0gKTtcblxuXHRjb25zdCByZWFzb25zOiBhbnlbIHR5cGVvZiBleGNlcHRpb25SZWFzb24gXSA9IFsgZXhjZXB0aW9uUmVhc29uIF07XG5cblx0b2RwKCBlcnJvciwgJ3JlYXNvbnMnLCB7XG5cdFx0Z2V0ICgpIHtcblx0XHRcdHJldHVybiByZWFzb25zO1xuXHRcdH0sXG5cdFx0ZW51bWVyYWJsZSA6IHRydWVcblx0fSApO1xuXHRjb25zdCBzdXJwbHVzOiBhbnlbIHR5cGVvZiBleGNlcHRpb25SZWFzb24gXSA9IFtdO1xuXHRvZHAoIGVycm9yLCAnc3VycGx1cycsIHtcblx0XHRnZXQgKCkge1xuXHRcdFx0cmV0dXJuIHN1cnBsdXM7XG5cdFx0fSxcblx0XHRlbnVtZXJhYmxlIDogdHJ1ZVxuXHR9ICk7XG5cblx0c2VsZi5Nb2RpZmljYXRvclR5cGUgPSBtYWtlRmFrZU1vZGlmaWNhdG9yVHlwZSggVHlwZU5hbWUgKTtcblxuXHRzZWxmLkluc3RhbmNlTW9kaWZpY2F0b3IgPSBtYWtlSW5zdGFuY2VNb2RpZmljYXRvciggc2VsZiApO1xuXG5cdC8vIENvbnN0cnVjdG9yIEludm9jYXRpb24gSXRzZWxmXG5cdGNvbnN0IGVycm9yZWRJbnN0YW5jZSA9IG5ldyBzZWxmLkluc3RhbmNlTW9kaWZpY2F0b3IoKTtcblxuXHRlcnJvcmVkSW5zdGFuY2VbIFN5bWJvbFJlcGxhY2VVcmFudXMgXSggZXJyb3IgKTtcblxuXHRjb25zdCBzdGFjazogc3RyaW5nW10gPSBbXTtcblxuXHRpZiAoIGVycm9yIGluc3RhbmNlb2YgQkFTRV9NTkVNT05JQ0FfRVJST1IgKSB7XG5cblx0XHRzdGFjay5wdXNoKCBlcnJvci5zdGFjayApO1xuXG5cdH0gZWxzZSB7XG5cblx0XHRjb25zdCB0aXRsZSA9IGBcXG48LS0gY3JlYXRpb24gb2YgWyAke1R5cGVOYW1lfSBdIHRyYWNlZCAtLT5gO1xuXG5cdFx0Z2V0U3RhY2suY2FsbCggZXJyb3JlZEluc3RhbmNlLCB0aXRsZSwgW10sIHRocm93TW9kaWZpY2F0aW9uRXJyb3IgKTtcblxuXHRcdHN0YWNrLnB1c2goIC4uLmVycm9yZWRJbnN0YW5jZS5zdGFjayApO1xuXG5cdFx0Y29uc3QgZXJyb3JTdGFjayA9IGVycm9yLnN0YWNrLnNwbGl0KCAnXFxuJyApO1xuXG5cdFx0c3RhY2sucHVzaCggJzwtLSB3aXRoIHRoZSBmb2xsb3dpbmcgZXJyb3IgLS0+JyApO1xuXG5cdFx0ZXJyb3JTdGFjay5mb3JFYWNoKCAoIGxpbmU6IHN0cmluZyApID0+IHtcblx0XHRcdGlmICggIXN0YWNrLmluY2x1ZGVzKCBsaW5lICkgKSB7XG5cdFx0XHRcdHN0YWNrLnB1c2goIGxpbmUgKTtcblx0XHRcdH1cblx0XHR9ICk7XG5cblx0XHRzdGFjay5wdXNoKCAnXFxuPC0tIG9mIGNvbnN0cnVjdG9yIGRlZmluaXRpb25zIHN0YWNrIC0tPicgKTtcblx0XHRzdGFjay5wdXNoKCAuLi50eXBlU3RhY2sgKTtcblxuXHR9XG5cblx0Y29uc3QgZXJyb3JlZEluc3RhbmNlU3RhY2sgPSBjbGVhbnVwU3RhY2soIHN0YWNrICkuam9pbiggJ1xcbicgKTtcblxuXHQvLyBzdGFydGluZyBmcm9tIE5vZGUuanMgdjIyIHdlIHNob3VsZCBkZWZpbmUgdGhpcyBwcm9wZXJ0eSB0aHJvdWdoIG9kcFxuXHQvLyB0aGF0IHdhcyB1bm5lY2Vzc2FyeSBmb3IgdjIwLCB0aG91Z2ggc2VlbXMgbmV3IHY4IG9wdGltaXplZCBjb21waWxlclxuXHQvLyBpcyBnYXRoZXJpbmcgdmFsdWUgZnJvbSBkZWVwIGNoYWluIGFuZCB3aGlsZSBjb21wYXJpbmcgaXQgd2l0aCBcblx0Ly8gYXNzaWdubWVudCBvcGVyYXRvciwgdGhlbiBpdCB3aWxsIG5vdCBjcmVhdGUgdGhpcyBwcm9wZXJ0eSBcblx0Ly8gc28gd2UgbmVlZCBkaXJlY3QgcHJvcGVydHkgZGVjbGFyYXRpb24gaGVyZSAuLi5cblx0b2RwKCBlcnJvcmVkSW5zdGFuY2UsICdzdGFjaycsIHtcblx0XHRnZXQgKCkge1xuXHRcdFx0cmV0dXJuIGVycm9yZWRJbnN0YW5jZVN0YWNrO1xuXHRcdH1cblx0fSApO1xuXG5cdHNlbGYuaW5oZXJpdGVkSW5zdGFuY2UgPSBlcnJvcmVkSW5zdGFuY2U7XG5cblx0Ly8gaWYgaG9va3MgaGFkIHNvbWUgaW50ZXJjZXB0aW9uOiBzdGFydFxuXHRjb25zdCByZXN1bHRzID0gc2VsZi5pbnZva2VQb3N0SG9va3MoKTtcblx0Y29uc3Qge1xuXHRcdHR5cGUsXG5cdFx0Y29sbGVjdGlvbixcblx0fSA9IHJlc3VsdHM7XG5cblx0aWYgKCB0eXBlLmhhcyggdHJ1ZSApIHx8IGNvbGxlY3Rpb24uaGFzKCB0cnVlICkgKSB7XG5cdFx0cmV0dXJuO1xuXHR9XG5cdC8vIGlmIGhvb2tzIGhhZCBzb21lIGludGVyY2VwdGlvbjogc3RvcFxuXG5cdG9kcCggZXJyb3JlZEluc3RhbmNlLCAnYXJncycsIHtcblx0XHRnZXQgKCkge1xuXHRcdFx0cmV0dXJuIGFyZ3M7XG5cdFx0fVxuXHR9ICk7XG5cblx0b2RwKCBlcnJvcmVkSW5zdGFuY2UsICdvcmlnaW5hbEVycm9yJywge1xuXHRcdGdldCAoKSB7XG5cdFx0XHRyZXR1cm4gZXJyb3I7XG5cdFx0fVxuXHR9ICk7XG5cblx0b2RwKCBlcnJvcmVkSW5zdGFuY2UsICdpbnN0YW5jZScsIHtcblx0XHRnZXQgKCkge1xuXHRcdFx0cmV0dXJuIGVycm9yZWRJbnN0YW5jZTtcblx0XHR9XG5cdH0gKTtcblxuXHRvZHAoIGVycm9yZWRJbnN0YW5jZSwgJ2V4dHJhY3QnLCB7XG5cdFx0Z2V0ICgpIHtcblx0XHRcdHJldHVybiAoKSA9PiB7XG5cdFx0XHRcdHJldHVybiBlcnJvcmVkSW5zdGFuY2UuX19zZWxmX18uZXh0cmFjdCgpO1xuXHRcdFx0fTtcblx0XHR9XG5cdH0gKTtcblxuXHRvZHAoIGVycm9yZWRJbnN0YW5jZSwgJ3BhcnNlJywge1xuXHRcdGdldCAoKSB7XG5cdFx0XHRyZXR1cm4gKCkgPT4ge1xuXHRcdFx0XHRyZXR1cm4gcGFyc2UoIGVycm9yZWRJbnN0YW5jZSApO1xuXHRcdFx0fTtcblx0XHR9XG5cdH0gKTtcblxuXHR0aHJvdyBlcnJvcmVkSW5zdGFuY2U7XG5cbn07XG4iXX0=
@@ -14,4 +14,4 @@ const registerFlowChecker = function (cb) {
14
14
  exports.flowCheckers.set(this, cb);
15
15
  };
16
16
  exports.registerFlowChecker = registerFlowChecker;
17
- //# sourceMappingURL=flowCheckers.js.map
17
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmxvd0NoZWNrZXJzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2FwaS9ob29rcy9mbG93Q2hlY2tlcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsWUFBWSxDQUFDOzs7QUFFYixxREFBdUQ7QUFDdkQsTUFBTSxFQUNMLHlCQUF5QixFQUN6Qix5QkFBeUIsR0FDekIsR0FBRyxvQkFBVyxDQUFDO0FBRUgsUUFBQSxZQUFZLEdBQUcsSUFBSSxPQUFPLEVBQUUsQ0FBQztBQUNuQyxNQUFNLG1CQUFtQixHQUFHLFVBQXFCLEVBQWlCO0lBRXhFLElBQUssT0FBTyxFQUFFLEtBQUssVUFBVSxFQUFHLENBQUM7UUFDaEMsTUFBTSxJQUFJLHlCQUF5QixDQUFDO0lBQ3JDLENBQUM7SUFFRCxJQUFLLG9CQUFZLENBQUMsR0FBRyxDQUFFLElBQUksQ0FBRSxFQUFHLENBQUM7UUFDaEMsTUFBTSxJQUFJLHlCQUF5QixDQUFDO0lBQ3JDLENBQUM7SUFFRCxvQkFBWSxDQUFDLEdBQUcsQ0FBRSxJQUFJLEVBQUUsRUFBRSxDQUFFLENBQUM7QUFFOUIsQ0FBQyxDQUFDO0FBWlcsUUFBQSxtQkFBbUIsdUJBWTlCIiwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzdHJpY3QnO1xuXG5pbXBvcnQgeyBFcnJvcnNUeXBlcyB9IGZyb20gJy4uLy4uL2Rlc2NyaXB0b3JzL2Vycm9ycyc7XG5jb25zdCB7XG5cdE1JU1NJTkdfQ0FMTEJBQ0tfQVJHVU1FTlQsXG5cdEZMT1dfQ0hFQ0tFUl9SRURFRklOSVRJT04sXG59ID0gRXJyb3JzVHlwZXM7XG5cbmV4cG9ydCBjb25zdCBmbG93Q2hlY2tlcnMgPSBuZXcgV2Vha01hcCgpO1xuZXhwb3J0IGNvbnN0IHJlZ2lzdGVyRmxvd0NoZWNrZXIgPSBmdW5jdGlvbiAodGhpczogYW55LCBjYjogKCkgPT4gdW5rbm93biApIHtcblxuXHRpZiAoIHR5cGVvZiBjYiAhPT0gJ2Z1bmN0aW9uJyApIHtcblx0XHR0aHJvdyBuZXcgTUlTU0lOR19DQUxMQkFDS19BUkdVTUVOVDtcblx0fVxuXG5cdGlmICggZmxvd0NoZWNrZXJzLmhhcyggdGhpcyApICkge1xuXHRcdHRocm93IG5ldyBGTE9XX0NIRUNLRVJfUkVERUZJTklUSU9OO1xuXHR9XG5cblx0Zmxvd0NoZWNrZXJzLnNldCggdGhpcywgY2IgKTtcblxufTtcbiJdfQ==
@@ -7,4 +7,4 @@ var registerHook_1 = require("./registerHook");
7
7
  Object.defineProperty(exports, "registerHook", { enumerable: true, get: function () { return registerHook_1.registerHook; } });
8
8
  var flowCheckers_1 = require("./flowCheckers");
9
9
  Object.defineProperty(exports, "registerFlowChecker", { enumerable: true, get: function () { return flowCheckers_1.registerFlowChecker; } });
10
- //# sourceMappingURL=index.js.map
10
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXBpL2hvb2tzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLFlBQVksQ0FBQzs7O0FBRWIsMkNBQTBDO0FBQWpDLHdHQUFBLFVBQVUsT0FBQTtBQUNuQiwrQ0FBOEM7QUFBckMsNEdBQUEsWUFBWSxPQUFBO0FBQ3JCLCtDQUFxRDtBQUE1QyxtSEFBQSxtQkFBbUIsT0FBQSIsInNvdXJjZXNDb250ZW50IjpbIid1c2Ugc3RyaWN0JztcblxuZXhwb3J0IHsgaW52b2tlSG9vayB9IGZyb20gJy4vaW52b2tlSG9vayc7XG5leHBvcnQgeyByZWdpc3Rlckhvb2sgfSBmcm9tICcuL3JlZ2lzdGVySG9vayc7XG5leHBvcnQgeyByZWdpc3RlckZsb3dDaGVja2VyIH0gZnJvbSAnLi9mbG93Q2hlY2tlcnMnO1xuXG4iXX0=
@@ -42,4 +42,4 @@ const invokeHook = function (hookType, opts) {
42
42
  return invocationResults;
43
43
  };
44
44
  exports.invokeHook = invokeHook;
45
- //# sourceMappingURL=invokeHook.js.map
45
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW52b2tlSG9vay5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hcGkvaG9va3MvaW52b2tlSG9vay50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxZQUFZLENBQUM7OztBQUViLCtDQUE0QztBQUM1QyxNQUFNLEVBQ0wsU0FBUyxHQUNULEdBQUcscUJBQVMsQ0FBQztBQUVkLGlEQUE4QztBQUU5Qyx5Q0FBc0M7QUFFL0IsTUFBTSxVQUFVLEdBQUcsVUFBc0IsUUFBZ0IsRUFBRSxJQUFnQztJQUVqRyxNQUFNLEVBQ0wsSUFBSSxFQUNKLGdCQUFnQixFQUNoQixpQkFBaUIsRUFDakIsSUFBSSxFQUVKLE9BQU8sRUFDUCxHQUFHLElBQUksQ0FBQztJQUVULE1BQU0saUJBQWlCLEdBQUcsSUFBSSxHQUFHLEVBQUUsQ0FBQztJQUdwQyxNQUFNLElBQUksR0FBRyxJQUFJLENBQUM7SUFFbEIsSUFBSyxJQUFBLFNBQUcsRUFBRSxJQUFJLENBQUMsS0FBSyxFQUFFLFFBQVEsQ0FBRSxFQUFHLENBQUM7UUFLbkMsTUFBTSxFQUNMLFFBQVEsR0FFUixHQUFHLElBQUksQ0FBQztRQUVULE1BQU0sUUFBUSxHQUFHO1lBQ2hCLElBQUk7WUFDSixRQUFRO1lBQ1IsZ0JBQWdCLEVBQUcsZ0JBQWdCLENBQUMsV0FBVyxDQUFDLElBQUksS0FBSyxTQUFTLENBQUMsQ0FBQztnQkFDbkUsSUFBSSxDQUFDLENBQUMsQ0FBQyxnQkFBZ0I7WUFDeEIsSUFBSTtTQUNKLENBQUM7UUFFRixJQUFLLE9BQU8saUJBQWlCLEtBQUssUUFBUSxFQUFHLENBQUM7WUFDN0MsTUFBTSxDQUFDLE1BQU0sQ0FBRSxRQUFRLEVBQUU7Z0JBQ3hCLGlCQUFpQjtnQkFDakIsc0JBQXNCLENBQUcsS0FBWTtvQkFDcEMsT0FBTyxDQUFDLHNCQUFzQixDQUFFLEtBQUssQ0FBRSxDQUFDO2dCQUN6QyxDQUFDO2FBQ0QsQ0FBRSxDQUFDO1FBQ0wsQ0FBQztRQUdELElBQUksQ0FBQyxLQUFLLENBQUUsUUFBUSxDQUFFLENBQUMsT0FBTyxDQUFFLENBQUUsSUFBNEQsRUFBRyxFQUFFO1lBQ2xHLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUUsSUFBSSxFQUFFLFFBQVEsQ0FBRSxDQUFDO1lBQzNDLGlCQUFpQixDQUFDLEdBQUcsQ0FBRSxNQUFNLENBQUUsQ0FBQztRQUNqQyxDQUFDLENBQUUsQ0FBQztRQUVKLE1BQU0sV0FBVyxHQUFHLDJCQUFZLENBQUMsR0FBRyxDQUFFLElBQUksQ0FBRSxDQUFDO1FBQzdDLElBQUssT0FBTyxXQUFXLEtBQUssVUFBVSxFQUFHLENBQUM7WUFDekMsV0FBVztpQkFDVCxJQUFJLENBQUUsSUFBSSxFQUFFLE1BQU0sQ0FBQyxNQUFNLENBQUUsRUFBRSxFQUFFO2dCQUMvQixpQkFBaUI7Z0JBQ2pCLFFBQVE7YUFDUixFQUFFLFFBQVEsQ0FBRSxDQUFFLENBQUM7UUFDbEIsQ0FBQztJQUVGLENBQUM7SUFFRCxPQUFPLGlCQUFpQixDQUFDO0FBRTFCLENBQUMsQ0FBQztBQTlEVyxRQUFBLFVBQVUsY0E4RHJCIiwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzdHJpY3QnO1xuXG5pbXBvcnQgeyBjb25zdGFudHMgfSBmcm9tICcuLi8uLi9jb25zdGFudHMnO1xuY29uc3Qge1xuXHRNTkVNT05JQ0EsXG59ID0gY29uc3RhbnRzO1xuXG5pbXBvcnQgeyBmbG93Q2hlY2tlcnMgfSBmcm9tICcuL2Zsb3dDaGVja2Vycyc7XG5cbmltcG9ydCB7IGhvcCB9IGZyb20gJy4uLy4uL3V0aWxzL2hvcCc7XG5cbmV4cG9ydCBjb25zdCBpbnZva2VIb29rID0gZnVuY3Rpb24gKCB0aGlzOiBhbnksIGhvb2tUeXBlOiBzdHJpbmcsIG9wdHM6IHsgWyBpbmRleDogc3RyaW5nIF06IGFueSB9ICkge1xuXG5cdGNvbnN0IHtcblx0XHR0eXBlLFxuXHRcdGV4aXN0ZW50SW5zdGFuY2UsXG5cdFx0aW5oZXJpdGVkSW5zdGFuY2UsXG5cdFx0YXJncyxcblx0XHQvLyBJbnN0YW5jZU1vZGlmaWNhdG9yLFxuXHRcdGNyZWF0b3Jcblx0fSA9IG9wdHM7XG5cblx0Y29uc3QgaW52b2NhdGlvblJlc3VsdHMgPSBuZXcgU2V0KCk7XG5cblx0Ly8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby10aGlzLWFsaWFzXG5cdGNvbnN0IHNlbGYgPSB0aGlzO1xuXG5cdGlmICggaG9wKCBzZWxmLmhvb2tzLCBob29rVHlwZSApICkge1xuXG5cdFx0Ly8gXCJ0aGlzXCIgcmVmZXJlcyB0b1xuXHRcdC8vIHR5cGUsIGlmIGNhbGxlZCBmcm9tIHR5cGVzXG5cblx0XHRjb25zdCB7XG5cdFx0XHRUeXBlTmFtZSxcblx0XHRcdC8vIHBhcmVudFR5cGUsXG5cdFx0fSA9IHR5cGU7XG5cblx0XHRjb25zdCBob29rQXJncyA9IHtcblx0XHRcdHR5cGUsXG5cdFx0XHRUeXBlTmFtZSxcblx0XHRcdGV4aXN0ZW50SW5zdGFuY2UgOiBleGlzdGVudEluc3RhbmNlLmNvbnN0cnVjdG9yLm5hbWUgPT09IE1ORU1PTklDQSA/XG5cdFx0XHRcdG51bGwgOiBleGlzdGVudEluc3RhbmNlLFxuXHRcdFx0YXJncyxcblx0XHR9O1xuXG5cdFx0aWYgKCB0eXBlb2YgaW5oZXJpdGVkSW5zdGFuY2UgPT09ICdvYmplY3QnICkge1xuXHRcdFx0T2JqZWN0LmFzc2lnbiggaG9va0FyZ3MsIHtcblx0XHRcdFx0aW5oZXJpdGVkSW5zdGFuY2UsXG5cdFx0XHRcdHRocm93TW9kaWZpY2F0aW9uRXJyb3IgKCBlcnJvcjogRXJyb3IgKSB7XG5cdFx0XHRcdFx0Y3JlYXRvci50aHJvd01vZGlmaWNhdGlvbkVycm9yKCBlcnJvciApO1xuXHRcdFx0XHR9XG5cdFx0XHR9ICk7XG5cdFx0fVxuXG5cdFx0Ly8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXNoYWRvd1xuXHRcdHRoaXMuaG9va3NbIGhvb2tUeXBlIF0uZm9yRWFjaCggKCBob29rOiAoIHRoaXM6IHVua25vd24sIGhvb2tQYXJhbXM6IHR5cGVvZiBob29rQXJncyApID0+IHZvaWQgKSA9PiB7XG5cdFx0XHRjb25zdCByZXN1bHQgPSBob29rLmNhbGwoIHNlbGYsIGhvb2tBcmdzICk7XG5cdFx0XHRpbnZvY2F0aW9uUmVzdWx0cy5hZGQoIHJlc3VsdCApO1xuXHRcdH0gKTtcblxuXHRcdGNvbnN0IGZsb3dDaGVja2VyID0gZmxvd0NoZWNrZXJzLmdldCggdGhpcyApO1xuXHRcdGlmICggdHlwZW9mIGZsb3dDaGVja2VyID09PSAnZnVuY3Rpb24nICkge1xuXHRcdFx0Zmxvd0NoZWNrZXJcblx0XHRcdFx0LmNhbGwoIHRoaXMsIE9iamVjdC5hc3NpZ24oIHt9LCB7XG5cdFx0XHRcdFx0aW52b2NhdGlvblJlc3VsdHMsXG5cdFx0XHRcdFx0aG9va1R5cGUsXG5cdFx0XHRcdH0sIGhvb2tBcmdzICkgKTtcblx0XHR9XG5cblx0fVxuXG5cdHJldHVybiBpbnZvY2F0aW9uUmVzdWx0cztcblxufTtcbiJdfQ==
@@ -23,4 +23,4 @@ const registerHook = function (hookType, cb) {
23
23
  }
24
24
  };
25
25
  exports.registerHook = registerHook;
26
- //# sourceMappingURL=registerHook.js.map
26
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVnaXN0ZXJIb29rLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2FwaS9ob29rcy9yZWdpc3Rlckhvb2sudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsWUFBWSxDQUFDOzs7QUFFYixxREFBdUQ7QUFDdkQsTUFBTSxFQUNMLGVBQWUsRUFDZixxQkFBcUIsR0FDckIsR0FBRyxvQkFBVyxDQUFDO0FBRWhCLE1BQU0sVUFBVSxHQUFHO0lBQ2xCLGFBQWE7SUFDYixjQUFjO0lBQ2QsZUFBZTtDQUNmLENBQUM7QUFFSyxNQUFNLFlBQVksR0FBRyxVQUFzQixRQUFnQixFQUFFLEVBQW9CO0lBRXZGLElBQUssQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFFLFFBQVEsQ0FBRSxFQUFHLENBQUM7UUFDeEMsTUFBTSxJQUFJLGVBQWUsQ0FBQztJQUMzQixDQUFDO0lBRUQsSUFBSyxPQUFPLEVBQUUsS0FBSyxVQUFVLEVBQUcsQ0FBQztRQUNoQyxNQUFNLElBQUkscUJBQXFCLENBQUM7SUFDakMsQ0FBQztJQUVELElBQUssQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFFLFFBQVEsQ0FBRSxFQUFHLENBQUM7UUFDL0IsSUFBSSxDQUFDLEtBQUssQ0FBRSxRQUFRLENBQUUsR0FBRyxJQUFJLEdBQUcsQ0FBRSxDQUFFLEVBQUUsQ0FBRSxDQUFFLENBQUM7SUFDNUMsQ0FBQztTQUFNLENBQUM7UUFDUCxJQUFJLENBQUMsS0FBSyxDQUFFLFFBQVEsQ0FBRSxDQUFDLEdBQUcsQ0FBRSxFQUFFLENBQUUsQ0FBQztJQUNsQyxDQUFDO0FBRUYsQ0FBQyxDQUFDO0FBaEJXLFFBQUEsWUFBWSxnQkFnQnZCIiwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzdHJpY3QnO1xuXG5pbXBvcnQgeyBFcnJvcnNUeXBlcyB9IGZyb20gJy4uLy4uL2Rlc2NyaXB0b3JzL2Vycm9ycyc7XG5jb25zdCB7XG5cdFdST05HX0hPT0tfVFlQRSxcblx0TUlTU0lOR19IT09LX0NBTExCQUNLLFxufSA9IEVycm9yc1R5cGVzO1xuXG5jb25zdCBob29rc1R5cGVzID0gW1xuXHQncHJlQ3JlYXRpb24nLFxuXHQncG9zdENyZWF0aW9uJyxcblx0J2NyZWF0aW9uRXJyb3InLFxuXTtcblxuZXhwb3J0IGNvbnN0IHJlZ2lzdGVySG9vayA9IGZ1bmN0aW9uICggdGhpczogYW55LCBob29rVHlwZTogc3RyaW5nLCBjYjogQ2FsbGFibGVGdW5jdGlvbiApIHtcblxuXHRpZiAoICFob29rc1R5cGVzLmluY2x1ZGVzKCBob29rVHlwZSApICkge1xuXHRcdHRocm93IG5ldyBXUk9OR19IT09LX1RZUEU7XG5cdH1cblxuXHRpZiAoIHR5cGVvZiBjYiAhPT0gJ2Z1bmN0aW9uJyApIHtcblx0XHR0aHJvdyBuZXcgTUlTU0lOR19IT09LX0NBTExCQUNLO1xuXHR9XG5cblx0aWYgKCAhdGhpcy5ob29rc1sgaG9va1R5cGUgXSApIHtcblx0XHR0aGlzLmhvb2tzWyBob29rVHlwZSBdID0gbmV3IFNldCggWyBjYiBdICk7XG5cdH0gZWxzZSB7XG5cdFx0dGhpcy5ob29rc1sgaG9va1R5cGUgXS5hZGQoIGNiICk7XG5cdH1cblxufTtcbiJdfQ==
@@ -13,4 +13,4 @@ exports.types = {
13
13
  define: types_1.define,
14
14
  lookup: types_1.lookup,
15
15
  };
16
- //# sourceMappingURL=index.js.map
16
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvYXBpL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLFlBQVksQ0FBQzs7O0FBVWIsbUNBSWlCO0FBQ2pCLG1DQUdpQjtBQUVqQixxQ0FBbUM7QUFFdEIsUUFBQSxLQUFLLEdBQUc7SUFDcEIsVUFBVSxFQUFWLGtCQUFVO0lBQ1YsWUFBWSxFQUFaLG9CQUFZO0lBQ1osbUJBQW1CLEVBQW5CLDJCQUFtQjtDQUNuQixDQUFDO0FBRVcsUUFBQSxLQUFLLEdBQUc7SUFDcEIsTUFBTSxFQUFOLGNBQU07SUFDTixNQUFNLEVBQU4sY0FBTTtDQUNOLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIHN0cmljdCc7XG5cbi8vIFRPRE8gOlxuXG4vLyBldmVudHNcbi8vIGhhbmRsZXJzXG4vLyBoZWxwZXJzXG4vLyBsb2FkZXJzXG4vLyB0cmFuc2Zvcm1zXG5cbmltcG9ydCB7XG5cdGludm9rZUhvb2ssXG5cdHJlZ2lzdGVySG9vayxcblx0cmVnaXN0ZXJGbG93Q2hlY2tlcixcbn0gZnJvbSAnLi9ob29rcyc7XG5pbXBvcnQge1xuXHRkZWZpbmUsXG5cdGxvb2t1cCxcbn0gZnJvbSAnLi90eXBlcyc7XG5cbmV4cG9ydCAqIGFzIGVycm9ycyBmcm9tICcuL2Vycm9ycyc7XG5cbmV4cG9ydCBjb25zdCBob29rcyA9IHtcblx0aW52b2tlSG9vayxcblx0cmVnaXN0ZXJIb29rLFxuXHRyZWdpc3RlckZsb3dDaGVja2VyLFxufTtcblxuZXhwb3J0IGNvbnN0IHR5cGVzID0ge1xuXHRkZWZpbmUsXG5cdGxvb2t1cCxcbn07XG4iXX0=
@@ -2,7 +2,7 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.InstanceCreator = void 0;
4
4
  const constants_1 = require("../../constants");
5
- const { odp, SymbolConstructorName, defaultOptions: { ModificationConstructor: defaultMC } } = constants_1.constants;
5
+ const { odp, SymbolConstructorName } = constants_1.constants;
6
6
  const errors_1 = require("../../descriptors/errors");
7
7
  const { WRONG_MODIFICATION_PATTERN, } = errors_1.ErrorsTypes;
8
8
  const utils_1 = require("../utils");
@@ -27,7 +27,8 @@ const invokePreHooks = function () {
27
27
  const invokePostHooks = function () {
28
28
  const creator = this;
29
29
  const { inheritedInstance, } = creator;
30
- const { __type__: type, __parent__: existentInstance, __args__: args, } = inheritedInstance;
30
+ const props = (0, addProps_1.getProps)(inheritedInstance);
31
+ const { __type__: type, __parent__: existentInstance, __args__: args, } = props;
31
32
  const { collection, } = type;
32
33
  const hookType = inheritedInstance instanceof Error ?
33
34
  'creationError' : 'postCreation';
@@ -135,7 +136,7 @@ const InstanceCreatorPrototype = {
135
136
  exports.InstanceCreator = function (type, existentInstance, args, chained) {
136
137
  const { constructHandler, proto, config, TypeName } = type;
137
138
  const { ModificationConstructor, blockErrors, submitStack } = config;
138
- const mc = ModificationConstructor(obeyConstructor_1.obey, defaultMC);
139
+ const mc = ModificationConstructor(obeyConstructor_1.obey);
139
140
  const self = this;
140
141
  const ModificatorType = constructHandler();
141
142
  Object.assign(self, {
@@ -193,4 +194,4 @@ exports.InstanceCreator = function (type, existentInstance, args, chained) {
193
194
  return self.inheritedInstance;
194
195
  };
195
196
  Object.assign(exports.InstanceCreator.prototype, InstanceCreatorPrototype);
196
- //# sourceMappingURL=InstanceCreator.js.map
197
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiSW5zdGFuY2VDcmVhdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2FwaS90eXBlcy9JbnN0YW5jZUNyZWF0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsWUFBWSxDQUFDOzs7QUFJYiwrQ0FFeUI7QUFFekIsTUFBTSxFQUNMLEdBQUcsRUFDSCxxQkFBcUIsRUFDckIsR0FBRyxxQkFBUyxDQUFDO0FBRWQscURBQXVEO0FBQ3ZELE1BQU0sRUFDTCwwQkFBMEIsR0FDMUIsR0FBRyxvQkFBVyxDQUFDO0FBRWhCLG9DQUFrQztBQUNsQyxNQUFNLEVBQ0wscUJBQXFCLEVBQ3JCLHVCQUF1QixHQUN2QixHQUFHLGVBQVUsQ0FBQztBQUVmLHNDQUFxQztBQUNyQyw2RUFBMEU7QUFFMUUseUNBQXVEO0FBRXZELCtEQUFnRTtBQUVoRSx1REFBeUM7QUFFekMsTUFBTSxjQUFjLEdBQUc7SUFFdEIsTUFBTSxFQUNMLElBQUksRUFDSixnQkFBZ0IsRUFDaEIsSUFBSSxFQUNKLG1CQUFtQixFQUNuQixHQUFHLElBQUksQ0FBQztJQUVULE1BQU0sRUFDTCxVQUFVLEdBQ1YsR0FBRyxJQUFJLENBQUM7SUFFVCxNQUFNLFFBQVEsR0FBRztRQUNoQixJQUFJO1FBQ0osZ0JBQWdCO1FBQ2hCLElBQUk7UUFDSixtQkFBbUI7S0FDbkIsQ0FBQztJQUVGLFVBQVUsQ0FBQyxVQUFVLENBQUUsYUFBYSxFQUFFLFFBQVEsQ0FBRSxDQUFDO0lBRWpELElBQUksQ0FBQyxVQUFVLENBQUUsYUFBYSxFQUFFLFFBQVEsQ0FBRSxDQUFDO0FBRTVDLENBQUMsQ0FBQztBQUdGLE1BQU0sZUFBZSxHQUFHO0lBR3ZCLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQztJQUNyQixNQUFNLEVBQ0wsaUJBQWlCLEdBQ2pCLEdBQUcsT0FBTyxDQUFDO0lBRVosTUFBTSxLQUFLLEdBQUcsSUFBQSxtQkFBUSxFQUFDLGlCQUFpQixDQUFVLENBQUM7SUFFbkQsTUFB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Q0FBRSxDQUFDO0lBRTNELElBQUssV0FBVyxFQUFHLENBQUM7UUFFbkIsSUFBSSxDQUFDO1lBRUosTUFBTSxNQUFNLEdBQUcsSUFBSSxJQUFJLENBQUMsbUJBQW1CLENBQUUsR0FBRyxJQUFJLENBQUUsQ0FBQztZQUV2RCxJQUFJLENBQUMsaUJBQWlCLEdBQUcsTUFBTSxDQUFDO1FBRWpDLENBQUM7UUFBQyxPQUFRLEtBQUssRUFBRyxDQUFDO1lBRWxCLElBQUksQ0FBQyxzQkFBc0IsQ0FBRSxLQUFLLENBQUUsQ0FBQztRQUV0QyxDQUFDO0lBRUYsQ0FBQztTQUFNLENBQUM7UUFHUCxNQUFNLE1BQU0sR0FBRyxJQUFJLElBQUksQ0FBQyxtQkFBbUIsQ0FBRSxHQUFHLElBQUksQ0FBRSxDQUFDO1FBRXZELElBQUksQ0FBQyxpQkFBaUIsR0FBRyxNQUFNLENBQUM7SUFFakMsQ0FBQztJQUdELElBQUssSUFBSSxDQUFDLGlCQUFpQixZQUFZLE9BQU8sRUFBRyxDQUFDO1FBRWpELE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUUsSUFBSSxDQUFFLENBQUM7UUFFeEMsR0FBRyxDQUFFLE1BQU0sRUFBRSxxQkFBcUIsRUFBRTtZQUNuQyxHQUFHO2dCQUNGLE9BQU8sUUFBUSxDQUFDO1lBQ2pCLENBQUM7U0FDRCxDQUFFLENBQUM7UUFFSixPQUFPLE1BQU0sQ0FBQztJQUVmLENBQUM7SUFFRCxJQUFJLENBQUMsY0FBYyxDQUFFLElBQUksQ0FBRSxDQUFDO0lBRTVCLE9BQU8sSUFBSSxDQUFDLGlCQUFpQixDQUFDO0FBRS9CLENBQXlELENBQUM7QUFFMUQsTUFBTSxDQUFDLE1BQU0sQ0FBRSx1QkFBZSxDQUFDLFNBQVMsRUFBRSx3QkFBd0IsQ0FBRSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueSAqL1xuJ3VzZSBzdHJpY3QnO1xuXG5pbXBvcnQgeyBDb25zdHJ1Y3RvckZ1bmN0aW9uIH0gZnJvbSAnLi4vLi4vdHlwZXMnO1xuXG5pbXBvcnQge1xuXHRjb25zdGFudHNcbn0gZnJvbSAnLi4vLi4vY29uc3RhbnRzJztcblxuY29uc3Qge1xuXHRvZHAsXG5cdFN5bWJvbENvbnN0cnVjdG9yTmFtZVxufSA9IGNvbnN0YW50cztcblxuaW1wb3J0IHsgRXJyb3JzVHlwZXMgfSBmcm9tICcuLi8uLi9kZXNjcmlwdG9ycy9lcnJvcnMnO1xuY29uc3Qge1xuXHRXUk9OR19NT0RJRklDQVRJT05fUEFUVEVSTixcbn0gPSBFcnJvcnNUeXBlcztcblxuaW1wb3J0IFR5cGVzVXRpbHMgZnJvbSAnLi4vdXRpbHMnO1xuY29uc3Qge1xuXHRnZXRFeGlzdGVudEFzeW5jU3RhY2ssXG5cdG1ha2VGYWtlTW9kaWZpY2F0b3JUeXBlLFxufSA9IFR5cGVzVXRpbHM7XG5cbmltcG9ydCB7IGdldFN0YWNrIH0gZnJvbSAnLi4vZXJyb3JzJztcbmltcG9ydCB7IHRocm93TW9kaWZpY2F0aW9uRXJyb3IgfSBmcm9tICcuLi9lcnJvcnMvdGhyb3dNb2RpZmljYXRpb25FcnJvcic7XG5cbmltcG9ydCB7IGFkZFByb3BzLCBnZXRQcm9wcywgUHJvcHMgfSBmcm9tICcuL2FkZFByb3BzJztcblxuaW1wb3J0IHsgbWFrZUluc3RhbmNlTW9kaWZpY2F0b3IgfSBmcm9tICcuL0luc3RhbmNlTW9kaWZpY2F0b3InO1xuXG5pbXBvcnQgeyBvYmV5IH0gZnJvbSAnLi9vYmV5Q29uc3RydWN0b3InO1xuXG5jb25zdCBpbnZva2VQcmVIb29rcyA9IGZ1bmN0aW9uICggdGhpczogYW55ICkge1xuXG5cdGNvbnN0IHtcblx0XHR0eXBlLFxuXHRcdGV4aXN0ZW50SW5zdGFuY2UsXG5cdFx0YXJncyxcblx0XHRJbnN0YW5jZU1vZGlmaWNhdG9yXG5cdH0gPSB0aGlzO1xuXG5cdGNvbnN0IHtcblx0XHRjb2xsZWN0aW9uLFxuXHR9ID0gdHlwZTtcblxuXHRjb25zdCBob29rRGF0YSA9IHtcblx0XHR0eXBlLFxuXHRcdGV4aXN0ZW50SW5zdGFuY2UsXG5cdFx0YXJncyxcblx0XHRJbnN0YW5jZU1vZGlmaWNhdG9yXG5cdH07XG5cblx0Y29sbGVjdGlvbi5pbnZva2VIb29rKCAncHJlQ3JlYXRpb24nLCBob29rRGF0YSApO1xuXG5cdHR5cGUuaW52b2tlSG9vayggJ3ByZUNyZWF0aW9uJywgaG9va0RhdGEgKTtcblxufTtcblxuXG5jb25zdCBpbnZva2VQb3N0SG9va3MgPSBmdW5jdGlvbiAoIHRoaXM6IGFueSApIHtcblxuXHQvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXRoaXMtYWxpYXNcblx0Y29uc3QgY3JlYXRvciA9IHRoaXM7XG5cdGNvbnN0IHtcblx0XHRpbmhlcml0ZWRJbnN0YW5jZSxcblx0fSA9IGNyZWF0b3I7XG5cblx0Y29uc3QgcHJvcHMgPSBnZXRQcm9wcyhpbmhlcml0ZWRJbnN0YW5jZSkgYXMgUHJvcHM7XG5cblx0Y29uc3Qge1xuXHRcdF9fdHlwZV9fOiB0eXBlLFxuXHRcdF9fcGFyZW50X186IGV4aXN0ZW50SW5zdGFuY2UsXG5cdFx0X19hcmdzX186IGFyZ3MsXG5cdH0gPSBwcm9wcztcblxuXHRjb25zdCB7XG5cdFx0Y29sbGVjdGlvbixcblx0fSA9IHR5cGU7XG5cblx0Y29uc3QgaG9va1R5cGUgPSBpbmhlcml0ZWRJbnN0YW5jZSBpbnN0YW5jZW9mIEVycm9yID9cblx0XHQnY3JlYXRpb25FcnJvcicgOiAncG9zdENyZWF0aW9uJztcblxuXHRjb25zdCBob29rRGF0YSA9IHtcblx0XHR0eXBlLFxuXHRcdGV4aXN0ZW50SW5zdGFuY2UsXG5cdFx0aW5oZXJpdGVkSW5zdGFuY2UsXG5cdFx0YXJncyxcblx0XHRjcmVhdG9yXG5cdH07XG5cblx0cmV0dXJuIHtcblxuXHRcdHR5cGUgOiB0eXBlLmludm9rZUhvb2soIGhvb2tUeXBlLCBob29rRGF0YSApLFxuXG5cdFx0Y29sbGVjdGlvbiA6IGNvbGxlY3Rpb24uaW52b2tlSG9vayggaG9va1R5cGUsIGhvb2tEYXRhICksXG5cblx0fTtcblxufTtcblxuY29uc3QgcG9zdFByb2Nlc3NpbmcgPSBmdW5jdGlvbiAoIHRoaXM6IGFueSwgY29udGludWF0aW9uT2Y6IGFueSApIHtcblxuXHQvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXRoaXMtYWxpYXNcblx0Y29uc3Qgc2VsZiA9IHRoaXM7XG5cdGNvbnN0IHtcblx0XHRzdGFjayxcblx0fSA9IHNlbGY7XG5cblx0aWYgKCAhc2VsZi5pbmhlcml0ZWRJbnN0YW5jZS5jb25zdHJ1Y3RvciApIHtcblx0XHRjb25zdCBtc2cgPSAnc2hvdWxkIGluaGVyaXQgZnJvbSBtbmVtb25pY2EgaW5zdGFuY2UnO1xuXHRcdHNlbGYudGhyb3dNb2RpZmljYXRpb25FcnJvciggbmV3IFdST05HX01PRElGSUNBVElPTl9QQVRURVJOKCBtc2csIHN0YWNrICkgKTtcblx0fVxuXG5cdGlmICggIXNlbGYuaW5oZXJpdGVkSW5zdGFuY2UuY29uc3RydWN0b3JbIFN5bWJvbENvbnN0cnVjdG9yTmFtZSBdICkge1xuXHRcdGNvbnN0IG1zZyA9ICdzaG91bGQgaW5oZXJpdCBmcm9tIG1uZW1vbmljYSBpbnN0YW5jZSc7XG5cdFx0c2VsZi50aHJvd01vZGlmaWNhdGlvbkVycm9yKCBuZXcgV1JPTkdfTU9ESUZJQ0FUSU9OX1BBVFRFUk4oIG1zZywgc3RhY2sgKSApO1xuXHR9XG5cblx0aWYgKCBjb250aW51YXRpb25PZiAmJiAhKCBzZWxmLmluaGVyaXRlZEluc3RhbmNlIGluc3RhbmNlb2YgY29udGludWF0aW9uT2YgKSApIHtcblx0XHQvLyBkZWJ1Z2dlcjtcblx0XHRjb25zdCBpY24gPSBzZWxmLmluaGVyaXRlZEluc3RhbmNlLmNvbnN0cnVjdG9yLm5hbWU7XG5cdFx0Y29uc3QgbXNnID0gYHNob3VsZCBpbmhlcml0IGZyb20gJHtjb250aW51YXRpb25PZi5UeXBlTmFtZX0gYnV0IGdvdCAke2ljbn1gO1xuXHRcdHNlbGYudGhyb3dNb2RpZmljYXRpb25FcnJvciggbmV3IFdST05HX01PRElGSUNBVElPTl9QQVRURVJOKCBtc2csIHN0YWNrICkgKTtcblx0XHQvLyB0aHJvdyBuZXcgV1JPTkdfTU9ESUZJQ0FUSU9OX1BBVFRFUk4obXNnLCBzZWxmLnN0YWNrKTtcblx0fVxuXG5cdG9kcCggc2VsZi5pbmhlcml0ZWRJbnN0YW5jZSwgJ19fc2VsZl9fJywge1xuXHRcdGdldCAoKSB7XG5cdFx0XHRyZXR1cm4gc2VsZi5pbmhlcml0ZWRJbnN0YW5jZTtcblx0XHR9XG5cdH0gKTtcblxuXHRzZWxmLmludm9rZVBvc3RIb29rcygpO1xuXG59O1xuXG5jb25zdCBhZGRUaGVuID0gZnVuY3Rpb24gKCB0aGlzOiBhbnksIHRoZW46IGFueSApIHtcblxuXHQvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXRoaXMtYWxpYXNcblx0Y29uc3Qgc2VsZiA9IHRoaXM7XG5cblx0c2VsZi5pbmhlcml0ZWRJbnN0YW5jZSA9IHNlbGYuaW5oZXJpdGVkSW5zdGFuY2Vcblx0XHQvLyAudGhlbiggKCBpbnN0YW5jZTogYW55ICkgPT4ge1xuXHRcdC50aGVuKCAoKSA9PiB7XG5cdFx0XHQvLyBzZWxmLmluaGVyaXRlZEluc3RhbmNlID0gaW5zdGFuY2U7XG5cdFx0XHRzZWxmLmluaGVyaXRlZEluc3RhbmNlID1cblx0XHRcdFx0bmV3IEluc3RhbmNlQ3JlYXRvcihcblx0XHRcdFx0XHR0aGVuLnN1YnR5cGUsXG5cdFx0XHRcdFx0c2VsZi5pbmhlcml0ZWRJbnN0YW5jZSxcblx0XHRcdFx0XHR0aGVuLmFyZ3MsXG5cdFx0XHRcdFx0Ly8gd2FzIGNoYWluZWQgOlxuXHRcdFx0XHRcdHRydWVcblx0XHRcdFx0XHQvLyBzZWxmLmV4aXN0ZW50SW5zdGFuY2Vcblx0XHRcdFx0KTtcblx0XHRcdHJldHVybiBzZWxmLmluaGVyaXRlZEluc3RhbmNlO1xuXHRcdH0gKTtcblxufTtcblxuXG5jb25zdCBtYWtlQXdhaXRlciA9IGZ1bmN0aW9uICggdGhpczogYW55LCB0eXBlOiBhbnksIHRoZW46IGFueSApIHtcblxuXHQvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXRoaXMtYWxpYXNcblx0Y29uc3Qgc2VsZiA9IHRoaXM7XG5cblx0c2VsZi5pbmhlcml0ZWRJbnN0YW5jZSA9IHNlbGYuaW5oZXJpdGVkSW5zdGFuY2Vcblx0XHQudGhlbiggKCBpbnN0YW5jZTogYW55ICkgPT4ge1xuXG5cdFx0XHRpZiAoIHR5cGVvZiBpbnN0YW5jZSAhPT0gJ29iamVjdCcgKSB7XG5cdFx0XHRcdGlmICggc2VsZi5jb25maWcuYXdhaXRSZXR1cm4gKSB7XG5cdFx0XHRcdFx0Y29uc3QgbXNnID0gYHNob3VsZCBpbmhlcml0IGZyb20gJHt0eXBlLlR5cGVOYW1lfTogc2VlbXMgYXN5bmMgJHt0eXBlLlR5cGVOYW1lfSBoYXMgbm8gcmV0dXJuIHN0YXRlbWVudGA7XG5cdFx0XHRcdFx0dGhyb3cgbmV3IFdST05HX01PRElGSUNBVElPTl9QQVRURVJOKCBtc2csIHNlbGYuc3RhY2sgKTtcblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRyZXR1cm4gaW5zdGFuY2U7XG5cdFx0XHRcdH1cblx0XHRcdH1cblxuXHRcdFx0aWYgKCAhKCBpbnN0YW5jZSBpbnN0YW5jZW9mIHNlbGYudHlwZSApICkge1xuXHRcdFx0XHRjb25zdCBpY24gPSBpbnN0YW5jZS5jb25zdHJ1Y3Rvci5uYW1lO1xuXHRcdFx0XHRjb25zdCBtc2cgPSBgc2hvdWxkIGluaGVyaXQgZnJvbSAke3R5cGUuVHlwZU5hbWV9IGJ1dCBnb3QgJHtpY259YDtcblx0XHRcdFx0Ly8gc2VsZi50aHJvd01vZGlmaWNhdGlvbkVycm9yKG5ldyBXUk9OR19NT0RJRklDQVRJT05fUEFUVEVSTihtc2csIHNlbGYuc3RhY2spKTtcblx0XHRcdFx0dGhyb3cgbmV3IFdST05HX01PRElGSUNBVElPTl9QQVRURVJOKCBtc2csIHNlbGYuc3RhY2sgKTtcblx0XHRcdH1cblxuXHRcdFx0c2VsZi5pbmhlcml0ZWRJbnN0YW5jZSA9IGluc3RhbmNlO1xuXG5cdFx0XHRpZiAoIHNlbGYuaW5oZXJpdGVkSW5zdGFuY2UuX19zZWxmX18gIT09IHNlbGYuaW5oZXJpdGVkSW5zdGFuY2UgKSB7XG5cdFx0XHRcdC8vIGl0IHdhcyBhc3luYyBpbnN0YW5jZSxcblx0XHRcdFx0Ly8gc28gd2UgaGF2ZSB0byBhZGQgYWxsIHRoZSBzdHVmZlxuXHRcdFx0XHQvLyBmb3Igc3luYyBpbnN0YW5jZXMgaXQgd2FzIGRvbmUgYWxyZWFkeVxuXHRcdFx0XHRzZWxmLnBvc3RQcm9jZXNzaW5nKCB0eXBlICk7XG5cdFx0XHR9XG5cblx0XHRcdHJldHVybiBzZWxmLmluaGVyaXRlZEluc3RhbmNlO1xuXG5cdFx0fSApXG5cdFx0LmNhdGNoKCAoIGVycm9yOiBFcnJvciApID0+IHtcblx0XHRcdGlmICggc2VsZi5jb25maWcuYmxvY2tFcnJvcnMgKSB7XG5cdFx0XHRcdHNlbGYudGhyb3dNb2RpZmljYXRpb25FcnJvciggZXJyb3IgKTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdHRocm93IGVycm9yO1xuXHRcdFx0fVxuXHRcdH0gKTtcblxuXHRpZiAoIHRoZW4gKSB7XG5cdFx0c2VsZi5hZGRUaGVuKCB0aGVuICk7XG5cdH1cblxuXHR0eXBlLnN1YnR5cGVzLmZvckVhY2goICggc3VidHlwZTogYW55LCBuYW1lOiBzdHJpbmcgKSA9PiB7XG5cdFx0c2VsZi5pbmhlcml0ZWRJbnN0YW5jZVsgbmFtZSBdID0gKCAuLi5hcmdzOiBhbnlbXSApID0+IHtcblx0XHRcdHNlbGYuaW5oZXJpdGVkSW5zdGFuY2UgPSBzZWxmLm1ha2VBd2FpdGVyKCBzdWJ0eXBlLCB7XG5cdFx0XHRcdG5hbWUsXG5cdFx0XHRcdHN1YnR5cGUsXG5cdFx0XHRcdGFyZ3MsXG5cdFx0XHR9ICk7XG5cdFx0XHRyZXR1cm4gc2VsZi5pbmhlcml0ZWRJbnN0YW5jZTtcblx0XHR9O1xuXHR9ICk7XG5cblx0cmV0dXJuIHNlbGYuaW5oZXJpdGVkSW5zdGFuY2U7XG5cbn07XG5cbmNvbnN0IEluc3RhbmNlQ3JlYXRvclByb3RvdHlwZSA9IHtcblx0Z2V0RXhpc3RlbnRBc3luY1N0YWNrLFxuXHRwb3N0UHJvY2Vzc2luZyxcblx0bWFrZUF3YWl0ZXIsXG5cdGFkZFByb3BzLFxuXHRhZGRUaGVuLFxuXHRpbnZva2VQcmVIb29rcyxcblx0aW52b2tlUG9zdEhvb2tzLFxuXHR0aHJvd01vZGlmaWNhdGlvbkVycm9yXG59O1xuXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L2Jhbi10cy1jb21tZW50XG4vLyBAdHMtaWdub3JlXG5leHBvcnQgY29uc3QgSW5zdGFuY2VDcmVhdG9yID0gZnVuY3Rpb24gKCB0aGlzOiBhbnksIHR5cGU6IGFueSwgZXhpc3RlbnRJbnN0YW5jZTogYW55LCBhcmdzOiBhbnlbXSwgY2hhaW5lZDogYm9vbGVhbiApIHtcblxuXHRjb25zdCB7XG5cdFx0Y29uc3RydWN0SGFuZGxlcixcblx0XHRwcm90byxcblx0XHRjb25maWcsXG5cdFx0VHlwZU5hbWVcblx0fSA9IHR5cGU7XG5cblx0Y29uc3Qge1xuXHRcdE1vZGlmaWNhdGlvbkNvbnN0cnVjdG9yLFxuXHRcdGJsb2NrRXJyb3JzLFxuXHRcdHN1Ym1pdFN0YWNrXG5cdH0gPSBjb25maWc7XG5cblx0Ly8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5ldy1jYXBcblx0Y29uc3QgbWMgPSBNb2RpZmljYXRpb25Db25zdHJ1Y3Rvciggb2JleSApO1xuXG5cdC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdGhpcy1hbGlhc1xuXHRjb25zdCBzZWxmID0gdGhpcztcblxuXHRjb25zdCBNb2RpZmljYXRvclR5cGUgPSBjb25zdHJ1Y3RIYW5kbGVyKCk7XG5cblx0T2JqZWN0LmFzc2lnbiggc2VsZiwge1xuXG5cdFx0dHlwZSxcblx0XHRUeXBlTmFtZSxcblxuXHRcdGV4aXN0ZW50SW5zdGFuY2UsXG5cblx0XHRnZXQgYXJncyAoKSB7XG5cdFx0XHRyZXR1cm4gYXJncztcblx0XHR9LFxuXG5cdFx0TW9kaWZpY2F0aW9uQ29uc3RydWN0b3IgOiBtYyxcblx0XHRNb2RpZmljYXRvclR5cGUsXG5cblx0XHRjb25maWcsXG5cblx0XHRwcm90b1xuXG5cdH0gKTtcblxuXHRpZiAoIHN1Ym1pdFN0YWNrIHx8IGNoYWluZWQgKSB7XG5cdFx0Y29uc3Qgc3RhY2tBZGRpdGlvbjogc3RyaW5nW10gPSBjaGFpbmVkID8gc2VsZi5nZXRFeGlzdGVudEFzeW5jU3RhY2soIGV4aXN0ZW50SW5zdGFuY2UgKSA6IFtdO1xuXHRcdGNvbnN0IHRpdGxlID0gYFxcbjwtLSBjcmVhdGlvbiBvZiBbICR7VHlwZU5hbWV9IF0gdHJhY2VkIC0tPmA7XG5cdFx0aWYgKCBzdWJtaXRTdGFjayApIHtcblx0XHRcdGdldFN0YWNrLmNhbGwoIHNlbGYsIHRpdGxlLCBzdGFja0FkZGl0aW9uICk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHNlbGYuc3RhY2sgPSB0aXRsZTtcblx0XHR9XG5cdH1cblxuXHRpZiAoIGJsb2NrRXJyb3JzICYmIGV4aXN0ZW50SW5zdGFuY2UgaW5zdGFuY2VvZiBFcnJvciApIHtcblxuXHRcdHNlbGYuTW9kaWZpY2F0b3JUeXBlID0gbWFrZUZha2VNb2RpZmljYXRvclR5cGUoIFR5cGVOYW1lICk7XG5cblx0XHRzZWxmLkluc3RhbmNlTW9kaWZpY2F0b3IgPSBtYWtlSW5zdGFuY2VNb2RpZmljYXRvciggc2VsZiApO1xuXG5cdFx0dGhyb3cgbmV3IHNlbGYuSW5zdGFuY2VNb2RpZmljYXRvciggLi4uYXJncyApO1xuXG5cdH1cblxuXHRzZWxmLmludm9rZVByZUhvb2tzKCk7XG5cblx0c2VsZi5JbnN0YW5jZU1vZGlmaWNhdG9yID0gbWFrZUluc3RhbmNlTW9kaWZpY2F0b3IoIHNlbGYgKTtcblxuXHRpZiAoIGJsb2NrRXJyb3JzICkge1xuXG5cdFx0dHJ5IHtcblx0XHRcdC8vIENvbnN0cnVjdG9yIEludm9jYXRpb24gSXRzZWxmXG5cdFx0XHRjb25zdCBhbnN3ZXIgPSBuZXcgc2VsZi5JbnN0YW5jZU1vZGlmaWNhdG9yKCAuLi5hcmdzICk7XG5cdFx0XHQvLyBkZWJ1Z2dlcjtcblx0XHRcdHNlbGYuaW5oZXJpdGVkSW5zdGFuY2UgPSBhbnN3ZXI7XG5cblx0XHR9IGNhdGNoICggZXJyb3IgKSB7XG5cblx0XHRcdHNlbGYudGhyb3dNb2RpZmljYXRpb25FcnJvciggZXJyb3IgKTtcblxuXHRcdH1cblxuXHR9IGVsc2Uge1xuXG5cdFx0Ly8gQ29uc3RydWN0b3IgSW52b2NhdGlvbiBJdHNlbGZcblx0XHRjb25zdCBhbnN3ZXIgPSBuZXcgc2VsZi5JbnN0YW5jZU1vZGlmaWNhdG9yKCAuLi5hcmdzICk7XG5cdFx0Ly8gZGVidWdnZXI7XG5cdFx0c2VsZi5pbmhlcml0ZWRJbnN0YW5jZSA9IGFuc3dlcjtcblxuXHR9XG5cblxuXHRpZiAoIHNlbGYuaW5oZXJpdGVkSW5zdGFuY2UgaW5zdGFuY2VvZiBQcm9taXNlICkge1xuXG5cdFx0Y29uc3Qgd2FpdGVyID0gc2VsZi5tYWtlQXdhaXRlciggdHlwZSApO1xuXG5cdFx0b2RwKCB3YWl0ZXIsIFN5bWJvbENvbnN0cnVjdG9yTmFtZSwge1xuXHRcdFx0Z2V0ICgpIHtcblx0XHRcdFx0cmV0dXJuIFR5cGVOYW1lO1xuXHRcdFx0fVxuXHRcdH0gKTtcblxuXHRcdHJldHVybiB3YWl0ZXI7XG5cblx0fVxuXG5cdHNlbGYucG9zdFByb2Nlc3NpbmcoIHR5cGUgKTtcblxuXHRyZXR1cm4gc2VsZi5pbmhlcml0ZWRJbnN0YW5jZTtcblxufSBhcyBDb25zdHJ1Y3RvckZ1bmN0aW9uPHR5cGVvZiBJbnN0YW5jZUNyZWF0b3JQcm90b3R5cGU+O1xuXG5PYmplY3QuYXNzaWduKCBJbnN0YW5jZUNyZWF0b3IucHJvdG90eXBlLCBJbnN0YW5jZUNyZWF0b3JQcm90b3R5cGUgKTtcbiJdfQ==
@@ -11,4 +11,4 @@ const makeInstanceModificator = (self) => {
11
11
  return result;
12
12
  };
13
13
  exports.makeInstanceModificator = makeInstanceModificator;
14
- //# sourceMappingURL=InstanceModificator.js.map
14
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiSW5zdGFuY2VNb2RpZmljYXRvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hcGkvdHlwZXMvSW5zdGFuY2VNb2RpZmljYXRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxZQUFZLENBQUM7OztBQUViLHlDQUFzQztBQUUvQixNQUFNLHVCQUF1QixHQUFHLENBQUUsSUFBUyxFQUFHLEVBQUU7SUFFdEQsTUFBTSxFQUNMLHVCQUF1QixFQUN2QixnQkFBZ0IsRUFDaEIsZUFBZSxFQUNmLEtBQUssR0FDTCxHQUFHLElBQUksQ0FBQztJQUVULE1BQU0sTUFBTSxHQUFHLHVCQUF1QixDQUFDLElBQUksQ0FDMUMsZ0JBQWdCLEVBQ2hCLGVBQWUsRUFDZixNQUFNLENBQUMsTUFBTSxDQUFFLEVBQUUsRUFBRSxLQUFLLENBQUUsRUFDMUIsQ0FBRSxlQUFvQixFQUFHLEVBQUU7UUFDMUIsSUFBSSxDQUFDLGVBQWUsR0FBRyxlQUFlLENBQUM7UUFDdkMsbUJBQVEsQ0FBQyxJQUFJLENBQUUsSUFBSSxDQUFFLENBQUM7SUFDdkIsQ0FBQyxDQUNELENBQUM7SUFFRixPQUFPLE1BQU0sQ0FBQztBQUNmLENBQUMsQ0FBQztBQXBCVyxRQUFBLHVCQUF1QiwyQkFvQmxDIiwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzdHJpY3QnO1xuXG5pbXBvcnQgeyBhZGRQcm9wcyB9IGZyb20gJy4vYWRkUHJvcHMnO1xuXG5leHBvcnQgY29uc3QgbWFrZUluc3RhbmNlTW9kaWZpY2F0b3IgPSAoIHNlbGY6IGFueSApID0+IHtcblxuXHRjb25zdCB7XG5cdFx0TW9kaWZpY2F0aW9uQ29uc3RydWN0b3IsXG5cdFx0ZXhpc3RlbnRJbnN0YW5jZSxcblx0XHRNb2RpZmljYXRvclR5cGUsXG5cdFx0cHJvdG8sXG5cdH0gPSBzZWxmO1xuXG5cdGNvbnN0IHJlc3VsdCA9IE1vZGlmaWNhdGlvbkNvbnN0cnVjdG9yLmNhbGwoXG5cdFx0ZXhpc3RlbnRJbnN0YW5jZSxcblx0XHRNb2RpZmljYXRvclR5cGUsXG5cdFx0T2JqZWN0LmFzc2lnbigge30sIHByb3RvICksXG5cdFx0KCBfX3Byb3RvX3Byb3RvX186IGFueSApID0+IHtcblx0XHRcdHNlbGYuX19wcm90b19wcm90b19fID0gX19wcm90b19wcm90b19fO1xuXHRcdFx0YWRkUHJvcHMuY2FsbCggc2VsZiApO1xuXHRcdH1cblx0KTtcblxuXHRyZXR1cm4gcmVzdWx0O1xufTtcbiJdfQ==
@@ -1,20 +1,6 @@
1
1
  import { ConstructorFunction } from '../../types';
2
2
  declare const _default: {
3
3
  Gaia: ConstructorFunction<object>;
4
- Mnemosyne: ConstructorFunction<{
5
- [x: symbol]: (() => (this: any, uranus: any) => void) | (() => string);
6
- extract(): (this: any) => {
7
- [index: string]: any;
8
- };
9
- pick(): (this: any, ...args: any[]) => {
10
- [index: string]: any;
11
- };
12
- parent(): (this: any, constructorLookupPath: string) => any;
13
- clone(this: any): any;
14
- fork(this: any): (this: any, ...forkArgs: any[]) => any;
15
- exception(): (error: Error, ...args: any[]) => any;
16
- sibling(): (SiblingTypeName: string) => any;
17
- }>;
18
- readonly MnemosynePrototypeKeys: string[];
4
+ readonly createMnemosyne: (Uranus: unknown) => any;
19
5
  };
20
6
  export default _default;
@@ -3,16 +3,18 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  const constants_1 = require("../../constants");
4
4
  const { odp, SymbolConstructorName, SymbolGaia, SymbolReplaceUranus, MNEMONICA, GAIA, URANUS } = constants_1.constants;
5
5
  const utils_1 = require("../utils");
6
- const { getTypeChecker, reflectPrimitiveWrappers } = utils_1.default;
6
+ const { getTypeChecker, findSubTypeFromParent, reflectPrimitiveWrappers } = utils_1.default;
7
7
  const extract_1 = require("../../utils/extract");
8
8
  const parent_1 = require("../../utils/parent");
9
9
  const pick_1 = require("../../utils/pick");
10
10
  const exceptionConstructor_1 = require("../errors/exceptionConstructor");
11
11
  const InstanceCreator_1 = require("./InstanceCreator");
12
+ const addProps_1 = require("./addProps");
13
+ const InstanceRoots = new WeakMap;
12
14
  const Gaia = function (Uranus) {
13
15
  const gaiaProto = Uranus ? Uranus : this;
14
16
  const GaiaConstructor = function () { };
15
- GaiaConstructor.prototype = Object.create(gaiaProto);
17
+ Reflect.setPrototypeOf(GaiaConstructor.prototype, Object.create(gaiaProto));
16
18
  const gaia = new GaiaConstructor;
17
19
  odp(gaia, MNEMONICA, {
18
20
  get() {
@@ -41,8 +43,10 @@ const MnemonicaProtoProps = {
41
43
  return this.fork();
42
44
  },
43
45
  fork() {
44
- const { __type__: type, __collection__: collection, __parent__: existentInstance, __args__, __self__ } = this;
46
+ const props = (0, addProps_1.getProps)(this);
47
+ const { __type__: type, __collection__: collection, __parent__: existentInstance, __args__, } = props;
45
48
  const { isSubType, TypeName } = type;
49
+ const { __self__ } = this;
46
50
  return function (...forkArgs) {
47
51
  let forked;
48
52
  const Constructor = isSubType ?
@@ -74,9 +78,9 @@ const MnemonicaProtoProps = {
74
78
  };
75
79
  },
76
80
  sibling() {
77
- const self = this;
78
81
  const siblings = (SiblingTypeName) => {
79
- const { __collection__: collection, } = self;
82
+ const props = (0, addProps_1.getProps)(this);
83
+ const { __collection__: collection, } = props;
80
84
  const sibling = collection[SiblingTypeName];
81
85
  return sibling;
82
86
  };
@@ -90,7 +94,88 @@ const MnemonicaProtoProps = {
90
94
  });
91
95
  }
92
96
  };
93
- const TypesRoots = new WeakMap;
97
+ const MnemosynePrototypeKeys = Object.keys(MnemonicaProtoProps);
98
+ const MnemonicaInstanceProps = [
99
+ '__proto_proto__',
100
+ '__type__',
101
+ '__self__',
102
+ '__args__',
103
+ '__parent__',
104
+ '__subtypes__',
105
+ '__stack__',
106
+ '__collection__',
107
+ '__timestamp__',
108
+ '__creator__'
109
+ ].concat(MnemosynePrototypeKeys);
110
+ const staticProps = [
111
+ 'constructor',
112
+ 'prototype',
113
+ 'then',
114
+ 'stack',
115
+ 'message',
116
+ 'domain',
117
+ 'on',
118
+ 'once',
119
+ 'off',
120
+ 'inspect',
121
+ 'showDiff',
122
+ ]
123
+ .concat(MnemonicaInstanceProps)
124
+ .concat(Object.getOwnPropertyNames(Object.prototype))
125
+ .concat(Object.getOwnPropertyNames(Function.prototype))
126
+ .reduce((obj, key) => {
127
+ obj[key] = true;
128
+ return obj;
129
+ }, Object.create(null));
130
+ const makeSubTypeProxy = function (subtype, inheritedInstance) {
131
+ const subtypeProxy = new Proxy(InstanceCreator_1.InstanceCreator, {
132
+ get(Target, _prop) {
133
+ if (_prop === Symbol.hasInstance) {
134
+ return getTypeChecker(subtype.TypeName);
135
+ }
136
+ return Reflect.get(Target, _prop);
137
+ },
138
+ construct(Target, _args) {
139
+ return new Target(subtype, inheritedInstance, _args);
140
+ },
141
+ apply(Target, thisArg, _args) {
142
+ if (thisArg === undefined) {
143
+ thisArg = inheritedInstance;
144
+ }
145
+ let existentInstance = reflectPrimitiveWrappers(thisArg);
146
+ if (!existentInstance[SymbolGaia]) {
147
+ const mnemosyne = new Mnemosyne(new Gaia(existentInstance));
148
+ existentInstance = new Proxy(mnemosyne, {
149
+ get: mnemosyneProxyHandlerGet
150
+ });
151
+ }
152
+ const entity = new Target(subtype, existentInstance, _args);
153
+ return entity;
154
+ },
155
+ });
156
+ return subtypeProxy;
157
+ };
158
+ const mnemosyneProxyHandlerGet = (target, prop, receiver) => {
159
+ const result = Reflect.get(target, prop, receiver);
160
+ if (result !== undefined) {
161
+ return result;
162
+ }
163
+ if (typeof prop === 'symbol') {
164
+ return result;
165
+ }
166
+ if (staticProps[prop]) {
167
+ return result;
168
+ }
169
+ const instance = Reflect.getPrototypeOf(receiver);
170
+ const props = (0, addProps_1.getProps)(instance);
171
+ const { __type__: { config: { strictChain }, subtypes }, } = props;
172
+ const subtype = subtypes.has(prop) ?
173
+ subtypes.get(prop) :
174
+ strictChain ?
175
+ undefined :
176
+ findSubTypeFromParent(instance, prop);
177
+ return subtype ? makeSubTypeProxy(subtype, receiver) : result;
178
+ };
94
179
  const Mnemosyne = function (gaia) {
95
180
  const instance = this;
96
181
  const Mnemonica = function () {
@@ -128,14 +213,21 @@ const Mnemosyne = function (gaia) {
128
213
  }
129
214
  });
130
215
  const proto = new Mnemonica();
131
- TypesRoots.set(instance, proto);
132
216
  Reflect.setPrototypeOf(instance, proto);
217
+ InstanceRoots.set(instance, proto);
218
+ };
219
+ const createMnemosyne = function (Uranus) {
220
+ const uranus = reflectPrimitiveWrappers(Uranus);
221
+ const mnemosyne = new Mnemosyne(new Gaia(uranus));
222
+ const mnemosyneProxy = new Proxy(mnemosyne, {
223
+ get: mnemosyneProxyHandlerGet
224
+ });
225
+ return mnemosyneProxy;
133
226
  };
134
227
  exports.default = {
135
228
  Gaia,
136
- Mnemosyne,
137
- get MnemosynePrototypeKeys() {
138
- return Object.keys(MnemonicaProtoProps);
139
- }
229
+ get createMnemosyne() {
230
+ return createMnemosyne;
231
+ },
140
232
  };
141
- //# sourceMappingURL=Mnemosyne.js.map
233
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTW5lbW9zeW5lLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2FwaS90eXBlcy9NbmVtb3N5bmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsWUFBWSxDQUFDOztBQUdiLCtDQUE0QztBQUM1QyxNQUFNLEVBQ0wsR0FBRyxFQUNILHFCQUFxQixFQUNyQixVQUFVLEVBQ1YsbUJBQW1CLEVBRW5CLFNBQVMsRUFDVCxJQUFJLEVBQ0osTUFBTSxFQUVOLEdBQUcscUJBQVMsQ0FBQztBQUVkLG9DQUFrQztBQUNsQyxNQUFNLEVBQ0wsY0FBYyxFQUNkLHFCQUFxQixFQUNyQix3QkFBd0IsRUFDeEIsR0FBRyxlQUFVLENBQUM7QUFFZixpREFBOEM7QUFDOUMsK0NBQTRDO0FBQzVDLDJDQUF3QztBQUV4Qyx5RUFBa0U7QUFFbEUsdURBQW9EO0FBRXBELHlDQUE2QztBQUU3QyxNQUFNLGFBQWEsR0FBRyxJQUFJLE9BQU8sQ0FBQztBQUlsQyxNQUFNLElBQUksR0FBRyxVQUFVLE1BQVc7SUFFakMsTUFBTSxTQUFTLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztJQUV6QyxNQUFNLGVBQWUsR0FBRyxjQUFjLENBQWdDLENBQUM7SUFDdkUsT0FBTyxDQUFDLGNBQWMsQ0FBQyxlQUFlLENBQUMsU0FBUyxFQUFFLE1BQU0sQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQztJQUU1RSxNQUFNLElBQUksR0FBRyxJQUFJLGVBQWUsQ0FBQztJQUVqQyxHQUFHLENBQUMsSUFBSSxFQUFFLFNBQVMsRUFBRTtRQUNwQixHQUFHO1lBQ0YsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUM7UUFDaEMsQ0FBQztLQUNELENBQUMsQ0FBQztJQUVILE9BQU8sSUFBSSxDQUFDO0FBQ2IsQ0FBZ0MsQ0FBQztBQUdqQyxNQUFNLG1C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QzVDLEdBQUc7WUFDRixPQUFPLGNBQWMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzlDLENBQUM7S0FDRCxDQUFDLENBQUM7SUFFSCxHQUFHLENBQUMsU0FBUyxDQUFDLFNBQVMsRUFBRSxVQUFVLEVBQUU7UUFDcEMsR0FBRztZQUNGLE9BQU8sSUFBSSxDQUFDO1FBQ2IsQ0FBQztLQUNELENBQUMsQ0FBQztJQUVILE1BQU0sS0FBSyxHQUFHLElBQUksU0FBUyxFQUFFLENBQUM7SUFFOUIsT0FBTyxDQUFDLGNBQWMsQ0FBQyxRQUFRLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFFeEMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxRQUFRLEVBQUUsS0FBSyxDQUFDLENBQUM7QUFFcEMsQ0FBb0QsQ0FBQztBQUVyRCxNQUFNLGVBQWUsR0FBRyxVQUFVLE1BQWU7SUFHaEQsTUFBTSxNQUFNLEdBQUcsd0JBQXdCLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDaEQsTUFBTSxTQUFTLEdBQUcsSUFBSSxTQUFTLENBQUMsSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztJQUNsRCxNQUFNLGNBQWMsR0FBRyxJQUFJLEtBQUssQ0FBQyxTQUFTLEVBQUU7UUFDM0MsR0FBRyxFQUFHLHdCQUF3QjtLQUM5QixDQUFDLENBQUM7SUFFSCxPQUFPLGNBQWMsQ0FBQztBQUN2QixDQUFDLENBQUM7QUFFRixrQkFBZTtJQUNkLElBQUk7SUFDSixJQUFJLGVBQWU7UUFDbEIsT0FBTyxlQUFlLENBQUM7SUFDeEIsQ0FBQztDQU9ELENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIHN0cmljdCc7XG5cbmltcG9ydCB7IENvbnN0cnVjdG9yRnVuY3Rpb24gfSBmcm9tICcuLi8uLi90eXBlcyc7XG5pbXBvcnQgeyBjb25zdGFudHMgfSBmcm9tICcuLi8uLi9jb25zdGFudHMnO1xuY29uc3Qge1xuXHRvZHAsXG5cdFN5bWJvbENvbnN0cnVjdG9yTmFtZSxcblx0U3ltYm9sR2FpYSxcblx0U3ltYm9sUmVwbGFjZVVyYW51cyxcblxuXHRNTkVNT05JQ0EsXG5cdEdBSUEsXG5cdFVSQU5VU1xuXG59ID0gY29uc3RhbnRzO1xuXG5pbXBvcnQgVHlwZXNVdGlscyBmcm9tICcuLi91dGlscyc7XG5jb25zdCB7XG5cdGdldFR5cGVDaGVja2VyLFxuXHRmaW5kU3ViVHlwZUZyb21QYXJlbnQsXG5cdHJlZmxlY3RQcmltaXRpdmVXcmFwcGVyc1xufSA9IFR5cGVzVXRpbHM7XG5cbmltcG9ydCB7IGV4dHJhY3QgfSBmcm9tICcuLi8uLi91dGlscy9leHRyYWN0JztcbmltcG9ydCB7IHBhcmVudCB9IGZyb20gJy4uLy4uL3V0aWxzL3BhcmVudCc7XG5pbXBvcnQgeyBwaWNrIH0gZnJvbSAnLi4vLi4vdXRpbHMvcGljayc7XG5cbmltcG9ydCBleGNlcHRpb25Db25zdHJ1Y3RvciBmcm9tICcuLi9lcnJvcnMvZXhjZXB0aW9uQ29uc3RydWN0b3InO1xuXG5pbXBvcnQgeyBJbnN0YW5jZUNyZWF0b3IgfSBmcm9tICcuL0luc3RhbmNlQ3JlYXRvcic7XG5cbmltcG9ydCB7IGdldFByb3BzLCBQcm9wcyB9IGZyb20gJy4vYWRkUHJvcHMnO1xuXG5jb25zdCBJbnN0YW5jZVJvb3RzID0gbmV3IFdlYWtNYXA7XG5cblxuXG5jb25zdCBHYWlhID0gZnVuY3Rpb24gKFVyYW51czogYW55KSB7XG5cblx0Y29uc3QgZ2FpYVByb3RvID0gVXJhbnVzID8gVXJhbnVzIDogdGhpcztcblxuXHRjb25zdCBHYWlhQ29uc3RydWN0b3IgPSBmdW5jdGlvbiAoKSB7IH0gYXMgQ29uc3RydWN0b3JGdW5jdGlvbjxvYmplY3Q+O1xuXHRSZWZsZWN0LnNldFByb3RvdHlwZU9mKEdhaWFDb25zdHJ1Y3Rvci5wcm90b3R5cGUsIE9iamVjdC5jcmVhdGUoZ2FpYVByb3RvKSk7XG5cblx0Y29uc3QgZ2FpYSA9IG5ldyBHYWlhQ29uc3RydWN0b3I7XG5cblx0b2RwKGdhaWEsIE1ORU1PTklDQSwge1xuXHRcdGdldCAoKSB7XG5cdFx0XHRyZXR1cm4gIVVyYW51cyA/IEdBSUEgOiBVUkFOVVM7XG5cdFx0fVxuXHR9KTtcblxuXHRyZXR1cm4gZ2FpYTtcbn0gYXMgQ29uc3RydWN0b3JGdW5jdGlvbjxvYmplY3Q+O1xuXG5cbmNvbnN0IE1uZW1vbmljYVByb3RvUHJvcHMgPSB7XG5cblx0ZXh0cmFjdCAoKSB7XG5cdFx0cmV0dXJuIGZ1bmN0aW9uICh0aGlzOiBhbnkpIHtcblx0XHRcdHJldHVybiBleHRyYWN0KHRoaXMpO1xuXHRcdH07XG5cdH0sXG5cblx0cGljayAoKSB7XG5cdFx0cmV0dXJuIGZ1bmN0aW9uICh0aGlzOiBhbnksIC4uLmFyZ3M6IGFueVtdKSB7XG5cdFx0XHRyZXR1cm4gcGljayh0aGlzLCAuLi5hcmdzKTtcblx0XHR9O1xuXHR9LFxuXG5cdHBhcmVudCAoKSB7XG5cdFx0cmV0dXJuIGZ1bmN0aW9uICh0aGlzOiBhbnksIGNvbnN0cnVjdG9yTG9va3VwUGF0aDogc3RyaW5nKSB7XG5cdFx0XHRyZXR1cm4gcGFyZW50KHRoaXMsIGNvbnN0cnVjdG9yTG9va3VwUGF0aCk7XG5cdFx0fTtcblx0fSxcblxuXHRjbG9uZSAodGhpczogYW55KSB7XG5cdFx0cmV0dXJuIHRoaXMuZm9yaygpO1xuXHR9LFxuXG5cdGZvcmsgKHRoaXM6IGFueSkge1xuXG5cdFx0Y29uc3QgcHJvcHMgPSBnZXRQcm9wcyh0aGlzKSBhcyBQcm9wcztcblxuXHRcdGNvbnN0IHtcblx0XHRcdF9fdHlwZV9fOiB0eXBlLFxuXHRcdFx0X19jb2xsZWN0aW9uX186IGNvbGxlY3Rpb24sXG5cdFx0XHRfX3BhcmVudF9fOiBleGlzdGVudEluc3RhbmNlLFxuXHRcdFx0X19hcmdzX18sXG5cdFx0fSA9IHByb3BzO1xuXG5cdFx0Y29uc3Qge1xuXHRcdFx0aXNTdWJUeXBlLFxuXHRcdFx0VHlwZU5hbWVcblx0XHR9ID0gdHlwZTtcblxuXG5cdFx0Y29uc3QgeyBfX3NlbGZfXyB9ID0gdGhpcztcblxuXHRcdC8vICdmdW5jdGlvbicsIGNhdXNlIG1pZ2h0IGJlIGNhbGxlZCB3aXRoICduZXcnXG5cdFx0Ly8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXNoYWRvdywgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuXHRcdHJldHVybiBmdW5jdGlvbiAodGhpczogYW55LCAuLi5mb3JrQXJnczogYW55W10pIHtcblxuXHRcdFx0bGV0IGZvcmtlZDtcblx0XHRcdGNvbnN0IENvbnN0cnVjdG9yID0gaXNTdWJUeXBlID9cblx0XHRcdFx0ZXhpc3RlbnRJbnN0YW5jZSA6XG5cdFx0XHRcdGNvbGxlY3Rpb247XG5cblx0XHRcdGNvbnN0IGFyZ3MgPSBmb3JrQXJncy5sZW5ndGggPyBmb3JrQXJncyA6IF9fYXJnc19fO1xuXG5cblx0XHRcdGlmICh0aGlzID09PSBfX3NlbGZfXykge1xuXHRcdFx0XHQvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L2Jhbi10cy1jb21tZW50XG5cdFx0XHRcdC8vIEB0cy1leHBlY3QtZXJyb3IgXG5cdFx0XHRcdGZvcmtlZCA9IG5ldyAoQ29uc3RydWN0b3JbIFR5cGVOYW1lIF0pKC4uLmFyZ3MpO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0Ly8gZm9yay5jYWxsID8gbGV0J3MgZG8gaXQgIVxuXHRcdFx0XHRmb3JrZWQgPSBuZXcgSW5zdGFuY2VDcmVhdG9yKHR5cGUsIHJlZmxlY3RQcmltaXRpdmVXcmFwcGVycyh0aGlzKSwgYXJncyk7XG5cdFx0XHR9XG5cblx0XHRcdHJldHVybiBmb3JrZWQ7XG5cblx0XHR9O1xuXHR9LFxuXG5cdFsgU3ltYm9sUmVwbGFjZVVyYW51cyBdICgpIHtcblx0XHQvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuXHRcdHJldHVybiBmdW5jdGlvbiAodGhpczogYW55LCB1cmFudXM6IGFueSkge1xuXHRcdFx0Ly8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9iYW4tdHMtY29tbWVudFxuXHRcdFx0Ly8gQHRzLWlnbm9yZVxuXHRcdFx0UmVmbGVjdC5zZXRQcm90b3R5cGVPZihSZWZsZWN0LmdldFByb3RvdHlwZU9mKHRoaXNbIFN5bWJvbEdhaWEgXSksIHVyYW51cyk7XG5cdFx0fTtcblx0fSxcblxuXHRbIFN5bWJvbENvbnN0cnVjdG9yTmFtZSBdICgpIHtcblx0XHRyZXR1cm4gTU5FTU9OSUNBO1xuXHR9LFxuXG5cdGV4Y2VwdGlvbiAoKSB7XG5cdFx0Ly8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby10aGlzLWFsaWFzXG5cdFx0Y29uc3Qgc2VsZiA9IHRoaXM7XG5cdFx0cmV0dXJuIGZ1bmN0aW9uIChlcnJvcjogRXJyb3IsIC4uLmFyZ3M6IGFueVtdKSB7XG5cdFx0XHRjb25zdCB0YXJnZXQgPSBuZXcudGFyZ2V0O1xuXHRcdFx0cmV0dXJuIGV4Y2VwdGlvbkNvbnN0cnVjdG9yLmNhbGwoc2VsZiwgdGFyZ2V0LCBlcnJvciwgLi4uYXJncyk7XG5cdFx0fTtcblx0fSxcblxuXHRzaWJsaW5nICgpIHtcblx0XHQvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXRoaXMtYWxpYXMsIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcblx0XHRjb25zdCBzaWJsaW5ncyA9IChTaWJsaW5nVHlwZU5hbWU6IHN0cmluZykgPT4ge1xuXG5cdFx0XHRjb25zdCBwcm9wcyA9IGdldFByb3BzKHRoaXMpIGFzIFByb3BzO1xuXHRcdFx0Y29uc3Qge1xuXHRcdFx0XHRfX2NvbGxlY3Rpb25fXzogY29sbGVjdGlvbixcblx0XHRcdH0gPSBwcm9wcztcblx0XHRcdGNvbnN0IHNpYmxpbmc6IGFueSA9IGNvbGxlY3Rpb25bIFNpYmxpbmdUeXBlTmFtZSBdO1xuXHRcdFx0cmV0dXJuIHNpYmxpbmc7XG5cdFx0fTtcblxuXHRcdHJldHVybiBuZXcgUHJveHkoc2libGluZ3MsIHtcblx0XHRcdGdldCAoXywgcHJvcDogc3RyaW5nKSB7XG5cdFx0XHRcdHJldHVybiBzaWJsaW5ncyhwcm9wKTtcblx0XHRcdH0sXG5cdFx0XHRhcHBseSAoXywgX18sIGFyZ3MsKSB7XG5cdFx0XHRcdHJldHVybiBzaWJsaW5ncyhhcmdzWyAwIF0pO1xuXHRcdFx0fVxuXHRcdH0pO1xuXHR9XG5cbn07XG5cbmNvbnN0IE1uZW1vc3luZVByb3RvdHlwZUtleXMgPSBPYmplY3Qua2V5cyhNbmVtb25pY2FQcm90b1Byb3BzKTtcblxuY29uc3QgTW5lbW9uaWNhSW5zdGFuY2VQcm9wcyA9IFtcblx0J19fcHJvdG9fcHJvdG9fXycsXG5cblx0J19fdHlwZV9fJyxcblx0J19fc2VsZl9fJyxcblxuXHQnX19hcmdzX18nLFxuXG5cdCdfX3BhcmVudF9fJyxcblx0J19fc3VidHlwZXNfXycsXG5cblx0J19fc3RhY2tfXycsXG5cblx0J19fY29sbGVjdGlvbl9fJyxcblx0J19fdGltZXN0YW1wX18nLFxuXG5cdCdfX2NyZWF0b3JfXydcblxuXS5jb25jYXQoTW5lbW9zeW5lUHJvdG90eXBlS2V5cyk7XG5cbmNvbnN0IHN0YXRpY1Byb3BzID0gW1xuXG5cdC8vIGJ1aWx0aW5zOiBmdW5jdGlvbnMgKyBQcm9taXNlc1xuXHQnY29uc3RydWN0b3InLFxuXHQncHJvdG90eXBlJyxcblx0J3RoZW4nLFxuXG5cdC8vIGJ1aWx0aW5zOiBlcnJvcnNcblx0J3N0YWNrJyxcblx0J21lc3NhZ2UnLFxuXHQnZG9tYWluJyxcblxuXHQvLyBidWlsdGluczogRXZlbnRFbWl0dGVyXG5cdCdvbicsXG5cdCdvbmNlJyxcblx0J29mZicsXG5cblx0Ly8gbW9jaGEgKyBjaGFpID0+IGJ1ZzogLi91dGlscy5qcyAuZmluZFN1YlR5cGVGcm9tUGFyZW50ICdpbnNwZWN0J1xuXHQnaW5zcGVjdCcsXG5cdCdzaG93RGlmZicsXG5cbl1cblx0LmNvbmNhdChNbmVtb25pY2FJbnN0YW5jZVByb3BzKVxuXHQuY29uY2F0KE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKE9iamVjdC5wcm90b3R5cGUpKVxuXHQuY29uY2F0KE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKEZ1bmN0aW9uLnByb3RvdHlwZSkpXG5cdC5yZWR1Y2UoKG9iaiwga2V5KSA9PiB7XG5cdFx0b2JqWyBrZXkgXSA9IHRydWU7XG5cdFx0cmV0dXJuIG9iajtcblx0fSwgT2JqZWN0LmNyZWF0ZShudWxsKSk7XG5cbi8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTogb25seS1hcnJvdy1mdW5jdGlvbnNcbmNvbnN0IG1ha2VTdWJUeXBlUHJveHkgPSBmdW5jdGlvbiAoc3VidHlwZTogYW55LCBpbmhlcml0ZWRJbnN0YW5jZTogYW55KSB7XG5cblx0Y29uc3Qgc3VidHlwZVByb3h5ID0gbmV3IFByb3h5KEluc3RhbmNlQ3JlYXRvciwge1xuXG5cdFx0Z2V0IChUYXJnZXQsIF9wcm9wKSB7XG5cblx0XHRcdGlmIChfcHJvcCA9PT0gU3ltYm9sLmhhc0luc3RhbmNlKSB7XG5cdFx0XHRcdHJldHVybiBnZXRUeXBlQ2hlY2tlcihzdWJ0eXBlLlR5cGVOYW1lKTtcblx0XHRcdH1cblxuXHRcdFx0cmV0dXJuIFJlZmxlY3QuZ2V0KFRhcmdldCwgX3Byb3ApO1xuXG5cdFx0fSxcblxuXHRcdGNvbnN0cnVjdCAoVGFyZ2V0LCBfYXJncykge1xuXHRcdFx0cmV0dXJuIG5ldyBUYXJnZXQoc3VidHlwZSwgaW5oZXJpdGVkSW5zdGFuY2UsIF9hcmdzKTtcblx0XHR9LFxuXG5cdFx0YXBwbHkgKFRhcmdldCwgdGhpc0FyZywgX2FyZ3MpIHtcblxuXHRcdFx0aWYgKHRoaXNBcmcgPT09IHVuZGVmaW5lZCkge1xuXHRcdFx0XHR0aGlzQXJnID0gaW5oZXJpdGVkSW5zdGFuY2U7XG5cdFx0XHR9XG5cblx0XHRcdC8vIFRPRE86IGlmIHdlIHdvdWxkIG1ha2UgbmV3IGtleXdvcmQgb2JsaWdhdG9yeVxuXHRcdFx0Ly8gdGhlbiB3ZSBzaG91bGQgYXZvaWQgaXQgaGVyZSwgd2l0aCB0aHJvdyBFcnJvclxuXG5cdFx0XHRsZXQgZXhpc3RlbnRJbnN0YW5jZSA9IHJlZmxlY3RQcmltaXRpdmVXcmFwcGVycyh0aGlzQXJnKTtcblxuXHRcdFx0Ly8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9iYW4tdHMtY29tbWVudFxuXHRcdFx0Ly8gQHRzLWlnbm9yZVxuXHRcdFx0aWYgKCFleGlzdGVudEluc3RhbmNlWyBTeW1ib2xHYWlhIF0pIHtcblx0XHRcdFx0Y29uc3QgbW5lbW9zeW5lID0gbmV3IE1uZW1vc3luZShuZXcgR2FpYShleGlzdGVudEluc3RhbmNlKSk7XG5cdFx0XHRcdGV4aXN0ZW50SW5zdGFuY2UgPSBuZXcgUHJveHkobW5lbW9zeW5lLCB7XG5cdFx0XHRcdFx0Z2V0IDogbW5lbW9zeW5lUHJveHlIYW5kbGVyR2V0XG5cdFx0XHRcdH0pO1xuXHRcdFx0fVxuXHRcdFx0Ly8gZWxzZSBpcyB0aGUgb3JkaW5hcnkgd2F5IGZvciBhbGwgZW50aXRpZXNcblxuXHRcdFx0Y29uc3QgZW50aXR5ID0gbmV3IFRhcmdldChzdWJ0eXBlLCBleGlzdGVudEluc3RhbmNlLCBfYXJncyk7XG5cdFx0XHRyZXR1cm4gZW50aXR5O1xuXHRcdH0sXG5cblx0fSk7XG5cblx0cmV0dXJuIHN1YnR5cGVQcm94eTtcbn07XG5cblxuY29uc3QgbW5lbW9zeW5lUHJveHlIYW5kbGVyR2V0ID0gKHRhcmdldDogYW55LCBwcm9wOiBzdHJpbmcsIHJlY2VpdmVyOiBhbnkpID0+IHtcblxuXHQvLyBOb2RlLmpzIDIyIFJlZmxlY3QuZ2V0IEJlaGF2aW91ciBDaGFuZ2VkIGhlcmVcblx0Ly8gY2F1c2Ugc29tZXRoaW5nIGdvbmUgd3Jvbmcgd2l0aCBwcm9wIGFzc2lnbm1lbnRcblx0Ly8gc28gbm93IGlmIHdlIG5lZWQgLnN0YWNrLCB3ZSBzaG91bGQgYXZvaWQgcmVjZWl2ZXIgaGVyZVxuXHQvLyBuYXZlIG5vdCB5ZXQgY2hlY2tlZCBvdGhlciBzdGF0aWNQcm9wcyxcblx0Ly8ganVzdCBmaXhlZCB0aGlzIGJlbG93XG5cdC8vIHdoaWxlIHVzaW5nIGNvbmRpdGlvbmFsIGZvciBzdGF0aWNQcm9wc1xuXHRjb25zdCByZXN1bHQgPSBSZWZsZWN0LmdldCh0YXJnZXQsIHByb3AsIHJlY2VpdmVyKTtcblxuXHRpZiAocmVzdWx0ICE9PSB1bmRlZmluZWQpIHtcblx0XHRyZXR1cm4gcmVzdWx0O1xuXHR9XG5cblx0aWYgKHR5cGVvZiBwcm9wID09PSAnc3ltYm9sJykge1xuXHRcdHJldHVybiByZXN1bHQ7XG5cdH1cblxuXHRpZiAoc3RhdGljUHJvcHNbIHByb3AgXSkge1xuXHRcdC8qXG5cdFx0Y29uc3QgbWF5QmVSZXN1bHQgPSBSZWZsZWN0LmdldCh0YXJnZXQsIHByb3ApO1xuXHRcdGlmIChtYXlCZVJlc3VsdCAhPT0gdW5kZWZpbmVkKSB7XG5cdFx0XHRyZXR1cm4gbWF5QmVSZXN1bHQ7XG5cdFx0fVxuXHRcdCovXG5cdFx0cmV0dXJuIHJlc3VsdDtcblx0fVxuXG5cdC8vIHByb3RvdHlwZSBvZiBwcm94eVxuXHRjb25zdCBpbnN0YW5jZTogYW55ID0gUmVmbGVjdC5nZXRQcm90b3R5cGVPZihyZWNlaXZlcik7XG5cblx0Y29uc3QgcHJvcHMgPSBnZXRQcm9wcyhpbnN0YW5jZSkgYXMgUHJvcHM7XG5cdGNvbnN0IHtcblx0XHRfX3R5cGVfXzoge1xuXHRcdFx0Y29uZmlnOiB7XG5cdFx0XHRcdHN0cmljdENoYWluXG5cdFx0XHR9LFxuXHRcdFx0c3VidHlwZXNcblx0XHR9LFxuXHR9ID0gcHJvcHM7XG5cblxuXHRjb25zdCBzdWJ0eXBlID0gc3VidHlwZXMuaGFzKHByb3ApID9cblx0XHRzdWJ0eXBlcy5nZXQocHJvcCkgOlxuXHRcdHN0cmljdENoYWluID9cblx0XHRcdHVuZGVmaW5lZCA6XG5cdFx0XHRmaW5kU3ViVHlwZUZyb21QYXJlbnQoaW5zdGFuY2UsIHByb3ApO1xuXG5cdHJldHVybiBzdWJ0eXBlID8gbWFrZVN1YlR5cGVQcm94eShzdWJ0eXBlLCByZWNlaXZlcikgOiByZXN1bHQ7XG59O1xuXG5cbmNvbnN0IE1uZW1vc3luZSA9IGZ1bmN0aW9uIChnYWlhOiBhbnkpIHtcblxuXHQvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXRoaXMtYWxpYXNcblx0Y29uc3QgaW5zdGFuY2UgPSB0aGlzO1xuXG5cdGNvbnN0IE1uZW1vbmljYTogYW55ID0gZnVuY3Rpb24gKHRoaXM6IGFueSkge1xuXHRcdG9kcCh0aGlzLCBTeW1ib2xDb25zdHJ1Y3Rvck5hbWUsIHtcblx0XHRcdGdldCAoKSB7XG5cdFx0XHRcdHJldHVybiBNTkVNT05JQ0E7XG5cdFx0XHR9XG5cdFx0fSk7XG5cdH07XG5cblx0Y29uc3QgbW5lbW9uaWNhID0gUmVmbGVjdC5nZXRQcm90b3R5cGVPZihnYWlhKTtcblxuXHRSZWZsZWN0LnNldFByb3RvdHlwZU9mKE1uZW1vbmljYS5wcm90b3R5cGUsIG1uZW1vbmljYSk7XG5cblx0T2JqZWN0LmVudHJpZXMoTW5lbW9uaWNhUHJvdG9Qcm9wcykuZm9yRWFjaCgoWyBuYW1lLCBtZXRob2QgXTogW3N0cmluZywgYW55XSkgPT4ge1xuXHRcdG9kcChNbmVtb25pY2EucHJvdG90eXBlLCBuYW1lLCB7XG5cdFx0XHRnZXQgKHRoaXM6IGFueSkge1xuXHRcdFx0XHRyZXR1cm4gbWV0aG9kLmNhbGwodGhpcyk7XG5cdFx0XHR9XG5cdFx0fSk7XG5cdH0pO1xuXG5cdE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoTW5lbW9uaWNhUHJvdG9Qcm9wcykuZm9yRWFjaCgoc3ltYm9sOiBzeW1ib2wpID0+IHtcblx0XHRvZHAoTW5lbW9uaWNhLnByb3RvdHlwZSwgc3ltYm9sLCB7XG5cdFx0XHRnZXQgKCkge1xuXHRcdFx0XHRjb25zdCBzeW1ib2xNZXRob2QgPSBSZWZsZWN0LmdldChNbmVtb25pY2FQcm90b1Byb3BzLCBzeW1ib2wpO1xuXHRcdFx0XHQvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L2Jhbi10cy1jb21tZW50XG5cdFx0XHRcdC8vIEB0cy1pZ25vcmVcblx0XHRcdFx0cmV0dXJuIHN5bWJvbE1ldGhvZC5jYWxsKHRoaXMpO1xuXHRcdFx0fVxuXHRcdH0pO1xuXHR9KTtcblxuXHQvLyBpbnN0YW5jZSBvZiBzZWxmIENvbnN0cnVjdG9yIHR5cGVcblx0b2RwKE1uZW1vbmljYS5wcm90b3R5cGUsIFN5bWJvbC5oYXNJbnN0YW5jZSwge1xuXHRcdGdldCAoKSB7XG5cdFx0XHRyZXR1cm4gZ2V0VHlwZUNoZWNrZXIodGhpcy5jb25zdHJ1Y3Rvci5uYW1lKTtcblx0XHR9XG5cdH0pO1xuXG5cdG9kcChNbmVtb25pY2EucHJvdG90eXBlLCBTeW1ib2xHYWlhLCB7XG5cdFx0Z2V0ICgpIHtcblx0XHRcdHJldHVybiBnYWlhO1xuXHRcdH1cblx0fSk7XG5cblx0Y29uc3QgcHJvdG8gPSBuZXcgTW5lbW9uaWNhKCk7XG5cblx0UmVmbGVjdC5zZXRQcm90b3R5cGVPZihpbnN0YW5jZSwgcHJvdG8pO1xuXG5cdEluc3RhbmNlUm9vdHMuc2V0KGluc3RhbmNlLCBwcm90byk7XG5cbn0gYXMgQ29uc3RydWN0b3JGdW5jdGlvbjx0eXBlb2YgTW5lbW9uaWNhUHJvdG9Qcm9wcz47XG5cbmNvbnN0IGNyZWF0ZU1uZW1vc3luZSA9IGZ1bmN0aW9uIChVcmFudXM6IHVua25vd24pIHtcblx0Ly8gY29uc3RydWN0cyBuZXcgR2FpYSAtPiBuZXcgTW5lbW9zeW5lXG5cdC8vIHRvIGJ1aWxkIHRoZSBmaXJzdCBpbnN0YW5jZSBpbiBjaGFpblxuXHRjb25zdCB1cmFudXMgPSByZWZsZWN0UHJpbWl0aXZlV3JhcHBlcnMoVXJhbnVzKTtcblx0Y29uc3QgbW5lbW9zeW5lID0gbmV3IE1uZW1vc3luZShuZXcgR2FpYSh1cmFudXMpKTtcblx0Y29uc3QgbW5lbW9zeW5lUHJveHkgPSBuZXcgUHJveHkobW5lbW9zeW5lLCB7XG5cdFx0Z2V0IDogbW5lbW9zeW5lUHJveHlIYW5kbGVyR2V0XG5cdH0pO1xuXG5cdHJldHVybiBtbmVtb3N5bmVQcm94eTtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IHtcblx0R2FpYSxcblx0Z2V0IGNyZWF0ZU1uZW1vc3luZSAoKSB7XG5cdFx0cmV0dXJuIGNyZWF0ZU1uZW1vc3luZTtcblx0fSxcblx0Ly8gZ2V0IE1uZW1vc3luZVByb3RvdHlwZUtleXMgKCkge1xuXHQvLyBcdHJldHVybiBNbmVtb3N5bmVQcm90b3R5cGVLZXlzO1xuXHQvLyB9LFxuXHQvLyBnZXQgSW5zdGFuY2VSb290cyAoKSB7XG5cdC8vIFx0cmV0dXJuIEluc3RhbmNlUm9vdHM7XG5cdC8vIH1cbn07XG4iXX0=