UNPKG

ember-legacy-class-transform

Version:
248 lines (205 loc) 25.6 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.DidUpdateLayoutOpcode = exports.UpdateComponentOpcode = undefined; var _reference = require("@glimmer/reference"); var _opcodes = require("../../opcodes"); var _arguments = require("../../vm/arguments"); var _arguments2 = _interopRequireDefault(_arguments); var _dom = require("./dom"); var _vm2 = require("./vm"); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } 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; } function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); }return call && (typeof call === "object" || typeof call === "function") ? call : self; } function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); }subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } });if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : _defaults(subClass, superClass); } _opcodes.APPEND_OPCODES.add(56 /* PushComponentManager */, function (vm, _ref) { var _definition = _ref.op1; var definition = vm.constants.getOther(_definition); var stack = vm.stack; stack.push({ definition: definition, manager: definition.manager, component: null }); }); _opcodes.APPEND_OPCODES.add(57 /* PushDynamicComponentManager */, function (vm) { var stack = vm.stack; var reference = stack.pop(); var cache = (0, _reference.isConst)(reference) ? undefined : new _reference.ReferenceCache(reference); var definition = cache ? cache.peek() : reference.value(); stack.push({ definition: definition, manager: definition.manager, component: null }); if (cache) { vm.updateWith(new _vm2.Assert(cache)); } }); _opcodes.APPEND_OPCODES.add(58 /* PushArgs */, function (vm, _ref2) { var synthetic = _ref2.op1; var stack = vm.stack; _arguments2.default.setup(stack, !!synthetic); stack.push(_arguments2.default); }); _opcodes.APPEND_OPCODES.add(59 /* PrepareArgs */, function (vm, _ref3) { var _state = _ref3.op1; var stack = vm.stack; var _vm$fetchValue = vm.fetchValue(_state), definition = _vm$fetchValue.definition, manager = _vm$fetchValue.manager; var args = stack.pop(); var preparedArgs = manager.prepareArgs(definition, args); if (preparedArgs) { args.clear(); var positional = preparedArgs.positional, named = preparedArgs.named; var positionalCount = positional.length; for (var i = 0; i < positionalCount; i++) { stack.push(positional[i]); } stack.push(positionalCount); var names = Object.keys(named); var namedCount = names.length; var atNames = []; for (var _i = 0; _i < namedCount; _i++) { var value = named[names[_i]]; var atName = '@' + names[_i]; stack.push(value); atNames.push(atName); } stack.push(atNames); args.setup(stack, false); } stack.push(args); }); _opcodes.APPEND_OPCODES.add(60 /* CreateComponent */, function (vm, _ref4) { var _vm$fetchValue2; var flags = _ref4.op1, _state = _ref4.op2; var definition = void 0; var manager = void 0; var args = vm.stack.pop(); var dynamicScope = vm.dynamicScope(); var state = (_vm$fetchValue2 = vm.fetchValue(_state), definition = _vm$fetchValue2.definition, manager = _vm$fetchValue2.manager, _vm$fetchValue2); var hasDefaultBlock = flags & 1; var component = manager.create(vm.env, definition, args, dynamicScope, vm.getSelf(), !!hasDefaultBlock); state.component = component; vm.updateWith(new UpdateComponentOpcode(args.tag, definition.name, component, manager, dynamicScope)); }); _opcodes.APPEND_OPCODES.add(61 /* RegisterComponentDestructor */, function (vm, _ref5) { var _state = _ref5.op1; var _vm$fetchValue3 = vm.fetchValue(_state), manager = _vm$fetchValue3.manager, component = _vm$fetchValue3.component; var destructor = manager.getDestructor(component); if (destructor) vm.newDestroyable(destructor); }); _opcodes.APPEND_OPCODES.add(65 /* BeginComponentTransaction */, function (vm) { vm.beginCacheGroup(); vm.elements().pushSimpleBlock(); }); _opcodes.APPEND_OPCODES.add(62 /* PushComponentOperations */, function (vm) { vm.stack.push(new _dom.ComponentElementOperations(vm.env)); }); _opcodes.APPEND_OPCODES.add(67 /* DidCreateElement */, function (vm, _ref6) { var _state = _ref6.op1; var _vm$fetchValue4 = vm.fetchValue(_state), manager = _vm$fetchValue4.manager, component = _vm$fetchValue4.component; var action = 'DidCreateElementOpcode#evaluate'; manager.didCreateElement(component, vm.elements().expectConstructing(action), vm.elements().expectOperations(action)); }); _opcodes.APPEND_OPCODES.add(63 /* GetComponentSelf */, function (vm, _ref7) { var _state = _ref7.op1; var state = vm.fetchValue(_state); vm.stack.push(state.manager.getSelf(state.component)); }); _opcodes.APPEND_OPCODES.add(64 /* GetComponentLayout */, function (vm, _ref8) { var _state = _ref8.op1; var _vm$fetchValue5 = vm.fetchValue(_state), manager = _vm$fetchValue5.manager, definition = _vm$fetchValue5.definition, component = _vm$fetchValue5.component; vm.stack.push(manager.layoutFor(definition, component, vm.env)); }); _opcodes.APPEND_OPCODES.add(68 /* DidRenderLayout */, function (vm, _ref9) { var _state = _ref9.op1; var _vm$fetchValue6 = vm.fetchValue(_state), manager = _vm$fetchValue6.manager, component = _vm$fetchValue6.component; var bounds = vm.elements().popBlock(); manager.didRenderLayout(component, bounds); vm.env.didCreate(component, manager); vm.updateWith(new DidUpdateLayoutOpcode(manager, component, bounds)); }); _opcodes.APPEND_OPCODES.add(66 /* CommitComponentTransaction */, function (vm) { return vm.commitCacheGroup(); }); var UpdateComponentOpcode = exports.UpdateComponentOpcode = function (_UpdatingOpcode) { _inherits(UpdateComponentOpcode, _UpdatingOpcode); function UpdateComponentOpcode(tag, name, component, manager, dynamicScope) { _classCallCheck(this, UpdateComponentOpcode); var _this = _possibleConstructorReturn(this, _UpdatingOpcode.call(this)); _this.name = name; _this.component = component; _this.manager = manager; _this.dynamicScope = dynamicScope; _this.type = 'update-component'; var componentTag = manager.getTag(component); if (componentTag) { _this.tag = (0, _reference.combine)([tag, componentTag]); } else { _this.tag = tag; } return _this; } UpdateComponentOpcode.prototype.evaluate = function evaluate(_vm) { var component = this.component, manager = this.manager, dynamicScope = this.dynamicScope; manager.update(component, dynamicScope); }; UpdateComponentOpcode.prototype.toJSON = function toJSON() { return { args: [JSON.stringify(this.name)], guid: this._guid, type: this.type }; }; return UpdateComponentOpcode; }(_opcodes.UpdatingOpcode); var DidUpdateLayoutOpcode = exports.DidUpdateLayoutOpcode = function (_UpdatingOpcode2) { _inherits(DidUpdateLayoutOpcode, _UpdatingOpcode2); function DidUpdateLayoutOpcode(manager, component, bounds) { _classCallCheck(this, DidUpdateLayoutOpcode); var _this2 = _possibleConstructorReturn(this, _UpdatingOpcode2.call(this)); _this2.manager = manager; _this2.component = component; _this2.bounds = bounds; _this2.type = 'did-update-layout'; _this2.tag = _reference.CONSTANT_TAG; return _this2; } DidUpdateLayoutOpcode.prototype.evaluate = function evaluate(vm) { var manager = this.manager, component = this.component, bounds = this.bounds; manager.didUpdateLayout(component, bounds); vm.env.didUpdate(component, manager); }; return DidUpdateLayoutOpcode; }(_opcodes.UpdatingOpcode); //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9jb21waWxlZC9vcGNvZGVzL2NvbXBvbmVudC5qcyJdLCJuYW1lcyI6WyJjb21iaW5lIiwiQ09OU1RBTlRfVEFHIiwiaXNDb25zdCIsIlJlZmVyZW5jZUNhY2hlIiwiQVBQRU5EX09QQ09ERVMiLCJVcGRhdGluZ09wY29kZSIsIkFSR1MiLCJDb21wb25lbnRFbGVtZW50T3BlcmF0aW9ucyIsIkFzc2VydCIsImFkZCIsInZtIiwiX2RlZmluaXRpb24iLCJvcDEiLCJkZWZpbml0aW9uIiwiY29uc3RhbnRzIiwiZ2V0T3RoZXIiLCJzdGFjayIsInB1c2giLCJtYW5hZ2VyIiwiY29tcG9uZW50IiwicmVmZXJlbmNlIiwicG9wIiwiY2FjaGUiLCJ1bmRlZmluZWQiLCJwZWVrIiwidmFsdWUiLCJ1cGRhdGVXaXRoIiwic3ludGhldGljIiwic2V0dXAiLCJfc3RhdGUiLCJmZXRjaFZhbHVlIiwiYXJncyIsInByZXBhcmVkQXJncyIsInByZXBhcmVBcmdzIiwiY2xlYXIiLCJwb3NpdGlvbmFsIiwibmFtZWQiLCJwb3NpdGlvbmFsQ291bnQiLCJsZW5ndGgiLCJpIiwibmFtZXMiLCJPYmplY3QiLCJrZXlzIiwibmFtZWRDb3VudCIsImF0TmFtZXMiLCJhdE5hbWUiLCJmbGFncyIsIm9wMiIsImR5bmFtaWNTY29wZSIsInN0YXRlIiwiaGFzRGVmYXVsdEJsb2NrIiwiY3JlYXRlIiwiZW52IiwiZ2V0U2VsZiIsIlVwZGF0ZUNvbXBvbmVudE9wY29kZSIsInRhZyIsIm5hbWUiLCJkZXN0cnVjdG9yIiwiZ2V0RGVzdHJ1Y3RvciIsIm5ld0Rlc3Ryb3lhYmxlIiwiYmVnaW5DYWNoZUdyb3VwIiwiZWxlbWVudHMiLCJwdXNoU2ltcGxlQmxvY2siLCJhY3Rpb24iLCJkaWRDcmVhdGVFbGVtZW50IiwiZXhwZWN0Q29uc3RydWN0aW5nIiwiZXhwZWN0T3BlcmF0aW9ucyIsImxheW91dEZvciIsImJvdW5kcyIsInBvcEJsb2NrIiwiZGlkUmVuZGVyTGF5b3V0IiwiZGlkQ3JlYXRlIiwiRGlkVXBkYXRlTGF5b3V0T3Bjb2RlIiwiY29tbWl0Q2FjaGVHcm91cCIsInR5cGUiLCJjb21wb25lbnRUYWciLCJnZXRUYWciLCJldmFsdWF0ZSIsIl92bSIsInVwZGF0ZSIsInRvSlNPTiIsIkpTT04iLCJzdHJpbmdpZnkiLCJndWlkIiwiX2d1aWQiLCJkaWRVcGRhdGVMYXlvdXQiLCJkaWRVcGRhdGUiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFBQSxBQUFTLEFBQVMsQUFBYyxBQUFTLEFBQXNCOztBQUMvRCxBQUFTLEFBQWdCLEFBQXNCOztBQUMvQyxBQUFPLEFBQVU7Ozs7QUFDakIsQUFBUyxBQUFrQzs7QUFDM0MsQUFBUyxBQUFjOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFDdkIsd0JBQUEsQUFBZSxJQUFmLEFBQW1CLEdBQW5CLEFBQXNCLDRCQUE0QixVQUFBLEFBQUMsVUFBNkI7UUFBbEIsQUFBa0IsbUJBQXZCLEFBQXVCLEFBQzVFOztRQUFJLGFBQWEsR0FBQSxBQUFHLFVBQUgsQUFBYSxTQUE5QixBQUFpQixBQUFzQixBQUN2QztRQUFJLFFBQVEsR0FBWixBQUFlLEFBQ2Y7VUFBQSxBQUFNLEtBQUssRUFBRSxZQUFGLFlBQWMsU0FBUyxXQUF2QixBQUFrQyxTQUFTLFdBQXRELEFBQVcsQUFBc0QsQUFDcEU7QUFKRDtBQUtBLHdCQUFBLEFBQWUsSUFBZixBQUFtQixHQUFuQixBQUFzQixtQ0FBbUMsY0FBTSxBQUMzRDtRQUFJLFFBQVEsR0FBWixBQUFlLEFBQ2Y7UUFBSSxZQUFZLE1BQWhCLEFBQWdCLEFBQU0sQUFDdEI7UUFBSSxRQUFRLHdCQUFBLEFBQVEsYUFBUixBQUFxQixZQUFZLEFBQUksOEJBQWpELEFBQTZDLEFBQW1CLEFBQ2hFO1FBQUksYUFBYSxRQUFRLE1BQVIsQUFBUSxBQUFNLFNBQVMsVUFBeEMsQUFBd0MsQUFBVSxBQUNsRDtVQUFBLEFBQU0sS0FBSyxFQUFFLFlBQUYsWUFBYyxTQUFTLFdBQXZCLEFBQWtDLFNBQVMsV0FBdEQsQUFBVyxBQUFzRCxB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LEFBQWlCLEFBQ2pCO2VBQUEsQUFBSyxTQUFMLEFBQWMsQUFDZDtlQUFBLEFBQUssT0FBTCxBQUFZLEFBQ1o7ZUFOb0MsQUFNcEMsQUFBSyxBQUFNO2VBQ2Q7QUFSTDs7b0NBQUEsQUFTSSw2QkFUSixBQVNhLElBQUk7WUFBQSxBQUNILFVBREcsQUFDNEIsS0FENUIsQUFDSDtZQURHLEFBQ00sWUFETixBQUM0QixLQUQ1QixBQUNNO1lBRE4sQUFDaUIsU0FEakIsQUFDNEIsS0FENUIsQUFDaUIsQUFDMUI7O2dCQUFBLEFBQVEsZ0JBQVIsQUFBd0IsV0FBeEIsQUFBbUMsQUFDbkM7V0FBQSxBQUFHLElBQUgsQUFBTyxVQUFQLEFBQWlCLFdBQWpCLEFBQTRCLEFBQy9CO0FBYkw7O1dBQUE7QUFBQSxBQUEyQyIsImZpbGUiOiJsaWIvY29tcGlsZWQvb3Bjb2Rlcy9jb21wb25lbnQuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBjb21iaW5lLCBDT05TVEFOVF9UQUcsIGlzQ29uc3QsIFJlZmVyZW5jZUNhY2hlIH0gZnJvbSAnQGdsaW1tZXIvcmVmZXJlbmNlJztcbmltcG9ydCB7IEFQUEVORF9PUENPREVTLCBVcGRhdGluZ09wY29kZSB9IGZyb20gJy4uLy4uL29wY29kZXMnO1xuaW1wb3J0IEFSR1MgZnJvbSAnLi4vLi4vdm0vYXJndW1lbnRzJztcbmltcG9ydCB7IENvbXBvbmVudEVsZW1lbnRPcGVyYXRpb25zIH0gZnJvbSAnLi9kb20nO1xuaW1wb3J0IHsgQXNzZXJ0IH0gZnJvbSAnLi92bSc7XG5BUFBFTkRfT1BDT0RFUy5hZGQoNTYgLyogUHVzaENvbXBvbmVudE1hbmFnZXIgKi8sICh2bSwgeyBvcDE6IF9kZWZpbml0aW9uIH0pID0+IHtcbiAgICBsZXQgZGVmaW5pdGlvbiA9IHZtLmNvbnN0YW50cy5nZXRPdGhlcihfZGVmaW5pdGlvbik7XG4gICAgbGV0IHN0YWNrID0gdm0uc3RhY2s7XG4gICAgc3RhY2sucHVzaCh7IGRlZmluaXRpb24sIG1hbmFnZXI6IGRlZmluaXRpb24ubWFuYWdlciwgY29tcG9uZW50OiBudWxsIH0pO1xufSk7XG5BUFBFTkRfT1BDT0RFUy5hZGQoNTcgLyogUHVzaER5bmFtaWNDb21wb25lbnRNYW5hZ2VyICovLCB2bSA9PiB7XG4gICAgbGV0IHN0YWNrID0gdm0uc3RhY2s7XG4gICAgbGV0IHJlZmVyZW5jZSA9IHN0YWNrLnBvcCgpO1xuICAgIGxldCBjYWNoZSA9IGlzQ29uc3QocmVmZXJlbmNlKSA/IHVuZGVmaW5lZCA6IG5ldyBSZWZlcmVuY2VDYWNoZShyZWZlcmVuY2UpO1xuICAgIGxldCBkZWZpbml0aW9uID0gY2FjaGUgPyBjYWNoZS5wZWVrKCkgOiByZWZlcmVuY2UudmFsdWUoKTtcbiAgICBzdGFjay5wdXNoKHsgZGVmaW5pdGlvbiwgbWFuYWdlcjogZGVmaW5pdGlvbi5tYW5hZ2VyLCBjb21wb25lbnQ6IG51bGwgfSk7XG4gICAgaWYgKGNhY2hlKSB7XG4gICAgICAgIHZtLnVwZGF0ZVdpdGgobmV3IEFzc2VydChjYWNoZSkpO1xuICAgIH1cbn0pO1xuQVBQRU5EX09QQ09ERVMuYWRkKDU4IC8qIFB1c2hBcmdzICovLCAodm0sIHsgb3AxOiBzeW50aGV0aWMgfSkgPT4ge1xuICAgIGxldCBzdGFjayA9IHZtLnN0YWNrO1xuICAgIEFSR1Muc2V0dXAoc3RhY2ssICEhc3ludGhldGljKTtcbiAgICBzdGFjay5wdXNoKEFSR1MpO1xufSk7XG5BUFBFTkRfT1BDT0RFUy5hZGQoNTkgLyogUHJlcGFyZUFyZ3MgKi8sICh2bSwgeyBvcDE6IF9zdGF0ZSB9KSA9PiB7XG4gICAgbGV0IHN0YWNrID0gdm0uc3RhY2s7XG4gICAgbGV0IHsgZGVmaW5pdGlvbiwgbWFuYWdlciB9ID0gdm0uZmV0Y2hWYWx1ZShfc3RhdGUpO1xuICAgIGxldCBhcmdzID0gc3RhY2sucG9wKCk7XG4gICAgbGV0IHByZXBhcmVkQXJncyA9IG1hbmFnZXIucHJlcGFyZUFyZ3MoZGVmaW5pdGlvbiwgYXJncyk7XG4gICAgaWYgKHByZXBhcmVkQXJncykge1xuICAgICAgICBhcmdzLmNsZWFyKCk7XG4gICAgICAgIGxldCB7IHBvc2l0aW9uYWwsIG5hbWVkIH0gPSBwcmVwYXJlZEFyZ3M7XG4gICAgICAgIGxldCBwb3NpdGlvbmFsQ291bnQgPSBwb3NpdGlvbmFsLmxlbmd0aDtcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBwb3NpdGlvbmFsQ291bnQ7IGkrKykge1xuICAgICAgICAgICAgc3RhY2sucHVzaChwb3NpdGlvbmFsW2ldKTtcbiAgICAgICAgfVxuICAgICAgICBzdGFjay5wdXNoKHBvc2l0aW9uYWxDb3VudCk7XG4gICAgICAgIGxldCBuYW1lcyA9IE9iamVjdC5rZXlzKG5hbWVkKTtcbiAgICAgICAgbGV0IG5hbWVkQ291bnQgPSBuYW1lcy5sZW5ndGg7XG4gICAgICAgIGxldCBhdE5hbWVzID0gW107XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbmFtZWRDb3VudDsgaSsrKSB7XG4gICAgICAgICAgICBsZXQgdmFsdWUgPSBuYW1lZFtuYW1lc1tpXV07XG4gICAgICAgICAgICBsZXQgYXROYW1lID0gYEAke25hbWVzW2ldfWA7XG4gICAgICAgICAgICBzdGFjay5wdXNoKHZhbHVlKTtcbiAgICAgICAgICAgIGF0TmFtZXMucHVzaChhdE5hbWUpO1xuICAgICAgICB9XG4gICAgICAgIHN0YWNrLnB1c2goYXROYW1lcyk7XG4gICAgICAgIGFyZ3Muc2V0dXAoc3RhY2ssIGZhbHNlKTtcbiAgICB9XG4gICAgc3RhY2sucHVzaChhcmdzKTtcbn0pO1xuQVBQRU5EX09QQ09ERVMuYWRkKDYwIC8qIENyZWF0ZUNvbXBvbmVudCAqLywgKHZtLCB7IG9wMTogZmxhZ3MsIG9wMjogX3N0YXRlIH0pID0+IHtcbiAgICBsZXQgZGVmaW5pdGlvbjtcbiAgICBsZXQgbWFuYWdlcjtcbiAgICBsZXQgYXJncyA9IHZtLnN0YWNrLnBvcCgpO1xuICAgIGxldCBkeW5hbWljU2NvcGUgPSB2bS5keW5hbWljU2NvcGUoKTtcbiAgICBsZXQgc3RhdGUgPSAoeyBkZWZpbml0aW9uLCBtYW5hZ2VyIH0gPSB2bS5mZXRjaFZhbHVlKF9zdGF0ZSkpO1xuICAgIGxldCBoYXNEZWZhdWx0QmxvY2sgPSBmbGFncyAmIDE7XG4gICAgbGV0IGNvbXBvbmVudCA9IG1hbmFnZXIuY3JlYXRlKHZtLmVudiwgZGVmaW5pdGlvbiwgYXJncywgZHluYW1pY1Njb3BlLCB2bS5nZXRTZWxmKCksICEhaGFzRGVmYXVsdEJsb2NrKTtcbiAgICBzdGF0ZS5jb21wb25lbnQgPSBjb21wb25lbnQ7XG4gICAgdm0udXBkYXRlV2l0aChuZXcgVXBkYXRlQ29tcG9uZW50T3Bjb2RlKGFyZ3MudGFnLCBkZWZpbml0aW9uLm5hbWUsIGNvbXBvbmVudCwgbWFuYWdlciwgZHluYW1pY1Njb3BlKSk7XG59KTtcbkFQUEVORF9PUENPREVTLmFkZCg2MSAvKiBSZWdpc3RlckNvbXBvbmVudERlc3RydWN0b3IgKi8sICh2bSwgeyBvcDE6IF9zdGF0ZSB9KSA9PiB7XG4gICAgbGV0IHsgbWFuYWdlciwgY29tcG9uZW50IH0gPSB2bS5mZXRjaFZhbHVlKF9zdGF0ZSk7XG4gICAgbGV0IGRlc3RydWN0b3IgPSBtYW5hZ2VyLmdldERlc3RydWN0b3IoY29tcG9uZW50KTtcbiAgICBpZiAoZGVzdHJ1Y3Rvcikgdm0ubmV3RGVzdHJveWFibGUoZGVzdHJ1Y3Rvcik7XG59KTtcbkFQUEVORF9PUENPREVTLmFkZCg2NSAvKiBCZWdpbkNvbXBvbmVudFRyYW5zYWN0aW9uICovLCB2bSA9PiB7XG4gICAgdm0uYmVnaW5DYWNoZUdyb3VwKCk7XG4gICAgdm0uZWxlbWVudHMoKS5wdXNoU2ltcGxlQmxvY2soKTtcbn0pO1xuQVBQRU5EX09QQ09ERVMuYWRkKDYyIC8qIFB1c2hDb21wb25lbnRPcGVyYXRpb25zICovLCB2bSA9PiB7XG4gICAgdm0uc3RhY2sucHVzaChuZXcgQ29tcG9uZW50RWxlbWVudE9wZXJhdGlvbnModm0uZW52KSk7XG59KTtcbkFQUEVORF9PUENPREVTLmFkZCg2NyAvKiBEaWRDcmVhdGVFbGVtZW50ICovLCAodm0sIHsgb3AxOiBfc3RhdGUgfSkgPT4ge1xuICAgIGxldCB7IG1hbmFnZXIsIGNvbXBvbmVudCB9ID0gdm0uZmV0Y2hWYWx1ZShfc3RhdGUpO1xuICAgIGxldCBhY3Rpb24gPSAnRGlkQ3JlYXRlRWxlbWVudE9wY29kZSNldmFsdWF0ZSc7XG4gICAgbWFuYWdlci5kaWRDcmVhdGVFbGVtZW50KGNvbXBvbmVudCwgdm0uZWxlbWVudHMoKS5leHBlY3RDb25zdHJ1Y3RpbmcoYWN0aW9uKSwgdm0uZWxlbWVudHMoKS5leHBlY3RPcGVyYXRpb25zKGFjdGlvbikpO1xufSk7XG5BUFBFTkRfT1BDT0RFUy5hZGQoNjMgLyogR2V0Q29tcG9uZW50U2VsZiAqLywgKHZtLCB7IG9wMTogX3N0YXRlIH0pID0+IHtcbiAgICBsZXQgc3RhdGUgPSB2bS5mZXRjaFZhbHVlKF9zdGF0ZSk7XG4gICAgdm0uc3RhY2sucHVzaChzdGF0ZS5tYW5hZ2VyLmdldFNlbGYoc3RhdGUuY29tcG9uZW50KSk7XG59KTtcbkFQUEVORF9PUENPREVTLmFkZCg2NCAvKiBHZXRDb21wb25lbnRMYXlvdXQgKi8sICh2bSwgeyBvcDE6IF9zdGF0ZSB9KSA9PiB7XG4gICAgbGV0IHsgbWFuYWdlciwgZGVmaW5pdGlvbiwgY29tcG9uZW50IH0gPSB2bS5mZXRjaFZhbHVlKF9zdGF0ZSk7XG4gICAgdm0uc3RhY2sucHVzaChtYW5hZ2VyLmxheW91dEZvcihkZWZpbml0aW9uLCBjb21wb25lbnQsIHZtLmVudikpO1xufSk7XG5BUFBFTkRfT1BDT0RFUy5hZGQoNjggLyogRGlkUmVuZGVyTGF5b3V0ICovLCAodm0sIHsgb3AxOiBfc3RhdGUgfSkgPT4ge1xuICAgIGxldCB7IG1hbmFnZXIsIGNvbXBvbmVudCB9ID0gdm0uZmV0Y2hWYWx1ZShfc3RhdGUpO1xuICAgIGxldCBib3VuZHMgPSB2bS5lbGVtZW50cygpLnBvcEJsb2NrKCk7XG4gICAgbWFuYWdlci5kaWRSZW5kZXJMYXlvdXQoY29tcG9uZW50LCBib3VuZHMpO1xuICAgIHZtLmVudi5kaWRDcmVhdGUoY29tcG9uZW50LCBtYW5hZ2VyKTtcbiAgICB2bS51cGRhdGVXaXRoKG5ldyBEaWRVcGRhdGVMYXlvdXRPcGNvZGUobWFuYWdlciwgY29tcG9uZW50LCBib3VuZHMpKTtcbn0pO1xuQVBQRU5EX09QQ09ERVMuYWRkKDY2IC8qIENvbW1pdENvbXBvbmVudFRyYW5zYWN0aW9uICovLCB2bSA9PiB2bS5jb21taXRDYWNoZUdyb3VwKCkpO1xuZXhwb3J0IGNsYXNzIFVwZGF0ZUNvbXBvbmVudE9wY29kZSBleHRlbmRzIFVwZGF0aW5nT3Bjb2RlIHtcbiAgICBjb25zdHJ1Y3Rvcih0YWcsIG5hbWUsIGNvbXBvbmVudCwgbWFuYWdlciwgZHluYW1pY1Njb3BlKSB7XG4gICAgICAgIHN1cGVyKCk7XG4gICAgICAgIHRoaXMubmFtZSA9IG5hbWU7XG4gICAgICAgIHRoaXMuY29tcG9uZW50ID0gY29tcG9uZW50O1xuICAgICAgICB0aGlzLm1hbmFnZXIgPSBtYW5hZ2VyO1xuICAgICAgICB0aGlzLmR5bmFtaWNTY29wZSA9IGR5bmFtaWNTY29wZTtcbiAgICAgICAgdGhpcy50eXBlID0gJ3VwZGF0ZS1jb21wb25lbnQnO1xuICAgICAgICBsZXQgY29tcG9uZW50VGFnID0gbWFuYWdlci5nZXRUYWcoY29tcG9uZW50KTtcbiAgICAgICAgaWYgKGNvbXBvbmVudFRhZykge1xuICAgICAgICAgICAgdGhpcy50YWcgPSBjb21iaW5lKFt0YWcsIGNvbXBvbmVudFRhZ10pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy50YWcgPSB0YWc7XG4gICAgICAgIH1cbiAgICB9XG4gICAgZXZhbHVhdGUoX3ZtKSB7XG4gICAgICAgIGxldCB7IGNvbXBvbmVudCwgbWFuYWdlciwgZHluYW1pY1Njb3BlIH0gPSB0aGlzO1xuICAgICAgICBtYW5hZ2VyLnVwZGF0ZShjb21wb25lbnQsIGR5bmFtaWNTY29wZSk7XG4gICAgfVxuICAgIHRvSlNPTigpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGFyZ3M6IFtKU09OLnN0cmluZ2lmeSh0aGlzLm5hbWUpXSxcbiAgICAgICAgICAgIGd1aWQ6IHRoaXMuX2d1aWQsXG4gICAgICAgICAgICB0eXBlOiB0aGlzLnR5cGVcbiAgICAgICAgfTtcbiAgICB9XG59XG5leHBvcnQgY2xhc3MgRGlkVXBkYXRlTGF5b3V0T3Bjb2RlIGV4dGVuZHMgVXBkYXRpbmdPcGNvZGUge1xuICAgIGNvbnN0cnVjdG9yKG1hbmFnZXIsIGNvbXBvbmVudCwgYm91bmRzKSB7XG4gICAgICAgIHN1cGVyKCk7XG4gICAgICAgIHRoaXMubWFuYWdlciA9IG1hbmFnZXI7XG4gICAgICAgIHRoaXMuY29tcG9uZW50ID0gY29tcG9uZW50O1xuICAgICAgICB0aGlzLmJvdW5kcyA9IGJvdW5kcztcbiAgICAgICAgdGhpcy50eXBlID0gJ2RpZC11cGRhdGUtbGF5b3V0JztcbiAgICAgICAgdGhpcy50YWcgPSBDT05TVEFOVF9UQUc7XG4gICAgfVxuICAgIGV2YWx1YXRlKHZtKSB7XG4gICAgICAgIGxldCB7IG1hbmFnZXIsIGNvbXBvbmVudCwgYm91bmRzIH0gPSB0aGlzO1xuICAgICAgICBtYW5hZ2VyLmRpZFVwZGF0ZUxheW91dChjb21wb25lbnQsIGJvdW5kcyk7XG4gICAgICAgIHZtLmVudi5kaWRVcGRhdGUoY29tcG9uZW50LCBtYW5hZ2VyKTtcbiAgICB9XG59Il19