Socket
Socket
Sign inDemoInstall

@glimmer/runtime

Package Overview
Dependencies
Maintainers
10
Versions
289
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@glimmer/runtime - npm Package Compare versions

Comparing version 0.24.0-alpha.2 to 0.24.0-beta.1

36

dist/commonjs/es2017/lib/compiled/opcodes/builder.js

@@ -80,3 +80,3 @@ 'use strict';

pushArgs(synthetic) {
this.push(58 /* PushArgs */, synthetic === true ? 1 : 0);
this.push(57 /* PushArgs */, synthetic === true ? 1 : 0);
}

@@ -101,46 +101,43 @@ // helpers

}
initializeComponentState() {
this.push(57 /* InitializeComponentState */);
}
prepareArgs(state) {
this.push(59 /* PrepareArgs */, state);
this.push(58 /* PrepareArgs */, state);
}
createComponent(state, hasDefault, hasInverse) {
let flag = (hasDefault === true ? 1 : 0) | (hasInverse === true ? 1 : 0) << 1;
this.push(60 /* CreateComponent */, flag, state);
this.push(59 /* CreateComponent */, flag, state);
}
registerComponentDestructor(state) {
this.push(61 /* RegisterComponentDestructor */, state);
this.push(60 /* RegisterComponentDestructor */, state);
}
beginComponentTransaction() {
this.push(65 /* BeginComponentTransaction */);
this.push(64 /* BeginComponentTransaction */);
}
commitComponentTransaction() {
this.push(66 /* CommitComponentTransaction */);
this.push(65 /* CommitComponentTransaction */);
}
pushComponentOperations() {
this.push(62 /* PushComponentOperations */);
this.push(61 /* PushComponentOperations */);
}
getComponentSelf(state) {
this.push(63 /* GetComponentSelf */, state);
this.push(62 /* GetComponentSelf */, state);
}
getComponentLayout(state) {
this.push(64 /* GetComponentLayout */, state);
this.push(63 /* GetComponentLayout */, state);
}
didCreateElement(state) {
this.push(67 /* DidCreateElement */, state);
this.push(66 /* DidCreateElement */, state);
}
didRenderLayout(state) {
this.push(68 /* DidRenderLayout */, state);
this.push(67 /* DidRenderLayout */, state);
}
// partial
getPartialTemplate() {
this.push(69 /* GetPartialTemplate */);
this.push(68 /* GetPartialTemplate */);
}
resolveMaybeLocal(name) {
this.push(70 /* ResolveMaybeLocal */, this.string(name));
this.push(69 /* ResolveMaybeLocal */, this.string(name));
}
// debugger
debugger(symbols, evalInfo) {
this.push(71 /* Debugger */, this.constants.other(symbols), this.constants.array(evalInfo));
this.push(70 /* Debugger */, this.constants.other(symbols), this.constants.array(evalInfo));
}

@@ -476,4 +473,3 @@ // content

}
invokeComponent(attrs, params, hash, block = null, inverse = null) {
this.initializeComponentState();
invokeComponent(attrs, params, hash, block, inverse = null) {
this.fetch(_opcodes.Register.s0);

@@ -505,2 +501,2 @@ this.dup(_opcodes.Register.sp, 1);

exports.default = OpcodeBuilder;
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9jb21waWxlZC9vcGNvZGVzL2J1aWxkZXIuanMiXSwibmFtZXMiOlsiY29udGVudCIsInZtIiwiTGFiZWxzIiwiY29uc3RydWN0b3IiLCJsYWJlbHMiLCJ0YXJnZXRzIiwibGFiZWwiLCJuYW1lIiwiaW5kZXgiLCJ0YXJnZXQiLCJhdCIsIlRhcmdldCIsInB1c2giLCJwYXRjaCIsIm9wY29kZXMiLCJzZXQiLCJCYXNpY09wY29kZUJ1aWxkZXIiLCJlbnYiLCJtZXRhIiwicHJvZ3JhbSIsImxhYmVsc1N0YWNrIiwiY29uc3RhbnRzIiwic3RhcnQiLCJuZXh0IiwicG9zIiwiY3VycmVudCIsIm5leHRQb3MiLCJ1cHZhcnMiLCJjb3VudCIsInJlc2VydmUiLCJvcDEiLCJvcDIiLCJvcDMiLCJmaW5hbGl6ZSIsInB1c2hBcmdzIiwic3ludGhldGljIiwic3RhcnRMYWJlbHMiLCJzdG9wTGFiZWxzIiwicG9wIiwicHVzaENvbXBvbmVudE1hbmFnZXIiLCJkZWZpbml0aW9uIiwib3RoZXIiLCJwdXNoRHluYW1pY0NvbXBvbmVudE1hbmFnZXIiLCJpbml0aWFsaXplQ29tcG9uZW50U3RhdGUiLCJwcmVwYXJlQXJncyIsInN0YXRlIiwiY3JlYXRlQ29tcG9uZW50IiwiaGFzRGVmYXVsdCIsImhhc0ludmVyc2UiLCJmbGFnIiwicmVnaXN0ZXJDb21wb25lbnREZXN0cnVjdG9yIiwiYmVnaW5Db21wb25lbnRUcmFuc2FjdGlvbiIsImNvbW1pdENvbXBvbmVudFRyYW5zYWN0aW9uIiwicHVzaENvbXBvbmVudE9wZXJhdGlvbnMiLCJnZXRDb21wb25lbnRTZWxmIiwiZ2V0Q29tcG9uZW50TGF5b3V0IiwiZGlkQ3JlYXRlRWxlbWVudCIsImRpZFJlbmRlckxheW91dCIsImdldFBhcnRpYWxUZW1wbGF0ZSIsInJlc29sdmVNYXliZUxvY2FsIiwic3RyaW5nIiwiZGVidWdnZXIiLCJzeW1ib2xzIiwiZXZhbEluZm8iLCJhcnJheSIsImR5bmFtaWNDb250ZW50IiwiT3Bjb2RlIiwiY2F1dGlvdXNBcHBlbmQiLCJPcHRpbWl6ZWRDYXV0aW91c0FwcGVuZE9wY29kZSIsInRydXN0aW5nQXBwZW5kIiwiT3B0aW1pemVkVHJ1c3RpbmdBcHBlbmRPcGNvZGUiLCJ0ZXh0Iiwib3BlblByaW1pdGl2ZUVsZW1lbnQiLCJ0YWciLCJvcGVuRWxlbWVudFdpdGhPcGVyYXRpb25zIiwib3BlbkR5bmFtaWNFbGVtZW50IiwiZmx1c2hFbGVtZW50IiwiY2xvc2VFbGVtZW50Iiwic3RhdGljQXR0ciIsIl9uYW1lIiwiX25hbWVzcGFjZSIsIl92YWx1ZSIsIm5hbWVzcGFjZSIsInZhbHVlIiwiZHluYW1pY0F0dHJOUyIsInRydXN0aW5nIiwiZHluYW1pY0F0dHIiLCJjb21tZW50IiwiX2NvbW1lbnQiLCJtb2RpZmllciIsIl9kZWZpbml0aW9uIiwicHV0SXRlcmF0b3IiLCJlbnRlckxpc3QiLCJleGl0TGlzdCIsIml0ZXJhdGUiLCJicmVha3MiLCJzZXRWYXJpYWJsZSIsInN5bWJvbCIsImdldFZhcmlhYmxlIiwiZ2V0UHJvcGVydHkiLCJrZXkiLCJnZXRCbG9jayIsImhhc0Jsb2NrIiwiaGFzQmxvY2tQYXJhbXMiLCJjb25jYXQiLCJzaXplIiwiZnVuY3Rpb24iLCJmIiwiZnVuYyIsImxvYWQiLCJyZWdpc3RlciIsImZldGNoIiwiZHVwIiwic3AiLCJvZmZzZXQiLCJwdXNoUmVtb3RlRWxlbWVudCIsInBvcFJlbW90ZUVsZW1lbnQiLCJwdXNoUm9vdFNjb3BlIiwiYmluZENhbGxlclNjb3BlIiwicHVzaENoaWxkU2NvcGUiLCJwb3BTY29wZSIsInJldHVyblRvIiwicmEiLCJwdXNoRHluYW1pY1Njb3BlIiwicG9wRHluYW1pY1Njb3BlIiwicHVzaEltbWVkaWF0ZSIsInByaW1pdGl2ZSIsIl9wcmltaXRpdmUiLCJFcnJvciIsImhlbHBlciIsInB1c2hCbG9jayIsImJsb2NrIiwiYmluZER5bmFtaWNTY29wZSIsIl9uYW1lcyIsIm5hbWVzIiwiZW50ZXIiLCJhcmdzIiwiZXhpdCIsInJldHVybiIsInB1c2hGcmFtZSIsInBvcEZyYW1lIiwiY29tcGlsZUR5bmFtaWNCbG9jayIsImludm9rZUR5bmFtaWMiLCJpbnZva2VyIiwiaW52b2tlU3RhdGljIiwiY2FsbGVyQ291bnQiLCJwYXJhbWV0ZXJzIiwic3ltYm9sVGFibGUiLCJjYWxsZWVDb3VudCIsImxlbmd0aCIsIk1hdGgiLCJtaW4iLCJpIiwiZnAiLCJfYmxvY2siLCJ0ZXN0IiwidGVzdEZ1bmMiLCJfZnVuYyIsIkNvbnN0VGVzdCIsIlNpbXBsZVRlc3QiLCJFbnZpcm9ubWVudFRlc3QiLCJqdW1wIiwianVtcElmIiwianVtcFVubGVzcyIsIl9zdHJpbmciLCJuIiwiaXNDb21waWxhYmxlRXhwcmVzc2lvbiIsImV4cHIiLCJjb21waWxlIiwiT3Bjb2RlQnVpbGRlciIsImNvbXBvbmVudCIsImNvbXBpbGVBcmdzIiwicGFyYW1zIiwiaGFzaCIsInBvc2l0aW9uYWwiLCJ2YWwiLCJndWFyZGVkQXBwZW5kIiwiZXhwcmVzc2lvbiIsInJlZmVyZW5jZSIsImNyZWF0ZSIsImludm9rZUNvbXBvbmVudCIsImF0dHJzIiwiaW52ZXJzZSIsInMwIiwic2NhbiIsInRlbXBsYXRlIiwic3RhdGVtZW50cyJdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUFBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOzs7O0FBQ0E7O0FBQ0E7O0lBQVlBLE87O0FBQ1o7O0lBQVlDLEU7Ozs7OztBQUNaLE1BQU1DLE1BQU4sQ0FBYTtBQUNUQyxrQkFBYztBQUNWLGFBQUtDLE1BQUwsR0FBYyxpQkFBZDtBQUNBLGFBQUtDLE9BQUwsR0FBZSxFQUFmO0FBQ0g7QUFDREMsVUFBTUMsSUFBTixFQUFZQyxLQUFaLEVBQW1CO0FBQ2YsYUFBS0osTUFBTCxDQUFZRyxJQUFaLElBQW9CQyxLQUFwQjtBQUNIO0FBQ0RDLFdBQU9DLEVBQVAsRUFBV0MsTUFBWCxFQUFtQkYsTUFBbkIsRUFBMkI7QUFDdkIsYUFBS0osT0FBTCxDQUFhTyxJQUFiLENBQWtCLEVBQUVGLEVBQUYsRUFBTUMsTUFB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LGVBQUwsQ0FBcUIsa0JBQVN5SSxFQUE5QixFQUFrQ3BELFVBQVUsSUFBNUMsRUFBa0RtRCxZQUFZLElBQTlEO0FBQ0EsYUFBS3BJLDJCQUFMLENBQWlDLGtCQUFTcUksRUFBMUM7QUFDQSxhQUFLakksZ0JBQUwsQ0FBc0Isa0JBQVNpSSxFQUEvQjtBQUNBLGFBQUtoSSxrQkFBTCxDQUF3QixrQkFBU2dJLEVBQWpDO0FBQ0EsYUFBS3pDLGFBQUwsQ0FBbUIsbUNBQXdCdUMsU0FBU0EsTUFBTUcsSUFBTixFQUFqQyxDQUFuQjtBQUNBLGFBQUs1QyxRQUFMO0FBQ0EsYUFBS3BCLFFBQUw7QUFDQSxhQUFLSSxlQUFMO0FBQ0EsYUFBS3hFLDBCQUFMO0FBQ0EsYUFBS3lELElBQUwsQ0FBVSxrQkFBUzBFLEVBQW5CO0FBQ0g7QUFDREUsYUFBU3RELEtBQVQsRUFBZ0I7QUFDWixZQUFJLENBQUNBLEtBQUwsRUFBWSxPQUFPLElBQVA7QUFDWixlQUFPLHVCQUFtQixLQUFLakgsSUFBeEIsRUFBOEJpSCxNQUFNdUQsVUFBcEMsRUFBZ0R2RCxNQUFNZSxVQUF0RCxDQUFQO0FBQ0g7QUFwRnlEO2tCQUF6Q3VCLGEiLCJmaWxlIjoibGliL2NvbXBpbGVkL29wY29kZXMvYnVpbGRlci5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGRpY3QsIEVNUFRZX0FSUkFZLCBleHBlY3QsIGZpbGxOdWxscywgU3RhY2sgfSBmcm9tICdAZ2xpbW1lci91dGlsJztcbmltcG9ydCB7IENvbXBvbmVudEJ1aWxkZXIgfSBmcm9tICcuLi8uLi9jb21waWxlcic7XG5pbXBvcnQgeyBSZWdpc3RlciB9IGZyb20gJy4uLy4uL29wY29kZXMnO1xuaW1wb3J0IHsgZXhwciwgSW52b2tlRHluYW1pY0xheW91dCB9IGZyb20gJy4uLy4uL3N5bnRheC9mdW5jdGlvbnMnO1xuaW1wb3J0IFJhd0lubGluZUJsb2NrIGZyb20gJy4uLy4uL3N5bnRheC9yYXctYmxvY2snO1xuaW1wb3J0IHsgSXNDb21wb25lbnREZWZpbml0aW9uUmVmZXJlbmNlIH0gZnJvbSAnLi4vb3Bjb2Rlcy9jb250ZW50JztcbmltcG9ydCAqIGFzIGNvbnRlbnQgZnJvbSAnLi9jb250ZW50JztcbmltcG9ydCAqIGFzIHZtIGZyb20gJy4vdm0nO1xuY2xhc3MgTGFiZWxzIHtcbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgdGhpcy5sYWJlbHMgPSBkaWN0KCk7XG4gICAgICAgIHRoaXMudGFyZ2V0cyA9IFtdO1xuICAgIH1cbiAgICBsYWJlbChuYW1lLCBpbmRleCkge1xuICAgICAgICB0aGlzLmxhYmVsc1tuYW1lXSA9IGluZGV4O1xuICAgIH1cbiAgICB0YXJnZXQoYXQsIFRhcmdldCwgdGFyZ2V0KSB7XG4gICAgICAgIHRoaXMudGFyZ2V0cy5wdXNoKHsgYXQsIFRhcmdldCwgdGFyZ2V0IH0pO1xuICAgIH1cbiAgICBwYXRjaChvcGNvZGVzKSB7XG4gICAgICAgIGZvciAobGV0IHsgYXQsIFRhcmdldCwgdGFyZ2V0IH0gb2YgdGhpcy50YXJnZXRzKSB7XG4gICAgICAgICAgICBvcGNvZGVzLnNldChhdCwgVGFyZ2V0LCB0aGlzLmxhYmVsc1t0YXJnZXRdKTtcbiAgICAgICAgfVxuICAgIH1cbn1cbmV4cG9ydCBjbGFzcyBCYXNpY09wY29kZUJ1aWxkZXIge1xuICAgIGNvbnN0cnVjdG9yKGVudiwgbWV0YSwgcHJvZ3JhbSkge1xuICAgICAgICB0aGlzLmVudiA9IGVudjtcbiAgICAgICAgdGhpcy5tZXRhID0gbWV0YTtcbiAgICAgICAgdGhpcy5wcm9ncmFtID0gcHJvZ3JhbTtcbiAgICAgICAgdGhpcy5sYWJlbHNTdGFjayA9IG5ldyBTdGFjaygpO1xuICAgICAgICB0aGlzLmNvbnN0YW50cyA9IGVudi5jb25zdGFudHM7XG4gICAgICAgIHRoaXMuc3RhcnQgPSBwcm9ncmFtLm5leHQ7XG4gICAgfVxuICAgIGdldCBwb3MoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnByb2dyYW0uY3VycmVudDtcbiAgICB9XG4gICAgZ2V0IG5leHRQb3MoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnByb2dyYW0ubmV4dDtcbiAgICB9XG4gICAgdXB2YXJzKGNvdW50KSB7XG4gICAgICAgIHJldHVybiBmaWxsTnVsbHMoY291bnQpO1xuICAgIH1cbiAgICByZXNlcnZlKG5hbWUpIHtcbiAgICAgICAgdGhpcy5wdXNoKG5hbWUsIDAsIDAsIDApO1xuICAgIH1cbiAgICBwdXNoKG5hbWUsIG9wMSA9IDAsIG9wMiA9IDAsIG9wMyA9IDApIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucHJvZ3JhbS5wdXNoKG5hbWUsIG9wMSwgb3AyLCBvcDMpO1xuICAgIH1cbiAgICBmaW5hbGl6ZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucHVzaCgyMiAvKiBSZXR1cm4gKi8pO1xuICAgIH1cbiAgICAvLyBhcmdzXG4gICAgcHVzaEFyZ3Moc3ludGhldGljKSB7XG4gICAgICAgIHRoaXMucHVzaCg1OCAvKiBQdXNoQXJncyAqLywgc3ludGhldGljID09PSB0cnVlID8gMSA6IDApO1xuICAgIH1cbiAgICAvLyBoZWxwZXJzXG4gICAgZ2V0IGxhYmVscygpIHtcbiAgICAgICAgcmV0dXJuIGV4cGVjdCh0aGlzLmxhYmVsc1N0YWNrLmN1cnJlbnQsICdidWc6IG5vdCBpbiBhIGxhYmVsIHN0YWNrJyk7XG4gICAgfVxuICAgIHN0YXJ0TGFiZWxzKCkge1xuICAgICAgICB0aGlzLmxhYmVsc1N0YWNrLnB1c2gobmV3IExhYmVscygpKTtcbiAgICB9XG4gICAgc3RvcExhYmVscygpIHtcbiAgICAgICAgbGV0IGxhYmVsID0gZXhwZWN0KHRoaXMubGFiZWxzU3RhY2sucG9wKCksICd1bmJhbGFuY2VkIHB1c2ggYW5kIHBvcCBsYWJlbHMnKTtcbiAgICAgICAgbGFiZWwucGF0Y2godGhpcy5wcm9ncmFtKTtcbiAgICB9XG4gICAgLy8gY29tcG9uZW50c1xuICAgIHB1c2hDb21wb25lbnRNYW5hZ2VyKGRlZmluaXRpb24pIHtcbiAgICAgICAgdGhpcy5wdXNoKDU1IC8qIFB1c2hDb21wb25lbnRNYW5hZ2VyICovLCB0aGlzLm90aGVyKGRlZmluaXRpb24pKTtcbiAgICB9XG4gICAgcHVzaER5bmFtaWNDb21wb25lbnRNYW5hZ2VyKCkge1xuICAgICAgICB0aGlzLnB1c2goNTYgLyogUHVzaER5bmFtaWNDb21wb25lbnRNYW5hZ2VyICovKTtcbiAgICB9XG4gICAgaW5pdGlhbGl6ZUNvbXBvbmVudFN0YXRlKCkge1xuICAgICAgICB0aGlzLnB1c2goNTcgLyogSW5pdGlhbGl6ZUNvbXBvbmVudFN0YXRlICovKTtcbiAgICB9XG4gICAgcHJlcGFyZUFyZ3Moc3RhdGUpIHtcbiAgICAgICAgdGhpcy5wdXNoKDU5IC8qIFByZXBhcmVBcmdzICovLCBzdGF0ZSk7XG4gICAgfVxuICAgIGNyZWF0ZUNvbXBvbmVudChzdGF0ZSwgaGFzRGVmYXVsdCwgaGFzSW52ZXJzZSkge1xuICAgICAgICBsZXQgZmxhZyA9IChoYXNEZWZhdWx0ID09PSB0cnVlID8gMSA6IDApIHwgKGhhc0ludmVyc2UgPT09IHRydWUgPyAxIDogMCkgPDwgMTtcbiAgICAgICAgdGhpcy5wdXNoKDYwIC8qIENyZWF0ZUNvbXBvbmVudCAqLywgZmxhZywgc3RhdGUpO1xuICAgIH1cbiAgICByZWdpc3RlckNvbXBvbmVudERlc3RydWN0b3Ioc3RhdGUpIHtcbiAgICAgICAgdGhpcy5wdXNoKDYxIC8qIFJlZ2lzdGVyQ29tcG9uZW50RGVzdHJ1Y3RvciAqLywgc3RhdGUpO1xuICAgIH1cbiAgICBiZWdpbkNvbXBvbmVudFRyYW5zYWN0aW9uKCkge1xuICAgICAgICB0aGlzLnB1c2goNjUgLyogQmVnaW5Db21wb25lbnRUcmFuc2FjdGlvbiAqLyk7XG4gICAgfVxuICAgIGNvbW1pdENvbXBvbmVudFRyYW5zYWN0aW9uKCkge1xuICAgICAgICB0aGlzLnB1c2goNjYgLyogQ29tbWl0Q29tcG9uZW50VHJhbnNhY3Rpb24gKi8pO1xuICAgIH1cbiAgICBwdXNoQ29tcG9uZW50T3BlcmF0aW9ucygpIHtcbiAgICAgICAgdGhpcy5wdXNoKDYyIC8qIFB1c2hDb21wb25lbnRPcGVyYXRpb25zICovKTtcbiAgICB9XG4gICAgZ2V0Q29tcG9uZW50U2VsZihzdGF0ZSkge1xuICAgICAgICB0aGlzLnB1c2goNjMgLyogR2V0Q29tcG9uZW50U2VsZiAqLywgc3RhdGUpO1xuICAgIH1cbiAgICBnZXRDb21wb25lbnRMYXlvdXQoc3RhdGUpIHtcbiAgICAgICAgdGhpcy5wdXNoKDY0IC8qIEdldENvbXBvbmVudExheW91dCAqLywgc3RhdGUpO1xuICAgIH1cbiAgICBkaWRDcmVhdGVFbGVtZW50KHN0YXRlKSB7XG4gICAgICAgIHRoaXMucHVzaCg2NyAvKiBEaWRDcmVhdGVFbGVtZW50ICovLCBzdGF0ZSk7XG4gICAgfVxuICAgIGRpZFJlbmRlckxheW91dChzdGF0ZSkge1xuICAgICAgICB0aGlzLnB1c2goNjggLyogRGlkUmVuZGVyTGF5b3V0ICovLCBzdGF0ZSk7XG4gICAgfVxuICAgIC8vIHBhcnRpYWxcbiAgICBnZXRQYXJ0aWFsVGVtcGxhdGUoKSB7XG4gICAgICAgIHRoaXMucHVzaCg2OSAvKiBHZXRQYXJ0aWFsVGVtcGxhdGUgKi8pO1xuICAgIH1cbiAgICByZXNvbHZlTWF5YmVMb2NhbChuYW1lKSB7XG4gICAgICAgIHRoaXMucHVzaCg3MCAvKiBSZXNvbHZlTWF5YmVMb2NhbCAqLywgdGhpcy5zdHJpbmcobmFtZSkpO1xuICAgIH1cbiAgICAvLyBkZWJ1Z2dlclxuICAgIGRlYnVnZ2VyKHN5bWJvbHMsIGV2YWxJbmZvKSB7XG4gICAgICAgIHRoaXMucHVzaCg3MSAvKiBEZWJ1Z2dlciAqLywgdGhpcy5jb25zdGFudHMub3RoZXIoc3ltYm9scyksIHRoaXMuY29uc3RhbnRzLmFycmF5KGV2YWxJbmZvKSk7XG4gICAgfVxuICAgIC8vIGNvbnRlbnRcbiAgICBkeW5hbWljQ29udGVudChPcGNvZGUpIHtcbiAgICAgICAgdGhpcy5wdXNoKDI1IC8qIER5bmFtaWNDb250ZW50ICovLCB0aGlzLm90aGVyKE9wY29kZSkpO1xuICAgIH1cbiAgICBjYXV0aW91c0FwcGVuZCgpIHtcbiAgICAgICAgdGhpcy5keW5hbWljQ29udGVudChuZXcgY29udGVudC5PcHRpbWl6ZWRDYXV0aW91c0FwcGVuZE9wY29kZSgpKTtcbiAgICB9XG4gICAgdHJ1c3RpbmdBcHBlbmQoKSB7XG4gICAgICAgIHRoaXMuZHluYW1pY0NvbnRlbnQobmV3IGNvbnRlbnQuT3B0aW1pemVkVHJ1c3RpbmdBcHBlbmRPcGNvZGUoKSk7XG4gICAgfVxuICAgIC8vIGRvbVxuICAgIHRleHQodGV4dCkge1xuICAgICAgICB0aGlzLnB1c2goMjMgLyogVGV4dCAqLywgdGhpcy5jb25zdGFudHMuc3RyaW5nKHRleHQpKTtcbiAgICB9XG4gICAgb3BlblByaW1pdGl2ZUVsZW1lbnQodGFnKSB7XG4gICAgICAgIHRoaXMucHVzaCgyNiAvKiBPcGVuRWxlbWVudCAqLywgdGhpcy5jb25zdGFudHMuc3RyaW5nKHRhZykpO1xuICAgIH1cbiAgICBvcGVuRWxlbWVudFdpdGhPcGVyYXRpb25zKHRhZykge1xuICAgICAgICB0aGlzLnB1c2goMjcgLyogT3BlbkVsZW1lbnRXaXRoT3BlcmF0aW9ucyAqLywgdGhpcy5jb25zdGFudHMuc3RyaW5nKHRhZykpO1xuICAgIH1cbiAgICBvcGVuRHluYW1pY0VsZW1lbnQoKSB7XG4gICAgICAgIHRoaXMucHVzaCgyOCAvKiBPcGVuRHluYW1pY0VsZW1lbnQgKi8pO1xuICAgIH1cbiAgICBmbHVzaEVsZW1lbnQoKSB7XG4gICAgICAgIHRoaXMucHVzaCgzMiAvKiBGbHVzaEVsZW1lbnQgKi8pO1xuICAgIH1cbiAgICBjbG9zZUVsZW1lbnQoKSB7XG4gICAgICAgIHRoaXMucHVzaCgzMyAvKiBDbG9zZUVsZW1lbnQgKi8pO1xuICAgIH1cbiAgICBzdGF0aWNBdHRyKF9uYW1lLCBfbmFtZXNwYWNlLCBfdmFsdWUpIHtcbiAgICAgICAgbGV0IG5hbWUgPSB0aGlzLmNvbnN0YW50cy5zdHJpbmcoX25hbWUpO1xuICAgICAgICBsZXQgbmFtZXNwYWNlID0gX25hbWVzcGFjZSA/IHRoaXMuY29uc3RhbnRzLnN0cmluZyhfbmFtZXNwYWNlKSA6IDA7XG4gICAgICAgIGxldCB2YWx1ZSA9IHRoaXMuY29uc3RhbnRzLnN0cmluZyhfdmFsdWUpO1xuICAgICAgICB0aGlzLnB1c2goMjkgLyogU3RhdGljQXR0ciAqLywgbmFtZSwgdmFsdWUsIG5hbWVzcGFjZSk7XG4gICAgfVxuICAgIGR5bmFtaWNBdHRyTlMoX25hbWUsIF9uYW1lc3BhY2UsIHRydXN0aW5nKSB7XG4gICAgICAgIGxldCBuYW1lID0gdGhpcy5jb25zdGFudHMuc3RyaW5nKF9uYW1lKTtcbiAgICAgICAgbGV0IG5hbWVzcGFjZSA9IHRoaXMuY29uc3RhbnRzLnN0cmluZyhfbmFtZXNwYWNlKTtcbiAgICAgICAgdGhpcy5wdXNoKDMxIC8qIER5bmFtaWNBdHRyTlMgKi8sIG5hbWUsIG5hbWVzcGFjZSwgdHJ1c3RpbmcgPT09IHRydWUgPyAxIDogMCk7XG4gICAgfVxuICAgIGR5bmFtaWNBdHRyKF9uYW1lLCB0cnVzdGluZykge1xuICAgICAgICBsZXQgbmFtZSA9IHRoaXMuY29uc3RhbnRzLnN0cmluZyhfbmFtZSk7XG4gICAgICAgIHRoaXMucHVzaCgzMCAvKiBEeW5hbWljQXR0ciAqLywgbmFtZSwgdHJ1c3RpbmcgPT09IHRydWUgPyAxIDogMCk7XG4gICAgfVxuICAgIGNvbW1lbnQoX2NvbW1lbnQpIHtcbiAgICAgICAgbGV0IGNvbW1lbnQgPSB0aGlzLmNvbnN0YW50cy5zdHJpbmcoX2NvbW1lbnQpO1xuICAgICAgICB0aGlzLnB1c2goMjQgLyogQ29tbWVudCAqLywgY29tbWVudCk7XG4gICAgfVxuICAgIG1vZGlmaWVyKF9kZWZpbml0aW9uKSB7XG4gICAgICAgIHRoaXMucHVzaCgzNCAvKiBNb2RpZmllciAqLywgdGhpcy5vdGhlcihfZGVmaW5pdGlvbikpO1xuICAgIH1cbiAgICAvLyBsaXN0c1xuICAgIHB1dEl0ZXJhdG9yKCkge1xuICAgICAgICB0aGlzLnB1c2goNTMgLyogUHV0SXRlcmF0b3IgKi8pO1xuICAgIH1cbiAgICBlbnRlckxpc3Qoc3RhcnQpIHtcbiAgICAgICAgdGhpcy5yZXNlcnZlKDUxIC8qIEVudGVyTGlzdCAqLyk7XG4gICAgICAgIHRoaXMubGFiZWxzLnRhcmdldCh0aGlzLnBvcywgNTEgLyogRW50ZXJMaXN0ICovLCBzdGFydCk7XG4gICAgfVxuICAgIGV4aXRMaXN0KCkge1xuICAgICAgICB0aGlzLnB1c2goNTIgLyogRXhpdExpc3QgKi8pO1xuICAgIH1cbiAgICBpdGVyYXRlKGJyZWFrcykge1xuICAgICAgICB0aGlzLnJlc2VydmUoNTQgLyogSXRlcmF0ZSAqLyk7XG4gICAgICAgIHRoaXMubGFiZWxzLnRhcmdldCh0aGlzLnBvcywgNTQgLyogSXRlcmF0ZSAqLywgYnJlYWtzKTtcbiAgICB9XG4gICAgLy8gZXhwcmVzc2lvbnNcbiAgICBzZXRWYXJpYWJsZShzeW1ib2wpIHtcbiAgICAgICAgdGhpcy5wdXNoKDQgLyogU2V0VmFyaWFibGUgKi8sIHN5bWJvbCk7XG4gICAgfVxuICAgIGdldFZhcmlhYmxlKHN5bWJvbCkge1xuICAgICAgICB0aGlzLnB1c2goNSAvKiBHZXRWYXJpYWJsZSAqLywgc3ltYm9sKTtcbiAgICB9XG4gICAgZ2V0UHJvcGVydHkoa2V5KSB7XG4gICAgICAgIHRoaXMucHVzaCg2IC8qIEdldFByb3BlcnR5ICovLCB0aGlzLnN0cmluZyhrZXkpKTtcbiAgICB9XG4gICAgZ2V0QmxvY2soc3ltYm9sKSB7XG4gICAgICAgIHRoaXMucHVzaCg4IC8qIEdldEJsb2NrICovLCBzeW1ib2wpO1xuICAgIH1cbiAgICBoYXNCbG9jayhzeW1ib2wpIHtcbiAgICAgICAgdGhpcy5wdXNoKDkgLyogSGFzQmxvY2sgKi8sIHN5bWJvbCk7XG4gICAgfVxuICAgIGhhc0Jsb2NrUGFyYW1zKHN5bWJvbCkge1xuICAgICAgICB0aGlzLnB1c2goMTAgLyogSGFzQmxvY2tQYXJhbXMgKi8sIHN5bWJvbCk7XG4gICAgfVxuICAgIGNvbmNhdChzaXplKSB7XG4gICAgICAgIHRoaXMucHVzaCgxMSAvKiBDb25jYXQgKi8sIHNpemUpO1xuICAgIH1cbiAgICBmdW5jdGlvbihmKSB7XG4gICAgICAgIHRoaXMucHVzaCgyIC8qIEZ1bmN0aW9uICovLCB0aGlzLmZ1bmMoZikpO1xuICAgIH1cbiAgICBsb2FkKHJlZ2lzdGVyKSB7XG4gICAgICAgIHRoaXMucHVzaCgxNyAvKiBMb2FkICovLCByZWdpc3Rlcik7XG4gICAgfVxuICAgIGZldGNoKHJlZ2lzdGVyKSB7XG4gICAgICAgIHRoaXMucHVzaCgxOCAvKiBGZXRjaCAqLywgcmVnaXN0ZXIpO1xuICAgIH1cbiAgICBkdXAocmVnaXN0ZXIgPSBSZWdpc3Rlci5zcCwgb2Zmc2V0ID0gMCkge1xuICAgICAgICByZXR1cm4gdGhpcy5wdXNoKDE1IC8qIER1cCAqLywgcmVnaXN0ZXIsIG9mZnNldCk7XG4gICAgfVxuICAgIHBvcChjb3VudCA9IDEpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucHVzaCgxNiAvKiBQb3AgKi8sIGNvdW50KTtcbiAgICB9XG4gICAgLy8gdm1cbiAgICBwdXNoUmVtb3RlRWxlbWVudCgpIHtcbiAgICAgICAgdGhpcy5wdXNoKDM1IC8qIFB1c2hSZW1vdGVFbGVtZW50ICovKTtcbiAgICB9XG4gICAgcG9wUmVtb3RlRWxlbWVudCgpIHtcbiAgICAgICAgdGhpcy5wdXNoKDM2IC8qIFBvcFJlbW90ZUVsZW1lbnQgKi8pO1xuICAgIH1cbiAgICBsYWJlbChuYW1lKSB7XG4gICAgICAgIHRoaXMubGFiZWxzLmxhYmVsKG5hbWUsIHRoaXMubmV4dFBvcyk7XG4gICAgfVxuICAgIHB1c2hSb290U2NvcGUoc3ltYm9scywgYmluZENhbGxlclNjb3BlKSB7XG4gICAgICAgIHRoaXMucHVzaCgxOSAvKiBSb290U2NvcGUgKi8sIHN5bWJvbHMsIGJpbmRDYWxsZXJTY29wZSA/IDEgOiAwKTtcbiAgICB9XG4gICAgcHVzaENoaWxkU2NvcGUoKSB7XG4gICAgICAgIHRoaXMucHVzaCgyMCAvKiBDaGlsZFNjb3BlICovKTtcbiAgICB9XG4gICAgcG9wU2NvcGUoKSB7XG4gICAgICAgIHRoaXMucHVzaCgyMSAvKiBQb3BTY29wZSAqLyk7XG4gICAgfVxuICAgIHJldHVyblRvKGxhYmVsKSB7XG4gICAgICAgIHRoaXMucmVzZXJ2ZSgxMiAvKiBJbW1lZGlhdGUgKi8pO1xuICAgICAgICB0aGlzLmxhYmVscy50YXJnZXQodGhpcy5wb3MsIDEyIC8qIEltbWVkaWF0ZSAqLywgbGFiZWwpO1xuICAgICAgICB0aGlzLmxvYWQoUmVnaXN0ZXIucmEpO1xuICAgIH1cbiAgICBwdXNoRHluYW1pY1Njb3BlKCkge1xuICAgICAgICB0aGlzLnB1c2goMzggLyogUHVzaER5bmFtaWNTY29wZSAqLyk7XG4gICAgfVxuICAgIHBvcER5bmFtaWNTY29wZSgpIHtcbiAgICAgICAgdGhpcy5wdXNoKDM5IC8qIFBvcER5bmFtaWNTY29wZSAqLyk7XG4gICAgfVxuICAgIHB1c2hJbW1lZGlhdGUodmFsdWUpIHtcbiAgICAgICAgdGhpcy5wdXNoKDEzIC8qIENvbnN0YW50ICovLCB0aGlzLm90aGVyKHZhbHVlKSk7XG4gICAgfVxuICAgIHByaW1pdGl2ZShfcHJpbWl0aXZlKSB7XG4gICAgICAgIGxldCBmbGFnID0gMDtcbiAgICAgICAgbGV0IHByaW1pdGl2ZTtcbiAgICAgICAgc3dpdGNoICh0eXBlb2YgX3ByaW1pdGl2ZSkge1xuICAgICAgICAgICAgY2FzZSAnbnVtYmVyJzpcbiAgICAgICAgICAgICAgICBwcmltaXRpdmUgPSBfcHJpbWl0aXZlO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnc3RyaW5nJzpcbiAgICAgICAgICAgICAgICBwcmltaXRpdmUgPSB0aGlzLnN0cmluZyhfcHJpbWl0aXZlKTtcbiAgICAgICAgICAgICAgICBmbGFnID0gMTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ2Jvb2xlYW4nOlxuICAgICAgICAgICAgICAgIHByaW1pdGl2ZSA9IF9wcmltaXRpdmUgfCAwO1xuICAgICAgICAgICAgICAgIGZsYWcgPSAyO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnb2JqZWN0JzpcbiAgICAgICAgICAgICAgICAvLyBhc3N1bWUgbnVsbFxuICAgICAgICAgICAgICAgIHByaW1pdGl2ZSA9IDI7XG4gICAgICAgICAgICAgICAgZmxhZyA9IDI7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICd1bmRlZmluZWQnOlxuICAgICAgICAgICAgICAgIHByaW1pdGl2ZSA9IDM7XG4gICAgICAgICAgICAgICAgZmxhZyA9IDI7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignSW52YWxpZCBwcmltaXRpdmUgcGFzc2VkIHRvIHB1c2hQcmltaXRpdmUnKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnB1c2goMTQgLyogUHJpbWl0aXZlUmVmZXJlbmNlICovLCBmbGFnIDw8IDMwIHwgcHJpbWl0aXZlKTtcbiAgICB9XG4gICAgaGVscGVyKGZ1bmMpIHtcbiAgICAgICAgdGhpcy5wdXNoKDEgLyogSGVscGVyICovLCB0aGlzLmZ1bmMoZnVuYykpO1xuICAgIH1cbiAgICBwdXNoQmxvY2soYmxvY2spIHtcbiAgICAgICAgdGhpcy5wdXNoKDcgLyogUHVzaEJsb2NrICovLCB0aGlzLmJsb2NrKGJsb2NrKSk7XG4gICAgfVxuICAgIGJpbmREeW5hbWljU2NvcGUoX25hbWVzKSB7XG4gICAgICAgIHRoaXMucHVzaCgzNyAvKiBCaW5kRHluYW1pY1Njb3BlICovLCB0aGlzLm5hbWVzKF9uYW1lcykpO1xuICAgIH1cbiAgICBlbnRlcihhcmdzKSB7XG4gICAgICAgIHRoaXMucHVzaCg0OCAvKiBFbnRlciAqLywgYXJncyk7XG4gICAgfVxuICAgIGV4aXQoKSB7XG4gICAgICAgIHRoaXMucHVzaCg0OSAvKiBFeGl0ICovKTtcbiAgICB9XG4gICAgcmV0dXJuKCkge1xuICAgICAgICB0aGlzLnB1c2goMjIgLyogUmV0dXJuICovKTtcbiAgICB9XG4gICAgcHVzaEZyYW1lKCkge1xuICAgICAgICB0aGlzLnB1c2goNDYgLyogUHVzaEZyYW1lICovKTtcbiAgICB9XG4gICAgcG9wRnJhbWUoKSB7XG4gICAgICAgIHRoaXMucHVzaCg0NyAvKiBQb3BGcmFtZSAqLyk7XG4gICAgfVxuICAgIGNvbXBpbGVEeW5hbWljQmxvY2soKSB7XG4gICAgICAgIHRoaXMucHVzaCg0MCAvKiBDb21waWxlRHluYW1pY0Jsb2NrICovKTtcbiAgICB9XG4gICAgaW52b2tlRHluYW1pYyhpbnZva2VyKSB7XG4gICAgICAgIHRoaXMucHVzaCg0MiAvKiBJbnZva2VEeW5hbWljICovLCB0aGlzLm90aGVyKGludm9rZXIpKTtcbiAgICB9XG4gICAgaW52b2tlU3RhdGljKGJsb2NrLCBjYWxsZXJDb3VudCA9IDApIHtcbiAgICAgICAgbGV0IHsgcGFyYW1ldGVycyB9ID0gYmxvY2suc3ltYm9sVGFibGU7XG4gICAgICAgIGxldCBjYWxsZWVDb3VudCA9IHBhcmFtZXRlcnMubGVuZ3RoO1xuICAgICAgICBsZXQgY291bnQgPSBNYXRoLm1pbihjYWxsZXJDb3VudCwgY2FsbGVlQ291bnQpO1xuICAgICAgICB0aGlzLnB1c2hGcmFtZSgpO1xuICAgICAgICBpZiAoY291bnQpIHtcbiAgICAgICAgICAgIHRoaXMucHVzaENoaWxkU2NvcGUoKTtcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgY291bnQ7IGkrKykge1xuICAgICAgICAgICAgICAgIHRoaXMuZHVwKFJlZ2lzdGVyLmZwLCBjYWxsZXJDb3VudCAtIGkpO1xuICAgICAgICAgICAgICAgIHRoaXMuc2V0VmFyaWFibGUocGFyYW1ldGVyc1tpXSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgbGV0IF9ibG9jayA9IHRoaXMuY29uc3RhbnRzLmJsb2NrKGJsb2NrKTtcbiAgICAgICAgdGhpcy5wdXNoKDQxIC8qIEludm9rZVN0YXRpYyAqLywgX2Jsb2NrKTtcbiAgICAgICAgaWYgKGNvdW50KSB7XG4gICAgICAgICAgICB0aGlzLnBvcFNjb3BlKCk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5wb3BGcmFtZSgpO1xuICAgIH1cbiAgICB0ZXN0KHRlc3RGdW5jKSB7XG4gICAgICAgIGxldCBfZnVuYztcbiAgICAgICAgaWYgKHRlc3RGdW5jID09PSAnY29uc3QnKSB7XG4gICAgICAgICAgICBfZnVuYyA9IHZtLkNvbnN0VGVzdDtcbiAgICAgICAgfSBlbHNlIGlmICh0ZXN0RnVuYyA9PT0gJ3NpbXBsZScpIHtcbiAgICAgICAgICAgIF9mdW5jID0gdm0uU2ltcGxlVGVzdDtcbiAgICAgICAgfSBlbHNlIGlmICh0ZXN0RnVuYyA9PT0gJ2Vudmlyb25tZW50Jykge1xuICAgICAgICAgICAgX2Z1bmMgPSB2bS5FbnZpcm9ubWVudFRlc3Q7XG4gICAgICAgIH0gZWxzZSBpZiAodHlwZW9mIHRlc3RGdW5jID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICBfZnVuYyA9IHRlc3RGdW5jO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCd1bnJlYWNoYWJsZScpO1xuICAgICAgICB9XG4gICAgICAgIGxldCBmdW5jID0gdGhpcy5jb25zdGFudHMuZnVuY3Rpb24oX2Z1bmMpO1xuICAgICAgICB0aGlzLnB1c2goNTAgLyogVGVzdCAqLywgZnVuYyk7XG4gICAgfVxuICAgIGp1bXAodGFyZ2V0KSB7XG4gICAgICAgIHRoaXMucmVzZXJ2ZSg0MyAvKiBKdW1wICovKTtcbiAgICAgICAgdGhpcy5sYWJlbHMudGFyZ2V0KHRoaXMucG9zLCA0MyAvKiBKdW1wICovLCB0YXJnZXQpO1xuICAgIH1cbiAgICBqdW1wSWYodGFyZ2V0KSB7XG4gICAgICAgIHRoaXMucmVzZXJ2ZSg0NCAvKiBKdW1wSWYgKi8pO1xuICAgICAgICB0aGlzLmxhYmVscy50YXJnZXQodGhpcy5wb3MsIDQ0IC8qIEp1bXBJZiAqLywgdGFyZ2V0KTtcbiAgICB9XG4gICAganVtcFVubGVzcyh0YXJnZXQpIHtcbiAgICAgICAgdGhpcy5yZXNlcnZlKDQ1IC8qIEp1bXBVbmxlc3MgKi8pO1xuICAgICAgICB0aGlzLmxhYmVscy50YXJnZXQodGhpcy5wb3MsIDQ1IC8qIEp1bXBVbmxlc3MgKi8sIHRhcmdldCk7XG4gICAgfVxuICAgIHN0cmluZyhfc3RyaW5nKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmNvbnN0YW50cy5zdHJpbmcoX3N0cmluZyk7XG4gICAgfVxuICAgIG5hbWVzKF9uYW1lcykge1xuICAgICAgICBsZXQgbmFtZXMgPSBbXTtcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBfbmFtZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGxldCBuID0gX25hbWVzW2ldO1xuICAgICAgICAgICAgbmFtZXNbaV0gPSB0aGlzLmNvbnN0YW50cy5zdHJpbmcobik7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMuY29uc3RhbnRzLmFycmF5KG5hbWVzKTtcbiAgICB9XG4gICAgc3ltYm9scyhzeW1ib2xzKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmNvbnN0YW50cy5hcnJheShzeW1ib2xzKTtcbiAgICB9XG4gICAgb3RoZXIodmFsdWUpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY29uc3RhbnRzLm90aGVyKHZhbHVlKTtcbiAgICB9XG4gICAgYmxvY2soYmxvY2spIHtcbiAgICAgICAgcmV0dXJuIGJsb2NrID8gdGhpcy5jb25zdGFudHMuYmxvY2soYmxvY2spIDogMDtcbiAgICB9XG4gICAgZnVuYyhmdW5jKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmNvbnN0YW50cy5mdW5jdGlvbihmdW5jKTtcbiAgICB9XG59XG5mdW5jdGlvbiBpc0NvbXBpbGFibGVFeHByZXNzaW9uKGV4cHIpIHtcbiAgICByZXR1cm4gdHlwZW9mIGV4cHIgPT09ICdvYmplY3QnICYmIGV4cHIgIT09IG51bGwgJiYgdHlwZW9mIGV4cHIuY29tcGlsZSA9PT0gJ2Z1bmN0aW9uJztcbn1cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIE9wY29kZUJ1aWxkZXIgZXh0ZW5kcyBCYXNpY09wY29kZUJ1aWxkZXIge1xuICAgIGNvbnN0cnVjdG9yKGVudiwgbWV0YSwgcHJvZ3JhbSA9IGVudi5wcm9ncmFtKSB7XG4gICAgICAgIHN1cGVyKGVudiwgbWV0YSwgcHJvZ3JhbSk7XG4gICAgICAgIHRoaXMuY29tcG9uZW50ID0gbmV3IENvbXBvbmVudEJ1aWxkZXIodGhpcyk7XG4gICAgfVxuICAgIGNvbXBpbGVBcmdzKHBhcmFtcywgaGFzaCwgc3ludGhldGljKSB7XG4gICAgICAgIGxldCBwb3NpdGlvbmFsID0gMDtcbiAgICAgICAgaWYgKHBhcmFtcykge1xuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBwYXJhbXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgICAgICBleHByKHBhcmFtc1tpXSwgdGhpcyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBwb3NpdGlvbmFsID0gcGFyYW1zLmxlbmd0aDtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnB1c2hJbW1lZGlhdGUocG9zaXRpb25hbCk7XG4gICAgICAgIGxldCBuYW1lcyA9IEVNUFRZX0FSUkFZO1xuICAgICAgICBpZiAoaGFzaCkge1xuICAgICAgICAgICAgbmFtZXMgPSBoYXNoWzBdO1xuICAgICAgICAgICAgbGV0IHZhbCA9IGhhc2hbMV07XG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHZhbC5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgICAgIGV4cHIodmFsW2ldLCB0aGlzKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICB0aGlzLnB1c2hJbW1lZGlhdGUobmFtZXMpO1xuICAgICAgICB0aGlzLnB1c2hBcmdzKHN5bnRoZXRpYyk7XG4gICAgfVxuICAgIGNvbXBpbGUoZXhwcikge1xuICAgICAgICBpZiAoaXNDb21waWxhYmxlRXhwcmVzc2lvbihleHByKSkge1xuICAgICAgICAgICAgcmV0dXJuIGV4cHIuY29tcGlsZSh0aGlzKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBleHByO1xuICAgICAgICB9XG4gICAgfVxuICAgIGd1YXJkZWRBcHBlbmQoZXhwcmVzc2lvbiwgdHJ1c3RpbmcpIHtcbiAgICAgICAgdGhpcy5zdGFydExhYmVscygpO1xuICAgICAgICB0aGlzLnB1c2hGcmFtZSgpO1xuICAgICAgICB0aGlzLnJldHVyblRvKCdFTkQnKTtcbiAgICAgICAgZXhwcihleHByZXNzaW9uLCB0aGlzKTtcbiAgICAgICAgdGhpcy5kdXAoKTtcbiAgICAgICAgdGhpcy50ZXN0KHJlZmVyZW5jZSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gSXNDb21wb25lbnREZWZpbml0aW9uUmVmZXJlbmNlLmNyZWF0ZShyZWZlcmVuY2UpO1xuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5lbnRlcigyKTtcbiAgICAgICAgdGhpcy5qdW1wVW5sZXNzKCdFTFNFJyk7XG4gICAgICAgIHRoaXMucHVzaER5bmFtaWNDb21wb25lbnRNYW5hZ2VyKCk7XG4gICAgICAgIHRoaXMuaW52b2tlQ29tcG9uZW50KG51bGwsIG51bGwsIG51bGwsIG51bGwsIG51bGwpO1xuICAgICAgICB0aGlzLmV4aXQoKTtcbiAgICAgICAgdGhpcy5yZXR1cm4oKTtcbiAgICAgICAgdGhpcy5sYWJlbCgnRUxTRScpO1xuICAgICAgICBpZiAodHJ1c3RpbmcpIHtcbiAgICAgICAgICAgIHRoaXMudHJ1c3RpbmdBcHBlbmQoKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuY2F1dGlvdXNBcHBlbmQoKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmV4aXQoKTtcbiAgICAgICAgdGhpcy5yZXR1cm4oKTtcbiAgICAgICAgdGhpcy5sYWJlbCgnRU5EJyk7XG4gICAgICAgIHRoaXMucG9wRnJhbWUoKTtcbiAgICAgICAgdGhpcy5zdG9wTGFiZWxzKCk7XG4gICAgfVxuICAgIGludm9rZUNvbXBvbmVudChhdHRycywgcGFyYW1zLCBoYXNoLCBibG9jayA9IG51bGwsIGludmVyc2UgPSBudWxsKSB7XG4gICAgICAgIHRoaXMuaW5pdGlhbGl6ZUNvbXBvbmVudFN0YXRlKCk7XG4gICAgICAgIHRoaXMuZmV0Y2goUmVnaXN0ZXIuczApO1xuICAgICAgICB0aGlzLmR1cChSZWdpc3Rlci5zcCwgMSk7XG4gICAgICAgIHRoaXMubG9hZChSZWdpc3Rlci5zMCk7XG4gICAgICAgIHRoaXMucHVzaEJsb2NrKGJsb2NrKTtcbiAgICAgICAgdGhpcy5wdXNoQmxvY2soaW52ZXJzZSk7XG4gICAgICAgIHRoaXMuY29tcGlsZUFyZ3MocGFyYW1zLCBoYXNoLCBmYWxzZSk7XG4gICAgICAgIHRoaXMucHJlcGFyZUFyZ3MoUmVnaXN0ZXIuczApO1xuICAgICAgICB0aGlzLmJlZ2luQ29tcG9uZW50VHJhbnNhY3Rpb24oKTtcbiAgICAgICAgdGhpcy5wdXNoRHluYW1pY1Njb3BlKCk7XG4gICAgICAgIHRoaXMuY3JlYXRlQ29tcG9uZW50KFJlZ2lzdGVyLnMwLCBibG9jayAhPT0gbnVsbCwgaW52ZXJzZSAhPT0gbnVsbCk7XG4gICAgICAgIHRoaXMucmVnaXN0ZXJDb21wb25lbnREZXN0cnVjdG9yKFJlZ2lzdGVyLnMwKTtcbiAgICAgICAgdGhpcy5nZXRDb21wb25lbnRTZWxmKFJlZ2lzdGVyLnMwKTtcbiAgICAgICAgdGhpcy5nZXRDb21wb25lbnRMYXlvdXQoUmVnaXN0ZXIuczApO1xuICAgICAgICB0aGlzLmludm9rZUR5bmFtaWMobmV3IEludm9rZUR5bmFtaWNMYXlvdXQoYXR0cnMgJiYgYXR0cnMuc2NhbigpKSk7XG4gICAgICAgIHRoaXMucG9wRnJhbWUoKTtcbiAgICAgICAgdGhpcy5wb3BTY29wZSgpO1xuICAgICAgICB0aGlzLnBvcER5bmFtaWNTY29wZSgpO1xuICAgICAgICB0aGlzLmNvbW1pdENvbXBvbmVudFRyYW5zYWN0aW9uKCk7XG4gICAgICAgIHRoaXMubG9hZChSZWdpc3Rlci5zMCk7XG4gICAgfVxuICAgIHRlbXBsYXRlKGJsb2NrKSB7XG4gICAgICAgIGlmICghYmxvY2spIHJldHVybiBudWxsO1xuICAgICAgICByZXR1cm4gbmV3IFJhd0lubGluZUJsb2NrKHRoaXMubWV0YSwgYmxvY2suc3RhdGVtZW50cywgYmxvY2sucGFyYW1ldGVycyk7XG4gICAgfVxufSJdfQ==
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9jb21waWxlZC9vcGNvZGVzL2J1aWxkZXIuanMiXSwibmFtZXMiOlsiY29udGVudCIsInZtIiwiTGFiZWxzIiwiY29uc3RydWN0b3IiLCJsYWJlbHMiLCJ0YXJnZXRzIiwibGFiZWwiLCJuYW1lIiwiaW5kZXgiLCJ0YXJnZXQiLCJhdCIsIlRhcmdldCIsInB1c2giLCJwYXRjaCIsIm9wY29kZXMiLCJzZXQiLCJCYXNpY09wY29kZUJ1aWxkZXIiLCJlbnYiLCJtZXRhIiwicHJvZ3JhbSIsImxhYmVsc1N0YWNrIiwiY29uc3RhbnRzIiwic3RhcnQiLCJuZXh0IiwicG9zIiwiY3VycmVudCIsIm5leHRQb3MiLCJ1cHZhcnMiLCJjb3VudCIsInJlc2VydmUiLCJvcDEiLCJvcDIiLCJvcDMiLCJmaW5hbGl6ZSIsInB1c2hBcmdzIiwic3ludGhldGljIiwic3RhcnRMYWJlbHMiLCJzdG9wTGFiZWxzIiwicG9wIiwicHVzaENvbXBvbmVudE1hbmFnZXIiLCJkZWZpbml0aW9uIiwib3RoZXIiLCJwdXNoRHluYW1pY0NvbXBvbmVudE1hbmFnZXIiLCJwcmVwYXJlQXJncyIsInN0YXRlIiwiY3JlYXRlQ29tcG9uZW50IiwiaGFzRGVmYXVsdCIsImhhc0ludmVyc2UiLCJmbGFnIiwicmVnaXN0ZXJDb21wb25lbnREZXN0cnVjdG9yIiwiYmVnaW5Db21wb25lbnRUcmFuc2FjdGlvbiIsImNvbW1pdENvbXBvbmVudFRyYW5zYWN0aW9uIiwicHVzaENvbXBvbmVudE9wZXJhdGlvbnMiLCJnZXRDb21wb25lbnRTZWxmIiwiZ2V0Q29tcG9uZW50TGF5b3V0IiwiZGlkQ3JlYXRlRWxlbWVudCIsImRpZFJlbmRlckxheW91dCIsImdldFBhcnRpYWxUZW1wbGF0ZSIsInJlc29sdmVNYXliZUxvY2FsIiwic3RyaW5nIiwiZGVidWdnZXIiLCJzeW1ib2xzIiwiZXZhbEluZm8iLCJhcnJheSIsImR5bmFtaWNDb250ZW50IiwiT3Bjb2RlIiwiY2F1dGlvdXNBcHBlbmQiLCJPcHRpbWl6ZWRDYXV0aW91c0FwcGVuZE9wY29kZSIsInRydXN0aW5nQXBwZW5kIiwiT3B0aW1pemVkVHJ1c3RpbmdBcHBlbmRPcGNvZGUiLCJ0ZXh0Iiwib3BlblByaW1pdGl2ZUVsZW1lbnQiLCJ0YWciLCJvcGVuRWxlbWVudFdpdGhPcGVyYXRpb25zIiwib3BlbkR5bmFtaWNFbGVtZW50IiwiZmx1c2hFbGVtZW50IiwiY2xvc2VFbGVtZW50Iiwic3RhdGljQXR0ciIsIl9uYW1lIiwiX25hbWVzcGFjZSIsIl92YWx1ZSIsIm5hbWVzcGFjZSIsInZhbHVlIiwiZHluYW1pY0F0dHJOUyIsInRydXN0aW5nIiwiZHluYW1pY0F0dHIiLCJjb21tZW50IiwiX2NvbW1lbnQiLCJtb2RpZmllciIsIl9kZWZpbml0aW9uIiwicHV0SXRlcmF0b3IiLCJlbnRlckxpc3QiLCJleGl0TGlzdCIsIml0ZXJhdGUiLCJicmVha3MiLCJzZXRWYXJpYWJsZSIsInN5bWJvbCIsImdldFZhcmlhYmxlIiwiZ2V0UHJvcGVydHkiLCJrZXkiLCJnZXRCbG9jayIsImhhc0Jsb2NrIiwiaGFzQmxvY2tQYXJhbXMiLCJjb25jYXQiLCJzaXplIiwiZnVuY3Rpb24iLCJmIiwiZnVuYyIsImxvYWQiLCJyZWdpc3RlciIsImZldGNoIiwiZHVwIiwic3AiLCJvZmZzZXQiLCJwdXNoUmVtb3RlRWxlbWVudCIsInBvcFJlbW90ZUVsZW1lbnQiLCJwdXNoUm9vdFNjb3BlIiwiYmluZENhbGxlclNjb3BlIiwicHVzaENoaWxkU2NvcGUiLCJwb3BTY29wZSIsInJldHVyblRvIiwicmEiLCJwdXNoRHluYW1pY1Njb3BlIiwicG9wRHluYW1pY1Njb3BlIiwicHVzaEltbWVkaWF0ZSIsInByaW1pdGl2ZSIsIl9wcmltaXRpdmUiLCJFcnJvciIsImhlbHBlciIsInB1c2hCbG9jayIsImJsb2NrIiwiYmluZER5bmFtaWNTY29wZSIsIl9uYW1lcyIsIm5hbWVzIiwiZW50ZXIiLCJhcmdzIiwiZXhpdCIsInJldHVybiIsInB1c2hGcmFtZSIsInBvcEZyYW1lIiwiY29tcGlsZUR5bmFtaWNCbG9jayIsImludm9rZUR5bmFtaWMiLCJpbnZva2VyIiwiaW52b2tlU3RhdGljIiwiY2FsbGVyQ291bnQiLCJwYXJhbWV0ZXJzIiwic3ltYm9sVGFibGUiLCJjYWxsZWVDb3VudCIsImxlbmd0aCIsIk1hdGgiLCJtaW4iLCJpIiwiZnAiLCJfYmxvY2siLCJ0ZXN0IiwidGVzdEZ1bmMiLCJfZnVuYyIsIkNvbnN0VGVzdCIsIlNpbXBsZVRlc3QiLCJFbnZpcm9ubWVudFRlc3QiLCJqdW1wIiwianVtcElmIiwianVtcFVubGVzcyIsIl9zdHJpbmciLCJuIiwiaXNDb21waWxhYmxlRXhwcmVzc2lvbiIsImV4cHIiLCJjb21waWxlIiwiT3Bjb2RlQnVpbGRlciIsImNvbXBvbmVudCIsImNvbXBpbGVBcmdzIiwicGFyYW1zIiwiaGFzaCIsInBvc2l0aW9uYWwiLCJ2YWwiLCJndWFyZGVkQXBwZW5kIiwiZXhwcmVzc2lvbiIsInJlZmVyZW5jZSIsImNyZWF0ZSIsImludm9rZUNvbXBvbmVudCIsImF0dHJzIiwiaW52ZXJzZSIsInMwIiwic2NhbiIsInRlbXBsYXRlIiwic3RhdGVtZW50cyJdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUFBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOzs7O0FBQ0E7O0FBQ0E7O0lBQVlBLE87O0FBQ1o7O0lBQVlDLEU7Ozs7OztBQUNaLE1BQU1DLE1BQU4sQ0FBYTtBQUNUQyxrQkFBYztBQUNWLGFBQUtDLE1BQUwsR0FBYyxpQkFBZDtBQUNBLGFBQUtDLE9BQUwsR0FBZSxFQUFmO0FBQ0g7QUFDREMsVUFBTUMsSUFBTixFQUFZQyxLQUFaLEVBQW1CO0FBQ2YsYUFBS0osTUFBTCxDQUFZRyxJQUFaLElBQW9CQyxLQUFwQjtBQUNIO0FBQ0RDLFdBQU9DLEVBQVAsRUFBV0MsTUFBWCxFQUFtQkYsTUFBbkIsRUFBMkI7QUFDdkIsYUFBS0osT0FBTCxDQUFhTyxJQUFiLENBQWtCLEVBQUVGLEVBQUYsRUFBTUMsTUFBTixFQUFjRixNQUFkLEVBQWxCO0FBQ0g7QUFD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QUFLakksZ0JBQUwsQ0FBc0Isa0JBQVNpSSxFQUEvQjtBQUNBLGFBQUtoSSxrQkFBTCxDQUF3QixrQkFBU2dJLEVBQWpDO0FBQ0EsYUFBS3pDLGFBQUwsQ0FBbUIsbUNBQXdCdUMsU0FBU0EsTUFBTUcsSUFBTixFQUFqQyxDQUFuQjtBQUNBLGFBQUs1QyxRQUFMO0FBQ0EsYUFBS3BCLFFBQUw7QUFDQSxhQUFLSSxlQUFMO0FBQ0EsYUFBS3hFLDBCQUFMO0FBQ0EsYUFBS3lELElBQUwsQ0FBVSxrQkFBUzBFLEVBQW5CO0FBQ0g7QUFDREUsYUFBU3RELEtBQVQsRUFBZ0I7QUFDWixZQUFJLENBQUNBLEtBQUwsRUFBWSxPQUFPLElBQVA7QUFDWixlQUFPLHVCQUFtQixLQUFLaEgsSUFBeEIsRUFBOEJnSCxNQUFNdUQsVUFBcEMsRUFBZ0R2RCxNQUFNZSxVQUF0RCxDQUFQO0FBQ0g7QUFuRnlEO2tCQUF6Q3VCLGEiLCJmaWxlIjoibGliL2NvbXBpbGVkL29wY29kZXMvYnVpbGRlci5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGRpY3QsIEVNUFRZX0FSUkFZLCBleHBlY3QsIGZpbGxOdWxscywgU3RhY2sgfSBmcm9tICdAZ2xpbW1lci91dGlsJztcbmltcG9ydCB7IENvbXBvbmVudEJ1aWxkZXIgfSBmcm9tICcuLi8uLi9jb21waWxlcic7XG5pbXBvcnQgeyBSZWdpc3RlciB9IGZyb20gJy4uLy4uL29wY29kZXMnO1xuaW1wb3J0IHsgZXhwciwgSW52b2tlRHluYW1pY0xheW91dCB9IGZyb20gJy4uLy4uL3N5bnRheC9mdW5jdGlvbnMnO1xuaW1wb3J0IFJhd0lubGluZUJsb2NrIGZyb20gJy4uLy4uL3N5bnRheC9yYXctYmxvY2snO1xuaW1wb3J0IHsgSXNDb21wb25lbnREZWZpbml0aW9uUmVmZXJlbmNlIH0gZnJvbSAnLi4vb3Bjb2Rlcy9jb250ZW50JztcbmltcG9ydCAqIGFzIGNvbnRlbnQgZnJvbSAnLi9jb250ZW50JztcbmltcG9ydCAqIGFzIHZtIGZyb20gJy4vdm0nO1xuY2xhc3MgTGFiZWxzIHtcbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgdGhpcy5sYWJlbHMgPSBkaWN0KCk7XG4gICAgICAgIHRoaXMudGFyZ2V0cyA9IFtdO1xuICAgIH1cbiAgICBsYWJlbChuYW1lLCBpbmRleCkge1xuICAgICAgICB0aGlzLmxhYmVsc1tuYW1lXSA9IGluZGV4O1xuICAgIH1cbiAgICB0YXJnZXQoYXQsIFRhcmdldCwgdGFyZ2V0KSB7XG4gICAgICAgIHRoaXMudGFyZ2V0cy5wdXNoKHsgYXQsIFRhcmdldCwgdGFyZ2V0IH0pO1xuICAgIH1cbiAgICBwYXRjaChvcGNvZGVzKSB7XG4gICAgICAgIGZvciAobGV0IHsgYXQsIFRhcmdldCwgdGFyZ2V0IH0gb2YgdGhpcy50YXJnZXRzKSB7XG4gICAgICAgICAgICBvcGNvZGVzLnNldChhdCwgVGFyZ2V0LCB0aGlzLmxhYmVsc1t0YXJnZXRdKTtcbiAgICAgICAgfVxuICAgIH1cbn1cbmV4cG9ydCBjbGFzcyBCYXNpY09wY29kZUJ1aWxkZXIge1xuICAgIGNvbnN0cnVjdG9yKGVudiwgbWV0YSwgcHJvZ3JhbSkge1xuICAgICAgICB0aGlzLmVudiA9IGVudjtcbiAgICAgICAgdGhpcy5tZXRhID0gbWV0YTtcbiAgICAgICAgdGhpcy5wcm9ncmFtID0gcHJvZ3JhbTtcbiAgICAgICAgdGhpcy5sYWJlbHNTdGFjayA9IG5ldyBTdGFjaygpO1xuICAgICAgICB0aGlzLmNvbnN0YW50cyA9IGVudi5jb25zdGFudHM7XG4gICAgICAgIHRoaXMuc3RhcnQgPSBwcm9ncmFtLm5leHQ7XG4gICAgfVxuICAgIGdldCBwb3MoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnByb2dyYW0uY3VycmVudDtcbiAgICB9XG4gICAgZ2V0IG5leHRQb3MoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnByb2dyYW0ubmV4dDtcbiAgICB9XG4gICAgdXB2YXJzKGNvdW50KSB7XG4gICAgICAgIHJldHVybiBmaWxsTnVsbHMoY291bnQpO1xuICAgIH1cbiAgICByZXNlcnZlKG5hbWUpIHtcbiAgICAgICAgdGhpcy5wdXNoKG5hbWUsIDAsIDAsIDApO1xuICAgIH1cbiAgICBwdXNoKG5hbWUsIG9wMSA9IDAsIG9wMiA9IDAsIG9wMyA9IDApIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucHJvZ3JhbS5wdXNoKG5hbWUsIG9wMSwgb3AyLCBvcDMpO1xuICAgIH1cbiAgICBmaW5hbGl6ZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucHVzaCgyMiAvKiBSZXR1cm4gKi8pO1xuICAgIH1cbiAgICAvLyBhcmdzXG4gICAgcHVzaEFyZ3Moc3ludGhldGljKSB7XG4gICAgICAgIHRoaXMucHVzaCg1NyAvKiBQdXNoQXJncyAqLywgc3ludGhldGljID09PSB0cnVlID8gMSA6IDApO1xuICAgIH1cbiAgICAvLyBoZWxwZXJzXG4gICAgZ2V0IGxhYmVscygpIHtcbiAgICAgICAgcmV0dXJuIGV4cGVjdCh0aGlzLmxhYmVsc1N0YWNrLmN1cnJlbnQsICdidWc6IG5vdCBpbiBhIGxhYmVsIHN0YWNrJyk7XG4gICAgfVxuICAgIHN0YXJ0TGFiZWxzKCkge1xuICAgICAgICB0aGlzLmxhYmVsc1N0YWNrLnB1c2gobmV3IExhYmVscygpKTtcbiAgICB9XG4gICAgc3RvcExhYmVscygpIHtcbiAgICAgICAgbGV0IGxhYmVsID0gZXhwZWN0KHRoaXMubGFiZWxzU3RhY2sucG9wKCksICd1bmJhbGFuY2VkIHB1c2ggYW5kIHBvcCBsYWJlbHMnKTtcbiAgICAgICAgbGFiZWwucGF0Y2godGhpcy5wcm9ncmFtKTtcbiAgICB9XG4gICAgLy8gY29tcG9uZW50c1xuICAgIHB1c2hDb21wb25lbnRNYW5hZ2VyKGRlZmluaXRpb24pIHtcbiAgICAgICAgdGhpcy5wdXNoKDU1IC8qIFB1c2hDb21wb25lbnRNYW5hZ2VyICovLCB0aGlzLm90aGVyKGRlZmluaXRpb24pKTtcbiAgICB9XG4gICAgcHVzaER5bmFtaWNDb21wb25lbnRNYW5hZ2VyKCkge1xuICAgICAgICB0aGlzLnB1c2goNTYgLyogUHVzaER5bmFtaWNDb21wb25lbnRNYW5hZ2VyICovKTtcbiAgICB9XG4gICAgcHJlcGFyZUFyZ3Moc3RhdGUpIHtcbiAgICAgICAgdGhpcy5wdXNoKDU4IC8qIFByZXBhcmVBcmdzICovLCBzdGF0ZSk7XG4gICAgfVxuICAgIGNyZWF0ZUNvbXBvbmVudChzdGF0ZSwgaGFzRGVmYXVsdCwgaGFzSW52ZXJzZSkge1xuICAgICAgICBsZXQgZmxhZyA9IChoYXNEZWZhdWx0ID09PSB0cnVlID8gMSA6IDApIHwgKGhhc0ludmVyc2UgPT09IHRydWUgPyAxIDogMCkgPDwgMTtcbiAgICAgICAgdGhpcy5wdXNoKDU5IC8qIENyZWF0ZUNvbXBvbmVudCAqLywgZmxhZywgc3RhdGUpO1xuICAgIH1cbiAgICByZWdpc3RlckNvbXBvbmVudERlc3RydWN0b3Ioc3RhdGUpIHtcbiAgICAgICAgdGhpcy5wdXNoKDYwIC8qIFJlZ2lzdGVyQ29tcG9uZW50RGVzdHJ1Y3RvciAqLywgc3RhdGUpO1xuICAgIH1cbiAgICBiZWdpbkNvbXBvbmVudFRyYW5zYWN0aW9uKCkge1xuICAgICAgICB0aGlzLnB1c2goNjQgLyogQmVnaW5Db21wb25lbnRUcmFuc2FjdGlvbiAqLyk7XG4gICAgfVxuICAgIGNvbW1pdENvbXBvbmVudFRyYW5zYWN0aW9uKCkge1xuICAgICAgICB0aGlzLnB1c2goNjUgLyogQ29tbWl0Q29tcG9uZW50VHJhbnNhY3Rpb24gKi8pO1xuICAgIH1cbiAgICBwdXNoQ29tcG9uZW50T3BlcmF0aW9ucygpIHtcbiAgICAgICAgdGhpcy5wdXNoKDYxIC8qIFB1c2hDb21wb25lbnRPcGVyYXRpb25zICovKTtcbiAgICB9XG4gICAgZ2V0Q29tcG9uZW50U2VsZihzdGF0ZSkge1xuICAgICAgICB0aGlzLnB1c2goNjIgLyogR2V0Q29tcG9uZW50U2VsZiAqLywgc3RhdGUpO1xuICAgIH1cbiAgICBnZXRDb21wb25lbnRMYXlvdXQoc3RhdGUpIHtcbiAgICAgICAgdGhpcy5wdXNoKDYzIC8qIEdldENvbXBvbmVudExheW91dCAqLywgc3RhdGUpO1xuICAgIH1cbiAgICBkaWRDcmVhdGVFbGVtZW50KHN0YXRlKSB7XG4gICAgICAgIHRoaXMucHVzaCg2NiAvKiBEaWRDcmVhdGVFbGVtZW50ICovLCBzdGF0ZSk7XG4gICAgfVxuICAgIGRpZFJlbmRlckxheW91dChzdGF0ZSkge1xuICAgICAgICB0aGlzLnB1c2goNjcgLyogRGlkUmVuZGVyTGF5b3V0ICovLCBzdGF0ZSk7XG4gICAgfVxuICAgIC8vIHBhcnRpYWxcbiAgICBnZXRQYXJ0aWFsVGVtcGxhdGUoKSB7XG4gICAgICAgIHRoaXMucHVzaCg2OCAvKiBHZXRQYXJ0aWFsVGVtcGxhdGUgKi8pO1xuICAgIH1cbiAgICByZXNvbHZlTWF5YmVMb2NhbChuYW1lKSB7XG4gICAgICAgIHRoaXMucHVzaCg2OSAvKiBSZXNvbHZlTWF5YmVMb2NhbCAqLywgdGhpcy5zdHJpbmcobmFtZSkpO1xuICAgIH1cbiAgICAvLyBkZWJ1Z2dlclxuICAgIGRlYnVnZ2VyKHN5bWJvbHMsIGV2YWxJbmZvKSB7XG4gICAgICAgIHRoaXMucHVzaCg3MCAvKiBEZWJ1Z2dlciAqLywgdGhpcy5jb25zdGFudHMub3RoZXIoc3ltYm9scyksIHRoaXMuY29uc3RhbnRzLmFycmF5KGV2YWxJbmZvKSk7XG4gICAgfVxuICAgIC8vIGNvbnRlbnRcbiAgICBkeW5hbWljQ29udGVudChPcGNvZGUpIHtcbiAgICAgICAgdGhpcy5wdXNoKDI1IC8qIER5bmFtaWNDb250ZW50ICovLCB0aGlzLm90aGVyKE9wY29kZSkpO1xuICAgIH1cbiAgICBjYXV0aW91c0FwcGVuZCgpIHtcbiAgICAgICAgdGhpcy5keW5hbWljQ29udGVudChuZXcgY29udGVudC5PcHRpbWl6ZWRDYXV0aW91c0FwcGVuZE9wY29kZSgpKTtcbiAgICB9XG4gICAgdHJ1c3RpbmdBcHBlbmQoKSB7XG4gICAgICAgIHRoaXMuZHluYW1pY0NvbnRlbnQobmV3IGNvbnRlbnQuT3B0aW1pemVkVHJ1c3RpbmdBcHBlbmRPcGNvZGUoKSk7XG4gICAgfVxuICAgIC8vIGRvbVxuICAgIHRleHQodGV4dCkge1xuICAgICAgICB0aGlzLnB1c2goMjMgLyogVGV4dCAqLywgdGhpcy5jb25zdGFudHMuc3RyaW5nKHRleHQpKTtcbiAgICB9XG4gICAgb3BlblByaW1pdGl2ZUVsZW1lbnQodGFnKSB7XG4gICAgICAgIHRoaXMucHVzaCgyNiAvKiBPcGVuRWxlbWVudCAqLywgdGhpcy5jb25zdGFudHMuc3RyaW5nKHRhZykpO1xuICAgIH1cbiAgICBvcGVuRWxlbWVudFdpdGhPcGVyYXRpb25zKHRhZykge1xuICAgICAgICB0aGlzLnB1c2goMjcgLyogT3BlbkVsZW1lbnRXaXRoT3BlcmF0aW9ucyAqLywgdGhpcy5jb25zdGFudHMuc3RyaW5nKHRhZykpO1xuICAgIH1cbiAgICBvcGVuRHluYW1pY0VsZW1lbnQoKSB7XG4gICAgICAgIHRoaXMucHVzaCgyOCAvKiBPcGVuRHluYW1pY0VsZW1lbnQgKi8pO1xuICAgIH1cbiAgICBmbHVzaEVsZW1lbnQoKSB7XG4gICAgICAgIHRoaXMucHVzaCgzMiAvKiBGbHVzaEVsZW1lbnQgKi8pO1xuICAgIH1cbiAgICBjbG9zZUVsZW1lbnQoKSB7XG4gICAgICAgIHRoaXMucHVzaCgzMyAvKiBDbG9zZUVsZW1lbnQgKi8pO1xuICAgIH1cbiAgICBzdGF0aWNBdHRyKF9uYW1lLCBfbmFtZXNwYWNlLCBfdmFsdWUpIHtcbiAgICAgICAgbGV0IG5hbWUgPSB0aGlzLmNvbnN0YW50cy5zdHJpbmcoX25hbWUpO1xuICAgICAgICBsZXQgbmFtZXNwYWNlID0gX25hbWVzcGFjZSA/IHRoaXMuY29uc3RhbnRzLnN0cmluZyhfbmFtZXNwYWNlKSA6IDA7XG4gICAgICAgIGxldCB2YWx1ZSA9IHRoaXMuY29uc3RhbnRzLnN0cmluZyhfdmFsdWUpO1xuICAgICAgICB0aGlzLnB1c2goMjkgLyogU3RhdGljQXR0ciAqLywgbmFtZSwgdmFsdWUsIG5hbWVzcGFjZSk7XG4gICAgfVxuICAgIGR5bmFtaWNBdHRyTlMoX25hbWUsIF9uYW1lc3BhY2UsIHRydXN0aW5nKSB7XG4gICAgICAgIGxldCBuYW1lID0gdGhpcy5jb25zdGFudHMuc3RyaW5nKF9uYW1lKTtcbiAgICAgICAgbGV0IG5hbWVzcGFjZSA9IHRoaXMuY29uc3RhbnRzLnN0cmluZyhfbmFtZXNwYWNlKTtcbiAgICAgICAgdGhpcy5wdXNoKDMxIC8qIER5bmFtaWNBdHRyTlMgKi8sIG5hbWUsIG5hbWVzcGFjZSwgdHJ1c3RpbmcgPT09IHRydWUgPyAxIDogMCk7XG4gICAgfVxuICAgIGR5bmFtaWNBdHRyKF9uYW1lLCB0cnVzdGluZykge1xuICAgICAgICBsZXQgbmFtZSA9IHRoaXMuY29uc3RhbnRzLnN0cmluZyhfbmFtZSk7XG4gICAgICAgIHRoaXMucHVzaCgzMCAvKiBEeW5hbWljQXR0ciAqLywgbmFtZSwgdHJ1c3RpbmcgPT09IHRydWUgPyAxIDogMCk7XG4gICAgfVxuICAgIGNvbW1lbnQoX2NvbW1lbnQpIHtcbiAgICAgICAgbGV0IGNvbW1lbnQgPSB0aGlzLmNvbnN0YW50cy5zdHJpbmcoX2NvbW1lbnQpO1xuICAgICAgICB0aGlzLnB1c2goMjQgLyogQ29tbWVudCAqLywgY29tbWVudCk7XG4gICAgfVxuICAgIG1vZGlmaWVyKF9kZWZpbml0aW9uKSB7XG4gICAgICAgIHRoaXMucHVzaCgzNCAvKiBNb2RpZmllciAqLywgdGhpcy5vdGhlcihfZGVmaW5pdGlvbikpO1xuICAgIH1cbiAgICAvLyBsaXN0c1xuICAgIHB1dEl0ZXJhdG9yKCkge1xuICAgICAgICB0aGlzLnB1c2goNTMgLyogUHV0SXRlcmF0b3IgKi8pO1xuICAgIH1cbiAgICBlbnRlckxpc3Qoc3RhcnQpIHtcbiAgICAgICAgdGhpcy5yZXNlcnZlKDUxIC8qIEVudGVyTGlzdCAqLyk7XG4gICAgICAgIHRoaXMubGFiZWxzLnRhcmdldCh0aGlzLnBvcywgNTEgLyogRW50ZXJMaXN0ICovLCBzdGFydCk7XG4gICAgfVxuICAgIGV4aXRMaXN0KCkge1xuICAgICAgICB0aGlzLnB1c2goNTIgLyogRXhpdExpc3QgKi8pO1xuICAgIH1cbiAgICBpdGVyYXRlKGJyZWFrcykge1xuICAgICAgICB0aGlzLnJlc2VydmUoNTQgLyogSXRlcmF0ZSAqLyk7XG4gICAgICAgIHRoaXMubGFiZWxzLnRhcmdldCh0aGlzLnBvcywgNTQgLyogSXRlcmF0ZSAqLywgYnJlYWtzKTtcbiAgICB9XG4gICAgLy8gZXhwcmVzc2lvbnNcbiAgICBzZXRWYXJpYWJsZShzeW1ib2wpIHtcbiAgICAgICAgdGhpcy5wdXNoKDQgLyogU2V0VmFyaWFibGUgKi8sIHN5bWJvbCk7XG4gICAgfVxuICAgIGdldFZhcmlhYmxlKHN5bWJvbCkge1xuICAgICAgICB0aGlzLnB1c2goNSAvKiBHZXRWYXJpYWJsZSAqLywgc3ltYm9sKTtcbiAgICB9XG4gICAgZ2V0UHJvcGVydHkoa2V5KSB7XG4gICAgICAgIHRoaXMucHVzaCg2IC8qIEdldFByb3BlcnR5ICovLCB0aGlzLnN0cmluZyhrZXkpKTtcbiAgICB9XG4gICAgZ2V0QmxvY2soc3ltYm9sKSB7XG4gICAgICAgIHRoaXMucHVzaCg4IC8qIEdldEJsb2NrICovLCBzeW1ib2wpO1xuICAgIH1cbiAgICBoYXNCbG9jayhzeW1ib2wpIHtcbiAgICAgICAgdGhpcy5wdXNoKDkgLyogSGFzQmxvY2sgKi8sIHN5bWJvbCk7XG4gICAgfVxuICAgIGhhc0Jsb2NrUGFyYW1zKHN5bWJvbCkge1xuICAgICAgICB0aGlzLnB1c2goMTAgLyogSGFzQmxvY2tQYXJhbXMgKi8sIHN5bWJvbCk7XG4gICAgfVxuICAgIGNvbmNhdChzaXplKSB7XG4gICAgICAgIHRoaXMucHVzaCgxMSAvKiBDb25jYXQgKi8sIHNpemUpO1xuICAgIH1cbiAgICBmdW5jdGlvbihmKSB7XG4gICAgICAgIHRoaXMucHVzaCgyIC8qIEZ1bmN0aW9uICovLCB0aGlzLmZ1bmMoZikpO1xuICAgIH1cbiAgICBsb2FkKHJlZ2lzdGVyKSB7XG4gICAgICAgIHRoaXMucHVzaCgxNyAvKiBMb2FkICovLCByZWdpc3Rlcik7XG4gICAgfVxuICAgIGZldGNoKHJlZ2lzdGVyKSB7XG4gICAgICAgIHRoaXMucHVzaCgxOCAvKiBGZXRjaCAqLywgcmVnaXN0ZXIpO1xuICAgIH1cbiAgICBkdXAocmVnaXN0ZXIgPSBSZWdpc3Rlci5zcCwgb2Zmc2V0ID0gMCkge1xuICAgICAgICByZXR1cm4gdGhpcy5wdXNoKDE1IC8qIER1cCAqLywgcmVnaXN0ZXIsIG9mZnNldCk7XG4gICAgfVxuICAgIHBvcChjb3VudCA9IDEpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucHVzaCgxNiAvKiBQb3AgKi8sIGNvdW50KTtcbiAgICB9XG4gICAgLy8gdm1cbiAgICBwdXNoUmVtb3RlRWxlbWVudCgpIHtcbiAgICAgICAgdGhpcy5wdXNoKDM1IC8qIFB1c2hSZW1vdGVFbGVtZW50ICovKTtcbiAgICB9XG4gICAgcG9wUmVtb3RlRWxlbWVudCgpIHtcbiAgICAgICAgdGhpcy5wdXNoKDM2IC8qIFBvcFJlbW90ZUVsZW1lbnQgKi8pO1xuICAgIH1cbiAgICBsYWJlbChuYW1lKSB7XG4gICAgICAgIHRoaXMubGFiZWxzLmxhYmVsKG5hbWUsIHRoaXMubmV4dFBvcyk7XG4gICAgfVxuICAgIHB1c2hSb290U2NvcGUoc3ltYm9scywgYmluZENhbGxlclNjb3BlKSB7XG4gICAgICAgIHRoaXMucHVzaCgxOSAvKiBSb290U2NvcGUgKi8sIHN5bWJvbHMsIGJpbmRDYWxsZXJTY29wZSA/IDEgOiAwKTtcbiAgICB9XG4gICAgcHVzaENoaWxkU2NvcGUoKSB7XG4gICAgICAgIHRoaXMucHVzaCgyMCAvKiBDaGlsZFNjb3BlICovKTtcbiAgICB9XG4gICAgcG9wU2NvcGUoKSB7XG4gICAgICAgIHRoaXMucHVzaCgyMSAvKiBQb3BTY29wZSAqLyk7XG4gICAgfVxuICAgIHJldHVyblRvKGxhYmVsKSB7XG4gICAgICAgIHRoaXMucmVzZXJ2ZSgxMiAvKiBJbW1lZGlhdGUgKi8pO1xuICAgICAgICB0aGlzLmxhYmVscy50YXJnZXQodGhpcy5wb3MsIDEyIC8qIEltbWVkaWF0ZSAqLywgbGFiZWwpO1xuICAgICAgICB0aGlzLmxvYWQoUmVnaXN0ZXIucmEpO1xuICAgIH1cbiAgICBwdXNoRHluYW1pY1Njb3BlKCkge1xuICAgICAgICB0aGlzLnB1c2goMzggLyogUHVzaER5bmFtaWNTY29wZSAqLyk7XG4gICAgfVxuICAgIHBvcER5bmFtaWNTY29wZSgpIHtcbiAgICAgICAgdGhpcy5wdXNoKDM5IC8qIFBvcER5bmFtaWNTY29wZSAqLyk7XG4gICAgfVxuICAgIHB1c2hJbW1lZGlhdGUodmFsdWUpIHtcbiAgICAgICAgdGhpcy5wdXNoKDEzIC8qIENvbnN0YW50ICovLCB0aGlzLm90aGVyKHZhbHVlKSk7XG4gICAgfVxuICAgIHByaW1pdGl2ZShfcHJpbWl0aXZlKSB7XG4gICAgICAgIGxldCBmbGFnID0gMDtcbiAgICAgICAgbGV0IHByaW1pdGl2ZTtcbiAgICAgICAgc3dpdGNoICh0eXBlb2YgX3ByaW1pdGl2ZSkge1xuICAgICAgICAgICAgY2FzZSAnbnVtYmVyJzpcbiAgICAgICAgICAgICAgICBwcmltaXRpdmUgPSBfcHJpbWl0aXZlO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnc3RyaW5nJzpcbiAgICAgICAgICAgICAgICBwcmltaXRpdmUgPSB0aGlzLnN0cmluZyhfcHJpbWl0aXZlKTtcbiAgICAgICAgICAgICAgICBmbGFnID0gMTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ2Jvb2xlYW4nOlxuICAgICAgICAgICAgICAgIHByaW1pdGl2ZSA9IF9wcmltaXRpdmUgfCAwO1xuICAgICAgICAgICAgICAgIGZsYWcgPSAyO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnb2JqZWN0JzpcbiAgICAgICAgICAgICAgICAvLyBhc3N1bWUgbnVsbFxuICAgICAgICAgICAgICAgIHByaW1pdGl2ZSA9IDI7XG4gICAgICAgICAgICAgICAgZmxhZyA9IDI7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICd1bmRlZmluZWQnOlxuICAgICAgICAgICAgICAgIHByaW1pdGl2ZSA9IDM7XG4gICAgICAgICAgICAgICAgZmxhZyA9IDI7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignSW52YWxpZCBwcmltaXRpdmUgcGFzc2VkIHRvIHB1c2hQcmltaXRpdmUnKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnB1c2goMTQgLyogUHJpbWl0aXZlUmVmZXJlbmNlICovLCBmbGFnIDw8IDMwIHwgcHJpbWl0aXZlKTtcbiAgICB9XG4gICAgaGVscGVyKGZ1bmMpIHtcbiAgICAgICAgdGhpcy5wdXNoKDEgLyogSGVscGVyICovLCB0aGlzLmZ1bmMoZnVuYykpO1xuICAgIH1cbiAgICBwdXNoQmxvY2soYmxvY2spIHtcbiAgICAgICAgdGhpcy5wdXNoKDcgLyogUHVzaEJsb2NrICovLCB0aGlzLmJsb2NrKGJsb2NrKSk7XG4gICAgfVxuICAgIGJpbmREeW5hbWljU2NvcGUoX25hbWVzKSB7XG4gICAgICAgIHRoaXMucHVzaCgzNyAvKiBCaW5kRHluYW1pY1Njb3BlICovLCB0aGlzLm5hbWVzKF9uYW1lcykpO1xuICAgIH1cbiAgICBlbnRlcihhcmdzKSB7XG4gICAgICAgIHRoaXMucHVzaCg0OCAvKiBFbnRlciAqLywgYXJncyk7XG4gICAgfVxuICAgIGV4aXQoKSB7XG4gICAgICAgIHRoaXMucHVzaCg0OSAvKiBFeGl0ICovKTtcbiAgICB9XG4gICAgcmV0dXJuKCkge1xuICAgICAgICB0aGlzLnB1c2goMjIgLyogUmV0dXJuICovKTtcbiAgICB9XG4gICAgcHVzaEZyYW1lKCkge1xuICAgICAgICB0aGlzLnB1c2goNDYgLyogUHVzaEZyYW1lICovKTtcbiAgICB9XG4gICAgcG9wRnJhbWUoKSB7XG4gICAgICAgIHRoaXMucHVzaCg0NyAvKiBQb3BGcmFtZSAqLyk7XG4gICAgfVxuICAgIGNvbXBpbGVEeW5hbWljQmxvY2soKSB7XG4gICAgICAgIHRoaXMucHVzaCg0MCAvKiBDb21waWxlRHluYW1pY0Jsb2NrICovKTtcbiAgICB9XG4gICAgaW52b2tlRHluYW1pYyhpbnZva2VyKSB7XG4gICAgICAgIHRoaXMucHVzaCg0MiAvKiBJbnZva2VEeW5hbWljICovLCB0aGlzLm90aGVyKGludm9rZXIpKTtcbiAgICB9XG4gICAgaW52b2tlU3RhdGljKGJsb2NrLCBjYWxsZXJDb3VudCA9IDApIHtcbiAgICAgICAgbGV0IHsgcGFyYW1ldGVycyB9ID0gYmxvY2suc3ltYm9sVGFibGU7XG4gICAgICAgIGxldCBjYWxsZWVDb3VudCA9IHBhcmFtZXRlcnMubGVuZ3RoO1xuICAgICAgICBsZXQgY291bnQgPSBNYXRoLm1pbihjYWxsZXJDb3VudCwgY2FsbGVlQ291bnQpO1xuICAgICAgICB0aGlzLnB1c2hGcmFtZSgpO1xuICAgICAgICBpZiAoY291bnQpIHtcbiAgICAgICAgICAgIHRoaXMucHVzaENoaWxkU2NvcGUoKTtcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgY291bnQ7IGkrKykge1xuICAgICAgICAgICAgICAgIHRoaXMuZHVwKFJlZ2lzdGVyLmZwLCBjYWxsZXJDb3VudCAtIGkpO1xuICAgICAgICAgICAgICAgIHRoaXMuc2V0VmFyaWFibGUocGFyYW1ldGVyc1tpXSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgbGV0IF9ibG9jayA9IHRoaXMuY29uc3RhbnRzLmJsb2NrKGJsb2NrKTtcbiAgICAgICAgdGhpcy5wdXNoKDQxIC8qIEludm9rZVN0YXRpYyAqLywgX2Jsb2NrKTtcbiAgICAgICAgaWYgKGNvdW50KSB7XG4gICAgICAgICAgICB0aGlzLnBvcFNjb3BlKCk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5wb3BGcmFtZSgpO1xuICAgIH1cbiAgICB0ZXN0KHRlc3RGdW5jKSB7XG4gICAgICAgIGxldCBfZnVuYztcbiAgICAgICAgaWYgKHRlc3RGdW5jID09PSAnY29uc3QnKSB7XG4gICAgICAgICAgICBfZnVuYyA9IHZtLkNvbnN0VGVzdDtcbiAgICAgICAgfSBlbHNlIGlmICh0ZXN0RnVuYyA9PT0gJ3NpbXBsZScpIHtcbiAgICAgICAgICAgIF9mdW5jID0gdm0uU2ltcGxlVGVzdDtcbiAgICAgICAgfSBlbHNlIGlmICh0ZXN0RnVuYyA9PT0gJ2Vudmlyb25tZW50Jykge1xuICAgICAgICAgICAgX2Z1bmMgPSB2bS5FbnZpcm9ubWVudFRlc3Q7XG4gICAgICAgIH0gZWxzZSBpZiAodHlwZW9mIHRlc3RGdW5jID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICBfZnVuYyA9IHRlc3RGdW5jO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCd1bnJlYWNoYWJsZScpO1xuICAgICAgICB9XG4gICAgICAgIGxldCBmdW5jID0gdGhpcy5jb25zdGFudHMuZnVuY3Rpb24oX2Z1bmMpO1xuICAgICAgICB0aGlzLnB1c2goNTAgLyogVGVzdCAqLywgZnVuYyk7XG4gICAgfVxuICAgIGp1bXAodGFyZ2V0KSB7XG4gICAgICAgIHRoaXMucmVzZXJ2ZSg0MyAvKiBKdW1wICovKTtcbiAgICAgICAgdGhpcy5sYWJlbHMudGFyZ2V0KHRoaXMucG9zLCA0MyAvKiBKdW1wICovLCB0YXJnZXQpO1xuICAgIH1cbiAgICBqdW1wSWYodGFyZ2V0KSB7XG4gICAgICAgIHRoaXMucmVzZXJ2ZSg0NCAvKiBKdW1wSWYgKi8pO1xuICAgICAgICB0aGlzLmxhYmVscy50YXJnZXQodGhpcy5wb3MsIDQ0IC8qIEp1bXBJZiAqLywgdGFyZ2V0KTtcbiAgICB9XG4gICAganVtcFVubGVzcyh0YXJnZXQpIHtcbiAgICAgICAgdGhpcy5yZXNlcnZlKDQ1IC8qIEp1bXBVbmxlc3MgKi8pO1xuICAgICAgICB0aGlzLmxhYmVscy50YXJnZXQodGhpcy5wb3MsIDQ1IC8qIEp1bXBVbmxlc3MgKi8sIHRhcmdldCk7XG4gICAgfVxuICAgIHN0cmluZyhfc3RyaW5nKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmNvbnN0YW50cy5zdHJpbmcoX3N0cmluZyk7XG4gICAgfVxuICAgIG5hbWVzKF9uYW1lcykge1xuICAgICAgICBsZXQgbmFtZXMgPSBbXTtcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBfbmFtZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGxldCBuID0gX25hbWVzW2ldO1xuICAgICAgICAgICAgbmFtZXNbaV0gPSB0aGlzLmNvbnN0YW50cy5zdHJpbmcobik7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMuY29uc3RhbnRzLmFycmF5KG5hbWVzKTtcbiAgICB9XG4gICAgc3ltYm9scyhzeW1ib2xzKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmNvbnN0YW50cy5hcnJheShzeW1ib2xzKTtcbiAgICB9XG4gICAgb3RoZXIodmFsdWUpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY29uc3RhbnRzLm90aGVyKHZhbHVlKTtcbiAgICB9XG4gICAgYmxvY2soYmxvY2spIHtcbiAgICAgICAgcmV0dXJuIGJsb2NrID8gdGhpcy5jb25zdGFudHMuYmxvY2soYmxvY2spIDogMDtcbiAgICB9XG4gICAgZnVuYyhmdW5jKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmNvbnN0YW50cy5mdW5jdGlvbihmdW5jKTtcbiAgICB9XG59XG5mdW5jdGlvbiBpc0NvbXBpbGFibGVFeHByZXNzaW9uKGV4cHIpIHtcbiAgICByZXR1cm4gdHlwZW9mIGV4cHIgPT09ICdvYmplY3QnICYmIGV4cHIgIT09IG51bGwgJiYgdHlwZW9mIGV4cHIuY29tcGlsZSA9PT0gJ2Z1bmN0aW9uJztcbn1cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIE9wY29kZUJ1aWxkZXIgZXh0ZW5kcyBCYXNpY09wY29kZUJ1aWxkZXIge1xuICAgIGNvbnN0cnVjdG9yKGVudiwgbWV0YSwgcHJvZ3JhbSA9IGVudi5wcm9ncmFtKSB7XG4gICAgICAgIHN1cGVyKGVudiwgbWV0YSwgcHJvZ3JhbSk7XG4gICAgICAgIHRoaXMuY29tcG9uZW50ID0gbmV3IENvbXBvbmVudEJ1aWxkZXIodGhpcyk7XG4gICAgfVxuICAgIGNvbXBpbGVBcmdzKHBhcmFtcywgaGFzaCwgc3ludGhldGljKSB7XG4gICAgICAgIGxldCBwb3NpdGlvbmFsID0gMDtcbiAgICAgICAgaWYgKHBhcmFtcykge1xuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBwYXJhbXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgICAgICBleHByKHBhcmFtc1tpXSwgdGhpcyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBwb3NpdGlvbmFsID0gcGFyYW1zLmxlbmd0aDtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnB1c2hJbW1lZGlhdGUocG9zaXRpb25hbCk7XG4gICAgICAgIGxldCBuYW1lcyA9IEVNUFRZX0FSUkFZO1xuICAgICAgICBpZiAoaGFzaCkge1xuICAgICAgICAgICAgbmFtZXMgPSBoYXNoWzBdO1xuICAgICAgICAgICAgbGV0IHZhbCA9IGhhc2hbMV07XG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHZhbC5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgICAgIGV4cHIodmFsW2ldLCB0aGlzKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICB0aGlzLnB1c2hJbW1lZGlhdGUobmFtZXMpO1xuICAgICAgICB0aGlzLnB1c2hBcmdzKHN5bnRoZXRpYyk7XG4gICAgfVxuICAgIGNvbXBpbGUoZXhwcikge1xuICAgICAgICBpZiAoaXNDb21waWxhYmxlRXhwcmVzc2lvbihleHByKSkge1xuICAgICAgICAgICAgcmV0dXJuIGV4cHIuY29tcGlsZSh0aGlzKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBleHByO1xuICAgICAgICB9XG4gICAgfVxuICAgIGd1YXJkZWRBcHBlbmQoZXhwcmVzc2lvbiwgdHJ1c3RpbmcpIHtcbiAgICAgICAgdGhpcy5zdGFydExhYmVscygpO1xuICAgICAgICB0aGlzLnB1c2hGcmFtZSgpO1xuICAgICAgICB0aGlzLnJldHVyblRvKCdFTkQnKTtcbiAgICAgICAgZXhwcihleHByZXNzaW9uLCB0aGlzKTtcbiAgICAgICAgdGhpcy5kdXAoKTtcbiAgICAgICAgdGhpcy50ZXN0KHJlZmVyZW5jZSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gSXNDb21wb25lbnREZWZpbml0aW9uUmVmZXJlbmNlLmNyZWF0ZShyZWZlcmVuY2UpO1xuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5lbnRlcigyKTtcbiAgICAgICAgdGhpcy5qdW1wVW5sZXNzKCdFTFNFJyk7XG4gICAgICAgIHRoaXMucHVzaER5bmFtaWNDb21wb25lbnRNYW5hZ2VyKCk7XG4gICAgICAgIHRoaXMuaW52b2tlQ29tcG9uZW50KG51bGwsIG51bGwsIG51bGwsIG51bGwsIG51bGwpO1xuICAgICAgICB0aGlzLmV4aXQoKTtcbiAgICAgICAgdGhpcy5yZXR1cm4oKTtcbiAgICAgICAgdGhpcy5sYWJlbCgnRUxTRScpO1xuICAgICAgICBpZiAodHJ1c3RpbmcpIHtcbiAgICAgICAgICAgIHRoaXMudHJ1c3RpbmdBcHBlbmQoKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuY2F1dGlvdXNBcHBlbmQoKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmV4aXQoKTtcbiAgICAgICAgdGhpcy5yZXR1cm4oKTtcbiAgICAgICAgdGhpcy5sYWJlbCgnRU5EJyk7XG4gICAgICAgIHRoaXMucG9wRnJhbWUoKTtcbiAgICAgICAgdGhpcy5zdG9wTGFiZWxzKCk7XG4gICAgfVxuICAgIGludm9rZUNvbXBvbmVudChhdHRycywgcGFyYW1zLCBoYXNoLCBibG9jaywgaW52ZXJzZSA9IG51bGwpIHtcbiAgICAgICAgdGhpcy5mZXRjaChSZWdpc3Rlci5zMCk7XG4gICAgICAgIHRoaXMuZHVwKFJlZ2lzdGVyLnNwLCAxKTtcbiAgICAgICAgdGhpcy5sb2FkKFJlZ2lzdGVyLnMwKTtcbiAgICAgICAgdGhpcy5wdXNoQmxvY2soYmxvY2spO1xuICAgICAgICB0aGlzLnB1c2hCbG9jayhpbnZlcnNlKTtcbiAgICAgICAgdGhpcy5jb21waWxlQXJncyhwYXJhbXMsIGhhc2gsIGZhbHNlKTtcbiAgICAgICAgdGhpcy5wcmVwYXJlQXJncyhSZWdpc3Rlci5zMCk7XG4gICAgICAgIHRoaXMuYmVnaW5Db21wb25lbnRUcmFuc2FjdGlvbigpO1xuICAgICAgICB0aGlzLnB1c2hEeW5hbWljU2NvcGUoKTtcbiAgICAgICAgdGhpcy5jcmVhdGVDb21wb25lbnQoUmVnaXN0ZXIuczAsIGJsb2NrICE9PSBudWxsLCBpbnZlcnNlICE9PSBudWxsKTtcbiAgICAgICAgdGhpcy5yZWdpc3RlckNvbXBvbmVudERlc3RydWN0b3IoUmVnaXN0ZXIuczApO1xuICAgICAgICB0aGlzLmdldENvbXBvbmVudFNlbGYoUmVnaXN0ZXIuczApO1xuICAgICAgICB0aGlzLmdldENvbXBvbmVudExheW91dChSZWdpc3Rlci5zMCk7XG4gICAgICAgIHRoaXMuaW52b2tlRHluYW1pYyhuZXcgSW52b2tlRHluYW1pY0xheW91dChhdHRycyAmJiBhdHRycy5zY2FuKCkpKTtcbiAgICAgICAgdGhpcy5wb3BGcmFtZSgpO1xuICAgICAgICB0aGlzLnBvcFNjb3BlKCk7XG4gICAgICAgIHRoaXMucG9wRHluYW1pY1Njb3BlKCk7XG4gICAgICAgIHRoaXMuY29tbWl0Q29tcG9uZW50VHJhbnNhY3Rpb24oKTtcbiAgICAgICAgdGhpcy5sb2FkKFJlZ2lzdGVyLnMwKTtcbiAgICB9XG4gICAgdGVtcGxhdGUoYmxvY2spIHtcbiAgICAgICAgaWYgKCFibG9jaykgcmV0dXJuIG51bGw7XG4gICAgICAgIHJldHVybiBuZXcgUmF3SW5saW5lQmxvY2sodGhpcy5tZXRhLCBibG9jay5zdGF0ZW1lbnRzLCBibG9jay5wYXJhbWV0ZXJzKTtcbiAgICB9XG59Il19

@@ -25,4 +25,3 @@ 'use strict';

let stack = vm.stack;
stack.push(definition);
stack.push(definition.manager);
stack.push({ definition, manager: definition.manager, component: null });
});

@@ -34,4 +33,3 @@ _opcodes.APPEND_OPCODES.add(56 /* PushDynamicComponentManager */, vm => {

let definition = cache ? cache.peek() : reference.value();
stack.push(definition);
stack.push(definition.manager);
stack.push({ definition, manager: definition.manager, component: null });
if (cache) {

@@ -41,14 +39,8 @@ vm.updateWith(new _vm2.Assert(cache));

});
_opcodes.APPEND_OPCODES.add(57 /* InitializeComponentState */, vm => {
_opcodes.APPEND_OPCODES.add(57 /* PushArgs */, (vm, { op1: synthetic }) => {
let stack = vm.stack;
let manager = stack.pop();
let definition = stack.pop();
stack.push({ definition, manager, component: null });
});
_opcodes.APPEND_OPCODES.add(58 /* PushArgs */, (vm, { op1: synthetic }) => {
let stack = vm.stack;
_arguments2.default.setup(stack, !!synthetic);
stack.push(_arguments2.default);
});
_opcodes.APPEND_OPCODES.add(59 /* PrepareArgs */, (vm, { op1: _state }) => {
_opcodes.APPEND_OPCODES.add(58 /* PrepareArgs */, (vm, { op1: _state }) => {
let stack = vm.stack;

@@ -68,11 +60,15 @@ let { definition, manager } = vm.fetchValue(_state);

let namedCount = names.length;
let atNames = [];
for (let i = 0; i < namedCount; i++) {
stack.push(named[names[i]]);
let value = named[names[i]];
let atName = `@${names[i]}`;
stack.push(value);
atNames.push(atName);
}
stack.push(names);
args.setup(stack, true);
stack.push(atNames);
args.setup(stack, false);
}
stack.push(args);
});
_opcodes.APPEND_OPCODES.add(60 /* CreateComponent */, (vm, { op1: flags, op2: _state }) => {
_opcodes.APPEND_OPCODES.add(59 /* CreateComponent */, (vm, { op1: flags, op2: _state }) => {
let definition;

@@ -88,3 +84,3 @@ let manager;

});
_opcodes.APPEND_OPCODES.add(61 /* RegisterComponentDestructor */, (vm, { op1: _state }) => {
_opcodes.APPEND_OPCODES.add(60 /* RegisterComponentDestructor */, (vm, { op1: _state }) => {
let { manager, component } = vm.fetchValue(_state);

@@ -94,10 +90,10 @@ let destructor = manager.getDestructor(component);

});
_opcodes.APPEND_OPCODES.add(65 /* BeginComponentTransaction */, vm => {
_opcodes.APPEND_OPCODES.add(64 /* BeginComponentTransaction */, vm => {
vm.beginCacheGroup();
vm.elements().pushSimpleBlock();
});
_opcodes.APPEND_OPCODES.add(62 /* PushComponentOperations */, vm => {
_opcodes.APPEND_OPCODES.add(61 /* PushComponentOperations */, vm => {
vm.stack.push(new _dom.ComponentElementOperations(vm.env));
});
_opcodes.APPEND_OPCODES.add(67 /* DidCreateElement */, (vm, { op1: _state }) => {
_opcodes.APPEND_OPCODES.add(66 /* DidCreateElement */, (vm, { op1: _state }) => {
let { manager, component } = vm.fetchValue(_state);

@@ -107,11 +103,11 @@ let action = 'DidCreateElementOpcode#evaluate';

});
_opcodes.APPEND_OPCODES.add(63 /* GetComponentSelf */, (vm, { op1: _state }) => {
_opcodes.APPEND_OPCODES.add(62 /* GetComponentSelf */, (vm, { op1: _state }) => {
let state = vm.fetchValue(_state);
vm.stack.push(state.manager.getSelf(state.component));
});
_opcodes.APPEND_OPCODES.add(64 /* GetComponentLayout */, (vm, { op1: _state }) => {
_opcodes.APPEND_OPCODES.add(63 /* GetComponentLayout */, (vm, { op1: _state }) => {
let { manager, definition, component } = vm.fetchValue(_state);
vm.stack.push(manager.layoutFor(definition, component, vm.env));
});
_opcodes.APPEND_OPCODES.add(68 /* DidRenderLayout */, (vm, { op1: _state }) => {
_opcodes.APPEND_OPCODES.add(67 /* DidRenderLayout */, (vm, { op1: _state }) => {
let { manager, component } = vm.fetchValue(_state);

@@ -123,3 +119,3 @@ let bounds = vm.elements().popBlock();

});
_opcodes.APPEND_OPCODES.add(66 /* CommitComponentTransaction */, vm => vm.commitCacheGroup());
_opcodes.APPEND_OPCODES.add(65 /* CommitComponentTransaction */, vm => vm.commitCacheGroup());
class UpdateComponentOpcode extends _opcodes.UpdatingOpcode {

@@ -169,2 +165,2 @@ constructor(tag, name, component, manager, dynamicScope) {

exports.DidUpdateLayoutOpcode = DidUpdateLayoutOpcode;
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9jb21waWxlZC9vcGNvZGVzL2NvbXBvbmVudC5qcyJdLCJuYW1lcyI6WyJhZGQiLCJ2bSIsIm9wMSIsIl9kZWZpbml0aW9uIiwiZGVmaW5pdGlvbiIsImNvbnN0YW50cyIsImdldE90aGVyIiwic3RhY2siLCJwdXNoIiwibWFuYWdlciIsInJlZmVyZW5jZSIsInBvcCIsImNhY2hlIiwidW5kZWZpbmVkIiwicGVlayIsInZhbHVlIiwidXBkYXRlV2l0aCIsImNvbXBvbmVudCIsInN5bnRoZXRpYyIsInNldHVwIiwiX3N0YXRlIiwiZmV0Y2hWYWx1ZSIsImFyZ3MiLCJwcmVwYXJlZEFyZ3MiLCJwcmVwYXJlQXJncyIsImNsZWFyIiwicG9zaXRpb25hbCIsIm5hbWVkIiwicG9zaXRpb25hbENvdW50IiwibGVuZ3RoIiwiaSIsIm5hbWVzIiwiT2JqZWN0Iiwia2V5cyIsIm5hbWVkQ291bnQiLCJmbGFncyIsIm9wMiIsImR5bmFtaWNTY29wZSIsInN0YXRlIiwiaGFzRGVmYXVsdEJsb2NrIiwiY3JlYXRlIiwiZW52IiwiZ2V0U2VsZiIsIlVwZGF0ZUNvbXBvbmVudE9wY29kZSIsInRhZyIsIm5hbWUiLCJkZXN0cnVjdG9yIiwiZ2V0RGVzdHJ1Y3RvciIsIm5ld0Rlc3Ryb3lhYmxlIiwiYmVnaW5DYWNoZUdyb3VwIiwiZWxlbWVudHMiLCJwdXNoU2ltcGxlQmxvY2siLCJhY3Rpb24iLCJkaWRDcmVhdGVFbGVtZW50IiwiZXhwZWN0Q29uc3RydWN0aW5nIiwiZXhwZWN0T3BlcmF0aW9ucyIsImxheW91dEZvciIsImJvdW5kcyIsInBvcEJsb2NrIiwiZGlkUmVuZGVyTGF5b3V0IiwiZGlkQ3JlYXRlIiwiRGlkVXBkYXRlTGF5b3V0T3Bjb2RlIiwiY29tbWl0Q2FjaGVHcm91cCIsImNvbnN0cnVjdG9yIiwidHlwZSIsImNvbXBvbmVudFRhZyIsImdldFRhZyIsImV2YWx1YXRlIiwiX3ZtIiwidXBkYXRlIiwidG9KU09OIiwiSlNPTiIsInN0cmluZ2lmeSIsImd1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QUNBLGFBQUt3QyxNQUFMLEdBQWNBLE1BQWQ7QUFDQSxhQUFLTyxJQUFMLEdBQVksbUJBQVo7QUFDQSxhQUFLcEIsR0FBTDtBQUNIO0FBQ0R1QixhQUFTbEUsRUFBVCxFQUFhO0FBQ1QsWUFBSSxFQUFFUSxPQUFGLEVBQVdRLFNBQVgsRUFBc0J3QyxNQUF0QixLQUFpQyxJQUFyQztBQUNBaEQsZ0JBQVFrRSxlQUFSLENBQXdCMUQsU0FBeEIsRUFBbUN3QyxNQUFuQztBQUNBeEQsV0FBR3dDLEdBQUgsQ0FBT21DLFNBQVAsQ0FBaUIzRCxTQUFqQixFQUE0QlIsT0FBNUI7QUFDSDtBQWJxRDtRQUE3Q29ELHFCLEdBQUFBLHFCIiwiZmlsZSI6ImxpYi9jb21waWxlZC9vcGNvZGVzL2NvbXBvbmVudC5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGNvbWJpbmUsIENPTlNUQU5UX1RBRywgaXNDb25zdCwgUmVmZXJlbmNlQ2FjaGUgfSBmcm9tICdAZ2xpbW1lci9yZWZlcmVuY2UnO1xuaW1wb3J0IHsgQVBQRU5EX09QQ09ERVMsIFVwZGF0aW5nT3Bjb2RlIH0gZnJvbSAnLi4vLi4vb3Bjb2Rlcyc7XG5pbXBvcnQgQVJHUyBmcm9tICcuLi8uLi92bS9hcmd1bWVudHMnO1xuaW1wb3J0IHsgQ29tcG9uZW50RWxlbWVudE9wZXJhdGlvbnMgfSBmcm9tICcuL2RvbSc7XG5pbXBvcnQgeyBBc3NlcnQgfSBmcm9tICcuL3ZtJztcbkFQUEVORF9PUENPREVTLmFkZCg1NSAvKiBQdXNoQ29tcG9uZW50TWFuYWdlciAqLywgKHZtLCB7IG9wMTogX2RlZmluaXRpb24gfSkgPT4ge1xuICAgIGxldCBkZWZpbml0aW9uID0gdm0uY29uc3RhbnRzLmdldE90aGVyKF9kZWZpbml0aW9uKTtcbiAgICBsZXQgc3RhY2sgPSB2bS5zdGFjaztcbiAgICBzdGFjay5wdXNoKGRlZmluaXRpb24pO1xuICAgIHN0YWNrLnB1c2goZGVmaW5pdGlvbi5tYW5hZ2VyKTtcbn0pO1xuQVBQRU5EX09QQ09ERVMuYWRkKDU2IC8qIFB1c2hEeW5hbWljQ29tcG9uZW50TWFuYWdlciAqLywgdm0gPT4ge1xuICAgIGxldCBzdGFjayA9IHZtLnN0YWNrO1xuICAgIGxldCByZWZlcmVuY2UgPSBzdGFjay5wb3AoKTtcbiAgICBsZXQgY2FjaGUgPSBpc0NvbnN0KHJlZmVyZW5jZSkgPyB1bmRlZmluZWQgOiBuZXcgUmVmZXJlbmNlQ2FjaGUocmVmZXJlbmNlKTtcbiAgICBsZXQgZGVmaW5pdGlvbiA9IGNhY2hlID8gY2FjaGUucGVlaygpIDogcmVmZXJlbmNlLnZhbHVlKCk7XG4gICAgc3RhY2sucHVzaChkZWZpbml0aW9uKTtcbiAgICBzdGFjay5wdXNoKGRlZmluaXRpb24ubWFuYWdlcik7XG4gICAgaWYgKGNhY2hlKSB7XG4gICAgICAgIHZtLnVwZGF0ZVdpdGgobmV3IEFzc2VydChjYWNoZSkpO1xuICAgIH1cbn0pO1xuQVBQRU5EX09QQ09ERVMuYWRkKDU3IC8qIEluaXRpYWxpemVDb21wb25lbnRTdGF0ZSAqLywgdm0gPT4ge1xuICAgIGxldCBzdGFjayA9IHZtLnN0YWNrO1xuICAgIGxldCBtYW5hZ2VyID0gc3RhY2sucG9wKCk7XG4gICAgbGV0IGRlZmluaXRpb24gPSBzdGFjay5wb3AoKTtcbiAgICBzdGFjay5wdXNoKHsgZGVmaW5pdGlvbiwgbWFuYWdlciwgY29tcG9uZW50OiBudWxsIH0pO1xufSk7XG5BUFBFTkRfT1BDT0RFUy5hZGQoNTggLyogUHVzaEFyZ3MgKi8sICh2bSwgeyBvcDE6IHN5bnRoZXRpYyB9KSA9PiB7XG4gICAgbGV0IHN0YWNrID0gdm0uc3RhY2s7XG4gICAgQVJHUy5zZXR1cChzdGFjaywgISFzeW50aGV0aWMpO1xuICAgIHN0YWNrLnB1c2goQVJHUyk7XG59KTtcbkFQUEVORF9PUENPREVTLmFkZCg1OSAvKiBQcmVwYXJlQXJncyAqLywgKHZtLCB7IG9wMTogX3N0YXRlIH0pID0+IHtcbiAgICBsZXQgc3RhY2sgPSB2bS5zdGFjaztcbiAgICBsZXQgeyBkZWZpbml0aW9uLCBtYW5hZ2VyIH0gPSB2bS5mZXRjaFZhbHVlKF9zdGF0ZSk7XG4gICAgbGV0IGFyZ3MgPSBzdGFjay5wb3AoKTtcbiAgICBsZXQgcHJlcGFyZWRBcmdzID0gbWFuYWdlci5wcmVwYXJlQXJncyhkZWZpbml0aW9uLCBhcmdzKTtcbiAgICBpZiAocHJlcGFyZWRBcmdzKSB7XG4gICAgICAgIGFyZ3MuY2xlYXIoKTtcbiAgICAgICAgbGV0IHsgcG9zaXRpb25hbCwgbmFtZWQgfSA9IHByZXBhcmVkQXJncztcbiAgICAgICAgbGV0IHBvc2l0aW9uYWxDb3VudCA9IHBvc2l0aW9uYWwubGVuZ3RoO1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHBvc2l0aW9uYWxDb3VudDsgaSsrKSB7XG4gICAgICAgICAgICBzdGFjay5wdXNoKHBvc2l0aW9uYWxbaV0pO1xuICAgICAgICB9XG4gICAgICAgIHN0YWNrLnB1c2gocG9zaXRpb25hbENvdW50KTtcbiAgICAgICAgbGV0IG5hbWVzID0gT2JqZWN0LmtleXMobmFtZWQpO1xuICAgICAgICBsZXQgbmFtZWRDb3VudCA9IG5hbWVzLmxlbmd0aDtcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBuYW1lZENvdW50OyBpKyspIHtcbiAgICAgICAgICAgIHN0YWNrLnB1c2gobmFtZWRbbmFtZXNbaV1dKTtcbiAgICAgICAgfVxuICAgICAgICBzdGFjay5wdXNoKG5hbWVzKTtcbiAgICAgICAgYXJncy5zZXR1cChzdGFjaywgdHJ1ZSk7XG4gICAgfVxuICAgIHN0YWNrLnB1c2goYXJncyk7XG59KTtcbkFQUEVORF9PUENPREVTLmFkZCg2MCAvKiBDcmVhdGVDb21wb25lbnQgKi8sICh2bSwgeyBvcDE6IGZsYWdzLCBvcDI6IF9zdGF0ZSB9KSA9PiB7XG4gICAgbGV0IGRlZmluaXRpb247XG4gICAgbGV0IG1hbmFnZXI7XG4gICAgbGV0IGFyZ3MgPSB2bS5zdGFjay5wb3AoKTtcbiAgICBsZXQgZHluYW1pY1Njb3BlID0gdm0uZHluYW1pY1Njb3BlKCk7XG4gICAgbGV0IHN0YXRlID0gKHsgZGVmaW5pdGlvbiwgbWFuYWdlciB9ID0gdm0uZmV0Y2hWYWx1ZShfc3RhdGUpKTtcbiAgICBsZXQgaGFzRGVmYXVsdEJsb2NrID0gZmxhZ3MgJiAwYjAxO1xuICAgIGxldCBjb21wb25lbnQgPSBtYW5hZ2VyLmNyZWF0ZSh2bS5lbnYsIGRlZmluaXRpb24sIGFyZ3MsIGR5bmFtaWNTY29wZSwgdm0uZ2V0U2VsZigpLCAhIWhhc0RlZmF1bHRCbG9jayk7XG4gICAgc3RhdGUuY29tcG9uZW50ID0gY29tcG9uZW50O1xuICAgIHZtLnVwZGF0ZVdpdGgobmV3IFVwZGF0ZUNvbXBvbmVudE9wY29kZShhcmdzLnRhZywgZGVmaW5pdGlvbi5uYW1lLCBjb21wb25lbnQsIG1hbmFnZXIsIGR5bmFtaWNTY29wZSkpO1xufSk7XG5BUFBFTkRfT1BDT0RFUy5hZGQoNjEgLyogUmVnaXN0ZXJDb21wb25lbnREZXN0cnVjdG9yICovLCAodm0sIHsgb3AxOiBfc3RhdGUgfSkgPT4ge1xuICAgIGxldCB7IG1hbmFnZXIsIGNvbXBvbmVudCB9ID0gdm0uZmV0Y2hWYWx1ZShfc3RhdGUpO1xuICAgIGxldCBkZXN0cnVjdG9yID0gbWFuYWdlci5nZXREZXN0cnVjdG9yKGNvbXBvbmVudCk7XG4gICAgaWYgKGRlc3RydWN0b3IpIHZtLm5ld0Rlc3Ryb3lhYmxlKGRlc3RydWN0b3IpO1xufSk7XG5BUFBFTkRfT1BDT0RFUy5hZGQoNjUgLyogQmVnaW5Db21wb25lbnRUcmFuc2FjdGlvbiAqLywgdm0gPT4ge1xuICAgIHZtLmJlZ2luQ2FjaGVHcm91cCgpO1xuICAgIHZtLmVsZW1lbnRzKCkucHVzaFNpbXBsZUJsb2NrKCk7XG59KTtcbkFQUEVORF9PUENPREVTLmFkZCg2MiAvKiBQdXNoQ29tcG9uZW50T3BlcmF0aW9ucyAqLywgdm0gPT4ge1xuICAgIHZtLnN0YWNrLnB1c2gobmV3IENvbXBvbmVudEVsZW1lbnRPcGVyYXRpb25zKHZtLmVudikpO1xufSk7XG5BUFBFTkRfT1BDT0RFUy5hZGQoNjcgLyogRGlkQ3JlYXRlRWxlbWVudCAqLywgKHZtLCB7IG9wMTogX3N0YXRlIH0pID0+IHtcbiAgICBsZXQgeyBtYW5hZ2VyLCBjb21wb25lbnQgfSA9IHZtLmZldGNoVmFsdWUoX3N0YXRlKTtcbiAgICBsZXQgYWN0aW9uID0gJ0RpZENyZWF0ZUVsZW1lbnRPcGNvZGUjZXZhbHVhdGUnO1xuICAgIG1hbmFnZXIuZGlkQ3JlYXRlRWxlbWVudChjb21wb25lbnQsIHZtLmVsZW1lbnRzKCkuZXhwZWN0Q29uc3RydWN0aW5nKGFjdGlvbiksIHZtLmVsZW1lbnRzKCkuZXhwZWN0T3BlcmF0aW9ucyhhY3Rpb24pKTtcbn0pO1xuQVBQRU5EX09QQ09ERVMuYWRkKDYzIC8qIEdldENvbXBvbmVudFNlbGYgKi8sICh2bSwgeyBvcDE6IF9zdGF0ZSB9KSA9PiB7XG4gICAgbGV0IHN0YXRlID0gdm0uZmV0Y2hWYWx1ZShfc3RhdGUpO1xuICAgIHZtLnN0YWNrLnB1c2goc3RhdGUubWFuYWdlci5nZXRTZWxmKHN0YXRlLmNvbXBvbmVudCkpO1xufSk7XG5BUFBFTkRfT1BDT0RFUy5hZGQoNjQgLyogR2V0Q29tcG9uZW50TGF5b3V0ICovLCAodm0sIHsgb3AxOiBfc3RhdGUgfSkgPT4ge1xuICAgIGxldCB7IG1hbmFnZXIsIGRlZmluaXRpb24sIGNvbXBvbmVudCB9ID0gdm0uZmV0Y2hWYWx1ZShfc3RhdGUpO1xuICAgIHZtLnN0YWNrLnB1c2gobWFuYWdlci5sYXlvdXRGb3IoZGVmaW5pdGlvbiwgY29tcG9uZW50LCB2bS5lbnYpKTtcbn0pO1xuQVBQRU5EX09QQ09ERVMuYWRkKDY4IC8qIERpZFJlbmRlckxheW91dCAqLywgKHZtLCB7IG9wMTogX3N0YXRlIH0pID0+IHtcbiAgICBsZXQgeyBtYW5hZ2VyLCBjb21wb25lbnQgfSA9IHZtLmZldGNoVmFsdWUoX3N0YXRlKTtcbiAgICBsZXQgYm91bmRzID0gdm0uZWxlbWVudHMoKS5wb3BCbG9jaygpO1xuICAgIG1hbmFnZXIuZGlkUmVuZGVyTGF5b3V0KGNvbXBvbmVudCwgYm91bmRzKTtcbiAgICB2bS5lbnYuZGlkQ3JlYXRlKGNvbXBvbmVudCwgbWFuYWdlcik7XG4gICAgdm0udXBkYXRlV2l0aChuZXcgRGlkVXBkYXRlTGF5b3V0T3Bjb2RlKG1hbmFnZXIsIGNvbXBvbmVudCwgYm91bmRzKSk7XG59KTtcbkFQUEVORF9PUENPREVTLmFkZCg2NiAvKiBDb21taXRDb21wb25lbnRUcmFuc2FjdGlvbiAqLywgdm0gPT4gdm0uY29tbWl0Q2FjaGVHcm91cCgpKTtcbmV4cG9ydCBjbGFzcyBVcGRhdGVDb21wb25lbnRPcGNvZGUgZXh0ZW5kcyBVcGRhdGluZ09wY29kZSB7XG4gICAgY29uc3RydWN0b3IodGFnLCBuYW1lLCBjb21wb25lbnQsIG1hbmFnZXIsIGR5bmFtaWNTY29wZSkge1xuICAgICAgICBzdXBlcigpO1xuICAgICAgICB0aGlzLm5hbWUgPSBuYW1lO1xuICAgICAgICB0aGlzLmNvbXBvbmVudCA9IGNvbXBvbmVudDtcbiAgICAgICAgdGhpcy5tYW5hZ2VyID0gbWFuYWdlcjtcbiAgICAgICAgdGhpcy5keW5hbWljU2NvcGUgPSBkeW5hbWljU2NvcGU7XG4gICAgICAgIHRoaXMudHlwZSA9ICd1cGRhdGUtY29tcG9uZW50JztcbiAgICAgICAgbGV0IGNvbXBvbmVudFRhZyA9IG1hbmFnZXIuZ2V0VGFnKGNvbXBvbmVudCk7XG4gICAgICAgIGlmIChjb21wb25lbnRUYWcpIHtcbiAgICAgICAgICAgIHRoaXMudGFnID0gY29tYmluZShbdGFnLCBjb21wb25lbnRUYWddKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMudGFnID0gdGFnO1xuICAgICAgICB9XG4gICAgfVxuICAgIGV2YWx1YXRlKF92bSkge1xuICAgICAgICBsZXQgeyBjb21wb25lbnQsIG1hbmFnZXIsIGR5bmFtaWNTY29wZSB9ID0gdGhpcztcbiAgICAgICAgbWFuYWdlci51cGRhdGUoY29tcG9uZW50LCBkeW5hbWljU2NvcGUpO1xuICAgIH1cbiAgICB0b0pTT04oKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBhcmdzOiBbSlNPTi5zdHJpbmdpZnkodGhpcy5uYW1lKV0sXG4gICAgICAgICAgICBndWlkOiB0aGlzLl9ndWlkLFxuICAgICAgICAgICAgdHlwZTogdGhpcy50eXBlXG4gICAgICAgIH07XG4gICAgfVxufVxuZXhwb3J0IGNsYXNzIERpZFVwZGF0ZUxheW91dE9wY29kZSBleHRlbmRzIFVwZGF0aW5nT3Bjb2RlIHtcbiAgICBjb25zdHJ1Y3RvcihtYW5hZ2VyLCBjb21wb25lbnQsIGJvdW5kcykge1xuICAgICAgICBzdXBlcigpO1xuICAgICAgICB0aGlzLm1hbmFnZXIgPSBtYW5hZ2VyO1xuICAgICAgICB0aGlzLmNvbXBvbmVudCA9IGNvbXBvbmVudDtcbiAgICAgICAgdGhpcy5ib3VuZHMgPSBib3VuZHM7XG4gICAgICAgIHRoaXMudHlwZSA9ICdkaWQtdXBkYXRlLWxheW91dCc7XG4gICAgICAgIHRoaXMudGFnID0gQ09OU1RBTlRfVEFHO1xuICAgIH1cbiAgICBldmFsdWF0ZSh2bSkge1xuICAgICAgICBsZXQgeyBtYW5hZ2VyLCBjb21wb25lbnQsIGJvdW5kcyB9ID0gdGhpcztcbiAgICAgICAgbWFuYWdlci5kaWRVcGRhdGVMYXlvdXQoY29tcG9uZW50LCBib3VuZHMpO1xuICAgICAgICB2bS5lbnYuZGlkVXBkYXRlKGNvbXBvbmVudCwgbWFuYWdlcik7XG4gICAgfVxufSJdfQ==
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9jb21waWxlZC9vcGNvZGVzL2NvbXBvbmVudC5qcyJdLCJuYW1lcyI6WyJhZGQiLCJ2bSIsIm9wMSIsIl9kZWZpbml0aW9uIiwiZGVmaW5pdGlvbiIsImNvbnN0YW50cyIsImdldE90aGVyIiwic3RhY2siLCJwdXNoIiwibWFuYWdlciIsImNvbXBvbmVudCIsInJlZmVyZW5jZSIsInBvcCIsImNhY2hlIiwidW5kZWZpbmVkIiwicGVlayIsInZhbHVlIiwidXBkYXRlV2l0aCIsInN5bnRoZXRpYyIsInNldHVwIiwiX3N0YXRlIiwiZmV0Y2hWYWx1ZSIsImFyZ3MiLCJwcmVwYXJlZEFyZ3MiLCJwcmVwYXJlQXJncyIsImNsZWFyIiwicG9zaXRpb25hbCIsIm5hbWVkIiwicG9zaXRpb25hbENvdW50IiwibGVuZ3RoIiwiaSIsIm5hbWVzIiwiT2JqZWN0Iiwia2V5cyIsIm5hbWVkQ291bnQiLCJhdE5hbWVzIiwiYXROYW1lIiwiZmxhZ3MiLCJvcDIiLCJkeW5hbWljU2NvcGUiLCJzdGF0ZSIsImhhc0RlZmF1bHRCbG9jayIsImNyZWF0ZSIsImVudiIsImdldFNlbGYiLCJVcGRhdGVDb21wb25lbnRPcGNvZGUiLCJ0YWciLCJuYW1lIiwiZGVzdHJ1Y3RvciIsImdldERlc3RydWN0b3IiLCJuZXdEZXN0cm95YWJsZSIsImJlZ2luQ2FjaGVHcm91cCIsImVsZW1lbnRzIiwicHVzaFNpbXBsZUJsb2NrIiwiYWN0aW9uIiwiZGlkQ3JlYXRlRWxlbWVudCIsImV4cGVjdENvbnN0cnVjdGluZyIsImV4cGVjdE9wZXJhdGlvbnMiLCJsYXlvdXRGb3IiLCJib3VuZHMiLCJwb3BCbG9jayIsImRpZFJlbmRlckxheW91dCIsImRpZENyZWF0ZSIsIkRpZFVwZGF0ZUxheW91dE9wY29kZSIsImNvbW1pdENhY2hlR3JvdXAiLCJjb25zdHJ1Y3RvciIsInR5cGUiLCJjb21wb25lbnRUYWciLCJnZXRUYWciLCJldmFsdWF0ZSIsIl92bSIsInVwZGF0ZSIsInRvSlNPTiIsIkpT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YUFBS3BCLEdBQUw7QUFDSDtBQUNEdUIsYUFBU3BFLEVBQVQsRUFBYTtBQUNULFlBQUksRUFBRVEsT0FBRixFQUFXQyxTQUFYLEVBQXNCaUQsTUFBdEIsS0FBaUMsSUFBckM7QUFDQWxELGdCQUFRb0UsZUFBUixDQUF3Qm5FLFNBQXhCLEVBQW1DaUQsTUFBbkM7QUFDQTFELFdBQUcwQyxHQUFILENBQU9tQyxTQUFQLENBQWlCcEUsU0FBakIsRUFBNEJELE9BQTVCO0FBQ0g7QUFicUQ7UUFBN0NzRCxxQixHQUFBQSxxQiIsImZpbGUiOiJsaWIvY29tcGlsZWQvb3Bjb2Rlcy9jb21wb25lbnQuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBjb21iaW5lLCBDT05TVEFOVF9UQUcsIGlzQ29uc3QsIFJlZmVyZW5jZUNhY2hlIH0gZnJvbSAnQGdsaW1tZXIvcmVmZXJlbmNlJztcbmltcG9ydCB7IEFQUEVORF9PUENPREVTLCBVcGRhdGluZ09wY29kZSB9IGZyb20gJy4uLy4uL29wY29kZXMnO1xuaW1wb3J0IEFSR1MgZnJvbSAnLi4vLi4vdm0vYXJndW1lbnRzJztcbmltcG9ydCB7IENvbXBvbmVudEVsZW1lbnRPcGVyYXRpb25zIH0gZnJvbSAnLi9kb20nO1xuaW1wb3J0IHsgQXNzZXJ0IH0gZnJvbSAnLi92bSc7XG5BUFBFTkRfT1BDT0RFUy5hZGQoNTUgLyogUHVzaENvbXBvbmVudE1hbmFnZXIgKi8sICh2bSwgeyBvcDE6IF9kZWZpbml0aW9uIH0pID0+IHtcbiAgICBsZXQgZGVmaW5pdGlvbiA9IHZtLmNvbnN0YW50cy5nZXRPdGhlcihfZGVmaW5pdGlvbik7XG4gICAgbGV0IHN0YWNrID0gdm0uc3RhY2s7XG4gICAgc3RhY2sucHVzaCh7IGRlZmluaXRpb24sIG1hbmFnZXI6IGRlZmluaXRpb24ubWFuYWdlciwgY29tcG9uZW50OiBudWxsIH0pO1xufSk7XG5BUFBFTkRfT1BDT0RFUy5hZGQoNTYgLyogUHVzaER5bmFtaWNDb21wb25lbnRNYW5hZ2VyICovLCB2bSA9PiB7XG4gICAgbGV0IHN0YWNrID0gdm0uc3RhY2s7XG4gICAgbGV0IHJlZmVyZW5jZSA9IHN0YWNrLnBvcCgpO1xuICAgIGxldCBjYWNoZSA9IGlzQ29uc3QocmVmZXJlbmNlKSA/IHVuZGVmaW5lZCA6IG5ldyBSZWZlcmVuY2VDYWNoZShyZWZlcmVuY2UpO1xuICAgIGxldCBkZWZpbml0aW9uID0gY2FjaGUgPyBjYWNoZS5wZWVrKCkgOiByZWZlcmVuY2UudmFsdWUoKTtcbiAgICBzdGFjay5wdXNoKHsgZGVmaW5pdGlvbiwgbWFuYWdlcjogZGVmaW5pdGlvbi5tYW5hZ2VyLCBjb21wb25lbnQ6IG51bGwgfSk7XG4gICAgaWYgKGNhY2hlKSB7XG4gICAgICAgIHZtLnVwZGF0ZVdpdGgobmV3IEFzc2VydChjYWNoZSkpO1xuICAgIH1cbn0pO1xuQVBQRU5EX09QQ09ERVMuYWRkKDU3IC8qIFB1c2hBcmdzICovLCAodm0sIHsgb3AxOiBzeW50aGV0aWMgfSkgPT4ge1xuICAgIGxldCBzdGFjayA9IHZtLnN0YWNrO1xuICAgIEFSR1Muc2V0dXAoc3RhY2ssICEhc3ludGhldGljKTtcbiAgICBzdGFjay5wdXNoKEFSR1MpO1xufSk7XG5BUFBFTkRfT1BDT0RFUy5hZGQoNTggLyogUHJlcGFyZUFyZ3MgKi8sICh2bSwgeyBvcDE6IF9zdGF0ZSB9KSA9PiB7XG4gICAgbGV0IHN0YWNrID0gdm0uc3RhY2s7XG4gICAgbGV0IHsgZGVmaW5pdGlvbiwgbWFuYWdlciB9ID0gdm0uZmV0Y2hWYWx1ZShfc3RhdGUpO1xuICAgIGxldCBhcmdzID0gc3RhY2sucG9wKCk7XG4gICAgbGV0IHByZXBhcmVkQXJncyA9IG1hbmFnZXIucHJlcGFyZUFyZ3MoZGVmaW5pdGlvbiwgYXJncyk7XG4gICAgaWYgKHByZXBhcmVkQXJncykge1xuICAgICAgICBhcmdzLmNsZWFyKCk7XG4gICAgICAgIGxldCB7IHBvc2l0aW9uYWwsIG5hbWVkIH0gPSBwcmVwYXJlZEFyZ3M7XG4gICAgICAgIGxldCBwb3NpdGlvbmFsQ291bnQgPSBwb3NpdGlvbmFsLmxlbmd0aDtcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBwb3NpdGlvbmFsQ291bnQ7IGkrKykge1xuICAgICAgICAgICAgc3RhY2sucHVzaChwb3NpdGlvbmFsW2ldKTtcbiAgICAgICAgfVxuICAgICAgICBzdGFjay5wdXNoKHBvc2l0aW9uYWxDb3VudCk7XG4gICAgICAgIGxldCBuYW1lcyA9IE9iamVjdC5rZXlzKG5hbWVkKTtcbiAgICAgICAgbGV0IG5hbWVkQ291bnQgPSBuYW1lcy5sZW5ndGg7XG4gICAgICAgIGxldCBhdE5hbWVzID0gW107XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbmFtZWRDb3VudDsgaSsrKSB7XG4gICAgICAgICAgICBsZXQgdmFsdWUgPSBuYW1lZFtuYW1lc1tpXV07XG4gICAgICAgICAgICBsZXQgYXROYW1lID0gYEAke25hbWVzW2ldfWA7XG4gICAgICAgICAgICBzdGFjay5wdXNoKHZhbHVlKTtcbiAgICAgICAgICAgIGF0TmFtZXMucHVzaChhdE5hbWUpO1xuICAgICAgICB9XG4gICAgICAgIHN0YWNrLnB1c2goYXROYW1lcyk7XG4gICAgICAgIGFyZ3Muc2V0dXAoc3RhY2ssIGZhbHNlKTtcbiAgICB9XG4gICAgc3RhY2sucHVzaChhcmdzKTtcbn0pO1xuQVBQRU5EX09QQ09ERVMuYWRkKDU5IC8qIENyZWF0ZUNvbXBvbmVudCAqLywgKHZtLCB7IG9wMTogZmxhZ3MsIG9wMjogX3N0YXRlIH0pID0+IHtcbiAgICBsZXQgZGVmaW5pdGlvbjtcbiAgICBsZXQgbWFuYWdlcjtcbiAgICBsZXQgYXJncyA9IHZtLnN0YWNrLnBvcCgpO1xuICAgIGxldCBkeW5hbWljU2NvcGUgPSB2bS5keW5hbWljU2NvcGUoKTtcbiAgICBsZXQgc3RhdGUgPSAoeyBkZWZpbml0aW9uLCBtYW5hZ2VyIH0gPSB2bS5mZXRjaFZhbHVlKF9zdGF0ZSkpO1xuICAgIGxldCBoYXNEZWZhdWx0QmxvY2sgPSBmbGFncyAmIDBiMDE7XG4gICAgbGV0IGNvbXBvbmVudCA9IG1hbmFnZXIuY3JlYXRlKHZtLmVudiwgZGVmaW5pdGlvbiwgYXJncywgZHluYW1pY1Njb3BlLCB2bS5nZXRTZWxmKCksICEhaGFzRGVmYXVsdEJsb2NrKTtcbiAgICBzdGF0ZS5jb21wb25lbnQgPSBjb21wb25lbnQ7XG4gICAgdm0udXBkYXRlV2l0aChuZXcgVXBkYXRlQ29tcG9uZW50T3Bjb2RlKGFyZ3MudGFnLCBkZWZpbml0aW9uLm5hbWUsIGNvbXBvbmVudCwgbWFuYWdlciwgZHluYW1pY1Njb3BlKSk7XG59KTtcbkFQUEVORF9PUENPREVTLmFkZCg2MCAvKiBSZWdpc3RlckNvbXBvbmVudERlc3RydWN0b3IgKi8sICh2bSwgeyBvcDE6IF9zdGF0ZSB9KSA9PiB7XG4gICAgbGV0IHsgbWFuYWdlciwgY29tcG9uZW50IH0gPSB2bS5mZXRjaFZhbHVlKF9zdGF0ZSk7XG4gICAgbGV0IGRlc3RydWN0b3IgPSBtYW5hZ2VyLmdldERlc3RydWN0b3IoY29tcG9uZW50KTtcbiAgICBpZiAoZGVzdHJ1Y3Rvcikgdm0ubmV3RGVzdHJveWFibGUoZGVzdHJ1Y3Rvcik7XG59KTtcbkFQUEVORF9PUENPREVTLmFkZCg2NCAvKiBCZWdpbkNvbXBvbmVudFRyYW5zYWN0aW9uICovLCB2bSA9PiB7XG4gICAgdm0uYmVnaW5DYWNoZUdyb3VwKCk7XG4gICAgdm0uZWxlbWVudHMoKS5wdXNoU2ltcGxlQmxvY2soKTtcbn0pO1xuQVBQRU5EX09QQ09ERVMuYWRkKDYxIC8qIFB1c2hDb21wb25lbnRPcGVyYXRpb25zICovLCB2bSA9PiB7XG4gICAgdm0uc3RhY2sucHVzaChuZXcgQ29tcG9uZW50RWxlbWVudE9wZXJhdGlvbnModm0uZW52KSk7XG59KTtcbkFQUEVORF9PUENPREVTLmFkZCg2NiAvKiBEaWRDcmVhdGVFbGVtZW50ICovLCAodm0sIHsgb3AxOiBfc3RhdGUgfSkgPT4ge1xuICAgIGxldCB7IG1hbmFnZXIsIGNvbXBvbmVudCB9ID0gdm0uZmV0Y2hWYWx1ZShfc3RhdGUpO1xuICAgIGxldCBhY3Rpb24gPSAnRGlkQ3JlYXRlRWxlbWVudE9wY29kZSNldmFsdWF0ZSc7XG4gICAgbWFuYWdlci5kaWRDcmVhdGVFbGVtZW50KGNvbXBvbmVudCwgdm0uZWxlbWVudHMoKS5leHBlY3RDb25zdHJ1Y3RpbmcoYWN0aW9uKSwgdm0uZWxlbWVudHMoKS5leHBlY3RPcGVyYXRpb25zKGFjdGlvbikpO1xufSk7XG5BUFBFTkRfT1BDT0RFUy5hZGQoNjIgLyogR2V0Q29tcG9uZW50U2VsZiAqLywgKHZtLCB7IG9wMTogX3N0YXRlIH0pID0+IHtcbiAgICBsZXQgc3RhdGUgPSB2bS5mZXRjaFZhbHVlKF9zdGF0ZSk7XG4gICAgdm0uc3RhY2sucHVzaChzdGF0ZS5tYW5hZ2VyLmdldFNlbGYoc3RhdGUuY29tcG9uZW50KSk7XG59KTtcbkFQUEVORF9PUENPREVTLmFkZCg2MyAvKiBHZXRDb21wb25lbnRMYXlvdXQgKi8sICh2bSwgeyBvcDE6IF9zdGF0ZSB9KSA9PiB7XG4gICAgbGV0IHsgbWFuYWdlciwgZGVmaW5pdGlvbiwgY29tcG9uZW50IH0gPSB2bS5mZXRjaFZhbHVlKF9zdGF0ZSk7XG4gICAgdm0uc3RhY2sucHVzaChtYW5hZ2VyLmxheW91dEZvcihkZWZpbml0aW9uLCBjb21wb25lbnQsIHZtLmVudikpO1xufSk7XG5BUFBFTkRfT1BDT0RFUy5hZGQoNjcgLyogRGlkUmVuZGVyTGF5b3V0ICovLCAodm0sIHsgb3AxOiBfc3RhdGUgfSkgPT4ge1xuICAgIGxldCB7IG1hbmFnZXIsIGNvbXBvbmVudCB9ID0gdm0uZmV0Y2hWYWx1ZShfc3RhdGUpO1xuICAgIGxldCBib3VuZHMgPSB2bS5lbGVtZW50cygpLnBvcEJsb2NrKCk7XG4gICAgbWFuYWdlci5kaWRSZW5kZXJMYXlvdXQoY29tcG9uZW50LCBib3VuZHMpO1xuICAgIHZtLmVudi5kaWRDcmVhdGUoY29tcG9uZW50LCBtYW5hZ2VyKTtcbiAgICB2bS51cGRhdGVXaXRoKG5ldyBEaWRVcGRhdGVMYXlvdXRPcGNvZGUobWFuYWdlciwgY29tcG9uZW50LCBib3VuZHMpKTtcbn0pO1xuQVBQRU5EX09QQ09ERVMuYWRkKDY1IC8qIENvbW1pdENvbXBvbmVudFRyYW5zYWN0aW9uICovLCB2bSA9PiB2bS5jb21taXRDYWNoZUdyb3VwKCkpO1xuZXhwb3J0IGNsYXNzIFVwZGF0ZUNvbXBvbmVudE9wY29kZSBleHRlbmRzIFVwZGF0aW5nT3Bjb2RlIHtcbiAgICBjb25zdHJ1Y3Rvcih0YWcsIG5hbWUsIGNvbXBvbmVudCwgbWFuYWdlciwgZHluYW1pY1Njb3BlKSB7XG4gICAgICAgIHN1cGVyKCk7XG4gICAgICAgIHRoaXMubmFtZSA9IG5hbWU7XG4gICAgICAgIHRoaXMuY29tcG9uZW50ID0gY29tcG9uZW50O1xuICAgICAgICB0aGlzLm1hbmFnZXIgPSBtYW5hZ2VyO1xuICAgICAgICB0aGlzLmR5bmFtaWNTY29wZSA9IGR5bmFtaWNTY29wZTtcbiAgICAgICAgdGhpcy50eXBlID0gJ3VwZGF0ZS1jb21wb25lbnQnO1xuICAgICAgICBsZXQgY29tcG9uZW50VGFnID0gbWFuYWdlci5nZXRUYWcoY29tcG9uZW50KTtcbiAgICAgICAgaWYgKGNvbXBvbmVudFRhZykge1xuICAgICAgICAgICAgdGhpcy50YWcgPSBjb21iaW5lKFt0YWcsIGNvbXBvbmVudFRhZ10pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy50YWcgPSB0YWc7XG4gICAgICAgIH1cbiAgICB9XG4gICAgZXZhbHVhdGUoX3ZtKSB7XG4gICAgICAgIGxldCB7IGNvbXBvbmVudCwgbWFuYWdlciwgZHluYW1pY1Njb3BlIH0gPSB0aGlzO1xuICAgICAgICBtYW5hZ2VyLnVwZGF0ZShjb21wb25lbnQsIGR5bmFtaWNTY29wZSk7XG4gICAgfVxuICAgIHRvSlNPTigpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGFyZ3M6IFtKU09OLnN0cmluZ2lmeSh0aGlzLm5hbWUpXSxcbiAgICAgICAgICAgIGd1aWQ6IHRoaXMuX2d1aWQsXG4gICAgICAgICAgICB0eXBlOiB0aGlzLnR5cGVcbiAgICAgICAgfTtcbiAgICB9XG59XG5leHBvcnQgY2xhc3MgRGlkVXBkYXRlTGF5b3V0T3Bjb2RlIGV4dGVuZHMgVXBkYXRpbmdPcGNvZGUge1xuICAgIGNvbnN0cnVjdG9yKG1hbmFnZXIsIGNvbXBvbmVudCwgYm91bmRzKSB7XG4gICAgICAgIHN1cGVyKCk7XG4gICAgICAgIHRoaXMubWFuYWdlciA9IG1hbmFnZXI7XG4gICAgICAgIHRoaXMuY29tcG9uZW50ID0gY29tcG9uZW50O1xuICAgICAgICB0aGlzLmJvdW5kcyA9IGJvdW5kcztcbiAgICAgICAgdGhpcy50eXBlID0gJ2RpZC11cGRhdGUtbGF5b3V0JztcbiAgICAgICAgdGhpcy50YWcgPSBDT05TVEFOVF9UQUc7XG4gICAgfVxuICAgIGV2YWx1YXRlKHZtKSB7XG4gICAgICAgIGxldCB7IG1hbmFnZXIsIGNvbXBvbmVudCwgYm91bmRzIH0gPSB0aGlzO1xuICAgICAgICBtYW5hZ2VyLmRpZFVwZGF0ZUxheW91dChjb21wb25lbnQsIGJvdW5kcyk7XG4gICAgICAgIHZtLmVudi5kaWRVcGRhdGUoY29tcG9uZW50LCBtYW5hZ2VyKTtcbiAgICB9XG59Il19

@@ -59,3 +59,3 @@ 'use strict';

}
_opcodes.APPEND_OPCODES.add(71 /* Debugger */, (vm, { op1: _symbols, op2: _evalInfo }) => {
_opcodes.APPEND_OPCODES.add(70 /* Debugger */, (vm, { op1: _symbols, op2: _evalInfo }) => {
let symbols = vm.constants.getOther(_symbols);

@@ -66,2 +66,2 @@ let evalInfo = vm.constants.getArray(_evalInfo);

});
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9jb21waWxlZC9vcGNvZGVzL2RlYnVnZ2VyLmpzIl0sIm5hbWVzIjpbInNldERlYnVnZ2VyQ2FsbGJhY2siLCJyZXNldERlYnVnZ2VyQ2FsbGJhY2siLCJkZWJ1Z0NhbGxiYWNrIiwiY29udGV4dCIsImdldCIsImNvbnNvbGUiLCJpbmZvIiwiY2FsbGJhY2siLCJjYiIsIlNjb3BlSW5zcGVjdG9yIiwiY29uc3RydWN0b3IiLCJzY29wZSIsInN5bWJvbHMiLCJldmFsSW5mbyIsImxvY2FscyIsImkiLCJsZW5ndGgiLCJzbG90IiwibmFtZSIsInJlZiIsImdldFN5bWJvbCIsInBhdGgiLCJwYXJ0cyIsInNwbGl0IiwiaGVhZCIsInRhaWwiLCJldmFsU2NvcGUiLCJnZXRFdmFsU2NvcGUiLCJnZXRTZWxmIiwiaW5kZXhPZiIsInJlZHVjZSIsInIiLCJwYXJ0IiwiYWRkIiwidm0iLCJvcDEiLCJfc3ltYm9scyIsIm9wMiIsIl9ldmFsSW5mbyIsImNvbnN0YW50cyIsImdldE90aGVyIiwiZ2V0QXJyYXkiLCJpbnNwZWN0b3IiLCJ2YWx1ZSJdLCJtYXBwaW5ncyI6Ijs7Ozs7UUFZZ0JBLG1CLEdBQUFBLG1CO1FBR0FDLHFCLEdBQUFBLHFCOztBQWZoQjs7QUFDQTs7QUFDQTtBQUNBLFNBQVNDLGFBQVQsQ0FBdUJDLE9BQXZCLEVBQWdDQyxHQUFoQyxFQUFxQztBQUNqQ0MsWUFBUUMsSUFBUixDQUFhLDBEQUFiO0FBQ0E7QUFDQUgsZ0JBQVlDLElBQUksTUFBSixDQUFaO0FBQ0E7QUFDSDtBQUNEO0FBQ0EsSUFBSUcsV0FBV0wsYUFBZjtBQUNBO0FBQ08sU0FBU0YsbUJBQVQsQ0FBNkJRLEVBQTdCLEVBQWlDO0FBQ3BDRCxlQUFXQyxFQUFYO0FBQ0g7QUFDTSxTQUFTUCxxQkFBVCxHQUFpQztBQUNwQ00sZUFBV0wsYUFBWDtBQUNIO0FBQ0QsTUFBTU8sY0FBTixDQUFxQjtBQUNqQkMsZ0JBQVlDLEtBQVosRUFBbUJDLE9BQW5CLEVBQTRCQyxRQUE1QixFQUFzQztBQUNsQyxhQUFLRixLQUFMLEdBQWFBLEtBQWI7QUFDQSxhQUFLRyxNQUFMLEdBQWMsaUJBQWQ7QUFDQSxhQUFLLElBQUlDLElBQUksQ0FBYixFQUFnQkEsSUFBSUYsU0FBU0csTUFBN0IsRUFBcUNELEdBQXJDLEVBQTBDO0FBQ3RDLGdCQUFJRSxPQUFPSixTQUFTRSxDQUFULENBQVg7QUFDQSxnQkFBSUcsT0FBT04sUUFBUUssT0FBTyxDQUFmLENBQVg7QUFDQSxnQkFBSUUsTUFBTVIsTUFBTVMsU0FBTixDQUFnQkgsSUFBaEIsQ0FBVjtBQUNBLGlCQUFLSCxNQUFMLENBQVlJLElBQVosSUFBb0JDLEdBQXBCO0FBQ0g7QUFDSjtBQUNEZixRQUFJaUIsSUFBSixFQUFVO0FBQ04sWUFBSSxFQUFFVixLQUFGLEVBQVNHLE1BQVQsS0FBb0IsSUFBeEI7QUFDQSxZQUFJUSxRQUFRRCxLQUFLRSxLQUFMLENBQVcsR0FBWCxDQUFaO0FBQ0EsWUFBSSxDQUFDQyxJQUFELEVBQU8sR0FBR0MsSUFBVixJQUFrQkosS0FBS0UsS0FBTCxDQUFXLEdBQVgsQ0FBdEI7QUFDQSxZQUFJRyxZQUFZZixNQUFNZ0IsWUFBTixFQUFoQjtBQUNBLFlBQUlSLEdBQUo7QUFDQSxZQUFJSyxTQUFTLE1BQWIsRUFBcUI7QUFDakJMLGtCQUFNUixNQUFNaUIsT0FBTixFQUFOO0FBQ0gsU0FGRCxNQUVPLElBQUlkLE9BQU9VLElBQVAsQ0FBSixFQUFrQjtBQUNyQkwsa0JBQU1MLE9BQU9VLElBQVAsQ0FBTjtBQUNILFNBRk0sTUFFQSxJQUFJQSxLQUFLSyxPQUFMLENBQWEsR0FBYixNQUFzQixDQUF0QixJQUEyQkgsVUFBVUYsSUFBVixDQUEvQixFQUFnRDtBQUNuREwsa0JBQU1PLFVBQVVGLElBQVYsQ0FBTjtBQUNILFNBRk0sTUFFQTtBQUNITCxrQkFBTSxLQUFLUixLQUFMLENBQVdpQixPQUFYLEVBQU47QUFDQUgsbUJBQU9ILEtBQVA7QUFDSDtBQUNELGVBQU9HLEtBQUtLLE1BQUwsQ0FBWSxDQUFDQyxDQUFELEVBQUlDLElBQUosS0FBYUQsRUFBRTNCLEdBQUYsQ0FBTTRCLElBQU4sQ0FBekIsRUFBc0NiLEdBQXRDLENBQVA7QUFDSDtBQTVCZ0I7QUE4QnJCLHdCQUFlYyxHQUFmLENBQW1CLEVBQW5CLENBQXNCLGNBQXRCLEVBQXNDLENBQUNDLEVBQUQsRUFBSyxFQUFFQyxLQUFLQyxRQUFQLEVBQWlCQyxLQUFLQyxTQUF0QixFQUFMLEtBQTJDO0FBQzdFLFFBQUkxQixVQUFVc0IsR0FBR0ssU0FBSCxDQUFhQyxRQUFiLENBQXNCSixRQUF0QixDQUFkO0FBQ0EsUUFBSXZCLFdBQVdxQixHQUFHSyxTQUFILENBQWFFLFFBQWIsQ0FBc0JILFNBQXRCLENBQWY7QUFDQSxRQUFJSSxZQUFZLElBQUlqQyxjQUFKLENBQW1CeUIsR0FBR3ZCLEtBQUgsRUFBbkIsRUFBK0JDLE9BQS9CLEVBQXdDQyxRQUF4QyxDQUFoQjtBQUNBTixhQUFTMkIsR0FBR04sT0FBSCxHQUFhZSxLQUFiLEVBQVQsRUFBK0J0QixRQUFRcUIsVUFBVXRDLEdBQVYsQ0FBY2lCLElBQWQsRUFBb0JzQixLQUFwQixFQUF2QztBQUNILENBTEQiLCJmaWxlIjoibGliL2NvbXBpbGVkL29wY29kZXMvZGVidWdnZXIuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBkaWN0IH0gZnJvbSAnQGdsaW1tZXIvdXRpbCc7XG5pbXBvcnQgeyBBUFBFTkRfT1BDT0RFUyB9IGZyb20gJy4uLy4uL29wY29kZXMnO1xuLyogdHNsaW50OmRpc2FibGUgKi9cbmZ1bmN0aW9uIGRlYnVnQ2FsbGJhY2soY29udGV4dCwgZ2V0KSB7XG4gICAgY29uc29sZS5pbmZvKCdVc2UgYGNvbnRleHRgLCBhbmQgYGdldCg8cGF0aD4pYCB0byBkZWJ1ZyB0aGlzIHRlbXBsYXRlLicpO1xuICAgIC8vIGZvciBleGFtcGxlLi4uXG4gICAgY29udGV4dCA9PT0gZ2V0KCd0aGlzJyk7XG4gICAgZGVidWdnZXI7XG59XG4vKiB0c2xpbnQ6ZW5hYmxlICovXG5sZXQgY2FsbGJhY2sgPSBkZWJ1Z0NhbGxiYWNrO1xuLy8gRm9yIHRlc3RpbmcgcHVycG9zZXNcbmV4cG9ydCBmdW5jdGlvbiBzZXREZWJ1Z2dlckNhbGxiYWNrKGNiKSB7XG4gICAgY2FsbGJhY2sgPSBjYjtcbn1cbmV4cG9ydCBmdW5jdGlvbiByZXNldERlYnVnZ2VyQ2FsbGJhY2soKSB7XG4gICAgY2FsbGJhY2sgPSBkZWJ1Z0NhbGxiYWNrO1xufVxuY2xhc3MgU2NvcGVJbnNwZWN0b3Ige1xuICAgIGNvbnN0cnVjdG9yKHNjb3BlLCBzeW1ib2xzLCBldmFsSW5mbykge1xuICAgICAgICB0aGlzLnNjb3BlID0gc2NvcGU7XG4gICAgICAgIHRoaXMubG9jYWxzID0gZGljdCgpO1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGV2YWxJbmZvLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBsZXQgc2xvdCA9IGV2YWxJbmZvW2ldO1xuICAgICAgICAgICAgbGV0IG5hbWUgPSBzeW1ib2xzW3Nsb3QgLSAxXTtcbiAgICAgICAgICAgIGxldCByZWYgPSBzY29wZS5nZXRTeW1ib2woc2xvdCk7XG4gICAgICAgICAgICB0aGlzLmxvY2Fsc1tuYW1lXSA9IHJlZjtcbiAgICAgICAgfVxuICAgIH1cbiAgICBnZXQocGF0aCkge1xuICAgICAgICBsZXQgeyBzY29wZSwgbG9jYWxzIH0gPSB0aGlzO1xuICAgICAgICBsZXQgcGFydHMgPSBwYXRoLnNwbGl0KCcuJyk7XG4gICAgICAgIGxldCBbaGVhZCwgLi4udGFpbF0gPSBwYXRoLnNwbGl0KCcuJyk7XG4gICAgICAgIGxldCBldmFsU2NvcGUgPSBzY29wZS5nZXRFdmFsU2NvcGUoKTtcbiAgICAgICAgbGV0IHJlZjtcbiAgICAgICAgaWYgKGhlYWQgPT09ICd0aGlzJykge1xuICAgICAgICAgICAgcmVmID0gc2NvcGUuZ2V0U2VsZigpO1xuICAgICAgICB9IGVsc2UgaWYgKGxvY2Fsc1toZWFkXSkge1xuICAgICAgICAgICAgcmVmID0gbG9jYWxzW2hlYWRdO1xuICAgICAgICB9IGVsc2UgaWYgKGhlYWQuaW5kZXhPZignQCcpID09PSAwICYmIGV2YWxTY29wZVtoZWFkXSkge1xuICAgICAgICAgICAgcmVmID0gZXZhbFNjb3BlW2hlYWRdO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmVmID0gdGhpcy5zY29wZS5nZXRTZWxmKCk7XG4gICAgICAgICAgICB0YWlsID0gcGFydHM7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRhaWwucmVkdWNlKChyLCBwYXJ0KSA9PiByLmdldChwYXJ0KSwgcmVmKTtcbiAgICB9XG59XG5BUFBFTkRfT1BDT0RFUy5hZGQoNzEgLyogRGVidWdnZXIgKi8sICh2bSwgeyBvcDE6IF9zeW1ib2xzLCBvcDI6IF9ldmFsSW5mbyB9KSA9PiB7XG4gICAgbGV0IHN5bWJvbHMgPSB2bS5jb25zdGFudHMuZ2V0T3RoZXIoX3N5bWJvbHMpO1xuICAgIGxldCBldmFsSW5mbyA9IHZtLmNvbnN0YW50cy5nZXRBcnJheShfZXZhbEluZm8pO1xuICAgIGxldCBpbnNwZWN0b3IgPSBuZXcgU2NvcGVJbnNwZWN0b3Iodm0uc2NvcGUoKSwgc3ltYm9scywgZXZhbEluZm8pO1xuICAgIGNhbGxiYWNrKHZtLmdldFNlbGYoKS52YWx1ZSgpLCBwYXRoID0+IGluc3BlY3Rvci5nZXQocGF0aCkudmFsdWUoKSk7XG59KTsiXX0=
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9jb21waWxlZC9vcGNvZGVzL2RlYnVnZ2VyLmpzIl0sIm5hbWVzIjpbInNldERlYnVnZ2VyQ2FsbGJhY2siLCJyZXNldERlYnVnZ2VyQ2FsbGJhY2siLCJkZWJ1Z0NhbGxiYWNrIiwiY29udGV4dCIsImdldCIsImNvbnNvbGUiLCJpbmZvIiwiY2FsbGJhY2siLCJjYiIsIlNjb3BlSW5zcGVjdG9yIiwiY29uc3RydWN0b3IiLCJzY29wZSIsInN5bWJvbHMiLCJldmFsSW5mbyIsImxvY2FscyIsImkiLCJsZW5ndGgiLCJzbG90IiwibmFtZSIsInJlZiIsImdldFN5bWJvbCIsInBhdGgiLCJwYXJ0cyIsInNwbGl0IiwiaGVhZCIsInRhaWwiLCJldmFsU2NvcGUiLCJnZXRFdmFsU2NvcGUiLCJnZXRTZWxmIiwiaW5kZXhPZiIsInJlZHVjZSIsInIiLCJwYXJ0IiwiYWRkIiwidm0iLCJvcDEiLCJfc3ltYm9scyIsIm9wMiIsIl9ldmFsSW5mbyIsImNvbnN0YW50cyIsImdldE90aGVyIiwiZ2V0QXJyYXkiLCJpbnNwZWN0b3IiLCJ2YWx1ZSJdLCJtYXBwaW5ncyI6Ijs7Ozs7UUFZZ0JBLG1CLEdBQUFBLG1CO1FBR0FDLHFCLEdBQUFBLHFCOztBQWZoQjs7QUFDQTs7QUFDQTtBQUNBLFNBQVNDLGFBQVQsQ0FBdUJDLE9BQXZCLEVBQWdDQyxHQUFoQyxFQUFxQztBQUNqQ0MsWUFBUUMsSUFBUixDQUFhLDBEQUFiO0FBQ0E7QUFDQUgsZ0JBQVlDLElBQUksTUFBSixDQUFaO0FBQ0E7QUFDSDtBQUNEO0FBQ0EsSUFBSUcsV0FBV0wsYUFBZjtBQUNBO0FBQ08sU0FBU0YsbUJBQVQsQ0FBNkJRLEVBQTdCLEVBQWlDO0FBQ3BDRCxlQUFXQyxFQUFYO0FBQ0g7QUFDTSxTQUFTUCxxQkFBVCxHQUFpQztBQUNwQ00sZUFBV0wsYUFBWDtBQUNIO0FBQ0QsTUFBTU8sY0FBTixDQUFxQjtBQUNqQkMsZ0JBQVlDLEtBQVosRUFBbUJDLE9BQW5CLEVBQTRCQyxRQUE1QixFQUFzQztBQUNsQyxhQUFLRixLQUFMLEdBQWFBLEtBQWI7QUFDQSxhQUFLRyxNQUFMLEdBQWMsaUJBQWQ7QUFDQSxhQUFLLElBQUlDLElBQUksQ0FBYixFQUFnQkEsSUFBSUYsU0FBU0csTUFBN0IsRUFBcUNELEdBQXJDLEVBQTBDO0FBQ3RDLGdCQUFJRSxPQUFPSixTQUFTRSxDQUFULENBQVg7QUFDQSxnQkFBSUcsT0FBT04sUUFBUUssT0FBTyxDQUFmLENBQVg7QUFDQSxnQkFBSUUsTUFBTVIsTUFBTVMsU0FBTixDQUFnQkgsSUFBaEIsQ0FBVjtBQUNBLGlCQUFLSCxNQUFMLENBQVlJLElBQVosSUFBb0JDLEdBQXBCO0FBQ0g7QUFDSjtBQUNEZixRQUFJaUIsSUFBSixFQUFVO0FBQ04sWUFBSSxFQUFFVixLQUFGLEVBQVNHLE1BQVQsS0FBb0IsSUFBeEI7QUFDQSxZQUFJUSxRQUFRRCxLQUFLRSxLQUFMLENBQVcsR0FBWCxDQUFaO0FBQ0EsWUFBSSxDQUFDQyxJQUFELEVBQU8sR0FBR0MsSUFBVixJQUFrQkosS0FBS0UsS0FBTCxDQUFXLEdBQVgsQ0FBdEI7QUFDQSxZQUFJRyxZQUFZZixNQUFNZ0IsWUFBTixFQUFoQjtBQUNBLFlBQUlSLEdBQUo7QUFDQSxZQUFJSyxTQUFTLE1BQWIsRUFBcUI7QUFDakJMLGtCQUFNUixNQUFNaUIsT0FBTixFQUFOO0FBQ0gsU0FGRCxNQUVPLElBQUlkLE9BQU9VLElBQVAsQ0FBSixFQUFrQjtBQUNyQkwsa0JBQU1MLE9BQU9VLElBQVAsQ0FBTjtBQUNILFNBRk0sTUFFQSxJQUFJQSxLQUFLSyxPQUFMLENBQWEsR0FBYixNQUFzQixDQUF0QixJQUEyQkgsVUFBVUYsSUFBVixDQUEvQixFQUFnRDtBQUNuREwsa0JBQU1PLFVBQVVGLElBQVYsQ0FBTjtBQUNILFNBRk0sTUFFQTtBQUNITCxrQkFBTSxLQUFLUixLQUFMLENBQVdpQixPQUFYLEVBQU47QUFDQUgsbUJBQU9ILEtBQVA7QUFDSDtBQUNELGVBQU9HLEtBQUtLLE1BQUwsQ0FBWSxDQUFDQyxDQUFELEVBQUlDLElBQUosS0FBYUQsRUFBRTNCLEdBQUYsQ0FBTTRCLElBQU4sQ0FBekIsRUFBc0NiLEdBQXRDLENBQVA7QUFDSDtBQTVCZ0I7QUE4QnJCLHdCQUFlYyxHQUFmLENBQW1CLEVBQW5CLENBQXNCLGNBQXRCLEVBQXNDLENBQUNDLEVBQUQsRUFBSyxFQUFFQyxLQUFLQyxRQUFQLEVBQWlCQyxLQUFLQyxTQUF0QixFQUFMLEtBQTJDO0FBQzdFLFFBQUkxQixVQUFVc0IsR0FBR0ssU0FBSCxDQUFhQyxRQUFiLENBQXNCSixRQUF0QixDQUFkO0FBQ0EsUUFBSXZCLFdBQVdxQixHQUFHSyxTQUFILENBQWFFLFFBQWIsQ0FBc0JILFNBQXRCLENBQWY7QUFDQSxRQUFJSSxZQUFZLElBQUlqQyxjQUFKLENBQW1CeUIsR0FBR3ZCLEtBQUgsRUFBbkIsRUFBK0JDLE9BQS9CLEVBQXdDQyxRQUF4QyxDQUFoQjtBQUNBTixhQUFTMkIsR0FBR04sT0FBSCxHQUFhZSxLQUFiLEVBQVQsRUFBK0J0QixRQUFRcUIsVUFBVXRDLEdBQVYsQ0FBY2lCLElBQWQsRUFBb0JzQixLQUFwQixFQUF2QztBQUNILENBTEQiLCJmaWxlIjoibGliL2NvbXBpbGVkL29wY29kZXMvZGVidWdnZXIuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBkaWN0IH0gZnJvbSAnQGdsaW1tZXIvdXRpbCc7XG5pbXBvcnQgeyBBUFBFTkRfT1BDT0RFUyB9IGZyb20gJy4uLy4uL29wY29kZXMnO1xuLyogdHNsaW50OmRpc2FibGUgKi9cbmZ1bmN0aW9uIGRlYnVnQ2FsbGJhY2soY29udGV4dCwgZ2V0KSB7XG4gICAgY29uc29sZS5pbmZvKCdVc2UgYGNvbnRleHRgLCBhbmQgYGdldCg8cGF0aD4pYCB0byBkZWJ1ZyB0aGlzIHRlbXBsYXRlLicpO1xuICAgIC8vIGZvciBleGFtcGxlLi4uXG4gICAgY29udGV4dCA9PT0gZ2V0KCd0aGlzJyk7XG4gICAgZGVidWdnZXI7XG59XG4vKiB0c2xpbnQ6ZW5hYmxlICovXG5sZXQgY2FsbGJhY2sgPSBkZWJ1Z0NhbGxiYWNrO1xuLy8gRm9yIHRlc3RpbmcgcHVycG9zZXNcbmV4cG9ydCBmdW5jdGlvbiBzZXREZWJ1Z2dlckNhbGxiYWNrKGNiKSB7XG4gICAgY2FsbGJhY2sgPSBjYjtcbn1cbmV4cG9ydCBmdW5jdGlvbiByZXNldERlYnVnZ2VyQ2FsbGJhY2soKSB7XG4gICAgY2FsbGJhY2sgPSBkZWJ1Z0NhbGxiYWNrO1xufVxuY2xhc3MgU2NvcGVJbnNwZWN0b3Ige1xuICAgIGNvbnN0cnVjdG9yKHNjb3BlLCBzeW1ib2xzLCBldmFsSW5mbykge1xuICAgICAgICB0aGlzLnNjb3BlID0gc2NvcGU7XG4gICAgICAgIHRoaXMubG9jYWxzID0gZGljdCgpO1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGV2YWxJbmZvLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBsZXQgc2xvdCA9IGV2YWxJbmZvW2ldO1xuICAgICAgICAgICAgbGV0IG5hbWUgPSBzeW1ib2xzW3Nsb3QgLSAxXTtcbiAgICAgICAgICAgIGxldCByZWYgPSBzY29wZS5nZXRTeW1ib2woc2xvdCk7XG4gICAgICAgICAgICB0aGlzLmxvY2Fsc1tuYW1lXSA9IHJlZjtcbiAgICAgICAgfVxuICAgIH1cbiAgICBnZXQocGF0aCkge1xuICAgICAgICBsZXQgeyBzY29wZSwgbG9jYWxzIH0gPSB0aGlzO1xuICAgICAgICBsZXQgcGFydHMgPSBwYXRoLnNwbGl0KCcuJyk7XG4gICAgICAgIGxldCBbaGVhZCwgLi4udGFpbF0gPSBwYXRoLnNwbGl0KCcuJyk7XG4gICAgICAgIGxldCBldmFsU2NvcGUgPSBzY29wZS5nZXRFdmFsU2NvcGUoKTtcbiAgICAgICAgbGV0IHJlZjtcbiAgICAgICAgaWYgKGhlYWQgPT09ICd0aGlzJykge1xuICAgICAgICAgICAgcmVmID0gc2NvcGUuZ2V0U2VsZigpO1xuICAgICAgICB9IGVsc2UgaWYgKGxvY2Fsc1toZWFkXSkge1xuICAgICAgICAgICAgcmVmID0gbG9jYWxzW2hlYWRdO1xuICAgICAgICB9IGVsc2UgaWYgKGhlYWQuaW5kZXhPZignQCcpID09PSAwICYmIGV2YWxTY29wZVtoZWFkXSkge1xuICAgICAgICAgICAgcmVmID0gZXZhbFNjb3BlW2hlYWRdO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmVmID0gdGhpcy5zY29wZS5nZXRTZWxmKCk7XG4gICAgICAgICAgICB0YWlsID0gcGFydHM7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRhaWwucmVkdWNlKChyLCBwYXJ0KSA9PiByLmdldChwYXJ0KSwgcmVmKTtcbiAgICB9XG59XG5BUFBFTkRfT1BDT0RFUy5hZGQoNzAgLyogRGVidWdnZXIgKi8sICh2bSwgeyBvcDE6IF9zeW1ib2xzLCBvcDI6IF9ldmFsSW5mbyB9KSA9PiB7XG4gICAgbGV0IHN5bWJvbHMgPSB2bS5jb25zdGFudHMuZ2V0T3RoZXIoX3N5bWJvbHMpO1xuICAgIGxldCBldmFsSW5mbyA9IHZtLmNvbnN0YW50cy5nZXRBcnJheShfZXZhbEluZm8pO1xuICAgIGxldCBpbnNwZWN0b3IgPSBuZXcgU2NvcGVJbnNwZWN0b3Iodm0uc2NvcGUoKSwgc3ltYm9scywgZXZhbEluZm8pO1xuICAgIGNhbGxiYWNrKHZtLmdldFNlbGYoKS52YWx1ZSgpLCBwYXRoID0+IGluc3BlY3Rvci5nZXQocGF0aCkudmFsdWUoKSk7XG59KTsiXX0=

@@ -29,3 +29,3 @@ 'use strict';

});
_opcodes.APPEND_OPCODES.add(70 /* ResolveMaybeLocal */, (vm, { op1: _name }) => {
_opcodes.APPEND_OPCODES.add(69 /* ResolveMaybeLocal */, (vm, { op1: _name }) => {
let name = vm.constants.getString(_name);

@@ -70,2 +70,2 @@ let locals = vm.scope().getPartialMap();

});
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9jb21waWxlZC9vcGNvZGVzL2V4cHJlc3Npb25zLmpzIl0sIm5hbWVzIjpbImFkZCIsInZtIiwib3AxIiwiX2hlbHBlciIsInN0YWNrIiwiaGVscGVyIiwiY29uc3RhbnRzIiwiZ2V0RnVuY3Rpb24iLCJhcmdzIiwicG9wIiwidmFsdWUiLCJjbGVhciIsInB1c2giLCJfZnVuY3Rpb24iLCJmdW5jIiwic3ltYm9sIiwiZXhwciIsInJlZmVyZW5jZUZvclN5bWJvbCIsInNjb3BlIiwiYmluZFN5bWJvbCIsIl9uYW1lIiwibmFtZSIsImdldFN0cmluZyIsImxvY2FscyIsImdldFBhcnRpYWxNYXAiLCJyZWYiLCJ1bmRlZmluZWQiLCJnZXRTZWxmIiwiZ2V0Iiwic3ltYm9scyIsIm9wMiIsImJpbmRDYWxsZXJTY29wZSIsInB1c2hSb290U2NvcGUiLCJfa2V5Iiwia2V5IiwiX2Jsb2NrIiwiYmxvY2siLCJnZXRCbG9jayIsImhhc0Jsb2NrIiwiaGFzQmxvY2tQYXJhbXMiLCJzeW1ib2xUYWJsZSIsInBhcmFtZXRlcnMiLCJsZW5ndGgiLCJjb3VudCIsIm91dCIsImkiLCJyZXZlcnNlIl0sIm1hcHBpbmdzIjoiOztBQUFBOztBQUNBOztBQUNBOztBQUNBLHdCQUFlQSxHQUFmLENBQW1CLENBQW5CLENBQXFCLFlBQXJCLEVBQW1DLENBQUNDLEVBQUQsRUFBSyxFQUFFQyxLQUFLQyxPQUFQLEVBQUwsS0FBMEI7QUFDekQsUUFBSUMsUUFBUUgsR0FBR0csS0FBZjtBQUNBLFFBQUlDLFNBQVNKLEdBQUdLLFNBQUgsQ0FBYUMsV0FBYixDQUF5QkosT0FBekIsQ0FBYjtBQUNBLFFBQUlLLE9BQU9KLE1BQU1LLEdBQU4sRUFBWDtBQUNBLFFBQUlDLFFBQVFMLE9BQU9KLEVBQVAsRUFBV08sSUFBWCxDQUFaO0FBQ0FBLFNBQUtHLEtBQUw7QUFDQVYsT0FBR0csS0FBSCxDQUFTUSxJQUFULENBQWNGLEtBQWQ7QUFDSCxDQVBEO0FBUUEsd0JBQWVWLEdBQWYsQ0FBbUIs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O0FBR0Esd0JBQWVuQyxHQUFmLENBQW1CLENBQW5CLENBQXFCLGNBQXJCLEVBQXFDLENBQUNDLEVBQUQsRUFBSyxFQUFFQyxLQUFLaUMsTUFBUCxFQUFMLEtBQXlCO0FBQzFELFFBQUlHLFdBQVcsQ0FBQyxDQUFDckMsR0FBR2lCLEtBQUgsR0FBV21CLFFBQVgsQ0FBb0JGLE1BQXBCLENBQWpCO0FBQ0FsQyxPQUFHRyxLQUFILENBQVNRLElBQVQsQ0FBYzBCLG1FQUFkO0FBQ0gsQ0FIRDtBQUlBLHdCQUFldEMsR0FBZixDQUFtQixFQUFuQixDQUFzQixvQkFBdEIsRUFBNEMsQ0FBQ0MsRUFBRCxFQUFLLEVBQUVDLEtBQUtpQyxNQUFQLEVBQUwsS0FBeUI7QUFDakUsUUFBSUMsUUFBUW5DLEdBQUdpQixLQUFILEdBQVdtQixRQUFYLENBQW9CRixNQUFwQixDQUFaO0FBQ0EsUUFBSUksaUJBQWlCSCxTQUFTQSxNQUFNSSxXQUFOLENBQWtCQyxVQUFsQixDQUE2QkMsTUFBM0Q7QUFDQXpDLE9BQUdHLEtBQUgsQ0FBU1EsSUFBVCxDQUFjMkIseUVBQWQ7QUFDSCxDQUpEO0FBS0Esd0JBQWV2QyxHQUFmLENBQW1CLEVBQW5CLENBQXNCLFlBQXRCLEVBQW9DLENBQUNDLEVBQUQsRUFBSyxFQUFFQyxLQUFLeUMsS0FBUCxFQUFMLEtBQXdCO0FBQ3hELFFBQUlDLE1BQU0sRUFBVjtBQUNBLFNBQUssSUFBSUMsSUFBSUYsS0FBYixFQUFvQkUsSUFBSSxDQUF4QixFQUEyQkEsR0FBM0IsRUFBZ0M7QUFDNUJELFlBQUloQyxJQUFKLENBQVNYLEdBQUdHLEtBQUgsQ0FBU0ssR0FBVCxFQUFUO0FBQ0g7QUFDRFIsT0FBR0csS0FBSCxDQUFTUSxJQUFULENBQWMsNEJBQW9CZ0MsSUFBSUUsT0FBSixFQUFwQixDQUFkO0FBQ0gsQ0FORCIsImZpbGUiOiJsaWIvY29tcGlsZWQvb3Bjb2Rlcy9leHByZXNzaW9ucy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFQUEVORF9PUENPREVTIH0gZnJvbSAnLi4vLi4vb3Bjb2Rlcyc7XG5pbXBvcnQgeyBGQUxTRV9SRUZFUkVOQ0UsIFRSVUVfUkVGRVJFTkNFIH0gZnJvbSAnLi4vLi4vcmVmZXJlbmNlcyc7XG5pbXBvcnQgeyBDb25jYXRSZWZlcmVuY2UgfSBmcm9tICcuLi9leHByZXNzaW9ucy9jb25jYXQnO1xuQVBQRU5EX09QQ09ERVMuYWRkKDEgLyogSGVscGVyICovLCAodm0sIHsgb3AxOiBfaGVscGVyIH0pID0+IHtcbiAgICBsZXQgc3RhY2sgPSB2bS5zdGFjaztcbiAgICBsZXQgaGVscGVyID0gdm0uY29uc3RhbnRzLmdldEZ1bmN0aW9uKF9oZWxwZXIpO1xuICAgIGxldCBhcmdzID0gc3RhY2sucG9wKCk7XG4gICAgbGV0IHZhbHVlID0gaGVscGVyKHZtLCBhcmdzKTtcbiAgICBhcmdzLmNsZWFyKCk7XG4gICAgdm0uc3RhY2sucHVzaCh2YWx1ZSk7XG59KTtcbkFQUEVORF9PUENPREVTLmFkZCgyIC8qIEZ1bmN0aW9uICovLCAodm0sIHsgb3AxOiBfZnVuY3Rpb24gfSkgPT4ge1xuICAgIGxldCBmdW5jID0gdm0uY29uc3RhbnRzLmdldEZ1bmN0aW9uKF9mdW5jdGlvbik7XG4gICAgdm0uc3RhY2sucHVzaChmdW5jKHZtKSk7XG59KTtcbkFQUEVORF9PUENPREVTLmFkZCg1IC8qIEdldFZhcmlhYmxlICovLCAodm0sIHsgb3AxOiBzeW1ib2wgfSkgPT4ge1xuICAgIGxldCBleHByID0gdm0ucmVmZXJlbmNlRm9yU3ltYm9sKHN5bWJvbCk7XG4gICAgdm0uc3RhY2sucHVzaChleHByKTtcbn0pO1xuQVBQRU5EX09QQ09ERVMuYWRkKDQgLyogU2V0VmFyaWFibGUgKi8sICh2bSwgeyBvcDE6IHN5bWJvbCB9KSA9PiB7XG4gICAgbGV0IGV4cHIgPSB2bS5zdGFjay5wb3AoKTtcbiAgICB2bS5zY29wZSgpLmJpbmRTeW1ib2woc3ltYm9sLCBleHByKTtcbn0pO1xuQVBQRU5EX09QQ09ERVMuYWRkKDcwIC8qIFJlc29sdmVNYXliZUxvY2FsICovLCAodm0sIHsgb3AxOiBfbmFtZSB9KSA9PiB7XG4gICAgbGV0IG5hbWUgPSB2bS5jb25zdGFudHMuZ2V0U3RyaW5nKF9uYW1lKTtcbiAgICBsZXQgbG9jYWxzID0gdm0uc2NvcGUoKS5nZXRQYXJ0aWFsTWFwKCk7XG4gICAgbGV0IHJlZiA9IGxvY2Fsc1tuYW1lXTtcbiAgICBpZiAocmVmID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgcmVmID0gdm0uZ2V0U2VsZigpLmdldChuYW1lKTtcbiAgICB9XG4gICAgdm0uc3RhY2sucHVzaChyZWYpO1xufSk7XG5BUFBFTkRfT1BDT0RFUy5hZGQoMTkgLyogUm9vdFNjb3BlICovLCAodm0sIHsgb3AxOiBzeW1ib2xzLCBvcDI6IGJpbmRDYWxsZXJTY29wZSB9KSA9PiB7XG4gICAgdm0ucHVzaFJvb3RTY29wZShzeW1ib2xzLCAhIWJpbmRDYWxsZXJTY29wZSk7XG59KTtcbkFQUEVORF9PUENPREVTLmFkZCg2IC8qIEdldFByb3BlcnR5ICovLCAodm0sIHsgb3AxOiBfa2V5IH0pID0+IHtcbiAgICBsZXQga2V5ID0gdm0uY29uc3RhbnRzLmdldFN0cmluZyhfa2V5KTtcbiAgICBsZXQgZXhwciA9IHZtLnN0YWNrLnBvcCgpO1xuICAgIHZtLnN0YWNrLnB1c2goZXhwci5nZXQoa2V5KSk7XG59KTtcbkFQUEVORF9PUENPREVTLmFkZCg3IC8qIFB1c2hCbG9jayAqLywgKHZtLCB7IG9wMTogX2Jsb2NrIH0pID0+IHtcbiAgICBsZXQgYmxvY2sgPSBfYmxvY2sgPyB2bS5jb25zdGFudHMuZ2V0QmxvY2soX2Jsb2NrKSA6IG51bGw7XG4gICAgdm0uc3RhY2sucHVzaChibG9jayk7XG59KTtcbkFQUEVORF9PUENPREVTLmFkZCg4IC8qIEdldEJsb2NrICovLCAodm0sIHsgb3AxOiBfYmxvY2sgfSkgPT4ge1xuICAgIHZtLnN0YWNrLnB1c2godm0uc2NvcGUoKS5nZXRCbG9jayhfYmxvY2spKTtcbn0pO1xuQVBQRU5EX09QQ09ERVMuYWRkKDkgLyogSGFzQmxvY2sgKi8sICh2bSwgeyBvcDE6IF9ibG9jayB9KSA9PiB7XG4gICAgbGV0IGhhc0Jsb2NrID0gISF2bS5zY29wZSgpLmdldEJsb2NrKF9ibG9jayk7XG4gICAgdm0uc3RhY2sucHVzaChoYXNCbG9jayA/IFRSVUVfUkVGRVJFTkNFIDogRkFMU0VfUkVGRVJFTkNFKTtcbn0pO1xuQVBQRU5EX09QQ09ERVMuYWRkKDEwIC8qIEhhc0Jsb2NrUGFyYW1zICovLCAodm0sIHsgb3AxOiBfYmxvY2sgfSkgPT4ge1xuICAgIGxldCBibG9jayA9IHZtLnNjb3BlKCkuZ2V0QmxvY2soX2Jsb2NrKTtcbiAgICBsZXQgaGFzQmxvY2tQYXJhbXMgPSBibG9jayAmJiBibG9jay5zeW1ib2xUYWJsZS5wYXJhbWV0ZXJzLmxlbmd0aDtcbiAgICB2bS5zdGFjay5wdXNoKGhhc0Jsb2NrUGFyYW1zID8gVFJVRV9SRUZFUkVOQ0UgOiBGQUxTRV9SRUZFUkVOQ0UpO1xufSk7XG5BUFBFTkRfT1BDT0RFUy5hZGQoMTEgLyogQ29uY2F0ICovLCAodm0sIHsgb3AxOiBjb3VudCB9KSA9PiB7XG4gICAgbGV0IG91dCA9IFtdO1xuICAgIGZvciAobGV0IGkgPSBjb3VudDsgaSA+IDA7IGktLSkge1xuICAgICAgICBvdXQucHVzaCh2bS5zdGFjay5wb3AoKSk7XG4gICAgfVxuICAgIHZtLnN0YWNrLnB1c2gobmV3IENvbmNhdFJlZmVyZW5jZShvdXQucmV2ZXJzZSgpKSk7XG59KTsiXX0=
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9jb21waWxlZC9vcGNvZGVzL2V4cHJlc3Npb25zLmpzIl0sIm5hbWVzIjpbImFkZCIsInZtIiwib3AxIiwiX2hlbHBlciIsInN0YWNrIiwiaGVscGVyIiwiY29uc3RhbnRzIiwiZ2V0RnVuY3Rpb24iLCJhcmdzIiwicG9wIiwidmFsdWUiLCJjbGVhciIsInB1c2giLCJfZnVuY3Rpb24iLCJmdW5jIiwic3ltYm9sIiwiZXhwciIsInJlZmVyZW5jZUZvclN5bWJvbCIsInNjb3BlIiwiYmluZFN5bWJvbCIsIl9uYW1lIiwibmFtZSIsImdldFN0cmluZyIsImxvY2FscyIsImdldFBhcnRpYWxNYXAiLCJyZWYiLCJ1bmRlZmluZWQiLCJnZXRTZWxmIiwiZ2V0Iiwic3ltYm9scyIsIm9wMiIsImJpbmRDYWxsZXJTY29wZSIsInB1c2hSb290U2NvcGUiLCJfa2V5Iiwia2V5IiwiX2Jsb2NrIiwiYmxvY2siLCJnZXRCbG9jayIsImhhc0Jsb2NrIiwiaGFzQmxvY2tQYXJhbXMiLCJzeW1ib2xUYWJsZSIsInBhcmFtZXRlcnMiLCJsZW5ndGgiLCJjb3VudCIsIm91dCIsImkiLCJyZXZlcnNlIl0sIm1hcHBpbmdzIjoiOztBQUFBOztBQUNBOztBQUNBOztBQUNBLHdCQUFlQSxHQUFmLENBQW1CLENBQW5CLENBQXFCLFlBQXJCLEVBQW1DLENBQUNDLEVBQUQsRUFBSyxFQUFFQyxLQUFLQyxPQUFQLEVBQUwsS0FBMEI7QUFDekQsUUFBSUMsUUFBUUgsR0FBR0csS0FBZjtBQUNBLFFBQUlDLFNBQVNKLEdBQUdLLFNBQUgsQ0FBYUMsV0FBYixDQUF5QkosT0FBekIsQ0FBYjtBQUNBLFFBQUlLLE9BQU9KLE1BQU1LLEdBQU4sRUFBWDtBQUNBLFFBQUlDLFFBQVFMLE9BQU9KLEVBQVAsRUFBV08sSUFBWCxDQUFaO0FBQ0FBLFNBQUtHLEtBQUw7QUFDQVYsT0FBR0csS0FBSCxDQUFTUSxJQUFULENBQWNGLEtBQWQ7QUFDSCxDQVBEO0FBUUEsd0JBQWVWLEdBQWYsQ0FBbUIsQ0FBbkIsQ0FBcUIsY0FBckIsRUFBcUMsQ0FBQ0MsRUFBRCxFQUFLLEVBQUVDLEtBQUtXLFNBQVAsRUFBTCxLQUE0QjtBQUM3RCxRQUFJQyxPQUFPYixHQUFHSyxTQUFILENBQWFDLFdBQWIsQ0FBeUJNLFNBQXpCLENBQVg7QUFDQVosT0FBR0csS0FBSCxDQUFTUSxJQUFULENBQWNFLEtBQUtiLEVBQUwsQ0FBZDtBQUNILENBSEQ7QUFJQSx3QkFBZUQsR0FBZixDQUFtQixDQUFuQixDQUFxQixpQkFBckIsRUFBd0MsQ0FBQ0MsRUFBRCxFQUFLLEVBQUVDLEtBQUthLE1BQVAsRUFBTCxLQUF5QjtBQUM3RCxRQUFJQyxPQUFPZixHQUFHZ0Isa0JBQUgsQ0FBc0JGLE1BQXRCLENBQVg7QUFDQWQsT0FBR0csS0FBSCxDQUFTUSxJQUFULENBQWNJLElBQWQ7QUFDSCxDQUhEO0FBSUEsd0JBQWVoQixHQUFmLENBQW1CLENBQW5CLENBQXFCLGlCQUFyQixFQUF3QyxDQUFDQyxFQUFELEVBQUssRUFBRUMsS0FBS2EsTUFBUCxFQUFMLEtBQXlCO0FBQzdELFFBQUlDLE9BQU9mLEdBQUdHLEtBQUgsQ0FBU0ssR0FBVCxFQUFYO0FBQ0FSLE9BQUdpQixLQUFILEdBQVdDLFVBQVgsQ0FBc0JKLE1BQXRCLEVBQThCQyxJQUE5QjtBQUNILENBSEQ7QUFJQSx3QkFBZWhCLEdBQWYsQ0FBbUIsRUFBbkIsQ0FBc0IsdUJBQXRCLEVBQStDLENBQUNDLEVBQUQsRUFBSyxFQUFFQyxLQUFLa0IsS0FBUCxFQUFMLEtBQXdCO0FBQ25FLFFBQUlDLE9BQU9wQixHQUFHSyxTQUFILENBQWFnQixTQUFiLENBQXVCRixLQUF2QixDQUFYO0FBQ0EsUUFBSUcsU0FBU3RCLEdBQUdpQixLQUFILEdBQVdNLGFBQVgsRUFBYjtBQUNBLFFBQUlDLE1BQU1GLE9BQU9GLElBQVAsQ0FBVjtBQUNBLFFBQUlJLFFBQVFDLFNBQVosRUFBdUI7QUFDbkJELGNBQU14QixHQUFHMEIsT0FBSCxHQUFhQyxHQUFiLENBQWlCUCxJQUFqQixDQUFOO0FBQ0g7QUFDRHBCLE9BQUdHLEtBQUgsQ0FBU1EsSUFBVCxDQUFjYSxHQUFkO0FBQ0gsQ0FSRDtBQVNBLHdCQUFlekIsR0FBZixDQUFtQixFQUFuQixDQUFzQixlQUF0QixFQUF1QyxDQUFDQyxFQUFELEVBQUssRUFBRUMsS0FBSzJCLE9BQVAsRUFBZ0JDLEtBQUtDLGVBQXJCLEVBQUwsS0FBZ0Q7QUFDbkY5QixPQUFHK0IsYUFBSCxDQUFpQkgsT0FBakIsRUFBMEIsQ0FBQyxDQUFDRSxlQUE1QjtBQUNILENBRkQ7QUFHQSx3QkFBZS9CLEdBQWYsQ0FBbUIsQ0FBbkIsQ0FBcUIsaUJBQXJCLEVBQXdDLENBQUNDLEVBQUQsRUFBSyxFQUFFQyxLQUFLK0IsSUFBUCxFQUFMLEtBQXVCO0FBQzNELFFBQUlDLE1BQU1qQyxHQUFHSyxTQUFILENBQWFnQixTQUFiLENBQXVCVyxJQUF2QixDQUFWO0FBQ0EsUUFBSWpCLE9BQU9mLEdBQUdHLEtBQUgsQ0FBU0ssR0FBVCxFQUFYO0FBQ0FSLE9BQUdHLEtBQUgsQ0FBU1EsSUFBVCxDQUFjSSxLQUFLWSxHQUFMLENBQVNNLEdBQVQsQ0FBZDtBQUNILENBSkQ7QUFLQSx3QkFBZWxDLEdBQWYsQ0FBbUIsQ0FBbkIsQ0FBcUIsZUFBckIsRUFBc0MsQ0FBQ0MsRUFBRCxFQUFLLEVBQUVDLEtBQUtpQyxNQUFQLEVBQUwsS0FBeUI7QUFDM0QsUUFBSUMsUUFBUUQsU0FBU2xDLEdBQUdLLFNBQUgsQ0FBYStCLFFBQWIsQ0FBc0JGLE1BQXRCLENBQVQsR0FBeUMsSUFBckQ7QUFDQWxDLE9BQUdHLEtBQUgsQ0FBU1EsSUFBVCxDQUFjd0IsS0FBZDtBQUNILENBSEQ7QUFJQSx3QkFBZXBDLEdBQWYsQ0FBbUIsQ0FBbkIsQ0FBcUIsY0FBckIsRUFBcUMsQ0FBQ0MsRUFBRCxFQUFLLEVBQUVDLEtBQUtpQyxNQUFQLEVBQUwsS0FBeUI7QUFDMURsQyxPQUFHRyxLQUFILENBQVNRLElBQVQsQ0FBY1gsR0FBR2lCLEtBQUgsR0FBV21CLFFBQVgsQ0FBb0JGLE1BQXBCLENBQWQ7QUFDSCxDQUZEO0FBR0Esd0JBQWVuQyxHQUFmLENBQW1CLENBQW5CLENBQXFCLGNBQXJCLEVBQXFDLENBQUNDLEVBQUQsRUFBSyxFQUFFQyxLQUFLaUMsTUFBUCxFQUFMLEtBQXlCO0FBQzFELFFBQUlHLFdBQVcsQ0FBQyxDQUFDckMsR0FBR2lCLEtBQUgsR0FBV21CLFFBQVgsQ0FBb0JGLE1BQXBCLENBQWpCO0FBQ0FsQyxPQUFHRyxLQUFILENBQVNRLElBQVQsQ0FBYzBCLG1FQUFkO0FBQ0gsQ0FIRDtBQUlBLHdCQUFldEMsR0FBZixDQUFtQixFQUFuQixDQUFzQixvQkFBdEIsRUFBNEMsQ0FBQ0MsRUFBRCxFQUFLLEVBQUVDLEtBQUtpQyxNQUFQLEVBQUwsS0FBeUI7QUFDakUsUUFBSUMsUUFBUW5DLEdBQUdpQixLQUFILEdBQVdtQixRQUFYLENBQW9CRixNQUFwQixDQUFaO0FBQ0EsUUFBSUksaUJBQWlCSCxTQUFTQSxNQUFNSSxXQUFOLENBQWtCQyxVQUFsQixDQUE2QkMsTUFBM0Q7QUFDQXpDLE9BQUdHLEtBQUgsQ0FBU1EsSUFBVCxDQUFjMkIseUVBQWQ7QUFDSCxDQUpEO0FBS0Esd0JBQWV2QyxHQUFmLENBQW1CLEVBQW5CLENBQXNCLFlBQXRCLEVBQW9DLENBQUNDLEVBQUQsRUFBSyxFQUFFQyxLQUFLeUMsS0FBUCxFQUFMLEtBQXdCO0FBQ3hELFFBQUlDLE1BQU0sRUFBVjtBQUNBLFNBQUssSUFBSUMsSUFBSUYsS0FBYixFQUFvQkUsSUFBSSxDQUF4QixFQUEyQkEsR0FBM0IsRUFBZ0M7QUFDNUJELFlBQUloQyxJQUFKLENBQVNYLEdBQUdHLEtBQUgsQ0FBU0ssR0FBVCxFQUFUO0FBQ0g7QUFDRFIsT0FBR0csS0FBSCxDQUFTUSxJQUFULENBQWMsNEJBQW9CZ0MsSUFBSUUsT0FBSixFQUFwQixDQUFkO0FBQ0gsQ0FORCIsImZpbGUiOiJsaWIvY29tcGlsZWQvb3Bjb2Rlcy9leHByZXNzaW9ucy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFQUEVORF9PUENPREVTIH0gZnJvbSAnLi4vLi4vb3Bjb2Rlcyc7XG5pbXBvcnQgeyBGQUxTRV9SRUZFUkVOQ0UsIFRSVUVfUkVGRVJFTkNFIH0gZnJvbSAnLi4vLi4vcmVmZXJlbmNlcyc7XG5pbXBvcnQgeyBDb25jYXRSZWZlcmVuY2UgfSBmcm9tICcuLi9leHByZXNzaW9ucy9jb25jYXQnO1xuQVBQRU5EX09QQ09ERVMuYWRkKDEgLyogSGVscGVyICovLCAodm0sIHsgb3AxOiBfaGVscGVyIH0pID0+IHtcbiAgICBsZXQgc3RhY2sgPSB2bS5zdGFjaztcbiAgICBsZXQgaGVscGVyID0gdm0uY29uc3RhbnRzLmdldEZ1bmN0aW9uKF9oZWxwZXIpO1xuICAgIGxldCBhcmdzID0gc3RhY2sucG9wKCk7XG4gICAgbGV0IHZhbHVlID0gaGVscGVyKHZtLCBhcmdzKTtcbiAgICBhcmdzLmNsZWFyKCk7XG4gICAgdm0uc3RhY2sucHVzaCh2YWx1ZSk7XG59KTtcbkFQUEVORF9PUENPREVTLmFkZCgyIC8qIEZ1bmN0aW9uICovLCAodm0sIHsgb3AxOiBfZnVuY3Rpb24gfSkgPT4ge1xuICAgIGxldCBmdW5jID0gdm0uY29uc3RhbnRzLmdldEZ1bmN0aW9uKF9mdW5jdGlvbik7XG4gICAgdm0uc3RhY2sucHVzaChmdW5jKHZtKSk7XG59KTtcbkFQUEVORF9PUENPREVTLmFkZCg1IC8qIEdldFZhcmlhYmxlICovLCAodm0sIHsgb3AxOiBzeW1ib2wgfSkgPT4ge1xuICAgIGxldCBleHByID0gdm0ucmVmZXJlbmNlRm9yU3ltYm9sKHN5bWJvbCk7XG4gICAgdm0uc3RhY2sucHVzaChleHByKTtcbn0pO1xuQVBQRU5EX09QQ09ERVMuYWRkKDQgLyogU2V0VmFyaWFibGUgKi8sICh2bSwgeyBvcDE6IHN5bWJvbCB9KSA9PiB7XG4gICAgbGV0IGV4cHIgPSB2bS5zdGFjay5wb3AoKTtcbiAgICB2bS5zY29wZSgpLmJpbmRTeW1ib2woc3ltYm9sLCBleHByKTtcbn0pO1xuQVBQRU5EX09QQ09ERVMuYWRkKDY5IC8qIFJlc29sdmVNYXliZUxvY2FsICovLCAodm0sIHsgb3AxOiBfbmFtZSB9KSA9PiB7XG4gICAgbGV0IG5hbWUgPSB2bS5jb25zdGFudHMuZ2V0U3RyaW5nKF9uYW1lKTtcbiAgICBsZXQgbG9jYWxzID0gdm0uc2NvcGUoKS5nZXRQYXJ0aWFsTWFwKCk7XG4gICAgbGV0IHJlZiA9IGxvY2Fsc1tuYW1lXTtcbiAgICBpZiAocmVmID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgcmVmID0gdm0uZ2V0U2VsZigpLmdldChuYW1lKTtcbiAgICB9XG4gICAgdm0uc3RhY2sucHVzaChyZWYpO1xufSk7XG5BUFBFTkRfT1BDT0RFUy5hZGQoMTkgLyogUm9vdFNjb3BlICovLCAodm0sIHsgb3AxOiBzeW1ib2xzLCBvcDI6IGJpbmRDYWxsZXJTY29wZSB9KSA9PiB7XG4gICAgdm0ucHVzaFJvb3RTY29wZShzeW1ib2xzLCAhIWJpbmRDYWxsZXJTY29wZSk7XG59KTtcbkFQUEVORF9PUENPREVTLmFkZCg2IC8qIEdldFByb3BlcnR5ICovLCAodm0sIHsgb3AxOiBfa2V5IH0pID0+IHtcbiAgICBsZXQga2V5ID0gdm0uY29uc3RhbnRzLmdldFN0cmluZyhfa2V5KTtcbiAgICBsZXQgZXhwciA9IHZtLnN0YWNrLnBvcCgpO1xuICAgIHZtLnN0YWNrLnB1c2goZXhwci5nZXQoa2V5KSk7XG59KTtcbkFQUEVORF9PUENPREVTLmFkZCg3IC8qIFB1c2hCbG9jayAqLywgKHZtLCB7IG9wMTogX2Jsb2NrIH0pID0+IHtcbiAgICBsZXQgYmxvY2sgPSBfYmxvY2sgPyB2bS5jb25zdGFudHMuZ2V0QmxvY2soX2Jsb2NrKSA6IG51bGw7XG4gICAgdm0uc3RhY2sucHVzaChibG9jayk7XG59KTtcbkFQUEVORF9PUENPREVTLmFkZCg4IC8qIEdldEJsb2NrICovLCAodm0sIHsgb3AxOiBfYmxvY2sgfSkgPT4ge1xuICAgIHZtLnN0YWNrLnB1c2godm0uc2NvcGUoKS5nZXRCbG9jayhfYmxvY2spKTtcbn0pO1xuQVBQRU5EX09QQ09ERVMuYWRkKDkgLyogSGFzQmxvY2sgKi8sICh2bSwgeyBvcDE6IF9ibG9jayB9KSA9PiB7XG4gICAgbGV0IGhhc0Jsb2NrID0gISF2bS5zY29wZSgpLmdldEJsb2NrKF9ibG9jayk7XG4gICAgdm0uc3RhY2sucHVzaChoYXNCbG9jayA/IFRSVUVfUkVGRVJFTkNFIDogRkFMU0VfUkVGRVJFTkNFKTtcbn0pO1xuQVBQRU5EX09QQ09ERVMuYWRkKDEwIC8qIEhhc0Jsb2NrUGFyYW1zICovLCAodm0sIHsgb3AxOiBfYmxvY2sgfSkgPT4ge1xuICAgIGxldCBibG9jayA9IHZtLnNjb3BlKCkuZ2V0QmxvY2soX2Jsb2NrKTtcbiAgICBsZXQgaGFzQmxvY2tQYXJhbXMgPSBibG9jayAmJiBibG9jay5zeW1ib2xUYWJsZS5wYXJhbWV0ZXJzLmxlbmd0aDtcbiAgICB2bS5zdGFjay5wdXNoKGhhc0Jsb2NrUGFyYW1zID8gVFJVRV9SRUZFUkVOQ0UgOiBGQUxTRV9SRUZFUkVOQ0UpO1xufSk7XG5BUFBFTkRfT1BDT0RFUy5hZGQoMTEgLyogQ29uY2F0ICovLCAodm0sIHsgb3AxOiBjb3VudCB9KSA9PiB7XG4gICAgbGV0IG91dCA9IFtdO1xuICAgIGZvciAobGV0IGkgPSBjb3VudDsgaSA+IDA7IGktLSkge1xuICAgICAgICBvdXQucHVzaCh2bS5zdGFjay5wb3AoKSk7XG4gICAgfVxuICAgIHZtLnN0YWNrLnB1c2gobmV3IENvbmNhdFJlZmVyZW5jZShvdXQucmV2ZXJzZSgpKSk7XG59KTsiXX0=

@@ -5,3 +5,3 @@ 'use strict';

_opcodes.APPEND_OPCODES.add(69 /* GetPartialTemplate */, vm => {
_opcodes.APPEND_OPCODES.add(68 /* GetPartialTemplate */, vm => {
let stack = vm.stack;

@@ -11,2 +11,2 @@ let definition = stack.pop();

});
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9jb21waWxlZC9vcGNvZGVzL3BhcnRpYWwuanMiXSwibmFtZXMiOlsiYWRkIiwidm0iLCJzdGFjayIsImRlZmluaXRpb24iLCJwb3AiLCJwdXNoIiwidmFsdWUiLCJ0ZW1wbGF0ZSIsImFzUGFydGlhbCJdLCJtYXBwaW5ncyI6Ijs7QUFBQTs7QUFDQSx3QkFBZUEsR0FBZixDQUFtQixFQUFuQixDQUFzQix3QkFBdEIsRUFBZ0RDLE1BQU07QUFDbEQsUUFBSUMsUUFBUUQsR0FBR0MsS0FBZjtBQUNBLFFBQUlDLGFBQWFELE1BQU1FLEdBQU4sRUFBakI7QUFDQUYsVUFBTUcsSUFBTixDQUFXRixXQUFXRyxLQUFYLEdBQW1CQyxRQUFuQixDQUE0QkMsU0FBNUIsRUFBWDtBQUNILENBSkQiLCJmaWxlIjoibGliL2NvbXBpbGVkL29wY29kZXMvcGFydGlhbC5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFQUEVORF9PUENPREVTIH0gZnJvbSAnLi4vLi4vb3Bjb2Rlcyc7XG5BUFBFTkRfT1BDT0RFUy5hZGQoNjkgLyogR2V0UGFydGlhbFRlbXBsYXRlICovLCB2bSA9PiB7XG4gICAgbGV0IHN0YWNrID0gdm0uc3RhY2s7XG4gICAgbGV0IGRlZmluaXRpb24gPSBzdGFjay5wb3AoKTtcbiAgICBzdGFjay5wdXNoKGRlZmluaXRpb24udmFsdWUoKS50ZW1wbGF0ZS5hc1BhcnRpYWwoKSk7XG59KTsiXX0=
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9jb21waWxlZC9vcGNvZGVzL3BhcnRpYWwuanMiXSwibmFtZXMiOlsiYWRkIiwidm0iLCJzdGFjayIsImRlZmluaXRpb24iLCJwb3AiLCJwdXNoIiwidmFsdWUiLCJ0ZW1wbGF0ZSIsImFzUGFydGlhbCJdLCJtYXBwaW5ncyI6Ijs7QUFBQTs7QUFDQSx3QkFBZUEsR0FBZixDQUFtQixFQUFuQixDQUFzQix3QkFBdEIsRUFBZ0RDLE1BQU07QUFDbEQsUUFBSUMsUUFBUUQsR0FBR0MsS0FBZjtBQUNBLFFBQUlDLGFBQWFELE1BQU1FLEdBQU4sRUFBakI7QUFDQUYsVUFBTUcsSUFBTixDQUFXRixXQUFXRyxLQUFYLEdBQW1CQyxRQUFuQixDQUE0QkMsU0FBNUIsRUFBWDtBQUNILENBSkQiLCJmaWxlIjoibGliL2NvbXBpbGVkL29wY29kZXMvcGFydGlhbC5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFQUEVORF9PUENPREVTIH0gZnJvbSAnLi4vLi4vb3Bjb2Rlcyc7XG5BUFBFTkRfT1BDT0RFUy5hZGQoNjggLyogR2V0UGFydGlhbFRlbXBsYXRlICovLCB2bSA9PiB7XG4gICAgbGV0IHN0YWNrID0gdm0uc3RhY2s7XG4gICAgbGV0IGRlZmluaXRpb24gPSBzdGFjay5wb3AoKTtcbiAgICBzdGFjay5wdXNoKGRlZmluaXRpb24udmFsdWUoKS50ZW1wbGF0ZS5hc1BhcnRpYWwoKSk7XG59KTsiXX0=

@@ -209,36 +209,34 @@ "use strict";

return ['PushDynamicComponentManager', {}];
case 57 /* InitializeComponentState */:
return ['InitializeComponentState', {}];
case 58 /* PushArgs */:
return ['PushArgs', { synthetic: !!op1 }];
case 59 /* PrepareArgs */:
case 57 /* PushArgs */:
return ['PushArgs', { synthetic: !!op2 }];
case 58 /* PrepareArgs */:
return ['PrepareArgs', { state: Register[op1] }];
case 60 /* CreateComponent */:
case 59 /* CreateComponent */:
return ['CreateComponent', { flags: op1, state: Register[op2] }];
case 61 /* RegisterComponentDestructor */:
case 60 /* RegisterComponentDestructor */:
return ['RegisterComponentDestructor', {}];
case 62 /* PushComponentOperations */:
case 61 /* PushComponentOperations */:
return ['PushComponentOperations', {}];
case 63 /* GetComponentSelf */:
case 62 /* GetComponentSelf */:
return ['GetComponentSelf', { state: Register[op1] }];
case 64 /* GetComponentLayout */:
case 63 /* GetComponentLayout */:
return ['GetComponentLayout', { state: Register[op1] }];
case 65 /* BeginComponentTransaction */:
case 64 /* BeginComponentTransaction */:
return ['BeginComponentTransaction', {}];
case 66 /* CommitComponentTransaction */:
case 65 /* CommitComponentTransaction */:
return ['CommitComponentTransaction', {}];
case 67 /* DidCreateElement */:
case 66 /* DidCreateElement */:
return ['DidCreateElement', { state: Register[op1] }];
case 68 /* DidRenderLayout */:
case 67 /* DidRenderLayout */:
return ['DidRenderLayout', {}];
/// PARTIALS
case 69 /* GetPartialTemplate */:
case 68 /* GetPartialTemplate */:
return ['CompilePartial', {}];
case 70 /* ResolveMaybeLocal */:
case 69 /* ResolveMaybeLocal */:
return ['ResolveMaybeLocal', { name: c.getString(op1) }];
/// DEBUGGER
case 71 /* Debugger */:
case 70 /* Debugger */:
return ['Debugger', { symbols: c.getOther(op1), evalInfo: c.getArray(op2) }];
/// STATEMENTS
case 72 /* Size */:
case 71 /* Size */:
throw (0, _util.unreachable)();

@@ -252,3 +250,3 @@ }

constructor() {
this.evaluateOpcode = (0, _util.fillNulls)(72 /* Size */).slice();
this.evaluateOpcode = (0, _util.fillNulls)(71 /* Size */).slice();
}

@@ -334,2 +332,2 @@ add(name, evaluate) {

}
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9vcGNvZGVzLmpzIl0sIm5hbWVzIjpbImRlYnVnU2xpY2UiLCJpbnNwZWN0IiwiUmVnaXN0ZXIiLCJlbnYiLCJzdGFydCIsImVuZCIsInByb2dyYW0iLCJjb25zdGFudHMiLCJjb25zb2xlIiwiZ3JvdXAiLCJpIiwidHlwZSIsIm9wMSIsIm9wMiIsIm9wMyIsIm9wY29kZSIsIm5hbWUiLCJwYXJhbXMiLCJkZWJ1ZyIsImxvZyIsImxvZ09wY29kZSIsImdyb3VwRW5kIiwib3V0IiwiYXJncyIsIk9iamVjdCIsImtleXMiLCJtYXAiLCJwIiwianNvbiIsImpvaW4iLCJwYXJhbSIsInN0cmluZyIsIkpTT04iLCJzdHJpbmdpZnkiLCJlIiwidW5kZWZpbmVkIiwicGFyc2UiLCJHbGltbWVyRGVidWciLCJjIiwib3AiLCJoZWxwZXIiLCJnZXRGdW5jdGlvbiIsImZ1bmN0aW9uIiwic3ltYm9sIiwia2V5IiwiZ2V0U3RyaW5nIiwiYmxvY2siLCJnZXRCbG9jayIsInNpemUiLCJ2YWx1ZSIsImdldE90aGVyIiwicHJpbWl0aXZlIiwicmVnaXN0ZXIiLCJvZmZzZXQiLCJjb3VudCIsInN5bWJvbHMiLCJiaW5kQ2FsbGVyU2NvcGUiLCJ0ZXh0IiwiY29tbWVudCIsInRhZyIsIm5hbWVzcGFjZSIsInRydXN0aW5nIiwibnMiLCJpbnZva2VyIiwidG8iLCJkZWZpbml0aW9uIiwic3ludGhldGljIiwic3RhdGUiLCJmbGFncyIsImV2YWxJbmZvIiwiZ2V0QXJyYXkiLCJBcHBlbmRPcGNvZGVzIiwiY29uc3RydWN0b3IiLCJldmFsdWF0ZU9wY29kZSIsInNsaWNlIiwiYWRkIiwiZXZhbHVhdGUiLCJ2bSIsImZ1bmMiLCJzdGFjayIsInRvQXJyYXkiLCJzY29wZSIsInMiLCJlbGVtZW50cyIsIkFQUEVORF9PUENPREVTIiwiQWJzdHJhY3RPcGNvZGUiLCJ0b0pTT04iLCJndWlkIiwiX2d1aWQiLCJVcGRhdGluZ09wY29kZSIsImFyZ3VtZW50cyIsIm5leHQiLCJwcmV2Iiwib3Bjb2RlcyIsImJ1ZmZlciIsImZvckVhY2giLCJfaW5zcGVjdCIsImxldmVsIiwiaW5kZXgiLCJpbmRlbnRhdGlvbiIsInB1c2giLCJkZXRhaWxzIiwibGVuZ3RoIiwiY2hpbGRyZW4iXSwibWFwcGluZ3MiOiI7Ozs7OztRQXlCZ0JBLFUsR0FBQUEsVTtRQWlRQUMsTyxHQUFBQSxPOztBQTFSaEI7O0FBRUE7Ozs7OztBQU1PLElBQUlDLHVDQUFKO0FBQ1AsQ0FBQyxVQUFVQSxRQUFWLEVBQW9CO0FBQ2pCO0FBQ0FBLGFBQVNBLFNBQVMsSUFBVCxJQUFpQixDQUExQixJQUErQixJQUEvQjtBQUNBO0FBQ0FBLGFBQVNBLFNBQVMsSUFBVCxJQUFpQixDQUExQixJQUErQixJQUEvQjtBQUNBO0FBQ0FBLGFBQVNBLFNBQVMsSUFBVCxJQUFpQixDQUExQixJQUErQixJQUEvQjtBQUNBO0FBQ0FBLGFBQVNBLFNBQVMsSUFBVCxJQUFpQixDQUExQixJQUErQixJQUEvQjtBQUNBO0FBQ0FBLGFBQVNBLFNBQVMsSUFBVCxJQUFpQixDQUExQixJQUErQixJQUEvQjtBQUNBQSxhQUFTQSxTQUFTLElBQVQsSUFBaUIsQ0FBMUIsSUFBK0IsSUFBL0I7QUFDQTtBQUNBQSxhQUFTQSxTQUFTLElBQVQsSUFBaUIsQ0FBMUIsSUFBK0IsSUFBL0I7QUFDQUEsYUFBU0EsU0FBUyxJQUFULElBQWlCLENBQTFCLElBQStCLElBQS9CO0FBQ0gsQ0FmRCxFQWVHQSxxQkFoQlFBLFFBZ0JSLEdBQWFBLFdBQVcsRUFBeEIsQ0FmSDtBQWdCTyxTQUFTRixVQUFULENBQW9CRyxHQUFwQixFQUF5QkMsS0FBekIsRUFBZ0NDLEdBQWhDLEVBQXFDO0FBQ3hDLFFBQUksQ0FBQyxLQUFELElBQVUsS0FBZCxFQUFxQjtBQUNqQjtBQUNBLFlBQUksRUFBRUMsT0FBRixFQUFXQyxTQUFYLEtBQXlCSixHQUE3QjtBQUNBO0FBQ0EsWUFBSSxPQUFPSyxPQUFQLEtBQW1CLFdBQXZCLEVBQW9DO0FBQ2hDO0FBQ0g7QUFDRDtBQUNBLFlBQUksT0FB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QUFtQztBQUMvQlAsZUFBT00sSUFBUCxDQUFZLEdBQVo7QUFDQSxZQUFJckYsT0FBT1EsSUFBWCxFQUFpQjtBQUNidUUsbUJBQU9NLElBQVAsQ0FBWXJGLE9BQU9RLElBQVAsQ0FBWU0sSUFBWixDQUFpQixJQUFqQixDQUFaO0FBQ0g7QUFDRCxZQUFJZCxPQUFPc0YsT0FBWCxFQUFvQjtBQUNoQixnQkFBSTVFLE9BQU9ELE9BQU9DLElBQVAsQ0FBWVYsT0FBT3NGLE9BQW5CLENBQVg7QUFDQSxnQkFBSTVFLEtBQUs2RSxNQUFULEVBQWlCO0FBQ2Isb0JBQUl2RixPQUFPUSxJQUFQLElBQWVSLE9BQU9RLElBQVAsQ0FBWStFLE1BQS9CLEVBQXVDO0FBQ25DUiwyQkFBT00sSUFBUCxDQUFZLElBQVo7QUFDSDtBQUNETix1QkFBT00sSUFBUCxDQUFZM0UsS0FBS0MsR0FBTCxDQUFTa0IsT0FBUSxHQUFFQSxHQUFJLElBQUc3QixPQUFPc0YsT0FBUCxJQUFrQnRGLE9BQU9zRixPQUFQLENBQWV6RCxHQUFmLENBQW9CLEVBQWhFLEVBQW1FZixJQUFuRSxDQUF3RSxJQUF4RSxDQUFaO0FBQ0g7QUFDSjtBQUNEaUUsZUFBT00sSUFBUCxDQUFZLEdBQVo7QUFDSDtBQUNETixXQUFPTSxJQUFQLENBQVksSUFBWjtBQUNBLFFBQUlyRixPQUFPd0YsUUFBUCxJQUFtQnhGLE9BQU93RixRQUFQLENBQWdCRCxNQUF2QyxFQUErQztBQUMzQyxhQUFLLElBQUk1RixJQUFJLENBQWIsRUFBZ0JBLElBQUlLLE9BQU93RixRQUFQLENBQWdCRCxNQUFwQyxFQUE0QzVGLEdBQTVDLEVBQWlEO0FBQzdDc0YscUJBQVNqRixPQUFPd0YsUUFBUCxDQUFnQjdGLENBQWhCLENBQVQsRUFBNkJvRixNQUE3QixFQUFxQ0csUUFBUSxDQUE3QyxFQUFnRHZGLENBQWhEO0FBQ0g7QUFDSjtBQUNKIiwiZmlsZSI6ImxpYi9vcGNvZGVzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaW5pdGlhbGl6ZUd1aWQsIGZpbGxOdWxscywgdW5yZWFjaGFibGUgfSBmcm9tICdAZ2xpbW1lci91dGlsJztcblxuLyoqXG4gKiBSZWdpc3RlcnNcbiAqXG4gKiBGb3IgdGhlIG1vc3QgcGFydCwgdGhlc2UgZm9sbG93cyBNSVBTIG5hbWluZyBjb252ZW50aW9ucywgaG93ZXZlciB0aGVcbiAqIHJlZ2lzdGVyIG51bWJlcnMgYXJlIGRpZmZlcmVudC5cbiAqL1xuZXhwb3J0IHZhciBSZWdpc3RlcjtcbihmdW5jdGlvbiAoUmVnaXN0ZXIpIHtcbiAgICAvLyAkMCBvciAkcGMgKHByb2dyYW0gY291bnRlcik6IHBvaW50ZXIgaW50byBgcHJvZ3JhbWAgZm9yIHRoZSBuZXh0IGluc3R1cmN0aW9uOyAtMSBtZWFucyBleGl0XG4gICAgUmVnaXN0ZXJbUmVnaXN0ZXJbXCJwY1wiXSA9IDBdID0gXCJwY1wiO1xuICAgIC8vICQxIG9yICRyYSAocmV0dXJuIGFkZHJlc3MpOiBwb2ludGVyIGludG8gYHByb2dyYW1gIGZvciB0aGUgcmV0dXJuXG4gICAgUmVnaXN0ZXJbUmVnaXN0ZXJbXCJyYVwiXSA9IDFdID0gXCJyYVwiO1xuICAgIC8vICQyIG9yICRmcCAoZnJhbWUgcG9pbnRlcik6IHBvaW50ZXIgaW50byB0aGUgYGV2YWxTdGFja2AgZm9yIHRoZSBiYXNlIG9mIHRoZSBzdGFja1xuICAgIFJlZ2lzdGVyW1JlZ2lzdGVyW1wiZnBcIl0gPSAyXSA9IFwiZnBcIjtcbiAgICAvLyAkMyBvciAkc3AgKHN0YWNrIHBvaW50ZXIpOiBwb2ludGVyIGludG8gdGhlIGBldmFsU3RhY2tgIGZvciB0aGUgdG9wIG9mIHRoZSBzdGFja1xuICAgIFJlZ2lzdGVyW1JlZ2lzdGVyW1wic3BcIl0gPSAzXSA9IFwic3BcIjtcbiAgICAvLyAkNC0kNSBvciAkczAtJHMxIChzYXZlZCk6IGNhbGxlZSBzYXZlZCBnZW5lcmFsLXB1cnBvc2UgcmVnaXN0ZXJzXG4gICAgUmVnaXN0ZXJbUmVnaXN0ZXJbXCJzMFwiXSA9IDRdID0gXCJzMFwiO1xuICAgIFJlZ2lzdGVyW1JlZ2lzdGVyW1wiczFcIl0gPSA1XSA9IFwiczFcIjtcbiAgICAvLyAkNi0kNyBvciAkdDAtJHQxICh0ZW1wb3Jhcmllcyk6IGNhbGxlciBzYXZlZCBnZW5lcmFsLXB1cnBvc2UgcmVnaXN0ZXJzXG4gICAgUmVnaXN0ZXJbUmVnaXN0ZXJbXCJ0MFwiXSA9IDZdID0gXCJ0MFwiO1xuICAgIFJlZ2lzdGVyW1JlZ2lzdGVyW1widDFcIl0gPSA3XSA9IFwidDFcIjtcbn0pKFJlZ2lzdGVyIHx8IChSZWdpc3RlciA9IHt9KSk7XG5leHBvcnQgZnVuY3Rpb24gZGVidWdTbGljZShlbnYsIHN0YXJ0LCBlbmQpIHtcbiAgICBpZiAoIWZhbHNlICYmIGZhbHNlKSB7XG4gICAgICAgIC8qIHRzbGludDpkaXNhYmxlOm5vLWNvbnNvbGUgKi9cbiAgICAgICAgbGV0IHsgcHJvZ3JhbSwgY29uc3RhbnRzIH0gPSBlbnY7XG4gICAgICAgIC8vIGNvbnNvbGUgaXMgbm90IGF2YWlsYWJsZSBpbiBJRTlcbiAgICAgICAgaWYgKHR5cGVvZiBjb25zb2xlID09PSAndW5kZWZpbmVkJykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIC8vIElFMTAgZG9lcyBub3QgaGF2ZSBgY29uc29sZS5ncm91cGBcbiAgICAgICAgaWYgKHR5cGVvZiBjb25zb2xlLmdyb3VwICE9PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgY29uc29sZS5ncm91cChgJWMke3N0YXJ0fToke2VuZH1gLCAnY29sb3I6ICM5OTknKTtcbiAgICAgICAgZm9yIChsZXQgaSA9IHN0YXJ0OyBpIDw9IGVuZDsgaSArPSA0KSB7XG4gICAgICAgICAgICBsZXQgeyB0eXBlLCBvcDEsIG9wMiwgb3AzIH0gPSBwcm9ncmFtLm9wY29kZShpKTtcbiAgICAgICAgICAgIGxldCBbbmFtZSwgcGFyYW1zXSA9IGRlYnVnKGNvbnN0YW50cywgdHlwZSwgb3AxLCBvcDIsIG9wMyk7XG4gICAgICAgICAgICBjb25zb2xlLmxvZyhgJHtpfS4gJHtsb2dPcGNvZGUobmFtZSwgcGFyYW1zKX1gKTtcbiAgICAgICAgfVxuICAgICAgICBjb25zb2xlLmdyb3VwRW5kKCk7XG4gICAgICAgIC8qIHRzbGludDplbmFibGU6bm8tY29uc29sZSAqL1xuICAgIH1cbn1cbmZ1bmN0aW9uIGxvZ09wY29kZSh0eXBlLCBwYXJhbXMpIHtcbiAgICBpZiAoIWZhbHNlICYmIGZhbHNlKSB7XG4gICAgICAgIGxldCBvdXQgPSB0eXBlO1xuICAgICAgICBpZiAocGFyYW1zKSB7XG4gICAgICAgICAgICBsZXQgYXJncyA9IE9iamVjdC5rZXlzKHBhcmFtcykubWFwKHAgPT4gYCAke3B9PSR7anNvbihwYXJhbXNbcF0pfWApLmpvaW4oJycpO1xuICAgICAgICAgICAgb3V0ICs9IGFyZ3M7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGAoJHtvdXR9KWA7XG4gICAgfVxufVxuZnVuY3Rpb24ganNvbihwYXJhbSkge1xuICAgIGlmICh0eXBlb2YgcGFyYW0gPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgcmV0dXJuICc8ZnVuY3Rpb24+JztcbiAgICB9XG4gICAgbGV0IHN0cmluZztcbiAgICB0cnkge1xuICAgICAgICBzdHJpbmcgPSBKU09OLnN0cmluZ2lmeShwYXJhbSk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgICByZXR1cm4gJzxjYW5ub3QgZ2VuZXJhdGUgSlNPTj4nO1xuICAgIH1cbiAgICBpZiAoc3RyaW5nID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgcmV0dXJuICd1bmRlZmluZWQnO1xuICAgIH1cbiAgICBsZXQgZGVidWcgPSBKU09OLnBhcnNlKHN0cmluZyk7XG4gICAgaWYgKHR5cGVvZiBkZWJ1ZyA9PT0gJ29iamVjdCcgJiYgZGVidWcgIT09IG51bGwgJiYgZGVidWcuR2xpbW1lckRlYnVnICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgcmV0dXJuIGRlYnVnLkdsaW1tZXJEZWJ1ZztcbiAgICB9XG4gICAgcmV0dXJuIHN0cmluZztcbn1cbmZ1bmN0aW9uIGRlYnVnKGMsIG9wLCBvcDEsIG9wMiwgb3AzKSB7XG4gICAgaWYgKCFmYWxzZSAmJiBmYWxzZSkge1xuICAgICAgICBzd2l0Y2ggKG9wKSB7XG4gICAgICAgICAgICBjYXNlIDAgLyogQnVnICovOlxuICAgICAgICAgICAgICAgIHRocm93IHVucmVhY2hhYmxlKCk7XG4gICAgICAgICAgICBjYXNlIDEgLyogSGVscGVyICovOlxuICAgICAgICAgICAgICAgIHJldHVybiBbJ0hlbHBlcicsIHsgaGVscGVyOiBjLmdldEZ1bmN0aW9uKG9wMSkgfV07XG4gICAgICAgICAgICBjYXNlIDIgLyogRnVuY3Rpb24gKi86XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnRnVuY3Rpb24nLCB7IGZ1bmN0aW9uOiBjLmdldEZ1bmN0aW9uKG9wMSkgfV07XG4gICAgICAgICAgICBjYXNlIDQgLyogU2V0VmFyaWFibGUgKi86XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnU2V0VmFyaWFibGUnLCB7IHN5bWJvbDogb3AxIH1dO1xuICAgICAgICAgICAgY2FzZSA1IC8qIEdldFZhcmlhYmxlICovOlxuICAgICAgICAgICAgICAgIHJldHVybiBbJ0dldFZhcmlhYmxlJywgeyBzeW1ib2w6IG9wMSB9XTtcbiAgICAgICAgICAgIGNhc2UgNiAvKiBHZXRQcm9wZXJ0eSAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydHZXRQcm9wZXJ0eScsIHsga2V5OiBjLmdldFN0cmluZyhvcDEpIH1dO1xuICAgICAgICAgICAgY2FzZSA3IC8qIFB1c2hCbG9jayAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydQdXNoQmxvY2snLCB7IGJsb2NrOiBjLmdldEJsb2NrKG9wMSkgfV07XG4gICAgICAgICAgICBjYXNlIDggLyogR2V0QmxvY2sgKi86XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnR2V0QmxvY2snLCB7IHN5bWJvbDogb3AxIH1dO1xuICAgICAgICAgICAgY2FzZSA5IC8qIEhhc0Jsb2NrICovOlxuICAgICAgICAgICAgICAgIHJldHVybiBbJ0hhc0Jsb2NrJywgeyBibG9jazogb3AxIH1dO1xuICAgICAgICAgICAgY2FzZSAxMCAvKiBIYXNCbG9ja1BhcmFtcyAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydIYXNCbG9ja1BhcmFtcycsIHsgYmxvY2s6IG9wMSB9XTtcbiAgICAgICAgICAgIGNhc2UgMTEgLyogQ29uY2F0ICovOlxuICAgICAgICAgICAgICAgIHJldHVybiBbJ0NvbmNhdCcsIHsgc2l6ZTogb3AxIH1dO1xuICAgICAgICAgICAgY2FzZSAxMiAvKiBJbW1lZGlhdGUgKi86XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnSW1tZWRpYXRlJywgeyB2YWx1ZTogb3AxIH1dO1xuICAgICAgICAgICAgY2FzZSAxMyAvKiBDb25zdGFudCAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydDb25zdGFudCcsIHsgdmFsdWU6IGMuZ2V0T3RoZXIob3AxKSB9XTtcbiAgICAgICAgICAgIGNhc2UgMTQgLyogUHJpbWl0aXZlUmVmZXJlbmNlICovOlxuICAgICAgICAgICAgICAgIHJldHVybiBbJ1ByaW1pdGl2ZVJlZmVyZW5jZScsIHsgcHJpbWl0aXZlOiBvcDEgfV07XG4gICAgICAgICAgICBjYXNlIDE1IC8qIER1cCAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydEdXAnLCB7IHJlZ2lzdGVyOiBSZWdpc3RlcltvcDFdLCBvZmZzZXQ6IG9wMiB9XTtcbiAgICAgICAgICAgIGNhc2UgMTYgLyogUG9wICovOlxuICAgICAgICAgICAgICAgIHJldHVybiBbJ1BvcCcsIHsgY291bnQ6IG9wMSB9XTtcbiAgICAgICAgICAgIGNhc2UgMTcgLyogTG9hZCAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydMb2FkJywgeyByZWdpc3RlcjogUmVnaXN0ZXJbb3AxXSB9XTtcbiAgICAgICAgICAgIGNhc2UgMTggLyogRmV0Y2ggKi86XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnRmV0Y2gnLCB7IHJlZ2lzdGVyOiBSZWdpc3RlcltvcDFdIH1dO1xuICAgICAgICAgICAgLy8vIFBSRUxVREUgJiBFWElUXG4gICAgICAgICAgICBjYXNlIDE5IC8qIFJvb3RTY29wZSAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydSb290U2NvcGUnLCB7IHN5bWJvbHM6IG9wMSwgYmluZENhbGxlclNjb3BlOiAhIW9wMiB9XTtcbiAgICAgICAgICAgIGNhc2UgMjAgLyogQ2hpbGRTY29wZSAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydDaGlsZFNjb3BlJywge31dO1xuICAgICAgICAgICAgY2FzZSAyMSAvKiBQb3BTY29wZSAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydQb3BTY29wZScsIHt9XTtcbiAgICAgICAgICAgIGNhc2UgMjIgLyogUmV0dXJuICovOlxuICAgICAgICAgICAgICAgIHJldHVybiBbJ1JldHVybicsIHt9XTtcbiAgICAgICAgICAgIC8vLyBIVE1MXG4gICAgICAgICAgICBjYXNlIDIzIC8qIFRleHQgKi86XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnVGV4dCcsIHsgdGV4dDogYy5nZXRTdHJpbmcob3AxKSB9XTtcbiAgICAgICAgICAgIGNhc2UgMjQgLyogQ29tbWVudCAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydDb21tZW50JywgeyBjb21tZW50OiBjLmdldFN0cmluZyhvcDEpIH1dO1xuICAgICAgICAgICAgY2FzZSAyNSAvKiBEeW5hbWljQ29udGVudCAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydEeW5hbWljQ29udGVudCcsIHsgdmFsdWU6IGMuZ2V0T3RoZXIob3AxKSB9XTtcbiAgICAgICAgICAgIGNhc2UgMjYgLyogT3BlbkVsZW1lbnQgKi86XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnT3BlbkVsZW1lbnQnLCB7IHRhZzogYy5nZXRTdHJpbmcob3AxKSB9XTtcbiAgICAgICAgICAgIGNhc2UgMjcgLyogT3BlbkVsZW1lbnRXaXRoT3BlcmF0aW9ucyAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydPcGVuRWxlbWVudFdpdGhPcGVyYXRpb25zJywgeyB0YWc6IGMuZ2V0U3RyaW5nKG9wMSkgfV07XG4gICAgICAgICAgICBjYXNlIDI4IC8qIE9wZW5EeW5hbWljRWxlbWVudCAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydPcGVuRHluYW1pY0VsZW1lbnQnLCB7fV07XG4gICAgICAgICAgICBjYXNlIDI5IC8qIFN0YXRpY0F0dHIgKi86XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnU3RhdGljQXR0cicsIHsgbmFtZTogYy5nZXRTdHJpbmcob3AxKSwgdmFsdWU6IGMuZ2V0U3RyaW5nKG9wMiksIG5hbWVzcGFjZTogb3AzID8gYy5nZXRTdHJpbmcob3AzKSA6IG51bGwgfV07XG4gICAgICAgICAgICBjYXNlIDMwIC8qIER5bmFtaWNBdHRyICovOlxuICAgICAgICAgICAgICAgIHJldHVybiBbJ0R5bmFtaWNBdHRyJywgeyBuYW1lOiBjLmdldFN0cmluZyhvcDEpLCB0cnVzdGluZzogISFvcDIgfV07XG4gICAgICAgICAgICBjYXNlIDMxIC8qIER5bmFtaWNBdHRyTlMgKi86XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnRHluYW1pY0F0dHJOUycsIHsgbmFtZTogYy5nZXRTdHJpbmcob3AxKSwgbnM6IGMuZ2V0U3RyaW5nKG9wMiksIHRydXN0aW5nOiAhIW9wMiB9XTtcbiAgICAgICAgICAgIGNhc2UgMzIgLyogRmx1c2hFbGVtZW50ICovOlxuICAgICAgICAgICAgICAgIHJldHVybiBbJ0ZsdXNoRWxlbWVudCcsIHt9XTtcbiAgICAgICAgICAgIGNhc2UgMzMgLyogQ2xvc2VFbGVtZW50ICovOlxuICAgICAgICAgICAgICAgIHJldHVybiBbJ0Nsb3NlRWxlbWVudCcsIHt9XTtcbiAgICAgICAgICAgIC8vLyBNT0RJRklFUlxuICAgICAgICAgICAgY2FzZSAzNCAvKiBNb2RpZmllciAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydNb2RpZmllcicsIHt9XTtcbiAgICAgICAgICAgIC8vLyBXT1JNSE9MRVxuICAgICAgICAgICAgY2FzZSAzNSAvKiBQdXNoUmVtb3RlRWxlbWVudCAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydQdXNoUmVtb3RlRWxlbWVudCcsIHt9XTtcbiAgICAgICAgICAgIGNhc2UgMzYgLyogUG9wUmVtb3RlRWxlbWVudCAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydQb3BSZW1vdGVFbGVtZW50Jywge31dO1xuICAgICAgICAgICAgLy8vIERZTkFNSUMgU0NPUEVcbiAgICAgICAgICAgIGNhc2UgMzcgLyogQmluZER5bmFtaWNTY29wZSAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydCaW5kRHluYW1pY1Njb3BlJywge31dO1xuICAgICAgICAgICAgY2FzZSAzOCAvKiBQdXNoRHluYW1pY1Njb3BlICovOlxuICAgICAgICAgICAgICAgIHJldHVybiBbJ1B1c2hEeW5hbWljU2NvcGUnLCB7fV07XG4gICAgICAgICAgICBjYXNlIDM5IC8qIFBvcER5bmFtaWNTY29wZSAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydQb3BEeW5hbWljU2NvcGUnLCB7fV07XG4gICAgICAgICAgICAvLy8gVk1cbiAgICAgICAgICAgIGNhc2UgNDAgLyogQ29tcGlsZUR5bmFtaWNCbG9jayAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydDb21waWxlRHluYW1pY0Jsb2NrJywge31dO1xuICAgICAgICAgICAgY2FzZSA0MSAvKiBJbnZva2VTdGF0aWMgKi86XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnSW52b2tlU3RhdGljJywgeyBibG9jazogYy5nZXRCbG9jayhvcDEpIH1dO1xuICAgICAgICAgICAgY2FzZSA0MiAvKiBJbnZva2VEeW5hbWljICovOlxuICAgICAgICAgICAgICAgIHJldHVybiBbJ0ludm9rZUR5bmFtaWMnLCB7IGludm9rZXI6IGMuZ2V0T3RoZXIob3AxKSB9XTtcbiAgICAgICAgICAgIGNhc2UgNDMgLyogSnVtcCAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydKdW1wJywgeyB0bzogb3AxIH1dO1xuICAgICAgICAgICAgY2FzZSA0NCAvKiBKdW1wSWYgKi86XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnSnVtcElmJywgeyB0bzogb3AxIH1dO1xuICAgICAgICAgICAgY2FzZSA0NSAvKiBKdW1wVW5sZXNzICovOlxuICAgICAgICAgICAgICAgIHJldHVybiBbJ0p1bXBVbmxlc3MnLCB7IHRvOiBvcDEgfV07XG4gICAgICAgICAgICBjYXNlIDQ2IC8qIFB1c2hGcmFtZSAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydQdXNoRnJhbWUnLCB7fV07XG4gICAgICAgICAgICBjYXNlIDQ3IC8qIFBvcEZyYW1lICovOlxuICAgICAgICAgICAgICAgIHJldHVybiBbJ1BvcEZyYW1lJywge31dO1xuICAgICAgICAgICAgY2FzZSA0OCAvKiBFbnRlciAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydFbnRlcicsIHsgYXJnczogb3AxIH1dO1xuICAgICAgICAgICAgY2FzZSA0OSAvKiBFeGl0ICovOlxuICAgICAgICAgICAgICAgIHJldHVybiBbJ0V4aXQnLCB7fV07XG4gICAgICAgICAgICBjYXNlIDUwIC8qIFRlc3QgKi86XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnVG9Cb29sZWFuJywge31dO1xuICAgICAgICAgICAgLy8vIExJU1RTXG4gICAgICAgICAgICBjYXNlIDUxIC8qIEVudGVyTGlzdCAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydFbnRlckxpc3QnLCB7IHN0YXJ0OiBvcDEgfV07XG4gICAgICAgICAgICBjYXNlIDUyIC8qIEV4aXRMaXN0ICovOlxuICAgICAgICAgICAgICAgIHJldHVybiBbJ0V4aXRMaXN0Jywge31dO1xuICAgICAgICAgICAgY2FzZSA1MyAvKiBQdXRJdGVyYXRvciAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydQdXRJdGVyYXRvcicsIHt9XTtcbiAgICAgICAgICAgIGNhc2UgNTQgLyogSXRlcmF0ZSAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydJdGVyYXRlJywgeyBlbmQ6IG9wMSB9XTtcbiAgICAgICAgICAgIC8vLyBDT01QT05FTlRTXG4gICAgICAgICAgICBjYXNlIDU1IC8qIFB1c2hDb21wb25lbnRNYW5hZ2VyICovOlxuICAgICAgICAgICAgICAgIHJldHVybiBbJ1B1c2hDb21wb25lbnRNYW5hZ2VyJywgeyBkZWZpbml0aW9uOiBjLmdldE90aGVyKG9wMSkgfV07XG4gICAgICAgICAgICBjYXNlIDU2IC8qIFB1c2hEeW5hbWljQ29tcG9uZW50TWFuYWdlciAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydQdXNoRHluYW1pY0NvbXBvbmVudE1hbmFnZXInLCB7fV07XG4gICAgICAgICAgICBjYXNlIDU3IC8qIEluaXRpYWxpemVDb21wb25lbnRTdGF0ZSAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydJbml0aWFsaXplQ29tcG9uZW50U3RhdGUnLCB7fV07XG4gICAgICAgICAgICBjYXNlIDU4IC8qIFB1c2hBcmdzICovOlxuICAgICAgICAgICAgICAgIHJldHVybiBbJ1B1c2hBcmdzJywgeyBzeW50aGV0aWM6ICEhb3AxIH1dO1xuICAgICAgICAgICAgY2FzZSA1OSAvKiBQcmVwYXJlQXJncyAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydQcmVwYXJlQXJncycsIHsgc3RhdGU6IFJlZ2lzdGVyW29wMV0gfV07XG4gICAgICAgICAgICBjYXNlIDYwIC8qIENyZWF0ZUNvbXBvbmVudCAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydDcmVhdGVDb21wb25lbnQnLCB7IGZsYWdzOiBvcDEsIHN0YXRlOiBSZWdpc3RlcltvcDJdIH1dO1xuICAgICAgICAgICAgY2FzZSA2MSAvKiBSZWdpc3RlckNvbXBvbmVudERlc3RydWN0b3IgKi86XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnUmVnaXN0ZXJDb21wb25lbnREZXN0cnVjdG9yJywge31dO1xuICAgICAgICAgICAgY2FzZSA2MiAvKiBQdXNoQ29tcG9uZW50T3BlcmF0aW9ucyAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydQdXNoQ29tcG9uZW50T3BlcmF0aW9ucycsIHt9XTtcbiAgICAgICAgICAgIGNhc2UgNjMgLyogR2V0Q29tcG9uZW50U2VsZiAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydHZXRDb21wb25lbnRTZWxmJywgeyBzdGF0ZTogUmVnaXN0ZXJbb3AxXSB9XTtcbiAgICAgICAgICAgIGNhc2UgNjQgLyogR2V0Q29tcG9uZW50TGF5b3V0ICovOlxuICAgICAgICAgICAgICAgIHJldHVybiBbJ0dldENvbXBvbmVudExheW91dCcsIHsgc3RhdGU6IFJlZ2lzdGVyW29wMV0gfV07XG4gICAgICAgICAgICBjYXNlIDY1IC8qIEJlZ2luQ29tcG9uZW50VHJhbnNhY3Rpb24gKi86XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnQmVnaW5Db21wb25lbnRUcmFuc2FjdGlvbicsIHt9XTtcbiAgICAgICAgICAgIGNhc2UgNjYgLyogQ29tbWl0Q29tcG9uZW50VHJhbnNhY3Rpb24gKi86XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnQ29tbWl0Q29tcG9uZW50VHJhbnNhY3Rpb24nLCB7fV07XG4gICAgICAgICAgICBjYXNlIDY3IC8qIERpZENyZWF0ZUVsZW1lbnQgKi86XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnRGlkQ3JlYXRlRWxlbWVudCcsIHsgc3RhdGU6IFJlZ2lzdGVyW29wMV0gfV07XG4gICAgICAgICAgICBjYXNlIDY4IC8qIERpZFJlbmRlckxheW91dCAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydEaWRSZW5kZXJMYXlvdXQnLCB7fV07XG4gICAgICAgICAgICAvLy8gUEFSVElBTFNcbiAgICAgICAgICAgIGNhc2UgNjkgLyogR2V0UGFydGlhbFRlbXBsYXRlICovOlxuICAgICAgICAgICAgICAgIHJldHVybiBbJ0NvbXBpbGVQYXJ0aWFsJywge31dO1xuICAgICAgICAgICAgY2FzZSA3MCAvKiBSZXNvbHZlTWF5YmVMb2NhbCAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydSZXNvbHZlTWF5YmVMb2NhbCcsIHsgbmFtZTogYy5nZXRTdHJpbmcob3AxKSB9XTtcbiAgICAgICAgICAgIC8vLyBERUJVR0dFUlxuICAgICAgICAgICAgY2FzZSA3MSAvKiBEZWJ1Z2dlciAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydEZWJ1Z2dlcicsIHsgc3ltYm9sczogYy5nZXRPdGhlcihvcDEpLCBldmFsSW5mbzogYy5nZXRBcnJheShvcDIpIH1dO1xuICAgICAgICAgICAgLy8vIFNUQVRFTUVOVFNcbiAgICAgICAgICAgIGNhc2UgNzIgLyogU2l6ZSAqLzpcbiAgICAgICAgICAgICAgICB0aHJvdyB1bnJlYWNoYWJsZSgpO1xuICAgICAgICB9XG4gICAgICAgIHRocm93IHVucmVhY2hhYmxlKCk7XG4gICAgfVxuICAgIHJldHVybiBbJycsIHt9XTtcbn1cbmV4cG9ydCBjbGFzcyBBcHBlbmRPcGNvZGVzIHtcbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgdGhpcy5ldmFsdWF0ZU9wY29kZSA9IGZpbGxOdWxscyg3MiAvKiBTaXplICovKS5zbGljZSgpO1xuICAgIH1cbiAgICBhZGQobmFtZSwgZXZhbHVhdGUpIHtcbiAgICAgICAgdGhpcy5ldmFsdWF0ZU9wY29kZVtuYW1lXSA9IGV2YWx1YXRlO1xuICAgIH1cbiAgICBldmFsdWF0ZSh2bSwgb3Bjb2RlLCB0eXBlKSB7XG4gICAgICAgIGxldCBmdW5jID0gdGhpcy5ldmFsdWF0ZU9wY29kZVt0eXBlXTtcbiAgICAgICAgaWYgKCFmYWxzZSAmJiBmYWxzZSkge1xuICAgICAgICAgICAgLyogdHNsaW50OmRpc2FibGUgKi9cbiAgICAgICAgICAgIGxldCBbbmFtZSwgcGFyYW1zXSA9IGRlYnVnKHZtLmNvbnN0YW50cywgb3Bjb2RlLnR5cGUsIG9wY29kZS5vcDEsIG9wY29kZS5vcDIsIG9wY29kZS5vcDMpO1xuICAgICAgICAgICAgY29uc29sZS5sb2coYCR7dm1bJ3BjJ10gLSA0fS4gJHtsb2dPcGNvZGUobmFtZSwgcGFyYW1zKX1gKTtcbiAgICAgICAgICAgIC8vIGNvbnNvbGUubG9nKC4uLmRlYnVnKHZtLmNvbnN0YW50cywgdHlwZSwgb3Bjb2RlLm9wMSwgb3Bjb2RlLm9wMiwgb3Bjb2RlLm9wMykpO1xuICAgICAgICAgICAgLyogdHNsaW50OmVuYWJsZSAqL1xuICAgICAgICB9XG4gICAgICAgIGZ1bmModm0sIG9wY29kZSk7XG4gICAgICAgIGlmICghZmFsc2UgJiYgZmFsc2UpIHtcbiAgICAgICAgICAgIC8qIHRzbGludDpkaXNhYmxlICovXG4gICAgICAgICAgICBjb25zb2xlLmxvZygnJWMgLT4gcGM6ICVkLCByYTogJWQsIGZwOiAlZCwgc3A6ICVkLCBzMDogJU8sIHMxOiAlTywgdDA6ICVPLCB0MTogJU8nLCAnY29sb3I6IG9yYW5nZScsIHZtWydwYyddLCB2bVsncmEnXSwgdm1bJ2ZwJ10sIHZtWydzcCddLCB2bVsnczAnXSwgdm1bJ3MxJ10sIHZtWyd0MCddLCB2bVsndDEnXSk7XG4gICAgICAgICAgICBjb25zb2xlLmxvZygnJWMgLT4gZXZhbCBzdGFjaycsICdjb2xvcjogcmVkJywgdm0uc3RhY2sudG9BcnJheSgpKTtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKCclYyAtPiBzY29wZScsICdjb2xvcjogZ3JlZW4nLCB2bS5zY29wZSgpWydzbG90cyddLm1hcChzID0+IHMgJiYgc1sndmFsdWUnXSA/IHNbJ3ZhbHVlJ10oKSA6IHMpKTtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKCclYyAtPiBlbGVtZW50cycsICdjb2xvcjogYmx1ZScsIHZtLmVsZW1lbnRzKClbJ2VsZW1lbnRTdGFjayddLnRvQXJyYXkoKSk7XG4gICAgICAgICAgICAvKiB0c2xpbnQ6ZW5hYmxlICovXG4gICAgICAgIH1cbiAgICB9XG59XG5leHBvcnQgY29uc3QgQVBQRU5EX09QQ09ERVMgPSBuZXcgQXBwZW5kT3Bjb2RlcygpO1xuZXhwb3J0IGNsYXNzIEFic3RyYWN0T3Bjb2RlIHtcbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgaW5pdGlhbGl6ZUd1aWQodGhpcyk7XG4gICAgfVxuICAgIHRvSlNPTigpIHtcbiAgICAgICAgcmV0dXJuIHsgZ3VpZDogdGhpcy5fZ3VpZCwgdHlwZTogdGhpcy50eXBlIH07XG4gICAgfVxufVxuZXhwb3J0IGNsYXNzIFVwZGF0aW5nT3Bjb2RlIGV4dGVuZHMgQWJzdHJhY3RPcGNvZGUge1xuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICBzdXBlciguLi5hcmd1bWVudHMpO1xuICAgICAgICB0aGlzLm5leHQgPSBudWxsO1xuICAgICAgICB0aGlzLnByZXYgPSBudWxsO1xuICAgIH1cbn1cbmV4cG9ydCBmdW5jdGlvbiBpbnNwZWN0KG9wY29kZXMpIHtcbiAgICBsZXQgYnVmZmVyID0gW107XG4gICAgb3Bjb2Rlcy5mb3JFYWNoKChvcGNvZGUsIGkpID0+IHtcbiAgICAgICAgX2luc3BlY3Qob3Bjb2RlLnRvSlNPTigpLCBidWZmZXIsIDAsIGkpO1xuICAgIH0pO1xuICAgIHJldHVybiBidWZmZXIuam9pbignJyk7XG59XG5mdW5jdGlvbiBfaW5zcGVjdChvcGNvZGUsIGJ1ZmZlciwgbGV2ZWwsIGluZGV4KSB7XG4gICAgbGV0IGluZGVudGF0aW9uID0gW107XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBsZXZlbDsgaSsrKSB7XG4gICAgICAgIGluZGVudGF0aW9uLnB1c2goJyAgJyk7XG4gICAgfVxuICAgIGJ1ZmZlci5wdXNoKC4uLmluZGVudGF0aW9uKTtcbiAgICBidWZmZXIucHVzaChgJHtpbmRleH0uICR7b3Bjb2RlLnR5cGV9YCk7XG4gICAgaWYgKG9wY29kZS5hcmdzIHx8IG9wY29kZS5kZXRhaWxzKSB7XG4gICAgICAgIGJ1ZmZlci5wdXNoKCcoJyk7XG4gICAgICAgIGlmIChvcGNvZGUuYXJncykge1xuICAgICAgICAgICAgYnVmZmVyLnB1c2gob3Bjb2RlLmFyZ3Muam9pbignLCAnKSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKG9wY29kZS5kZXRhaWxzKSB7XG4gICAgICAgICAgICBsZXQga2V5cyA9IE9iamVjdC5rZXlzKG9wY29kZS5kZXRhaWxzKTtcbiAgICAgICAgICAgIGlmIChrZXlzLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgIGlmIChvcGNvZGUuYXJncyAmJiBvcGNvZGUuYXJncy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICAgICAgYnVmZmVyLnB1c2goJywgJyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGJ1ZmZlci5wdXNoKGtleXMubWFwKGtleSA9PiBgJHtrZXl9PSR7b3Bjb2RlLmRldGFpbHMgJiYgb3Bjb2RlLmRldGFpbHNba2V5XX1gKS5qb2luKCcsICcpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBidWZmZXIucHVzaCgnKScpO1xuICAgIH1cbiAgICBidWZmZXIucHVzaCgnXFxuJyk7XG4gICAgaWYgKG9wY29kZS5jaGlsZHJlbiAmJiBvcGNvZGUuY2hpbGRyZW4ubGVuZ3RoKSB7XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgb3Bjb2RlLmNoaWxkcmVuLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBfaW5zcGVjdChvcGNvZGUuY2hpbGRyZW5baV0sIGJ1ZmZlciwgbGV2ZWwgKyAxLCBpKTtcbiAgICAgICAgfVxuICAgIH1cbn0iXX0=
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9vcGNvZGVzLmpzIl0sIm5hbWVzIjpbImRlYnVnU2xpY2UiLCJpbnNwZWN0IiwiUmVnaXN0ZXIiLCJlbnYiLCJzdGFydCIsImVuZCIsInByb2dyYW0iLCJjb25zdGFudHMiLCJjb25zb2xlIiwiZ3JvdXAiLCJpIiwidHlwZSIsIm9wMSIsIm9wMiIsIm9wMyIsIm9wY29kZSIsIm5hbWUiLCJwYXJhbXMiLCJkZWJ1ZyIsImxvZyIsImxvZ09wY29kZSIsImdyb3VwRW5kIiwib3V0IiwiYXJncyIsIk9iamVjdCIsImtleXMiLCJtYXAiLCJwIiwianNvbiIsImpvaW4iLCJwYXJhbSIsInN0cmluZyIsIkpTT04iLCJzdHJpbmdpZnkiLCJlIiwidW5kZWZpbmVkIiwicGFyc2UiLCJHbGltbWVyRGVidWciLCJjIiwib3AiLCJoZWxwZXIiLCJnZXRGdW5jdGlvbiIsImZ1bmN0aW9uIiwic3ltYm9sIiwia2V5IiwiZ2V0U3RyaW5nIiwiYmxvY2siLCJnZXRCbG9jayIsInNpemUiLCJ2YWx1ZSIsImdldE90aGVyIiwicHJpbWl0aXZlIiwicmVnaXN0ZXIiLCJvZmZzZXQiLCJjb3VudCIsInN5bWJvbHMiLCJiaW5kQ2FsbGVyU2NvcGUiLCJ0ZXh0IiwiY29tbWVudCIsInRhZyIsIm5hbWVzcGFjZSIsInRydXN0aW5nIiwibnMiLCJpbnZva2VyIiwidG8iLCJkZWZpbml0aW9uIiwic3ludGhldGljIiwic3RhdGUiLCJmbGFncyIsImV2YWxJbmZvIiwiZ2V0QXJyYXkiLCJBcHBlbmRPcGNvZGVzIiwiY29uc3RydWN0b3IiLCJldmFsdWF0ZU9wY29kZSIsInNsaWNlIiwiYWRkIiwiZXZhbHVhdGUiLCJ2bSIsImZ1bmMiLCJzdGFjayIsInRvQXJyYXkiLCJzY29wZSIsInMiLCJlbGVtZW50cyIsIkFQUEVORF9PUENPREVTIiwiQWJzdHJhY3RPcGNvZGUiLCJ0b0pTT04iLCJndWlkIiwiX2d1aWQiLCJVcGRhdGluZ09wY29kZSIsImFyZ3VtZW50cyIsIm5leHQiLCJwcmV2Iiwib3Bjb2RlcyIsImJ1ZmZlciIsImZvckVhY2giLCJfaW5zcGVjdCIsImxldmVsIiwiaW5kZXgiLCJpbmRlbnRhdGlvbiIsInB1c2giLCJkZXRhaWxzIiwibGVuZ3RoIiwiY2hpbGRyZW4iXSwibWFwcGluZ3MiOiI7Ozs7OztRQXlCZ0JBLFUsR0FBQUEsVTtRQStQQUMsTyxHQUFBQSxPOztBQXhSaEI7O0FBRUE7Ozs7OztBQU1PLElBQUlDLHVDQUFKO0FBQ1AsQ0FBQyxVQUFVQSxRQUFWLEVBQW9CO0FBQ2pCO0FBQ0FBLGFBQVNBLFNBQVMsSUFBVCxJQUFpQixDQUExQixJQUErQixJQUEvQjtBQUNBO0FBQ0FBLGFBQVNBLFNBQVMsSUFBVCxJQUFpQixDQUExQixJQUErQixJQUEvQjtBQUNBO0FBQ0FBLGFBQVNBLFNBQVMsSUFBVCxJQUFpQixDQUExQixJQUErQixJQUEvQjtBQUNBO0FBQ0FBLGFBQVNBLFNBQVMsSUFBVCxJQUFpQixDQUExQixJQUErQixJQUEvQjtBQUNBO0FBQ0FBLGFBQVNBLFNBQVMsSUFBVCxJQUFpQixDQUExQixJQUErQixJQUEvQjtBQUNBQSxhQUFTQSxTQUFTLElBQVQsSUFBaUIsQ0FBMUIsSUFBK0IsSUFBL0I7QUFDQTtBQUNBQSxhQUFTQSxTQUFTLElBQVQsSUFBaUIsQ0FBMUIsSUFBK0IsSUFBL0I7QUFDQUEsYUFBU0EsU0FBUyxJQUFULElBQWlCLENBQTFCLElBQStCLElBQS9CO0FBQ0gsQ0FmRCxFQWVHQSxxQkFoQlFBLFFBZ0JSLEdBQWFBLFdBQVcsRUFBeEIsQ0FmSDtBQWdCTyxTQUFTRixVQUFULENBQW9CRyxHQUFwQixFQUF5QkMsS0FBekIsRUFBZ0NDLEdBQWhDLEVBQXFDO0FBQ3hDLFFBQUksQ0FBQyxLQUFELElBQVUsS0FBZCxFQUFxQjtBQUNqQjtBQUNBLFlBQUksRUFBRUMsT0FBRixFQUFXQyxTQUFYLEtBQXlCSixHQUE3QjtBQUNBO0FBQ0EsWUFBSSxPQUFPSyxPQUFQLEtBQW1CLFdBQXZCLEVBQW9DO0FBQ2hDO0FBQ0g7QUFDRDtBQUNBLFlBQUksT0FB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dUUsbUJBQU9NLElBQVAsQ0FBWXJGLE9BQU9RLElBQVAsQ0FBWU0sSUFBWixDQUFpQixJQUFqQixDQUFaO0FBQ0g7QUFDRCxZQUFJZCxPQUFPc0YsT0FBWCxFQUFvQjtBQUNoQixnQkFBSTVFLE9BQU9ELE9BQU9DLElBQVAsQ0FBWVYsT0FBT3NGLE9BQW5CLENBQVg7QUFDQSxnQkFBSTVFLEtBQUs2RSxNQUFULEVBQWlCO0FBQ2Isb0JBQUl2RixPQUFPUSxJQUFQLElBQWVSLE9BQU9RLElBQVAsQ0FBWStFLE1BQS9CLEVBQXVDO0FBQ25DUiwyQkFBT00sSUFBUCxDQUFZLElBQVo7QUFDSDtBQUNETix1QkFBT00sSUFBUCxDQUFZM0UsS0FBS0MsR0FBTCxDQUFTa0IsT0FBUSxHQUFFQSxHQUFJLElBQUc3QixPQUFPc0YsT0FBUCxJQUFrQnRGLE9BQU9zRixPQUFQLENBQWV6RCxHQUFmLENBQW9CLEVBQWhFLEVBQW1FZixJQUFuRSxDQUF3RSxJQUF4RSxDQUFaO0FBQ0g7QUFDSjtBQUNEaUUsZUFBT00sSUFBUCxDQUFZLEdBQVo7QUFDSDtBQUNETixXQUFPTSxJQUFQLENBQVksSUFBWjtBQUNBLFFBQUlyRixPQUFPd0YsUUFBUCxJQUFtQnhGLE9BQU93RixRQUFQLENBQWdCRCxNQUF2QyxFQUErQztBQUMzQyxhQUFLLElBQUk1RixJQUFJLENBQWIsRUFBZ0JBLElBQUlLLE9BQU93RixRQUFQLENBQWdCRCxNQUFwQyxFQUE0QzVGLEdBQTVDLEVBQWlEO0FBQzdDc0YscUJBQVNqRixPQUFPd0YsUUFBUCxDQUFnQjdGLENBQWhCLENBQVQsRUFBNkJvRixNQUE3QixFQUFxQ0csUUFBUSxDQUE3QyxFQUFnRHZGLENBQWhEO0FBQ0g7QUFDSjtBQUNKIiwiZmlsZSI6ImxpYi9vcGNvZGVzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaW5pdGlhbGl6ZUd1aWQsIGZpbGxOdWxscywgdW5yZWFjaGFibGUgfSBmcm9tICdAZ2xpbW1lci91dGlsJztcblxuLyoqXG4gKiBSZWdpc3RlcnNcbiAqXG4gKiBGb3IgdGhlIG1vc3QgcGFydCwgdGhlc2UgZm9sbG93cyBNSVBTIG5hbWluZyBjb252ZW50aW9ucywgaG93ZXZlciB0aGVcbiAqIHJlZ2lzdGVyIG51bWJlcnMgYXJlIGRpZmZlcmVudC5cbiAqL1xuZXhwb3J0IHZhciBSZWdpc3RlcjtcbihmdW5jdGlvbiAoUmVnaXN0ZXIpIHtcbiAgICAvLyAkMCBvciAkcGMgKHByb2dyYW0gY291bnRlcik6IHBvaW50ZXIgaW50byBgcHJvZ3JhbWAgZm9yIHRoZSBuZXh0IGluc3R1cmN0aW9uOyAtMSBtZWFucyBleGl0XG4gICAgUmVnaXN0ZXJbUmVnaXN0ZXJbXCJwY1wiXSA9IDBdID0gXCJwY1wiO1xuICAgIC8vICQxIG9yICRyYSAocmV0dXJuIGFkZHJlc3MpOiBwb2ludGVyIGludG8gYHByb2dyYW1gIGZvciB0aGUgcmV0dXJuXG4gICAgUmVnaXN0ZXJbUmVnaXN0ZXJbXCJyYVwiXSA9IDFdID0gXCJyYVwiO1xuICAgIC8vICQyIG9yICRmcCAoZnJhbWUgcG9pbnRlcik6IHBvaW50ZXIgaW50byB0aGUgYGV2YWxTdGFja2AgZm9yIHRoZSBiYXNlIG9mIHRoZSBzdGFja1xuICAgIFJlZ2lzdGVyW1JlZ2lzdGVyW1wiZnBcIl0gPSAyXSA9IFwiZnBcIjtcbiAgICAvLyAkMyBvciAkc3AgKHN0YWNrIHBvaW50ZXIpOiBwb2ludGVyIGludG8gdGhlIGBldmFsU3RhY2tgIGZvciB0aGUgdG9wIG9mIHRoZSBzdGFja1xuICAgIFJlZ2lzdGVyW1JlZ2lzdGVyW1wic3BcIl0gPSAzXSA9IFwic3BcIjtcbiAgICAvLyAkNC0kNSBvciAkczAtJHMxIChzYXZlZCk6IGNhbGxlZSBzYXZlZCBnZW5lcmFsLXB1cnBvc2UgcmVnaXN0ZXJzXG4gICAgUmVnaXN0ZXJbUmVnaXN0ZXJbXCJzMFwiXSA9IDRdID0gXCJzMFwiO1xuICAgIFJlZ2lzdGVyW1JlZ2lzdGVyW1wiczFcIl0gPSA1XSA9IFwiczFcIjtcbiAgICAvLyAkNi0kNyBvciAkdDAtJHQxICh0ZW1wb3Jhcmllcyk6IGNhbGxlciBzYXZlZCBnZW5lcmFsLXB1cnBvc2UgcmVnaXN0ZXJzXG4gICAgUmVnaXN0ZXJbUmVnaXN0ZXJbXCJ0MFwiXSA9IDZdID0gXCJ0MFwiO1xuICAgIFJlZ2lzdGVyW1JlZ2lzdGVyW1widDFcIl0gPSA3XSA9IFwidDFcIjtcbn0pKFJlZ2lzdGVyIHx8IChSZWdpc3RlciA9IHt9KSk7XG5leHBvcnQgZnVuY3Rpb24gZGVidWdTbGljZShlbnYsIHN0YXJ0LCBlbmQpIHtcbiAgICBpZiAoIWZhbHNlICYmIGZhbHNlKSB7XG4gICAgICAgIC8qIHRzbGludDpkaXNhYmxlOm5vLWNvbnNvbGUgKi9cbiAgICAgICAgbGV0IHsgcHJvZ3JhbSwgY29uc3RhbnRzIH0gPSBlbnY7XG4gICAgICAgIC8vIGNvbnNvbGUgaXMgbm90IGF2YWlsYWJsZSBpbiBJRTlcbiAgICAgICAgaWYgKHR5cGVvZiBjb25zb2xlID09PSAndW5kZWZpbmVkJykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIC8vIElFMTAgZG9lcyBub3QgaGF2ZSBgY29uc29sZS5ncm91cGBcbiAgICAgICAgaWYgKHR5cGVvZiBjb25zb2xlLmdyb3VwICE9PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgY29uc29sZS5ncm91cChgJWMke3N0YXJ0fToke2VuZH1gLCAnY29sb3I6ICM5OTknKTtcbiAgICAgICAgZm9yIChsZXQgaSA9IHN0YXJ0OyBpIDw9IGVuZDsgaSArPSA0KSB7XG4gICAgICAgICAgICBsZXQgeyB0eXBlLCBvcDEsIG9wMiwgb3AzIH0gPSBwcm9ncmFtLm9wY29kZShpKTtcbiAgICAgICAgICAgIGxldCBbbmFtZSwgcGFyYW1zXSA9IGRlYnVnKGNvbnN0YW50cywgdHlwZSwgb3AxLCBvcDIsIG9wMyk7XG4gICAgICAgICAgICBjb25zb2xlLmxvZyhgJHtpfS4gJHtsb2dPcGNvZGUobmFtZSwgcGFyYW1zKX1gKTtcbiAgICAgICAgfVxuICAgICAgICBjb25zb2xlLmdyb3VwRW5kKCk7XG4gICAgICAgIC8qIHRzbGludDplbmFibGU6bm8tY29uc29sZSAqL1xuICAgIH1cbn1cbmZ1bmN0aW9uIGxvZ09wY29kZSh0eXBlLCBwYXJhbXMpIHtcbiAgICBpZiAoIWZhbHNlICYmIGZhbHNlKSB7XG4gICAgICAgIGxldCBvdXQgPSB0eXBlO1xuICAgICAgICBpZiAocGFyYW1zKSB7XG4gICAgICAgICAgICBsZXQgYXJncyA9IE9iamVjdC5rZXlzKHBhcmFtcykubWFwKHAgPT4gYCAke3B9PSR7anNvbihwYXJhbXNbcF0pfWApLmpvaW4oJycpO1xuICAgICAgICAgICAgb3V0ICs9IGFyZ3M7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGAoJHtvdXR9KWA7XG4gICAgfVxufVxuZnVuY3Rpb24ganNvbihwYXJhbSkge1xuICAgIGlmICh0eXBlb2YgcGFyYW0gPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgcmV0dXJuICc8ZnVuY3Rpb24+JztcbiAgICB9XG4gICAgbGV0IHN0cmluZztcbiAgICB0cnkge1xuICAgICAgICBzdHJpbmcgPSBKU09OLnN0cmluZ2lmeShwYXJhbSk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgICByZXR1cm4gJzxjYW5ub3QgZ2VuZXJhdGUgSlNPTj4nO1xuICAgIH1cbiAgICBpZiAoc3RyaW5nID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgcmV0dXJuICd1bmRlZmluZWQnO1xuICAgIH1cbiAgICBsZXQgZGVidWcgPSBKU09OLnBhcnNlKHN0cmluZyk7XG4gICAgaWYgKHR5cGVvZiBkZWJ1ZyA9PT0gJ29iamVjdCcgJiYgZGVidWcgIT09IG51bGwgJiYgZGVidWcuR2xpbW1lckRlYnVnICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgcmV0dXJuIGRlYnVnLkdsaW1tZXJEZWJ1ZztcbiAgICB9XG4gICAgcmV0dXJuIHN0cmluZztcbn1cbmZ1bmN0aW9uIGRlYnVnKGMsIG9wLCBvcDEsIG9wMiwgb3AzKSB7XG4gICAgaWYgKCFmYWxzZSAmJiBmYWxzZSkge1xuICAgICAgICBzd2l0Y2ggKG9wKSB7XG4gICAgICAgICAgICBjYXNlIDAgLyogQnVnICovOlxuICAgICAgICAgICAgICAgIHRocm93IHVucmVhY2hhYmxlKCk7XG4gICAgICAgICAgICBjYXNlIDEgLyogSGVscGVyICovOlxuICAgICAgICAgICAgICAgIHJldHVybiBbJ0hlbHBlcicsIHsgaGVscGVyOiBjLmdldEZ1bmN0aW9uKG9wMSkgfV07XG4gICAgICAgICAgICBjYXNlIDIgLyogRnVuY3Rpb24gKi86XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnRnVuY3Rpb24nLCB7IGZ1bmN0aW9uOiBjLmdldEZ1bmN0aW9uKG9wMSkgfV07XG4gICAgICAgICAgICBjYXNlIDQgLyogU2V0VmFyaWFibGUgKi86XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnU2V0VmFyaWFibGUnLCB7IHN5bWJvbDogb3AxIH1dO1xuICAgICAgICAgICAgY2FzZSA1IC8qIEdldFZhcmlhYmxlICovOlxuICAgICAgICAgICAgICAgIHJldHVybiBbJ0dldFZhcmlhYmxlJywgeyBzeW1ib2w6IG9wMSB9XTtcbiAgICAgICAgICAgIGNhc2UgNiAvKiBHZXRQcm9wZXJ0eSAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydHZXRQcm9wZXJ0eScsIHsga2V5OiBjLmdldFN0cmluZyhvcDEpIH1dO1xuICAgICAgICAgICAgY2FzZSA3IC8qIFB1c2hCbG9jayAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydQdXNoQmxvY2snLCB7IGJsb2NrOiBjLmdldEJsb2NrKG9wMSkgfV07XG4gICAgICAgICAgICBjYXNlIDggLyogR2V0QmxvY2sgKi86XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnR2V0QmxvY2snLCB7IHN5bWJvbDogb3AxIH1dO1xuICAgICAgICAgICAgY2FzZSA5IC8qIEhhc0Jsb2NrICovOlxuICAgICAgICAgICAgICAgIHJldHVybiBbJ0hhc0Jsb2NrJywgeyBibG9jazogb3AxIH1dO1xuICAgICAgICAgICAgY2FzZSAxMCAvKiBIYXNCbG9ja1BhcmFtcyAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydIYXNCbG9ja1BhcmFtcycsIHsgYmxvY2s6IG9wMSB9XTtcbiAgICAgICAgICAgIGNhc2UgMTEgLyogQ29uY2F0ICovOlxuICAgICAgICAgICAgICAgIHJldHVybiBbJ0NvbmNhdCcsIHsgc2l6ZTogb3AxIH1dO1xuICAgICAgICAgICAgY2FzZSAxMiAvKiBJbW1lZGlhdGUgKi86XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnSW1tZWRpYXRlJywgeyB2YWx1ZTogb3AxIH1dO1xuICAgICAgICAgICAgY2FzZSAxMyAvKiBDb25zdGFudCAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydDb25zdGFudCcsIHsgdmFsdWU6IGMuZ2V0T3RoZXIob3AxKSB9XTtcbiAgICAgICAgICAgIGNhc2UgMTQgLyogUHJpbWl0aXZlUmVmZXJlbmNlICovOlxuICAgICAgICAgICAgICAgIHJldHVybiBbJ1ByaW1pdGl2ZVJlZmVyZW5jZScsIHsgcHJpbWl0aXZlOiBvcDEgfV07XG4gICAgICAgICAgICBjYXNlIDE1IC8qIER1cCAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydEdXAnLCB7IHJlZ2lzdGVyOiBSZWdpc3RlcltvcDFdLCBvZmZzZXQ6IG9wMiB9XTtcbiAgICAgICAgICAgIGNhc2UgMTYgLyogUG9wICovOlxuICAgICAgICAgICAgICAgIHJldHVybiBbJ1BvcCcsIHsgY291bnQ6IG9wMSB9XTtcbiAgICAgICAgICAgIGNhc2UgMTcgLyogTG9hZCAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydMb2FkJywgeyByZWdpc3RlcjogUmVnaXN0ZXJbb3AxXSB9XTtcbiAgICAgICAgICAgIGNhc2UgMTggLyogRmV0Y2ggKi86XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnRmV0Y2gnLCB7IHJlZ2lzdGVyOiBSZWdpc3RlcltvcDFdIH1dO1xuICAgICAgICAgICAgLy8vIFBSRUxVREUgJiBFWElUXG4gICAgICAgICAgICBjYXNlIDE5IC8qIFJvb3RTY29wZSAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydSb290U2NvcGUnLCB7IHN5bWJvbHM6IG9wMSwgYmluZENhbGxlclNjb3BlOiAhIW9wMiB9XTtcbiAgICAgICAgICAgIGNhc2UgMjAgLyogQ2hpbGRTY29wZSAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydDaGlsZFNjb3BlJywge31dO1xuICAgICAgICAgICAgY2FzZSAyMSAvKiBQb3BTY29wZSAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydQb3BTY29wZScsIHt9XTtcbiAgICAgICAgICAgIGNhc2UgMjIgLyogUmV0dXJuICovOlxuICAgICAgICAgICAgICAgIHJldHVybiBbJ1JldHVybicsIHt9XTtcbiAgICAgICAgICAgIC8vLyBIVE1MXG4gICAgICAgICAgICBjYXNlIDIzIC8qIFRleHQgKi86XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnVGV4dCcsIHsgdGV4dDogYy5nZXRTdHJpbmcob3AxKSB9XTtcbiAgICAgICAgICAgIGNhc2UgMjQgLyogQ29tbWVudCAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydDb21tZW50JywgeyBjb21tZW50OiBjLmdldFN0cmluZyhvcDEpIH1dO1xuICAgICAgICAgICAgY2FzZSAyNSAvKiBEeW5hbWljQ29udGVudCAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydEeW5hbWljQ29udGVudCcsIHsgdmFsdWU6IGMuZ2V0T3RoZXIob3AxKSB9XTtcbiAgICAgICAgICAgIGNhc2UgMjYgLyogT3BlbkVsZW1lbnQgKi86XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnT3BlbkVsZW1lbnQnLCB7IHRhZzogYy5nZXRTdHJpbmcob3AxKSB9XTtcbiAgICAgICAgICAgIGNhc2UgMjcgLyogT3BlbkVsZW1lbnRXaXRoT3BlcmF0aW9ucyAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydPcGVuRWxlbWVudFdpdGhPcGVyYXRpb25zJywgeyB0YWc6IGMuZ2V0U3RyaW5nKG9wMSkgfV07XG4gICAgICAgICAgICBjYXNlIDI4IC8qIE9wZW5EeW5hbWljRWxlbWVudCAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydPcGVuRHluYW1pY0VsZW1lbnQnLCB7fV07XG4gICAgICAgICAgICBjYXNlIDI5IC8qIFN0YXRpY0F0dHIgKi86XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnU3RhdGljQXR0cicsIHsgbmFtZTogYy5nZXRTdHJpbmcob3AxKSwgdmFsdWU6IGMuZ2V0U3RyaW5nKG9wMiksIG5hbWVzcGFjZTogb3AzID8gYy5nZXRTdHJpbmcob3AzKSA6IG51bGwgfV07XG4gICAgICAgICAgICBjYXNlIDMwIC8qIER5bmFtaWNBdHRyICovOlxuICAgICAgICAgICAgICAgIHJldHVybiBbJ0R5bmFtaWNBdHRyJywgeyBuYW1lOiBjLmdldFN0cmluZyhvcDEpLCB0cnVzdGluZzogISFvcDIgfV07XG4gICAgICAgICAgICBjYXNlIDMxIC8qIER5bmFtaWNBdHRyTlMgKi86XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnRHluYW1pY0F0dHJOUycsIHsgbmFtZTogYy5nZXRTdHJpbmcob3AxKSwgbnM6IGMuZ2V0U3RyaW5nKG9wMiksIHRydXN0aW5nOiAhIW9wMiB9XTtcbiAgICAgICAgICAgIGNhc2UgMzIgLyogRmx1c2hFbGVtZW50ICovOlxuICAgICAgICAgICAgICAgIHJldHVybiBbJ0ZsdXNoRWxlbWVudCcsIHt9XTtcbiAgICAgICAgICAgIGNhc2UgMzMgLyogQ2xvc2VFbGVtZW50ICovOlxuICAgICAgICAgICAgICAgIHJldHVybiBbJ0Nsb3NlRWxlbWVudCcsIHt9XTtcbiAgICAgICAgICAgIC8vLyBNT0RJRklFUlxuICAgICAgICAgICAgY2FzZSAzNCAvKiBNb2RpZmllciAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydNb2RpZmllcicsIHt9XTtcbiAgICAgICAgICAgIC8vLyBXT1JNSE9MRVxuICAgICAgICAgICAgY2FzZSAzNSAvKiBQdXNoUmVtb3RlRWxlbWVudCAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydQdXNoUmVtb3RlRWxlbWVudCcsIHt9XTtcbiAgICAgICAgICAgIGNhc2UgMzYgLyogUG9wUmVtb3RlRWxlbWVudCAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydQb3BSZW1vdGVFbGVtZW50Jywge31dO1xuICAgICAgICAgICAgLy8vIERZTkFNSUMgU0NPUEVcbiAgICAgICAgICAgIGNhc2UgMzcgLyogQmluZER5bmFtaWNTY29wZSAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydCaW5kRHluYW1pY1Njb3BlJywge31dO1xuICAgICAgICAgICAgY2FzZSAzOCAvKiBQdXNoRHluYW1pY1Njb3BlICovOlxuICAgICAgICAgICAgICAgIHJldHVybiBbJ1B1c2hEeW5hbWljU2NvcGUnLCB7fV07XG4gICAgICAgICAgICBjYXNlIDM5IC8qIFBvcER5bmFtaWNTY29wZSAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydQb3BEeW5hbWljU2NvcGUnLCB7fV07XG4gICAgICAgICAgICAvLy8gVk1cbiAgICAgICAgICAgIGNhc2UgNDAgLyogQ29tcGlsZUR5bmFtaWNCbG9jayAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydDb21waWxlRHluYW1pY0Jsb2NrJywge31dO1xuICAgICAgICAgICAgY2FzZSA0MSAvKiBJbnZva2VTdGF0aWMgKi86XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnSW52b2tlU3RhdGljJywgeyBibG9jazogYy5nZXRCbG9jayhvcDEpIH1dO1xuICAgICAgICAgICAgY2FzZSA0MiAvKiBJbnZva2VEeW5hbWljICovOlxuICAgICAgICAgICAgICAgIHJldHVybiBbJ0ludm9rZUR5bmFtaWMnLCB7IGludm9rZXI6IGMuZ2V0T3RoZXIob3AxKSB9XTtcbiAgICAgICAgICAgIGNhc2UgNDMgLyogSnVtcCAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydKdW1wJywgeyB0bzogb3AxIH1dO1xuICAgICAgICAgICAgY2FzZSA0NCAvKiBKdW1wSWYgKi86XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnSnVtcElmJywgeyB0bzogb3AxIH1dO1xuICAgICAgICAgICAgY2FzZSA0NSAvKiBKdW1wVW5sZXNzICovOlxuICAgICAgICAgICAgICAgIHJldHVybiBbJ0p1bXBVbmxlc3MnLCB7IHRvOiBvcDEgfV07XG4gICAgICAgICAgICBjYXNlIDQ2IC8qIFB1c2hGcmFtZSAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydQdXNoRnJhbWUnLCB7fV07XG4gICAgICAgICAgICBjYXNlIDQ3IC8qIFBvcEZyYW1lICovOlxuICAgICAgICAgICAgICAgIHJldHVybiBbJ1BvcEZyYW1lJywge31dO1xuICAgICAgICAgICAgY2FzZSA0OCAvKiBFbnRlciAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydFbnRlcicsIHsgYXJnczogb3AxIH1dO1xuICAgICAgICAgICAgY2FzZSA0OSAvKiBFeGl0ICovOlxuICAgICAgICAgICAgICAgIHJldHVybiBbJ0V4aXQnLCB7fV07XG4gICAgICAgICAgICBjYXNlIDUwIC8qIFRlc3QgKi86XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnVG9Cb29sZWFuJywge31dO1xuICAgICAgICAgICAgLy8vIExJU1RTXG4gICAgICAgICAgICBjYXNlIDUxIC8qIEVudGVyTGlzdCAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydFbnRlckxpc3QnLCB7IHN0YXJ0OiBvcDEgfV07XG4gICAgICAgICAgICBjYXNlIDUyIC8qIEV4aXRMaXN0ICovOlxuICAgICAgICAgICAgICAgIHJldHVybiBbJ0V4aXRMaXN0Jywge31dO1xuICAgICAgICAgICAgY2FzZSA1MyAvKiBQdXRJdGVyYXRvciAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydQdXRJdGVyYXRvcicsIHt9XTtcbiAgICAgICAgICAgIGNhc2UgNTQgLyogSXRlcmF0ZSAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydJdGVyYXRlJywgeyBlbmQ6IG9wMSB9XTtcbiAgICAgICAgICAgIC8vLyBDT01QT05FTlRTXG4gICAgICAgICAgICBjYXNlIDU1IC8qIFB1c2hDb21wb25lbnRNYW5hZ2VyICovOlxuICAgICAgICAgICAgICAgIHJldHVybiBbJ1B1c2hDb21wb25lbnRNYW5hZ2VyJywgeyBkZWZpbml0aW9uOiBjLmdldE90aGVyKG9wMSkgfV07XG4gICAgICAgICAgICBjYXNlIDU2IC8qIFB1c2hEeW5hbWljQ29tcG9uZW50TWFuYWdlciAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydQdXNoRHluYW1pY0NvbXBvbmVudE1hbmFnZXInLCB7fV07XG4gICAgICAgICAgICBjYXNlIDU3IC8qIFB1c2hBcmdzICovOlxuICAgICAgICAgICAgICAgIHJldHVybiBbJ1B1c2hBcmdzJywgeyBzeW50aGV0aWM6ICEhb3AyIH1dO1xuICAgICAgICAgICAgY2FzZSA1OCAvKiBQcmVwYXJlQXJncyAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydQcmVwYXJlQXJncycsIHsgc3RhdGU6IFJlZ2lzdGVyW29wMV0gfV07XG4gICAgICAgICAgICBjYXNlIDU5IC8qIENyZWF0ZUNvbXBvbmVudCAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydDcmVhdGVDb21wb25lbnQnLCB7IGZsYWdzOiBvcDEsIHN0YXRlOiBSZWdpc3RlcltvcDJdIH1dO1xuICAgICAgICAgICAgY2FzZSA2MCAvKiBSZWdpc3RlckNvbXBvbmVudERlc3RydWN0b3IgKi86XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnUmVnaXN0ZXJDb21wb25lbnREZXN0cnVjdG9yJywge31dO1xuICAgICAgICAgICAgY2FzZSA2MSAvKiBQdXNoQ29tcG9uZW50T3BlcmF0aW9ucyAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydQdXNoQ29tcG9uZW50T3BlcmF0aW9ucycsIHt9XTtcbiAgICAgICAgICAgIGNhc2UgNjIgLyogR2V0Q29tcG9uZW50U2VsZiAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydHZXRDb21wb25lbnRTZWxmJywgeyBzdGF0ZTogUmVnaXN0ZXJbb3AxXSB9XTtcbiAgICAgICAgICAgIGNhc2UgNjMgLyogR2V0Q29tcG9uZW50TGF5b3V0ICovOlxuICAgICAgICAgICAgICAgIHJldHVybiBbJ0dldENvbXBvbmVudExheW91dCcsIHsgc3RhdGU6IFJlZ2lzdGVyW29wMV0gfV07XG4gICAgICAgICAgICBjYXNlIDY0IC8qIEJlZ2luQ29tcG9uZW50VHJhbnNhY3Rpb24gKi86XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnQmVnaW5Db21wb25lbnRUcmFuc2FjdGlvbicsIHt9XTtcbiAgICAgICAgICAgIGNhc2UgNjUgLyogQ29tbWl0Q29tcG9uZW50VHJhbnNhY3Rpb24gKi86XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnQ29tbWl0Q29tcG9uZW50VHJhbnNhY3Rpb24nLCB7fV07XG4gICAgICAgICAgICBjYXNlIDY2IC8qIERpZENyZWF0ZUVsZW1lbnQgKi86XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnRGlkQ3JlYXRlRWxlbWVudCcsIHsgc3RhdGU6IFJlZ2lzdGVyW29wMV0gfV07XG4gICAgICAgICAgICBjYXNlIDY3IC8qIERpZFJlbmRlckxheW91dCAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydEaWRSZW5kZXJMYXlvdXQnLCB7fV07XG4gICAgICAgICAgICAvLy8gUEFSVElBTFNcbiAgICAgICAgICAgIGNhc2UgNjggLyogR2V0UGFydGlhbFRlbXBsYXRlICovOlxuICAgICAgICAgICAgICAgIHJldHVybiBbJ0NvbXBpbGVQYXJ0aWFsJywge31dO1xuICAgICAgICAgICAgY2FzZSA2OSAvKiBSZXNvbHZlTWF5YmVMb2NhbCAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydSZXNvbHZlTWF5YmVMb2NhbCcsIHsgbmFtZTogYy5nZXRTdHJpbmcob3AxKSB9XTtcbiAgICAgICAgICAgIC8vLyBERUJVR0dFUlxuICAgICAgICAgICAgY2FzZSA3MCAvKiBEZWJ1Z2dlciAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydEZWJ1Z2dlcicsIHsgc3ltYm9sczogYy5nZXRPdGhlcihvcDEpLCBldmFsSW5mbzogYy5nZXRBcnJheShvcDIpIH1dO1xuICAgICAgICAgICAgLy8vIFNUQVRFTUVOVFNcbiAgICAgICAgICAgIGNhc2UgNzEgLyogU2l6ZSAqLzpcbiAgICAgICAgICAgICAgICB0aHJvdyB1bnJlYWNoYWJsZSgpO1xuICAgICAgICB9XG4gICAgICAgIHRocm93IHVucmVhY2hhYmxlKCk7XG4gICAgfVxuICAgIHJldHVybiBbJycsIHt9XTtcbn1cbmV4cG9ydCBjbGFzcyBBcHBlbmRPcGNvZGVzIHtcbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgdGhpcy5ldmFsdWF0ZU9wY29kZSA9IGZpbGxOdWxscyg3MSAvKiBTaXplICovKS5zbGljZSgpO1xuICAgIH1cbiAgICBhZGQobmFtZSwgZXZhbHVhdGUpIHtcbiAgICAgICAgdGhpcy5ldmFsdWF0ZU9wY29kZVtuYW1lXSA9IGV2YWx1YXRlO1xuICAgIH1cbiAgICBldmFsdWF0ZSh2bSwgb3Bjb2RlLCB0eXBlKSB7XG4gICAgICAgIGxldCBmdW5jID0gdGhpcy5ldmFsdWF0ZU9wY29kZVt0eXBlXTtcbiAgICAgICAgaWYgKCFmYWxzZSAmJiBmYWxzZSkge1xuICAgICAgICAgICAgLyogdHNsaW50OmRpc2FibGUgKi9cbiAgICAgICAgICAgIGxldCBbbmFtZSwgcGFyYW1zXSA9IGRlYnVnKHZtLmNvbnN0YW50cywgb3Bjb2RlLnR5cGUsIG9wY29kZS5vcDEsIG9wY29kZS5vcDIsIG9wY29kZS5vcDMpO1xuICAgICAgICAgICAgY29uc29sZS5sb2coYCR7dm1bJ3BjJ10gLSA0fS4gJHtsb2dPcGNvZGUobmFtZSwgcGFyYW1zKX1gKTtcbiAgICAgICAgICAgIC8vIGNvbnNvbGUubG9nKC4uLmRlYnVnKHZtLmNvbnN0YW50cywgdHlwZSwgb3Bjb2RlLm9wMSwgb3Bjb2RlLm9wMiwgb3Bjb2RlLm9wMykpO1xuICAgICAgICAgICAgLyogdHNsaW50OmVuYWJsZSAqL1xuICAgICAgICB9XG4gICAgICAgIGZ1bmModm0sIG9wY29kZSk7XG4gICAgICAgIGlmICghZmFsc2UgJiYgZmFsc2UpIHtcbiAgICAgICAgICAgIC8qIHRzbGludDpkaXNhYmxlICovXG4gICAgICAgICAgICBjb25zb2xlLmxvZygnJWMgLT4gcGM6ICVkLCByYTogJWQsIGZwOiAlZCwgc3A6ICVkLCBzMDogJU8sIHMxOiAlTywgdDA6ICVPLCB0MTogJU8nLCAnY29sb3I6IG9yYW5nZScsIHZtWydwYyddLCB2bVsncmEnXSwgdm1bJ2ZwJ10sIHZtWydzcCddLCB2bVsnczAnXSwgdm1bJ3MxJ10sIHZtWyd0MCddLCB2bVsndDEnXSk7XG4gICAgICAgICAgICBjb25zb2xlLmxvZygnJWMgLT4gZXZhbCBzdGFjaycsICdjb2xvcjogcmVkJywgdm0uc3RhY2sudG9BcnJheSgpKTtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKCclYyAtPiBzY29wZScsICdjb2xvcjogZ3JlZW4nLCB2bS5zY29wZSgpWydzbG90cyddLm1hcChzID0+IHMgJiYgc1sndmFsdWUnXSA/IHNbJ3ZhbHVlJ10oKSA6IHMpKTtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKCclYyAtPiBlbGVtZW50cycsICdjb2xvcjogYmx1ZScsIHZtLmVsZW1lbnRzKClbJ2VsZW1lbnRTdGFjayddLnRvQXJyYXkoKSk7XG4gICAgICAgICAgICAvKiB0c2xpbnQ6ZW5hYmxlICovXG4gICAgICAgIH1cbiAgICB9XG59XG5leHBvcnQgY29uc3QgQVBQRU5EX09QQ09ERVMgPSBuZXcgQXBwZW5kT3Bjb2RlcygpO1xuZXhwb3J0IGNsYXNzIEFic3RyYWN0T3Bjb2RlIHtcbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgaW5pdGlhbGl6ZUd1aWQodGhpcyk7XG4gICAgfVxuICAgIHRvSlNPTigpIHtcbiAgICAgICAgcmV0dXJuIHsgZ3VpZDogdGhpcy5fZ3VpZCwgdHlwZTogdGhpcy50eXBlIH07XG4gICAgfVxufVxuZXhwb3J0IGNsYXNzIFVwZGF0aW5nT3Bjb2RlIGV4dGVuZHMgQWJzdHJhY3RPcGNvZGUge1xuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICBzdXBlciguLi5hcmd1bWVudHMpO1xuICAgICAgICB0aGlzLm5leHQgPSBudWxsO1xuICAgICAgICB0aGlzLnByZXYgPSBudWxsO1xuICAgIH1cbn1cbmV4cG9ydCBmdW5jdGlvbiBpbnNwZWN0KG9wY29kZXMpIHtcbiAgICBsZXQgYnVmZmVyID0gW107XG4gICAgb3Bjb2Rlcy5mb3JFYWNoKChvcGNvZGUsIGkpID0+IHtcbiAgICAgICAgX2luc3BlY3Qob3Bjb2RlLnRvSlNPTigpLCBidWZmZXIsIDAsIGkpO1xuICAgIH0pO1xuICAgIHJldHVybiBidWZmZXIuam9pbignJyk7XG59XG5mdW5jdGlvbiBfaW5zcGVjdChvcGNvZGUsIGJ1ZmZlciwgbGV2ZWwsIGluZGV4KSB7XG4gICAgbGV0IGluZGVudGF0aW9uID0gW107XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBsZXZlbDsgaSsrKSB7XG4gICAgICAgIGluZGVudGF0aW9uLnB1c2goJyAgJyk7XG4gICAgfVxuICAgIGJ1ZmZlci5wdXNoKC4uLmluZGVudGF0aW9uKTtcbiAgICBidWZmZXIucHVzaChgJHtpbmRleH0uICR7b3Bjb2RlLnR5cGV9YCk7XG4gICAgaWYgKG9wY29kZS5hcmdzIHx8IG9wY29kZS5kZXRhaWxzKSB7XG4gICAgICAgIGJ1ZmZlci5wdXNoKCcoJyk7XG4gICAgICAgIGlmIChvcGNvZGUuYXJncykge1xuICAgICAgICAgICAgYnVmZmVyLnB1c2gob3Bjb2RlLmFyZ3Muam9pbignLCAnKSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKG9wY29kZS5kZXRhaWxzKSB7XG4gICAgICAgICAgICBsZXQga2V5cyA9IE9iamVjdC5rZXlzKG9wY29kZS5kZXRhaWxzKTtcbiAgICAgICAgICAgIGlmIChrZXlzLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgIGlmIChvcGNvZGUuYXJncyAmJiBvcGNvZGUuYXJncy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICAgICAgYnVmZmVyLnB1c2goJywgJyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGJ1ZmZlci5wdXNoKGtleXMubWFwKGtleSA9PiBgJHtrZXl9PSR7b3Bjb2RlLmRldGFpbHMgJiYgb3Bjb2RlLmRldGFpbHNba2V5XX1gKS5qb2luKCcsICcpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBidWZmZXIucHVzaCgnKScpO1xuICAgIH1cbiAgICBidWZmZXIucHVzaCgnXFxuJyk7XG4gICAgaWYgKG9wY29kZS5jaGlsZHJlbiAmJiBvcGNvZGUuY2hpbGRyZW4ubGVuZ3RoKSB7XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgb3Bjb2RlLmNoaWxkcmVuLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBfaW5zcGVjdChvcGNvZGUuY2hpbGRyZW5baV0sIGJ1ZmZlciwgbGV2ZWwgKyAxLCBpKTtcbiAgICAgICAgfVxuICAgIH1cbn0iXX0=

@@ -31,3 +31,5 @@ 'use strict';

this.sp = sp;
Object.seal(this);
if (false) {
Object.seal(this);
}
}

@@ -68,2 +70,5 @@ static empty() {

}
reset() {
this.stack.length = 0;
}
toArray() {

@@ -130,3 +135,2 @@ return this.stack.slice(this.fp, this.sp + 1);

this.fp = this.sp - 1;
// this.fp = this.sp + 1;
}

@@ -308,2 +312,4 @@ // Restore $ra, $sp and $fp

} else {
// Unload the stack
this.stack.reset();
result = {

@@ -337,2 +343,2 @@ done: true,

exports.default = VM;
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi92bS9hcHBlbmQuanMiXSwibmFtZXMiOlsiRXZhbHVhdGlvblN0YWNrIiwiY29uc3RydWN0b3IiLCJzdGFjayIsImZwIiwic3AiLCJPYmplY3QiLCJzZWFsIiwiZW1wdHkiLCJyZXN0b3JlIiwic25hcHNob3QiLCJzbGljZSIsImxlbmd0aCIsImlzRW1wdHkiLCJwdXNoIiwidmFsdWUiLCJkdXAiLCJwb3NpdGlvbiIsInBvcCIsIm4iLCJ0b3AiLCJwZWVrIiwiZnJvbUJhc2UiLCJvZmZzZXQiLCJmcm9tVG9wIiwiY2FwdHVyZSIsIml0ZW1zIiwiZW5kIiwic3RhcnQiLCJ0b0FycmF5IiwiVk0iLCJlbnYiLCJzY29wZSIsImR5bmFtaWNTY29wZSIsImVsZW1lbnRTdGFjayIsImR5bmFtaWNTY29wZVN0YWNrIiwic2NvcGVTdGFjayIsInVwZGF0aW5nT3Bjb2RlU3RhY2siLCJjYWNoZUdyb3VwcyIsImxpc3RCbG9ja1N0YWNrIiwicGMiLCJyYSIsInMwIiwiczEiLCJ0MCIsInQxIiwiY29uc3RhbnRzIiwiZmV0Y2giLCJyZWdpc3RlciIsImxvYWQiLCJmZXRjaFZhbHVlIiwibG9hZFZhbHVlIiwicHVzaEZyYW1lIiwicG9wRnJhbWUiLCJnb3RvIiwiY2FsbCIsInJldHVyblRvIiwicmV0dXJuIiwiaW5pdGlhbCIsInNlbGYiLCJwcm9ncmFtIiwicm9vdCIsInN5bWJvbFRhYmxlIiwic3ltYm9scyIsInZtIiwiYXJncyIsImJlZ2luQ2FjaGVHcm91cCIsInVwZGF0aW5nIiwidGFpbCIsImNvbW1pdENhY2hlR3JvdXAiLCJFTkQiLCJvcGNvZGVzIiwibWFya2VyIiwiaGVhZCIsIm5leHROb2RlIiwidGFnIiwiZ3VhcmQiLCJpbnNlcnRCZWZvcmUiLCJhcHBlbmQiLCJlbnRlciIsInN0YXRlIiwidHJhY2tlciIsImVsZW1lbnRzIiwicHVzaFVwZGF0YWJsZUJsb2NrIiwidHJ5T3Bjb2RlIiwiZGlkRW50ZXIiLCJpdGVyYXRlIiwibWVtbyIsImVudGVySXRlbSIsImtleSIsIm9wY29kZSIsImxpc3RCbG9jayIsIm1hcCIsImVudGVyTGlzdCIsInB1c2hCbG9ja0xpc3QiLCJhcnRpZmFjdHMiLCJ1cGRhdGVXaXRoIiwiY2hpbGRyZW4iLCJleGl0IiwicG9wQmxvY2siLCJwYXJlbnQiLCJkaWRJbml0aWFsaXplQ2hpbGRyZW4iLCJleGl0TGlzdCIsImN1cnJlbnQiLCJwdXNoQ2hpbGRTY29wZSIsImNoaWxkIiwicHVzaENhbGxlclNjb3BlIiwiY2hpbGRTY29wZSIsImNhbGxlclNjb3BlIiwiZ2V0Q2FsbGVyU2NvcGUiLCJwdXNoRHluYW1pY1Njb3BlIiwicHVzaFJvb3RTY29wZSIsInNpemUiLCJiaW5kQ2FsbGVyIiwic2l6ZWQiLCJiaW5kQ2FsbGVyU2NvcGUiLCJwb3BTY29wZSIsInBvcER5bmFtaWNTY29wZSIsIm5ld0Rlc3Ryb3lhYmxlIiwiZCIsImdldFNlbGYiLCJyZWZlcmVuY2VGb3JTeW1ib2wiLCJzeW1ib2wiLCJnZXRTeW1ib2wiLCJleGVjdXRlIiwiaW5pdGlhbGl6ZSIsInJlc3VsdCIsIm5leHQiLCJkb25lIiwibmV4dFN0YXRlbWVudCIsImV2YWx1YXRlIiwidHlwZSIsImV2YWx1YXRlT3Bjb2RlIiwiYmluZER5bmFtaWNTY29wZSIsIm5hbWVzIiwiaSIsIm5hbWUiLCJnZXRTdHJpbmciLCJzZXQiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFBQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7Ozs7O0FBRU8sTUFBTUEsZUFBTixDQUFzQjtBQUN6QkMsZ0JBQVlDLEtBQVosRUFBbUJDLEVBQW5CLEVBQXVCQyxFQUF2QixFQUEyQjtBQUN2QixhQUFLRixLQUFMLEdBQWFBLEtBQWI7QUFDQSxhQUFLQyxFQUFMLEdBQVVBLEVBQVY7QUFDQSxhQUFLQyxFQUFMLEdBQVVBLEVBQVY7QUFDQUMsZUFBT0MsSUFBUCxDQUFZLElBQVo7QUFDSDtBQUNELFdBQU9DLEtBQVAsR0FBZTtBQUNYLGVBQU8sSUFBSSxJQUFKLENBQVMsRUFBVCxF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QUFsUW1CO2tCQUFIWSxFIiwiZmlsZSI6ImxpYi92bS9hcHBlbmQuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBSZWdpc3RlciB9IGZyb20gJy4uL29wY29kZXMnO1xuaW1wb3J0IHsgU2NvcGUgfSBmcm9tICcuLi9lbnZpcm9ubWVudCc7XG5pbXBvcnQgeyBTdGFjaywgTGlua2VkTGlzdCwgTGlzdFNsaWNlLCBleHBlY3QgfSBmcm9tICdAZ2xpbW1lci91dGlsJztcbmltcG9ydCB7IGNvbWJpbmVTbGljZSB9IGZyb20gJ0BnbGltbWVyL3JlZmVyZW5jZSc7XG5pbXBvcnQgeyBMYWJlbE9wY29kZSwgSnVtcElmTm90TW9kaWZpZWRPcGNvZGUsIERpZE1vZGlmeU9wY29kZSB9IGZyb20gJy4uL2NvbXBpbGVkL29wY29kZXMvdm0nO1xuaW1wb3J0IHsgTGlzdEJsb2NrT3Bjb2RlLCBUcnlPcGNvZGUgfSBmcm9tICcuL3VwZGF0ZSc7XG5pbXBvcnQgUmVuZGVyUmVzdWx0IGZyb20gJy4vcmVuZGVyLXJlc3VsdCc7XG5pbXBvcnQgeyBBUFBFTkRfT1BDT0RFUyB9IGZyb20gJy4uL29wY29kZXMnO1xuZXhwb3J0IGNsYXNzIEV2YWx1YXRpb25TdGFjayB7XG4gICAgY29uc3RydWN0b3Ioc3RhY2ssIGZwLCBzcCkge1xuICAgICAgICB0aGlzLnN0YWNrID0gc3RhY2s7XG4gICAgICAgIHRoaXMuZnAgPSBmcDtcbiAgICAgICAgdGhpcy5zcCA9IHNwO1xuICAgICAgICBPYmplY3Quc2VhbCh0aGlzKTtcbiAgICB9XG4gICAgc3RhdGljIGVtcHR5KCkge1xuICAgICAgICByZXR1cm4gbmV3IHRoaXMoW10sIDAsIC0xKTtcbiAgICB9XG4gICAgc3RhdGljIHJlc3RvcmUoc25hcHNob3QpIHtcbiAgICAgICAgcmV0dXJuIG5ldyB0aGlzKHNuYXBzaG90LnNsaWNlKCksIDAsIHNuYXBzaG90Lmxlbmd0aCAtIDEpO1xuICAgIH1cbiAgICBpc0VtcHR5KCkge1xuICAgICAgICByZXR1cm4gdGhpcy5zcCA9PT0gLTE7XG4gICAgfVxuICAgIHB1c2godmFsdWUpIHtcbiAgICAgICAgdGhpcy5zdGFja1srK3RoaXMuc3BdID0gdmFsdWU7XG4gICAgfVxuICAgIGR1cChwb3NpdGlvbiA9IHRoaXMuc3ApIHtcbiAgICAgICAgdGhpcy5wdXNoKHRoaXMuc3RhY2tbcG9zaXRpb25dKTtcbiAgICB9XG4gICAgcG9wKG4gPSAxKSB7XG4gICAgICAgIGxldCB0b3AgPSB0aGlzLnN0YWNrW3RoaXMuc3BdO1xuICAgICAgICB0aGlzLnNwIC09IG47XG4gICAgICAgIHJldHVybiB0b3A7XG4gICAgfVxuICAgIHBlZWsoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnN0YWNrW3RoaXMuc3BdO1xuICAgIH1cbiAgICBmcm9tQmFzZShvZmZzZXQpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc3RhY2tbdGhpcy5mcCAtIG9mZnNldF07XG4gICAgfVxuICAgIGZyb21Ub3Aob2Zmc2V0KSB7XG4gICAgICAgIHJldHVybiB0aGlzLnN0YWNrW3RoaXMuc3AgLSBvZmZzZXRdO1xuICAgIH1cbiAgICBjYXB0dXJlKGl0ZW1zKSB7XG4gICAgICAgIGxldCBlbmQgPSB0aGlzLnNwICsgMTtcbiAgICAgICAgbGV0IHN0YXJ0ID0gZW5kIC0gaXRlbXM7XG4gICAgICAgIHJldHVybiB0aGlzLnN0YWNrLnNsaWNlKHN0YXJ0LCBlbmQpO1xuICAgIH1cbiAgICB0b0FycmF5KCkge1xuICAgICAgICByZXR1cm4gdGhpcy5zdGFjay5zbGljZSh0aGlzLmZwLCB0aGlzLnNwICsgMSk7XG4gICAgfVxufVxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgVk0ge1xuICAgIGNvbnN0cnVjdG9yKGVudiwgc2NvcGUsIGR5bmFtaWNTY29wZSwgZWxlbWVudFN0YWNrKSB7XG4gICAgICAgIHRoaXMuZW52ID0gZW52O1xuICAgICAgICB0aGlzLmVsZW1lbnRTdGFjayA9IGVsZW1lbnRTdGFjaztcbiAgICAgICAgdGhpcy5keW5hbWljU2NvcGVTdGFjayA9IG5ldyBTdGFjaygpO1xuICAgICAgICB0aGlzLnNjb3BlU3RhY2sgPSBuZXcgU3RhY2soKTtcbiAgICAgICAgdGhpcy51cGRhdGluZ09wY29kZVN0YWNrID0gbmV3IFN0YWNrKCk7XG4gICAgICAgIHRoaXMuY2FjaGVHcm91cHMgPSBuZXcgU3RhY2soKTtcbiAgICAgICAgdGhpcy5saXN0QmxvY2tTdGFjayA9IG5ldyBTdGFjaygpO1xuICAgICAgICB0aGlzLnN0YWNrID0gRXZhbHVhdGlvblN0YWNrLmVtcHR5KCk7XG4gICAgICAgIC8qIFJlZ2lzdGVycyAqL1xuICAgICAgICB0aGlzLnBjID0gLTE7XG4gICAgICAgIHRoaXMucmEgPSAtMTtcbiAgICAgICAgdGhpcy5zMCA9IG51bGw7XG4gICAgICAgIHRoaXMuczEgPSBudWxsO1xuICAgICAgICB0aGlzLnQwID0gbnVsbDtcbiAgICAgICAgdGhpcy50MSA9IG51bGw7XG4gICAgICAgIHRoaXMuZW52ID0gZW52O1xuICAgICAgICB0aGlzLmNvbnN0YW50cyA9IGVudi5jb25zdGFudHM7XG4gICAgICAgIHRoaXMuZWxlbWVudFN0YWNrID0gZWxlbWVudFN0YWNrO1xuICAgICAgICB0aGlzLnNjb3BlU3RhY2sucHVzaChzY29wZSk7XG4gICAgICAgIHRoaXMuZHluYW1pY1Njb3BlU3RhY2sucHVzaChkeW5hbWljU2NvcGUpO1xuICAgIH1cbiAgICBnZXQgZnAoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnN0YWNrLmZwO1xuICAgIH1cbiAgICBzZXQgZnAoZnApIHtcbiAgICAgICAgdGhpcy5zdGFjay5mcCA9IGZwO1xuICAgIH1cbiAgICBnZXQgc3AoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnN0YWNrLnNwO1xuICAgIH1cbiAgICBzZXQgc3Aoc3ApIHtcbiAgICAgICAgdGhpcy5zdGFjay5zcCA9IHNwO1xuICAgIH1cbiAgICAvLyBGZXRjaCBhIHZhbHVlIGZyb20gYSByZWdpc3RlciBvbnRvIHRoZSBzdGFja1xuICAgIGZldGNoKHJlZ2lzdGVyKSB7XG4gICAgICAgIHRoaXMuc3RhY2sucHVzaCh0aGlzW1JlZ2lzdGVyW3JlZ2lzdGVyXV0pO1xuICAgIH1cbiAgICAvLyBMb2FkIGEgdmFsdWUgZnJvbSB0aGUgc3RhY2sgaW50byBhIHJlZ2lzdGVyXG4gICAgbG9hZChyZWdpc3Rlcikge1xuICAgICAgICB0aGlzW1JlZ2lzdGVyW3JlZ2lzdGVyXV0gPSB0aGlzLnN0YWNrLnBvcCgpO1xuICAgIH1cbiAgICAvLyBGZXRjaCBhIHZhbHVlIGZyb20gYSByZWdpc3RlclxuICAgIGZldGNoVmFsdWUocmVnaXN0ZXIpIHtcbiAgICAgICAgcmV0dXJuIHRoaXNbUmVnaXN0ZXJbcmVnaXN0ZXJdXTtcbiAgICB9XG4gICAgLy8gTG9hZCBhIHZhbHVlIGludG8gYSByZWdpc3RlclxuICAgIGxvYWRWYWx1ZShyZWdpc3RlciwgdmFsdWUpIHtcbiAgICAgICAgdGhpc1tSZWdpc3RlcltyZWdpc3Rlcl1dID0gdmFsdWU7XG4gICAgfVxuICAgIC8vIFN0YXJ0IGEgbmV3IGZyYW1lIGFuZCBzYXZlICRyYSBhbmQgJGZwIG9uIHRoZSBzdGFja1xuICAgIHB1c2hGcmFtZSgpIHtcbiAgICAgICAgdGhpcy5zdGFjay5wdXNoKHRoaXMucmEpO1xuICAgICAgICB0aGlzLnN0YWNrLnB1c2godGhpcy5mcCk7XG4gICAgICAgIHRoaXMuZnAgPSB0aGlzLnNwIC0gMTtcbiAgICAgICAgLy8gdGhpcy5mcCA9IHRoaXMuc3AgKyAxO1xuICAgIH1cbiAgICAvLyBSZXN0b3JlICRyYSwgJHNwIGFuZCAkZnBcbiAgICBwb3BGcmFtZSgpIHtcbiAgICAgICAgdGhpcy5zcCA9IHRoaXMuZnAgLSAxO1xuICAgICAgICB0aGlzLnJhID0gdGhpcy5zdGFjay5mcm9tQmFzZSgwKTtcbiAgICAgICAgdGhpcy5mcCA9IHRoaXMuc3RhY2suZnJvbUJhc2UoLTEpO1xuICAgIH1cbiAgICAvLyBKdW1wIHRvIGFuIGFkZHJlc3MgaW4gYHByb2dyYW1gXG4gICAgZ290byhwYykge1xuICAgICAgICB0aGlzLnBjID0gcGM7XG4gICAgfVxuICAgIC8vIFNhdmUgJHBjIGludG8gJHJhLCB0aGVuIGp1bXAgdG8gYSBuZXcgYWRkcmVzcyBpbiBgcHJvZ3JhbWAgKGphbCBpbiBNSVBTKVxuICAgIGNhbGwocGMpIHtcbiAgICAgICAgdGhpcy5yYSA9IHRoaXMucGM7XG4gICAgICAgIHRoaXMucGMgPSBwYztcbiAgICB9XG4gICAgLy8gUHV0IGEgc3BlY2lmaWMgYHByb2dyYW1gIGFkZHJlc3MgaW4gJHJhXG4gICAgcmV0dXJuVG8ocmEpIHtcbiAgICAgICAgdGhpcy5yYSA9IHJhO1xuICAgIH1cbiAgICAvLyBSZXR1cm4gdG8gdGhlIGBwcm9ncmFtYCBhZGRyZXNzIHN0b3JlZCBpbiAkcmFcbiAgICByZXR1cm4oKSB7XG4gICAgICAgIHRoaXMucGMgPSB0aGlzLnJhO1xuICAgIH1cbiAgICBzdGF0aWMgaW5pdGlhbChlbnYsIHNlbGYsIGR5bmFtaWNTY29wZSwgZWxlbWVudFN0YWNrLCBwcm9ncmFtKSB7XG4gICAgICAgIGxldCBzY29wZSA9IFNjb3BlLnJvb3Qoc2VsZiwgcHJvZ3JhbS5zeW1ib2xUYWJsZS5zeW1ib2xzLmxlbmd0aCk7XG4gICAgICAgIGxldCB2bSA9IG5ldyBWTShlbnYsIHNjb3BlLCBkeW5hbWljU2NvcGUsIGVsZW1lbnRTdGFjayk7XG4gICAgICAgIHZtLnBjID0gcHJvZ3JhbS5zdGFydDtcbiAgICAgICAgdm0udXBkYXRpbmdPcGNvZGVTdGFjay5wdXNoKG5ldyBMaW5rZWRMaXN0KCkpO1xuICAgICAgICByZXR1cm4gdm07XG4gICAgfVxuICAgIGNhcHR1cmUoYXJncykge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgZHluYW1pY1Njb3BlOiB0aGlzLmR5bmFtaWNTY29wZSgpLFxuICAgICAgICAgICAgZW52OiB0aGlzLmVudixcbiAgICAgICAgICAgIHNjb3BlOiB0aGlzLnNjb3BlKCksXG4gICAgICAgICAgICBzdGFjazogdGhpcy5zdGFjay5jYXB0dXJlKGFyZ3MpXG4gICAgICAgIH07XG4gICAgfVxuICAgIGJlZ2luQ2FjaGVHcm91cCgpIHtcbiAgICAgICAgdGhpcy5jYWNoZUdyb3Vwcy5wdXNoKHRoaXMudXBkYXRpbmcoKS50YWlsKCkpO1xuICAgIH1cbiAgICBjb21taXRDYWNoZUdyb3VwKCkge1xuICAgICAgICAvLyAgICAgICAgSnVtcElmTm90TW9kaWZpZWQoRU5EKVxuICAgICAgICAvLyAgICAgICAgKGhlYWQpXG4gICAgICAgIC8vICAgICAgICAoLi4uLilcbiAgICAgICAgLy8gICAgICAgICh0YWlsKVxuICAgICAgICAvLyAgICAgICAgRGlkTW9kaWZ5XG4gICAgICAgIC8vIEVORDogICBOb29wXG4gICAgICAgIGxldCBFTkQgPSBuZXcgTGFiZWxPcGNvZGUoXCJFTkRcIik7XG4gICAgICAgIGxldCBvcGNvZGVzID0gdGhpcy51cGRhdGluZygpO1xuICAgICAgICBsZXQgbWFya2VyID0gdGhpcy5jYWNoZUdyb3Vwcy5wb3AoKTtcbiAgICAgICAgbGV0IGhlYWQgPSBtYXJrZXIgPyBvcGNvZGVzLm5leHROb2RlKG1hcmtlcikgOiBvcGNvZGVzLmhlYWQoKTtcbiAgICAgICAgbGV0IHRhaWwgPSBvcGNvZGVzLnRhaWwoKTtcbiAgICAgICAgbGV0IHRhZyA9IGNvbWJpbmVTbGljZShuZXcgTGlzdFNsaWNlKGhlYWQsIHRhaWwpKTtcbiAgICAgICAgbGV0IGd1YXJkID0gbmV3IEp1bXBJZk5vdE1vZGlmaWVkT3Bjb2RlKHRhZywgRU5EKTtcbiAgICAgICAgb3Bjb2Rlcy5pbnNlcnRCZWZvcmUoZ3VhcmQsIGhlYWQpO1xuICAgICAgICBvcGNvZGVzLmFwcGVuZChuZXcgRGlkTW9kaWZ5T3Bjb2RlKGd1YXJkKSk7XG4gICAgICAgIG9wY29kZXMuYXBwZW5kKEVORCk7XG4gICAgfVxuICAgIGVudGVyKGFyZ3MpIHtcbiAgICAgICAgbGV0IHVwZGF0aW5nID0gbmV3IExpbmtlZExpc3QoKTtcbiAgICAgICAgbGV0IHN0YXRlID0gdGhpcy5jYXB0dXJlKGFyZ3MpO1xuICAgICAgICBsZXQgdHJhY2tlciA9IHRoaXMuZWxlbWVudHMoKS5wdXNoVXBkYXRhYmxlQmxvY2soKTtcbiAgICAgICAgbGV0IHRyeU9wY29kZSA9IG5ldyBUcnlPcGNvZGUodGhpcy5wYywgc3RhdGUsIHRyYWNrZXIsIHVwZGF0aW5nKTtcbiAgICAgICAgdGhpcy5kaWRFbnRlcih0cnlPcGNvZGUpO1xuICAgIH1cbiAgICBpdGVyYXRlKG1lbW8sIHZhbHVlKSB7XG4gICAgICAgIGxldCBzdGFjayA9IHRoaXMuc3RhY2s7XG4gICAgICAgIHN0YWNrLnB1c2godmFsdWUpO1xuICAgICAgICBzdGFjay5wdXNoKG1lbW8pO1xuICAgICAgICBsZXQgc3RhdGUgPSB0aGlzLmNhcHR1cmUoMik7XG4gICAgICAgIGxldCB0cmFja2VyID0gdGhpcy5lbGVtZW50cygpLnB1c2hVcGRhdGFibGVCbG9jaygpO1xuICAgICAgICAvLyBsZXQgaXAgPSB0aGlzLmlwO1xuICAgICAgICAvLyB0aGlzLmlwID0gZW5kICsgNDtcbiAgICAgICAgLy8gdGhpcy5mcmFtZXMucHVzaChpcCk7XG4gICAgICAgIHJldHVybiBuZXcgVHJ5T3Bjb2RlKHRoaXMucGMsIHN0YXRlLCB0cmFja2VyLCBuZXcgTGlua2VkTGlzdCgpKTtcbiAgICB9XG4gICAgZW50ZXJJdGVtKGtleSwgb3Bjb2RlKSB7XG4gICAgICAgIHRoaXMubGlzdEJsb2NrKCkubWFwW2tleV0gPSBvcGNvZGU7XG4gICAgICAgIHRoaXMuZGlkRW50ZXIob3Bjb2RlKTtcbiAgICB9XG4gICAgZW50ZXJMaXN0KHN0YXJ0KSB7XG4gICAgICAgIGxldCB1cGRhdGluZyA9IG5ldyBMaW5rZWRMaXN0KCk7XG4gICAgICAgIGxldCBzdGF0ZSA9IHRoaXMuY2FwdHVyZSgwKTtcbiAgICAgICAgbGV0IHRyYWNrZXIgPSB0aGlzLmVsZW1lbnRzKCkucHVzaEJsb2NrTGlzdCh1cGRhdGluZyk7XG4gICAgICAgIGxldCBhcnRpZmFjdHMgPSB0aGlzLnN0YWNrLnBlZWsoKS5hcnRpZmFjdHM7XG4gICAgICAgIGxldCBvcGNvZGUgPSBuZXcgTGlzdEJsb2NrT3Bjb2RlKHN0YXJ0LCBzdGF0ZSwgdHJhY2tlciwgdXBkYXRpbmcsIGFydGlmYWN0cyk7XG4gICAgICAgIHRoaXMubGlzdEJsb2NrU3RhY2sucHVzaChvcGNvZGUpO1xuICAgICAgICB0aGlzLmRpZEVudGVyKG9wY29kZSk7XG4gICAgfVxuICAgIGRpZEVudGVyKG9wY29kZSkge1xuICAgICAgICB0aGlzLnVwZGF0ZVdpdGgob3Bjb2RlKTtcbiAgICAgICAgdGhpcy51cGRhdGluZ09wY29kZVN0YWNrLnB1c2gob3Bjb2RlLmNoaWxkcmVuKTtcbiAgICB9XG4gICAgZXhpdCgpIHtcbiAgICAgICAgdGhpcy5lbGVtZW50cygpLnBvcEJsb2NrKCk7XG4gICAgICAgIHRoaXMudXBkYXRpbmdPcGNvZGVTdGFjay5wb3AoKTtcbiAgICAgICAgbGV0IHBhcmVudCA9IHRoaXMudXBkYXRpbmcoKS50YWlsKCk7XG4gICAgICAgIHBhcmVudC5kaWRJbml0aWFsaXplQ2hpbGRyZW4oKTtcbiAgICB9XG4gICAgZXhpdExpc3QoKSB7XG4gICAgICAgIHRoaXMuZXhpdCgpO1xuICAgICAgICB0aGlzLmxpc3RCbG9ja1N0YWNrLnBvcCgpO1xuICAgIH1cbiAgICB1cGRhdGVXaXRoKG9wY29kZSkge1xuICAgICAgICB0aGlzLnVwZGF0aW5nKCkuYXBwZW5kKG9wY29kZSk7XG4gICAgfVxuICAgIGxpc3RCbG9jaygpIHtcbiAgICAgICAgcmV0dXJuIGV4cGVjdCh0aGlzLmxpc3RCbG9ja1N0YWNrLmN1cnJlbnQsICdleHBlY3RlZCBhIGxpc3QgYmxvY2snKTtcbiAgICB9XG4gICAgdXBkYXRpbmcoKSB7XG4gICAgICAgIHJldHVybiBleHBlY3QodGhpcy51cGRhdGluZ09wY29kZVN0YWNrLmN1cnJlbnQsICdleHBlY3RlZCB1cGRhdGluZyBvcGNvZGUgb24gdGhlIHVwZGF0aW5nIG9wY29kZSBzdGFjaycpO1xuICAgIH1cbiAgICBlbGVtZW50cygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZWxlbWVudFN0YWNrO1xuICAgIH1cbiAgICBzY29wZSgpIHtcbiAgICAgICAgcmV0dXJuIGV4cGVjdCh0aGlzLnNjb3BlU3RhY2suY3VycmVudCwgJ2V4cGVjdGVkIHNjb3BlIG9uIHRoZSBzY29wZSBzdGFjaycpO1xuICAgIH1cbiAgICBkeW5hbWljU2NvcGUoKSB7XG4gICAgICAgIHJldHVybiBleHBlY3QodGhpcy5keW5hbWljU2NvcGVTdGFjay5jdXJyZW50LCAnZXhwZWN0ZWQgZHluYW1pYyBzY29wZSBvbiB0aGUgZHluYW1pYyBzY29wZSBzdGFjaycpO1xuICAgIH1cbiAgICBwdXNoQ2hpbGRTY29wZSgpIHtcbiAgICAgICAgdGhpcy5zY29wZVN0YWNrLnB1c2godGhpcy5zY29wZSgpLmNoaWxkKCkpO1xuICAgIH1cbiAgICBwdXNoQ2FsbGVyU2NvcGUoY2hpbGRTY29wZSA9IGZhbHNlKSB7XG4gICAgICAgIGxldCBjYWxsZXJTY29wZSA9IGV4cGVjdCh0aGlzLnNjb3BlKCkuZ2V0Q2FsbGVyU2NvcGUoKSwgJ3B1c2hDYWxsZXJTY29wZSBpcyBjYWxsZWQgd2hlbiBhIGNhbGxlciBzY29wZSBpcyBwcmVzZW50Jyk7XG4gICAgICAgIHRoaXMuc2NvcGVTdGFjay5wdXNoKGNoaWxkU2NvcGUgPyBjYWxsZXJTY29wZS5jaGlsZCgpIDogY2FsbGVyU2NvcGUpO1xuICAgIH1cbiAgICBwdXNoRHluYW1pY1Njb3BlKCkge1xuICAgICAgICBsZXQgY2hpbGQgPSB0aGlzLmR5bmFtaWNTY29wZSgpLmNoaWxkKCk7XG4gICAgICAgIHRoaXMuZHluYW1pY1Njb3BlU3RhY2sucHVzaChjaGlsZCk7XG4gICAgICAgIHJldHVybiBjaGlsZDtcbiAgICB9XG4gICAgcHVzaFJvb3RTY29wZShzaXplLCBiaW5kQ2FsbGVyKSB7XG4gICAgICAgIGxldCBzY29wZSA9IFNjb3BlLnNpemVkKHNpemUpO1xuICAgICAgICBpZiAoYmluZENhbGxlcikgc2NvcGUuYmluZENhbGxlclNjb3BlKHRoaXMuc2NvcGUoKSk7XG4gICAgICAgIHRoaXMuc2NvcGVTdGFjay5wdXNoKHNjb3BlKTtcbiAgICAgICAgcmV0dXJuIHNjb3BlO1xuICAgIH1cbiAgICBwb3BTY29wZSgpIHtcbiAgICAgICAgdGhpcy5zY29wZVN0YWNrLnBvcCgpO1xuICAgIH1cbiAgICBwb3BEeW5hbWljU2NvcGUoKSB7XG4gICAgICAgIHRoaXMuZHluYW1pY1Njb3BlU3RhY2sucG9wKCk7XG4gICAgfVxuICAgIG5ld0Rlc3Ryb3lhYmxlKGQpIHtcbiAgICAgICAgdGhpcy5lbGVtZW50cygpLm5ld0Rlc3Ryb3lhYmxlKGQpO1xuICAgIH1cbiAgICAvLy8gU0NPUEUgSEVMUEVSU1xuICAgIGdldFNlbGYoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnNjb3BlKCkuZ2V0U2VsZigpO1xuICAgIH1cbiAgICByZWZlcmVuY2VGb3JTeW1ib2woc3ltYm9sKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnNjb3BlKCkuZ2V0U3ltYm9sKHN5bWJvbCk7XG4gICAgfVxuICAgIC8vLyBFWEVDVVRJT05cbiAgICBleGVjdXRlKHN0YXJ0LCBpbml0aWFsaXplKSB7XG4gICAgICAgIHRoaXMucGMgPSBzdGFydDtcbiAgICAgICAgaWYgKGluaXRpYWxpemUpIGluaXRpYWxpemUodGhpcyk7XG4gICAgICAgIGxldCByZXN1bHQ7XG4gICAgICAgIHdoaWxlICh0cnVlKSB7XG4gICAgICAgICAgICByZXN1bHQgPSB0aGlzLm5leHQoKTtcbiAgICAgICAgICAgIGlmIChyZXN1bHQuZG9uZSkgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHJlc3VsdC52YWx1ZTtcbiAgICB9XG4gICAgbmV4dCgpIHtcbiAgICAgICAgbGV0IHsgZW52LCB1cGRhdGluZ09wY29kZVN0YWNrLCBlbGVtZW50U3RhY2sgfSA9IHRoaXM7XG4gICAgICAgIGxldCBvcGNvZGUgPSB0aGlzLm5leHRTdGF0ZW1lbnQoZW52KTtcbiAgICAgICAgbGV0IHJlc3VsdDtcbiAgICAgICAgaWYgKG9wY29kZSAhPT0gbnVsbCkge1xuICAgICAgICAgICAgQVBQRU5EX09QQ09ERVMuZXZhbHVhdGUodGhpcywgb3Bjb2RlLCBvcGNvZGUudHlwZSk7XG4gICAgICAgICAgICByZXN1bHQgPSB7IGRvbmU6IGZhbHNlLCB2YWx1ZTogbnVsbCB9O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmVzdWx0ID0ge1xuICAgICAgICAgICAgICAgIGRvbmU6IHRydWUsXG4gICAgICAgICAgICAgICAgdmFsdWU6IG5ldyBSZW5kZXJSZXN1bHQoZW52LCBleHBlY3QodXBkYXRpbmdPcGNvZGVTdGFjay5wb3AoKSwgJ3RoZXJlIHNob3VsZCBiZSBhIGZpbmFsIHVwZGF0aW5nIG9wY29kZSBzdGFjaycpLCBlbGVtZW50U3RhY2sucG9wQmxvY2soKSlcbiAgICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG4gICAgbmV4dFN0YXRlbWVudChlbnYpIHtcbiAgICAgICAgbGV0IHsgcGMgfSA9IHRoaXM7XG4gICAgICAgIGlmIChwYyA9PT0gLTEpIHtcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG4gICAgICAgIGxldCBwcm9ncmFtID0gZW52LnByb2dyYW07XG4gICAgICAgIHRoaXMucGMgKz0gNDtcbiAgICAgICAgcmV0dXJuIHByb2dyYW0ub3Bjb2RlKHBjKTtcbiAgICB9XG4gICAgZXZhbHVhdGVPcGNvZGUob3Bjb2RlKSB7XG4gICAgICAgIEFQUEVORF9PUENPREVTLmV2YWx1YXRlKHRoaXMsIG9wY29kZSwgb3Bjb2RlLnR5cGUpO1xuICAgIH1cbiAgICBiaW5kRHluYW1pY1Njb3BlKG5hbWVzKSB7XG4gICAgICAgIGxldCBzY29wZSA9IHRoaXMuZHluYW1pY1Njb3BlKCk7XG4gICAgICAgIGZvciAobGV0IGkgPSBuYW1lcy5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xuICAgICAgICAgICAgbGV0IG5hbWUgPSB0aGlzLmNvbnN0YW50cy5nZXRTdHJpbmcobmFtZXNbaV0pO1xuICAgICAgICAgICAgc2NvcGUuc2V0KG5hbWUsIHRoaXMuc3RhY2sucG9wKCkpO1xuICAgICAgICB9XG4gICAgfVxufSJdfQ==
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi92bS9hcHBlbmQuanMiXSwibmFtZXMiOlsiRXZhbHVhdGlvblN0YWNrIiwiY29uc3RydWN0b3IiLCJzdGFjayIsImZwIiwic3AiLCJPYmplY3QiLCJzZWFsIiwiZW1wdHkiLCJyZXN0b3JlIiwic25hcHNob3QiLCJzbGljZSIsImxlbmd0aCIsImlzRW1wdHkiLCJwdXNoIiwidmFsdWUiLCJkdXAiLCJwb3NpdGlvbiIsInBvcCIsIm4iLCJ0b3AiLCJwZWVrIiwiZnJvbUJhc2UiLCJvZmZzZXQiLCJmcm9tVG9wIiwiY2FwdHVyZSIsIml0ZW1zIiwiZW5kIiwic3RhcnQiLCJyZXNldCIsInRvQXJyYXkiLCJWTSIsImVudiIsInNjb3BlIiwiZHluYW1pY1Njb3BlIiwiZWxlbWVudFN0YWNrIiwiZHluYW1pY1Njb3BlU3RhY2siLCJzY29wZVN0YWNrIiwidXBkYXRpbmdPcGNvZGVTdGFjayIsImNhY2hlR3JvdXBzIiwibGlzdEJsb2NrU3RhY2siLCJwYyIsInJhIiwiczAiLCJzMSIsInQwIiwidDEiLCJjb25zdGFudHMiLCJmZXRjaCIsInJlZ2lzdGVyIiwibG9hZCIsImZldGNoVmFsdWUiLCJsb2FkVmFsdWUiLCJwdXNoRnJhbWUiLCJwb3BGcmFtZSIsImdvdG8iLCJjYWxsIiwicmV0dXJuVG8iLCJyZXR1cm4iLCJpbml0aWFsIiwic2VsZiIsInByb2dyYW0iLCJyb290Iiwic3ltYm9sVGFibGUiLCJzeW1ib2xzIiwidm0iLCJhcmdzIiwiYmVnaW5DYWNoZUdyb3VwIiwidXBkYXRpbmciLCJ0YWlsIiwiY29tbWl0Q2FjaGVHcm91cCIsIkVORCIsIm9wY29kZXMiLCJtYXJrZXIiLCJoZWFkIiwibmV4dE5vZGUiLCJ0YWciLCJndWFyZCIsImluc2VydEJlZm9yZSIsImFwcGVuZCIsImVudGVyIiwic3RhdGUiLCJ0cmFja2VyIiwiZWxlbWVudHMiLCJwdXNoVXBkYXRhYmxlQmxvY2siLCJ0cnlPcGNvZGUiLCJkaWRFbnRlciIsIml0ZXJhdGUiLCJtZW1vIiwiZW50ZXJJdGVtIiwia2V5Iiwib3Bjb2RlIiwibGlzdEJsb2NrIiwibWFwIiwiZW50ZXJMaXN0IiwicHVzaEJsb2NrTGlzdCIsImFydGlmYWN0cyIsInVwZGF0ZVdpdGgiLCJjaGlsZHJlbiIsImV4aXQiLCJwb3BCbG9jayIsInBhcmVudCIsImRpZEluaXRpYWxpemVDaGlsZHJlbiIsImV4aXRMaXN0IiwiY3VycmVudCIsInB1c2hDaGlsZFNjb3BlIiwiY2hpbGQiLCJwdXNoQ2FsbGVyU2NvcGUiLCJjaGlsZFNjb3BlIiwiY2FsbGVyU2NvcGUiLCJnZXRDYWxsZXJTY29wZSIsInB1c2hEeW5hbWljU2NvcGUiLCJwdXNoUm9vdFNjb3BlIiwic2l6ZSIsImJpbmRDYWxsZXIiLCJzaXplZCIsImJpbmRDYWxsZXJTY29wZSIsInBvcFNjb3BlIiwicG9wRHluYW1pY1Njb3BlIiwibmV3RGVzdHJveWFibGUiLCJkIiwiZ2V0U2VsZiIsInJlZmVyZW5jZUZvclN5bWJvbCIsInN5bWJvbCIsImdldFN5bWJvbCIsImV4ZWN1dGUiLCJpbml0aWFsaXplIiwicmVzdWx0IiwibmV4dCIsImRvbmUiLCJuZXh0U3RhdGVtZW50IiwiZXZhbHVhdGUiLCJ0eXBlIiwiZXZhbHVhdGVPcGNvZGUiLCJiaW5kRHluYW1pY1Njb3BlIiwibmFtZXMiLCJpIiwibmFtZSIsImdldFN0cmluZyIsInNldCJdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUFBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOzs7Ozs7QUFHTyxNQUFNQSxlQUFOLENBQXNCO0FBQ3pCQyxnQkFBWUMsS0FBWixFQUFtQkMsRUFBbkIsRUFBdUJDLEVBQXZCLEVBQTJCO0FBQ3ZCLGFBQUtGLEtBQUwsR0FBYUEsS0FBYjtBQUNBLGFBQUtDLEVBQUwsR0FBVUEsRUFBVjtBQUNBLGFBQUtDLEVBQUwsR0FBVUEsRUFBVjtBQUNBLFlBQUksS0FBSixFQUFXO0FBQ1BDLG1CQUFPQyxJQUFQLENBQVksSUFBWjtBQUNIO0FBQ0o7QUFDRCxXQUFPQyxLQUFQLEdBQWU7QUFDWCxlQUFPLElBQUksSUFBSixDQUFTLEVBQVQsRUFBYSxDQUFiLEVBQWdCLENBQUMsQ0FBakIsQ0FBUDtBQUNIO0FBQ0QsV0FBT0MsT0FBUCxDQUFlQyxRQUFmLEVBQXlCO0FBQ3JCLGVBQU8sSUFBSSxJQUFKLENBQVNBLFNBQVNDLEtBQVQsRUFBVCxFQUEyQixDQUEzQixFQUE4QkQsU0FBU0UsTUFBVCxHQUFrQixDQUFoRCxDQUFQO0FBQ0g7QUFDREMsY0FBVTtBQUNOLGVBQU8sS0FBS1IsRUFBTCxLQUFZLENBQUMsQ0FBcEI7QUFDSDtBQUNEUyxTQUFLQyxLQUFMLEVBQVk7QUFDUixhQUFLWixLQUFMLENBQVcsRUFBRSxLQUFLRSxFQUFsQixJQUF3QlUsS0FBeEI7QUFDSDtBQUNEQyxRQUFJQyxXQUFXLEtBQUtaLEVBQXBCLEVBQXdCO0FBQ3BCLGFBQUtTLElBQUwsQ0FBVSxLQUFLWCxLQUFMLENBQVdjLFFBQVgsQ0FBVjtBQUNIO0FBQ0RDLFFBQUlDLElBQUksQ0FBUixFQUFXO0FBQ1AsWUFBSUMsTUFBTSxLQUFLakIsS0FBTCxDQUFXLEtBQUtFLEVBQWhCLENBQVY7QUFDQSxhQUFLQSxFQUFMLElBQVdjLENBQVg7QUFDQSxlQUFPQyxHQUFQO0FBQ0g7QUFDREMsV0FBTztBQUNILGVBQU8sS0FBS2xCLEtBQUwsQ0FBVyxLQUFLRSxFQUFoQixDQUFQO0FBQ0g7QUFDRGlCLGFBQVNDLE1BQVQsRUFBaUI7QUFDYixlQUFPLEtBQUtwQixLQUFMLENBQVcsS0FBS0MsRUFBTCxHQUFVbUIsTUFBckIsQ0FBUDtBQUNIO0FBQ0RDLFlBQVFELE1BQVIsRUFBZ0I7QUFDWixlQUFPLEtBQUtwQixLQUFMLENBQVcsS0FBS0UsRUFBTCxHQUFVa0IsTUFBckIsQ0FBUDtBQUNIO0FBQ0RFLFlBQVFDLEtBQVIsRUFBZTtBQUNYLFlBQUlDLE1BQU0sS0FBS3RCLEVBQUwsR0FBVSxDQUFwQjtBQUNBLFlBQUl1QixRQUFRRCxNQUFNRCxLQUFsQjtBQUNBLGVBQU8sS0FBS3ZCLEtBQUwsQ0FBV1EsS0FBWCxDQUFpQmlCLEtBQWpCLEVBQXdCRCxHQUF4QixDQUFQO0FBQ0g7QUFDREUsWUFBUTtBQUNKLGFBQUsxQixLQUFMLENBQVdTLE1BQVgsR0FBb0IsQ0FBcEI7QUFDSDtBQUNEa0IsY0FBVTtBQUNOLGVBQU8sS0FBSzNCLEtBQUwsQ0FBV1EsS0FBWCxDQUFpQixLQUFLUCxFQUF0QixFQUEwQixLQUFLQyxFQUFMLEdBQVUsQ0FBcEMsQ0FBUDtBQUNIO0FBaER3QjtRQUFoQkosZSxHQUFBQSxlO0FBa0RFLE1BQU04QixFQUFOLENBQVM7QUFDcEI3QixnQkFBWThCLEdBQVosRUFBaUJDLEtBQWpCLEVBQXdCQyxZQUF4QixFQUFzQ0MsWUFBdEMsRUFBb0Q7QUFDaEQsYUFBS0gsR0FBTCxHQUFXQSxHQUFYO0FBQ0EsYUFBS0csWUFBTCxHQUFvQkEsWUFBcEI7QUFDQSxhQUFLQyxpQkFBTCxHQUF5QixpQkFBekI7QUFDQSxhQUFLQyxVQUFMLEdBQWtCLGlCQUFsQjtBQUNBLGFBQUtDLG1CQUFMLEdBQTJCLGlCQUEzQjtBQUNBLGFBQUtDLFdBQUwsR0FBbUIsaUJBQW5CO0FBQ0EsYUFBS0MsY0FBTCxHQUFzQixpQkFBdEI7QUFDQSxhQUFLckMsS0FBTCxHQUFhRixnQkFBZ0JPLEtBQWhCLEVBQWI7QUFDQTtBQUNBLGFBQUtpQyxFQUFMLEdBQVUsQ0FBQyxDQUFYO0FBQ0EsYUFBS0MsRUFBTCxHQUFVLENBQUMsQ0FBWDtBQUNBLGFBQUtDLEVBQUwsR0FBVSxJQUFWO0FBQ0EsYUFBS0MsRUFBTCxHQUFVLElBQVY7QUFDQSxhQUFLQyxFQUFMLEdBQVUsSUFBVjtBQUNBLGFBQUtDLEVBQUwsR0FBVSxJQUFWO0FBQ0EsYUFBS2QsR0FBTCxHQUFXQSxHQUFYO0FBQ0EsYUFBS2UsU0FBTCxHQUFpQmYsSUFBSWUsU0FBckI7QUFDQSxhQUFLWixZQUFMLEdBQW9CQSxZQUFwQjtBQUNBLGFBQUtFLFVBQUwsQ0FBZ0J2QixJQUFoQixDQUFxQm1CLEtBQXJCO0FBQ0EsYUFBS0csaUJBQUwsQ0FBdUJ0QixJQUF2QixDQUE0Qm9CLFlBQTVCO0FBQ0g7QUFDRCxRQUFJOUIsRUFBSixHQUFTO0FBQ0wsZUFBTyxLQUFLRCxLQUFMLENBQVdDLEVBQWxCO0FBQ0g7QUFDRCxRQUFJQSxFQUFKLENBQU9BLEVBQVAsRUFBVztBQUNQLGFBQUtELEtBQUwsQ0FBV0MsRUFBWCxHQUFnQkEsRUFBaEI7QUFDSDtBQUNELFFBQUlDLEVBQUosR0FBUztBQUNMLGVBQU8sS0FBS0YsS0FBTCxDQUFXRSxFQUFsQjtBQUNIO0FBQ0QsUUFBSUEsRUFBSixDQUFPQSxFQUFQLEVBQVc7QUFDUCxhQUFLRixLQUFMLENBQVdFLEVBQVgsR0FBZ0JBLEVBQWhCO0FBQ0g7QUFDRDtBQUNBMkMsVUFBTUMsUUFBTixFQUFnQjtBQUNaLGFBQUs5QyxLQUFMLENBQVdXLElBQVgsQ0FBZ0IsS0FBSyxrQkFBU21DLFFBQVQsQ0FBTCxDQUFoQjtBQUNIO0FBQ0Q7QUFDQUMsU0FBS0QsUUFBTCxFQUFlO0FBQ1gsYUFBSyxrQkFBU0EsUUFBVCxDQUFMLElBQTJCLEtBQUs5QyxLQUFMLENBQVdlLEdBQVgsRUFBM0I7QUFDSDtBQUNEO0FBQ0FpQyxlQUFXRixRQUFYLEVBQXFCO0FBQ2pCLGVBQU8sS0FBSyxrQkFBU0EsUUFBVCxDQUFMLENBQVA7QUFDSDtBQUNEO0FBQ0FHLGNBQVVILFFBQVYsRUFBb0JsQyxLQUFwQixFQUEyQjtBQUN2QixhQUFLLGtCQUFTa0MsUUFBVCxDQUFMLElBQTJCbEMsS0FBM0I7QUFDSDtBQUNEO0FBQ0FzQyxnQkFBWTtBQUNSLGFBQUtsRCxLQUFMLENBQVdXLElBQVgsQ0FBZ0IsS0FBSzRCLEVBQXJCO0FBQ0EsYUFBS3ZDLEtBQUwsQ0FBV1csSUFBWCxDQUFnQixLQUFLVixFQUFyQjtBQUNBLGFBQUtBLEVBQUwsR0FBVSxLQUFLQyxFQUFMLEdBQVUsQ0FBcEI7QUFDSDtBQUNEO0FBQ0FpRCxlQUFXO0FBQ1AsYUFBS2pELEVBQUwsR0FBVSxLQUFLRCxFQUFMLEdBQVUsQ0FBcEI7QUFDQSxhQUFLc0MsRUFBTCxHQUFVLEtBQUt2QyxLQUFMLENBQVdtQixRQUFYLENBQW9CLENBQXBCLENBQVY7QUFDQSxhQUFLbEIsRUFBTCxHQUFVLEtBQUtELEtBQUwsQ0FBV21CLFFBQVgsQ0FBb0IsQ0FBQyxDQUFyQixDQUFWO0FBQ0g7QUFDRDtBQUNBaUMsU0FBS2QsRUFBTCxFQUFTO0FBQ0wsYUFBS0EsRUFBTCxHQUFVQSxFQUFWO0FBQ0g7QUFDRDtBQUNBZSxTQUFLZixFQUFMLEVBQVM7QUFDTCxhQUFLQyxFQUFMLEdBQVUsS0FBS0QsRUFBZjtBQUNBLGFBQUtBLEVBQUwsR0FBVUEsRUFBVjtBQUNIO0FBQ0Q7QUFDQWdCLGFBQVNmLEVBQVQsRUFBYTtBQUNULGFBQUtBLEVBQUwsR0FBVUEsRUFBVjtBQUNIO0FBQ0Q7QUFDQWdCLGFBQVM7QUFDTCxhQUFLakIsRUFBTCxHQUFVLEtBQUtDLEVBQWY7QUFDSDtBQUNELFdBQU9pQixPQUFQLENBQWUzQixHQUFmLEVBQW9CNEIsSUFBcEIsRUFBMEIxQixZQUExQixFQUF3Q0MsWUFBeEMsRUFBc0QwQixPQUF0RCxFQUErRDtBQUMzRCxZQUFJNUIsUUFBUSxtQkFBTTZCLElBQU4sQ0FBV0YsSUFBWCxFQUFpQkMsUUFBUUUsV0FBUixDQUFvQkMsT0FBcEIsQ0FBNEJwRCxNQUE3QyxDQUFaO0FBQ0EsWUFBSXFELEtBQUssSUFBSWxDLEVBQUosQ0FBT0MsR0FBUCxFQUFZQyxLQUFaLEVBQW1CQyxZQUFuQixFQUFpQ0MsWUFBakMsQ0FBVDtBQUNBOEIsV0FBR3hCLEVBQUgsR0FBUW9CLFFBQVFqQyxLQUFoQjtBQUNBcUMsV0FBRzNCLG1CQUFILENBQXVCeEIsSUFBdkIsQ0FBNEIsc0JBQTVCO0FBQ0EsZUFBT21ELEVBQVA7QUFDSDtBQUNEeEMsWUFBUXlDLElBQVIsRUFBYztBQUNWLGVBQU87QUFDSGhDLDBCQUFjLEtBQUtBLFlBQUwsRUFEWDtBQUVIRixpQkFBSyxLQUFLQSxHQUZQO0FBR0hDLG1CQUFPLEtBQUtBLEtBQUwsRUFISjtBQUlIOUIsbUJBQU8sS0FBS0EsS0FBTCxDQUFXc0IsT0FBWCxDQUFtQnlDLElBQW5CO0FBSkosU0FBUDtBQU1IO0FBQ0RDLHNCQUFrQjtBQUNkLGFBQUs1QixXQUFMLENBQWlCekIsSUFBakIsQ0FBc0IsS0FBS3NELFFBQUwsR0FBZ0JDLElBQWhCLEVBQXRCO0FBQ0g7QUFDREMsdUJBQW1CO0FBQ2Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsWUFBSUMsTUFBTSxvQkFBZ0IsS0FBaEIsQ0FBVjtBQUNBLFlBQUlDLFVBQVUsS0FBS0osUUFBTCxFQUFkO0FBQ0EsWUFBSUssU0FBUyxLQUFLbEMsV0FBTCxDQUFpQnJCLEdBQWpCLEVBQWI7QUFDQSxZQUFJd0QsT0FBT0QsU0FBU0QsUUFBUUcsUUFBUixDQUFpQkYsTUFBakIsQ0FBVCxHQUFvQ0QsUUFBUUUsSUFBUixFQUEvQztBQUNBLFlBQUlMLE9BQU9HLFFBQVFILElBQVIsRUFBWDtBQUNBLFlBQUlPLE1BQU0sNkJBQWEsb0JBQWNGLElBQWQsRUFBb0JMLElBQXBCLENBQWIsQ0FBVjtBQUNBLFlBQUlRLFFBQVEsZ0NBQTRCRCxHQUE1QixFQUFpQ0wsR0FBakMsQ0FBWjtBQUNBQyxnQkFBUU0sWUFBUixDQUFxQkQsS0FBckIsRUFBNEJILElBQTVCO0FBQ0FGLGdCQUFRTyxNQUFSLENBQWUsd0JBQW9CRixLQUFwQixDQUFmO0FBQ0FMLGdCQUFRTyxNQUFSLENBQWVSLEdBQWY7QUFDSDtBQUNEUyxVQUFNZCxJQUFOLEVBQVk7QUFDUixZQUFJRSxXQUFXLHNCQUFmO0FBQ0EsWUFBSWEsUUFBUSxLQUFLeEQsT0FBTCxDQUFheUMsSUFBYixDQUFaO0FBQ0EsWUFBSWdCLFVBQVUsS0FBS0MsUUFBTCxHQUFnQkMsa0JBQWhCLEVBQWQ7QUFDQSxZQUFJQyxZQUFZLHNCQUFjLEtBQUs1QyxFQUFuQixFQUF1QndDLEtBQXZCLEVBQThCQyxPQUE5QixFQUF1Q2QsUUFBdkMsQ0FBaEI7QUFDQSxhQUFLa0IsUUFBTCxDQUFjRCxTQUFkO0FBQ0g7QUFDREUsWUFBUUMsSUFBUixFQUFjekUsS0FBZCxFQUFxQjtBQUNqQixZQUFJWixRQUFRLEtBQUtBLEtBQWpCO0FBQ0FBLGNBQU1XLElBQU4sQ0FBV0MsS0FBWDtBQUNBWixjQUFNVyxJQUFOLENBQVcwRSxJQUFYO0FBQ0EsWUFBSVAsUUFBUSxLQUFLeEQsT0FBTCxDQUFhLENBQWIsQ0FBWjtBQUNBLFlBQUl5RCxVQUFVLEtBQUtDLFFBQUwsR0FBZ0JDLGtCQUFoQixFQUFkO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZUFBTyxzQkFBYyxLQUFLM0MsRUFBbkIsRUFBdUJ3QyxLQUF2QixFQUE4QkMsT0FBOUIsRUFBdUMsc0JBQXZDLENBQVA7QUFDSDtBQUNETyxjQUFVQyxHQUFWLEVBQWVDLE1BQWYsRUFBdUI7QUFDbkIsYUFBS0MsU0FBTCxHQUFpQkMsR0FBakIsQ0FBcUJILEdBQXJCLElBQTRCQyxNQUE1QjtBQUNBLGFBQUtMLFFBQUwsQ0FBY0ssTUFBZDtBQUNIO0FBQ0RHLGNBQVVsRSxLQUFWLEVBQWlCO0FBQ2IsWUFBSXdDLFdBQVcsc0JBQWY7QUFDQSxZQUFJYSxRQUFRLEtBQUt4RCxPQUFMLENBQWEsQ0FBYixDQUFaO0FBQ0EsWUFBSXlELFVBQVUsS0FBS0MsUUFBTCxHQUFnQlksYUFBaEIsQ0FBOEIzQixRQUE5QixDQUFkO0FBQ0EsWUFBSTRCLFlBQVksS0FBSzdGLEtBQUwsQ0FBV2tCLElBQVgsR0FBa0IyRSxTQUFsQztBQUNBLFlBQUlMLFNBQVMsNEJBQW9CL0QsS0FBcEIsRUFBMkJxRCxLQUEzQixFQUFrQ0MsT0FBbEMsRUFBMkNkLFFBQTNDLEVBQXFENEIsU0FBckQsQ0FBYjtBQUNBLGFBQUt4RCxjQUFMLENBQW9CMUIsSUFBcEIsQ0FBeUI2RSxNQUF6QjtBQUNBLGFBQUtMLFFBQUwsQ0FBY0ssTUFBZDtBQUNIO0FBQ0RMLGFBQVNLLE1BQVQsRUFBaUI7QUFDYixhQUFLTSxVQUFMLENBQWdCTixNQUFoQjtBQUNBLGFBQUtyRCxtQkFBTCxDQUF5QnhCLElBQXpCLENBQThCNkUsT0FBT08sUUFBckM7QUFDSDtBQUNEQyxXQUFPO0FBQ0gsYUFBS2hCLFFBQUwsR0FBZ0JpQixRQUFoQjtBQUNBLGFBQUs5RCxtQkFBTCxDQUF5QnBCLEdBQXpCO0FBQ0EsWUFBSW1GLFNBQVMsS0FBS2pDLFFBQUwsR0FBZ0JDLElBQWhCLEVBQWI7QUFDQWdDLGVBQU9DLHFCQUFQO0FBQ0g7QUFDREMsZUFBVztBQUNQLGFBQUtKLElBQUw7QUFDQSxhQUFLM0QsY0FBTCxDQUFvQnRCLEdBQXBCO0FBQ0g7QUFDRCtFLGVBQVdOLE1BQVgsRUFBbUI7QUFDZixhQUFLdkIsUUFBTCxHQUFnQlcsTUFBaEIsQ0FBdUJZLE1BQXZCO0FBQ0g7QUFDREMsZ0JBQVk7QUFDUixlQUFPLGtCQUFPLEtBQUtwRCxjQUFMLENBQW9CZ0UsT0FBM0IsRUFBb0MsdUJBQXBDLENBQVA7QUFDSDtBQUNEcEMsZUFBVztBQUNQLGVBQU8sa0JBQU8sS0FBSzlCLG1CQUFMLENBQXlCa0UsT0FBaEMsRUFBeUMsdURBQXpDLENBQVA7QUFDSDtBQUNEckIsZUFBVztBQUNQLGVBQU8sS0FBS2hELFlBQVo7QUFDSDtBQUNERixZQUFRO0FBQ0osZUFBTyxrQkFBTyxLQUFLSSxVQUFMLENBQWdCbUUsT0FBdkIsRUFBZ0MsbUNBQWhDLENBQVA7QUFDSDtBQUNEdEUsbUJBQWU7QUFDWCxlQUFPLGtCQUFPLEtBQUtFLGlCQUFMLENBQXVCb0UsT0FBOUIsRUFBdUMsbURBQXZDLENBQVA7QUFDSDtBQUNEQyxxQkFBaUI7QUFDYixhQUFLcEUsVUFBTCxDQUFnQnZCLElBQWhCLENBQXFCLEtBQUttQixLQUFMLEdBQWF5RSxLQUFiLEVBQXJCO0FBQ0g7QUFDREMsb0JBQWdCQyxhQUFhLEtBQTdCLEVBQW9DO0FBQ2hDLFlBQUlDLGNBQWMsa0JBQU8sS0FBSzVFLEtBQUwsR0FBYTZFLGNBQWIsRUFBUCxFQUFzQywwREFBdEMsQ0FBbEI7QUFDQSxhQUFLekUsVUFBTCxDQUFnQnZCLElBQWhCLENBQXFCOEYsYUFBYUMsWUFBWUgsS0FBWixFQUFiLEdBQW1DRyxXQUF4RDtBQUNIO0FBQ0RFLHVCQUFtQjtBQUNmLFlBQUlMLFFBQVEsS0FBS3hFLFlBQUwsR0FBb0J3RSxLQUFwQixFQUFaO0FBQ0EsYUFBS3RFLGlCQUFMLENBQXVCdEIsSUFBdkIsQ0FBNEI0RixLQUE1QjtBQUNBLGVBQU9BLEtBQVA7QUFDSDtBQUNETSxrQkFBY0MsSUFBZCxFQUFvQkMsVUFBcEIsRUFBZ0M7QUFDNUIsWUFBSWpGLFFBQVEsbUJBQU1rRixLQUFOLENBQVlGLElBQVosQ0FBWjtBQUNBLFlBQUlDLFVBQUosRUFBZ0JqRixNQUFNbUYsZUFBTixDQUFzQixLQUFLbkYsS0FBTCxFQUF0QjtBQUNoQixhQUFLSSxVQUFMLENBQWdCdkIsSUFBaEIsQ0FBcUJtQixLQUFyQjtBQUNBLGVBQU9BLEtBQVA7QUFDSDtBQUNEb0YsZUFBVztBQUNQLGFBQUtoRixVQUFMLENBQWdCbkIsR0FBaEI7QUFDSDtBQUNEb0csc0JBQWtCO0FBQ2QsYUFBS2xGLGlCQUFMLENBQXVCbEIsR0FBdkI7QUFDSDtBQUNEcUcsbUJBQWVDLENBQWYsRUFBa0I7QUFDZCxhQUFLckMsUUFBTCxHQUFnQm9DLGNBQWhCLENBQStCQyxDQUEvQjtBQUNIO0FBQ0Q7QUFDQUMsY0FBVTtBQUNOLGVBQU8sS0FBS3hGLEtBQUwsR0FBYXdGLE9BQWIsRUFBUDtBQUNIO0FBQ0RDLHVCQUFtQkMsTUFBbkIsRUFBMkI7QUFDdkIsZUFBTyxLQUFLMUYsS0FBTCxHQUFhMkYsU0FBYixDQUF1QkQsTUFBdkIsQ0FBUDtBQUNIO0FBQ0Q7QUFDQUUsWUFBUWpHLEtBQVIsRUFBZWtHLFVBQWYsRUFBMkI7QUFDdkIsYUFBS3JGLEVBQUwsR0FBVWIsS0FBVjtBQUNBLFlBQUlrRyxVQUFKLEVBQWdCQSxXQUFXLElBQVg7QUFDaEIsWUFBSUMsTUFBSjtBQUNBLGVBQU8sSUFBUCxFQUFhO0FBQ1RBLHFCQUFTLEtBQUtDLElBQUwsRUFBVDtBQUNBLGdCQUFJRCxPQUFPRSxJQUFYLEVBQWlCO0FBQ3BCO0FBQ0QsZUFBT0YsT0FBT2hILEtBQWQ7QUFDSDtBQUNEaUgsV0FBTztBQUNILFlBQUksRUFBRWhHLEdBQUYsRUFBT00sbUJBQVAsRUFBNEJILFlBQTVCLEtBQTZDLElBQWpEO0FBQ0EsWUFBSXdELFNBQVMsS0FBS3VDLGFBQUwsQ0FBbUJsRyxHQUFuQixDQUFiO0FBQ0EsWUFBSStGLE1BQUo7QUFDQSxZQUFJcEMsV0FBVyxJQUFmLEVBQXFCO0FBQ2pCLG9DQUFld0MsUUFBZixDQUF3QixJQUF4QixFQUE4QnhDLE1BQTlCLEVBQXNDQSxPQUFPeUMsSUFBN0M7QUFDQUwscUJBQVMsRUFBRUUsTUFBTSxLQUFSLEVBQWVsSCxPQUFPLElBQXRCLEVBQVQ7QUFDSCxTQUhELE1BR087QUFDSDtBQUNBLGlCQUFLWixLQUFMLENBQVcwQixLQUFYO0FBQ0FrRyxxQkFBUztBQUNMRSxzQkFBTSxJQUREO0FBRUxsSCx1QkFBTywyQkFBaUJpQixHQUFqQixFQUFzQixrQkFBT00sb0JBQW9CcEIsR0FBcEIsRUFBUCxFQUFrQywrQ0FBbEMsQ0FBdEIsRUFBMEdpQixhQUFhaUUsUUFBYixFQUExRztBQUZGLGFBQVQ7QUFJSDtBQUNELGVBQU8yQixNQUFQO0FBQ0g7QUFDREcsa0JBQWNsRyxHQUFkLEVBQW1CO0FBQ2YsWUFBSSxFQUFFUyxFQUFGLEtBQVMsSUFBYjtBQUNBLFlBQUlBLE9BQU8sQ0FBQyxDQUFaLEVBQWU7QUFDWCxtQkFBTyxJQUFQO0FBQ0g7QUFDRCxZQUFJb0IsVUFBVTdCLElBQUk2QixPQUFsQjtBQUNBLGFBQUtwQixFQUFMLElBQVcsQ0FBWDtBQUNBLGVBQU9vQixRQUFROEIsTUFBUixDQUFlbEQsRUFBZixDQUFQO0FBQ0g7QUFDRDRGLG1CQUFlMUMsTUFBZixFQUF1QjtBQUNuQixnQ0FBZXdDLFFBQWYsQ0FBd0IsSUFBeEIsRUFBOEJ4QyxNQUE5QixFQUFzQ0EsT0FBT3lDLElBQTdDO0FBQ0g7QUFDREUscUJBQWlCQyxLQUFqQixFQUF3QjtBQUNwQixZQUFJdEcsUUFBUSxLQUFLQyxZQUFMLEVBQVo7QUFDQSxhQUFLLElBQUlzRyxJQUFJRCxNQUFNM0gsTUFBTixHQUFlLENBQTVCLEVBQStCNEgsS0FBSyxDQUFwQyxFQUF1Q0EsR0FBdkMsRUFBNEM7QUFDeEMsZ0JBQUlDLE9BQU8sS0FBSzFGLFNBQUwsQ0FBZTJGLFNBQWYsQ0FBeUJILE1BQU1DLENBQU4sQ0FBekIsQ0FBWDtBQUNBdkcsa0JBQU0wRyxHQUFOLENBQVVGLElBQVYsRUFBZ0IsS0FBS3RJLEtBQUwsQ0FBV2UsR0FBWCxFQUFoQjtBQUNIO0FBQ0o7QUFuUW1CO2tCQUFIYSxFIiwiZmlsZSI6ImxpYi92bS9hcHBlbmQuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBSZWdpc3RlciB9IGZyb20gJy4uL29wY29kZXMnO1xuaW1wb3J0IHsgU2NvcGUgfSBmcm9tICcuLi9lbnZpcm9ubWVudCc7XG5pbXBvcnQgeyBTdGFjaywgTGlua2VkTGlzdCwgTGlzdFNsaWNlLCBleHBlY3QgfSBmcm9tICdAZ2xpbW1lci91dGlsJztcbmltcG9ydCB7IGNvbWJpbmVTbGljZSB9IGZyb20gJ0BnbGltbWVyL3JlZmVyZW5jZSc7XG5pbXBvcnQgeyBMYWJlbE9wY29kZSwgSnVtcElmTm90TW9kaWZpZWRPcGNvZGUsIERpZE1vZGlmeU9wY29kZSB9IGZyb20gJy4uL2NvbXBpbGVkL29wY29kZXMvdm0nO1xuaW1wb3J0IHsgTGlzdEJsb2NrT3Bjb2RlLCBUcnlPcGNvZGUgfSBmcm9tICcuL3VwZGF0ZSc7XG5pbXBvcnQgUmVuZGVyUmVzdWx0IGZyb20gJy4vcmVuZGVyLXJlc3VsdCc7XG5cbmltcG9ydCB7IEFQUEVORF9PUENPREVTIH0gZnJvbSAnLi4vb3Bjb2Rlcyc7XG5leHBvcnQgY2xhc3MgRXZhbHVhdGlvblN0YWNrIHtcbiAgICBjb25zdHJ1Y3RvcihzdGFjaywgZnAsIHNwKSB7XG4gICAgICAgIHRoaXMuc3RhY2sgPSBzdGFjaztcbiAgICAgICAgdGhpcy5mcCA9IGZwO1xuICAgICAgICB0aGlzLnNwID0gc3A7XG4gICAgICAgIGlmIChmYWxzZSkge1xuICAgICAgICAgICAgT2JqZWN0LnNlYWwodGhpcyk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgc3RhdGljIGVtcHR5KCkge1xuICAgICAgICByZXR1cm4gbmV3IHRoaXMoW10sIDAsIC0xKTtcbiAgICB9XG4gICAgc3RhdGljIHJlc3RvcmUoc25hcHNob3QpIHtcbiAgICAgICAgcmV0dXJuIG5ldyB0aGlzKHNuYXBzaG90LnNsaWNlKCksIDAsIHNuYXBzaG90Lmxlbmd0aCAtIDEpO1xuICAgIH1cbiAgICBpc0VtcHR5KCkge1xuICAgICAgICByZXR1cm4gdGhpcy5zcCA9PT0gLTE7XG4gICAgfVxuICAgIHB1c2godmFsdWUpIHtcbiAgICAgICAgdGhpcy5zdGFja1srK3RoaXMuc3BdID0gdmFsdWU7XG4gICAgfVxuICAgIGR1cChwb3NpdGlvbiA9IHRoaXMuc3ApIHtcbiAgICAgICAgdGhpcy5wdXNoKHRoaXMuc3RhY2tbcG9zaXRpb25dKTtcbiAgICB9XG4gICAgcG9wKG4gPSAxKSB7XG4gICAgICAgIGxldCB0b3AgPSB0aGlzLnN0YWNrW3RoaXMuc3BdO1xuICAgICAgICB0aGlzLnNwIC09IG47XG4gICAgICAgIHJldHVybiB0b3A7XG4gICAgfVxuICAgIHBlZWsoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnN0YWNrW3RoaXMuc3BdO1xuICAgIH1cbiAgICBmcm9tQmFzZShvZmZzZXQpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc3RhY2tbdGhpcy5mcCAtIG9mZnNldF07XG4gICAgfVxuICAgIGZyb21Ub3Aob2Zmc2V0KSB7XG4gICAgICAgIHJldHVybiB0aGlzLnN0YWNrW3RoaXMuc3AgLSBvZmZzZXRdO1xuICAgIH1cbiAgICBjYXB0dXJlKGl0ZW1zKSB7XG4gICAgICAgIGxldCBlbmQgPSB0aGlzLnNwICsgMTtcbiAgICAgICAgbGV0IHN0YXJ0ID0gZW5kIC0gaXRlbXM7XG4gICAgICAgIHJldHVybiB0aGlzLnN0YWNrLnNsaWNlKHN0YXJ0LCBlbmQpO1xuICAgIH1cbiAgICByZXNldCgpIHtcbiAgICAgICAgdGhpcy5zdGFjay5sZW5ndGggPSAwO1xuICAgIH1cbiAgICB0b0FycmF5KCkge1xuICAgICAgICByZXR1cm4gdGhpcy5zdGFjay5zbGljZSh0aGlzLmZwLCB0aGlzLnNwICsgMSk7XG4gICAgfVxufVxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgVk0ge1xuICAgIGNvbnN0cnVjdG9yKGVudiwgc2NvcGUsIGR5bmFtaWNTY29wZSwgZWxlbWVudFN0YWNrKSB7XG4gICAgICAgIHRoaXMuZW52ID0gZW52O1xuICAgICAgICB0aGlzLmVsZW1lbnRTdGFjayA9IGVsZW1lbnRTdGFjaztcbiAgICAgICAgdGhpcy5keW5hbWljU2NvcGVTdGFjayA9IG5ldyBTdGFjaygpO1xuICAgICAgICB0aGlzLnNjb3BlU3RhY2sgPSBuZXcgU3RhY2soKTtcbiAgICAgICAgdGhpcy51cGRhdGluZ09wY29kZVN0YWNrID0gbmV3IFN0YWNrKCk7XG4gICAgICAgIHRoaXMuY2FjaGVHcm91cHMgPSBuZXcgU3RhY2soKTtcbiAgICAgICAgdGhpcy5saXN0QmxvY2tTdGFjayA9IG5ldyBTdGFjaygpO1xuICAgICAgICB0aGlzLnN0YWNrID0gRXZhbHVhdGlvblN0YWNrLmVtcHR5KCk7XG4gICAgICAgIC8qIFJlZ2lzdGVycyAqL1xuICAgICAgICB0aGlzLnBjID0gLTE7XG4gICAgICAgIHRoaXMucmEgPSAtMTtcbiAgICAgICAgdGhpcy5zMCA9IG51bGw7XG4gICAgICAgIHRoaXMuczEgPSBudWxsO1xuICAgICAgICB0aGlzLnQwID0gbnVsbDtcbiAgICAgICAgdGhpcy50MSA9IG51bGw7XG4gICAgICAgIHRoaXMuZW52ID0gZW52O1xuICAgICAgICB0aGlzLmNvbnN0YW50cyA9IGVudi5jb25zdGFudHM7XG4gICAgICAgIHRoaXMuZWxlbWVudFN0YWNrID0gZWxlbWVudFN0YWNrO1xuICAgICAgICB0aGlzLnNjb3BlU3RhY2sucHVzaChzY29wZSk7XG4gICAgICAgIHRoaXMuZHluYW1pY1Njb3BlU3RhY2sucHVzaChkeW5hbWljU2NvcGUpO1xuICAgIH1cbiAgICBnZXQgZnAoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnN0YWNrLmZwO1xuICAgIH1cbiAgICBzZXQgZnAoZnApIHtcbiAgICAgICAgdGhpcy5zdGFjay5mcCA9IGZwO1xuICAgIH1cbiAgICBnZXQgc3AoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnN0YWNrLnNwO1xuICAgIH1cbiAgICBzZXQgc3Aoc3ApIHtcbiAgICAgICAgdGhpcy5zdGFjay5zcCA9IHNwO1xuICAgIH1cbiAgICAvLyBGZXRjaCBhIHZhbHVlIGZyb20gYSByZWdpc3RlciBvbnRvIHRoZSBzdGFja1xuICAgIGZldGNoKHJlZ2lzdGVyKSB7XG4gICAgICAgIHRoaXMuc3RhY2sucHVzaCh0aGlzW1JlZ2lzdGVyW3JlZ2lzdGVyXV0pO1xuICAgIH1cbiAgICAvLyBMb2FkIGEgdmFsdWUgZnJvbSB0aGUgc3RhY2sgaW50byBhIHJlZ2lzdGVyXG4gICAgbG9hZChyZWdpc3Rlcikge1xuICAgICAgICB0aGlzW1JlZ2lzdGVyW3JlZ2lzdGVyXV0gPSB0aGlzLnN0YWNrLnBvcCgpO1xuICAgIH1cbiAgICAvLyBGZXRjaCBhIHZhbHVlIGZyb20gYSByZWdpc3RlclxuICAgIGZldGNoVmFsdWUocmVnaXN0ZXIpIHtcbiAgICAgICAgcmV0dXJuIHRoaXNbUmVnaXN0ZXJbcmVnaXN0ZXJdXTtcbiAgICB9XG4gICAgLy8gTG9hZCBhIHZhbHVlIGludG8gYSByZWdpc3RlclxuICAgIGxvYWRWYWx1ZShyZWdpc3RlciwgdmFsdWUpIHtcbiAgICAgICAgdGhpc1tSZWdpc3RlcltyZWdpc3Rlcl1dID0gdmFsdWU7XG4gICAgfVxuICAgIC8vIFN0YXJ0IGEgbmV3IGZyYW1lIGFuZCBzYXZlICRyYSBhbmQgJGZwIG9uIHRoZSBzdGFja1xuICAgIHB1c2hGcmFtZSgpIHtcbiAgICAgICAgdGhpcy5zdGFjay5wdXNoKHRoaXMucmEpO1xuICAgICAgICB0aGlzLnN0YWNrLnB1c2godGhpcy5mcCk7XG4gICAgICAgIHRoaXMuZnAgPSB0aGlzLnNwIC0gMTtcbiAgICB9XG4gICAgLy8gUmVzdG9yZSAkcmEsICRzcCBhbmQgJGZwXG4gICAgcG9wRnJhbWUoKSB7XG4gICAgICAgIHRoaXMuc3AgPSB0aGlzLmZwIC0gMTtcbiAgICAgICAgdGhpcy5yYSA9IHRoaXMuc3RhY2suZnJvbUJhc2UoMCk7XG4gICAgICAgIHRoaXMuZnAgPSB0aGlzLnN0YWNrLmZyb21CYXNlKC0xKTtcbiAgICB9XG4gICAgLy8gSnVtcCB0byBhbiBhZGRyZXNzIGluIGBwcm9ncmFtYFxuICAgIGdvdG8ocGMpIHtcbiAgICAgICAgdGhpcy5wYyA9IHBjO1xuICAgIH1cbiAgICAvLyBTYXZlICRwYyBpbnRvICRyYSwgdGhlbiBqdW1wIHRvIGEgbmV3IGFkZHJlc3MgaW4gYHByb2dyYW1gIChqYWwgaW4gTUlQUylcbiAgICBjYWxsKHBjKSB7XG4gICAgICAgIHRoaXMucmEgPSB0aGlzLnBjO1xuICAgICAgICB0aGlzLnBjID0gcGM7XG4gICAgfVxuICAgIC8vIFB1dCBhIHNwZWNpZmljIGBwcm9ncmFtYCBhZGRyZXNzIGluICRyYVxuICAgIHJldHVyblRvKHJhKSB7XG4gICAgICAgIHRoaXMucmEgPSByYTtcbiAgICB9XG4gICAgLy8gUmV0dXJuIHRvIHRoZSBgcHJvZ3JhbWAgYWRkcmVzcyBzdG9yZWQgaW4gJHJhXG4gICAgcmV0dXJuKCkge1xuICAgICAgICB0aGlzLnBjID0gdGhpcy5yYTtcbiAgICB9XG4gICAgc3RhdGljIGluaXRpYWwoZW52LCBzZWxmLCBkeW5hbWljU2NvcGUsIGVsZW1lbnRTdGFjaywgcHJvZ3JhbSkge1xuICAgICAgICBsZXQgc2NvcGUgPSBTY29wZS5yb290KHNlbGYsIHByb2dyYW0uc3ltYm9sVGFibGUuc3ltYm9scy5sZW5ndGgpO1xuICAgICAgICBsZXQgdm0gPSBuZXcgVk0oZW52LCBzY29wZSwgZHluYW1pY1Njb3BlLCBlbGVtZW50U3RhY2spO1xuICAgICAgICB2bS5wYyA9IHByb2dyYW0uc3RhcnQ7XG4gICAgICAgIHZtLnVwZGF0aW5nT3Bjb2RlU3RhY2sucHVzaChuZXcgTGlua2VkTGlzdCgpKTtcbiAgICAgICAgcmV0dXJuIHZtO1xuICAgIH1cbiAgICBjYXB0dXJlKGFyZ3MpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGR5bmFtaWNTY29wZTogdGhpcy5keW5hbWljU2NvcGUoKSxcbiAgICAgICAgICAgIGVudjogdGhpcy5lbnYsXG4gICAgICAgICAgICBzY29wZTogdGhpcy5zY29wZSgpLFxuICAgICAgICAgICAgc3RhY2s6IHRoaXMuc3RhY2suY2FwdHVyZShhcmdzKVxuICAgICAgICB9O1xuICAgIH1cbiAgICBiZWdpbkNhY2hlR3JvdXAoKSB7XG4gICAgICAgIHRoaXMuY2FjaGVHcm91cHMucHVzaCh0aGlzLnVwZGF0aW5nKCkudGFpbCgpKTtcbiAgICB9XG4gICAgY29tbWl0Q2FjaGVHcm91cCgpIHtcbiAgICAgICAgLy8gICAgICAgIEp1bXBJZk5vdE1vZGlmaWVkKEVORClcbiAgICAgICAgLy8gICAgICAgIChoZWFkKVxuICAgICAgICAvLyAgICAgICAgKC4uLi4pXG4gICAgICAgIC8vICAgICAgICAodGFpbClcbiAgICAgICAgLy8gICAgICAgIERpZE1vZGlmeVxuICAgICAgICAvLyBFTkQ6ICAgTm9vcFxuICAgICAgICBsZXQgRU5EID0gbmV3IExhYmVsT3Bjb2RlKFwiRU5EXCIpO1xuICAgICAgICBsZXQgb3Bjb2RlcyA9IHRoaXMudXBkYXRpbmcoKTtcbiAgICAgICAgbGV0IG1hcmtlciA9IHRoaXMuY2FjaGVHcm91cHMucG9wKCk7XG4gICAgICAgIGxldCBoZWFkID0gbWFya2VyID8gb3Bjb2Rlcy5uZXh0Tm9kZShtYXJrZXIpIDogb3Bjb2Rlcy5oZWFkKCk7XG4gICAgICAgIGxldCB0YWlsID0gb3Bjb2Rlcy50YWlsKCk7XG4gICAgICAgIGxldCB0YWcgPSBjb21iaW5lU2xpY2UobmV3IExpc3RTbGljZShoZWFkLCB0YWlsKSk7XG4gICAgICAgIGxldCBndWFyZCA9IG5ldyBKdW1wSWZOb3RNb2RpZmllZE9wY29kZSh0YWcsIEVORCk7XG4gICAgICAgIG9wY29kZXMuaW5zZXJ0QmVmb3JlKGd1YXJkLCBoZWFkKTtcbiAgICAgICAgb3Bjb2Rlcy5hcHBlbmQobmV3IERpZE1vZGlmeU9wY29kZShndWFyZCkpO1xuICAgICAgICBvcGNvZGVzLmFwcGVuZChFTkQpO1xuICAgIH1cbiAgICBlbnRlcihhcmdzKSB7XG4gICAgICAgIGxldCB1cGRhdGluZyA9IG5ldyBMaW5rZWRMaXN0KCk7XG4gICAgICAgIGxldCBzdGF0ZSA9IHRoaXMuY2FwdHVyZShhcmdzKTtcbiAgICAgICAgbGV0IHRyYWNrZXIgPSB0aGlzLmVsZW1lbnRzKCkucHVzaFVwZGF0YWJsZUJsb2NrKCk7XG4gICAgICAgIGxldCB0cnlPcGNvZGUgPSBuZXcgVHJ5T3Bjb2RlKHRoaXMucGMsIHN0YXRlLCB0cmFja2VyLCB1cGRhdGluZyk7XG4gICAgICAgIHRoaXMuZGlkRW50ZXIodHJ5T3Bjb2RlKTtcbiAgICB9XG4gICAgaXRlcmF0ZShtZW1vLCB2YWx1ZSkge1xuICAgICAgICBsZXQgc3RhY2sgPSB0aGlzLnN0YWNrO1xuICAgICAgICBzdGFjay5wdXNoKHZhbHVlKTtcbiAgICAgICAgc3RhY2sucHVzaChtZW1vKTtcbiAgICAgICAgbGV0IHN0YXRlID0gdGhpcy5jYXB0dXJlKDIpO1xuICAgICAgICBsZXQgdHJhY2tlciA9IHRoaXMuZWxlbWVudHMoKS5wdXNoVXBkYXRhYmxlQmxvY2soKTtcbiAgICAgICAgLy8gbGV0IGlwID0gdGhpcy5pcDtcbiAgICAgICAgLy8gdGhpcy5pcCA9IGVuZCArIDQ7XG4gICAgICAgIC8vIHRoaXMuZnJhbWVzLnB1c2goaXApO1xuICAgICAgICByZXR1cm4gbmV3IFRyeU9wY29kZSh0aGlzLnBjLCBzdGF0ZSwgdHJhY2tlciwgbmV3IExpbmtlZExpc3QoKSk7XG4gICAgfVxuICAgIGVudGVySXRlbShrZXksIG9wY29kZSkge1xuICAgICAgICB0aGlzLmxpc3RCbG9jaygpLm1hcFtrZXldID0gb3Bjb2RlO1xuICAgICAgICB0aGlzLmRpZEVudGVyKG9wY29kZSk7XG4gICAgfVxuICAgIGVudGVyTGlzdChzdGFydCkge1xuICAgICAgICBsZXQgdXBkYXRpbmcgPSBuZXcgTGlua2VkTGlzdCgpO1xuICAgICAgICBsZXQgc3RhdGUgPSB0aGlzLmNhcHR1cmUoMCk7XG4gICAgICAgIGxldCB0cmFja2VyID0gdGhpcy5lbGVtZW50cygpLnB1c2hCbG9ja0xpc3QodXBkYXRpbmcpO1xuICAgICAgICBsZXQgYXJ0aWZhY3RzID0gdGhpcy5zdGFjay5wZWVrKCkuYXJ0aWZhY3RzO1xuICAgICAgICBsZXQgb3Bjb2RlID0gbmV3IExpc3RCbG9ja09wY29kZShzdGFydCwgc3RhdGUsIHRyYWNrZXIsIHVwZGF0aW5nLCBhcnRpZmFjdHMpO1xuICAgICAgICB0aGlzLmxpc3RCbG9ja1N0YWNrLnB1c2gob3Bjb2RlKTtcbiAgICAgICAgdGhpcy5kaWRFbnRlcihvcGNvZGUpO1xuICAgIH1cbiAgICBkaWRFbnRlcihvcGNvZGUpIHtcbiAgICAgICAgdGhpcy51cGRhdGVXaXRoKG9wY29kZSk7XG4gICAgICAgIHRoaXMudXBkYXRpbmdPcGNvZGVTdGFjay5wdXNoKG9wY29kZS5jaGlsZHJlbik7XG4gICAgfVxuICAgIGV4aXQoKSB7XG4gICAgICAgIHRoaXMuZWxlbWVudHMoKS5wb3BCbG9jaygpO1xuICAgICAgICB0aGlzLnVwZGF0aW5nT3Bjb2RlU3RhY2sucG9wKCk7XG4gICAgICAgIGxldCBwYXJlbnQgPSB0aGlzLnVwZGF0aW5nKCkudGFpbCgpO1xuICAgICAgICBwYXJlbnQuZGlkSW5pdGlhbGl6ZUNoaWxkcmVuKCk7XG4gICAgfVxuICAgIGV4aXRMaXN0KCkge1xuICAgICAgICB0aGlzLmV4aXQoKTtcbiAgICAgICAgdGhpcy5saXN0QmxvY2tTdGFjay5wb3AoKTtcbiAgICB9XG4gICAgdXBkYXRlV2l0aChvcGNvZGUpIHtcbiAgICAgICAgdGhpcy51cGRhdGluZygpLmFwcGVuZChvcGNvZGUpO1xuICAgIH1cbiAgICBsaXN0QmxvY2soKSB7XG4gICAgICAgIHJldHVybiBleHBlY3QodGhpcy5saXN0QmxvY2tTdGFjay5jdXJyZW50LCAnZXhwZWN0ZWQgYSBsaXN0IGJsb2NrJyk7XG4gICAgfVxuICAgIHVwZGF0aW5nKCkge1xuICAgICAgICByZXR1cm4gZXhwZWN0KHRoaXMudXBkYXRpbmdPcGNvZGVTdGFjay5jdXJyZW50LCAnZXhwZWN0ZWQgdXBkYXRpbmcgb3Bjb2RlIG9uIHRoZSB1cGRhdGluZyBvcGNvZGUgc3RhY2snKTtcbiAgICB9XG4gICAgZWxlbWVudHMoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmVsZW1lbnRTdGFjaztcbiAgICB9XG4gICAgc2NvcGUoKSB7XG4gICAgICAgIHJldHVybiBleHBlY3QodGhpcy5zY29wZVN0YWNrLmN1cnJlbnQsICdleHBlY3RlZCBzY29wZSBvbiB0aGUgc2NvcGUgc3RhY2snKTtcbiAgICB9XG4gICAgZHluYW1pY1Njb3BlKCkge1xuICAgICAgICByZXR1cm4gZXhwZWN0KHRoaXMuZHluYW1pY1Njb3BlU3RhY2suY3VycmVudCwgJ2V4cGVjdGVkIGR5bmFtaWMgc2NvcGUgb24gdGhlIGR5bmFtaWMgc2NvcGUgc3RhY2snKTtcbiAgICB9XG4gICAgcHVzaENoaWxkU2NvcGUoKSB7XG4gICAgICAgIHRoaXMuc2NvcGVTdGFjay5wdXNoKHRoaXMuc2NvcGUoKS5jaGlsZCgpKTtcbiAgICB9XG4gICAgcHVzaENhbGxlclNjb3BlKGNoaWxkU2NvcGUgPSBmYWxzZSkge1xuICAgICAgICBsZXQgY2FsbGVyU2NvcGUgPSBleHBlY3QodGhpcy5zY29wZSgpLmdldENhbGxlclNjb3BlKCksICdwdXNoQ2FsbGVyU2NvcGUgaXMgY2FsbGVkIHdoZW4gYSBjYWxsZXIgc2NvcGUgaXMgcHJlc2VudCcpO1xuICAgICAgICB0aGlzLnNjb3BlU3RhY2sucHVzaChjaGlsZFNjb3BlID8gY2FsbGVyU2NvcGUuY2hpbGQoKSA6IGNhbGxlclNjb3BlKTtcbiAgICB9XG4gICAgcHVzaER5bmFtaWNTY29wZSgpIHtcbiAgICAgICAgbGV0IGNoaWxkID0gdGhpcy5keW5hbWljU2NvcGUoKS5jaGlsZCgpO1xuICAgICAgICB0aGlzLmR5bmFtaWNTY29wZVN0YWNrLnB1c2goY2hpbGQpO1xuICAgICAgICByZXR1cm4gY2hpbGQ7XG4gICAgfVxuICAgIHB1c2hSb290U2NvcGUoc2l6ZSwgYmluZENhbGxlcikge1xuICAgICAgICBsZXQgc2NvcGUgPSBTY29wZS5zaXplZChzaXplKTtcbiAgICAgICAgaWYgKGJpbmRDYWxsZXIpIHNjb3BlLmJpbmRDYWxsZXJTY29wZSh0aGlzLnNjb3BlKCkpO1xuICAgICAgICB0aGlzLnNjb3BlU3RhY2sucHVzaChzY29wZSk7XG4gICAgICAgIHJldHVybiBzY29wZTtcbiAgICB9XG4gICAgcG9wU2NvcGUoKSB7XG4gICAgICAgIHRoaXMuc2NvcGVTdGFjay5wb3AoKTtcbiAgICB9XG4gICAgcG9wRHluYW1pY1Njb3BlKCkge1xuICAgICAgICB0aGlzLmR5bmFtaWNTY29wZVN0YWNrLnBvcCgpO1xuICAgIH1cbiAgICBuZXdEZXN0cm95YWJsZShkKSB7XG4gICAgICAgIHRoaXMuZWxlbWVudHMoKS5uZXdEZXN0cm95YWJsZShkKTtcbiAgICB9XG4gICAgLy8vIFNDT1BFIEhFTFBFUlNcbiAgICBnZXRTZWxmKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5zY29wZSgpLmdldFNlbGYoKTtcbiAgICB9XG4gICAgcmVmZXJlbmNlRm9yU3ltYm9sKHN5bWJvbCkge1xuICAgICAgICByZXR1cm4gdGhpcy5zY29wZSgpLmdldFN5bWJvbChzeW1ib2wpO1xuICAgIH1cbiAgICAvLy8gRVhFQ1VUSU9OXG4gICAgZXhlY3V0ZShzdGFydCwgaW5pdGlhbGl6ZSkge1xuICAgICAgICB0aGlzLnBjID0gc3RhcnQ7XG4gICAgICAgIGlmIChpbml0aWFsaXplKSBpbml0aWFsaXplKHRoaXMpO1xuICAgICAgICBsZXQgcmVzdWx0O1xuICAgICAgICB3aGlsZSAodHJ1ZSkge1xuICAgICAgICAgICAgcmVzdWx0ID0gdGhpcy5uZXh0KCk7XG4gICAgICAgICAgICBpZiAocmVzdWx0LmRvbmUpIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiByZXN1bHQudmFsdWU7XG4gICAgfVxuICAgIG5leHQoKSB7XG4gICAgICAgIGxldCB7IGVudiwgdXBkYXRpbmdPcGNvZGVTdGFjaywgZWxlbWVudFN0YWNrIH0gPSB0aGlzO1xuICAgICAgICBsZXQgb3Bjb2RlID0gdGhpcy5uZXh0U3RhdGVtZW50KGVudik7XG4gICAgICAgIGxldCByZXN1bHQ7XG4gICAgICAgIGlmIChvcGNvZGUgIT09IG51bGwpIHtcbiAgICAgICAgICAgIEFQUEVORF9PUENPREVTLmV2YWx1YXRlKHRoaXMsIG9wY29kZSwgb3Bjb2RlLnR5cGUpO1xuICAgICAgICAgICAgcmVzdWx0ID0geyBkb25lOiBmYWxzZSwgdmFsdWU6IG51bGwgfTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIC8vIFVubG9hZCB0aGUgc3RhY2tcbiAgICAgICAgICAgIHRoaXMuc3RhY2sucmVzZXQoKTtcbiAgICAgICAgICAgIHJlc3VsdCA9IHtcbiAgICAgICAgICAgICAgICBkb25lOiB0cnVlLFxuICAgICAgICAgICAgICAgIHZhbHVlOiBuZXcgUmVuZGVyUmVzdWx0KGVudiwgZXhwZWN0KHVwZGF0aW5nT3Bjb2RlU3RhY2sucG9wKCksICd0aGVyZSBzaG91bGQgYmUgYSBmaW5hbCB1cGRhdGluZyBvcGNvZGUgc3RhY2snKSwgZWxlbWVudFN0YWNrLnBvcEJsb2NrKCkpXG4gICAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuICAgIG5leHRTdGF0ZW1lbnQoZW52KSB7XG4gICAgICAgIGxldCB7IHBjIH0gPSB0aGlzO1xuICAgICAgICBpZiAocGMgPT09IC0xKSB7XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuICAgICAgICBsZXQgcHJvZ3JhbSA9IGVudi5wcm9ncmFtO1xuICAgICAgICB0aGlzLnBjICs9IDQ7XG4gICAgICAgIHJldHVybiBwcm9ncmFtLm9wY29kZShwYyk7XG4gICAgfVxuICAgIGV2YWx1YXRlT3Bjb2RlKG9wY29kZSkge1xuICAgICAgICBBUFBFTkRfT1BDT0RFUy5ldmFsdWF0ZSh0aGlzLCBvcGNvZGUsIG9wY29kZS50eXBlKTtcbiAgICB9XG4gICAgYmluZER5bmFtaWNTY29wZShuYW1lcykge1xuICAgICAgICBsZXQgc2NvcGUgPSB0aGlzLmR5bmFtaWNTY29wZSgpO1xuICAgICAgICBmb3IgKGxldCBpID0gbmFtZXMubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcbiAgICAgICAgICAgIGxldCBuYW1lID0gdGhpcy5jb25zdGFudHMuZ2V0U3RyaW5nKG5hbWVzW2ldKTtcbiAgICAgICAgICAgIHNjb3BlLnNldChuYW1lLCB0aGlzLnN0YWNrLnBvcCgpKTtcbiAgICAgICAgfVxuICAgIH1cbn0iXX0=

@@ -53,4 +53,3 @@ "use strict";

var stack = vm.stack;
stack.push(definition);
stack.push(definition.manager);
stack.push({ definition: definition, manager: definition.manager, component: null });
});

@@ -62,4 +61,3 @@ _opcodes.APPEND_OPCODES.add(56 /* PushDynamicComponentManager */, function (vm) {

var definition = cache ? cache.peek() : reference.value();
stack.push(definition);
stack.push(definition.manager);
stack.push({ definition: definition, manager: definition.manager, component: null });
if (cache) {

@@ -69,9 +67,3 @@ vm.updateWith(new _vm2.Assert(cache));

});
_opcodes.APPEND_OPCODES.add(57 /* InitializeComponentState */, function (vm) {
var stack = vm.stack;
var manager = stack.pop();
var definition = stack.pop();
stack.push({ definition: definition, manager: manager, component: null });
});
_opcodes.APPEND_OPCODES.add(58 /* PushArgs */, function (vm, _ref2) {
_opcodes.APPEND_OPCODES.add(57 /* PushArgs */, function (vm, _ref2) {
var synthetic = _ref2.op1;

@@ -83,3 +75,3 @@

});
_opcodes.APPEND_OPCODES.add(59 /* PrepareArgs */, function (vm, _ref3) {
_opcodes.APPEND_OPCODES.add(58 /* PrepareArgs */, function (vm, _ref3) {
var _state = _ref3.op1;

@@ -107,11 +99,15 @@

var namedCount = names.length;
var atNames = [];
for (var _i = 0; _i < namedCount; _i++) {
stack.push(named[names[_i]]);
var value = named[names[_i]];
var atName = '@' + names[_i];
stack.push(value);
atNames.push(atName);
}
stack.push(names);
args.setup(stack, true);
stack.push(atNames);
args.setup(stack, false);
}
stack.push(args);
});
_opcodes.APPEND_OPCODES.add(60 /* CreateComponent */, function (vm, _ref4) {
_opcodes.APPEND_OPCODES.add(59 /* CreateComponent */, function (vm, _ref4) {
var _vm$fetchValue2;

@@ -132,3 +128,3 @@

});
_opcodes.APPEND_OPCODES.add(61 /* RegisterComponentDestructor */, function (vm, _ref5) {
_opcodes.APPEND_OPCODES.add(60 /* RegisterComponentDestructor */, function (vm, _ref5) {
var _state = _ref5.op1;

@@ -143,10 +139,10 @@

});
_opcodes.APPEND_OPCODES.add(65 /* BeginComponentTransaction */, function (vm) {
_opcodes.APPEND_OPCODES.add(64 /* BeginComponentTransaction */, function (vm) {
vm.beginCacheGroup();
vm.elements().pushSimpleBlock();
});
_opcodes.APPEND_OPCODES.add(62 /* PushComponentOperations */, function (vm) {
_opcodes.APPEND_OPCODES.add(61 /* PushComponentOperations */, function (vm) {
vm.stack.push(new _dom.ComponentElementOperations(vm.env));
});
_opcodes.APPEND_OPCODES.add(67 /* DidCreateElement */, function (vm, _ref6) {
_opcodes.APPEND_OPCODES.add(66 /* DidCreateElement */, function (vm, _ref6) {
var _state = _ref6.op1;

@@ -161,3 +157,3 @@

});
_opcodes.APPEND_OPCODES.add(63 /* GetComponentSelf */, function (vm, _ref7) {
_opcodes.APPEND_OPCODES.add(62 /* GetComponentSelf */, function (vm, _ref7) {
var _state = _ref7.op1;

@@ -168,3 +164,3 @@

});
_opcodes.APPEND_OPCODES.add(64 /* GetComponentLayout */, function (vm, _ref8) {
_opcodes.APPEND_OPCODES.add(63 /* GetComponentLayout */, function (vm, _ref8) {
var _state = _ref8.op1;

@@ -179,3 +175,3 @@

});
_opcodes.APPEND_OPCODES.add(68 /* DidRenderLayout */, function (vm, _ref9) {
_opcodes.APPEND_OPCODES.add(67 /* DidRenderLayout */, function (vm, _ref9) {
var _state = _ref9.op1;

@@ -192,3 +188,3 @@

});
_opcodes.APPEND_OPCODES.add(66 /* CommitComponentTransaction */, function (vm) {
_opcodes.APPEND_OPCODES.add(65 /* CommitComponentTransaction */, function (vm) {
return vm.commitCacheGroup();

@@ -263,2 +259,2 @@ });

}(_opcodes.UpdatingOpcode);
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9jb21waWxlZC9vcGNvZGVzL2NvbXBvbmVudC5qcyJdLCJuYW1lcyI6WyJjb21iaW5lIiwiQ09OU1RBTlRfVEFHIiwiaXNDb25zdCIsIlJlZmVyZW5jZUNhY2hlIiwiQVBQRU5EX09QQ09ERVMiLCJVcGRhdGluZ09wY29kZSIsIkFSR1MiLCJDb21wb25lbnRFbGVtZW50T3BlcmF0aW9ucyIsIkFzc2VydCIsImFkZCIsInZtIiwiX2RlZmluaXRpb24iLCJvcDEiLCJkZWZpbml0aW9uIiwiY29uc3RhbnRzIiwiZ2V0T3RoZXIiLCJzdGFjayIsInB1c2giLCJtYW5hZ2VyIiwicmVmZXJlbmNlIiwicG9wIiwiY2FjaGUiLCJ1bmRlZmluZWQiLCJwZWVrIiwidmFsdWUiLCJ1cGRhdGVXaXRoIiwiY29tcG9uZW50Iiwic3ludGhldGljIiwic2V0dXAiLCJfc3RhdGUiLCJmZXRjaFZhbHVlIiwiYXJncyIsInByZXBhcmVkQXJncyIsInByZXBhcmVBcmdzIiwiY2xlYXIiLCJwb3NpdGlvbmFsIiwibmFtZWQiLCJwb3NpdGlvbmFsQ291bnQiLCJsZW5ndGgiLCJpIiwibmFtZXMiLCJPYmplY3QiLCJrZXlzIiwibmFtZWRDb3VudCIsImZsYWdzIiwib3AyIiwiZHluYW1pY1Njb3BlIiwic3RhdGUiLCJoYXNEZWZhdWx0QmxvY2siLCJjcmVhdGUiLCJlbnYiLCJnZXRTZWxmIiwiVXBkYXRlQ29tcG9uZW50T3Bjb2RlIiwidGFnIiwibmFtZSIsImRlc3RydWN0b3IiLCJnZXREZXN0cnVjdG9yIiwibmV3RGVzdHJveWFibGUiLCJiZWdpbkNhY2hlR3JvdXAiLCJlbGVtZW50cyIsInB1c2hTaW1wbGVCbG9jayIsImFjdGlvbiIsImRpZENyZWF0ZUVsZW1lbnQiLCJleHBlY3RDb25zdHJ1Y3RpbmciLCJleHBlY3RPcGVyYXRpb25zIiwibGF5b3V0Rm9yIiwiYm91bmRzIiwicG9wQmxvY2siLCJkaWRSZW5kZXJMYXlvdXQiLCJkaWRDcmVhdGUiLCJEaWRVcGRhdGVMYXlvdXRPcGNvZGUiLCJjb21taXRDYWNoZUdyb3VwIiwidHlwZSIsImNvbXBvbmVudFRhZyIsImdldFRhZyIsImV2YWx1YXRlIiwiX3ZtIiwidXBkYXRlIiwidG9KU09OIiwiSlNPTiIsInN0cmluZ2lmeSIsImd1aWQiLCJfZ3VpZCIsImRpZFVwZGF0ZUxheW91dCIsImRpZFVwZGF0ZSJdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUFBLEFBQVMsQUFBUyxBQUFjLEFBQVMsQUFBc0I7O0FBQy9ELEFBQVMsQUFBZ0IsQUFBc0I7O0FBQy9DLEFBQU8sQUFBVTs7OztBQUNqQixBQUFTLEFBQWtDOztBQUMzQyxBQUFTLEFBQWM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUN2Qix3QkFBQSxBQUFlLElBQWYsQUFBbUIsR0FBbkIsQUFBc0IsNEJBQTRCLFVBQUEsQUFBQyxVQUE2QjtRQUFsQixBQUFrQixtQkFBdkIsQUFBdUIsQUFDNUU7O1FBQUksYUFBYSxHQUFBLEFBQUcsVUFBSCxBQUFhLFNBQTlCLEFBQWlCLEFBQXNCLEFBQ3ZDO1FBQUksUUFBUSxHQUFaLEFBQWUsQUFDZjtVQUFBLEFBQU0sS0FBTixBQUFXLEFBQ1g7VUFBQSxBQUFNLEtBQUssV0FBWCxBQUFzQixBQUN6QjtBQUxEO0FBTUEsd0JBQUEsQUFBZSxJQUFmLEFBQW1CLEdBQW5CLEFBQXNCLG1DQUFtQyxjQUFNLEFBQzNEO1FBQUksUUFBUSxHQUFaLEFBQWUsQUFDZjtRQUFJLFlBQVksTUFBaEIsQUFBZ0IsQUFBTSxBQUN0QjtRQUFJLFFBQVEsd0JBQUEsQUFBUSxhQUFSLEFBQXFCLFlBQVksQUFBSSw4QkFBakQsQUFBNkMsQUFBbUIsQUFDaEU7UUFBSSxhQUFhLFFBQVEsTUFBUixBQUFRLEFBQU0sU0FBUyxVQUF4QyxBQUF3QyxBQUFVLEFBQ2xEO1VBQUEsQUFBTSxLQUFOLEFBQVcsQUFDWDtVQUFBLEFBQU0sS0FBSyxXQUFYLEFBQXNCLEFBQ3RCO1FBQUEsQUFBSSxPQUFPLEFBQ1A7V0FBQSxBQUFHLFdBQVcsQUFBSSxnQkFBbEIsQUFB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QUNwQyxzQkFEb0MsQUFFcEM7O2VBQUEsQUFBSyxVQUFMLEFBQWUsQUFDZjtlQUFBLEFBQUssWUFBTCxBQUFpQixBQUNqQjtlQUFBLEFBQUssU0FBTCxBQUFjLEFBQ2Q7ZUFBQSxBQUFLLE9BQUwsQUFBWSxBQUNaO2VBTm9DLEFBTXBDLEFBQUssQUFBTTtlQUNkO0FBUkw7O29DQUFBLEFBU0ksNkJBVEosQUFTYSxJQUFJO1lBQUEsQUFDSCxVQURHLEFBQzRCLEtBRDVCLEFBQ0g7WUFERyxBQUNNLFlBRE4sQUFDNEIsS0FENUIsQUFDTTtZQUROLEFBQ2lCLFNBRGpCLEFBQzRCLEtBRDVCLEFBQ2lCLEFBQzFCOztnQkFBQSxBQUFRLGdCQUFSLEFBQXdCLFdBQXhCLEFBQW1DLEFBQ25DO1dBQUEsQUFBRyxJQUFILEFBQU8sVUFBUCxBQUFpQixXQUFqQixBQUE0QixBQUMvQjtBQWJMOztXQUFBO0FBQUEsQUFBMkMiLCJmaWxlIjoibGliL2NvbXBpbGVkL29wY29kZXMvY29tcG9uZW50LmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgY29tYmluZSwgQ09OU1RBTlRfVEFHLCBpc0NvbnN0LCBSZWZlcmVuY2VDYWNoZSB9IGZyb20gJ0BnbGltbWVyL3JlZmVyZW5jZSc7XG5pbXBvcnQgeyBBUFBFTkRfT1BDT0RFUywgVXBkYXRpbmdPcGNvZGUgfSBmcm9tICcuLi8uLi9vcGNvZGVzJztcbmltcG9ydCBBUkdTIGZyb20gJy4uLy4uL3ZtL2FyZ3VtZW50cyc7XG5pbXBvcnQgeyBDb21wb25lbnRFbGVtZW50T3BlcmF0aW9ucyB9IGZyb20gJy4vZG9tJztcbmltcG9ydCB7IEFzc2VydCB9IGZyb20gJy4vdm0nO1xuQVBQRU5EX09QQ09ERVMuYWRkKDU1IC8qIFB1c2hDb21wb25lbnRNYW5hZ2VyICovLCAodm0sIHsgb3AxOiBfZGVmaW5pdGlvbiB9KSA9PiB7XG4gICAgbGV0IGRlZmluaXRpb24gPSB2bS5jb25zdGFudHMuZ2V0T3RoZXIoX2RlZmluaXRpb24pO1xuICAgIGxldCBzdGFjayA9IHZtLnN0YWNrO1xuICAgIHN0YWNrLnB1c2goZGVmaW5pdGlvbik7XG4gICAgc3RhY2sucHVzaChkZWZpbml0aW9uLm1hbmFnZXIpO1xufSk7XG5BUFBFTkRfT1BDT0RFUy5hZGQoNTYgLyogUHVzaER5bmFtaWNDb21wb25lbnRNYW5hZ2VyICovLCB2bSA9PiB7XG4gICAgbGV0IHN0YWNrID0gdm0uc3RhY2s7XG4gICAgbGV0IHJlZmVyZW5jZSA9IHN0YWNrLnBvcCgpO1xuICAgIGxldCBjYWNoZSA9IGlzQ29uc3QocmVmZXJlbmNlKSA/IHVuZGVmaW5lZCA6IG5ldyBSZWZlcmVuY2VDYWNoZShyZWZlcmVuY2UpO1xuICAgIGxldCBkZWZpbml0aW9uID0gY2FjaGUgPyBjYWNoZS5wZWVrKCkgOiByZWZlcmVuY2UudmFsdWUoKTtcbiAgICBzdGFjay5wdXNoKGRlZmluaXRpb24pO1xuICAgIHN0YWNrLnB1c2goZGVmaW5pdGlvbi5tYW5hZ2VyKTtcbiAgICBpZiAoY2FjaGUpIHtcbiAgICAgICAgdm0udXBkYXRlV2l0aChuZXcgQXNzZXJ0KGNhY2hlKSk7XG4gICAgfVxufSk7XG5BUFBFTkRfT1BDT0RFUy5hZGQoNTcgLyogSW5pdGlhbGl6ZUNvbXBvbmVudFN0YXRlICovLCB2bSA9PiB7XG4gICAgbGV0IHN0YWNrID0gdm0uc3RhY2s7XG4gICAgbGV0IG1hbmFnZXIgPSBzdGFjay5wb3AoKTtcbiAgICBsZXQgZGVmaW5pdGlvbiA9IHN0YWNrLnBvcCgpO1xuICAgIHN0YWNrLnB1c2goeyBkZWZpbml0aW9uLCBtYW5hZ2VyLCBjb21wb25lbnQ6IG51bGwgfSk7XG59KTtcbkFQUEVORF9PUENPREVTLmFkZCg1OCAvKiBQdXNoQXJncyAqLywgKHZtLCB7IG9wMTogc3ludGhldGljIH0pID0+IHtcbiAgICBsZXQgc3RhY2sgPSB2bS5zdGFjaztcbiAgICBBUkdTLnNldHVwKHN0YWNrLCAhIXN5bnRoZXRpYyk7XG4gICAgc3RhY2sucHVzaChBUkdTKTtcbn0pO1xuQVBQRU5EX09QQ09ERVMuYWRkKDU5IC8qIFByZXBhcmVBcmdzICovLCAodm0sIHsgb3AxOiBfc3RhdGUgfSkgPT4ge1xuICAgIGxldCBzdGFjayA9IHZtLnN0YWNrO1xuICAgIGxldCB7IGRlZmluaXRpb24sIG1hbmFnZXIgfSA9IHZtLmZldGNoVmFsdWUoX3N0YXRlKTtcbiAgICBsZXQgYXJncyA9IHN0YWNrLnBvcCgpO1xuICAgIGxldCBwcmVwYXJlZEFyZ3MgPSBtYW5hZ2VyLnByZXBhcmVBcmdzKGRlZmluaXRpb24sIGFyZ3MpO1xuICAgIGlmIChwcmVwYXJlZEFyZ3MpIHtcbiAgICAgICAgYXJncy5jbGVhcigpO1xuICAgICAgICBsZXQgeyBwb3NpdGlvbmFsLCBuYW1lZCB9ID0gcHJlcGFyZWRBcmdzO1xuICAgICAgICBsZXQgcG9zaXRpb25hbENvdW50ID0gcG9zaXRpb25hbC5sZW5ndGg7XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcG9zaXRpb25hbENvdW50OyBpKyspIHtcbiAgICAgICAgICAgIHN0YWNrLnB1c2gocG9zaXRpb25hbFtpXSk7XG4gICAgICAgIH1cbiAgICAgICAgc3RhY2sucHVzaChwb3NpdGlvbmFsQ291bnQpO1xuICAgICAgICBsZXQgbmFtZXMgPSBPYmplY3Qua2V5cyhuYW1lZCk7XG4gICAgICAgIGxldCBuYW1lZENvdW50ID0gbmFtZXMubGVuZ3RoO1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IG5hbWVkQ291bnQ7IGkrKykge1xuICAgICAgICAgICAgc3RhY2sucHVzaChuYW1lZFtuYW1lc1tpXV0pO1xuICAgICAgICB9XG4gICAgICAgIHN0YWNrLnB1c2gobmFtZXMpO1xuICAgICAgICBhcmdzLnNldHVwKHN0YWNrLCB0cnVlKTtcbiAgICB9XG4gICAgc3RhY2sucHVzaChhcmdzKTtcbn0pO1xuQVBQRU5EX09QQ09ERVMuYWRkKDYwIC8qIENyZWF0ZUNvbXBvbmVudCAqLywgKHZtLCB7IG9wMTogZmxhZ3MsIG9wMjogX3N0YXRlIH0pID0+IHtcbiAgICBsZXQgZGVmaW5pdGlvbjtcbiAgICBsZXQgbWFuYWdlcjtcbiAgICBsZXQgYXJncyA9IHZtLnN0YWNrLnBvcCgpO1xuICAgIGxldCBkeW5hbWljU2NvcGUgPSB2bS5keW5hbWljU2NvcGUoKTtcbiAgICBsZXQgc3RhdGUgPSAoeyBkZWZpbml0aW9uLCBtYW5hZ2VyIH0gPSB2bS5mZXRjaFZhbHVlKF9zdGF0ZSkpO1xuICAgIGxldCBoYXNEZWZhdWx0QmxvY2sgPSBmbGFncyAmIDBiMDE7XG4gICAgbGV0IGNvbXBvbmVudCA9IG1hbmFnZXIuY3JlYXRlKHZtLmVudiwgZGVmaW5pdGlvbiwgYXJncywgZHluYW1pY1Njb3BlLCB2bS5nZXRTZWxmKCksICEhaGFzRGVmYXVsdEJsb2NrKTtcbiAgICBzdGF0ZS5jb21wb25lbnQgPSBjb21wb25lbnQ7XG4gICAgdm0udXBkYXRlV2l0aChuZXcgVXBkYXRlQ29tcG9uZW50T3Bjb2RlKGFyZ3MudGFnLCBkZWZpbml0aW9uLm5hbWUsIGNvbXBvbmVudCwgbWFuYWdlciwgZHluYW1pY1Njb3BlKSk7XG59KTtcbkFQUEVORF9PUENPREVTLmFkZCg2MSAvKiBSZWdpc3RlckNvbXBvbmVudERlc3RydWN0b3IgKi8sICh2bSwgeyBvcDE6IF9zdGF0ZSB9KSA9PiB7XG4gICAgbGV0IHsgbWFuYWdlciwgY29tcG9uZW50IH0gPSB2bS5mZXRjaFZhbHVlKF9zdGF0ZSk7XG4gICAgbGV0IGRlc3RydWN0b3IgPSBtYW5hZ2VyLmdldERlc3RydWN0b3IoY29tcG9uZW50KTtcbiAgICBpZiAoZGVzdHJ1Y3Rvcikgdm0ubmV3RGVzdHJveWFibGUoZGVzdHJ1Y3Rvcik7XG59KTtcbkFQUEVORF9PUENPREVTLmFkZCg2NSAvKiBCZWdpbkNvbXBvbmVudFRyYW5zYWN0aW9uICovLCB2bSA9PiB7XG4gICAgdm0uYmVnaW5DYWNoZUdyb3VwKCk7XG4gICAgdm0uZWxlbWVudHMoKS5wdXNoU2ltcGxlQmxvY2soKTtcbn0pO1xuQVBQRU5EX09QQ09ERVMuYWRkKDYyIC8qIFB1c2hDb21wb25lbnRPcGVyYXRpb25zICovLCB2bSA9PiB7XG4gICAgdm0uc3RhY2sucHVzaChuZXcgQ29tcG9uZW50RWxlbWVudE9wZXJhdGlvbnModm0uZW52KSk7XG59KTtcbkFQUEVORF9PUENPREVTLmFkZCg2NyAvKiBEaWRDcmVhdGVFbGVtZW50ICovLCAodm0sIHsgb3AxOiBfc3RhdGUgfSkgPT4ge1xuICAgIGxldCB7IG1hbmFnZXIsIGNvbXBvbmVudCB9ID0gdm0uZmV0Y2hWYWx1ZShfc3RhdGUpO1xuICAgIGxldCBhY3Rpb24gPSAnRGlkQ3JlYXRlRWxlbWVudE9wY29kZSNldmFsdWF0ZSc7XG4gICAgbWFuYWdlci5kaWRDcmVhdGVFbGVtZW50KGNvbXBvbmVudCwgdm0uZWxlbWVudHMoKS5leHBlY3RDb25zdHJ1Y3RpbmcoYWN0aW9uKSwgdm0uZWxlbWVudHMoKS5leHBlY3RPcGVyYXRpb25zKGFjdGlvbikpO1xufSk7XG5BUFBFTkRfT1BDT0RFUy5hZGQoNjMgLyogR2V0Q29tcG9uZW50U2VsZiAqLywgKHZtLCB7IG9wMTogX3N0YXRlIH0pID0+IHtcbiAgICBsZXQgc3RhdGUgPSB2bS5mZXRjaFZhbHVlKF9zdGF0ZSk7XG4gICAgdm0uc3RhY2sucHVzaChzdGF0ZS5tYW5hZ2VyLmdldFNlbGYoc3RhdGUuY29tcG9uZW50KSk7XG59KTtcbkFQUEVORF9PUENPREVTLmFkZCg2NCAvKiBHZXRDb21wb25lbnRMYXlvdXQgKi8sICh2bSwgeyBvcDE6IF9zdGF0ZSB9KSA9PiB7XG4gICAgbGV0IHsgbWFuYWdlciwgZGVmaW5pdGlvbiwgY29tcG9uZW50IH0gPSB2bS5mZXRjaFZhbHVlKF9zdGF0ZSk7XG4gICAgdm0uc3RhY2sucHVzaChtYW5hZ2VyLmxheW91dEZvcihkZWZpbml0aW9uLCBjb21wb25lbnQsIHZtLmVudikpO1xufSk7XG5BUFBFTkRfT1BDT0RFUy5hZGQoNjggLyogRGlkUmVuZGVyTGF5b3V0ICovLCAodm0sIHsgb3AxOiBfc3RhdGUgfSkgPT4ge1xuICAgIGxldCB7IG1hbmFnZXIsIGNvbXBvbmVudCB9ID0gdm0uZmV0Y2hWYWx1ZShfc3RhdGUpO1xuICAgIGxldCBib3VuZHMgPSB2bS5lbGVtZW50cygpLnBvcEJsb2NrKCk7XG4gICAgbWFuYWdlci5kaWRSZW5kZXJMYXlvdXQoY29tcG9uZW50LCBib3VuZHMpO1xuICAgIHZtLmVudi5kaWRDcmVhdGUoY29tcG9uZW50LCBtYW5hZ2VyKTtcbiAgICB2bS51cGRhdGVXaXRoKG5ldyBEaWRVcGRhdGVMYXlvdXRPcGNvZGUobWFuYWdlciwgY29tcG9uZW50LCBib3VuZHMpKTtcbn0pO1xuQVBQRU5EX09QQ09ERVMuYWRkKDY2IC8qIENvbW1pdENvbXBvbmVudFRyYW5zYWN0aW9uICovLCB2bSA9PiB2bS5jb21taXRDYWNoZUdyb3VwKCkpO1xuZXhwb3J0IGNsYXNzIFVwZGF0ZUNvbXBvbmVudE9wY29kZSBleHRlbmRzIFVwZGF0aW5nT3Bjb2RlIHtcbiAgICBjb25zdHJ1Y3Rvcih0YWcsIG5hbWUsIGNvbXBvbmVudCwgbWFuYWdlciwgZHluYW1pY1Njb3BlKSB7XG4gICAgICAgIHN1cGVyKCk7XG4gICAgICAgIHRoaXMubmFtZSA9IG5hbWU7XG4gICAgICAgIHRoaXMuY29tcG9uZW50ID0gY29tcG9uZW50O1xuICAgICAgICB0aGlzLm1hbmFnZXIgPSBtYW5hZ2VyO1xuICAgICAgICB0aGlzLmR5bmFtaWNTY29wZSA9IGR5bmFtaWNTY29wZTtcbiAgICAgICAgdGhpcy50eXBlID0gJ3VwZGF0ZS1jb21wb25lbnQnO1xuICAgICAgICBsZXQgY29tcG9uZW50VGFnID0gbWFuYWdlci5nZXRUYWcoY29tcG9uZW50KTtcbiAgICAgICAgaWYgKGNvbXBvbmVudFRhZykge1xuICAgICAgICAgICAgdGhpcy50YWcgPSBjb21iaW5lKFt0YWcsIGNvbXBvbmVudFRhZ10pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy50YWcgPSB0YWc7XG4gICAgICAgIH1cbiAgICB9XG4gICAgZXZhbHVhdGUoX3ZtKSB7XG4gICAgICAgIGxldCB7IGNvbXBvbmVudCwgbWFuYWdlciwgZHluYW1pY1Njb3BlIH0gPSB0aGlzO1xuICAgICAgICBtYW5hZ2VyLnVwZGF0ZShjb21wb25lbnQsIGR5bmFtaWNTY29wZSk7XG4gICAgfVxuICAgIHRvSlNPTigpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGFyZ3M6IFtKU09OLnN0cmluZ2lmeSh0aGlzLm5hbWUpXSxcbiAgICAgICAgICAgIGd1aWQ6IHRoaXMuX2d1aWQsXG4gICAgICAgICAgICB0eXBlOiB0aGlzLnR5cGVcbiAgICAgICAgfTtcbiAgICB9XG59XG5leHBvcnQgY2xhc3MgRGlkVXBkYXRlTGF5b3V0T3Bjb2RlIGV4dGVuZHMgVXBkYXRpbmdPcGNvZGUge1xuICAgIGNvbnN0cnVjdG9yKG1hbmFnZXIsIGNvbXBvbmVudCwgYm91bmRzKSB7XG4gICAgICAgIHN1cGVyKCk7XG4gICAgICAgIHRoaXMubWFuYWdlciA9IG1hbmFnZXI7XG4gICAgICAgIHRoaXMuY29tcG9uZW50ID0gY29tcG9uZW50O1xuICAgICAgICB0aGlzLmJvdW5kcyA9IGJvdW5kcztcbiAgICAgICAgdGhpcy50eXBlID0gJ2RpZC11cGRhdGUtbGF5b3V0JztcbiAgICAgICAgdGhpcy50YWcgPSBDT05TVEFOVF9UQUc7XG4gICAgfVxuICAgIGV2YWx1YXRlKHZtKSB7XG4gICAgICAgIGxldCB7IG1hbmFnZXIsIGNvbXBvbmVudCwgYm91bmRzIH0gPSB0aGlzO1xuICAgICAgICBtYW5hZ2VyLmRpZFVwZGF0ZUxheW91dChjb21wb25lbnQsIGJvdW5kcyk7XG4gICAgICAgIHZtLmVudi5kaWRVcGRhdGUoY29tcG9uZW50LCBtYW5hZ2VyKTtcbiAgICB9XG59Il19
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9jb21waWxlZC9vcGNvZGVzL2NvbXBvbmVudC5qcyJdLCJuYW1lcyI6WyJjb21iaW5lIiwiQ09OU1RBTlRfVEFHIiwiaXNDb25zdCIsIlJlZmVyZW5jZUNhY2hlIiwiQVBQRU5EX09QQ09ERVMiLCJVcGRhdGluZ09wY29kZSIsIkFSR1MiLCJDb21wb25lbnRFbGVtZW50T3BlcmF0aW9ucyIsIkFzc2VydCIsImFkZCIsInZtIiwiX2RlZmluaXRpb24iLCJvcDEiLCJkZWZpbml0aW9uIiwiY29uc3RhbnRzIiwiZ2V0T3RoZXIiLCJzdGFjayIsInB1c2giLCJtYW5hZ2VyIiwiY29tcG9uZW50IiwicmVmZXJlbmNlIiwicG9wIiwiY2FjaGUiLCJ1bmRlZmluZWQiLCJwZWVrIiwidmFsdWUiLCJ1cGRhdGVXaXRoIiwic3ludGhldGljIiwic2V0dXAiLCJfc3RhdGUiLCJmZXRjaFZhbHVlIiwiYXJncyIsInByZXBhcmVkQXJncyIsInByZXBhcmVBcmdzIiwiY2xlYXIiLCJwb3NpdGlvbmFsIiwibmFtZWQiLCJwb3NpdGlvbmFsQ291bnQiLCJsZW5ndGgiLCJpIiwibmFtZXMiLCJPYmplY3QiLCJrZXlzIiwibmFtZWRDb3VudCIsImF0TmFtZXMiLCJhdE5hbWUiLCJmbGFncyIsIm9wMiIsImR5bmFtaWNTY29wZSIsInN0YXRlIiwiaGFzRGVmYXVsdEJsb2NrIiwiY3JlYXRlIiwiZW52IiwiZ2V0U2VsZiIsIlVwZGF0ZUNvbXBvbmVudE9wY29kZSIsInRhZyIsIm5hbWUiLCJkZXN0cnVjdG9yIiwiZ2V0RGVzdHJ1Y3RvciIsIm5ld0Rlc3Ryb3lhYmxlIiwiYmVnaW5DYWNoZUdyb3VwIiwiZWxlbWVudHMiLCJwdXNoU2ltcGxlQmxvY2siLCJhY3Rpb24iLCJkaWRDcmVhdGVFbGVtZW50IiwiZXhwZWN0Q29uc3RydWN0aW5nIiwiZXhwZWN0T3BlcmF0aW9ucyIsImxheW91dEZvciIsImJvdW5kcyIsInBvcEJsb2NrIiwiZGlkUmVuZGVyTGF5b3V0IiwiZGlkQ3JlYXRlIiwiRGlkVXBkYXRlTGF5b3V0T3Bjb2RlIiwiY29tbWl0Q2FjaGVHcm91cCIsInR5cGUiLCJjb21wb25lbnRUYWciLCJnZXRUYWciLCJldmFsdWF0ZSIsIl92bSIsInVwZGF0ZSIsInRvSlNPTiIsIkpTT04iLCJzdHJpbmdpZnkiLCJndWlkIiwiX2d1aWQiLCJkaWRVcGRhdGVMYXlvdXQiLCJkaWRVcGRhdGUiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFBQSxBQUFTLEFBQVMsQUFBYyxBQUFTLEFBQXNCOztBQUMvRCxBQUFTLEFBQWdCLEFBQXNCOztBQUMvQyxBQUFPLEFBQVU7Ozs7QUFDakIsQUFBUyxBQUFrQzs7QUFDM0MsQUFBUyxBQUFjOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFDdkIsd0JBQUEsQUFBZSxJQUFmLEFBQW1CLEdBQW5CLEFBQXNCLDRCQUE0QixVQUFBLEFBQUMsVUFBNkI7UUFBbEIsQUFBa0IsbUJBQXZCLEFBQXVCLEFBQzVFOztRQUFJLGFBQWEsR0FBQSxBQUFHLFVBQUgsQUFBYSxTQUE5QixBQUFpQixBQUFzQixBQUN2QztRQUFJLFFBQVEsR0FBWixBQUFlLEFBQ2Y7VUFBQSxBQUFNLEtBQUssRUFBRSxZQUFGLFlBQWMsU0FBUyxXQUF2QixBQUFrQyxTQUFTLFdBQXRELEFBQVcsQUFBc0QsQUFDcEU7QUFKRDtBQUtBLHdCQUFBLEFBQWUsSUFBZixBQUFtQixHQUFuQixBQUFzQixtQ0FBbUMsY0FBTSxBQUMzRDtRQUFJLFFBQVEsR0FBWixBQUFlLEFBQ2Y7UUFBSSxZQUFZLE1BQWhCLEFBQWdCLEFBQU0sQUFDdEI7UUFBSSxRQUFRLHdCQUFBLEFBQVEsYUFBUixBQUFxQixZQUFZLEFBQUksOEJBQWpELEFBQTZDLEFBQW1CLEFBQ2hFO1FBQUksYUFBYSxRQUFRLE1BQVIsQUFBUSxBQUFNLFNBQVMsVUFBeEMsQUFBd0MsQUFBVSxBQUNsRDtVQUFBLEFBQU0sS0FBSyxFQUFFLFlBQUYsWUFBYyxTQUFTLFdBQXZCLEFBQWtDLFNBQVMsV0FBdEQsQUFBVyxBQUFzRCxB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LEFBQWlCLEFBQ2pCO2VBQUEsQUFBSyxTQUFMLEFBQWMsQUFDZDtlQUFBLEFBQUssT0FBTCxBQUFZLEFBQ1o7ZUFOb0MsQUFNcEMsQUFBSyxBQUFNO2VBQ2Q7QUFSTDs7b0NBQUEsQUFTSSw2QkFUSixBQVNhLElBQUk7WUFBQSxBQUNILFVBREcsQUFDNEIsS0FENUIsQUFDSDtZQURHLEFBQ00sWUFETixBQUM0QixLQUQ1QixBQUNNO1lBRE4sQUFDaUIsU0FEakIsQUFDNEIsS0FENUIsQUFDaUIsQUFDMUI7O2dCQUFBLEFBQVEsZ0JBQVIsQUFBd0IsV0FBeEIsQUFBbUMsQUFDbkM7V0FBQSxBQUFHLElBQUgsQUFBTyxVQUFQLEFBQWlCLFdBQWpCLEFBQTRCLEFBQy9CO0FBYkw7O1dBQUE7QUFBQSxBQUEyQyIsImZpbGUiOiJsaWIvY29tcGlsZWQvb3Bjb2Rlcy9jb21wb25lbnQuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBjb21iaW5lLCBDT05TVEFOVF9UQUcsIGlzQ29uc3QsIFJlZmVyZW5jZUNhY2hlIH0gZnJvbSAnQGdsaW1tZXIvcmVmZXJlbmNlJztcbmltcG9ydCB7IEFQUEVORF9PUENPREVTLCBVcGRhdGluZ09wY29kZSB9IGZyb20gJy4uLy4uL29wY29kZXMnO1xuaW1wb3J0IEFSR1MgZnJvbSAnLi4vLi4vdm0vYXJndW1lbnRzJztcbmltcG9ydCB7IENvbXBvbmVudEVsZW1lbnRPcGVyYXRpb25zIH0gZnJvbSAnLi9kb20nO1xuaW1wb3J0IHsgQXNzZXJ0IH0gZnJvbSAnLi92bSc7XG5BUFBFTkRfT1BDT0RFUy5hZGQoNTUgLyogUHVzaENvbXBvbmVudE1hbmFnZXIgKi8sICh2bSwgeyBvcDE6IF9kZWZpbml0aW9uIH0pID0+IHtcbiAgICBsZXQgZGVmaW5pdGlvbiA9IHZtLmNvbnN0YW50cy5nZXRPdGhlcihfZGVmaW5pdGlvbik7XG4gICAgbGV0IHN0YWNrID0gdm0uc3RhY2s7XG4gICAgc3RhY2sucHVzaCh7IGRlZmluaXRpb24sIG1hbmFnZXI6IGRlZmluaXRpb24ubWFuYWdlciwgY29tcG9uZW50OiBudWxsIH0pO1xufSk7XG5BUFBFTkRfT1BDT0RFUy5hZGQoNTYgLyogUHVzaER5bmFtaWNDb21wb25lbnRNYW5hZ2VyICovLCB2bSA9PiB7XG4gICAgbGV0IHN0YWNrID0gdm0uc3RhY2s7XG4gICAgbGV0IHJlZmVyZW5jZSA9IHN0YWNrLnBvcCgpO1xuICAgIGxldCBjYWNoZSA9IGlzQ29uc3QocmVmZXJlbmNlKSA/IHVuZGVmaW5lZCA6IG5ldyBSZWZlcmVuY2VDYWNoZShyZWZlcmVuY2UpO1xuICAgIGxldCBkZWZpbml0aW9uID0gY2FjaGUgPyBjYWNoZS5wZWVrKCkgOiByZWZlcmVuY2UudmFsdWUoKTtcbiAgICBzdGFjay5wdXNoKHsgZGVmaW5pdGlvbiwgbWFuYWdlcjogZGVmaW5pdGlvbi5tYW5hZ2VyLCBjb21wb25lbnQ6IG51bGwgfSk7XG4gICAgaWYgKGNhY2hlKSB7XG4gICAgICAgIHZtLnVwZGF0ZVdpdGgobmV3IEFzc2VydChjYWNoZSkpO1xuICAgIH1cbn0pO1xuQVBQRU5EX09QQ09ERVMuYWRkKDU3IC8qIFB1c2hBcmdzICovLCAodm0sIHsgb3AxOiBzeW50aGV0aWMgfSkgPT4ge1xuICAgIGxldCBzdGFjayA9IHZtLnN0YWNrO1xuICAgIEFSR1Muc2V0dXAoc3RhY2ssICEhc3ludGhldGljKTtcbiAgICBzdGFjay5wdXNoKEFSR1MpO1xufSk7XG5BUFBFTkRfT1BDT0RFUy5hZGQoNTggLyogUHJlcGFyZUFyZ3MgKi8sICh2bSwgeyBvcDE6IF9zdGF0ZSB9KSA9PiB7XG4gICAgbGV0IHN0YWNrID0gdm0uc3RhY2s7XG4gICAgbGV0IHsgZGVmaW5pdGlvbiwgbWFuYWdlciB9ID0gdm0uZmV0Y2hWYWx1ZShfc3RhdGUpO1xuICAgIGxldCBhcmdzID0gc3RhY2sucG9wKCk7XG4gICAgbGV0IHByZXBhcmVkQXJncyA9IG1hbmFnZXIucHJlcGFyZUFyZ3MoZGVmaW5pdGlvbiwgYXJncyk7XG4gICAgaWYgKHByZXBhcmVkQXJncykge1xuICAgICAgICBhcmdzLmNsZWFyKCk7XG4gICAgICAgIGxldCB7IHBvc2l0aW9uYWwsIG5hbWVkIH0gPSBwcmVwYXJlZEFyZ3M7XG4gICAgICAgIGxldCBwb3NpdGlvbmFsQ291bnQgPSBwb3NpdGlvbmFsLmxlbmd0aDtcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBwb3NpdGlvbmFsQ291bnQ7IGkrKykge1xuICAgICAgICAgICAgc3RhY2sucHVzaChwb3NpdGlvbmFsW2ldKTtcbiAgICAgICAgfVxuICAgICAgICBzdGFjay5wdXNoKHBvc2l0aW9uYWxDb3VudCk7XG4gICAgICAgIGxldCBuYW1lcyA9IE9iamVjdC5rZXlzKG5hbWVkKTtcbiAgICAgICAgbGV0IG5hbWVkQ291bnQgPSBuYW1lcy5sZW5ndGg7XG4gICAgICAgIGxldCBhdE5hbWVzID0gW107XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbmFtZWRDb3VudDsgaSsrKSB7XG4gICAgICAgICAgICBsZXQgdmFsdWUgPSBuYW1lZFtuYW1lc1tpXV07XG4gICAgICAgICAgICBsZXQgYXROYW1lID0gYEAke25hbWVzW2ldfWA7XG4gICAgICAgICAgICBzdGFjay5wdXNoKHZhbHVlKTtcbiAgICAgICAgICAgIGF0TmFtZXMucHVzaChhdE5hbWUpO1xuICAgICAgICB9XG4gICAgICAgIHN0YWNrLnB1c2goYXROYW1lcyk7XG4gICAgICAgIGFyZ3Muc2V0dXAoc3RhY2ssIGZhbHNlKTtcbiAgICB9XG4gICAgc3RhY2sucHVzaChhcmdzKTtcbn0pO1xuQVBQRU5EX09QQ09ERVMuYWRkKDU5IC8qIENyZWF0ZUNvbXBvbmVudCAqLywgKHZtLCB7IG9wMTogZmxhZ3MsIG9wMjogX3N0YXRlIH0pID0+IHtcbiAgICBsZXQgZGVmaW5pdGlvbjtcbiAgICBsZXQgbWFuYWdlcjtcbiAgICBsZXQgYXJncyA9IHZtLnN0YWNrLnBvcCgpO1xuICAgIGxldCBkeW5hbWljU2NvcGUgPSB2bS5keW5hbWljU2NvcGUoKTtcbiAgICBsZXQgc3RhdGUgPSAoeyBkZWZpbml0aW9uLCBtYW5hZ2VyIH0gPSB2bS5mZXRjaFZhbHVlKF9zdGF0ZSkpO1xuICAgIGxldCBoYXNEZWZhdWx0QmxvY2sgPSBmbGFncyAmIDBiMDE7XG4gICAgbGV0IGNvbXBvbmVudCA9IG1hbmFnZXIuY3JlYXRlKHZtLmVudiwgZGVmaW5pdGlvbiwgYXJncywgZHluYW1pY1Njb3BlLCB2bS5nZXRTZWxmKCksICEhaGFzRGVmYXVsdEJsb2NrKTtcbiAgICBzdGF0ZS5jb21wb25lbnQgPSBjb21wb25lbnQ7XG4gICAgdm0udXBkYXRlV2l0aChuZXcgVXBkYXRlQ29tcG9uZW50T3Bjb2RlKGFyZ3MudGFnLCBkZWZpbml0aW9uLm5hbWUsIGNvbXBvbmVudCwgbWFuYWdlciwgZHluYW1pY1Njb3BlKSk7XG59KTtcbkFQUEVORF9PUENPREVTLmFkZCg2MCAvKiBSZWdpc3RlckNvbXBvbmVudERlc3RydWN0b3IgKi8sICh2bSwgeyBvcDE6IF9zdGF0ZSB9KSA9PiB7XG4gICAgbGV0IHsgbWFuYWdlciwgY29tcG9uZW50IH0gPSB2bS5mZXRjaFZhbHVlKF9zdGF0ZSk7XG4gICAgbGV0IGRlc3RydWN0b3IgPSBtYW5hZ2VyLmdldERlc3RydWN0b3IoY29tcG9uZW50KTtcbiAgICBpZiAoZGVzdHJ1Y3Rvcikgdm0ubmV3RGVzdHJveWFibGUoZGVzdHJ1Y3Rvcik7XG59KTtcbkFQUEVORF9PUENPREVTLmFkZCg2NCAvKiBCZWdpbkNvbXBvbmVudFRyYW5zYWN0aW9uICovLCB2bSA9PiB7XG4gICAgdm0uYmVnaW5DYWNoZUdyb3VwKCk7XG4gICAgdm0uZWxlbWVudHMoKS5wdXNoU2ltcGxlQmxvY2soKTtcbn0pO1xuQVBQRU5EX09QQ09ERVMuYWRkKDYxIC8qIFB1c2hDb21wb25lbnRPcGVyYXRpb25zICovLCB2bSA9PiB7XG4gICAgdm0uc3RhY2sucHVzaChuZXcgQ29tcG9uZW50RWxlbWVudE9wZXJhdGlvbnModm0uZW52KSk7XG59KTtcbkFQUEVORF9PUENPREVTLmFkZCg2NiAvKiBEaWRDcmVhdGVFbGVtZW50ICovLCAodm0sIHsgb3AxOiBfc3RhdGUgfSkgPT4ge1xuICAgIGxldCB7IG1hbmFnZXIsIGNvbXBvbmVudCB9ID0gdm0uZmV0Y2hWYWx1ZShfc3RhdGUpO1xuICAgIGxldCBhY3Rpb24gPSAnRGlkQ3JlYXRlRWxlbWVudE9wY29kZSNldmFsdWF0ZSc7XG4gICAgbWFuYWdlci5kaWRDcmVhdGVFbGVtZW50KGNvbXBvbmVudCwgdm0uZWxlbWVudHMoKS5leHBlY3RDb25zdHJ1Y3RpbmcoYWN0aW9uKSwgdm0uZWxlbWVudHMoKS5leHBlY3RPcGVyYXRpb25zKGFjdGlvbikpO1xufSk7XG5BUFBFTkRfT1BDT0RFUy5hZGQoNjIgLyogR2V0Q29tcG9uZW50U2VsZiAqLywgKHZtLCB7IG9wMTogX3N0YXRlIH0pID0+IHtcbiAgICBsZXQgc3RhdGUgPSB2bS5mZXRjaFZhbHVlKF9zdGF0ZSk7XG4gICAgdm0uc3RhY2sucHVzaChzdGF0ZS5tYW5hZ2VyLmdldFNlbGYoc3RhdGUuY29tcG9uZW50KSk7XG59KTtcbkFQUEVORF9PUENPREVTLmFkZCg2MyAvKiBHZXRDb21wb25lbnRMYXlvdXQgKi8sICh2bSwgeyBvcDE6IF9zdGF0ZSB9KSA9PiB7XG4gICAgbGV0IHsgbWFuYWdlciwgZGVmaW5pdGlvbiwgY29tcG9uZW50IH0gPSB2bS5mZXRjaFZhbHVlKF9zdGF0ZSk7XG4gICAgdm0uc3RhY2sucHVzaChtYW5hZ2VyLmxheW91dEZvcihkZWZpbml0aW9uLCBjb21wb25lbnQsIHZtLmVudikpO1xufSk7XG5BUFBFTkRfT1BDT0RFUy5hZGQoNjcgLyogRGlkUmVuZGVyTGF5b3V0ICovLCAodm0sIHsgb3AxOiBfc3RhdGUgfSkgPT4ge1xuICAgIGxldCB7IG1hbmFnZXIsIGNvbXBvbmVudCB9ID0gdm0uZmV0Y2hWYWx1ZShfc3RhdGUpO1xuICAgIGxldCBib3VuZHMgPSB2bS5lbGVtZW50cygpLnBvcEJsb2NrKCk7XG4gICAgbWFuYWdlci5kaWRSZW5kZXJMYXlvdXQoY29tcG9uZW50LCBib3VuZHMpO1xuICAgIHZtLmVudi5kaWRDcmVhdGUoY29tcG9uZW50LCBtYW5hZ2VyKTtcbiAgICB2bS51cGRhdGVXaXRoKG5ldyBEaWRVcGRhdGVMYXlvdXRPcGNvZGUobWFuYWdlciwgY29tcG9uZW50LCBib3VuZHMpKTtcbn0pO1xuQVBQRU5EX09QQ09ERVMuYWRkKDY1IC8qIENvbW1pdENvbXBvbmVudFRyYW5zYWN0aW9uICovLCB2bSA9PiB2bS5jb21taXRDYWNoZUdyb3VwKCkpO1xuZXhwb3J0IGNsYXNzIFVwZGF0ZUNvbXBvbmVudE9wY29kZSBleHRlbmRzIFVwZGF0aW5nT3Bjb2RlIHtcbiAgICBjb25zdHJ1Y3Rvcih0YWcsIG5hbWUsIGNvbXBvbmVudCwgbWFuYWdlciwgZHluYW1pY1Njb3BlKSB7XG4gICAgICAgIHN1cGVyKCk7XG4gICAgICAgIHRoaXMubmFtZSA9IG5hbWU7XG4gICAgICAgIHRoaXMuY29tcG9uZW50ID0gY29tcG9uZW50O1xuICAgICAgICB0aGlzLm1hbmFnZXIgPSBtYW5hZ2VyO1xuICAgICAgICB0aGlzLmR5bmFtaWNTY29wZSA9IGR5bmFtaWNTY29wZTtcbiAgICAgICAgdGhpcy50eXBlID0gJ3VwZGF0ZS1jb21wb25lbnQnO1xuICAgICAgICBsZXQgY29tcG9uZW50VGFnID0gbWFuYWdlci5nZXRUYWcoY29tcG9uZW50KTtcbiAgICAgICAgaWYgKGNvbXBvbmVudFRhZykge1xuICAgICAgICAgICAgdGhpcy50YWcgPSBjb21iaW5lKFt0YWcsIGNvbXBvbmVudFRhZ10pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy50YWcgPSB0YWc7XG4gICAgICAgIH1cbiAgICB9XG4gICAgZXZhbHVhdGUoX3ZtKSB7XG4gICAgICAgIGxldCB7IGNvbXBvbmVudCwgbWFuYWdlciwgZHluYW1pY1Njb3BlIH0gPSB0aGlzO1xuICAgICAgICBtYW5hZ2VyLnVwZGF0ZShjb21wb25lbnQsIGR5bmFtaWNTY29wZSk7XG4gICAgfVxuICAgIHRvSlNPTigpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGFyZ3M6IFtKU09OLnN0cmluZ2lmeSh0aGlzLm5hbWUpXSxcbiAgICAgICAgICAgIGd1aWQ6IHRoaXMuX2d1aWQsXG4gICAgICAgICAgICB0eXBlOiB0aGlzLnR5cGVcbiAgICAgICAgfTtcbiAgICB9XG59XG5leHBvcnQgY2xhc3MgRGlkVXBkYXRlTGF5b3V0T3Bjb2RlIGV4dGVuZHMgVXBkYXRpbmdPcGNvZGUge1xuICAgIGNvbnN0cnVjdG9yKG1hbmFnZXIsIGNvbXBvbmVudCwgYm91bmRzKSB7XG4gICAgICAgIHN1cGVyKCk7XG4gICAgICAgIHRoaXMubWFuYWdlciA9IG1hbmFnZXI7XG4gICAgICAgIHRoaXMuY29tcG9uZW50ID0gY29tcG9uZW50O1xuICAgICAgICB0aGlzLmJvdW5kcyA9IGJvdW5kcztcbiAgICAgICAgdGhpcy50eXBlID0gJ2RpZC11cGRhdGUtbGF5b3V0JztcbiAgICAgICAgdGhpcy50YWcgPSBDT05TVEFOVF9UQUc7XG4gICAgfVxuICAgIGV2YWx1YXRlKHZtKSB7XG4gICAgICAgIGxldCB7IG1hbmFnZXIsIGNvbXBvbmVudCwgYm91bmRzIH0gPSB0aGlzO1xuICAgICAgICBtYW5hZ2VyLmRpZFVwZGF0ZUxheW91dChjb21wb25lbnQsIGJvdW5kcyk7XG4gICAgICAgIHZtLmVudi5kaWRVcGRhdGUoY29tcG9uZW50LCBtYW5hZ2VyKTtcbiAgICB9XG59Il19

@@ -80,3 +80,3 @@ 'use strict';

_opcodes.APPEND_OPCODES.add(71 /* Debugger */, function (vm, _ref) {
_opcodes.APPEND_OPCODES.add(70 /* Debugger */, function (vm, _ref) {
var _symbols = _ref.op1,

@@ -92,2 +92,2 @@ _evalInfo = _ref.op2;

});
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9jb21waWxlZC9vcGNvZGVzL2RlYnVnZ2VyLmpzIl0sIm5hbWVzIjpbImRpY3QiLCJBUFBFTkRfT1BDT0RFUyIsImRlYnVnQ2FsbGJhY2siLCJjb250ZXh0IiwiZ2V0IiwiY29uc29sZSIsImluZm8iLCJjYWxsYmFjayIsInNldERlYnVnZ2VyQ2FsbGJhY2siLCJjYiIsInJlc2V0RGVidWdnZXJDYWxsYmFjayIsIlNjb3BlSW5zcGVjdG9yIiwic2NvcGUiLCJzeW1ib2xzIiwiZXZhbEluZm8iLCJsb2NhbHMiLCJpIiwibGVuZ3RoIiwic2xvdCIsIm5hbWUiLCJyZWYiLCJnZXRTeW1ib2wiLCJwYXRoIiwicGFydHMiLCJzcGxpdCIsImhlYWQiLCJ0YWlsIiwiZXZhbFNjb3BlIiwiZ2V0RXZhbFNjb3BlIiwiZ2V0U2VsZiIsImluZGV4T2YiLCJyZWR1Y2UiLCJyIiwicGFydCIsImFkZCIsInZtIiwiX3N5bWJvbHMiLCJvcDEiLCJfZXZhbEluZm8iLCJvcDIiLCJjb25zdGFudHMiLCJnZXRPdGhlciIsImdldEFycmF5IiwiaW5zcGVjdG9yIiwidmFsdWUiXSwibWFwcGluZ3MiOiI7Ozs7O1FBWU8sQUFBUztRQUdULEFBQVM7O0FBZmhCLEFBQVMsQUFBWTs7QUFDckIsQUFBUyxBQUFzQjs7Ozs7Ozs7QUFDL0I7QUFDQSxTQUFBLEFBQVMsY0FBVCxBQUF1QixTQUF2QixBQUFnQyxLQUFLLEFBQ2pDO1lBQUEsQUFBUSxLQUFSLEFBQWEsQUFDYjtBQUNBO2dCQUFZLElBQVosQUFBWSxBQUFJLEFBQ2hCO0FBQ0g7O0FBQ0Q7QUFDQSxJQUFJLFdBQUosQUFBZTtBQUNmLEFBQ0E7QUFBTyw2QkFBQSxBQUE2QixJQUFJLEFBQ3BDO2VBQUEsQUFBVyxBQUNkO0FBQ0Q7QUFBTyxpQ0FBaUMsQUFDcEM7ZUFBQSxBQUFXLEFBQ2Q7OztJLEFBQ0ssNkJBQ0Y7NEJBQUEsQUFBWSxPQUFaLEFBQW1CLFNBQW5CLEFBQTRCLFVBQVU7OEJBQ2xDOzthQUFBLEFBQUssUUFBTCxBQUFhLEFBQ2I7YUFBQSxBQUFLLFNBQUwsQUFBYyxBQUNkO2FBQUssSUFBSSxJQUFULEFBQWEsR0FBRyxJQUFJLFNBQXBCLEFBQTZCLFFBQTdCLEFBQXFDLEtBQUssQUFDdEM7Z0JBQUksT0FBTyxTQUFYLEFBQVcsQUFBUyxBQUNwQjtnQkFBSSxPQUFPLFFBQVEsT0FBbkIsQUFBVyxBQUFlLEFBQzFCO2dCQUFJLE1BQU0sTUFBQSxBQUFNLFVBQWhCLEFBQVUsQUFBZ0IsQUFDMUI7aUJBQUEsQUFBSyxPQUFMLEFBQVksUUFBWixBQUFvQixBQUN2QjtBQUNKOzs7NkJBQ0QsQSxtQkFBSSxBLE1BQU07WUFBQSxBQUNBLFFBREEsQUFDa0IsS0FEbEIsQUFDQTtZQURBLEFBQ08sU0FEUCxBQUNrQixLQURsQixBQUNPLEFBQ2I7O1lBQUksUUFBUSxLQUFBLEFBQUssTUFGWCxBQUVOLEFBQVksQUFBVzs7MEJBQ0QsS0FBQSxBQUFLLE1BSHJCLEFBR2dCLEFBQVc7WUFIM0IsQUFHRCxtQkFIQztZQUFBLEFBR1EseUJBQ2Q7O1lBQUksWUFBWSxNQUFoQixBQUFnQixBQUFNLEFBQ3RCO1lBQUksV0FBSixBQUNBO1lBQUksU0FBSixBQUFhLFFBQVEsQUFDakI7a0JBQU0sTUFBTixBQUFNLEFBQU0sQUFDZjtBQUZELG1CQUVXLE9BQUosQUFBSSxBQUFPLE9BQU8sQUFDckI7a0JBQU0sT0FBTixBQUFNLEFBQU8sQUFDaEI7QUFGTSxTQUFBLFVBRUksS0FBQSxBQUFLLFFBQUwsQUFBYSxTQUFiLEFBQXNCLEtBQUssVUFBL0IsQUFBK0IsQUFBVSxPQUFPLEFBQ25EO2tCQUFNLFVBQU4sQUFBTSxBQUFVLEFBQ25CO0FBRk0sU0FBQSxNQUVBLEFBQ0g7a0JBQU0sS0FBQSxBQUFLLE1BQVgsQUFBTSxBQUFXLEFBQ2pCO21CQUFBLEFBQU8sQUFDVjtBQUNEO29CQUFPLEFBQUssT0FBTyxVQUFBLEFBQUMsR0FBRCxBQUFJLE1BQUo7bUJBQWEsRUFBQSxBQUFFLElBQWYsQUFBYSxBQUFNO0FBQS9CLFNBQUEsRUFBUCxBQUFPLEFBQXNDLEFBQ2hEO0E7Ozs7O0FBRUwsd0JBQUEsQUFBZSxJQUFmLEFBQW1CLEdBQW5CLEFBQXNCLGdCQUFnQixVQUFBLEFBQUMsVUFBMEM7UUFBL0IsQUFBK0IsZ0JBQXBDLEFBQW9DO1FBQWhCLEFBQWdCLGlCQUFyQixBQUFxQixBQUM3RTs7UUFBSSxVQUFVLEdBQUEsQUFBRyxVQUFILEFBQWEsU0FBM0IsQUFBYyxBQUFzQixBQUNwQztRQUFJLFdBQVcsR0FBQSxBQUFHLFVBQUgsQUFBYSxTQUE1QixBQUFlLEFBQXNCLEFBQ3JDO1FBQUksWUFBWSxJQUFBLEFBQUksZUFBZSxHQUFuQixBQUFtQixBQUFHLFNBQXRCLEFBQStCLFNBQS9DLEFBQWdCLEFBQXdDLEFBQ3hEO2FBQVMsR0FBQSxBQUFHLFVBQVosQUFBUyxBQUFhLFNBQVMsZ0JBQUE7ZUFBUSxVQUFBLEFBQVUsSUFBVixBQUFjLE1BQXRCLEFBQVEsQUFBb0I7QUFBM0QsQUFDSDtBQUxEIiwiZmlsZSI6ImxpYi9jb21waWxlZC9vcGNvZGVzL2RlYnVnZ2VyLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZGljdCB9IGZyb20gJ0BnbGltbWVyL3V0aWwnO1xuaW1wb3J0IHsgQVBQRU5EX09QQ09ERVMgfSBmcm9tICcuLi8uLi9vcGNvZGVzJztcbi8qIHRzbGludDpkaXNhYmxlICovXG5mdW5jdGlvbiBkZWJ1Z0NhbGxiYWNrKGNvbnRleHQsIGdldCkge1xuICAgIGNvbnNvbGUuaW5mbygnVXNlIGBjb250ZXh0YCwgYW5kIGBnZXQoPHBhdGg+KWAgdG8gZGVidWcgdGhpcyB0ZW1wbGF0ZS4nKTtcbiAgICAvLyBmb3IgZXhhbXBsZS4uLlxuICAgIGNvbnRleHQgPT09IGdldCgndGhpcycpO1xuICAgIGRlYnVnZ2VyO1xufVxuLyogdHNsaW50OmVuYWJsZSAqL1xubGV0IGNhbGxiYWNrID0gZGVidWdDYWxsYmFjaztcbi8vIEZvciB0ZXN0aW5nIHB1cnBvc2VzXG5leHBvcnQgZnVuY3Rpb24gc2V0RGVidWdnZXJDYWxsYmFjayhjYikge1xuICAgIGNhbGxiYWNrID0gY2I7XG59XG5leHBvcnQgZnVuY3Rpb24gcmVzZXREZWJ1Z2dlckNhbGxiYWNrKCkge1xuICAgIGNhbGxiYWNrID0gZGVidWdDYWxsYmFjaztcbn1cbmNsYXNzIFNjb3BlSW5zcGVjdG9yIHtcbiAgICBjb25zdHJ1Y3RvcihzY29wZSwgc3ltYm9scywgZXZhbEluZm8pIHtcbiAgICAgICAgdGhpcy5zY29wZSA9IHNjb3BlO1xuICAgICAgICB0aGlzLmxvY2FscyA9IGRpY3QoKTtcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBldmFsSW5mby5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgbGV0IHNsb3QgPSBldmFsSW5mb1tpXTtcbiAgICAgICAgICAgIGxldCBuYW1lID0gc3ltYm9sc1tzbG90IC0gMV07XG4gICAgICAgICAgICBsZXQgcmVmID0gc2NvcGUuZ2V0U3ltYm9sKHNsb3QpO1xuICAgICAgICAgICAgdGhpcy5sb2NhbHNbbmFtZV0gPSByZWY7XG4gICAgICAgIH1cbiAgICB9XG4gICAgZ2V0KHBhdGgpIHtcbiAgICAgICAgbGV0IHsgc2NvcGUsIGxvY2FscyB9ID0gdGhpcztcbiAgICAgICAgbGV0IHBhcnRzID0gcGF0aC5zcGxpdCgnLicpO1xuICAgICAgICBsZXQgW2hlYWQsIC4uLnRhaWxdID0gcGF0aC5zcGxpdCgnLicpO1xuICAgICAgICBsZXQgZXZhbFNjb3BlID0gc2NvcGUuZ2V0RXZhbFNjb3BlKCk7XG4gICAgICAgIGxldCByZWY7XG4gICAgICAgIGlmIChoZWFkID09PSAndGhpcycpIHtcbiAgICAgICAgICAgIHJlZiA9IHNjb3BlLmdldFNlbGYoKTtcbiAgICAgICAgfSBlbHNlIGlmIChsb2NhbHNbaGVhZF0pIHtcbiAgICAgICAgICAgIHJlZiA9IGxvY2Fsc1toZWFkXTtcbiAgICAgICAgfSBlbHNlIGlmIChoZWFkLmluZGV4T2YoJ0AnKSA9PT0gMCAmJiBldmFsU2NvcGVbaGVhZF0pIHtcbiAgICAgICAgICAgIHJlZiA9IGV2YWxTY29wZVtoZWFkXTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJlZiA9IHRoaXMuc2NvcGUuZ2V0U2VsZigpO1xuICAgICAgICAgICAgdGFpbCA9IHBhcnRzO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0YWlsLnJlZHVjZSgociwgcGFydCkgPT4gci5nZXQocGFydCksIHJlZik7XG4gICAgfVxufVxuQVBQRU5EX09QQ09ERVMuYWRkKDcxIC8qIERlYnVnZ2VyICovLCAodm0sIHsgb3AxOiBfc3ltYm9scywgb3AyOiBfZXZhbEluZm8gfSkgPT4ge1xuICAgIGxldCBzeW1ib2xzID0gdm0uY29uc3RhbnRzLmdldE90aGVyKF9zeW1ib2xzKTtcbiAgICBsZXQgZXZhbEluZm8gPSB2bS5jb25zdGFudHMuZ2V0QXJyYXkoX2V2YWxJbmZvKTtcbiAgICBsZXQgaW5zcGVjdG9yID0gbmV3IFNjb3BlSW5zcGVjdG9yKHZtLnNjb3BlKCksIHN5bWJvbHMsIGV2YWxJbmZvKTtcbiAgICBjYWxsYmFjayh2bS5nZXRTZWxmKCkudmFsdWUoKSwgcGF0aCA9PiBpbnNwZWN0b3IuZ2V0KHBhdGgpLnZhbHVlKCkpO1xufSk7Il19
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9jb21waWxlZC9vcGNvZGVzL2RlYnVnZ2VyLmpzIl0sIm5hbWVzIjpbImRpY3QiLCJBUFBFTkRfT1BDT0RFUyIsImRlYnVnQ2FsbGJhY2siLCJjb250ZXh0IiwiZ2V0IiwiY29uc29sZSIsImluZm8iLCJjYWxsYmFjayIsInNldERlYnVnZ2VyQ2FsbGJhY2siLCJjYiIsInJlc2V0RGVidWdnZXJDYWxsYmFjayIsIlNjb3BlSW5zcGVjdG9yIiwic2NvcGUiLCJzeW1ib2xzIiwiZXZhbEluZm8iLCJsb2NhbHMiLCJpIiwibGVuZ3RoIiwic2xvdCIsIm5hbWUiLCJyZWYiLCJnZXRTeW1ib2wiLCJwYXRoIiwicGFydHMiLCJzcGxpdCIsImhlYWQiLCJ0YWlsIiwiZXZhbFNjb3BlIiwiZ2V0RXZhbFNjb3BlIiwiZ2V0U2VsZiIsImluZGV4T2YiLCJyZWR1Y2UiLCJyIiwicGFydCIsImFkZCIsInZtIiwiX3N5bWJvbHMiLCJvcDEiLCJfZXZhbEluZm8iLCJvcDIiLCJjb25zdGFudHMiLCJnZXRPdGhlciIsImdldEFycmF5IiwiaW5zcGVjdG9yIiwidmFsdWUiXSwibWFwcGluZ3MiOiI7Ozs7O1FBWU8sQUFBUztRQUdULEFBQVM7O0FBZmhCLEFBQVMsQUFBWTs7QUFDckIsQUFBUyxBQUFzQjs7Ozs7Ozs7QUFDL0I7QUFDQSxTQUFBLEFBQVMsY0FBVCxBQUF1QixTQUF2QixBQUFnQyxLQUFLLEFBQ2pDO1lBQUEsQUFBUSxLQUFSLEFBQWEsQUFDYjtBQUNBO2dCQUFZLElBQVosQUFBWSxBQUFJLEFBQ2hCO0FBQ0g7O0FBQ0Q7QUFDQSxJQUFJLFdBQUosQUFBZTtBQUNmLEFBQ0E7QUFBTyw2QkFBQSxBQUE2QixJQUFJLEFBQ3BDO2VBQUEsQUFBVyxBQUNkO0FBQ0Q7QUFBTyxpQ0FBaUMsQUFDcEM7ZUFBQSxBQUFXLEFBQ2Q7OztJLEFBQ0ssNkJBQ0Y7NEJBQUEsQUFBWSxPQUFaLEFBQW1CLFNBQW5CLEFBQTRCLFVBQVU7OEJBQ2xDOzthQUFBLEFBQUssUUFBTCxBQUFhLEFBQ2I7YUFBQSxBQUFLLFNBQUwsQUFBYyxBQUNkO2FBQUssSUFBSSxJQUFULEFBQWEsR0FBRyxJQUFJLFNBQXBCLEFBQTZCLFFBQTdCLEFBQXFDLEtBQUssQUFDdEM7Z0JBQUksT0FBTyxTQUFYLEFBQVcsQUFBUyxBQUNwQjtnQkFBSSxPQUFPLFFBQVEsT0FBbkIsQUFBVyxBQUFlLEFBQzFCO2dCQUFJLE1BQU0sTUFBQSxBQUFNLFVBQWhCLEFBQVUsQUFBZ0IsQUFDMUI7aUJBQUEsQUFBSyxPQUFMLEFBQVksUUFBWixBQUFvQixBQUN2QjtBQUNKOzs7NkJBQ0QsQSxtQkFBSSxBLE1BQU07WUFBQSxBQUNBLFFBREEsQUFDa0IsS0FEbEIsQUFDQTtZQURBLEFBQ08sU0FEUCxBQUNrQixLQURsQixBQUNPLEFBQ2I7O1lBQUksUUFBUSxLQUFBLEFBQUssTUFGWCxBQUVOLEFBQVksQUFBVzs7MEJBQ0QsS0FBQSxBQUFLLE1BSHJCLEFBR2dCLEFBQVc7WUFIM0IsQUFHRCxtQkFIQztZQUFBLEFBR1EseUJBQ2Q7O1lBQUksWUFBWSxNQUFoQixBQUFnQixBQUFNLEFBQ3RCO1lBQUksV0FBSixBQUNBO1lBQUksU0FBSixBQUFhLFFBQVEsQUFDakI7a0JBQU0sTUFBTixBQUFNLEFBQU0sQUFDZjtBQUZELG1CQUVXLE9BQUosQUFBSSxBQUFPLE9BQU8sQUFDckI7a0JBQU0sT0FBTixBQUFNLEFBQU8sQUFDaEI7QUFGTSxTQUFBLFVBRUksS0FBQSxBQUFLLFFBQUwsQUFBYSxTQUFiLEFBQXNCLEtBQUssVUFBL0IsQUFBK0IsQUFBVSxPQUFPLEFBQ25EO2tCQUFNLFVBQU4sQUFBTSxBQUFVLEFBQ25CO0FBRk0sU0FBQSxNQUVBLEFBQ0g7a0JBQU0sS0FBQSxBQUFLLE1BQVgsQUFBTSxBQUFXLEFBQ2pCO21CQUFBLEFBQU8sQUFDVjtBQUNEO29CQUFPLEFBQUssT0FBTyxVQUFBLEFBQUMsR0FBRCxBQUFJLE1BQUo7bUJBQWEsRUFBQSxBQUFFLElBQWYsQUFBYSxBQUFNO0FBQS9CLFNBQUEsRUFBUCxBQUFPLEFBQXNDLEFBQ2hEO0E7Ozs7O0FBRUwsd0JBQUEsQUFBZSxJQUFmLEFBQW1CLEdBQW5CLEFBQXNCLGdCQUFnQixVQUFBLEFBQUMsVUFBMEM7UUFBL0IsQUFBK0IsZ0JBQXBDLEFBQW9DO1FBQWhCLEFBQWdCLGlCQUFyQixBQUFxQixBQUM3RTs7UUFBSSxVQUFVLEdBQUEsQUFBRyxVQUFILEFBQWEsU0FBM0IsQUFBYyxBQUFzQixBQUNwQztRQUFJLFdBQVcsR0FBQSxBQUFHLFVBQUgsQUFBYSxTQUE1QixBQUFlLEFBQXNCLEFBQ3JDO1FBQUksWUFBWSxJQUFBLEFBQUksZUFBZSxHQUFuQixBQUFtQixBQUFHLFNBQXRCLEFBQStCLFNBQS9DLEFBQWdCLEFBQXdDLEFBQ3hEO2FBQVMsR0FBQSxBQUFHLFVBQVosQUFBUyxBQUFhLFNBQVMsZ0JBQUE7ZUFBUSxVQUFBLEFBQVUsSUFBVixBQUFjLE1BQXRCLEFBQVEsQUFBb0I7QUFBM0QsQUFDSDtBQUxEIiwiZmlsZSI6ImxpYi9jb21waWxlZC9vcGNvZGVzL2RlYnVnZ2VyLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZGljdCB9IGZyb20gJ0BnbGltbWVyL3V0aWwnO1xuaW1wb3J0IHsgQVBQRU5EX09QQ09ERVMgfSBmcm9tICcuLi8uLi9vcGNvZGVzJztcbi8qIHRzbGludDpkaXNhYmxlICovXG5mdW5jdGlvbiBkZWJ1Z0NhbGxiYWNrKGNvbnRleHQsIGdldCkge1xuICAgIGNvbnNvbGUuaW5mbygnVXNlIGBjb250ZXh0YCwgYW5kIGBnZXQoPHBhdGg+KWAgdG8gZGVidWcgdGhpcyB0ZW1wbGF0ZS4nKTtcbiAgICAvLyBmb3IgZXhhbXBsZS4uLlxuICAgIGNvbnRleHQgPT09IGdldCgndGhpcycpO1xuICAgIGRlYnVnZ2VyO1xufVxuLyogdHNsaW50OmVuYWJsZSAqL1xubGV0IGNhbGxiYWNrID0gZGVidWdDYWxsYmFjaztcbi8vIEZvciB0ZXN0aW5nIHB1cnBvc2VzXG5leHBvcnQgZnVuY3Rpb24gc2V0RGVidWdnZXJDYWxsYmFjayhjYikge1xuICAgIGNhbGxiYWNrID0gY2I7XG59XG5leHBvcnQgZnVuY3Rpb24gcmVzZXREZWJ1Z2dlckNhbGxiYWNrKCkge1xuICAgIGNhbGxiYWNrID0gZGVidWdDYWxsYmFjaztcbn1cbmNsYXNzIFNjb3BlSW5zcGVjdG9yIHtcbiAgICBjb25zdHJ1Y3RvcihzY29wZSwgc3ltYm9scywgZXZhbEluZm8pIHtcbiAgICAgICAgdGhpcy5zY29wZSA9IHNjb3BlO1xuICAgICAgICB0aGlzLmxvY2FscyA9IGRpY3QoKTtcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBldmFsSW5mby5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgbGV0IHNsb3QgPSBldmFsSW5mb1tpXTtcbiAgICAgICAgICAgIGxldCBuYW1lID0gc3ltYm9sc1tzbG90IC0gMV07XG4gICAgICAgICAgICBsZXQgcmVmID0gc2NvcGUuZ2V0U3ltYm9sKHNsb3QpO1xuICAgICAgICAgICAgdGhpcy5sb2NhbHNbbmFtZV0gPSByZWY7XG4gICAgICAgIH1cbiAgICB9XG4gICAgZ2V0KHBhdGgpIHtcbiAgICAgICAgbGV0IHsgc2NvcGUsIGxvY2FscyB9ID0gdGhpcztcbiAgICAgICAgbGV0IHBhcnRzID0gcGF0aC5zcGxpdCgnLicpO1xuICAgICAgICBsZXQgW2hlYWQsIC4uLnRhaWxdID0gcGF0aC5zcGxpdCgnLicpO1xuICAgICAgICBsZXQgZXZhbFNjb3BlID0gc2NvcGUuZ2V0RXZhbFNjb3BlKCk7XG4gICAgICAgIGxldCByZWY7XG4gICAgICAgIGlmIChoZWFkID09PSAndGhpcycpIHtcbiAgICAgICAgICAgIHJlZiA9IHNjb3BlLmdldFNlbGYoKTtcbiAgICAgICAgfSBlbHNlIGlmIChsb2NhbHNbaGVhZF0pIHtcbiAgICAgICAgICAgIHJlZiA9IGxvY2Fsc1toZWFkXTtcbiAgICAgICAgfSBlbHNlIGlmIChoZWFkLmluZGV4T2YoJ0AnKSA9PT0gMCAmJiBldmFsU2NvcGVbaGVhZF0pIHtcbiAgICAgICAgICAgIHJlZiA9IGV2YWxTY29wZVtoZWFkXTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJlZiA9IHRoaXMuc2NvcGUuZ2V0U2VsZigpO1xuICAgICAgICAgICAgdGFpbCA9IHBhcnRzO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0YWlsLnJlZHVjZSgociwgcGFydCkgPT4gci5nZXQocGFydCksIHJlZik7XG4gICAgfVxufVxuQVBQRU5EX09QQ09ERVMuYWRkKDcwIC8qIERlYnVnZ2VyICovLCAodm0sIHsgb3AxOiBfc3ltYm9scywgb3AyOiBfZXZhbEluZm8gfSkgPT4ge1xuICAgIGxldCBzeW1ib2xzID0gdm0uY29uc3RhbnRzLmdldE90aGVyKF9zeW1ib2xzKTtcbiAgICBsZXQgZXZhbEluZm8gPSB2bS5jb25zdGFudHMuZ2V0QXJyYXkoX2V2YWxJbmZvKTtcbiAgICBsZXQgaW5zcGVjdG9yID0gbmV3IFNjb3BlSW5zcGVjdG9yKHZtLnNjb3BlKCksIHN5bWJvbHMsIGV2YWxJbmZvKTtcbiAgICBjYWxsYmFjayh2bS5nZXRTZWxmKCkudmFsdWUoKSwgcGF0aCA9PiBpbnNwZWN0b3IuZ2V0KHBhdGgpLnZhbHVlKCkpO1xufSk7Il19

@@ -37,3 +37,3 @@ 'use strict';

});
_opcodes.APPEND_OPCODES.add(70 /* ResolveMaybeLocal */, function (vm, _ref5) {
_opcodes.APPEND_OPCODES.add(69 /* ResolveMaybeLocal */, function (vm, _ref5) {
var _name = _ref5.op1;

@@ -95,2 +95,2 @@

});
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9jb21waWxlZC9vcGNvZGVzL2V4cHJlc3Npb25zLmpzIl0sIm5hbWVzIjpbIkFQUEVORF9PUENPREVTIiwiRkFMU0VfUkVGRVJFTkNFIiwiVFJVRV9SRUZFUkVOQ0UiLCJDb25jYXRSZWZlcmVuY2UiLCJhZGQiLCJ2bSIsIl9oZWxwZXIiLCJvcDEiLCJzdGFjayIsImhlbHBlciIsImNvbnN0YW50cyIsImdldEZ1bmN0aW9uIiwiYXJncyIsInBvcCIsInZhbHVlIiwiY2xlYXIiLCJwdXNoIiwiX2Z1bmN0aW9uIiwiZnVuYyIsInN5bWJvbCIsImV4cHIiLCJyZWZlcmVuY2VGb3JTeW1ib2wiLCJzY29wZSIsImJpbmRTeW1ib2wiLCJfbmFtZSIsIm5hbWUiLCJnZXRTdHJpbmciLCJsb2NhbHMiLCJnZXRQYXJ0aWFsTWFwIiwicmVmIiwidW5kZWZpbmVkIiwiZ2V0U2VsZiIsImdldCIsInN5bWJvbHMiLCJiaW5kQ2FsbGVyU2NvcGUiLCJvcDIiLCJwdXNoUm9vdFNjb3BlIiwiX2tleSIsImtleSIsIl9ibG9jayIsImJsb2NrIiwiZ2V0QmxvY2siLCJoYXNCbG9jayIsImhhc0Jsb2NrUGFyYW1zIiwic3ltYm9sVGFibGUiLCJwYXJhbWV0ZXJzIiwibGVuZ3RoIiwiY291bnQiLCJvdXQiLCJpIiwicmV2ZXJzZSJdLCJtYXBwaW5ncyI6Ijs7QUFBQSxBQUFTLEFBQVQsQUFBK0IsQUFBL0I7O0FBQ0EsQUFBUyxBQUFULEFBQTBCLEFBQTFCLEFBQWdELEFBQWhEOztBQUNBLEFBQVMsQUFBVCxBQUFnQyxBQUFoQzs7QUFDQSx3QkFBZSxBQUFmLElBQW1CLEFBQW5CLEVBQXFCLEFBQXJCLGNBQW1DLFVBQUMsQUFBRCxVQUEwQjtRQUFkLEFBQWMsZUFBbkIsQUFBbUIsQUFDekQ7O1FBQUksUUFBUSxHQUFHLEFBQWYsQUFDQTtRQUFJLFNBQVMsR0FBRyxBQUFILFVBQWEsQUFBYixZQUF5QixBQUF6QixBQUFiLEFBQ0E7UUFBSSxPQUFPLE1BQU0sQUFBTixBQUFYLEFBQ0E7UUFBSSxRQUFRLE9BQU8sQUFBUCxJQUFXLEFBQVgsQUFBWixBQUNBO1NBQUssQUFBTCxBQUNBO09BQUcsQUFBSCxNQUFTLEFBQVQsS0FBYyxBQUFkLEFBQ0g7QUFQRDtBQVFBLHdCQUFlLEFBQWYsSUFBbUIsQUFBbkIsRUFBcUIsQUFBckIsZ0JBQXFDLFVBQUMsQUFBRCxXQUE0QjtRQUFoQixBQUFnQixrQkFBckIsQUFBcUIsQUFDN0Q7O1FBQUksT0FBTyxHQUFHLEFBQUgsVUFBYSxBQUFiLFlBQXlCLEFBQXpCLEFBQVgsQUFDQTtPQUFHLEFBQUgsTUFBUyxBQUFULEtBQWMsS0FBSyxBQUFMLEFBQWQsQUFDSDtBQUhEO0FBSUEsd0JBQWUsQUFBZixJQUFtQixBQUFuQixFQUFxQixBQUFyQixtQkFBd0MsVUFBQyxBQUFELFdBQXlCO1FBQWIsQUFBYSxlQUFsQixBQUFrQixBQUM3RDs7UUFBSSxPQUFPLEdBQUcsQUFBSCxtQkFBc0IsQUFBdEIsQUFBWCxBQUNBO09BQUcsQUFBSCxNQUFTLEFBQVQsS0FBYyxBQUFkLEFBQ0g7QUFIRDtBQUlBLHdCQUFlLEFBQWYsSUFBbUIsQUFBbkIsRUFBcUIsQUFBckIsbUJBQXdDLFVBQUMsQUFBRCxXQUF5QjtRQUFiLEFBQWEsZUFBbEIsQUFBa0IsQUFDN0Q7O1FBQUksT0FBTyxHQUFHLEFBQUgsTUFBUyxBQUFULEFBQVgsQUFDQTtPQUFHLEFBQUgsUUFBVyxBQUFYLFdBQXNCLEFBQXRCLFFBQThCLEFBQTlCLEFBQ0g7QUFIRDtBQUlBLHdCQUFlLEFBQWYsSUFBbUIsQUFBbkIsR0FBc0IsQUFBdEIseUJBQStDLFVBQUMsQUFBRCxXQUF3QjtRQUFaLEFBQVksY0FBakIsQUFBaUIsQUFDbkU7O1FBQUksT0FBTyxHQUFHLEFBQUgsVUFBYSxBQUFiLFVBQXVCLEFBQXZCLEFBQVgsQUFDQTtRQUFJLFNBQVMsR0FBRyxBQUFILFFBQVcsQUFBWCxBQUFiLEFBQ0E7UUFBSSxNQUFNLE9BQU8sQUFBUCxBQUFWLEFBQ0E7UUFBSSxRQUFRLEFBQVosV0FBdUIsQUFDbkI7Y0FBTSxHQUFHLEFBQUgsVUFBYSxBQUFiLElBQWlCLEFBQWpCLEFBQU4sQUFDSDtBQUNEO09BQUcsQUFBSCxNQUFTLEFBQVQsS0FBYyxBQUFkLEFBQ0g7QUFSRDtBQVNBLHdCQUFlLEFBQWYsSUFBbUIsQUFBbkIsR0FBc0IsQUFBdEIsaUJBQXVDLFVBQUMsQUFBRCxXQUFnRDtRQUFwQyxBQUFvQyxnQkFBekMsQUFBeUM7UUFBdEIsQUFBc0Isd0JBQTNCLEFBQTJCLEFBQ25GOztPQUFHLEFBQUgsY0FBaUIsQUFBakIsU0FBMEIsQ0FBQyxDQUFDLEFBQTVCLEFBQ0g7QUFGRDtBQUdBLHdCQUFlLEFBQWYsSUFBbUIsQUFBbkIsRUFBcUIsQUFBckIsbUJBQXdDLFVBQUMsQUFBRCxXQUF1QjtRQUFYLEFBQVcsYUFBaEIsQUFBZ0IsQUFDM0Q7O1FBQUksTUFBTSxHQUFHLEFBQUgsVUFBYSxBQUFiLFVBQXVCLEFBQXZCLEFBQVYsQUFDQTtRQUFJLE9BQU8sR0FBRyxBQUFILE1BQVMsQUFBVCxBQUFYLEFBQ0E7T0FBRyxBQUFILE1BQVMsQUFBVCxLQUFjLEtBQUssQUFBTCxJQUFTLEFBQVQsQUFBZCxBQUNIO0FBSkQ7QUFLQSx3QkFBZSxBQUFmLElBQW1CLEFBQW5CLEVBQXFCLEFBQXJCLGlCQUFzQyxVQUFDLEFBQUQsV0FBeUI7UUFBYixBQUFhLGVBQWxCLEFBQWtCLEFBQzNEOztRQUFJLFFBQVEsU0FBUyxHQUFHLEFBQUgsVUFBYSxBQUFiLFNBQXNCLEFBQXRCLEFBQVQsVUFBeUMsQUFBckQsQUFDQTtPQUFHLEFBQUgsTUFBUyxBQUFULEtBQWMsQUFBZCxBQUNIO0FBSEQ7QUFJQSx3QkFBZSxBQUFmLElBQW1CLEFBQW5CLEVBQXFCLEFBQXJCLGdCQUFxQyxVQUFDLEFBQUQsV0FBeUI7UUFBYixBQUFhLGVBQWxCLEFBQWtCLEFBQzFEOztPQUFHLEFBQUgsTUFBUyxBQUFULEtBQWMsR0FBRyxBQUFILFFBQVcsQUFBWCxTQUFvQixBQUFwQixBQUFkLEFBQ0g7QUFGRDtBQUdBLHdCQUFlLEFBQWYsSUFBbUIsQUFBbkIsRUFBcUIsQUFBckIsZ0JBQXFDLFVBQUMsQUFBRCxZQUF5QjtRQUFiLEFBQWEsZ0JBQWxCLEFBQWtCLEFBQzFEOztRQUFJLFdBQVcsQ0FBQyxDQUFDLEdBQUcsQUFBSCxRQUFXLEFBQVgsU0FBb0IsQUFBcEIsQUFBakIsQUFDQTtPQUFHLEFBQUgsTUFBUyxBQUFULEtBQWMsQUFBVyxBQUFYLEFBQTRCLEFBQTFDLEFBQ0g7QUFIRDtBQUlBLHdCQUFlLEFBQWYsSUFBbUIsQUFBbkIsR0FBc0IsQUFBdEIsc0JBQTRDLFVBQUMsQUFBRCxZQUF5QjtRQUFiLEFBQWEsZ0JBQWxCLEFBQWtCLEFBQ2pFOztRQUFJLFFBQVEsR0FBRyxBQUFILFFBQVcsQUFBWCxTQUFvQixBQUFwQixBQUFaLEFBQ0E7UUFBSSxpQkFBaUIsU0FBUyxNQUFNLEFBQU4sWUFBa0IsQUFBbEIsV0FBNkIsQUFBM0QsQUFDQTtPQUFHLEFBQUgsTUFBUyxBQUFULEtBQWMsQUFBaUIsQUFBakIsQUFBa0MsQUFBaEQsQUFDSDtBQUpEO0FBS0Esd0JBQWUsQUFBZixJQUFtQixBQUFuQixHQUFzQixBQUF0QixjQUFvQyxVQUFDLEFBQUQsWUFBd0I7UUFBWixBQUFZLGVBQWpCLEFBQWlCLEFBQ3hEOztRQUFJLE1BQU0sQUFBVixBQUNBO1NBQUssSUFBSSxJQUFJLEFBQWIsT0FBb0IsSUFBSSxBQUF4QixHQUEyQixBQUEzQixLQUFnQyxBQUM1QjtZQUFJLEFBQUosS0FBUyxHQUFHLEFBQUgsTUFBUyxBQUFULEFBQVQsQUFDSDtBQUNEO09BQUcsQUFBSCxNQUFTLEFBQVQsS0FBYyxBQUFJLEFBQUosNEJBQW9CLElBQUksQUFBSixBQUFwQixBQUFkLEFBQ0g7QUFORCIsImZpbGUiOiJsaWIvY29tcGlsZWQvb3Bjb2Rlcy9leHByZXNzaW9ucy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFQUEVORF9PUENPREVTIH0gZnJvbSAnLi4vLi4vb3Bjb2Rlcyc7XG5pbXBvcnQgeyBGQUxTRV9SRUZFUkVOQ0UsIFRSVUVfUkVGRVJFTkNFIH0gZnJvbSAnLi4vLi4vcmVmZXJlbmNlcyc7XG5pbXBvcnQgeyBDb25jYXRSZWZlcmVuY2UgfSBmcm9tICcuLi9leHByZXNzaW9ucy9jb25jYXQnO1xuQVBQRU5EX09QQ09ERVMuYWRkKDEgLyogSGVscGVyICovLCAodm0sIHsgb3AxOiBfaGVscGVyIH0pID0+IHtcbiAgICBsZXQgc3RhY2sgPSB2bS5zdGFjaztcbiAgICBsZXQgaGVscGVyID0gdm0uY29uc3RhbnRzLmdldEZ1bmN0aW9uKF9oZWxwZXIpO1xuICAgIGxldCBhcmdzID0gc3RhY2sucG9wKCk7XG4gICAgbGV0IHZhbHVlID0gaGVscGVyKHZtLCBhcmdzKTtcbiAgICBhcmdzLmNsZWFyKCk7XG4gICAgdm0uc3RhY2sucHVzaCh2YWx1ZSk7XG59KTtcbkFQUEVORF9PUENPREVTLmFkZCgyIC8qIEZ1bmN0aW9uICovLCAodm0sIHsgb3AxOiBfZnVuY3Rpb24gfSkgPT4ge1xuICAgIGxldCBmdW5jID0gdm0uY29uc3RhbnRzLmdldEZ1bmN0aW9uKF9mdW5jdGlvbik7XG4gICAgdm0uc3RhY2sucHVzaChmdW5jKHZtKSk7XG59KTtcbkFQUEVORF9PUENPREVTLmFkZCg1IC8qIEdldFZhcmlhYmxlICovLCAodm0sIHsgb3AxOiBzeW1ib2wgfSkgPT4ge1xuICAgIGxldCBleHByID0gdm0ucmVmZXJlbmNlRm9yU3ltYm9sKHN5bWJvbCk7XG4gICAgdm0uc3RhY2sucHVzaChleHByKTtcbn0pO1xuQVBQRU5EX09QQ09ERVMuYWRkKDQgLyogU2V0VmFyaWFibGUgKi8sICh2bSwgeyBvcDE6IHN5bWJvbCB9KSA9PiB7XG4gICAgbGV0IGV4cHIgPSB2bS5zdGFjay5wb3AoKTtcbiAgICB2bS5zY29wZSgpLmJpbmRTeW1ib2woc3ltYm9sLCBleHByKTtcbn0pO1xuQVBQRU5EX09QQ09ERVMuYWRkKDcwIC8qIFJlc29sdmVNYXliZUxvY2FsICovLCAodm0sIHsgb3AxOiBfbmFtZSB9KSA9PiB7XG4gICAgbGV0IG5hbWUgPSB2bS5jb25zdGFudHMuZ2V0U3RyaW5nKF9uYW1lKTtcbiAgICBsZXQgbG9jYWxzID0gdm0uc2NvcGUoKS5nZXRQYXJ0aWFsTWFwKCk7XG4gICAgbGV0IHJlZiA9IGxvY2Fsc1tuYW1lXTtcbiAgICBpZiAocmVmID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgcmVmID0gdm0uZ2V0U2VsZigpLmdldChuYW1lKTtcbiAgICB9XG4gICAgdm0uc3RhY2sucHVzaChyZWYpO1xufSk7XG5BUFBFTkRfT1BDT0RFUy5hZGQoMTkgLyogUm9vdFNjb3BlICovLCAodm0sIHsgb3AxOiBzeW1ib2xzLCBvcDI6IGJpbmRDYWxsZXJTY29wZSB9KSA9PiB7XG4gICAgdm0ucHVzaFJvb3RTY29wZShzeW1ib2xzLCAhIWJpbmRDYWxsZXJTY29wZSk7XG59KTtcbkFQUEVORF9PUENPREVTLmFkZCg2IC8qIEdldFByb3BlcnR5ICovLCAodm0sIHsgb3AxOiBfa2V5IH0pID0+IHtcbiAgICBsZXQga2V5ID0gdm0uY29uc3RhbnRzLmdldFN0cmluZyhfa2V5KTtcbiAgICBsZXQgZXhwciA9IHZtLnN0YWNrLnBvcCgpO1xuICAgIHZtLnN0YWNrLnB1c2goZXhwci5nZXQoa2V5KSk7XG59KTtcbkFQUEVORF9PUENPREVTLmFkZCg3IC8qIFB1c2hCbG9jayAqLywgKHZtLCB7IG9wMTogX2Jsb2NrIH0pID0+IHtcbiAgICBsZXQgYmxvY2sgPSBfYmxvY2sgPyB2bS5jb25zdGFudHMuZ2V0QmxvY2soX2Jsb2NrKSA6IG51bGw7XG4gICAgdm0uc3RhY2sucHVzaChibG9jayk7XG59KTtcbkFQUEVORF9PUENPREVTLmFkZCg4IC8qIEdldEJsb2NrICovLCAodm0sIHsgb3AxOiBfYmxvY2sgfSkgPT4ge1xuICAgIHZtLnN0YWNrLnB1c2godm0uc2NvcGUoKS5nZXRCbG9jayhfYmxvY2spKTtcbn0pO1xuQVBQRU5EX09QQ09ERVMuYWRkKDkgLyogSGFzQmxvY2sgKi8sICh2bSwgeyBvcDE6IF9ibG9jayB9KSA9PiB7XG4gICAgbGV0IGhhc0Jsb2NrID0gISF2bS5zY29wZSgpLmdldEJsb2NrKF9ibG9jayk7XG4gICAgdm0uc3RhY2sucHVzaChoYXNCbG9jayA/IFRSVUVfUkVGRVJFTkNFIDogRkFMU0VfUkVGRVJFTkNFKTtcbn0pO1xuQVBQRU5EX09QQ09ERVMuYWRkKDEwIC8qIEhhc0Jsb2NrUGFyYW1zICovLCAodm0sIHsgb3AxOiBfYmxvY2sgfSkgPT4ge1xuICAgIGxldCBibG9jayA9IHZtLnNjb3BlKCkuZ2V0QmxvY2soX2Jsb2NrKTtcbiAgICBsZXQgaGFzQmxvY2tQYXJhbXMgPSBibG9jayAmJiBibG9jay5zeW1ib2xUYWJsZS5wYXJhbWV0ZXJzLmxlbmd0aDtcbiAgICB2bS5zdGFjay5wdXNoKGhhc0Jsb2NrUGFyYW1zID8gVFJVRV9SRUZFUkVOQ0UgOiBGQUxTRV9SRUZFUkVOQ0UpO1xufSk7XG5BUFBFTkRfT1BDT0RFUy5hZGQoMTEgLyogQ29uY2F0ICovLCAodm0sIHsgb3AxOiBjb3VudCB9KSA9PiB7XG4gICAgbGV0IG91dCA9IFtdO1xuICAgIGZvciAobGV0IGkgPSBjb3VudDsgaSA+IDA7IGktLSkge1xuICAgICAgICBvdXQucHVzaCh2bS5zdGFjay5wb3AoKSk7XG4gICAgfVxuICAgIHZtLnN0YWNrLnB1c2gobmV3IENvbmNhdFJlZmVyZW5jZShvdXQucmV2ZXJzZSgpKSk7XG59KTsiXX0=
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9jb21waWxlZC9vcGNvZGVzL2V4cHJlc3Npb25zLmpzIl0sIm5hbWVzIjpbIkFQUEVORF9PUENPREVTIiwiRkFMU0VfUkVGRVJFTkNFIiwiVFJVRV9SRUZFUkVOQ0UiLCJDb25jYXRSZWZlcmVuY2UiLCJhZGQiLCJ2bSIsIl9oZWxwZXIiLCJvcDEiLCJzdGFjayIsImhlbHBlciIsImNvbnN0YW50cyIsImdldEZ1bmN0aW9uIiwiYXJncyIsInBvcCIsInZhbHVlIiwiY2xlYXIiLCJwdXNoIiwiX2Z1bmN0aW9uIiwiZnVuYyIsInN5bWJvbCIsImV4cHIiLCJyZWZlcmVuY2VGb3JTeW1ib2wiLCJzY29wZSIsImJpbmRTeW1ib2wiLCJfbmFtZSIsIm5hbWUiLCJnZXRTdHJpbmciLCJsb2NhbHMiLCJnZXRQYXJ0aWFsTWFwIiwicmVmIiwidW5kZWZpbmVkIiwiZ2V0U2VsZiIsImdldCIsInN5bWJvbHMiLCJiaW5kQ2FsbGVyU2NvcGUiLCJvcDIiLCJwdXNoUm9vdFNjb3BlIiwiX2tleSIsImtleSIsIl9ibG9jayIsImJsb2NrIiwiZ2V0QmxvY2siLCJoYXNCbG9jayIsImhhc0Jsb2NrUGFyYW1zIiwic3ltYm9sVGFibGUiLCJwYXJhbWV0ZXJzIiwibGVuZ3RoIiwiY291bnQiLCJvdXQiLCJpIiwicmV2ZXJzZSJdLCJtYXBwaW5ncyI6Ijs7QUFBQSxBQUFTLEFBQVQsQUFBK0IsQUFBL0I7O0FBQ0EsQUFBUyxBQUFULEFBQTBCLEFBQTFCLEFBQWdELEFBQWhEOztBQUNBLEFBQVMsQUFBVCxBQUFnQyxBQUFoQzs7QUFDQSx3QkFBZSxBQUFmLElBQW1CLEFBQW5CLEVBQXFCLEFBQXJCLGNBQW1DLFVBQUMsQUFBRCxVQUEwQjtRQUFkLEFBQWMsZUFBbkIsQUFBbUIsQUFDekQ7O1FBQUksUUFBUSxHQUFHLEFBQWYsQUFDQTtRQUFJLFNBQVMsR0FBRyxBQUFILFVBQWEsQUFBYixZQUF5QixBQUF6QixBQUFiLEFBQ0E7UUFBSSxPQUFPLE1BQU0sQUFBTixBQUFYLEFB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RUFBcUIsQUFBckIsZ0JBQXFDLFVBQUMsQUFBRCxZQUF5QjtRQUFiLEFBQWEsZ0JBQWxCLEFBQWtCLEFBQzFEOztRQUFJLFdBQVcsQ0FBQyxDQUFDLEdBQUcsQUFBSCxRQUFXLEFBQVgsU0FBb0IsQUFBcEIsQUFBakIsQUFDQTtPQUFHLEFBQUgsTUFBUyxBQUFULEtBQWMsQUFBVyxBQUFYLEFBQTRCLEFBQTFDLEFBQ0g7QUFIRDtBQUlBLHdCQUFlLEFBQWYsSUFBbUIsQUFBbkIsR0FBc0IsQUFBdEIsc0JBQTRDLFVBQUMsQUFBRCxZQUF5QjtRQUFiLEFBQWEsZ0JBQWxCLEFBQWtCLEFBQ2pFOztRQUFJLFFBQVEsR0FBRyxBQUFILFFBQVcsQUFBWCxTQUFvQixBQUFwQixBQUFaLEFBQ0E7UUFBSSxpQkFBaUIsU0FBUyxNQUFNLEFBQU4sWUFBa0IsQUFBbEIsV0FBNkIsQUFBM0QsQUFDQTtPQUFHLEFBQUgsTUFBUyxBQUFULEtBQWMsQUFBaUIsQUFBakIsQUFBa0MsQUFBaEQsQUFDSDtBQUpEO0FBS0Esd0JBQWUsQUFBZixJQUFtQixBQUFuQixHQUFzQixBQUF0QixjQUFvQyxVQUFDLEFBQUQsWUFBd0I7UUFBWixBQUFZLGVBQWpCLEFBQWlCLEFBQ3hEOztRQUFJLE1BQU0sQUFBVixBQUNBO1NBQUssSUFBSSxJQUFJLEFBQWIsT0FBb0IsSUFBSSxBQUF4QixHQUEyQixBQUEzQixLQUFnQyxBQUM1QjtZQUFJLEFBQUosS0FBUyxHQUFHLEFBQUgsTUFBUyxBQUFULEFBQVQsQUFDSDtBQUNEO09BQUcsQUFBSCxNQUFTLEFBQVQsS0FBYyxBQUFJLEFBQUosNEJBQW9CLElBQUksQUFBSixBQUFwQixBQUFkLEFBQ0g7QUFORCIsImZpbGUiOiJsaWIvY29tcGlsZWQvb3Bjb2Rlcy9leHByZXNzaW9ucy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFQUEVORF9PUENPREVTIH0gZnJvbSAnLi4vLi4vb3Bjb2Rlcyc7XG5pbXBvcnQgeyBGQUxTRV9SRUZFUkVOQ0UsIFRSVUVfUkVGRVJFTkNFIH0gZnJvbSAnLi4vLi4vcmVmZXJlbmNlcyc7XG5pbXBvcnQgeyBDb25jYXRSZWZlcmVuY2UgfSBmcm9tICcuLi9leHByZXNzaW9ucy9jb25jYXQnO1xuQVBQRU5EX09QQ09ERVMuYWRkKDEgLyogSGVscGVyICovLCAodm0sIHsgb3AxOiBfaGVscGVyIH0pID0+IHtcbiAgICBsZXQgc3RhY2sgPSB2bS5zdGFjaztcbiAgICBsZXQgaGVscGVyID0gdm0uY29uc3RhbnRzLmdldEZ1bmN0aW9uKF9oZWxwZXIpO1xuICAgIGxldCBhcmdzID0gc3RhY2sucG9wKCk7XG4gICAgbGV0IHZhbHVlID0gaGVscGVyKHZtLCBhcmdzKTtcbiAgICBhcmdzLmNsZWFyKCk7XG4gICAgdm0uc3RhY2sucHVzaCh2YWx1ZSk7XG59KTtcbkFQUEVORF9PUENPREVTLmFkZCgyIC8qIEZ1bmN0aW9uICovLCAodm0sIHsgb3AxOiBfZnVuY3Rpb24gfSkgPT4ge1xuICAgIGxldCBmdW5jID0gdm0uY29uc3RhbnRzLmdldEZ1bmN0aW9uKF9mdW5jdGlvbik7XG4gICAgdm0uc3RhY2sucHVzaChmdW5jKHZtKSk7XG59KTtcbkFQUEVORF9PUENPREVTLmFkZCg1IC8qIEdldFZhcmlhYmxlICovLCAodm0sIHsgb3AxOiBzeW1ib2wgfSkgPT4ge1xuICAgIGxldCBleHByID0gdm0ucmVmZXJlbmNlRm9yU3ltYm9sKHN5bWJvbCk7XG4gICAgdm0uc3RhY2sucHVzaChleHByKTtcbn0pO1xuQVBQRU5EX09QQ09ERVMuYWRkKDQgLyogU2V0VmFyaWFibGUgKi8sICh2bSwgeyBvcDE6IHN5bWJvbCB9KSA9PiB7XG4gICAgbGV0IGV4cHIgPSB2bS5zdGFjay5wb3AoKTtcbiAgICB2bS5zY29wZSgpLmJpbmRTeW1ib2woc3ltYm9sLCBleHByKTtcbn0pO1xuQVBQRU5EX09QQ09ERVMuYWRkKDY5IC8qIFJlc29sdmVNYXliZUxvY2FsICovLCAodm0sIHsgb3AxOiBfbmFtZSB9KSA9PiB7XG4gICAgbGV0IG5hbWUgPSB2bS5jb25zdGFudHMuZ2V0U3RyaW5nKF9uYW1lKTtcbiAgICBsZXQgbG9jYWxzID0gdm0uc2NvcGUoKS5nZXRQYXJ0aWFsTWFwKCk7XG4gICAgbGV0IHJlZiA9IGxvY2Fsc1tuYW1lXTtcbiAgICBpZiAocmVmID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgcmVmID0gdm0uZ2V0U2VsZigpLmdldChuYW1lKTtcbiAgICB9XG4gICAgdm0uc3RhY2sucHVzaChyZWYpO1xufSk7XG5BUFBFTkRfT1BDT0RFUy5hZGQoMTkgLyogUm9vdFNjb3BlICovLCAodm0sIHsgb3AxOiBzeW1ib2xzLCBvcDI6IGJpbmRDYWxsZXJTY29wZSB9KSA9PiB7XG4gICAgdm0ucHVzaFJvb3RTY29wZShzeW1ib2xzLCAhIWJpbmRDYWxsZXJTY29wZSk7XG59KTtcbkFQUEVORF9PUENPREVTLmFkZCg2IC8qIEdldFByb3BlcnR5ICovLCAodm0sIHsgb3AxOiBfa2V5IH0pID0+IHtcbiAgICBsZXQga2V5ID0gdm0uY29uc3RhbnRzLmdldFN0cmluZyhfa2V5KTtcbiAgICBsZXQgZXhwciA9IHZtLnN0YWNrLnBvcCgpO1xuICAgIHZtLnN0YWNrLnB1c2goZXhwci5nZXQoa2V5KSk7XG59KTtcbkFQUEVORF9PUENPREVTLmFkZCg3IC8qIFB1c2hCbG9jayAqLywgKHZtLCB7IG9wMTogX2Jsb2NrIH0pID0+IHtcbiAgICBsZXQgYmxvY2sgPSBfYmxvY2sgPyB2bS5jb25zdGFudHMuZ2V0QmxvY2soX2Jsb2NrKSA6IG51bGw7XG4gICAgdm0uc3RhY2sucHVzaChibG9jayk7XG59KTtcbkFQUEVORF9PUENPREVTLmFkZCg4IC8qIEdldEJsb2NrICovLCAodm0sIHsgb3AxOiBfYmxvY2sgfSkgPT4ge1xuICAgIHZtLnN0YWNrLnB1c2godm0uc2NvcGUoKS5nZXRCbG9jayhfYmxvY2spKTtcbn0pO1xuQVBQRU5EX09QQ09ERVMuYWRkKDkgLyogSGFzQmxvY2sgKi8sICh2bSwgeyBvcDE6IF9ibG9jayB9KSA9PiB7XG4gICAgbGV0IGhhc0Jsb2NrID0gISF2bS5zY29wZSgpLmdldEJsb2NrKF9ibG9jayk7XG4gICAgdm0uc3RhY2sucHVzaChoYXNCbG9jayA/IFRSVUVfUkVGRVJFTkNFIDogRkFMU0VfUkVGRVJFTkNFKTtcbn0pO1xuQVBQRU5EX09QQ09ERVMuYWRkKDEwIC8qIEhhc0Jsb2NrUGFyYW1zICovLCAodm0sIHsgb3AxOiBfYmxvY2sgfSkgPT4ge1xuICAgIGxldCBibG9jayA9IHZtLnNjb3BlKCkuZ2V0QmxvY2soX2Jsb2NrKTtcbiAgICBsZXQgaGFzQmxvY2tQYXJhbXMgPSBibG9jayAmJiBibG9jay5zeW1ib2xUYWJsZS5wYXJhbWV0ZXJzLmxlbmd0aDtcbiAgICB2bS5zdGFjay5wdXNoKGhhc0Jsb2NrUGFyYW1zID8gVFJVRV9SRUZFUkVOQ0UgOiBGQUxTRV9SRUZFUkVOQ0UpO1xufSk7XG5BUFBFTkRfT1BDT0RFUy5hZGQoMTEgLyogQ29uY2F0ICovLCAodm0sIHsgb3AxOiBjb3VudCB9KSA9PiB7XG4gICAgbGV0IG91dCA9IFtdO1xuICAgIGZvciAobGV0IGkgPSBjb3VudDsgaSA+IDA7IGktLSkge1xuICAgICAgICBvdXQucHVzaCh2bS5zdGFjay5wb3AoKSk7XG4gICAgfVxuICAgIHZtLnN0YWNrLnB1c2gobmV3IENvbmNhdFJlZmVyZW5jZShvdXQucmV2ZXJzZSgpKSk7XG59KTsiXX0=

@@ -5,3 +5,3 @@ 'use strict';

_opcodes.APPEND_OPCODES.add(69 /* GetPartialTemplate */, function (vm) {
_opcodes.APPEND_OPCODES.add(68 /* GetPartialTemplate */, function (vm) {
var stack = vm.stack;

@@ -11,2 +11,2 @@ var definition = stack.pop();

});
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9jb21waWxlZC9vcGNvZGVzL3BhcnRpYWwuanMiXSwibmFtZXMiOlsiQVBQRU5EX09QQ09ERVMiLCJhZGQiLCJzdGFjayIsInZtIiwiZGVmaW5pdGlvbiIsInBvcCIsInB1c2giLCJ2YWx1ZSIsInRlbXBsYXRlIiwiYXNQYXJ0aWFsIl0sIm1hcHBpbmdzIjoiOztBQUFBLEFBQVMsQUFBVCxBQUErQixBQUEvQjs7QUFDQSx3QkFBZSxBQUFmLElBQW1CLEFBQW5CLEdBQXNCLEFBQXRCLDBCQUFnRCxjQUFNLEFBQ2xEO1FBQUksUUFBUSxHQUFHLEFBQWYsQUFDQTtRQUFJLGFBQWEsTUFBTSxBQUFOLEFBQWpCLEFBQ0E7VUFBTSxBQUFOLEtBQVcsV0FBVyxBQUFYLFFBQW1CLEFBQW5CLFNBQTRCLEFBQTVCLEFBQVgsQUFDSDtBQUpEIiwiZmlsZSI6ImxpYi9jb21waWxlZC9vcGNvZGVzL3BhcnRpYWwuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBUFBFTkRfT1BDT0RFUyB9IGZyb20gJy4uLy4uL29wY29kZXMnO1xuQVBQRU5EX09QQ09ERVMuYWRkKDY5IC8qIEdldFBhcnRpYWxUZW1wbGF0ZSAqLywgdm0gPT4ge1xuICAgIGxldCBzdGFjayA9IHZtLnN0YWNrO1xuICAgIGxldCBkZWZpbml0aW9uID0gc3RhY2sucG9wKCk7XG4gICAgc3RhY2sucHVzaChkZWZpbml0aW9uLnZhbHVlKCkudGVtcGxhdGUuYXNQYXJ0aWFsKCkpO1xufSk7Il19
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9jb21waWxlZC9vcGNvZGVzL3BhcnRpYWwuanMiXSwibmFtZXMiOlsiQVBQRU5EX09QQ09ERVMiLCJhZGQiLCJzdGFjayIsInZtIiwiZGVmaW5pdGlvbiIsInBvcCIsInB1c2giLCJ2YWx1ZSIsInRlbXBsYXRlIiwiYXNQYXJ0aWFsIl0sIm1hcHBpbmdzIjoiOztBQUFBLEFBQVMsQUFBVCxBQUErQixBQUEvQjs7QUFDQSx3QkFBZSxBQUFmLElBQW1CLEFBQW5CLEdBQXNCLEFBQXRCLDBCQUFnRCxjQUFNLEFBQ2xEO1FBQUksUUFBUSxHQUFHLEFBQWYsQUFDQTtRQUFJLGFBQWEsTUFBTSxBQUFOLEFBQWpCLEFBQ0E7VUFBTSxBQUFOLEtBQVcsV0FBVyxBQUFYLFFBQW1CLEFBQW5CLFNBQTRCLEFBQTVCLEFBQVgsQUFDSDtBQUpEIiwiZmlsZSI6ImxpYi9jb21waWxlZC9vcGNvZGVzL3BhcnRpYWwuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBUFBFTkRfT1BDT0RFUyB9IGZyb20gJy4uLy4uL29wY29kZXMnO1xuQVBQRU5EX09QQ09ERVMuYWRkKDY4IC8qIEdldFBhcnRpYWxUZW1wbGF0ZSAqLywgdm0gPT4ge1xuICAgIGxldCBzdGFjayA9IHZtLnN0YWNrO1xuICAgIGxldCBkZWZpbml0aW9uID0gc3RhY2sucG9wKCk7XG4gICAgc3RhY2sucHVzaChkZWZpbml0aW9uLnZhbHVlKCkudGVtcGxhdGUuYXNQYXJ0aWFsKCkpO1xufSk7Il19

@@ -247,36 +247,34 @@ "use strict";

return ['PushDynamicComponentManager', {}];
case 57 /* InitializeComponentState */:
return ['InitializeComponentState', {}];
case 58 /* PushArgs */:
return ['PushArgs', { synthetic: !!op1 }];
case 59 /* PrepareArgs */:
case 57 /* PushArgs */:
return ['PushArgs', { synthetic: !!op2 }];
case 58 /* PrepareArgs */:
return ['PrepareArgs', { state: Register[op1] }];
case 60 /* CreateComponent */:
case 59 /* CreateComponent */:
return ['CreateComponent', { flags: op1, state: Register[op2] }];
case 61 /* RegisterComponentDestructor */:
case 60 /* RegisterComponentDestructor */:
return ['RegisterComponentDestructor', {}];
case 62 /* PushComponentOperations */:
case 61 /* PushComponentOperations */:
return ['PushComponentOperations', {}];
case 63 /* GetComponentSelf */:
case 62 /* GetComponentSelf */:
return ['GetComponentSelf', { state: Register[op1] }];
case 64 /* GetComponentLayout */:
case 63 /* GetComponentLayout */:
return ['GetComponentLayout', { state: Register[op1] }];
case 65 /* BeginComponentTransaction */:
case 64 /* BeginComponentTransaction */:
return ['BeginComponentTransaction', {}];
case 66 /* CommitComponentTransaction */:
case 65 /* CommitComponentTransaction */:
return ['CommitComponentTransaction', {}];
case 67 /* DidCreateElement */:
case 66 /* DidCreateElement */:
return ['DidCreateElement', { state: Register[op1] }];
case 68 /* DidRenderLayout */:
case 67 /* DidRenderLayout */:
return ['DidRenderLayout', {}];
/// PARTIALS
case 69 /* GetPartialTemplate */:
case 68 /* GetPartialTemplate */:
return ['CompilePartial', {}];
case 70 /* ResolveMaybeLocal */:
case 69 /* ResolveMaybeLocal */:
return ['ResolveMaybeLocal', { name: c.getString(op1) }];
/// DEBUGGER
case 71 /* Debugger */:
case 70 /* Debugger */:
return ['Debugger', { symbols: c.getOther(op1), evalInfo: c.getArray(op2) }];
/// STATEMENTS
case 72 /* Size */:
case 71 /* Size */:
throw (0, _util.unreachable)();

@@ -292,3 +290,3 @@ }

this.evaluateOpcode = (0, _util.fillNulls)(72 /* Size */).slice();
this.evaluateOpcode = (0, _util.fillNulls)(71 /* Size */).slice();
}

@@ -395,2 +393,2 @@

}
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9vcGNvZGVzLmpzIl0sIm5hbWVzIjpbImluaXRpYWxpemVHdWlkIiwiZmlsbE51bGxzIiwidW5yZWFjaGFibGUiLCJSZWdpc3RlciIsImRlYnVnU2xpY2UiLCJlbnYiLCJzdGFydCIsImVuZCIsInByb2dyYW0iLCJjb25zdGFudHMiLCJjb25zb2xlIiwiZ3JvdXAiLCJpIiwib3Bjb2RlIiwidHlwZSIsIm9wMSIsIm9wMiIsIm9wMyIsImRlYnVnIiwibmFtZSIsInBhcmFtcyIsImxvZyIsImxvZ09wY29kZSIsImdyb3VwRW5kIiwib3V0IiwiYXJncyIsIk9iamVjdCIsImtleXMiLCJtYXAiLCJwIiwianNvbiIsImpvaW4iLCJwYXJhbSIsInN0cmluZyIsIkpTT04iLCJzdHJpbmdpZnkiLCJlIiwidW5kZWZpbmVkIiwicGFyc2UiLCJHbGltbWVyRGVidWciLCJjIiwib3AiLCJoZWxwZXIiLCJnZXRGdW5jdGlvbiIsImZ1bmN0aW9uIiwic3ltYm9sIiwia2V5IiwiZ2V0U3RyaW5nIiwiYmxvY2siLCJnZXRCbG9jayIsInNpemUiLCJ2YWx1ZSIsImdldE90aGVyIiwicHJpbWl0aXZlIiwicmVnaXN0ZXIiLCJvZmZzZXQiLCJjb3VudCIsInN5bWJvbHMiLCJiaW5kQ2FsbGVyU2NvcGUiLCJ0ZXh0IiwiY29tbWVudCIsInRhZyIsIm5hbWVzcGFjZSIsInRydXN0aW5nIiwibnMiLCJpbnZva2VyIiwidG8iLCJkZWZpbml0aW9uIiwic3ludGhldGljIiwic3RhdGUiLCJmbGFncyIsImV2YWxJbmZvIiwiZ2V0QXJyYXkiLCJBcHBlbmRPcGNvZGVzIiwiZXZhbHVhdGVPcGNvZGUiLCJzbGljZSIsImFkZCIsImV2YWx1YXRlIiwidm0iLCJmdW5jIiwic3RhY2siLCJ0b0FycmF5Iiwic2NvcGUiLCJzIiwiZWxlbWVudHMiLCJBUFBFTkRfT1BDT0RFUyIsIkFic3RyYWN0T3Bjb2RlIiwidG9KU09OIiwiZ3VpZCIsIl9ndWlkIiwiVXBkYXRpbmdPcGNvZGUiLCJhcmd1bWVudHMiLCJuZXh0IiwicHJldiIsImluc3BlY3QiLCJvcGNvZGVzIiwiYnVmZmVyIiwiZm9yRWFjaCIsIl9pbnNwZWN0IiwibGV2ZWwiLCJpbmRleCIsImluZGVudGF0aW9uIiwicHVzaCIsImRldGFpbHMiLCJsZW5ndGgiLCJjaGlsZHJlbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7O1FBeUJPLEFBQVM7UUFpUVQsQUFBUzs7QUExUmhCLEFBQVMsQUFBZ0IsQUFBVyxBQUFtQjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUV2RCxBQU1BOzs7Ozs7QUFBTyxJQUFBLEFBQUk7QUFDWCxDQUFDLFVBQUEsQUFBVSxVQUFVLEFBQ2pCO0FBQ0E7YUFBUyxTQUFBLEFBQVMsUUFBbEIsQUFBMEIsS0FBMUIsQUFBK0IsQUFDL0I7QUFDQTthQUFTLFNBQUEsQUFBUyxRQUFsQixBQUEwQixLQUExQixBQUErQixBQUMvQjtBQUNBO2FBQVMsU0FBQSxBQUFTLFFBQWxCLEFBQTBCLEtBQTFCLEFBQStCLEFBQy9CO0FBQ0E7YUFBUyxTQUFBLEFBQVMsUUFBbEIsQUFBMEIsS0FBMUIsQUFBK0IsQUFDL0I7QUFDQTthQUFTLFNBQUEsQUFBUyxRQUFsQixBQUEwQixLQUExQixBQUErQixBQUMvQjthQUFTLFNBQUEsQUFBUyxRQUFsQixBQUEwQixLQUExQixBQUErQixBQUMvQjtBQUNBO2FBQVMsU0FBQSxBQUFTLFFBQWxCLEFBQTBCLEtBQTFCLEFBQStCLEFBQy9CO2FBQVMsU0FBQSxBQUFTLFFBQWxCLEFBQTBCLEtBQTFCLEFBQStCLEFBQ2xDO0FBZkQsR0FlRyxnQ0FBYSxXQWZoQixBQWVHLEFBQXdCLEFBQzNCO0FBQU8sb0JBQUEsQUFBb0IsS0FBcEIsQUFBeUIsT0FBekIsQUFBZ0MsS0FBSyxBQUN4QztRQUFJLENBQUEsQUFBQyxTQUFMLEFBQWMsT0FBTyxBQUNqQjtBQURpQjtZQUFBLEFBRVgsVUFGVyxBQUVZLElBRlosQUFFWDtZQUZXLEFBRUYsWUFGRSxBQUVZLElBRlosQUFFRixBQUNmO0FBQ0E7O1lBQUksT0FB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QUEzRCxpQkFBQSxFQUFBLEFBQW1FLEtBQS9FLEFBQVksQUFBd0UsQUFDdkY7QUFDSjtBQUNEO2VBQUEsQUFBTyxLQUFQLEFBQVksQUFDZjtBQUNEO1dBQUEsQUFBTyxLQUFQLEFBQVksQUFDWjtRQUFJLE9BQUEsQUFBTyxZQUFZLE9BQUEsQUFBTyxTQUE5QixBQUF1QyxRQUFRLEFBQzNDO2FBQUssSUFBSSxLQUFULEFBQWEsR0FBRyxLQUFJLE9BQUEsQUFBTyxTQUEzQixBQUFvQyxRQUFwQyxBQUE0QyxNQUFLLEFBQzdDO3FCQUFTLE9BQUEsQUFBTyxTQUFoQixBQUFTLEFBQWdCLEtBQXpCLEFBQTZCLFFBQVEsUUFBckMsQUFBNkMsR0FBN0MsQUFBZ0QsQUFDbkQ7QUFDSjtBQUNKIiwiZmlsZSI6ImxpYi9vcGNvZGVzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaW5pdGlhbGl6ZUd1aWQsIGZpbGxOdWxscywgdW5yZWFjaGFibGUgfSBmcm9tICdAZ2xpbW1lci91dGlsJztcblxuLyoqXG4gKiBSZWdpc3RlcnNcbiAqXG4gKiBGb3IgdGhlIG1vc3QgcGFydCwgdGhlc2UgZm9sbG93cyBNSVBTIG5hbWluZyBjb252ZW50aW9ucywgaG93ZXZlciB0aGVcbiAqIHJlZ2lzdGVyIG51bWJlcnMgYXJlIGRpZmZlcmVudC5cbiAqL1xuZXhwb3J0IHZhciBSZWdpc3RlcjtcbihmdW5jdGlvbiAoUmVnaXN0ZXIpIHtcbiAgICAvLyAkMCBvciAkcGMgKHByb2dyYW0gY291bnRlcik6IHBvaW50ZXIgaW50byBgcHJvZ3JhbWAgZm9yIHRoZSBuZXh0IGluc3R1cmN0aW9uOyAtMSBtZWFucyBleGl0XG4gICAgUmVnaXN0ZXJbUmVnaXN0ZXJbXCJwY1wiXSA9IDBdID0gXCJwY1wiO1xuICAgIC8vICQxIG9yICRyYSAocmV0dXJuIGFkZHJlc3MpOiBwb2ludGVyIGludG8gYHByb2dyYW1gIGZvciB0aGUgcmV0dXJuXG4gICAgUmVnaXN0ZXJbUmVnaXN0ZXJbXCJyYVwiXSA9IDFdID0gXCJyYVwiO1xuICAgIC8vICQyIG9yICRmcCAoZnJhbWUgcG9pbnRlcik6IHBvaW50ZXIgaW50byB0aGUgYGV2YWxTdGFja2AgZm9yIHRoZSBiYXNlIG9mIHRoZSBzdGFja1xuICAgIFJlZ2lzdGVyW1JlZ2lzdGVyW1wiZnBcIl0gPSAyXSA9IFwiZnBcIjtcbiAgICAvLyAkMyBvciAkc3AgKHN0YWNrIHBvaW50ZXIpOiBwb2ludGVyIGludG8gdGhlIGBldmFsU3RhY2tgIGZvciB0aGUgdG9wIG9mIHRoZSBzdGFja1xuICAgIFJlZ2lzdGVyW1JlZ2lzdGVyW1wic3BcIl0gPSAzXSA9IFwic3BcIjtcbiAgICAvLyAkNC0kNSBvciAkczAtJHMxIChzYXZlZCk6IGNhbGxlZSBzYXZlZCBnZW5lcmFsLXB1cnBvc2UgcmVnaXN0ZXJzXG4gICAgUmVnaXN0ZXJbUmVnaXN0ZXJbXCJzMFwiXSA9IDRdID0gXCJzMFwiO1xuICAgIFJlZ2lzdGVyW1JlZ2lzdGVyW1wiczFcIl0gPSA1XSA9IFwiczFcIjtcbiAgICAvLyAkNi0kNyBvciAkdDAtJHQxICh0ZW1wb3Jhcmllcyk6IGNhbGxlciBzYXZlZCBnZW5lcmFsLXB1cnBvc2UgcmVnaXN0ZXJzXG4gICAgUmVnaXN0ZXJbUmVnaXN0ZXJbXCJ0MFwiXSA9IDZdID0gXCJ0MFwiO1xuICAgIFJlZ2lzdGVyW1JlZ2lzdGVyW1widDFcIl0gPSA3XSA9IFwidDFcIjtcbn0pKFJlZ2lzdGVyIHx8IChSZWdpc3RlciA9IHt9KSk7XG5leHBvcnQgZnVuY3Rpb24gZGVidWdTbGljZShlbnYsIHN0YXJ0LCBlbmQpIHtcbiAgICBpZiAoIWZhbHNlICYmIGZhbHNlKSB7XG4gICAgICAgIC8qIHRzbGludDpkaXNhYmxlOm5vLWNvbnNvbGUgKi9cbiAgICAgICAgbGV0IHsgcHJvZ3JhbSwgY29uc3RhbnRzIH0gPSBlbnY7XG4gICAgICAgIC8vIGNvbnNvbGUgaXMgbm90IGF2YWlsYWJsZSBpbiBJRTlcbiAgICAgICAgaWYgKHR5cGVvZiBjb25zb2xlID09PSAndW5kZWZpbmVkJykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIC8vIElFMTAgZG9lcyBub3QgaGF2ZSBgY29uc29sZS5ncm91cGBcbiAgICAgICAgaWYgKHR5cGVvZiBjb25zb2xlLmdyb3VwICE9PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgY29uc29sZS5ncm91cChgJWMke3N0YXJ0fToke2VuZH1gLCAnY29sb3I6ICM5OTknKTtcbiAgICAgICAgZm9yIChsZXQgaSA9IHN0YXJ0OyBpIDw9IGVuZDsgaSArPSA0KSB7XG4gICAgICAgICAgICBsZXQgeyB0eXBlLCBvcDEsIG9wMiwgb3AzIH0gPSBwcm9ncmFtLm9wY29kZShpKTtcbiAgICAgICAgICAgIGxldCBbbmFtZSwgcGFyYW1zXSA9IGRlYnVnKGNvbnN0YW50cywgdHlwZSwgb3AxLCBvcDIsIG9wMyk7XG4gICAgICAgICAgICBjb25zb2xlLmxvZyhgJHtpfS4gJHtsb2dPcGNvZGUobmFtZSwgcGFyYW1zKX1gKTtcbiAgICAgICAgfVxuICAgICAgICBjb25zb2xlLmdyb3VwRW5kKCk7XG4gICAgICAgIC8qIHRzbGludDplbmFibGU6bm8tY29uc29sZSAqL1xuICAgIH1cbn1cbmZ1bmN0aW9uIGxvZ09wY29kZSh0eXBlLCBwYXJhbXMpIHtcbiAgICBpZiAoIWZhbHNlICYmIGZhbHNlKSB7XG4gICAgICAgIGxldCBvdXQgPSB0eXBlO1xuICAgICAgICBpZiAocGFyYW1zKSB7XG4gICAgICAgICAgICBsZXQgYXJncyA9IE9iamVjdC5rZXlzKHBhcmFtcykubWFwKHAgPT4gYCAke3B9PSR7anNvbihwYXJhbXNbcF0pfWApLmpvaW4oJycpO1xuICAgICAgICAgICAgb3V0ICs9IGFyZ3M7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGAoJHtvdXR9KWA7XG4gICAgfVxufVxuZnVuY3Rpb24ganNvbihwYXJhbSkge1xuICAgIGlmICh0eXBlb2YgcGFyYW0gPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgcmV0dXJuICc8ZnVuY3Rpb24+JztcbiAgICB9XG4gICAgbGV0IHN0cmluZztcbiAgICB0cnkge1xuICAgICAgICBzdHJpbmcgPSBKU09OLnN0cmluZ2lmeShwYXJhbSk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgICByZXR1cm4gJzxjYW5ub3QgZ2VuZXJhdGUgSlNPTj4nO1xuICAgIH1cbiAgICBpZiAoc3RyaW5nID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgcmV0dXJuICd1bmRlZmluZWQnO1xuICAgIH1cbiAgICBsZXQgZGVidWcgPSBKU09OLnBhcnNlKHN0cmluZyk7XG4gICAgaWYgKHR5cGVvZiBkZWJ1ZyA9PT0gJ29iamVjdCcgJiYgZGVidWcgIT09IG51bGwgJiYgZGVidWcuR2xpbW1lckRlYnVnICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgcmV0dXJuIGRlYnVnLkdsaW1tZXJEZWJ1ZztcbiAgICB9XG4gICAgcmV0dXJuIHN0cmluZztcbn1cbmZ1bmN0aW9uIGRlYnVnKGMsIG9wLCBvcDEsIG9wMiwgb3AzKSB7XG4gICAgaWYgKCFmYWxzZSAmJiBmYWxzZSkge1xuICAgICAgICBzd2l0Y2ggKG9wKSB7XG4gICAgICAgICAgICBjYXNlIDAgLyogQnVnICovOlxuICAgICAgICAgICAgICAgIHRocm93IHVucmVhY2hhYmxlKCk7XG4gICAgICAgICAgICBjYXNlIDEgLyogSGVscGVyICovOlxuICAgICAgICAgICAgICAgIHJldHVybiBbJ0hlbHBlcicsIHsgaGVscGVyOiBjLmdldEZ1bmN0aW9uKG9wMSkgfV07XG4gICAgICAgICAgICBjYXNlIDIgLyogRnVuY3Rpb24gKi86XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnRnVuY3Rpb24nLCB7IGZ1bmN0aW9uOiBjLmdldEZ1bmN0aW9uKG9wMSkgfV07XG4gICAgICAgICAgICBjYXNlIDQgLyogU2V0VmFyaWFibGUgKi86XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnU2V0VmFyaWFibGUnLCB7IHN5bWJvbDogb3AxIH1dO1xuICAgICAgICAgICAgY2FzZSA1IC8qIEdldFZhcmlhYmxlICovOlxuICAgICAgICAgICAgICAgIHJldHVybiBbJ0dldFZhcmlhYmxlJywgeyBzeW1ib2w6IG9wMSB9XTtcbiAgICAgICAgICAgIGNhc2UgNiAvKiBHZXRQcm9wZXJ0eSAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydHZXRQcm9wZXJ0eScsIHsga2V5OiBjLmdldFN0cmluZyhvcDEpIH1dO1xuICAgICAgICAgICAgY2FzZSA3IC8qIFB1c2hCbG9jayAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydQdXNoQmxvY2snLCB7IGJsb2NrOiBjLmdldEJsb2NrKG9wMSkgfV07XG4gICAgICAgICAgICBjYXNlIDggLyogR2V0QmxvY2sgKi86XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnR2V0QmxvY2snLCB7IHN5bWJvbDogb3AxIH1dO1xuICAgICAgICAgICAgY2FzZSA5IC8qIEhhc0Jsb2NrICovOlxuICAgICAgICAgICAgICAgIHJldHVybiBbJ0hhc0Jsb2NrJywgeyBibG9jazogb3AxIH1dO1xuICAgICAgICAgICAgY2FzZSAxMCAvKiBIYXNCbG9ja1BhcmFtcyAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydIYXNCbG9ja1BhcmFtcycsIHsgYmxvY2s6IG9wMSB9XTtcbiAgICAgICAgICAgIGNhc2UgMTEgLyogQ29uY2F0ICovOlxuICAgICAgICAgICAgICAgIHJldHVybiBbJ0NvbmNhdCcsIHsgc2l6ZTogb3AxIH1dO1xuICAgICAgICAgICAgY2FzZSAxMiAvKiBJbW1lZGlhdGUgKi86XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnSW1tZWRpYXRlJywgeyB2YWx1ZTogb3AxIH1dO1xuICAgICAgICAgICAgY2FzZSAxMyAvKiBDb25zdGFudCAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydDb25zdGFudCcsIHsgdmFsdWU6IGMuZ2V0T3RoZXIob3AxKSB9XTtcbiAgICAgICAgICAgIGNhc2UgMTQgLyogUHJpbWl0aXZlUmVmZXJlbmNlICovOlxuICAgICAgICAgICAgICAgIHJldHVybiBbJ1ByaW1pdGl2ZVJlZmVyZW5jZScsIHsgcHJpbWl0aXZlOiBvcDEgfV07XG4gICAgICAgICAgICBjYXNlIDE1IC8qIER1cCAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydEdXAnLCB7IHJlZ2lzdGVyOiBSZWdpc3RlcltvcDFdLCBvZmZzZXQ6IG9wMiB9XTtcbiAgICAgICAgICAgIGNhc2UgMTYgLyogUG9wICovOlxuICAgICAgICAgICAgICAgIHJldHVybiBbJ1BvcCcsIHsgY291bnQ6IG9wMSB9XTtcbiAgICAgICAgICAgIGNhc2UgMTcgLyogTG9hZCAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydMb2FkJywgeyByZWdpc3RlcjogUmVnaXN0ZXJbb3AxXSB9XTtcbiAgICAgICAgICAgIGNhc2UgMTggLyogRmV0Y2ggKi86XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnRmV0Y2gnLCB7IHJlZ2lzdGVyOiBSZWdpc3RlcltvcDFdIH1dO1xuICAgICAgICAgICAgLy8vIFBSRUxVREUgJiBFWElUXG4gICAgICAgICAgICBjYXNlIDE5IC8qIFJvb3RTY29wZSAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydSb290U2NvcGUnLCB7IHN5bWJvbHM6IG9wMSwgYmluZENhbGxlclNjb3BlOiAhIW9wMiB9XTtcbiAgICAgICAgICAgIGNhc2UgMjAgLyogQ2hpbGRTY29wZSAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydDaGlsZFNjb3BlJywge31dO1xuICAgICAgICAgICAgY2FzZSAyMSAvKiBQb3BTY29wZSAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydQb3BTY29wZScsIHt9XTtcbiAgICAgICAgICAgIGNhc2UgMjIgLyogUmV0dXJuICovOlxuICAgICAgICAgICAgICAgIHJldHVybiBbJ1JldHVybicsIHt9XTtcbiAgICAgICAgICAgIC8vLyBIVE1MXG4gICAgICAgICAgICBjYXNlIDIzIC8qIFRleHQgKi86XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnVGV4dCcsIHsgdGV4dDogYy5nZXRTdHJpbmcob3AxKSB9XTtcbiAgICAgICAgICAgIGNhc2UgMjQgLyogQ29tbWVudCAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydDb21tZW50JywgeyBjb21tZW50OiBjLmdldFN0cmluZyhvcDEpIH1dO1xuICAgICAgICAgICAgY2FzZSAyNSAvKiBEeW5hbWljQ29udGVudCAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydEeW5hbWljQ29udGVudCcsIHsgdmFsdWU6IGMuZ2V0T3RoZXIob3AxKSB9XTtcbiAgICAgICAgICAgIGNhc2UgMjYgLyogT3BlbkVsZW1lbnQgKi86XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnT3BlbkVsZW1lbnQnLCB7IHRhZzogYy5nZXRTdHJpbmcob3AxKSB9XTtcbiAgICAgICAgICAgIGNhc2UgMjcgLyogT3BlbkVsZW1lbnRXaXRoT3BlcmF0aW9ucyAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydPcGVuRWxlbWVudFdpdGhPcGVyYXRpb25zJywgeyB0YWc6IGMuZ2V0U3RyaW5nKG9wMSkgfV07XG4gICAgICAgICAgICBjYXNlIDI4IC8qIE9wZW5EeW5hbWljRWxlbWVudCAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydPcGVuRHluYW1pY0VsZW1lbnQnLCB7fV07XG4gICAgICAgICAgICBjYXNlIDI5IC8qIFN0YXRpY0F0dHIgKi86XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnU3RhdGljQXR0cicsIHsgbmFtZTogYy5nZXRTdHJpbmcob3AxKSwgdmFsdWU6IGMuZ2V0U3RyaW5nKG9wMiksIG5hbWVzcGFjZTogb3AzID8gYy5nZXRTdHJpbmcob3AzKSA6IG51bGwgfV07XG4gICAgICAgICAgICBjYXNlIDMwIC8qIER5bmFtaWNBdHRyICovOlxuICAgICAgICAgICAgICAgIHJldHVybiBbJ0R5bmFtaWNBdHRyJywgeyBuYW1lOiBjLmdldFN0cmluZyhvcDEpLCB0cnVzdGluZzogISFvcDIgfV07XG4gICAgICAgICAgICBjYXNlIDMxIC8qIER5bmFtaWNBdHRyTlMgKi86XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnRHluYW1pY0F0dHJOUycsIHsgbmFtZTogYy5nZXRTdHJpbmcob3AxKSwgbnM6IGMuZ2V0U3RyaW5nKG9wMiksIHRydXN0aW5nOiAhIW9wMiB9XTtcbiAgICAgICAgICAgIGNhc2UgMzIgLyogRmx1c2hFbGVtZW50ICovOlxuICAgICAgICAgICAgICAgIHJldHVybiBbJ0ZsdXNoRWxlbWVudCcsIHt9XTtcbiAgICAgICAgICAgIGNhc2UgMzMgLyogQ2xvc2VFbGVtZW50ICovOlxuICAgICAgICAgICAgICAgIHJldHVybiBbJ0Nsb3NlRWxlbWVudCcsIHt9XTtcbiAgICAgICAgICAgIC8vLyBNT0RJRklFUlxuICAgICAgICAgICAgY2FzZSAzNCAvKiBNb2RpZmllciAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydNb2RpZmllcicsIHt9XTtcbiAgICAgICAgICAgIC8vLyBXT1JNSE9MRVxuICAgICAgICAgICAgY2FzZSAzNSAvKiBQdXNoUmVtb3RlRWxlbWVudCAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydQdXNoUmVtb3RlRWxlbWVudCcsIHt9XTtcbiAgICAgICAgICAgIGNhc2UgMzYgLyogUG9wUmVtb3RlRWxlbWVudCAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydQb3BSZW1vdGVFbGVtZW50Jywge31dO1xuICAgICAgICAgICAgLy8vIERZTkFNSUMgU0NPUEVcbiAgICAgICAgICAgIGNhc2UgMzcgLyogQmluZER5bmFtaWNTY29wZSAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydCaW5kRHluYW1pY1Njb3BlJywge31dO1xuICAgICAgICAgICAgY2FzZSAzOCAvKiBQdXNoRHluYW1pY1Njb3BlICovOlxuICAgICAgICAgICAgICAgIHJldHVybiBbJ1B1c2hEeW5hbWljU2NvcGUnLCB7fV07XG4gICAgICAgICAgICBjYXNlIDM5IC8qIFBvcER5bmFtaWNTY29wZSAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydQb3BEeW5hbWljU2NvcGUnLCB7fV07XG4gICAgICAgICAgICAvLy8gVk1cbiAgICAgICAgICAgIGNhc2UgNDAgLyogQ29tcGlsZUR5bmFtaWNCbG9jayAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydDb21waWxlRHluYW1pY0Jsb2NrJywge31dO1xuICAgICAgICAgICAgY2FzZSA0MSAvKiBJbnZva2VTdGF0aWMgKi86XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnSW52b2tlU3RhdGljJywgeyBibG9jazogYy5nZXRCbG9jayhvcDEpIH1dO1xuICAgICAgICAgICAgY2FzZSA0MiAvKiBJbnZva2VEeW5hbWljICovOlxuICAgICAgICAgICAgICAgIHJldHVybiBbJ0ludm9rZUR5bmFtaWMnLCB7IGludm9rZXI6IGMuZ2V0T3RoZXIob3AxKSB9XTtcbiAgICAgICAgICAgIGNhc2UgNDMgLyogSnVtcCAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydKdW1wJywgeyB0bzogb3AxIH1dO1xuICAgICAgICAgICAgY2FzZSA0NCAvKiBKdW1wSWYgKi86XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnSnVtcElmJywgeyB0bzogb3AxIH1dO1xuICAgICAgICAgICAgY2FzZSA0NSAvKiBKdW1wVW5sZXNzICovOlxuICAgICAgICAgICAgICAgIHJldHVybiBbJ0p1bXBVbmxlc3MnLCB7IHRvOiBvcDEgfV07XG4gICAgICAgICAgICBjYXNlIDQ2IC8qIFB1c2hGcmFtZSAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydQdXNoRnJhbWUnLCB7fV07XG4gICAgICAgICAgICBjYXNlIDQ3IC8qIFBvcEZyYW1lICovOlxuICAgICAgICAgICAgICAgIHJldHVybiBbJ1BvcEZyYW1lJywge31dO1xuICAgICAgICAgICAgY2FzZSA0OCAvKiBFbnRlciAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydFbnRlcicsIHsgYXJnczogb3AxIH1dO1xuICAgICAgICAgICAgY2FzZSA0OSAvKiBFeGl0ICovOlxuICAgICAgICAgICAgICAgIHJldHVybiBbJ0V4aXQnLCB7fV07XG4gICAgICAgICAgICBjYXNlIDUwIC8qIFRlc3QgKi86XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnVG9Cb29sZWFuJywge31dO1xuICAgICAgICAgICAgLy8vIExJU1RTXG4gICAgICAgICAgICBjYXNlIDUxIC8qIEVudGVyTGlzdCAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydFbnRlckxpc3QnLCB7IHN0YXJ0OiBvcDEgfV07XG4gICAgICAgICAgICBjYXNlIDUyIC8qIEV4aXRMaXN0ICovOlxuICAgICAgICAgICAgICAgIHJldHVybiBbJ0V4aXRMaXN0Jywge31dO1xuICAgICAgICAgICAgY2FzZSA1MyAvKiBQdXRJdGVyYXRvciAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydQdXRJdGVyYXRvcicsIHt9XTtcbiAgICAgICAgICAgIGNhc2UgNTQgLyogSXRlcmF0ZSAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydJdGVyYXRlJywgeyBlbmQ6IG9wMSB9XTtcbiAgICAgICAgICAgIC8vLyBDT01QT05FTlRTXG4gICAgICAgICAgICBjYXNlIDU1IC8qIFB1c2hDb21wb25lbnRNYW5hZ2VyICovOlxuICAgICAgICAgICAgICAgIHJldHVybiBbJ1B1c2hDb21wb25lbnRNYW5hZ2VyJywgeyBkZWZpbml0aW9uOiBjLmdldE90aGVyKG9wMSkgfV07XG4gICAgICAgICAgICBjYXNlIDU2IC8qIFB1c2hEeW5hbWljQ29tcG9uZW50TWFuYWdlciAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydQdXNoRHluYW1pY0NvbXBvbmVudE1hbmFnZXInLCB7fV07XG4gICAgICAgICAgICBjYXNlIDU3IC8qIEluaXRpYWxpemVDb21wb25lbnRTdGF0ZSAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydJbml0aWFsaXplQ29tcG9uZW50U3RhdGUnLCB7fV07XG4gICAgICAgICAgICBjYXNlIDU4IC8qIFB1c2hBcmdzICovOlxuICAgICAgICAgICAgICAgIHJldHVybiBbJ1B1c2hBcmdzJywgeyBzeW50aGV0aWM6ICEhb3AxIH1dO1xuICAgICAgICAgICAgY2FzZSA1OSAvKiBQcmVwYXJlQXJncyAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydQcmVwYXJlQXJncycsIHsgc3RhdGU6IFJlZ2lzdGVyW29wMV0gfV07XG4gICAgICAgICAgICBjYXNlIDYwIC8qIENyZWF0ZUNvbXBvbmVudCAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydDcmVhdGVDb21wb25lbnQnLCB7IGZsYWdzOiBvcDEsIHN0YXRlOiBSZWdpc3RlcltvcDJdIH1dO1xuICAgICAgICAgICAgY2FzZSA2MSAvKiBSZWdpc3RlckNvbXBvbmVudERlc3RydWN0b3IgKi86XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnUmVnaXN0ZXJDb21wb25lbnREZXN0cnVjdG9yJywge31dO1xuICAgICAgICAgICAgY2FzZSA2MiAvKiBQdXNoQ29tcG9uZW50T3BlcmF0aW9ucyAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydQdXNoQ29tcG9uZW50T3BlcmF0aW9ucycsIHt9XTtcbiAgICAgICAgICAgIGNhc2UgNjMgLyogR2V0Q29tcG9uZW50U2VsZiAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydHZXRDb21wb25lbnRTZWxmJywgeyBzdGF0ZTogUmVnaXN0ZXJbb3AxXSB9XTtcbiAgICAgICAgICAgIGNhc2UgNjQgLyogR2V0Q29tcG9uZW50TGF5b3V0ICovOlxuICAgICAgICAgICAgICAgIHJldHVybiBbJ0dldENvbXBvbmVudExheW91dCcsIHsgc3RhdGU6IFJlZ2lzdGVyW29wMV0gfV07XG4gICAgICAgICAgICBjYXNlIDY1IC8qIEJlZ2luQ29tcG9uZW50VHJhbnNhY3Rpb24gKi86XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnQmVnaW5Db21wb25lbnRUcmFuc2FjdGlvbicsIHt9XTtcbiAgICAgICAgICAgIGNhc2UgNjYgLyogQ29tbWl0Q29tcG9uZW50VHJhbnNhY3Rpb24gKi86XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnQ29tbWl0Q29tcG9uZW50VHJhbnNhY3Rpb24nLCB7fV07XG4gICAgICAgICAgICBjYXNlIDY3IC8qIERpZENyZWF0ZUVsZW1lbnQgKi86XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnRGlkQ3JlYXRlRWxlbWVudCcsIHsgc3RhdGU6IFJlZ2lzdGVyW29wMV0gfV07XG4gICAgICAgICAgICBjYXNlIDY4IC8qIERpZFJlbmRlckxheW91dCAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydEaWRSZW5kZXJMYXlvdXQnLCB7fV07XG4gICAgICAgICAgICAvLy8gUEFSVElBTFNcbiAgICAgICAgICAgIGNhc2UgNjkgLyogR2V0UGFydGlhbFRlbXBsYXRlICovOlxuICAgICAgICAgICAgICAgIHJldHVybiBbJ0NvbXBpbGVQYXJ0aWFsJywge31dO1xuICAgICAgICAgICAgY2FzZSA3MCAvKiBSZXNvbHZlTWF5YmVMb2NhbCAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydSZXNvbHZlTWF5YmVMb2NhbCcsIHsgbmFtZTogYy5nZXRTdHJpbmcob3AxKSB9XTtcbiAgICAgICAgICAgIC8vLyBERUJVR0dFUlxuICAgICAgICAgICAgY2FzZSA3MSAvKiBEZWJ1Z2dlciAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydEZWJ1Z2dlcicsIHsgc3ltYm9sczogYy5nZXRPdGhlcihvcDEpLCBldmFsSW5mbzogYy5nZXRBcnJheShvcDIpIH1dO1xuICAgICAgICAgICAgLy8vIFNUQVRFTUVOVFNcbiAgICAgICAgICAgIGNhc2UgNzIgLyogU2l6ZSAqLzpcbiAgICAgICAgICAgICAgICB0aHJvdyB1bnJlYWNoYWJsZSgpO1xuICAgICAgICB9XG4gICAgICAgIHRocm93IHVucmVhY2hhYmxlKCk7XG4gICAgfVxuICAgIHJldHVybiBbJycsIHt9XTtcbn1cbmV4cG9ydCBjbGFzcyBBcHBlbmRPcGNvZGVzIHtcbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgdGhpcy5ldmFsdWF0ZU9wY29kZSA9IGZpbGxOdWxscyg3MiAvKiBTaXplICovKS5zbGljZSgpO1xuICAgIH1cbiAgICBhZGQobmFtZSwgZXZhbHVhdGUpIHtcbiAgICAgICAgdGhpcy5ldmFsdWF0ZU9wY29kZVtuYW1lXSA9IGV2YWx1YXRlO1xuICAgIH1cbiAgICBldmFsdWF0ZSh2bSwgb3Bjb2RlLCB0eXBlKSB7XG4gICAgICAgIGxldCBmdW5jID0gdGhpcy5ldmFsdWF0ZU9wY29kZVt0eXBlXTtcbiAgICAgICAgaWYgKCFmYWxzZSAmJiBmYWxzZSkge1xuICAgICAgICAgICAgLyogdHNsaW50OmRpc2FibGUgKi9cbiAgICAgICAgICAgIGxldCBbbmFtZSwgcGFyYW1zXSA9IGRlYnVnKHZtLmNvbnN0YW50cywgb3Bjb2RlLnR5cGUsIG9wY29kZS5vcDEsIG9wY29kZS5vcDIsIG9wY29kZS5vcDMpO1xuICAgICAgICAgICAgY29uc29sZS5sb2coYCR7dm1bJ3BjJ10gLSA0fS4gJHtsb2dPcGNvZGUobmFtZSwgcGFyYW1zKX1gKTtcbiAgICAgICAgICAgIC8vIGNvbnNvbGUubG9nKC4uLmRlYnVnKHZtLmNvbnN0YW50cywgdHlwZSwgb3Bjb2RlLm9wMSwgb3Bjb2RlLm9wMiwgb3Bjb2RlLm9wMykpO1xuICAgICAgICAgICAgLyogdHNsaW50OmVuYWJsZSAqL1xuICAgICAgICB9XG4gICAgICAgIGZ1bmModm0sIG9wY29kZSk7XG4gICAgICAgIGlmICghZmFsc2UgJiYgZmFsc2UpIHtcbiAgICAgICAgICAgIC8qIHRzbGludDpkaXNhYmxlICovXG4gICAgICAgICAgICBjb25zb2xlLmxvZygnJWMgLT4gcGM6ICVkLCByYTogJWQsIGZwOiAlZCwgc3A6ICVkLCBzMDogJU8sIHMxOiAlTywgdDA6ICVPLCB0MTogJU8nLCAnY29sb3I6IG9yYW5nZScsIHZtWydwYyddLCB2bVsncmEnXSwgdm1bJ2ZwJ10sIHZtWydzcCddLCB2bVsnczAnXSwgdm1bJ3MxJ10sIHZtWyd0MCddLCB2bVsndDEnXSk7XG4gICAgICAgICAgICBjb25zb2xlLmxvZygnJWMgLT4gZXZhbCBzdGFjaycsICdjb2xvcjogcmVkJywgdm0uc3RhY2sudG9BcnJheSgpKTtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKCclYyAtPiBzY29wZScsICdjb2xvcjogZ3JlZW4nLCB2bS5zY29wZSgpWydzbG90cyddLm1hcChzID0+IHMgJiYgc1sndmFsdWUnXSA/IHNbJ3ZhbHVlJ10oKSA6IHMpKTtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKCclYyAtPiBlbGVtZW50cycsICdjb2xvcjogYmx1ZScsIHZtLmVsZW1lbnRzKClbJ2VsZW1lbnRTdGFjayddLnRvQXJyYXkoKSk7XG4gICAgICAgICAgICAvKiB0c2xpbnQ6ZW5hYmxlICovXG4gICAgICAgIH1cbiAgICB9XG59XG5leHBvcnQgY29uc3QgQVBQRU5EX09QQ09ERVMgPSBuZXcgQXBwZW5kT3Bjb2RlcygpO1xuZXhwb3J0IGNsYXNzIEFic3RyYWN0T3Bjb2RlIHtcbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgaW5pdGlhbGl6ZUd1aWQodGhpcyk7XG4gICAgfVxuICAgIHRvSlNPTigpIHtcbiAgICAgICAgcmV0dXJuIHsgZ3VpZDogdGhpcy5fZ3VpZCwgdHlwZTogdGhpcy50eXBlIH07XG4gICAgfVxufVxuZXhwb3J0IGNsYXNzIFVwZGF0aW5nT3Bjb2RlIGV4dGVuZHMgQWJzdHJhY3RPcGNvZGUge1xuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICBzdXBlciguLi5hcmd1bWVudHMpO1xuICAgICAgICB0aGlzLm5leHQgPSBudWxsO1xuICAgICAgICB0aGlzLnByZXYgPSBudWxsO1xuICAgIH1cbn1cbmV4cG9ydCBmdW5jdGlvbiBpbnNwZWN0KG9wY29kZXMpIHtcbiAgICBsZXQgYnVmZmVyID0gW107XG4gICAgb3Bjb2Rlcy5mb3JFYWNoKChvcGNvZGUsIGkpID0+IHtcbiAgICAgICAgX2luc3BlY3Qob3Bjb2RlLnRvSlNPTigpLCBidWZmZXIsIDAsIGkpO1xuICAgIH0pO1xuICAgIHJldHVybiBidWZmZXIuam9pbignJyk7XG59XG5mdW5jdGlvbiBfaW5zcGVjdChvcGNvZGUsIGJ1ZmZlciwgbGV2ZWwsIGluZGV4KSB7XG4gICAgbGV0IGluZGVudGF0aW9uID0gW107XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBsZXZlbDsgaSsrKSB7XG4gICAgICAgIGluZGVudGF0aW9uLnB1c2goJyAgJyk7XG4gICAgfVxuICAgIGJ1ZmZlci5wdXNoKC4uLmluZGVudGF0aW9uKTtcbiAgICBidWZmZXIucHVzaChgJHtpbmRleH0uICR7b3Bjb2RlLnR5cGV9YCk7XG4gICAgaWYgKG9wY29kZS5hcmdzIHx8IG9wY29kZS5kZXRhaWxzKSB7XG4gICAgICAgIGJ1ZmZlci5wdXNoKCcoJyk7XG4gICAgICAgIGlmIChvcGNvZGUuYXJncykge1xuICAgICAgICAgICAgYnVmZmVyLnB1c2gob3Bjb2RlLmFyZ3Muam9pbignLCAnKSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKG9wY29kZS5kZXRhaWxzKSB7XG4gICAgICAgICAgICBsZXQga2V5cyA9IE9iamVjdC5rZXlzKG9wY29kZS5kZXRhaWxzKTtcbiAgICAgICAgICAgIGlmIChrZXlzLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgIGlmIChvcGNvZGUuYXJncyAmJiBvcGNvZGUuYXJncy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICAgICAgYnVmZmVyLnB1c2goJywgJyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGJ1ZmZlci5wdXNoKGtleXMubWFwKGtleSA9PiBgJHtrZXl9PSR7b3Bjb2RlLmRldGFpbHMgJiYgb3Bjb2RlLmRldGFpbHNba2V5XX1gKS5qb2luKCcsICcpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBidWZmZXIucHVzaCgnKScpO1xuICAgIH1cbiAgICBidWZmZXIucHVzaCgnXFxuJyk7XG4gICAgaWYgKG9wY29kZS5jaGlsZHJlbiAmJiBvcGNvZGUuY2hpbGRyZW4ubGVuZ3RoKSB7XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgb3Bjb2RlLmNoaWxkcmVuLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBfaW5zcGVjdChvcGNvZGUuY2hpbGRyZW5baV0sIGJ1ZmZlciwgbGV2ZWwgKyAxLCBpKTtcbiAgICAgICAgfVxuICAgIH1cbn0iXX0=
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9vcGNvZGVzLmpzIl0sIm5hbWVzIjpbImluaXRpYWxpemVHdWlkIiwiZmlsbE51bGxzIiwidW5yZWFjaGFibGUiLCJSZWdpc3RlciIsImRlYnVnU2xpY2UiLCJlbnYiLCJzdGFydCIsImVuZCIsInByb2dyYW0iLCJjb25zdGFudHMiLCJjb25zb2xlIiwiZ3JvdXAiLCJpIiwib3Bjb2RlIiwidHlwZSIsIm9wMSIsIm9wMiIsIm9wMyIsImRlYnVnIiwibmFtZSIsInBhcmFtcyIsImxvZyIsImxvZ09wY29kZSIsImdyb3VwRW5kIiwib3V0IiwiYXJncyIsIk9iamVjdCIsImtleXMiLCJtYXAiLCJwIiwianNvbiIsImpvaW4iLCJwYXJhbSIsInN0cmluZyIsIkpTT04iLCJzdHJpbmdpZnkiLCJlIiwidW5kZWZpbmVkIiwicGFyc2UiLCJHbGltbWVyRGVidWciLCJjIiwib3AiLCJoZWxwZXIiLCJnZXRGdW5jdGlvbiIsImZ1bmN0aW9uIiwic3ltYm9sIiwia2V5IiwiZ2V0U3RyaW5nIiwiYmxvY2siLCJnZXRCbG9jayIsInNpemUiLCJ2YWx1ZSIsImdldE90aGVyIiwicHJpbWl0aXZlIiwicmVnaXN0ZXIiLCJvZmZzZXQiLCJjb3VudCIsInN5bWJvbHMiLCJiaW5kQ2FsbGVyU2NvcGUiLCJ0ZXh0IiwiY29tbWVudCIsInRhZyIsIm5hbWVzcGFjZSIsInRydXN0aW5nIiwibnMiLCJpbnZva2VyIiwidG8iLCJkZWZpbml0aW9uIiwic3ludGhldGljIiwic3RhdGUiLCJmbGFncyIsImV2YWxJbmZvIiwiZ2V0QXJyYXkiLCJBcHBlbmRPcGNvZGVzIiwiZXZhbHVhdGVPcGNvZGUiLCJzbGljZSIsImFkZCIsImV2YWx1YXRlIiwidm0iLCJmdW5jIiwic3RhY2siLCJ0b0FycmF5Iiwic2NvcGUiLCJzIiwiZWxlbWVudHMiLCJBUFBFTkRfT1BDT0RFUyIsIkFic3RyYWN0T3Bjb2RlIiwidG9KU09OIiwiZ3VpZCIsIl9ndWlkIiwiVXBkYXRpbmdPcGNvZGUiLCJhcmd1bWVudHMiLCJuZXh0IiwicHJldiIsImluc3BlY3QiLCJvcGNvZGVzIiwiYnVmZmVyIiwiZm9yRWFjaCIsIl9pbnNwZWN0IiwibGV2ZWwiLCJpbmRleCIsImluZGVudGF0aW9uIiwicHVzaCIsImRldGFpbHMiLCJsZW5ndGgiLCJjaGlsZHJlbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7O1FBeUJPLEFBQVM7UUErUFQsQUFBUzs7QUF4UmhCLEFBQVMsQUFBZ0IsQUFBVyxBQUFtQjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUV2RCxBQU1BOzs7Ozs7QUFBTyxJQUFBLEFBQUk7QUFDWCxDQUFDLFVBQUEsQUFBVSxVQUFVLEFBQ2pCO0FBQ0E7YUFBUyxTQUFBLEFBQVMsUUFBbEIsQUFBMEIsS0FBMUIsQUFBK0IsQUFDL0I7QUFDQTthQUFTLFNBQUEsQUFBUyxRQUFsQixBQUEwQixLQUExQixBQUErQixBQUMvQjtBQUNBO2FBQVMsU0FBQSxBQUFTLFFBQWxCLEFBQTBCLEtBQTFCLEFBQStCLEFBQy9CO0FBQ0E7YUFBUyxTQUFBLEFBQVMsUUFBbEIsQUFBMEIsS0FBMUIsQUFBK0IsQUFDL0I7QUFDQTthQUFTLFNBQUEsQUFBUyxRQUFsQixBQUEwQixLQUExQixBQUErQixBQUMvQjthQUFTLFNBQUEsQUFBUyxRQUFsQixBQUEwQixLQUExQixBQUErQixBQUMvQjtBQUNBO2FBQVMsU0FBQSxBQUFTLFFBQWxCLEFBQTBCLEtBQTFCLEFBQStCLEFBQy9CO2FBQVMsU0FBQSxBQUFTLFFBQWxCLEFBQTBCLEtBQTFCLEFBQStCLEFBQ2xDO0FBZkQsR0FlRyxnQ0FBYSxXQWZoQixBQWVHLEFBQXdCLEFBQzNCO0FBQU8sb0JBQUEsQUFBb0IsS0FBcEIsQUFBeUIsT0FBekIsQUFBZ0MsS0FBSyxBQUN4QztRQUFJLENBQUEsQUFBQyxTQUFMLEFBQWMsT0FBTyxBQUNqQjtBQURpQjtZQUFBLEFBRVgsVUFGVyxBQUVZLElBRlosQUFFWDtZQUZXLEFBRUYsWUFGRSxBQUVZLElBRlosQUFFRixBQUNmO0FBQ0E7O1lBQUksT0FB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S0FBUCxBQUFZLEFBQ2Y7QUFDRDtXQUFBLEFBQU8sS0FBUCxBQUFZLEFBQ1o7UUFBSSxPQUFBLEFBQU8sWUFBWSxPQUFBLEFBQU8sU0FBOUIsQUFBdUMsUUFBUSxBQUMzQzthQUFLLElBQUksS0FBVCxBQUFhLEdBQUcsS0FBSSxPQUFBLEFBQU8sU0FBM0IsQUFBb0MsUUFBcEMsQUFBNEMsTUFBSyxBQUM3QztxQkFBUyxPQUFBLEFBQU8sU0FBaEIsQUFBUyxBQUFnQixLQUF6QixBQUE2QixRQUFRLFFBQXJDLEFBQTZDLEdBQTdDLEFBQWdELEFBQ25EO0FBQ0o7QUFDSiIsImZpbGUiOiJsaWIvb3Bjb2Rlcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGluaXRpYWxpemVHdWlkLCBmaWxsTnVsbHMsIHVucmVhY2hhYmxlIH0gZnJvbSAnQGdsaW1tZXIvdXRpbCc7XG5cbi8qKlxuICogUmVnaXN0ZXJzXG4gKlxuICogRm9yIHRoZSBtb3N0IHBhcnQsIHRoZXNlIGZvbGxvd3MgTUlQUyBuYW1pbmcgY29udmVudGlvbnMsIGhvd2V2ZXIgdGhlXG4gKiByZWdpc3RlciBudW1iZXJzIGFyZSBkaWZmZXJlbnQuXG4gKi9cbmV4cG9ydCB2YXIgUmVnaXN0ZXI7XG4oZnVuY3Rpb24gKFJlZ2lzdGVyKSB7XG4gICAgLy8gJDAgb3IgJHBjIChwcm9ncmFtIGNvdW50ZXIpOiBwb2ludGVyIGludG8gYHByb2dyYW1gIGZvciB0aGUgbmV4dCBpbnN0dXJjdGlvbjsgLTEgbWVhbnMgZXhpdFxuICAgIFJlZ2lzdGVyW1JlZ2lzdGVyW1wicGNcIl0gPSAwXSA9IFwicGNcIjtcbiAgICAvLyAkMSBvciAkcmEgKHJldHVybiBhZGRyZXNzKTogcG9pbnRlciBpbnRvIGBwcm9ncmFtYCBmb3IgdGhlIHJldHVyblxuICAgIFJlZ2lzdGVyW1JlZ2lzdGVyW1wicmFcIl0gPSAxXSA9IFwicmFcIjtcbiAgICAvLyAkMiBvciAkZnAgKGZyYW1lIHBvaW50ZXIpOiBwb2ludGVyIGludG8gdGhlIGBldmFsU3RhY2tgIGZvciB0aGUgYmFzZSBvZiB0aGUgc3RhY2tcbiAgICBSZWdpc3RlcltSZWdpc3RlcltcImZwXCJdID0gMl0gPSBcImZwXCI7XG4gICAgLy8gJDMgb3IgJHNwIChzdGFjayBwb2ludGVyKTogcG9pbnRlciBpbnRvIHRoZSBgZXZhbFN0YWNrYCBmb3IgdGhlIHRvcCBvZiB0aGUgc3RhY2tcbiAgICBSZWdpc3RlcltSZWdpc3RlcltcInNwXCJdID0gM10gPSBcInNwXCI7XG4gICAgLy8gJDQtJDUgb3IgJHMwLSRzMSAoc2F2ZWQpOiBjYWxsZWUgc2F2ZWQgZ2VuZXJhbC1wdXJwb3NlIHJlZ2lzdGVyc1xuICAgIFJlZ2lzdGVyW1JlZ2lzdGVyW1wiczBcIl0gPSA0XSA9IFwiczBcIjtcbiAgICBSZWdpc3RlcltSZWdpc3RlcltcInMxXCJdID0gNV0gPSBcInMxXCI7XG4gICAgLy8gJDYtJDcgb3IgJHQwLSR0MSAodGVtcG9yYXJpZXMpOiBjYWxsZXIgc2F2ZWQgZ2VuZXJhbC1wdXJwb3NlIHJlZ2lzdGVyc1xuICAgIFJlZ2lzdGVyW1JlZ2lzdGVyW1widDBcIl0gPSA2XSA9IFwidDBcIjtcbiAgICBSZWdpc3RlcltSZWdpc3RlcltcInQxXCJdID0gN10gPSBcInQxXCI7XG59KShSZWdpc3RlciB8fCAoUmVnaXN0ZXIgPSB7fSkpO1xuZXhwb3J0IGZ1bmN0aW9uIGRlYnVnU2xpY2UoZW52LCBzdGFydCwgZW5kKSB7XG4gICAgaWYgKCFmYWxzZSAmJiBmYWxzZSkge1xuICAgICAgICAvKiB0c2xpbnQ6ZGlzYWJsZTpuby1jb25zb2xlICovXG4gICAgICAgIGxldCB7IHByb2dyYW0sIGNvbnN0YW50cyB9ID0gZW52O1xuICAgICAgICAvLyBjb25zb2xlIGlzIG5vdCBhdmFpbGFibGUgaW4gSUU5XG4gICAgICAgIGlmICh0eXBlb2YgY29uc29sZSA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICAvLyBJRTEwIGRvZXMgbm90IGhhdmUgYGNvbnNvbGUuZ3JvdXBgXG4gICAgICAgIGlmICh0eXBlb2YgY29uc29sZS5ncm91cCAhPT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGNvbnNvbGUuZ3JvdXAoYCVjJHtzdGFydH06JHtlbmR9YCwgJ2NvbG9yOiAjOTk5Jyk7XG4gICAgICAgIGZvciAobGV0IGkgPSBzdGFydDsgaSA8PSBlbmQ7IGkgKz0gNCkge1xuICAgICAgICAgICAgbGV0IHsgdHlwZSwgb3AxLCBvcDIsIG9wMyB9ID0gcHJvZ3JhbS5vcGNvZGUoaSk7XG4gICAgICAgICAgICBsZXQgW25hbWUsIHBhcmFtc10gPSBkZWJ1Zyhjb25zdGFudHMsIHR5cGUsIG9wMSwgb3AyLCBvcDMpO1xuICAgICAgICAgICAgY29uc29sZS5sb2coYCR7aX0uICR7bG9nT3Bjb2RlKG5hbWUsIHBhcmFtcyl9YCk7XG4gICAgICAgIH1cbiAgICAgICAgY29uc29sZS5ncm91cEVuZCgpO1xuICAgICAgICAvKiB0c2xpbnQ6ZW5hYmxlOm5vLWNvbnNvbGUgKi9cbiAgICB9XG59XG5mdW5jdGlvbiBsb2dPcGNvZGUodHlwZSwgcGFyYW1zKSB7XG4gICAgaWYgKCFmYWxzZSAmJiBmYWxzZSkge1xuICAgICAgICBsZXQgb3V0ID0gdHlwZTtcbiAgICAgICAgaWYgKHBhcmFtcykge1xuICAgICAgICAgICAgbGV0IGFyZ3MgPSBPYmplY3Qua2V5cyhwYXJhbXMpLm1hcChwID0+IGAgJHtwfT0ke2pzb24ocGFyYW1zW3BdKX1gKS5qb2luKCcnKTtcbiAgICAgICAgICAgIG91dCArPSBhcmdzO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBgKCR7b3V0fSlgO1xuICAgIH1cbn1cbmZ1bmN0aW9uIGpzb24ocGFyYW0pIHtcbiAgICBpZiAodHlwZW9mIHBhcmFtID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIHJldHVybiAnPGZ1bmN0aW9uPic7XG4gICAgfVxuICAgIGxldCBzdHJpbmc7XG4gICAgdHJ5IHtcbiAgICAgICAgc3RyaW5nID0gSlNPTi5zdHJpbmdpZnkocGFyYW0pO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgcmV0dXJuICc8Y2Fubm90IGdlbmVyYXRlIEpTT04+JztcbiAgICB9XG4gICAgaWYgKHN0cmluZyA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHJldHVybiAndW5kZWZpbmVkJztcbiAgICB9XG4gICAgbGV0IGRlYnVnID0gSlNPTi5wYXJzZShzdHJpbmcpO1xuICAgIGlmICh0eXBlb2YgZGVidWcgPT09ICdvYmplY3QnICYmIGRlYnVnICE9PSBudWxsICYmIGRlYnVnLkdsaW1tZXJEZWJ1ZyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHJldHVybiBkZWJ1Zy5HbGltbWVyRGVidWc7XG4gICAgfVxuICAgIHJldHVybiBzdHJpbmc7XG59XG5mdW5jdGlvbiBkZWJ1ZyhjLCBvcCwgb3AxLCBvcDIsIG9wMykge1xuICAgIGlmICghZmFsc2UgJiYgZmFsc2UpIHtcbiAgICAgICAgc3dpdGNoIChvcCkge1xuICAgICAgICAgICAgY2FzZSAwIC8qIEJ1ZyAqLzpcbiAgICAgICAgICAgICAgICB0aHJvdyB1bnJlYWNoYWJsZSgpO1xuICAgICAgICAgICAgY2FzZSAxIC8qIEhlbHBlciAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydIZWxwZXInLCB7IGhlbHBlcjogYy5nZXRGdW5jdGlvbihvcDEpIH1dO1xuICAgICAgICAgICAgY2FzZSAyIC8qIEZ1bmN0aW9uICovOlxuICAgICAgICAgICAgICAgIHJldHVybiBbJ0Z1bmN0aW9uJywgeyBmdW5jdGlvbjogYy5nZXRGdW5jdGlvbihvcDEpIH1dO1xuICAgICAgICAgICAgY2FzZSA0IC8qIFNldFZhcmlhYmxlICovOlxuICAgICAgICAgICAgICAgIHJldHVybiBbJ1NldFZhcmlhYmxlJywgeyBzeW1ib2w6IG9wMSB9XTtcbiAgICAgICAgICAgIGNhc2UgNSAvKiBHZXRWYXJpYWJsZSAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydHZXRWYXJpYWJsZScsIHsgc3ltYm9sOiBvcDEgfV07XG4gICAgICAgICAgICBjYXNlIDYgLyogR2V0UHJvcGVydHkgKi86XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnR2V0UHJvcGVydHknLCB7IGtleTogYy5nZXRTdHJpbmcob3AxKSB9XTtcbiAgICAgICAgICAgIGNhc2UgNyAvKiBQdXNoQmxvY2sgKi86XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnUHVzaEJsb2NrJywgeyBibG9jazogYy5nZXRCbG9jayhvcDEpIH1dO1xuICAgICAgICAgICAgY2FzZSA4IC8qIEdldEJsb2NrICovOlxuICAgICAgICAgICAgICAgIHJldHVybiBbJ0dldEJsb2NrJywgeyBzeW1ib2w6IG9wMSB9XTtcbiAgICAgICAgICAgIGNhc2UgOSAvKiBIYXNCbG9jayAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydIYXNCbG9jaycsIHsgYmxvY2s6IG9wMSB9XTtcbiAgICAgICAgICAgIGNhc2UgMTAgLyogSGFzQmxvY2tQYXJhbXMgKi86XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnSGFzQmxvY2tQYXJhbXMnLCB7IGJsb2NrOiBvcDEgfV07XG4gICAgICAgICAgICBjYXNlIDExIC8qIENvbmNhdCAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydDb25jYXQnLCB7IHNpemU6IG9wMSB9XTtcbiAgICAgICAgICAgIGNhc2UgMTIgLyogSW1tZWRpYXRlICovOlxuICAgICAgICAgICAgICAgIHJldHVybiBbJ0ltbWVkaWF0ZScsIHsgdmFsdWU6IG9wMSB9XTtcbiAgICAgICAgICAgIGNhc2UgMTMgLyogQ29uc3RhbnQgKi86XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnQ29uc3RhbnQnLCB7IHZhbHVlOiBjLmdldE90aGVyKG9wMSkgfV07XG4gICAgICAgICAgICBjYXNlIDE0IC8qIFByaW1pdGl2ZVJlZmVyZW5jZSAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydQcmltaXRpdmVSZWZlcmVuY2UnLCB7IHByaW1pdGl2ZTogb3AxIH1dO1xuICAgICAgICAgICAgY2FzZSAxNSAvKiBEdXAgKi86XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnRHVwJywgeyByZWdpc3RlcjogUmVnaXN0ZXJbb3AxXSwgb2Zmc2V0OiBvcDIgfV07XG4gICAgICAgICAgICBjYXNlIDE2IC8qIFBvcCAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydQb3AnLCB7IGNvdW50OiBvcDEgfV07XG4gICAgICAgICAgICBjYXNlIDE3IC8qIExvYWQgKi86XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnTG9hZCcsIHsgcmVnaXN0ZXI6IFJlZ2lzdGVyW29wMV0gfV07XG4gICAgICAgICAgICBjYXNlIDE4IC8qIEZldGNoICovOlxuICAgICAgICAgICAgICAgIHJldHVybiBbJ0ZldGNoJywgeyByZWdpc3RlcjogUmVnaXN0ZXJbb3AxXSB9XTtcbiAgICAgICAgICAgIC8vLyBQUkVMVURFICYgRVhJVFxuICAgICAgICAgICAgY2FzZSAxOSAvKiBSb290U2NvcGUgKi86XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnUm9vdFNjb3BlJywgeyBzeW1ib2xzOiBvcDEsIGJpbmRDYWxsZXJTY29wZTogISFvcDIgfV07XG4gICAgICAgICAgICBjYXNlIDIwIC8qIENoaWxkU2NvcGUgKi86XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnQ2hpbGRTY29wZScsIHt9XTtcbiAgICAgICAgICAgIGNhc2UgMjEgLyogUG9wU2NvcGUgKi86XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnUG9wU2NvcGUnLCB7fV07XG4gICAgICAgICAgICBjYXNlIDIyIC8qIFJldHVybiAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydSZXR1cm4nLCB7fV07XG4gICAgICAgICAgICAvLy8gSFRNTFxuICAgICAgICAgICAgY2FzZSAyMyAvKiBUZXh0ICovOlxuICAgICAgICAgICAgICAgIHJldHVybiBbJ1RleHQnLCB7IHRleHQ6IGMuZ2V0U3RyaW5nKG9wMSkgfV07XG4gICAgICAgICAgICBjYXNlIDI0IC8qIENvbW1lbnQgKi86XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnQ29tbWVudCcsIHsgY29tbWVudDogYy5nZXRTdHJpbmcob3AxKSB9XTtcbiAgICAgICAgICAgIGNhc2UgMjUgLyogRHluYW1pY0NvbnRlbnQgKi86XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnRHluYW1pY0NvbnRlbnQnLCB7IHZhbHVlOiBjLmdldE90aGVyKG9wMSkgfV07XG4gICAgICAgICAgICBjYXNlIDI2IC8qIE9wZW5FbGVtZW50ICovOlxuICAgICAgICAgICAgICAgIHJldHVybiBbJ09wZW5FbGVtZW50JywgeyB0YWc6IGMuZ2V0U3RyaW5nKG9wMSkgfV07XG4gICAgICAgICAgICBjYXNlIDI3IC8qIE9wZW5FbGVtZW50V2l0aE9wZXJhdGlvbnMgKi86XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnT3BlbkVsZW1lbnRXaXRoT3BlcmF0aW9ucycsIHsgdGFnOiBjLmdldFN0cmluZyhvcDEpIH1dO1xuICAgICAgICAgICAgY2FzZSAyOCAvKiBPcGVuRHluYW1pY0VsZW1lbnQgKi86XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnT3BlbkR5bmFtaWNFbGVtZW50Jywge31dO1xuICAgICAgICAgICAgY2FzZSAyOSAvKiBTdGF0aWNBdHRyICovOlxuICAgICAgICAgICAgICAgIHJldHVybiBbJ1N0YXRpY0F0dHInLCB7IG5hbWU6IGMuZ2V0U3RyaW5nKG9wMSksIHZhbHVlOiBjLmdldFN0cmluZyhvcDIpLCBuYW1lc3BhY2U6IG9wMyA/IGMuZ2V0U3RyaW5nKG9wMykgOiBudWxsIH1dO1xuICAgICAgICAgICAgY2FzZSAzMCAvKiBEeW5hbWljQXR0ciAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydEeW5hbWljQXR0cicsIHsgbmFtZTogYy5nZXRTdHJpbmcob3AxKSwgdHJ1c3Rpbmc6ICEhb3AyIH1dO1xuICAgICAgICAgICAgY2FzZSAzMSAvKiBEeW5hbWljQXR0ck5TICovOlxuICAgICAgICAgICAgICAgIHJldHVybiBbJ0R5bmFtaWNBdHRyTlMnLCB7IG5hbWU6IGMuZ2V0U3RyaW5nKG9wMSksIG5zOiBjLmdldFN0cmluZyhvcDIpLCB0cnVzdGluZzogISFvcDIgfV07XG4gICAgICAgICAgICBjYXNlIDMyIC8qIEZsdXNoRWxlbWVudCAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydGbHVzaEVsZW1lbnQnLCB7fV07XG4gICAgICAgICAgICBjYXNlIDMzIC8qIENsb3NlRWxlbWVudCAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydDbG9zZUVsZW1lbnQnLCB7fV07XG4gICAgICAgICAgICAvLy8gTU9ESUZJRVJcbiAgICAgICAgICAgIGNhc2UgMzQgLyogTW9kaWZpZXIgKi86XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnTW9kaWZpZXInLCB7fV07XG4gICAgICAgICAgICAvLy8gV09STUhPTEVcbiAgICAgICAgICAgIGNhc2UgMzUgLyogUHVzaFJlbW90ZUVsZW1lbnQgKi86XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnUHVzaFJlbW90ZUVsZW1lbnQnLCB7fV07XG4gICAgICAgICAgICBjYXNlIDM2IC8qIFBvcFJlbW90ZUVsZW1lbnQgKi86XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnUG9wUmVtb3RlRWxlbWVudCcsIHt9XTtcbiAgICAgICAgICAgIC8vLyBEWU5BTUlDIFNDT1BFXG4gICAgICAgICAgICBjYXNlIDM3IC8qIEJpbmREeW5hbWljU2NvcGUgKi86XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnQmluZER5bmFtaWNTY29wZScsIHt9XTtcbiAgICAgICAgICAgIGNhc2UgMzggLyogUHVzaER5bmFtaWNTY29wZSAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydQdXNoRHluYW1pY1Njb3BlJywge31dO1xuICAgICAgICAgICAgY2FzZSAzOSAvKiBQb3BEeW5hbWljU2NvcGUgKi86XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnUG9wRHluYW1pY1Njb3BlJywge31dO1xuICAgICAgICAgICAgLy8vIFZNXG4gICAgICAgICAgICBjYXNlIDQwIC8qIENvbXBpbGVEeW5hbWljQmxvY2sgKi86XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnQ29tcGlsZUR5bmFtaWNCbG9jaycsIHt9XTtcbiAgICAgICAgICAgIGNhc2UgNDEgLyogSW52b2tlU3RhdGljICovOlxuICAgICAgICAgICAgICAgIHJldHVybiBbJ0ludm9rZVN0YXRpYycsIHsgYmxvY2s6IGMuZ2V0QmxvY2sob3AxKSB9XTtcbiAgICAgICAgICAgIGNhc2UgNDIgLyogSW52b2tlRHluYW1pYyAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydJbnZva2VEeW5hbWljJywgeyBpbnZva2VyOiBjLmdldE90aGVyKG9wMSkgfV07XG4gICAgICAgICAgICBjYXNlIDQzIC8qIEp1bXAgKi86XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnSnVtcCcsIHsgdG86IG9wMSB9XTtcbiAgICAgICAgICAgIGNhc2UgNDQgLyogSnVtcElmICovOlxuICAgICAgICAgICAgICAgIHJldHVybiBbJ0p1bXBJZicsIHsgdG86IG9wMSB9XTtcbiAgICAgICAgICAgIGNhc2UgNDUgLyogSnVtcFVubGVzcyAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydKdW1wVW5sZXNzJywgeyB0bzogb3AxIH1dO1xuICAgICAgICAgICAgY2FzZSA0NiAvKiBQdXNoRnJhbWUgKi86XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnUHVzaEZyYW1lJywge31dO1xuICAgICAgICAgICAgY2FzZSA0NyAvKiBQb3BGcmFtZSAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydQb3BGcmFtZScsIHt9XTtcbiAgICAgICAgICAgIGNhc2UgNDggLyogRW50ZXIgKi86XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnRW50ZXInLCB7IGFyZ3M6IG9wMSB9XTtcbiAgICAgICAgICAgIGNhc2UgNDkgLyogRXhpdCAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydFeGl0Jywge31dO1xuICAgICAgICAgICAgY2FzZSA1MCAvKiBUZXN0ICovOlxuICAgICAgICAgICAgICAgIHJldHVybiBbJ1RvQm9vbGVhbicsIHt9XTtcbiAgICAgICAgICAgIC8vLyBMSVNUU1xuICAgICAgICAgICAgY2FzZSA1MSAvKiBFbnRlckxpc3QgKi86XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnRW50ZXJMaXN0JywgeyBzdGFydDogb3AxIH1dO1xuICAgICAgICAgICAgY2FzZSA1MiAvKiBFeGl0TGlzdCAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydFeGl0TGlzdCcsIHt9XTtcbiAgICAgICAgICAgIGNhc2UgNTMgLyogUHV0SXRlcmF0b3IgKi86XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnUHV0SXRlcmF0b3InLCB7fV07XG4gICAgICAgICAgICBjYXNlIDU0IC8qIEl0ZXJhdGUgKi86XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnSXRlcmF0ZScsIHsgZW5kOiBvcDEgfV07XG4gICAgICAgICAgICAvLy8gQ09NUE9ORU5UU1xuICAgICAgICAgICAgY2FzZSA1NSAvKiBQdXNoQ29tcG9uZW50TWFuYWdlciAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydQdXNoQ29tcG9uZW50TWFuYWdlcicsIHsgZGVmaW5pdGlvbjogYy5nZXRPdGhlcihvcDEpIH1dO1xuICAgICAgICAgICAgY2FzZSA1NiAvKiBQdXNoRHluYW1pY0NvbXBvbmVudE1hbmFnZXIgKi86XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnUHVzaER5bmFtaWNDb21wb25lbnRNYW5hZ2VyJywge31dO1xuICAgICAgICAgICAgY2FzZSA1NyAvKiBQdXNoQXJncyAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydQdXNoQXJncycsIHsgc3ludGhldGljOiAhIW9wMiB9XTtcbiAgICAgICAgICAgIGNhc2UgNTggLyogUHJlcGFyZUFyZ3MgKi86XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnUHJlcGFyZUFyZ3MnLCB7IHN0YXRlOiBSZWdpc3RlcltvcDFdIH1dO1xuICAgICAgICAgICAgY2FzZSA1OSAvKiBDcmVhdGVDb21wb25lbnQgKi86XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnQ3JlYXRlQ29tcG9uZW50JywgeyBmbGFnczogb3AxLCBzdGF0ZTogUmVnaXN0ZXJbb3AyXSB9XTtcbiAgICAgICAgICAgIGNhc2UgNjAgLyogUmVnaXN0ZXJDb21wb25lbnREZXN0cnVjdG9yICovOlxuICAgICAgICAgICAgICAgIHJldHVybiBbJ1JlZ2lzdGVyQ29tcG9uZW50RGVzdHJ1Y3RvcicsIHt9XTtcbiAgICAgICAgICAgIGNhc2UgNjEgLyogUHVzaENvbXBvbmVudE9wZXJhdGlvbnMgKi86XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnUHVzaENvbXBvbmVudE9wZXJhdGlvbnMnLCB7fV07XG4gICAgICAgICAgICBjYXNlIDYyIC8qIEdldENvbXBvbmVudFNlbGYgKi86XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnR2V0Q29tcG9uZW50U2VsZicsIHsgc3RhdGU6IFJlZ2lzdGVyW29wMV0gfV07XG4gICAgICAgICAgICBjYXNlIDYzIC8qIEdldENvbXBvbmVudExheW91dCAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydHZXRDb21wb25lbnRMYXlvdXQnLCB7IHN0YXRlOiBSZWdpc3RlcltvcDFdIH1dO1xuICAgICAgICAgICAgY2FzZSA2NCAvKiBCZWdpbkNvbXBvbmVudFRyYW5zYWN0aW9uICovOlxuICAgICAgICAgICAgICAgIHJldHVybiBbJ0JlZ2luQ29tcG9uZW50VHJhbnNhY3Rpb24nLCB7fV07XG4gICAgICAgICAgICBjYXNlIDY1IC8qIENvbW1pdENvbXBvbmVudFRyYW5zYWN0aW9uICovOlxuICAgICAgICAgICAgICAgIHJldHVybiBbJ0NvbW1pdENvbXBvbmVudFRyYW5zYWN0aW9uJywge31dO1xuICAgICAgICAgICAgY2FzZSA2NiAvKiBEaWRDcmVhdGVFbGVtZW50ICovOlxuICAgICAgICAgICAgICAgIHJldHVybiBbJ0RpZENyZWF0ZUVsZW1lbnQnLCB7IHN0YXRlOiBSZWdpc3RlcltvcDFdIH1dO1xuICAgICAgICAgICAgY2FzZSA2NyAvKiBEaWRSZW5kZXJMYXlvdXQgKi86XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnRGlkUmVuZGVyTGF5b3V0Jywge31dO1xuICAgICAgICAgICAgLy8vIFBBUlRJQUxTXG4gICAgICAgICAgICBjYXNlIDY4IC8qIEdldFBhcnRpYWxUZW1wbGF0ZSAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydDb21waWxlUGFydGlhbCcsIHt9XTtcbiAgICAgICAgICAgIGNhc2UgNjkgLyogUmVzb2x2ZU1heWJlTG9jYWwgKi86XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnUmVzb2x2ZU1heWJlTG9jYWwnLCB7IG5hbWU6IGMuZ2V0U3RyaW5nKG9wMSkgfV07XG4gICAgICAgICAgICAvLy8gREVCVUdHRVJcbiAgICAgICAgICAgIGNhc2UgNzAgLyogRGVidWdnZXIgKi86XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnRGVidWdnZXInLCB7IHN5bWJvbHM6IGMuZ2V0T3RoZXIob3AxKSwgZXZhbEluZm86IGMuZ2V0QXJyYXkob3AyKSB9XTtcbiAgICAgICAgICAgIC8vLyBTVEFURU1FTlRTXG4gICAgICAgICAgICBjYXNlIDcxIC8qIFNpemUgKi86XG4gICAgICAgICAgICAgICAgdGhyb3cgdW5yZWFjaGFibGUoKTtcbiAgICAgICAgfVxuICAgICAgICB0aHJvdyB1bnJlYWNoYWJsZSgpO1xuICAgIH1cbiAgICByZXR1cm4gWycnLCB7fV07XG59XG5leHBvcnQgY2xhc3MgQXBwZW5kT3Bjb2RlcyB7XG4gICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIHRoaXMuZXZhbHVhdGVPcGNvZGUgPSBmaWxsTnVsbHMoNzEgLyogU2l6ZSAqLykuc2xpY2UoKTtcbiAgICB9XG4gICAgYWRkKG5hbWUsIGV2YWx1YXRlKSB7XG4gICAgICAgIHRoaXMuZXZhbHVhdGVPcGNvZGVbbmFtZV0gPSBldmFsdWF0ZTtcbiAgICB9XG4gICAgZXZhbHVhdGUodm0sIG9wY29kZSwgdHlwZSkge1xuICAgICAgICBsZXQgZnVuYyA9IHRoaXMuZXZhbHVhdGVPcGNvZGVbdHlwZV07XG4gICAgICAgIGlmICghZmFsc2UgJiYgZmFsc2UpIHtcbiAgICAgICAgICAgIC8qIHRzbGludDpkaXNhYmxlICovXG4gICAgICAgICAgICBsZXQgW25hbWUsIHBhcmFtc10gPSBkZWJ1Zyh2bS5jb25zdGFudHMsIG9wY29kZS50eXBlLCBvcGNvZGUub3AxLCBvcGNvZGUub3AyLCBvcGNvZGUub3AzKTtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKGAke3ZtWydwYyddIC0gNH0uICR7bG9nT3Bjb2RlKG5hbWUsIHBhcmFtcyl9YCk7XG4gICAgICAgICAgICAvLyBjb25zb2xlLmxvZyguLi5kZWJ1Zyh2bS5jb25zdGFudHMsIHR5cGUsIG9wY29kZS5vcDEsIG9wY29kZS5vcDIsIG9wY29kZS5vcDMpKTtcbiAgICAgICAgICAgIC8qIHRzbGludDplbmFibGUgKi9cbiAgICAgICAgfVxuICAgICAgICBmdW5jKHZtLCBvcGNvZGUpO1xuICAgICAgICBpZiAoIWZhbHNlICYmIGZhbHNlKSB7XG4gICAgICAgICAgICAvKiB0c2xpbnQ6ZGlzYWJsZSAqL1xuICAgICAgICAgICAgY29uc29sZS5sb2coJyVjIC0+IHBjOiAlZCwgcmE6ICVkLCBmcDogJWQsIHNwOiAlZCwgczA6ICVPLCBzMTogJU8sIHQwOiAlTywgdDE6ICVPJywgJ2NvbG9yOiBvcmFuZ2UnLCB2bVsncGMnXSwgdm1bJ3JhJ10sIHZtWydmcCddLCB2bVsnc3AnXSwgdm1bJ3MwJ10sIHZtWydzMSddLCB2bVsndDAnXSwgdm1bJ3QxJ10pO1xuICAgICAgICAgICAgY29uc29sZS5sb2coJyVjIC0+IGV2YWwgc3RhY2snLCAnY29sb3I6IHJlZCcsIHZtLnN0YWNrLnRvQXJyYXkoKSk7XG4gICAgICAgICAgICBjb25zb2xlLmxvZygnJWMgLT4gc2NvcGUnLCAnY29sb3I6IGdyZWVuJywgdm0uc2NvcGUoKVsnc2xvdHMnXS5tYXAocyA9PiBzICYmIHNbJ3ZhbHVlJ10gPyBzWyd2YWx1ZSddKCkgOiBzKSk7XG4gICAgICAgICAgICBjb25zb2xlLmxvZygnJWMgLT4gZWxlbWVudHMnLCAnY29sb3I6IGJsdWUnLCB2bS5lbGVtZW50cygpWydlbGVtZW50U3RhY2snXS50b0FycmF5KCkpO1xuICAgICAgICAgICAgLyogdHNsaW50OmVuYWJsZSAqL1xuICAgICAgICB9XG4gICAgfVxufVxuZXhwb3J0IGNvbnN0IEFQUEVORF9PUENPREVTID0gbmV3IEFwcGVuZE9wY29kZXMoKTtcbmV4cG9ydCBjbGFzcyBBYnN0cmFjdE9wY29kZSB7XG4gICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIGluaXRpYWxpemVHdWlkKHRoaXMpO1xuICAgIH1cbiAgICB0b0pTT04oKSB7XG4gICAgICAgIHJldHVybiB7IGd1aWQ6IHRoaXMuX2d1aWQsIHR5cGU6IHRoaXMudHlwZSB9O1xuICAgIH1cbn1cbmV4cG9ydCBjbGFzcyBVcGRhdGluZ09wY29kZSBleHRlbmRzIEFic3RyYWN0T3Bjb2RlIHtcbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgc3VwZXIoLi4uYXJndW1lbnRzKTtcbiAgICAgICAgdGhpcy5uZXh0ID0gbnVsbDtcbiAgICAgICAgdGhpcy5wcmV2ID0gbnVsbDtcbiAgICB9XG59XG5leHBvcnQgZnVuY3Rpb24gaW5zcGVjdChvcGNvZGVzKSB7XG4gICAgbGV0IGJ1ZmZlciA9IFtdO1xuICAgIG9wY29kZXMuZm9yRWFjaCgob3Bjb2RlLCBpKSA9PiB7XG4gICAgICAgIF9pbnNwZWN0KG9wY29kZS50b0pTT04oKSwgYnVmZmVyLCAwLCBpKTtcbiAgICB9KTtcbiAgICByZXR1cm4gYnVmZmVyLmpvaW4oJycpO1xufVxuZnVuY3Rpb24gX2luc3BlY3Qob3Bjb2RlLCBidWZmZXIsIGxldmVsLCBpbmRleCkge1xuICAgIGxldCBpbmRlbnRhdGlvbiA9IFtdO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbGV2ZWw7IGkrKykge1xuICAgICAgICBpbmRlbnRhdGlvbi5wdXNoKCcgICcpO1xuICAgIH1cbiAgICBidWZmZXIucHVzaCguLi5pbmRlbnRhdGlvbik7XG4gICAgYnVmZmVyLnB1c2goYCR7aW5kZXh9LiAke29wY29kZS50eXBlfWApO1xuICAgIGlmIChvcGNvZGUuYXJncyB8fCBvcGNvZGUuZGV0YWlscykge1xuICAgICAgICBidWZmZXIucHVzaCgnKCcpO1xuICAgICAgICBpZiAob3Bjb2RlLmFyZ3MpIHtcbiAgICAgICAgICAgIGJ1ZmZlci5wdXNoKG9wY29kZS5hcmdzLmpvaW4oJywgJykpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChvcGNvZGUuZGV0YWlscykge1xuICAgICAgICAgICAgbGV0IGtleXMgPSBPYmplY3Qua2V5cyhvcGNvZGUuZGV0YWlscyk7XG4gICAgICAgICAgICBpZiAoa2V5cy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICBpZiAob3Bjb2RlLmFyZ3MgJiYgb3Bjb2RlLmFyZ3MubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgICAgIGJ1ZmZlci5wdXNoKCcsICcpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBidWZmZXIucHVzaChrZXlzLm1hcChrZXkgPT4gYCR7a2V5fT0ke29wY29kZS5kZXRhaWxzICYmIG9wY29kZS5kZXRhaWxzW2tleV19YCkuam9pbignLCAnKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgYnVmZmVyLnB1c2goJyknKTtcbiAgICB9XG4gICAgYnVmZmVyLnB1c2goJ1xcbicpO1xuICAgIGlmIChvcGNvZGUuY2hpbGRyZW4gJiYgb3Bjb2RlLmNoaWxkcmVuLmxlbmd0aCkge1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IG9wY29kZS5jaGlsZHJlbi5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgX2luc3BlY3Qob3Bjb2RlLmNoaWxkcmVuW2ldLCBidWZmZXIsIGxldmVsICsgMSwgaSk7XG4gICAgICAgIH1cbiAgICB9XG59Il19

@@ -49,3 +49,5 @@ "use strict";

this.sp = sp;
Object.seal(this);
if (false) {
Object.seal(this);
}
}

@@ -101,2 +103,6 @@

EvaluationStack.prototype.reset = function reset() {
this.stack.length = 0;
};
EvaluationStack.prototype.toArray = function toArray() {

@@ -164,3 +170,2 @@ return this.stack.slice(this.fp, this.sp + 1);

this.fp = this.sp - 1;
// this.fp = this.sp + 1;
};

@@ -387,2 +392,4 @@ // Restore $ra, $sp and $fp

} else {
// Unload the stack
this.stack.reset();
result = {

@@ -441,2 +448,2 @@ done: true,

exports.default = VM;
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi92bS9hcHBlbmQuanMiXSwibmFtZXMiOlsiUmVnaXN0ZXIiLCJTY29wZSIsIlN0YWNrIiwiTGlua2VkTGlzdCIsIkxpc3RTbGljZSIsImNvbWJpbmVTbGljZSIsIkxhYmVsT3Bjb2RlIiwiSnVtcElmTm90TW9kaWZpZWRPcGNvZGUiLCJEaWRNb2RpZnlPcGNvZGUiLCJMaXN0QmxvY2tPcGNvZGUiLCJUcnlPcGNvZGUiLCJSZW5kZXJSZXN1bHQiLCJBUFBFTkRfT1BDT0RFUyIsIkV2YWx1YXRpb25TdGFjayIsInN0YWNrIiwiZnAiLCJzcCIsIk9iamVjdCIsInNlYWwiLCJlbXB0eSIsInJlc3RvcmUiLCJzbmFwc2hvdCIsInNsaWNlIiwibGVuZ3RoIiwiaXNFbXB0eSIsInB1c2giLCJ2YWx1ZSIsImR1cCIsInBvc2l0aW9uIiwicG9wIiwibiIsInRvcCIsInBlZWsiLCJmcm9tQmFzZSIsIm9mZnNldCIsImZyb21Ub3AiLCJjYXB0dXJlIiwiaXRlbXMiLCJlbmQiLCJzdGFydCIsInRvQXJyYXkiLCJWTSIsImVudiIsInNjb3BlIiwiZHluYW1pY1Njb3BlIiwiZWxlbWVudFN0YWNrIiwiZHluYW1pY1Njb3BlU3RhY2siLCJzY29wZVN0YWNrIiwidXBkYXRpbmdPcGNvZGVTdGFjayIsImNhY2hlR3JvdXBzIiwibGlzdEJsb2NrU3RhY2siLCJwYyIsInJhIiwiczAiLCJzMSIsInQwIiwidDEiLCJjb25zdGFudHMiLCJmZXRjaCIsInJlZ2lzdGVyIiwibG9hZCIsImZldGNoVmFsdWUiLCJsb2FkVmFsdWUiLCJwdXNoRnJhbWUiLCJwb3BGcmFtZSIsImdvdG8iLCJjYWxsIiwicmV0dXJuVG8iLCJyZXR1cm4iLCJpbml0aWFsIiwic2VsZiIsInByb2dyYW0iLCJyb290Iiwic3ltYm9sVGFibGUiLCJzeW1ib2xzIiwidm0iLCJhcmdzIiwiYmVnaW5DYWNoZUdyb3VwIiwidXBkYXRpbmciLCJ0YWlsIiwiY29tbWl0Q2FjaGVHcm91cCIsIkVORCIsIm9wY29kZXMiLCJtYXJrZXIiLCJoZWFkIiwibmV4dE5vZGUiLCJ0YWciLCJndWFyZCIsImluc2VydEJlZm9yZSIsImFwcGVuZCIsImVudGVyIiwic3RhdGUiLCJ0cmFja2VyIiwiZWxlbWVudHMiLCJwdXNoVXBkYXRhYmxlQmxvY2siLCJ0cnlPcGNvZGUiLCJkaWRFbnRlciIsIml0ZXJhdGUiLCJtZW1vIiwiZW50ZXJJdGVtIiwia2V5Iiwib3Bjb2RlIiwibGlzdEJsb2NrIiwibWFwIiwiZW50ZXJMaXN0IiwicHVzaEJsb2NrTGlzdCIsImFydGlmYWN0cyIsInVwZGF0ZVdpdGgiLCJjaGlsZHJlbiIsImV4aXQiLCJwb3BCbG9jayIsInBhcmVudCIsImRpZEluaXRpYWxpemVDaGlsZHJlbiIsImV4aXRMaXN0IiwiY3VycmVudCIsInB1c2hDaGlsZFNjb3BlIiwiY2hpbGQiLCJwdXNoQ2FsbGVyU2NvcGUiLCJjaGlsZFNjb3BlIiwiY2FsbGVyU2NvcGUiLCJnZXRDYWxsZXJTY29wZSIsInB1c2hEeW5hbWljU2NvcGUiLCJwdXNoUm9vdFNjb3BlIiwic2l6ZSIsImJpbmRDYWxsZXIiLCJzaXplZCIsImJpbmRDYWxsZXJTY29wZSIsInBvcFNjb3BlIiwicG9wRHluYW1pY1Njb3BlIiwibmV3RGVzdHJveWFibGUiLCJkIiwiZ2V0U2VsZiIsInJlZmVyZW5jZUZvclN5bWJvbCIsInN5bWJvbCIsImdldFN5bWJvbCIsImV4ZWN1dGUiLCJpbml0aWFsaXplIiwicmVzdWx0IiwibmV4dCIsImRvbmUiLCJuZXh0U3RhdGVtZW50IiwiZXZhbHVhdGUiLCJ0eXBlIiwiZXZhbHVhdGVPcGNvZGUiLCJiaW5kRHluYW1pY1Njb3BlIiwibmFtZXMiLCJpIiwibmFtZSIsImdldFN0cmluZyIsInNldCJdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUFBLEFBQVMsQUFBZ0I7O0FBQ3pCLEFBQVMsQUFBYTs7QUFDdEIsQUFBUyxBQUFPLEFBQVksQUFBeUI7O0FBQ3JELEFBQVMsQUFBb0I7O0FBQzdCLEFBQVMsQUFBYSxBQUF5QixBQUF1Qjs7QUFD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ZXIgfSBmcm9tICcuLi9vcGNvZGVzJztcbmltcG9ydCB7IFNjb3BlIH0gZnJvbSAnLi4vZW52aXJvbm1lbnQnO1xuaW1wb3J0IHsgU3RhY2ssIExpbmtlZExpc3QsIExpc3RTbGljZSwgZXhwZWN0IH0gZnJvbSAnQGdsaW1tZXIvdXRpbCc7XG5pbXBvcnQgeyBjb21iaW5lU2xpY2UgfSBmcm9tICdAZ2xpbW1lci9yZWZlcmVuY2UnO1xuaW1wb3J0IHsgTGFiZWxPcGNvZGUsIEp1bXBJZk5vdE1vZGlmaWVkT3Bjb2RlLCBEaWRNb2RpZnlPcGNvZGUgfSBmcm9tICcuLi9jb21waWxlZC9vcGNvZGVzL3ZtJztcbmltcG9ydCB7IExpc3RCbG9ja09wY29kZSwgVHJ5T3Bjb2RlIH0gZnJvbSAnLi91cGRhdGUnO1xuaW1wb3J0IFJlbmRlclJlc3VsdCBmcm9tICcuL3JlbmRlci1yZXN1bHQnO1xuaW1wb3J0IHsgQVBQRU5EX09QQ09ERVMgfSBmcm9tICcuLi9vcGNvZGVzJztcbmV4cG9ydCBjbGFzcyBFdmFsdWF0aW9uU3RhY2sge1xuICAgIGNvbnN0cnVjdG9yKHN0YWNrLCBmcCwgc3ApIHtcbiAgICAgICAgdGhpcy5zdGFjayA9IHN0YWNrO1xuICAgICAgICB0aGlzLmZwID0gZnA7XG4gICAgICAgIHRoaXMuc3AgPSBzcDtcbiAgICAgICAgT2JqZWN0LnNlYWwodGhpcyk7XG4gICAgfVxuICAgIHN0YXRpYyBlbXB0eSgpIHtcbiAgICAgICAgcmV0dXJuIG5ldyB0aGlzKFtdLCAwLCAtMSk7XG4gICAgfVxuICAgIHN0YXRpYyByZXN0b3JlKHNuYXBzaG90KSB7XG4gICAgICAgIHJldHVybiBuZXcgdGhpcyhzbmFwc2hvdC5zbGljZSgpLCAwLCBzbmFwc2hvdC5sZW5ndGggLSAxKTtcbiAgICB9XG4gICAgaXNFbXB0eSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc3AgPT09IC0xO1xuICAgIH1cbiAgICBwdXNoKHZhbHVlKSB7XG4gICAgICAgIHRoaXMuc3RhY2tbKyt0aGlzLnNwXSA9IHZhbHVlO1xuICAgIH1cbiAgICBkdXAocG9zaXRpb24gPSB0aGlzLnNwKSB7XG4gICAgICAgIHRoaXMucHVzaCh0aGlzLnN0YWNrW3Bvc2l0aW9uXSk7XG4gICAgfVxuICAgIHBvcChuID0gMSkge1xuICAgICAgICBsZXQgdG9wID0gdGhpcy5zdGFja1t0aGlzLnNwXTtcbiAgICAgICAgdGhpcy5zcCAtPSBuO1xuICAgICAgICByZXR1cm4gdG9wO1xuICAgIH1cbiAgICBwZWVrKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5zdGFja1t0aGlzLnNwXTtcbiAgICB9XG4gICAgZnJvbUJhc2Uob2Zmc2V0KSB7XG4gICAgICAgIHJldHVybiB0aGlzLnN0YWNrW3RoaXMuZnAgLSBvZmZzZXRdO1xuICAgIH1cbiAgICBmcm9tVG9wKG9mZnNldCkge1xuICAgICAgICByZXR1cm4gdGhpcy5zdGFja1t0aGlzLnNwIC0gb2Zmc2V0XTtcbiAgICB9XG4gICAgY2FwdHVyZShpdGVtcykge1xuICAgICAgICBsZXQgZW5kID0gdGhpcy5zcCArIDE7XG4gICAgICAgIGxldCBzdGFydCA9IGVuZCAtIGl0ZW1zO1xuICAgICAgICByZXR1cm4gdGhpcy5zdGFjay5zbGljZShzdGFydCwgZW5kKTtcbiAgICB9XG4gICAgdG9BcnJheSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc3RhY2suc2xpY2UodGhpcy5mcCwgdGhpcy5zcCArIDEpO1xuICAgIH1cbn1cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFZNIHtcbiAgICBjb25zdHJ1Y3RvcihlbnYsIHNjb3BlLCBkeW5hbWljU2NvcGUsIGVsZW1lbnRTdGFjaykge1xuICAgICAgICB0aGlzLmVudiA9IGVudjtcbiAgICAgICAgdGhpcy5lbGVtZW50U3RhY2sgPSBlbGVtZW50U3RhY2s7XG4gICAgICAgIHRoaXMuZHluYW1pY1Njb3BlU3RhY2sgPSBuZXcgU3RhY2soKTtcbiAgICAgICAgdGhpcy5zY29wZVN0YWNrID0gbmV3IFN0YWNrKCk7XG4gICAgICAgIHRoaXMudXBkYXRpbmdPcGNvZGVTdGFjayA9IG5ldyBTdGFjaygpO1xuICAgICAgICB0aGlzLmNhY2hlR3JvdXBzID0gbmV3IFN0YWNrKCk7XG4gICAgICAgIHRoaXMubGlzdEJsb2NrU3RhY2sgPSBuZXcgU3RhY2soKTtcbiAgICAgICAgdGhpcy5zdGFjayA9IEV2YWx1YXRpb25TdGFjay5lbXB0eSgpO1xuICAgICAgICAvKiBSZWdpc3RlcnMgKi9cbiAgICAgICAgdGhpcy5wYyA9IC0xO1xuICAgICAgICB0aGlzLnJhID0gLTE7XG4gICAgICAgIHRoaXMuczAgPSBudWxsO1xuICAgICAgICB0aGlzLnMxID0gbnVsbDtcbiAgICAgICAgdGhpcy50MCA9IG51bGw7XG4gICAgICAgIHRoaXMudDEgPSBudWxsO1xuICAgICAgICB0aGlzLmVudiA9IGVudjtcbiAgICAgICAgdGhpcy5jb25zdGFudHMgPSBlbnYuY29uc3RhbnRzO1xuICAgICAgICB0aGlzLmVsZW1lbnRTdGFjayA9IGVsZW1lbnRTdGFjaztcbiAgICAgICAgdGhpcy5zY29wZVN0YWNrLnB1c2goc2NvcGUpO1xuICAgICAgICB0aGlzLmR5bmFtaWNTY29wZVN0YWNrLnB1c2goZHluYW1pY1Njb3BlKTtcbiAgICB9XG4gICAgZ2V0IGZwKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5zdGFjay5mcDtcbiAgICB9XG4gICAgc2V0IGZwKGZwKSB7XG4gICAgICAgIHRoaXMuc3RhY2suZnAgPSBmcDtcbiAgICB9XG4gICAgZ2V0IHNwKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5zdGFjay5zcDtcbiAgICB9XG4gICAgc2V0IHNwKHNwKSB7XG4gICAgICAgIHRoaXMuc3RhY2suc3AgPSBzcDtcbiAgICB9XG4gICAgLy8gRmV0Y2ggYSB2YWx1ZSBmcm9tIGEgcmVnaXN0ZXIgb250byB0aGUgc3RhY2tcbiAgICBmZXRjaChyZWdpc3Rlcikge1xuICAgICAgICB0aGlzLnN0YWNrLnB1c2godGhpc1tSZWdpc3RlcltyZWdpc3Rlcl1dKTtcbiAgICB9XG4gICAgLy8gTG9hZCBhIHZhbHVlIGZyb20gdGhlIHN0YWNrIGludG8gYSByZWdpc3RlclxuICAgIGxvYWQocmVnaXN0ZXIpIHtcbiAgICAgICAgdGhpc1tSZWdpc3RlcltyZWdpc3Rlcl1dID0gdGhpcy5zdGFjay5wb3AoKTtcbiAgICB9XG4gICAgLy8gRmV0Y2ggYSB2YWx1ZSBmcm9tIGEgcmVnaXN0ZXJcbiAgICBmZXRjaFZhbHVlKHJlZ2lzdGVyKSB7XG4gICAgICAgIHJldHVybiB0aGlzW1JlZ2lzdGVyW3JlZ2lzdGVyXV07XG4gICAgfVxuICAgIC8vIExvYWQgYSB2YWx1ZSBpbnRvIGEgcmVnaXN0ZXJcbiAgICBsb2FkVmFsdWUocmVnaXN0ZXIsIHZhbHVlKSB7XG4gICAgICAgIHRoaXNbUmVnaXN0ZXJbcmVnaXN0ZXJdXSA9IHZhbHVlO1xuICAgIH1cbiAgICAvLyBTdGFydCBhIG5ldyBmcmFtZSBhbmQgc2F2ZSAkcmEgYW5kICRmcCBvbiB0aGUgc3RhY2tcbiAgICBwdXNoRnJhbWUoKSB7XG4gICAgICAgIHRoaXMuc3RhY2sucHVzaCh0aGlzLnJhKTtcbiAgICAgICAgdGhpcy5zdGFjay5wdXNoKHRoaXMuZnApO1xuICAgICAgICB0aGlzLmZwID0gdGhpcy5zcCAtIDE7XG4gICAgICAgIC8vIHRoaXMuZnAgPSB0aGlzLnNwICsgMTtcbiAgICB9XG4gICAgLy8gUmVzdG9yZSAkcmEsICRzcCBhbmQgJGZwXG4gICAgcG9wRnJhbWUoKSB7XG4gICAgICAgIHRoaXMuc3AgPSB0aGlzLmZwIC0gMTtcbiAgICAgICAgdGhpcy5yYSA9IHRoaXMuc3RhY2suZnJvbUJhc2UoMCk7XG4gICAgICAgIHRoaXMuZnAgPSB0aGlzLnN0YWNrLmZyb21CYXNlKC0xKTtcbiAgICB9XG4gICAgLy8gSnVtcCB0byBhbiBhZGRyZXNzIGluIGBwcm9ncmFtYFxuICAgIGdvdG8ocGMpIHtcbiAgICAgICAgdGhpcy5wYyA9IHBjO1xuICAgIH1cbiAgICAvLyBTYXZlICRwYyBpbnRvICRyYSwgdGhlbiBqdW1wIHRvIGEgbmV3IGFkZHJlc3MgaW4gYHByb2dyYW1gIChqYWwgaW4gTUlQUylcbiAgICBjYWxsKHBjKSB7XG4gICAgICAgIHRoaXMucmEgPSB0aGlzLnBjO1xuICAgICAgICB0aGlzLnBjID0gcGM7XG4gICAgfVxuICAgIC8vIFB1dCBhIHNwZWNpZmljIGBwcm9ncmFtYCBhZGRyZXNzIGluICRyYVxuICAgIHJldHVyblRvKHJhKSB7XG4gICAgICAgIHRoaXMucmEgPSByYTtcbiAgICB9XG4gICAgLy8gUmV0dXJuIHRvIHRoZSBgcHJvZ3JhbWAgYWRkcmVzcyBzdG9yZWQgaW4gJHJhXG4gICAgcmV0dXJuKCkge1xuICAgICAgICB0aGlzLnBjID0gdGhpcy5yYTtcbiAgICB9XG4gICAgc3RhdGljIGluaXRpYWwoZW52LCBzZWxmLCBkeW5hbWljU2NvcGUsIGVsZW1lbnRTdGFjaywgcHJvZ3JhbSkge1xuICAgICAgICBsZXQgc2NvcGUgPSBTY29wZS5yb290KHNlbGYsIHByb2dyYW0uc3ltYm9sVGFibGUuc3ltYm9scy5sZW5ndGgpO1xuICAgICAgICBsZXQgdm0gPSBuZXcgVk0oZW52LCBzY29wZSwgZHluYW1pY1Njb3BlLCBlbGVtZW50U3RhY2spO1xuICAgICAgICB2bS5wYyA9IHByb2dyYW0uc3RhcnQ7XG4gICAgICAgIHZtLnVwZGF0aW5nT3Bjb2RlU3RhY2sucHVzaChuZXcgTGlua2VkTGlzdCgpKTtcbiAgICAgICAgcmV0dXJuIHZtO1xuICAgIH1cbiAgICBjYXB0dXJlKGFyZ3MpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGR5bmFtaWNTY29wZTogdGhpcy5keW5hbWljU2NvcGUoKSxcbiAgICAgICAgICAgIGVudjogdGhpcy5lbnYsXG4gICAgICAgICAgICBzY29wZTogdGhpcy5zY29wZSgpLFxuICAgICAgICAgICAgc3RhY2s6IHRoaXMuc3RhY2suY2FwdHVyZShhcmdzKVxuICAgICAgICB9O1xuICAgIH1cbiAgICBiZWdpbkNhY2hlR3JvdXAoKSB7XG4gICAgICAgIHRoaXMuY2FjaGVHcm91cHMucHVzaCh0aGlzLnVwZGF0aW5nKCkudGFpbCgpKTtcbiAgICB9XG4gICAgY29tbWl0Q2FjaGVHcm91cCgpIHtcbiAgICAgICAgLy8gICAgICAgIEp1bXBJZk5vdE1vZGlmaWVkKEVORClcbiAgICAgICAgLy8gICAgICAgIChoZWFkKVxuICAgICAgICAvLyAgICAgICAgKC4uLi4pXG4gICAgICAgIC8vICAgICAgICAodGFpbClcbiAgICAgICAgLy8gICAgICAgIERpZE1vZGlmeVxuICAgICAgICAvLyBFTkQ6ICAgTm9vcFxuICAgICAgICBsZXQgRU5EID0gbmV3IExhYmVsT3Bjb2RlKFwiRU5EXCIpO1xuICAgICAgICBsZXQgb3Bjb2RlcyA9IHRoaXMudXBkYXRpbmcoKTtcbiAgICAgICAgbGV0IG1hcmtlciA9IHRoaXMuY2FjaGVHcm91cHMucG9wKCk7XG4gICAgICAgIGxldCBoZWFkID0gbWFya2VyID8gb3Bjb2Rlcy5uZXh0Tm9kZShtYXJrZXIpIDogb3Bjb2Rlcy5oZWFkKCk7XG4gICAgICAgIGxldCB0YWlsID0gb3Bjb2Rlcy50YWlsKCk7XG4gICAgICAgIGxldCB0YWcgPSBjb21iaW5lU2xpY2UobmV3IExpc3RTbGljZShoZWFkLCB0YWlsKSk7XG4gICAgICAgIGxldCBndWFyZCA9IG5ldyBKdW1wSWZOb3RNb2RpZmllZE9wY29kZSh0YWcsIEVORCk7XG4gICAgICAgIG9wY29kZXMuaW5zZXJ0QmVmb3JlKGd1YXJkLCBoZWFkKTtcbiAgICAgICAgb3Bjb2Rlcy5hcHBlbmQobmV3IERpZE1vZGlmeU9wY29kZShndWFyZCkpO1xuICAgICAgICBvcGNvZGVzLmFwcGVuZChFTkQpO1xuICAgIH1cbiAgICBlbnRlcihhcmdzKSB7XG4gICAgICAgIGxldCB1cGRhdGluZyA9IG5ldyBMaW5rZWRMaXN0KCk7XG4gICAgICAgIGxldCBzdGF0ZSA9IHRoaXMuY2FwdHVyZShhcmdzKTtcbiAgICAgICAgbGV0IHRyYWNrZXIgPSB0aGlzLmVsZW1lbnRzKCkucHVzaFVwZGF0YWJsZUJsb2NrKCk7XG4gICAgICAgIGxldCB0cnlPcGNvZGUgPSBuZXcgVHJ5T3Bjb2RlKHRoaXMucGMsIHN0YXRlLCB0cmFja2VyLCB1cGRhdGluZyk7XG4gICAgICAgIHRoaXMuZGlkRW50ZXIodHJ5T3Bjb2RlKTtcbiAgICB9XG4gICAgaXRlcmF0ZShtZW1vLCB2YWx1ZSkge1xuICAgICAgICBsZXQgc3RhY2sgPSB0aGlzLnN0YWNrO1xuICAgICAgICBzdGFjay5wdXNoKHZhbHVlKTtcbiAgICAgICAgc3RhY2sucHVzaChtZW1vKTtcbiAgICAgICAgbGV0IHN0YXRlID0gdGhpcy5jYXB0dXJlKDIpO1xuICAgICAgICBsZXQgdHJhY2tlciA9IHRoaXMuZWxlbWVudHMoKS5wdXNoVXBkYXRhYmxlQmxvY2soKTtcbiAgICAgICAgLy8gbGV0IGlwID0gdGhpcy5pcDtcbiAgICAgICAgLy8gdGhpcy5pcCA9IGVuZCArIDQ7XG4gICAgICAgIC8vIHRoaXMuZnJhbWVzLnB1c2goaXApO1xuICAgICAgICByZXR1cm4gbmV3IFRyeU9wY29kZSh0aGlzLnBjLCBzdGF0ZSwgdHJhY2tlciwgbmV3IExpbmtlZExpc3QoKSk7XG4gICAgfVxuICAgIGVudGVySXRlbShrZXksIG9wY29kZSkge1xuICAgICAgICB0aGlzLmxpc3RCbG9jaygpLm1hcFtrZXldID0gb3Bjb2RlO1xuICAgICAgICB0aGlzLmRpZEVudGVyKG9wY29kZSk7XG4gICAgfVxuICAgIGVudGVyTGlzdChzdGFydCkge1xuICAgICAgICBsZXQgdXBkYXRpbmcgPSBuZXcgTGlua2VkTGlzdCgpO1xuICAgICAgICBsZXQgc3RhdGUgPSB0aGlzLmNhcHR1cmUoMCk7XG4gICAgICAgIGxldCB0cmFja2VyID0gdGhpcy5lbGVtZW50cygpLnB1c2hCbG9ja0xpc3QodXBkYXRpbmcpO1xuICAgICAgICBsZXQgYXJ0aWZhY3RzID0gdGhpcy5zdGFjay5wZWVrKCkuYXJ0aWZhY3RzO1xuICAgICAgICBsZXQgb3Bjb2RlID0gbmV3IExpc3RCbG9ja09wY29kZShzdGFydCwgc3RhdGUsIHRyYWNrZXIsIHVwZGF0aW5nLCBhcnRpZmFjdHMpO1xuICAgICAgICB0aGlzLmxpc3RCbG9ja1N0YWNrLnB1c2gob3Bjb2RlKTtcbiAgICAgICAgdGhpcy5kaWRFbnRlcihvcGNvZGUpO1xuICAgIH1cbiAgICBkaWRFbnRlcihvcGNvZGUpIHtcbiAgICAgICAgdGhpcy51cGRhdGVXaXRoKG9wY29kZSk7XG4gICAgICAgIHRoaXMudXBkYXRpbmdPcGNvZGVTdGFjay5wdXNoKG9wY29kZS5jaGlsZHJlbik7XG4gICAgfVxuICAgIGV4aXQoKSB7XG4gICAgICAgIHRoaXMuZWxlbWVudHMoKS5wb3BCbG9jaygpO1xuICAgICAgICB0aGlzLnVwZGF0aW5nT3Bjb2RlU3RhY2sucG9wKCk7XG4gICAgICAgIGxldCBwYXJlbnQgPSB0aGlzLnVwZGF0aW5nKCkudGFpbCgpO1xuICAgICAgICBwYXJlbnQuZGlkSW5pdGlhbGl6ZUNoaWxkcmVuKCk7XG4gICAgfVxuICAgIGV4aXRMaXN0KCkge1xuICAgICAgICB0aGlzLmV4aXQoKTtcbiAgICAgICAgdGhpcy5saXN0QmxvY2tTdGFjay5wb3AoKTtcbiAgICB9XG4gICAgdXBkYXRlV2l0aChvcGNvZGUpIHtcbiAgICAgICAgdGhpcy51cGRhdGluZygpLmFwcGVuZChvcGNvZGUpO1xuICAgIH1cbiAgICBsaXN0QmxvY2soKSB7XG4gICAgICAgIHJldHVybiBleHBlY3QodGhpcy5saXN0QmxvY2tTdGFjay5jdXJyZW50LCAnZXhwZWN0ZWQgYSBsaXN0IGJsb2NrJyk7XG4gICAgfVxuICAgIHVwZGF0aW5nKCkge1xuICAgICAgICByZXR1cm4gZXhwZWN0KHRoaXMudXBkYXRpbmdPcGNvZGVTdGFjay5jdXJyZW50LCAnZXhwZWN0ZWQgdXBkYXRpbmcgb3Bjb2RlIG9uIHRoZSB1cGRhdGluZyBvcGNvZGUgc3RhY2snKTtcbiAgICB9XG4gICAgZWxlbWVudHMoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmVsZW1lbnRTdGFjaztcbiAgICB9XG4gICAgc2NvcGUoKSB7XG4gICAgICAgIHJldHVybiBleHBlY3QodGhpcy5zY29wZVN0YWNrLmN1cnJlbnQsICdleHBlY3RlZCBzY29wZSBvbiB0aGUgc2NvcGUgc3RhY2snKTtcbiAgICB9XG4gICAgZHluYW1pY1Njb3BlKCkge1xuICAgICAgICByZXR1cm4gZXhwZWN0KHRoaXMuZHluYW1pY1Njb3BlU3RhY2suY3VycmVudCwgJ2V4cGVjdGVkIGR5bmFtaWMgc2NvcGUgb24gdGhlIGR5bmFtaWMgc2NvcGUgc3RhY2snKTtcbiAgICB9XG4gICAgcHVzaENoaWxkU2NvcGUoKSB7XG4gICAgICAgIHRoaXMuc2NvcGVTdGFjay5wdXNoKHRoaXMuc2NvcGUoKS5jaGlsZCgpKTtcbiAgICB9XG4gICAgcHVzaENhbGxlclNjb3BlKGNoaWxkU2NvcGUgPSBmYWxzZSkge1xuICAgICAgICBsZXQgY2FsbGVyU2NvcGUgPSBleHBlY3QodGhpcy5zY29wZSgpLmdldENhbGxlclNjb3BlKCksICdwdXNoQ2FsbGVyU2NvcGUgaXMgY2FsbGVkIHdoZW4gYSBjYWxsZXIgc2NvcGUgaXMgcHJlc2VudCcpO1xuICAgICAgICB0aGlzLnNjb3BlU3RhY2sucHVzaChjaGlsZFNjb3BlID8gY2FsbGVyU2NvcGUuY2hpbGQoKSA6IGNhbGxlclNjb3BlKTtcbiAgICB9XG4gICAgcHVzaER5bmFtaWNTY29wZSgpIHtcbiAgICAgICAgbGV0IGNoaWxkID0gdGhpcy5keW5hbWljU2NvcGUoKS5jaGlsZCgpO1xuICAgICAgICB0aGlzLmR5bmFtaWNTY29wZVN0YWNrLnB1c2goY2hpbGQpO1xuICAgICAgICByZXR1cm4gY2hpbGQ7XG4gICAgfVxuICAgIHB1c2hSb290U2NvcGUoc2l6ZSwgYmluZENhbGxlcikge1xuICAgICAgICBsZXQgc2NvcGUgPSBTY29wZS5zaXplZChzaXplKTtcbiAgICAgICAgaWYgKGJpbmRDYWxsZXIpIHNjb3BlLmJpbmRDYWxsZXJTY29wZSh0aGlzLnNjb3BlKCkpO1xuICAgICAgICB0aGlzLnNjb3BlU3RhY2sucHVzaChzY29wZSk7XG4gICAgICAgIHJldHVybiBzY29wZTtcbiAgICB9XG4gICAgcG9wU2NvcGUoKSB7XG4gICAgICAgIHRoaXMuc2NvcGVTdGFjay5wb3AoKTtcbiAgICB9XG4gICAgcG9wRHluYW1pY1Njb3BlKCkge1xuICAgICAgICB0aGlzLmR5bmFtaWNTY29wZVN0YWNrLnBvcCgpO1xuICAgIH1cbiAgICBuZXdEZXN0cm95YWJsZShkKSB7XG4gICAgICAgIHRoaXMuZWxlbWVudHMoKS5uZXdEZXN0cm95YWJsZShkKTtcbiAgICB9XG4gICAgLy8vIFNDT1BFIEhFTFBFUlNcbiAgICBnZXRTZWxmKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5zY29wZSgpLmdldFNlbGYoKTtcbiAgICB9XG4gICAgcmVmZXJlbmNlRm9yU3ltYm9sKHN5bWJvbCkge1xuICAgICAgICByZXR1cm4gdGhpcy5zY29wZSgpLmdldFN5bWJvbChzeW1ib2wpO1xuICAgIH1cbiAgICAvLy8gRVhFQ1VUSU9OXG4gICAgZXhlY3V0ZShzdGFydCwgaW5pdGlhbGl6ZSkge1xuICAgICAgICB0aGlzLnBjID0gc3RhcnQ7XG4gICAgICAgIGlmIChpbml0aWFsaXplKSBpbml0aWFsaXplKHRoaXMpO1xuICAgICAgICBsZXQgcmVzdWx0O1xuICAgICAgICB3aGlsZSAodHJ1ZSkge1xuICAgICAgICAgICAgcmVzdWx0ID0gdGhpcy5uZXh0KCk7XG4gICAgICAgICAgICBpZiAocmVzdWx0LmRvbmUpIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiByZXN1bHQudmFsdWU7XG4gICAgfVxuICAgIG5leHQoKSB7XG4gICAgICAgIGxldCB7IGVudiwgdXBkYXRpbmdPcGNvZGVTdGFjaywgZWxlbWVudFN0YWNrIH0gPSB0aGlzO1xuICAgICAgICBsZXQgb3Bjb2RlID0gdGhpcy5uZXh0U3RhdGVtZW50KGVudik7XG4gICAgICAgIGxldCByZXN1bHQ7XG4gICAgICAgIGlmIChvcGNvZGUgIT09IG51bGwpIHtcbiAgICAgICAgICAgIEFQUEVORF9PUENPREVTLmV2YWx1YXRlKHRoaXMsIG9wY29kZSwgb3Bjb2RlLnR5cGUpO1xuICAgICAgICAgICAgcmVzdWx0ID0geyBkb25lOiBmYWxzZSwgdmFsdWU6IG51bGwgfTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJlc3VsdCA9IHtcbiAgICAgICAgICAgICAgICBkb25lOiB0cnVlLFxuICAgICAgICAgICAgICAgIHZhbHVlOiBuZXcgUmVuZGVyUmVzdWx0KGVudiwgZXhwZWN0KHVwZGF0aW5nT3Bjb2RlU3RhY2sucG9wKCksICd0aGVyZSBzaG91bGQgYmUgYSBmaW5hbCB1cGRhdGluZyBvcGNvZGUgc3RhY2snKSwgZWxlbWVudFN0YWNrLnBvcEJsb2NrKCkpXG4gICAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuICAgIG5leHRTdGF0ZW1lbnQoZW52KSB7XG4gICAgICAgIGxldCB7IHBjIH0gPSB0aGlzO1xuICAgICAgICBpZiAocGMgPT09IC0xKSB7XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuICAgICAgICBsZXQgcHJvZ3JhbSA9IGVudi5wcm9ncmFtO1xuICAgICAgICB0aGlzLnBjICs9IDQ7XG4gICAgICAgIHJldHVybiBwcm9ncmFtLm9wY29kZShwYyk7XG4gICAgfVxuICAgIGV2YWx1YXRlT3Bjb2RlKG9wY29kZSkge1xuICAgICAgICBBUFBFTkRfT1BDT0RFUy5ldmFsdWF0ZSh0aGlzLCBvcGNvZGUsIG9wY29kZS50eXBlKTtcbiAgICB9XG4gICAgYmluZER5bmFtaWNTY29wZShuYW1lcykge1xuICAgICAgICBsZXQgc2NvcGUgPSB0aGlzLmR5bmFtaWNTY29wZSgpO1xuICAgICAgICBmb3IgKGxldCBpID0gbmFtZXMubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcbiAgICAgICAgICAgIGxldCBuYW1lID0gdGhpcy5jb25zdGFudHMuZ2V0U3RyaW5nKG5hbWVzW2ldKTtcbiAgICAgICAgICAgIHNjb3BlLnNldChuYW1lLCB0aGlzLnN0YWNrLnBvcCgpKTtcbiAgICAgICAgfVxuICAgIH1cbn0iXX0=
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi92bS9hcHBlbmQuanMiXSwibmFtZXMiOlsiUmVnaXN0ZXIiLCJTY29wZSIsIlN0YWNrIiwiTGlua2VkTGlzdCIsIkxpc3RTbGljZSIsImNvbWJpbmVTbGljZSIsIkxhYmVsT3Bjb2RlIiwiSnVtcElmTm90TW9kaWZpZWRPcGNvZGUiLCJEaWRNb2RpZnlPcGNvZGUiLCJMaXN0QmxvY2tPcGNvZGUiLCJUcnlPcGNvZGUiLCJSZW5kZXJSZXN1bHQiLCJBUFBFTkRfT1BDT0RFUyIsIkV2YWx1YXRpb25TdGFjayIsInN0YWNrIiwiZnAiLCJzcCIsIk9iamVjdCIsInNlYWwiLCJlbXB0eSIsInJlc3RvcmUiLCJzbmFwc2hvdCIsInNsaWNlIiwibGVuZ3RoIiwiaXNFbXB0eSIsInB1c2giLCJ2YWx1ZSIsImR1cCIsInBvc2l0aW9uIiwicG9wIiwibiIsInRvcCIsInBlZWsiLCJmcm9tQmFzZSIsIm9mZnNldCIsImZyb21Ub3AiLCJjYXB0dXJlIiwiaXRlbXMiLCJlbmQiLCJzdGFydCIsInJlc2V0IiwidG9BcnJheSIsIlZNIiwiZW52Iiwic2NvcGUiLCJkeW5hbWljU2NvcGUiLCJlbGVtZW50U3RhY2siLCJkeW5hbWljU2NvcGVTdGFjayIsInNjb3BlU3RhY2siLCJ1cGRhdGluZ09wY29kZVN0YWNrIiwiY2FjaGVHcm91cHMiLCJsaXN0QmxvY2tTdGFjayIsInBjIiwicmEiLCJzMCIsInMxIiwidDAiLCJ0MSIsImNvbnN0YW50cyIsImZldGNoIiwicmVnaXN0ZXIiLCJsb2FkIiwiZmV0Y2hWYWx1ZSIsImxvYWRWYWx1ZSIsInB1c2hGcmFtZSIsInBvcEZyYW1lIiwiZ290byIsImNhbGwiLCJyZXR1cm5UbyIsInJldHVybiIsImluaXRpYWwiLCJzZWxmIiwicHJvZ3JhbSIsInJvb3QiLCJzeW1ib2xUYWJsZSIsInN5bWJvbHMiLCJ2bSIsImFyZ3MiLCJiZWdpbkNhY2hlR3JvdXAiLCJ1cGRhdGluZyIsInRhaWwiLCJjb21taXRDYWNoZUdyb3VwIiwiRU5EIiwib3Bjb2RlcyIsIm1hcmtlciIsImhlYWQiLCJuZXh0Tm9kZSIsInRhZyIsImd1YXJkIiwiaW5zZXJ0QmVmb3JlIiwiYXBwZW5kIiwiZW50ZXIiLCJzdGF0ZSIsInRyYWNrZXIiLCJlbGVtZW50cyIsInB1c2hVcGRhdGFibGVCbG9jayIsInRyeU9wY29kZSIsImRpZEVudGVyIiwiaXRlcmF0ZSIsIm1lbW8iLCJlbnRlckl0ZW0iLCJrZXkiLCJvcGNvZGUiLCJsaXN0QmxvY2siLCJtYXAiLCJlbnRlckxpc3QiLCJwdXNoQmxvY2tMaXN0IiwiYXJ0aWZhY3RzIiwidXBkYXRlV2l0aCIsImNoaWxkcmVuIiwiZXhpdCIsInBvcEJsb2NrIiwicGFyZW50IiwiZGlkSW5pdGlhbGl6ZUNoaWxkcmVuIiwiZXhpdExpc3QiLCJjdXJyZW50IiwicHVzaENoaWxkU2NvcGUiLCJjaGlsZCIsInB1c2hDYWxsZXJTY29wZSIsImNoaWxkU2NvcGUiLCJjYWxsZXJTY29wZSIsImdldENhbGxlclNjb3BlIiwicHVzaER5bmFtaWNTY29wZSIsInB1c2hSb290U2NvcGUiLCJzaXplIiwiYmluZENhbGxlciIsInNpemVkIiwiYmluZENhbGxlclNjb3BlIiwicG9wU2NvcGUiLCJwb3BEeW5hbWljU2NvcGUiLCJuZXdEZXN0cm95YWJsZSIsImQiLCJnZXRTZWxmIiwicmVmZXJlbmNlRm9yU3ltYm9sIiwic3ltYm9sIiwiZ2V0U3ltYm9sIiwiZXhlY3V0ZSIsImluaXRpYWxpemUiLCJyZXN1bHQiLCJuZXh0IiwiZG9uZSIsIm5leHRTdGF0ZW1lbnQiLCJldmFsdWF0ZSIsInR5cGUiLCJldmFsdWF0ZU9wY29kZSIsImJpbmREeW5hbWljU2NvcGUiLCJuYW1lcyIsImkiLCJuYW1lIiwiZ2V0U3RyaW5nIiwic2V0Il0sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQUEsQUFBUyxBQUFnQjs7QUFDekIsQUFBUyxBQUFhOztBQUN0QixBQUFTLEFBQU8sQUFBWSxBQUF5Qjs7QUFDckQsQUFBUyxBQUFvQjs7QUFDN0IsQUFBUyxBQUFhLEFBQXlCLEFB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LEEsSUFBSSxBQUNQO2lCQUFBLEFBQUssTUFBTCxBQUFXLEtBQVgsQUFBZ0IsQUFDbkI7Ozs7Ozs7a0JBbENnQixBIiwiZmlsZSI6ImxpYi92bS9hcHBlbmQuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBSZWdpc3RlciB9IGZyb20gJy4uL29wY29kZXMnO1xuaW1wb3J0IHsgU2NvcGUgfSBmcm9tICcuLi9lbnZpcm9ubWVudCc7XG5pbXBvcnQgeyBTdGFjaywgTGlua2VkTGlzdCwgTGlzdFNsaWNlLCBleHBlY3QgfSBmcm9tICdAZ2xpbW1lci91dGlsJztcbmltcG9ydCB7IGNvbWJpbmVTbGljZSB9IGZyb20gJ0BnbGltbWVyL3JlZmVyZW5jZSc7XG5pbXBvcnQgeyBMYWJlbE9wY29kZSwgSnVtcElmTm90TW9kaWZpZWRPcGNvZGUsIERpZE1vZGlmeU9wY29kZSB9IGZyb20gJy4uL2NvbXBpbGVkL29wY29kZXMvdm0nO1xuaW1wb3J0IHsgTGlzdEJsb2NrT3Bjb2RlLCBUcnlPcGNvZGUgfSBmcm9tICcuL3VwZGF0ZSc7XG5pbXBvcnQgUmVuZGVyUmVzdWx0IGZyb20gJy4vcmVuZGVyLXJlc3VsdCc7XG5cbmltcG9ydCB7IEFQUEVORF9PUENPREVTIH0gZnJvbSAnLi4vb3Bjb2Rlcyc7XG5leHBvcnQgY2xhc3MgRXZhbHVhdGlvblN0YWNrIHtcbiAgICBjb25zdHJ1Y3RvcihzdGFjaywgZnAsIHNwKSB7XG4gICAgICAgIHRoaXMuc3RhY2sgPSBzdGFjaztcbiAgICAgICAgdGhpcy5mcCA9IGZwO1xuICAgICAgICB0aGlzLnNwID0gc3A7XG4gICAgICAgIGlmIChmYWxzZSkge1xuICAgICAgICAgICAgT2JqZWN0LnNlYWwodGhpcyk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgc3RhdGljIGVtcHR5KCkge1xuICAgICAgICByZXR1cm4gbmV3IHRoaXMoW10sIDAsIC0xKTtcbiAgICB9XG4gICAgc3RhdGljIHJlc3RvcmUoc25hcHNob3QpIHtcbiAgICAgICAgcmV0dXJuIG5ldyB0aGlzKHNuYXBzaG90LnNsaWNlKCksIDAsIHNuYXBzaG90Lmxlbmd0aCAtIDEpO1xuICAgIH1cbiAgICBpc0VtcHR5KCkge1xuICAgICAgICByZXR1cm4gdGhpcy5zcCA9PT0gLTE7XG4gICAgfVxuICAgIHB1c2godmFsdWUpIHtcbiAgICAgICAgdGhpcy5zdGFja1srK3RoaXMuc3BdID0gdmFsdWU7XG4gICAgfVxuICAgIGR1cChwb3NpdGlvbiA9IHRoaXMuc3ApIHtcbiAgICAgICAgdGhpcy5wdXNoKHRoaXMuc3RhY2tbcG9zaXRpb25dKTtcbiAgICB9XG4gICAgcG9wKG4gPSAxKSB7XG4gICAgICAgIGxldCB0b3AgPSB0aGlzLnN0YWNrW3RoaXMuc3BdO1xuICAgICAgICB0aGlzLnNwIC09IG47XG4gICAgICAgIHJldHVybiB0b3A7XG4gICAgfVxuICAgIHBlZWsoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnN0YWNrW3RoaXMuc3BdO1xuICAgIH1cbiAgICBmcm9tQmFzZShvZmZzZXQpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc3RhY2tbdGhpcy5mcCAtIG9mZnNldF07XG4gICAgfVxuICAgIGZyb21Ub3Aob2Zmc2V0KSB7XG4gICAgICAgIHJldHVybiB0aGlzLnN0YWNrW3RoaXMuc3AgLSBvZmZzZXRdO1xuICAgIH1cbiAgICBjYXB0dXJlKGl0ZW1zKSB7XG4gICAgICAgIGxldCBlbmQgPSB0aGlzLnNwICsgMTtcbiAgICAgICAgbGV0IHN0YXJ0ID0gZW5kIC0gaXRlbXM7XG4gICAgICAgIHJldHVybiB0aGlzLnN0YWNrLnNsaWNlKHN0YXJ0LCBlbmQpO1xuICAgIH1cbiAgICByZXNldCgpIHtcbiAgICAgICAgdGhpcy5zdGFjay5sZW5ndGggPSAwO1xuICAgIH1cbiAgICB0b0FycmF5KCkge1xuICAgICAgICByZXR1cm4gdGhpcy5zdGFjay5zbGljZSh0aGlzLmZwLCB0aGlzLnNwICsgMSk7XG4gICAgfVxufVxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgVk0ge1xuICAgIGNvbnN0cnVjdG9yKGVudiwgc2NvcGUsIGR5bmFtaWNTY29wZSwgZWxlbWVudFN0YWNrKSB7XG4gICAgICAgIHRoaXMuZW52ID0gZW52O1xuICAgICAgICB0aGlzLmVsZW1lbnRTdGFjayA9IGVsZW1lbnRTdGFjaztcbiAgICAgICAgdGhpcy5keW5hbWljU2NvcGVTdGFjayA9IG5ldyBTdGFjaygpO1xuICAgICAgICB0aGlzLnNjb3BlU3RhY2sgPSBuZXcgU3RhY2soKTtcbiAgICAgICAgdGhpcy51cGRhdGluZ09wY29kZVN0YWNrID0gbmV3IFN0YWNrKCk7XG4gICAgICAgIHRoaXMuY2FjaGVHcm91cHMgPSBuZXcgU3RhY2soKTtcbiAgICAgICAgdGhpcy5saXN0QmxvY2tTdGFjayA9IG5ldyBTdGFjaygpO1xuICAgICAgICB0aGlzLnN0YWNrID0gRXZhbHVhdGlvblN0YWNrLmVtcHR5KCk7XG4gICAgICAgIC8qIFJlZ2lzdGVycyAqL1xuICAgICAgICB0aGlzLnBjID0gLTE7XG4gICAgICAgIHRoaXMucmEgPSAtMTtcbiAgICAgICAgdGhpcy5zMCA9IG51bGw7XG4gICAgICAgIHRoaXMuczEgPSBudWxsO1xuICAgICAgICB0aGlzLnQwID0gbnVsbDtcbiAgICAgICAgdGhpcy50MSA9IG51bGw7XG4gICAgICAgIHRoaXMuZW52ID0gZW52O1xuICAgICAgICB0aGlzLmNvbnN0YW50cyA9IGVudi5jb25zdGFudHM7XG4gICAgICAgIHRoaXMuZWxlbWVudFN0YWNrID0gZWxlbWVudFN0YWNrO1xuICAgICAgICB0aGlzLnNjb3BlU3RhY2sucHVzaChzY29wZSk7XG4gICAgICAgIHRoaXMuZHluYW1pY1Njb3BlU3RhY2sucHVzaChkeW5hbWljU2NvcGUpO1xuICAgIH1cbiAgICBnZXQgZnAoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnN0YWNrLmZwO1xuICAgIH1cbiAgICBzZXQgZnAoZnApIHtcbiAgICAgICAgdGhpcy5zdGFjay5mcCA9IGZwO1xuICAgIH1cbiAgICBnZXQgc3AoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnN0YWNrLnNwO1xuICAgIH1cbiAgICBzZXQgc3Aoc3ApIHtcbiAgICAgICAgdGhpcy5zdGFjay5zcCA9IHNwO1xuICAgIH1cbiAgICAvLyBGZXRjaCBhIHZhbHVlIGZyb20gYSByZWdpc3RlciBvbnRvIHRoZSBzdGFja1xuICAgIGZldGNoKHJlZ2lzdGVyKSB7XG4gICAgICAgIHRoaXMuc3RhY2sucHVzaCh0aGlzW1JlZ2lzdGVyW3JlZ2lzdGVyXV0pO1xuICAgIH1cbiAgICAvLyBMb2FkIGEgdmFsdWUgZnJvbSB0aGUgc3RhY2sgaW50byBhIHJlZ2lzdGVyXG4gICAgbG9hZChyZWdpc3Rlcikge1xuICAgICAgICB0aGlzW1JlZ2lzdGVyW3JlZ2lzdGVyXV0gPSB0aGlzLnN0YWNrLnBvcCgpO1xuICAgIH1cbiAgICAvLyBGZXRjaCBhIHZhbHVlIGZyb20gYSByZWdpc3RlclxuICAgIGZldGNoVmFsdWUocmVnaXN0ZXIpIHtcbiAgICAgICAgcmV0dXJuIHRoaXNbUmVnaXN0ZXJbcmVnaXN0ZXJdXTtcbiAgICB9XG4gICAgLy8gTG9hZCBhIHZhbHVlIGludG8gYSByZWdpc3RlclxuICAgIGxvYWRWYWx1ZShyZWdpc3RlciwgdmFsdWUpIHtcbiAgICAgICAgdGhpc1tSZWdpc3RlcltyZWdpc3Rlcl1dID0gdmFsdWU7XG4gICAgfVxuICAgIC8vIFN0YXJ0IGEgbmV3IGZyYW1lIGFuZCBzYXZlICRyYSBhbmQgJGZwIG9uIHRoZSBzdGFja1xuICAgIHB1c2hGcmFtZSgpIHtcbiAgICAgICAgdGhpcy5zdGFjay5wdXNoKHRoaXMucmEpO1xuICAgICAgICB0aGlzLnN0YWNrLnB1c2godGhpcy5mcCk7XG4gICAgICAgIHRoaXMuZnAgPSB0aGlzLnNwIC0gMTtcbiAgICB9XG4gICAgLy8gUmVzdG9yZSAkcmEsICRzcCBhbmQgJGZwXG4gICAgcG9wRnJhbWUoKSB7XG4gICAgICAgIHRoaXMuc3AgPSB0aGlzLmZwIC0gMTtcbiAgICAgICAgdGhpcy5yYSA9IHRoaXMuc3RhY2suZnJvbUJhc2UoMCk7XG4gICAgICAgIHRoaXMuZnAgPSB0aGlzLnN0YWNrLmZyb21CYXNlKC0xKTtcbiAgICB9XG4gICAgLy8gSnVtcCB0byBhbiBhZGRyZXNzIGluIGBwcm9ncmFtYFxuICAgIGdvdG8ocGMpIHtcbiAgICAgICAgdGhpcy5wYyA9IHBjO1xuICAgIH1cbiAgICAvLyBTYXZlICRwYyBpbnRvICRyYSwgdGhlbiBqdW1wIHRvIGEgbmV3IGFkZHJlc3MgaW4gYHByb2dyYW1gIChqYWwgaW4gTUlQUylcbiAgICBjYWxsKHBjKSB7XG4gICAgICAgIHRoaXMucmEgPSB0aGlzLnBjO1xuICAgICAgICB0aGlzLnBjID0gcGM7XG4gICAgfVxuICAgIC8vIFB1dCBhIHNwZWNpZmljIGBwcm9ncmFtYCBhZGRyZXNzIGluICRyYVxuICAgIHJldHVyblRvKHJhKSB7XG4gICAgICAgIHRoaXMucmEgPSByYTtcbiAgICB9XG4gICAgLy8gUmV0dXJuIHRvIHRoZSBgcHJvZ3JhbWAgYWRkcmVzcyBzdG9yZWQgaW4gJHJhXG4gICAgcmV0dXJuKCkge1xuICAgICAgICB0aGlzLnBjID0gdGhpcy5yYTtcbiAgICB9XG4gICAgc3RhdGljIGluaXRpYWwoZW52LCBzZWxmLCBkeW5hbWljU2NvcGUsIGVsZW1lbnRTdGFjaywgcHJvZ3JhbSkge1xuICAgICAgICBsZXQgc2NvcGUgPSBTY29wZS5yb290KHNlbGYsIHByb2dyYW0uc3ltYm9sVGFibGUuc3ltYm9scy5sZW5ndGgpO1xuICAgICAgICBsZXQgdm0gPSBuZXcgVk0oZW52LCBzY29wZSwgZHluYW1pY1Njb3BlLCBlbGVtZW50U3RhY2spO1xuICAgICAgICB2bS5wYyA9IHByb2dyYW0uc3RhcnQ7XG4gICAgICAgIHZtLnVwZGF0aW5nT3Bjb2RlU3RhY2sucHVzaChuZXcgTGlua2VkTGlzdCgpKTtcbiAgICAgICAgcmV0dXJuIHZtO1xuICAgIH1cbiAgICBjYXB0dXJlKGFyZ3MpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGR5bmFtaWNTY29wZTogdGhpcy5keW5hbWljU2NvcGUoKSxcbiAgICAgICAgICAgIGVudjogdGhpcy5lbnYsXG4gICAgICAgICAgICBzY29wZTogdGhpcy5zY29wZSgpLFxuICAgICAgICAgICAgc3RhY2s6IHRoaXMuc3RhY2suY2FwdHVyZShhcmdzKVxuICAgICAgICB9O1xuICAgIH1cbiAgICBiZWdpbkNhY2hlR3JvdXAoKSB7XG4gICAgICAgIHRoaXMuY2FjaGVHcm91cHMucHVzaCh0aGlzLnVwZGF0aW5nKCkudGFpbCgpKTtcbiAgICB9XG4gICAgY29tbWl0Q2FjaGVHcm91cCgpIHtcbiAgICAgICAgLy8gICAgICAgIEp1bXBJZk5vdE1vZGlmaWVkKEVORClcbiAgICAgICAgLy8gICAgICAgIChoZWFkKVxuICAgICAgICAvLyAgICAgICAgKC4uLi4pXG4gICAgICAgIC8vICAgICAgICAodGFpbClcbiAgICAgICAgLy8gICAgICAgIERpZE1vZGlmeVxuICAgICAgICAvLyBFTkQ6ICAgTm9vcFxuICAgICAgICBsZXQgRU5EID0gbmV3IExhYmVsT3Bjb2RlKFwiRU5EXCIpO1xuICAgICAgICBsZXQgb3Bjb2RlcyA9IHRoaXMudXBkYXRpbmcoKTtcbiAgICAgICAgbGV0IG1hcmtlciA9IHRoaXMuY2FjaGVHcm91cHMucG9wKCk7XG4gICAgICAgIGxldCBoZWFkID0gbWFya2VyID8gb3Bjb2Rlcy5uZXh0Tm9kZShtYXJrZXIpIDogb3Bjb2Rlcy5oZWFkKCk7XG4gICAgICAgIGxldCB0YWlsID0gb3Bjb2Rlcy50YWlsKCk7XG4gICAgICAgIGxldCB0YWcgPSBjb21iaW5lU2xpY2UobmV3IExpc3RTbGljZShoZWFkLCB0YWlsKSk7XG4gICAgICAgIGxldCBndWFyZCA9IG5ldyBKdW1wSWZOb3RNb2RpZmllZE9wY29kZSh0YWcsIEVORCk7XG4gICAgICAgIG9wY29kZXMuaW5zZXJ0QmVmb3JlKGd1YXJkLCBoZWFkKTtcbiAgICAgICAgb3Bjb2Rlcy5hcHBlbmQobmV3IERpZE1vZGlmeU9wY29kZShndWFyZCkpO1xuICAgICAgICBvcGNvZGVzLmFwcGVuZChFTkQpO1xuICAgIH1cbiAgICBlbnRlcihhcmdzKSB7XG4gICAgICAgIGxldCB1cGRhdGluZyA9IG5ldyBMaW5rZWRMaXN0KCk7XG4gICAgICAgIGxldCBzdGF0ZSA9IHRoaXMuY2FwdHVyZShhcmdzKTtcbiAgICAgICAgbGV0IHRyYWNrZXIgPSB0aGlzLmVsZW1lbnRzKCkucHVzaFVwZGF0YWJsZUJsb2NrKCk7XG4gICAgICAgIGxldCB0cnlPcGNvZGUgPSBuZXcgVHJ5T3Bjb2RlKHRoaXMucGMsIHN0YXRlLCB0cmFja2VyLCB1cGRhdGluZyk7XG4gICAgICAgIHRoaXMuZGlkRW50ZXIodHJ5T3Bjb2RlKTtcbiAgICB9XG4gICAgaXRlcmF0ZShtZW1vLCB2YWx1ZSkge1xuICAgICAgICBsZXQgc3RhY2sgPSB0aGlzLnN0YWNrO1xuICAgICAgICBzdGFjay5wdXNoKHZhbHVlKTtcbiAgICAgICAgc3RhY2sucHVzaChtZW1vKTtcbiAgICAgICAgbGV0IHN0YXRlID0gdGhpcy5jYXB0dXJlKDIpO1xuICAgICAgICBsZXQgdHJhY2tlciA9IHRoaXMuZWxlbWVudHMoKS5wdXNoVXBkYXRhYmxlQmxvY2soKTtcbiAgICAgICAgLy8gbGV0IGlwID0gdGhpcy5pcDtcbiAgICAgICAgLy8gdGhpcy5pcCA9IGVuZCArIDQ7XG4gICAgICAgIC8vIHRoaXMuZnJhbWVzLnB1c2goaXApO1xuICAgICAgICByZXR1cm4gbmV3IFRyeU9wY29kZSh0aGlzLnBjLCBzdGF0ZSwgdHJhY2tlciwgbmV3IExpbmtlZExpc3QoKSk7XG4gICAgfVxuICAgIGVudGVySXRlbShrZXksIG9wY29kZSkge1xuICAgICAgICB0aGlzLmxpc3RCbG9jaygpLm1hcFtrZXldID0gb3Bjb2RlO1xuICAgICAgICB0aGlzLmRpZEVudGVyKG9wY29kZSk7XG4gICAgfVxuICAgIGVudGVyTGlzdChzdGFydCkge1xuICAgICAgICBsZXQgdXBkYXRpbmcgPSBuZXcgTGlua2VkTGlzdCgpO1xuICAgICAgICBsZXQgc3RhdGUgPSB0aGlzLmNhcHR1cmUoMCk7XG4gICAgICAgIGxldCB0cmFja2VyID0gdGhpcy5lbGVtZW50cygpLnB1c2hCbG9ja0xpc3QodXBkYXRpbmcpO1xuICAgICAgICBsZXQgYXJ0aWZhY3RzID0gdGhpcy5zdGFjay5wZWVrKCkuYXJ0aWZhY3RzO1xuICAgICAgICBsZXQgb3Bjb2RlID0gbmV3IExpc3RCbG9ja09wY29kZShzdGFydCwgc3RhdGUsIHRyYWNrZXIsIHVwZGF0aW5nLCBhcnRpZmFjdHMpO1xuICAgICAgICB0aGlzLmxpc3RCbG9ja1N0YWNrLnB1c2gob3Bjb2RlKTtcbiAgICAgICAgdGhpcy5kaWRFbnRlcihvcGNvZGUpO1xuICAgIH1cbiAgICBkaWRFbnRlcihvcGNvZGUpIHtcbiAgICAgICAgdGhpcy51cGRhdGVXaXRoKG9wY29kZSk7XG4gICAgICAgIHRoaXMudXBkYXRpbmdPcGNvZGVTdGFjay5wdXNoKG9wY29kZS5jaGlsZHJlbik7XG4gICAgfVxuICAgIGV4aXQoKSB7XG4gICAgICAgIHRoaXMuZWxlbWVudHMoKS5wb3BCbG9jaygpO1xuICAgICAgICB0aGlzLnVwZGF0aW5nT3Bjb2RlU3RhY2sucG9wKCk7XG4gICAgICAgIGxldCBwYXJlbnQgPSB0aGlzLnVwZGF0aW5nKCkudGFpbCgpO1xuICAgICAgICBwYXJlbnQuZGlkSW5pdGlhbGl6ZUNoaWxkcmVuKCk7XG4gICAgfVxuICAgIGV4aXRMaXN0KCkge1xuICAgICAgICB0aGlzLmV4aXQoKTtcbiAgICAgICAgdGhpcy5saXN0QmxvY2tTdGFjay5wb3AoKTtcbiAgICB9XG4gICAgdXBkYXRlV2l0aChvcGNvZGUpIHtcbiAgICAgICAgdGhpcy51cGRhdGluZygpLmFwcGVuZChvcGNvZGUpO1xuICAgIH1cbiAgICBsaXN0QmxvY2soKSB7XG4gICAgICAgIHJldHVybiBleHBlY3QodGhpcy5saXN0QmxvY2tTdGFjay5jdXJyZW50LCAnZXhwZWN0ZWQgYSBsaXN0IGJsb2NrJyk7XG4gICAgfVxuICAgIHVwZGF0aW5nKCkge1xuICAgICAgICByZXR1cm4gZXhwZWN0KHRoaXMudXBkYXRpbmdPcGNvZGVTdGFjay5jdXJyZW50LCAnZXhwZWN0ZWQgdXBkYXRpbmcgb3Bjb2RlIG9uIHRoZSB1cGRhdGluZyBvcGNvZGUgc3RhY2snKTtcbiAgICB9XG4gICAgZWxlbWVudHMoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmVsZW1lbnRTdGFjaztcbiAgICB9XG4gICAgc2NvcGUoKSB7XG4gICAgICAgIHJldHVybiBleHBlY3QodGhpcy5zY29wZVN0YWNrLmN1cnJlbnQsICdleHBlY3RlZCBzY29wZSBvbiB0aGUgc2NvcGUgc3RhY2snKTtcbiAgICB9XG4gICAgZHluYW1pY1Njb3BlKCkge1xuICAgICAgICByZXR1cm4gZXhwZWN0KHRoaXMuZHluYW1pY1Njb3BlU3RhY2suY3VycmVudCwgJ2V4cGVjdGVkIGR5bmFtaWMgc2NvcGUgb24gdGhlIGR5bmFtaWMgc2NvcGUgc3RhY2snKTtcbiAgICB9XG4gICAgcHVzaENoaWxkU2NvcGUoKSB7XG4gICAgICAgIHRoaXMuc2NvcGVTdGFjay5wdXNoKHRoaXMuc2NvcGUoKS5jaGlsZCgpKTtcbiAgICB9XG4gICAgcHVzaENhbGxlclNjb3BlKGNoaWxkU2NvcGUgPSBmYWxzZSkge1xuICAgICAgICBsZXQgY2FsbGVyU2NvcGUgPSBleHBlY3QodGhpcy5zY29wZSgpLmdldENhbGxlclNjb3BlKCksICdwdXNoQ2FsbGVyU2NvcGUgaXMgY2FsbGVkIHdoZW4gYSBjYWxsZXIgc2NvcGUgaXMgcHJlc2VudCcpO1xuICAgICAgICB0aGlzLnNjb3BlU3RhY2sucHVzaChjaGlsZFNjb3BlID8gY2FsbGVyU2NvcGUuY2hpbGQoKSA6IGNhbGxlclNjb3BlKTtcbiAgICB9XG4gICAgcHVzaER5bmFtaWNTY29wZSgpIHtcbiAgICAgICAgbGV0IGNoaWxkID0gdGhpcy5keW5hbWljU2NvcGUoKS5jaGlsZCgpO1xuICAgICAgICB0aGlzLmR5bmFtaWNTY29wZVN0YWNrLnB1c2goY2hpbGQpO1xuICAgICAgICByZXR1cm4gY2hpbGQ7XG4gICAgfVxuICAgIHB1c2hSb290U2NvcGUoc2l6ZSwgYmluZENhbGxlcikge1xuICAgICAgICBsZXQgc2NvcGUgPSBTY29wZS5zaXplZChzaXplKTtcbiAgICAgICAgaWYgKGJpbmRDYWxsZXIpIHNjb3BlLmJpbmRDYWxsZXJTY29wZSh0aGlzLnNjb3BlKCkpO1xuICAgICAgICB0aGlzLnNjb3BlU3RhY2sucHVzaChzY29wZSk7XG4gICAgICAgIHJldHVybiBzY29wZTtcbiAgICB9XG4gICAgcG9wU2NvcGUoKSB7XG4gICAgICAgIHRoaXMuc2NvcGVTdGFjay5wb3AoKTtcbiAgICB9XG4gICAgcG9wRHluYW1pY1Njb3BlKCkge1xuICAgICAgICB0aGlzLmR5bmFtaWNTY29wZVN0YWNrLnBvcCgpO1xuICAgIH1cbiAgICBuZXdEZXN0cm95YWJsZShkKSB7XG4gICAgICAgIHRoaXMuZWxlbWVudHMoKS5uZXdEZXN0cm95YWJsZShkKTtcbiAgICB9XG4gICAgLy8vIFNDT1BFIEhFTFBFUlNcbiAgICBnZXRTZWxmKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5zY29wZSgpLmdldFNlbGYoKTtcbiAgICB9XG4gICAgcmVmZXJlbmNlRm9yU3ltYm9sKHN5bWJvbCkge1xuICAgICAgICByZXR1cm4gdGhpcy5zY29wZSgpLmdldFN5bWJvbChzeW1ib2wpO1xuICAgIH1cbiAgICAvLy8gRVhFQ1VUSU9OXG4gICAgZXhlY3V0ZShzdGFydCwgaW5pdGlhbGl6ZSkge1xuICAgICAgICB0aGlzLnBjID0gc3RhcnQ7XG4gICAgICAgIGlmIChpbml0aWFsaXplKSBpbml0aWFsaXplKHRoaXMpO1xuICAgICAgICBsZXQgcmVzdWx0O1xuICAgICAgICB3aGlsZSAodHJ1ZSkge1xuICAgICAgICAgICAgcmVzdWx0ID0gdGhpcy5uZXh0KCk7XG4gICAgICAgICAgICBpZiAocmVzdWx0LmRvbmUpIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiByZXN1bHQudmFsdWU7XG4gICAgfVxuICAgIG5leHQoKSB7XG4gICAgICAgIGxldCB7IGVudiwgdXBkYXRpbmdPcGNvZGVTdGFjaywgZWxlbWVudFN0YWNrIH0gPSB0aGlzO1xuICAgICAgICBsZXQgb3Bjb2RlID0gdGhpcy5uZXh0U3RhdGVtZW50KGVudik7XG4gICAgICAgIGxldCByZXN1bHQ7XG4gICAgICAgIGlmIChvcGNvZGUgIT09IG51bGwpIHtcbiAgICAgICAgICAgIEFQUEVORF9PUENPREVTLmV2YWx1YXRlKHRoaXMsIG9wY29kZSwgb3Bjb2RlLnR5cGUpO1xuICAgICAgICAgICAgcmVzdWx0ID0geyBkb25lOiBmYWxzZSwgdmFsdWU6IG51bGwgfTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIC8vIFVubG9hZCB0aGUgc3RhY2tcbiAgICAgICAgICAgIHRoaXMuc3RhY2sucmVzZXQoKTtcbiAgICAgICAgICAgIHJlc3VsdCA9IHtcbiAgICAgICAgICAgICAgICBkb25lOiB0cnVlLFxuICAgICAgICAgICAgICAgIHZhbHVlOiBuZXcgUmVuZGVyUmVzdWx0KGVudiwgZXhwZWN0KHVwZGF0aW5nT3Bjb2RlU3RhY2sucG9wKCksICd0aGVyZSBzaG91bGQgYmUgYSBmaW5hbCB1cGRhdGluZyBvcGNvZGUgc3RhY2snKSwgZWxlbWVudFN0YWNrLnBvcEJsb2NrKCkpXG4gICAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuICAgIG5leHRTdGF0ZW1lbnQoZW52KSB7XG4gICAgICAgIGxldCB7IHBjIH0gPSB0aGlzO1xuICAgICAgICBpZiAocGMgPT09IC0xKSB7XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuICAgICAgICBsZXQgcHJvZ3JhbSA9IGVudi5wcm9ncmFtO1xuICAgICAgICB0aGlzLnBjICs9IDQ7XG4gICAgICAgIHJldHVybiBwcm9ncmFtLm9wY29kZShwYyk7XG4gICAgfVxuICAgIGV2YWx1YXRlT3Bjb2RlKG9wY29kZSkge1xuICAgICAgICBBUFBFTkRfT1BDT0RFUy5ldmFsdWF0ZSh0aGlzLCBvcGNvZGUsIG9wY29kZS50eXBlKTtcbiAgICB9XG4gICAgYmluZER5bmFtaWNTY29wZShuYW1lcykge1xuICAgICAgICBsZXQgc2NvcGUgPSB0aGlzLmR5bmFtaWNTY29wZSgpO1xuICAgICAgICBmb3IgKGxldCBpID0gbmFtZXMubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcbiAgICAgICAgICAgIGxldCBuYW1lID0gdGhpcy5jb25zdGFudHMuZ2V0U3RyaW5nKG5hbWVzW2ldKTtcbiAgICAgICAgICAgIHNjb3BlLnNldChuYW1lLCB0aGlzLnN0YWNrLnBvcCgpKTtcbiAgICAgICAgfVxuICAgIH1cbn0iXX0=

@@ -55,3 +55,3 @@ import { dict, EMPTY_ARRAY, expect, fillNulls, Stack } from '@glimmer/util';

pushArgs(synthetic) {
this.push(58 /* PushArgs */, synthetic === true ? 1 : 0);
this.push(57 /* PushArgs */, synthetic === true ? 1 : 0);
}

@@ -76,46 +76,43 @@ // helpers

}
initializeComponentState() {
this.push(57 /* InitializeComponentState */);
}
prepareArgs(state) {
this.push(59 /* PrepareArgs */, state);
this.push(58 /* PrepareArgs */, state);
}
createComponent(state, hasDefault, hasInverse) {
let flag = (hasDefault === true ? 1 : 0) | (hasInverse === true ? 1 : 0) << 1;
this.push(60 /* CreateComponent */, flag, state);
this.push(59 /* CreateComponent */, flag, state);
}
registerComponentDestructor(state) {
this.push(61 /* RegisterComponentDestructor */, state);
this.push(60 /* RegisterComponentDestructor */, state);
}
beginComponentTransaction() {
this.push(65 /* BeginComponentTransaction */);
this.push(64 /* BeginComponentTransaction */);
}
commitComponentTransaction() {
this.push(66 /* CommitComponentTransaction */);
this.push(65 /* CommitComponentTransaction */);
}
pushComponentOperations() {
this.push(62 /* PushComponentOperations */);
this.push(61 /* PushComponentOperations */);
}
getComponentSelf(state) {
this.push(63 /* GetComponentSelf */, state);
this.push(62 /* GetComponentSelf */, state);
}
getComponentLayout(state) {
this.push(64 /* GetComponentLayout */, state);
this.push(63 /* GetComponentLayout */, state);
}
didCreateElement(state) {
this.push(67 /* DidCreateElement */, state);
this.push(66 /* DidCreateElement */, state);
}
didRenderLayout(state) {
this.push(68 /* DidRenderLayout */, state);
this.push(67 /* DidRenderLayout */, state);
}
// partial
getPartialTemplate() {
this.push(69 /* GetPartialTemplate */);
this.push(68 /* GetPartialTemplate */);
}
resolveMaybeLocal(name) {
this.push(70 /* ResolveMaybeLocal */, this.string(name));
this.push(69 /* ResolveMaybeLocal */, this.string(name));
}
// debugger
debugger(symbols, evalInfo) {
this.push(71 /* Debugger */, this.constants.other(symbols), this.constants.array(evalInfo));
this.push(70 /* Debugger */, this.constants.other(symbols), this.constants.array(evalInfo));
}

@@ -450,4 +447,3 @@ // content

}
invokeComponent(attrs, params, hash, block = null, inverse = null) {
this.initializeComponentState();
invokeComponent(attrs, params, hash, block, inverse = null) {
this.fetch(Register.s0);

@@ -454,0 +450,0 @@ this.dup(Register.sp, 1);

@@ -9,4 +9,3 @@ import { combine, CONSTANT_TAG, isConst, ReferenceCache } from '@glimmer/reference';

let stack = vm.stack;
stack.push(definition);
stack.push(definition.manager);
stack.push({ definition, manager: definition.manager, component: null });
});

@@ -18,4 +17,3 @@ APPEND_OPCODES.add(56 /* PushDynamicComponentManager */, vm => {

let definition = cache ? cache.peek() : reference.value();
stack.push(definition);
stack.push(definition.manager);
stack.push({ definition, manager: definition.manager, component: null });
if (cache) {

@@ -25,14 +23,8 @@ vm.updateWith(new Assert(cache));

});
APPEND_OPCODES.add(57 /* InitializeComponentState */, vm => {
APPEND_OPCODES.add(57 /* PushArgs */, (vm, { op1: synthetic }) => {
let stack = vm.stack;
let manager = stack.pop();
let definition = stack.pop();
stack.push({ definition, manager, component: null });
});
APPEND_OPCODES.add(58 /* PushArgs */, (vm, { op1: synthetic }) => {
let stack = vm.stack;
ARGS.setup(stack, !!synthetic);
stack.push(ARGS);
});
APPEND_OPCODES.add(59 /* PrepareArgs */, (vm, { op1: _state }) => {
APPEND_OPCODES.add(58 /* PrepareArgs */, (vm, { op1: _state }) => {
let stack = vm.stack;

@@ -52,11 +44,15 @@ let { definition, manager } = vm.fetchValue(_state);

let namedCount = names.length;
let atNames = [];
for (let i = 0; i < namedCount; i++) {
stack.push(named[names[i]]);
let value = named[names[i]];
let atName = `@${names[i]}`;
stack.push(value);
atNames.push(atName);
}
stack.push(names);
args.setup(stack, true);
stack.push(atNames);
args.setup(stack, false);
}
stack.push(args);
});
APPEND_OPCODES.add(60 /* CreateComponent */, (vm, { op1: flags, op2: _state }) => {
APPEND_OPCODES.add(59 /* CreateComponent */, (vm, { op1: flags, op2: _state }) => {
let definition;

@@ -72,3 +68,3 @@ let manager;

});
APPEND_OPCODES.add(61 /* RegisterComponentDestructor */, (vm, { op1: _state }) => {
APPEND_OPCODES.add(60 /* RegisterComponentDestructor */, (vm, { op1: _state }) => {
let { manager, component } = vm.fetchValue(_state);

@@ -78,10 +74,10 @@ let destructor = manager.getDestructor(component);

});
APPEND_OPCODES.add(65 /* BeginComponentTransaction */, vm => {
APPEND_OPCODES.add(64 /* BeginComponentTransaction */, vm => {
vm.beginCacheGroup();
vm.elements().pushSimpleBlock();
});
APPEND_OPCODES.add(62 /* PushComponentOperations */, vm => {
APPEND_OPCODES.add(61 /* PushComponentOperations */, vm => {
vm.stack.push(new ComponentElementOperations(vm.env));
});
APPEND_OPCODES.add(67 /* DidCreateElement */, (vm, { op1: _state }) => {
APPEND_OPCODES.add(66 /* DidCreateElement */, (vm, { op1: _state }) => {
let { manager, component } = vm.fetchValue(_state);

@@ -91,11 +87,11 @@ let action = 'DidCreateElementOpcode#evaluate';

});
APPEND_OPCODES.add(63 /* GetComponentSelf */, (vm, { op1: _state }) => {
APPEND_OPCODES.add(62 /* GetComponentSelf */, (vm, { op1: _state }) => {
let state = vm.fetchValue(_state);
vm.stack.push(state.manager.getSelf(state.component));
});
APPEND_OPCODES.add(64 /* GetComponentLayout */, (vm, { op1: _state }) => {
APPEND_OPCODES.add(63 /* GetComponentLayout */, (vm, { op1: _state }) => {
let { manager, definition, component } = vm.fetchValue(_state);
vm.stack.push(manager.layoutFor(definition, component, vm.env));
});
APPEND_OPCODES.add(68 /* DidRenderLayout */, (vm, { op1: _state }) => {
APPEND_OPCODES.add(67 /* DidRenderLayout */, (vm, { op1: _state }) => {
let { manager, component } = vm.fetchValue(_state);

@@ -107,3 +103,3 @@ let bounds = vm.elements().popBlock();

});
APPEND_OPCODES.add(66 /* CommitComponentTransaction */, vm => vm.commitCacheGroup());
APPEND_OPCODES.add(65 /* CommitComponentTransaction */, vm => vm.commitCacheGroup());
export class UpdateComponentOpcode extends UpdatingOpcode {

@@ -110,0 +106,0 @@ constructor(tag, name, component, manager, dynamicScope) {

@@ -49,3 +49,3 @@ import { dict } from '@glimmer/util';

}
APPEND_OPCODES.add(71 /* Debugger */, (vm, { op1: _symbols, op2: _evalInfo }) => {
APPEND_OPCODES.add(70 /* Debugger */, (vm, { op1: _symbols, op2: _evalInfo }) => {
let symbols = vm.constants.getOther(_symbols);

@@ -52,0 +52,0 @@ let evalInfo = vm.constants.getArray(_evalInfo);

@@ -24,3 +24,3 @@ import { APPEND_OPCODES } from '../../opcodes';

});
APPEND_OPCODES.add(70 /* ResolveMaybeLocal */, (vm, { op1: _name }) => {
APPEND_OPCODES.add(69 /* ResolveMaybeLocal */, (vm, { op1: _name }) => {
let name = vm.constants.getString(_name);

@@ -27,0 +27,0 @@ let locals = vm.scope().getPartialMap();

import { APPEND_OPCODES } from '../../opcodes';
APPEND_OPCODES.add(69 /* GetPartialTemplate */, vm => {
APPEND_OPCODES.add(68 /* GetPartialTemplate */, vm => {
let stack = vm.stack;

@@ -4,0 +4,0 @@ let definition = stack.pop();

@@ -200,36 +200,34 @@ import { initializeGuid, fillNulls, unreachable } from '@glimmer/util';

return ['PushDynamicComponentManager', {}];
case 57 /* InitializeComponentState */:
return ['InitializeComponentState', {}];
case 58 /* PushArgs */:
return ['PushArgs', { synthetic: !!op1 }];
case 59 /* PrepareArgs */:
case 57 /* PushArgs */:
return ['PushArgs', { synthetic: !!op2 }];
case 58 /* PrepareArgs */:
return ['PrepareArgs', { state: Register[op1] }];
case 60 /* CreateComponent */:
case 59 /* CreateComponent */:
return ['CreateComponent', { flags: op1, state: Register[op2] }];
case 61 /* RegisterComponentDestructor */:
case 60 /* RegisterComponentDestructor */:
return ['RegisterComponentDestructor', {}];
case 62 /* PushComponentOperations */:
case 61 /* PushComponentOperations */:
return ['PushComponentOperations', {}];
case 63 /* GetComponentSelf */:
case 62 /* GetComponentSelf */:
return ['GetComponentSelf', { state: Register[op1] }];
case 64 /* GetComponentLayout */:
case 63 /* GetComponentLayout */:
return ['GetComponentLayout', { state: Register[op1] }];
case 65 /* BeginComponentTransaction */:
case 64 /* BeginComponentTransaction */:
return ['BeginComponentTransaction', {}];
case 66 /* CommitComponentTransaction */:
case 65 /* CommitComponentTransaction */:
return ['CommitComponentTransaction', {}];
case 67 /* DidCreateElement */:
case 66 /* DidCreateElement */:
return ['DidCreateElement', { state: Register[op1] }];
case 68 /* DidRenderLayout */:
case 67 /* DidRenderLayout */:
return ['DidRenderLayout', {}];
/// PARTIALS
case 69 /* GetPartialTemplate */:
case 68 /* GetPartialTemplate */:
return ['CompilePartial', {}];
case 70 /* ResolveMaybeLocal */:
case 69 /* ResolveMaybeLocal */:
return ['ResolveMaybeLocal', { name: c.getString(op1) }];
/// DEBUGGER
case 71 /* Debugger */:
case 70 /* Debugger */:
return ['Debugger', { symbols: c.getOther(op1), evalInfo: c.getArray(op2) }];
/// STATEMENTS
case 72 /* Size */:
case 71 /* Size */:
throw unreachable();

@@ -243,3 +241,3 @@ }

constructor() {
this.evaluateOpcode = fillNulls(72 /* Size */).slice();
this.evaluateOpcode = fillNulls(71 /* Size */).slice();
}

@@ -246,0 +244,0 @@ add(name, evaluate) {

@@ -8,2 +8,3 @@ import { Register } from '../opcodes';

import RenderResult from './render-result';
import { APPEND_OPCODES } from '../opcodes';

@@ -15,3 +16,5 @@ export class EvaluationStack {

this.sp = sp;
Object.seal(this);
if (false) {
Object.seal(this);
}
}

@@ -52,2 +55,5 @@ static empty() {

}
reset() {
this.stack.length = 0;
}
toArray() {

@@ -113,3 +119,2 @@ return this.stack.slice(this.fp, this.sp + 1);

this.fp = this.sp - 1;
// this.fp = this.sp + 1;
}

@@ -291,2 +296,4 @@ // Restore $ra, $sp and $fp

} else {
// Unload the stack
this.stack.reset();
result = {

@@ -293,0 +300,0 @@ done: true,

@@ -19,4 +19,3 @@ function _defaults(obj, defaults) { var keys = Object.getOwnPropertyNames(defaults); for (var i = 0; i < keys.length; i++) { var key = keys[i]; var value = Object.getOwnPropertyDescriptor(defaults, key); if (value && value.configurable && obj[key] === undefined) { Object.defineProperty(obj, key, value); } } return obj; }

var stack = vm.stack;
stack.push(definition);
stack.push(definition.manager);
stack.push({ definition: definition, manager: definition.manager, component: null });
});

@@ -28,4 +27,3 @@ APPEND_OPCODES.add(56 /* PushDynamicComponentManager */, function (vm) {

var definition = cache ? cache.peek() : reference.value();
stack.push(definition);
stack.push(definition.manager);
stack.push({ definition: definition, manager: definition.manager, component: null });
if (cache) {

@@ -35,9 +33,3 @@ vm.updateWith(new Assert(cache));

});
APPEND_OPCODES.add(57 /* InitializeComponentState */, function (vm) {
var stack = vm.stack;
var manager = stack.pop();
var definition = stack.pop();
stack.push({ definition: definition, manager: manager, component: null });
});
APPEND_OPCODES.add(58 /* PushArgs */, function (vm, _ref2) {
APPEND_OPCODES.add(57 /* PushArgs */, function (vm, _ref2) {
var synthetic = _ref2.op1;

@@ -49,3 +41,3 @@

});
APPEND_OPCODES.add(59 /* PrepareArgs */, function (vm, _ref3) {
APPEND_OPCODES.add(58 /* PrepareArgs */, function (vm, _ref3) {
var _state = _ref3.op1;

@@ -73,11 +65,15 @@

var namedCount = names.length;
var atNames = [];
for (var _i = 0; _i < namedCount; _i++) {
stack.push(named[names[_i]]);
var value = named[names[_i]];
var atName = '@' + names[_i];
stack.push(value);
atNames.push(atName);
}
stack.push(names);
args.setup(stack, true);
stack.push(atNames);
args.setup(stack, false);
}
stack.push(args);
});
APPEND_OPCODES.add(60 /* CreateComponent */, function (vm, _ref4) {
APPEND_OPCODES.add(59 /* CreateComponent */, function (vm, _ref4) {
var _vm$fetchValue2;

@@ -98,3 +94,3 @@

});
APPEND_OPCODES.add(61 /* RegisterComponentDestructor */, function (vm, _ref5) {
APPEND_OPCODES.add(60 /* RegisterComponentDestructor */, function (vm, _ref5) {
var _state = _ref5.op1;

@@ -109,10 +105,10 @@

});
APPEND_OPCODES.add(65 /* BeginComponentTransaction */, function (vm) {
APPEND_OPCODES.add(64 /* BeginComponentTransaction */, function (vm) {
vm.beginCacheGroup();
vm.elements().pushSimpleBlock();
});
APPEND_OPCODES.add(62 /* PushComponentOperations */, function (vm) {
APPEND_OPCODES.add(61 /* PushComponentOperations */, function (vm) {
vm.stack.push(new ComponentElementOperations(vm.env));
});
APPEND_OPCODES.add(67 /* DidCreateElement */, function (vm, _ref6) {
APPEND_OPCODES.add(66 /* DidCreateElement */, function (vm, _ref6) {
var _state = _ref6.op1;

@@ -127,3 +123,3 @@

});
APPEND_OPCODES.add(63 /* GetComponentSelf */, function (vm, _ref7) {
APPEND_OPCODES.add(62 /* GetComponentSelf */, function (vm, _ref7) {
var _state = _ref7.op1;

@@ -134,3 +130,3 @@

});
APPEND_OPCODES.add(64 /* GetComponentLayout */, function (vm, _ref8) {
APPEND_OPCODES.add(63 /* GetComponentLayout */, function (vm, _ref8) {
var _state = _ref8.op1;

@@ -145,3 +141,3 @@

});
APPEND_OPCODES.add(68 /* DidRenderLayout */, function (vm, _ref9) {
APPEND_OPCODES.add(67 /* DidRenderLayout */, function (vm, _ref9) {
var _state = _ref9.op1;

@@ -158,3 +154,3 @@

});
APPEND_OPCODES.add(66 /* CommitComponentTransaction */, function (vm) {
APPEND_OPCODES.add(65 /* CommitComponentTransaction */, function (vm) {
return vm.commitCacheGroup();

@@ -229,2 +225,2 @@ });

}(UpdatingOpcode);
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9jb21waWxlZC9vcGNvZGVzL2NvbXBvbmVudC5qcyJdLCJuYW1lcyI6WyJjb21iaW5lIiwiQ09OU1RBTlRfVEFHIiwiaXNDb25zdCIsIlJlZmVyZW5jZUNhY2hlIiwiQVBQRU5EX09QQ09ERVMiLCJVcGRhdGluZ09wY29kZSIsIkFSR1MiLCJDb21wb25lbnRFbGVtZW50T3BlcmF0aW9ucyIsIkFzc2VydCIsImFkZCIsInZtIiwiX2RlZmluaXRpb24iLCJvcDEiLCJkZWZpbml0aW9uIiwiY29uc3RhbnRzIiwiZ2V0T3RoZXIiLCJzdGFjayIsInB1c2giLCJtYW5hZ2VyIiwicmVmZXJlbmNlIiwicG9wIiwiY2FjaGUiLCJ1bmRlZmluZWQiLCJwZWVrIiwidmFsdWUiLCJ1cGRhdGVXaXRoIiwiY29tcG9uZW50Iiwic3ludGhldGljIiwic2V0dXAiLCJfc3RhdGUiLCJmZXRjaFZhbHVlIiwiYXJncyIsInByZXBhcmVkQXJncyIsInByZXBhcmVBcmdzIiwiY2xlYXIiLCJwb3NpdGlvbmFsIiwibmFtZWQiLCJwb3NpdGlvbmFsQ291bnQiLCJsZW5ndGgiLCJpIiwibmFtZXMiLCJPYmplY3QiLCJrZXlzIiwibmFtZWRDb3VudCIsImZsYWdzIiwib3AyIiwiZHluYW1pY1Njb3BlIiwic3RhdGUiLCJoYXNEZWZhdWx0QmxvY2siLCJjcmVhdGUiLCJlbnYiLCJnZXRTZWxmIiwiVXBkYXRlQ29tcG9uZW50T3Bjb2RlIiwidGFnIiwibmFtZSIsImRlc3RydWN0b3IiLCJnZXREZXN0cnVjdG9yIiwibmV3RGVzdHJveWFibGUiLCJiZWdpbkNhY2hlR3JvdXAiLCJlbGVtZW50cyIsInB1c2hTaW1wbGVCbG9jayIsImFjdGlvbiIsImRpZENyZWF0ZUVsZW1lbnQiLCJleHBlY3RDb25zdHJ1Y3RpbmciLCJleHBlY3RPcGVyYXRpb25zIiwibGF5b3V0Rm9yIiwiYm91bmRzIiwicG9wQmxvY2siLCJkaWRSZW5kZXJMYXlvdXQiLCJkaWRDcmVhdGUiLCJEaWRVcGRhdGVMYXlvdXRPcGNvZGUiLCJjb21taXRDYWNoZUdyb3VwIiwidHlwZSIsImNvbXBvbmVudFRhZyIsImdldFRhZyIsImV2YWx1YXRlIiwiX3ZtIiwidXBkYXRlIiwidG9KU09OIiwiSlNPTiIsInN0cmluZ2lmeSIsImd1aWQiLCJfZ3VpZCIsImRpZFVwZGF0ZUxheW91dCIsImRpZFVwZGF0ZSJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7QUFBQSxTQUFTQSxPQUFULEVBQWtCQyxZQUFsQixFQUFnQ0MsT0FBaEMsRUFBeUNDLGNBQXpDLFFBQStELG9CQUEvRDtBQUNBLFNBQVNDLGNBQVQsRUFBeUJDLGNBQXpCLFFBQStDLGVBQS9DO0FBQ0EsT0FBT0MsSUFBUCxNQUFpQixvQkFBakI7QUFDQSxTQUFTQywwQkFBVCxRQUEyQyxPQUEzQztBQUNBLFNBQVNDLE1BQVQsUUFBdUIsTUFBdkI7QUFDQUosZUFBZUssR0FBZixDQUFtQixFQUFuQixDQUFzQiwwQkFBdEIsRUFBa0QsVUFBQ0MsRUFBRCxRQUE4QjtBQUFBLFFBQWxCQyxXQUFrQixRQUF2QkMsR0FBdUI7O0FBQzVFLFFBQUlDLGFBQWFILEdBQUdJLFNBQUgsQ0FBYUMsUUFBYixDQUFzQkosV0FBdEIsQ0FBakI7QUFDQSxRQUFJSyxRQUFRTixHQUFHTSxLQUFmO0FBQ0FBLFVBQU1DLElBQU4sQ0FBV0osVUFBWDtBQUNBRyxVQUFNQyxJQUFOLENBQVdKLFdBQVdLLE9BQXRCO0FBQ0gsQ0FMRDtBQU1BZCxlQUFlSyxHQUFmLENBQW1CLEVBQW5CLENBQXNCLGlDQUF0QixFQUF5RCxjQUFNO0FBQzNELFFBQUlPLFFBQVFOLEdBQUdNLEtBQWY7QUFDQSxRQUFJRyxZQUFZSCxNQUFNSSxHQUFOLEVBQWhCO0FBQ0EsUUFBSUMsUUFBUW5CLFFBQVFpQixTQUFSLElBQXFCRyxTQUFyQixHQUFpQyxJQUFJbkIsY0FBSixDQUFtQmdCLFNBQW5CLENBQTdDO0FBQ0EsUUFBSU4sYUFBYVEsUUFBUUEsTUFBTUUsSUFBTixFQUFSLEdBQXVCSixVQUFVSyxLQUFWLEVBQXhDO0FBQ0FSLFVB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QVg7QUFOb0M7QUFPdkM7O0FBUkwsb0NBU0kwRSxRQVRKLHFCQVNhakUsRUFUYixFQVNpQjtBQUFBLFlBQ0hRLE9BREcsR0FDNEIsSUFENUIsQ0FDSEEsT0FERztBQUFBLFlBQ01RLFNBRE4sR0FDNEIsSUFENUIsQ0FDTUEsU0FETjtBQUFBLFlBQ2lCd0MsTUFEakIsR0FDNEIsSUFENUIsQ0FDaUJBLE1BRGpCOztBQUVUaEQsZ0JBQVFpRSxlQUFSLENBQXdCekQsU0FBeEIsRUFBbUN3QyxNQUFuQztBQUNBeEQsV0FBR3dDLEdBQUgsQ0FBT2tDLFNBQVAsQ0FBaUIxRCxTQUFqQixFQUE0QlIsT0FBNUI7QUFDSCxLQWJMOztBQUFBO0FBQUEsRUFBMkNiLGNBQTNDIiwiZmlsZSI6ImxpYi9jb21waWxlZC9vcGNvZGVzL2NvbXBvbmVudC5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGNvbWJpbmUsIENPTlNUQU5UX1RBRywgaXNDb25zdCwgUmVmZXJlbmNlQ2FjaGUgfSBmcm9tICdAZ2xpbW1lci9yZWZlcmVuY2UnO1xuaW1wb3J0IHsgQVBQRU5EX09QQ09ERVMsIFVwZGF0aW5nT3Bjb2RlIH0gZnJvbSAnLi4vLi4vb3Bjb2Rlcyc7XG5pbXBvcnQgQVJHUyBmcm9tICcuLi8uLi92bS9hcmd1bWVudHMnO1xuaW1wb3J0IHsgQ29tcG9uZW50RWxlbWVudE9wZXJhdGlvbnMgfSBmcm9tICcuL2RvbSc7XG5pbXBvcnQgeyBBc3NlcnQgfSBmcm9tICcuL3ZtJztcbkFQUEVORF9PUENPREVTLmFkZCg1NSAvKiBQdXNoQ29tcG9uZW50TWFuYWdlciAqLywgKHZtLCB7IG9wMTogX2RlZmluaXRpb24gfSkgPT4ge1xuICAgIGxldCBkZWZpbml0aW9uID0gdm0uY29uc3RhbnRzLmdldE90aGVyKF9kZWZpbml0aW9uKTtcbiAgICBsZXQgc3RhY2sgPSB2bS5zdGFjaztcbiAgICBzdGFjay5wdXNoKGRlZmluaXRpb24pO1xuICAgIHN0YWNrLnB1c2goZGVmaW5pdGlvbi5tYW5hZ2VyKTtcbn0pO1xuQVBQRU5EX09QQ09ERVMuYWRkKDU2IC8qIFB1c2hEeW5hbWljQ29tcG9uZW50TWFuYWdlciAqLywgdm0gPT4ge1xuICAgIGxldCBzdGFjayA9IHZtLnN0YWNrO1xuICAgIGxldCByZWZlcmVuY2UgPSBzdGFjay5wb3AoKTtcbiAgICBsZXQgY2FjaGUgPSBpc0NvbnN0KHJlZmVyZW5jZSkgPyB1bmRlZmluZWQgOiBuZXcgUmVmZXJlbmNlQ2FjaGUocmVmZXJlbmNlKTtcbiAgICBsZXQgZGVmaW5pdGlvbiA9IGNhY2hlID8gY2FjaGUucGVlaygpIDogcmVmZXJlbmNlLnZhbHVlKCk7XG4gICAgc3RhY2sucHVzaChkZWZpbml0aW9uKTtcbiAgICBzdGFjay5wdXNoKGRlZmluaXRpb24ubWFuYWdlcik7XG4gICAgaWYgKGNhY2hlKSB7XG4gICAgICAgIHZtLnVwZGF0ZVdpdGgobmV3IEFzc2VydChjYWNoZSkpO1xuICAgIH1cbn0pO1xuQVBQRU5EX09QQ09ERVMuYWRkKDU3IC8qIEluaXRpYWxpemVDb21wb25lbnRTdGF0ZSAqLywgdm0gPT4ge1xuICAgIGxldCBzdGFjayA9IHZtLnN0YWNrO1xuICAgIGxldCBtYW5hZ2VyID0gc3RhY2sucG9wKCk7XG4gICAgbGV0IGRlZmluaXRpb24gPSBzdGFjay5wb3AoKTtcbiAgICBzdGFjay5wdXNoKHsgZGVmaW5pdGlvbiwgbWFuYWdlciwgY29tcG9uZW50OiBudWxsIH0pO1xufSk7XG5BUFBFTkRfT1BDT0RFUy5hZGQoNTggLyogUHVzaEFyZ3MgKi8sICh2bSwgeyBvcDE6IHN5bnRoZXRpYyB9KSA9PiB7XG4gICAgbGV0IHN0YWNrID0gdm0uc3RhY2s7XG4gICAgQVJHUy5zZXR1cChzdGFjaywgISFzeW50aGV0aWMpO1xuICAgIHN0YWNrLnB1c2goQVJHUyk7XG59KTtcbkFQUEVORF9PUENPREVTLmFkZCg1OSAvKiBQcmVwYXJlQXJncyAqLywgKHZtLCB7IG9wMTogX3N0YXRlIH0pID0+IHtcbiAgICBsZXQgc3RhY2sgPSB2bS5zdGFjaztcbiAgICBsZXQgeyBkZWZpbml0aW9uLCBtYW5hZ2VyIH0gPSB2bS5mZXRjaFZhbHVlKF9zdGF0ZSk7XG4gICAgbGV0IGFyZ3MgPSBzdGFjay5wb3AoKTtcbiAgICBsZXQgcHJlcGFyZWRBcmdzID0gbWFuYWdlci5wcmVwYXJlQXJncyhkZWZpbml0aW9uLCBhcmdzKTtcbiAgICBpZiAocHJlcGFyZWRBcmdzKSB7XG4gICAgICAgIGFyZ3MuY2xlYXIoKTtcbiAgICAgICAgbGV0IHsgcG9zaXRpb25hbCwgbmFtZWQgfSA9IHByZXBhcmVkQXJncztcbiAgICAgICAgbGV0IHBvc2l0aW9uYWxDb3VudCA9IHBvc2l0aW9uYWwubGVuZ3RoO1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHBvc2l0aW9uYWxDb3VudDsgaSsrKSB7XG4gICAgICAgICAgICBzdGFjay5wdXNoKHBvc2l0aW9uYWxbaV0pO1xuICAgICAgICB9XG4gICAgICAgIHN0YWNrLnB1c2gocG9zaXRpb25hbENvdW50KTtcbiAgICAgICAgbGV0IG5hbWVzID0gT2JqZWN0LmtleXMobmFtZWQpO1xuICAgICAgICBsZXQgbmFtZWRDb3VudCA9IG5hbWVzLmxlbmd0aDtcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBuYW1lZENvdW50OyBpKyspIHtcbiAgICAgICAgICAgIHN0YWNrLnB1c2gobmFtZWRbbmFtZXNbaV1dKTtcbiAgICAgICAgfVxuICAgICAgICBzdGFjay5wdXNoKG5hbWVzKTtcbiAgICAgICAgYXJncy5zZXR1cChzdGFjaywgdHJ1ZSk7XG4gICAgfVxuICAgIHN0YWNrLnB1c2goYXJncyk7XG59KTtcbkFQUEVORF9PUENPREVTLmFkZCg2MCAvKiBDcmVhdGVDb21wb25lbnQgKi8sICh2bSwgeyBvcDE6IGZsYWdzLCBvcDI6IF9zdGF0ZSB9KSA9PiB7XG4gICAgbGV0IGRlZmluaXRpb247XG4gICAgbGV0IG1hbmFnZXI7XG4gICAgbGV0IGFyZ3MgPSB2bS5zdGFjay5wb3AoKTtcbiAgICBsZXQgZHluYW1pY1Njb3BlID0gdm0uZHluYW1pY1Njb3BlKCk7XG4gICAgbGV0IHN0YXRlID0gKHsgZGVmaW5pdGlvbiwgbWFuYWdlciB9ID0gdm0uZmV0Y2hWYWx1ZShfc3RhdGUpKTtcbiAgICBsZXQgaGFzRGVmYXVsdEJsb2NrID0gZmxhZ3MgJiAwYjAxO1xuICAgIGxldCBjb21wb25lbnQgPSBtYW5hZ2VyLmNyZWF0ZSh2bS5lbnYsIGRlZmluaXRpb24sIGFyZ3MsIGR5bmFtaWNTY29wZSwgdm0uZ2V0U2VsZigpLCAhIWhhc0RlZmF1bHRCbG9jayk7XG4gICAgc3RhdGUuY29tcG9uZW50ID0gY29tcG9uZW50O1xuICAgIHZtLnVwZGF0ZVdpdGgobmV3IFVwZGF0ZUNvbXBvbmVudE9wY29kZShhcmdzLnRhZywgZGVmaW5pdGlvbi5uYW1lLCBjb21wb25lbnQsIG1hbmFnZXIsIGR5bmFtaWNTY29wZSkpO1xufSk7XG5BUFBFTkRfT1BDT0RFUy5hZGQoNjEgLyogUmVnaXN0ZXJDb21wb25lbnREZXN0cnVjdG9yICovLCAodm0sIHsgb3AxOiBfc3RhdGUgfSkgPT4ge1xuICAgIGxldCB7IG1hbmFnZXIsIGNvbXBvbmVudCB9ID0gdm0uZmV0Y2hWYWx1ZShfc3RhdGUpO1xuICAgIGxldCBkZXN0cnVjdG9yID0gbWFuYWdlci5nZXREZXN0cnVjdG9yKGNvbXBvbmVudCk7XG4gICAgaWYgKGRlc3RydWN0b3IpIHZtLm5ld0Rlc3Ryb3lhYmxlKGRlc3RydWN0b3IpO1xufSk7XG5BUFBFTkRfT1BDT0RFUy5hZGQoNjUgLyogQmVnaW5Db21wb25lbnRUcmFuc2FjdGlvbiAqLywgdm0gPT4ge1xuICAgIHZtLmJlZ2luQ2FjaGVHcm91cCgpO1xuICAgIHZtLmVsZW1lbnRzKCkucHVzaFNpbXBsZUJsb2NrKCk7XG59KTtcbkFQUEVORF9PUENPREVTLmFkZCg2MiAvKiBQdXNoQ29tcG9uZW50T3BlcmF0aW9ucyAqLywgdm0gPT4ge1xuICAgIHZtLnN0YWNrLnB1c2gobmV3IENvbXBvbmVudEVsZW1lbnRPcGVyYXRpb25zKHZtLmVudikpO1xufSk7XG5BUFBFTkRfT1BDT0RFUy5hZGQoNjcgLyogRGlkQ3JlYXRlRWxlbWVudCAqLywgKHZtLCB7IG9wMTogX3N0YXRlIH0pID0+IHtcbiAgICBsZXQgeyBtYW5hZ2VyLCBjb21wb25lbnQgfSA9IHZtLmZldGNoVmFsdWUoX3N0YXRlKTtcbiAgICBsZXQgYWN0aW9uID0gJ0RpZENyZWF0ZUVsZW1lbnRPcGNvZGUjZXZhbHVhdGUnO1xuICAgIG1hbmFnZXIuZGlkQ3JlYXRlRWxlbWVudChjb21wb25lbnQsIHZtLmVsZW1lbnRzKCkuZXhwZWN0Q29uc3RydWN0aW5nKGFjdGlvbiksIHZtLmVsZW1lbnRzKCkuZXhwZWN0T3BlcmF0aW9ucyhhY3Rpb24pKTtcbn0pO1xuQVBQRU5EX09QQ09ERVMuYWRkKDYzIC8qIEdldENvbXBvbmVudFNlbGYgKi8sICh2bSwgeyBvcDE6IF9zdGF0ZSB9KSA9PiB7XG4gICAgbGV0IHN0YXRlID0gdm0uZmV0Y2hWYWx1ZShfc3RhdGUpO1xuICAgIHZtLnN0YWNrLnB1c2goc3RhdGUubWFuYWdlci5nZXRTZWxmKHN0YXRlLmNvbXBvbmVudCkpO1xufSk7XG5BUFBFTkRfT1BDT0RFUy5hZGQoNjQgLyogR2V0Q29tcG9uZW50TGF5b3V0ICovLCAodm0sIHsgb3AxOiBfc3RhdGUgfSkgPT4ge1xuICAgIGxldCB7IG1hbmFnZXIsIGRlZmluaXRpb24sIGNvbXBvbmVudCB9ID0gdm0uZmV0Y2hWYWx1ZShfc3RhdGUpO1xuICAgIHZtLnN0YWNrLnB1c2gobWFuYWdlci5sYXlvdXRGb3IoZGVmaW5pdGlvbiwgY29tcG9uZW50LCB2bS5lbnYpKTtcbn0pO1xuQVBQRU5EX09QQ09ERVMuYWRkKDY4IC8qIERpZFJlbmRlckxheW91dCAqLywgKHZtLCB7IG9wMTogX3N0YXRlIH0pID0+IHtcbiAgICBsZXQgeyBtYW5hZ2VyLCBjb21wb25lbnQgfSA9IHZtLmZldGNoVmFsdWUoX3N0YXRlKTtcbiAgICBsZXQgYm91bmRzID0gdm0uZWxlbWVudHMoKS5wb3BCbG9jaygpO1xuICAgIG1hbmFnZXIuZGlkUmVuZGVyTGF5b3V0KGNvbXBvbmVudCwgYm91bmRzKTtcbiAgICB2bS5lbnYuZGlkQ3JlYXRlKGNvbXBvbmVudCwgbWFuYWdlcik7XG4gICAgdm0udXBkYXRlV2l0aChuZXcgRGlkVXBkYXRlTGF5b3V0T3Bjb2RlKG1hbmFnZXIsIGNvbXBvbmVudCwgYm91bmRzKSk7XG59KTtcbkFQUEVORF9PUENPREVTLmFkZCg2NiAvKiBDb21taXRDb21wb25lbnRUcmFuc2FjdGlvbiAqLywgdm0gPT4gdm0uY29tbWl0Q2FjaGVHcm91cCgpKTtcbmV4cG9ydCBjbGFzcyBVcGRhdGVDb21wb25lbnRPcGNvZGUgZXh0ZW5kcyBVcGRhdGluZ09wY29kZSB7XG4gICAgY29uc3RydWN0b3IodGFnLCBuYW1lLCBjb21wb25lbnQsIG1hbmFnZXIsIGR5bmFtaWNTY29wZSkge1xuICAgICAgICBzdXBlcigpO1xuICAgICAgICB0aGlzLm5hbWUgPSBuYW1lO1xuICAgICAgICB0aGlzLmNvbXBvbmVudCA9IGNvbXBvbmVudDtcbiAgICAgICAgdGhpcy5tYW5hZ2VyID0gbWFuYWdlcjtcbiAgICAgICAgdGhpcy5keW5hbWljU2NvcGUgPSBkeW5hbWljU2NvcGU7XG4gICAgICAgIHRoaXMudHlwZSA9ICd1cGRhdGUtY29tcG9uZW50JztcbiAgICAgICAgbGV0IGNvbXBvbmVudFRhZyA9IG1hbmFnZXIuZ2V0VGFnKGNvbXBvbmVudCk7XG4gICAgICAgIGlmIChjb21wb25lbnRUYWcpIHtcbiAgICAgICAgICAgIHRoaXMudGFnID0gY29tYmluZShbdGFnLCBjb21wb25lbnRUYWddKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMudGFnID0gdGFnO1xuICAgICAgICB9XG4gICAgfVxuICAgIGV2YWx1YXRlKF92bSkge1xuICAgICAgICBsZXQgeyBjb21wb25lbnQsIG1hbmFnZXIsIGR5bmFtaWNTY29wZSB9ID0gdGhpcztcbiAgICAgICAgbWFuYWdlci51cGRhdGUoY29tcG9uZW50LCBkeW5hbWljU2NvcGUpO1xuICAgIH1cbiAgICB0b0pTT04oKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBhcmdzOiBbSlNPTi5zdHJpbmdpZnkodGhpcy5uYW1lKV0sXG4gICAgICAgICAgICBndWlkOiB0aGlzLl9ndWlkLFxuICAgICAgICAgICAgdHlwZTogdGhpcy50eXBlXG4gICAgICAgIH07XG4gICAgfVxufVxuZXhwb3J0IGNsYXNzIERpZFVwZGF0ZUxheW91dE9wY29kZSBleHRlbmRzIFVwZGF0aW5nT3Bjb2RlIHtcbiAgICBjb25zdHJ1Y3RvcihtYW5hZ2VyLCBjb21wb25lbnQsIGJvdW5kcykge1xuICAgICAgICBzdXBlcigpO1xuICAgICAgICB0aGlzLm1hbmFnZXIgPSBtYW5hZ2VyO1xuICAgICAgICB0aGlzLmNvbXBvbmVudCA9IGNvbXBvbmVudDtcbiAgICAgICAgdGhpcy5ib3VuZHMgPSBib3VuZHM7XG4gICAgICAgIHRoaXMudHlwZSA9ICdkaWQtdXBkYXRlLWxheW91dCc7XG4gICAgICAgIHRoaXMudGFnID0gQ09OU1RBTlRfVEFHO1xuICAgIH1cbiAgICBldmFsdWF0ZSh2bSkge1xuICAgICAgICBsZXQgeyBtYW5hZ2VyLCBjb21wb25lbnQsIGJvdW5kcyB9ID0gdGhpcztcbiAgICAgICAgbWFuYWdlci5kaWRVcGRhdGVMYXlvdXQoY29tcG9uZW50LCBib3VuZHMpO1xuICAgICAgICB2bS5lbnYuZGlkVXBkYXRlKGNvbXBvbmVudCwgbWFuYWdlcik7XG4gICAgfVxufSJdfQ==
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9jb21waWxlZC9vcGNvZGVzL2NvbXBvbmVudC5qcyJdLCJuYW1lcyI6WyJjb21iaW5lIiwiQ09OU1RBTlRfVEFHIiwiaXNDb25zdCIsIlJlZmVyZW5jZUNhY2hlIiwiQVBQRU5EX09QQ09ERVMiLCJVcGRhdGluZ09wY29kZSIsIkFSR1MiLCJDb21wb25lbnRFbGVtZW50T3BlcmF0aW9ucyIsIkFzc2VydCIsImFkZCIsInZtIiwiX2RlZmluaXRpb24iLCJvcDEiLCJkZWZpbml0aW9uIiwiY29uc3RhbnRzIiwiZ2V0T3RoZXIiLCJzdGFjayIsInB1c2giLCJtYW5hZ2VyIiwiY29tcG9uZW50IiwicmVmZXJlbmNlIiwicG9wIiwiY2FjaGUiLCJ1bmRlZmluZWQiLCJwZWVrIiwidmFsdWUiLCJ1cGRhdGVXaXRoIiwic3ludGhldGljIiwic2V0dXAiLCJfc3RhdGUiLCJmZXRjaFZhbHVlIiwiYXJncyIsInByZXBhcmVkQXJncyIsInByZXBhcmVBcmdzIiwiY2xlYXIiLCJwb3NpdGlvbmFsIiwibmFtZWQiLCJwb3NpdGlvbmFsQ291bnQiLCJsZW5ndGgiLCJpIiwibmFtZXMiLCJPYmplY3QiLCJrZXlzIiwibmFtZWRDb3VudCIsImF0TmFtZXMiLCJhdE5hbWUiLCJmbGFncyIsIm9wMiIsImR5bmFtaWNTY29wZSIsInN0YXRlIiwiaGFzRGVmYXVsdEJsb2NrIiwiY3JlYXRlIiwiZW52IiwiZ2V0U2VsZiIsIlVwZGF0ZUNvbXBvbmVudE9wY29kZSIsInRhZyIsIm5hbWUiLCJkZXN0cnVjdG9yIiwiZ2V0RGVzdHJ1Y3RvciIsIm5ld0Rlc3Ryb3lhYmxlIiwiYmVnaW5DYWNoZUdyb3VwIiwiZWxlbWVudHMiLCJwdXNoU2ltcGxlQmxvY2siLCJhY3Rpb24iLCJkaWRDcmVhdGVFbGVtZW50IiwiZXhwZWN0Q29uc3RydWN0aW5nIiwiZXhwZWN0T3BlcmF0aW9ucyIsImxheW91dEZvciIsImJvdW5kcyIsInBvcEJsb2NrIiwiZGlkUmVuZGVyTGF5b3V0IiwiZGlkQ3JlYXRlIiwiRGlkVXBkYXRlTGF5b3V0T3Bjb2RlIiwiY29tbWl0Q2FjaGVHcm91cCIsInR5cGUiLCJjb21wb25lbnRUYWciLCJnZXRUYWciLCJldmFsdWF0ZSIsIl92bSIsInVwZGF0ZSIsInRvSlNPTiIsIkpTT04iLCJzdHJpbmdpZnkiLCJndWlkIiwiX2d1aWQiLCJkaWRVcGRhdGVMYXlvdXQiLCJkaWRVcGRhdGUiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7O0FBQUEsU0FBU0EsT0FBVCxFQUFrQkMsWUFBbEIsRUFBZ0NDLE9BQWhDLEVBQXlDQyxjQUF6QyxRQUErRCxvQkFBL0Q7QUFDQSxTQUFTQyxjQUFULEVBQXlCQyxjQUF6QixRQUErQyxlQUEvQztBQUNBLE9BQU9DLElBQVAsTUFBaUIsb0JBQWpCO0FBQ0EsU0FBU0MsMEJBQVQsUUFBMkMsT0FBM0M7QUFDQSxTQUFTQyxNQUFULFFBQXVCLE1BQXZCO0FBQ0FKLGVBQWVLLEdBQWYsQ0FBbUIsRUFBbkIsQ0FBc0IsMEJBQXRCLEVBQWtELFVBQUNDLEVBQUQsUUFBOEI7QUFBQSxRQUFsQkMsV0FBa0IsUUFBdkJDLEdBQXVCOztBQUM1RSxRQUFJQyxhQUFhSCxHQUFHSSxTQUFILENBQWFDLFFBQWIsQ0FBc0JKLFdBQXRCLENBQWpCO0FBQ0EsUUFBSUssUUFBUU4sR0FBR00sS0FBZjtBQUNBQSxVQUFNQyxJQUFOLENBQVcsRUFBRUosc0JBQUYsRUFBY0ssU0FBU0wsV0FBV0ssT0FBbEMsRUFBMkNDLFdBQVcsSUFBdEQsRUFBWDtBQUNILENBSkQ7QUFLQWYsZUFBZUssR0FBZixDQUFtQixFQUFuQixDQUFzQixpQ0FBdEIsRUFBeUQsY0FBTTtBQUMzRCxRQUFJTyxRQUFRTixHQUFHTSxLQUFmO0FBQ0EsUUFBSUksWUFBWUosTUFBTUssR0FBTixFQUFoQjtBQUNBLFFBQUlDLFFBQVFwQixRQUFRa0IsU0FBUixJQUFxQkcsU0FBckIsR0FBaUMsSUFBSXBCLGNBQUosQ0FBbUJpQixTQUFuQixDQUE3QztBQUNBLFFBQUlQLGFBQWFTLFFBQVFBLE1BQU1FLElBQU4s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QURHLEdBQzRCLElBRDVCLENBQ0hBLE9BREc7QUFBQSxZQUNNQyxTQUROLEdBQzRCLElBRDVCLENBQ01BLFNBRE47QUFBQSxZQUNpQmlELE1BRGpCLEdBQzRCLElBRDVCLENBQ2lCQSxNQURqQjs7QUFFVGxELGdCQUFRbUUsZUFBUixDQUF3QmxFLFNBQXhCLEVBQW1DaUQsTUFBbkM7QUFDQTFELFdBQUcwQyxHQUFILENBQU9rQyxTQUFQLENBQWlCbkUsU0FBakIsRUFBNEJELE9BQTVCO0FBQ0gsS0FiTDs7QUFBQTtBQUFBLEVBQTJDYixjQUEzQyIsImZpbGUiOiJsaWIvY29tcGlsZWQvb3Bjb2Rlcy9jb21wb25lbnQuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBjb21iaW5lLCBDT05TVEFOVF9UQUcsIGlzQ29uc3QsIFJlZmVyZW5jZUNhY2hlIH0gZnJvbSAnQGdsaW1tZXIvcmVmZXJlbmNlJztcbmltcG9ydCB7IEFQUEVORF9PUENPREVTLCBVcGRhdGluZ09wY29kZSB9IGZyb20gJy4uLy4uL29wY29kZXMnO1xuaW1wb3J0IEFSR1MgZnJvbSAnLi4vLi4vdm0vYXJndW1lbnRzJztcbmltcG9ydCB7IENvbXBvbmVudEVsZW1lbnRPcGVyYXRpb25zIH0gZnJvbSAnLi9kb20nO1xuaW1wb3J0IHsgQXNzZXJ0IH0gZnJvbSAnLi92bSc7XG5BUFBFTkRfT1BDT0RFUy5hZGQoNTUgLyogUHVzaENvbXBvbmVudE1hbmFnZXIgKi8sICh2bSwgeyBvcDE6IF9kZWZpbml0aW9uIH0pID0+IHtcbiAgICBsZXQgZGVmaW5pdGlvbiA9IHZtLmNvbnN0YW50cy5nZXRPdGhlcihfZGVmaW5pdGlvbik7XG4gICAgbGV0IHN0YWNrID0gdm0uc3RhY2s7XG4gICAgc3RhY2sucHVzaCh7IGRlZmluaXRpb24sIG1hbmFnZXI6IGRlZmluaXRpb24ubWFuYWdlciwgY29tcG9uZW50OiBudWxsIH0pO1xufSk7XG5BUFBFTkRfT1BDT0RFUy5hZGQoNTYgLyogUHVzaER5bmFtaWNDb21wb25lbnRNYW5hZ2VyICovLCB2bSA9PiB7XG4gICAgbGV0IHN0YWNrID0gdm0uc3RhY2s7XG4gICAgbGV0IHJlZmVyZW5jZSA9IHN0YWNrLnBvcCgpO1xuICAgIGxldCBjYWNoZSA9IGlzQ29uc3QocmVmZXJlbmNlKSA/IHVuZGVmaW5lZCA6IG5ldyBSZWZlcmVuY2VDYWNoZShyZWZlcmVuY2UpO1xuICAgIGxldCBkZWZpbml0aW9uID0gY2FjaGUgPyBjYWNoZS5wZWVrKCkgOiByZWZlcmVuY2UudmFsdWUoKTtcbiAgICBzdGFjay5wdXNoKHsgZGVmaW5pdGlvbiwgbWFuYWdlcjogZGVmaW5pdGlvbi5tYW5hZ2VyLCBjb21wb25lbnQ6IG51bGwgfSk7XG4gICAgaWYgKGNhY2hlKSB7XG4gICAgICAgIHZtLnVwZGF0ZVdpdGgobmV3IEFzc2VydChjYWNoZSkpO1xuICAgIH1cbn0pO1xuQVBQRU5EX09QQ09ERVMuYWRkKDU3IC8qIFB1c2hBcmdzICovLCAodm0sIHsgb3AxOiBzeW50aGV0aWMgfSkgPT4ge1xuICAgIGxldCBzdGFjayA9IHZtLnN0YWNrO1xuICAgIEFSR1Muc2V0dXAoc3RhY2ssICEhc3ludGhldGljKTtcbiAgICBzdGFjay5wdXNoKEFSR1MpO1xufSk7XG5BUFBFTkRfT1BDT0RFUy5hZGQoNTggLyogUHJlcGFyZUFyZ3MgKi8sICh2bSwgeyBvcDE6IF9zdGF0ZSB9KSA9PiB7XG4gICAgbGV0IHN0YWNrID0gdm0uc3RhY2s7XG4gICAgbGV0IHsgZGVmaW5pdGlvbiwgbWFuYWdlciB9ID0gdm0uZmV0Y2hWYWx1ZShfc3RhdGUpO1xuICAgIGxldCBhcmdzID0gc3RhY2sucG9wKCk7XG4gICAgbGV0IHByZXBhcmVkQXJncyA9IG1hbmFnZXIucHJlcGFyZUFyZ3MoZGVmaW5pdGlvbiwgYXJncyk7XG4gICAgaWYgKHByZXBhcmVkQXJncykge1xuICAgICAgICBhcmdzLmNsZWFyKCk7XG4gICAgICAgIGxldCB7IHBvc2l0aW9uYWwsIG5hbWVkIH0gPSBwcmVwYXJlZEFyZ3M7XG4gICAgICAgIGxldCBwb3NpdGlvbmFsQ291bnQgPSBwb3NpdGlvbmFsLmxlbmd0aDtcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBwb3NpdGlvbmFsQ291bnQ7IGkrKykge1xuICAgICAgICAgICAgc3RhY2sucHVzaChwb3NpdGlvbmFsW2ldKTtcbiAgICAgICAgfVxuICAgICAgICBzdGFjay5wdXNoKHBvc2l0aW9uYWxDb3VudCk7XG4gICAgICAgIGxldCBuYW1lcyA9IE9iamVjdC5rZXlzKG5hbWVkKTtcbiAgICAgICAgbGV0IG5hbWVkQ291bnQgPSBuYW1lcy5sZW5ndGg7XG4gICAgICAgIGxldCBhdE5hbWVzID0gW107XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbmFtZWRDb3VudDsgaSsrKSB7XG4gICAgICAgICAgICBsZXQgdmFsdWUgPSBuYW1lZFtuYW1lc1tpXV07XG4gICAgICAgICAgICBsZXQgYXROYW1lID0gYEAke25hbWVzW2ldfWA7XG4gICAgICAgICAgICBzdGFjay5wdXNoKHZhbHVlKTtcbiAgICAgICAgICAgIGF0TmFtZXMucHVzaChhdE5hbWUpO1xuICAgICAgICB9XG4gICAgICAgIHN0YWNrLnB1c2goYXROYW1lcyk7XG4gICAgICAgIGFyZ3Muc2V0dXAoc3RhY2ssIGZhbHNlKTtcbiAgICB9XG4gICAgc3RhY2sucHVzaChhcmdzKTtcbn0pO1xuQVBQRU5EX09QQ09ERVMuYWRkKDU5IC8qIENyZWF0ZUNvbXBvbmVudCAqLywgKHZtLCB7IG9wMTogZmxhZ3MsIG9wMjogX3N0YXRlIH0pID0+IHtcbiAgICBsZXQgZGVmaW5pdGlvbjtcbiAgICBsZXQgbWFuYWdlcjtcbiAgICBsZXQgYXJncyA9IHZtLnN0YWNrLnBvcCgpO1xuICAgIGxldCBkeW5hbWljU2NvcGUgPSB2bS5keW5hbWljU2NvcGUoKTtcbiAgICBsZXQgc3RhdGUgPSAoeyBkZWZpbml0aW9uLCBtYW5hZ2VyIH0gPSB2bS5mZXRjaFZhbHVlKF9zdGF0ZSkpO1xuICAgIGxldCBoYXNEZWZhdWx0QmxvY2sgPSBmbGFncyAmIDBiMDE7XG4gICAgbGV0IGNvbXBvbmVudCA9IG1hbmFnZXIuY3JlYXRlKHZtLmVudiwgZGVmaW5pdGlvbiwgYXJncywgZHluYW1pY1Njb3BlLCB2bS5nZXRTZWxmKCksICEhaGFzRGVmYXVsdEJsb2NrKTtcbiAgICBzdGF0ZS5jb21wb25lbnQgPSBjb21wb25lbnQ7XG4gICAgdm0udXBkYXRlV2l0aChuZXcgVXBkYXRlQ29tcG9uZW50T3Bjb2RlKGFyZ3MudGFnLCBkZWZpbml0aW9uLm5hbWUsIGNvbXBvbmVudCwgbWFuYWdlciwgZHluYW1pY1Njb3BlKSk7XG59KTtcbkFQUEVORF9PUENPREVTLmFkZCg2MCAvKiBSZWdpc3RlckNvbXBvbmVudERlc3RydWN0b3IgKi8sICh2bSwgeyBvcDE6IF9zdGF0ZSB9KSA9PiB7XG4gICAgbGV0IHsgbWFuYWdlciwgY29tcG9uZW50IH0gPSB2bS5mZXRjaFZhbHVlKF9zdGF0ZSk7XG4gICAgbGV0IGRlc3RydWN0b3IgPSBtYW5hZ2VyLmdldERlc3RydWN0b3IoY29tcG9uZW50KTtcbiAgICBpZiAoZGVzdHJ1Y3Rvcikgdm0ubmV3RGVzdHJveWFibGUoZGVzdHJ1Y3Rvcik7XG59KTtcbkFQUEVORF9PUENPREVTLmFkZCg2NCAvKiBCZWdpbkNvbXBvbmVudFRyYW5zYWN0aW9uICovLCB2bSA9PiB7XG4gICAgdm0uYmVnaW5DYWNoZUdyb3VwKCk7XG4gICAgdm0uZWxlbWVudHMoKS5wdXNoU2ltcGxlQmxvY2soKTtcbn0pO1xuQVBQRU5EX09QQ09ERVMuYWRkKDYxIC8qIFB1c2hDb21wb25lbnRPcGVyYXRpb25zICovLCB2bSA9PiB7XG4gICAgdm0uc3RhY2sucHVzaChuZXcgQ29tcG9uZW50RWxlbWVudE9wZXJhdGlvbnModm0uZW52KSk7XG59KTtcbkFQUEVORF9PUENPREVTLmFkZCg2NiAvKiBEaWRDcmVhdGVFbGVtZW50ICovLCAodm0sIHsgb3AxOiBfc3RhdGUgfSkgPT4ge1xuICAgIGxldCB7IG1hbmFnZXIsIGNvbXBvbmVudCB9ID0gdm0uZmV0Y2hWYWx1ZShfc3RhdGUpO1xuICAgIGxldCBhY3Rpb24gPSAnRGlkQ3JlYXRlRWxlbWVudE9wY29kZSNldmFsdWF0ZSc7XG4gICAgbWFuYWdlci5kaWRDcmVhdGVFbGVtZW50KGNvbXBvbmVudCwgdm0uZWxlbWVudHMoKS5leHBlY3RDb25zdHJ1Y3RpbmcoYWN0aW9uKSwgdm0uZWxlbWVudHMoKS5leHBlY3RPcGVyYXRpb25zKGFjdGlvbikpO1xufSk7XG5BUFBFTkRfT1BDT0RFUy5hZGQoNjIgLyogR2V0Q29tcG9uZW50U2VsZiAqLywgKHZtLCB7IG9wMTogX3N0YXRlIH0pID0+IHtcbiAgICBsZXQgc3RhdGUgPSB2bS5mZXRjaFZhbHVlKF9zdGF0ZSk7XG4gICAgdm0uc3RhY2sucHVzaChzdGF0ZS5tYW5hZ2VyLmdldFNlbGYoc3RhdGUuY29tcG9uZW50KSk7XG59KTtcbkFQUEVORF9PUENPREVTLmFkZCg2MyAvKiBHZXRDb21wb25lbnRMYXlvdXQgKi8sICh2bSwgeyBvcDE6IF9zdGF0ZSB9KSA9PiB7XG4gICAgbGV0IHsgbWFuYWdlciwgZGVmaW5pdGlvbiwgY29tcG9uZW50IH0gPSB2bS5mZXRjaFZhbHVlKF9zdGF0ZSk7XG4gICAgdm0uc3RhY2sucHVzaChtYW5hZ2VyLmxheW91dEZvcihkZWZpbml0aW9uLCBjb21wb25lbnQsIHZtLmVudikpO1xufSk7XG5BUFBFTkRfT1BDT0RFUy5hZGQoNjcgLyogRGlkUmVuZGVyTGF5b3V0ICovLCAodm0sIHsgb3AxOiBfc3RhdGUgfSkgPT4ge1xuICAgIGxldCB7IG1hbmFnZXIsIGNvbXBvbmVudCB9ID0gdm0uZmV0Y2hWYWx1ZShfc3RhdGUpO1xuICAgIGxldCBib3VuZHMgPSB2bS5lbGVtZW50cygpLnBvcEJsb2NrKCk7XG4gICAgbWFuYWdlci5kaWRSZW5kZXJMYXlvdXQoY29tcG9uZW50LCBib3VuZHMpO1xuICAgIHZtLmVudi5kaWRDcmVhdGUoY29tcG9uZW50LCBtYW5hZ2VyKTtcbiAgICB2bS51cGRhdGVXaXRoKG5ldyBEaWRVcGRhdGVMYXlvdXRPcGNvZGUobWFuYWdlciwgY29tcG9uZW50LCBib3VuZHMpKTtcbn0pO1xuQVBQRU5EX09QQ09ERVMuYWRkKDY1IC8qIENvbW1pdENvbXBvbmVudFRyYW5zYWN0aW9uICovLCB2bSA9PiB2bS5jb21taXRDYWNoZUdyb3VwKCkpO1xuZXhwb3J0IGNsYXNzIFVwZGF0ZUNvbXBvbmVudE9wY29kZSBleHRlbmRzIFVwZGF0aW5nT3Bjb2RlIHtcbiAgICBjb25zdHJ1Y3Rvcih0YWcsIG5hbWUsIGNvbXBvbmVudCwgbWFuYWdlciwgZHluYW1pY1Njb3BlKSB7XG4gICAgICAgIHN1cGVyKCk7XG4gICAgICAgIHRoaXMubmFtZSA9IG5hbWU7XG4gICAgICAgIHRoaXMuY29tcG9uZW50ID0gY29tcG9uZW50O1xuICAgICAgICB0aGlzLm1hbmFnZXIgPSBtYW5hZ2VyO1xuICAgICAgICB0aGlzLmR5bmFtaWNTY29wZSA9IGR5bmFtaWNTY29wZTtcbiAgICAgICAgdGhpcy50eXBlID0gJ3VwZGF0ZS1jb21wb25lbnQnO1xuICAgICAgICBsZXQgY29tcG9uZW50VGFnID0gbWFuYWdlci5nZXRUYWcoY29tcG9uZW50KTtcbiAgICAgICAgaWYgKGNvbXBvbmVudFRhZykge1xuICAgICAgICAgICAgdGhpcy50YWcgPSBjb21iaW5lKFt0YWcsIGNvbXBvbmVudFRhZ10pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy50YWcgPSB0YWc7XG4gICAgICAgIH1cbiAgICB9XG4gICAgZXZhbHVhdGUoX3ZtKSB7XG4gICAgICAgIGxldCB7IGNvbXBvbmVudCwgbWFuYWdlciwgZHluYW1pY1Njb3BlIH0gPSB0aGlzO1xuICAgICAgICBtYW5hZ2VyLnVwZGF0ZShjb21wb25lbnQsIGR5bmFtaWNTY29wZSk7XG4gICAgfVxuICAgIHRvSlNPTigpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGFyZ3M6IFtKU09OLnN0cmluZ2lmeSh0aGlzLm5hbWUpXSxcbiAgICAgICAgICAgIGd1aWQ6IHRoaXMuX2d1aWQsXG4gICAgICAgICAgICB0eXBlOiB0aGlzLnR5cGVcbiAgICAgICAgfTtcbiAgICB9XG59XG5leHBvcnQgY2xhc3MgRGlkVXBkYXRlTGF5b3V0T3Bjb2RlIGV4dGVuZHMgVXBkYXRpbmdPcGNvZGUge1xuICAgIGNvbnN0cnVjdG9yKG1hbmFnZXIsIGNvbXBvbmVudCwgYm91bmRzKSB7XG4gICAgICAgIHN1cGVyKCk7XG4gICAgICAgIHRoaXMubWFuYWdlciA9IG1hbmFnZXI7XG4gICAgICAgIHRoaXMuY29tcG9uZW50ID0gY29tcG9uZW50O1xuICAgICAgICB0aGlzLmJvdW5kcyA9IGJvdW5kcztcbiAgICAgICAgdGhpcy50eXBlID0gJ2RpZC11cGRhdGUtbGF5b3V0JztcbiAgICAgICAgdGhpcy50YWcgPSBDT05TVEFOVF9UQUc7XG4gICAgfVxuICAgIGV2YWx1YXRlKHZtKSB7XG4gICAgICAgIGxldCB7IG1hbmFnZXIsIGNvbXBvbmVudCwgYm91bmRzIH0gPSB0aGlzO1xuICAgICAgICBtYW5hZ2VyLmRpZFVwZGF0ZUxheW91dChjb21wb25lbnQsIGJvdW5kcyk7XG4gICAgICAgIHZtLmVudi5kaWRVcGRhdGUoY29tcG9uZW50LCBtYW5hZ2VyKTtcbiAgICB9XG59Il19

@@ -66,3 +66,3 @@ function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }

APPEND_OPCODES.add(71 /* Debugger */, function (vm, _ref) {
APPEND_OPCODES.add(70 /* Debugger */, function (vm, _ref) {
var _symbols = _ref.op1,

@@ -78,2 +78,2 @@ _evalInfo = _ref.op2;

});
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9jb21waWxlZC9vcGNvZGVzL2RlYnVnZ2VyLmpzIl0sIm5hbWVzIjpbImRpY3QiLCJBUFBFTkRfT1BDT0RFUyIsImRlYnVnQ2FsbGJhY2siLCJjb250ZXh0IiwiZ2V0IiwiY29uc29sZSIsImluZm8iLCJjYWxsYmFjayIsInNldERlYnVnZ2VyQ2FsbGJhY2siLCJjYiIsInJlc2V0RGVidWdnZXJDYWxsYmFjayIsIlNjb3BlSW5zcGVjdG9yIiwic2NvcGUiLCJzeW1ib2xzIiwiZXZhbEluZm8iLCJsb2NhbHMiLCJpIiwibGVuZ3RoIiwic2xvdCIsIm5hbWUiLCJyZWYiLCJnZXRTeW1ib2wiLCJwYXRoIiwicGFydHMiLCJzcGxpdCIsImhlYWQiLCJ0YWlsIiwiZXZhbFNjb3BlIiwiZ2V0RXZhbFNjb3BlIiwiZ2V0U2VsZiIsImluZGV4T2YiLCJyZWR1Y2UiLCJyIiwicGFydCIsImFkZCIsInZtIiwiX3N5bWJvbHMiLCJvcDEiLCJfZXZhbEluZm8iLCJvcDIiLCJjb25zdGFudHMiLCJnZXRPdGhlciIsImdldEFycmF5IiwiaW5zcGVjdG9yIiwidmFsdWUiXSwibWFwcGluZ3MiOiI7O0FBQUEsU0FBU0EsSUFBVCxRQUFxQixlQUFyQjtBQUNBLFNBQVNDLGNBQVQsUUFBK0IsZUFBL0I7QUFDQTtBQUNBLFNBQVNDLGFBQVQsQ0FBdUJDLE9BQXZCLEVBQWdDQyxHQUFoQyxFQUFxQztBQUNqQ0MsWUFBUUMsSUFBUixDQUFhLDBEQUFiO0FBQ0E7QUFDQUgsZ0JBQVlDLElBQUksTUFBSixDQUFaO0FBQ0E7QUFDSDtBQUNEO0FBQ0EsSUFBSUcsV0FBV0wsYUFBZjtBQUNBO0FBQ0EsT0FBTyxTQUFTTSxtQkFBVCxDQUE2QkMsRUFBN0IsRUFBaUM7QUFDcENGLGVBQVdFLEVBQVg7QUFDSDtBQUNELE9BQU8sU0FBU0MscUJBQVQsR0FBaUM7QUFDcENILGVBQVdMLGFBQVg7QUFDSDs7SUFDS1MsYztBQUNGLDRCQUFZQyxLQUFaLEVBQW1CQyxPQUFuQixFQUE0QkMsUUFBNUIsRUFBc0M7QUFBQTs7QUFDbEMsYUFBS0YsS0FBTCxHQUFhQSxLQUFiO0FBQ0EsYUFBS0csTUFBTCxHQUFjZixNQUFkO0FBQ0EsYUFBSyxJQUFJZ0IsSUFBSSxDQUFiLEVBQWdCQSxJQUFJRixTQUFTRyxNQUE3QixFQUFxQ0QsR0FBckMsRUFBMEM7QUFDdEMsZ0JBQUlFLE9BQU9KLFNBQVNFLENBQVQsQ0FBWDtBQUNBLGdCQUFJRyxPQUFPTixRQUFRSyxPQUFPLENBQWYsQ0FBWDtBQUNBLGdCQUFJRSxNQUFNUixNQUFNUyxTQUFOLENBQWdCSCxJQUFoQixDQUFWO0FBQ0EsaUJBQUtILE1BQUwsQ0FBWUksSUFBWixJQUFvQkMsR0FBcEI7QUFDSDtBQUNKOzs2QkFDRGhCLEcsZ0JBQUlrQixJLEVBQU07QUFBQSxZQUNBVixLQURBLEdBQ2tCLElBRGxCLENBQ0FBLEtBREE7QUFBQSxZQUNPRyxNQURQLEdBQ2tCLElBRGxCLENBQ09BLE1BRFA7O0FBRU4sWUFBSVEsUUFBUUQsS0FBS0UsS0FBTCxDQUFXLEdBQVgsQ0FBWjs7QUFGTSwwQkFHZ0JGLEtBQUtFLEtBQUwsQ0FBVyxHQUFYLENBSGhCO0FBQUEsWUFHREMsSUFIQztBQUFBLFlBR1FDLElBSFI7O0FBSU4sWUFBSUMsWUFBWWYsTUFBTWdCLFlBQU4sRUFBaEI7QUFDQSxZQUFJUixZQUFKO0FBQ0EsWUFBSUssU0FBUyxNQUFiLEVBQXFCO0FBQ2pCTCxrQkFBTVIsTUFBTWlCLE9BQU4sRUFBTjtBQUNILFNBRkQsTUFFTyxJQUFJZCxPQUFPVSxJQUFQLENBQUosRUFBa0I7QUFDckJMLGtCQUFNTCxPQUFPVSxJQUFQLENBQU47QUFDSCxTQUZNLE1BRUEsSUFBSUEsS0FBS0ssT0FBTCxDQUFhLEdBQWIsTUFBc0IsQ0FBdEIsSUFBMkJILFVBQVVGLElBQVYsQ0FBL0IsRUFBZ0Q7QUFDbkRMLGtCQUFNTyxVQUFVRixJQUFWLENBQU47QUFDSCxTQUZNLE1BRUE7QUFDSEwsa0JBQU0sS0FBS1IsS0FBTCxDQUFXaUIsT0FBWCxFQUFOO0FBQ0FILG1CQUFPSCxLQUFQO0FBQ0g7QUFDRCxlQUFPRyxLQUFLSyxNQUFMLENBQVksVUFBQ0MsQ0FBRCxFQUFJQyxJQUFKO0FBQUEsbUJBQWFELEVBQUU1QixHQUFGLENBQU02QixJQUFOLENBQWI7QUFBQSxTQUFaLEVBQXNDYixHQUF0QyxDQUFQO0FBQ0gsSzs7Ozs7QUFFTG5CLGVBQWVpQyxHQUFmLENBQW1CLEVBQW5CLENBQXNCLGNBQXRCLEVBQXNDLFVBQUNDLEVBQUQsUUFBMkM7QUFBQSxRQUEvQkMsUUFBK0IsUUFBcENDLEdBQW9DO0FBQUEsUUFBaEJDLFNBQWdCLFFBQXJCQyxHQUFxQjs7QUFDN0UsUUFBSTFCLFVBQVVzQixHQUFHSyxTQUFILENBQWFDLFFBQWIsQ0FBc0JMLFFBQXRCLENBQWQ7QUFDQSxRQUFJdEIsV0FBV3FCLEdBQUdLLFNBQUgsQ0FBYUUsUUFBYixDQUFzQkosU0FBdEIsQ0FBZjtBQUNBLFFBQUlLLFlBQVksSUFBSWhDLGNBQUosQ0FBbUJ3QixHQUFHdkIsS0FBSCxFQUFuQixFQUErQkMsT0FBL0IsRUFBd0NDLFFBQXhDLENBQWhCO0FBQ0FQLGFBQVM0QixHQUFHTixPQUFILEdBQWFlLEtBQWIsRUFBVCxFQUErQjtBQUFBLGVBQVFELFVBQVV2QyxHQUFWLENBQWNrQixJQUFkLEVBQW9Cc0IsS0FBcEIsRUFBUjtBQUFBLEtBQS9CO0FBQ0gsQ0FMRCIsImZpbGUiOiJsaWIvY29tcGlsZWQvb3Bjb2Rlcy9kZWJ1Z2dlci5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGRpY3QgfSBmcm9tICdAZ2xpbW1lci91dGlsJztcbmltcG9ydCB7IEFQUEVORF9PUENPREVTIH0gZnJvbSAnLi4vLi4vb3Bjb2Rlcyc7XG4vKiB0c2xpbnQ6ZGlzYWJsZSAqL1xuZnVuY3Rpb24gZGVidWdDYWxsYmFjayhjb250ZXh0LCBnZXQpIHtcbiAgICBjb25zb2xlLmluZm8oJ1VzZSBgY29udGV4dGAsIGFuZCBgZ2V0KDxwYXRoPilgIHRvIGRlYnVnIHRoaXMgdGVtcGxhdGUuJyk7XG4gICAgLy8gZm9yIGV4YW1wbGUuLi5cbiAgICBjb250ZXh0ID09PSBnZXQoJ3RoaXMnKTtcbiAgICBkZWJ1Z2dlcjtcbn1cbi8qIHRzbGludDplbmFibGUgKi9cbmxldCBjYWxsYmFjayA9IGRlYnVnQ2FsbGJhY2s7XG4vLyBGb3IgdGVzdGluZyBwdXJwb3Nlc1xuZXhwb3J0IGZ1bmN0aW9uIHNldERlYnVnZ2VyQ2FsbGJhY2soY2IpIHtcbiAgICBjYWxsYmFjayA9IGNiO1xufVxuZXhwb3J0IGZ1bmN0aW9uIHJlc2V0RGVidWdnZXJDYWxsYmFjaygpIHtcbiAgICBjYWxsYmFjayA9IGRlYnVnQ2FsbGJhY2s7XG59XG5jbGFzcyBTY29wZUluc3BlY3RvciB7XG4gICAgY29uc3RydWN0b3Ioc2NvcGUsIHN5bWJvbHMsIGV2YWxJbmZvKSB7XG4gICAgICAgIHRoaXMuc2NvcGUgPSBzY29wZTtcbiAgICAgICAgdGhpcy5sb2NhbHMgPSBkaWN0KCk7XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZXZhbEluZm8ubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGxldCBzbG90ID0gZXZhbEluZm9baV07XG4gICAgICAgICAgICBsZXQgbmFtZSA9IHN5bWJvbHNbc2xvdCAtIDFdO1xuICAgICAgICAgICAgbGV0IHJlZiA9IHNjb3BlLmdldFN5bWJvbChzbG90KTtcbiAgICAgICAgICAgIHRoaXMubG9jYWxzW25hbWVdID0gcmVmO1xuICAgICAgICB9XG4gICAgfVxuICAgIGdldChwYXRoKSB7XG4gICAgICAgIGxldCB7IHNjb3BlLCBsb2NhbHMgfSA9IHRoaXM7XG4gICAgICAgIGxldCBwYXJ0cyA9IHBhdGguc3BsaXQoJy4nKTtcbiAgICAgICAgbGV0IFtoZWFkLCAuLi50YWlsXSA9IHBhdGguc3BsaXQoJy4nKTtcbiAgICAgICAgbGV0IGV2YWxTY29wZSA9IHNjb3BlLmdldEV2YWxTY29wZSgpO1xuICAgICAgICBsZXQgcmVmO1xuICAgICAgICBpZiAoaGVhZCA9PT0gJ3RoaXMnKSB7XG4gICAgICAgICAgICByZWYgPSBzY29wZS5nZXRTZWxmKCk7XG4gICAgICAgIH0gZWxzZSBpZiAobG9jYWxzW2hlYWRdKSB7XG4gICAgICAgICAgICByZWYgPSBsb2NhbHNbaGVhZF07XG4gICAgICAgIH0gZWxzZSBpZiAoaGVhZC5pbmRleE9mKCdAJykgPT09IDAgJiYgZXZhbFNjb3BlW2hlYWRdKSB7XG4gICAgICAgICAgICByZWYgPSBldmFsU2NvcGVbaGVhZF07XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZWYgPSB0aGlzLnNjb3BlLmdldFNlbGYoKTtcbiAgICAgICAgICAgIHRhaWwgPSBwYXJ0cztcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGFpbC5yZWR1Y2UoKHIsIHBhcnQpID0+IHIuZ2V0KHBhcnQpLCByZWYpO1xuICAgIH1cbn1cbkFQUEVORF9PUENPREVTLmFkZCg3MSAvKiBEZWJ1Z2dlciAqLywgKHZtLCB7IG9wMTogX3N5bWJvbHMsIG9wMjogX2V2YWxJbmZvIH0pID0+IHtcbiAgICBsZXQgc3ltYm9scyA9IHZtLmNvbnN0YW50cy5nZXRPdGhlcihfc3ltYm9scyk7XG4gICAgbGV0IGV2YWxJbmZvID0gdm0uY29uc3RhbnRzLmdldEFycmF5KF9ldmFsSW5mbyk7XG4gICAgbGV0IGluc3BlY3RvciA9IG5ldyBTY29wZUluc3BlY3Rvcih2bS5zY29wZSgpLCBzeW1ib2xzLCBldmFsSW5mbyk7XG4gICAgY2FsbGJhY2sodm0uZ2V0U2VsZigpLnZhbHVlKCksIHBhdGggPT4gaW5zcGVjdG9yLmdldChwYXRoKS52YWx1ZSgpKTtcbn0pOyJdfQ==
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9jb21waWxlZC9vcGNvZGVzL2RlYnVnZ2VyLmpzIl0sIm5hbWVzIjpbImRpY3QiLCJBUFBFTkRfT1BDT0RFUyIsImRlYnVnQ2FsbGJhY2siLCJjb250ZXh0IiwiZ2V0IiwiY29uc29sZSIsImluZm8iLCJjYWxsYmFjayIsInNldERlYnVnZ2VyQ2FsbGJhY2siLCJjYiIsInJlc2V0RGVidWdnZXJDYWxsYmFjayIsIlNjb3BlSW5zcGVjdG9yIiwic2NvcGUiLCJzeW1ib2xzIiwiZXZhbEluZm8iLCJsb2NhbHMiLCJpIiwibGVuZ3RoIiwic2xvdCIsIm5hbWUiLCJyZWYiLCJnZXRTeW1ib2wiLCJwYXRoIiwicGFydHMiLCJzcGxpdCIsImhlYWQiLCJ0YWlsIiwiZXZhbFNjb3BlIiwiZ2V0RXZhbFNjb3BlIiwiZ2V0U2VsZiIsImluZGV4T2YiLCJyZWR1Y2UiLCJyIiwicGFydCIsImFkZCIsInZtIiwiX3N5bWJvbHMiLCJvcDEiLCJfZXZhbEluZm8iLCJvcDIiLCJjb25zdGFudHMiLCJnZXRPdGhlciIsImdldEFycmF5IiwiaW5zcGVjdG9yIiwidmFsdWUiXSwibWFwcGluZ3MiOiI7O0FBQUEsU0FBU0EsSUFBVCxRQUFxQixlQUFyQjtBQUNBLFNBQVNDLGNBQVQsUUFBK0IsZUFBL0I7QUFDQTtBQUNBLFNBQVNDLGFBQVQsQ0FBdUJDLE9BQXZCLEVBQWdDQyxHQUFoQyxFQUFxQztBQUNqQ0MsWUFBUUMsSUFBUixDQUFhLDBEQUFiO0FBQ0E7QUFDQUgsZ0JBQVlDLElBQUksTUFBSixDQUFaO0FBQ0E7QUFDSDtBQUNEO0FBQ0EsSUFBSUcsV0FBV0wsYUFBZjtBQUNBO0FBQ0EsT0FBTyxTQUFTTSxtQkFBVCxDQUE2QkMsRUFBN0IsRUFBaUM7QUFDcENGLGVBQVdFLEVBQVg7QUFDSDtBQUNELE9BQU8sU0FBU0MscUJBQVQsR0FBaUM7QUFDcENILGVBQVdMLGFBQVg7QUFDSDs7SUFDS1MsYztBQUNGLDRCQUFZQyxLQUFaLEVBQW1CQyxPQUFuQixFQUE0QkMsUUFBNUIsRUFBc0M7QUFBQTs7QUFDbEMsYUFBS0YsS0FBTCxHQUFhQSxLQUFiO0FBQ0EsYUFBS0csTUFBTCxHQUFjZixNQUFkO0FBQ0EsYUFBSyxJQUFJZ0IsSUFBSSxDQUFiLEVBQWdCQSxJQUFJRixTQUFTRyxNQUE3QixFQUFxQ0QsR0FBckMsRUFBMEM7QUFDdEMsZ0JBQUlFLE9BQU9KLFNBQVNFLENBQVQsQ0FBWDtBQUNBLGdCQUFJRyxPQUFPTixRQUFRSyxPQUFPLENBQWYsQ0FBWDtBQUNBLGdCQUFJRSxNQUFNUixNQUFNUyxTQUFOLENBQWdCSCxJQUFoQixDQUFWO0FBQ0EsaUJBQUtILE1BQUwsQ0FBWUksSUFBWixJQUFvQkMsR0FBcEI7QUFDSDtBQUNKOzs2QkFDRGhCLEcsZ0JBQUlrQixJLEVBQU07QUFBQSxZQUNBVixLQURBLEdBQ2tCLElBRGxCLENBQ0FBLEtBREE7QUFBQSxZQUNPRyxNQURQLEdBQ2tCLElBRGxCLENBQ09BLE1BRFA7O0FBRU4sWUFBSVEsUUFBUUQsS0FBS0UsS0FBTCxDQUFXLEdBQVgsQ0FBWjs7QUFGTSwwQkFHZ0JGLEtBQUtFLEtBQUwsQ0FBVyxHQUFYLENBSGhCO0FBQUEsWUFHREMsSUFIQztBQUFBLFlBR1FDLElBSFI7O0FBSU4sWUFBSUMsWUFBWWYsTUFBTWdCLFlBQU4sRUFBaEI7QUFDQSxZQUFJUixZQUFKO0FBQ0EsWUFBSUssU0FBUyxNQUFiLEVBQXFCO0FBQ2pCTCxrQkFBTVIsTUFBTWlCLE9BQU4sRUFBTjtBQUNILFNBRkQsTUFFTyxJQUFJZCxPQUFPVSxJQUFQLENBQUosRUFBa0I7QUFDckJMLGtCQUFNTCxPQUFPVSxJQUFQLENBQU47QUFDSCxTQUZNLE1BRUEsSUFBSUEsS0FBS0ssT0FBTCxDQUFhLEdBQWIsTUFBc0IsQ0FBdEIsSUFBMkJILFVBQVVGLElBQVYsQ0FBL0IsRUFBZ0Q7QUFDbkRMLGtCQUFNTyxVQUFVRixJQUFWLENBQU47QUFDSCxTQUZNLE1BRUE7QUFDSEwsa0JBQU0sS0FBS1IsS0FBTCxDQUFXaUIsT0FBWCxFQUFOO0FBQ0FILG1CQUFPSCxLQUFQO0FBQ0g7QUFDRCxlQUFPRyxLQUFLSyxNQUFMLENBQVksVUFBQ0MsQ0FBRCxFQUFJQyxJQUFKO0FBQUEsbUJBQWFELEVBQUU1QixHQUFGLENBQU02QixJQUFOLENBQWI7QUFBQSxTQUFaLEVBQXNDYixHQUF0QyxDQUFQO0FBQ0gsSzs7Ozs7QUFFTG5CLGVBQWVpQyxHQUFmLENBQW1CLEVBQW5CLENBQXNCLGNBQXRCLEVBQXNDLFVBQUNDLEVBQUQsUUFBMkM7QUFBQSxRQUEvQkMsUUFBK0IsUUFBcENDLEdBQW9DO0FBQUEsUUFBaEJDLFNBQWdCLFFBQXJCQyxHQUFxQjs7QUFDN0UsUUFBSTFCLFVBQVVzQixHQUFHSyxTQUFILENBQWFDLFFBQWIsQ0FBc0JMLFFBQXRCLENBQWQ7QUFDQSxRQUFJdEIsV0FBV3FCLEdBQUdLLFNBQUgsQ0FBYUUsUUFBYixDQUFzQkosU0FBdEIsQ0FBZjtBQUNBLFFBQUlLLFlBQVksSUFBSWhDLGNBQUosQ0FBbUJ3QixHQUFHdkIsS0FBSCxFQUFuQixFQUErQkMsT0FBL0IsRUFBd0NDLFFBQXhDLENBQWhCO0FBQ0FQLGFBQVM0QixHQUFHTixPQUFILEdBQWFlLEtBQWIsRUFBVCxFQUErQjtBQUFBLGVBQVFELFVBQVV2QyxHQUFWLENBQWNrQixJQUFkLEVBQW9Cc0IsS0FBcEIsRUFBUjtBQUFBLEtBQS9CO0FBQ0gsQ0FMRCIsImZpbGUiOiJsaWIvY29tcGlsZWQvb3Bjb2Rlcy9kZWJ1Z2dlci5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGRpY3QgfSBmcm9tICdAZ2xpbW1lci91dGlsJztcbmltcG9ydCB7IEFQUEVORF9PUENPREVTIH0gZnJvbSAnLi4vLi4vb3Bjb2Rlcyc7XG4vKiB0c2xpbnQ6ZGlzYWJsZSAqL1xuZnVuY3Rpb24gZGVidWdDYWxsYmFjayhjb250ZXh0LCBnZXQpIHtcbiAgICBjb25zb2xlLmluZm8oJ1VzZSBgY29udGV4dGAsIGFuZCBgZ2V0KDxwYXRoPilgIHRvIGRlYnVnIHRoaXMgdGVtcGxhdGUuJyk7XG4gICAgLy8gZm9yIGV4YW1wbGUuLi5cbiAgICBjb250ZXh0ID09PSBnZXQoJ3RoaXMnKTtcbiAgICBkZWJ1Z2dlcjtcbn1cbi8qIHRzbGludDplbmFibGUgKi9cbmxldCBjYWxsYmFjayA9IGRlYnVnQ2FsbGJhY2s7XG4vLyBGb3IgdGVzdGluZyBwdXJwb3Nlc1xuZXhwb3J0IGZ1bmN0aW9uIHNldERlYnVnZ2VyQ2FsbGJhY2soY2IpIHtcbiAgICBjYWxsYmFjayA9IGNiO1xufVxuZXhwb3J0IGZ1bmN0aW9uIHJlc2V0RGVidWdnZXJDYWxsYmFjaygpIHtcbiAgICBjYWxsYmFjayA9IGRlYnVnQ2FsbGJhY2s7XG59XG5jbGFzcyBTY29wZUluc3BlY3RvciB7XG4gICAgY29uc3RydWN0b3Ioc2NvcGUsIHN5bWJvbHMsIGV2YWxJbmZvKSB7XG4gICAgICAgIHRoaXMuc2NvcGUgPSBzY29wZTtcbiAgICAgICAgdGhpcy5sb2NhbHMgPSBkaWN0KCk7XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZXZhbEluZm8ubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGxldCBzbG90ID0gZXZhbEluZm9baV07XG4gICAgICAgICAgICBsZXQgbmFtZSA9IHN5bWJvbHNbc2xvdCAtIDFdO1xuICAgICAgICAgICAgbGV0IHJlZiA9IHNjb3BlLmdldFN5bWJvbChzbG90KTtcbiAgICAgICAgICAgIHRoaXMubG9jYWxzW25hbWVdID0gcmVmO1xuICAgICAgICB9XG4gICAgfVxuICAgIGdldChwYXRoKSB7XG4gICAgICAgIGxldCB7IHNjb3BlLCBsb2NhbHMgfSA9IHRoaXM7XG4gICAgICAgIGxldCBwYXJ0cyA9IHBhdGguc3BsaXQoJy4nKTtcbiAgICAgICAgbGV0IFtoZWFkLCAuLi50YWlsXSA9IHBhdGguc3BsaXQoJy4nKTtcbiAgICAgICAgbGV0IGV2YWxTY29wZSA9IHNjb3BlLmdldEV2YWxTY29wZSgpO1xuICAgICAgICBsZXQgcmVmO1xuICAgICAgICBpZiAoaGVhZCA9PT0gJ3RoaXMnKSB7XG4gICAgICAgICAgICByZWYgPSBzY29wZS5nZXRTZWxmKCk7XG4gICAgICAgIH0gZWxzZSBpZiAobG9jYWxzW2hlYWRdKSB7XG4gICAgICAgICAgICByZWYgPSBsb2NhbHNbaGVhZF07XG4gICAgICAgIH0gZWxzZSBpZiAoaGVhZC5pbmRleE9mKCdAJykgPT09IDAgJiYgZXZhbFNjb3BlW2hlYWRdKSB7XG4gICAgICAgICAgICByZWYgPSBldmFsU2NvcGVbaGVhZF07XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZWYgPSB0aGlzLnNjb3BlLmdldFNlbGYoKTtcbiAgICAgICAgICAgIHRhaWwgPSBwYXJ0cztcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGFpbC5yZWR1Y2UoKHIsIHBhcnQpID0+IHIuZ2V0KHBhcnQpLCByZWYpO1xuICAgIH1cbn1cbkFQUEVORF9PUENPREVTLmFkZCg3MCAvKiBEZWJ1Z2dlciAqLywgKHZtLCB7IG9wMTogX3N5bWJvbHMsIG9wMjogX2V2YWxJbmZvIH0pID0+IHtcbiAgICBsZXQgc3ltYm9scyA9IHZtLmNvbnN0YW50cy5nZXRPdGhlcihfc3ltYm9scyk7XG4gICAgbGV0IGV2YWxJbmZvID0gdm0uY29uc3RhbnRzLmdldEFycmF5KF9ldmFsSW5mbyk7XG4gICAgbGV0IGluc3BlY3RvciA9IG5ldyBTY29wZUluc3BlY3Rvcih2bS5zY29wZSgpLCBzeW1ib2xzLCBldmFsSW5mbyk7XG4gICAgY2FsbGJhY2sodm0uZ2V0U2VsZigpLnZhbHVlKCksIHBhdGggPT4gaW5zcGVjdG9yLmdldChwYXRoKS52YWx1ZSgpKTtcbn0pOyJdfQ==

@@ -32,3 +32,3 @@ import { APPEND_OPCODES } from '../../opcodes';

});
APPEND_OPCODES.add(70 /* ResolveMaybeLocal */, function (vm, _ref5) {
APPEND_OPCODES.add(69 /* ResolveMaybeLocal */, function (vm, _ref5) {
var _name = _ref5.op1;

@@ -90,2 +90,2 @@

});
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9jb21waWxlZC9vcGNvZGVzL2V4cHJlc3Npb25zLmpzIl0sIm5hbWVzIjpbIkFQUEVORF9PUENPREVTIiwiRkFMU0VfUkVGRVJFTkNFIiwiVFJVRV9SRUZFUkVOQ0UiLCJDb25jYXRSZWZlcmVuY2UiLCJhZGQiLCJ2bSIsIl9oZWxwZXIiLCJvcDEiLCJzdGFjayIsImhlbHBlciIsImNvbnN0YW50cyIsImdldEZ1bmN0aW9uIiwiYXJncyIsInBvcCIsInZhbHVlIiwiY2xlYXIiLCJwdXNoIiwiX2Z1bmN0aW9uIiwiZnVuYyIsInN5bWJvbCIsImV4cHIiLCJyZWZlcmVuY2VGb3JTeW1ib2wiLCJzY29wZSIsImJpbmRTeW1ib2wiLCJfbmFtZSIsIm5hbWUiLCJnZXRTdHJpbmciLCJsb2NhbHMiLCJnZXRQYXJ0aWFsTWFwIiwicmVmIiwidW5kZWZpbmVkIiwiZ2V0U2VsZiIsImdldCIsInN5bWJvbHMiLCJiaW5kQ2FsbGVyU2NvcGUiLCJvcDIiLCJwdXNoUm9vdFNjb3BlIiwiX2tleSIsImtleSIsIl9ibG9jayIsImJsb2NrIiwiZ2V0QmxvY2siLCJoYXNCbG9jayIsImhhc0Jsb2NrUGFyYW1zIiwic3ltYm9sVGFibGUiLCJwYXJhbWV0ZXJzIiwibGVuZ3RoIiwiY291bnQiLCJvdXQiLCJpIiwicmV2ZXJzZSJdLCJtYXBwaW5ncyI6IkFBQUEsU0FBU0EsY0FBVCxRQUErQixlQUEvQjtBQUNBLFNBQVNDLGVBQVQsRUFBMEJDLGNBQTFCLFFBQWdELGtCQUFoRDtBQUNBLFNBQVNDLGVBQVQsUUFBZ0MsdUJBQWhDO0FBQ0FILGVBQWVJLEdBQWYsQ0FBbUIsQ0FBbkIsQ0FBcUIsWUFBckIsRUFBbUMsVUFBQ0MsRUFBRCxRQUEwQjtBQUFBLFFBQWRDLE9BQWMsUUFBbkJDLEdBQW1COztBQUN6RCxRQUFJQyxRQUFRSCxHQUFHRyxLQUFmO0FBQ0EsUUFBSUMsU0FBU0osR0FBR0ssU0FBSCxDQUFhQyxXQUFiLENBQXlCTCxPQUF6QixDQUFiO0FBQ0EsUUFBSU0sT0FB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LEVBQTJCQSxHQUEzQixFQUFnQztBQUM1QkQsWUFBSWhDLElBQUosQ0FBU1gsR0FBR0csS0FBSCxDQUFTSyxHQUFULEVBQVQ7QUFDSDtBQUNEUixPQUFHRyxLQUFILENBQVNRLElBQVQsQ0FBYyxJQUFJYixlQUFKLENBQW9CNkMsSUFBSUUsT0FBSixFQUFwQixDQUFkO0FBQ0gsQ0FORCIsImZpbGUiOiJsaWIvY29tcGlsZWQvb3Bjb2Rlcy9leHByZXNzaW9ucy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFQUEVORF9PUENPREVTIH0gZnJvbSAnLi4vLi4vb3Bjb2Rlcyc7XG5pbXBvcnQgeyBGQUxTRV9SRUZFUkVOQ0UsIFRSVUVfUkVGRVJFTkNFIH0gZnJvbSAnLi4vLi4vcmVmZXJlbmNlcyc7XG5pbXBvcnQgeyBDb25jYXRSZWZlcmVuY2UgfSBmcm9tICcuLi9leHByZXNzaW9ucy9jb25jYXQnO1xuQVBQRU5EX09QQ09ERVMuYWRkKDEgLyogSGVscGVyICovLCAodm0sIHsgb3AxOiBfaGVscGVyIH0pID0+IHtcbiAgICBsZXQgc3RhY2sgPSB2bS5zdGFjaztcbiAgICBsZXQgaGVscGVyID0gdm0uY29uc3RhbnRzLmdldEZ1bmN0aW9uKF9oZWxwZXIpO1xuICAgIGxldCBhcmdzID0gc3RhY2sucG9wKCk7XG4gICAgbGV0IHZhbHVlID0gaGVscGVyKHZtLCBhcmdzKTtcbiAgICBhcmdzLmNsZWFyKCk7XG4gICAgdm0uc3RhY2sucHVzaCh2YWx1ZSk7XG59KTtcbkFQUEVORF9PUENPREVTLmFkZCgyIC8qIEZ1bmN0aW9uICovLCAodm0sIHsgb3AxOiBfZnVuY3Rpb24gfSkgPT4ge1xuICAgIGxldCBmdW5jID0gdm0uY29uc3RhbnRzLmdldEZ1bmN0aW9uKF9mdW5jdGlvbik7XG4gICAgdm0uc3RhY2sucHVzaChmdW5jKHZtKSk7XG59KTtcbkFQUEVORF9PUENPREVTLmFkZCg1IC8qIEdldFZhcmlhYmxlICovLCAodm0sIHsgb3AxOiBzeW1ib2wgfSkgPT4ge1xuICAgIGxldCBleHByID0gdm0ucmVmZXJlbmNlRm9yU3ltYm9sKHN5bWJvbCk7XG4gICAgdm0uc3RhY2sucHVzaChleHByKTtcbn0pO1xuQVBQRU5EX09QQ09ERVMuYWRkKDQgLyogU2V0VmFyaWFibGUgKi8sICh2bSwgeyBvcDE6IHN5bWJvbCB9KSA9PiB7XG4gICAgbGV0IGV4cHIgPSB2bS5zdGFjay5wb3AoKTtcbiAgICB2bS5zY29wZSgpLmJpbmRTeW1ib2woc3ltYm9sLCBleHByKTtcbn0pO1xuQVBQRU5EX09QQ09ERVMuYWRkKDcwIC8qIFJlc29sdmVNYXliZUxvY2FsICovLCAodm0sIHsgb3AxOiBfbmFtZSB9KSA9PiB7XG4gICAgbGV0IG5hbWUgPSB2bS5jb25zdGFudHMuZ2V0U3RyaW5nKF9uYW1lKTtcbiAgICBsZXQgbG9jYWxzID0gdm0uc2NvcGUoKS5nZXRQYXJ0aWFsTWFwKCk7XG4gICAgbGV0IHJlZiA9IGxvY2Fsc1tuYW1lXTtcbiAgICBpZiAocmVmID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgcmVmID0gdm0uZ2V0U2VsZigpLmdldChuYW1lKTtcbiAgICB9XG4gICAgdm0uc3RhY2sucHVzaChyZWYpO1xufSk7XG5BUFBFTkRfT1BDT0RFUy5hZGQoMTkgLyogUm9vdFNjb3BlICovLCAodm0sIHsgb3AxOiBzeW1ib2xzLCBvcDI6IGJpbmRDYWxsZXJTY29wZSB9KSA9PiB7XG4gICAgdm0ucHVzaFJvb3RTY29wZShzeW1ib2xzLCAhIWJpbmRDYWxsZXJTY29wZSk7XG59KTtcbkFQUEVORF9PUENPREVTLmFkZCg2IC8qIEdldFByb3BlcnR5ICovLCAodm0sIHsgb3AxOiBfa2V5IH0pID0+IHtcbiAgICBsZXQga2V5ID0gdm0uY29uc3RhbnRzLmdldFN0cmluZyhfa2V5KTtcbiAgICBsZXQgZXhwciA9IHZtLnN0YWNrLnBvcCgpO1xuICAgIHZtLnN0YWNrLnB1c2goZXhwci5nZXQoa2V5KSk7XG59KTtcbkFQUEVORF9PUENPREVTLmFkZCg3IC8qIFB1c2hCbG9jayAqLywgKHZtLCB7IG9wMTogX2Jsb2NrIH0pID0+IHtcbiAgICBsZXQgYmxvY2sgPSBfYmxvY2sgPyB2bS5jb25zdGFudHMuZ2V0QmxvY2soX2Jsb2NrKSA6IG51bGw7XG4gICAgdm0uc3RhY2sucHVzaChibG9jayk7XG59KTtcbkFQUEVORF9PUENPREVTLmFkZCg4IC8qIEdldEJsb2NrICovLCAodm0sIHsgb3AxOiBfYmxvY2sgfSkgPT4ge1xuICAgIHZtLnN0YWNrLnB1c2godm0uc2NvcGUoKS5nZXRCbG9jayhfYmxvY2spKTtcbn0pO1xuQVBQRU5EX09QQ09ERVMuYWRkKDkgLyogSGFzQmxvY2sgKi8sICh2bSwgeyBvcDE6IF9ibG9jayB9KSA9PiB7XG4gICAgbGV0IGhhc0Jsb2NrID0gISF2bS5zY29wZSgpLmdldEJsb2NrKF9ibG9jayk7XG4gICAgdm0uc3RhY2sucHVzaChoYXNCbG9jayA/IFRSVUVfUkVGRVJFTkNFIDogRkFMU0VfUkVGRVJFTkNFKTtcbn0pO1xuQVBQRU5EX09QQ09ERVMuYWRkKDEwIC8qIEhhc0Jsb2NrUGFyYW1zICovLCAodm0sIHsgb3AxOiBfYmxvY2sgfSkgPT4ge1xuICAgIGxldCBibG9jayA9IHZtLnNjb3BlKCkuZ2V0QmxvY2soX2Jsb2NrKTtcbiAgICBsZXQgaGFzQmxvY2tQYXJhbXMgPSBibG9jayAmJiBibG9jay5zeW1ib2xUYWJsZS5wYXJhbWV0ZXJzLmxlbmd0aDtcbiAgICB2bS5zdGFjay5wdXNoKGhhc0Jsb2NrUGFyYW1zID8gVFJVRV9SRUZFUkVOQ0UgOiBGQUxTRV9SRUZFUkVOQ0UpO1xufSk7XG5BUFBFTkRfT1BDT0RFUy5hZGQoMTEgLyogQ29uY2F0ICovLCAodm0sIHsgb3AxOiBjb3VudCB9KSA9PiB7XG4gICAgbGV0IG91dCA9IFtdO1xuICAgIGZvciAobGV0IGkgPSBjb3VudDsgaSA+IDA7IGktLSkge1xuICAgICAgICBvdXQucHVzaCh2bS5zdGFjay5wb3AoKSk7XG4gICAgfVxuICAgIHZtLnN0YWNrLnB1c2gobmV3IENvbmNhdFJlZmVyZW5jZShvdXQucmV2ZXJzZSgpKSk7XG59KTsiXX0=
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9jb21waWxlZC9vcGNvZGVzL2V4cHJlc3Npb25zLmpzIl0sIm5hbWVzIjpbIkFQUEVORF9PUENPREVTIiwiRkFMU0VfUkVGRVJFTkNFIiwiVFJVRV9SRUZFUkVOQ0UiLCJDb25jYXRSZWZlcmVuY2UiLCJhZGQiLCJ2bSIsIl9oZWxwZXIiLCJvcDEiLCJzdGFjayIsImhlbHBlciIsImNvbnN0YW50cyIsImdldEZ1bmN0aW9uIiwiYXJncyIsInBvcCIsInZhbHVlIiwiY2xlYXIiLCJwdXNoIiwiX2Z1bmN0aW9uIiwiZnVuYyIsInN5bWJvbCIsImV4cHIiLCJyZWZlcmVuY2VGb3JTeW1ib2wiLCJzY29wZSIsImJpbmRTeW1ib2wiLCJfbmFtZSIsIm5hbWUiLCJnZXRTdHJpbmciLCJsb2NhbHMiLCJnZXRQYXJ0aWFsTWFwIiwicmVmIiwidW5kZWZpbmVkIiwiZ2V0U2VsZiIsImdldCIsInN5bWJvbHMiLCJiaW5kQ2FsbGVyU2NvcGUiLCJvcDIiLCJwdXNoUm9vdFNjb3BlIiwiX2tleSIsImtleSIsIl9ibG9jayIsImJsb2NrIiwiZ2V0QmxvY2siLCJoYXNCbG9jayIsImhhc0Jsb2NrUGFyYW1zIiwic3ltYm9sVGFibGUiLCJwYXJhbWV0ZXJzIiwibGVuZ3RoIiwiY291bnQiLCJvdXQiLCJpIiwicmV2ZXJzZSJdLCJtYXBwaW5ncyI6IkFBQUEsU0FBU0EsY0FBVCxRQUErQixlQUEvQjtBQUNBLFNBQVNDLGVBQVQsRUFBMEJDLGNBQTFCLFFBQWdELGtCQUFoRDtBQUNBLFNBQVNDLGVBQVQsUUFBZ0MsdUJBQWhDO0FBQ0FILGVBQWVJLEdBQWYsQ0FBbUIsQ0FBbkIsQ0FBcUIsWUFBckIsRUFBbUMsVUFBQ0MsRUFBRCxRQUEwQjtBQUFBLFFBQWRDLE9BQWMsUUFBbkJDLEdBQW1COztBQUN6RCxRQUFJQyxRQUFRSCxHQUFHRyxLQUFmO0FBQ0EsUUFBSUMsU0FBU0osR0FBR0ssU0FBSCxDQUFhQyxXQUFiLENBQXlCTCxPQUF6QixDQUFiO0FBQ0EsUUFBSU0sT0FB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LEVBQTJCQSxHQUEzQixFQUFnQztBQUM1QkQsWUFBSWhDLElBQUosQ0FBU1gsR0FBR0csS0FBSCxDQUFTSyxHQUFULEVBQVQ7QUFDSDtBQUNEUixPQUFHRyxLQUFILENBQVNRLElBQVQsQ0FBYyxJQUFJYixlQUFKLENBQW9CNkMsSUFBSUUsT0FBSixFQUFwQixDQUFkO0FBQ0gsQ0FORCIsImZpbGUiOiJsaWIvY29tcGlsZWQvb3Bjb2Rlcy9leHByZXNzaW9ucy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFQUEVORF9PUENPREVTIH0gZnJvbSAnLi4vLi4vb3Bjb2Rlcyc7XG5pbXBvcnQgeyBGQUxTRV9SRUZFUkVOQ0UsIFRSVUVfUkVGRVJFTkNFIH0gZnJvbSAnLi4vLi4vcmVmZXJlbmNlcyc7XG5pbXBvcnQgeyBDb25jYXRSZWZlcmVuY2UgfSBmcm9tICcuLi9leHByZXNzaW9ucy9jb25jYXQnO1xuQVBQRU5EX09QQ09ERVMuYWRkKDEgLyogSGVscGVyICovLCAodm0sIHsgb3AxOiBfaGVscGVyIH0pID0+IHtcbiAgICBsZXQgc3RhY2sgPSB2bS5zdGFjaztcbiAgICBsZXQgaGVscGVyID0gdm0uY29uc3RhbnRzLmdldEZ1bmN0aW9uKF9oZWxwZXIpO1xuICAgIGxldCBhcmdzID0gc3RhY2sucG9wKCk7XG4gICAgbGV0IHZhbHVlID0gaGVscGVyKHZtLCBhcmdzKTtcbiAgICBhcmdzLmNsZWFyKCk7XG4gICAgdm0uc3RhY2sucHVzaCh2YWx1ZSk7XG59KTtcbkFQUEVORF9PUENPREVTLmFkZCgyIC8qIEZ1bmN0aW9uICovLCAodm0sIHsgb3AxOiBfZnVuY3Rpb24gfSkgPT4ge1xuICAgIGxldCBmdW5jID0gdm0uY29uc3RhbnRzLmdldEZ1bmN0aW9uKF9mdW5jdGlvbik7XG4gICAgdm0uc3RhY2sucHVzaChmdW5jKHZtKSk7XG59KTtcbkFQUEVORF9PUENPREVTLmFkZCg1IC8qIEdldFZhcmlhYmxlICovLCAodm0sIHsgb3AxOiBzeW1ib2wgfSkgPT4ge1xuICAgIGxldCBleHByID0gdm0ucmVmZXJlbmNlRm9yU3ltYm9sKHN5bWJvbCk7XG4gICAgdm0uc3RhY2sucHVzaChleHByKTtcbn0pO1xuQVBQRU5EX09QQ09ERVMuYWRkKDQgLyogU2V0VmFyaWFibGUgKi8sICh2bSwgeyBvcDE6IHN5bWJvbCB9KSA9PiB7XG4gICAgbGV0IGV4cHIgPSB2bS5zdGFjay5wb3AoKTtcbiAgICB2bS5zY29wZSgpLmJpbmRTeW1ib2woc3ltYm9sLCBleHByKTtcbn0pO1xuQVBQRU5EX09QQ09ERVMuYWRkKDY5IC8qIFJlc29sdmVNYXliZUxvY2FsICovLCAodm0sIHsgb3AxOiBfbmFtZSB9KSA9PiB7XG4gICAgbGV0IG5hbWUgPSB2bS5jb25zdGFudHMuZ2V0U3RyaW5nKF9uYW1lKTtcbiAgICBsZXQgbG9jYWxzID0gdm0uc2NvcGUoKS5nZXRQYXJ0aWFsTWFwKCk7XG4gICAgbGV0IHJlZiA9IGxvY2Fsc1tuYW1lXTtcbiAgICBpZiAocmVmID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgcmVmID0gdm0uZ2V0U2VsZigpLmdldChuYW1lKTtcbiAgICB9XG4gICAgdm0uc3RhY2sucHVzaChyZWYpO1xufSk7XG5BUFBFTkRfT1BDT0RFUy5hZGQoMTkgLyogUm9vdFNjb3BlICovLCAodm0sIHsgb3AxOiBzeW1ib2xzLCBvcDI6IGJpbmRDYWxsZXJTY29wZSB9KSA9PiB7XG4gICAgdm0ucHVzaFJvb3RTY29wZShzeW1ib2xzLCAhIWJpbmRDYWxsZXJTY29wZSk7XG59KTtcbkFQUEVORF9PUENPREVTLmFkZCg2IC8qIEdldFByb3BlcnR5ICovLCAodm0sIHsgb3AxOiBfa2V5IH0pID0+IHtcbiAgICBsZXQga2V5ID0gdm0uY29uc3RhbnRzLmdldFN0cmluZyhfa2V5KTtcbiAgICBsZXQgZXhwciA9IHZtLnN0YWNrLnBvcCgpO1xuICAgIHZtLnN0YWNrLnB1c2goZXhwci5nZXQoa2V5KSk7XG59KTtcbkFQUEVORF9PUENPREVTLmFkZCg3IC8qIFB1c2hCbG9jayAqLywgKHZtLCB7IG9wMTogX2Jsb2NrIH0pID0+IHtcbiAgICBsZXQgYmxvY2sgPSBfYmxvY2sgPyB2bS5jb25zdGFudHMuZ2V0QmxvY2soX2Jsb2NrKSA6IG51bGw7XG4gICAgdm0uc3RhY2sucHVzaChibG9jayk7XG59KTtcbkFQUEVORF9PUENPREVTLmFkZCg4IC8qIEdldEJsb2NrICovLCAodm0sIHsgb3AxOiBfYmxvY2sgfSkgPT4ge1xuICAgIHZtLnN0YWNrLnB1c2godm0uc2NvcGUoKS5nZXRCbG9jayhfYmxvY2spKTtcbn0pO1xuQVBQRU5EX09QQ09ERVMuYWRkKDkgLyogSGFzQmxvY2sgKi8sICh2bSwgeyBvcDE6IF9ibG9jayB9KSA9PiB7XG4gICAgbGV0IGhhc0Jsb2NrID0gISF2bS5zY29wZSgpLmdldEJsb2NrKF9ibG9jayk7XG4gICAgdm0uc3RhY2sucHVzaChoYXNCbG9jayA/IFRSVUVfUkVGRVJFTkNFIDogRkFMU0VfUkVGRVJFTkNFKTtcbn0pO1xuQVBQRU5EX09QQ09ERVMuYWRkKDEwIC8qIEhhc0Jsb2NrUGFyYW1zICovLCAodm0sIHsgb3AxOiBfYmxvY2sgfSkgPT4ge1xuICAgIGxldCBibG9jayA9IHZtLnNjb3BlKCkuZ2V0QmxvY2soX2Jsb2NrKTtcbiAgICBsZXQgaGFzQmxvY2tQYXJhbXMgPSBibG9jayAmJiBibG9jay5zeW1ib2xUYWJsZS5wYXJhbWV0ZXJzLmxlbmd0aDtcbiAgICB2bS5zdGFjay5wdXNoKGhhc0Jsb2NrUGFyYW1zID8gVFJVRV9SRUZFUkVOQ0UgOiBGQUxTRV9SRUZFUkVOQ0UpO1xufSk7XG5BUFBFTkRfT1BDT0RFUy5hZGQoMTEgLyogQ29uY2F0ICovLCAodm0sIHsgb3AxOiBjb3VudCB9KSA9PiB7XG4gICAgbGV0IG91dCA9IFtdO1xuICAgIGZvciAobGV0IGkgPSBjb3VudDsgaSA+IDA7IGktLSkge1xuICAgICAgICBvdXQucHVzaCh2bS5zdGFjay5wb3AoKSk7XG4gICAgfVxuICAgIHZtLnN0YWNrLnB1c2gobmV3IENvbmNhdFJlZmVyZW5jZShvdXQucmV2ZXJzZSgpKSk7XG59KTsiXX0=
import { APPEND_OPCODES } from '../../opcodes';
APPEND_OPCODES.add(69 /* GetPartialTemplate */, function (vm) {
APPEND_OPCODES.add(68 /* GetPartialTemplate */, function (vm) {
var stack = vm.stack;

@@ -7,2 +7,2 @@ var definition = stack.pop();

});
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9jb21waWxlZC9vcGNvZGVzL3BhcnRpYWwuanMiXSwibmFtZXMiOlsiQVBQRU5EX09QQ09ERVMiLCJhZGQiLCJzdGFjayIsInZtIiwiZGVmaW5pdGlvbiIsInBvcCIsInB1c2giLCJ2YWx1ZSIsInRlbXBsYXRlIiwiYXNQYXJ0aWFsIl0sIm1hcHBpbmdzIjoiQUFBQSxTQUFTQSxjQUFULFFBQStCLGVBQS9CO0FBQ0FBLGVBQWVDLEdBQWYsQ0FBbUIsRUFBbkIsQ0FBc0Isd0JBQXRCLEVBQWdELGNBQU07QUFDbEQsUUFBSUMsUUFBUUMsR0FBR0QsS0FBZjtBQUNBLFFBQUlFLGFBQWFGLE1BQU1HLEdBQU4sRUFBakI7QUFDQUgsVUFBTUksSUFBTixDQUFXRixXQUFXRyxLQUFYLEdBQW1CQyxRQUFuQixDQUE0QkMsU0FBNUIsRUFBWDtBQUNILENBSkQiLCJmaWxlIjoibGliL2NvbXBpbGVkL29wY29kZXMvcGFydGlhbC5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFQUEVORF9PUENPREVTIH0gZnJvbSAnLi4vLi4vb3Bjb2Rlcyc7XG5BUFBFTkRfT1BDT0RFUy5hZGQoNjkgLyogR2V0UGFydGlhbFRlbXBsYXRlICovLCB2bSA9PiB7XG4gICAgbGV0IHN0YWNrID0gdm0uc3RhY2s7XG4gICAgbGV0IGRlZmluaXRpb24gPSBzdGFjay5wb3AoKTtcbiAgICBzdGFjay5wdXNoKGRlZmluaXRpb24udmFsdWUoKS50ZW1wbGF0ZS5hc1BhcnRpYWwoKSk7XG59KTsiXX0=
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9jb21waWxlZC9vcGNvZGVzL3BhcnRpYWwuanMiXSwibmFtZXMiOlsiQVBQRU5EX09QQ09ERVMiLCJhZGQiLCJzdGFjayIsInZtIiwiZGVmaW5pdGlvbiIsInBvcCIsInB1c2giLCJ2YWx1ZSIsInRlbXBsYXRlIiwiYXNQYXJ0aWFsIl0sIm1hcHBpbmdzIjoiQUFBQSxTQUFTQSxjQUFULFFBQStCLGVBQS9CO0FBQ0FBLGVBQWVDLEdBQWYsQ0FBbUIsRUFBbkIsQ0FBc0Isd0JBQXRCLEVBQWdELGNBQU07QUFDbEQsUUFBSUMsUUFBUUMsR0FBR0QsS0FBZjtBQUNBLFFBQUlFLGFBQWFGLE1BQU1HLEdBQU4sRUFBakI7QUFDQUgsVUFBTUksSUFBTixDQUFXRixXQUFXRyxLQUFYLEdBQW1CQyxRQUFuQixDQUE0QkMsU0FBNUIsRUFBWDtBQUNILENBSkQiLCJmaWxlIjoibGliL2NvbXBpbGVkL29wY29kZXMvcGFydGlhbC5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFQUEVORF9PUENPREVTIH0gZnJvbSAnLi4vLi4vb3Bjb2Rlcyc7XG5BUFBFTkRfT1BDT0RFUy5hZGQoNjggLyogR2V0UGFydGlhbFRlbXBsYXRlICovLCB2bSA9PiB7XG4gICAgbGV0IHN0YWNrID0gdm0uc3RhY2s7XG4gICAgbGV0IGRlZmluaXRpb24gPSBzdGFjay5wb3AoKTtcbiAgICBzdGFjay5wdXNoKGRlZmluaXRpb24udmFsdWUoKS50ZW1wbGF0ZS5hc1BhcnRpYWwoKSk7XG59KTsiXX0=

@@ -220,36 +220,34 @@ function _defaults(obj, defaults) { var keys = Object.getOwnPropertyNames(defaults); for (var i = 0; i < keys.length; i++) { var key = keys[i]; var value = Object.getOwnPropertyDescriptor(defaults, key); if (value && value.configurable && obj[key] === undefined) { Object.defineProperty(obj, key, value); } } return obj; }

return ['PushDynamicComponentManager', {}];
case 57 /* InitializeComponentState */:
return ['InitializeComponentState', {}];
case 58 /* PushArgs */:
return ['PushArgs', { synthetic: !!op1 }];
case 59 /* PrepareArgs */:
case 57 /* PushArgs */:
return ['PushArgs', { synthetic: !!op2 }];
case 58 /* PrepareArgs */:
return ['PrepareArgs', { state: Register[op1] }];
case 60 /* CreateComponent */:
case 59 /* CreateComponent */:
return ['CreateComponent', { flags: op1, state: Register[op2] }];
case 61 /* RegisterComponentDestructor */:
case 60 /* RegisterComponentDestructor */:
return ['RegisterComponentDestructor', {}];
case 62 /* PushComponentOperations */:
case 61 /* PushComponentOperations */:
return ['PushComponentOperations', {}];
case 63 /* GetComponentSelf */:
case 62 /* GetComponentSelf */:
return ['GetComponentSelf', { state: Register[op1] }];
case 64 /* GetComponentLayout */:
case 63 /* GetComponentLayout */:
return ['GetComponentLayout', { state: Register[op1] }];
case 65 /* BeginComponentTransaction */:
case 64 /* BeginComponentTransaction */:
return ['BeginComponentTransaction', {}];
case 66 /* CommitComponentTransaction */:
case 65 /* CommitComponentTransaction */:
return ['CommitComponentTransaction', {}];
case 67 /* DidCreateElement */:
case 66 /* DidCreateElement */:
return ['DidCreateElement', { state: Register[op1] }];
case 68 /* DidRenderLayout */:
case 67 /* DidRenderLayout */:
return ['DidRenderLayout', {}];
/// PARTIALS
case 69 /* GetPartialTemplate */:
case 68 /* GetPartialTemplate */:
return ['CompilePartial', {}];
case 70 /* ResolveMaybeLocal */:
case 69 /* ResolveMaybeLocal */:
return ['ResolveMaybeLocal', { name: c.getString(op1) }];
/// DEBUGGER
case 71 /* Debugger */:
case 70 /* Debugger */:
return ['Debugger', { symbols: c.getOther(op1), evalInfo: c.getArray(op2) }];
/// STATEMENTS
case 72 /* Size */:
case 71 /* Size */:
throw unreachable();

@@ -265,3 +263,3 @@ }

this.evaluateOpcode = fillNulls(72 /* Size */).slice();
this.evaluateOpcode = fillNulls(71 /* Size */).slice();
}

@@ -368,2 +366,2 @@

}
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9vcGNvZGVzLmpzIl0sIm5hbWVzIjpbImluaXRpYWxpemVHdWlkIiwiZmlsbE51bGxzIiwidW5yZWFjaGFibGUiLCJSZWdpc3RlciIsImRlYnVnU2xpY2UiLCJlbnYiLCJzdGFydCIsImVuZCIsInByb2dyYW0iLCJjb25zdGFudHMiLCJjb25zb2xlIiwiZ3JvdXAiLCJpIiwib3Bjb2RlIiwidHlwZSIsIm9wMSIsIm9wMiIsIm9wMyIsImRlYnVnIiwibmFtZSIsInBhcmFtcyIsImxvZyIsImxvZ09wY29kZSIsImdyb3VwRW5kIiwib3V0IiwiYXJncyIsIk9iamVjdCIsImtleXMiLCJtYXAiLCJwIiwianNvbiIsImpvaW4iLCJwYXJhbSIsInN0cmluZyIsIkpTT04iLCJzdHJpbmdpZnkiLCJlIiwidW5kZWZpbmVkIiwicGFyc2UiLCJHbGltbWVyRGVidWciLCJjIiwib3AiLCJoZWxwZXIiLCJnZXRGdW5jdGlvbiIsImZ1bmN0aW9uIiwic3ltYm9sIiwia2V5IiwiZ2V0U3RyaW5nIiwiYmxvY2siLCJnZXRCbG9jayIsInNpemUiLCJ2YWx1ZSIsImdldE90aGVyIiwicHJpbWl0aXZlIiwicmVnaXN0ZXIiLCJvZmZzZXQiLCJjb3VudCIsInN5bWJvbHMiLCJiaW5kQ2FsbGVyU2NvcGUiLCJ0ZXh0IiwiY29tbWVudCIsInRhZyIsIm5hbWVzcGFjZSIsInRydXN0aW5nIiwibnMiLCJpbnZva2VyIiwidG8iLCJkZWZpbml0aW9uIiwic3ludGhldGljIiwic3RhdGUiLCJmbGFncyIsImV2YWxJbmZvIiwiZ2V0QXJyYXkiLCJBcHBlbmRPcGNvZGVzIiwiZXZhbHVhdGVPcGNvZGUiLCJzbGljZSIsImFkZCIsImV2YWx1YXRlIiwidm0iLCJmdW5jIiwic3RhY2siLCJ0b0FycmF5Iiwic2NvcGUiLCJzIiwiZWxlbWVudHMiLCJBUFBFTkRfT1BDT0RFUyIsIkFic3RyYWN0T3Bjb2RlIiwidG9KU09OIiwiZ3VpZCIsIl9ndWlkIiwiVXBkYXRpbmdPcGNvZGUiLCJhcmd1bWVudHMiLCJuZXh0IiwicHJldiIsImluc3BlY3QiLCJvcGNvZGVzIiwiYnVmZmVyIiwiZm9yRWFjaCIsIl9pbnNwZWN0IiwibGV2ZWwiLCJpbmRleCIsImluZGVudGF0aW9uIiwicHVzaCIsImRldGFpbHMiLCJsZW5ndGgiLCJjaGlsZHJlbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7QUFBQSxTQUFTQSxjQUFULEVBQXlCQyxTQUF6QixFQUFvQ0MsV0FBcEMsUUFBdUQsZUFBdkQ7O0FBRUE7Ozs7OztBQU1BLE9BQU8sSUFBSUMsUUFBSjtBQUNQLENBQUMsVUFBVUEsUUFBVixFQUFvQjtBQUNqQjtBQUNBQSxhQUFTQSxTQUFTLElBQVQsSUFBaUIsQ0FBMUIsSUFBK0IsSUFBL0I7QUFDQTtBQUNBQSxhQUFTQSxTQUFTLElBQVQsSUFBaUIsQ0FBMUIsSUFBK0IsSUFBL0I7QUFDQTtBQUNBQSxhQUFTQSxTQUFTLElBQVQsSUFBaUIsQ0FBMUIsSUFBK0IsSUFBL0I7QUFDQTtBQUNBQSxhQUFTQSxTQUFTLElBQVQsSUFBaUIsQ0FBMUIsSUFBK0IsSUFBL0I7QUFDQTtBQUNBQSxhQUFTQSxTQUFTLElBQVQsSUFBaUIsQ0FBMUIsSUFBK0IsSUFBL0I7QUFDQUEsYUFBU0EsU0FBUyxJQUFULElBQWlCLENBQTFCLElBQStCLElBQS9CO0FBQ0E7QUFDQUEsYUFBU0EsU0FBUyxJQUFULElBQWlCLENBQTFCLElBQStCLElBQS9CO0FBQ0FBLGFBQVNBLFNBQVMsSUFBVCxJQUFpQixDQUExQixJQUErQixJQUEvQjtBQUNILENBZkQsRUFlR0EsYUFBYUEsV0FBVyxFQUF4QixDQWZIO0FBZ0JBLE9BQU8sU0FBU0MsVUFBVCxDQUFvQkMsR0FBcEIsRUFBeUJDLEtBQXpCLEVBQWdDQyxHQUFoQyxFQUFxQztBQUN4QyxRQUFJLENBQUMsS0FBRCxJQUFVLEtBQWQsRUFBcUI7QUFDakI7QUFEaUIsWUFFWEMsT0FGVyxHQUVZSCxHQUZaLENBRVhHLE9BRlc7QUFBQSxZQUVGQyxTQUZFLEdBRVlKLEdBRlosQ0FFRkksU0FGRTtBQUdq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QUFpRDtBQUM3Q3NGLHFCQUFTckYsT0FBTzRGLFFBQVAsQ0FBZ0I3RixFQUFoQixDQUFULEVBQTZCb0YsTUFBN0IsRUFBcUNHLFFBQVEsQ0FBN0MsRUFBZ0R2RixFQUFoRDtBQUNIO0FBQ0o7QUFDSiIsImZpbGUiOiJsaWIvb3Bjb2Rlcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGluaXRpYWxpemVHdWlkLCBmaWxsTnVsbHMsIHVucmVhY2hhYmxlIH0gZnJvbSAnQGdsaW1tZXIvdXRpbCc7XG5cbi8qKlxuICogUmVnaXN0ZXJzXG4gKlxuICogRm9yIHRoZSBtb3N0IHBhcnQsIHRoZXNlIGZvbGxvd3MgTUlQUyBuYW1pbmcgY29udmVudGlvbnMsIGhvd2V2ZXIgdGhlXG4gKiByZWdpc3RlciBudW1iZXJzIGFyZSBkaWZmZXJlbnQuXG4gKi9cbmV4cG9ydCB2YXIgUmVnaXN0ZXI7XG4oZnVuY3Rpb24gKFJlZ2lzdGVyKSB7XG4gICAgLy8gJDAgb3IgJHBjIChwcm9ncmFtIGNvdW50ZXIpOiBwb2ludGVyIGludG8gYHByb2dyYW1gIGZvciB0aGUgbmV4dCBpbnN0dXJjdGlvbjsgLTEgbWVhbnMgZXhpdFxuICAgIFJlZ2lzdGVyW1JlZ2lzdGVyW1wicGNcIl0gPSAwXSA9IFwicGNcIjtcbiAgICAvLyAkMSBvciAkcmEgKHJldHVybiBhZGRyZXNzKTogcG9pbnRlciBpbnRvIGBwcm9ncmFtYCBmb3IgdGhlIHJldHVyblxuICAgIFJlZ2lzdGVyW1JlZ2lzdGVyW1wicmFcIl0gPSAxXSA9IFwicmFcIjtcbiAgICAvLyAkMiBvciAkZnAgKGZyYW1lIHBvaW50ZXIpOiBwb2ludGVyIGludG8gdGhlIGBldmFsU3RhY2tgIGZvciB0aGUgYmFzZSBvZiB0aGUgc3RhY2tcbiAgICBSZWdpc3RlcltSZWdpc3RlcltcImZwXCJdID0gMl0gPSBcImZwXCI7XG4gICAgLy8gJDMgb3IgJHNwIChzdGFjayBwb2ludGVyKTogcG9pbnRlciBpbnRvIHRoZSBgZXZhbFN0YWNrYCBmb3IgdGhlIHRvcCBvZiB0aGUgc3RhY2tcbiAgICBSZWdpc3RlcltSZWdpc3RlcltcInNwXCJdID0gM10gPSBcInNwXCI7XG4gICAgLy8gJDQtJDUgb3IgJHMwLSRzMSAoc2F2ZWQpOiBjYWxsZWUgc2F2ZWQgZ2VuZXJhbC1wdXJwb3NlIHJlZ2lzdGVyc1xuICAgIFJlZ2lzdGVyW1JlZ2lzdGVyW1wiczBcIl0gPSA0XSA9IFwiczBcIjtcbiAgICBSZWdpc3RlcltSZWdpc3RlcltcInMxXCJdID0gNV0gPSBcInMxXCI7XG4gICAgLy8gJDYtJDcgb3IgJHQwLSR0MSAodGVtcG9yYXJpZXMpOiBjYWxsZXIgc2F2ZWQgZ2VuZXJhbC1wdXJwb3NlIHJlZ2lzdGVyc1xuICAgIFJlZ2lzdGVyW1JlZ2lzdGVyW1widDBcIl0gPSA2XSA9IFwidDBcIjtcbiAgICBSZWdpc3RlcltSZWdpc3RlcltcInQxXCJdID0gN10gPSBcInQxXCI7XG59KShSZWdpc3RlciB8fCAoUmVnaXN0ZXIgPSB7fSkpO1xuZXhwb3J0IGZ1bmN0aW9uIGRlYnVnU2xpY2UoZW52LCBzdGFydCwgZW5kKSB7XG4gICAgaWYgKCFmYWxzZSAmJiBmYWxzZSkge1xuICAgICAgICAvKiB0c2xpbnQ6ZGlzYWJsZTpuby1jb25zb2xlICovXG4gICAgICAgIGxldCB7IHByb2dyYW0sIGNvbnN0YW50cyB9ID0gZW52O1xuICAgICAgICAvLyBjb25zb2xlIGlzIG5vdCBhdmFpbGFibGUgaW4gSUU5XG4gICAgICAgIGlmICh0eXBlb2YgY29uc29sZSA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICAvLyBJRTEwIGRvZXMgbm90IGhhdmUgYGNvbnNvbGUuZ3JvdXBgXG4gICAgICAgIGlmICh0eXBlb2YgY29uc29sZS5ncm91cCAhPT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGNvbnNvbGUuZ3JvdXAoYCVjJHtzdGFydH06JHtlbmR9YCwgJ2NvbG9yOiAjOTk5Jyk7XG4gICAgICAgIGZvciAobGV0IGkgPSBzdGFydDsgaSA8PSBlbmQ7IGkgKz0gNCkge1xuICAgICAgICAgICAgbGV0IHsgdHlwZSwgb3AxLCBvcDIsIG9wMyB9ID0gcHJvZ3JhbS5vcGNvZGUoaSk7XG4gICAgICAgICAgICBsZXQgW25hbWUsIHBhcmFtc10gPSBkZWJ1Zyhjb25zdGFudHMsIHR5cGUsIG9wMSwgb3AyLCBvcDMpO1xuICAgICAgICAgICAgY29uc29sZS5sb2coYCR7aX0uICR7bG9nT3Bjb2RlKG5hbWUsIHBhcmFtcyl9YCk7XG4gICAgICAgIH1cbiAgICAgICAgY29uc29sZS5ncm91cEVuZCgpO1xuICAgICAgICAvKiB0c2xpbnQ6ZW5hYmxlOm5vLWNvbnNvbGUgKi9cbiAgICB9XG59XG5mdW5jdGlvbiBsb2dPcGNvZGUodHlwZSwgcGFyYW1zKSB7XG4gICAgaWYgKCFmYWxzZSAmJiBmYWxzZSkge1xuICAgICAgICBsZXQgb3V0ID0gdHlwZTtcbiAgICAgICAgaWYgKHBhcmFtcykge1xuICAgICAgICAgICAgbGV0IGFyZ3MgPSBPYmplY3Qua2V5cyhwYXJhbXMpLm1hcChwID0+IGAgJHtwfT0ke2pzb24ocGFyYW1zW3BdKX1gKS5qb2luKCcnKTtcbiAgICAgICAgICAgIG91dCArPSBhcmdzO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBgKCR7b3V0fSlgO1xuICAgIH1cbn1cbmZ1bmN0aW9uIGpzb24ocGFyYW0pIHtcbiAgICBpZiAodHlwZW9mIHBhcmFtID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIHJldHVybiAnPGZ1bmN0aW9uPic7XG4gICAgfVxuICAgIGxldCBzdHJpbmc7XG4gICAgdHJ5IHtcbiAgICAgICAgc3RyaW5nID0gSlNPTi5zdHJpbmdpZnkocGFyYW0pO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgcmV0dXJuICc8Y2Fubm90IGdlbmVyYXRlIEpTT04+JztcbiAgICB9XG4gICAgaWYgKHN0cmluZyA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHJldHVybiAndW5kZWZpbmVkJztcbiAgICB9XG4gICAgbGV0IGRlYnVnID0gSlNPTi5wYXJzZShzdHJpbmcpO1xuICAgIGlmICh0eXBlb2YgZGVidWcgPT09ICdvYmplY3QnICYmIGRlYnVnICE9PSBudWxsICYmIGRlYnVnLkdsaW1tZXJEZWJ1ZyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHJldHVybiBkZWJ1Zy5HbGltbWVyRGVidWc7XG4gICAgfVxuICAgIHJldHVybiBzdHJpbmc7XG59XG5mdW5jdGlvbiBkZWJ1ZyhjLCBvcCwgb3AxLCBvcDIsIG9wMykge1xuICAgIGlmICghZmFsc2UgJiYgZmFsc2UpIHtcbiAgICAgICAgc3dpdGNoIChvcCkge1xuICAgICAgICAgICAgY2FzZSAwIC8qIEJ1ZyAqLzpcbiAgICAgICAgICAgICAgICB0aHJvdyB1bnJlYWNoYWJsZSgpO1xuICAgICAgICAgICAgY2FzZSAxIC8qIEhlbHBlciAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydIZWxwZXInLCB7IGhlbHBlcjogYy5nZXRGdW5jdGlvbihvcDEpIH1dO1xuICAgICAgICAgICAgY2FzZSAyIC8qIEZ1bmN0aW9uICovOlxuICAgICAgICAgICAgICAgIHJldHVybiBbJ0Z1bmN0aW9uJywgeyBmdW5jdGlvbjogYy5nZXRGdW5jdGlvbihvcDEpIH1dO1xuICAgICAgICAgICAgY2FzZSA0IC8qIFNldFZhcmlhYmxlICovOlxuICAgICAgICAgICAgICAgIHJldHVybiBbJ1NldFZhcmlhYmxlJywgeyBzeW1ib2w6IG9wMSB9XTtcbiAgICAgICAgICAgIGNhc2UgNSAvKiBHZXRWYXJpYWJsZSAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydHZXRWYXJpYWJsZScsIHsgc3ltYm9sOiBvcDEgfV07XG4gICAgICAgICAgICBjYXNlIDYgLyogR2V0UHJvcGVydHkgKi86XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnR2V0UHJvcGVydHknLCB7IGtleTogYy5nZXRTdHJpbmcob3AxKSB9XTtcbiAgICAgICAgICAgIGNhc2UgNyAvKiBQdXNoQmxvY2sgKi86XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnUHVzaEJsb2NrJywgeyBibG9jazogYy5nZXRCbG9jayhvcDEpIH1dO1xuICAgICAgICAgICAgY2FzZSA4IC8qIEdldEJsb2NrICovOlxuICAgICAgICAgICAgICAgIHJldHVybiBbJ0dldEJsb2NrJywgeyBzeW1ib2w6IG9wMSB9XTtcbiAgICAgICAgICAgIGNhc2UgOSAvKiBIYXNCbG9jayAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydIYXNCbG9jaycsIHsgYmxvY2s6IG9wMSB9XTtcbiAgICAgICAgICAgIGNhc2UgMTAgLyogSGFzQmxvY2tQYXJhbXMgKi86XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnSGFzQmxvY2tQYXJhbXMnLCB7IGJsb2NrOiBvcDEgfV07XG4gICAgICAgICAgICBjYXNlIDExIC8qIENvbmNhdCAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydDb25jYXQnLCB7IHNpemU6IG9wMSB9XTtcbiAgICAgICAgICAgIGNhc2UgMTIgLyogSW1tZWRpYXRlICovOlxuICAgICAgICAgICAgICAgIHJldHVybiBbJ0ltbWVkaWF0ZScsIHsgdmFsdWU6IG9wMSB9XTtcbiAgICAgICAgICAgIGNhc2UgMTMgLyogQ29uc3RhbnQgKi86XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnQ29uc3RhbnQnLCB7IHZhbHVlOiBjLmdldE90aGVyKG9wMSkgfV07XG4gICAgICAgICAgICBjYXNlIDE0IC8qIFByaW1pdGl2ZVJlZmVyZW5jZSAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydQcmltaXRpdmVSZWZlcmVuY2UnLCB7IHByaW1pdGl2ZTogb3AxIH1dO1xuICAgICAgICAgICAgY2FzZSAxNSAvKiBEdXAgKi86XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnRHVwJywgeyByZWdpc3RlcjogUmVnaXN0ZXJbb3AxXSwgb2Zmc2V0OiBvcDIgfV07XG4gICAgICAgICAgICBjYXNlIDE2IC8qIFBvcCAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydQb3AnLCB7IGNvdW50OiBvcDEgfV07XG4gICAgICAgICAgICBjYXNlIDE3IC8qIExvYWQgKi86XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnTG9hZCcsIHsgcmVnaXN0ZXI6IFJlZ2lzdGVyW29wMV0gfV07XG4gICAgICAgICAgICBjYXNlIDE4IC8qIEZldGNoICovOlxuICAgICAgICAgICAgICAgIHJldHVybiBbJ0ZldGNoJywgeyByZWdpc3RlcjogUmVnaXN0ZXJbb3AxXSB9XTtcbiAgICAgICAgICAgIC8vLyBQUkVMVURFICYgRVhJVFxuICAgICAgICAgICAgY2FzZSAxOSAvKiBSb290U2NvcGUgKi86XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnUm9vdFNjb3BlJywgeyBzeW1ib2xzOiBvcDEsIGJpbmRDYWxsZXJTY29wZTogISFvcDIgfV07XG4gICAgICAgICAgICBjYXNlIDIwIC8qIENoaWxkU2NvcGUgKi86XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnQ2hpbGRTY29wZScsIHt9XTtcbiAgICAgICAgICAgIGNhc2UgMjEgLyogUG9wU2NvcGUgKi86XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnUG9wU2NvcGUnLCB7fV07XG4gICAgICAgICAgICBjYXNlIDIyIC8qIFJldHVybiAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydSZXR1cm4nLCB7fV07XG4gICAgICAgICAgICAvLy8gSFRNTFxuICAgICAgICAgICAgY2FzZSAyMyAvKiBUZXh0ICovOlxuICAgICAgICAgICAgICAgIHJldHVybiBbJ1RleHQnLCB7IHRleHQ6IGMuZ2V0U3RyaW5nKG9wMSkgfV07XG4gICAgICAgICAgICBjYXNlIDI0IC8qIENvbW1lbnQgKi86XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnQ29tbWVudCcsIHsgY29tbWVudDogYy5nZXRTdHJpbmcob3AxKSB9XTtcbiAgICAgICAgICAgIGNhc2UgMjUgLyogRHluYW1pY0NvbnRlbnQgKi86XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnRHluYW1pY0NvbnRlbnQnLCB7IHZhbHVlOiBjLmdldE90aGVyKG9wMSkgfV07XG4gICAgICAgICAgICBjYXNlIDI2IC8qIE9wZW5FbGVtZW50ICovOlxuICAgICAgICAgICAgICAgIHJldHVybiBbJ09wZW5FbGVtZW50JywgeyB0YWc6IGMuZ2V0U3RyaW5nKG9wMSkgfV07XG4gICAgICAgICAgICBjYXNlIDI3IC8qIE9wZW5FbGVtZW50V2l0aE9wZXJhdGlvbnMgKi86XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnT3BlbkVsZW1lbnRXaXRoT3BlcmF0aW9ucycsIHsgdGFnOiBjLmdldFN0cmluZyhvcDEpIH1dO1xuICAgICAgICAgICAgY2FzZSAyOCAvKiBPcGVuRHluYW1pY0VsZW1lbnQgKi86XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnT3BlbkR5bmFtaWNFbGVtZW50Jywge31dO1xuICAgICAgICAgICAgY2FzZSAyOSAvKiBTdGF0aWNBdHRyICovOlxuICAgICAgICAgICAgICAgIHJldHVybiBbJ1N0YXRpY0F0dHInLCB7IG5hbWU6IGMuZ2V0U3RyaW5nKG9wMSksIHZhbHVlOiBjLmdldFN0cmluZyhvcDIpLCBuYW1lc3BhY2U6IG9wMyA/IGMuZ2V0U3RyaW5nKG9wMykgOiBudWxsIH1dO1xuICAgICAgICAgICAgY2FzZSAzMCAvKiBEeW5hbWljQXR0ciAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydEeW5hbWljQXR0cicsIHsgbmFtZTogYy5nZXRTdHJpbmcob3AxKSwgdHJ1c3Rpbmc6ICEhb3AyIH1dO1xuICAgICAgICAgICAgY2FzZSAzMSAvKiBEeW5hbWljQXR0ck5TICovOlxuICAgICAgICAgICAgICAgIHJldHVybiBbJ0R5bmFtaWNBdHRyTlMnLCB7IG5hbWU6IGMuZ2V0U3RyaW5nKG9wMSksIG5zOiBjLmdldFN0cmluZyhvcDIpLCB0cnVzdGluZzogISFvcDIgfV07XG4gICAgICAgICAgICBjYXNlIDMyIC8qIEZsdXNoRWxlbWVudCAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydGbHVzaEVsZW1lbnQnLCB7fV07XG4gICAgICAgICAgICBjYXNlIDMzIC8qIENsb3NlRWxlbWVudCAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydDbG9zZUVsZW1lbnQnLCB7fV07XG4gICAgICAgICAgICAvLy8gTU9ESUZJRVJcbiAgICAgICAgICAgIGNhc2UgMzQgLyogTW9kaWZpZXIgKi86XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnTW9kaWZpZXInLCB7fV07XG4gICAgICAgICAgICAvLy8gV09STUhPTEVcbiAgICAgICAgICAgIGNhc2UgMzUgLyogUHVzaFJlbW90ZUVsZW1lbnQgKi86XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnUHVzaFJlbW90ZUVsZW1lbnQnLCB7fV07XG4gICAgICAgICAgICBjYXNlIDM2IC8qIFBvcFJlbW90ZUVsZW1lbnQgKi86XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnUG9wUmVtb3RlRWxlbWVudCcsIHt9XTtcbiAgICAgICAgICAgIC8vLyBEWU5BTUlDIFNDT1BFXG4gICAgICAgICAgICBjYXNlIDM3IC8qIEJpbmREeW5hbWljU2NvcGUgKi86XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnQmluZER5bmFtaWNTY29wZScsIHt9XTtcbiAgICAgICAgICAgIGNhc2UgMzggLyogUHVzaER5bmFtaWNTY29wZSAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydQdXNoRHluYW1pY1Njb3BlJywge31dO1xuICAgICAgICAgICAgY2FzZSAzOSAvKiBQb3BEeW5hbWljU2NvcGUgKi86XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnUG9wRHluYW1pY1Njb3BlJywge31dO1xuICAgICAgICAgICAgLy8vIFZNXG4gICAgICAgICAgICBjYXNlIDQwIC8qIENvbXBpbGVEeW5hbWljQmxvY2sgKi86XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnQ29tcGlsZUR5bmFtaWNCbG9jaycsIHt9XTtcbiAgICAgICAgICAgIGNhc2UgNDEgLyogSW52b2tlU3RhdGljICovOlxuICAgICAgICAgICAgICAgIHJldHVybiBbJ0ludm9rZVN0YXRpYycsIHsgYmxvY2s6IGMuZ2V0QmxvY2sob3AxKSB9XTtcbiAgICAgICAgICAgIGNhc2UgNDIgLyogSW52b2tlRHluYW1pYyAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydJbnZva2VEeW5hbWljJywgeyBpbnZva2VyOiBjLmdldE90aGVyKG9wMSkgfV07XG4gICAgICAgICAgICBjYXNlIDQzIC8qIEp1bXAgKi86XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnSnVtcCcsIHsgdG86IG9wMSB9XTtcbiAgICAgICAgICAgIGNhc2UgNDQgLyogSnVtcElmICovOlxuICAgICAgICAgICAgICAgIHJldHVybiBbJ0p1bXBJZicsIHsgdG86IG9wMSB9XTtcbiAgICAgICAgICAgIGNhc2UgNDUgLyogSnVtcFVubGVzcyAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydKdW1wVW5sZXNzJywgeyB0bzogb3AxIH1dO1xuICAgICAgICAgICAgY2FzZSA0NiAvKiBQdXNoRnJhbWUgKi86XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnUHVzaEZyYW1lJywge31dO1xuICAgICAgICAgICAgY2FzZSA0NyAvKiBQb3BGcmFtZSAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydQb3BGcmFtZScsIHt9XTtcbiAgICAgICAgICAgIGNhc2UgNDggLyogRW50ZXIgKi86XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnRW50ZXInLCB7IGFyZ3M6IG9wMSB9XTtcbiAgICAgICAgICAgIGNhc2UgNDkgLyogRXhpdCAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydFeGl0Jywge31dO1xuICAgICAgICAgICAgY2FzZSA1MCAvKiBUZXN0ICovOlxuICAgICAgICAgICAgICAgIHJldHVybiBbJ1RvQm9vbGVhbicsIHt9XTtcbiAgICAgICAgICAgIC8vLyBMSVNUU1xuICAgICAgICAgICAgY2FzZSA1MSAvKiBFbnRlckxpc3QgKi86XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnRW50ZXJMaXN0JywgeyBzdGFydDogb3AxIH1dO1xuICAgICAgICAgICAgY2FzZSA1MiAvKiBFeGl0TGlzdCAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydFeGl0TGlzdCcsIHt9XTtcbiAgICAgICAgICAgIGNhc2UgNTMgLyogUHV0SXRlcmF0b3IgKi86XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnUHV0SXRlcmF0b3InLCB7fV07XG4gICAgICAgICAgICBjYXNlIDU0IC8qIEl0ZXJhdGUgKi86XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnSXRlcmF0ZScsIHsgZW5kOiBvcDEgfV07XG4gICAgICAgICAgICAvLy8gQ09NUE9ORU5UU1xuICAgICAgICAgICAgY2FzZSA1NSAvKiBQdXNoQ29tcG9uZW50TWFuYWdlciAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydQdXNoQ29tcG9uZW50TWFuYWdlcicsIHsgZGVmaW5pdGlvbjogYy5nZXRPdGhlcihvcDEpIH1dO1xuICAgICAgICAgICAgY2FzZSA1NiAvKiBQdXNoRHluYW1pY0NvbXBvbmVudE1hbmFnZXIgKi86XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnUHVzaER5bmFtaWNDb21wb25lbnRNYW5hZ2VyJywge31dO1xuICAgICAgICAgICAgY2FzZSA1NyAvKiBJbml0aWFsaXplQ29tcG9uZW50U3RhdGUgKi86XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnSW5pdGlhbGl6ZUNvbXBvbmVudFN0YXRlJywge31dO1xuICAgICAgICAgICAgY2FzZSA1OCAvKiBQdXNoQXJncyAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydQdXNoQXJncycsIHsgc3ludGhldGljOiAhIW9wMSB9XTtcbiAgICAgICAgICAgIGNhc2UgNTkgLyogUHJlcGFyZUFyZ3MgKi86XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnUHJlcGFyZUFyZ3MnLCB7IHN0YXRlOiBSZWdpc3RlcltvcDFdIH1dO1xuICAgICAgICAgICAgY2FzZSA2MCAvKiBDcmVhdGVDb21wb25lbnQgKi86XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnQ3JlYXRlQ29tcG9uZW50JywgeyBmbGFnczogb3AxLCBzdGF0ZTogUmVnaXN0ZXJbb3AyXSB9XTtcbiAgICAgICAgICAgIGNhc2UgNjEgLyogUmVnaXN0ZXJDb21wb25lbnREZXN0cnVjdG9yICovOlxuICAgICAgICAgICAgICAgIHJldHVybiBbJ1JlZ2lzdGVyQ29tcG9uZW50RGVzdHJ1Y3RvcicsIHt9XTtcbiAgICAgICAgICAgIGNhc2UgNjIgLyogUHVzaENvbXBvbmVudE9wZXJhdGlvbnMgKi86XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnUHVzaENvbXBvbmVudE9wZXJhdGlvbnMnLCB7fV07XG4gICAgICAgICAgICBjYXNlIDYzIC8qIEdldENvbXBvbmVudFNlbGYgKi86XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnR2V0Q29tcG9uZW50U2VsZicsIHsgc3RhdGU6IFJlZ2lzdGVyW29wMV0gfV07XG4gICAgICAgICAgICBjYXNlIDY0IC8qIEdldENvbXBvbmVudExheW91dCAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydHZXRDb21wb25lbnRMYXlvdXQnLCB7IHN0YXRlOiBSZWdpc3RlcltvcDFdIH1dO1xuICAgICAgICAgICAgY2FzZSA2NSAvKiBCZWdpbkNvbXBvbmVudFRyYW5zYWN0aW9uICovOlxuICAgICAgICAgICAgICAgIHJldHVybiBbJ0JlZ2luQ29tcG9uZW50VHJhbnNhY3Rpb24nLCB7fV07XG4gICAgICAgICAgICBjYXNlIDY2IC8qIENvbW1pdENvbXBvbmVudFRyYW5zYWN0aW9uICovOlxuICAgICAgICAgICAgICAgIHJldHVybiBbJ0NvbW1pdENvbXBvbmVudFRyYW5zYWN0aW9uJywge31dO1xuICAgICAgICAgICAgY2FzZSA2NyAvKiBEaWRDcmVhdGVFbGVtZW50ICovOlxuICAgICAgICAgICAgICAgIHJldHVybiBbJ0RpZENyZWF0ZUVsZW1lbnQnLCB7IHN0YXRlOiBSZWdpc3RlcltvcDFdIH1dO1xuICAgICAgICAgICAgY2FzZSA2OCAvKiBEaWRSZW5kZXJMYXlvdXQgKi86XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnRGlkUmVuZGVyTGF5b3V0Jywge31dO1xuICAgICAgICAgICAgLy8vIFBBUlRJQUxTXG4gICAgICAgICAgICBjYXNlIDY5IC8qIEdldFBhcnRpYWxUZW1wbGF0ZSAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydDb21waWxlUGFydGlhbCcsIHt9XTtcbiAgICAgICAgICAgIGNhc2UgNzAgLyogUmVzb2x2ZU1heWJlTG9jYWwgKi86XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnUmVzb2x2ZU1heWJlTG9jYWwnLCB7IG5hbWU6IGMuZ2V0U3RyaW5nKG9wMSkgfV07XG4gICAgICAgICAgICAvLy8gREVCVUdHRVJcbiAgICAgICAgICAgIGNhc2UgNzEgLyogRGVidWdnZXIgKi86XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnRGVidWdnZXInLCB7IHN5bWJvbHM6IGMuZ2V0T3RoZXIob3AxKSwgZXZhbEluZm86IGMuZ2V0QXJyYXkob3AyKSB9XTtcbiAgICAgICAgICAgIC8vLyBTVEFURU1FTlRTXG4gICAgICAgICAgICBjYXNlIDcyIC8qIFNpemUgKi86XG4gICAgICAgICAgICAgICAgdGhyb3cgdW5yZWFjaGFibGUoKTtcbiAgICAgICAgfVxuICAgICAgICB0aHJvdyB1bnJlYWNoYWJsZSgpO1xuICAgIH1cbiAgICByZXR1cm4gWycnLCB7fV07XG59XG5leHBvcnQgY2xhc3MgQXBwZW5kT3Bjb2RlcyB7XG4gICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIHRoaXMuZXZhbHVhdGVPcGNvZGUgPSBmaWxsTnVsbHMoNzIgLyogU2l6ZSAqLykuc2xpY2UoKTtcbiAgICB9XG4gICAgYWRkKG5hbWUsIGV2YWx1YXRlKSB7XG4gICAgICAgIHRoaXMuZXZhbHVhdGVPcGNvZGVbbmFtZV0gPSBldmFsdWF0ZTtcbiAgICB9XG4gICAgZXZhbHVhdGUodm0sIG9wY29kZSwgdHlwZSkge1xuICAgICAgICBsZXQgZnVuYyA9IHRoaXMuZXZhbHVhdGVPcGNvZGVbdHlwZV07XG4gICAgICAgIGlmICghZmFsc2UgJiYgZmFsc2UpIHtcbiAgICAgICAgICAgIC8qIHRzbGludDpkaXNhYmxlICovXG4gICAgICAgICAgICBsZXQgW25hbWUsIHBhcmFtc10gPSBkZWJ1Zyh2bS5jb25zdGFudHMsIG9wY29kZS50eXBlLCBvcGNvZGUub3AxLCBvcGNvZGUub3AyLCBvcGNvZGUub3AzKTtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKGAke3ZtWydwYyddIC0gNH0uICR7bG9nT3Bjb2RlKG5hbWUsIHBhcmFtcyl9YCk7XG4gICAgICAgICAgICAvLyBjb25zb2xlLmxvZyguLi5kZWJ1Zyh2bS5jb25zdGFudHMsIHR5cGUsIG9wY29kZS5vcDEsIG9wY29kZS5vcDIsIG9wY29kZS5vcDMpKTtcbiAgICAgICAgICAgIC8qIHRzbGludDplbmFibGUgKi9cbiAgICAgICAgfVxuICAgICAgICBmdW5jKHZtLCBvcGNvZGUpO1xuICAgICAgICBpZiAoIWZhbHNlICYmIGZhbHNlKSB7XG4gICAgICAgICAgICAvKiB0c2xpbnQ6ZGlzYWJsZSAqL1xuICAgICAgICAgICAgY29uc29sZS5sb2coJyVjIC0+IHBjOiAlZCwgcmE6ICVkLCBmcDogJWQsIHNwOiAlZCwgczA6ICVPLCBzMTogJU8sIHQwOiAlTywgdDE6ICVPJywgJ2NvbG9yOiBvcmFuZ2UnLCB2bVsncGMnXSwgdm1bJ3JhJ10sIHZtWydmcCddLCB2bVsnc3AnXSwgdm1bJ3MwJ10sIHZtWydzMSddLCB2bVsndDAnXSwgdm1bJ3QxJ10pO1xuICAgICAgICAgICAgY29uc29sZS5sb2coJyVjIC0+IGV2YWwgc3RhY2snLCAnY29sb3I6IHJlZCcsIHZtLnN0YWNrLnRvQXJyYXkoKSk7XG4gICAgICAgICAgICBjb25zb2xlLmxvZygnJWMgLT4gc2NvcGUnLCAnY29sb3I6IGdyZWVuJywgdm0uc2NvcGUoKVsnc2xvdHMnXS5tYXAocyA9PiBzICYmIHNbJ3ZhbHVlJ10gPyBzWyd2YWx1ZSddKCkgOiBzKSk7XG4gICAgICAgICAgICBjb25zb2xlLmxvZygnJWMgLT4gZWxlbWVudHMnLCAnY29sb3I6IGJsdWUnLCB2bS5lbGVtZW50cygpWydlbGVtZW50U3RhY2snXS50b0FycmF5KCkpO1xuICAgICAgICAgICAgLyogdHNsaW50OmVuYWJsZSAqL1xuICAgICAgICB9XG4gICAgfVxufVxuZXhwb3J0IGNvbnN0IEFQUEVORF9PUENPREVTID0gbmV3IEFwcGVuZE9wY29kZXMoKTtcbmV4cG9ydCBjbGFzcyBBYnN0cmFjdE9wY29kZSB7XG4gICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIGluaXRpYWxpemVHdWlkKHRoaXMpO1xuICAgIH1cbiAgICB0b0pTT04oKSB7XG4gICAgICAgIHJldHVybiB7IGd1aWQ6IHRoaXMuX2d1aWQsIHR5cGU6IHRoaXMudHlwZSB9O1xuICAgIH1cbn1cbmV4cG9ydCBjbGFzcyBVcGRhdGluZ09wY29kZSBleHRlbmRzIEFic3RyYWN0T3Bjb2RlIHtcbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgc3VwZXIoLi4uYXJndW1lbnRzKTtcbiAgICAgICAgdGhpcy5uZXh0ID0gbnVsbDtcbiAgICAgICAgdGhpcy5wcmV2ID0gbnVsbDtcbiAgICB9XG59XG5leHBvcnQgZnVuY3Rpb24gaW5zcGVjdChvcGNvZGVzKSB7XG4gICAgbGV0IGJ1ZmZlciA9IFtdO1xuICAgIG9wY29kZXMuZm9yRWFjaCgob3Bjb2RlLCBpKSA9PiB7XG4gICAgICAgIF9pbnNwZWN0KG9wY29kZS50b0pTT04oKSwgYnVmZmVyLCAwLCBpKTtcbiAgICB9KTtcbiAgICByZXR1cm4gYnVmZmVyLmpvaW4oJycpO1xufVxuZnVuY3Rpb24gX2luc3BlY3Qob3Bjb2RlLCBidWZmZXIsIGxldmVsLCBpbmRleCkge1xuICAgIGxldCBpbmRlbnRhdGlvbiA9IFtdO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbGV2ZWw7IGkrKykge1xuICAgICAgICBpbmRlbnRhdGlvbi5wdXNoKCcgICcpO1xuICAgIH1cbiAgICBidWZmZXIucHVzaCguLi5pbmRlbnRhdGlvbik7XG4gICAgYnVmZmVyLnB1c2goYCR7aW5kZXh9LiAke29wY29kZS50eXBlfWApO1xuICAgIGlmIChvcGNvZGUuYXJncyB8fCBvcGNvZGUuZGV0YWlscykge1xuICAgICAgICBidWZmZXIucHVzaCgnKCcpO1xuICAgICAgICBpZiAob3Bjb2RlLmFyZ3MpIHtcbiAgICAgICAgICAgIGJ1ZmZlci5wdXNoKG9wY29kZS5hcmdzLmpvaW4oJywgJykpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChvcGNvZGUuZGV0YWlscykge1xuICAgICAgICAgICAgbGV0IGtleXMgPSBPYmplY3Qua2V5cyhvcGNvZGUuZGV0YWlscyk7XG4gICAgICAgICAgICBpZiAoa2V5cy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICBpZiAob3Bjb2RlLmFyZ3MgJiYgb3Bjb2RlLmFyZ3MubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgICAgIGJ1ZmZlci5wdXNoKCcsICcpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBidWZmZXIucHVzaChrZXlzLm1hcChrZXkgPT4gYCR7a2V5fT0ke29wY29kZS5kZXRhaWxzICYmIG9wY29kZS5kZXRhaWxzW2tleV19YCkuam9pbignLCAnKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgYnVmZmVyLnB1c2goJyknKTtcbiAgICB9XG4gICAgYnVmZmVyLnB1c2goJ1xcbicpO1xuICAgIGlmIChvcGNvZGUuY2hpbGRyZW4gJiYgb3Bjb2RlLmNoaWxkcmVuLmxlbmd0aCkge1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IG9wY29kZS5jaGlsZHJlbi5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgX2luc3BlY3Qob3Bjb2RlLmNoaWxkcmVuW2ldLCBidWZmZXIsIGxldmVsICsgMSwgaSk7XG4gICAgICAgIH1cbiAgICB9XG59Il19
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9vcGNvZGVzLmpzIl0sIm5hbWVzIjpbImluaXRpYWxpemVHdWlkIiwiZmlsbE51bGxzIiwidW5yZWFjaGFibGUiLCJSZWdpc3RlciIsImRlYnVnU2xpY2UiLCJlbnYiLCJzdGFydCIsImVuZCIsInByb2dyYW0iLCJjb25zdGFudHMiLCJjb25zb2xlIiwiZ3JvdXAiLCJpIiwib3Bjb2RlIiwidHlwZSIsIm9wMSIsIm9wMiIsIm9wMyIsImRlYnVnIiwibmFtZSIsInBhcmFtcyIsImxvZyIsImxvZ09wY29kZSIsImdyb3VwRW5kIiwib3V0IiwiYXJncyIsIk9iamVjdCIsImtleXMiLCJtYXAiLCJwIiwianNvbiIsImpvaW4iLCJwYXJhbSIsInN0cmluZyIsIkpTT04iLCJzdHJpbmdpZnkiLCJlIiwidW5kZWZpbmVkIiwicGFyc2UiLCJHbGltbWVyRGVidWciLCJjIiwib3AiLCJoZWxwZXIiLCJnZXRGdW5jdGlvbiIsImZ1bmN0aW9uIiwic3ltYm9sIiwia2V5IiwiZ2V0U3RyaW5nIiwiYmxvY2siLCJnZXRCbG9jayIsInNpemUiLCJ2YWx1ZSIsImdldE90aGVyIiwicHJpbWl0aXZlIiwicmVnaXN0ZXIiLCJvZmZzZXQiLCJjb3VudCIsInN5bWJvbHMiLCJiaW5kQ2FsbGVyU2NvcGUiLCJ0ZXh0IiwiY29tbWVudCIsInRhZyIsIm5hbWVzcGFjZSIsInRydXN0aW5nIiwibnMiLCJpbnZva2VyIiwidG8iLCJkZWZpbml0aW9uIiwic3ludGhldGljIiwic3RhdGUiLCJmbGFncyIsImV2YWxJbmZvIiwiZ2V0QXJyYXkiLCJBcHBlbmRPcGNvZGVzIiwiZXZhbHVhdGVPcGNvZGUiLCJzbGljZSIsImFkZCIsImV2YWx1YXRlIiwidm0iLCJmdW5jIiwic3RhY2siLCJ0b0FycmF5Iiwic2NvcGUiLCJzIiwiZWxlbWVudHMiLCJBUFBFTkRfT1BDT0RFUyIsIkFic3RyYWN0T3Bjb2RlIiwidG9KU09OIiwiZ3VpZCIsIl9ndWlkIiwiVXBkYXRpbmdPcGNvZGUiLCJhcmd1bWVudHMiLCJuZXh0IiwicHJldiIsImluc3BlY3QiLCJvcGNvZGVzIiwiYnVmZmVyIiwiZm9yRWFjaCIsIl9pbnNwZWN0IiwibGV2ZWwiLCJpbmRleCIsImluZGVudGF0aW9uIiwicHVzaCIsImRldGFpbHMiLCJsZW5ndGgiLCJjaGlsZHJlbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7QUFBQSxTQUFTQSxjQUFULEVBQXlCQyxTQUF6QixFQUFvQ0MsV0FBcEMsUUFBdUQsZUFBdkQ7O0FBRUE7Ozs7OztBQU1BLE9BQU8sSUFBSUMsUUFBSjtBQUNQLENBQUMsVUFBVUEsUUFBVixFQUFvQjtBQUNqQjtBQUNBQSxhQUFTQSxTQUFTLElBQVQsSUFBaUIsQ0FBMUIsSUFBK0IsSUFBL0I7QUFDQTtBQUNBQSxhQUFTQSxTQUFTLElBQVQsSUFBaUIsQ0FBMUIsSUFBK0IsSUFBL0I7QUFDQTtBQUNBQSxhQUFTQSxTQUFTLElBQVQsSUFBaUIsQ0FBMUIsSUFBK0IsSUFBL0I7QUFDQTtBQUNBQSxhQUFTQSxTQUFTLElBQVQsSUFBaUIsQ0FBMUIsSUFBK0IsSUFBL0I7QUFDQTtBQUNBQSxhQUFTQSxTQUFTLElBQVQsSUFBaUIsQ0FBMUIsSUFBK0IsSUFBL0I7QUFDQUEsYUFBU0EsU0FBUyxJQUFULElBQWlCLENBQTFCLElBQStCLElBQS9CO0FBQ0E7QUFDQUEsYUFBU0EsU0FBUyxJQUFULElBQWlCLENBQTFCLElBQStCLElBQS9CO0FBQ0FBLGFBQVNBLFNBQVMsSUFBVCxJQUFpQixDQUExQixJQUErQixJQUEvQjtBQUNILENBZkQsRUFlR0EsYUFBYUEsV0FBVyxFQUF4QixDQWZIO0FBZ0JBLE9BQU8sU0FBU0MsVUFBVCxDQUFvQkMsR0FBcEIsRUFBeUJDLEtBQXpCLEVBQWdDQyxHQUFoQyxFQUFxQztBQUN4QyxRQUFJLENBQUMsS0FBRCxJQUFVLEtBQWQsRUFBcUI7QUFDakI7QUFEaUIsWUFFWEMsT0FGVyxHQUVZSCxHQUZaLENBRVhHLE9BRlc7QUFBQSxZQUVGQyxTQUZFLEdBRVlKLEdBRlosQ0FFRkksU0FGRTtBQUdq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RUFBcUNHLFFBQVEsQ0FBN0MsRUFBZ0R2RixFQUFoRDtBQUNIO0FBQ0o7QUFDSiIsImZpbGUiOiJsaWIvb3Bjb2Rlcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGluaXRpYWxpemVHdWlkLCBmaWxsTnVsbHMsIHVucmVhY2hhYmxlIH0gZnJvbSAnQGdsaW1tZXIvdXRpbCc7XG5cbi8qKlxuICogUmVnaXN0ZXJzXG4gKlxuICogRm9yIHRoZSBtb3N0IHBhcnQsIHRoZXNlIGZvbGxvd3MgTUlQUyBuYW1pbmcgY29udmVudGlvbnMsIGhvd2V2ZXIgdGhlXG4gKiByZWdpc3RlciBudW1iZXJzIGFyZSBkaWZmZXJlbnQuXG4gKi9cbmV4cG9ydCB2YXIgUmVnaXN0ZXI7XG4oZnVuY3Rpb24gKFJlZ2lzdGVyKSB7XG4gICAgLy8gJDAgb3IgJHBjIChwcm9ncmFtIGNvdW50ZXIpOiBwb2ludGVyIGludG8gYHByb2dyYW1gIGZvciB0aGUgbmV4dCBpbnN0dXJjdGlvbjsgLTEgbWVhbnMgZXhpdFxuICAgIFJlZ2lzdGVyW1JlZ2lzdGVyW1wicGNcIl0gPSAwXSA9IFwicGNcIjtcbiAgICAvLyAkMSBvciAkcmEgKHJldHVybiBhZGRyZXNzKTogcG9pbnRlciBpbnRvIGBwcm9ncmFtYCBmb3IgdGhlIHJldHVyblxuICAgIFJlZ2lzdGVyW1JlZ2lzdGVyW1wicmFcIl0gPSAxXSA9IFwicmFcIjtcbiAgICAvLyAkMiBvciAkZnAgKGZyYW1lIHBvaW50ZXIpOiBwb2ludGVyIGludG8gdGhlIGBldmFsU3RhY2tgIGZvciB0aGUgYmFzZSBvZiB0aGUgc3RhY2tcbiAgICBSZWdpc3RlcltSZWdpc3RlcltcImZwXCJdID0gMl0gPSBcImZwXCI7XG4gICAgLy8gJDMgb3IgJHNwIChzdGFjayBwb2ludGVyKTogcG9pbnRlciBpbnRvIHRoZSBgZXZhbFN0YWNrYCBmb3IgdGhlIHRvcCBvZiB0aGUgc3RhY2tcbiAgICBSZWdpc3RlcltSZWdpc3RlcltcInNwXCJdID0gM10gPSBcInNwXCI7XG4gICAgLy8gJDQtJDUgb3IgJHMwLSRzMSAoc2F2ZWQpOiBjYWxsZWUgc2F2ZWQgZ2VuZXJhbC1wdXJwb3NlIHJlZ2lzdGVyc1xuICAgIFJlZ2lzdGVyW1JlZ2lzdGVyW1wiczBcIl0gPSA0XSA9IFwiczBcIjtcbiAgICBSZWdpc3RlcltSZWdpc3RlcltcInMxXCJdID0gNV0gPSBcInMxXCI7XG4gICAgLy8gJDYtJDcgb3IgJHQwLSR0MSAodGVtcG9yYXJpZXMpOiBjYWxsZXIgc2F2ZWQgZ2VuZXJhbC1wdXJwb3NlIHJlZ2lzdGVyc1xuICAgIFJlZ2lzdGVyW1JlZ2lzdGVyW1widDBcIl0gPSA2XSA9IFwidDBcIjtcbiAgICBSZWdpc3RlcltSZWdpc3RlcltcInQxXCJdID0gN10gPSBcInQxXCI7XG59KShSZWdpc3RlciB8fCAoUmVnaXN0ZXIgPSB7fSkpO1xuZXhwb3J0IGZ1bmN0aW9uIGRlYnVnU2xpY2UoZW52LCBzdGFydCwgZW5kKSB7XG4gICAgaWYgKCFmYWxzZSAmJiBmYWxzZSkge1xuICAgICAgICAvKiB0c2xpbnQ6ZGlzYWJsZTpuby1jb25zb2xlICovXG4gICAgICAgIGxldCB7IHByb2dyYW0sIGNvbnN0YW50cyB9ID0gZW52O1xuICAgICAgICAvLyBjb25zb2xlIGlzIG5vdCBhdmFpbGFibGUgaW4gSUU5XG4gICAgICAgIGlmICh0eXBlb2YgY29uc29sZSA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICAvLyBJRTEwIGRvZXMgbm90IGhhdmUgYGNvbnNvbGUuZ3JvdXBgXG4gICAgICAgIGlmICh0eXBlb2YgY29uc29sZS5ncm91cCAhPT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGNvbnNvbGUuZ3JvdXAoYCVjJHtzdGFydH06JHtlbmR9YCwgJ2NvbG9yOiAjOTk5Jyk7XG4gICAgICAgIGZvciAobGV0IGkgPSBzdGFydDsgaSA8PSBlbmQ7IGkgKz0gNCkge1xuICAgICAgICAgICAgbGV0IHsgdHlwZSwgb3AxLCBvcDIsIG9wMyB9ID0gcHJvZ3JhbS5vcGNvZGUoaSk7XG4gICAgICAgICAgICBsZXQgW25hbWUsIHBhcmFtc10gPSBkZWJ1Zyhjb25zdGFudHMsIHR5cGUsIG9wMSwgb3AyLCBvcDMpO1xuICAgICAgICAgICAgY29uc29sZS5sb2coYCR7aX0uICR7bG9nT3Bjb2RlKG5hbWUsIHBhcmFtcyl9YCk7XG4gICAgICAgIH1cbiAgICAgICAgY29uc29sZS5ncm91cEVuZCgpO1xuICAgICAgICAvKiB0c2xpbnQ6ZW5hYmxlOm5vLWNvbnNvbGUgKi9cbiAgICB9XG59XG5mdW5jdGlvbiBsb2dPcGNvZGUodHlwZSwgcGFyYW1zKSB7XG4gICAgaWYgKCFmYWxzZSAmJiBmYWxzZSkge1xuICAgICAgICBsZXQgb3V0ID0gdHlwZTtcbiAgICAgICAgaWYgKHBhcmFtcykge1xuICAgICAgICAgICAgbGV0IGFyZ3MgPSBPYmplY3Qua2V5cyhwYXJhbXMpLm1hcChwID0+IGAgJHtwfT0ke2pzb24ocGFyYW1zW3BdKX1gKS5qb2luKCcnKTtcbiAgICAgICAgICAgIG91dCArPSBhcmdzO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBgKCR7b3V0fSlgO1xuICAgIH1cbn1cbmZ1bmN0aW9uIGpzb24ocGFyYW0pIHtcbiAgICBpZiAodHlwZW9mIHBhcmFtID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIHJldHVybiAnPGZ1bmN0aW9uPic7XG4gICAgfVxuICAgIGxldCBzdHJpbmc7XG4gICAgdHJ5IHtcbiAgICAgICAgc3RyaW5nID0gSlNPTi5zdHJpbmdpZnkocGFyYW0pO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgcmV0dXJuICc8Y2Fubm90IGdlbmVyYXRlIEpTT04+JztcbiAgICB9XG4gICAgaWYgKHN0cmluZyA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHJldHVybiAndW5kZWZpbmVkJztcbiAgICB9XG4gICAgbGV0IGRlYnVnID0gSlNPTi5wYXJzZShzdHJpbmcpO1xuICAgIGlmICh0eXBlb2YgZGVidWcgPT09ICdvYmplY3QnICYmIGRlYnVnICE9PSBudWxsICYmIGRlYnVnLkdsaW1tZXJEZWJ1ZyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHJldHVybiBkZWJ1Zy5HbGltbWVyRGVidWc7XG4gICAgfVxuICAgIHJldHVybiBzdHJpbmc7XG59XG5mdW5jdGlvbiBkZWJ1ZyhjLCBvcCwgb3AxLCBvcDIsIG9wMykge1xuICAgIGlmICghZmFsc2UgJiYgZmFsc2UpIHtcbiAgICAgICAgc3dpdGNoIChvcCkge1xuICAgICAgICAgICAgY2FzZSAwIC8qIEJ1ZyAqLzpcbiAgICAgICAgICAgICAgICB0aHJvdyB1bnJlYWNoYWJsZSgpO1xuICAgICAgICAgICAgY2FzZSAxIC8qIEhlbHBlciAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydIZWxwZXInLCB7IGhlbHBlcjogYy5nZXRGdW5jdGlvbihvcDEpIH1dO1xuICAgICAgICAgICAgY2FzZSAyIC8qIEZ1bmN0aW9uICovOlxuICAgICAgICAgICAgICAgIHJldHVybiBbJ0Z1bmN0aW9uJywgeyBmdW5jdGlvbjogYy5nZXRGdW5jdGlvbihvcDEpIH1dO1xuICAgICAgICAgICAgY2FzZSA0IC8qIFNldFZhcmlhYmxlICovOlxuICAgICAgICAgICAgICAgIHJldHVybiBbJ1NldFZhcmlhYmxlJywgeyBzeW1ib2w6IG9wMSB9XTtcbiAgICAgICAgICAgIGNhc2UgNSAvKiBHZXRWYXJpYWJsZSAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydHZXRWYXJpYWJsZScsIHsgc3ltYm9sOiBvcDEgfV07XG4gICAgICAgICAgICBjYXNlIDYgLyogR2V0UHJvcGVydHkgKi86XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnR2V0UHJvcGVydHknLCB7IGtleTogYy5nZXRTdHJpbmcob3AxKSB9XTtcbiAgICAgICAgICAgIGNhc2UgNyAvKiBQdXNoQmxvY2sgKi86XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnUHVzaEJsb2NrJywgeyBibG9jazogYy5nZXRCbG9jayhvcDEpIH1dO1xuICAgICAgICAgICAgY2FzZSA4IC8qIEdldEJsb2NrICovOlxuICAgICAgICAgICAgICAgIHJldHVybiBbJ0dldEJsb2NrJywgeyBzeW1ib2w6IG9wMSB9XTtcbiAgICAgICAgICAgIGNhc2UgOSAvKiBIYXNCbG9jayAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydIYXNCbG9jaycsIHsgYmxvY2s6IG9wMSB9XTtcbiAgICAgICAgICAgIGNhc2UgMTAgLyogSGFzQmxvY2tQYXJhbXMgKi86XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnSGFzQmxvY2tQYXJhbXMnLCB7IGJsb2NrOiBvcDEgfV07XG4gICAgICAgICAgICBjYXNlIDExIC8qIENvbmNhdCAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydDb25jYXQnLCB7IHNpemU6IG9wMSB9XTtcbiAgICAgICAgICAgIGNhc2UgMTIgLyogSW1tZWRpYXRlICovOlxuICAgICAgICAgICAgICAgIHJldHVybiBbJ0ltbWVkaWF0ZScsIHsgdmFsdWU6IG9wMSB9XTtcbiAgICAgICAgICAgIGNhc2UgMTMgLyogQ29uc3RhbnQgKi86XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnQ29uc3RhbnQnLCB7IHZhbHVlOiBjLmdldE90aGVyKG9wMSkgfV07XG4gICAgICAgICAgICBjYXNlIDE0IC8qIFByaW1pdGl2ZVJlZmVyZW5jZSAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydQcmltaXRpdmVSZWZlcmVuY2UnLCB7IHByaW1pdGl2ZTogb3AxIH1dO1xuICAgICAgICAgICAgY2FzZSAxNSAvKiBEdXAgKi86XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnRHVwJywgeyByZWdpc3RlcjogUmVnaXN0ZXJbb3AxXSwgb2Zmc2V0OiBvcDIgfV07XG4gICAgICAgICAgICBjYXNlIDE2IC8qIFBvcCAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydQb3AnLCB7IGNvdW50OiBvcDEgfV07XG4gICAgICAgICAgICBjYXNlIDE3IC8qIExvYWQgKi86XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnTG9hZCcsIHsgcmVnaXN0ZXI6IFJlZ2lzdGVyW29wMV0gfV07XG4gICAgICAgICAgICBjYXNlIDE4IC8qIEZldGNoICovOlxuICAgICAgICAgICAgICAgIHJldHVybiBbJ0ZldGNoJywgeyByZWdpc3RlcjogUmVnaXN0ZXJbb3AxXSB9XTtcbiAgICAgICAgICAgIC8vLyBQUkVMVURFICYgRVhJVFxuICAgICAgICAgICAgY2FzZSAxOSAvKiBSb290U2NvcGUgKi86XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnUm9vdFNjb3BlJywgeyBzeW1ib2xzOiBvcDEsIGJpbmRDYWxsZXJTY29wZTogISFvcDIgfV07XG4gICAgICAgICAgICBjYXNlIDIwIC8qIENoaWxkU2NvcGUgKi86XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnQ2hpbGRTY29wZScsIHt9XTtcbiAgICAgICAgICAgIGNhc2UgMjEgLyogUG9wU2NvcGUgKi86XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnUG9wU2NvcGUnLCB7fV07XG4gICAgICAgICAgICBjYXNlIDIyIC8qIFJldHVybiAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydSZXR1cm4nLCB7fV07XG4gICAgICAgICAgICAvLy8gSFRNTFxuICAgICAgICAgICAgY2FzZSAyMyAvKiBUZXh0ICovOlxuICAgICAgICAgICAgICAgIHJldHVybiBbJ1RleHQnLCB7IHRleHQ6IGMuZ2V0U3RyaW5nKG9wMSkgfV07XG4gICAgICAgICAgICBjYXNlIDI0IC8qIENvbW1lbnQgKi86XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnQ29tbWVudCcsIHsgY29tbWVudDogYy5nZXRTdHJpbmcob3AxKSB9XTtcbiAgICAgICAgICAgIGNhc2UgMjUgLyogRHluYW1pY0NvbnRlbnQgKi86XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnRHluYW1pY0NvbnRlbnQnLCB7IHZhbHVlOiBjLmdldE90aGVyKG9wMSkgfV07XG4gICAgICAgICAgICBjYXNlIDI2IC8qIE9wZW5FbGVtZW50ICovOlxuICAgICAgICAgICAgICAgIHJldHVybiBbJ09wZW5FbGVtZW50JywgeyB0YWc6IGMuZ2V0U3RyaW5nKG9wMSkgfV07XG4gICAgICAgICAgICBjYXNlIDI3IC8qIE9wZW5FbGVtZW50V2l0aE9wZXJhdGlvbnMgKi86XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnT3BlbkVsZW1lbnRXaXRoT3BlcmF0aW9ucycsIHsgdGFnOiBjLmdldFN0cmluZyhvcDEpIH1dO1xuICAgICAgICAgICAgY2FzZSAyOCAvKiBPcGVuRHluYW1pY0VsZW1lbnQgKi86XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnT3BlbkR5bmFtaWNFbGVtZW50Jywge31dO1xuICAgICAgICAgICAgY2FzZSAyOSAvKiBTdGF0aWNBdHRyICovOlxuICAgICAgICAgICAgICAgIHJldHVybiBbJ1N0YXRpY0F0dHInLCB7IG5hbWU6IGMuZ2V0U3RyaW5nKG9wMSksIHZhbHVlOiBjLmdldFN0cmluZyhvcDIpLCBuYW1lc3BhY2U6IG9wMyA/IGMuZ2V0U3RyaW5nKG9wMykgOiBudWxsIH1dO1xuICAgICAgICAgICAgY2FzZSAzMCAvKiBEeW5hbWljQXR0ciAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydEeW5hbWljQXR0cicsIHsgbmFtZTogYy5nZXRTdHJpbmcob3AxKSwgdHJ1c3Rpbmc6ICEhb3AyIH1dO1xuICAgICAgICAgICAgY2FzZSAzMSAvKiBEeW5hbWljQXR0ck5TICovOlxuICAgICAgICAgICAgICAgIHJldHVybiBbJ0R5bmFtaWNBdHRyTlMnLCB7IG5hbWU6IGMuZ2V0U3RyaW5nKG9wMSksIG5zOiBjLmdldFN0cmluZyhvcDIpLCB0cnVzdGluZzogISFvcDIgfV07XG4gICAgICAgICAgICBjYXNlIDMyIC8qIEZsdXNoRWxlbWVudCAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydGbHVzaEVsZW1lbnQnLCB7fV07XG4gICAgICAgICAgICBjYXNlIDMzIC8qIENsb3NlRWxlbWVudCAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydDbG9zZUVsZW1lbnQnLCB7fV07XG4gICAgICAgICAgICAvLy8gTU9ESUZJRVJcbiAgICAgICAgICAgIGNhc2UgMzQgLyogTW9kaWZpZXIgKi86XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnTW9kaWZpZXInLCB7fV07XG4gICAgICAgICAgICAvLy8gV09STUhPTEVcbiAgICAgICAgICAgIGNhc2UgMzUgLyogUHVzaFJlbW90ZUVsZW1lbnQgKi86XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnUHVzaFJlbW90ZUVsZW1lbnQnLCB7fV07XG4gICAgICAgICAgICBjYXNlIDM2IC8qIFBvcFJlbW90ZUVsZW1lbnQgKi86XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnUG9wUmVtb3RlRWxlbWVudCcsIHt9XTtcbiAgICAgICAgICAgIC8vLyBEWU5BTUlDIFNDT1BFXG4gICAgICAgICAgICBjYXNlIDM3IC8qIEJpbmREeW5hbWljU2NvcGUgKi86XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnQmluZER5bmFtaWNTY29wZScsIHt9XTtcbiAgICAgICAgICAgIGNhc2UgMzggLyogUHVzaER5bmFtaWNTY29wZSAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydQdXNoRHluYW1pY1Njb3BlJywge31dO1xuICAgICAgICAgICAgY2FzZSAzOSAvKiBQb3BEeW5hbWljU2NvcGUgKi86XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnUG9wRHluYW1pY1Njb3BlJywge31dO1xuICAgICAgICAgICAgLy8vIFZNXG4gICAgICAgICAgICBjYXNlIDQwIC8qIENvbXBpbGVEeW5hbWljQmxvY2sgKi86XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnQ29tcGlsZUR5bmFtaWNCbG9jaycsIHt9XTtcbiAgICAgICAgICAgIGNhc2UgNDEgLyogSW52b2tlU3RhdGljICovOlxuICAgICAgICAgICAgICAgIHJldHVybiBbJ0ludm9rZVN0YXRpYycsIHsgYmxvY2s6IGMuZ2V0QmxvY2sob3AxKSB9XTtcbiAgICAgICAgICAgIGNhc2UgNDIgLyogSW52b2tlRHluYW1pYyAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydJbnZva2VEeW5hbWljJywgeyBpbnZva2VyOiBjLmdldE90aGVyKG9wMSkgfV07XG4gICAgICAgICAgICBjYXNlIDQzIC8qIEp1bXAgKi86XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnSnVtcCcsIHsgdG86IG9wMSB9XTtcbiAgICAgICAgICAgIGNhc2UgNDQgLyogSnVtcElmICovOlxuICAgICAgICAgICAgICAgIHJldHVybiBbJ0p1bXBJZicsIHsgdG86IG9wMSB9XTtcbiAgICAgICAgICAgIGNhc2UgNDUgLyogSnVtcFVubGVzcyAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydKdW1wVW5sZXNzJywgeyB0bzogb3AxIH1dO1xuICAgICAgICAgICAgY2FzZSA0NiAvKiBQdXNoRnJhbWUgKi86XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnUHVzaEZyYW1lJywge31dO1xuICAgICAgICAgICAgY2FzZSA0NyAvKiBQb3BGcmFtZSAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydQb3BGcmFtZScsIHt9XTtcbiAgICAgICAgICAgIGNhc2UgNDggLyogRW50ZXIgKi86XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnRW50ZXInLCB7IGFyZ3M6IG9wMSB9XTtcbiAgICAgICAgICAgIGNhc2UgNDkgLyogRXhpdCAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydFeGl0Jywge31dO1xuICAgICAgICAgICAgY2FzZSA1MCAvKiBUZXN0ICovOlxuICAgICAgICAgICAgICAgIHJldHVybiBbJ1RvQm9vbGVhbicsIHt9XTtcbiAgICAgICAgICAgIC8vLyBMSVNUU1xuICAgICAgICAgICAgY2FzZSA1MSAvKiBFbnRlckxpc3QgKi86XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnRW50ZXJMaXN0JywgeyBzdGFydDogb3AxIH1dO1xuICAgICAgICAgICAgY2FzZSA1MiAvKiBFeGl0TGlzdCAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydFeGl0TGlzdCcsIHt9XTtcbiAgICAgICAgICAgIGNhc2UgNTMgLyogUHV0SXRlcmF0b3IgKi86XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnUHV0SXRlcmF0b3InLCB7fV07XG4gICAgICAgICAgICBjYXNlIDU0IC8qIEl0ZXJhdGUgKi86XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnSXRlcmF0ZScsIHsgZW5kOiBvcDEgfV07XG4gICAgICAgICAgICAvLy8gQ09NUE9ORU5UU1xuICAgICAgICAgICAgY2FzZSA1NSAvKiBQdXNoQ29tcG9uZW50TWFuYWdlciAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydQdXNoQ29tcG9uZW50TWFuYWdlcicsIHsgZGVmaW5pdGlvbjogYy5nZXRPdGhlcihvcDEpIH1dO1xuICAgICAgICAgICAgY2FzZSA1NiAvKiBQdXNoRHluYW1pY0NvbXBvbmVudE1hbmFnZXIgKi86XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnUHVzaER5bmFtaWNDb21wb25lbnRNYW5hZ2VyJywge31dO1xuICAgICAgICAgICAgY2FzZSA1NyAvKiBQdXNoQXJncyAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydQdXNoQXJncycsIHsgc3ludGhldGljOiAhIW9wMiB9XTtcbiAgICAgICAgICAgIGNhc2UgNTggLyogUHJlcGFyZUFyZ3MgKi86XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnUHJlcGFyZUFyZ3MnLCB7IHN0YXRlOiBSZWdpc3RlcltvcDFdIH1dO1xuICAgICAgICAgICAgY2FzZSA1OSAvKiBDcmVhdGVDb21wb25lbnQgKi86XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnQ3JlYXRlQ29tcG9uZW50JywgeyBmbGFnczogb3AxLCBzdGF0ZTogUmVnaXN0ZXJbb3AyXSB9XTtcbiAgICAgICAgICAgIGNhc2UgNjAgLyogUmVnaXN0ZXJDb21wb25lbnREZXN0cnVjdG9yICovOlxuICAgICAgICAgICAgICAgIHJldHVybiBbJ1JlZ2lzdGVyQ29tcG9uZW50RGVzdHJ1Y3RvcicsIHt9XTtcbiAgICAgICAgICAgIGNhc2UgNjEgLyogUHVzaENvbXBvbmVudE9wZXJhdGlvbnMgKi86XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnUHVzaENvbXBvbmVudE9wZXJhdGlvbnMnLCB7fV07XG4gICAgICAgICAgICBjYXNlIDYyIC8qIEdldENvbXBvbmVudFNlbGYgKi86XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnR2V0Q29tcG9uZW50U2VsZicsIHsgc3RhdGU6IFJlZ2lzdGVyW29wMV0gfV07XG4gICAgICAgICAgICBjYXNlIDYzIC8qIEdldENvbXBvbmVudExheW91dCAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydHZXRDb21wb25lbnRMYXlvdXQnLCB7IHN0YXRlOiBSZWdpc3RlcltvcDFdIH1dO1xuICAgICAgICAgICAgY2FzZSA2NCAvKiBCZWdpbkNvbXBvbmVudFRyYW5zYWN0aW9uICovOlxuICAgICAgICAgICAgICAgIHJldHVybiBbJ0JlZ2luQ29tcG9uZW50VHJhbnNhY3Rpb24nLCB7fV07XG4gICAgICAgICAgICBjYXNlIDY1IC8qIENvbW1pdENvbXBvbmVudFRyYW5zYWN0aW9uICovOlxuICAgICAgICAgICAgICAgIHJldHVybiBbJ0NvbW1pdENvbXBvbmVudFRyYW5zYWN0aW9uJywge31dO1xuICAgICAgICAgICAgY2FzZSA2NiAvKiBEaWRDcmVhdGVFbGVtZW50ICovOlxuICAgICAgICAgICAgICAgIHJldHVybiBbJ0RpZENyZWF0ZUVsZW1lbnQnLCB7IHN0YXRlOiBSZWdpc3RlcltvcDFdIH1dO1xuICAgICAgICAgICAgY2FzZSA2NyAvKiBEaWRSZW5kZXJMYXlvdXQgKi86XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnRGlkUmVuZGVyTGF5b3V0Jywge31dO1xuICAgICAgICAgICAgLy8vIFBBUlRJQUxTXG4gICAgICAgICAgICBjYXNlIDY4IC8qIEdldFBhcnRpYWxUZW1wbGF0ZSAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydDb21waWxlUGFydGlhbCcsIHt9XTtcbiAgICAgICAgICAgIGNhc2UgNjkgLyogUmVzb2x2ZU1heWJlTG9jYWwgKi86XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnUmVzb2x2ZU1heWJlTG9jYWwnLCB7IG5hbWU6IGMuZ2V0U3RyaW5nKG9wMSkgfV07XG4gICAgICAgICAgICAvLy8gREVCVUdHRVJcbiAgICAgICAgICAgIGNhc2UgNzAgLyogRGVidWdnZXIgKi86XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnRGVidWdnZXInLCB7IHN5bWJvbHM6IGMuZ2V0T3RoZXIob3AxKSwgZXZhbEluZm86IGMuZ2V0QXJyYXkob3AyKSB9XTtcbiAgICAgICAgICAgIC8vLyBTVEFURU1FTlRTXG4gICAgICAgICAgICBjYXNlIDcxIC8qIFNpemUgKi86XG4gICAgICAgICAgICAgICAgdGhyb3cgdW5yZWFjaGFibGUoKTtcbiAgICAgICAgfVxuICAgICAgICB0aHJvdyB1bnJlYWNoYWJsZSgpO1xuICAgIH1cbiAgICByZXR1cm4gWycnLCB7fV07XG59XG5leHBvcnQgY2xhc3MgQXBwZW5kT3Bjb2RlcyB7XG4gICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIHRoaXMuZXZhbHVhdGVPcGNvZGUgPSBmaWxsTnVsbHMoNzEgLyogU2l6ZSAqLykuc2xpY2UoKTtcbiAgICB9XG4gICAgYWRkKG5hbWUsIGV2YWx1YXRlKSB7XG4gICAgICAgIHRoaXMuZXZhbHVhdGVPcGNvZGVbbmFtZV0gPSBldmFsdWF0ZTtcbiAgICB9XG4gICAgZXZhbHVhdGUodm0sIG9wY29kZSwgdHlwZSkge1xuICAgICAgICBsZXQgZnVuYyA9IHRoaXMuZXZhbHVhdGVPcGNvZGVbdHlwZV07XG4gICAgICAgIGlmICghZmFsc2UgJiYgZmFsc2UpIHtcbiAgICAgICAgICAgIC8qIHRzbGludDpkaXNhYmxlICovXG4gICAgICAgICAgICBsZXQgW25hbWUsIHBhcmFtc10gPSBkZWJ1Zyh2bS5jb25zdGFudHMsIG9wY29kZS50eXBlLCBvcGNvZGUub3AxLCBvcGNvZGUub3AyLCBvcGNvZGUub3AzKTtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKGAke3ZtWydwYyddIC0gNH0uICR7bG9nT3Bjb2RlKG5hbWUsIHBhcmFtcyl9YCk7XG4gICAgICAgICAgICAvLyBjb25zb2xlLmxvZyguLi5kZWJ1Zyh2bS5jb25zdGFudHMsIHR5cGUsIG9wY29kZS5vcDEsIG9wY29kZS5vcDIsIG9wY29kZS5vcDMpKTtcbiAgICAgICAgICAgIC8qIHRzbGludDplbmFibGUgKi9cbiAgICAgICAgfVxuICAgICAgICBmdW5jKHZtLCBvcGNvZGUpO1xuICAgICAgICBpZiAoIWZhbHNlICYmIGZhbHNlKSB7XG4gICAgICAgICAgICAvKiB0c2xpbnQ6ZGlzYWJsZSAqL1xuICAgICAgICAgICAgY29uc29sZS5sb2coJyVjIC0+IHBjOiAlZCwgcmE6ICVkLCBmcDogJWQsIHNwOiAlZCwgczA6ICVPLCBzMTogJU8sIHQwOiAlTywgdDE6ICVPJywgJ2NvbG9yOiBvcmFuZ2UnLCB2bVsncGMnXSwgdm1bJ3JhJ10sIHZtWydmcCddLCB2bVsnc3AnXSwgdm1bJ3MwJ10sIHZtWydzMSddLCB2bVsndDAnXSwgdm1bJ3QxJ10pO1xuICAgICAgICAgICAgY29uc29sZS5sb2coJyVjIC0+IGV2YWwgc3RhY2snLCAnY29sb3I6IHJlZCcsIHZtLnN0YWNrLnRvQXJyYXkoKSk7XG4gICAgICAgICAgICBjb25zb2xlLmxvZygnJWMgLT4gc2NvcGUnLCAnY29sb3I6IGdyZWVuJywgdm0uc2NvcGUoKVsnc2xvdHMnXS5tYXAocyA9PiBzICYmIHNbJ3ZhbHVlJ10gPyBzWyd2YWx1ZSddKCkgOiBzKSk7XG4gICAgICAgICAgICBjb25zb2xlLmxvZygnJWMgLT4gZWxlbWVudHMnLCAnY29sb3I6IGJsdWUnLCB2bS5lbGVtZW50cygpWydlbGVtZW50U3RhY2snXS50b0FycmF5KCkpO1xuICAgICAgICAgICAgLyogdHNsaW50OmVuYWJsZSAqL1xuICAgICAgICB9XG4gICAgfVxufVxuZXhwb3J0IGNvbnN0IEFQUEVORF9PUENPREVTID0gbmV3IEFwcGVuZE9wY29kZXMoKTtcbmV4cG9ydCBjbGFzcyBBYnN0cmFjdE9wY29kZSB7XG4gICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIGluaXRpYWxpemVHdWlkKHRoaXMpO1xuICAgIH1cbiAgICB0b0pTT04oKSB7XG4gICAgICAgIHJldHVybiB7IGd1aWQ6IHRoaXMuX2d1aWQsIHR5cGU6IHRoaXMudHlwZSB9O1xuICAgIH1cbn1cbmV4cG9ydCBjbGFzcyBVcGRhdGluZ09wY29kZSBleHRlbmRzIEFic3RyYWN0T3Bjb2RlIHtcbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgc3VwZXIoLi4uYXJndW1lbnRzKTtcbiAgICAgICAgdGhpcy5uZXh0ID0gbnVsbDtcbiAgICAgICAgdGhpcy5wcmV2ID0gbnVsbDtcbiAgICB9XG59XG5leHBvcnQgZnVuY3Rpb24gaW5zcGVjdChvcGNvZGVzKSB7XG4gICAgbGV0IGJ1ZmZlciA9IFtdO1xuICAgIG9wY29kZXMuZm9yRWFjaCgob3Bjb2RlLCBpKSA9PiB7XG4gICAgICAgIF9pbnNwZWN0KG9wY29kZS50b0pTT04oKSwgYnVmZmVyLCAwLCBpKTtcbiAgICB9KTtcbiAgICByZXR1cm4gYnVmZmVyLmpvaW4oJycpO1xufVxuZnVuY3Rpb24gX2luc3BlY3Qob3Bjb2RlLCBidWZmZXIsIGxldmVsLCBpbmRleCkge1xuICAgIGxldCBpbmRlbnRhdGlvbiA9IFtdO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbGV2ZWw7IGkrKykge1xuICAgICAgICBpbmRlbnRhdGlvbi5wdXNoKCcgICcpO1xuICAgIH1cbiAgICBidWZmZXIucHVzaCguLi5pbmRlbnRhdGlvbik7XG4gICAgYnVmZmVyLnB1c2goYCR7aW5kZXh9LiAke29wY29kZS50eXBlfWApO1xuICAgIGlmIChvcGNvZGUuYXJncyB8fCBvcGNvZGUuZGV0YWlscykge1xuICAgICAgICBidWZmZXIucHVzaCgnKCcpO1xuICAgICAgICBpZiAob3Bjb2RlLmFyZ3MpIHtcbiAgICAgICAgICAgIGJ1ZmZlci5wdXNoKG9wY29kZS5hcmdzLmpvaW4oJywgJykpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChvcGNvZGUuZGV0YWlscykge1xuICAgICAgICAgICAgbGV0IGtleXMgPSBPYmplY3Qua2V5cyhvcGNvZGUuZGV0YWlscyk7XG4gICAgICAgICAgICBpZiAoa2V5cy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICBpZiAob3Bjb2RlLmFyZ3MgJiYgb3Bjb2RlLmFyZ3MubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgICAgIGJ1ZmZlci5wdXNoKCcsICcpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBidWZmZXIucHVzaChrZXlzLm1hcChrZXkgPT4gYCR7a2V5fT0ke29wY29kZS5kZXRhaWxzICYmIG9wY29kZS5kZXRhaWxzW2tleV19YCkuam9pbignLCAnKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgYnVmZmVyLnB1c2goJyknKTtcbiAgICB9XG4gICAgYnVmZmVyLnB1c2goJ1xcbicpO1xuICAgIGlmIChvcGNvZGUuY2hpbGRyZW4gJiYgb3Bjb2RlLmNoaWxkcmVuLmxlbmd0aCkge1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IG9wY29kZS5jaGlsZHJlbi5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgX2luc3BlY3Qob3Bjb2RlLmNoaWxkcmVuW2ldLCBidWZmZXIsIGxldmVsICsgMSwgaSk7XG4gICAgICAgIH1cbiAgICB9XG59Il19

@@ -12,2 +12,3 @@ var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();

import RenderResult from './render-result';
import { APPEND_OPCODES } from '../opcodes';

@@ -21,3 +22,5 @@ export var EvaluationStack = function () {

this.sp = sp;
Object.seal(this);
if (false) {
Object.seal(this);
}
}

@@ -73,2 +76,6 @@

EvaluationStack.prototype.reset = function reset() {
this.stack.length = 0;
};
EvaluationStack.prototype.toArray = function toArray() {

@@ -136,3 +143,2 @@ return this.stack.slice(this.fp, this.sp + 1);

this.fp = this.sp - 1;
// this.fp = this.sp + 1;
};

@@ -359,2 +365,4 @@ // Restore $ra, $sp and $fp

} else {
// Unload the stack
this.stack.reset();
result = {

@@ -413,2 +421,2 @@ done: true,

export default VM;
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi92bS9hcHBlbmQuanMiXSwibmFtZXMiOlsiUmVnaXN0ZXIiLCJTY29wZSIsIlN0YWNrIiwiTGlua2VkTGlzdCIsIkxpc3RTbGljZSIsImNvbWJpbmVTbGljZSIsIkxhYmVsT3Bjb2RlIiwiSnVtcElmTm90TW9kaWZpZWRPcGNvZGUiLCJEaWRNb2RpZnlPcGNvZGUiLCJMaXN0QmxvY2tPcGNvZGUiLCJUcnlPcGNvZGUiLCJSZW5kZXJSZXN1bHQiLCJBUFBFTkRfT1BDT0RFUyIsIkV2YWx1YXRpb25TdGFjayIsInN0YWNrIiwiZnAiLCJzcCIsIk9iamVjdCIsInNlYWwiLCJlbXB0eSIsInJlc3RvcmUiLCJzbmFwc2hvdCIsInNsaWNlIiwibGVuZ3RoIiwiaXNFbXB0eSIsInB1c2giLCJ2YWx1ZSIsImR1cCIsInBvc2l0aW9uIiwicG9wIiwibiIsInRvcCIsInBlZWsiLCJmcm9tQmFzZSIsIm9mZnNldCIsImZyb21Ub3AiLCJjYXB0dXJlIiwiaXRlbXMiLCJlbmQiLCJzdGFydCIsInRvQXJyYXkiLCJWTSIsImVudiIsInNjb3BlIiwiZHluYW1pY1Njb3BlIiwiZWxlbWVudFN0YWNrIiwiZHluYW1pY1Njb3BlU3RhY2siLCJzY29wZVN0YWNrIiwidXBkYXRpbmdPcGNvZGVTdGFjayIsImNhY2hlR3JvdXBzIiwibGlzdEJsb2NrU3RhY2siLCJwYyIsInJhIiwiczAiLCJzMSIsInQwIiwidDEiLCJjb25zdGFudHMiLCJmZXRjaCIsInJlZ2lzdGVyIiwibG9hZCIsImZldGNoVmFsdWUiLCJsb2FkVmFsdWUiLCJwdXNoRnJhbWUiLCJwb3BGcmFtZSIsImdvdG8iLCJjYWxsIiwicmV0dXJuVG8iLCJyZXR1cm4iLCJpbml0aWFsIiwic2VsZiIsInByb2dyYW0iLCJyb290Iiwic3ltYm9sVGFibGUiLCJzeW1ib2xzIiwidm0iLCJhcmdzIiwiYmVnaW5DYWNoZUdyb3VwIiwidXBkYXRpbmciLCJ0YWlsIiwiY29tbWl0Q2FjaGVHcm91cCIsIkVORCIsIm9wY29kZXMiLCJtYXJrZXIiLCJoZWFkIiwibmV4dE5vZGUiLCJ0YWciLCJndWFyZCIsImluc2VydEJlZm9yZSIsImFwcGVuZCIsImVudGVyIiwic3RhdGUiLCJ0cmFja2VyIiwiZWxlbWVudHMiLCJwdXNoVXBkYXRhYmxlQmxvY2siLCJ0cnlPcGNvZGUiLCJkaWRFbnRlciIsIml0ZXJhdGUiLCJtZW1vIiwiZW50ZXJJdGVtIiwia2V5Iiwib3Bjb2RlIiwibGlzdEJsb2NrIiwibWFwIiwiZW50ZXJMaXN0IiwicHVzaEJsb2NrTGlzdCIsImFydGlmYWN0cyIsInVwZGF0ZVdpdGgiLCJjaGlsZHJlbiIsImV4aXQiLCJwb3BCbG9jayIsInBhcmVudCIsImRpZEluaXRpYWxpemVDaGlsZHJlbiIsImV4aXRMaXN0IiwiY3VycmVudCIsInB1c2hDaGlsZFNjb3BlIiwiY2hpbGQiLCJwdXNoQ2FsbGVyU2NvcGUiLCJjaGlsZFNjb3BlIiwiY2FsbGVyU2NvcGUiLCJnZXRDYWxsZXJTY29wZSIsInB1c2hEeW5hbWljU2NvcGUiLCJwdXNoUm9vdFNjb3BlIiwic2l6ZSIsImJpbmRDYWxsZXIiLCJzaXplZCIsImJpbmRDYWxsZXJTY29wZSIsInBvcFNjb3BlIiwicG9wRHluYW1pY1Njb3BlIiwibmV3RGVzdHJveWFibGUiLCJkIiwiZ2V0U2VsZiIsInJlZmVyZW5jZUZvclN5bWJvbCIsInN5bWJvbCIsImdldFN5bWJvbCIsImV4ZWN1dGUiLCJpbml0aWFsaXplIiwicmVzdWx0IiwibmV4dCIsImRvbmUiLCJuZXh0U3RhdGVtZW50IiwiZXZhbHVhdGUiLCJ0eXBlIiwiZXZhbHVhdGVPcGNvZGUiLCJiaW5kRHluYW1pY1Njb3BlIiwibmFtZXMiLCJpIiwibmFtZSIsImdldFN0cmluZyIsInNldCJdLCJtYXBwaW5ncyI6Ijs7OztBQUFBLFNBQVNBLFFBQVQsUUFBeUIsWUFBekI7QUFDQSxTQUFTQyxLQUFULFFBQXNCLGdCQUF0QjtBQUNBLFNBQVNDLEtBQVQsRUFBZ0JDLFVBQWhCLEVBQTRCQyxTQUE1QixRQUFxRCxlQUFyRDtBQUNB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bENnQnlCLEUiLCJmaWxlIjoibGliL3ZtL2FwcGVuZC5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFJlZ2lzdGVyIH0gZnJvbSAnLi4vb3Bjb2Rlcyc7XG5pbXBvcnQgeyBTY29wZSB9IGZyb20gJy4uL2Vudmlyb25tZW50JztcbmltcG9ydCB7IFN0YWNrLCBMaW5rZWRMaXN0LCBMaXN0U2xpY2UsIGV4cGVjdCB9IGZyb20gJ0BnbGltbWVyL3V0aWwnO1xuaW1wb3J0IHsgY29tYmluZVNsaWNlIH0gZnJvbSAnQGdsaW1tZXIvcmVmZXJlbmNlJztcbmltcG9ydCB7IExhYmVsT3Bjb2RlLCBKdW1wSWZOb3RNb2RpZmllZE9wY29kZSwgRGlkTW9kaWZ5T3Bjb2RlIH0gZnJvbSAnLi4vY29tcGlsZWQvb3Bjb2Rlcy92bSc7XG5pbXBvcnQgeyBMaXN0QmxvY2tPcGNvZGUsIFRyeU9wY29kZSB9IGZyb20gJy4vdXBkYXRlJztcbmltcG9ydCBSZW5kZXJSZXN1bHQgZnJvbSAnLi9yZW5kZXItcmVzdWx0JztcbmltcG9ydCB7IEFQUEVORF9PUENPREVTIH0gZnJvbSAnLi4vb3Bjb2Rlcyc7XG5leHBvcnQgY2xhc3MgRXZhbHVhdGlvblN0YWNrIHtcbiAgICBjb25zdHJ1Y3RvcihzdGFjaywgZnAsIHNwKSB7XG4gICAgICAgIHRoaXMuc3RhY2sgPSBzdGFjaztcbiAgICAgICAgdGhpcy5mcCA9IGZwO1xuICAgICAgICB0aGlzLnNwID0gc3A7XG4gICAgICAgIE9iamVjdC5zZWFsKHRoaXMpO1xuICAgIH1cbiAgICBzdGF0aWMgZW1wdHkoKSB7XG4gICAgICAgIHJldHVybiBuZXcgdGhpcyhbXSwgMCwgLTEpO1xuICAgIH1cbiAgICBzdGF0aWMgcmVzdG9yZShzbmFwc2hvdCkge1xuICAgICAgICByZXR1cm4gbmV3IHRoaXMoc25hcHNob3Quc2xpY2UoKSwgMCwgc25hcHNob3QubGVuZ3RoIC0gMSk7XG4gICAgfVxuICAgIGlzRW1wdHkoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnNwID09PSAtMTtcbiAgICB9XG4gICAgcHVzaCh2YWx1ZSkge1xuICAgICAgICB0aGlzLnN0YWNrWysrdGhpcy5zcF0gPSB2YWx1ZTtcbiAgICB9XG4gICAgZHVwKHBvc2l0aW9uID0gdGhpcy5zcCkge1xuICAgICAgICB0aGlzLnB1c2godGhpcy5zdGFja1twb3NpdGlvbl0pO1xuICAgIH1cbiAgICBwb3AobiA9IDEpIHtcbiAgICAgICAgbGV0IHRvcCA9IHRoaXMuc3RhY2tbdGhpcy5zcF07XG4gICAgICAgIHRoaXMuc3AgLT0gbjtcbiAgICAgICAgcmV0dXJuIHRvcDtcbiAgICB9XG4gICAgcGVlaygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc3RhY2tbdGhpcy5zcF07XG4gICAgfVxuICAgIGZyb21CYXNlKG9mZnNldCkge1xuICAgICAgICByZXR1cm4gdGhpcy5zdGFja1t0aGlzLmZwIC0gb2Zmc2V0XTtcbiAgICB9XG4gICAgZnJvbVRvcChvZmZzZXQpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc3RhY2tbdGhpcy5zcCAtIG9mZnNldF07XG4gICAgfVxuICAgIGNhcHR1cmUoaXRlbXMpIHtcbiAgICAgICAgbGV0IGVuZCA9IHRoaXMuc3AgKyAxO1xuICAgICAgICBsZXQgc3RhcnQgPSBlbmQgLSBpdGVtcztcbiAgICAgICAgcmV0dXJuIHRoaXMuc3RhY2suc2xpY2Uoc3RhcnQsIGVuZCk7XG4gICAgfVxuICAgIHRvQXJyYXkoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnN0YWNrLnNsaWNlKHRoaXMuZnAsIHRoaXMuc3AgKyAxKTtcbiAgICB9XG59XG5leHBvcnQgZGVmYXVsdCBjbGFzcyBWTSB7XG4gICAgY29uc3RydWN0b3IoZW52LCBzY29wZSwgZHluYW1pY1Njb3BlLCBlbGVtZW50U3RhY2spIHtcbiAgICAgICAgdGhpcy5lbnYgPSBlbnY7XG4gICAgICAgIHRoaXMuZWxlbWVudFN0YWNrID0gZWxlbWVudFN0YWNrO1xuICAgICAgICB0aGlzLmR5bmFtaWNTY29wZVN0YWNrID0gbmV3IFN0YWNrKCk7XG4gICAgICAgIHRoaXMuc2NvcGVTdGFjayA9IG5ldyBTdGFjaygpO1xuICAgICAgICB0aGlzLnVwZGF0aW5nT3Bjb2RlU3RhY2sgPSBuZXcgU3RhY2soKTtcbiAgICAgICAgdGhpcy5jYWNoZUdyb3VwcyA9IG5ldyBTdGFjaygpO1xuICAgICAgICB0aGlzLmxpc3RCbG9ja1N0YWNrID0gbmV3IFN0YWNrKCk7XG4gICAgICAgIHRoaXMuc3RhY2sgPSBFdmFsdWF0aW9uU3RhY2suZW1wdHkoKTtcbiAgICAgICAgLyogUmVnaXN0ZXJzICovXG4gICAgICAgIHRoaXMucGMgPSAtMTtcbiAgICAgICAgdGhpcy5yYSA9IC0xO1xuICAgICAgICB0aGlzLnMwID0gbnVsbDtcbiAgICAgICAgdGhpcy5zMSA9IG51bGw7XG4gICAgICAgIHRoaXMudDAgPSBudWxsO1xuICAgICAgICB0aGlzLnQxID0gbnVsbDtcbiAgICAgICAgdGhpcy5lbnYgPSBlbnY7XG4gICAgICAgIHRoaXMuY29uc3RhbnRzID0gZW52LmNvbnN0YW50cztcbiAgICAgICAgdGhpcy5lbGVtZW50U3RhY2sgPSBlbGVtZW50U3RhY2s7XG4gICAgICAgIHRoaXMuc2NvcGVTdGFjay5wdXNoKHNjb3BlKTtcbiAgICAgICAgdGhpcy5keW5hbWljU2NvcGVTdGFjay5wdXNoKGR5bmFtaWNTY29wZSk7XG4gICAgfVxuICAgIGdldCBmcCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc3RhY2suZnA7XG4gICAgfVxuICAgIHNldCBmcChmcCkge1xuICAgICAgICB0aGlzLnN0YWNrLmZwID0gZnA7XG4gICAgfVxuICAgIGdldCBzcCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc3RhY2suc3A7XG4gICAgfVxuICAgIHNldCBzcChzcCkge1xuICAgICAgICB0aGlzLnN0YWNrLnNwID0gc3A7XG4gICAgfVxuICAgIC8vIEZldGNoIGEgdmFsdWUgZnJvbSBhIHJlZ2lzdGVyIG9udG8gdGhlIHN0YWNrXG4gICAgZmV0Y2gocmVnaXN0ZXIpIHtcbiAgICAgICAgdGhpcy5zdGFjay5wdXNoKHRoaXNbUmVnaXN0ZXJbcmVnaXN0ZXJdXSk7XG4gICAgfVxuICAgIC8vIExvYWQgYSB2YWx1ZSBmcm9tIHRoZSBzdGFjayBpbnRvIGEgcmVnaXN0ZXJcbiAgICBsb2FkKHJlZ2lzdGVyKSB7XG4gICAgICAgIHRoaXNbUmVnaXN0ZXJbcmVnaXN0ZXJdXSA9IHRoaXMuc3RhY2sucG9wKCk7XG4gICAgfVxuICAgIC8vIEZldGNoIGEgdmFsdWUgZnJvbSBhIHJlZ2lzdGVyXG4gICAgZmV0Y2hWYWx1ZShyZWdpc3Rlcikge1xuICAgICAgICByZXR1cm4gdGhpc1tSZWdpc3RlcltyZWdpc3Rlcl1dO1xuICAgIH1cbiAgICAvLyBMb2FkIGEgdmFsdWUgaW50byBhIHJlZ2lzdGVyXG4gICAgbG9hZFZhbHVlKHJlZ2lzdGVyLCB2YWx1ZSkge1xuICAgICAgICB0aGlzW1JlZ2lzdGVyW3JlZ2lzdGVyXV0gPSB2YWx1ZTtcbiAgICB9XG4gICAgLy8gU3RhcnQgYSBuZXcgZnJhbWUgYW5kIHNhdmUgJHJhIGFuZCAkZnAgb24gdGhlIHN0YWNrXG4gICAgcHVzaEZyYW1lKCkge1xuICAgICAgICB0aGlzLnN0YWNrLnB1c2godGhpcy5yYSk7XG4gICAgICAgIHRoaXMuc3RhY2sucHVzaCh0aGlzLmZwKTtcbiAgICAgICAgdGhpcy5mcCA9IHRoaXMuc3AgLSAxO1xuICAgICAgICAvLyB0aGlzLmZwID0gdGhpcy5zcCArIDE7XG4gICAgfVxuICAgIC8vIFJlc3RvcmUgJHJhLCAkc3AgYW5kICRmcFxuICAgIHBvcEZyYW1lKCkge1xuICAgICAgICB0aGlzLnNwID0gdGhpcy5mcCAtIDE7XG4gICAgICAgIHRoaXMucmEgPSB0aGlzLnN0YWNrLmZyb21CYXNlKDApO1xuICAgICAgICB0aGlzLmZwID0gdGhpcy5zdGFjay5mcm9tQmFzZSgtMSk7XG4gICAgfVxuICAgIC8vIEp1bXAgdG8gYW4gYWRkcmVzcyBpbiBgcHJvZ3JhbWBcbiAgICBnb3RvKHBjKSB7XG4gICAgICAgIHRoaXMucGMgPSBwYztcbiAgICB9XG4gICAgLy8gU2F2ZSAkcGMgaW50byAkcmEsIHRoZW4ganVtcCB0byBhIG5ldyBhZGRyZXNzIGluIGBwcm9ncmFtYCAoamFsIGluIE1JUFMpXG4gICAgY2FsbChwYykge1xuICAgICAgICB0aGlzLnJhID0gdGhpcy5wYztcbiAgICAgICAgdGhpcy5wYyA9IHBjO1xuICAgIH1cbiAgICAvLyBQdXQgYSBzcGVjaWZpYyBgcHJvZ3JhbWAgYWRkcmVzcyBpbiAkcmFcbiAgICByZXR1cm5UbyhyYSkge1xuICAgICAgICB0aGlzLnJhID0gcmE7XG4gICAgfVxuICAgIC8vIFJldHVybiB0byB0aGUgYHByb2dyYW1gIGFkZHJlc3Mgc3RvcmVkIGluICRyYVxuICAgIHJldHVybigpIHtcbiAgICAgICAgdGhpcy5wYyA9IHRoaXMucmE7XG4gICAgfVxuICAgIHN0YXRpYyBpbml0aWFsKGVudiwgc2VsZiwgZHluYW1pY1Njb3BlLCBlbGVtZW50U3RhY2ssIHByb2dyYW0pIHtcbiAgICAgICAgbGV0IHNjb3BlID0gU2NvcGUucm9vdChzZWxmLCBwcm9ncmFtLnN5bWJvbFRhYmxlLnN5bWJvbHMubGVuZ3RoKTtcbiAgICAgICAgbGV0IHZtID0gbmV3IFZNKGVudiwgc2NvcGUsIGR5bmFtaWNTY29wZSwgZWxlbWVudFN0YWNrKTtcbiAgICAgICAgdm0ucGMgPSBwcm9ncmFtLnN0YXJ0O1xuICAgICAgICB2bS51cGRhdGluZ09wY29kZVN0YWNrLnB1c2gobmV3IExpbmtlZExpc3QoKSk7XG4gICAgICAgIHJldHVybiB2bTtcbiAgICB9XG4gICAgY2FwdHVyZShhcmdzKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBkeW5hbWljU2NvcGU6IHRoaXMuZHluYW1pY1Njb3BlKCksXG4gICAgICAgICAgICBlbnY6IHRoaXMuZW52LFxuICAgICAgICAgICAgc2NvcGU6IHRoaXMuc2NvcGUoKSxcbiAgICAgICAgICAgIHN0YWNrOiB0aGlzLnN0YWNrLmNhcHR1cmUoYXJncylcbiAgICAgICAgfTtcbiAgICB9XG4gICAgYmVnaW5DYWNoZUdyb3VwKCkge1xuICAgICAgICB0aGlzLmNhY2hlR3JvdXBzLnB1c2godGhpcy51cGRhdGluZygpLnRhaWwoKSk7XG4gICAgfVxuICAgIGNvbW1pdENhY2hlR3JvdXAoKSB7XG4gICAgICAgIC8vICAgICAgICBKdW1wSWZOb3RNb2RpZmllZChFTkQpXG4gICAgICAgIC8vICAgICAgICAoaGVhZClcbiAgICAgICAgLy8gICAgICAgICguLi4uKVxuICAgICAgICAvLyAgICAgICAgKHRhaWwpXG4gICAgICAgIC8vICAgICAgICBEaWRNb2RpZnlcbiAgICAgICAgLy8gRU5EOiAgIE5vb3BcbiAgICAgICAgbGV0IEVORCA9IG5ldyBMYWJlbE9wY29kZShcIkVORFwiKTtcbiAgICAgICAgbGV0IG9wY29kZXMgPSB0aGlzLnVwZGF0aW5nKCk7XG4gICAgICAgIGxldCBtYXJrZXIgPSB0aGlzLmNhY2hlR3JvdXBzLnBvcCgpO1xuICAgICAgICBsZXQgaGVhZCA9IG1hcmtlciA/IG9wY29kZXMubmV4dE5vZGUobWFya2VyKSA6IG9wY29kZXMuaGVhZCgpO1xuICAgICAgICBsZXQgdGFpbCA9IG9wY29kZXMudGFpbCgpO1xuICAgICAgICBsZXQgdGFnID0gY29tYmluZVNsaWNlKG5ldyBMaXN0U2xpY2UoaGVhZCwgdGFpbCkpO1xuICAgICAgICBsZXQgZ3VhcmQgPSBuZXcgSnVtcElmTm90TW9kaWZpZWRPcGNvZGUodGFnLCBFTkQpO1xuICAgICAgICBvcGNvZGVzLmluc2VydEJlZm9yZShndWFyZCwgaGVhZCk7XG4gICAgICAgIG9wY29kZXMuYXBwZW5kKG5ldyBEaWRNb2RpZnlPcGNvZGUoZ3VhcmQpKTtcbiAgICAgICAgb3Bjb2Rlcy5hcHBlbmQoRU5EKTtcbiAgICB9XG4gICAgZW50ZXIoYXJncykge1xuICAgICAgICBsZXQgdXBkYXRpbmcgPSBuZXcgTGlua2VkTGlzdCgpO1xuICAgICAgICBsZXQgc3RhdGUgPSB0aGlzLmNhcHR1cmUoYXJncyk7XG4gICAgICAgIGxldCB0cmFja2VyID0gdGhpcy5lbGVtZW50cygpLnB1c2hVcGRhdGFibGVCbG9jaygpO1xuICAgICAgICBsZXQgdHJ5T3Bjb2RlID0gbmV3IFRyeU9wY29kZSh0aGlzLnBjLCBzdGF0ZSwgdHJhY2tlciwgdXBkYXRpbmcpO1xuICAgICAgICB0aGlzLmRpZEVudGVyKHRyeU9wY29kZSk7XG4gICAgfVxuICAgIGl0ZXJhdGUobWVtbywgdmFsdWUpIHtcbiAgICAgICAgbGV0IHN0YWNrID0gdGhpcy5zdGFjaztcbiAgICAgICAgc3RhY2sucHVzaCh2YWx1ZSk7XG4gICAgICAgIHN0YWNrLnB1c2gobWVtbyk7XG4gICAgICAgIGxldCBzdGF0ZSA9IHRoaXMuY2FwdHVyZSgyKTtcbiAgICAgICAgbGV0IHRyYWNrZXIgPSB0aGlzLmVsZW1lbnRzKCkucHVzaFVwZGF0YWJsZUJsb2NrKCk7XG4gICAgICAgIC8vIGxldCBpcCA9IHRoaXMuaXA7XG4gICAgICAgIC8vIHRoaXMuaXAgPSBlbmQgKyA0O1xuICAgICAgICAvLyB0aGlzLmZyYW1lcy5wdXNoKGlwKTtcbiAgICAgICAgcmV0dXJuIG5ldyBUcnlPcGNvZGUodGhpcy5wYywgc3RhdGUsIHRyYWNrZXIsIG5ldyBMaW5rZWRMaXN0KCkpO1xuICAgIH1cbiAgICBlbnRlckl0ZW0oa2V5LCBvcGNvZGUpIHtcbiAgICAgICAgdGhpcy5saXN0QmxvY2soKS5tYXBba2V5XSA9IG9wY29kZTtcbiAgICAgICAgdGhpcy5kaWRFbnRlcihvcGNvZGUpO1xuICAgIH1cbiAgICBlbnRlckxpc3Qoc3RhcnQpIHtcbiAgICAgICAgbGV0IHVwZGF0aW5nID0gbmV3IExpbmtlZExpc3QoKTtcbiAgICAgICAgbGV0IHN0YXRlID0gdGhpcy5jYXB0dXJlKDApO1xuICAgICAgICBsZXQgdHJhY2tlciA9IHRoaXMuZWxlbWVudHMoKS5wdXNoQmxvY2tMaXN0KHVwZGF0aW5nKTtcbiAgICAgICAgbGV0IGFydGlmYWN0cyA9IHRoaXMuc3RhY2sucGVlaygpLmFydGlmYWN0cztcbiAgICAgICAgbGV0IG9wY29kZSA9IG5ldyBMaXN0QmxvY2tPcGNvZGUoc3RhcnQsIHN0YXRlLCB0cmFja2VyLCB1cGRhdGluZywgYXJ0aWZhY3RzKTtcbiAgICAgICAgdGhpcy5saXN0QmxvY2tTdGFjay5wdXNoKG9wY29kZSk7XG4gICAgICAgIHRoaXMuZGlkRW50ZXIob3Bjb2RlKTtcbiAgICB9XG4gICAgZGlkRW50ZXIob3Bjb2RlKSB7XG4gICAgICAgIHRoaXMudXBkYXRlV2l0aChvcGNvZGUpO1xuICAgICAgICB0aGlzLnVwZGF0aW5nT3Bjb2RlU3RhY2sucHVzaChvcGNvZGUuY2hpbGRyZW4pO1xuICAgIH1cbiAgICBleGl0KCkge1xuICAgICAgICB0aGlzLmVsZW1lbnRzKCkucG9wQmxvY2soKTtcbiAgICAgICAgdGhpcy51cGRhdGluZ09wY29kZVN0YWNrLnBvcCgpO1xuICAgICAgICBsZXQgcGFyZW50ID0gdGhpcy51cGRhdGluZygpLnRhaWwoKTtcbiAgICAgICAgcGFyZW50LmRpZEluaXRpYWxpemVDaGlsZHJlbigpO1xuICAgIH1cbiAgICBleGl0TGlzdCgpIHtcbiAgICAgICAgdGhpcy5leGl0KCk7XG4gICAgICAgIHRoaXMubGlzdEJsb2NrU3RhY2sucG9wKCk7XG4gICAgfVxuICAgIHVwZGF0ZVdpdGgob3Bjb2RlKSB7XG4gICAgICAgIHRoaXMudXBkYXRpbmcoKS5hcHBlbmQob3Bjb2RlKTtcbiAgICB9XG4gICAgbGlzdEJsb2NrKCkge1xuICAgICAgICByZXR1cm4gZXhwZWN0KHRoaXMubGlzdEJsb2NrU3RhY2suY3VycmVudCwgJ2V4cGVjdGVkIGEgbGlzdCBibG9jaycpO1xuICAgIH1cbiAgICB1cGRhdGluZygpIHtcbiAgICAgICAgcmV0dXJuIGV4cGVjdCh0aGlzLnVwZGF0aW5nT3Bjb2RlU3RhY2suY3VycmVudCwgJ2V4cGVjdGVkIHVwZGF0aW5nIG9wY29kZSBvbiB0aGUgdXBkYXRpbmcgb3Bjb2RlIHN0YWNrJyk7XG4gICAgfVxuICAgIGVsZW1lbnRzKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5lbGVtZW50U3RhY2s7XG4gICAgfVxuICAgIHNjb3BlKCkge1xuICAgICAgICByZXR1cm4gZXhwZWN0KHRoaXMuc2NvcGVTdGFjay5jdXJyZW50LCAnZXhwZWN0ZWQgc2NvcGUgb24gdGhlIHNjb3BlIHN0YWNrJyk7XG4gICAgfVxuICAgIGR5bmFtaWNTY29wZSgpIHtcbiAgICAgICAgcmV0dXJuIGV4cGVjdCh0aGlzLmR5bmFtaWNTY29wZVN0YWNrLmN1cnJlbnQsICdleHBlY3RlZCBkeW5hbWljIHNjb3BlIG9uIHRoZSBkeW5hbWljIHNjb3BlIHN0YWNrJyk7XG4gICAgfVxuICAgIHB1c2hDaGlsZFNjb3BlKCkge1xuICAgICAgICB0aGlzLnNjb3BlU3RhY2sucHVzaCh0aGlzLnNjb3BlKCkuY2hpbGQoKSk7XG4gICAgfVxuICAgIHB1c2hDYWxsZXJTY29wZShjaGlsZFNjb3BlID0gZmFsc2UpIHtcbiAgICAgICAgbGV0IGNhbGxlclNjb3BlID0gZXhwZWN0KHRoaXMuc2NvcGUoKS5nZXRDYWxsZXJTY29wZSgpLCAncHVzaENhbGxlclNjb3BlIGlzIGNhbGxlZCB3aGVuIGEgY2FsbGVyIHNjb3BlIGlzIHByZXNlbnQnKTtcbiAgICAgICAgdGhpcy5zY29wZVN0YWNrLnB1c2goY2hpbGRTY29wZSA/IGNhbGxlclNjb3BlLmNoaWxkKCkgOiBjYWxsZXJTY29wZSk7XG4gICAgfVxuICAgIHB1c2hEeW5hbWljU2NvcGUoKSB7XG4gICAgICAgIGxldCBjaGlsZCA9IHRoaXMuZHluYW1pY1Njb3BlKCkuY2hpbGQoKTtcbiAgICAgICAgdGhpcy5keW5hbWljU2NvcGVTdGFjay5wdXNoKGNoaWxkKTtcbiAgICAgICAgcmV0dXJuIGNoaWxkO1xuICAgIH1cbiAgICBwdXNoUm9vdFNjb3BlKHNpemUsIGJpbmRDYWxsZXIpIHtcbiAgICAgICAgbGV0IHNjb3BlID0gU2NvcGUuc2l6ZWQoc2l6ZSk7XG4gICAgICAgIGlmIChiaW5kQ2FsbGVyKSBzY29wZS5iaW5kQ2FsbGVyU2NvcGUodGhpcy5zY29wZSgpKTtcbiAgICAgICAgdGhpcy5zY29wZVN0YWNrLnB1c2goc2NvcGUpO1xuICAgICAgICByZXR1cm4gc2NvcGU7XG4gICAgfVxuICAgIHBvcFNjb3BlKCkge1xuICAgICAgICB0aGlzLnNjb3BlU3RhY2sucG9wKCk7XG4gICAgfVxuICAgIHBvcER5bmFtaWNTY29wZSgpIHtcbiAgICAgICAgdGhpcy5keW5hbWljU2NvcGVTdGFjay5wb3AoKTtcbiAgICB9XG4gICAgbmV3RGVzdHJveWFibGUoZCkge1xuICAgICAgICB0aGlzLmVsZW1lbnRzKCkubmV3RGVzdHJveWFibGUoZCk7XG4gICAgfVxuICAgIC8vLyBTQ09QRSBIRUxQRVJTXG4gICAgZ2V0U2VsZigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc2NvcGUoKS5nZXRTZWxmKCk7XG4gICAgfVxuICAgIHJlZmVyZW5jZUZvclN5bWJvbChzeW1ib2wpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc2NvcGUoKS5nZXRTeW1ib2woc3ltYm9sKTtcbiAgICB9XG4gICAgLy8vIEVYRUNVVElPTlxuICAgIGV4ZWN1dGUoc3RhcnQsIGluaXRpYWxpemUpIHtcbiAgICAgICAgdGhpcy5wYyA9IHN0YXJ0O1xuICAgICAgICBpZiAoaW5pdGlhbGl6ZSkgaW5pdGlhbGl6ZSh0aGlzKTtcbiAgICAgICAgbGV0IHJlc3VsdDtcbiAgICAgICAgd2hpbGUgKHRydWUpIHtcbiAgICAgICAgICAgIHJlc3VsdCA9IHRoaXMubmV4dCgpO1xuICAgICAgICAgICAgaWYgKHJlc3VsdC5kb25lKSBicmVhaztcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcmVzdWx0LnZhbHVlO1xuICAgIH1cbiAgICBuZXh0KCkge1xuICAgICAgICBsZXQgeyBlbnYsIHVwZGF0aW5nT3Bjb2RlU3RhY2ssIGVsZW1lbnRTdGFjayB9ID0gdGhpcztcbiAgICAgICAgbGV0IG9wY29kZSA9IHRoaXMubmV4dFN0YXRlbWVudChlbnYpO1xuICAgICAgICBsZXQgcmVzdWx0O1xuICAgICAgICBpZiAob3Bjb2RlICE9PSBudWxsKSB7XG4gICAgICAgICAgICBBUFBFTkRfT1BDT0RFUy5ldmFsdWF0ZSh0aGlzLCBvcGNvZGUsIG9wY29kZS50eXBlKTtcbiAgICAgICAgICAgIHJlc3VsdCA9IHsgZG9uZTogZmFsc2UsIHZhbHVlOiBudWxsIH07XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXN1bHQgPSB7XG4gICAgICAgICAgICAgICAgZG9uZTogdHJ1ZSxcbiAgICAgICAgICAgICAgICB2YWx1ZTogbmV3IFJlbmRlclJlc3VsdChlbnYsIGV4cGVjdCh1cGRhdGluZ09wY29kZVN0YWNrLnBvcCgpLCAndGhlcmUgc2hvdWxkIGJlIGEgZmluYWwgdXBkYXRpbmcgb3Bjb2RlIHN0YWNrJyksIGVsZW1lbnRTdGFjay5wb3BCbG9jaygpKVxuICAgICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cbiAgICBuZXh0U3RhdGVtZW50KGVudikge1xuICAgICAgICBsZXQgeyBwYyB9ID0gdGhpcztcbiAgICAgICAgaWYgKHBjID09PSAtMSkge1xuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cbiAgICAgICAgbGV0IHByb2dyYW0gPSBlbnYucHJvZ3JhbTtcbiAgICAgICAgdGhpcy5wYyArPSA0O1xuICAgICAgICByZXR1cm4gcHJvZ3JhbS5vcGNvZGUocGMpO1xuICAgIH1cbiAgICBldmFsdWF0ZU9wY29kZShvcGNvZGUpIHtcbiAgICAgICAgQVBQRU5EX09QQ09ERVMuZXZhbHVhdGUodGhpcywgb3Bjb2RlLCBvcGNvZGUudHlwZSk7XG4gICAgfVxuICAgIGJpbmREeW5hbWljU2NvcGUobmFtZXMpIHtcbiAgICAgICAgbGV0IHNjb3BlID0gdGhpcy5keW5hbWljU2NvcGUoKTtcbiAgICAgICAgZm9yIChsZXQgaSA9IG5hbWVzLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7XG4gICAgICAgICAgICBsZXQgbmFtZSA9IHRoaXMuY29uc3RhbnRzLmdldFN0cmluZyhuYW1lc1tpXSk7XG4gICAgICAgICAgICBzY29wZS5zZXQobmFtZSwgdGhpcy5zdGFjay5wb3AoKSk7XG4gICAgICAgIH1cbiAgICB9XG59Il19
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi92bS9hcHBlbmQuanMiXSwibmFtZXMiOlsiUmVnaXN0ZXIiLCJTY29wZSIsIlN0YWNrIiwiTGlua2VkTGlzdCIsIkxpc3RTbGljZSIsImNvbWJpbmVTbGljZSIsIkxhYmVsT3Bjb2RlIiwiSnVtcElmTm90TW9kaWZpZWRPcGNvZGUiLCJEaWRNb2RpZnlPcGNvZGUiLCJMaXN0QmxvY2tPcGNvZGUiLCJUcnlPcGNvZGUiLCJSZW5kZXJSZXN1bHQiLCJBUFBFTkRfT1BDT0RFUyIsIkV2YWx1YXRpb25TdGFjayIsInN0YWNrIiwiZnAiLCJzcCIsIk9iamVjdCIsInNlYWwiLCJlbXB0eSIsInJlc3RvcmUiLCJzbmFwc2hvdCIsInNsaWNlIiwibGVuZ3RoIiwiaXNFbXB0eSIsInB1c2giLCJ2YWx1ZSIsImR1cCIsInBvc2l0aW9uIiwicG9wIiwibiIsInRvcCIsInBlZWsiLCJmcm9tQmFzZSIsIm9mZnNldCIsImZyb21Ub3AiLCJjYXB0dXJlIiwiaXRlbXMiLCJlbmQiLCJzdGFydCIsInJlc2V0IiwidG9BcnJheSIsIlZNIiwiZW52Iiwic2NvcGUiLCJkeW5hbWljU2NvcGUiLCJlbGVtZW50U3RhY2siLCJkeW5hbWljU2NvcGVTdGFjayIsInNjb3BlU3RhY2siLCJ1cGRhdGluZ09wY29kZVN0YWNrIiwiY2FjaGVHcm91cHMiLCJsaXN0QmxvY2tTdGFjayIsInBjIiwicmEiLCJzMCIsInMxIiwidDAiLCJ0MSIsImNvbnN0YW50cyIsImZldGNoIiwicmVnaXN0ZXIiLCJsb2FkIiwiZmV0Y2hWYWx1ZSIsImxvYWRWYWx1ZSIsInB1c2hGcmFtZSIsInBvcEZyYW1lIiwiZ290byIsImNhbGwiLCJyZXR1cm5UbyIsInJldHVybiIsImluaXRpYWwiLCJzZWxmIiwicHJvZ3JhbSIsInJvb3QiLCJzeW1ib2xUYWJsZSIsInN5bWJvbHMiLCJ2bSIsImFyZ3MiLCJiZWdpbkNhY2hlR3JvdXAiLCJ1cGRhdGluZyIsInRhaWwiLCJjb21taXRDYWNoZUdyb3VwIiwiRU5EIiwib3Bjb2RlcyIsIm1hcmtlciIsImhlYWQiLCJuZXh0Tm9kZSIsInRhZyIsImd1YXJkIiwiaW5zZXJ0QmVmb3JlIiwiYXBwZW5kIiwiZW50ZXIiLCJzdGF0ZSIsInRyYWNrZXIiLCJlbGVtZW50cyIsInB1c2hVcGRhdGFibGVCbG9jayIsInRyeU9wY29kZSIsImRpZEVudGVyIiwiaXRlcmF0ZSIsIm1lbW8iLCJlbnRlckl0ZW0iLCJrZXkiLCJvcGNvZGUiLCJsaXN0QmxvY2siLCJtYXAiLCJlbnRlckxpc3QiLCJwdXNoQmxvY2tMaXN0IiwiYXJ0aWZhY3RzIiwidXBkYXRlV2l0aCIsImNoaWxkcmVuIiwiZXhpdCIsInBvcEJsb2NrIiwicGFyZW50IiwiZGlkSW5pdGlhbGl6ZUNoaWxkcmVuIiwiZXhpdExpc3QiLCJjdXJyZW50IiwicHVzaENoaWxkU2NvcGUiLCJjaGlsZCIsInB1c2hDYWxsZXJTY29wZSIsImNoaWxkU2NvcGUiLCJjYWxsZXJTY29wZSIsImdldENhbGxlclNjb3BlIiwicHVzaER5bmFtaWNTY29wZSIsInB1c2hSb290U2NvcGUiLCJzaXplIiwiYmluZENhbGxlciIsInNpemVkIiwiYmluZENhbGxlclNjb3BlIiwicG9wU2NvcGUiLCJwb3BEeW5hbWljU2NvcGUiLCJuZXdEZXN0cm95YWJsZSIsImQiLCJnZXRTZWxmIiwicmVmZXJlbmNlRm9yU3ltYm9sIiwic3ltYm9sIiwiZ2V0U3ltYm9sIiwiZXhlY3V0ZSIsImluaXRpYWxpemUiLCJyZXN1bHQiLCJuZXh0IiwiZG9uZSIsIm5leHRTdGF0ZW1lbnQiLCJldmFsdWF0ZSIsInR5cGUiLCJldmFsdWF0ZU9wY29kZSIsImJpbmREeW5hbWljU2NvcGUiLCJuYW1lcyIsImkiLCJuYW1lIiwiZ2V0U3RyaW5nIiwic2V0Il0sIm1hcHBpbmdzIjoiOzs7O0FBQUEsU0FBU0EsUUFBVCxRQUF5QixZQUF6QjtBQUNBLFNBQVNDLEtBQVQsUUFBc0IsZ0JBQXRCO0FBQ0EsU0FBU0MsS0FBVCxFQUFnQkMsVUFBaEIsRUFBNEJDLFNBQTVCLFFBQXFELGVB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QUFXQyxFQUFYLEdBQWdCQSxFQUFoQjtBQUNIOzs7eUJBQ1E7QUFDTCxtQkFBTyxLQUFLRCxLQUFMLENBQVdFLEVBQWxCO0FBQ0gsUzt1QkFDTUEsRSxFQUFJO0FBQ1AsaUJBQUtGLEtBQUwsQ0FBV0UsRUFBWCxHQUFnQkEsRUFBaEI7QUFDSDs7Ozs7O2VBbENnQjBCLEUiLCJmaWxlIjoibGliL3ZtL2FwcGVuZC5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFJlZ2lzdGVyIH0gZnJvbSAnLi4vb3Bjb2Rlcyc7XG5pbXBvcnQgeyBTY29wZSB9IGZyb20gJy4uL2Vudmlyb25tZW50JztcbmltcG9ydCB7IFN0YWNrLCBMaW5rZWRMaXN0LCBMaXN0U2xpY2UsIGV4cGVjdCB9IGZyb20gJ0BnbGltbWVyL3V0aWwnO1xuaW1wb3J0IHsgY29tYmluZVNsaWNlIH0gZnJvbSAnQGdsaW1tZXIvcmVmZXJlbmNlJztcbmltcG9ydCB7IExhYmVsT3Bjb2RlLCBKdW1wSWZOb3RNb2RpZmllZE9wY29kZSwgRGlkTW9kaWZ5T3Bjb2RlIH0gZnJvbSAnLi4vY29tcGlsZWQvb3Bjb2Rlcy92bSc7XG5pbXBvcnQgeyBMaXN0QmxvY2tPcGNvZGUsIFRyeU9wY29kZSB9IGZyb20gJy4vdXBkYXRlJztcbmltcG9ydCBSZW5kZXJSZXN1bHQgZnJvbSAnLi9yZW5kZXItcmVzdWx0JztcblxuaW1wb3J0IHsgQVBQRU5EX09QQ09ERVMgfSBmcm9tICcuLi9vcGNvZGVzJztcbmV4cG9ydCBjbGFzcyBFdmFsdWF0aW9uU3RhY2sge1xuICAgIGNvbnN0cnVjdG9yKHN0YWNrLCBmcCwgc3ApIHtcbiAgICAgICAgdGhpcy5zdGFjayA9IHN0YWNrO1xuICAgICAgICB0aGlzLmZwID0gZnA7XG4gICAgICAgIHRoaXMuc3AgPSBzcDtcbiAgICAgICAgaWYgKGZhbHNlKSB7XG4gICAgICAgICAgICBPYmplY3Quc2VhbCh0aGlzKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBzdGF0aWMgZW1wdHkoKSB7XG4gICAgICAgIHJldHVybiBuZXcgdGhpcyhbXSwgMCwgLTEpO1xuICAgIH1cbiAgICBzdGF0aWMgcmVzdG9yZShzbmFwc2hvdCkge1xuICAgICAgICByZXR1cm4gbmV3IHRoaXMoc25hcHNob3Quc2xpY2UoKSwgMCwgc25hcHNob3QubGVuZ3RoIC0gMSk7XG4gICAgfVxuICAgIGlzRW1wdHkoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnNwID09PSAtMTtcbiAgICB9XG4gICAgcHVzaCh2YWx1ZSkge1xuICAgICAgICB0aGlzLnN0YWNrWysrdGhpcy5zcF0gPSB2YWx1ZTtcbiAgICB9XG4gICAgZHVwKHBvc2l0aW9uID0gdGhpcy5zcCkge1xuICAgICAgICB0aGlzLnB1c2godGhpcy5zdGFja1twb3NpdGlvbl0pO1xuICAgIH1cbiAgICBwb3AobiA9IDEpIHtcbiAgICAgICAgbGV0IHRvcCA9IHRoaXMuc3RhY2tbdGhpcy5zcF07XG4gICAgICAgIHRoaXMuc3AgLT0gbjtcbiAgICAgICAgcmV0dXJuIHRvcDtcbiAgICB9XG4gICAgcGVlaygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc3RhY2tbdGhpcy5zcF07XG4gICAgfVxuICAgIGZyb21CYXNlKG9mZnNldCkge1xuICAgICAgICByZXR1cm4gdGhpcy5zdGFja1t0aGlzLmZwIC0gb2Zmc2V0XTtcbiAgICB9XG4gICAgZnJvbVRvcChvZmZzZXQpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc3RhY2tbdGhpcy5zcCAtIG9mZnNldF07XG4gICAgfVxuICAgIGNhcHR1cmUoaXRlbXMpIHtcbiAgICAgICAgbGV0IGVuZCA9IHRoaXMuc3AgKyAxO1xuICAgICAgICBsZXQgc3RhcnQgPSBlbmQgLSBpdGVtcztcbiAgICAgICAgcmV0dXJuIHRoaXMuc3RhY2suc2xpY2Uoc3RhcnQsIGVuZCk7XG4gICAgfVxuICAgIHJlc2V0KCkge1xuICAgICAgICB0aGlzLnN0YWNrLmxlbmd0aCA9IDA7XG4gICAgfVxuICAgIHRvQXJyYXkoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnN0YWNrLnNsaWNlKHRoaXMuZnAsIHRoaXMuc3AgKyAxKTtcbiAgICB9XG59XG5leHBvcnQgZGVmYXVsdCBjbGFzcyBWTSB7XG4gICAgY29uc3RydWN0b3IoZW52LCBzY29wZSwgZHluYW1pY1Njb3BlLCBlbGVtZW50U3RhY2spIHtcbiAgICAgICAgdGhpcy5lbnYgPSBlbnY7XG4gICAgICAgIHRoaXMuZWxlbWVudFN0YWNrID0gZWxlbWVudFN0YWNrO1xuICAgICAgICB0aGlzLmR5bmFtaWNTY29wZVN0YWNrID0gbmV3IFN0YWNrKCk7XG4gICAgICAgIHRoaXMuc2NvcGVTdGFjayA9IG5ldyBTdGFjaygpO1xuICAgICAgICB0aGlzLnVwZGF0aW5nT3Bjb2RlU3RhY2sgPSBuZXcgU3RhY2soKTtcbiAgICAgICAgdGhpcy5jYWNoZUdyb3VwcyA9IG5ldyBTdGFjaygpO1xuICAgICAgICB0aGlzLmxpc3RCbG9ja1N0YWNrID0gbmV3IFN0YWNrKCk7XG4gICAgICAgIHRoaXMuc3RhY2sgPSBFdmFsdWF0aW9uU3RhY2suZW1wdHkoKTtcbiAgICAgICAgLyogUmVnaXN0ZXJzICovXG4gICAgICAgIHRoaXMucGMgPSAtMTtcbiAgICAgICAgdGhpcy5yYSA9IC0xO1xuICAgICAgICB0aGlzLnMwID0gbnVsbDtcbiAgICAgICAgdGhpcy5zMSA9IG51bGw7XG4gICAgICAgIHRoaXMudDAgPSBudWxsO1xuICAgICAgICB0aGlzLnQxID0gbnVsbDtcbiAgICAgICAgdGhpcy5lbnYgPSBlbnY7XG4gICAgICAgIHRoaXMuY29uc3RhbnRzID0gZW52LmNvbnN0YW50cztcbiAgICAgICAgdGhpcy5lbGVtZW50U3RhY2sgPSBlbGVtZW50U3RhY2s7XG4gICAgICAgIHRoaXMuc2NvcGVTdGFjay5wdXNoKHNjb3BlKTtcbiAgICAgICAgdGhpcy5keW5hbWljU2NvcGVTdGFjay5wdXNoKGR5bmFtaWNTY29wZSk7XG4gICAgfVxuICAgIGdldCBmcCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc3RhY2suZnA7XG4gICAgfVxuICAgIHNldCBmcChmcCkge1xuICAgICAgICB0aGlzLnN0YWNrLmZwID0gZnA7XG4gICAgfVxuICAgIGdldCBzcCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc3RhY2suc3A7XG4gICAgfVxuICAgIHNldCBzcChzcCkge1xuICAgICAgICB0aGlzLnN0YWNrLnNwID0gc3A7XG4gICAgfVxuICAgIC8vIEZldGNoIGEgdmFsdWUgZnJvbSBhIHJlZ2lzdGVyIG9udG8gdGhlIHN0YWNrXG4gICAgZmV0Y2gocmVnaXN0ZXIpIHtcbiAgICAgICAgdGhpcy5zdGFjay5wdXNoKHRoaXNbUmVnaXN0ZXJbcmVnaXN0ZXJdXSk7XG4gICAgfVxuICAgIC8vIExvYWQgYSB2YWx1ZSBmcm9tIHRoZSBzdGFjayBpbnRvIGEgcmVnaXN0ZXJcbiAgICBsb2FkKHJlZ2lzdGVyKSB7XG4gICAgICAgIHRoaXNbUmVnaXN0ZXJbcmVnaXN0ZXJdXSA9IHRoaXMuc3RhY2sucG9wKCk7XG4gICAgfVxuICAgIC8vIEZldGNoIGEgdmFsdWUgZnJvbSBhIHJlZ2lzdGVyXG4gICAgZmV0Y2hWYWx1ZShyZWdpc3Rlcikge1xuICAgICAgICByZXR1cm4gdGhpc1tSZWdpc3RlcltyZWdpc3Rlcl1dO1xuICAgIH1cbiAgICAvLyBMb2FkIGEgdmFsdWUgaW50byBhIHJlZ2lzdGVyXG4gICAgbG9hZFZhbHVlKHJlZ2lzdGVyLCB2YWx1ZSkge1xuICAgICAgICB0aGlzW1JlZ2lzdGVyW3JlZ2lzdGVyXV0gPSB2YWx1ZTtcbiAgICB9XG4gICAgLy8gU3RhcnQgYSBuZXcgZnJhbWUgYW5kIHNhdmUgJHJhIGFuZCAkZnAgb24gdGhlIHN0YWNrXG4gICAgcHVzaEZyYW1lKCkge1xuICAgICAgICB0aGlzLnN0YWNrLnB1c2godGhpcy5yYSk7XG4gICAgICAgIHRoaXMuc3RhY2sucHVzaCh0aGlzLmZwKTtcbiAgICAgICAgdGhpcy5mcCA9IHRoaXMuc3AgLSAxO1xuICAgIH1cbiAgICAvLyBSZXN0b3JlICRyYSwgJHNwIGFuZCAkZnBcbiAgICBwb3BGcmFtZSgpIHtcbiAgICAgICAgdGhpcy5zcCA9IHRoaXMuZnAgLSAxO1xuICAgICAgICB0aGlzLnJhID0gdGhpcy5zdGFjay5mcm9tQmFzZSgwKTtcbiAgICAgICAgdGhpcy5mcCA9IHRoaXMuc3RhY2suZnJvbUJhc2UoLTEpO1xuICAgIH1cbiAgICAvLyBKdW1wIHRvIGFuIGFkZHJlc3MgaW4gYHByb2dyYW1gXG4gICAgZ290byhwYykge1xuICAgICAgICB0aGlzLnBjID0gcGM7XG4gICAgfVxuICAgIC8vIFNhdmUgJHBjIGludG8gJHJhLCB0aGVuIGp1bXAgdG8gYSBuZXcgYWRkcmVzcyBpbiBgcHJvZ3JhbWAgKGphbCBpbiBNSVBTKVxuICAgIGNhbGwocGMpIHtcbiAgICAgICAgdGhpcy5yYSA9IHRoaXMucGM7XG4gICAgICAgIHRoaXMucGMgPSBwYztcbiAgICB9XG4gICAgLy8gUHV0IGEgc3BlY2lmaWMgYHByb2dyYW1gIGFkZHJlc3MgaW4gJHJhXG4gICAgcmV0dXJuVG8ocmEpIHtcbiAgICAgICAgdGhpcy5yYSA9IHJhO1xuICAgIH1cbiAgICAvLyBSZXR1cm4gdG8gdGhlIGBwcm9ncmFtYCBhZGRyZXNzIHN0b3JlZCBpbiAkcmFcbiAgICByZXR1cm4oKSB7XG4gICAgICAgIHRoaXMucGMgPSB0aGlzLnJhO1xuICAgIH1cbiAgICBzdGF0aWMgaW5pdGlhbChlbnYsIHNlbGYsIGR5bmFtaWNTY29wZSwgZWxlbWVudFN0YWNrLCBwcm9ncmFtKSB7XG4gICAgICAgIGxldCBzY29wZSA9IFNjb3BlLnJvb3Qoc2VsZiwgcHJvZ3JhbS5zeW1ib2xUYWJsZS5zeW1ib2xzLmxlbmd0aCk7XG4gICAgICAgIGxldCB2bSA9IG5ldyBWTShlbnYsIHNjb3BlLCBkeW5hbWljU2NvcGUsIGVsZW1lbnRTdGFjayk7XG4gICAgICAgIHZtLnBjID0gcHJvZ3JhbS5zdGFydDtcbiAgICAgICAgdm0udXBkYXRpbmdPcGNvZGVTdGFjay5wdXNoKG5ldyBMaW5rZWRMaXN0KCkpO1xuICAgICAgICByZXR1cm4gdm07XG4gICAgfVxuICAgIGNhcHR1cmUoYXJncykge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgZHluYW1pY1Njb3BlOiB0aGlzLmR5bmFtaWNTY29wZSgpLFxuICAgICAgICAgICAgZW52OiB0aGlzLmVudixcbiAgICAgICAgICAgIHNjb3BlOiB0aGlzLnNjb3BlKCksXG4gICAgICAgICAgICBzdGFjazogdGhpcy5zdGFjay5jYXB0dXJlKGFyZ3MpXG4gICAgICAgIH07XG4gICAgfVxuICAgIGJlZ2luQ2FjaGVHcm91cCgpIHtcbiAgICAgICAgdGhpcy5jYWNoZUdyb3Vwcy5wdXNoKHRoaXMudXBkYXRpbmcoKS50YWlsKCkpO1xuICAgIH1cbiAgICBjb21taXRDYWNoZUdyb3VwKCkge1xuICAgICAgICAvLyAgICAgICAgSnVtcElmTm90TW9kaWZpZWQoRU5EKVxuICAgICAgICAvLyAgICAgICAgKGhlYWQpXG4gICAgICAgIC8vICAgICAgICAoLi4uLilcbiAgICAgICAgLy8gICAgICAgICh0YWlsKVxuICAgICAgICAvLyAgICAgICAgRGlkTW9kaWZ5XG4gICAgICAgIC8vIEVORDogICBOb29wXG4gICAgICAgIGxldCBFTkQgPSBuZXcgTGFiZWxPcGNvZGUoXCJFTkRcIik7XG4gICAgICAgIGxldCBvcGNvZGVzID0gdGhpcy51cGRhdGluZygpO1xuICAgICAgICBsZXQgbWFya2VyID0gdGhpcy5jYWNoZUdyb3Vwcy5wb3AoKTtcbiAgICAgICAgbGV0IGhlYWQgPSBtYXJrZXIgPyBvcGNvZGVzLm5leHROb2RlKG1hcmtlcikgOiBvcGNvZGVzLmhlYWQoKTtcbiAgICAgICAgbGV0IHRhaWwgPSBvcGNvZGVzLnRhaWwoKTtcbiAgICAgICAgbGV0IHRhZyA9IGNvbWJpbmVTbGljZShuZXcgTGlzdFNsaWNlKGhlYWQsIHRhaWwpKTtcbiAgICAgICAgbGV0IGd1YXJkID0gbmV3IEp1bXBJZk5vdE1vZGlmaWVkT3Bjb2RlKHRhZywgRU5EKTtcbiAgICAgICAgb3Bjb2Rlcy5pbnNlcnRCZWZvcmUoZ3VhcmQsIGhlYWQpO1xuICAgICAgICBvcGNvZGVzLmFwcGVuZChuZXcgRGlkTW9kaWZ5T3Bjb2RlKGd1YXJkKSk7XG4gICAgICAgIG9wY29kZXMuYXBwZW5kKEVORCk7XG4gICAgfVxuICAgIGVudGVyKGFyZ3MpIHtcbiAgICAgICAgbGV0IHVwZGF0aW5nID0gbmV3IExpbmtlZExpc3QoKTtcbiAgICAgICAgbGV0IHN0YXRlID0gdGhpcy5jYXB0dXJlKGFyZ3MpO1xuICAgICAgICBsZXQgdHJhY2tlciA9IHRoaXMuZWxlbWVudHMoKS5wdXNoVXBkYXRhYmxlQmxvY2soKTtcbiAgICAgICAgbGV0IHRyeU9wY29kZSA9IG5ldyBUcnlPcGNvZGUodGhpcy5wYywgc3RhdGUsIHRyYWNrZXIsIHVwZGF0aW5nKTtcbiAgICAgICAgdGhpcy5kaWRFbnRlcih0cnlPcGNvZGUpO1xuICAgIH1cbiAgICBpdGVyYXRlKG1lbW8sIHZhbHVlKSB7XG4gICAgICAgIGxldCBzdGFjayA9IHRoaXMuc3RhY2s7XG4gICAgICAgIHN0YWNrLnB1c2godmFsdWUpO1xuICAgICAgICBzdGFjay5wdXNoKG1lbW8pO1xuICAgICAgICBsZXQgc3RhdGUgPSB0aGlzLmNhcHR1cmUoMik7XG4gICAgICAgIGxldCB0cmFja2VyID0gdGhpcy5lbGVtZW50cygpLnB1c2hVcGRhdGFibGVCbG9jaygpO1xuICAgICAgICAvLyBsZXQgaXAgPSB0aGlzLmlwO1xuICAgICAgICAvLyB0aGlzLmlwID0gZW5kICsgNDtcbiAgICAgICAgLy8gdGhpcy5mcmFtZXMucHVzaChpcCk7XG4gICAgICAgIHJldHVybiBuZXcgVHJ5T3Bjb2RlKHRoaXMucGMsIHN0YXRlLCB0cmFja2VyLCBuZXcgTGlua2VkTGlzdCgpKTtcbiAgICB9XG4gICAgZW50ZXJJdGVtKGtleSwgb3Bjb2RlKSB7XG4gICAgICAgIHRoaXMubGlzdEJsb2NrKCkubWFwW2tleV0gPSBvcGNvZGU7XG4gICAgICAgIHRoaXMuZGlkRW50ZXIob3Bjb2RlKTtcbiAgICB9XG4gICAgZW50ZXJMaXN0KHN0YXJ0KSB7XG4gICAgICAgIGxldCB1cGRhdGluZyA9IG5ldyBMaW5rZWRMaXN0KCk7XG4gICAgICAgIGxldCBzdGF0ZSA9IHRoaXMuY2FwdHVyZSgwKTtcbiAgICAgICAgbGV0IHRyYWNrZXIgPSB0aGlzLmVsZW1lbnRzKCkucHVzaEJsb2NrTGlzdCh1cGRhdGluZyk7XG4gICAgICAgIGxldCBhcnRpZmFjdHMgPSB0aGlzLnN0YWNrLnBlZWsoKS5hcnRpZmFjdHM7XG4gICAgICAgIGxldCBvcGNvZGUgPSBuZXcgTGlzdEJsb2NrT3Bjb2RlKHN0YXJ0LCBzdGF0ZSwgdHJhY2tlciwgdXBkYXRpbmcsIGFydGlmYWN0cyk7XG4gICAgICAgIHRoaXMubGlzdEJsb2NrU3RhY2sucHVzaChvcGNvZGUpO1xuICAgICAgICB0aGlzLmRpZEVudGVyKG9wY29kZSk7XG4gICAgfVxuICAgIGRpZEVudGVyKG9wY29kZSkge1xuICAgICAgICB0aGlzLnVwZGF0ZVdpdGgob3Bjb2RlKTtcbiAgICAgICAgdGhpcy51cGRhdGluZ09wY29kZVN0YWNrLnB1c2gob3Bjb2RlLmNoaWxkcmVuKTtcbiAgICB9XG4gICAgZXhpdCgpIHtcbiAgICAgICAgdGhpcy5lbGVtZW50cygpLnBvcEJsb2NrKCk7XG4gICAgICAgIHRoaXMudXBkYXRpbmdPcGNvZGVTdGFjay5wb3AoKTtcbiAgICAgICAgbGV0IHBhcmVudCA9IHRoaXMudXBkYXRpbmcoKS50YWlsKCk7XG4gICAgICAgIHBhcmVudC5kaWRJbml0aWFsaXplQ2hpbGRyZW4oKTtcbiAgICB9XG4gICAgZXhpdExpc3QoKSB7XG4gICAgICAgIHRoaXMuZXhpdCgpO1xuICAgICAgICB0aGlzLmxpc3RCbG9ja1N0YWNrLnBvcCgpO1xuICAgIH1cbiAgICB1cGRhdGVXaXRoKG9wY29kZSkge1xuICAgICAgICB0aGlzLnVwZGF0aW5nKCkuYXBwZW5kKG9wY29kZSk7XG4gICAgfVxuICAgIGxpc3RCbG9jaygpIHtcbiAgICAgICAgcmV0dXJuIGV4cGVjdCh0aGlzLmxpc3RCbG9ja1N0YWNrLmN1cnJlbnQsICdleHBlY3RlZCBhIGxpc3QgYmxvY2snKTtcbiAgICB9XG4gICAgdXBkYXRpbmcoKSB7XG4gICAgICAgIHJldHVybiBleHBlY3QodGhpcy51cGRhdGluZ09wY29kZVN0YWNrLmN1cnJlbnQsICdleHBlY3RlZCB1cGRhdGluZyBvcGNvZGUgb24gdGhlIHVwZGF0aW5nIG9wY29kZSBzdGFjaycpO1xuICAgIH1cbiAgICBlbGVtZW50cygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZWxlbWVudFN0YWNrO1xuICAgIH1cbiAgICBzY29wZSgpIHtcbiAgICAgICAgcmV0dXJuIGV4cGVjdCh0aGlzLnNjb3BlU3RhY2suY3VycmVudCwgJ2V4cGVjdGVkIHNjb3BlIG9uIHRoZSBzY29wZSBzdGFjaycpO1xuICAgIH1cbiAgICBkeW5hbWljU2NvcGUoKSB7XG4gICAgICAgIHJldHVybiBleHBlY3QodGhpcy5keW5hbWljU2NvcGVTdGFjay5jdXJyZW50LCAnZXhwZWN0ZWQgZHluYW1pYyBzY29wZSBvbiB0aGUgZHluYW1pYyBzY29wZSBzdGFjaycpO1xuICAgIH1cbiAgICBwdXNoQ2hpbGRTY29wZSgpIHtcbiAgICAgICAgdGhpcy5zY29wZVN0YWNrLnB1c2godGhpcy5zY29wZSgpLmNoaWxkKCkpO1xuICAgIH1cbiAgICBwdXNoQ2FsbGVyU2NvcGUoY2hpbGRTY29wZSA9IGZhbHNlKSB7XG4gICAgICAgIGxldCBjYWxsZXJTY29wZSA9IGV4cGVjdCh0aGlzLnNjb3BlKCkuZ2V0Q2FsbGVyU2NvcGUoKSwgJ3B1c2hDYWxsZXJTY29wZSBpcyBjYWxsZWQgd2hlbiBhIGNhbGxlciBzY29wZSBpcyBwcmVzZW50Jyk7XG4gICAgICAgIHRoaXMuc2NvcGVTdGFjay5wdXNoKGNoaWxkU2NvcGUgPyBjYWxsZXJTY29wZS5jaGlsZCgpIDogY2FsbGVyU2NvcGUpO1xuICAgIH1cbiAgICBwdXNoRHluYW1pY1Njb3BlKCkge1xuICAgICAgICBsZXQgY2hpbGQgPSB0aGlzLmR5bmFtaWNTY29wZSgpLmNoaWxkKCk7XG4gICAgICAgIHRoaXMuZHluYW1pY1Njb3BlU3RhY2sucHVzaChjaGlsZCk7XG4gICAgICAgIHJldHVybiBjaGlsZDtcbiAgICB9XG4gICAgcHVzaFJvb3RTY29wZShzaXplLCBiaW5kQ2FsbGVyKSB7XG4gICAgICAgIGxldCBzY29wZSA9IFNjb3BlLnNpemVkKHNpemUpO1xuICAgICAgICBpZiAoYmluZENhbGxlcikgc2NvcGUuYmluZENhbGxlclNjb3BlKHRoaXMuc2NvcGUoKSk7XG4gICAgICAgIHRoaXMuc2NvcGVTdGFjay5wdXNoKHNjb3BlKTtcbiAgICAgICAgcmV0dXJuIHNjb3BlO1xuICAgIH1cbiAgICBwb3BTY29wZSgpIHtcbiAgICAgICAgdGhpcy5zY29wZVN0YWNrLnBvcCgpO1xuICAgIH1cbiAgICBwb3BEeW5hbWljU2NvcGUoKSB7XG4gICAgICAgIHRoaXMuZHluYW1pY1Njb3BlU3RhY2sucG9wKCk7XG4gICAgfVxuICAgIG5ld0Rlc3Ryb3lhYmxlKGQpIHtcbiAgICAgICAgdGhpcy5lbGVtZW50cygpLm5ld0Rlc3Ryb3lhYmxlKGQpO1xuICAgIH1cbiAgICAvLy8gU0NPUEUgSEVMUEVSU1xuICAgIGdldFNlbGYoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnNjb3BlKCkuZ2V0U2VsZigpO1xuICAgIH1cbiAgICByZWZlcmVuY2VGb3JTeW1ib2woc3ltYm9sKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnNjb3BlKCkuZ2V0U3ltYm9sKHN5bWJvbCk7XG4gICAgfVxuICAgIC8vLyBFWEVDVVRJT05cbiAgICBleGVjdXRlKHN0YXJ0LCBpbml0aWFsaXplKSB7XG4gICAgICAgIHRoaXMucGMgPSBzdGFydDtcbiAgICAgICAgaWYgKGluaXRpYWxpemUpIGluaXRpYWxpemUodGhpcyk7XG4gICAgICAgIGxldCByZXN1bHQ7XG4gICAgICAgIHdoaWxlICh0cnVlKSB7XG4gICAgICAgICAgICByZXN1bHQgPSB0aGlzLm5leHQoKTtcbiAgICAgICAgICAgIGlmIChyZXN1bHQuZG9uZSkgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHJlc3VsdC52YWx1ZTtcbiAgICB9XG4gICAgbmV4dCgpIHtcbiAgICAgICAgbGV0IHsgZW52LCB1cGRhdGluZ09wY29kZVN0YWNrLCBlbGVtZW50U3RhY2sgfSA9IHRoaXM7XG4gICAgICAgIGxldCBvcGNvZGUgPSB0aGlzLm5leHRTdGF0ZW1lbnQoZW52KTtcbiAgICAgICAgbGV0IHJlc3VsdDtcbiAgICAgICAgaWYgKG9wY29kZSAhPT0gbnVsbCkge1xuICAgICAgICAgICAgQVBQRU5EX09QQ09ERVMuZXZhbHVhdGUodGhpcywgb3Bjb2RlLCBvcGNvZGUudHlwZSk7XG4gICAgICAgICAgICByZXN1bHQgPSB7IGRvbmU6IGZhbHNlLCB2YWx1ZTogbnVsbCB9O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgLy8gVW5sb2FkIHRoZSBzdGFja1xuICAgICAgICAgICAgdGhpcy5zdGFjay5yZXNldCgpO1xuICAgICAgICAgICAgcmVzdWx0ID0ge1xuICAgICAgICAgICAgICAgIGRvbmU6IHRydWUsXG4gICAgICAgICAgICAgICAgdmFsdWU6IG5ldyBSZW5kZXJSZXN1bHQoZW52LCBleHBlY3QodXBkYXRpbmdPcGNvZGVTdGFjay5wb3AoKSwgJ3RoZXJlIHNob3VsZCBiZSBhIGZpbmFsIHVwZGF0aW5nIG9wY29kZSBzdGFjaycpLCBlbGVtZW50U3RhY2sucG9wQmxvY2soKSlcbiAgICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG4gICAgbmV4dFN0YXRlbWVudChlbnYpIHtcbiAgICAgICAgbGV0IHsgcGMgfSA9IHRoaXM7XG4gICAgICAgIGlmIChwYyA9PT0gLTEpIHtcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG4gICAgICAgIGxldCBwcm9ncmFtID0gZW52LnByb2dyYW07XG4gICAgICAgIHRoaXMucGMgKz0gNDtcbiAgICAgICAgcmV0dXJuIHByb2dyYW0ub3Bjb2RlKHBjKTtcbiAgICB9XG4gICAgZXZhbHVhdGVPcGNvZGUob3Bjb2RlKSB7XG4gICAgICAgIEFQUEVORF9PUENPREVTLmV2YWx1YXRlKHRoaXMsIG9wY29kZSwgb3Bjb2RlLnR5cGUpO1xuICAgIH1cbiAgICBiaW5kRHluYW1pY1Njb3BlKG5hbWVzKSB7XG4gICAgICAgIGxldCBzY29wZSA9IHRoaXMuZHluYW1pY1Njb3BlKCk7XG4gICAgICAgIGZvciAobGV0IGkgPSBuYW1lcy5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xuICAgICAgICAgICAgbGV0IG5hbWUgPSB0aGlzLmNvbnN0YW50cy5nZXRTdHJpbmcobmFtZXNbaV0pO1xuICAgICAgICAgICAgc2NvcGUuc2V0KG5hbWUsIHRoaXMuc3RhY2sucG9wKCkpO1xuICAgICAgICB9XG4gICAgfVxufSJdfQ==

@@ -41,3 +41,2 @@ import { CompilationMeta, Opaque, Option, SymbolTable } from '@glimmer/interfaces';

pushDynamicComponentManager(): void;
initializeComponentState(): void;
prepareArgs(state: Register): void;

@@ -125,5 +124,5 @@ createComponent(state: Register, hasDefault: boolean, hasInverse: boolean): void;

guardedAppend(expression: WireFormat.Expression, trusting: boolean): void;
invokeComponent(attrs: Option<RawInlineBlock>, params: Option<WireFormat.Core.Params>, hash: Option<WireFormat.Core.Hash>, block?: Option<Block>, inverse?: Option<Block>): void;
invokeComponent(attrs: Option<RawInlineBlock>, params: Option<WireFormat.Core.Params>, hash: Option<WireFormat.Core.Hash>, block: Option<Block>, inverse?: Option<Block>): void;
template(block: Option<WireFormat.SerializedInlineBlock>): Option<RawInlineBlock>;
}
export declare type BlockCallback = (dsl: OpcodeBuilder, BEGIN: Label, END: Label) => void;

@@ -604,3 +604,3 @@ import { Option, Dict, Slice as ListSlice } from '@glimmer/util';

* ... →
* ..., ComponentDefinition, ComponentManager
* ..., { ComponentDefinition, ComponentManager }
*/

@@ -621,12 +621,2 @@ PushComponentManager = 55,

/**
* Operation: push component metadata onto the stack.
*
* Format:
* (InitializeComponentState)
* Operand Stack:
* ..., ComponentDefinition<T>, ComponentManager<T> →
* ..., ComponentState
*/
InitializeComponentState = 57,
/**
* Operation: Push a user representation of args onto the stack.

@@ -648,3 +638,3 @@ *

*/
PushArgs = 58,
PushArgs = 57,
/**

@@ -658,3 +648,3 @@ * Operation: ...

*/
PrepareArgs = 59,
PrepareArgs = 58,
/**

@@ -673,3 +663,3 @@ * Operation: Create the component and push it onto the stack.

*/
CreateComponent = 60,
CreateComponent = 59,
/**

@@ -684,3 +674,3 @@ * Operation: Register a destructor for the current component

*/
RegisterComponentDestructor = 61,
RegisterComponentDestructor = 60,
/**

@@ -695,3 +685,3 @@ * Operation: Push a new ElementOperations for the current component.

*/
PushComponentOperations = 62,
PushComponentOperations = 61,
/**

@@ -706,3 +696,3 @@ * Operation: Push the component's `self` onto the stack.

*/
GetComponentSelf = 63,
GetComponentSelf = 62,
/**

@@ -717,3 +707,3 @@ * Operation: Get a slice of opcodes to invoke.

*/
GetComponentLayout = 64,
GetComponentLayout = 63,
/**

@@ -728,3 +718,3 @@ * Operation: Begin a new cache group

*/
BeginComponentTransaction = 65,
BeginComponentTransaction = 64,
/**

@@ -739,3 +729,3 @@ * Operation: Commit the current cache group

*/
CommitComponentTransaction = 66,
CommitComponentTransaction = 65,
/**

@@ -750,3 +740,3 @@ * Operation: Invoke didCreateElement on the current component manager

*/
DidCreateElement = 67,
DidCreateElement = 66,
/**

@@ -761,3 +751,3 @@ * Operation: Invoke didRenderLayout on the current component manager

*/
DidRenderLayout = 68,
DidRenderLayout = 67,
/**

@@ -772,3 +762,3 @@ * Operation: Extract the template from a partial definition

*/
GetPartialTemplate = 69,
GetPartialTemplate = 68,
/**

@@ -785,3 +775,3 @@ * Operation:

*/
ResolveMaybeLocal = 70,
ResolveMaybeLocal = 69,
/**

@@ -796,5 +786,5 @@ * Operation: Activate the debugger

*/
Debugger = 71,
Debugger = 70,
/** The size of the opcode list */
Size = 72,
Size = 71,
}

@@ -801,0 +791,0 @@ export declare function debugSlice(env: Environment, start: number, end: number): void;

@@ -33,2 +33,3 @@ import { Register } from '../opcodes';

capture(items: number): CapturedStack;
reset(): void;
toArray(): any[];

@@ -35,0 +36,0 @@ }

{
"name": "@glimmer/runtime",
"version": "0.24.0-alpha.2",
"version": "0.24.0-beta.1",
"description": "Minimal runtime needed to render Glimmer templates",

@@ -8,8 +8,8 @@ "repository": "https://github.com/glimmerjs/glimmer-vm/tree/master/packages/@glimmer/runtime",

"dependencies": {
"@glimmer/util": "^0.24.0-alpha.2",
"@glimmer/reference": "^0.24.0-alpha.2",
"@glimmer/object": "^0.24.0-alpha.2",
"@glimmer/object-reference": "^0.24.0-alpha.2",
"@glimmer/wire-format": "^0.24.0-alpha.2",
"@glimmer/interfaces": "^0.24.0-alpha.2"
"@glimmer/util": "^0.24.0-beta.1",
"@glimmer/reference": "^0.24.0-beta.1",
"@glimmer/object": "^0.24.0-beta.1",
"@glimmer/object-reference": "^0.24.0-beta.1",
"@glimmer/wire-format": "^0.24.0-beta.1",
"@glimmer/interfaces": "^0.24.0-beta.1"
},

@@ -16,0 +16,0 @@ "devDependencies": {

Sorry, the diff of this file is too big to display

Sorry, the diff of this file is too big to display

Sorry, the diff of this file is too big to display

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc