New Case Study:See how Anthropic automated 95% of dependency reviews with Socket.Learn More
Socket
Sign inDemoInstall
Socket

@glimmer/application-test-helpers

Package Overview
Dependencies
Maintainers
11
Versions
67
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@glimmer/application-test-helpers - npm Package Compare versions

Comparing version 0.14.0-alpha.6 to 0.14.0-alpha.7

10

dist/amd/es5/glimmer-application-test-helpers.js

@@ -239,11 +239,7 @@ define('@glimmer/application-test-helpers/index', ['exports', '@glimmer/application-test-helpers/src/app-builder', '@glimmer/application-test-helpers/src/compiler', '@glimmer/application-test-helpers/src/default-resolver-configuration', '@glimmer/application-test-helpers/src/did-render', '@glimmer/application-test-helpers/src/render-test'], function (exports, _appBuilder, _compiler, _defaultResolverConfiguration, _didRender, _renderTest) {

AppBuilder.prototype.renderToString = function renderToString(componentName, data) {
AppBuilder.prototype.renderToString = function renderToString(componentName, data, options) {
var resolver = this.buildResolver();
var loader = this.buildLoader(resolver);
return _ssr.SSRApplication.renderToString(componentName, data, {
rootName: this.rootName,
resolver: resolver,
loader: loader,
renderer: new _application.SyncRenderer()
});
return _ssr.SSRApplication.renderToString(componentName, data, Object.assign({ rootName: this.rootName, resolver: resolver,
loader: loader, renderer: new _application.SyncRenderer() }, options));
};

@@ -250,0 +246,0 @@

@@ -152,11 +152,7 @@ 'use strict';

}
renderToString(componentName, data) {
renderToString(componentName, data, options) {
const resolver = this.buildResolver();
let loader = this.buildLoader(resolver);
return _ssr.SSRApplication.renderToString(componentName, data, {
rootName: this.rootName,
resolver,
loader,
renderer: new _application.SyncRenderer()
});
return _ssr.SSRApplication.renderToString(componentName, data, Object.assign({ rootName: this.rootName, resolver,
loader, renderer: new _application.SyncRenderer() }, options));
}

@@ -229,2 +225,2 @@ async boot() {

exports.buildApp = buildApp;
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL0BnbGltbWVyL2FwcGxpY2F0aW9uLXRlc3QtaGVscGVycy9zcmMvYXBwLWJ1aWxkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7QUFFQTs7OztBQUNBOztBQUNBOzs7O0FBU0E7O0FBQ0E7O0FBQ0E7O0FBRUE7O0FBR0E7O0FBRUE7Ozs7OztBQWFNLE1BQU8sZUFBUCxTQUErQixxQkFBL0IsQ0FBMEM7UUFBbkMsZSxHQUFBLGU7QUFZYixTQUFTLFVBQVQsQ0FBb0IsTUFBcEIsRUFBb0MsSUFBcEMsRUFBZ0Q7QUFDOUMsV0FBTztBQUNMLGNBQU0sVUFERDtBQUVMLGNBRks7QUFHTCxZQUhLO0FBSUwsY0FBTTtBQUNKLGtCQURJO0FBRUo7QUFGSTtBQUpELEtBQVA7QUFTRDtBQUVLLE1BQU8sVUFBUCxDQUFpQjtBQU1yQixnQkFBWSxJQUFaLEVBQTBCLE9BQTFCLEVBQXVEO0FBSnZELGFBQUEsT0FBQSxHQUF5QixFQUF6QjtBQUNBLGFBQUEsU0FBQSxHQUEwQixFQUExQjtBQUlFLGFBQUssUUFBTCxHQUFnQixJQUFoQjtBQUNBLGFBQUssT0FBTCxHQUFlLE9BQWY7QUFDQSxhQUFLLE9BQUwsQ0FDRSxzQkFBc0IsS0FBSyxRQUFRLDBCQURyQyxJQUVJLEtBQUssT0FBTCxDQUFhLGdCQUZqQjtBQUdBLGFBQUssUUFBTCxDQUFjLE1BQWQsRUFBc0IsU0FBdEI7QUFDQSxhQUFLLE1BQUwsQ0FBWSxRQUFaLEVBQXNCLHdCQUF0QixFQUFtQyxJQUFuQztBQUNEO0FBRUQsYUFBUyxJQUFULEVBQXVCLFFBQXZCLEVBQXVDO0FBQ3JDLDBCQUNFLEtBQUssTUFBTCxDQUFZLENBQVosTUFBbUIsS0FBSyxNQUFMLENBQVksQ0FBWixFQUFlLFdBQWYsRUFEckIsRUFFRSxpREFGRjtBQUtBLFlBQUksWUFBWSxhQUFhLEtBQUssUUFBUSxlQUFlLElBQUksRUFBN0Q7QUFDQSxhQUFLLE9BQUwsQ0FBYSxTQUFiLElB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QUFrQixRQUFRLE9BQVIsSUFBbUIsVUFBckM7QUFDQSxZQUFRLE1BQVIsR0FBaUIsUUFBUSxNQUFSLElBQWtCLGtCQUFuQztBQUNBLFlBQVEsZ0JBQVIsR0FBMkIsUUFBUSxnQkFBUixJQUE0QiwyQkFBdkQ7QUFDQSxZQUFRLGdCQUFSLEdBQ0UsUUFBUSxnQkFBUixJQUE2QixlQUQvQjtBQUdBLFdBQU8sSUFBSSxVQUFKLENBQWUsUUFBUSxPQUF2QixFQUFnQyxPQUFoQyxDQUFQO0FBQ0Q7UUFFUSxRLEdBQUEsUSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBSZXNvbHZlciwgeyBCYXNpY01vZHVsZVJlZ2lzdHJ5LCBSZXNvbHZlckNvbmZpZ3VyYXRpb24gfSBmcm9tICdAZ2xpbW1lci9yZXNvbHZlcic7XG5pbXBvcnQgeyBEaWN0LCBNb2R1bGVMb2NhdG9yLCBUZW1wbGF0ZUxvY2F0b3IgfSBmcm9tICdAZ2xpbW1lci9pbnRlcmZhY2VzJztcbmltcG9ydCBkZWZhdWx0UmVzb2x2ZXJDb25maWd1cmF0aW9uIGZyb20gJy4vZGVmYXVsdC1yZXNvbHZlci1jb25maWd1cmF0aW9uJztcbmltcG9ydCB7IHByZWNvbXBpbGUgfSBmcm9tICcuL2NvbXBpbGVyJztcbmltcG9ydCBBcHBsaWNhdGlvbiwge1xuICBBcHBsaWNhdGlvbkNvbnN0cnVjdG9yLFxuICBCeXRlY29kZUxvYWRlcixcbiAgRE9NQnVpbGRlcixcbiAgTG9hZGVyLFxuICBSdW50aW1lQ29tcGlsZXJMb2FkZXIsXG4gIFN5bmNSZW5kZXJlcixcbiAgTW9kdWxlVHlwZXNcbn0gZnJvbSAnQGdsaW1tZXIvYXBwbGljYXRpb24nO1xuaW1wb3J0IHsgQ29tcG9uZW50TWFuYWdlciwgQ0FQQUJJTElUSUVTIH0gZnJvbSAnQGdsaW1tZXIvY29tcG9uZW50JztcbmltcG9ydCB7IGFzc2VydCB9IGZyb20gJ0BnbGltbWVyL3V0aWwnO1xuaW1wb3J0IHsgQnVuZGxlQ29tcGlsZXIsIENvbXBpbGVyRGVsZWdhdGUgYXMgSUNvbXBpbGVyRGVsZWdhdGUgfSBmcm9tICdAZ2xpbW1lci9idW5kbGUtY29tcGlsZXInO1xuaW1wb3J0IHsgYnVpbGRBY3Rpb24sIG1haW5UZW1wbGF0ZSB9IGZyb20gJ0BnbGltbWVyL2FwcGxpY2F0aW9uJztcbmltcG9ydCB7IGNvbXBpbGFibGUgfSBmcm9tICdAZ2xpbW1lci9vcGNvZGUtY29tcGlsZXInO1xuaW1wb3J0IHsgTWV0YWRhdGEgfSBmcm9tICcuLi8uLi9hcHBsaWNhdGlvbi9zcmMvbG9hZGVycy9ieXRlY29kZS9sb2FkZXInO1xuaW1wb3J0IHsgU2ltcGxlRG9jdW1lbnQgfSBmcm9tICdAc2ltcGxlLWRvbS9pbnRlcmZhY2UnO1xuaW1wb3J0IHsgU1NSQXBwbGljYXRpb24gfSBmcm9tICdAZ2xpbW1lci9zc3InO1xuXG5pbXBvcnQgZGlkUmVuZGVyIGZyb20gJy4vZGlkLXJlbmRlcic7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQXBwQnVpbGRlck9wdGlvbnM8VD4ge1xuICBhcHBOYW1lPzogc3RyaW5nO1xuICBsb2FkZXI/OiBzdHJpbmc7XG4gIEFwcGxpY2F0aW9uQ2xhc3M/OiBBcHBsaWNhdGlvbkNvbnN0cnVjdG9yPFQ+O1xuICBDb21wb25lbnRNYW5hZ2VyPzogYW55OyAvLyBUT0RPIC0gdHlwaW5nXG4gIHJlc29sdmVyQ29uZmlndXJhdGlvbj86IFJlc29sdmVyQ29uZmlndXJhdGlvbjtcbiAgZG9jdW1lbnQ/OiBTaW1wbGVEb2N1bWVudDtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBDb21wb25lbnRGYWN0b3J5IHt9XG5cbmV4cG9ydCBjbGFzcyBUZXN0QXBwbGljYXRpb24gZXh0ZW5kcyBBcHBsaWNhdGlvbiB7XG4gIHJvb3RFbGVtZW50OiBFbGVtZW50O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEFwcEJ1aWxkZXJUZW1wbGF0ZU1ldGEge1xuICBzcGVjaWZpZXI6IHN0cmluZztcbn1cblxuaW50ZXJmYWNlIEhlbHBlckZ1bmN0aW9uIGV4dGVuZHMgRnVuY3Rpb24ge1xuICBpc0ZhY3Rvcnk/OiBib29sZWFuO1xufVxuXG5mdW5jdGlvbiBsb2NhdG9yRm9yKG1vZHVsZTogc3RyaW5nLCBuYW1lOiBzdHJpbmcpOiBUZW1wbGF0ZUxvY2F0b3I8TW9kdWxlTG9jYXRvcj4ge1xuICByZXR1cm4ge1xuICAgIGtpbmQ6ICd0ZW1wbGF0ZScsXG4gICAgbW9kdWxlLFxuICAgIG5hbWUsXG4gICAgbWV0YToge1xuICAgICAgbW9kdWxlLFxuICAgICAgbmFtZSxcbiAgICB9LFxuICB9O1xufVxuXG5leHBvcnQgY2xhc3MgQXBwQnVpbGRlcjxUIGV4dGVuZHMgVGVzdEFwcGxpY2F0aW9uPiB7XG4gIHJvb3ROYW1lOiBzdHJpbmc7XG4gIG1vZHVsZXM6IERpY3Q8dW5rbm93bj4gPSB7fTtcbiAgdGVtcGxhdGVzOiBEaWN0PHN0cmluZz4gPSB7fTtcbiAgb3B0aW9uczogQXBwQnVpbGRlck9wdGlvbnM8VD47XG5cbiAgY29uc3RydWN0b3IobmFtZTogc3RyaW5nLCBvcHRpb25zOiBBcHBCdWlsZGVyT3B0aW9uczxUPikge1xuICAgIHRoaXMucm9vdE5hbWUgPSBuYW1lO1xuICAgIHRoaXMub3B0aW9ucyA9IG9wdGlvbnM7XG4gICAgdGhpcy5tb2R1bGVzW1xuICAgICAgYGNvbXBvbmVudC1tYW5hZ2VyOi8ke3RoaXMucm9vdE5hbWV9L2NvbXBvbmVudC1tYW5hZ2Vycy9tYWluYFxuICAgIF0gPSB0aGlzLm9wdGlvbnMuQ29tcG9uZW50TWFuYWdlcjtcbiAgICB0aGlzLnRlbXBsYXRlKCdNYWluJywgJzxkaXYgLz4nKTtcbiAgICB0aGlzLmhlbHBlcignYWN0aW9uJywgYnVpbGRBY3Rpb24sIHRydWUpO1xuICB9XG5cbiAgdGVtcGxhdGUobmFtZTogc3RyaW5nLCB0ZW1wbGF0ZTogc3RyaW5nKSB7XG4gICAgYXNzZXJ0KFxuICAgICAgbmFtZS5jaGFyQXQoMCkgPT09IG5hbWUuY2hhckF0KDApLnRvVXBwZXJDYXNlKCksXG4gICAgICAndGVtcGxhdGUgbmFtZXMgbXVzdCBzdGFydCB3aXRoIGEgY2FwaXRhbCBsZXR0ZXInXG4gICAgKTtcblxuICAgIGxldCBzcGVjaWZpZXIgPSBgdGVtcGxhdGU6LyR7dGhpcy5yb290TmFtZX0vY29tcG9uZW50cy8ke25hbWV9YDtcbiAgICB0aGlzLm1vZHVsZXNbc3BlY2lmaWVyXSA9IHByZWNvbXBpbGUodGVtcGxhdGUsIHsgbWV0YTogeyBzcGVjaWZpZXIgfSB9KTtcbiAgICB0aGlzLnRlbXBsYXRlc1tzcGVjaWZpZXJdID0gdGVtcGxhdGU7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBjb21wb25lbnQobmFtZTogc3RyaW5nLCBjb21wb25lbnRGYWN0b3J5OiBDb21wb25lbnRGYWN0b3J5KSB7XG4gICAgbGV0IHNwZWNpZmllciA9IGBjb21wb25lbnQ6LyR7dGhpcy5yb290TmFtZX0vY29tcG9uZW50cy8ke25hbWV9YDtcbiAgICB0aGlzLm1vZHVsZXNbc3BlY2lmaWVyXSA9IGNvbXBvbmVudEZhY3Rvcnk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBoZWxwZXIobmFtZTogc3RyaW5nLCBoZWxwZXJGdW5jOiBIZWxwZXJGdW5jdGlvbiwgaXNGYWN0b3J5ID0gZmFsc2UpIHtcbiAgICBsZXQgc3BlY2lmaWVyID0gYGhlbHBlcjovJHt0aGlzLnJvb3ROYW1lfS9jb21wb25lbnRzLyR7bmFtZX1gO1xuICAgIGhlbHBlckZ1bmMuaXNGYWN0b3J5ID0gaXNGYWN0b3J5O1xuICAgIHRoaXMubW9kdWxlc1tzcGVjaWZpZXJdID0gaGVscGVyRnVuYztcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIHByb3RlY3RlZCBidWlsZFJlc29sdmVyKCk6IFJlc29sdmVyIHtcbiAgICBsZXQgcmVzb2x2ZXJDb25maWd1cmF0aW9uID0gdGhpcy5vcHRpb25zLnJlc29sdmVyQ29uZmlndXJhdGlvbiB8fCBkZWZhdWx0UmVzb2x2ZXJDb25maWd1cmF0aW9uO1xuICAgIHJlc29sdmVyQ29uZmlndXJhdGlvbi5hcHAgPSByZXNvbHZlckNvbmZpZ3VyYXRpb24uYXBwIHx8IHtcbiAgICAgIG5hbWU6IHRoaXMucm9vdE5hbWUsXG4gICAgICByb290TmFtZTogdGhpcy5yb290TmFtZSxcbiAgICB9O1xuXG4gICAgbGV0IHJlZ2lzdHJ5ID0gbmV3IEJhc2ljTW9kdWxlUmVnaXN0cnkodGhpcy5tb2R1bGVzKTtcbiAgICByZXR1cm4gbmV3IFJlc29sdmVyKHJlc29sdmVyQ29uZmlndXJhdGlvbiwgcmVnaXN0cnkpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGJ1aWxkUnVudGltZUNvbXBpbGVyTG9hZGVyKCk6IExvYWRlciB7XG4gICAgcmV0dXJuIG5ldyBSdW50aW1lQ29tcGlsZXJMb2FkZXIoKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBidWlsZEJ5dGVjb2RlTG9hZGVyKHJlc29sdmVyOiBSZXNvbHZlcikge1xuICAgIGxldCBkZWxlZ2F0ZSA9IG5ldyBDb21waWxlckRlbGVnYXRlKHJlc29sdmVyKTtcbiAgICBsZXQgY29tcGlsZXIgPSBuZXcgQnVuZGxlQ29tcGlsZXIoZGVsZWdhdGUpO1xuXG4gICAgbGV0IG1haW5Mb2NhdG9yID0gbG9jYXRvckZvcigndGVtcGxhdGU6bWFpblRlbXBsYXRlJywgJ2RlZmF1bHQnKTtcbiAgICBtYWluTG9jYXRvci5tZXRhLm1vZHVsZSA9ICd0ZW1wbGF0ZTptYWluVGVtcGxhdGUnO1xuXG4gICAgbGV0IGJsb2NrID0gSlNPTi5wYXJzZShtYWluVGVtcGxhdGUuYmxvY2spO1xuICAgIGxldCBjb21waWxhYmxlVGVtcGxhdGUgPSBjb21waWxhYmxlKHtcbiAgICAgIGJsb2NrLFxuICAgICAgcmVmZXJyZXI6IG1haW5Mb2NhdG9yLm1ldGEsXG4gICAgfSk7XG5cbiAgICBjb21waWxlci5hZGRDb21waWxhYmxlVGVtcGxhdGUobWFpbkxvY2F0b3IsIGNvbXBpbGFibGVUZW1wbGF0ZSk7XG5cbiAgICBmb3IgKGxldCBtb2R1bGUgaW4gdGhpcy50ZW1wbGF0ZXMpIHtcbiAgICAgIGNvbXBpbGVyLmFkZFRlbXBsYXRlU291cmNlKGxvY2F0b3JGb3IobW9kdWxlLCAnZGVmYXVsdCcpLCB0aGlzLnRlbXBsYXRlc1ttb2R1bGVdKTtcbiAgICB9XG5cbiAgICBsZXQgeyBoZWFwLCBwb29sLCB0YWJsZSB9ID0gY29tcGlsZXIuY29tcGlsZSgpO1xuXG4gICAgbGV0IHJlc29sdmVyVGFibGU6IHVua25vd25bXSA9IFtdO1xuXG4gICAgbGV0IG1ldGE6IERpY3Q8TWV0YWRhdGE+ID0ge307XG5cbiAgICB0YWJsZS52bUhhbmRsZUJ5TW9kdWxlTG9jYXRvci5mb3JFYWNoKCh2bUhhbmRsZSwgbG9jYXRvcikgPT4ge1xuICAgICAgbGV0IGhhbmRsZSA9IHRhYmxlLmJ5TW9kdWxlTG9jYXRvci5nZXQobG9jYXRvcik7XG4gICAgICBsZXQgdGVtcGxhdGUgPSBjb21waWxlci5nZXRUZW1wbGF0ZShsb2NhdG9yKTtcblxuICAgICAgbWV0YVtsb2NhdG9yLm1vZHVsZV0gPSB7XG4gICAgICAgIHY6IHZtSGFuZGxlLFxuICAgICAgICBoOiBoYW5kbGUsXG4gICAgICAgIHRhYmxlOiB0ZW1wbGF0ZS5zeW1ib2xUYWJsZSxcbiAgICAgIH07XG4gICAgfSk7XG5cbiAgICB0YWJsZS5ieUhhbmRsZS5mb3JFYWNoKChsb2NhdG9yLCBoYW5kbGUpID0+IHtcbiAgICAgIGxldCBtb2R1bGUgPSBsb2NhdG9yLm1vZHVsZS5yZXBsYWNlKCd0ZW1wbGF0ZTovJywgJ2NvbXBvbmVudDovJyk7XG4gICAgICBpZiAodGhpcy5tb2R1bGVzW21vZHVsZV0pIHtcbiAgICAgICAgaWYgKG1vZHVsZS5pbmRleE9mKCdoZWxwZXI6JykgPT09IDApIHtcbiAgICAgICAgICBjb25zdCBtb2R1bGVUeXBlID0gKHRoaXMubW9kdWxlc1ttb2R1bGVdIGFzIEhlbHBlckZ1bmN0aW9uKS5pc0ZhY3RvcnkgPyBNb2R1bGVUeXBlcy5IRUxQRVJfRkFDVE9SWSA6IE1vZHVsZVR5cGVzLkhFTFBFUjtcbiAgICAgICAgICByZXNvbHZlclRhYmxlW2hhbmRsZV0gPSBbbW9kdWxlVHlwZSwgdGhpcy5tb2R1bGVzW21vZHVsZV1dO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJlc29sdmVyVGFibGVbaGFuZGxlXSA9IHRoaXMubW9kdWxlc1ttb2R1bGVdO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICBsZXQgYnl0ZWNvZGUgPSBoZWFwLmJ1ZmZlcjtcbiAgICBsZXQgZGF0YSA9IHtcbiAgICAgIHByZWZpeDogJycsXG4gICAgICBtYWluRW50cnk6IHRhYmxlLnZtSGFuZGxlQnlNb2R1bGVMb2NhdG9yLmdldChtYWluTG9jYXRvciksXG4gICAgICBwb29sLFxuICAgICAgdGFibGU6IHJlc29sdmVyVGFibGUsXG4gICAgICBtZXRhLFxuICAgICAgaGVhcDoge1xuICAgICAgICB0YWJsZTogaGVhcC50YWJsZSxcbiAgICAgICAgaGFuZGxlOiBoZWFwLmhhbmRsZSxcbiAgICAgIH0sXG4gICAgfTtcblxuICAgIHJldHVybiBuZXcgQnl0ZWNvZGVMb2FkZXIoeyBieXRlY29kZSwgZGF0YSB9KTtcbiAgfVxuXG4gIHByb3RlY3RlZCBidWlsZExvYWRlcihyZXNvbHZlcik6IExvYWRlciB7XG4gICAgc3dpdGNoICh0aGlzLm9wdGlvbnMubG9hZGVyKSB7XG4gICAgICBjYXNlICdydW50aW1lLWNvbXBpbGVyJzpcbiAgICAgICAgcmV0dXJuIHRoaXMuYnVpbGRSdW50aW1lQ29tcGlsZXJMb2FkZXIoKTtcbiAgICAgIGNhc2UgJ2J5dGVjb2RlJzpcbiAgICAgICAgcmV0dXJuIHRoaXMuYnVpbGRCeXRlY29kZUxvYWRlcihyZXNvbHZlcik7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFVucmVjb2duaXplZCBsb2FkZXIgJHt0aGlzLm9wdGlvbnMubG9hZGVyfWApO1xuICAgIH1cbiAgfVxuXG4gIHJlbmRlclRvU3RyaW5nKGNvbXBvbmVudE5hbWU6IHN0cmluZywgZGF0YTogRGljdDx1bmtub3duPik6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgY29uc3QgcmVzb2x2ZXIgPSB0aGlzLmJ1aWxkUmVzb2x2ZXIoKTtcbiAgICBsZXQgbG9hZGVyID0gdGhpcy5idWlsZExvYWRlcihyZXNvbHZlcik7XG5cbiAgICByZXR1cm4gU1NSQXBwbGljYXRpb24ucmVuZGVyVG9TdHJpbmcoY29tcG9uZW50TmFtZSwgZGF0YSwge1xuICAgICAgcm9vdE5hbWU6IHRoaXMucm9vdE5hbWUsXG4gICAgICByZXNvbHZlcixcbiAgICAgIGxvYWRlcixcbiAgICAgIHJlbmRlcmVyOiBuZXcgU3luY1JlbmRlcmVyKClcbiAgICB9KTtcbiAgfVxuXG4gIGFzeW5jIGJvb3QoKTogUHJvbWlzZTxUPiB7XG4gICAgbGV0IHJlc29sdmVyID0gdGhpcy5idWlsZFJlc29sdmVyKCk7XG4gICAgbGV0IGxvYWRlcjogTG9hZGVyID0gdGhpcy5idWlsZExvYWRlcihyZXNvbHZlcik7XG5cbiAgICBsZXQgZG9jOiBEb2N1bWVudCA9ICh0aGlzLm9wdGlvbnMuZG9jdW1lbnQgYXMgRG9jdW1lbnQpIHx8IGRvY3VtZW50O1xuICAgIGxldCBlbGVtZW50ID0gZG9jLmJvZHk7XG4gICAgbGV0IGJ1aWxkZXIgPSBuZXcgRE9NQnVpbGRlcih7IGVsZW1lbnQgfSk7XG4gICAgbGV0IHJlbmRlcmVyID0gbmV3IFN5bmNSZW5kZXJlcigpO1xuXG4gICAgbGV0IGFwcCA9IG5ldyB0aGlzLm9wdGlvbnMuQXBwbGljYXRpb25DbGFzcyh7XG4gICAgICByZXNvbHZlcixcbiAgICAgIGJ1aWxkZXIsXG4gICAgICBsb2FkZXIsXG4gICAgICByZW5kZXJlcixcbiAgICAgIHJvb3ROYW1lOiB0aGlzLnJvb3ROYW1lLFxuICAgICAgZG9jdW1lbnQ6IHRoaXMub3B0aW9ucy5kb2N1bWVudCxcbiAgICB9KTtcblxuICAgIGxldCByb290RWxlbWVudCA9IGRvYy5jcmVhdGVFbGVtZW50KCdkaXYnKTtcbiAgICBhcHAucm9vdEVsZW1lbnQgPSByb290RWxlbWVudDtcbiAgICBhcHAucmVuZGVyQ29tcG9uZW50KCdNYWluJywgcm9vdEVsZW1lbnQpO1xuICAgIGFwcC5ib290KCk7XG5cbiAgICBhd2FpdCBkaWRSZW5kZXIoYXBwKTtcblxuICAgIHJldHVybiBhcHA7XG4gIH1cbn1cblxuY2xhc3MgQ29tcGlsZXJEZWxlZ2F0ZSBpbXBsZW1lbnRzIElDb21waWxlckRlbGVnYXRlPE1vZHVsZUxvY2F0b3I+IHtcbiAgY29uc3RydWN0b3IocHJvdGVjdGVkIHJlc29sdmVyOiBSZXNvbHZlcikge31cblxuICBoYXNDb21wb25lbnRJblNjb3BlKG5hbWU6IHN0cmluZywgcmVmZXJyZXI6IE1vZHVsZUxvY2F0b3IpOiBib29sZWFuIHtcbiAgICByZXR1cm4gISF0aGlzLnJlc29sdmVyLmlkZW50aWZ5KGB0ZW1wbGF0ZToke25hbWV9YCwgcmVmZXJyZXIubW9kdWxlKTtcbiAgfVxuXG4gIHJlc29sdmVDb21wb25lbnQobmFtZTogc3RyaW5nLCByZWZlcnJlcjogTW9kdWxlTG9jYXRvcik6IE1vZHVsZUxvY2F0b3Ige1xuICAgIGxldCByZXNvbHZlZCA9IHRoaXMucmVzb2x2ZXIuaWRlbnRpZnkoYHRlbXBsYXRlOiR7bmFtZX1gLCByZWZlcnJlci5tb2R1bGUpO1xuICAgIHJldHVybiB7IG1vZHVsZTogcmVzb2x2ZWQsIG5hbWU6ICdkZWZhdWx0JyB9O1xuICB9XG5cbiAgZ2V0Q29tcG9uZW50Q2FwYWJpbGl0aWVzKCkge1xuICAgIHJldHVybiBDQVBBQklMSVRJRVM7XG4gIH1cblxuICBoYXNIZWxwZXJJblNjb3BlKGhlbHBlck5hbWU6IHN0cmluZywgcmVmZXJyZXI6IE1vZHVsZUxvY2F0b3IpOiBib29sZWFuIHtcbiAgICByZXR1cm4gISF0aGlzLnJlc29sdmVyLmlkZW50aWZ5KGBoZWxwZXI6JHtoZWxwZXJOYW1lfWAsIHJlZmVycmVyLm1vZHVsZSk7XG4gIH1cblxuICByZXNvbHZlSGVscGVyKGhlbHBlck5hbWU6IHN0cmluZywgcmVmZXJyZXI6IE1vZHVsZUxvY2F0b3IpOiBNb2R1bGVMb2NhdG9yIHtcbiAgICBsZXQgcmVzb2x2ZWQgPSB0aGlzLnJlc29sdmVyLmlkZW50aWZ5KGBoZWxwZXI6JHtoZWxwZXJOYW1lfWAsIHJlZmVycmVyLm1vZHVsZSk7XG4gICAgcmV0dXJuIHsgbW9kdWxlOiByZXNvbHZlZCwgbmFtZTogJ2RlZmF1bHQnIH07XG4gIH1cblxuICBoYXNQYXJ0aWFsSW5TY29wZShwYXJ0aWFsTmFtZTogc3RyaW5nLCByZWZlcnJlcjogTW9kdWxlTG9jYXRvcik6IGJvb2xlYW4ge1xuICAgIHRocm93IG5ldyBFcnJvcignTWV0aG9kIG5vdCBpbXBsZW1lbnRlZC4nKTtcbiAgfVxuXG4gIHJlc29sdmVQYXJ0aWFsKHBhcnRpYWxOYW1lOiBzdHJpbmcsIHJlZmVycmVyOiBNb2R1bGVMb2NhdG9yKTogTW9kdWxlTG9jYXRvciB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdNZXRob2Qgbm90IGltcGxlbWVudGVkLicpO1xuICB9XG5cbiAgaGFzTW9kaWZpZXJJblNjb3BlKG1vZGlmaWVyTmFtZTogc3RyaW5nLCByZWZlcnJlcjogTW9kdWxlTG9jYXRvcik6IGJvb2xlYW4ge1xuICAgIHRocm93IG5ldyBFcnJvcignTWV0aG9kIG5vdCBpbXBsZW1lbnRlZC4nKTtcbiAgfVxuXG4gIHJlc29sdmVNb2RpZmllcihtb2RpZmllck5hbWU6IHN0cmluZywgcmVmZXJyZXI6IE1vZHVsZUxvY2F0b3IpOiBNb2R1bGVMb2NhdG9yIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ01ldGhvZCBub3QgaW1wbGVtZW50ZWQuJyk7XG4gIH1cbn1cblxuZnVuY3Rpb24gYnVpbGRBcHA8VCBleHRlbmRzIFRlc3RBcHBsaWNhdGlvbj4ob3B0aW9uczogQXBwQnVpbGRlck9wdGlvbnM8VD4gPSB7fSk6IEFwcEJ1aWxkZXI8VD4ge1xuICBvcHRpb25zLmFwcE5hbWUgPSBvcHRpb25zLmFwcE5hbWUgfHwgJ3Rlc3QtYXBwJztcbiAgb3B0aW9ucy5sb2FkZXIgPSBvcHRpb25zLmxvYWRlciB8fCAncnVudGltZS1jb21waWxlcic7XG4gIG9wdGlvbnMuQ29tcG9uZW50TWFuYWdlciA9IG9wdGlvbnMuQ29tcG9uZW50TWFuYWdlciB8fCBDb21wb25lbnRNYW5hZ2VyO1xuICBvcHRpb25zLkFwcGxpY2F0aW9uQ2xhc3MgPVxuICAgIG9wdGlvbnMuQXBwbGljYXRpb25DbGFzcyB8fCAoVGVzdEFwcGxpY2F0aW9uIGFzIEFwcGxpY2F0aW9uQ29uc3RydWN0b3I8VD4pO1xuXG4gIHJldHVybiBuZXcgQXBwQnVpbGRlcihvcHRpb25zLmFwcE5hbWUsIG9wdGlvbnMpO1xufVxuXG5leHBvcnQgeyBidWlsZEFwcCB9O1xuIl0sInNvdXJjZVJvb3QiOiIifQ==
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL0BnbGltbWVyL2FwcGxpY2F0aW9uLXRlc3QtaGVscGVycy9zcmMvYXBwLWJ1aWxkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7QUFFQTs7OztBQUNBOztBQUNBOzs7O0FBVUE7O0FBQ0E7O0FBQ0E7O0FBRUE7O0FBR0E7O0FBRUE7Ozs7OztBQWFNLE1BQU8sZUFBUCxTQUErQixxQkFBL0IsQ0FBMEM7UUFBbkMsZSxHQUFBLGU7QUFZYixTQUFTLFVBQVQsQ0FBb0IsTUFBcEIsRUFBb0MsSUFBcEMsRUFBZ0Q7QUFDOUMsV0FBTztBQUNMLGNBQU0sVUFERDtBQUVMLGNBRks7QUFHTCxZQUhLO0FBSUwsY0FBTTtBQUNKLGtCQURJO0FBRUo7QUFGSTtBQUpELEtBQVA7QUFTRDtBQUVLLE1BQU8sVUFBUCxDQUFpQjtBQU1yQixnQkFBWSxJQUFaLEVBQTBCLE9BQTFCLEVBQXVEO0FBSnZELGFBQUEsT0FBQSxHQUF5QixFQUF6QjtBQUNBLGFBQUEsU0FBQSxHQUEwQixFQUExQjtBQUlFLGFBQUssUUFBTCxHQUFnQixJQUFoQjtBQUNBLGFBQUssT0FBTCxHQUFlLE9BQWY7QUFDQSxhQUFLLE9BQUwsQ0FDRSxzQkFBc0IsS0FBSyxRQUFRLDBCQURyQyxJQUVJLEtBQUssT0FBTCxDQUFhLGdCQUZqQjtBQUdBLGFBQUssUUFBTCxDQUFjLE1BQWQsRUFBc0IsU0FBdEI7QUFDQSxhQUFLLE1BQUwsQ0FBWSxRQUFaLEVBQXNCLHdCQUF0QixFQUFtQyxJQUFuQztBQUNEO0FBRUQsYUFBUyxJQUFULEVBQXVCLFFBQXZCLEVBQXVDO0FBQ3JDLDBCQUNFLEtBQUssTUFBTCxDQUFZLENBQVosTUFBbUIsS0FBSyxNQUFMLENBQVksQ0FBWixFQUFlLFdBQWYsRUFEckIsRUFFRSxpREFGRjtBQUtBLFlBQUksWUFBWSxhQUFhLEtBQUssUUFBUSxlQUFlLElBQUksRUFBN0Q7QUFDQSxhQUFLLE9BQUwsQ0FBYSxTQUFiLElB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Q0FBNkMsVUFBZ0MsRUFBN0UsRUFBK0U7QUFDN0UsWUFBUSxPQUFSLEdBQWtCLFFBQVEsT0FBUixJQUFtQixVQUFyQztBQUNBLFlBQVEsTUFBUixHQUFpQixRQUFRLE1BQVIsSUFBa0Isa0JBQW5DO0FBQ0EsWUFBUSxnQkFBUixHQUEyQixRQUFRLGdCQUFSLElBQTRCLDJCQUF2RDtBQUNBLFlBQVEsZ0JBQVIsR0FDRSxRQUFRLGdCQUFSLElBQTZCLGVBRC9CO0FBR0EsV0FBTyxJQUFJLFVBQUosQ0FBZSxRQUFRLE9BQXZCLEVBQWdDLE9BQWhDLENBQVA7QUFDRDtRQUVRLFEsR0FBQSxRIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJlc29sdmVyLCB7IEJhc2ljTW9kdWxlUmVnaXN0cnksIFJlc29sdmVyQ29uZmlndXJhdGlvbiB9IGZyb20gJ0BnbGltbWVyL3Jlc29sdmVyJztcbmltcG9ydCB7IERpY3QsIE1vZHVsZUxvY2F0b3IsIFRlbXBsYXRlTG9jYXRvciB9IGZyb20gJ0BnbGltbWVyL2ludGVyZmFjZXMnO1xuaW1wb3J0IGRlZmF1bHRSZXNvbHZlckNvbmZpZ3VyYXRpb24gZnJvbSAnLi9kZWZhdWx0LXJlc29sdmVyLWNvbmZpZ3VyYXRpb24nO1xuaW1wb3J0IHsgcHJlY29tcGlsZSB9IGZyb20gJy4vY29tcGlsZXInO1xuaW1wb3J0IEFwcGxpY2F0aW9uLCB7XG4gIEFwcGxpY2F0aW9uQ29uc3RydWN0b3IsXG4gIEJ5dGVjb2RlTG9hZGVyLFxuICBET01CdWlsZGVyLFxuICBMb2FkZXIsXG4gIFJ1bnRpbWVDb21waWxlckxvYWRlcixcbiAgU3luY1JlbmRlcmVyLFxuICBNb2R1bGVUeXBlcyxcbiAgSU5URVJOQUxfRFlOQU1JQ19TQ09QRVxufSBmcm9tICdAZ2xpbW1lci9hcHBsaWNhdGlvbic7XG5pbXBvcnQgeyBDb21wb25lbnRNYW5hZ2VyLCBDQVBBQklMSVRJRVMgfSBmcm9tICdAZ2xpbW1lci9jb21wb25lbnQnO1xuaW1wb3J0IHsgYXNzZXJ0IH0gZnJvbSAnQGdsaW1tZXIvdXRpbCc7XG5pbXBvcnQgeyBCdW5kbGVDb21waWxlciwgQ29tcGlsZXJEZWxlZ2F0ZSBhcyBJQ29tcGlsZXJEZWxlZ2F0ZSB9IGZyb20gJ0BnbGltbWVyL2J1bmRsZS1jb21waWxlcic7XG5pbXBvcnQgeyBidWlsZEFjdGlvbiwgbWFpblRlbXBsYXRlIH0gZnJvbSAnQGdsaW1tZXIvYXBwbGljYXRpb24nO1xuaW1wb3J0IHsgY29tcGlsYWJsZSB9IGZyb20gJ0BnbGltbWVyL29wY29kZS1jb21waWxlcic7XG5pbXBvcnQgeyBNZXRhZGF0YSB9IGZyb20gJy4uLy4uL2FwcGxpY2F0aW9uL3NyYy9sb2FkZXJzL2J5dGVjb2RlL2xvYWRlcic7XG5pbXBvcnQgeyBTaW1wbGVEb2N1bWVudCB9IGZyb20gJ0BzaW1wbGUtZG9tL2ludGVyZmFjZSc7XG5pbXBvcnQgeyBTU1JBcHBsaWNhdGlvbiB9IGZyb20gJ0BnbGltbWVyL3Nzcic7XG5cbmltcG9ydCBkaWRSZW5kZXIgZnJvbSAnLi9kaWQtcmVuZGVyJztcblxuZXhwb3J0IGludGVyZmFjZSBBcHBCdWlsZGVyT3B0aW9uczxUPiB7XG4gIGFwcE5hbWU/OiBzdHJpbmc7XG4gIGxvYWRlcj86IHN0cmluZztcbiAgQXBwbGljYXRpb25DbGFzcz86IEFwcGxpY2F0aW9uQ29uc3RydWN0b3I8VD47XG4gIENvbXBvbmVudE1hbmFnZXI/OiBhbnk7IC8vIFRPRE8gLSB0eXBpbmdcbiAgcmVzb2x2ZXJDb25maWd1cmF0aW9uPzogUmVzb2x2ZXJDb25maWd1cmF0aW9uO1xuICBkb2N1bWVudD86IFNpbXBsZURvY3VtZW50O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIENvbXBvbmVudEZhY3Rvcnkge31cblxuZXhwb3J0IGNsYXNzIFRlc3RBcHBsaWNhdGlvbiBleHRlbmRzIEFwcGxpY2F0aW9uIHtcbiAgcm9vdEVsZW1lbnQ6IEVsZW1lbnQ7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQXBwQnVpbGRlclRlbXBsYXRlTWV0YSB7XG4gIHNwZWNpZmllcjogc3RyaW5nO1xufVxuXG5pbnRlcmZhY2UgSGVscGVyRnVuY3Rpb24gZXh0ZW5kcyBGdW5jdGlvbiB7XG4gIGlzRmFjdG9yeT86IGJvb2xlYW47XG59XG5cbmZ1bmN0aW9uIGxvY2F0b3JGb3IobW9kdWxlOiBzdHJpbmcsIG5hbWU6IHN0cmluZyk6IFRlbXBsYXRlTG9jYXRvcjxNb2R1bGVMb2NhdG9yPiB7XG4gIHJldHVybiB7XG4gICAga2luZDogJ3RlbXBsYXRlJyxcbiAgICBtb2R1bGUsXG4gICAgbmFtZSxcbiAgICBtZXRhOiB7XG4gICAgICBtb2R1bGUsXG4gICAgICBuYW1lLFxuICAgIH0sXG4gIH07XG59XG5cbmV4cG9ydCBjbGFzcyBBcHBCdWlsZGVyPFQgZXh0ZW5kcyBUZXN0QXBwbGljYXRpb24+IHtcbiAgcm9vdE5hbWU6IHN0cmluZztcbiAgbW9kdWxlczogRGljdDx1bmtub3duPiA9IHt9O1xuICB0ZW1wbGF0ZXM6IERpY3Q8c3RyaW5nPiA9IHt9O1xuICBvcHRpb25zOiBBcHBCdWlsZGVyT3B0aW9uczxUPjtcblxuICBjb25zdHJ1Y3RvcihuYW1lOiBzdHJpbmcsIG9wdGlvbnM6IEFwcEJ1aWxkZXJPcHRpb25zPFQ+KSB7XG4gICAgdGhpcy5yb290TmFtZSA9IG5hbWU7XG4gICAgdGhpcy5vcHRpb25zID0gb3B0aW9ucztcbiAgICB0aGlzLm1vZHVsZXNbXG4gICAgICBgY29tcG9uZW50LW1hbmFnZXI6LyR7dGhpcy5yb290TmFtZX0vY29tcG9uZW50LW1hbmFnZXJzL21haW5gXG4gICAgXSA9IHRoaXMub3B0aW9ucy5Db21wb25lbnRNYW5hZ2VyO1xuICAgIHRoaXMudGVtcGxhdGUoJ01haW4nLCAnPGRpdiAvPicpO1xuICAgIHRoaXMuaGVscGVyKCdhY3Rpb24nLCBidWlsZEFjdGlvbiwgdHJ1ZSk7XG4gIH1cblxuICB0ZW1wbGF0ZShuYW1lOiBzdHJpbmcsIHRlbXBsYXRlOiBzdHJpbmcpIHtcbiAgICBhc3NlcnQoXG4gICAgICBuYW1lLmNoYXJBdCgwKSA9PT0gbmFtZS5jaGFyQXQoMCkudG9VcHBlckNhc2UoKSxcbiAgICAgICd0ZW1wbGF0ZSBuYW1lcyBtdXN0IHN0YXJ0IHdpdGggYSBjYXBpdGFsIGxldHRlcidcbiAgICApO1xuXG4gICAgbGV0IHNwZWNpZmllciA9IGB0ZW1wbGF0ZTovJHt0aGlzLnJvb3ROYW1lfS9jb21wb25lbnRzLyR7bmFtZX1gO1xuICAgIHRoaXMubW9kdWxlc1tzcGVjaWZpZXJdID0gcHJlY29tcGlsZSh0ZW1wbGF0ZSwgeyBtZXRhOiB7IHNwZWNpZmllciB9IH0pO1xuICAgIHRoaXMudGVtcGxhdGVzW3NwZWNpZmllcl0gPSB0ZW1wbGF0ZTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIGNvbXBvbmVudChuYW1lOiBzdHJpbmcsIGNvbXBvbmVudEZhY3Rvcnk6IENvbXBvbmVudEZhY3RvcnkpIHtcbiAgICBsZXQgc3BlY2lmaWVyID0gYGNvbXBvbmVudDovJHt0aGlzLnJvb3ROYW1lfS9jb21wb25lbnRzLyR7bmFtZX1gO1xuICAgIHRoaXMubW9kdWxlc1tzcGVjaWZpZXJdID0gY29tcG9uZW50RmFjdG9yeTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIGhlbHBlcihuYW1lOiBzdHJpbmcsIGhlbHBlckZ1bmM6IEhlbHBlckZ1bmN0aW9uLCBpc0ZhY3RvcnkgPSBmYWxzZSkge1xuICAgIGxldCBzcGVjaWZpZXIgPSBgaGVscGVyOi8ke3RoaXMucm9vdE5hbWV9L2NvbXBvbmVudHMvJHtuYW1lfWA7XG4gICAgaGVscGVyRnVuYy5pc0ZhY3RvcnkgPSBpc0ZhY3Rvcnk7XG4gICAgdGhpcy5tb2R1bGVzW3NwZWNpZmllcl0gPSBoZWxwZXJGdW5jO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgcHJvdGVjdGVkIGJ1aWxkUmVzb2x2ZXIoKTogUmVzb2x2ZXIge1xuICAgIGxldCByZXNvbHZlckNvbmZpZ3VyYXRpb24gPSB0aGlzLm9wdGlvbnMucmVzb2x2ZXJDb25maWd1cmF0aW9uIHx8IGRlZmF1bHRSZXNvbHZlckNvbmZpZ3VyYXRpb247XG4gICAgcmVzb2x2ZXJDb25maWd1cmF0aW9uLmFwcCA9IHJlc29sdmVyQ29uZmlndXJhdGlvbi5hcHAgfHwge1xuICAgICAgbmFtZTogdGhpcy5yb290TmFtZSxcbiAgICAgIHJvb3ROYW1lOiB0aGlzLnJvb3ROYW1lLFxuICAgIH07XG5cbiAgICBsZXQgcmVnaXN0cnkgPSBuZXcgQmFzaWNNb2R1bGVSZWdpc3RyeSh0aGlzLm1vZHVsZXMpO1xuICAgIHJldHVybiBuZXcgUmVzb2x2ZXIocmVzb2x2ZXJDb25maWd1cmF0aW9uLCByZWdpc3RyeSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgYnVpbGRSdW50aW1lQ29tcGlsZXJMb2FkZXIoKTogTG9hZGVyIHtcbiAgICByZXR1cm4gbmV3IFJ1bnRpbWVDb21waWxlckxvYWRlcigpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGJ1aWxkQnl0ZWNvZGVMb2FkZXIocmVzb2x2ZXI6IFJlc29sdmVyKSB7XG4gICAgbGV0IGRlbGVnYXRlID0gbmV3IENvbXBpbGVyRGVsZWdhdGUocmVzb2x2ZXIpO1xuICAgIGxldCBjb21waWxlciA9IG5ldyBCdW5kbGVDb21waWxlcihkZWxlZ2F0ZSk7XG5cbiAgICBsZXQgbWFpbkxvY2F0b3IgPSBsb2NhdG9yRm9yKCd0ZW1wbGF0ZTptYWluVGVtcGxhdGUnLCAnZGVmYXVsdCcpO1xuICAgIG1haW5Mb2NhdG9yLm1ldGEubW9kdWxlID0gJ3RlbXBsYXRlOm1haW5UZW1wbGF0ZSc7XG5cbiAgICBsZXQgYmxvY2sgPSBKU09OLnBhcnNlKG1haW5UZW1wbGF0ZS5ibG9jayk7XG4gICAgbGV0IGNvbXBpbGFibGVUZW1wbGF0ZSA9IGNvbXBpbGFibGUoe1xuICAgICAgYmxvY2ssXG4gICAgICByZWZlcnJlcjogbWFpbkxvY2F0b3IubWV0YSxcbiAgICB9KTtcblxuICAgIGNvbXBpbGVyLmFkZENvbXBpbGFibGVUZW1wbGF0ZShtYWluTG9jYXRvciwgY29tcGlsYWJsZVRlbXBsYXRlKTtcblxuICAgIGZvciAobGV0IG1vZHVsZSBpbiB0aGlzLnRlbXBsYXRlcykge1xuICAgICAgY29tcGlsZXIuYWRkVGVtcGxhdGVTb3VyY2UobG9jYXRvckZvcihtb2R1bGUsICdkZWZhdWx0JyksIHRoaXMudGVtcGxhdGVzW21vZHVsZV0pO1xuICAgIH1cblxuICAgIGxldCB7IGhlYXAsIHBvb2wsIHRhYmxlIH0gPSBjb21waWxlci5jb21waWxlKCk7XG5cbiAgICBsZXQgcmVzb2x2ZXJUYWJsZTogdW5rbm93bltdID0gW107XG5cbiAgICBsZXQgbWV0YTogRGljdDxNZXRhZGF0YT4gPSB7fTtcblxuICAgIHRhYmxlLnZtSGFuZGxlQnlNb2R1bGVMb2NhdG9yLmZvckVhY2goKHZtSGFuZGxlLCBsb2NhdG9yKSA9PiB7XG4gICAgICBsZXQgaGFuZGxlID0gdGFibGUuYnlNb2R1bGVMb2NhdG9yLmdldChsb2NhdG9yKTtcbiAgICAgIGxldCB0ZW1wbGF0ZSA9IGNvbXBpbGVyLmdldFRlbXBsYXRlKGxvY2F0b3IpO1xuXG4gICAgICBtZXRhW2xvY2F0b3IubW9kdWxlXSA9IHtcbiAgICAgICAgdjogdm1IYW5kbGUsXG4gICAgICAgIGg6IGhhbmRsZSxcbiAgICAgICAgdGFibGU6IHRlbXBsYXRlLnN5bWJvbFRhYmxlLFxuICAgICAgfTtcbiAgICB9KTtcblxuICAgIHRhYmxlLmJ5SGFuZGxlLmZvckVhY2goKGxvY2F0b3IsIGhhbmRsZSkgPT4ge1xuICAgICAgbGV0IG1vZHVsZSA9IGxvY2F0b3IubW9kdWxlLnJlcGxhY2UoJ3RlbXBsYXRlOi8nLCAnY29tcG9uZW50Oi8nKTtcbiAgICAgIGlmICh0aGlzLm1vZHVsZXNbbW9kdWxlXSkge1xuICAgICAgICBpZiAobW9kdWxlLmluZGV4T2YoJ2hlbHBlcjonKSA9PT0gMCkge1xuICAgICAgICAgIGNvbnN0IG1vZHVsZVR5cGUgPSAodGhpcy5tb2R1bGVzW21vZHVsZV0gYXMgSGVscGVyRnVuY3Rpb24pLmlzRmFjdG9yeSA/IE1vZHVsZVR5cGVzLkhFTFBFUl9GQUNUT1JZIDogTW9kdWxlVHlwZXMuSEVMUEVSO1xuICAgICAgICAgIHJlc29sdmVyVGFibGVbaGFuZGxlXSA9IFttb2R1bGVUeXBlLCB0aGlzLm1vZHVsZXNbbW9kdWxlXV07XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmVzb2x2ZXJUYWJsZVtoYW5kbGVdID0gdGhpcy5tb2R1bGVzW21vZHVsZV07XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KTtcblxuICAgIGxldCBieXRlY29kZSA9IGhlYXAuYnVmZmVyO1xuICAgIGxldCBkYXRhID0ge1xuICAgICAgcHJlZml4OiAnJyxcbiAgICAgIG1haW5FbnRyeTogdGFibGUudm1IYW5kbGVCeU1vZHVsZUxvY2F0b3IuZ2V0KG1haW5Mb2NhdG9yKSxcbiAgICAgIHBvb2wsXG4gICAgICB0YWJsZTogcmVzb2x2ZXJUYWJsZSxcbiAgICAgIG1ldGEsXG4gICAgICBoZWFwOiB7XG4gICAgICAgIHRhYmxlOiBoZWFwLnRhYmxlLFxuICAgICAgICBoYW5kbGU6IGhlYXAuaGFuZGxlLFxuICAgICAgfSxcbiAgICB9O1xuXG4gICAgcmV0dXJuIG5ldyBCeXRlY29kZUxvYWRlcih7IGJ5dGVjb2RlLCBkYXRhIH0pO1xuICB9XG5cbiAgcHJvdGVjdGVkIGJ1aWxkTG9hZGVyKHJlc29sdmVyKTogTG9hZGVyIHtcbiAgICBzd2l0Y2ggKHRoaXMub3B0aW9ucy5sb2FkZXIpIHtcbiAgICAgIGNhc2UgJ3J1bnRpbWUtY29tcGlsZXInOlxuICAgICAgICByZXR1cm4gdGhpcy5idWlsZFJ1bnRpbWVDb21waWxlckxvYWRlcigpO1xuICAgICAgY2FzZSAnYnl0ZWNvZGUnOlxuICAgICAgICByZXR1cm4gdGhpcy5idWlsZEJ5dGVjb2RlTG9hZGVyKHJlc29sdmVyKTtcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgVW5yZWNvZ25pemVkIGxvYWRlciAke3RoaXMub3B0aW9ucy5sb2FkZXJ9YCk7XG4gICAgfVxuICB9XG5cbiAgcmVuZGVyVG9TdHJpbmcoY29tcG9uZW50TmFtZTogc3RyaW5nLCBkYXRhOiBEaWN0PHVua25vd24+LCBvcHRpb25zPzogeyBbSU5URVJOQUxfRFlOQU1JQ19TQ09QRV06IERpY3Q8dW5rbm93bj4gfSk6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgY29uc3QgcmVzb2x2ZXIgPSB0aGlzLmJ1aWxkUmVzb2x2ZXIoKTtcbiAgICBsZXQgbG9hZGVyID0gdGhpcy5idWlsZExvYWRlcihyZXNvbHZlcik7XG5cbiAgICByZXR1cm4gU1NSQXBwbGljYXRpb24ucmVuZGVyVG9TdHJpbmcoY29tcG9uZW50TmFtZSwgZGF0YSwge1xuICAgICAgcm9vdE5hbWU6IHRoaXMucm9vdE5hbWUsXG4gICAgICByZXNvbHZlcixcbiAgICAgIGxvYWRlcixcbiAgICAgIHJlbmRlcmVyOiBuZXcgU3luY1JlbmRlcmVyKCksXG4gICAgICAuLi5vcHRpb25zXG4gICAgfSk7XG4gIH1cblxuICBhc3luYyBib290KCk6IFByb21pc2U8VD4ge1xuICAgIGxldCByZXNvbHZlciA9IHRoaXMuYnVpbGRSZXNvbHZlcigpO1xuICAgIGxldCBsb2FkZXI6IExvYWRlciA9IHRoaXMuYnVpbGRMb2FkZXIocmVzb2x2ZXIpO1xuXG4gICAgbGV0IGRvYzogRG9jdW1lbnQgPSAodGhpcy5vcHRpb25zLmRvY3VtZW50IGFzIERvY3VtZW50KSB8fCBkb2N1bWVudDtcbiAgICBsZXQgZWxlbWVudCA9IGRvYy5ib2R5O1xuICAgIGxldCBidWlsZGVyID0gbmV3IERPTUJ1aWxkZXIoeyBlbGVtZW50IH0pO1xuICAgIGxldCByZW5kZXJlciA9IG5ldyBTeW5jUmVuZGVyZXIoKTtcblxuICAgIGxldCBhcHAgPSBuZXcgdGhpcy5vcHRpb25zLkFwcGxpY2F0aW9uQ2xhc3Moe1xuICAgICAgcmVzb2x2ZXIsXG4gICAgICBidWlsZGVyLFxuICAgICAgbG9hZGVyLFxuICAgICAgcmVuZGVyZXIsXG4gICAgICByb290TmFtZTogdGhpcy5yb290TmFtZSxcbiAgICAgIGRvY3VtZW50OiB0aGlzLm9wdGlvbnMuZG9jdW1lbnQsXG4gICAgfSk7XG5cbiAgICBsZXQgcm9vdEVsZW1lbnQgPSBkb2MuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG4gICAgYXBwLnJvb3RFbGVtZW50ID0gcm9vdEVsZW1lbnQ7XG4gICAgYXBwLnJlbmRlckNvbXBvbmVudCgnTWFpbicsIHJvb3RFbGVtZW50KTtcbiAgICBhcHAuYm9vdCgpO1xuXG4gICAgYXdhaXQgZGlkUmVuZGVyKGFwcCk7XG5cbiAgICByZXR1cm4gYXBwO1xuICB9XG59XG5cbmNsYXNzIENvbXBpbGVyRGVsZWdhdGUgaW1wbGVtZW50cyBJQ29tcGlsZXJEZWxlZ2F0ZTxNb2R1bGVMb2NhdG9yPiB7XG4gIGNvbnN0cnVjdG9yKHByb3RlY3RlZCByZXNvbHZlcjogUmVzb2x2ZXIpIHt9XG5cbiAgaGFzQ29tcG9uZW50SW5TY29wZShuYW1lOiBzdHJpbmcsIHJlZmVycmVyOiBNb2R1bGVMb2NhdG9yKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICEhdGhpcy5yZXNvbHZlci5pZGVudGlmeShgdGVtcGxhdGU6JHtuYW1lfWAsIHJlZmVycmVyLm1vZHVsZSk7XG4gIH1cblxuICByZXNvbHZlQ29tcG9uZW50KG5hbWU6IHN0cmluZywgcmVmZXJyZXI6IE1vZHVsZUxvY2F0b3IpOiBNb2R1bGVMb2NhdG9yIHtcbiAgICBsZXQgcmVzb2x2ZWQgPSB0aGlzLnJlc29sdmVyLmlkZW50aWZ5KGB0ZW1wbGF0ZToke25hbWV9YCwgcmVmZXJyZXIubW9kdWxlKTtcbiAgICByZXR1cm4geyBtb2R1bGU6IHJlc29sdmVkLCBuYW1lOiAnZGVmYXVsdCcgfTtcbiAgfVxuXG4gIGdldENvbXBvbmVudENhcGFiaWxpdGllcygpIHtcbiAgICByZXR1cm4gQ0FQQUJJTElUSUVTO1xuICB9XG5cbiAgaGFzSGVscGVySW5TY29wZShoZWxwZXJOYW1lOiBzdHJpbmcsIHJlZmVycmVyOiBNb2R1bGVMb2NhdG9yKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICEhdGhpcy5yZXNvbHZlci5pZGVudGlmeShgaGVscGVyOiR7aGVscGVyTmFtZX1gLCByZWZlcnJlci5tb2R1bGUpO1xuICB9XG5cbiAgcmVzb2x2ZUhlbHBlcihoZWxwZXJOYW1lOiBzdHJpbmcsIHJlZmVycmVyOiBNb2R1bGVMb2NhdG9yKTogTW9kdWxlTG9jYXRvciB7XG4gICAgbGV0IHJlc29sdmVkID0gdGhpcy5yZXNvbHZlci5pZGVudGlmeShgaGVscGVyOiR7aGVscGVyTmFtZX1gLCByZWZlcnJlci5tb2R1bGUpO1xuICAgIHJldHVybiB7IG1vZHVsZTogcmVzb2x2ZWQsIG5hbWU6ICdkZWZhdWx0JyB9O1xuICB9XG5cbiAgaGFzUGFydGlhbEluU2NvcGUocGFydGlhbE5hbWU6IHN0cmluZywgcmVmZXJyZXI6IE1vZHVsZUxvY2F0b3IpOiBib29sZWFuIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ01ldGhvZCBub3QgaW1wbGVtZW50ZWQuJyk7XG4gIH1cblxuICByZXNvbHZlUGFydGlhbChwYXJ0aWFsTmFtZTogc3RyaW5nLCByZWZlcnJlcjogTW9kdWxlTG9jYXRvcik6IE1vZHVsZUxvY2F0b3Ige1xuICAgIHRocm93IG5ldyBFcnJvcignTWV0aG9kIG5vdCBpbXBsZW1lbnRlZC4nKTtcbiAgfVxuXG4gIGhhc01vZGlmaWVySW5TY29wZShtb2RpZmllck5hbWU6IHN0cmluZywgcmVmZXJyZXI6IE1vZHVsZUxvY2F0b3IpOiBib29sZWFuIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ01ldGhvZCBub3QgaW1wbGVtZW50ZWQuJyk7XG4gIH1cblxuICByZXNvbHZlTW9kaWZpZXIobW9kaWZpZXJOYW1lOiBzdHJpbmcsIHJlZmVycmVyOiBNb2R1bGVMb2NhdG9yKTogTW9kdWxlTG9jYXRvciB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdNZXRob2Qgbm90IGltcGxlbWVudGVkLicpO1xuICB9XG59XG5cbmZ1bmN0aW9uIGJ1aWxkQXBwPFQgZXh0ZW5kcyBUZXN0QXBwbGljYXRpb24+KG9wdGlvbnM6IEFwcEJ1aWxkZXJPcHRpb25zPFQ+ID0ge30pOiBBcHBCdWlsZGVyPFQ+IHtcbiAgb3B0aW9ucy5hcHBOYW1lID0gb3B0aW9ucy5hcHBOYW1lIHx8ICd0ZXN0LWFwcCc7XG4gIG9wdGlvbnMubG9hZGVyID0gb3B0aW9ucy5sb2FkZXIgfHwgJ3J1bnRpbWUtY29tcGlsZXInO1xuICBvcHRpb25zLkNvbXBvbmVudE1hbmFnZXIgPSBvcHRpb25zLkNvbXBvbmVudE1hbmFnZXIgfHwgQ29tcG9uZW50TWFuYWdlcjtcbiAgb3B0aW9ucy5BcHBsaWNhdGlvbkNsYXNzID1cbiAgICBvcHRpb25zLkFwcGxpY2F0aW9uQ2xhc3MgfHwgKFRlc3RBcHBsaWNhdGlvbiBhcyBBcHBsaWNhdGlvbkNvbnN0cnVjdG9yPFQ+KTtcblxuICByZXR1cm4gbmV3IEFwcEJ1aWxkZXIob3B0aW9ucy5hcHBOYW1lLCBvcHRpb25zKTtcbn1cblxuZXhwb3J0IHsgYnVpbGRBcHAgfTtcbiJdLCJzb3VyY2VSb290IjoiIn0=

@@ -229,11 +229,7 @@ "use strict";

AppBuilder.prototype.renderToString = function renderToString(componentName, data) {
AppBuilder.prototype.renderToString = function renderToString(componentName, data, options) {
var resolver = this.buildResolver();
var loader = this.buildLoader(resolver);
return _ssr.SSRApplication.renderToString(componentName, data, {
rootName: this.rootName,
resolver: resolver,
loader: loader,
renderer: new _application.SyncRenderer()
});
return _ssr.SSRApplication.renderToString(componentName, data, Object.assign({ rootName: this.rootName, resolver: resolver,
loader: loader, renderer: new _application.SyncRenderer() }, options));
};

@@ -336,2 +332,2 @@

exports.buildApp = buildApp;
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL0BnbGltbWVyL2FwcGxpY2F0aW9uLXRlc3QtaGVscGVycy9zcmMvYXBwLWJ1aWxkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUFBOzs7O0FBRUE7Ozs7QUFDQTs7QUFDQTs7OztBQVNBOztBQUNBOztBQUNBOztBQUVBOztBQUdBOztBQUVBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFhQSxJQUFBLDRDQUFBLFVBQUEsWUFBQSxFQUFBO0FBQUEsY0FBQSxlQUFBLEVBQUEsWUFBQTs7QUFBQSxhQUFBLGVBQUEsR0FBQTtBQUFBLHdCQUFBLElBQUEsRUFBQSxlQUFBOztBQUFBLGVBQUEsMkJBQUEsSUFBQSxFQUFBLGFBQUEsS0FBQSxDQUFBLElBQUEsRUFBQSxTQUFBLENBQUEsQ0FBQTtBQUFBOztBQUFBLFdBQUEsZUFBQTtBQUFBLENBQUEsQ0FBQSxxQkFBQSxDQUFBO0FBWUEsU0FBQSxVQUFBLENBQUEsTUFBQSxFQUFBLElBQUEsRUFBZ0Q7QUFDOUMsV0FBTztBQUNMLGNBREssVUFBQTtBQUVMLGdCQUZLLE1BQUE7QUFHTCxjQUhLLElBQUE7QUFJTCxjQUFNO0FBQ0osb0JBREksTUFBQTtBQUVKLGtCQUFBO0FBRkk7QUFKRCxLQUFQO0FBU0Q7O0lBRVksYTtBQU1YLGFBQUEsVUFBQSxDQUFBLElBQUEsRUFBQSxPQUFBLEVBQXVEO0FBQUEsd0JBQUEsSUFBQSxFQUFBLFVBQUE7O0FBSnZELGFBQUEsT0FBQSxHQUFBLEVBQUE7QUFDQSxhQUFBLFNBQUEsR0FBQSxFQUFBO0FBSUUsYUFBQSxRQUFBLEdBQUEsSUFBQTtBQUNBLGFBQUEsT0FBQSxHQUFBLE9BQUE7QUFDQSxhQUFBLE9BQUEsQ0FBQSx3QkFDd0IsS0FEeEIsUUFBQSxHQUFBLDBCQUFBLElBRUksS0FBQSxPQUFBLENBRkosZ0JBQUE7QUFHQSxhQUFBLFFBQUEsQ0FBQSxNQUFBLEVB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QixRLEVBQXVCO0FBQzVELGNBQU0sSUFBQSxLQUFBLENBQU4seUJBQU0sQ0FBTjs7OytCQUdGLGMsMkJBQWUsVyxFQUFxQixRLEVBQXVCO0FBQ3pELGNBQU0sSUFBQSxLQUFBLENBQU4seUJBQU0sQ0FBTjs7OytCQUdGLGtCLCtCQUFtQixZLEVBQXNCLFEsRUFBdUI7QUFDOUQsY0FBTSxJQUFBLEtBQUEsQ0FBTix5QkFBTSxDQUFOOzs7K0JBR0YsZSw0QkFBZ0IsWSxFQUFzQixRLEVBQXVCO0FBQzNELGNBQU0sSUFBQSxLQUFBLENBQU4seUJBQU0sQ0FBTjs7Ozs7O0FBSUosU0FBQSxRQUFBLEdBQStFO0FBQUEsUUFBbEMsVUFBa0MsVUFBQSxNQUFBLEdBQUEsQ0FBQSxJQUFBLFVBQUEsQ0FBQSxNQUFBLFNBQUEsR0FBQSxVQUFBLENBQUEsQ0FBQSxHQUFGLEVBQUU7O0FBQzdFLFlBQUEsT0FBQSxHQUFrQixRQUFBLE9BQUEsSUFBbEIsVUFBQTtBQUNBLFlBQUEsTUFBQSxHQUFpQixRQUFBLE1BQUEsSUFBakIsa0JBQUE7QUFDQSxZQUFBLGdCQUFBLEdBQTJCLFFBQUEsZ0JBQUEsSUFBM0IsMkJBQUE7QUFDQSxZQUFBLGdCQUFBLEdBQ0UsUUFBQSxnQkFBQSxJQURGLGVBQUE7QUFHQSxXQUFPLElBQUEsVUFBQSxDQUFlLFFBQWYsT0FBQSxFQUFQLE9BQU8sQ0FBUDtBQUNEO1FBRUQsUSxHQUFBLFEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUmVzb2x2ZXIsIHsgQmFzaWNNb2R1bGVSZWdpc3RyeSwgUmVzb2x2ZXJDb25maWd1cmF0aW9uIH0gZnJvbSAnQGdsaW1tZXIvcmVzb2x2ZXInO1xuaW1wb3J0IHsgRGljdCwgTW9kdWxlTG9jYXRvciwgVGVtcGxhdGVMb2NhdG9yIH0gZnJvbSAnQGdsaW1tZXIvaW50ZXJmYWNlcyc7XG5pbXBvcnQgZGVmYXVsdFJlc29sdmVyQ29uZmlndXJhdGlvbiBmcm9tICcuL2RlZmF1bHQtcmVzb2x2ZXItY29uZmlndXJhdGlvbic7XG5pbXBvcnQgeyBwcmVjb21waWxlIH0gZnJvbSAnLi9jb21waWxlcic7XG5pbXBvcnQgQXBwbGljYXRpb24sIHtcbiAgQXBwbGljYXRpb25Db25zdHJ1Y3RvcixcbiAgQnl0ZWNvZGVMb2FkZXIsXG4gIERPTUJ1aWxkZXIsXG4gIExvYWRlcixcbiAgUnVudGltZUNvbXBpbGVyTG9hZGVyLFxuICBTeW5jUmVuZGVyZXIsXG4gIE1vZHVsZVR5cGVzXG59IGZyb20gJ0BnbGltbWVyL2FwcGxpY2F0aW9uJztcbmltcG9ydCB7IENvbXBvbmVudE1hbmFnZXIsIENBUEFCSUxJVElFUyB9IGZyb20gJ0BnbGltbWVyL2NvbXBvbmVudCc7XG5pbXBvcnQgeyBhc3NlcnQgfSBmcm9tICdAZ2xpbW1lci91dGlsJztcbmltcG9ydCB7IEJ1bmRsZUNvbXBpbGVyLCBDb21waWxlckRlbGVnYXRlIGFzIElDb21waWxlckRlbGVnYXRlIH0gZnJvbSAnQGdsaW1tZXIvYnVuZGxlLWNvbXBpbGVyJztcbmltcG9ydCB7IGJ1aWxkQWN0aW9uLCBtYWluVGVtcGxhdGUgfSBmcm9tICdAZ2xpbW1lci9hcHBsaWNhdGlvbic7XG5pbXBvcnQgeyBjb21waWxhYmxlIH0gZnJvbSAnQGdsaW1tZXIvb3Bjb2RlLWNvbXBpbGVyJztcbmltcG9ydCB7IE1ldGFkYXRhIH0gZnJvbSAnLi4vLi4vYXBwbGljYXRpb24vc3JjL2xvYWRlcnMvYnl0ZWNvZGUvbG9hZGVyJztcbmltcG9ydCB7IFNpbXBsZURvY3VtZW50IH0gZnJvbSAnQHNpbXBsZS1kb20vaW50ZXJmYWNlJztcbmltcG9ydCB7IFNTUkFwcGxpY2F0aW9uIH0gZnJvbSAnQGdsaW1tZXIvc3NyJztcblxuaW1wb3J0IGRpZFJlbmRlciBmcm9tICcuL2RpZC1yZW5kZXInO1xuXG5leHBvcnQgaW50ZXJmYWNlIEFwcEJ1aWxkZXJPcHRpb25zPFQ+IHtcbiAgYXBwTmFtZT86IHN0cmluZztcbiAgbG9hZGVyPzogc3RyaW5nO1xuICBBcHBsaWNhdGlvbkNsYXNzPzogQXBwbGljYXRpb25Db25zdHJ1Y3RvcjxUPjtcbiAgQ29tcG9uZW50TWFuYWdlcj86IGFueTsgLy8gVE9ETyAtIHR5cGluZ1xuICByZXNvbHZlckNvbmZpZ3VyYXRpb24/OiBSZXNvbHZlckNvbmZpZ3VyYXRpb247XG4gIGRvY3VtZW50PzogU2ltcGxlRG9jdW1lbnQ7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ29tcG9uZW50RmFjdG9yeSB7fVxuXG5leHBvcnQgY2xhc3MgVGVzdEFwcGxpY2F0aW9uIGV4dGVuZHMgQXBwbGljYXRpb24ge1xuICByb290RWxlbWVudDogRWxlbWVudDtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBBcHBCdWlsZGVyVGVtcGxhdGVNZXRhIHtcbiAgc3BlY2lmaWVyOiBzdHJpbmc7XG59XG5cbmludGVyZmFjZSBIZWxwZXJGdW5jdGlvbiBleHRlbmRzIEZ1bmN0aW9uIHtcbiAgaXNGYWN0b3J5PzogYm9vbGVhbjtcbn1cblxuZnVuY3Rpb24gbG9jYXRvckZvcihtb2R1bGU6IHN0cmluZywgbmFtZTogc3RyaW5nKTogVGVtcGxhdGVMb2NhdG9yPE1vZHVsZUxvY2F0b3I+IHtcbiAgcmV0dXJuIHtcbiAgICBraW5kOiAndGVtcGxhdGUnLFxuICAgIG1vZHVsZSxcbiAgICBuYW1lLFxuICAgIG1ldGE6IHtcbiAgICAgIG1vZHVsZSxcbiAgICAgIG5hbWUsXG4gICAgfSxcbiAgfTtcbn1cblxuZXhwb3J0IGNsYXNzIEFwcEJ1aWxkZXI8VCBleHRlbmRzIFRlc3RBcHBsaWNhdGlvbj4ge1xuICByb290TmFtZTogc3RyaW5nO1xuICBtb2R1bGVzOiBEaWN0PHVua25vd24+ID0ge307XG4gIHRlbXBsYXRlczogRGljdDxzdHJpbmc+ID0ge307XG4gIG9wdGlvbnM6IEFwcEJ1aWxkZXJPcHRpb25zPFQ+O1xuXG4gIGNvbnN0cnVjdG9yKG5hbWU6IHN0cmluZywgb3B0aW9uczogQXBwQnVpbGRlck9wdGlvbnM8VD4pIHtcbiAgICB0aGlzLnJvb3ROYW1lID0gbmFtZTtcbiAgICB0aGlzLm9wdGlvbnMgPSBvcHRpb25zO1xuICAgIHRoaXMubW9kdWxlc1tcbiAgICAgIGBjb21wb25lbnQtbWFuYWdlcjovJHt0aGlzLnJvb3ROYW1lfS9jb21wb25lbnQtbWFuYWdlcnMvbWFpbmBcbiAgICBdID0gdGhpcy5vcHRpb25zLkNvbXBvbmVudE1hbmFnZXI7XG4gICAgdGhpcy50ZW1wbGF0ZSgnTWFpbicsICc8ZGl2IC8+Jyk7XG4gICAgdGhpcy5oZWxwZXIoJ2FjdGlvbicsIGJ1aWxkQWN0aW9uLCB0cnVlKTtcbiAgfVxuXG4gIHRlbXBsYXRlKG5hbWU6IHN0cmluZywgdGVtcGxhdGU6IHN0cmluZykge1xuICAgIGFzc2VydChcbiAgICAgIG5hbWUuY2hhckF0KDApID09PSBuYW1lLmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpLFxuICAgICAgJ3RlbXBsYXRlIG5hbWVzIG11c3Qgc3RhcnQgd2l0aCBhIGNhcGl0YWwgbGV0dGVyJ1xuICAgICk7XG5cbiAgICBsZXQgc3BlY2lmaWVyID0gYHRlbXBsYXRlOi8ke3RoaXMucm9vdE5hbWV9L2NvbXBvbmVudHMvJHtuYW1lfWA7XG4gICAgdGhpcy5tb2R1bGVzW3NwZWNpZmllcl0gPSBwcmVjb21waWxlKHRlbXBsYXRlLCB7IG1ldGE6IHsgc3BlY2lmaWVyIH0gfSk7XG4gICAgdGhpcy50ZW1wbGF0ZXNbc3BlY2lmaWVyXSA9IHRlbXBsYXRlO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgY29tcG9uZW50KG5hbWU6IHN0cmluZywgY29tcG9uZW50RmFjdG9yeTogQ29tcG9uZW50RmFjdG9yeSkge1xuICAgIGxldCBzcGVjaWZpZXIgPSBgY29tcG9uZW50Oi8ke3RoaXMucm9vdE5hbWV9L2NvbXBvbmVudHMvJHtuYW1lfWA7XG4gICAgdGhpcy5tb2R1bGVzW3NwZWNpZmllcl0gPSBjb21wb25lbnRGYWN0b3J5O1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgaGVscGVyKG5hbWU6IHN0cmluZywgaGVscGVyRnVuYzogSGVscGVyRnVuY3Rpb24sIGlzRmFjdG9yeSA9IGZhbHNlKSB7XG4gICAgbGV0IHNwZWNpZmllciA9IGBoZWxwZXI6LyR7dGhpcy5yb290TmFtZX0vY29tcG9uZW50cy8ke25hbWV9YDtcbiAgICBoZWxwZXJGdW5jLmlzRmFjdG9yeSA9IGlzRmFjdG9yeTtcbiAgICB0aGlzLm1vZHVsZXNbc3BlY2lmaWVyXSA9IGhlbHBlckZ1bmM7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBwcm90ZWN0ZWQgYnVpbGRSZXNvbHZlcigpOiBSZXNvbHZlciB7XG4gICAgbGV0IHJlc29sdmVyQ29uZmlndXJhdGlvbiA9IHRoaXMub3B0aW9ucy5yZXNvbHZlckNvbmZpZ3VyYXRpb24gfHwgZGVmYXVsdFJlc29sdmVyQ29uZmlndXJhdGlvbjtcbiAgICByZXNvbHZlckNvbmZpZ3VyYXRpb24uYXBwID0gcmVzb2x2ZXJDb25maWd1cmF0aW9uLmFwcCB8fCB7XG4gICAgICBuYW1lOiB0aGlzLnJvb3ROYW1lLFxuICAgICAgcm9vdE5hbWU6IHRoaXMucm9vdE5hbWUsXG4gICAgfTtcblxuICAgIGxldCByZWdpc3RyeSA9IG5ldyBCYXNpY01vZHVsZVJlZ2lzdHJ5KHRoaXMubW9kdWxlcyk7XG4gICAgcmV0dXJuIG5ldyBSZXNvbHZlcihyZXNvbHZlckNvbmZpZ3VyYXRpb24sIHJlZ2lzdHJ5KTtcbiAgfVxuXG4gIHByb3RlY3RlZCBidWlsZFJ1bnRpbWVDb21waWxlckxvYWRlcigpOiBMb2FkZXIge1xuICAgIHJldHVybiBuZXcgUnVudGltZUNvbXBpbGVyTG9hZGVyKCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgYnVpbGRCeXRlY29kZUxvYWRlcihyZXNvbHZlcjogUmVzb2x2ZXIpIHtcbiAgICBsZXQgZGVsZWdhdGUgPSBuZXcgQ29tcGlsZXJEZWxlZ2F0ZShyZXNvbHZlcik7XG4gICAgbGV0IGNvbXBpbGVyID0gbmV3IEJ1bmRsZUNvbXBpbGVyKGRlbGVnYXRlKTtcblxuICAgIGxldCBtYWluTG9jYXRvciA9IGxvY2F0b3JGb3IoJ3RlbXBsYXRlOm1haW5UZW1wbGF0ZScsICdkZWZhdWx0Jyk7XG4gICAgbWFpbkxvY2F0b3IubWV0YS5tb2R1bGUgPSAndGVtcGxhdGU6bWFpblRlbXBsYXRlJztcblxuICAgIGxldCBibG9jayA9IEpTT04ucGFyc2UobWFpblRlbXBsYXRlLmJsb2NrKTtcbiAgICBsZXQgY29tcGlsYWJsZVRlbXBsYXRlID0gY29tcGlsYWJsZSh7XG4gICAgICBibG9jayxcbiAgICAgIHJlZmVycmVyOiBtYWluTG9jYXRvci5tZXRhLFxuICAgIH0pO1xuXG4gICAgY29tcGlsZXIuYWRkQ29tcGlsYWJsZVRlbXBsYXRlKG1haW5Mb2NhdG9yLCBjb21waWxhYmxlVGVtcGxhdGUpO1xuXG4gICAgZm9yIChsZXQgbW9kdWxlIGluIHRoaXMudGVtcGxhdGVzKSB7XG4gICAgICBjb21waWxlci5hZGRUZW1wbGF0ZVNvdXJjZShsb2NhdG9yRm9yKG1vZHVsZSwgJ2RlZmF1bHQnKSwgdGhpcy50ZW1wbGF0ZXNbbW9kdWxlXSk7XG4gICAgfVxuXG4gICAgbGV0IHsgaGVhcCwgcG9vbCwgdGFibGUgfSA9IGNvbXBpbGVyLmNvbXBpbGUoKTtcblxuICAgIGxldCByZXNvbHZlclRhYmxlOiB1bmtub3duW10gPSBbXTtcblxuICAgIGxldCBtZXRhOiBEaWN0PE1ldGFkYXRhPiA9IHt9O1xuXG4gICAgdGFibGUudm1IYW5kbGVCeU1vZHVsZUxvY2F0b3IuZm9yRWFjaCgodm1IYW5kbGUsIGxvY2F0b3IpID0+IHtcbiAgICAgIGxldCBoYW5kbGUgPSB0YWJsZS5ieU1vZHVsZUxvY2F0b3IuZ2V0KGxvY2F0b3IpO1xuICAgICAgbGV0IHRlbXBsYXRlID0gY29tcGlsZXIuZ2V0VGVtcGxhdGUobG9jYXRvcik7XG5cbiAgICAgIG1ldGFbbG9jYXRvci5tb2R1bGVdID0ge1xuICAgICAgICB2OiB2bUhhbmRsZSxcbiAgICAgICAgaDogaGFuZGxlLFxuICAgICAgICB0YWJsZTogdGVtcGxhdGUuc3ltYm9sVGFibGUsXG4gICAgICB9O1xuICAgIH0pO1xuXG4gICAgdGFibGUuYnlIYW5kbGUuZm9yRWFjaCgobG9jYXRvciwgaGFuZGxlKSA9PiB7XG4gICAgICBsZXQgbW9kdWxlID0gbG9jYXRvci5tb2R1bGUucmVwbGFjZSgndGVtcGxhdGU6LycsICdjb21wb25lbnQ6LycpO1xuICAgICAgaWYgKHRoaXMubW9kdWxlc1ttb2R1bGVdKSB7XG4gICAgICAgIGlmIChtb2R1bGUuaW5kZXhPZignaGVscGVyOicpID09PSAwKSB7XG4gICAgICAgICAgY29uc3QgbW9kdWxlVHlwZSA9ICh0aGlzLm1vZHVsZXNbbW9kdWxlXSBhcyBIZWxwZXJGdW5jdGlvbikuaXNGYWN0b3J5ID8gTW9kdWxlVHlwZXMuSEVMUEVSX0ZBQ1RPUlkgOiBNb2R1bGVUeXBlcy5IRUxQRVI7XG4gICAgICAgICAgcmVzb2x2ZXJUYWJsZVtoYW5kbGVdID0gW21vZHVsZVR5cGUsIHRoaXMubW9kdWxlc1ttb2R1bGVdXTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZXNvbHZlclRhYmxlW2hhbmRsZV0gPSB0aGlzLm1vZHVsZXNbbW9kdWxlXTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pO1xuXG4gICAgbGV0IGJ5dGVjb2RlID0gaGVhcC5idWZmZXI7XG4gICAgbGV0IGRhdGEgPSB7XG4gICAgICBwcmVmaXg6ICcnLFxuICAgICAgbWFpbkVudHJ5OiB0YWJsZS52bUhhbmRsZUJ5TW9kdWxlTG9jYXRvci5nZXQobWFpbkxvY2F0b3IpLFxuICAgICAgcG9vbCxcbiAgICAgIHRhYmxlOiByZXNvbHZlclRhYmxlLFxuICAgICAgbWV0YSxcbiAgICAgIGhlYXA6IHtcbiAgICAgICAgdGFibGU6IGhlYXAudGFibGUsXG4gICAgICAgIGhhbmRsZTogaGVhcC5oYW5kbGUsXG4gICAgICB9LFxuICAgIH07XG5cbiAgICByZXR1cm4gbmV3IEJ5dGVjb2RlTG9hZGVyKHsgYnl0ZWNvZGUsIGRhdGEgfSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgYnVpbGRMb2FkZXIocmVzb2x2ZXIpOiBMb2FkZXIge1xuICAgIHN3aXRjaCAodGhpcy5vcHRpb25zLmxvYWRlcikge1xuICAgICAgY2FzZSAncnVudGltZS1jb21waWxlcic6XG4gICAgICAgIHJldHVybiB0aGlzLmJ1aWxkUnVudGltZUNvbXBpbGVyTG9hZGVyKCk7XG4gICAgICBjYXNlICdieXRlY29kZSc6XG4gICAgICAgIHJldHVybiB0aGlzLmJ1aWxkQnl0ZWNvZGVMb2FkZXIocmVzb2x2ZXIpO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBVbnJlY29nbml6ZWQgbG9hZGVyICR7dGhpcy5vcHRpb25zLmxvYWRlcn1gKTtcbiAgICB9XG4gIH1cblxuICByZW5kZXJUb1N0cmluZyhjb21wb25lbnROYW1lOiBzdHJpbmcsIGRhdGE6IERpY3Q8dW5rbm93bj4pOiBQcm9taXNlPHN0cmluZz4ge1xuICAgIGNvbnN0IHJlc29sdmVyID0gdGhpcy5idWlsZFJlc29sdmVyKCk7XG4gICAgbGV0IGxvYWRlciA9IHRoaXMuYnVpbGRMb2FkZXIocmVzb2x2ZXIpO1xuXG4gICAgcmV0dXJuIFNTUkFwcGxpY2F0aW9uLnJlbmRlclRvU3RyaW5nKGNvbXBvbmVudE5hbWUsIGRhdGEsIHtcbiAgICAgIHJvb3ROYW1lOiB0aGlzLnJvb3ROYW1lLFxuICAgICAgcmVzb2x2ZXIsXG4gICAgICBsb2FkZXIsXG4gICAgICByZW5kZXJlcjogbmV3IFN5bmNSZW5kZXJlcigpXG4gICAgfSk7XG4gIH1cblxuICBhc3luYyBib290KCk6IFByb21pc2U8VD4ge1xuICAgIGxldCByZXNvbHZlciA9IHRoaXMuYnVpbGRSZXNvbHZlcigpO1xuICAgIGxldCBsb2FkZXI6IExvYWRlciA9IHRoaXMuYnVpbGRMb2FkZXIocmVzb2x2ZXIpO1xuXG4gICAgbGV0IGRvYzogRG9jdW1lbnQgPSAodGhpcy5vcHRpb25zLmRvY3VtZW50IGFzIERvY3VtZW50KSB8fCBkb2N1bWVudDtcbiAgICBsZXQgZWxlbWVudCA9IGRvYy5ib2R5O1xuICAgIGxldCBidWlsZGVyID0gbmV3IERPTUJ1aWxkZXIoeyBlbGVtZW50IH0pO1xuICAgIGxldCByZW5kZXJlciA9IG5ldyBTeW5jUmVuZGVyZXIoKTtcblxuICAgIGxldCBhcHAgPSBuZXcgdGhpcy5vcHRpb25zLkFwcGxpY2F0aW9uQ2xhc3Moe1xuICAgICAgcmVzb2x2ZXIsXG4gICAgICBidWlsZGVyLFxuICAgICAgbG9hZGVyLFxuICAgICAgcmVuZGVyZXIsXG4gICAgICByb290TmFtZTogdGhpcy5yb290TmFtZSxcbiAgICAgIGRvY3VtZW50OiB0aGlzLm9wdGlvbnMuZG9jdW1lbnQsXG4gICAgfSk7XG5cbiAgICBsZXQgcm9vdEVsZW1lbnQgPSBkb2MuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG4gICAgYXBwLnJvb3RFbGVtZW50ID0gcm9vdEVsZW1lbnQ7XG4gICAgYXBwLnJlbmRlckNvbXBvbmVudCgnTWFpbicsIHJvb3RFbGVtZW50KTtcbiAgICBhcHAuYm9vdCgpO1xuXG4gICAgYXdhaXQgZGlkUmVuZGVyKGFwcCk7XG5cbiAgICByZXR1cm4gYXBwO1xuICB9XG59XG5cbmNsYXNzIENvbXBpbGVyRGVsZWdhdGUgaW1wbGVtZW50cyBJQ29tcGlsZXJEZWxlZ2F0ZTxNb2R1bGVMb2NhdG9yPiB7XG4gIGNvbnN0cnVjdG9yKHByb3RlY3RlZCByZXNvbHZlcjogUmVzb2x2ZXIpIHt9XG5cbiAgaGFzQ29tcG9uZW50SW5TY29wZShuYW1lOiBzdHJpbmcsIHJlZmVycmVyOiBNb2R1bGVMb2NhdG9yKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICEhdGhpcy5yZXNvbHZlci5pZGVudGlmeShgdGVtcGxhdGU6JHtuYW1lfWAsIHJlZmVycmVyLm1vZHVsZSk7XG4gIH1cblxuICByZXNvbHZlQ29tcG9uZW50KG5hbWU6IHN0cmluZywgcmVmZXJyZXI6IE1vZHVsZUxvY2F0b3IpOiBNb2R1bGVMb2NhdG9yIHtcbiAgICBsZXQgcmVzb2x2ZWQgPSB0aGlzLnJlc29sdmVyLmlkZW50aWZ5KGB0ZW1wbGF0ZToke25hbWV9YCwgcmVmZXJyZXIubW9kdWxlKTtcbiAgICByZXR1cm4geyBtb2R1bGU6IHJlc29sdmVkLCBuYW1lOiAnZGVmYXVsdCcgfTtcbiAgfVxuXG4gIGdldENvbXBvbmVudENhcGFiaWxpdGllcygpIHtcbiAgICByZXR1cm4gQ0FQQUJJTElUSUVTO1xuICB9XG5cbiAgaGFzSGVscGVySW5TY29wZShoZWxwZXJOYW1lOiBzdHJpbmcsIHJlZmVycmVyOiBNb2R1bGVMb2NhdG9yKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICEhdGhpcy5yZXNvbHZlci5pZGVudGlmeShgaGVscGVyOiR7aGVscGVyTmFtZX1gLCByZWZlcnJlci5tb2R1bGUpO1xuICB9XG5cbiAgcmVzb2x2ZUhlbHBlcihoZWxwZXJOYW1lOiBzdHJpbmcsIHJlZmVycmVyOiBNb2R1bGVMb2NhdG9yKTogTW9kdWxlTG9jYXRvciB7XG4gICAgbGV0IHJlc29sdmVkID0gdGhpcy5yZXNvbHZlci5pZGVudGlmeShgaGVscGVyOiR7aGVscGVyTmFtZX1gLCByZWZlcnJlci5tb2R1bGUpO1xuICAgIHJldHVybiB7IG1vZHVsZTogcmVzb2x2ZWQsIG5hbWU6ICdkZWZhdWx0JyB9O1xuICB9XG5cbiAgaGFzUGFydGlhbEluU2NvcGUocGFydGlhbE5hbWU6IHN0cmluZywgcmVmZXJyZXI6IE1vZHVsZUxvY2F0b3IpOiBib29sZWFuIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ01ldGhvZCBub3QgaW1wbGVtZW50ZWQuJyk7XG4gIH1cblxuICByZXNvbHZlUGFydGlhbChwYXJ0aWFsTmFtZTogc3RyaW5nLCByZWZlcnJlcjogTW9kdWxlTG9jYXRvcik6IE1vZHVsZUxvY2F0b3Ige1xuICAgIHRocm93IG5ldyBFcnJvcignTWV0aG9kIG5vdCBpbXBsZW1lbnRlZC4nKTtcbiAgfVxuXG4gIGhhc01vZGlmaWVySW5TY29wZShtb2RpZmllck5hbWU6IHN0cmluZywgcmVmZXJyZXI6IE1vZHVsZUxvY2F0b3IpOiBib29sZWFuIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ01ldGhvZCBub3QgaW1wbGVtZW50ZWQuJyk7XG4gIH1cblxuICByZXNvbHZlTW9kaWZpZXIobW9kaWZpZXJOYW1lOiBzdHJpbmcsIHJlZmVycmVyOiBNb2R1bGVMb2NhdG9yKTogTW9kdWxlTG9jYXRvciB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdNZXRob2Qgbm90IGltcGxlbWVudGVkLicpO1xuICB9XG59XG5cbmZ1bmN0aW9uIGJ1aWxkQXBwPFQgZXh0ZW5kcyBUZXN0QXBwbGljYXRpb24+KG9wdGlvbnM6IEFwcEJ1aWxkZXJPcHRpb25zPFQ+ID0ge30pOiBBcHBCdWlsZGVyPFQ+IHtcbiAgb3B0aW9ucy5hcHBOYW1lID0gb3B0aW9ucy5hcHBOYW1lIHx8ICd0ZXN0LWFwcCc7XG4gIG9wdGlvbnMubG9hZGVyID0gb3B0aW9ucy5sb2FkZXIgfHwgJ3J1bnRpbWUtY29tcGlsZXInO1xuICBvcHRpb25zLkNvbXBvbmVudE1hbmFnZXIgPSBvcHRpb25zLkNvbXBvbmVudE1hbmFnZXIgfHwgQ29tcG9uZW50TWFuYWdlcjtcbiAgb3B0aW9ucy5BcHBsaWNhdGlvbkNsYXNzID1cbiAgICBvcHRpb25zLkFwcGxpY2F0aW9uQ2xhc3MgfHwgKFRlc3RBcHBsaWNhdGlvbiBhcyBBcHBsaWNhdGlvbkNvbnN0cnVjdG9yPFQ+KTtcblxuICByZXR1cm4gbmV3IEFwcEJ1aWxkZXIob3B0aW9ucy5hcHBOYW1lLCBvcHRpb25zKTtcbn1cblxuZXhwb3J0IHsgYnVpbGRBcHAgfTtcbiJdLCJzb3VyY2VSb290IjoiIn0=
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL0BnbGltbWVyL2FwcGxpY2F0aW9uLXRlc3QtaGVscGVycy9zcmMvYXBwLWJ1aWxkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUFBOzs7O0FBRUE7Ozs7QUFDQTs7QUFDQTs7OztBQVVBOztBQUNBOztBQUNBOztBQUVBOztBQUdBOztBQUVBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFhQSxJQUFBLDRDQUFBLFVBQUEsWUFBQSxFQUFBO0FBQUEsY0FBQSxlQUFBLEVBQUEsWUFBQTs7QUFBQSxhQUFBLGVBQUEsR0FBQTtBQUFBLHdCQUFBLElBQUEsRUFBQSxlQUFBOztBQUFBLGVBQUEsMkJBQUEsSUFBQSxFQUFBLGFBQUEsS0FBQSxDQUFBLElBQUEsRUFBQSxTQUFBLENBQUEsQ0FBQTtBQUFBOztBQUFBLFdBQUEsZUFBQTtBQUFBLENBQUEsQ0FBQSxxQkFBQSxDQUFBO0FBWUEsU0FBQSxVQUFBLENBQUEsTUFBQSxFQUFBLElBQUEsRUFBZ0Q7QUFDOUMsV0FBTztBQUNMLGNBREssVUFBQTtBQUVMLGdCQUZLLE1BQUE7QUFHTCxjQUhLLElBQUE7QUFJTCxjQUFNO0FBQ0osb0JBREksTUFBQTtBQUVKLGtCQUFBO0FBRkk7QUFKRCxLQUFQO0FBU0Q7O0lBRVksYTtBQU1YLGFBQUEsVUFBQSxDQUFBLElBQUEsRUFBQSxPQUFBLEVBQXVEO0FBQUEsd0JBQUEsSUFBQSxFQUFBLFVBQUE7O0FBSnZELGFBQUEsT0FBQSxHQUFBLEVBQUE7QUFDQSxhQUFBLFNBQUEsR0FBQSxFQUFBO0FBSUUsYUFBQSxRQUFBLEdBQUEsSUFBQTtBQUNBLGFBQUEsT0FBQSxHQUFBLE9BQUE7QUFDQSxhQUFBLE9BQUEsQ0FBQSx3QkFDd0IsS0FEeEIsUUFBQSxHQUFBLDBCQUFBLElBRUksS0FBQSxPQUFBLENBRkosZ0JBQUE7QUFHQSxhQUFBLFFBQUEsQ0FBQSxNQUFBLEVB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QUEzQixTQUFPLEVBQVA7OzsrQkFHRixpQiw4QkFBa0IsVyxFQUFxQixRLEVBQXVCO0FBQzVELGNBQU0sSUFBQSxLQUFBLENBQU4seUJBQU0sQ0FBTjs7OytCQUdGLGMsMkJBQWUsVyxFQUFxQixRLEVBQXVCO0FBQ3pELGNBQU0sSUFBQSxLQUFBLENBQU4seUJBQU0sQ0FBTjs7OytCQUdGLGtCLCtCQUFtQixZLEVBQXNCLFEsRUFBdUI7QUFDOUQsY0FBTSxJQUFBLEtBQUEsQ0FBTix5QkFBTSxDQUFOOzs7K0JBR0YsZSw0QkFBZ0IsWSxFQUFzQixRLEVBQXVCO0FBQzNELGNBQU0sSUFBQSxLQUFBLENBQU4seUJBQU0sQ0FBTjs7Ozs7O0FBSUosU0FBQSxRQUFBLEdBQStFO0FBQUEsUUFBbEMsVUFBa0MsVUFBQSxNQUFBLEdBQUEsQ0FBQSxJQUFBLFVBQUEsQ0FBQSxNQUFBLFNBQUEsR0FBQSxVQUFBLENBQUEsQ0FBQSxHQUFGLEVBQUU7O0FBQzdFLFlBQUEsT0FBQSxHQUFrQixRQUFBLE9BQUEsSUFBbEIsVUFBQTtBQUNBLFlBQUEsTUFBQSxHQUFpQixRQUFBLE1BQUEsSUFBakIsa0JBQUE7QUFDQSxZQUFBLGdCQUFBLEdBQTJCLFFBQUEsZ0JBQUEsSUFBM0IsMkJBQUE7QUFDQSxZQUFBLGdCQUFBLEdBQ0UsUUFBQSxnQkFBQSxJQURGLGVBQUE7QUFHQSxXQUFPLElBQUEsVUFBQSxDQUFlLFFBQWYsT0FBQSxFQUFQLE9BQU8sQ0FBUDtBQUNEO1FBRUQsUSxHQUFBLFEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUmVzb2x2ZXIsIHsgQmFzaWNNb2R1bGVSZWdpc3RyeSwgUmVzb2x2ZXJDb25maWd1cmF0aW9uIH0gZnJvbSAnQGdsaW1tZXIvcmVzb2x2ZXInO1xuaW1wb3J0IHsgRGljdCwgTW9kdWxlTG9jYXRvciwgVGVtcGxhdGVMb2NhdG9yIH0gZnJvbSAnQGdsaW1tZXIvaW50ZXJmYWNlcyc7XG5pbXBvcnQgZGVmYXVsdFJlc29sdmVyQ29uZmlndXJhdGlvbiBmcm9tICcuL2RlZmF1bHQtcmVzb2x2ZXItY29uZmlndXJhdGlvbic7XG5pbXBvcnQgeyBwcmVjb21waWxlIH0gZnJvbSAnLi9jb21waWxlcic7XG5pbXBvcnQgQXBwbGljYXRpb24sIHtcbiAgQXBwbGljYXRpb25Db25zdHJ1Y3RvcixcbiAgQnl0ZWNvZGVMb2FkZXIsXG4gIERPTUJ1aWxkZXIsXG4gIExvYWRlcixcbiAgUnVudGltZUNvbXBpbGVyTG9hZGVyLFxuICBTeW5jUmVuZGVyZXIsXG4gIE1vZHVsZVR5cGVzLFxuICBJTlRFUk5BTF9EWU5BTUlDX1NDT1BFXG59IGZyb20gJ0BnbGltbWVyL2FwcGxpY2F0aW9uJztcbmltcG9ydCB7IENvbXBvbmVudE1hbmFnZXIsIENBUEFCSUxJVElFUyB9IGZyb20gJ0BnbGltbWVyL2NvbXBvbmVudCc7XG5pbXBvcnQgeyBhc3NlcnQgfSBmcm9tICdAZ2xpbW1lci91dGlsJztcbmltcG9ydCB7IEJ1bmRsZUNvbXBpbGVyLCBDb21waWxlckRlbGVnYXRlIGFzIElDb21waWxlckRlbGVnYXRlIH0gZnJvbSAnQGdsaW1tZXIvYnVuZGxlLWNvbXBpbGVyJztcbmltcG9ydCB7IGJ1aWxkQWN0aW9uLCBtYWluVGVtcGxhdGUgfSBmcm9tICdAZ2xpbW1lci9hcHBsaWNhdGlvbic7XG5pbXBvcnQgeyBjb21waWxhYmxlIH0gZnJvbSAnQGdsaW1tZXIvb3Bjb2RlLWNvbXBpbGVyJztcbmltcG9ydCB7IE1ldGFkYXRhIH0gZnJvbSAnLi4vLi4vYXBwbGljYXRpb24vc3JjL2xvYWRlcnMvYnl0ZWNvZGUvbG9hZGVyJztcbmltcG9ydCB7IFNpbXBsZURvY3VtZW50IH0gZnJvbSAnQHNpbXBsZS1kb20vaW50ZXJmYWNlJztcbmltcG9ydCB7IFNTUkFwcGxpY2F0aW9uIH0gZnJvbSAnQGdsaW1tZXIvc3NyJztcblxuaW1wb3J0IGRpZFJlbmRlciBmcm9tICcuL2RpZC1yZW5kZXInO1xuXG5leHBvcnQgaW50ZXJmYWNlIEFwcEJ1aWxkZXJPcHRpb25zPFQ+IHtcbiAgYXBwTmFtZT86IHN0cmluZztcbiAgbG9hZGVyPzogc3RyaW5nO1xuICBBcHBsaWNhdGlvbkNsYXNzPzogQXBwbGljYXRpb25Db25zdHJ1Y3RvcjxUPjtcbiAgQ29tcG9uZW50TWFuYWdlcj86IGFueTsgLy8gVE9ETyAtIHR5cGluZ1xuICByZXNvbHZlckNvbmZpZ3VyYXRpb24/OiBSZXNvbHZlckNvbmZpZ3VyYXRpb247XG4gIGRvY3VtZW50PzogU2ltcGxlRG9jdW1lbnQ7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ29tcG9uZW50RmFjdG9yeSB7fVxuXG5leHBvcnQgY2xhc3MgVGVzdEFwcGxpY2F0aW9uIGV4dGVuZHMgQXBwbGljYXRpb24ge1xuICByb290RWxlbWVudDogRWxlbWVudDtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBBcHBCdWlsZGVyVGVtcGxhdGVNZXRhIHtcbiAgc3BlY2lmaWVyOiBzdHJpbmc7XG59XG5cbmludGVyZmFjZSBIZWxwZXJGdW5jdGlvbiBleHRlbmRzIEZ1bmN0aW9uIHtcbiAgaXNGYWN0b3J5PzogYm9vbGVhbjtcbn1cblxuZnVuY3Rpb24gbG9jYXRvckZvcihtb2R1bGU6IHN0cmluZywgbmFtZTogc3RyaW5nKTogVGVtcGxhdGVMb2NhdG9yPE1vZHVsZUxvY2F0b3I+IHtcbiAgcmV0dXJuIHtcbiAgICBraW5kOiAndGVtcGxhdGUnLFxuICAgIG1vZHVsZSxcbiAgICBuYW1lLFxuICAgIG1ldGE6IHtcbiAgICAgIG1vZHVsZSxcbiAgICAgIG5hbWUsXG4gICAgfSxcbiAgfTtcbn1cblxuZXhwb3J0IGNsYXNzIEFwcEJ1aWxkZXI8VCBleHRlbmRzIFRlc3RBcHBsaWNhdGlvbj4ge1xuICByb290TmFtZTogc3RyaW5nO1xuICBtb2R1bGVzOiBEaWN0PHVua25vd24+ID0ge307XG4gIHRlbXBsYXRlczogRGljdDxzdHJpbmc+ID0ge307XG4gIG9wdGlvbnM6IEFwcEJ1aWxkZXJPcHRpb25zPFQ+O1xuXG4gIGNvbnN0cnVjdG9yKG5hbWU6IHN0cmluZywgb3B0aW9uczogQXBwQnVpbGRlck9wdGlvbnM8VD4pIHtcbiAgICB0aGlzLnJvb3ROYW1lID0gbmFtZTtcbiAgICB0aGlzLm9wdGlvbnMgPSBvcHRpb25zO1xuICAgIHRoaXMubW9kdWxlc1tcbiAgICAgIGBjb21wb25lbnQtbWFuYWdlcjovJHt0aGlzLnJvb3ROYW1lfS9jb21wb25lbnQtbWFuYWdlcnMvbWFpbmBcbiAgICBdID0gdGhpcy5vcHRpb25zLkNvbXBvbmVudE1hbmFnZXI7XG4gICAgdGhpcy50ZW1wbGF0ZSgnTWFpbicsICc8ZGl2IC8+Jyk7XG4gICAgdGhpcy5oZWxwZXIoJ2FjdGlvbicsIGJ1aWxkQWN0aW9uLCB0cnVlKTtcbiAgfVxuXG4gIHRlbXBsYXRlKG5hbWU6IHN0cmluZywgdGVtcGxhdGU6IHN0cmluZykge1xuICAgIGFzc2VydChcbiAgICAgIG5hbWUuY2hhckF0KDApID09PSBuYW1lLmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpLFxuICAgICAgJ3RlbXBsYXRlIG5hbWVzIG11c3Qgc3RhcnQgd2l0aCBhIGNhcGl0YWwgbGV0dGVyJ1xuICAgICk7XG5cbiAgICBsZXQgc3BlY2lmaWVyID0gYHRlbXBsYXRlOi8ke3RoaXMucm9vdE5hbWV9L2NvbXBvbmVudHMvJHtuYW1lfWA7XG4gICAgdGhpcy5tb2R1bGVzW3NwZWNpZmllcl0gPSBwcmVjb21waWxlKHRlbXBsYXRlLCB7IG1ldGE6IHsgc3BlY2lmaWVyIH0gfSk7XG4gICAgdGhpcy50ZW1wbGF0ZXNbc3BlY2lmaWVyXSA9IHRlbXBsYXRlO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgY29tcG9uZW50KG5hbWU6IHN0cmluZywgY29tcG9uZW50RmFjdG9yeTogQ29tcG9uZW50RmFjdG9yeSkge1xuICAgIGxldCBzcGVjaWZpZXIgPSBgY29tcG9uZW50Oi8ke3RoaXMucm9vdE5hbWV9L2NvbXBvbmVudHMvJHtuYW1lfWA7XG4gICAgdGhpcy5tb2R1bGVzW3NwZWNpZmllcl0gPSBjb21wb25lbnRGYWN0b3J5O1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgaGVscGVyKG5hbWU6IHN0cmluZywgaGVscGVyRnVuYzogSGVscGVyRnVuY3Rpb24sIGlzRmFjdG9yeSA9IGZhbHNlKSB7XG4gICAgbGV0IHNwZWNpZmllciA9IGBoZWxwZXI6LyR7dGhpcy5yb290TmFtZX0vY29tcG9uZW50cy8ke25hbWV9YDtcbiAgICBoZWxwZXJGdW5jLmlzRmFjdG9yeSA9IGlzRmFjdG9yeTtcbiAgICB0aGlzLm1vZHVsZXNbc3BlY2lmaWVyXSA9IGhlbHBlckZ1bmM7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBwcm90ZWN0ZWQgYnVpbGRSZXNvbHZlcigpOiBSZXNvbHZlciB7XG4gICAgbGV0IHJlc29sdmVyQ29uZmlndXJhdGlvbiA9IHRoaXMub3B0aW9ucy5yZXNvbHZlckNvbmZpZ3VyYXRpb24gfHwgZGVmYXVsdFJlc29sdmVyQ29uZmlndXJhdGlvbjtcbiAgICByZXNvbHZlckNvbmZpZ3VyYXRpb24uYXBwID0gcmVzb2x2ZXJDb25maWd1cmF0aW9uLmFwcCB8fCB7XG4gICAgICBuYW1lOiB0aGlzLnJvb3ROYW1lLFxuICAgICAgcm9vdE5hbWU6IHRoaXMucm9vdE5hbWUsXG4gICAgfTtcblxuICAgIGxldCByZWdpc3RyeSA9IG5ldyBCYXNpY01vZHVsZVJlZ2lzdHJ5KHRoaXMubW9kdWxlcyk7XG4gICAgcmV0dXJuIG5ldyBSZXNvbHZlcihyZXNvbHZlckNvbmZpZ3VyYXRpb24sIHJlZ2lzdHJ5KTtcbiAgfVxuXG4gIHByb3RlY3RlZCBidWlsZFJ1bnRpbWVDb21waWxlckxvYWRlcigpOiBMb2FkZXIge1xuICAgIHJldHVybiBuZXcgUnVudGltZUNvbXBpbGVyTG9hZGVyKCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgYnVpbGRCeXRlY29kZUxvYWRlcihyZXNvbHZlcjogUmVzb2x2ZXIpIHtcbiAgICBsZXQgZGVsZWdhdGUgPSBuZXcgQ29tcGlsZXJEZWxlZ2F0ZShyZXNvbHZlcik7XG4gICAgbGV0IGNvbXBpbGVyID0gbmV3IEJ1bmRsZUNvbXBpbGVyKGRlbGVnYXRlKTtcblxuICAgIGxldCBtYWluTG9jYXRvciA9IGxvY2F0b3JGb3IoJ3RlbXBsYXRlOm1haW5UZW1wbGF0ZScsICdkZWZhdWx0Jyk7XG4gICAgbWFpbkxvY2F0b3IubWV0YS5tb2R1bGUgPSAndGVtcGxhdGU6bWFpblRlbXBsYXRlJztcblxuICAgIGxldCBibG9jayA9IEpTT04ucGFyc2UobWFpblRlbXBsYXRlLmJsb2NrKTtcbiAgICBsZXQgY29tcGlsYWJsZVRlbXBsYXRlID0gY29tcGlsYWJsZSh7XG4gICAgICBibG9jayxcbiAgICAgIHJlZmVycmVyOiBtYWluTG9jYXRvci5tZXRhLFxuICAgIH0pO1xuXG4gICAgY29tcGlsZXIuYWRkQ29tcGlsYWJsZVRlbXBsYXRlKG1haW5Mb2NhdG9yLCBjb21waWxhYmxlVGVtcGxhdGUpO1xuXG4gICAgZm9yIChsZXQgbW9kdWxlIGluIHRoaXMudGVtcGxhdGVzKSB7XG4gICAgICBjb21waWxlci5hZGRUZW1wbGF0ZVNvdXJjZShsb2NhdG9yRm9yKG1vZHVsZSwgJ2RlZmF1bHQnKSwgdGhpcy50ZW1wbGF0ZXNbbW9kdWxlXSk7XG4gICAgfVxuXG4gICAgbGV0IHsgaGVhcCwgcG9vbCwgdGFibGUgfSA9IGNvbXBpbGVyLmNvbXBpbGUoKTtcblxuICAgIGxldCByZXNvbHZlclRhYmxlOiB1bmtub3duW10gPSBbXTtcblxuICAgIGxldCBtZXRhOiBEaWN0PE1ldGFkYXRhPiA9IHt9O1xuXG4gICAgdGFibGUudm1IYW5kbGVCeU1vZHVsZUxvY2F0b3IuZm9yRWFjaCgodm1IYW5kbGUsIGxvY2F0b3IpID0+IHtcbiAgICAgIGxldCBoYW5kbGUgPSB0YWJsZS5ieU1vZHVsZUxvY2F0b3IuZ2V0KGxvY2F0b3IpO1xuICAgICAgbGV0IHRlbXBsYXRlID0gY29tcGlsZXIuZ2V0VGVtcGxhdGUobG9jYXRvcik7XG5cbiAgICAgIG1ldGFbbG9jYXRvci5tb2R1bGVdID0ge1xuICAgICAgICB2OiB2bUhhbmRsZSxcbiAgICAgICAgaDogaGFuZGxlLFxuICAgICAgICB0YWJsZTogdGVtcGxhdGUuc3ltYm9sVGFibGUsXG4gICAgICB9O1xuICAgIH0pO1xuXG4gICAgdGFibGUuYnlIYW5kbGUuZm9yRWFjaCgobG9jYXRvciwgaGFuZGxlKSA9PiB7XG4gICAgICBsZXQgbW9kdWxlID0gbG9jYXRvci5tb2R1bGUucmVwbGFjZSgndGVtcGxhdGU6LycsICdjb21wb25lbnQ6LycpO1xuICAgICAgaWYgKHRoaXMubW9kdWxlc1ttb2R1bGVdKSB7XG4gICAgICAgIGlmIChtb2R1bGUuaW5kZXhPZignaGVscGVyOicpID09PSAwKSB7XG4gICAgICAgICAgY29uc3QgbW9kdWxlVHlwZSA9ICh0aGlzLm1vZHVsZXNbbW9kdWxlXSBhcyBIZWxwZXJGdW5jdGlvbikuaXNGYWN0b3J5ID8gTW9kdWxlVHlwZXMuSEVMUEVSX0ZBQ1RPUlkgOiBNb2R1bGVUeXBlcy5IRUxQRVI7XG4gICAgICAgICAgcmVzb2x2ZXJUYWJsZVtoYW5kbGVdID0gW21vZHVsZVR5cGUsIHRoaXMubW9kdWxlc1ttb2R1bGVdXTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZXNvbHZlclRhYmxlW2hhbmRsZV0gPSB0aGlzLm1vZHVsZXNbbW9kdWxlXTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pO1xuXG4gICAgbGV0IGJ5dGVjb2RlID0gaGVhcC5idWZmZXI7XG4gICAgbGV0IGRhdGEgPSB7XG4gICAgICBwcmVmaXg6ICcnLFxuICAgICAgbWFpbkVudHJ5OiB0YWJsZS52bUhhbmRsZUJ5TW9kdWxlTG9jYXRvci5nZXQobWFpbkxvY2F0b3IpLFxuICAgICAgcG9vbCxcbiAgICAgIHRhYmxlOiByZXNvbHZlclRhYmxlLFxuICAgICAgbWV0YSxcbiAgICAgIGhlYXA6IHtcbiAgICAgICAgdGFibGU6IGhlYXAudGFibGUsXG4gICAgICAgIGhhbmRsZTogaGVhcC5oYW5kbGUsXG4gICAgICB9LFxuICAgIH07XG5cbiAgICByZXR1cm4gbmV3IEJ5dGVjb2RlTG9hZGVyKHsgYnl0ZWNvZGUsIGRhdGEgfSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgYnVpbGRMb2FkZXIocmVzb2x2ZXIpOiBMb2FkZXIge1xuICAgIHN3aXRjaCAodGhpcy5vcHRpb25zLmxvYWRlcikge1xuICAgICAgY2FzZSAncnVudGltZS1jb21waWxlcic6XG4gICAgICAgIHJldHVybiB0aGlzLmJ1aWxkUnVudGltZUNvbXBpbGVyTG9hZGVyKCk7XG4gICAgICBjYXNlICdieXRlY29kZSc6XG4gICAgICAgIHJldHVybiB0aGlzLmJ1aWxkQnl0ZWNvZGVMb2FkZXIocmVzb2x2ZXIpO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBVbnJlY29nbml6ZWQgbG9hZGVyICR7dGhpcy5vcHRpb25zLmxvYWRlcn1gKTtcbiAgICB9XG4gIH1cblxuICByZW5kZXJUb1N0cmluZyhjb21wb25lbnROYW1lOiBzdHJpbmcsIGRhdGE6IERpY3Q8dW5rbm93bj4sIG9wdGlvbnM/OiB7IFtJTlRFUk5BTF9EWU5BTUlDX1NDT1BFXTogRGljdDx1bmtub3duPiB9KTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICBjb25zdCByZXNvbHZlciA9IHRoaXMuYnVpbGRSZXNvbHZlcigpO1xuICAgIGxldCBsb2FkZXIgPSB0aGlzLmJ1aWxkTG9hZGVyKHJlc29sdmVyKTtcblxuICAgIHJldHVybiBTU1JBcHBsaWNhdGlvbi5yZW5kZXJUb1N0cmluZyhjb21wb25lbnROYW1lLCBkYXRhLCB7XG4gICAgICByb290TmFtZTogdGhpcy5yb290TmFtZSxcbiAgICAgIHJlc29sdmVyLFxuICAgICAgbG9hZGVyLFxuICAgICAgcmVuZGVyZXI6IG5ldyBTeW5jUmVuZGVyZXIoKSxcbiAgICAgIC4uLm9wdGlvbnNcbiAgICB9KTtcbiAgfVxuXG4gIGFzeW5jIGJvb3QoKTogUHJvbWlzZTxUPiB7XG4gICAgbGV0IHJlc29sdmVyID0gdGhpcy5idWlsZFJlc29sdmVyKCk7XG4gICAgbGV0IGxvYWRlcjogTG9hZGVyID0gdGhpcy5idWlsZExvYWRlcihyZXNvbHZlcik7XG5cbiAgICBsZXQgZG9jOiBEb2N1bWVudCA9ICh0aGlzLm9wdGlvbnMuZG9jdW1lbnQgYXMgRG9jdW1lbnQpIHx8IGRvY3VtZW50O1xuICAgIGxldCBlbGVtZW50ID0gZG9jLmJvZHk7XG4gICAgbGV0IGJ1aWxkZXIgPSBuZXcgRE9NQnVpbGRlcih7IGVsZW1lbnQgfSk7XG4gICAgbGV0IHJlbmRlcmVyID0gbmV3IFN5bmNSZW5kZXJlcigpO1xuXG4gICAgbGV0IGFwcCA9IG5ldyB0aGlzLm9wdGlvbnMuQXBwbGljYXRpb25DbGFzcyh7XG4gICAgICByZXNvbHZlcixcbiAgICAgIGJ1aWxkZXIsXG4gICAgICBsb2FkZXIsXG4gICAgICByZW5kZXJlcixcbiAgICAgIHJvb3ROYW1lOiB0aGlzLnJvb3ROYW1lLFxuICAgICAgZG9jdW1lbnQ6IHRoaXMub3B0aW9ucy5kb2N1bWVudCxcbiAgICB9KTtcblxuICAgIGxldCByb290RWxlbWVudCA9IGRvYy5jcmVhdGVFbGVtZW50KCdkaXYnKTtcbiAgICBhcHAucm9vdEVsZW1lbnQgPSByb290RWxlbWVudDtcbiAgICBhcHAucmVuZGVyQ29tcG9uZW50KCdNYWluJywgcm9vdEVsZW1lbnQpO1xuICAgIGFwcC5ib290KCk7XG5cbiAgICBhd2FpdCBkaWRSZW5kZXIoYXBwKTtcblxuICAgIHJldHVybiBhcHA7XG4gIH1cbn1cblxuY2xhc3MgQ29tcGlsZXJEZWxlZ2F0ZSBpbXBsZW1lbnRzIElDb21waWxlckRlbGVnYXRlPE1vZHVsZUxvY2F0b3I+IHtcbiAgY29uc3RydWN0b3IocHJvdGVjdGVkIHJlc29sdmVyOiBSZXNvbHZlcikge31cblxuICBoYXNDb21wb25lbnRJblNjb3BlKG5hbWU6IHN0cmluZywgcmVmZXJyZXI6IE1vZHVsZUxvY2F0b3IpOiBib29sZWFuIHtcbiAgICByZXR1cm4gISF0aGlzLnJlc29sdmVyLmlkZW50aWZ5KGB0ZW1wbGF0ZToke25hbWV9YCwgcmVmZXJyZXIubW9kdWxlKTtcbiAgfVxuXG4gIHJlc29sdmVDb21wb25lbnQobmFtZTogc3RyaW5nLCByZWZlcnJlcjogTW9kdWxlTG9jYXRvcik6IE1vZHVsZUxvY2F0b3Ige1xuICAgIGxldCByZXNvbHZlZCA9IHRoaXMucmVzb2x2ZXIuaWRlbnRpZnkoYHRlbXBsYXRlOiR7bmFtZX1gLCByZWZlcnJlci5tb2R1bGUpO1xuICAgIHJldHVybiB7IG1vZHVsZTogcmVzb2x2ZWQsIG5hbWU6ICdkZWZhdWx0JyB9O1xuICB9XG5cbiAgZ2V0Q29tcG9uZW50Q2FwYWJpbGl0aWVzKCkge1xuICAgIHJldHVybiBDQVBBQklMSVRJRVM7XG4gIH1cblxuICBoYXNIZWxwZXJJblNjb3BlKGhlbHBlck5hbWU6IHN0cmluZywgcmVmZXJyZXI6IE1vZHVsZUxvY2F0b3IpOiBib29sZWFuIHtcbiAgICByZXR1cm4gISF0aGlzLnJlc29sdmVyLmlkZW50aWZ5KGBoZWxwZXI6JHtoZWxwZXJOYW1lfWAsIHJlZmVycmVyLm1vZHVsZSk7XG4gIH1cblxuICByZXNvbHZlSGVscGVyKGhlbHBlck5hbWU6IHN0cmluZywgcmVmZXJyZXI6IE1vZHVsZUxvY2F0b3IpOiBNb2R1bGVMb2NhdG9yIHtcbiAgICBsZXQgcmVzb2x2ZWQgPSB0aGlzLnJlc29sdmVyLmlkZW50aWZ5KGBoZWxwZXI6JHtoZWxwZXJOYW1lfWAsIHJlZmVycmVyLm1vZHVsZSk7XG4gICAgcmV0dXJuIHsgbW9kdWxlOiByZXNvbHZlZCwgbmFtZTogJ2RlZmF1bHQnIH07XG4gIH1cblxuICBoYXNQYXJ0aWFsSW5TY29wZShwYXJ0aWFsTmFtZTogc3RyaW5nLCByZWZlcnJlcjogTW9kdWxlTG9jYXRvcik6IGJvb2xlYW4ge1xuICAgIHRocm93IG5ldyBFcnJvcignTWV0aG9kIG5vdCBpbXBsZW1lbnRlZC4nKTtcbiAgfVxuXG4gIHJlc29sdmVQYXJ0aWFsKHBhcnRpYWxOYW1lOiBzdHJpbmcsIHJlZmVycmVyOiBNb2R1bGVMb2NhdG9yKTogTW9kdWxlTG9jYXRvciB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdNZXRob2Qgbm90IGltcGxlbWVudGVkLicpO1xuICB9XG5cbiAgaGFzTW9kaWZpZXJJblNjb3BlKG1vZGlmaWVyTmFtZTogc3RyaW5nLCByZWZlcnJlcjogTW9kdWxlTG9jYXRvcik6IGJvb2xlYW4ge1xuICAgIHRocm93IG5ldyBFcnJvcignTWV0aG9kIG5vdCBpbXBsZW1lbnRlZC4nKTtcbiAgfVxuXG4gIHJlc29sdmVNb2RpZmllcihtb2RpZmllck5hbWU6IHN0cmluZywgcmVmZXJyZXI6IE1vZHVsZUxvY2F0b3IpOiBNb2R1bGVMb2NhdG9yIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ01ldGhvZCBub3QgaW1wbGVtZW50ZWQuJyk7XG4gIH1cbn1cblxuZnVuY3Rpb24gYnVpbGRBcHA8VCBleHRlbmRzIFRlc3RBcHBsaWNhdGlvbj4ob3B0aW9uczogQXBwQnVpbGRlck9wdGlvbnM8VD4gPSB7fSk6IEFwcEJ1aWxkZXI8VD4ge1xuICBvcHRpb25zLmFwcE5hbWUgPSBvcHRpb25zLmFwcE5hbWUgfHwgJ3Rlc3QtYXBwJztcbiAgb3B0aW9ucy5sb2FkZXIgPSBvcHRpb25zLmxvYWRlciB8fCAncnVudGltZS1jb21waWxlcic7XG4gIG9wdGlvbnMuQ29tcG9uZW50TWFuYWdlciA9IG9wdGlvbnMuQ29tcG9uZW50TWFuYWdlciB8fCBDb21wb25lbnRNYW5hZ2VyO1xuICBvcHRpb25zLkFwcGxpY2F0aW9uQ2xhc3MgPVxuICAgIG9wdGlvbnMuQXBwbGljYXRpb25DbGFzcyB8fCAoVGVzdEFwcGxpY2F0aW9uIGFzIEFwcGxpY2F0aW9uQ29uc3RydWN0b3I8VD4pO1xuXG4gIHJldHVybiBuZXcgQXBwQnVpbGRlcihvcHRpb25zLmFwcE5hbWUsIG9wdGlvbnMpO1xufVxuXG5leHBvcnQgeyBidWlsZEFwcCB9O1xuIl0sInNvdXJjZVJvb3QiOiIifQ==
import Resolver, { BasicModuleRegistry } from '@glimmer/resolver';
import defaultResolverConfiguration from './default-resolver-configuration';
import { precompile } from './compiler';
import Application, { BytecodeLoader, DOMBuilder, RuntimeCompilerLoader, SyncRenderer } from '@glimmer/application';
import Application, { BytecodeLoader, DOMBuilder, RuntimeCompilerLoader, SyncRenderer, INTERNAL_DYNAMIC_SCOPE } from '@glimmer/application';
import { ComponentManager, CAPABILITIES } from '@glimmer/component';

@@ -127,11 +127,7 @@ import { assert } from '@glimmer/util';

}
renderToString(componentName, data) {
renderToString(componentName, data, options) {
const resolver = this.buildResolver();
let loader = this.buildLoader(resolver);
return SSRApplication.renderToString(componentName, data, {
rootName: this.rootName,
resolver,
loader,
renderer: new SyncRenderer()
});
return SSRApplication.renderToString(componentName, data, Object.assign({ rootName: this.rootName, resolver,
loader, renderer: new SyncRenderer() }, options));
}

@@ -204,2 +200,2 @@ async boot() {

export { buildApp };
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwLWJ1aWxkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9AZ2xpbW1lci9hcHBsaWNhdGlvbi10ZXN0LWhlbHBlcnMvc3JjL2FwcC1idWlsZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sUUFBUSxFQUFFLEVBQUUsbUJBQW1CLEVBQXlCLE1BQU0sbUJBQW1CLENBQUM7QUFFekYsT0FBTyw0QkFBNEIsTUFBTSxrQ0FBa0MsQ0FBQztBQUM1RSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sWUFBWSxDQUFDO0FBQ3hDLE9BQU8sV0FBVyxFQUFFLEVBRWxCLGNBQWMsRUFDZCxVQUFVLEVBRVYscUJBQXFCLEVBQ3JCLFlBQVksRUFFYixNQUFNLHNCQUFzQixDQUFDO0FBQzlCLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxZQUFZLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUNwRSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3ZDLE9BQU8sRUFBRSxjQUFjLEVBQXlDLE1BQU0sMEJBQTBCLENBQUM7QUFDakcsT0FBTyxFQUFFLFdBQVcsRUFBRSxZQUFZLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNqRSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFHdEQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUU5QyxPQUFPLFNBQVMsTUFBTSxjQUFjLENBQUM7QUFhckMsTUFBTSxPQUFPLGVBQWdCLFNBQVEsV0FBVztDQUUvQztBQVVELFNBQVMsVUFBVSxDQUFDLE1BQWMsRUFBRSxJQUFZO0lBQzlDLE9BQU87UUFDTCxJQUFJLEVBQUUsVUFBVTtRQUNoQixNQUFNO1FBQ04sSUFBSTtRQUNKLElBQUksRUFBRTtZQUNKLE1BQU07WUFDTixJQUFJO1NBQ0w7S0FDRixDQUFDO0FBQ0osQ0FBQztBQUVELE1BQU0sT0FBTyxVQUFVO0lBTXJC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RUFBRSxPQUFPLENBQUMsQ0FBQztBQUNsRCxDQUFDO0FBRUQsT0FBTyxFQUFFLFFBQVEsRUFBRSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJlc29sdmVyLCB7IEJhc2ljTW9kdWxlUmVnaXN0cnksIFJlc29sdmVyQ29uZmlndXJhdGlvbiB9IGZyb20gJ0BnbGltbWVyL3Jlc29sdmVyJztcbmltcG9ydCB7IERpY3QsIE1vZHVsZUxvY2F0b3IsIFRlbXBsYXRlTG9jYXRvciB9IGZyb20gJ0BnbGltbWVyL2ludGVyZmFjZXMnO1xuaW1wb3J0IGRlZmF1bHRSZXNvbHZlckNvbmZpZ3VyYXRpb24gZnJvbSAnLi9kZWZhdWx0LXJlc29sdmVyLWNvbmZpZ3VyYXRpb24nO1xuaW1wb3J0IHsgcHJlY29tcGlsZSB9IGZyb20gJy4vY29tcGlsZXInO1xuaW1wb3J0IEFwcGxpY2F0aW9uLCB7XG4gIEFwcGxpY2F0aW9uQ29uc3RydWN0b3IsXG4gIEJ5dGVjb2RlTG9hZGVyLFxuICBET01CdWlsZGVyLFxuICBMb2FkZXIsXG4gIFJ1bnRpbWVDb21waWxlckxvYWRlcixcbiAgU3luY1JlbmRlcmVyLFxuICBNb2R1bGVUeXBlc1xufSBmcm9tICdAZ2xpbW1lci9hcHBsaWNhdGlvbic7XG5pbXBvcnQgeyBDb21wb25lbnRNYW5hZ2VyLCBDQVBBQklMSVRJRVMgfSBmcm9tICdAZ2xpbW1lci9jb21wb25lbnQnO1xuaW1wb3J0IHsgYXNzZXJ0IH0gZnJvbSAnQGdsaW1tZXIvdXRpbCc7XG5pbXBvcnQgeyBCdW5kbGVDb21waWxlciwgQ29tcGlsZXJEZWxlZ2F0ZSBhcyBJQ29tcGlsZXJEZWxlZ2F0ZSB9IGZyb20gJ0BnbGltbWVyL2J1bmRsZS1jb21waWxlcic7XG5pbXBvcnQgeyBidWlsZEFjdGlvbiwgbWFpblRlbXBsYXRlIH0gZnJvbSAnQGdsaW1tZXIvYXBwbGljYXRpb24nO1xuaW1wb3J0IHsgY29tcGlsYWJsZSB9IGZyb20gJ0BnbGltbWVyL29wY29kZS1jb21waWxlcic7XG5pbXBvcnQgeyBNZXRhZGF0YSB9IGZyb20gJy4uLy4uL2FwcGxpY2F0aW9uL3NyYy9sb2FkZXJzL2J5dGVjb2RlL2xvYWRlcic7XG5pbXBvcnQgeyBTaW1wbGVEb2N1bWVudCB9IGZyb20gJ0BzaW1wbGUtZG9tL2ludGVyZmFjZSc7XG5pbXBvcnQgeyBTU1JBcHBsaWNhdGlvbiB9IGZyb20gJ0BnbGltbWVyL3Nzcic7XG5cbmltcG9ydCBkaWRSZW5kZXIgZnJvbSAnLi9kaWQtcmVuZGVyJztcblxuZXhwb3J0IGludGVyZmFjZSBBcHBCdWlsZGVyT3B0aW9uczxUPiB7XG4gIGFwcE5hbWU/OiBzdHJpbmc7XG4gIGxvYWRlcj86IHN0cmluZztcbiAgQXBwbGljYXRpb25DbGFzcz86IEFwcGxpY2F0aW9uQ29uc3RydWN0b3I8VD47XG4gIENvbXBvbmVudE1hbmFnZXI/OiBhbnk7IC8vIFRPRE8gLSB0eXBpbmdcbiAgcmVzb2x2ZXJDb25maWd1cmF0aW9uPzogUmVzb2x2ZXJDb25maWd1cmF0aW9uO1xuICBkb2N1bWVudD86IFNpbXBsZURvY3VtZW50O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIENvbXBvbmVudEZhY3Rvcnkge31cblxuZXhwb3J0IGNsYXNzIFRlc3RBcHBsaWNhdGlvbiBleHRlbmRzIEFwcGxpY2F0aW9uIHtcbiAgcm9vdEVsZW1lbnQ6IEVsZW1lbnQ7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQXBwQnVpbGRlclRlbXBsYXRlTWV0YSB7XG4gIHNwZWNpZmllcjogc3RyaW5nO1xufVxuXG5pbnRlcmZhY2UgSGVscGVyRnVuY3Rpb24gZXh0ZW5kcyBGdW5jdGlvbiB7XG4gIGlzRmFjdG9yeT86IGJvb2xlYW47XG59XG5cbmZ1bmN0aW9uIGxvY2F0b3JGb3IobW9kdWxlOiBzdHJpbmcsIG5hbWU6IHN0cmluZyk6IFRlbXBsYXRlTG9jYXRvcjxNb2R1bGVMb2NhdG9yPiB7XG4gIHJldHVybiB7XG4gICAga2luZDogJ3RlbXBsYXRlJyxcbiAgICBtb2R1bGUsXG4gICAgbmFtZSxcbiAgICBtZXRhOiB7XG4gICAgICBtb2R1bGUsXG4gICAgICBuYW1lLFxuICAgIH0sXG4gIH07XG59XG5cbmV4cG9ydCBjbGFzcyBBcHBCdWlsZGVyPFQgZXh0ZW5kcyBUZXN0QXBwbGljYXRpb24+IHtcbiAgcm9vdE5hbWU6IHN0cmluZztcbiAgbW9kdWxlczogRGljdDx1bmtub3duPiA9IHt9O1xuICB0ZW1wbGF0ZXM6IERpY3Q8c3RyaW5nPiA9IHt9O1xuICBvcHRpb25zOiBBcHBCdWlsZGVyT3B0aW9uczxUPjtcblxuICBjb25zdHJ1Y3RvcihuYW1lOiBzdHJpbmcsIG9wdGlvbnM6IEFwcEJ1aWxkZXJPcHRpb25zPFQ+KSB7XG4gICAgdGhpcy5yb290TmFtZSA9IG5hbWU7XG4gICAgdGhpcy5vcHRpb25zID0gb3B0aW9ucztcbiAgICB0aGlzLm1vZHVsZXNbXG4gICAgICBgY29tcG9uZW50LW1hbmFnZXI6LyR7dGhpcy5yb290TmFtZX0vY29tcG9uZW50LW1hbmFnZXJzL21haW5gXG4gICAgXSA9IHRoaXMub3B0aW9ucy5Db21wb25lbnRNYW5hZ2VyO1xuICAgIHRoaXMudGVtcGxhdGUoJ01haW4nLCAnPGRpdiAvPicpO1xuICAgIHRoaXMuaGVscGVyKCdhY3Rpb24nLCBidWlsZEFjdGlvbiwgdHJ1ZSk7XG4gIH1cblxuICB0ZW1wbGF0ZShuYW1lOiBzdHJpbmcsIHRlbXBsYXRlOiBzdHJpbmcpIHtcbiAgICBhc3NlcnQoXG4gICAgICBuYW1lLmNoYXJBdCgwKSA9PT0gbmFtZS5jaGFyQXQoMCkudG9VcHBlckNhc2UoKSxcbiAgICAgICd0ZW1wbGF0ZSBuYW1lcyBtdXN0IHN0YXJ0IHdpdGggYSBjYXBpdGFsIGxldHRlcidcbiAgICApO1xuXG4gICAgbGV0IHNwZWNpZmllciA9IGB0ZW1wbGF0ZTovJHt0aGlzLnJvb3ROYW1lfS9jb21wb25lbnRzLyR7bmFtZX1gO1xuICAgIHRoaXMubW9kdWxlc1tzcGVjaWZpZXJdID0gcHJlY29tcGlsZSh0ZW1wbGF0ZSwgeyBtZXRhOiB7IHNwZWNpZmllciB9IH0pO1xuICAgIHRoaXMudGVtcGxhdGVzW3NwZWNpZmllcl0gPSB0ZW1wbGF0ZTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIGNvbXBvbmVudChuYW1lOiBzdHJpbmcsIGNvbXBvbmVudEZhY3Rvcnk6IENvbXBvbmVudEZhY3RvcnkpIHtcbiAgICBsZXQgc3BlY2lmaWVyID0gYGNvbXBvbmVudDovJHt0aGlzLnJvb3ROYW1lfS9jb21wb25lbnRzLyR7bmFtZX1gO1xuICAgIHRoaXMubW9kdWxlc1tzcGVjaWZpZXJdID0gY29tcG9uZW50RmFjdG9yeTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIGhlbHBlcihuYW1lOiBzdHJpbmcsIGhlbHBlckZ1bmM6IEhlbHBlckZ1bmN0aW9uLCBpc0ZhY3RvcnkgPSBmYWxzZSkge1xuICAgIGxldCBzcGVjaWZpZXIgPSBgaGVscGVyOi8ke3RoaXMucm9vdE5hbWV9L2NvbXBvbmVudHMvJHtuYW1lfWA7XG4gICAgaGVscGVyRnVuYy5pc0ZhY3RvcnkgPSBpc0ZhY3Rvcnk7XG4gICAgdGhpcy5tb2R1bGVzW3NwZWNpZmllcl0gPSBoZWxwZXJGdW5jO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgcHJvdGVjdGVkIGJ1aWxkUmVzb2x2ZXIoKTogUmVzb2x2ZXIge1xuICAgIGxldCByZXNvbHZlckNvbmZpZ3VyYXRpb24gPSB0aGlzLm9wdGlvbnMucmVzb2x2ZXJDb25maWd1cmF0aW9uIHx8IGRlZmF1bHRSZXNvbHZlckNvbmZpZ3VyYXRpb247XG4gICAgcmVzb2x2ZXJDb25maWd1cmF0aW9uLmFwcCA9IHJlc29sdmVyQ29uZmlndXJhdGlvbi5hcHAgfHwge1xuICAgICAgbmFtZTogdGhpcy5yb290TmFtZSxcbiAgICAgIHJvb3ROYW1lOiB0aGlzLnJvb3ROYW1lLFxuICAgIH07XG5cbiAgICBsZXQgcmVnaXN0cnkgPSBuZXcgQmFzaWNNb2R1bGVSZWdpc3RyeSh0aGlzLm1vZHVsZXMpO1xuICAgIHJldHVybiBuZXcgUmVzb2x2ZXIocmVzb2x2ZXJDb25maWd1cmF0aW9uLCByZWdpc3RyeSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgYnVpbGRSdW50aW1lQ29tcGlsZXJMb2FkZXIoKTogTG9hZGVyIHtcbiAgICByZXR1cm4gbmV3IFJ1bnRpbWVDb21waWxlckxvYWRlcigpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGJ1aWxkQnl0ZWNvZGVMb2FkZXIocmVzb2x2ZXI6IFJlc29sdmVyKSB7XG4gICAgbGV0IGRlbGVnYXRlID0gbmV3IENvbXBpbGVyRGVsZWdhdGUocmVzb2x2ZXIpO1xuICAgIGxldCBjb21waWxlciA9IG5ldyBCdW5kbGVDb21waWxlcihkZWxlZ2F0ZSk7XG5cbiAgICBsZXQgbWFpbkxvY2F0b3IgPSBsb2NhdG9yRm9yKCd0ZW1wbGF0ZTptYWluVGVtcGxhdGUnLCAnZGVmYXVsdCcpO1xuICAgIG1haW5Mb2NhdG9yLm1ldGEubW9kdWxlID0gJ3RlbXBsYXRlOm1haW5UZW1wbGF0ZSc7XG5cbiAgICBsZXQgYmxvY2sgPSBKU09OLnBhcnNlKG1haW5UZW1wbGF0ZS5ibG9jayk7XG4gICAgbGV0IGNvbXBpbGFibGVUZW1wbGF0ZSA9IGNvbXBpbGFibGUoe1xuICAgICAgYmxvY2ssXG4gICAgICByZWZlcnJlcjogbWFpbkxvY2F0b3IubWV0YSxcbiAgICB9KTtcblxuICAgIGNvbXBpbGVyLmFkZENvbXBpbGFibGVUZW1wbGF0ZShtYWluTG9jYXRvciwgY29tcGlsYWJsZVRlbXBsYXRlKTtcblxuICAgIGZvciAobGV0IG1vZHVsZSBpbiB0aGlzLnRlbXBsYXRlcykge1xuICAgICAgY29tcGlsZXIuYWRkVGVtcGxhdGVTb3VyY2UobG9jYXRvckZvcihtb2R1bGUsICdkZWZhdWx0JyksIHRoaXMudGVtcGxhdGVzW21vZHVsZV0pO1xuICAgIH1cblxuICAgIGxldCB7IGhlYXAsIHBvb2wsIHRhYmxlIH0gPSBjb21waWxlci5jb21waWxlKCk7XG5cbiAgICBsZXQgcmVzb2x2ZXJUYWJsZTogdW5rbm93bltdID0gW107XG5cbiAgICBsZXQgbWV0YTogRGljdDxNZXRhZGF0YT4gPSB7fTtcblxuICAgIHRhYmxlLnZtSGFuZGxlQnlNb2R1bGVMb2NhdG9yLmZvckVhY2goKHZtSGFuZGxlLCBsb2NhdG9yKSA9PiB7XG4gICAgICBsZXQgaGFuZGxlID0gdGFibGUuYnlNb2R1bGVMb2NhdG9yLmdldChsb2NhdG9yKTtcbiAgICAgIGxldCB0ZW1wbGF0ZSA9IGNvbXBpbGVyLmdldFRlbXBsYXRlKGxvY2F0b3IpO1xuXG4gICAgICBtZXRhW2xvY2F0b3IubW9kdWxlXSA9IHtcbiAgICAgICAgdjogdm1IYW5kbGUsXG4gICAgICAgIGg6IGhhbmRsZSxcbiAgICAgICAgdGFibGU6IHRlbXBsYXRlLnN5bWJvbFRhYmxlLFxuICAgICAgfTtcbiAgICB9KTtcblxuICAgIHRhYmxlLmJ5SGFuZGxlLmZvckVhY2goKGxvY2F0b3IsIGhhbmRsZSkgPT4ge1xuICAgICAgbGV0IG1vZHVsZSA9IGxvY2F0b3IubW9kdWxlLnJlcGxhY2UoJ3RlbXBsYXRlOi8nLCAnY29tcG9uZW50Oi8nKTtcbiAgICAgIGlmICh0aGlzLm1vZHVsZXNbbW9kdWxlXSkge1xuICAgICAgICBpZiAobW9kdWxlLmluZGV4T2YoJ2hlbHBlcjonKSA9PT0gMCkge1xuICAgICAgICAgIGNvbnN0IG1vZHVsZVR5cGUgPSAodGhpcy5tb2R1bGVzW21vZHVsZV0gYXMgSGVscGVyRnVuY3Rpb24pLmlzRmFjdG9yeSA/IE1vZHVsZVR5cGVzLkhFTFBFUl9GQUNUT1JZIDogTW9kdWxlVHlwZXMuSEVMUEVSO1xuICAgICAgICAgIHJlc29sdmVyVGFibGVbaGFuZGxlXSA9IFttb2R1bGVUeXBlLCB0aGlzLm1vZHVsZXNbbW9kdWxlXV07XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmVzb2x2ZXJUYWJsZVtoYW5kbGVdID0gdGhpcy5tb2R1bGVzW21vZHVsZV07XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KTtcblxuICAgIGxldCBieXRlY29kZSA9IGhlYXAuYnVmZmVyO1xuICAgIGxldCBkYXRhID0ge1xuICAgICAgcHJlZml4OiAnJyxcbiAgICAgIG1haW5FbnRyeTogdGFibGUudm1IYW5kbGVCeU1vZHVsZUxvY2F0b3IuZ2V0KG1haW5Mb2NhdG9yKSxcbiAgICAgIHBvb2wsXG4gICAgICB0YWJsZTogcmVzb2x2ZXJUYWJsZSxcbiAgICAgIG1ldGEsXG4gICAgICBoZWFwOiB7XG4gICAgICAgIHRhYmxlOiBoZWFwLnRhYmxlLFxuICAgICAgICBoYW5kbGU6IGhlYXAuaGFuZGxlLFxuICAgICAgfSxcbiAgICB9O1xuXG4gICAgcmV0dXJuIG5ldyBCeXRlY29kZUxvYWRlcih7IGJ5dGVjb2RlLCBkYXRhIH0pO1xuICB9XG5cbiAgcHJvdGVjdGVkIGJ1aWxkTG9hZGVyKHJlc29sdmVyKTogTG9hZGVyIHtcbiAgICBzd2l0Y2ggKHRoaXMub3B0aW9ucy5sb2FkZXIpIHtcbiAgICAgIGNhc2UgJ3J1bnRpbWUtY29tcGlsZXInOlxuICAgICAgICByZXR1cm4gdGhpcy5idWlsZFJ1bnRpbWVDb21waWxlckxvYWRlcigpO1xuICAgICAgY2FzZSAnYnl0ZWNvZGUnOlxuICAgICAgICByZXR1cm4gdGhpcy5idWlsZEJ5dGVjb2RlTG9hZGVyKHJlc29sdmVyKTtcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgVW5yZWNvZ25pemVkIGxvYWRlciAke3RoaXMub3B0aW9ucy5sb2FkZXJ9YCk7XG4gICAgfVxuICB9XG5cbiAgcmVuZGVyVG9TdHJpbmcoY29tcG9uZW50TmFtZTogc3RyaW5nLCBkYXRhOiBEaWN0PHVua25vd24+KTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICBjb25zdCByZXNvbHZlciA9IHRoaXMuYnVpbGRSZXNvbHZlcigpO1xuICAgIGxldCBsb2FkZXIgPSB0aGlzLmJ1aWxkTG9hZGVyKHJlc29sdmVyKTtcblxuICAgIHJldHVybiBTU1JBcHBsaWNhdGlvbi5yZW5kZXJUb1N0cmluZyhjb21wb25lbnROYW1lLCBkYXRhLCB7XG4gICAgICByb290TmFtZTogdGhpcy5yb290TmFtZSxcbiAgICAgIHJlc29sdmVyLFxuICAgICAgbG9hZGVyLFxuICAgICAgcmVuZGVyZXI6IG5ldyBTeW5jUmVuZGVyZXIoKVxuICAgIH0pO1xuICB9XG5cbiAgYXN5bmMgYm9vdCgpOiBQcm9taXNlPFQ+IHtcbiAgICBsZXQgcmVzb2x2ZXIgPSB0aGlzLmJ1aWxkUmVzb2x2ZXIoKTtcbiAgICBsZXQgbG9hZGVyOiBMb2FkZXIgPSB0aGlzLmJ1aWxkTG9hZGVyKHJlc29sdmVyKTtcblxuICAgIGxldCBkb2M6IERvY3VtZW50ID0gKHRoaXMub3B0aW9ucy5kb2N1bWVudCBhcyBEb2N1bWVudCkgfHwgZG9jdW1lbnQ7XG4gICAgbGV0IGVsZW1lbnQgPSBkb2MuYm9keTtcbiAgICBsZXQgYnVpbGRlciA9IG5ldyBET01CdWlsZGVyKHsgZWxlbWVudCB9KTtcbiAgICBsZXQgcmVuZGVyZXIgPSBuZXcgU3luY1JlbmRlcmVyKCk7XG5cbiAgICBsZXQgYXBwID0gbmV3IHRoaXMub3B0aW9ucy5BcHBsaWNhdGlvbkNsYXNzKHtcbiAgICAgIHJlc29sdmVyLFxuICAgICAgYnVpbGRlcixcbiAgICAgIGxvYWRlcixcbiAgICAgIHJlbmRlcmVyLFxuICAgICAgcm9vdE5hbWU6IHRoaXMucm9vdE5hbWUsXG4gICAgICBkb2N1bWVudDogdGhpcy5vcHRpb25zLmRvY3VtZW50LFxuICAgIH0pO1xuXG4gICAgbGV0IHJvb3RFbGVtZW50ID0gZG9jLmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuICAgIGFwcC5yb290RWxlbWVudCA9IHJvb3RFbGVtZW50O1xuICAgIGFwcC5yZW5kZXJDb21wb25lbnQoJ01haW4nLCByb290RWxlbWVudCk7XG4gICAgYXBwLmJvb3QoKTtcblxuICAgIGF3YWl0IGRpZFJlbmRlcihhcHApO1xuXG4gICAgcmV0dXJuIGFwcDtcbiAgfVxufVxuXG5jbGFzcyBDb21waWxlckRlbGVnYXRlIGltcGxlbWVudHMgSUNvbXBpbGVyRGVsZWdhdGU8TW9kdWxlTG9jYXRvcj4ge1xuICBjb25zdHJ1Y3Rvcihwcm90ZWN0ZWQgcmVzb2x2ZXI6IFJlc29sdmVyKSB7fVxuXG4gIGhhc0NvbXBvbmVudEluU2NvcGUobmFtZTogc3RyaW5nLCByZWZlcnJlcjogTW9kdWxlTG9jYXRvcik6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhIXRoaXMucmVzb2x2ZXIuaWRlbnRpZnkoYHRlbXBsYXRlOiR7bmFtZX1gLCByZWZlcnJlci5tb2R1bGUpO1xuICB9XG5cbiAgcmVzb2x2ZUNvbXBvbmVudChuYW1lOiBzdHJpbmcsIHJlZmVycmVyOiBNb2R1bGVMb2NhdG9yKTogTW9kdWxlTG9jYXRvciB7XG4gICAgbGV0IHJlc29sdmVkID0gdGhpcy5yZXNvbHZlci5pZGVudGlmeShgdGVtcGxhdGU6JHtuYW1lfWAsIHJlZmVycmVyLm1vZHVsZSk7XG4gICAgcmV0dXJuIHsgbW9kdWxlOiByZXNvbHZlZCwgbmFtZTogJ2RlZmF1bHQnIH07XG4gIH1cblxuICBnZXRDb21wb25lbnRDYXBhYmlsaXRpZXMoKSB7XG4gICAgcmV0dXJuIENBUEFCSUxJVElFUztcbiAgfVxuXG4gIGhhc0hlbHBlckluU2NvcGUoaGVscGVyTmFtZTogc3RyaW5nLCByZWZlcnJlcjogTW9kdWxlTG9jYXRvcik6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhIXRoaXMucmVzb2x2ZXIuaWRlbnRpZnkoYGhlbHBlcjoke2hlbHBlck5hbWV9YCwgcmVmZXJyZXIubW9kdWxlKTtcbiAgfVxuXG4gIHJlc29sdmVIZWxwZXIoaGVscGVyTmFtZTogc3RyaW5nLCByZWZlcnJlcjogTW9kdWxlTG9jYXRvcik6IE1vZHVsZUxvY2F0b3Ige1xuICAgIGxldCByZXNvbHZlZCA9IHRoaXMucmVzb2x2ZXIuaWRlbnRpZnkoYGhlbHBlcjoke2hlbHBlck5hbWV9YCwgcmVmZXJyZXIubW9kdWxlKTtcbiAgICByZXR1cm4geyBtb2R1bGU6IHJlc29sdmVkLCBuYW1lOiAnZGVmYXVsdCcgfTtcbiAgfVxuXG4gIGhhc1BhcnRpYWxJblNjb3BlKHBhcnRpYWxOYW1lOiBzdHJpbmcsIHJlZmVycmVyOiBNb2R1bGVMb2NhdG9yKTogYm9vbGVhbiB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdNZXRob2Qgbm90IGltcGxlbWVudGVkLicpO1xuICB9XG5cbiAgcmVzb2x2ZVBhcnRpYWwocGFydGlhbE5hbWU6IHN0cmluZywgcmVmZXJyZXI6IE1vZHVsZUxvY2F0b3IpOiBNb2R1bGVMb2NhdG9yIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ01ldGhvZCBub3QgaW1wbGVtZW50ZWQuJyk7XG4gIH1cblxuICBoYXNNb2RpZmllckluU2NvcGUobW9kaWZpZXJOYW1lOiBzdHJpbmcsIHJlZmVycmVyOiBNb2R1bGVMb2NhdG9yKTogYm9vbGVhbiB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdNZXRob2Qgbm90IGltcGxlbWVudGVkLicpO1xuICB9XG5cbiAgcmVzb2x2ZU1vZGlmaWVyKG1vZGlmaWVyTmFtZTogc3RyaW5nLCByZWZlcnJlcjogTW9kdWxlTG9jYXRvcik6IE1vZHVsZUxvY2F0b3Ige1xuICAgIHRocm93IG5ldyBFcnJvcignTWV0aG9kIG5vdCBpbXBsZW1lbnRlZC4nKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBidWlsZEFwcDxUIGV4dGVuZHMgVGVzdEFwcGxpY2F0aW9uPihvcHRpb25zOiBBcHBCdWlsZGVyT3B0aW9uczxUPiA9IHt9KTogQXBwQnVpbGRlcjxUPiB7XG4gIG9wdGlvbnMuYXBwTmFtZSA9IG9wdGlvbnMuYXBwTmFtZSB8fCAndGVzdC1hcHAnO1xuICBvcHRpb25zLmxvYWRlciA9IG9wdGlvbnMubG9hZGVyIHx8ICdydW50aW1lLWNvbXBpbGVyJztcbiAgb3B0aW9ucy5Db21wb25lbnRNYW5hZ2VyID0gb3B0aW9ucy5Db21wb25lbnRNYW5hZ2VyIHx8IENvbXBvbmVudE1hbmFnZXI7XG4gIG9wdGlvbnMuQXBwbGljYXRpb25DbGFzcyA9XG4gICAgb3B0aW9ucy5BcHBsaWNhdGlvbkNsYXNzIHx8IChUZXN0QXBwbGljYXRpb24gYXMgQXBwbGljYXRpb25Db25zdHJ1Y3RvcjxUPik7XG5cbiAgcmV0dXJuIG5ldyBBcHBCdWlsZGVyKG9wdGlvbnMuYXBwTmFtZSwgb3B0aW9ucyk7XG59XG5cbmV4cG9ydCB7IGJ1aWxkQXBwIH07XG4iXX0=
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwLWJ1aWxkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9AZ2xpbW1lci9hcHBsaWNhdGlvbi10ZXN0LWhlbHBlcnMvc3JjL2FwcC1idWlsZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sUUFBUSxFQUFFLEVBQUUsbUJBQW1CLEVBQXlCLE1BQU0sbUJBQW1CLENBQUM7QUFFekYsT0FBTyw0QkFBNEIsTUFBTSxrQ0FBa0MsQ0FBQztBQUM1RSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sWUFBWSxDQUFDO0FBQ3hDLE9BQU8sV0FBVyxFQUFFLEVBRWxCLGNBQWMsRUFDZCxVQUFVLEVBRVYscUJBQXFCLEVBQ3JCLFlBQVksRUFFWixzQkFBc0IsRUFDdkIsTUFBTSxzQkFBc0IsQ0FBQztBQUM5QixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsWUFBWSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDcEUsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN2QyxPQUFPLEVBQUUsY0FBYyxFQUF5QyxNQUFNLDBCQUEwQixDQUFDO0FBQ2pHLE9BQU8sRUFBRSxXQUFXLEVBQUUsWUFBWSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDakUsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBR3RELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFFOUMsT0FBTyxTQUFTLE1BQU0sY0FBYyxDQUFDO0FBYXJDLE1BQU0sT0FBTyxlQUFnQixTQUFRLFdBQVc7Q0FFL0M7QUFVRCxTQUFTLFVBQVUsQ0FBQyxNQUFjLEVBQUUsSUFBWTtJQUM5QyxPQUFPO1FBQ0wsSUFBSSxFQUFFLFVBQVU7UUFDaEIsTUFBTTtRQUNOLElBQUk7UUFDSixJQUFJLEVBQUU7WUFDSixNQUFNO1lBQ04sSUFBSTtTQUNMO0tBQ0YsQ0FBQztBQUNKLENBQUM7QUFFRCxNQUFNLE9B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VUFBVSxDQUFDLE9BQU8sQ0FBQyxPQUFPLEVBQUUsT0FBTyxDQUFDLENBQUM7QUFDbEQsQ0FBQztBQUVELE9BQU8sRUFBRSxRQUFRLEVBQUUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBSZXNvbHZlciwgeyBCYXNpY01vZHVsZVJlZ2lzdHJ5LCBSZXNvbHZlckNvbmZpZ3VyYXRpb24gfSBmcm9tICdAZ2xpbW1lci9yZXNvbHZlcic7XG5pbXBvcnQgeyBEaWN0LCBNb2R1bGVMb2NhdG9yLCBUZW1wbGF0ZUxvY2F0b3IgfSBmcm9tICdAZ2xpbW1lci9pbnRlcmZhY2VzJztcbmltcG9ydCBkZWZhdWx0UmVzb2x2ZXJDb25maWd1cmF0aW9uIGZyb20gJy4vZGVmYXVsdC1yZXNvbHZlci1jb25maWd1cmF0aW9uJztcbmltcG9ydCB7IHByZWNvbXBpbGUgfSBmcm9tICcuL2NvbXBpbGVyJztcbmltcG9ydCBBcHBsaWNhdGlvbiwge1xuICBBcHBsaWNhdGlvbkNvbnN0cnVjdG9yLFxuICBCeXRlY29kZUxvYWRlcixcbiAgRE9NQnVpbGRlcixcbiAgTG9hZGVyLFxuICBSdW50aW1lQ29tcGlsZXJMb2FkZXIsXG4gIFN5bmNSZW5kZXJlcixcbiAgTW9kdWxlVHlwZXMsXG4gIElOVEVSTkFMX0RZTkFNSUNfU0NPUEVcbn0gZnJvbSAnQGdsaW1tZXIvYXBwbGljYXRpb24nO1xuaW1wb3J0IHsgQ29tcG9uZW50TWFuYWdlciwgQ0FQQUJJTElUSUVTIH0gZnJvbSAnQGdsaW1tZXIvY29tcG9uZW50JztcbmltcG9ydCB7IGFzc2VydCB9IGZyb20gJ0BnbGltbWVyL3V0aWwnO1xuaW1wb3J0IHsgQnVuZGxlQ29tcGlsZXIsIENvbXBpbGVyRGVsZWdhdGUgYXMgSUNvbXBpbGVyRGVsZWdhdGUgfSBmcm9tICdAZ2xpbW1lci9idW5kbGUtY29tcGlsZXInO1xuaW1wb3J0IHsgYnVpbGRBY3Rpb24sIG1haW5UZW1wbGF0ZSB9IGZyb20gJ0BnbGltbWVyL2FwcGxpY2F0aW9uJztcbmltcG9ydCB7IGNvbXBpbGFibGUgfSBmcm9tICdAZ2xpbW1lci9vcGNvZGUtY29tcGlsZXInO1xuaW1wb3J0IHsgTWV0YWRhdGEgfSBmcm9tICcuLi8uLi9hcHBsaWNhdGlvbi9zcmMvbG9hZGVycy9ieXRlY29kZS9sb2FkZXInO1xuaW1wb3J0IHsgU2ltcGxlRG9jdW1lbnQgfSBmcm9tICdAc2ltcGxlLWRvbS9pbnRlcmZhY2UnO1xuaW1wb3J0IHsgU1NSQXBwbGljYXRpb24gfSBmcm9tICdAZ2xpbW1lci9zc3InO1xuXG5pbXBvcnQgZGlkUmVuZGVyIGZyb20gJy4vZGlkLXJlbmRlcic7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQXBwQnVpbGRlck9wdGlvbnM8VD4ge1xuICBhcHBOYW1lPzogc3RyaW5nO1xuICBsb2FkZXI/OiBzdHJpbmc7XG4gIEFwcGxpY2F0aW9uQ2xhc3M/OiBBcHBsaWNhdGlvbkNvbnN0cnVjdG9yPFQ+O1xuICBDb21wb25lbnRNYW5hZ2VyPzogYW55OyAvLyBUT0RPIC0gdHlwaW5nXG4gIHJlc29sdmVyQ29uZmlndXJhdGlvbj86IFJlc29sdmVyQ29uZmlndXJhdGlvbjtcbiAgZG9jdW1lbnQ/OiBTaW1wbGVEb2N1bWVudDtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBDb21wb25lbnRGYWN0b3J5IHt9XG5cbmV4cG9ydCBjbGFzcyBUZXN0QXBwbGljYXRpb24gZXh0ZW5kcyBBcHBsaWNhdGlvbiB7XG4gIHJvb3RFbGVtZW50OiBFbGVtZW50O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEFwcEJ1aWxkZXJUZW1wbGF0ZU1ldGEge1xuICBzcGVjaWZpZXI6IHN0cmluZztcbn1cblxuaW50ZXJmYWNlIEhlbHBlckZ1bmN0aW9uIGV4dGVuZHMgRnVuY3Rpb24ge1xuICBpc0ZhY3Rvcnk/OiBib29sZWFuO1xufVxuXG5mdW5jdGlvbiBsb2NhdG9yRm9yKG1vZHVsZTogc3RyaW5nLCBuYW1lOiBzdHJpbmcpOiBUZW1wbGF0ZUxvY2F0b3I8TW9kdWxlTG9jYXRvcj4ge1xuICByZXR1cm4ge1xuICAgIGtpbmQ6ICd0ZW1wbGF0ZScsXG4gICAgbW9kdWxlLFxuICAgIG5hbWUsXG4gICAgbWV0YToge1xuICAgICAgbW9kdWxlLFxuICAgICAgbmFtZSxcbiAgICB9LFxuICB9O1xufVxuXG5leHBvcnQgY2xhc3MgQXBwQnVpbGRlcjxUIGV4dGVuZHMgVGVzdEFwcGxpY2F0aW9uPiB7XG4gIHJvb3ROYW1lOiBzdHJpbmc7XG4gIG1vZHVsZXM6IERpY3Q8dW5rbm93bj4gPSB7fTtcbiAgdGVtcGxhdGVzOiBEaWN0PHN0cmluZz4gPSB7fTtcbiAgb3B0aW9uczogQXBwQnVpbGRlck9wdGlvbnM8VD47XG5cbiAgY29uc3RydWN0b3IobmFtZTogc3RyaW5nLCBvcHRpb25zOiBBcHBCdWlsZGVyT3B0aW9uczxUPikge1xuICAgIHRoaXMucm9vdE5hbWUgPSBuYW1lO1xuICAgIHRoaXMub3B0aW9ucyA9IG9wdGlvbnM7XG4gICAgdGhpcy5tb2R1bGVzW1xuICAgICAgYGNvbXBvbmVudC1tYW5hZ2VyOi8ke3RoaXMucm9vdE5hbWV9L2NvbXBvbmVudC1tYW5hZ2Vycy9tYWluYFxuICAgIF0gPSB0aGlzLm9wdGlvbnMuQ29tcG9uZW50TWFuYWdlcjtcbiAgICB0aGlzLnRlbXBsYXRlKCdNYWluJywgJzxkaXYgLz4nKTtcbiAgICB0aGlzLmhlbHBlcignYWN0aW9uJywgYnVpbGRBY3Rpb24sIHRydWUpO1xuICB9XG5cbiAgdGVtcGxhdGUobmFtZTogc3RyaW5nLCB0ZW1wbGF0ZTogc3RyaW5nKSB7XG4gICAgYXNzZXJ0KFxuICAgICAgbmFtZS5jaGFyQXQoMCkgPT09IG5hbWUuY2hhckF0KDApLnRvVXBwZXJDYXNlKCksXG4gICAgICAndGVtcGxhdGUgbmFtZXMgbXVzdCBzdGFydCB3aXRoIGEgY2FwaXRhbCBsZXR0ZXInXG4gICAgKTtcblxuICAgIGxldCBzcGVjaWZpZXIgPSBgdGVtcGxhdGU6LyR7dGhpcy5yb290TmFtZX0vY29tcG9uZW50cy8ke25hbWV9YDtcbiAgICB0aGlzLm1vZHVsZXNbc3BlY2lmaWVyXSA9IHByZWNvbXBpbGUodGVtcGxhdGUsIHsgbWV0YTogeyBzcGVjaWZpZXIgfSB9KTtcbiAgICB0aGlzLnRlbXBsYXRlc1tzcGVjaWZpZXJdID0gdGVtcGxhdGU7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBjb21wb25lbnQobmFtZTogc3RyaW5nLCBjb21wb25lbnRGYWN0b3J5OiBDb21wb25lbnRGYWN0b3J5KSB7XG4gICAgbGV0IHNwZWNpZmllciA9IGBjb21wb25lbnQ6LyR7dGhpcy5yb290TmFtZX0vY29tcG9uZW50cy8ke25hbWV9YDtcbiAgICB0aGlzLm1vZHVsZXNbc3BlY2lmaWVyXSA9IGNvbXBvbmVudEZhY3Rvcnk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBoZWxwZXIobmFtZTogc3RyaW5nLCBoZWxwZXJGdW5jOiBIZWxwZXJGdW5jdGlvbiwgaXNGYWN0b3J5ID0gZmFsc2UpIHtcbiAgICBsZXQgc3BlY2lmaWVyID0gYGhlbHBlcjovJHt0aGlzLnJvb3ROYW1lfS9jb21wb25lbnRzLyR7bmFtZX1gO1xuICAgIGhlbHBlckZ1bmMuaXNGYWN0b3J5ID0gaXNGYWN0b3J5O1xuICAgIHRoaXMubW9kdWxlc1tzcGVjaWZpZXJdID0gaGVscGVyRnVuYztcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIHByb3RlY3RlZCBidWlsZFJlc29sdmVyKCk6IFJlc29sdmVyIHtcbiAgICBsZXQgcmVzb2x2ZXJDb25maWd1cmF0aW9uID0gdGhpcy5vcHRpb25zLnJlc29sdmVyQ29uZmlndXJhdGlvbiB8fCBkZWZhdWx0UmVzb2x2ZXJDb25maWd1cmF0aW9uO1xuICAgIHJlc29sdmVyQ29uZmlndXJhdGlvbi5hcHAgPSByZXNvbHZlckNvbmZpZ3VyYXRpb24uYXBwIHx8IHtcbiAgICAgIG5hbWU6IHRoaXMucm9vdE5hbWUsXG4gICAgICByb290TmFtZTogdGhpcy5yb290TmFtZSxcbiAgICB9O1xuXG4gICAgbGV0IHJlZ2lzdHJ5ID0gbmV3IEJhc2ljTW9kdWxlUmVnaXN0cnkodGhpcy5tb2R1bGVzKTtcbiAgICByZXR1cm4gbmV3IFJlc29sdmVyKHJlc29sdmVyQ29uZmlndXJhdGlvbiwgcmVnaXN0cnkpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGJ1aWxkUnVudGltZUNvbXBpbGVyTG9hZGVyKCk6IExvYWRlciB7XG4gICAgcmV0dXJuIG5ldyBSdW50aW1lQ29tcGlsZXJMb2FkZXIoKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBidWlsZEJ5dGVjb2RlTG9hZGVyKHJlc29sdmVyOiBSZXNvbHZlcikge1xuICAgIGxldCBkZWxlZ2F0ZSA9IG5ldyBDb21waWxlckRlbGVnYXRlKHJlc29sdmVyKTtcbiAgICBsZXQgY29tcGlsZXIgPSBuZXcgQnVuZGxlQ29tcGlsZXIoZGVsZWdhdGUpO1xuXG4gICAgbGV0IG1haW5Mb2NhdG9yID0gbG9jYXRvckZvcigndGVtcGxhdGU6bWFpblRlbXBsYXRlJywgJ2RlZmF1bHQnKTtcbiAgICBtYWluTG9jYXRvci5tZXRhLm1vZHVsZSA9ICd0ZW1wbGF0ZTptYWluVGVtcGxhdGUnO1xuXG4gICAgbGV0IGJsb2NrID0gSlNPTi5wYXJzZShtYWluVGVtcGxhdGUuYmxvY2spO1xuICAgIGxldCBjb21waWxhYmxlVGVtcGxhdGUgPSBjb21waWxhYmxlKHtcbiAgICAgIGJsb2NrLFxuICAgICAgcmVmZXJyZXI6IG1haW5Mb2NhdG9yLm1ldGEsXG4gICAgfSk7XG5cbiAgICBjb21waWxlci5hZGRDb21waWxhYmxlVGVtcGxhdGUobWFpbkxvY2F0b3IsIGNvbXBpbGFibGVUZW1wbGF0ZSk7XG5cbiAgICBmb3IgKGxldCBtb2R1bGUgaW4gdGhpcy50ZW1wbGF0ZXMpIHtcbiAgICAgIGNvbXBpbGVyLmFkZFRlbXBsYXRlU291cmNlKGxvY2F0b3JGb3IobW9kdWxlLCAnZGVmYXVsdCcpLCB0aGlzLnRlbXBsYXRlc1ttb2R1bGVdKTtcbiAgICB9XG5cbiAgICBsZXQgeyBoZWFwLCBwb29sLCB0YWJsZSB9ID0gY29tcGlsZXIuY29tcGlsZSgpO1xuXG4gICAgbGV0IHJlc29sdmVyVGFibGU6IHVua25vd25bXSA9IFtdO1xuXG4gICAgbGV0IG1ldGE6IERpY3Q8TWV0YWRhdGE+ID0ge307XG5cbiAgICB0YWJsZS52bUhhbmRsZUJ5TW9kdWxlTG9jYXRvci5mb3JFYWNoKCh2bUhhbmRsZSwgbG9jYXRvcikgPT4ge1xuICAgICAgbGV0IGhhbmRsZSA9IHRhYmxlLmJ5TW9kdWxlTG9jYXRvci5nZXQobG9jYXRvcik7XG4gICAgICBsZXQgdGVtcGxhdGUgPSBjb21waWxlci5nZXRUZW1wbGF0ZShsb2NhdG9yKTtcblxuICAgICAgbWV0YVtsb2NhdG9yLm1vZHVsZV0gPSB7XG4gICAgICAgIHY6IHZtSGFuZGxlLFxuICAgICAgICBoOiBoYW5kbGUsXG4gICAgICAgIHRhYmxlOiB0ZW1wbGF0ZS5zeW1ib2xUYWJsZSxcbiAgICAgIH07XG4gICAgfSk7XG5cbiAgICB0YWJsZS5ieUhhbmRsZS5mb3JFYWNoKChsb2NhdG9yLCBoYW5kbGUpID0+IHtcbiAgICAgIGxldCBtb2R1bGUgPSBsb2NhdG9yLm1vZHVsZS5yZXBsYWNlKCd0ZW1wbGF0ZTovJywgJ2NvbXBvbmVudDovJyk7XG4gICAgICBpZiAodGhpcy5tb2R1bGVzW21vZHVsZV0pIHtcbiAgICAgICAgaWYgKG1vZHVsZS5pbmRleE9mKCdoZWxwZXI6JykgPT09IDApIHtcbiAgICAgICAgICBjb25zdCBtb2R1bGVUeXBlID0gKHRoaXMubW9kdWxlc1ttb2R1bGVdIGFzIEhlbHBlckZ1bmN0aW9uKS5pc0ZhY3RvcnkgPyBNb2R1bGVUeXBlcy5IRUxQRVJfRkFDVE9SWSA6IE1vZHVsZVR5cGVzLkhFTFBFUjtcbiAgICAgICAgICByZXNvbHZlclRhYmxlW2hhbmRsZV0gPSBbbW9kdWxlVHlwZSwgdGhpcy5tb2R1bGVzW21vZHVsZV1dO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJlc29sdmVyVGFibGVbaGFuZGxlXSA9IHRoaXMubW9kdWxlc1ttb2R1bGVdO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICBsZXQgYnl0ZWNvZGUgPSBoZWFwLmJ1ZmZlcjtcbiAgICBsZXQgZGF0YSA9IHtcbiAgICAgIHByZWZpeDogJycsXG4gICAgICBtYWluRW50cnk6IHRhYmxlLnZtSGFuZGxlQnlNb2R1bGVMb2NhdG9yLmdldChtYWluTG9jYXRvciksXG4gICAgICBwb29sLFxuICAgICAgdGFibGU6IHJlc29sdmVyVGFibGUsXG4gICAgICBtZXRhLFxuICAgICAgaGVhcDoge1xuICAgICAgICB0YWJsZTogaGVhcC50YWJsZSxcbiAgICAgICAgaGFuZGxlOiBoZWFwLmhhbmRsZSxcbiAgICAgIH0sXG4gICAgfTtcblxuICAgIHJldHVybiBuZXcgQnl0ZWNvZGVMb2FkZXIoeyBieXRlY29kZSwgZGF0YSB9KTtcbiAgfVxuXG4gIHByb3RlY3RlZCBidWlsZExvYWRlcihyZXNvbHZlcik6IExvYWRlciB7XG4gICAgc3dpdGNoICh0aGlzLm9wdGlvbnMubG9hZGVyKSB7XG4gICAgICBjYXNlICdydW50aW1lLWNvbXBpbGVyJzpcbiAgICAgICAgcmV0dXJuIHRoaXMuYnVpbGRSdW50aW1lQ29tcGlsZXJMb2FkZXIoKTtcbiAgICAgIGNhc2UgJ2J5dGVjb2RlJzpcbiAgICAgICAgcmV0dXJuIHRoaXMuYnVpbGRCeXRlY29kZUxvYWRlcihyZXNvbHZlcik7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFVucmVjb2duaXplZCBsb2FkZXIgJHt0aGlzLm9wdGlvbnMubG9hZGVyfWApO1xuICAgIH1cbiAgfVxuXG4gIHJlbmRlclRvU3RyaW5nKGNvbXBvbmVudE5hbWU6IHN0cmluZywgZGF0YTogRGljdDx1bmtub3duPiwgb3B0aW9ucz86IHsgW0lOVEVSTkFMX0RZTkFNSUNfU0NPUEVdOiBEaWN0PHVua25vd24+IH0pOiBQcm9taXNlPHN0cmluZz4ge1xuICAgIGNvbnN0IHJlc29sdmVyID0gdGhpcy5idWlsZFJlc29sdmVyKCk7XG4gICAgbGV0IGxvYWRlciA9IHRoaXMuYnVpbGRMb2FkZXIocmVzb2x2ZXIpO1xuXG4gICAgcmV0dXJuIFNTUkFwcGxpY2F0aW9uLnJlbmRlclRvU3RyaW5nKGNvbXBvbmVudE5hbWUsIGRhdGEsIHtcbiAgICAgIHJvb3ROYW1lOiB0aGlzLnJvb3ROYW1lLFxuICAgICAgcmVzb2x2ZXIsXG4gICAgICBsb2FkZXIsXG4gICAgICByZW5kZXJlcjogbmV3IFN5bmNSZW5kZXJlcigpLFxuICAgICAgLi4ub3B0aW9uc1xuICAgIH0pO1xuICB9XG5cbiAgYXN5bmMgYm9vdCgpOiBQcm9taXNlPFQ+IHtcbiAgICBsZXQgcmVzb2x2ZXIgPSB0aGlzLmJ1aWxkUmVzb2x2ZXIoKTtcbiAgICBsZXQgbG9hZGVyOiBMb2FkZXIgPSB0aGlzLmJ1aWxkTG9hZGVyKHJlc29sdmVyKTtcblxuICAgIGxldCBkb2M6IERvY3VtZW50ID0gKHRoaXMub3B0aW9ucy5kb2N1bWVudCBhcyBEb2N1bWVudCkgfHwgZG9jdW1lbnQ7XG4gICAgbGV0IGVsZW1lbnQgPSBkb2MuYm9keTtcbiAgICBsZXQgYnVpbGRlciA9IG5ldyBET01CdWlsZGVyKHsgZWxlbWVudCB9KTtcbiAgICBsZXQgcmVuZGVyZXIgPSBuZXcgU3luY1JlbmRlcmVyKCk7XG5cbiAgICBsZXQgYXBwID0gbmV3IHRoaXMub3B0aW9ucy5BcHBsaWNhdGlvbkNsYXNzKHtcbiAgICAgIHJlc29sdmVyLFxuICAgICAgYnVpbGRlcixcbiAgICAgIGxvYWRlcixcbiAgICAgIHJlbmRlcmVyLFxuICAgICAgcm9vdE5hbWU6IHRoaXMucm9vdE5hbWUsXG4gICAgICBkb2N1bWVudDogdGhpcy5vcHRpb25zLmRvY3VtZW50LFxuICAgIH0pO1xuXG4gICAgbGV0IHJvb3RFbGVtZW50ID0gZG9jLmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuICAgIGFwcC5yb290RWxlbWVudCA9IHJvb3RFbGVtZW50O1xuICAgIGFwcC5yZW5kZXJDb21wb25lbnQoJ01haW4nLCByb290RWxlbWVudCk7XG4gICAgYXBwLmJvb3QoKTtcblxuICAgIGF3YWl0IGRpZFJlbmRlcihhcHApO1xuXG4gICAgcmV0dXJuIGFwcDtcbiAgfVxufVxuXG5jbGFzcyBDb21waWxlckRlbGVnYXRlIGltcGxlbWVudHMgSUNvbXBpbGVyRGVsZWdhdGU8TW9kdWxlTG9jYXRvcj4ge1xuICBjb25zdHJ1Y3Rvcihwcm90ZWN0ZWQgcmVzb2x2ZXI6IFJlc29sdmVyKSB7fVxuXG4gIGhhc0NvbXBvbmVudEluU2NvcGUobmFtZTogc3RyaW5nLCByZWZlcnJlcjogTW9kdWxlTG9jYXRvcik6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhIXRoaXMucmVzb2x2ZXIuaWRlbnRpZnkoYHRlbXBsYXRlOiR7bmFtZX1gLCByZWZlcnJlci5tb2R1bGUpO1xuICB9XG5cbiAgcmVzb2x2ZUNvbXBvbmVudChuYW1lOiBzdHJpbmcsIHJlZmVycmVyOiBNb2R1bGVMb2NhdG9yKTogTW9kdWxlTG9jYXRvciB7XG4gICAgbGV0IHJlc29sdmVkID0gdGhpcy5yZXNvbHZlci5pZGVudGlmeShgdGVtcGxhdGU6JHtuYW1lfWAsIHJlZmVycmVyLm1vZHVsZSk7XG4gICAgcmV0dXJuIHsgbW9kdWxlOiByZXNvbHZlZCwgbmFtZTogJ2RlZmF1bHQnIH07XG4gIH1cblxuICBnZXRDb21wb25lbnRDYXBhYmlsaXRpZXMoKSB7XG4gICAgcmV0dXJuIENBUEFCSUxJVElFUztcbiAgfVxuXG4gIGhhc0hlbHBlckluU2NvcGUoaGVscGVyTmFtZTogc3RyaW5nLCByZWZlcnJlcjogTW9kdWxlTG9jYXRvcik6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhIXRoaXMucmVzb2x2ZXIuaWRlbnRpZnkoYGhlbHBlcjoke2hlbHBlck5hbWV9YCwgcmVmZXJyZXIubW9kdWxlKTtcbiAgfVxuXG4gIHJlc29sdmVIZWxwZXIoaGVscGVyTmFtZTogc3RyaW5nLCByZWZlcnJlcjogTW9kdWxlTG9jYXRvcik6IE1vZHVsZUxvY2F0b3Ige1xuICAgIGxldCByZXNvbHZlZCA9IHRoaXMucmVzb2x2ZXIuaWRlbnRpZnkoYGhlbHBlcjoke2hlbHBlck5hbWV9YCwgcmVmZXJyZXIubW9kdWxlKTtcbiAgICByZXR1cm4geyBtb2R1bGU6IHJlc29sdmVkLCBuYW1lOiAnZGVmYXVsdCcgfTtcbiAgfVxuXG4gIGhhc1BhcnRpYWxJblNjb3BlKHBhcnRpYWxOYW1lOiBzdHJpbmcsIHJlZmVycmVyOiBNb2R1bGVMb2NhdG9yKTogYm9vbGVhbiB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdNZXRob2Qgbm90IGltcGxlbWVudGVkLicpO1xuICB9XG5cbiAgcmVzb2x2ZVBhcnRpYWwocGFydGlhbE5hbWU6IHN0cmluZywgcmVmZXJyZXI6IE1vZHVsZUxvY2F0b3IpOiBNb2R1bGVMb2NhdG9yIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ01ldGhvZCBub3QgaW1wbGVtZW50ZWQuJyk7XG4gIH1cblxuICBoYXNNb2RpZmllckluU2NvcGUobW9kaWZpZXJOYW1lOiBzdHJpbmcsIHJlZmVycmVyOiBNb2R1bGVMb2NhdG9yKTogYm9vbGVhbiB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdNZXRob2Qgbm90IGltcGxlbWVudGVkLicpO1xuICB9XG5cbiAgcmVzb2x2ZU1vZGlmaWVyKG1vZGlmaWVyTmFtZTogc3RyaW5nLCByZWZlcnJlcjogTW9kdWxlTG9jYXRvcik6IE1vZHVsZUxvY2F0b3Ige1xuICAgIHRocm93IG5ldyBFcnJvcignTWV0aG9kIG5vdCBpbXBsZW1lbnRlZC4nKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBidWlsZEFwcDxUIGV4dGVuZHMgVGVzdEFwcGxpY2F0aW9uPihvcHRpb25zOiBBcHBCdWlsZGVyT3B0aW9uczxUPiA9IHt9KTogQXBwQnVpbGRlcjxUPiB7XG4gIG9wdGlvbnMuYXBwTmFtZSA9IG9wdGlvbnMuYXBwTmFtZSB8fCAndGVzdC1hcHAnO1xuICBvcHRpb25zLmxvYWRlciA9IG9wdGlvbnMubG9hZGVyIHx8ICdydW50aW1lLWNvbXBpbGVyJztcbiAgb3B0aW9ucy5Db21wb25lbnRNYW5hZ2VyID0gb3B0aW9ucy5Db21wb25lbnRNYW5hZ2VyIHx8IENvbXBvbmVudE1hbmFnZXI7XG4gIG9wdGlvbnMuQXBwbGljYXRpb25DbGFzcyA9XG4gICAgb3B0aW9ucy5BcHBsaWNhdGlvbkNsYXNzIHx8IChUZXN0QXBwbGljYXRpb24gYXMgQXBwbGljYXRpb25Db25zdHJ1Y3RvcjxUPik7XG5cbiAgcmV0dXJuIG5ldyBBcHBCdWlsZGVyKG9wdGlvbnMuYXBwTmFtZSwgb3B0aW9ucyk7XG59XG5cbmV4cG9ydCB7IGJ1aWxkQXBwIH07XG4iXX0=

@@ -14,3 +14,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; }

import { precompile } from './compiler';
import Application, { BytecodeLoader, DOMBuilder, RuntimeCompilerLoader, SyncRenderer } from '@glimmer/application';
import Application, { BytecodeLoader, DOMBuilder, RuntimeCompilerLoader, SyncRenderer, INTERNAL_DYNAMIC_SCOPE } from '@glimmer/application';
import { ComponentManager, CAPABILITIES } from '@glimmer/component';

@@ -166,11 +166,7 @@ import { assert } from '@glimmer/util';

AppBuilder.prototype.renderToString = function renderToString(componentName, data) {
AppBuilder.prototype.renderToString = function renderToString(componentName, data, options) {
var resolver = this.buildResolver();
var loader = this.buildLoader(resolver);
return SSRApplication.renderToString(componentName, data, {
rootName: this.rootName,
resolver: resolver,
loader: loader,
renderer: new SyncRenderer()
});
return SSRApplication.renderToString(componentName, data, Object.assign({ rootName: this.rootName, resolver: resolver,
loader: loader, renderer: new SyncRenderer() }, options));
};

@@ -272,2 +268,2 @@

export { buildApp };
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL0BnbGltbWVyL2FwcGxpY2F0aW9uLXRlc3QtaGVscGVycy9zcmMvYXBwLWJ1aWxkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7OztBQUFBLE9BQU8sUUFBUCxJQUFtQixtQkFBbkIsUUFBcUUsbUJBQXJFO0FBRUEsT0FBTyw0QkFBUCxNQUF5QyxrQ0FBekM7QUFDQSxTQUFTLFVBQVQsUUFBMkIsWUFBM0I7QUFDQSxPQUFPLFdBQVAsSUFFRSxjQUZGLEVBR0UsVUFIRixFQUtFLHFCQUxGLEVBTUUsWUFORixRQVFPLHNCQVJQO0FBU0EsU0FBUyxnQkFBVCxFQUEyQixZQUEzQixRQUErQyxvQkFBL0M7QUFDQSxTQUFTLE1BQVQsUUFBdUIsZUFBdkI7QUFDQSxTQUFTLGNBQVQsUUFBc0UsMEJBQXRFO0FBQ0EsU0FBUyxXQUFULEVBQXNCLFlBQXRCLFFBQTBDLHNCQUExQztBQUNBLFNBQVMsVUFBVCxRQUEyQiwwQkFBM0I7QUFHQSxTQUFTLGNBQVQsUUFBK0IsY0FBL0I7QUFFQSxPQUFPLFNBQVAsTUFBc0IsY0FBdEI7QUFhQSxXQUFhLGVBQWI7QUFBQTs7QUFBQTtBQUFBOztBQUFBO0FBQUE7O0FBQUE7QUFBQSxFQUFxQyxXQUFyQztBQVlBLFNBQVMsVUFBVCxDQUFvQixNQUFwQixFQUFvQyxJQUFwQyxFQUFnRDtBQUM5QyxXQUFPO0FBQ0wsY0FBTSxVQUREO0FBRUwsc0JBRks7QUFHTCxrQkFISztBQUlMLGNBQU07QUFDSiwwQkFESTtBQUVKO0FBRkk7QUFKRCxLQUFQO0FBU0Q7O0lBRVksVTtBQU1YLHdCQUFZLElBQVosRUFBMEIsT0FBMUIsRUFBdUQ7QUFBQTs7QUFKdkQsYUFBQSxPQUFBLEdBQXlCLEVBQXpCO0FBQ0EsYUFBQSxTQUFBLEdBQTBCLEVBQTFCO0FBSUUsYUFBSyxRQUFMLEdBQWdCLElBQWhCO0FBQ0EsYUFBSyxPQUFMLEdBQWUsT0FBZjtBQUNBLGFBQUssT0FBTCx5QkFDd0IsS0FB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QjtBQUM1RCxjQUFNLElBQUksS0FBSixDQUFVLHlCQUFWLENBQU47QUFDRCxLOzsrQkFFRCxjLDJCQUFlLFcsRUFBcUIsUSxFQUF1QjtBQUN6RCxjQUFNLElBQUksS0FBSixDQUFVLHlCQUFWLENBQU47QUFDRCxLOzsrQkFFRCxrQiwrQkFBbUIsWSxFQUFzQixRLEVBQXVCO0FBQzlELGNBQU0sSUFBSSxLQUFKLENBQVUseUJBQVYsQ0FBTjtBQUNELEs7OytCQUVELGUsNEJBQWdCLFksRUFBc0IsUSxFQUF1QjtBQUMzRCxjQUFNLElBQUksS0FBSixDQUFVLHlCQUFWLENBQU47QUFDRCxLOzs7OztBQUdILFNBQVMsUUFBVCxHQUErRTtBQUFBLFFBQWxDLE9BQWtDLHVFQUFGLEVBQUU7O0FBQzdFLFlBQVEsT0FBUixHQUFrQixRQUFRLE9BQVIsSUFBbUIsVUFBckM7QUFDQSxZQUFRLE1BQVIsR0FBaUIsUUFBUSxNQUFSLElBQWtCLGtCQUFuQztBQUNBLFlBQVEsZ0JBQVIsR0FBMkIsUUFBUSxnQkFBUixJQUE0QixnQkFBdkQ7QUFDQSxZQUFRLGdCQUFSLEdBQ0UsUUFBUSxnQkFBUixJQUE2QixlQUQvQjtBQUdBLFdBQU8sSUFBSSxVQUFKLENBQWUsUUFBUSxPQUF2QixFQUFnQyxPQUFoQyxDQUFQO0FBQ0Q7QUFFRCxTQUFTLFFBQVQiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUmVzb2x2ZXIsIHsgQmFzaWNNb2R1bGVSZWdpc3RyeSwgUmVzb2x2ZXJDb25maWd1cmF0aW9uIH0gZnJvbSAnQGdsaW1tZXIvcmVzb2x2ZXInO1xuaW1wb3J0IHsgRGljdCwgTW9kdWxlTG9jYXRvciwgVGVtcGxhdGVMb2NhdG9yIH0gZnJvbSAnQGdsaW1tZXIvaW50ZXJmYWNlcyc7XG5pbXBvcnQgZGVmYXVsdFJlc29sdmVyQ29uZmlndXJhdGlvbiBmcm9tICcuL2RlZmF1bHQtcmVzb2x2ZXItY29uZmlndXJhdGlvbic7XG5pbXBvcnQgeyBwcmVjb21waWxlIH0gZnJvbSAnLi9jb21waWxlcic7XG5pbXBvcnQgQXBwbGljYXRpb24sIHtcbiAgQXBwbGljYXRpb25Db25zdHJ1Y3RvcixcbiAgQnl0ZWNvZGVMb2FkZXIsXG4gIERPTUJ1aWxkZXIsXG4gIExvYWRlcixcbiAgUnVudGltZUNvbXBpbGVyTG9hZGVyLFxuICBTeW5jUmVuZGVyZXIsXG4gIE1vZHVsZVR5cGVzXG59IGZyb20gJ0BnbGltbWVyL2FwcGxpY2F0aW9uJztcbmltcG9ydCB7IENvbXBvbmVudE1hbmFnZXIsIENBUEFCSUxJVElFUyB9IGZyb20gJ0BnbGltbWVyL2NvbXBvbmVudCc7XG5pbXBvcnQgeyBhc3NlcnQgfSBmcm9tICdAZ2xpbW1lci91dGlsJztcbmltcG9ydCB7IEJ1bmRsZUNvbXBpbGVyLCBDb21waWxlckRlbGVnYXRlIGFzIElDb21waWxlckRlbGVnYXRlIH0gZnJvbSAnQGdsaW1tZXIvYnVuZGxlLWNvbXBpbGVyJztcbmltcG9ydCB7IGJ1aWxkQWN0aW9uLCBtYWluVGVtcGxhdGUgfSBmcm9tICdAZ2xpbW1lci9hcHBsaWNhdGlvbic7XG5pbXBvcnQgeyBjb21waWxhYmxlIH0gZnJvbSAnQGdsaW1tZXIvb3Bjb2RlLWNvbXBpbGVyJztcbmltcG9ydCB7IE1ldGFkYXRhIH0gZnJvbSAnLi4vLi4vYXBwbGljYXRpb24vc3JjL2xvYWRlcnMvYnl0ZWNvZGUvbG9hZGVyJztcbmltcG9ydCB7IFNpbXBsZURvY3VtZW50IH0gZnJvbSAnQHNpbXBsZS1kb20vaW50ZXJmYWNlJztcbmltcG9ydCB7IFNTUkFwcGxpY2F0aW9uIH0gZnJvbSAnQGdsaW1tZXIvc3NyJztcblxuaW1wb3J0IGRpZFJlbmRlciBmcm9tICcuL2RpZC1yZW5kZXInO1xuXG5leHBvcnQgaW50ZXJmYWNlIEFwcEJ1aWxkZXJPcHRpb25zPFQ+IHtcbiAgYXBwTmFtZT86IHN0cmluZztcbiAgbG9hZGVyPzogc3RyaW5nO1xuICBBcHBsaWNhdGlvbkNsYXNzPzogQXBwbGljYXRpb25Db25zdHJ1Y3RvcjxUPjtcbiAgQ29tcG9uZW50TWFuYWdlcj86IGFueTsgLy8gVE9ETyAtIHR5cGluZ1xuICByZXNvbHZlckNvbmZpZ3VyYXRpb24/OiBSZXNvbHZlckNvbmZpZ3VyYXRpb247XG4gIGRvY3VtZW50PzogU2ltcGxlRG9jdW1lbnQ7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ29tcG9uZW50RmFjdG9yeSB7fVxuXG5leHBvcnQgY2xhc3MgVGVzdEFwcGxpY2F0aW9uIGV4dGVuZHMgQXBwbGljYXRpb24ge1xuICByb290RWxlbWVudDogRWxlbWVudDtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBBcHBCdWlsZGVyVGVtcGxhdGVNZXRhIHtcbiAgc3BlY2lmaWVyOiBzdHJpbmc7XG59XG5cbmludGVyZmFjZSBIZWxwZXJGdW5jdGlvbiBleHRlbmRzIEZ1bmN0aW9uIHtcbiAgaXNGYWN0b3J5PzogYm9vbGVhbjtcbn1cblxuZnVuY3Rpb24gbG9jYXRvckZvcihtb2R1bGU6IHN0cmluZywgbmFtZTogc3RyaW5nKTogVGVtcGxhdGVMb2NhdG9yPE1vZHVsZUxvY2F0b3I+IHtcbiAgcmV0dXJuIHtcbiAgICBraW5kOiAndGVtcGxhdGUnLFxuICAgIG1vZHVsZSxcbiAgICBuYW1lLFxuICAgIG1ldGE6IHtcbiAgICAgIG1vZHVsZSxcbiAgICAgIG5hbWUsXG4gICAgfSxcbiAgfTtcbn1cblxuZXhwb3J0IGNsYXNzIEFwcEJ1aWxkZXI8VCBleHRlbmRzIFRlc3RBcHBsaWNhdGlvbj4ge1xuICByb290TmFtZTogc3RyaW5nO1xuICBtb2R1bGVzOiBEaWN0PHVua25vd24+ID0ge307XG4gIHRlbXBsYXRlczogRGljdDxzdHJpbmc+ID0ge307XG4gIG9wdGlvbnM6IEFwcEJ1aWxkZXJPcHRpb25zPFQ+O1xuXG4gIGNvbnN0cnVjdG9yKG5hbWU6IHN0cmluZywgb3B0aW9uczogQXBwQnVpbGRlck9wdGlvbnM8VD4pIHtcbiAgICB0aGlzLnJvb3ROYW1lID0gbmFtZTtcbiAgICB0aGlzLm9wdGlvbnMgPSBvcHRpb25zO1xuICAgIHRoaXMubW9kdWxlc1tcbiAgICAgIGBjb21wb25lbnQtbWFuYWdlcjovJHt0aGlzLnJvb3ROYW1lfS9jb21wb25lbnQtbWFuYWdlcnMvbWFpbmBcbiAgICBdID0gdGhpcy5vcHRpb25zLkNvbXBvbmVudE1hbmFnZXI7XG4gICAgdGhpcy50ZW1wbGF0ZSgnTWFpbicsICc8ZGl2IC8+Jyk7XG4gICAgdGhpcy5oZWxwZXIoJ2FjdGlvbicsIGJ1aWxkQWN0aW9uLCB0cnVlKTtcbiAgfVxuXG4gIHRlbXBsYXRlKG5hbWU6IHN0cmluZywgdGVtcGxhdGU6IHN0cmluZykge1xuICAgIGFzc2VydChcbiAgICAgIG5hbWUuY2hhckF0KDApID09PSBuYW1lLmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpLFxuICAgICAgJ3RlbXBsYXRlIG5hbWVzIG11c3Qgc3RhcnQgd2l0aCBhIGNhcGl0YWwgbGV0dGVyJ1xuICAgICk7XG5cbiAgICBsZXQgc3BlY2lmaWVyID0gYHRlbXBsYXRlOi8ke3RoaXMucm9vdE5hbWV9L2NvbXBvbmVudHMvJHtuYW1lfWA7XG4gICAgdGhpcy5tb2R1bGVzW3NwZWNpZmllcl0gPSBwcmVjb21waWxlKHRlbXBsYXRlLCB7IG1ldGE6IHsgc3BlY2lmaWVyIH0gfSk7XG4gICAgdGhpcy50ZW1wbGF0ZXNbc3BlY2lmaWVyXSA9IHRlbXBsYXRlO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgY29tcG9uZW50KG5hbWU6IHN0cmluZywgY29tcG9uZW50RmFjdG9yeTogQ29tcG9uZW50RmFjdG9yeSkge1xuICAgIGxldCBzcGVjaWZpZXIgPSBgY29tcG9uZW50Oi8ke3RoaXMucm9vdE5hbWV9L2NvbXBvbmVudHMvJHtuYW1lfWA7XG4gICAgdGhpcy5tb2R1bGVzW3NwZWNpZmllcl0gPSBjb21wb25lbnRGYWN0b3J5O1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgaGVscGVyKG5hbWU6IHN0cmluZywgaGVscGVyRnVuYzogSGVscGVyRnVuY3Rpb24sIGlzRmFjdG9yeSA9IGZhbHNlKSB7XG4gICAgbGV0IHNwZWNpZmllciA9IGBoZWxwZXI6LyR7dGhpcy5yb290TmFtZX0vY29tcG9uZW50cy8ke25hbWV9YDtcbiAgICBoZWxwZXJGdW5jLmlzRmFjdG9yeSA9IGlzRmFjdG9yeTtcbiAgICB0aGlzLm1vZHVsZXNbc3BlY2lmaWVyXSA9IGhlbHBlckZ1bmM7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBwcm90ZWN0ZWQgYnVpbGRSZXNvbHZlcigpOiBSZXNvbHZlciB7XG4gICAgbGV0IHJlc29sdmVyQ29uZmlndXJhdGlvbiA9IHRoaXMub3B0aW9ucy5yZXNvbHZlckNvbmZpZ3VyYXRpb24gfHwgZGVmYXVsdFJlc29sdmVyQ29uZmlndXJhdGlvbjtcbiAgICByZXNvbHZlckNvbmZpZ3VyYXRpb24uYXBwID0gcmVzb2x2ZXJDb25maWd1cmF0aW9uLmFwcCB8fCB7XG4gICAgICBuYW1lOiB0aGlzLnJvb3ROYW1lLFxuICAgICAgcm9vdE5hbWU6IHRoaXMucm9vdE5hbWUsXG4gICAgfTtcblxuICAgIGxldCByZWdpc3RyeSA9IG5ldyBCYXNpY01vZHVsZVJlZ2lzdHJ5KHRoaXMubW9kdWxlcyk7XG4gICAgcmV0dXJuIG5ldyBSZXNvbHZlcihyZXNvbHZlckNvbmZpZ3VyYXRpb24sIHJlZ2lzdHJ5KTtcbiAgfVxuXG4gIHByb3RlY3RlZCBidWlsZFJ1bnRpbWVDb21waWxlckxvYWRlcigpOiBMb2FkZXIge1xuICAgIHJldHVybiBuZXcgUnVudGltZUNvbXBpbGVyTG9hZGVyKCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgYnVpbGRCeXRlY29kZUxvYWRlcihyZXNvbHZlcjogUmVzb2x2ZXIpIHtcbiAgICBsZXQgZGVsZWdhdGUgPSBuZXcgQ29tcGlsZXJEZWxlZ2F0ZShyZXNvbHZlcik7XG4gICAgbGV0IGNvbXBpbGVyID0gbmV3IEJ1bmRsZUNvbXBpbGVyKGRlbGVnYXRlKTtcblxuICAgIGxldCBtYWluTG9jYXRvciA9IGxvY2F0b3JGb3IoJ3RlbXBsYXRlOm1haW5UZW1wbGF0ZScsICdkZWZhdWx0Jyk7XG4gICAgbWFpbkxvY2F0b3IubWV0YS5tb2R1bGUgPSAndGVtcGxhdGU6bWFpblRlbXBsYXRlJztcblxuICAgIGxldCBibG9jayA9IEpTT04ucGFyc2UobWFpblRlbXBsYXRlLmJsb2NrKTtcbiAgICBsZXQgY29tcGlsYWJsZVRlbXBsYXRlID0gY29tcGlsYWJsZSh7XG4gICAgICBibG9jayxcbiAgICAgIHJlZmVycmVyOiBtYWluTG9jYXRvci5tZXRhLFxuICAgIH0pO1xuXG4gICAgY29tcGlsZXIuYWRkQ29tcGlsYWJsZVRlbXBsYXRlKG1haW5Mb2NhdG9yLCBjb21waWxhYmxlVGVtcGxhdGUpO1xuXG4gICAgZm9yIChsZXQgbW9kdWxlIGluIHRoaXMudGVtcGxhdGVzKSB7XG4gICAgICBjb21waWxlci5hZGRUZW1wbGF0ZVNvdXJjZShsb2NhdG9yRm9yKG1vZHVsZSwgJ2RlZmF1bHQnKSwgdGhpcy50ZW1wbGF0ZXNbbW9kdWxlXSk7XG4gICAgfVxuXG4gICAgbGV0IHsgaGVhcCwgcG9vbCwgdGFibGUgfSA9IGNvbXBpbGVyLmNvbXBpbGUoKTtcblxuICAgIGxldCByZXNvbHZlclRhYmxlOiB1bmtub3duW10gPSBbXTtcblxuICAgIGxldCBtZXRhOiBEaWN0PE1ldGFkYXRhPiA9IHt9O1xuXG4gICAgdGFibGUudm1IYW5kbGVCeU1vZHVsZUxvY2F0b3IuZm9yRWFjaCgodm1IYW5kbGUsIGxvY2F0b3IpID0+IHtcbiAgICAgIGxldCBoYW5kbGUgPSB0YWJsZS5ieU1vZHVsZUxvY2F0b3IuZ2V0KGxvY2F0b3IpO1xuICAgICAgbGV0IHRlbXBsYXRlID0gY29tcGlsZXIuZ2V0VGVtcGxhdGUobG9jYXRvcik7XG5cbiAgICAgIG1ldGFbbG9jYXRvci5tb2R1bGVdID0ge1xuICAgICAgICB2OiB2bUhhbmRsZSxcbiAgICAgICAgaDogaGFuZGxlLFxuICAgICAgICB0YWJsZTogdGVtcGxhdGUuc3ltYm9sVGFibGUsXG4gICAgICB9O1xuICAgIH0pO1xuXG4gICAgdGFibGUuYnlIYW5kbGUuZm9yRWFjaCgobG9jYXRvciwgaGFuZGxlKSA9PiB7XG4gICAgICBsZXQgbW9kdWxlID0gbG9jYXRvci5tb2R1bGUucmVwbGFjZSgndGVtcGxhdGU6LycsICdjb21wb25lbnQ6LycpO1xuICAgICAgaWYgKHRoaXMubW9kdWxlc1ttb2R1bGVdKSB7XG4gICAgICAgIGlmIChtb2R1bGUuaW5kZXhPZignaGVscGVyOicpID09PSAwKSB7XG4gICAgICAgICAgY29uc3QgbW9kdWxlVHlwZSA9ICh0aGlzLm1vZHVsZXNbbW9kdWxlXSBhcyBIZWxwZXJGdW5jdGlvbikuaXNGYWN0b3J5ID8gTW9kdWxlVHlwZXMuSEVMUEVSX0ZBQ1RPUlkgOiBNb2R1bGVUeXBlcy5IRUxQRVI7XG4gICAgICAgICAgcmVzb2x2ZXJUYWJsZVtoYW5kbGVdID0gW21vZHVsZVR5cGUsIHRoaXMubW9kdWxlc1ttb2R1bGVdXTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZXNvbHZlclRhYmxlW2hhbmRsZV0gPSB0aGlzLm1vZHVsZXNbbW9kdWxlXTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pO1xuXG4gICAgbGV0IGJ5dGVjb2RlID0gaGVhcC5idWZmZXI7XG4gICAgbGV0IGRhdGEgPSB7XG4gICAgICBwcmVmaXg6ICcnLFxuICAgICAgbWFpbkVudHJ5OiB0YWJsZS52bUhhbmRsZUJ5TW9kdWxlTG9jYXRvci5nZXQobWFpbkxvY2F0b3IpLFxuICAgICAgcG9vbCxcbiAgICAgIHRhYmxlOiByZXNvbHZlclRhYmxlLFxuICAgICAgbWV0YSxcbiAgICAgIGhlYXA6IHtcbiAgICAgICAgdGFibGU6IGhlYXAudGFibGUsXG4gICAgICAgIGhhbmRsZTogaGVhcC5oYW5kbGUsXG4gICAgICB9LFxuICAgIH07XG5cbiAgICByZXR1cm4gbmV3IEJ5dGVjb2RlTG9hZGVyKHsgYnl0ZWNvZGUsIGRhdGEgfSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgYnVpbGRMb2FkZXIocmVzb2x2ZXIpOiBMb2FkZXIge1xuICAgIHN3aXRjaCAodGhpcy5vcHRpb25zLmxvYWRlcikge1xuICAgICAgY2FzZSAncnVudGltZS1jb21waWxlcic6XG4gICAgICAgIHJldHVybiB0aGlzLmJ1aWxkUnVudGltZUNvbXBpbGVyTG9hZGVyKCk7XG4gICAgICBjYXNlICdieXRlY29kZSc6XG4gICAgICAgIHJldHVybiB0aGlzLmJ1aWxkQnl0ZWNvZGVMb2FkZXIocmVzb2x2ZXIpO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBVbnJlY29nbml6ZWQgbG9hZGVyICR7dGhpcy5vcHRpb25zLmxvYWRlcn1gKTtcbiAgICB9XG4gIH1cblxuICByZW5kZXJUb1N0cmluZyhjb21wb25lbnROYW1lOiBzdHJpbmcsIGRhdGE6IERpY3Q8dW5rbm93bj4pOiBQcm9taXNlPHN0cmluZz4ge1xuICAgIGNvbnN0IHJlc29sdmVyID0gdGhpcy5idWlsZFJlc29sdmVyKCk7XG4gICAgbGV0IGxvYWRlciA9IHRoaXMuYnVpbGRMb2FkZXIocmVzb2x2ZXIpO1xuXG4gICAgcmV0dXJuIFNTUkFwcGxpY2F0aW9uLnJlbmRlclRvU3RyaW5nKGNvbXBvbmVudE5hbWUsIGRhdGEsIHtcbiAgICAgIHJvb3ROYW1lOiB0aGlzLnJvb3ROYW1lLFxuICAgICAgcmVzb2x2ZXIsXG4gICAgICBsb2FkZXIsXG4gICAgICByZW5kZXJlcjogbmV3IFN5bmNSZW5kZXJlcigpXG4gICAgfSk7XG4gIH1cblxuICBhc3luYyBib290KCk6IFByb21pc2U8VD4ge1xuICAgIGxldCByZXNvbHZlciA9IHRoaXMuYnVpbGRSZXNvbHZlcigpO1xuICAgIGxldCBsb2FkZXI6IExvYWRlciA9IHRoaXMuYnVpbGRMb2FkZXIocmVzb2x2ZXIpO1xuXG4gICAgbGV0IGRvYzogRG9jdW1lbnQgPSAodGhpcy5vcHRpb25zLmRvY3VtZW50IGFzIERvY3VtZW50KSB8fCBkb2N1bWVudDtcbiAgICBsZXQgZWxlbWVudCA9IGRvYy5ib2R5O1xuICAgIGxldCBidWlsZGVyID0gbmV3IERPTUJ1aWxkZXIoeyBlbGVtZW50IH0pO1xuICAgIGxldCByZW5kZXJlciA9IG5ldyBTeW5jUmVuZGVyZXIoKTtcblxuICAgIGxldCBhcHAgPSBuZXcgdGhpcy5vcHRpb25zLkFwcGxpY2F0aW9uQ2xhc3Moe1xuICAgICAgcmVzb2x2ZXIsXG4gICAgICBidWlsZGVyLFxuICAgICAgbG9hZGVyLFxuICAgICAgcmVuZGVyZXIsXG4gICAgICByb290TmFtZTogdGhpcy5yb290TmFtZSxcbiAgICAgIGRvY3VtZW50OiB0aGlzLm9wdGlvbnMuZG9jdW1lbnQsXG4gICAgfSk7XG5cbiAgICBsZXQgcm9vdEVsZW1lbnQgPSBkb2MuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG4gICAgYXBwLnJvb3RFbGVtZW50ID0gcm9vdEVsZW1lbnQ7XG4gICAgYXBwLnJlbmRlckNvbXBvbmVudCgnTWFpbicsIHJvb3RFbGVtZW50KTtcbiAgICBhcHAuYm9vdCgpO1xuXG4gICAgYXdhaXQgZGlkUmVuZGVyKGFwcCk7XG5cbiAgICByZXR1cm4gYXBwO1xuICB9XG59XG5cbmNsYXNzIENvbXBpbGVyRGVsZWdhdGUgaW1wbGVtZW50cyBJQ29tcGlsZXJEZWxlZ2F0ZTxNb2R1bGVMb2NhdG9yPiB7XG4gIGNvbnN0cnVjdG9yKHByb3RlY3RlZCByZXNvbHZlcjogUmVzb2x2ZXIpIHt9XG5cbiAgaGFzQ29tcG9uZW50SW5TY29wZShuYW1lOiBzdHJpbmcsIHJlZmVycmVyOiBNb2R1bGVMb2NhdG9yKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICEhdGhpcy5yZXNvbHZlci5pZGVudGlmeShgdGVtcGxhdGU6JHtuYW1lfWAsIHJlZmVycmVyLm1vZHVsZSk7XG4gIH1cblxuICByZXNvbHZlQ29tcG9uZW50KG5hbWU6IHN0cmluZywgcmVmZXJyZXI6IE1vZHVsZUxvY2F0b3IpOiBNb2R1bGVMb2NhdG9yIHtcbiAgICBsZXQgcmVzb2x2ZWQgPSB0aGlzLnJlc29sdmVyLmlkZW50aWZ5KGB0ZW1wbGF0ZToke25hbWV9YCwgcmVmZXJyZXIubW9kdWxlKTtcbiAgICByZXR1cm4geyBtb2R1bGU6IHJlc29sdmVkLCBuYW1lOiAnZGVmYXVsdCcgfTtcbiAgfVxuXG4gIGdldENvbXBvbmVudENhcGFiaWxpdGllcygpIHtcbiAgICByZXR1cm4gQ0FQQUJJTElUSUVTO1xuICB9XG5cbiAgaGFzSGVscGVySW5TY29wZShoZWxwZXJOYW1lOiBzdHJpbmcsIHJlZmVycmVyOiBNb2R1bGVMb2NhdG9yKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICEhdGhpcy5yZXNvbHZlci5pZGVudGlmeShgaGVscGVyOiR7aGVscGVyTmFtZX1gLCByZWZlcnJlci5tb2R1bGUpO1xuICB9XG5cbiAgcmVzb2x2ZUhlbHBlcihoZWxwZXJOYW1lOiBzdHJpbmcsIHJlZmVycmVyOiBNb2R1bGVMb2NhdG9yKTogTW9kdWxlTG9jYXRvciB7XG4gICAgbGV0IHJlc29sdmVkID0gdGhpcy5yZXNvbHZlci5pZGVudGlmeShgaGVscGVyOiR7aGVscGVyTmFtZX1gLCByZWZlcnJlci5tb2R1bGUpO1xuICAgIHJldHVybiB7IG1vZHVsZTogcmVzb2x2ZWQsIG5hbWU6ICdkZWZhdWx0JyB9O1xuICB9XG5cbiAgaGFzUGFydGlhbEluU2NvcGUocGFydGlhbE5hbWU6IHN0cmluZywgcmVmZXJyZXI6IE1vZHVsZUxvY2F0b3IpOiBib29sZWFuIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ01ldGhvZCBub3QgaW1wbGVtZW50ZWQuJyk7XG4gIH1cblxuICByZXNvbHZlUGFydGlhbChwYXJ0aWFsTmFtZTogc3RyaW5nLCByZWZlcnJlcjogTW9kdWxlTG9jYXRvcik6IE1vZHVsZUxvY2F0b3Ige1xuICAgIHRocm93IG5ldyBFcnJvcignTWV0aG9kIG5vdCBpbXBsZW1lbnRlZC4nKTtcbiAgfVxuXG4gIGhhc01vZGlmaWVySW5TY29wZShtb2RpZmllck5hbWU6IHN0cmluZywgcmVmZXJyZXI6IE1vZHVsZUxvY2F0b3IpOiBib29sZWFuIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ01ldGhvZCBub3QgaW1wbGVtZW50ZWQuJyk7XG4gIH1cblxuICByZXNvbHZlTW9kaWZpZXIobW9kaWZpZXJOYW1lOiBzdHJpbmcsIHJlZmVycmVyOiBNb2R1bGVMb2NhdG9yKTogTW9kdWxlTG9jYXRvciB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdNZXRob2Qgbm90IGltcGxlbWVudGVkLicpO1xuICB9XG59XG5cbmZ1bmN0aW9uIGJ1aWxkQXBwPFQgZXh0ZW5kcyBUZXN0QXBwbGljYXRpb24+KG9wdGlvbnM6IEFwcEJ1aWxkZXJPcHRpb25zPFQ+ID0ge30pOiBBcHBCdWlsZGVyPFQ+IHtcbiAgb3B0aW9ucy5hcHBOYW1lID0gb3B0aW9ucy5hcHBOYW1lIHx8ICd0ZXN0LWFwcCc7XG4gIG9wdGlvbnMubG9hZGVyID0gb3B0aW9ucy5sb2FkZXIgfHwgJ3J1bnRpbWUtY29tcGlsZXInO1xuICBvcHRpb25zLkNvbXBvbmVudE1hbmFnZXIgPSBvcHRpb25zLkNvbXBvbmVudE1hbmFnZXIgfHwgQ29tcG9uZW50TWFuYWdlcjtcbiAgb3B0aW9ucy5BcHBsaWNhdGlvbkNsYXNzID1cbiAgICBvcHRpb25zLkFwcGxpY2F0aW9uQ2xhc3MgfHwgKFRlc3RBcHBsaWNhdGlvbiBhcyBBcHBsaWNhdGlvbkNvbnN0cnVjdG9yPFQ+KTtcblxuICByZXR1cm4gbmV3IEFwcEJ1aWxkZXIob3B0aW9ucy5hcHBOYW1lLCBvcHRpb25zKTtcbn1cblxuZXhwb3J0IHsgYnVpbGRBcHAgfTtcbiJdLCJzb3VyY2VSb290IjoiIn0=
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL0BnbGltbWVyL2FwcGxpY2F0aW9uLXRlc3QtaGVscGVycy9zcmMvYXBwLWJ1aWxkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7OztBQUFBLE9BQU8sUUFBUCxJQUFtQixtQkFBbkIsUUFBcUUsbUJBQXJFO0FBRUEsT0FBTyw0QkFBUCxNQUF5QyxrQ0FBekM7QUFDQSxTQUFTLFVBQVQsUUFBMkIsWUFBM0I7QUFDQSxPQUFPLFdBQVAsSUFFRSxjQUZGLEVBR0UsVUFIRixFQUtFLHFCQUxGLEVBTUUsWUFORixFQVFFLHNCQVJGLFFBU08sc0JBVFA7QUFVQSxTQUFTLGdCQUFULEVBQTJCLFlBQTNCLFFBQStDLG9CQUEvQztBQUNBLFNBQVMsTUFBVCxRQUF1QixlQUF2QjtBQUNBLFNBQVMsY0FBVCxRQUFzRSwwQkFBdEU7QUFDQSxTQUFTLFdBQVQsRUFBc0IsWUFBdEIsUUFBMEMsc0JBQTFDO0FBQ0EsU0FBUyxVQUFULFFBQTJCLDBCQUEzQjtBQUdBLFNBQVMsY0FBVCxRQUErQixjQUEvQjtBQUVBLE9BQU8sU0FBUCxNQUFzQixjQUF0QjtBQWFBLFdBQWEsZUFBYjtBQUFBOztBQUFBO0FBQUE7O0FBQUE7QUFBQTs7QUFBQTtBQUFBLEVBQXFDLFdBQXJDO0FBWUEsU0FBUyxVQUFULENBQW9CLE1BQXBCLEVBQW9DLElBQXBDLEVBQWdEO0FBQzlDLFdBQU87QUFDTCxjQUFNLFVBREQ7QUFFTCxzQkFGSztBQUdMLGtCQUhLO0FBSUwsY0FBTTtBQUNKLDBCQURJO0FBRUo7QUFGSTtBQUpELEtBQVA7QUFTRDs7SUFFWSxVO0FBTVgsd0JBQVksSUFBWixFQUEwQixPQUExQixFQUF1RDtBQUFBOztBQUp2RCxhQUFBLE9BQUEsR0FBeUIsRUFBekI7QUFDQSxhQUFBLFNBQUEsR0FBMEIsRUFBMUI7QUFJRSxhQUFLLFFBQUwsR0FBZ0IsSUFBaEI7QUFDQSxhQUFLLE9BQUwsR0FBZSxPQUFmO0FBQ0EsYUFBSyxPQUFM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U0FBMUIsRUFBUDtBQUNELEs7OytCQUVELGlCLDhCQUFrQixXLEVBQXFCLFEsRUFBdUI7QUFDNUQsY0FBTSxJQUFJLEtBQUosQ0FBVSx5QkFBVixDQUFOO0FBQ0QsSzs7K0JBRUQsYywyQkFBZSxXLEVBQXFCLFEsRUFBdUI7QUFDekQsY0FBTSxJQUFJLEtBQUosQ0FBVSx5QkFBVixDQUFOO0FBQ0QsSzs7K0JBRUQsa0IsK0JBQW1CLFksRUFBc0IsUSxFQUF1QjtBQUM5RCxjQUFNLElBQUksS0FBSixDQUFVLHlCQUFWLENBQU47QUFDRCxLOzsrQkFFRCxlLDRCQUFnQixZLEVBQXNCLFEsRUFBdUI7QUFDM0QsY0FBTSxJQUFJLEtBQUosQ0FBVSx5QkFBVixDQUFOO0FBQ0QsSzs7Ozs7QUFHSCxTQUFTLFFBQVQsR0FBK0U7QUFBQSxRQUFsQyxPQUFrQyx1RUFBRixFQUFFOztBQUM3RSxZQUFRLE9BQVIsR0FBa0IsUUFBUSxPQUFSLElBQW1CLFVBQXJDO0FBQ0EsWUFBUSxNQUFSLEdBQWlCLFFBQVEsTUFBUixJQUFrQixrQkFBbkM7QUFDQSxZQUFRLGdCQUFSLEdBQTJCLFFBQVEsZ0JBQVIsSUFBNEIsZ0JBQXZEO0FBQ0EsWUFBUSxnQkFBUixHQUNFLFFBQVEsZ0JBQVIsSUFBNkIsZUFEL0I7QUFHQSxXQUFPLElBQUksVUFBSixDQUFlLFFBQVEsT0FBdkIsRUFBZ0MsT0FBaEMsQ0FBUDtBQUNEO0FBRUQsU0FBUyxRQUFUIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJlc29sdmVyLCB7IEJhc2ljTW9kdWxlUmVnaXN0cnksIFJlc29sdmVyQ29uZmlndXJhdGlvbiB9IGZyb20gJ0BnbGltbWVyL3Jlc29sdmVyJztcbmltcG9ydCB7IERpY3QsIE1vZHVsZUxvY2F0b3IsIFRlbXBsYXRlTG9jYXRvciB9IGZyb20gJ0BnbGltbWVyL2ludGVyZmFjZXMnO1xuaW1wb3J0IGRlZmF1bHRSZXNvbHZlckNvbmZpZ3VyYXRpb24gZnJvbSAnLi9kZWZhdWx0LXJlc29sdmVyLWNvbmZpZ3VyYXRpb24nO1xuaW1wb3J0IHsgcHJlY29tcGlsZSB9IGZyb20gJy4vY29tcGlsZXInO1xuaW1wb3J0IEFwcGxpY2F0aW9uLCB7XG4gIEFwcGxpY2F0aW9uQ29uc3RydWN0b3IsXG4gIEJ5dGVjb2RlTG9hZGVyLFxuICBET01CdWlsZGVyLFxuICBMb2FkZXIsXG4gIFJ1bnRpbWVDb21waWxlckxvYWRlcixcbiAgU3luY1JlbmRlcmVyLFxuICBNb2R1bGVUeXBlcyxcbiAgSU5URVJOQUxfRFlOQU1JQ19TQ09QRVxufSBmcm9tICdAZ2xpbW1lci9hcHBsaWNhdGlvbic7XG5pbXBvcnQgeyBDb21wb25lbnRNYW5hZ2VyLCBDQVBBQklMSVRJRVMgfSBmcm9tICdAZ2xpbW1lci9jb21wb25lbnQnO1xuaW1wb3J0IHsgYXNzZXJ0IH0gZnJvbSAnQGdsaW1tZXIvdXRpbCc7XG5pbXBvcnQgeyBCdW5kbGVDb21waWxlciwgQ29tcGlsZXJEZWxlZ2F0ZSBhcyBJQ29tcGlsZXJEZWxlZ2F0ZSB9IGZyb20gJ0BnbGltbWVyL2J1bmRsZS1jb21waWxlcic7XG5pbXBvcnQgeyBidWlsZEFjdGlvbiwgbWFpblRlbXBsYXRlIH0gZnJvbSAnQGdsaW1tZXIvYXBwbGljYXRpb24nO1xuaW1wb3J0IHsgY29tcGlsYWJsZSB9IGZyb20gJ0BnbGltbWVyL29wY29kZS1jb21waWxlcic7XG5pbXBvcnQgeyBNZXRhZGF0YSB9IGZyb20gJy4uLy4uL2FwcGxpY2F0aW9uL3NyYy9sb2FkZXJzL2J5dGVjb2RlL2xvYWRlcic7XG5pbXBvcnQgeyBTaW1wbGVEb2N1bWVudCB9IGZyb20gJ0BzaW1wbGUtZG9tL2ludGVyZmFjZSc7XG5pbXBvcnQgeyBTU1JBcHBsaWNhdGlvbiB9IGZyb20gJ0BnbGltbWVyL3Nzcic7XG5cbmltcG9ydCBkaWRSZW5kZXIgZnJvbSAnLi9kaWQtcmVuZGVyJztcblxuZXhwb3J0IGludGVyZmFjZSBBcHBCdWlsZGVyT3B0aW9uczxUPiB7XG4gIGFwcE5hbWU/OiBzdHJpbmc7XG4gIGxvYWRlcj86IHN0cmluZztcbiAgQXBwbGljYXRpb25DbGFzcz86IEFwcGxpY2F0aW9uQ29uc3RydWN0b3I8VD47XG4gIENvbXBvbmVudE1hbmFnZXI/OiBhbnk7IC8vIFRPRE8gLSB0eXBpbmdcbiAgcmVzb2x2ZXJDb25maWd1cmF0aW9uPzogUmVzb2x2ZXJDb25maWd1cmF0aW9uO1xuICBkb2N1bWVudD86IFNpbXBsZURvY3VtZW50O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIENvbXBvbmVudEZhY3Rvcnkge31cblxuZXhwb3J0IGNsYXNzIFRlc3RBcHBsaWNhdGlvbiBleHRlbmRzIEFwcGxpY2F0aW9uIHtcbiAgcm9vdEVsZW1lbnQ6IEVsZW1lbnQ7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQXBwQnVpbGRlclRlbXBsYXRlTWV0YSB7XG4gIHNwZWNpZmllcjogc3RyaW5nO1xufVxuXG5pbnRlcmZhY2UgSGVscGVyRnVuY3Rpb24gZXh0ZW5kcyBGdW5jdGlvbiB7XG4gIGlzRmFjdG9yeT86IGJvb2xlYW47XG59XG5cbmZ1bmN0aW9uIGxvY2F0b3JGb3IobW9kdWxlOiBzdHJpbmcsIG5hbWU6IHN0cmluZyk6IFRlbXBsYXRlTG9jYXRvcjxNb2R1bGVMb2NhdG9yPiB7XG4gIHJldHVybiB7XG4gICAga2luZDogJ3RlbXBsYXRlJyxcbiAgICBtb2R1bGUsXG4gICAgbmFtZSxcbiAgICBtZXRhOiB7XG4gICAgICBtb2R1bGUsXG4gICAgICBuYW1lLFxuICAgIH0sXG4gIH07XG59XG5cbmV4cG9ydCBjbGFzcyBBcHBCdWlsZGVyPFQgZXh0ZW5kcyBUZXN0QXBwbGljYXRpb24+IHtcbiAgcm9vdE5hbWU6IHN0cmluZztcbiAgbW9kdWxlczogRGljdDx1bmtub3duPiA9IHt9O1xuICB0ZW1wbGF0ZXM6IERpY3Q8c3RyaW5nPiA9IHt9O1xuICBvcHRpb25zOiBBcHBCdWlsZGVyT3B0aW9uczxUPjtcblxuICBjb25zdHJ1Y3RvcihuYW1lOiBzdHJpbmcsIG9wdGlvbnM6IEFwcEJ1aWxkZXJPcHRpb25zPFQ+KSB7XG4gICAgdGhpcy5yb290TmFtZSA9IG5hbWU7XG4gICAgdGhpcy5vcHRpb25zID0gb3B0aW9ucztcbiAgICB0aGlzLm1vZHVsZXNbXG4gICAgICBgY29tcG9uZW50LW1hbmFnZXI6LyR7dGhpcy5yb290TmFtZX0vY29tcG9uZW50LW1hbmFnZXJzL21haW5gXG4gICAgXSA9IHRoaXMub3B0aW9ucy5Db21wb25lbnRNYW5hZ2VyO1xuICAgIHRoaXMudGVtcGxhdGUoJ01haW4nLCAnPGRpdiAvPicpO1xuICAgIHRoaXMuaGVscGVyKCdhY3Rpb24nLCBidWlsZEFjdGlvbiwgdHJ1ZSk7XG4gIH1cblxuICB0ZW1wbGF0ZShuYW1lOiBzdHJpbmcsIHRlbXBsYXRlOiBzdHJpbmcpIHtcbiAgICBhc3NlcnQoXG4gICAgICBuYW1lLmNoYXJBdCgwKSA9PT0gbmFtZS5jaGFyQXQoMCkudG9VcHBlckNhc2UoKSxcbiAgICAgICd0ZW1wbGF0ZSBuYW1lcyBtdXN0IHN0YXJ0IHdpdGggYSBjYXBpdGFsIGxldHRlcidcbiAgICApO1xuXG4gICAgbGV0IHNwZWNpZmllciA9IGB0ZW1wbGF0ZTovJHt0aGlzLnJvb3ROYW1lfS9jb21wb25lbnRzLyR7bmFtZX1gO1xuICAgIHRoaXMubW9kdWxlc1tzcGVjaWZpZXJdID0gcHJlY29tcGlsZSh0ZW1wbGF0ZSwgeyBtZXRhOiB7IHNwZWNpZmllciB9IH0pO1xuICAgIHRoaXMudGVtcGxhdGVzW3NwZWNpZmllcl0gPSB0ZW1wbGF0ZTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIGNvbXBvbmVudChuYW1lOiBzdHJpbmcsIGNvbXBvbmVudEZhY3Rvcnk6IENvbXBvbmVudEZhY3RvcnkpIHtcbiAgICBsZXQgc3BlY2lmaWVyID0gYGNvbXBvbmVudDovJHt0aGlzLnJvb3ROYW1lfS9jb21wb25lbnRzLyR7bmFtZX1gO1xuICAgIHRoaXMubW9kdWxlc1tzcGVjaWZpZXJdID0gY29tcG9uZW50RmFjdG9yeTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIGhlbHBlcihuYW1lOiBzdHJpbmcsIGhlbHBlckZ1bmM6IEhlbHBlckZ1bmN0aW9uLCBpc0ZhY3RvcnkgPSBmYWxzZSkge1xuICAgIGxldCBzcGVjaWZpZXIgPSBgaGVscGVyOi8ke3RoaXMucm9vdE5hbWV9L2NvbXBvbmVudHMvJHtuYW1lfWA7XG4gICAgaGVscGVyRnVuYy5pc0ZhY3RvcnkgPSBpc0ZhY3Rvcnk7XG4gICAgdGhpcy5tb2R1bGVzW3NwZWNpZmllcl0gPSBoZWxwZXJGdW5jO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgcHJvdGVjdGVkIGJ1aWxkUmVzb2x2ZXIoKTogUmVzb2x2ZXIge1xuICAgIGxldCByZXNvbHZlckNvbmZpZ3VyYXRpb24gPSB0aGlzLm9wdGlvbnMucmVzb2x2ZXJDb25maWd1cmF0aW9uIHx8IGRlZmF1bHRSZXNvbHZlckNvbmZpZ3VyYXRpb247XG4gICAgcmVzb2x2ZXJDb25maWd1cmF0aW9uLmFwcCA9IHJlc29sdmVyQ29uZmlndXJhdGlvbi5hcHAgfHwge1xuICAgICAgbmFtZTogdGhpcy5yb290TmFtZSxcbiAgICAgIHJvb3ROYW1lOiB0aGlzLnJvb3ROYW1lLFxuICAgIH07XG5cbiAgICBsZXQgcmVnaXN0cnkgPSBuZXcgQmFzaWNNb2R1bGVSZWdpc3RyeSh0aGlzLm1vZHVsZXMpO1xuICAgIHJldHVybiBuZXcgUmVzb2x2ZXIocmVzb2x2ZXJDb25maWd1cmF0aW9uLCByZWdpc3RyeSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgYnVpbGRSdW50aW1lQ29tcGlsZXJMb2FkZXIoKTogTG9hZGVyIHtcbiAgICByZXR1cm4gbmV3IFJ1bnRpbWVDb21waWxlckxvYWRlcigpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGJ1aWxkQnl0ZWNvZGVMb2FkZXIocmVzb2x2ZXI6IFJlc29sdmVyKSB7XG4gICAgbGV0IGRlbGVnYXRlID0gbmV3IENvbXBpbGVyRGVsZWdhdGUocmVzb2x2ZXIpO1xuICAgIGxldCBjb21waWxlciA9IG5ldyBCdW5kbGVDb21waWxlcihkZWxlZ2F0ZSk7XG5cbiAgICBsZXQgbWFpbkxvY2F0b3IgPSBsb2NhdG9yRm9yKCd0ZW1wbGF0ZTptYWluVGVtcGxhdGUnLCAnZGVmYXVsdCcpO1xuICAgIG1haW5Mb2NhdG9yLm1ldGEubW9kdWxlID0gJ3RlbXBsYXRlOm1haW5UZW1wbGF0ZSc7XG5cbiAgICBsZXQgYmxvY2sgPSBKU09OLnBhcnNlKG1haW5UZW1wbGF0ZS5ibG9jayk7XG4gICAgbGV0IGNvbXBpbGFibGVUZW1wbGF0ZSA9IGNvbXBpbGFibGUoe1xuICAgICAgYmxvY2ssXG4gICAgICByZWZlcnJlcjogbWFpbkxvY2F0b3IubWV0YSxcbiAgICB9KTtcblxuICAgIGNvbXBpbGVyLmFkZENvbXBpbGFibGVUZW1wbGF0ZShtYWluTG9jYXRvciwgY29tcGlsYWJsZVRlbXBsYXRlKTtcblxuICAgIGZvciAobGV0IG1vZHVsZSBpbiB0aGlzLnRlbXBsYXRlcykge1xuICAgICAgY29tcGlsZXIuYWRkVGVtcGxhdGVTb3VyY2UobG9jYXRvckZvcihtb2R1bGUsICdkZWZhdWx0JyksIHRoaXMudGVtcGxhdGVzW21vZHVsZV0pO1xuICAgIH1cblxuICAgIGxldCB7IGhlYXAsIHBvb2wsIHRhYmxlIH0gPSBjb21waWxlci5jb21waWxlKCk7XG5cbiAgICBsZXQgcmVzb2x2ZXJUYWJsZTogdW5rbm93bltdID0gW107XG5cbiAgICBsZXQgbWV0YTogRGljdDxNZXRhZGF0YT4gPSB7fTtcblxuICAgIHRhYmxlLnZtSGFuZGxlQnlNb2R1bGVMb2NhdG9yLmZvckVhY2goKHZtSGFuZGxlLCBsb2NhdG9yKSA9PiB7XG4gICAgICBsZXQgaGFuZGxlID0gdGFibGUuYnlNb2R1bGVMb2NhdG9yLmdldChsb2NhdG9yKTtcbiAgICAgIGxldCB0ZW1wbGF0ZSA9IGNvbXBpbGVyLmdldFRlbXBsYXRlKGxvY2F0b3IpO1xuXG4gICAgICBtZXRhW2xvY2F0b3IubW9kdWxlXSA9IHtcbiAgICAgICAgdjogdm1IYW5kbGUsXG4gICAgICAgIGg6IGhhbmRsZSxcbiAgICAgICAgdGFibGU6IHRlbXBsYXRlLnN5bWJvbFRhYmxlLFxuICAgICAgfTtcbiAgICB9KTtcblxuICAgIHRhYmxlLmJ5SGFuZGxlLmZvckVhY2goKGxvY2F0b3IsIGhhbmRsZSkgPT4ge1xuICAgICAgbGV0IG1vZHVsZSA9IGxvY2F0b3IubW9kdWxlLnJlcGxhY2UoJ3RlbXBsYXRlOi8nLCAnY29tcG9uZW50Oi8nKTtcbiAgICAgIGlmICh0aGlzLm1vZHVsZXNbbW9kdWxlXSkge1xuICAgICAgICBpZiAobW9kdWxlLmluZGV4T2YoJ2hlbHBlcjonKSA9PT0gMCkge1xuICAgICAgICAgIGNvbnN0IG1vZHVsZVR5cGUgPSAodGhpcy5tb2R1bGVzW21vZHVsZV0gYXMgSGVscGVyRnVuY3Rpb24pLmlzRmFjdG9yeSA/IE1vZHVsZVR5cGVzLkhFTFBFUl9GQUNUT1JZIDogTW9kdWxlVHlwZXMuSEVMUEVSO1xuICAgICAgICAgIHJlc29sdmVyVGFibGVbaGFuZGxlXSA9IFttb2R1bGVUeXBlLCB0aGlzLm1vZHVsZXNbbW9kdWxlXV07XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmVzb2x2ZXJUYWJsZVtoYW5kbGVdID0gdGhpcy5tb2R1bGVzW21vZHVsZV07XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KTtcblxuICAgIGxldCBieXRlY29kZSA9IGhlYXAuYnVmZmVyO1xuICAgIGxldCBkYXRhID0ge1xuICAgICAgcHJlZml4OiAnJyxcbiAgICAgIG1haW5FbnRyeTogdGFibGUudm1IYW5kbGVCeU1vZHVsZUxvY2F0b3IuZ2V0KG1haW5Mb2NhdG9yKSxcbiAgICAgIHBvb2wsXG4gICAgICB0YWJsZTogcmVzb2x2ZXJUYWJsZSxcbiAgICAgIG1ldGEsXG4gICAgICBoZWFwOiB7XG4gICAgICAgIHRhYmxlOiBoZWFwLnRhYmxlLFxuICAgICAgICBoYW5kbGU6IGhlYXAuaGFuZGxlLFxuICAgICAgfSxcbiAgICB9O1xuXG4gICAgcmV0dXJuIG5ldyBCeXRlY29kZUxvYWRlcih7IGJ5dGVjb2RlLCBkYXRhIH0pO1xuICB9XG5cbiAgcHJvdGVjdGVkIGJ1aWxkTG9hZGVyKHJlc29sdmVyKTogTG9hZGVyIHtcbiAgICBzd2l0Y2ggKHRoaXMub3B0aW9ucy5sb2FkZXIpIHtcbiAgICAgIGNhc2UgJ3J1bnRpbWUtY29tcGlsZXInOlxuICAgICAgICByZXR1cm4gdGhpcy5idWlsZFJ1bnRpbWVDb21waWxlckxvYWRlcigpO1xuICAgICAgY2FzZSAnYnl0ZWNvZGUnOlxuICAgICAgICByZXR1cm4gdGhpcy5idWlsZEJ5dGVjb2RlTG9hZGVyKHJlc29sdmVyKTtcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgVW5yZWNvZ25pemVkIGxvYWRlciAke3RoaXMub3B0aW9ucy5sb2FkZXJ9YCk7XG4gICAgfVxuICB9XG5cbiAgcmVuZGVyVG9TdHJpbmcoY29tcG9uZW50TmFtZTogc3RyaW5nLCBkYXRhOiBEaWN0PHVua25vd24+LCBvcHRpb25zPzogeyBbSU5URVJOQUxfRFlOQU1JQ19TQ09QRV06IERpY3Q8dW5rbm93bj4gfSk6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgY29uc3QgcmVzb2x2ZXIgPSB0aGlzLmJ1aWxkUmVzb2x2ZXIoKTtcbiAgICBsZXQgbG9hZGVyID0gdGhpcy5idWlsZExvYWRlcihyZXNvbHZlcik7XG5cbiAgICByZXR1cm4gU1NSQXBwbGljYXRpb24ucmVuZGVyVG9TdHJpbmcoY29tcG9uZW50TmFtZSwgZGF0YSwge1xuICAgICAgcm9vdE5hbWU6IHRoaXMucm9vdE5hbWUsXG4gICAgICByZXNvbHZlcixcbiAgICAgIGxvYWRlcixcbiAgICAgIHJlbmRlcmVyOiBuZXcgU3luY1JlbmRlcmVyKCksXG4gICAgICAuLi5vcHRpb25zXG4gICAgfSk7XG4gIH1cblxuICBhc3luYyBib290KCk6IFByb21pc2U8VD4ge1xuICAgIGxldCByZXNvbHZlciA9IHRoaXMuYnVpbGRSZXNvbHZlcigpO1xuICAgIGxldCBsb2FkZXI6IExvYWRlciA9IHRoaXMuYnVpbGRMb2FkZXIocmVzb2x2ZXIpO1xuXG4gICAgbGV0IGRvYzogRG9jdW1lbnQgPSAodGhpcy5vcHRpb25zLmRvY3VtZW50IGFzIERvY3VtZW50KSB8fCBkb2N1bWVudDtcbiAgICBsZXQgZWxlbWVudCA9IGRvYy5ib2R5O1xuICAgIGxldCBidWlsZGVyID0gbmV3IERPTUJ1aWxkZXIoeyBlbGVtZW50IH0pO1xuICAgIGxldCByZW5kZXJlciA9IG5ldyBTeW5jUmVuZGVyZXIoKTtcblxuICAgIGxldCBhcHAgPSBuZXcgdGhpcy5vcHRpb25zLkFwcGxpY2F0aW9uQ2xhc3Moe1xuICAgICAgcmVzb2x2ZXIsXG4gICAgICBidWlsZGVyLFxuICAgICAgbG9hZGVyLFxuICAgICAgcmVuZGVyZXIsXG4gICAgICByb290TmFtZTogdGhpcy5yb290TmFtZSxcbiAgICAgIGRvY3VtZW50OiB0aGlzLm9wdGlvbnMuZG9jdW1lbnQsXG4gICAgfSk7XG5cbiAgICBsZXQgcm9vdEVsZW1lbnQgPSBkb2MuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG4gICAgYXBwLnJvb3RFbGVtZW50ID0gcm9vdEVsZW1lbnQ7XG4gICAgYXBwLnJlbmRlckNvbXBvbmVudCgnTWFpbicsIHJvb3RFbGVtZW50KTtcbiAgICBhcHAuYm9vdCgpO1xuXG4gICAgYXdhaXQgZGlkUmVuZGVyKGFwcCk7XG5cbiAgICByZXR1cm4gYXBwO1xuICB9XG59XG5cbmNsYXNzIENvbXBpbGVyRGVsZWdhdGUgaW1wbGVtZW50cyBJQ29tcGlsZXJEZWxlZ2F0ZTxNb2R1bGVMb2NhdG9yPiB7XG4gIGNvbnN0cnVjdG9yKHByb3RlY3RlZCByZXNvbHZlcjogUmVzb2x2ZXIpIHt9XG5cbiAgaGFzQ29tcG9uZW50SW5TY29wZShuYW1lOiBzdHJpbmcsIHJlZmVycmVyOiBNb2R1bGVMb2NhdG9yKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICEhdGhpcy5yZXNvbHZlci5pZGVudGlmeShgdGVtcGxhdGU6JHtuYW1lfWAsIHJlZmVycmVyLm1vZHVsZSk7XG4gIH1cblxuICByZXNvbHZlQ29tcG9uZW50KG5hbWU6IHN0cmluZywgcmVmZXJyZXI6IE1vZHVsZUxvY2F0b3IpOiBNb2R1bGVMb2NhdG9yIHtcbiAgICBsZXQgcmVzb2x2ZWQgPSB0aGlzLnJlc29sdmVyLmlkZW50aWZ5KGB0ZW1wbGF0ZToke25hbWV9YCwgcmVmZXJyZXIubW9kdWxlKTtcbiAgICByZXR1cm4geyBtb2R1bGU6IHJlc29sdmVkLCBuYW1lOiAnZGVmYXVsdCcgfTtcbiAgfVxuXG4gIGdldENvbXBvbmVudENhcGFiaWxpdGllcygpIHtcbiAgICByZXR1cm4gQ0FQQUJJTElUSUVTO1xuICB9XG5cbiAgaGFzSGVscGVySW5TY29wZShoZWxwZXJOYW1lOiBzdHJpbmcsIHJlZmVycmVyOiBNb2R1bGVMb2NhdG9yKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICEhdGhpcy5yZXNvbHZlci5pZGVudGlmeShgaGVscGVyOiR7aGVscGVyTmFtZX1gLCByZWZlcnJlci5tb2R1bGUpO1xuICB9XG5cbiAgcmVzb2x2ZUhlbHBlcihoZWxwZXJOYW1lOiBzdHJpbmcsIHJlZmVycmVyOiBNb2R1bGVMb2NhdG9yKTogTW9kdWxlTG9jYXRvciB7XG4gICAgbGV0IHJlc29sdmVkID0gdGhpcy5yZXNvbHZlci5pZGVudGlmeShgaGVscGVyOiR7aGVscGVyTmFtZX1gLCByZWZlcnJlci5tb2R1bGUpO1xuICAgIHJldHVybiB7IG1vZHVsZTogcmVzb2x2ZWQsIG5hbWU6ICdkZWZhdWx0JyB9O1xuICB9XG5cbiAgaGFzUGFydGlhbEluU2NvcGUocGFydGlhbE5hbWU6IHN0cmluZywgcmVmZXJyZXI6IE1vZHVsZUxvY2F0b3IpOiBib29sZWFuIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ01ldGhvZCBub3QgaW1wbGVtZW50ZWQuJyk7XG4gIH1cblxuICByZXNvbHZlUGFydGlhbChwYXJ0aWFsTmFtZTogc3RyaW5nLCByZWZlcnJlcjogTW9kdWxlTG9jYXRvcik6IE1vZHVsZUxvY2F0b3Ige1xuICAgIHRocm93IG5ldyBFcnJvcignTWV0aG9kIG5vdCBpbXBsZW1lbnRlZC4nKTtcbiAgfVxuXG4gIGhhc01vZGlmaWVySW5TY29wZShtb2RpZmllck5hbWU6IHN0cmluZywgcmVmZXJyZXI6IE1vZHVsZUxvY2F0b3IpOiBib29sZWFuIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ01ldGhvZCBub3QgaW1wbGVtZW50ZWQuJyk7XG4gIH1cblxuICByZXNvbHZlTW9kaWZpZXIobW9kaWZpZXJOYW1lOiBzdHJpbmcsIHJlZmVycmVyOiBNb2R1bGVMb2NhdG9yKTogTW9kdWxlTG9jYXRvciB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdNZXRob2Qgbm90IGltcGxlbWVudGVkLicpO1xuICB9XG59XG5cbmZ1bmN0aW9uIGJ1aWxkQXBwPFQgZXh0ZW5kcyBUZXN0QXBwbGljYXRpb24+KG9wdGlvbnM6IEFwcEJ1aWxkZXJPcHRpb25zPFQ+ID0ge30pOiBBcHBCdWlsZGVyPFQ+IHtcbiAgb3B0aW9ucy5hcHBOYW1lID0gb3B0aW9ucy5hcHBOYW1lIHx8ICd0ZXN0LWFwcCc7XG4gIG9wdGlvbnMubG9hZGVyID0gb3B0aW9ucy5sb2FkZXIgfHwgJ3J1bnRpbWUtY29tcGlsZXInO1xuICBvcHRpb25zLkNvbXBvbmVudE1hbmFnZXIgPSBvcHRpb25zLkNvbXBvbmVudE1hbmFnZXIgfHwgQ29tcG9uZW50TWFuYWdlcjtcbiAgb3B0aW9ucy5BcHBsaWNhdGlvbkNsYXNzID1cbiAgICBvcHRpb25zLkFwcGxpY2F0aW9uQ2xhc3MgfHwgKFRlc3RBcHBsaWNhdGlvbiBhcyBBcHBsaWNhdGlvbkNvbnN0cnVjdG9yPFQ+KTtcblxuICByZXR1cm4gbmV3IEFwcEJ1aWxkZXIob3B0aW9ucy5hcHBOYW1lLCBvcHRpb25zKTtcbn1cblxuZXhwb3J0IHsgYnVpbGRBcHAgfTtcbiJdLCJzb3VyY2VSb290IjoiIn0=
import Resolver, { ResolverConfiguration } from '@glimmer/resolver';
import { Dict } from '@glimmer/interfaces';
import Application, { ApplicationConstructor, BytecodeLoader, Loader } from '@glimmer/application';
import Application, { ApplicationConstructor, BytecodeLoader, Loader, INTERNAL_DYNAMIC_SCOPE } from '@glimmer/application';
import { SimpleDocument } from '@simple-dom/interface';

@@ -37,3 +37,5 @@ export interface AppBuilderOptions<T> {

protected buildLoader(resolver: any): Loader;
renderToString(componentName: string, data: Dict<unknown>): Promise<string>;
renderToString(componentName: string, data: Dict<unknown>, options?: {
[INTERNAL_DYNAMIC_SCOPE]: Dict<unknown>;
}): Promise<string>;
boot(): Promise<T>;

@@ -40,0 +42,0 @@ }

{
"name": "@glimmer/application-test-helpers",
"version": "0.14.0-alpha.6",
"version": "0.14.0-alpha.7",
"description": "Test helpers for developing @glimmer/component and @glimmer/application",

@@ -5,0 +5,0 @@ "contributors": [

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