Socket
Socket
Sign inDemoInstall

@angular-extensions/testing-library

Package Overview
Dependencies
68
Maintainers
2
Versions
12
Alerts
File Explorer

Advanced tools

Install Socket

Detect and block malicious and high-risk dependencies

Install

Comparing version 3.2.0 to 4.0.0

migrations/index.d.ts

2

angular-extensions-testing-library.metadata.json

@@ -1,1 +0,1 @@

{"__symbolic":"module","version":4,"exports":[{"from":"dom-testing-library"}],"metadata":{"RenderResult":{"__symbolic":"interface"},"Options":{"__symbolic":"interface"},"ComponentInput":{"__symbolic":"interface"},"createComponent":{"__symbolic":"function"}},"origins":{"RenderResult":"./lib/models","Options":"./lib/models","ComponentInput":"./lib/models","createComponent":"./lib/testing-library"},"importAs":"@angular-extensions/testing-library"}
{"__symbolic":"module","version":4,"exports":[{"from":"dom-testing-library"}],"metadata":{"RenderResultQueries":{"__symbolic":"interface"},"RenderResult":{"__symbolic":"interface"},"RenderOptions":{"__symbolic":"interface"},"render":{"__symbolic":"function"}},"origins":{"RenderResultQueries":"./lib/models","RenderResult":"./lib/models","RenderOptions":"./lib/models","render":"./lib/testing-library"},"importAs":"@angular-extensions/testing-library"}
(function (global, factory) {
typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('@angular/core'), require('@angular/core/testing'), require('dom-testing-library'), require('jest')) :
typeof define === 'function' && define.amd ? define('@angular-extensions/testing-library', ['exports', '@angular/core', '@angular/core/testing', 'dom-testing-library', 'jest'], factory) :
(factory((global['angular-extensions'] = global['angular-extensions'] || {}, global['angular-extensions']['testing-library'] = {}),global.ng.core,global.ng.core.testing,null));
}(this, (function (exports,core,testing,domTestingLibrary) { 'use strict';
typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('@angular/core'), require('@angular/core/testing'), require('dom-testing-library'), require('@angular/platform-browser'), require('jest')) :
typeof define === 'function' && define.amd ? define('@angular-extensions/testing-library', ['exports', '@angular/core', '@angular/core/testing', 'dom-testing-library', '@angular/platform-browser', 'jest'], factory) :
(factory((global['angular-extensions'] = global['angular-extensions'] || {}, global['angular-extensions']['testing-library'] = {}),global.ng.core,global.ng.core.testing,null,global.ng.platformBrowser));
}(this, (function (exports,core,testing,domTestingLibrary,platformBrowser) { 'use strict';

@@ -166,4 +166,4 @@ /*! *****************************************************************************

*/
var TestComponent = /** @class */ (function () {
function TestComponent(elemtRef) {
var WrapperComponent = /** @class */ (function () {
function WrapperComponent(elemtRef) {
this.elemtRef = elemtRef;

@@ -174,3 +174,3 @@ }

*/
TestComponent.prototype.ngOnInit = /**
WrapperComponent.prototype.ngOnInit = /**
* @return {?}

@@ -181,7 +181,7 @@ */

};
TestComponent.decorators = [
{ type: core.Component, args: [{ selector: 'test-component', template: '' },] },
WrapperComponent.decorators = [
{ type: core.Component, args: [{ selector: 'wrapper-component', template: '' },] },
];
/** @nocollapse */
TestComponent.ctorParameters = function () {
WrapperComponent.ctorParameters = function () {
return [

@@ -191,3 +191,3 @@ { type: core.ElementRef }

};
return TestComponent;
return WrapperComponent;
}());

@@ -200,13 +200,13 @@ /**

*/
function createComponent(templateOrComponent, _a) {
var _b = _a.detectChanges, detectChanges = _b === void 0 ? true : _b, _c = _a.declarations, declarations = _c === void 0 ? [] : _c, _d = _a.providers, providers = _d === void 0 ? [] : _d, _e = _a.imports, imports = _e === void 0 ? [] : _e, _f = _a.schemas, schemas = _f === void 0 ? [] : _f;
function render(templateOrComponent, _a) {
var _b = _a.detectChanges, detectChanges = _b === void 0 ? true : _b, _c = _a.declarations, declarations = _c === void 0 ? [] : _c, _d = _a.imports, imports = _d === void 0 ? [] : _d, _e = _a.providers, providers = _e === void 0 ? [] : _e, _f = _a.schemas, schemas = _f === void 0 ? [] : _f, queries = _a.queries, _g = _a.wrapper, wrapper = _g === void 0 ? WrapperComponent : _g, _h = _a.componentProperties, componentProperties = _h === void 0 ? {} : _h;
return __awaiter(this, void 0, void 0, function () {
var isTemplate, testComponent, fixture, eventsWithDetectChanges;
return __generator(this, function (_g) {
switch (_g.label) {
var isTemplate, componentDeclarations, fixture, eventsWithDetectChanges;
return __generator(this, function (_j) {
switch (_j.label) {
case 0:
isTemplate = typeof templateOrComponent === 'string';
testComponent = isTemplate ? [TestComponent] : [];
componentDeclarations = isTemplate ? [wrapper] : [templateOrComponent];
testing.TestBed.configureTestingModule({
declarations: __spread(declarations, testComponent),
declarations: __spread(declarations, componentDeclarations),
providers: __spread(providers),

@@ -217,7 +217,7 @@ imports: __spread(imports),

fixture = isTemplate
? createTestComponentFixture(/** @type {?} */ (templateOrComponent))
: createComponentFixture(/** @type {?} */ (templateOrComponent));
? createWrapperComponentFixture(/** @type {?} */ (templateOrComponent), { wrapper: wrapper, componentProperties: componentProperties })
: createComponentFixture(/** @type {?} */ (templateOrComponent), { componentProperties: componentProperties });
return [4 /*yield*/, testing.TestBed.compileComponents()];
case 1:
_g.sent();
_j.sent();
if (detectChanges) {

@@ -235,3 +235,8 @@ fixture.detectChanges();

}, /** @type {?} */ ({}));
return [2 /*return*/, __assign({ fixture: fixture, container: fixture.nativeElement, getFromTestBed: testing.TestBed.get, debug: function () { return console.log(domTestingLibrary.prettyDOM(fixture.nativeElement)); } }, eventsWithDetectChanges, domTestingLibrary.getQueriesForElement(fixture.nativeElement))];
return [2 /*return*/, /** @type {?} */ (__assign({ fixture: fixture, container: fixture.nativeElement, debug: function (element) {
if (element === void 0) {
element = fixture.nativeElement;
}
return console.log(domTestingLibrary.prettyDOM(element));
} }, domTestingLibrary.getQueriesForElement(fixture.nativeElement, queries), eventsWithDetectChanges))];
}

@@ -242,7 +247,11 @@ });

/**
* Creates the wrapper component and sets its the template to the to-be-tested component
* @template T
* @param {?} template
* @param {?} __1
* @return {?}
*/
function createTestComponentFixture(template) {
testing.TestBed.overrideComponent(TestComponent, {
function createWrapperComponentFixture(template, _a) {
var wrapper = _a.wrapper, componentProperties = _a.componentProperties;
testing.TestBed.overrideComponent(wrapper, {
set: {

@@ -252,18 +261,42 @@ template: template,

});
return testing.TestBed.createComponent(TestComponent);
/** @type {?} */
var fixture = testing.TestBed.createComponent(wrapper);
/** @type {?} */
var componentSelector = template.match(/\<(.*?)\ /) || template.match(/\<(.*?)\>/);
if (!componentSelector) {
throw Error("Template " + template + " is not valid.");
}
/** @type {?} */
var sut = fixture.debugElement.query(platformBrowser.By.css(componentSelector[1]));
setComponentProperties(sut, { componentProperties: componentProperties });
return fixture;
}
/**
* Creates the components and sets its properties
* @template T
* @param {?} componentInput
* @param {?} component
* @param {?} __1
* @return {?}
*/
function createComponentFixture(componentInput) {
var e_1, _a;
var component = componentInput.component, _b = componentInput.parameters, parameters = _b === void 0 ? {} : _b;
function createComponentFixture(component, _a) {
var _b = _a.componentProperties, componentProperties = _b === void 0 ? {} : _b;
/** @type {?} */
var fixture = testing.TestBed.createComponent(component);
setComponentProperties(fixture, { componentProperties: componentProperties });
return fixture;
}
/**
* Set the component properties
* @template T
* @param {?} fixture
* @param {?} __1
* @return {?}
*/
function setComponentProperties(fixture, _a) {
var _b = _a.componentProperties, componentProperties = _b === void 0 ? {} : _b;
var e_1, _c;
try {
for (var _c = __values(Object.keys(parameters)), _d = _c.next(); !_d.done; _d = _c.next()) {
var key = _d.value;
fixture.componentInstance[key] = parameters[key];
for (var _d = __values(Object.keys(componentProperties)), _e = _d.next(); !_e.done; _e = _d.next()) {
var key = _e.value;
fixture.componentInstance[key] = componentProperties[key];
}

@@ -276,4 +309,4 @@ }

try {
if (_d && !_d.done && (_a = _c.return))
_a.call(_c);
if (_e && !_e.done && (_c = _d.return))
_c.call(_d);
}

@@ -332,45 +365,52 @@ finally {

exports.within = domTestingLibrary.within;
exports.getByLabelText = domTestingLibrary.getByLabelText;
exports.getAllByLabelText = domTestingLibrary.getAllByLabelText;
exports.queryByLabelText = domTestingLibrary.queryByLabelText;
exports.queryAllByLabelText = domTestingLibrary.queryAllByLabelText;
exports.findByLabelText = domTestingLibrary.findByLabelText;
exports.findAllByLabelText = domTestingLibrary.findAllByLabelText;
exports.getByPlaceholderText = domTestingLibrary.getByPlaceholderText;
exports.getAllByPlaceholderText = domTestingLibrary.getAllByPlaceholderText;
exports.queryByPlaceholderText = domTestingLibrary.queryByPlaceholderText;
exports.queryAllByPlaceholderText = domTestingLibrary.queryAllByPlaceholderText;
exports.getByPlaceholderText = domTestingLibrary.getByPlaceholderText;
exports.getAllByPlaceholderText = domTestingLibrary.getAllByPlaceholderText;
exports.queryBySelectText = domTestingLibrary.queryBySelectText;
exports.queryAllBySelectText = domTestingLibrary.queryAllBySelectText;
exports.getBySelectText = domTestingLibrary.getBySelectText;
exports.getAllBySelectText = domTestingLibrary.getAllBySelectText;
exports.findByPlaceholderText = domTestingLibrary.findByPlaceholderText;
exports.findAllByPlaceholderText = domTestingLibrary.findAllByPlaceholderText;
exports.getByText = domTestingLibrary.getByText;
exports.getAllByText = domTestingLibrary.getAllByText;
exports.queryByText = domTestingLibrary.queryByText;
exports.queryAllByText = domTestingLibrary.queryAllByText;
exports.getByText = domTestingLibrary.getByText;
exports.getAllByText = domTestingLibrary.getAllByText;
exports.queryByLabelText = domTestingLibrary.queryByLabelText;
exports.queryAllByLabelText = domTestingLibrary.queryAllByLabelText;
exports.getByLabelText = domTestingLibrary.getByLabelText;
exports.getAllByLabelText = domTestingLibrary.getAllByLabelText;
exports.findByText = domTestingLibrary.findByText;
exports.findAllByText = domTestingLibrary.findAllByText;
exports.getByAltText = domTestingLibrary.getByAltText;
exports.getAllByAltText = domTestingLibrary.getAllByAltText;
exports.queryByAltText = domTestingLibrary.queryByAltText;
exports.queryAllByAltText = domTestingLibrary.queryAllByAltText;
exports.getByAltText = domTestingLibrary.getByAltText;
exports.getAllByAltText = domTestingLibrary.getAllByAltText;
exports.queryByTestId = domTestingLibrary.queryByTestId;
exports.queryAllByTestId = domTestingLibrary.queryAllByTestId;
exports.getByTestId = domTestingLibrary.getByTestId;
exports.getAllByTestId = domTestingLibrary.getAllByTestId;
exports.findByAltText = domTestingLibrary.findByAltText;
exports.findAllByAltText = domTestingLibrary.findAllByAltText;
exports.getByTitle = domTestingLibrary.getByTitle;
exports.getAllByTitle = domTestingLibrary.getAllByTitle;
exports.queryByTitle = domTestingLibrary.queryByTitle;
exports.queryAllByTitle = domTestingLibrary.queryAllByTitle;
exports.getByTitle = domTestingLibrary.getByTitle;
exports.getAllByTitle = domTestingLibrary.getAllByTitle;
exports.queryByValue = domTestingLibrary.queryByValue;
exports.queryAllByValue = domTestingLibrary.queryAllByValue;
exports.getByValue = domTestingLibrary.getByValue;
exports.getAllByValue = domTestingLibrary.getAllByValue;
exports.findByTitle = domTestingLibrary.findByTitle;
exports.findAllByTitle = domTestingLibrary.findAllByTitle;
exports.getByDisplayValue = domTestingLibrary.getByDisplayValue;
exports.getAllByDisplayValue = domTestingLibrary.getAllByDisplayValue;
exports.queryByDisplayValue = domTestingLibrary.queryByDisplayValue;
exports.queryAllByDisplayValue = domTestingLibrary.queryAllByDisplayValue;
exports.getByDisplayValue = domTestingLibrary.getByDisplayValue;
exports.getAllByDisplayValue = domTestingLibrary.getAllByDisplayValue;
exports.findByDisplayValue = domTestingLibrary.findByDisplayValue;
exports.findAllByDisplayValue = domTestingLibrary.findAllByDisplayValue;
exports.getByRole = domTestingLibrary.getByRole;
exports.getAllByRole = domTestingLibrary.getAllByRole;
exports.queryByRole = domTestingLibrary.queryByRole;
exports.queryAllByRole = domTestingLibrary.queryAllByRole;
exports.getByRole = domTestingLibrary.getByRole;
exports.getAllByRole = domTestingLibrary.getAllByRole;
exports.findByRole = domTestingLibrary.findByRole;
exports.findAllByRole = domTestingLibrary.findAllByRole;
exports.getByTestId = domTestingLibrary.getByTestId;
exports.getAllByTestId = domTestingLibrary.getAllByTestId;
exports.queryByTestId = domTestingLibrary.queryByTestId;
exports.queryAllByTestId = domTestingLibrary.queryAllByTestId;
exports.findByTestId = domTestingLibrary.findByTestId;
exports.findAllByTestId = domTestingLibrary.findAllByTestId;
exports.queryByAttribute = domTestingLibrary.queryByAttribute;
exports.queryAllByAttribute = domTestingLibrary.queryAllByAttribute;
exports.firstResultOrNull = domTestingLibrary.firstResultOrNull;
exports.debugDOM = domTestingLibrary.debugDOM;

@@ -381,2 +421,3 @@ exports.getElementError = domTestingLibrary.getElementError;

exports.waitForElement = domTestingLibrary.waitForElement;
exports.waitForElementToBeRemoved = domTestingLibrary.waitForElementToBeRemoved;
exports.getDefaultNormalizer = domTestingLibrary.getDefaultNormalizer;

@@ -388,3 +429,3 @@ exports.getNodeText = domTestingLibrary.getNodeText;

exports.configure = domTestingLibrary.configure;
exports.createComponent = createComponent;
exports.render = render;
exports.configureJestSetup = configureJestSetup;

@@ -396,2 +437,2 @@

//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5ndWxhci1leHRlbnNpb25zLXRlc3RpbmctbGlicmFyeS51bWQuanMubWFwIiwic291cmNlcyI6W251bGwsIm5nOi8vQGFuZ3VsYXItZXh0ZW5zaW9ucy90ZXN0aW5nLWxpYnJhcnkvbGliL3Rlc3RpbmctbGlicmFyeS50cyIsIm5nOi8vQGFuZ3VsYXItZXh0ZW5zaW9ucy90ZXN0aW5nLWxpYnJhcnkvamVzdC11dGlscy9jb25maWd1cmUtdGVzdC1zdWl0ZS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKiEgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcclxuQ29weXJpZ2h0IChjKSBNaWNyb3NvZnQgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuXHJcbkxpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7IHlvdSBtYXkgbm90IHVzZVxyXG50aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZVxyXG5MaWNlbnNlIGF0IGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxyXG5cclxuVEhJUyBDT0RFIElTIFBST1ZJREVEIE9OIEFOICpBUyBJUyogQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWVxyXG5LSU5ELCBFSVRIRVIgRVhQUkVTUyBPUiBJTVBMSUVELCBJTkNMVURJTkcgV0lUSE9VVCBMSU1JVEFUSU9OIEFOWSBJTVBMSUVEXHJcbldBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBUSVRMRSwgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UsXHJcbk1FUkNIQU5UQUJMSVRZIE9SIE5PTi1JTkZSSU5HRU1FTlQuXHJcblxyXG5TZWUgdGhlIEFwYWNoZSBWZXJzaW9uIDIuMCBMaWNlbnNlIGZvciBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnNcclxuYW5kIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxyXG4qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAqL1xyXG4vKiBnbG9iYWwgUmVmbGVjdCwgUHJvbWlzZSAqL1xyXG5cclxudmFyIGV4dGVuZFN0YXRpY3MgPSBmdW5jdGlvbihkLCBiKSB7XHJcbiAgICBleHRlbmRTdGF0aWNzID0gT2JqZWN0LnNldFByb3RvdHlwZU9mIHx8XHJcbiAgICAgICAgKHsgX19wcm90b19fOiBbXSB9IGluc3RhbmNlb2YgQXJyYXkgJiYgZnVuY3Rpb24gKGQsIGIpIHsgZC5fX3Byb3RvX18gPSBiOyB9KSB8fFxyXG4gICAgICAgIGZ1bmN0aW9uIChkLCBiKSB7IGZvciAodmFyIHAgaW4gYikgaWYgKGIuaGFzT3duUHJvcGVydHkocCkpIGRbcF0gPSBiW3BdOyB9O1xyXG4gICAgcmV0dXJuIGV4dGVuZFN0YXRpY3MoZCwgYik7XHJcbn07XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19leHRlbmRzKGQsIGIpIHtcclxuICAgIGV4dGVuZFN0YXRpY3MoZCwgYik7XHJcbiAgICBmdW5jdGlvbiBfXygpIHsgdGhpcy5jb25zdHJ1Y3RvciA9IGQ7IH1cclxuICAgIGQucHJvdG90eXBlID0gYiA9PT0gbnVsbCA/IE9iamVjdC5jcmVhdGUoYikgOiAoX18ucHJvdG90eXBlID0gYi5wcm90b3R5cGUsIG5ldyBfXygpKTtcclxufVxyXG5cclxuZXhwb3J0IHZhciBfX2Fzc2lnbiA9IGZ1bmN0aW9uKCkge1xyXG4gICAgX19hc3NpZ24gPSBPYmplY3QuYXNzaWduIHx8IGZ1bmN0aW9uIF9fYXNzaWduKHQpIHtcclxuICAgICAgICBmb3IgKHZhciBzLCBpID0gMSwgbiA9IGFyZ3VtZW50cy5sZW5ndGg7IGkgPCBuOyBpKyspIHtcclxuICAgICAgICAgICAgcyA9IGFyZ3VtZW50c1tpXTtcclxuICAgICAgICAgICAgZm9yICh2YXIgcCBpbiBzKSBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHMsIHApKSB0W3BdID0gc1twXTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHQ7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gX19hc3NpZ24uYXBwbHkodGhpcywgYXJndW1lbnRzKTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fcmVzdChzLCBlKSB7XHJcbiAgICB2YXIgdCA9IHt9O1xyXG4gICAgZm9yICh2YXIgcCBpbiBzKSBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHMsIHApICYmIGUuaW5kZXhPZihwKSA8IDApXHJcbiAgICAgICAgdFtwXSA9IHNbcF07XHJcbiAgICBpZiAocyAhPSBudWxsICYmIHR5cGVvZiBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzID09PSBcImZ1bmN0aW9uXCIpXHJcbiAgICAgICAgZm9yICh2YXIgaSA9IDAsIHAgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKHMpOyBpIDwgcC5sZW5ndGg7IGkrKykgaWYgKGUuaW5kZXhPZihwW2ldKSA8IDApXHJcbiAgICAgICAgICAgIHRbcFtpXV0gPSBzW3BbaV1dO1xyXG4gICAgcmV0dXJuIHQ7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX2RlY29yYXRlKGRlY29yYXRvcnMsIHRhcmdldCwga2V5LCBkZXNjKSB7XHJcbiAgICB2YXIgYyA9IGFyZ3VtZW50cy5sZW5ndGgsIHIgPSBjIDwgMyA/IHRhcmdldCA6IGRlc2MgPT09IG51bGwgPyBkZXNjID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih0YXJnZXQsIGtleSkgOiBkZXNjLCBkO1xyXG4gICAgaWYgKHR5cGVvZiBSZWZsZWN0ID09PSBcIm9iamVjdFwiICYmIHR5cGVvZiBSZWZsZWN0LmRlY29yYXRlID09PSBcImZ1bmN0aW9uXCIpIHIgPSBSZWZsZWN0LmRlY29yYXRlKGRlY29yYXRvcnMsIHRhcmdldCwga2V5LCBkZXNjKTtcclxuICAgIGVsc2UgZm9yICh2YXIgaSA9IGRlY29yYXRvcnMubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIGlmIChkID0gZGVjb3JhdG9yc1tpXSkgciA9IChjIDwgMyA/IGQocikgOiBjID4gMyA/IGQodGFyZ2V0LCBrZXksIHIpIDogZCh0YXJnZXQsIGtleSkpIHx8IHI7XHJcbiAgICByZXR1cm4gYyA+IDMgJiYgciAmJiBPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBrZXksIHIpLCByO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19wYXJhbShwYXJhbUluZGV4LCBkZWNvcmF0b3IpIHtcclxuICAgIHJldHVybiBmdW5jdGlvbiAodGFyZ2V0LCBrZXkpIHsgZGVjb3JhdG9yKHRhcmdldCwga2V5LCBwYXJhbUluZGV4KTsgfVxyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19tZXRhZGF0YShtZXRhZGF0YUtleSwgbWV0YWRhdGFWYWx1ZSkge1xyXG4gICAgaWYgKHR5cGVvZiBSZWZsZWN0ID09PSBcIm9iamVjdFwiICYmIHR5cGVvZiBSZWZsZWN0Lm1ldGFkYXRhID09PSBcImZ1bmN0aW9uXCIpIHJldHVybiBSZWZsZWN0Lm1ldGFkYXRhKG1ldGFkYXRhS2V5LCBtZXRhZGF0YVZhbHVlKTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fYXdhaXRlcih0aGlzQXJnLCBfYXJndW1lbnRzLCBQLCBnZW5lcmF0b3IpIHtcclxuICAgIHJldHVybiBuZXcgKFAgfHwgKFAgPSBQcm9taXNlKSkoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkge1xyXG4gICAgICAgIGZ1bmN0aW9uIGZ1bGZpbGxlZCh2YWx1ZSkgeyB0cnkgeyBzdGVwKGdlbmVyYXRvci5uZXh0KHZhbHVlKSk7IH0gY2F0Y2ggKGUpIHsgcmVqZWN0KGUpOyB9IH1cclxuICAgICAgICBmdW5jdGlvbiByZWplY3RlZCh2YWx1ZSkgeyB0cnkgeyBzdGVwKGdlbmVyYXRvcltcInRocm93XCJdKHZhbHVlKSk7IH0gY2F0Y2ggKGUpIHsgcmVqZWN0KGUpOyB9IH1cclxuICAgICAgICBmdW5jdGlvbiBzdGVwKHJlc3VsdCkgeyByZXN1bHQuZG9uZSA/IHJlc29sdmUocmVzdWx0LnZhbHVlKSA6IG5ldyBQKGZ1bmN0aW9uIChyZXNvbHZlKSB7IHJlc29sdmUocmVzdWx0LnZhbHVlKTsgfSkudGhlbihmdWxmaWxsZWQsIHJlamVjdGVkKTsgfVxyXG4gICAgICAgIHN0ZXAoKGdlbmVyYXRvciA9IGdlbmVyYXRvci5hcHBseSh0aGlzQXJnLCBfYXJndW1lbnRzIHx8IFtdKSkubmV4dCgpKTtcclxuICAgIH0pO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19nZW5lcmF0b3IodGhpc0FyZywgYm9keSkge1xyXG4gICAgdmFyIF8gPSB7IGxhYmVsOiAwLCBzZW50OiBmdW5jdGlvbigpIHsgaWYgKHRbMF0gJiAxKSB0aHJvdyB0WzFdOyByZXR1cm4gdFsxXTsgfSwgdHJ5czogW10sIG9wczogW10gfSwgZiwgeSwgdCwgZztcclxuICAgIHJldHVybiBnID0geyBuZXh0OiB2ZXJiKDApLCBcInRocm93XCI6IHZlcmIoMSksIFwicmV0dXJuXCI6IHZlcmIoMikgfSwgdHlwZW9mIFN5bWJvbCA9PT0gXCJmdW5jdGlvblwiICYmIChnW1N5bWJvbC5pdGVyYXRvcl0gPSBmdW5jdGlvbigpIHsgcmV0dXJuIHRoaXM7IH0pLCBnO1xyXG4gICAgZnVuY3Rpb24gdmVyYihuKSB7IHJldHVybiBmdW5jdGlvbiAodikgeyByZXR1cm4gc3RlcChbbiwgdl0pOyB9OyB9XHJcbiAgICBmdW5jdGlvbiBzdGVwKG9wKSB7XHJcbiAgICAgICAgaWYgKGYpIHRocm93IG5ldyBUeXBlRXJyb3IoXCJHZW5lcmF0b3IgaXMgYWxyZWFkeSBleGVjdXRpbmcuXCIpO1xyXG4gICAgICAgIHdoaWxlIChfKSB0cnkge1xyXG4gICAgICAgICAgICBpZiAoZiA9IDEsIHkgJiYgKHQgPSBvcFswXSAmIDIgPyB5W1wicmV0dXJuXCJdIDogb3BbMF0gPyB5W1widGhyb3dcIl0gfHwgKCh0ID0geVtcInJldHVyblwiXSkgJiYgdC5jYWxsKHkpLCAwKSA6IHkubmV4dCkgJiYgISh0ID0gdC5jYWxsKHksIG9wWzFdKSkuZG9uZSkgcmV0dXJuIHQ7XHJcbiAgICAgICAgICAgIGlmICh5ID0gMCwgdCkgb3AgPSBbb3BbMF0gJiAyLCB0LnZhbHVlXTtcclxuICAgICAgICAgICAgc3dpdGNoIChvcFswXSkge1xyXG4gICAgICAgICAgICAgICAgY2FzZSAwOiBjYXNlIDE6IHQgPSBvcDsgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICBjYXNlIDQ6IF8ubGFiZWwrKzsgcmV0dXJuIHsgdmFsdWU6IG9wWzFdLCBkb25lOiBmYWxzZSB9O1xyXG4gICAgICAgICAgICAgICAgY2FzZSA1OiBfLmxhYmVsKys7IHkgPSBvcFsxXTsgb3AgPSBbMF07IGNvbnRpbnVlO1xyXG4gICAgICAgICAgICAgICAgY2FzZSA3OiBvcCA9IF8ub3BzLnBvcCgpOyBfLnRyeXMucG9wKCk7IGNvbnRpbnVlO1xyXG4gICAgICAgICAgICAgICAgZGVmYXVsdDpcclxuICAgICAgICAgICAgICAgICAgICBpZiAoISh0ID0gXy50cnlzLCB0ID0gdC5sZW5ndGggPiAwICYmIHRbdC5sZW5ndGggLSAxXSkgJiYgKG9wWzBdID09PSA2IHx8IG9wWzBdID09PSAyKSkgeyBfID0gMDsgY29udGludWU7IH1cclxuICAgICAgICAgICAgICAgICAgICBpZiAob3BbMF0gPT09IDMgJiYgKCF0IHx8IChvcFsxXSA+IHRbMF0gJiYgb3BbMV0gPCB0WzNdKSkpIHsgXy5sYWJlbCA9IG9wWzFdOyBicmVhazsgfVxyXG4gICAgICAgICAgICAgICAgICAgIGlmIChvcFswXSA9PT0gNiAmJiBfLmxhYmVsIDwgdFsxXSkgeyBfLmxhYmVsID0gdFsxXTsgdCA9IG9wOyBicmVhazsgfVxyXG4gICAgICAgICAgICAgICAgICAgIGlmICh0ICYmIF8ubGFiZWwgPCB0WzJdKSB7IF8ubGFiZWwgPSB0WzJdOyBfLm9wcy5wdXNoKG9wKTsgYnJlYWs7IH1cclxuICAgICAgICAgICAgICAgICAgICBpZiAodFsyXSkgXy5vcHMucG9wKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgXy50cnlzLnBvcCgpOyBjb250aW51ZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBvcCA9IGJvZHkuY2FsbCh0aGlzQXJnLCBfKTtcclxuICAgICAgICB9IGNhdGNoIChlKSB7IG9wID0gWzYsIGVdOyB5ID0gMDsgfSBmaW5hbGx5IHsgZiA9IHQgPSAwOyB9XHJcbiAgICAgICAgaWYgKG9wWzBdICYgNSkgdGhyb3cgb3BbMV07IHJldHVybiB7IHZhbHVlOiBvcFswXSA/IG9wWzFdIDogdm9pZCAwLCBkb25lOiB0cnVlIH07XHJcbiAgICB9XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX2V4cG9ydFN0YXIobSwgZXhwb3J0cykge1xyXG4gICAgZm9yICh2YXIgcCBpbiBtKSBpZiAoIWV4cG9ydHMuaGFzT3duUHJvcGVydHkocCkpIGV4cG9ydHNbcF0gPSBtW3BdO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX192YWx1ZXMobykge1xyXG4gICAgdmFyIG0gPSB0eXBlb2YgU3ltYm9sID09PSBcImZ1bmN0aW9uXCIgJiYgb1tTeW1ib2wuaXRlcmF0b3JdLCBpID0gMDtcclxuICAgIGlmIChtKSByZXR1cm4gbS5jYWxsKG8pO1xyXG4gICAgcmV0dXJuIHtcclxuICAgICAgICBuZXh0OiBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgICAgIGlmIChvICYmIGkgPj0gby5sZW5ndGgpIG8gPSB2b2lkIDA7XHJcbiAgICAgICAgICAgIHJldHVybiB7IHZhbHVlOiBvICYmIG9baSsrXSwgZG9uZTogIW8gfTtcclxuICAgICAgICB9XHJcbiAgICB9O1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19yZWFkKG8sIG4pIHtcclxuICAgIHZhciBtID0gdHlwZW9mIFN5bWJvbCA9PT0gXCJmdW5jdGlvblwiICYmIG9bU3ltYm9sLml0ZXJhdG9yXTtcclxuICAgIGlmICghbSkgcmV0dXJuIG87XHJcbiAgICB2YXIgaSA9IG0uY2FsbChvKSwgciwgYXIgPSBbXSwgZTtcclxuICAgIHRyeSB7XHJcbiAgICAgICAgd2hpbGUgKChuID09PSB2b2lkIDAgfHwgbi0tID4gMCkgJiYgIShyID0gaS5uZXh0KCkpLmRvbmUpIGFyLnB1c2goci52YWx1ZSk7XHJcbiAgICB9XHJcbiAgICBjYXRjaCAoZXJyb3IpIHsgZSA9IHsgZXJyb3I6IGVycm9yIH07IH1cclxuICAgIGZpbmFsbHkge1xyXG4gICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgIGlmIChyICYmICFyLmRvbmUgJiYgKG0gPSBpW1wicmV0dXJuXCJdKSkgbS5jYWxsKGkpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBmaW5hbGx5IHsgaWYgKGUpIHRocm93IGUuZXJyb3I7IH1cclxuICAgIH1cclxuICAgIHJldHVybiBhcjtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fc3ByZWFkKCkge1xyXG4gICAgZm9yICh2YXIgYXIgPSBbXSwgaSA9IDA7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspXHJcbiAgICAgICAgYXIgPSBhci5jb25jYXQoX19yZWFkKGFyZ3VtZW50c1tpXSkpO1xyXG4gICAgcmV0dXJuIGFyO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19hd2FpdCh2KSB7XHJcbiAgICByZXR1cm4gdGhpcyBpbnN0YW5jZW9mIF9fYXdhaXQgPyAodGhpcy52ID0gdiwgdGhpcykgOiBuZXcgX19hd2FpdCh2KTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fYXN5bmNHZW5lcmF0b3IodGhpc0FyZywgX2FyZ3VtZW50cywgZ2VuZXJhdG9yKSB7XHJcbiAgICBpZiAoIVN5bWJvbC5hc3luY0l0ZXJhdG9yKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiU3ltYm9sLmFzeW5jSXRlcmF0b3IgaXMgbm90IGRlZmluZWQuXCIpO1xyXG4gICAgdmFyIGcgPSBnZW5lcmF0b3IuYXBwbHkodGhpc0FyZywgX2FyZ3VtZW50cyB8fCBbXSksIGksIHEgPSBbXTtcclxuICAgIHJldHVybiBpID0ge30sIHZlcmIoXCJuZXh0XCIpLCB2ZXJiKFwidGhyb3dcIiksIHZlcmIoXCJyZXR1cm5cIiksIGlbU3ltYm9sLmFzeW5jSXRlcmF0b3JdID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gdGhpczsgfSwgaTtcclxuICAgIGZ1bmN0aW9uIHZlcmIobikgeyBpZiAoZ1tuXSkgaVtuXSA9IGZ1bmN0aW9uICh2KSB7IHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbiAoYSwgYikgeyBxLnB1c2goW24sIHYsIGEsIGJdKSA+IDEgfHwgcmVzdW1lKG4sIHYpOyB9KTsgfTsgfVxyXG4gICAgZnVuY3Rpb24gcmVzdW1lKG4sIHYpIHsgdHJ5IHsgc3RlcChnW25dKHYpKTsgfSBjYXRjaCAoZSkgeyBzZXR0bGUocVswXVszXSwgZSk7IH0gfVxyXG4gICAgZnVuY3Rpb24gc3RlcChyKSB7IHIudmFsdWUgaW5zdGFuY2VvZiBfX2F3YWl0ID8gUHJvbWlzZS5yZXNvbHZlKHIudmFsdWUudikudGhlbihmdWxmaWxsLCByZWplY3QpIDogc2V0dGxlKHFbMF1bMl0sIHIpOyB9XHJcbiAgICBmdW5jdGlvbiBmdWxmaWxsKHZhbHVlKSB7IHJlc3VtZShcIm5leHRcIiwgdmFsdWUpOyB9XHJcbiAgICBmdW5jdGlvbiByZWplY3QodmFsdWUpIHsgcmVzdW1lKFwidGhyb3dcIiwgdmFsdWUpOyB9XHJcbiAgICBmdW5jdGlvbiBzZXR0bGUoZiwgdikgeyBpZiAoZih2KSwgcS5zaGlmdCgpLCBxLmxlbmd0aCkgcmVzdW1lKHFbMF1bMF0sIHFbMF1bMV0pOyB9XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX2FzeW5jRGVsZWdhdG9yKG8pIHtcclxuICAgIHZhciBpLCBwO1xyXG4gICAgcmV0dXJuIGkgPSB7fSwgdmVyYihcIm5leHRcIiksIHZlcmIoXCJ0aHJvd1wiLCBmdW5jdGlvbiAoZSkgeyB0aHJvdyBlOyB9KSwgdmVyYihcInJldHVyblwiKSwgaVtTeW1ib2wuaXRlcmF0b3JdID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gdGhpczsgfSwgaTtcclxuICAgIGZ1bmN0aW9uIHZlcmIobiwgZikgeyBpW25dID0gb1tuXSA/IGZ1bmN0aW9uICh2KSB7IHJldHVybiAocCA9ICFwKSA/IHsgdmFsdWU6IF9fYXdhaXQob1tuXSh2KSksIGRvbmU6IG4gPT09IFwicmV0dXJuXCIgfSA6IGYgPyBmKHYpIDogdjsgfSA6IGY7IH1cclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fYXN5bmNWYWx1ZXMobykge1xyXG4gICAgaWYgKCFTeW1ib2wuYXN5bmNJdGVyYXRvcikgdGhyb3cgbmV3IFR5cGVFcnJvcihcIlN5bWJvbC5hc3luY0l0ZXJhdG9yIGlzIG5vdCBkZWZpbmVkLlwiKTtcclxuICAgIHZhciBtID0gb1tTeW1ib2wuYXN5bmNJdGVyYXRvcl0sIGk7XHJcbiAgICByZXR1cm4gbSA/IG0uY2FsbChvKSA6IChvID0gdHlwZW9mIF9fdmFsdWVzID09PSBcImZ1bmN0aW9uXCIgPyBfX3ZhbHVlcyhvKSA6IG9bU3ltYm9sLml0ZXJhdG9yXSgpLCBpID0ge30sIHZlcmIoXCJuZXh0XCIpLCB2ZXJiKFwidGhyb3dcIiksIHZlcmIoXCJyZXR1cm5cIiksIGlbU3ltYm9sLmFzeW5jSXRlcmF0b3JdID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gdGhpczsgfSwgaSk7XHJcbiAgICBmdW5jdGlvbiB2ZXJiKG4pIHsgaVtuXSA9IG9bbl0gJiYgZnVuY3Rpb24gKHYpIHsgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHsgdiA9IG9bbl0odiksIHNldHRsZShyZXNvbHZlLCByZWplY3QsIHYuZG9uZSwgdi52YWx1ZSk7IH0pOyB9OyB9XHJcbiAgICBmdW5jdGlvbiBzZXR0bGUocmVzb2x2ZSwgcmVqZWN0LCBkLCB2KSB7IFByb21pc2UucmVzb2x2ZSh2KS50aGVuKGZ1bmN0aW9uKHYpIHsgcmVzb2x2ZSh7IHZhbHVlOiB2LCBkb25lOiBkIH0pOyB9LCByZWplY3QpOyB9XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX21ha2VUZW1wbGF0ZU9iamVjdChjb29rZWQsIHJhdykge1xyXG4gICAgaWYgKE9iamVjdC5kZWZpbmVQcm9wZXJ0eSkgeyBPYmplY3QuZGVmaW5lUHJvcGVydHkoY29va2VkLCBcInJhd1wiLCB7IHZhbHVlOiByYXcgfSk7IH0gZWxzZSB7IGNvb2tlZC5yYXcgPSByYXc7IH1cclxuICAgIHJldHVybiBjb29rZWQ7XHJcbn07XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19pbXBvcnRTdGFyKG1vZCkge1xyXG4gICAgaWYgKG1vZCAmJiBtb2QuX19lc01vZHVsZSkgcmV0dXJuIG1vZDtcclxuICAgIHZhciByZXN1bHQgPSB7fTtcclxuICAgIGlmIChtb2QgIT0gbnVsbCkgZm9yICh2YXIgayBpbiBtb2QpIGlmIChPYmplY3QuaGFzT3duUHJvcGVydHkuY2FsbChtb2QsIGspKSByZXN1bHRba10gPSBtb2Rba107XHJcbiAgICByZXN1bHQuZGVmYXVsdCA9IG1vZDtcclxuICAgIHJldHVybiByZXN1bHQ7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX2ltcG9ydERlZmF1bHQobW9kKSB7XHJcbiAgICByZXR1cm4gKG1vZCAmJiBtb2QuX19lc01vZHVsZSkgPyBtb2QgOiB7IGRlZmF1bHQ6IG1vZCB9O1xyXG59XHJcbiIsImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0LCBFbGVtZW50UmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBUZXN0QmVkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZS90ZXN0aW5nJztcbmltcG9ydCB7IGdldFF1ZXJpZXNGb3JFbGVtZW50LCBwcmV0dHlET00sIGZpcmVFdmVudCwgRmlyZU9iamVjdCwgRmlyZUZ1bmN0aW9uIH0gZnJvbSAnZG9tLXRlc3RpbmctbGlicmFyeSc7XG5cbmltcG9ydCB7IE9wdGlvbnMsIFJlbmRlclJlc3VsdCwgQ29tcG9uZW50SW5wdXQgfSBmcm9tICcuL21vZGVscyc7XG5cbkBDb21wb25lbnQoeyBzZWxlY3RvcjogJ3Rlc3QtY29tcG9uZW50JywgdGVtcGxhdGU6ICcnIH0pXG5jbGFzcyBUZXN0Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBlbGVtdFJlZjogRWxlbWVudFJlZikge31cblxuICBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLmVsZW10UmVmLm5hdGl2ZUVsZW1lbnQucmVtb3ZlQXR0cmlidXRlKCduZy12ZXJzaW9uJyk7XG4gIH1cbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGNyZWF0ZUNvbXBvbmVudDxUPih0ZW1wbGF0ZTogc3RyaW5nLCBvcHRpb25zOiBPcHRpb25zKTogUHJvbWlzZTxSZW5kZXJSZXN1bHQ+O1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGNyZWF0ZUNvbXBvbmVudDxUPihjb21wb25lbnQ6IENvbXBvbmVudElucHV0PFQ+LCBvcHRpb25zOiBPcHRpb25zKTogUHJvbWlzZTxSZW5kZXJSZXN1bHQ+O1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGNyZWF0ZUNvbXBvbmVudDxUPihcbiAgdGVtcGxhdGVPckNvbXBvbmVudDogc3RyaW5nIHwgQ29tcG9uZW50SW5wdXQ8VD4sXG4gIHsgZGV0ZWN0Q2hhbmdlcyA9IHRydWUsIGRlY2xhcmF0aW9ucyA9IFtdLCBwcm92aWRlcnMgPSBbXSwgaW1wb3J0cyA9IFtdLCBzY2hlbWFzID0gW10gfTogT3B0aW9ucyxcbik6IFByb21pc2U8UmVuZGVyUmVzdWx0PiB7XG4gIGNvbnN0IGlzVGVtcGxhdGUgPSB0eXBlb2YgdGVtcGxhdGVPckNvbXBvbmVudCA9PT0gJ3N0cmluZyc7XG4gIGNvbnN0IHRlc3RDb21wb25lbnQgPSBpc1RlbXBsYXRlID8gW1Rlc3RDb21wb25lbnRdIDogW107XG5cbiAgVGVzdEJlZC5jb25maWd1cmVUZXN0aW5nTW9kdWxlKHtcbiAgICBkZWNsYXJhdGlvbnM6IFsuLi5kZWNsYXJhdGlvbnMsIC4uLnRlc3RDb21wb25lbnRdLFxuICAgIHByb3ZpZGVyczogWy4uLnByb3ZpZGVyc10sXG4gICAgaW1wb3J0czogWy4uLmltcG9ydHNdLFxuICAgIHNjaGVtYXM6IFsuLi5zY2hlbWFzXSxcbiAgfSk7XG5cbiAgY29uc3QgZml4dHVyZSA9IGlzVGVtcGxhdGVcbiAgICA/IGNyZWF0ZVRlc3RDb21wb25lbnRGaXh0dXJlKDxzdHJpbmc+dGVtcGxhdGVPckNvbXBvbmVudClcbiAgICA6IGNyZWF0ZUNvbXBvbmVudEZpeHR1cmUoPENvbXBvbmVudElucHV0PFQ+PnRlbXBsYXRlT3JDb21wb25lbnQpO1xuXG4gIGF3YWl0IFRlc3RCZWQuY29tcGlsZUNvbXBvbmVudHMoKTtcblxuICBpZiAoZGV0ZWN0Q2hhbmdlcykge1xuICAgIGZpeHR1cmUuZGV0ZWN0Q2hhbmdlcygpO1xuICB9XG5cbiAgY29uc3QgZXZlbnRzV2l0aERldGVjdENoYW5nZXMgPSBPYmplY3Qua2V5cyhmaXJlRXZlbnQpLnJlZHVjZShcbiAgICAoZXZlbnRzLCBrZXkpID0+IHtcbiAgICAgIGV2ZW50c1trZXldID0gKGVsZW1lbnQ6IEhUTUxFbGVtZW50LCBvcHRpb25zPzoge30pID0+IHtcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gZmlyZUV2ZW50W2tleV0oZWxlbWVudCwgb3B0aW9ucyk7XG4gICAgICAgIGZpeHR1cmUuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgfTtcbiAgICAgIHJldHVybiBldmVudHM7XG4gICAgfSxcbiAgICB7fSBhcyBGaXJlRnVuY3Rpb24gJiBGaXJlT2JqZWN0LFxuICApO1xuXG4gIHJldHVybiB7XG4gICAgZml4dHVyZSxcbiAgICBjb250YWluZXI6IGZpeHR1cmUubmF0aXZlRWxlbWVudCxcbiAgICBnZXRGcm9tVGVzdEJlZDogVGVzdEJlZC5nZXQsXG4gICAgZGVidWc6ICgpID0+IGNvbnNvbGUubG9nKHByZXR0eURPTShmaXh0dXJlLm5hdGl2ZUVsZW1lbnQpKSxcbiAgICAuLi5ldmVudHNXaXRoRGV0ZWN0Q2hhbmdlcyxcbiAgICAuLi5nZXRRdWVyaWVzRm9yRWxlbWVudChmaXh0dXJlLm5hdGl2ZUVsZW1lbnQpLFxuICB9O1xufVxuXG5mdW5jdGlvbiBjcmVhdGVUZXN0Q29tcG9uZW50Rml4dHVyZSh0ZW1wbGF0ZTogc3RyaW5nKSB7XG4gIFRlc3RCZWQub3ZlcnJpZGVDb21wb25lbnQoVGVzdENvbXBvbmVudCwge1xuICAgIHNldDoge1xuICAgICAgdGVtcGxhdGU6IHRlbXBsYXRlLFxuICAgIH0sXG4gIH0pO1xuICByZXR1cm4gVGVzdEJlZC5jcmVhdGVDb21wb25lbnQoVGVzdENvbXBvbmVudCk7XG59XG5cbmZ1bmN0aW9uIGNyZWF0ZUNvbXBvbmVudEZpeHR1cmU8VD4oY29tcG9uZW50SW5wdXQ6IENvbXBvbmVudElucHV0PFQ+KSB7XG4gIGNvbnN0IHsgY29tcG9uZW50LCBwYXJhbWV0ZXJzID0ge30gfSA9IGNvbXBvbmVudElucHV0O1xuICBjb25zdCBmaXh0dXJlID0gVGVzdEJlZC5jcmVhdGVDb21wb25lbnQoY29tcG9uZW50KTtcbiAgZm9yIChjb25zdCBrZXkgb2YgT2JqZWN0LmtleXMocGFyYW1ldGVycykpIHtcbiAgICBmaXh0dXJlLmNvbXBvbmVudEluc3RhbmNlW2tleV0gPSBwYXJhbWV0ZXJzW2tleV07XG4gIH1cbiAgcmV0dXJuIGZpeHR1cmU7XG59XG4iLCJpbXBvcnQgeyBUZXN0QmVkLCBnZXRUZXN0QmVkLCBDb21wb25lbnRGaXh0dXJlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZS90ZXN0aW5nJztcbmltcG9ydCAnamVzdCc7XG5cbi8vIFJlZjogaHR0cHM6Ly9naXRodWIuY29tL2FuZ3VsYXIvYW5ndWxhci9pc3N1ZXMvMTI0MDlcbmV4cG9ydCBmdW5jdGlvbiBjb25maWd1cmVKZXN0U2V0dXAoKSB7XG4gIGNvbnN0IHRlc3RCZWRBcGk6IGFueSA9IGdldFRlc3RCZWQoKTtcbiAgY29uc3Qgb3JpZ2luUmVzZXQgPSBUZXN0QmVkLnJlc2V0VGVzdGluZ01vZHVsZTtcblxuICBiZWZvcmVBbGwoKCkgPT4ge1xuICAgIFRlc3RCZWQucmVzZXRUZXN0aW5nTW9kdWxlKCk7XG4gICAgVGVzdEJlZC5yZXNldFRlc3RpbmdNb2R1bGUgPSAoKSA9PiBUZXN0QmVkO1xuICB9KTtcblxuICBhZnRlckVhY2goKCkgPT4ge1xuICAgIHRlc3RCZWRBcGkuX2FjdGl2ZUZpeHR1cmVzLmZvckVhY2goKGZpeHR1cmU6IENvbXBvbmVudEZpeHR1cmU8YW55PikgPT4gZml4dHVyZS5kZXN0cm95KCkpO1xuICAgIHRlc3RCZWRBcGkuX2luc3RhbnRpYXRlZCA9IGZhbHNlO1xuICB9KTtcblxuICBhZnRlckFsbCgoKSA9PiB7XG4gICAgVGVzdEJlZC5yZXNldFRlc3RpbmdNb2R1bGUgPSBvcmlnaW5SZXNldDtcbiAgICBUZXN0QmVkLnJlc2V0VGVzdGluZ01vZHVsZSgpO1xuICB9KTtcbn1cbiJdLCJuYW1lcyI6WyJDb21wb25lbnQiLCJFbGVtZW50UmVmIiwiVGVzdEJlZCIsImZpcmVFdmVudCIsInByZXR0eURPTSIsImdldFF1ZXJpZXNGb3JFbGVtZW50IiwidHNsaWJfMS5fX3ZhbHVlcyIsImdldFRlc3RCZWQiXSwibWFwcGluZ3MiOiI7Ozs7OztJQUFBOzs7Ozs7Ozs7Ozs7OztBQWNBLElBZU8sSUFBSSxRQUFRLEdBQUc7UUFDbEIsUUFBUSxHQUFHLE1BQU0sQ0FBQyxNQUFNLElBQUksU0FBUyxRQUFRLENBQUMsQ0FBQztZQUMzQyxLQUFLLElBQUksQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLFNBQVMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRTtnQkFDakQsQ0FBQyxHQUFHLFNBQVMsQ0FBQyxD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QkFDakQsS0FBSyxDQUFDOzRCQUFFLEVBQUUsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFDOzRCQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUM7NEJBQUMsU0FBUzt3QkFDakQ7NEJBQ0ksSUFBSSxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFO2dDQUFFLENBQUMsR0FBRyxDQUFDLENBQUM7Z0NBQUMsU0FBUzs2QkFBRTs0QkFDNUcsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUU7Z0NBQUUsQ0FBQyxDQUFDLEtBQUssR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0NBQUMsTUFBTTs2QkFBRTs0QkFDdEYsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFO2dDQUFFLENBQUMsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO2dDQUFDLENBQUMsR0FBRyxFQUFFLENBQUM7Z0NBQUMsTUFBTTs2QkFBRTs0QkFDckUsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUU7Z0NBQUUsQ0FBQyxDQUFDLEtBQUssR0FBRyxD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
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5ndWxhci1leHRlbnNpb25zLXRlc3RpbmctbGlicmFyeS51bWQuanMubWFwIiwic291cmNlcyI6W251bGwsIm5nOi8vQGFuZ3VsYXItZXh0ZW5zaW9ucy90ZXN0aW5nLWxpYnJhcnkvbGliL3Rlc3RpbmctbGlicmFyeS50cyIsIm5nOi8vQGFuZ3VsYXItZXh0ZW5zaW9ucy90ZXN0aW5nLWxpYnJhcnkvamVzdC11dGlscy9jb25maWd1cmUtdGVzdC1zdWl0ZS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKiEgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcclxuQ29weXJpZ2h0IChjKSBNaWNyb3NvZnQgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuXHJcbkxpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7IHlvdSBtYXkgbm90IHVzZVxyXG50aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZVxyXG5MaWNlbnNlIGF0IGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxyXG5cclxuVEhJUyBDT0RFIElTIFBST1ZJREVEIE9OIEFOICpBUyBJUyogQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWVxyXG5LSU5ELCBFSVRIRVIgRVhQUkVTUyBPUiBJTVBMSUVELCBJTkNMVURJTkcgV0lUSE9VVCBMSU1JVEFUSU9OIEFOWSBJTVBMSUVEXHJcbldBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBUSVRMRSwgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UsXHJcbk1FUkNIQU5UQUJMSVRZIE9SIE5PTi1JTkZSSU5HRU1FTlQuXHJcblxyXG5TZWUgdGhlIEFwYWNoZSBWZXJzaW9uIDIuMCBMaWNlbnNlIGZvciBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnNcclxuYW5kIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxyXG4qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAqL1xyXG4vKiBnbG9iYWwgUmVmbGVjdCwgUHJvbWlzZSAqL1xyXG5cclxudmFyIGV4dGVuZFN0YXRpY3MgPSBmdW5jdGlvbihkLCBiKSB7XHJcbiAgICBleHRlbmRTdGF0aWNzID0gT2JqZWN0LnNldFByb3RvdHlwZU9mIHx8XHJcbiAgICAgICAgKHsgX19wcm90b19fOiBbXSB9IGluc3RhbmNlb2YgQXJyYXkgJiYgZnVuY3Rpb24gKGQsIGIpIHsgZC5fX3Byb3RvX18gPSBiOyB9KSB8fFxyXG4gICAgICAgIGZ1bmN0aW9uIChkLCBiKSB7IGZvciAodmFyIHAgaW4gYikgaWYgKGIuaGFzT3duUHJvcGVydHkocCkpIGRbcF0gPSBiW3BdOyB9O1xyXG4gICAgcmV0dXJuIGV4dGVuZFN0YXRpY3MoZCwgYik7XHJcbn07XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19leHRlbmRzKGQsIGIpIHtcclxuICAgIGV4dGVuZFN0YXRpY3MoZCwgYik7XHJcbiAgICBmdW5jdGlvbiBfXygpIHsgdGhpcy5jb25zdHJ1Y3RvciA9IGQ7IH1cclxuICAgIGQucHJvdG90eXBlID0gYiA9PT0gbnVsbCA/IE9iamVjdC5jcmVhdGUoYikgOiAoX18ucHJvdG90eXBlID0gYi5wcm90b3R5cGUsIG5ldyBfXygpKTtcclxufVxyXG5cclxuZXhwb3J0IHZhciBfX2Fzc2lnbiA9IGZ1bmN0aW9uKCkge1xyXG4gICAgX19hc3NpZ24gPSBPYmplY3QuYXNzaWduIHx8IGZ1bmN0aW9uIF9fYXNzaWduKHQpIHtcclxuICAgICAgICBmb3IgKHZhciBzLCBpID0gMSwgbiA9IGFyZ3VtZW50cy5sZW5ndGg7IGkgPCBuOyBpKyspIHtcclxuICAgICAgICAgICAgcyA9IGFyZ3VtZW50c1tpXTtcclxuICAgICAgICAgICAgZm9yICh2YXIgcCBpbiBzKSBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHMsIHApKSB0W3BdID0gc1twXTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHQ7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gX19hc3NpZ24uYXBwbHkodGhpcywgYXJndW1lbnRzKTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fcmVzdChzLCBlKSB7XHJcbiAgICB2YXIgdCA9IHt9O1xyXG4gICAgZm9yICh2YXIgcCBpbiBzKSBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHMsIHApICYmIGUuaW5kZXhPZihwKSA8IDApXHJcbiAgICAgICAgdFtwXSA9IHNbcF07XHJcbiAgICBpZiAocyAhPSBudWxsICYmIHR5cGVvZiBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzID09PSBcImZ1bmN0aW9uXCIpXHJcbiAgICAgICAgZm9yICh2YXIgaSA9IDAsIHAgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKHMpOyBpIDwgcC5sZW5ndGg7IGkrKykgaWYgKGUuaW5kZXhPZihwW2ldKSA8IDApXHJcbiAgICAgICAgICAgIHRbcFtpXV0gPSBzW3BbaV1dO1xyXG4gICAgcmV0dXJuIHQ7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX2RlY29yYXRlKGRlY29yYXRvcnMsIHRhcmdldCwga2V5LCBkZXNjKSB7XHJcbiAgICB2YXIgYyA9IGFyZ3VtZW50cy5sZW5ndGgsIHIgPSBjIDwgMyA/IHRhcmdldCA6IGRlc2MgPT09IG51bGwgPyBkZXNjID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih0YXJnZXQsIGtleSkgOiBkZXNjLCBkO1xyXG4gICAgaWYgKHR5cGVvZiBSZWZsZWN0ID09PSBcIm9iamVjdFwiICYmIHR5cGVvZiBSZWZsZWN0LmRlY29yYXRlID09PSBcImZ1bmN0aW9uXCIpIHIgPSBSZWZsZWN0LmRlY29yYXRlKGRlY29yYXRvcnMsIHRhcmdldCwga2V5LCBkZXNjKTtcclxuICAgIGVsc2UgZm9yICh2YXIgaSA9IGRlY29yYXRvcnMubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIGlmIChkID0gZGVjb3JhdG9yc1tpXSkgciA9IChjIDwgMyA/IGQocikgOiBjID4gMyA/IGQodGFyZ2V0LCBrZXksIHIpIDogZCh0YXJnZXQsIGtleSkpIHx8IHI7XHJcbiAgICByZXR1cm4gYyA+IDMgJiYgciAmJiBPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBrZXksIHIpLCByO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19wYXJhbShwYXJhbUluZGV4LCBkZWNvcmF0b3IpIHtcclxuICAgIHJldHVybiBmdW5jdGlvbiAodGFyZ2V0LCBrZXkpIHsgZGVjb3JhdG9yKHRhcmdldCwga2V5LCBwYXJhbUluZGV4KTsgfVxyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19tZXRhZGF0YShtZXRhZGF0YUtleSwgbWV0YWRhdGFWYWx1ZSkge1xyXG4gICAgaWYgKHR5cGVvZiBSZWZsZWN0ID09PSBcIm9iamVjdFwiICYmIHR5cGVvZiBSZWZsZWN0Lm1ldGFkYXRhID09PSBcImZ1bmN0aW9uXCIpIHJldHVybiBSZWZsZWN0Lm1ldGFkYXRhKG1ldGFkYXRhS2V5LCBtZXRhZGF0YVZhbHVlKTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fYXdhaXRlcih0aGlzQXJnLCBfYXJndW1lbnRzLCBQLCBnZW5lcmF0b3IpIHtcclxuICAgIHJldHVybiBuZXcgKFAgfHwgKFAgPSBQcm9taXNlKSkoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkge1xyXG4gICAgICAgIGZ1bmN0aW9uIGZ1bGZpbGxlZCh2YWx1ZSkgeyB0cnkgeyBzdGVwKGdlbmVyYXRvci5uZXh0KHZhbHVlKSk7IH0gY2F0Y2ggKGUpIHsgcmVqZWN0KGUpOyB9IH1cclxuICAgICAgICBmdW5jdGlvbiByZWplY3RlZCh2YWx1ZSkgeyB0cnkgeyBzdGVwKGdlbmVyYXRvcltcInRocm93XCJdKHZhbHVlKSk7IH0gY2F0Y2ggKGUpIHsgcmVqZWN0KGUpOyB9IH1cclxuICAgICAgICBmdW5jdGlvbiBzdGVwKHJlc3VsdCkgeyByZXN1bHQuZG9uZSA/IHJlc29sdmUocmVzdWx0LnZhbHVlKSA6IG5ldyBQKGZ1bmN0aW9uIChyZXNvbHZlKSB7IHJlc29sdmUocmVzdWx0LnZhbHVlKTsgfSkudGhlbihmdWxmaWxsZWQsIHJlamVjdGVkKTsgfVxyXG4gICAgICAgIHN0ZXAoKGdlbmVyYXRvciA9IGdlbmVyYXRvci5hcHBseSh0aGlzQXJnLCBfYXJndW1lbnRzIHx8IFtdKSkubmV4dCgpKTtcclxuICAgIH0pO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19nZW5lcmF0b3IodGhpc0FyZywgYm9keSkge1xyXG4gICAgdmFyIF8gPSB7IGxhYmVsOiAwLCBzZW50OiBmdW5jdGlvbigpIHsgaWYgKHRbMF0gJiAxKSB0aHJvdyB0WzFdOyByZXR1cm4gdFsxXTsgfSwgdHJ5czogW10sIG9wczogW10gfSwgZiwgeSwgdCwgZztcclxuICAgIHJldHVybiBnID0geyBuZXh0OiB2ZXJiKDApLCBcInRocm93XCI6IHZlcmIoMSksIFwicmV0dXJuXCI6IHZlcmIoMikgfSwgdHlwZW9mIFN5bWJvbCA9PT0gXCJmdW5jdGlvblwiICYmIChnW1N5bWJvbC5pdGVyYXRvcl0gPSBmdW5jdGlvbigpIHsgcmV0dXJuIHRoaXM7IH0pLCBnO1xyXG4gICAgZnVuY3Rpb24gdmVyYihuKSB7IHJldHVybiBmdW5jdGlvbiAodikgeyByZXR1cm4gc3RlcChbbiwgdl0pOyB9OyB9XHJcbiAgICBmdW5jdGlvbiBzdGVwKG9wKSB7XHJcbiAgICAgICAgaWYgKGYpIHRocm93IG5ldyBUeXBlRXJyb3IoXCJHZW5lcmF0b3IgaXMgYWxyZWFkeSBleGVjdXRpbmcuXCIpO1xyXG4gICAgICAgIHdoaWxlIChfKSB0cnkge1xyXG4gICAgICAgICAgICBpZiAoZiA9IDEsIHkgJiYgKHQgPSBvcFswXSAmIDIgPyB5W1wicmV0dXJuXCJdIDogb3BbMF0gPyB5W1widGhyb3dcIl0gfHwgKCh0ID0geVtcInJldHVyblwiXSkgJiYgdC5jYWxsKHkpLCAwKSA6IHkubmV4dCkgJiYgISh0ID0gdC5jYWxsKHksIG9wWzFdKSkuZG9uZSkgcmV0dXJuIHQ7XHJcbiAgICAgICAgICAgIGlmICh5ID0gMCwgdCkgb3AgPSBbb3BbMF0gJiAyLCB0LnZhbHVlXTtcclxuICAgICAgICAgICAgc3dpdGNoIChvcFswXSkge1xyXG4gICAgICAgICAgICAgICAgY2FzZSAwOiBjYXNlIDE6IHQgPSBvcDsgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICBjYXNlIDQ6IF8ubGFiZWwrKzsgcmV0dXJuIHsgdmFsdWU6IG9wWzFdLCBkb25lOiBmYWxzZSB9O1xyXG4gICAgICAgICAgICAgICAgY2FzZSA1OiBfLmxhYmVsKys7IHkgPSBvcFsxXTsgb3AgPSBbMF07IGNvbnRpbnVlO1xyXG4gICAgICAgICAgICAgICAgY2FzZSA3OiBvcCA9IF8ub3BzLnBvcCgpOyBfLnRyeXMucG9wKCk7IGNvbnRpbnVlO1xyXG4gICAgICAgICAgICAgICAgZGVmYXVsdDpcclxuICAgICAgICAgICAgICAgICAgICBpZiAoISh0ID0gXy50cnlzLCB0ID0gdC5sZW5ndGggPiAwICYmIHRbdC5sZW5ndGggLSAxXSkgJiYgKG9wWzBdID09PSA2IHx8IG9wWzBdID09PSAyKSkgeyBfID0gMDsgY29udGludWU7IH1cclxuICAgICAgICAgICAgICAgICAgICBpZiAob3BbMF0gPT09IDMgJiYgKCF0IHx8IChvcFsxXSA+IHRbMF0gJiYgb3BbMV0gPCB0WzNdKSkpIHsgXy5sYWJlbCA9IG9wWzFdOyBicmVhazsgfVxyXG4gICAgICAgICAgICAgICAgICAgIGlmIChvcFswXSA9PT0gNiAmJiBfLmxhYmVsIDwgdFsxXSkgeyBfLmxhYmVsID0gdFsxXTsgdCA9IG9wOyBicmVhazsgfVxyXG4gICAgICAgICAgICAgICAgICAgIGlmICh0ICYmIF8ubGFiZWwgPCB0WzJdKSB7IF8ubGFiZWwgPSB0WzJdOyBfLm9wcy5wdXNoKG9wKTsgYnJlYWs7IH1cclxuICAgICAgICAgICAgICAgICAgICBpZiAodFsyXSkgXy5vcHMucG9wKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgXy50cnlzLnBvcCgpOyBjb250aW51ZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBvcCA9IGJvZHkuY2FsbCh0aGlzQXJnLCBfKTtcclxuICAgICAgICB9IGNhdGNoIChlKSB7IG9wID0gWzYsIGVdOyB5ID0gMDsgfSBmaW5hbGx5IHsgZiA9IHQgPSAwOyB9XHJcbiAgICAgICAgaWYgKG9wWzBdICYgNSkgdGhyb3cgb3BbMV07IHJldHVybiB7IHZhbHVlOiBvcFswXSA/IG9wWzFdIDogdm9pZCAwLCBkb25lOiB0cnVlIH07XHJcbiAgICB9XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX2V4cG9ydFN0YXIobSwgZXhwb3J0cykge1xyXG4gICAgZm9yICh2YXIgcCBpbiBtKSBpZiAoIWV4cG9ydHMuaGFzT3duUHJvcGVydHkocCkpIGV4cG9ydHNbcF0gPSBtW3BdO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX192YWx1ZXMobykge1xyXG4gICAgdmFyIG0gPSB0eXBlb2YgU3ltYm9sID09PSBcImZ1bmN0aW9uXCIgJiYgb1tTeW1ib2wuaXRlcmF0b3JdLCBpID0gMDtcclxuICAgIGlmIChtKSByZXR1cm4gbS5jYWxsKG8pO1xyXG4gICAgcmV0dXJuIHtcclxuICAgICAgICBuZXh0OiBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgICAgIGlmIChvICYmIGkgPj0gby5sZW5ndGgpIG8gPSB2b2lkIDA7XHJcbiAgICAgICAgICAgIHJldHVybiB7IHZhbHVlOiBvICYmIG9baSsrXSwgZG9uZTogIW8gfTtcclxuICAgICAgICB9XHJcbiAgICB9O1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19yZWFkKG8sIG4pIHtcclxuICAgIHZhciBtID0gdHlwZW9mIFN5bWJvbCA9PT0gXCJmdW5jdGlvblwiICYmIG9bU3ltYm9sLml0ZXJhdG9yXTtcclxuICAgIGlmICghbSkgcmV0dXJuIG87XHJcbiAgICB2YXIgaSA9IG0uY2FsbChvKSwgciwgYXIgPSBbXSwgZTtcclxuICAgIHRyeSB7XHJcbiAgICAgICAgd2hpbGUgKChuID09PSB2b2lkIDAgfHwgbi0tID4gMCkgJiYgIShyID0gaS5uZXh0KCkpLmRvbmUpIGFyLnB1c2goci52YWx1ZSk7XHJcbiAgICB9XHJcbiAgICBjYXRjaCAoZXJyb3IpIHsgZSA9IHsgZXJyb3I6IGVycm9yIH07IH1cclxuICAgIGZpbmFsbHkge1xyXG4gICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgIGlmIChyICYmICFyLmRvbmUgJiYgKG0gPSBpW1wicmV0dXJuXCJdKSkgbS5jYWxsKGkpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBmaW5hbGx5IHsgaWYgKGUpIHRocm93IGUuZXJyb3I7IH1cclxuICAgIH1cclxuICAgIHJldHVybiBhcjtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fc3ByZWFkKCkge1xyXG4gICAgZm9yICh2YXIgYXIgPSBbXSwgaSA9IDA7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspXHJcbiAgICAgICAgYXIgPSBhci5jb25jYXQoX19yZWFkKGFyZ3VtZW50c1tpXSkpO1xyXG4gICAgcmV0dXJuIGFyO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19hd2FpdCh2KSB7XHJcbiAgICByZXR1cm4gdGhpcyBpbnN0YW5jZW9mIF9fYXdhaXQgPyAodGhpcy52ID0gdiwgdGhpcykgOiBuZXcgX19hd2FpdCh2KTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fYXN5bmNHZW5lcmF0b3IodGhpc0FyZywgX2FyZ3VtZW50cywgZ2VuZXJhdG9yKSB7XHJcbiAgICBpZiAoIVN5bWJvbC5hc3luY0l0ZXJhdG9yKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiU3ltYm9sLmFzeW5jSXRlcmF0b3IgaXMgbm90IGRlZmluZWQuXCIpO1xyXG4gICAgdmFyIGcgPSBnZW5lcmF0b3IuYXBwbHkodGhpc0FyZywgX2FyZ3VtZW50cyB8fCBbXSksIGksIHEgPSBbXTtcclxuICAgIHJldHVybiBpID0ge30sIHZlcmIoXCJuZXh0XCIpLCB2ZXJiKFwidGhyb3dcIiksIHZlcmIoXCJyZXR1cm5cIiksIGlbU3ltYm9sLmFzeW5jSXRlcmF0b3JdID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gdGhpczsgfSwgaTtcclxuICAgIGZ1bmN0aW9uIHZlcmIobikgeyBpZiAoZ1tuXSkgaVtuXSA9IGZ1bmN0aW9uICh2KSB7IHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbiAoYSwgYikgeyBxLnB1c2goW24sIHYsIGEsIGJdKSA+IDEgfHwgcmVzdW1lKG4sIHYpOyB9KTsgfTsgfVxyXG4gICAgZnVuY3Rpb24gcmVzdW1lKG4sIHYpIHsgdHJ5IHsgc3RlcChnW25dKHYpKTsgfSBjYXRjaCAoZSkgeyBzZXR0bGUocVswXVszXSwgZSk7IH0gfVxyXG4gICAgZnVuY3Rpb24gc3RlcChyKSB7IHIudmFsdWUgaW5zdGFuY2VvZiBfX2F3YWl0ID8gUHJvbWlzZS5yZXNvbHZlKHIudmFsdWUudikudGhlbihmdWxmaWxsLCByZWplY3QpIDogc2V0dGxlKHFbMF1bMl0sIHIpOyB9XHJcbiAgICBmdW5jdGlvbiBmdWxmaWxsKHZhbHVlKSB7IHJlc3VtZShcIm5leHRcIiwgdmFsdWUpOyB9XHJcbiAgICBmdW5jdGlvbiByZWplY3QodmFsdWUpIHsgcmVzdW1lKFwidGhyb3dcIiwgdmFsdWUpOyB9XHJcbiAgICBmdW5jdGlvbiBzZXR0bGUoZiwgdikgeyBpZiAoZih2KSwgcS5zaGlmdCgpLCBxLmxlbmd0aCkgcmVzdW1lKHFbMF1bMF0sIHFbMF1bMV0pOyB9XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX2FzeW5jRGVsZWdhdG9yKG8pIHtcclxuICAgIHZhciBpLCBwO1xyXG4gICAgcmV0dXJuIGkgPSB7fSwgdmVyYihcIm5leHRcIiksIHZlcmIoXCJ0aHJvd1wiLCBmdW5jdGlvbiAoZSkgeyB0aHJvdyBlOyB9KSwgdmVyYihcInJldHVyblwiKSwgaVtTeW1ib2wuaXRlcmF0b3JdID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gdGhpczsgfSwgaTtcclxuICAgIGZ1bmN0aW9uIHZlcmIobiwgZikgeyBpW25dID0gb1tuXSA/IGZ1bmN0aW9uICh2KSB7IHJldHVybiAocCA9ICFwKSA/IHsgdmFsdWU6IF9fYXdhaXQob1tuXSh2KSksIGRvbmU6IG4gPT09IFwicmV0dXJuXCIgfSA6IGYgPyBmKHYpIDogdjsgfSA6IGY7IH1cclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fYXN5bmNWYWx1ZXMobykge1xyXG4gICAgaWYgKCFTeW1ib2wuYXN5bmNJdGVyYXRvcikgdGhyb3cgbmV3IFR5cGVFcnJvcihcIlN5bWJvbC5hc3luY0l0ZXJhdG9yIGlzIG5vdCBkZWZpbmVkLlwiKTtcclxuICAgIHZhciBtID0gb1tTeW1ib2wuYXN5bmNJdGVyYXRvcl0sIGk7XHJcbiAgICByZXR1cm4gbSA/IG0uY2FsbChvKSA6IChvID0gdHlwZW9mIF9fdmFsdWVzID09PSBcImZ1bmN0aW9uXCIgPyBfX3ZhbHVlcyhvKSA6IG9bU3ltYm9sLml0ZXJhdG9yXSgpLCBpID0ge30sIHZlcmIoXCJuZXh0XCIpLCB2ZXJiKFwidGhyb3dcIiksIHZlcmIoXCJyZXR1cm5cIiksIGlbU3ltYm9sLmFzeW5jSXRlcmF0b3JdID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gdGhpczsgfSwgaSk7XHJcbiAgICBmdW5jdGlvbiB2ZXJiKG4pIHsgaVtuXSA9IG9bbl0gJiYgZnVuY3Rpb24gKHYpIHsgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHsgdiA9IG9bbl0odiksIHNldHRsZShyZXNvbHZlLCByZWplY3QsIHYuZG9uZSwgdi52YWx1ZSk7IH0pOyB9OyB9XHJcbiAgICBmdW5jdGlvbiBzZXR0bGUocmVzb2x2ZSwgcmVqZWN0LCBkLCB2KSB7IFByb21pc2UucmVzb2x2ZSh2KS50aGVuKGZ1bmN0aW9uKHYpIHsgcmVzb2x2ZSh7IHZhbHVlOiB2LCBkb25lOiBkIH0pOyB9LCByZWplY3QpOyB9XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX21ha2VUZW1wbGF0ZU9iamVjdChjb29rZWQsIHJhdykge1xyXG4gICAgaWYgKE9iamVjdC5kZWZpbmVQcm9wZXJ0eSkgeyBPYmplY3QuZGVmaW5lUHJvcGVydHkoY29va2VkLCBcInJhd1wiLCB7IHZhbHVlOiByYXcgfSk7IH0gZWxzZSB7IGNvb2tlZC5yYXcgPSByYXc7IH1cclxuICAgIHJldHVybiBjb29rZWQ7XHJcbn07XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19pbXBvcnRTdGFyKG1vZCkge1xyXG4gICAgaWYgKG1vZCAmJiBtb2QuX19lc01vZHVsZSkgcmV0dXJuIG1vZDtcclxuICAgIHZhciByZXN1bHQgPSB7fTtcclxuICAgIGlmIChtb2QgIT0gbnVsbCkgZm9yICh2YXIgayBpbiBtb2QpIGlmIChPYmplY3QuaGFzT3duUHJvcGVydHkuY2FsbChtb2QsIGspKSByZXN1bHRba10gPSBtb2Rba107XHJcbiAgICByZXN1bHQuZGVmYXVsdCA9IG1vZDtcclxuICAgIHJldHVybiByZXN1bHQ7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX2ltcG9ydERlZmF1bHQobW9kKSB7XHJcbiAgICByZXR1cm4gKG1vZCAmJiBtb2QuX19lc01vZHVsZSkgPyBtb2QgOiB7IGRlZmF1bHQ6IG1vZCB9O1xyXG59XHJcbiIsImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0LCBFbGVtZW50UmVmLCBUeXBlLCBEZWJ1Z0VsZW1lbnQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFRlc3RCZWQsIENvbXBvbmVudEZpeHR1cmUgfSBmcm9tICdAYW5ndWxhci9jb3JlL3Rlc3RpbmcnO1xuaW1wb3J0IHsgZ2V0UXVlcmllc0ZvckVsZW1lbnQsIHByZXR0eURPTSwgZmlyZUV2ZW50LCBGaXJlT2JqZWN0LCBGaXJlRnVuY3Rpb24gfSBmcm9tICdkb20tdGVzdGluZy1saWJyYXJ5JztcblxuaW1wb3J0IHsgUmVuZGVyUmVzdWx0LCBSZW5kZXJPcHRpb25zIH0gZnJvbSAnLi9tb2RlbHMnO1xuaW1wb3J0IHsgQnkgfSBmcm9tICdAYW5ndWxhci9wbGF0Zm9ybS1icm93c2VyJztcblxuQENvbXBvbmVudCh7IHNlbGVjdG9yOiAnd3JhcHBlci1jb21wb25lbnQnLCB0ZW1wbGF0ZTogJycgfSlcbmNsYXNzIFdyYXBwZXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGVsZW10UmVmOiBFbGVtZW50UmVmKSB7fVxuXG4gIG5nT25Jbml0KCkge1xuICAgIHRoaXMuZWxlbXRSZWYubmF0aXZlRWxlbWVudC5yZW1vdmVBdHRyaWJ1dGUoJ25nLXZlcnNpb24nKTtcbiAgfVxufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcmVuZGVyPFQ+KFxuICB0ZW1wbGF0ZU9yQ29tcG9uZW50OiBzdHJpbmcgfCBUeXBlPFQ+LFxuICB7XG4gICAgZGV0ZWN0Q2hhbmdlcyA9IHRydWUsXG4gICAgZGVjbGFyYXRpb25zID0gW10sXG4gICAgaW1wb3J0cyA9IFtdLFxuICAgIHByb3ZpZGVycyA9IFtdLFxuICAgIHNjaGVtYXMgPSBbXSxcbiAgICBxdWVyaWVzLFxuICAgIHdyYXBwZXIgPSBXcmFwcGVyQ29tcG9uZW50LFxuICAgIGNvbXBvbmVudFByb3BlcnRpZXMgPSB7fSxcbiAgfTogUmVuZGVyT3B0aW9uczxUPixcbik6IFByb21pc2U8UmVuZGVyUmVzdWx0PiB7XG4gIGNvbnN0IGlzVGVtcGxhdGUgPSB0eXBlb2YgdGVtcGxhdGVPckNvbXBvbmVudCA9PT0gJ3N0cmluZyc7XG4gIGNvbnN0IGNvbXBvbmVudERlY2xhcmF0aW9ucyA9IGlzVGVtcGxhdGUgPyBbd3JhcHBlcl0gOiBbdGVtcGxhdGVPckNvbXBvbmVudF07XG5cbiAgVGVzdEJlZC5jb25maWd1cmVUZXN0aW5nTW9kdWxlKHtcbiAgICBkZWNsYXJhdGlvbnM6IFsuLi5kZWNsYXJhdGlvbnMsIC4uLmNvbXBvbmVudERlY2xhcmF0aW9uc10sXG4gICAgcHJvdmlkZXJzOiBbLi4ucHJvdmlkZXJzXSxcbiAgICBpbXBvcnRzOiBbLi4uaW1wb3J0c10sXG4gICAgc2NoZW1hczogWy4uLnNjaGVtYXNdLFxuICB9KTtcblxuICBjb25zdCBmaXh0dXJlID0gaXNUZW1wbGF0ZVxuICAgID8gY3JlYXRlV3JhcHBlckNvbXBvbmVudEZpeHR1cmUodGVtcGxhdGVPckNvbXBvbmVudCBhcyBzdHJpbmcsIHsgd3JhcHBlciwgY29tcG9uZW50UHJvcGVydGllcyB9KVxuICAgIDogY3JlYXRlQ29tcG9uZW50Rml4dHVyZSh0ZW1wbGF0ZU9yQ29tcG9uZW50IGFzIFR5cGU8VD4sIHsgY29tcG9uZW50UHJvcGVydGllcyB9KTtcblxuICBhd2FpdCBUZXN0QmVkLmNvbXBpbGVDb21wb25lbnRzKCk7XG5cbiAgaWYgKGRldGVjdENoYW5nZXMpIHtcbiAgICBmaXh0dXJlLmRldGVjdENoYW5nZXMoKTtcbiAgfVxuXG4gIGNvbnN0IGV2ZW50c1dpdGhEZXRlY3RDaGFuZ2VzID0gT2JqZWN0LmtleXMoZmlyZUV2ZW50KS5yZWR1Y2UoXG4gICAgKGV2ZW50cywga2V5KSA9PiB7XG4gICAgICBldmVudHNba2V5XSA9IChlbGVtZW50OiBIVE1MRWxlbWVudCwgb3B0aW9ucz86IHt9KSA9PiB7XG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IGZpcmVFdmVudFtrZXldKGVsZW1lbnQsIG9wdGlvbnMpO1xuICAgICAgICBmaXh0dXJlLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgIH07XG4gICAgICByZXR1cm4gZXZlbnRzO1xuICAgIH0sXG4gICAge30gYXMgRmlyZUZ1bmN0aW9uICYgRmlyZU9iamVjdCxcbiAgKTtcblxuICByZXR1cm4ge1xuICAgIGZpeHR1cmUsXG4gICAgY29udGFpbmVyOiBmaXh0dXJlLm5hdGl2ZUVsZW1lbnQsXG4gICAgZGVidWc6IChlbGVtZW50ID0gZml4dHVyZS5uYXRpdmVFbGVtZW50KSA9PiBjb25zb2xlLmxvZyhwcmV0dHlET00oZWxlbWVudCkpLFxuICAgIC4uLmdldFF1ZXJpZXNGb3JFbGVtZW50KGZpeHR1cmUubmF0aXZlRWxlbWVudCwgcXVlcmllcyksXG4gICAgLi4uZXZlbnRzV2l0aERldGVjdENoYW5nZXMsXG4gIH0gYXMgYW55O1xufVxuXG4vKipcbiAqIENyZWF0ZXMgdGhlIHdyYXBwZXIgY29tcG9uZW50IGFuZCBzZXRzIGl0cyB0aGUgdGVtcGxhdGUgdG8gdGhlIHRvLWJlLXRlc3RlZCBjb21wb25lbnRcbiAqL1xuZnVuY3Rpb24gY3JlYXRlV3JhcHBlckNvbXBvbmVudEZpeHR1cmU8VD4oXG4gIHRlbXBsYXRlOiBzdHJpbmcsXG4gIHtcbiAgICB3cmFwcGVyLFxuICAgIGNvbXBvbmVudFByb3BlcnRpZXMsXG4gIH06IHtcbiAgICB3cmFwcGVyOiBSZW5kZXJPcHRpb25zPFQ+Wyd3cmFwcGVyJ107XG4gICAgY29tcG9uZW50UHJvcGVydGllczogUmVuZGVyT3B0aW9uczxUPlsnY29tcG9uZW50UHJvcGVydGllcyddO1xuICB9LFxuKTogQ29tcG9uZW50Rml4dHVyZTxhbnk+IHtcbiAgVGVzdEJlZC5vdmVycmlkZUNvbXBvbmVudCh3cmFwcGVyLCB7XG4gICAgc2V0OiB7XG4gICAgICB0ZW1wbGF0ZTogdGVtcGxhdGUsXG4gICAgfSxcbiAgfSk7XG5cbiAgY29uc3QgZml4dHVyZSA9IFRlc3RCZWQuY3JlYXRlQ29tcG9uZW50KHdyYXBwZXIpO1xuICAvLyBnZXQgdGhlIGNvbXBvbmVudCBzZWxlY3RvciwgZS5nLiA8Zm9vIGNvbG9yPVwiZ3JlZW5cIj4gYW5kIDxmb28+IHJlc3VsdHMgaW4gZm9vXG4gIGNvbnN0IGNvbXBvbmVudFNlbGVjdG9yID0gdGVtcGxhdGUubWF0Y2goL1xcPCguKj8pXFwgLykgfHwgdGVtcGxhdGUubWF0Y2goL1xcPCguKj8pXFw+Lyk7XG4gIGlmICghY29tcG9uZW50U2VsZWN0b3IpIHtcbiAgICB0aHJvdyBFcnJvcihgVGVtcGxhdGUgJHt0ZW1wbGF0ZX0gaXMgbm90IHZhbGlkLmApO1xuICB9XG5cbiAgY29uc3Qgc3V0ID0gZml4dHVyZS5kZWJ1Z0VsZW1lbnQucXVlcnkoQnkuY3NzKGNvbXBvbmVudFNlbGVjdG9yWzFdKSk7XG4gIHNldENvbXBvbmVudFByb3BlcnRpZXMoc3V0LCB7IGNvbXBvbmVudFByb3BlcnRpZXMgfSk7XG4gIHJldHVybiBmaXh0dXJlO1xufVxuXG4vKipcbiAqIENyZWF0ZXMgdGhlIGNvbXBvbmVudHMgYW5kIHNldHMgaXRzIHByb3BlcnRpZXNcbiAqL1xuZnVuY3Rpb24gY3JlYXRlQ29tcG9uZW50Rml4dHVyZTxUPihcbiAgY29tcG9uZW50OiBUeXBlPFQ+LFxuICB7XG4gICAgY29tcG9uZW50UHJvcGVydGllcyA9IHt9LFxuICB9OiB7XG4gICAgY29tcG9uZW50UHJvcGVydGllczogUmVuZGVyT3B0aW9uczxUPlsnY29tcG9uZW50UHJvcGVydGllcyddO1xuICB9LFxuKTogQ29tcG9uZW50Rml4dHVyZTxUPiB7XG4gIGNvbnN0IGZpeHR1cmUgPSBUZXN0QmVkLmNyZWF0ZUNvbXBvbmVudChjb21wb25lbnQpO1xuICBzZXRDb21wb25lbnRQcm9wZXJ0aWVzKGZpeHR1cmUsIHsgY29tcG9uZW50UHJvcGVydGllcyB9KTtcbiAgcmV0dXJuIGZpeHR1cmU7XG59XG5cbi8qKlxuICogU2V0IHRoZSBjb21wb25lbnQgcHJvcGVydGllc1xuICovXG5mdW5jdGlvbiBzZXRDb21wb25lbnRQcm9wZXJ0aWVzPFQ+KFxuICBmaXh0dXJlOiBDb21wb25lbnRGaXh0dXJlPFQ+IHwgRGVidWdFbGVtZW50LFxuICB7XG4gICAgY29tcG9uZW50UHJvcGVydGllcyA9IHt9LFxuICB9OiB7XG4gICAgY29tcG9uZW50UHJvcGVydGllczogUmVuZGVyT3B0aW9uczxUPlsnY29tcG9uZW50UHJvcGVydGllcyddO1xuICB9LFxuKSB7XG4gIGZvciAoY29uc3Qga2V5IG9mIE9iamVjdC5rZXlzKGNvbXBvbmVudFByb3BlcnRpZXMpKSB7XG4gICAgZml4dHVyZS5jb21wb25lbnRJbnN0YW5jZVtrZXldID0gY29tcG9uZW50UHJvcGVydGllc1trZXldO1xuICB9XG4gIHJldHVybiBmaXh0dXJlO1xufVxuIiwiaW1wb3J0IHsgVGVzdEJlZCwgZ2V0VGVzdEJlZCwgQ29tcG9uZW50Rml4dHVyZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvdGVzdGluZyc7XG5pbXBvcnQgJ2plc3QnO1xuXG4vLyBSZWY6IGh0dHBzOi8vZ2l0aHViLmNvbS9hbmd1bGFyL2FuZ3VsYXIvaXNzdWVzLzEyNDA5XG5leHBvcnQgZnVuY3Rpb24gY29uZmlndXJlSmVzdFNldHVwKCkge1xuICBjb25zdCB0ZXN0QmVkQXBpOiBhbnkgPSBnZXRUZXN0QmVkKCk7XG4gIGNvbnN0IG9yaWdpblJlc2V0ID0gVGVzdEJlZC5yZXNldFRlc3RpbmdNb2R1bGU7XG5cbiAgYmVmb3JlQWxsKCgpID0+IHtcbiAgICBUZXN0QmVkLnJlc2V0VGVzdGluZ01vZHVsZSgpO1xuICAgIFRlc3RCZWQucmVzZXRUZXN0aW5nTW9kdWxlID0gKCkgPT4gVGVzdEJlZDtcbiAgfSk7XG5cbiAgYWZ0ZXJFYWNoKCgpID0+IHtcbiAgICB0ZXN0QmVkQXBpLl9hY3RpdmVGaXh0dXJlcy5mb3JFYWNoKChmaXh0dXJlOiBDb21wb25lbnRGaXh0dXJlPGFueT4pID0+IGZpeHR1cmUuZGVzdHJveSgpKTtcbiAgICB0ZXN0QmVkQXBpLl9pbnN0YW50aWF0ZWQgPSBmYWxzZTtcbiAgfSk7XG5cbiAgYWZ0ZXJBbGwoKCkgPT4ge1xuICAgIFRlc3RCZWQucmVzZXRUZXN0aW5nTW9kdWxlID0gb3JpZ2luUmVzZXQ7XG4gICAgVGVzdEJlZC5yZXNldFRlc3RpbmdNb2R1bGUoKTtcbiAgfSk7XG59XG4iXSwibmFtZXMiOlsiQ29tcG9uZW50IiwiRWxlbWVudFJlZiIsIlRlc3RCZWQiLCJmaXJlRXZlbnQiLCJ0c2xpYl8xLl9fYXNzaWduIiwicHJldHR5RE9NIiwiZ2V0UXVlcmllc0ZvckVsZW1lbnQiLCJCeSIsInRzbGliXzEuX192YWx1ZXMiLCJnZXRUZXN0QmVkIl0sIm1hcHBpbmdzIjoiOzs7Ozs7SUFBQTs7Ozs7Ozs7Ozs7Ozs7QUFjQSxJQWVPLElBQUksUUFBUSxHQUFHO1FBQ2xCLFFBQVEsR0FBRyxNQUFNLENBQUMsTUFBTSxJQUFJLFNBQVMsUUFBUSxDQUFDLENBQUM7WUFDM0MsS0FBSyxJQUFJLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxTQUFTLENBQUMsTUFBTSxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUU7Z0JBQ2pELENBQUMsR0FBRyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQ2pCLEtBQUssSUFBSSxDQUFDLElBQUksQ0FBQztvQkFBRSxJQUFJLE1BQU0sQ0FBQyxTQUFTLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO3dCQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7YUFDaEY7WUFDRCxPQUFPLENBQUMsQ0FBQztTQUNaLENBQUE7UUFDRCxPQUFPLFFBQVEsQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLFNBQVMsQ0FBQyxDQUFDO0lBQzNDLENBQUMsQ0FBQTtBQUVELGFBeUJnQixTQUFTLENBQUMsT0FBTyxFQUFFLFVBQVUsRUFBRSxDQUFDLEVBQUUsU0FBUztRQUN2RCxPQUFPLEtBQUssQ0FBQyxLQUFLLENBQUMsR0FBRyxPQUFPLENBQUMsRUFBRSxVQUFVLE9BQU8sRUFBRSxNQUFNO1lBQ3JELFNBQVMsU0FBUyxDQUFDLEtBQUssSUFBSSxJQUFJO2dCQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7YUFBRTtZQUFDLE9BQU8sQ0FB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

@@ -1,2 +0,2 @@

!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("@angular/core"),require("@angular/core/testing"),require("dom-testing-library"),require("jest")):"function"==typeof define&&define.amd?define("@angular-extensions/testing-library",["exports","@angular/core","@angular/core/testing","dom-testing-library","jest"],t):t((e["angular-extensions"]=e["angular-extensions"]||{},e["angular-extensions"]["testing-library"]={}),e.ng.core,e.ng.core.testing,null)}(this,function(e,t,B,f){"use strict";var d=function(){return(d=Object.assign||function(e){for(var t,r=1,l=arguments.length;r<l;r++)for(var n in t=arguments[r])Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n]);return e}).apply(this,arguments)};function T(l,n){var o,u,i,e,y={label:0,sent:function(){if(1&i[0])throw i[1];return i[1]},trys:[],ops:[]};return e={next:t(0),"throw":t(1),"return":t(2)},"function"==typeof Symbol&&(e[Symbol.iterator]=function(){return this}),e;function t(t){return function(e){return function r(e){if(o)throw new TypeError("Generator is already executing.");for(;y;)try{if(o=1,u&&(i=2&e[0]?u["return"]:e[0]?u["throw"]||((i=u["return"])&&i.call(u),0):u.next)&&!(i=i.call(u,e[1])).done)return i;switch(u=0,i&&(e=[2&e[0],i.value]),e[0]){case 0:case 1:i=e;break;case 4:return y.label++,{value:e[1],done:!1};case 5:y.label++,u=e[1],e=[0];continue;case 7:e=y.ops.pop(),y.trys.pop();continue;default:if(!(i=0<(i=y.trys).length&&i[i.length-1])&&(6===e[0]||2===e[0])){y=0;continue}if(3===e[0]&&(!i||e[1]>i[0]&&e[1]<i[3])){y.label=e[1];break}if(6===e[0]&&y.label<i[1]){y.label=i[1],i=e;break}if(i&&y.label<i[2]){y.label=i[2],y.ops.push(e);break}i[2]&&y.ops.pop(),y.trys.pop();continue}e=n.call(l,y)}catch(t){e=[6,t],u=0}finally{o=i=0}if(5&e[0])throw e[1];return{value:e[0]?e[1]:void 0,done:!0}}([t,e])}}}function r(e,t){var r="function"==typeof Symbol&&e[Symbol.iterator];if(!r)return e;var l,n,o=r.call(e),u=[];try{for(;(void 0===t||0<t--)&&!(l=o.next()).done;)u.push(l.value)}catch(i){n={error:i}}finally{try{l&&!l.done&&(r=o["return"])&&r.call(o)}finally{if(n)throw n.error}}return u}function p(){for(var e=[],t=0;t<arguments.length;t++)e=e.concat(r(arguments[t]));return e}var x=function(){function e(e){this.elemtRef=e}return e.prototype.ngOnInit=function(){this.elemtRef.nativeElement.removeAttribute("ng-version")},e.decorators=[{type:t.Component,args:[{selector:"test-component",template:""}]}],e.ctorParameters=function(){return[{type:t.ElementRef}]},e}();e.queries=f.queries,e.queryHelpers=f.queryHelpers,e.within=f.within,e.queryByPlaceholderText=f.queryByPlaceholderText,e.queryAllByPlaceholderText=f.queryAllByPlaceholderText,e.getByPlaceholderText=f.getByPlaceholderText,e.getAllByPlaceholderText=f.getAllByPlaceholderText,e.queryBySelectText=f.queryBySelectText,e.queryAllBySelectText=f.queryAllBySelectText,e.getBySelectText=f.getBySelectText,e.getAllBySelectText=f.getAllBySelectText,e.queryByText=f.queryByText,e.queryAllByText=f.queryAllByText,e.getByText=f.getByText,e.getAllByText=f.getAllByText,e.queryByLabelText=f.queryByLabelText,e.queryAllByLabelText=f.queryAllByLabelText,e.getByLabelText=f.getByLabelText,e.getAllByLabelText=f.getAllByLabelText,e.queryByAltText=f.queryByAltText,e.queryAllByAltText=f.queryAllByAltText,e.getByAltText=f.getByAltText,e.getAllByAltText=f.getAllByAltText,e.queryByTestId=f.queryByTestId,e.queryAllByTestId=f.queryAllByTestId,e.getByTestId=f.getByTestId,e.getAllByTestId=f.getAllByTestId,e.queryByTitle=f.queryByTitle,e.queryAllByTitle=f.queryAllByTitle,e.getByTitle=f.getByTitle,e.getAllByTitle=f.getAllByTitle,e.queryByValue=f.queryByValue,e.queryAllByValue=f.queryAllByValue,e.getByValue=f.getByValue,e.getAllByValue=f.getAllByValue,e.queryByDisplayValue=f.queryByDisplayValue,e.queryAllByDisplayValue=f.queryAllByDisplayValue,e.getByDisplayValue=f.getByDisplayValue,e.getAllByDisplayValue=f.getAllByDisplayValue,e.queryByRole=f.queryByRole,e.queryAllByRole=f.queryAllByRole,e.getByRole=f.getByRole,e.getAllByRole=f.getAllByRole,e.queryByAttribute=f.queryByAttribute,e.queryAllByAttribute=f.queryAllByAttribute,e.firstResultOrNull=f.firstResultOrNull,e.debugDOM=f.debugDOM,e.getElementError=f.getElementError,e.wait=f.wait,e.waitForDomChange=f.waitForDomChange,e.waitForElement=f.waitForElement,e.getDefaultNormalizer=f.getDefaultNormalizer,e.getNodeText=f.getNodeText,e.fireEvent=f.fireEvent,e.getQueriesForElement=f.getQueriesForElement,e.prettyDOM=f.prettyDOM,e.configure=f.configure,e.createComponent=function A(u,e){var t=e.detectChanges,i=void 0===t||t,r=e.declarations,y=void 0===r?[]:r,l=e.providers,a=void 0===l?[]:l,n=e.imports,s=void 0===n?[]:n,o=e.schemas,c=void 0===o?[]:o;return function g(t,u,i,y){return new(i||(i=Promise))(function(e,r){function l(e){try{o(y.next(e))}catch(t){r(t)}}function n(e){try{o(y["throw"](e))}catch(t){r(t)}}function o(t){t.done?e(t.value):new i(function(e){e(t.value)}).then(l,n)}o((y=y.apply(t,u||[])).next())})}(this,void 0,void 0,function(){var r,l,n,o;return T(this,function(e){switch(e.label){case 0:return l=(r="string"==typeof u)?[x]:[],B.TestBed.configureTestingModule({declarations:p(y,l),providers:p(a),imports:p(s),schemas:p(c)}),n=r?function t(e){return B.TestBed.overrideComponent(x,{set:{template:e}}),B.TestBed.createComponent(x)}(u):function g(e){var t,r,l=e.component,n=e.parameters,o=void 0===n?{}:n,u=B.TestBed.createComponent(l);try{for(var i=function s(e){var t="function"==typeof Symbol&&e[Symbol.iterator],r=0;return t?t.call(e):{next:function(){return e&&r>=e.length&&(e=void 0),{value:e&&e[r++],done:!e}}}}(Object.keys(o)),y=i.next();!y.done;y=i.next()){var a=y.value;u.componentInstance[a]=o[a]}}catch(c){t={error:c}}finally{try{y&&!y.done&&(r=i["return"])&&r.call(i)}finally{if(t)throw t.error}}return u}(u),[4,B.TestBed.compileComponents()];case 1:return e.sent(),i&&n.detectChanges(),o=Object.keys(f.fireEvent).reduce(function(e,l){return e[l]=function(e,t){var r=f.fireEvent[l](e,t);return n.detectChanges(),r},e},{}),[2,d({fixture:n,container:n.nativeElement,getFromTestBed:B.TestBed.get,debug:function(){return console.log(f.prettyDOM(n.nativeElement))}},o,f.getQueriesForElement(n.nativeElement))]}})})},e.configureJestSetup=function l(){var e=B.getTestBed(),t=B.TestBed.resetTestingModule;beforeAll(function(){B.TestBed.resetTestingModule(),B.TestBed.resetTestingModule=function(){return B.TestBed}}),afterEach(function(){e._activeFixtures.forEach(function(e){return e.destroy()}),e._instantiated=!1}),afterAll(function(){B.TestBed.resetTestingModule=t,B.TestBed.resetTestingModule()})},Object.defineProperty(e,"__esModule",{value:!0})});
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("@angular/core"),require("@angular/core/testing"),require("dom-testing-library"),require("@angular/platform-browser"),require("jest")):"function"==typeof define&&define.amd?define("@angular-extensions/testing-library",["exports","@angular/core","@angular/core/testing","dom-testing-library","@angular/platform-browser","jest"],t):t((e["angular-extensions"]=e["angular-extensions"]||{},e["angular-extensions"]["testing-library"]={}),e.ng.core,e.ng.core.testing,null,e.ng.platformBrowser)}(this,function(e,t,A,x,m){"use strict";var v=function(){return(v=Object.assign||function(e){for(var t,r=1,l=arguments.length;r<l;r++)for(var n in t=arguments[r])Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n]);return e}).apply(this,arguments)};function h(l,n){var o,i,a,e,y={label:0,sent:function(){if(1&a[0])throw a[1];return a[1]},trys:[],ops:[]};return e={next:t(0),"throw":t(1),"return":t(2)},"function"==typeof Symbol&&(e[Symbol.iterator]=function(){return this}),e;function t(t){return function(e){return function r(e){if(o)throw new TypeError("Generator is already executing.");for(;y;)try{if(o=1,i&&(a=2&e[0]?i["return"]:e[0]?i["throw"]||((a=i["return"])&&a.call(i),0):i.next)&&!(a=a.call(i,e[1])).done)return a;switch(i=0,a&&(e=[2&e[0],a.value]),e[0]){case 0:case 1:a=e;break;case 4:return y.label++,{value:e[1],done:!1};case 5:y.label++,i=e[1],e=[0];continue;case 7:e=y.ops.pop(),y.trys.pop();continue;default:if(!(a=0<(a=y.trys).length&&a[a.length-1])&&(6===e[0]||2===e[0])){y=0;continue}if(3===e[0]&&(!a||e[1]>a[0]&&e[1]<a[3])){y.label=e[1];break}if(6===e[0]&&y.label<a[1]){y.label=a[1],a=e;break}if(a&&y.label<a[2]){y.label=a[2],y.ops.push(e);break}a[2]&&y.ops.pop(),y.trys.pop();continue}e=n.call(l,y)}catch(t){e=[6,t],i=0}finally{o=a=0}if(5&e[0])throw e[1];return{value:e[0]?e[1]:void 0,done:!0}}([t,e])}}}function r(e,t){var r="function"==typeof Symbol&&e[Symbol.iterator];if(!r)return e;var l,n,o=r.call(e),i=[];try{for(;(void 0===t||0<t--)&&!(l=o.next()).done;)i.push(l.value)}catch(a){n={error:a}}finally{try{l&&!l.done&&(r=o["return"])&&r.call(o)}finally{if(n)throw n.error}}return i}function b(){for(var e=[],t=0;t<arguments.length;t++)e=e.concat(r(arguments[t]));return e}var q=(l.prototype.ngOnInit=function(){this.elemtRef.nativeElement.removeAttribute("ng-version")},l.decorators=[{type:t.Component,args:[{selector:"wrapper-component",template:""}]}],l.ctorParameters=function(){return[{type:t.ElementRef}]},l);function l(e){this.elemtRef=e}function w(e,t){var r,l,n=t.componentProperties,o=void 0===n?{}:n;try{for(var i=function u(e){var t="function"==typeof Symbol&&e[Symbol.iterator],r=0;return t?t.call(e):{next:function(){return e&&r>=e.length&&(e=void 0),{value:e&&e[r++],done:!e}}}}(Object.keys(o)),a=i.next();!a.done;a=i.next()){var y=a.value;e.componentInstance[y]=o[y]}}catch(s){r={error:s}}finally{try{a&&!a.done&&(l=i["return"])&&l.call(i)}finally{if(r)throw r.error}}return e}e.queries=x.queries,e.queryHelpers=x.queryHelpers,e.within=x.within,e.getByLabelText=x.getByLabelText,e.getAllByLabelText=x.getAllByLabelText,e.queryByLabelText=x.queryByLabelText,e.queryAllByLabelText=x.queryAllByLabelText,e.findByLabelText=x.findByLabelText,e.findAllByLabelText=x.findAllByLabelText,e.getByPlaceholderText=x.getByPlaceholderText,e.getAllByPlaceholderText=x.getAllByPlaceholderText,e.queryByPlaceholderText=x.queryByPlaceholderText,e.queryAllByPlaceholderText=x.queryAllByPlaceholderText,e.findByPlaceholderText=x.findByPlaceholderText,e.findAllByPlaceholderText=x.findAllByPlaceholderText,e.getByText=x.getByText,e.getAllByText=x.getAllByText,e.queryByText=x.queryByText,e.queryAllByText=x.queryAllByText,e.findByText=x.findByText,e.findAllByText=x.findAllByText,e.getByAltText=x.getByAltText,e.getAllByAltText=x.getAllByAltText,e.queryByAltText=x.queryByAltText,e.queryAllByAltText=x.queryAllByAltText,e.findByAltText=x.findByAltText,e.findAllByAltText=x.findAllByAltText,e.getByTitle=x.getByTitle,e.getAllByTitle=x.getAllByTitle,e.queryByTitle=x.queryByTitle,e.queryAllByTitle=x.queryAllByTitle,e.findByTitle=x.findByTitle,e.findAllByTitle=x.findAllByTitle,e.getByDisplayValue=x.getByDisplayValue,e.getAllByDisplayValue=x.getAllByDisplayValue,e.queryByDisplayValue=x.queryByDisplayValue,e.queryAllByDisplayValue=x.queryAllByDisplayValue,e.findByDisplayValue=x.findByDisplayValue,e.findAllByDisplayValue=x.findAllByDisplayValue,e.getByRole=x.getByRole,e.getAllByRole=x.getAllByRole,e.queryByRole=x.queryByRole,e.queryAllByRole=x.queryAllByRole,e.findByRole=x.findByRole,e.findAllByRole=x.findAllByRole,e.getByTestId=x.getByTestId,e.getAllByTestId=x.getAllByTestId,e.queryByTestId=x.queryByTestId,e.queryAllByTestId=x.queryAllByTestId,e.findByTestId=x.findByTestId,e.findAllByTestId=x.findAllByTestId,e.queryByAttribute=x.queryByAttribute,e.queryAllByAttribute=x.queryAllByAttribute,e.debugDOM=x.debugDOM,e.getElementError=x.getElementError,e.wait=x.wait,e.waitForDomChange=x.waitForDomChange,e.waitForElement=x.waitForElement,e.waitForElementToBeRemoved=x.waitForElementToBeRemoved,e.getDefaultNormalizer=x.getDefaultNormalizer,e.getNodeText=x.getNodeText,e.fireEvent=x.fireEvent,e.getQueriesForElement=x.getQueriesForElement,e.prettyDOM=x.prettyDOM,e.configure=x.configure,e.render=function E(a,e){var t=e.detectChanges,y=void 0===t||t,r=e.declarations,u=void 0===r?[]:r,l=e.imports,s=void 0===l?[]:l,n=e.providers,c=void 0===n?[]:n,o=e.schemas,d=void 0===o?[]:o,f=e.queries,i=e.wrapper,B=void 0===i?q:i,p=e.componentProperties,T=void 0===p?{}:p;return function g(t,i,a,y){return new(a||(a=Promise))(function(e,r){function l(e){try{o(y.next(e))}catch(t){r(t)}}function n(e){try{o(y["throw"](e))}catch(t){r(t)}}function o(t){t.done?e(t.value):new a(function(e){e(t.value)}).then(l,n)}o((y=y.apply(t,i||[])).next())})}(this,void 0,void 0,function(){var t,r,n,l;return h(this,function(e){switch(e.label){case 0:return r=(t="string"==typeof a)?[B]:[a],A.TestBed.configureTestingModule({declarations:b(u,r),providers:b(c),imports:b(s),schemas:b(d)}),n=t?function i(e,t){var r=t.wrapper,l=t.componentProperties;A.TestBed.overrideComponent(r,{set:{template:e}});var n=A.TestBed.createComponent(r),o=e.match(/\<(.*?)\ /)||e.match(/\<(.*?)\>/);if(o)return w(n.debugElement.query(m.By.css(o[1])),{componentProperties:l}),n;throw Error("Template "+e+" is not valid.")}(a,{wrapper:B,componentProperties:T}):function o(e,t){var r=t.componentProperties,l=void 0===r?{}:r,n=A.TestBed.createComponent(e);return w(n,{componentProperties:l}),n}(a,{componentProperties:T}),[4,A.TestBed.compileComponents()];case 1:return e.sent(),y&&n.detectChanges(),l=Object.keys(x.fireEvent).reduce(function(e,l){return e[l]=function(e,t){var r=x.fireEvent[l](e,t);return n.detectChanges(),r},e},{}),[2,v({fixture:n,container:n.nativeElement,debug:function(e){return void 0===e&&(e=n.nativeElement),console.log(x.prettyDOM(e))}},x.getQueriesForElement(n.nativeElement,f),l)]}})})},e.configureJestSetup=function n(){var e=A.getTestBed(),t=A.TestBed.resetTestingModule;beforeAll(function(){A.TestBed.resetTestingModule(),A.TestBed.resetTestingModule=function(){return A.TestBed}}),afterEach(function(){e._activeFixtures.forEach(function(e){return e.destroy()}),e._instantiated=!1}),afterAll(function(){A.TestBed.resetTestingModule=t,A.TestBed.resetTestingModule()})},Object.defineProperty(e,"__esModule",{value:!0})});
//# sourceMappingURL=angular-extensions-testing-library.umd.min.js.map

@@ -8,4 +8,4 @@ /**

*/
export { createComponent, configureJestSetup, queries, queryHelpers, within, queryByPlaceholderText, queryAllByPlaceholderText, getByPlaceholderText, getAllByPlaceholderText, queryBySelectText, queryAllBySelectText, getBySelectText, getAllBySelectText, queryByText, queryAllByText, getByText, getAllByText, queryByLabelText, queryAllByLabelText, getByLabelText, getAllByLabelText, queryByAltText, queryAllByAltText, getByAltText, getAllByAltText, queryByTestId, queryAllByTestId, getByTestId, getAllByTestId, queryByTitle, queryAllByTitle, getByTitle, getAllByTitle, queryByValue, queryAllByValue, getByValue, getAllByValue, queryByDisplayValue, queryAllByDisplayValue, getByDisplayValue, getAllByDisplayValue, queryByRole, queryAllByRole, getByRole, getAllByRole, queryByAttribute, queryAllByAttribute, firstResultOrNull, debugDOM, getElementError, wait, waitForDomChange, waitForElement, getDefaultNormalizer, getNodeText, fireEvent, getQueriesForElement, prettyDOM, configure } from './public_api';
export { render, configureJestSetup, queries, queryHelpers, within, getByLabelText, getAllByLabelText, queryByLabelText, queryAllByLabelText, findByLabelText, findAllByLabelText, getByPlaceholderText, getAllByPlaceholderText, queryByPlaceholderText, queryAllByPlaceholderText, findByPlaceholderText, findAllByPlaceholderText, getByText, getAllByText, queryByText, queryAllByText, findByText, findAllByText, getByAltText, getAllByAltText, queryByAltText, queryAllByAltText, findByAltText, findAllByAltText, getByTitle, getAllByTitle, queryByTitle, queryAllByTitle, findByTitle, findAllByTitle, getByDisplayValue, getAllByDisplayValue, queryByDisplayValue, queryAllByDisplayValue, findByDisplayValue, findAllByDisplayValue, getByRole, getAllByRole, queryByRole, queryAllByRole, findByRole, findAllByRole, getByTestId, getAllByTestId, queryByTestId, queryAllByTestId, findByTestId, findAllByTestId, queryByAttribute, queryAllByAttribute, debugDOM, getElementError, wait, waitForDomChange, waitForElement, waitForElementToBeRemoved, getDefaultNormalizer, getNodeText, fireEvent, getQueriesForElement, prettyDOM, configure } from './public_api';
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5ndWxhci1leHRlbnNpb25zLXRlc3RpbmctbGlicmFyeS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0Bhbmd1bGFyLWV4dGVuc2lvbnMvdGVzdGluZy1saWJyYXJ5LyIsInNvdXJjZXMiOlsiYW5ndWxhci1leHRlbnNpb25zLXRlc3RpbmctbGlicmFyeS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBSUEsMDlCQUFjLGNBQWMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogR2VuZXJhdGVkIGJ1bmRsZSBpbmRleC4gRG8gbm90IGVkaXQuXG4gKi9cblxuZXhwb3J0ICogZnJvbSAnLi9wdWJsaWNfYXBpJztcbiJdfQ==
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5ndWxhci1leHRlbnNpb25zLXRlc3RpbmctbGlicmFyeS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0Bhbmd1bGFyLWV4dGVuc2lvbnMvdGVzdGluZy1saWJyYXJ5LyIsInNvdXJjZXMiOlsiYW5ndWxhci1leHRlbnNpb25zLXRlc3RpbmctbGlicmFyeS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBSUEscW1DQUFjLGNBQWMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogR2VuZXJhdGVkIGJ1bmRsZSBpbmRleC4gRG8gbm90IGVkaXQuXG4gKi9cblxuZXhwb3J0ICogZnJvbSAnLi9wdWJsaWNfYXBpJztcbiJdfQ==

@@ -5,2 +5,5 @@ /**

*/
/** @typedef {?} */
var RenderResultQueries;
export { RenderResultQueries };
/**

@@ -15,29 +18,26 @@ * @record

/** @type {?} */
RenderResult.prototype.getFromTestBed;
/** @type {?} */
RenderResult.prototype.fixture;
// unsupported: template constraints.
/**
* @record
* @template C, Q
*/
export function Options() { }
export function RenderOptions() { }
/** @type {?|undefined} */
Options.prototype.detectChanges;
/** @type {?} */
Options.prototype.declarations;
RenderOptions.prototype.detectChanges;
/** @type {?|undefined} */
Options.prototype.providers;
RenderOptions.prototype.declarations;
/** @type {?|undefined} */
Options.prototype.imports;
RenderOptions.prototype.providers;
/** @type {?|undefined} */
Options.prototype.schemas;
/**
* @record
* @template T
*/
export function ComponentInput() { }
/** @type {?} */
ComponentInput.prototype.component;
RenderOptions.prototype.imports;
/** @type {?|undefined} */
ComponentInput.prototype.parameters;
RenderOptions.prototype.schemas;
/** @type {?|undefined} */
RenderOptions.prototype.componentProperties;
/** @type {?|undefined} */
RenderOptions.prototype.queries;
/** @type {?|undefined} */
RenderOptions.prototype.wrapper;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kZWxzLmpzIiwic291cmNlUm9vdCI6Im5nOi8vQGFuZ3VsYXItZXh0ZW5zaW9ucy90ZXN0aW5nLWxpYnJhcnkvIiwic291cmNlcyI6WyJsaWIvbW9kZWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBUeXBlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb21wb25lbnRGaXh0dXJlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZS90ZXN0aW5nJztcbmltcG9ydCB7IGdldFF1ZXJpZXNGb3JFbGVtZW50LCBGaXJlT2JqZWN0IH0gZnJvbSAnZG9tLXRlc3RpbmctbGlicmFyeSc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgUmVuZGVyUmVzdWx0IGV4dGVuZHMgUmV0dXJuVHlwZTx0eXBlb2YgZ2V0UXVlcmllc0ZvckVsZW1lbnQ+LCBGaXJlT2JqZWN0IHtcbiAgY29udGFpbmVyOiBIVE1MRWxlbWVudDtcbiAgZGVidWc6ICgpID0+IHZvaWQ7XG4gIGdldEZyb21UZXN0QmVkOiAodG9rZW46IGFueSwgbm90Rm91bmRWYWx1ZT86IGFueSkgPT4gYW55O1xuICBmaXh0dXJlOiBDb21wb25lbnRGaXh0dXJlPGFueT47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgT3B0aW9ucyB7XG4gIGRldGVjdENoYW5nZXM/OiBib29sZWFuO1xuICBkZWNsYXJhdGlvbnM6IGFueVtdO1xuICBwcm92aWRlcnM/OiBhbnlbXTtcbiAgaW1wb3J0cz86IGFueVtdO1xuICBzY2hlbWFzPzogYW55W107XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ29tcG9uZW50SW5wdXQ8VD4ge1xuICBjb21wb25lbnQ6IFR5cGU8VD47XG4gIHBhcmFtZXRlcnM/OiBQYXJ0aWFsPFQ+O1xufVxuIl19
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kZWxzLmpzIiwic291cmNlUm9vdCI6Im5nOi8vQGFuZ3VsYXItZXh0ZW5zaW9ucy90ZXN0aW5nLWxpYnJhcnkvIiwic291cmNlcyI6WyJsaWIvbW9kZWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBUeXBlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb21wb25lbnRGaXh0dXJlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZS90ZXN0aW5nJztcbmltcG9ydCB7IEZpcmVPYmplY3QsIFF1ZXJpZXMsIHF1ZXJpZXMsIEJvdW5kRnVuY3Rpb24gfSBmcm9tICdkb20tdGVzdGluZy1saWJyYXJ5JztcblxuZXhwb3J0IHR5cGUgUmVuZGVyUmVzdWx0UXVlcmllczxRIGV4dGVuZHMgUXVlcmllcyA9IHR5cGVvZiBxdWVyaWVzPiA9IHsgW1AgaW4ga2V5b2YgUV06IEJvdW5kRnVuY3Rpb248UVtQXT4gfTtcblxuZXhwb3J0IGludGVyZmFjZSBSZW5kZXJSZXN1bHQgZXh0ZW5kcyBSZW5kZXJSZXN1bHRRdWVyaWVzLCBGaXJlT2JqZWN0IHtcbiAgY29udGFpbmVyOiBIVE1MRWxlbWVudDtcbiAgZGVidWc6IChlbGVtZW50PzogSFRNTEVsZW1lbnQpID0+IHZvaWQ7XG4gIGZpeHR1cmU6IENvbXBvbmVudEZpeHR1cmU8YW55Pjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBSZW5kZXJPcHRpb25zPEMsIFEgZXh0ZW5kcyBRdWVyaWVzID0gdHlwZW9mIHF1ZXJpZXM+IHtcbiAgZGV0ZWN0Q2hhbmdlcz86IGJvb2xlYW47XG4gIGRlY2xhcmF0aW9ucz86IGFueVtdO1xuICBwcm92aWRlcnM/OiBhbnlbXTtcbiAgaW1wb3J0cz86IGFueVtdO1xuICBzY2hlbWFzPzogYW55W107XG4gIGNvbXBvbmVudFByb3BlcnRpZXM/OiBQYXJ0aWFsPEM+O1xuICBxdWVyaWVzPzogUTtcbiAgd3JhcHBlcj86IFR5cGU8YW55Pjtcbn1cbiJdfQ==

@@ -9,3 +9,4 @@ /**

import { getQueriesForElement, prettyDOM, fireEvent } from 'dom-testing-library';
class TestComponent {
import { By } from '@angular/platform-browser';
class WrapperComponent {
/**

@@ -24,7 +25,7 @@ * @param {?} elemtRef

}
TestComponent.decorators = [
{ type: Component, args: [{ selector: 'test-component', template: '' },] },
WrapperComponent.decorators = [
{ type: Component, args: [{ selector: 'wrapper-component', template: '' },] },
];
/** @nocollapse */
TestComponent.ctorParameters = () => [
WrapperComponent.ctorParameters = () => [
{ type: ElementRef }

@@ -34,3 +35,3 @@ ];

/** @type {?} */
TestComponent.prototype.elemtRef;
WrapperComponent.prototype.elemtRef;
}

@@ -43,3 +44,3 @@ /**

*/
export function createComponent(templateOrComponent, { detectChanges = true, declarations = [], providers = [], imports = [], schemas = [] }) {
export function render(templateOrComponent, { detectChanges = true, declarations = [], imports = [], providers = [], schemas = [], queries, wrapper = WrapperComponent, componentProperties = {}, }) {
return tslib_1.__awaiter(this, void 0, void 0, function* () {

@@ -49,5 +50,5 @@ /** @type {?} */

/** @type {?} */
const testComponent = isTemplate ? [TestComponent] : [];
const componentDeclarations = isTemplate ? [wrapper] : [templateOrComponent];
TestBed.configureTestingModule({
declarations: [...declarations, ...testComponent],
declarations: [...declarations, ...componentDeclarations],
providers: [...providers],

@@ -59,4 +60,4 @@ imports: [...imports],

const fixture = isTemplate
? createTestComponentFixture(/** @type {?} */ (templateOrComponent))
: createComponentFixture(/** @type {?} */ (templateOrComponent));
? createWrapperComponentFixture(/** @type {?} */ (templateOrComponent), { wrapper, componentProperties })
: createComponentFixture(/** @type {?} */ (templateOrComponent), { componentProperties });
yield TestBed.compileComponents();

@@ -76,11 +77,14 @@ if (detectChanges) {

}, /** @type {?} */ ({}));
return Object.assign({ fixture, container: fixture.nativeElement, getFromTestBed: TestBed.get, debug: () => console.log(prettyDOM(fixture.nativeElement)) }, eventsWithDetectChanges, getQueriesForElement(fixture.nativeElement));
return /** @type {?} */ (Object.assign({ fixture, container: fixture.nativeElement, debug: (element = fixture.nativeElement) => console.log(prettyDOM(element)) }, getQueriesForElement(fixture.nativeElement, queries), eventsWithDetectChanges));
});
}
/**
* Creates the wrapper component and sets its the template to the to-be-tested component
* @template T
* @param {?} template
* @param {?} __1
* @return {?}
*/
function createTestComponentFixture(template) {
TestBed.overrideComponent(TestComponent, {
function createWrapperComponentFixture(template, { wrapper, componentProperties, }) {
TestBed.overrideComponent(wrapper, {
set: {

@@ -90,15 +94,37 @@ template: template,

});
return TestBed.createComponent(TestComponent);
/** @type {?} */
const fixture = TestBed.createComponent(wrapper);
/** @type {?} */
const componentSelector = template.match(/\<(.*?)\ /) || template.match(/\<(.*?)\>/);
if (!componentSelector) {
throw Error(`Template ${template} is not valid.`);
}
/** @type {?} */
const sut = fixture.debugElement.query(By.css(componentSelector[1]));
setComponentProperties(sut, { componentProperties });
return fixture;
}
/**
* Creates the components and sets its properties
* @template T
* @param {?} componentInput
* @param {?} component
* @param {?} __1
* @return {?}
*/
function createComponentFixture(componentInput) {
const { component, parameters = {} } = componentInput;
function createComponentFixture(component, { componentProperties = {}, }) {
/** @type {?} */
const fixture = TestBed.createComponent(component);
for (const key of Object.keys(parameters)) {
fixture.componentInstance[key] = parameters[key];
setComponentProperties(fixture, { componentProperties });
return fixture;
}
/**
* Set the component properties
* @template T
* @param {?} fixture
* @param {?} __1
* @return {?}
*/
function setComponentProperties(fixture, { componentProperties = {}, }) {
for (const key of Object.keys(componentProperties)) {
fixture.componentInstance[key] = componentProperties[key];
}

@@ -108,2 +134,2 @@ return fixture;

//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVzdGluZy1saWJyYXJ5LmpzIiwic291cmNlUm9vdCI6Im5nOi8vQGFuZ3VsYXItZXh0ZW5zaW9ucy90ZXN0aW5nLWxpYnJhcnkvIiwic291cmNlcyI6WyJsaWIvdGVzdGluZy1saWJyYXJ5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsT0FBTyxFQUFFLFNBQVMsRUFBVSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDOUQsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ2hELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUE0QixNQUFNLHFCQUFxQixDQUFDO0FBSTNHLE1BQ00sYUFBYTs7OztJQUNqQixZQUFvQixRQUFvQjtRQUFwQixhQUFRLEdBQVIsUUFBUSxDQUFZO0tBQUk7Ozs7SUFFNUMsUUFBUTtRQUNOLElBQUksQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDLGVBQWUsQ0FBQyxZQUFZLENBQUMsQ0FBQztLQUMzRDs7O1lBTkYsU0FBUyxTQUFDLEVBQUUsUUFBUSxFQUFFLGdCQUFnQixFQUFFLFFBQVEsRUFBRSxFQUFFLEVBQUU7Ozs7WUFOM0IsVUFBVTs7Ozs7Ozs7Ozs7O0FBaUJ0QyxNQUFNLFVBQWdCLGVBQWUsQ0FDbkMsbUJBQStDLEVBQy9DLEVBQUUsYUFBYSxHQUFHLElBQUksRUFBRSxZQUFZLEdBQUcsRUFBRSxFQUFFLFNBQVMsR0FBRyxFQUFFLEVBQUUsT0FBTyxHQUFHLEVBQUUsRUFBRSxPQUFPLEdBQUcsRUFBRSxFQUFXOzs7UUFFaEcsTUFBTSxVQUFVLEdBQUcsT0FBTyxtQkFBbUIsS0FBSyxRQUFRLENBQUM7O1FBQzNELE1BQU0sYUFBYSxHQUFHLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1FBRXhELE9BQU8sQ0FBQyxzQkFBc0IsQ0FBQztZQUM3QixZQUFZLEVBQUUsQ0FBQyxHQUFHLFlBQVksRUFBRSxHQUFHLGFBQWEsQ0FBQztZQUNqRCxTQUFTLEVBQUUsQ0FBQyxHQUFHLFNBQVMsQ0FBQztZQUN6QixPQUFPLEVBQUUsQ0FBQyxHQUFHLE9BQU8sQ0FBQztZQUNyQixPQUFPLEVBQUUsQ0FBQyxHQUFHLE9BQU8sQ0FBQztTQUN0QixDQUFDLENBQUM7O1FBRUgsTUFBTSxPQUFPLEdBQUcsVUFBVTtZQUN4QixDQUFDLENBQUMsMEJBQTBCLG1CQUFTLG1CQUFtQixFQUFDO1lBQ3pELENBQUMsQ0FBQyxzQkFBc0IsbUJBQW9CLG1CQUFtQixFQUFDLENBQUM7UUFFbkUsTUFBTSxPQUFPLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztRQUVsQyxJQUFJLGFBQWEsRUFBRTtZQUNqQixPQUFPLENBQUMsYUFBYSxFQUFFLENBQUM7U0FDekI7O1FBRUQsTUFBTSx1QkFBdUIsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLE1BQU0sQ0FDM0QsQ0FBQyxNQUFNLEVBQUUsR0FBRyxFQUFFLEVBQUU7WUFDZCxNQUFNLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxPQUFvQixFQUFFLE9BQVksRUFBRSxFQUFFOztnQkFDbkQsTUFBTSxNQUFNLEdBQUcsU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE9BQU8sRUFBRSxPQUFPLENBQUMsQ0FBQztnQkFDaEQsT0FBTyxDQUFDLGFBQWEsRUFBRSxDQUFDO2dCQUN4QixPQUFPLE1BQU0sQ0FBQzthQUNmLENBQUM7WUFDRixPQUFPLE1BQU0sQ0FBQztTQUNmLG9CQUNELEVBQStCLEVBQ2hDLENBQUM7UUFFRix1QkFDRSxPQUFPLEVBQ1AsU0FBUyxFQUFFLE9BQU8sQ0FBQyxhQUFhLEVBQ2hDLGNBQWMsRUFBRSxPQUFPLENBQUMsR0FBRyxFQUMzQixLQUFLLEVBQUUsR0FBRyxFQUFFLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxDQUFDLElBQ3ZELHVCQUF1QixFQUN2QixvQkFBb0IsQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDLEVBQzlDOztDQUNIOzs7OztBQUVELFNBQVMsMEJBQTBCLENBQUMsUUFBZ0I7SUFDbEQsT0FBTyxDQUFDLGlCQUFpQixDQUFDLGFBQWEsRUFBRTtRQUN2QyxHQUFHLEVBQUU7WUFDSCxRQUFRLEVBQUUsUUFBUTtTQUNuQjtLQUNGLENBQUMsQ0FBQztJQUNILE9BQU8sT0FBTyxDQUFDLGVBQWUsQ0FBQyxhQUFhLENBQUMsQ0FBQztDQUMvQzs7Ozs7O0FBRUQsU0FBUyxzQkFBc0IsQ0FBSSxjQUFpQztJQUNsRSxNQUFNLEVBQUUsU0FBUyxFQUFFLFVBQVUsR0FBRyxFQUFFLEVBQUUsR0FBRyxjQUFjLENBQUM7O0lBQ3RELE1BQU0sT0FBTyxHQUFHLE9BQU8sQ0FBQyxlQUFlLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDbkQsS0FBSyxNQUFNLEdBQUcsSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxFQUFFO1FBQ3pDLE9BQU8sQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHLENBQUMsR0FBRyxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUM7S0FDbEQ7SUFDRCxPQUFPLE9BQU8sQ0FBQztDQUNoQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0LCBFbGVtZW50UmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBUZXN0QmVkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZS90ZXN0aW5nJztcbmltcG9ydCB7IGdldFF1ZXJpZXNGb3JFbGVtZW50LCBwcmV0dHlET00sIGZpcmVFdmVudCwgRmlyZU9iamVjdCwgRmlyZUZ1bmN0aW9uIH0gZnJvbSAnZG9tLXRlc3RpbmctbGlicmFyeSc7XG5cbmltcG9ydCB7IE9wdGlvbnMsIFJlbmRlclJlc3VsdCwgQ29tcG9uZW50SW5wdXQgfSBmcm9tICcuL21vZGVscyc7XG5cbkBDb21wb25lbnQoeyBzZWxlY3RvcjogJ3Rlc3QtY29tcG9uZW50JywgdGVtcGxhdGU6ICcnIH0pXG5jbGFzcyBUZXN0Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBlbGVtdFJlZjogRWxlbWVudFJlZikge31cblxuICBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLmVsZW10UmVmLm5hdGl2ZUVsZW1lbnQucmVtb3ZlQXR0cmlidXRlKCduZy12ZXJzaW9uJyk7XG4gIH1cbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGNyZWF0ZUNvbXBvbmVudDxUPih0ZW1wbGF0ZTogc3RyaW5nLCBvcHRpb25zOiBPcHRpb25zKTogUHJvbWlzZTxSZW5kZXJSZXN1bHQ+O1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGNyZWF0ZUNvbXBvbmVudDxUPihjb21wb25lbnQ6IENvbXBvbmVudElucHV0PFQ+LCBvcHRpb25zOiBPcHRpb25zKTogUHJvbWlzZTxSZW5kZXJSZXN1bHQ+O1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGNyZWF0ZUNvbXBvbmVudDxUPihcbiAgdGVtcGxhdGVPckNvbXBvbmVudDogc3RyaW5nIHwgQ29tcG9uZW50SW5wdXQ8VD4sXG4gIHsgZGV0ZWN0Q2hhbmdlcyA9IHRydWUsIGRlY2xhcmF0aW9ucyA9IFtdLCBwcm92aWRlcnMgPSBbXSwgaW1wb3J0cyA9IFtdLCBzY2hlbWFzID0gW10gfTogT3B0aW9ucyxcbik6IFByb21pc2U8UmVuZGVyUmVzdWx0PiB7XG4gIGNvbnN0IGlzVGVtcGxhdGUgPSB0eXBlb2YgdGVtcGxhdGVPckNvbXBvbmVudCA9PT0gJ3N0cmluZyc7XG4gIGNvbnN0IHRlc3RDb21wb25lbnQgPSBpc1RlbXBsYXRlID8gW1Rlc3RDb21wb25lbnRdIDogW107XG5cbiAgVGVzdEJlZC5jb25maWd1cmVUZXN0aW5nTW9kdWxlKHtcbiAgICBkZWNsYXJhdGlvbnM6IFsuLi5kZWNsYXJhdGlvbnMsIC4uLnRlc3RDb21wb25lbnRdLFxuICAgIHByb3ZpZGVyczogWy4uLnByb3ZpZGVyc10sXG4gICAgaW1wb3J0czogWy4uLmltcG9ydHNdLFxuICAgIHNjaGVtYXM6IFsuLi5zY2hlbWFzXSxcbiAgfSk7XG5cbiAgY29uc3QgZml4dHVyZSA9IGlzVGVtcGxhdGVcbiAgICA/IGNyZWF0ZVRlc3RDb21wb25lbnRGaXh0dXJlKDxzdHJpbmc+dGVtcGxhdGVPckNvbXBvbmVudClcbiAgICA6IGNyZWF0ZUNvbXBvbmVudEZpeHR1cmUoPENvbXBvbmVudElucHV0PFQ+PnRlbXBsYXRlT3JDb21wb25lbnQpO1xuXG4gIGF3YWl0IFRlc3RCZWQuY29tcGlsZUNvbXBvbmVudHMoKTtcblxuICBpZiAoZGV0ZWN0Q2hhbmdlcykge1xuICAgIGZpeHR1cmUuZGV0ZWN0Q2hhbmdlcygpO1xuICB9XG5cbiAgY29uc3QgZXZlbnRzV2l0aERldGVjdENoYW5nZXMgPSBPYmplY3Qua2V5cyhmaXJlRXZlbnQpLnJlZHVjZShcbiAgICAoZXZlbnRzLCBrZXkpID0+IHtcbiAgICAgIGV2ZW50c1trZXldID0gKGVsZW1lbnQ6IEhUTUxFbGVtZW50LCBvcHRpb25zPzoge30pID0+IHtcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gZmlyZUV2ZW50W2tleV0oZWxlbWVudCwgb3B0aW9ucyk7XG4gICAgICAgIGZpeHR1cmUuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgfTtcbiAgICAgIHJldHVybiBldmVudHM7XG4gICAgfSxcbiAgICB7fSBhcyBGaXJlRnVuY3Rpb24gJiBGaXJlT2JqZWN0LFxuICApO1xuXG4gIHJldHVybiB7XG4gICAgZml4dHVyZSxcbiAgICBjb250YWluZXI6IGZpeHR1cmUubmF0aXZlRWxlbWVudCxcbiAgICBnZXRGcm9tVGVzdEJlZDogVGVzdEJlZC5nZXQsXG4gICAgZGVidWc6ICgpID0+IGNvbnNvbGUubG9nKHByZXR0eURPTShmaXh0dXJlLm5hdGl2ZUVsZW1lbnQpKSxcbiAgICAuLi5ldmVudHNXaXRoRGV0ZWN0Q2hhbmdlcyxcbiAgICAuLi5nZXRRdWVyaWVzRm9yRWxlbWVudChmaXh0dXJlLm5hdGl2ZUVsZW1lbnQpLFxuICB9O1xufVxuXG5mdW5jdGlvbiBjcmVhdGVUZXN0Q29tcG9uZW50Rml4dHVyZSh0ZW1wbGF0ZTogc3RyaW5nKSB7XG4gIFRlc3RCZWQub3ZlcnJpZGVDb21wb25lbnQoVGVzdENvbXBvbmVudCwge1xuICAgIHNldDoge1xuICAgICAgdGVtcGxhdGU6IHRlbXBsYXRlLFxuICAgIH0sXG4gIH0pO1xuICByZXR1cm4gVGVzdEJlZC5jcmVhdGVDb21wb25lbnQoVGVzdENvbXBvbmVudCk7XG59XG5cbmZ1bmN0aW9uIGNyZWF0ZUNvbXBvbmVudEZpeHR1cmU8VD4oY29tcG9uZW50SW5wdXQ6IENvbXBvbmVudElucHV0PFQ+KSB7XG4gIGNvbnN0IHsgY29tcG9uZW50LCBwYXJhbWV0ZXJzID0ge30gfSA9IGNvbXBvbmVudElucHV0O1xuICBjb25zdCBmaXh0dXJlID0gVGVzdEJlZC5jcmVhdGVDb21wb25lbnQoY29tcG9uZW50KTtcbiAgZm9yIChjb25zdCBrZXkgb2YgT2JqZWN0LmtleXMocGFyYW1ldGVycykpIHtcbiAgICBmaXh0dXJlLmNvbXBvbmVudEluc3RhbmNlW2tleV0gPSBwYXJhbWV0ZXJzW2tleV07XG4gIH1cbiAgcmV0dXJuIGZpeHR1cmU7XG59XG4iXX0=
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVzdGluZy1saWJyYXJ5LmpzIiwic291cmNlUm9vdCI6Im5nOi8vQGFuZ3VsYXItZXh0ZW5zaW9ucy90ZXN0aW5nLWxpYnJhcnkvIiwic291cmNlcyI6WyJsaWIvdGVzdGluZy1saWJyYXJ5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsT0FBTyxFQUFFLFNBQVMsRUFBVSxVQUFVLEVBQXNCLE1BQU0sZUFBZSxDQUFDO0FBQ2xGLE9BQU8sRUFBRSxPQUFPLEVBQW9CLE1BQU0sdUJBQXVCLENBQUM7QUFDbEUsT0FBTyxFQUFFLG9CQUFvQixFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQTRCLE1BQU0scUJBQXFCLENBQUM7QUFHM0csT0FBTyxFQUFFLEVBQUUsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBRS9DLE1BQ00sZ0JBQWdCOzs7O0lBQ3BCLFlBQW9CLFFBQW9CO1FBQXBCLGFBQVEsR0FBUixRQUFRLENBQVk7S0FBSTs7OztJQUU1QyxRQUFRO1FBQ04sSUFBSSxDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUMsZUFBZSxDQUFDLFlBQVksQ0FBQyxDQUFDO0tBQzNEOzs7WUFORixTQUFTLFNBQUMsRUFBRSxRQUFRLEVBQUUsbUJBQW1CLEVBQUUsUUFBUSxFQUFFLEVBQUUsRUFBRTs7OztZQVA5QixVQUFVOzs7Ozs7Ozs7Ozs7QUFnQnRDLE1BQU0sVUFBZ0IsTUFBTSxDQUMxQixtQkFBcUMsRUFDckMsRUFDRSxhQUFhLEdBQUcsSUFBSSxFQUNwQixZQUFZLEdBQUcsRUFBRSxFQUNqQixPQUFPLEdBQUcsRUFBRSxFQUNaLFNBQVMsR0FBRyxFQUFFLEVBQ2QsT0FBTyxHQUFHLEVBQUUsRUFDWixPQUFPLEVBQ1AsT0FBTyxHQUFHLGdCQUFnQixFQUMxQixtQkFBbUIsR0FBRyxFQUFFLEdBQ1A7OztRQUVuQixNQUFNLFVBQVUsR0FBRyxPQUFPLG1CQUFtQixLQUFLLFFBQVEsQ0FBQzs7UUFDM0QsTUFBTSxxQkFBcUIsR0FBRyxVQUFVLENBQUMsQ0FBQyxD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QyxTQUFTLENBQUMsQ0FBQztJQUNuRCxzQkFBc0IsQ0FBQyxPQUFPLEVBQUUsRUFBRSxtQkFBbUIsRUFBRSxDQUFDLENBQUM7SUFDekQsT0FBTyxPQUFPLENBQUM7Q0FDaEI7Ozs7Ozs7O0FBS0QsU0FBUyxzQkFBc0IsQ0FDN0IsT0FBMkMsRUFDM0MsRUFDRSxtQkFBbUIsR0FBRyxFQUFFLEdBR3pCO0lBRUQsS0FBSyxNQUFNLEdBQUcsSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLEVBQUU7UUFDbEQsT0FBTyxDQUFDLGlCQUFpQixDQUFDLEdBQUcsQ0FBQyxHQUFHLG1CQUFtQixDQUFDLEdBQUcsQ0FBQyxDQUFDO0tBQzNEO0lBQ0QsT0FBTyxPQUFPLENBQUM7Q0FDaEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCwgRWxlbWVudFJlZiwgVHlwZSwgRGVidWdFbGVtZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBUZXN0QmVkLCBDb21wb25lbnRGaXh0dXJlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZS90ZXN0aW5nJztcbmltcG9ydCB7IGdldFF1ZXJpZXNGb3JFbGVtZW50LCBwcmV0dHlET00sIGZpcmVFdmVudCwgRmlyZU9iamVjdCwgRmlyZUZ1bmN0aW9uIH0gZnJvbSAnZG9tLXRlc3RpbmctbGlicmFyeSc7XG5cbmltcG9ydCB7IFJlbmRlclJlc3VsdCwgUmVuZGVyT3B0aW9ucyB9IGZyb20gJy4vbW9kZWxzJztcbmltcG9ydCB7IEJ5IH0gZnJvbSAnQGFuZ3VsYXIvcGxhdGZvcm0tYnJvd3Nlcic7XG5cbkBDb21wb25lbnQoeyBzZWxlY3RvcjogJ3dyYXBwZXItY29tcG9uZW50JywgdGVtcGxhdGU6ICcnIH0pXG5jbGFzcyBXcmFwcGVyQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBlbGVtdFJlZjogRWxlbWVudFJlZikge31cblxuICBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLmVsZW10UmVmLm5hdGl2ZUVsZW1lbnQucmVtb3ZlQXR0cmlidXRlKCduZy12ZXJzaW9uJyk7XG4gIH1cbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHJlbmRlcjxUPihcbiAgdGVtcGxhdGVPckNvbXBvbmVudDogc3RyaW5nIHwgVHlwZTxUPixcbiAge1xuICAgIGRldGVjdENoYW5nZXMgPSB0cnVlLFxuICAgIGRlY2xhcmF0aW9ucyA9IFtdLFxuICAgIGltcG9ydHMgPSBbXSxcbiAgICBwcm92aWRlcnMgPSBbXSxcbiAgICBzY2hlbWFzID0gW10sXG4gICAgcXVlcmllcyxcbiAgICB3cmFwcGVyID0gV3JhcHBlckNvbXBvbmVudCxcbiAgICBjb21wb25lbnRQcm9wZXJ0aWVzID0ge30sXG4gIH06IFJlbmRlck9wdGlvbnM8VD4sXG4pOiBQcm9taXNlPFJlbmRlclJlc3VsdD4ge1xuICBjb25zdCBpc1RlbXBsYXRlID0gdHlwZW9mIHRlbXBsYXRlT3JDb21wb25lbnQgPT09ICdzdHJpbmcnO1xuICBjb25zdCBjb21wb25lbnREZWNsYXJhdGlvbnMgPSBpc1RlbXBsYXRlID8gW3dyYXBwZXJdIDogW3RlbXBsYXRlT3JDb21wb25lbnRdO1xuXG4gIFRlc3RCZWQuY29uZmlndXJlVGVzdGluZ01vZHVsZSh7XG4gICAgZGVjbGFyYXRpb25zOiBbLi4uZGVjbGFyYXRpb25zLCAuLi5jb21wb25lbnREZWNsYXJhdGlvbnNdLFxuICAgIHByb3ZpZGVyczogWy4uLnByb3ZpZGVyc10sXG4gICAgaW1wb3J0czogWy4uLmltcG9ydHNdLFxuICAgIHNjaGVtYXM6IFsuLi5zY2hlbWFzXSxcbiAgfSk7XG5cbiAgY29uc3QgZml4dHVyZSA9IGlzVGVtcGxhdGVcbiAgICA/IGNyZWF0ZVdyYXBwZXJDb21wb25lbnRGaXh0dXJlKHRlbXBsYXRlT3JDb21wb25lbnQgYXMgc3RyaW5nLCB7IHdyYXBwZXIsIGNvbXBvbmVudFByb3BlcnRpZXMgfSlcbiAgICA6IGNyZWF0ZUNvbXBvbmVudEZpeHR1cmUodGVtcGxhdGVPckNvbXBvbmVudCBhcyBUeXBlPFQ+LCB7IGNvbXBvbmVudFByb3BlcnRpZXMgfSk7XG5cbiAgYXdhaXQgVGVzdEJlZC5jb21waWxlQ29tcG9uZW50cygpO1xuXG4gIGlmIChkZXRlY3RDaGFuZ2VzKSB7XG4gICAgZml4dHVyZS5kZXRlY3RDaGFuZ2VzKCk7XG4gIH1cblxuICBjb25zdCBldmVudHNXaXRoRGV0ZWN0Q2hhbmdlcyA9IE9iamVjdC5rZXlzKGZpcmVFdmVudCkucmVkdWNlKFxuICAgIChldmVudHMsIGtleSkgPT4ge1xuICAgICAgZXZlbnRzW2tleV0gPSAoZWxlbWVudDogSFRNTEVsZW1lbnQsIG9wdGlvbnM/OiB7fSkgPT4ge1xuICAgICAgICBjb25zdCByZXN1bHQgPSBmaXJlRXZlbnRba2V5XShlbGVtZW50LCBvcHRpb25zKTtcbiAgICAgICAgZml4dHVyZS5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICB9O1xuICAgICAgcmV0dXJuIGV2ZW50cztcbiAgICB9LFxuICAgIHt9IGFzIEZpcmVGdW5jdGlvbiAmIEZpcmVPYmplY3QsXG4gICk7XG5cbiAgcmV0dXJuIHtcbiAgICBmaXh0dXJlLFxuICAgIGNvbnRhaW5lcjogZml4dHVyZS5uYXRpdmVFbGVtZW50LFxuICAgIGRlYnVnOiAoZWxlbWVudCA9IGZpeHR1cmUubmF0aXZlRWxlbWVudCkgPT4gY29uc29sZS5sb2cocHJldHR5RE9NKGVsZW1lbnQpKSxcbiAgICAuLi5nZXRRdWVyaWVzRm9yRWxlbWVudChmaXh0dXJlLm5hdGl2ZUVsZW1lbnQsIHF1ZXJpZXMpLFxuICAgIC4uLmV2ZW50c1dpdGhEZXRlY3RDaGFuZ2VzLFxuICB9IGFzIGFueTtcbn1cblxuLyoqXG4gKiBDcmVhdGVzIHRoZSB3cmFwcGVyIGNvbXBvbmVudCBhbmQgc2V0cyBpdHMgdGhlIHRlbXBsYXRlIHRvIHRoZSB0by1iZS10ZXN0ZWQgY29tcG9uZW50XG4gKi9cbmZ1bmN0aW9uIGNyZWF0ZVdyYXBwZXJDb21wb25lbnRGaXh0dXJlPFQ+KFxuICB0ZW1wbGF0ZTogc3RyaW5nLFxuICB7XG4gICAgd3JhcHBlcixcbiAgICBjb21wb25lbnRQcm9wZXJ0aWVzLFxuICB9OiB7XG4gICAgd3JhcHBlcjogUmVuZGVyT3B0aW9uczxUPlsnd3JhcHBlciddO1xuICAgIGNvbXBvbmVudFByb3BlcnRpZXM6IFJlbmRlck9wdGlvbnM8VD5bJ2NvbXBvbmVudFByb3BlcnRpZXMnXTtcbiAgfSxcbik6IENvbXBvbmVudEZpeHR1cmU8YW55PiB7XG4gIFRlc3RCZWQub3ZlcnJpZGVDb21wb25lbnQod3JhcHBlciwge1xuICAgIHNldDoge1xuICAgICAgdGVtcGxhdGU6IHRlbXBsYXRlLFxuICAgIH0sXG4gIH0pO1xuXG4gIGNvbnN0IGZpeHR1cmUgPSBUZXN0QmVkLmNyZWF0ZUNvbXBvbmVudCh3cmFwcGVyKTtcbiAgLy8gZ2V0IHRoZSBjb21wb25lbnQgc2VsZWN0b3IsIGUuZy4gPGZvbyBjb2xvcj1cImdyZWVuXCI+IGFuZCA8Zm9vPiByZXN1bHRzIGluIGZvb1xuICBjb25zdCBjb21wb25lbnRTZWxlY3RvciA9IHRlbXBsYXRlLm1hdGNoKC9cXDwoLio/KVxcIC8pIHx8IHRlbXBsYXRlLm1hdGNoKC9cXDwoLio/KVxcPi8pO1xuICBpZiAoIWNvbXBvbmVudFNlbGVjdG9yKSB7XG4gICAgdGhyb3cgRXJyb3IoYFRlbXBsYXRlICR7dGVtcGxhdGV9IGlzIG5vdCB2YWxpZC5gKTtcbiAgfVxuXG4gIGNvbnN0IHN1dCA9IGZpeHR1cmUuZGVidWdFbGVtZW50LnF1ZXJ5KEJ5LmNzcyhjb21wb25lbnRTZWxlY3RvclsxXSkpO1xuICBzZXRDb21wb25lbnRQcm9wZXJ0aWVzKHN1dCwgeyBjb21wb25lbnRQcm9wZXJ0aWVzIH0pO1xuICByZXR1cm4gZml4dHVyZTtcbn1cblxuLyoqXG4gKiBDcmVhdGVzIHRoZSBjb21wb25lbnRzIGFuZCBzZXRzIGl0cyBwcm9wZXJ0aWVzXG4gKi9cbmZ1bmN0aW9uIGNyZWF0ZUNvbXBvbmVudEZpeHR1cmU8VD4oXG4gIGNvbXBvbmVudDogVHlwZTxUPixcbiAge1xuICAgIGNvbXBvbmVudFByb3BlcnRpZXMgPSB7fSxcbiAgfToge1xuICAgIGNvbXBvbmVudFByb3BlcnRpZXM6IFJlbmRlck9wdGlvbnM8VD5bJ2NvbXBvbmVudFByb3BlcnRpZXMnXTtcbiAgfSxcbik6IENvbXBvbmVudEZpeHR1cmU8VD4ge1xuICBjb25zdCBmaXh0dXJlID0gVGVzdEJlZC5jcmVhdGVDb21wb25lbnQoY29tcG9uZW50KTtcbiAgc2V0Q29tcG9uZW50UHJvcGVydGllcyhmaXh0dXJlLCB7IGNvbXBvbmVudFByb3BlcnRpZXMgfSk7XG4gIHJldHVybiBmaXh0dXJlO1xufVxuXG4vKipcbiAqIFNldCB0aGUgY29tcG9uZW50IHByb3BlcnRpZXNcbiAqL1xuZnVuY3Rpb24gc2V0Q29tcG9uZW50UHJvcGVydGllczxUPihcbiAgZml4dHVyZTogQ29tcG9uZW50Rml4dHVyZTxUPiB8IERlYnVnRWxlbWVudCxcbiAge1xuICAgIGNvbXBvbmVudFByb3BlcnRpZXMgPSB7fSxcbiAgfToge1xuICAgIGNvbXBvbmVudFByb3BlcnRpZXM6IFJlbmRlck9wdGlvbnM8VD5bJ2NvbXBvbmVudFByb3BlcnRpZXMnXTtcbiAgfSxcbikge1xuICBmb3IgKGNvbnN0IGtleSBvZiBPYmplY3Qua2V5cyhjb21wb25lbnRQcm9wZXJ0aWVzKSkge1xuICAgIGZpeHR1cmUuY29tcG9uZW50SW5zdGFuY2Vba2V5XSA9IGNvbXBvbmVudFByb3BlcnRpZXNba2V5XTtcbiAgfVxuICByZXR1cm4gZml4dHVyZTtcbn1cbiJdfQ==

@@ -8,6 +8,6 @@ /**

*/
export { createComponent } from './lib/testing-library';
export { render } from './lib/testing-library';
export { configureJestSetup } from './jest-utils';
export { queries, queryHelpers, within, queryByPlaceholderText, queryAllByPlaceholderText, getByPlaceholderText, getAllByPlaceholderText, queryBySelectText, queryAllBySelectText, getBySelectText, getAllBySelectText, queryByText, queryAllByText, getByText, getAllByText, queryByLabelText, queryAllByLabelText, getByLabelText, getAllByLabelText, queryByAltText, queryAllByAltText, getByAltText, getAllByAltText, queryByTestId, queryAllByTestId, getByTestId, getAllByTestId, queryByTitle, queryAllByTitle, getByTitle, getAllByTitle, queryByValue, queryAllByValue, getByValue, getAllByValue, queryByDisplayValue, queryAllByDisplayValue, getByDisplayValue, getAllByDisplayValue, queryByRole, queryAllByRole, getByRole, getAllByRole, queryByAttribute, queryAllByAttribute, firstResultOrNull, debugDOM, getElementError, wait, waitForDomChange, waitForElement, getDefaultNormalizer, getNodeText, fireEvent, getQueriesForElement, prettyDOM, configure } from 'dom-testing-library';
export { queries, queryHelpers, within, getByLabelText, getAllByLabelText, queryByLabelText, queryAllByLabelText, findByLabelText, findAllByLabelText, getByPlaceholderText, getAllByPlaceholderText, queryByPlaceholderText, queryAllByPlaceholderText, findByPlaceholderText, findAllByPlaceholderText, getByText, getAllByText, queryByText, queryAllByText, findByText, findAllByText, getByAltText, getAllByAltText, queryByAltText, queryAllByAltText, findByAltText, findAllByAltText, getByTitle, getAllByTitle, queryByTitle, queryAllByTitle, findByTitle, findAllByTitle, getByDisplayValue, getAllByDisplayValue, queryByDisplayValue, queryAllByDisplayValue, findByDisplayValue, findAllByDisplayValue, getByRole, getAllByRole, queryByRole, queryAllByRole, findByRole, findAllByRole, getByTestId, getAllByTestId, queryByTestId, queryAllByTestId, findByTestId, findAllByTestId, queryByAttribute, queryAllByAttribute, debugDOM, getElementError, wait, waitForDomChange, waitForElement, waitForElementToBeRemoved, getDefaultNormalizer, getNodeText, fireEvent, getQueriesForElement, prettyDOM, configure } from 'dom-testing-library';
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljX2FwaS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0Bhbmd1bGFyLWV4dGVuc2lvbnMvdGVzdGluZy1saWJyYXJ5LyIsInNvdXJjZXMiOlsicHVibGljX2FwaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBS0EsZ0NBQWMsdUJBQXVCLENBQUM7QUFDdEMsbUNBQWMsY0FBYyxDQUFDO0FBQzdCLHE3QkFBYyxxQkFBcUIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBQdWJsaWMgQVBJIFN1cmZhY2Ugb2YgdGVzdGluZy1saWJyYXJ5XG4gKi9cblxuZXhwb3J0ICogZnJvbSAnLi9saWIvbW9kZWxzJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3Rlc3RpbmctbGlicmFyeSc7XG5leHBvcnQgKiBmcm9tICcuL2plc3QtdXRpbHMnO1xuZXhwb3J0ICogZnJvbSAnZG9tLXRlc3RpbmctbGlicmFyeSc7XG4iXX0=
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljX2FwaS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0Bhbmd1bGFyLWV4dGVuc2lvbnMvdGVzdGluZy1saWJyYXJ5LyIsInNvdXJjZXMiOlsicHVibGljX2FwaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBS0EsdUJBQWMsdUJBQXVCLENBQUM7QUFDdEMsbUNBQWMsY0FBYyxDQUFDO0FBQzdCLHlrQ0FBYyxxQkFBcUIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBQdWJsaWMgQVBJIFN1cmZhY2Ugb2YgdGVzdGluZy1saWJyYXJ5XG4gKi9cblxuZXhwb3J0ICogZnJvbSAnLi9saWIvbW9kZWxzJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3Rlc3RpbmctbGlicmFyeSc7XG5leHBvcnQgKiBmcm9tICcuL2plc3QtdXRpbHMnO1xuZXhwb3J0ICogZnJvbSAnZG9tLXRlc3RpbmctbGlicmFyeSc7XG4iXX0=

@@ -8,4 +8,4 @@ /**

*/
export { createComponent, configureJestSetup, queries, queryHelpers, within, queryByPlaceholderText, queryAllByPlaceholderText, getByPlaceholderText, getAllByPlaceholderText, queryBySelectText, queryAllBySelectText, getBySelectText, getAllBySelectText, queryByText, queryAllByText, getByText, getAllByText, queryByLabelText, queryAllByLabelText, getByLabelText, getAllByLabelText, queryByAltText, queryAllByAltText, getByAltText, getAllByAltText, queryByTestId, queryAllByTestId, getByTestId, getAllByTestId, queryByTitle, queryAllByTitle, getByTitle, getAllByTitle, queryByValue, queryAllByValue, getByValue, getAllByValue, queryByDisplayValue, queryAllByDisplayValue, getByDisplayValue, getAllByDisplayValue, queryByRole, queryAllByRole, getByRole, getAllByRole, queryByAttribute, queryAllByAttribute, firstResultOrNull, debugDOM, getElementError, wait, waitForDomChange, waitForElement, getDefaultNormalizer, getNodeText, fireEvent, getQueriesForElement, prettyDOM, configure } from './public_api';
export { render, configureJestSetup, queries, queryHelpers, within, getByLabelText, getAllByLabelText, queryByLabelText, queryAllByLabelText, findByLabelText, findAllByLabelText, getByPlaceholderText, getAllByPlaceholderText, queryByPlaceholderText, queryAllByPlaceholderText, findByPlaceholderText, findAllByPlaceholderText, getByText, getAllByText, queryByText, queryAllByText, findByText, findAllByText, getByAltText, getAllByAltText, queryByAltText, queryAllByAltText, findByAltText, findAllByAltText, getByTitle, getAllByTitle, queryByTitle, queryAllByTitle, findByTitle, findAllByTitle, getByDisplayValue, getAllByDisplayValue, queryByDisplayValue, queryAllByDisplayValue, findByDisplayValue, findAllByDisplayValue, getByRole, getAllByRole, queryByRole, queryAllByRole, findByRole, findAllByRole, getByTestId, getAllByTestId, queryByTestId, queryAllByTestId, findByTestId, findAllByTestId, queryByAttribute, queryAllByAttribute, debugDOM, getElementError, wait, waitForDomChange, waitForElement, waitForElementToBeRemoved, getDefaultNormalizer, getNodeText, fireEvent, getQueriesForElement, prettyDOM, configure } from './public_api';
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5ndWxhci1leHRlbnNpb25zLXRlc3RpbmctbGlicmFyeS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0Bhbmd1bGFyLWV4dGVuc2lvbnMvdGVzdGluZy1saWJyYXJ5LyIsInNvdXJjZXMiOlsiYW5ndWxhci1leHRlbnNpb25zLXRlc3RpbmctbGlicmFyeS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBSUEsMDlCQUFjLGNBQWMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogR2VuZXJhdGVkIGJ1bmRsZSBpbmRleC4gRG8gbm90IGVkaXQuXG4gKi9cblxuZXhwb3J0ICogZnJvbSAnLi9wdWJsaWNfYXBpJztcbiJdfQ==
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5ndWxhci1leHRlbnNpb25zLXRlc3RpbmctbGlicmFyeS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0Bhbmd1bGFyLWV4dGVuc2lvbnMvdGVzdGluZy1saWJyYXJ5LyIsInNvdXJjZXMiOlsiYW5ndWxhci1leHRlbnNpb25zLXRlc3RpbmctbGlicmFyeS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBSUEscW1DQUFjLGNBQWMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogR2VuZXJhdGVkIGJ1bmRsZSBpbmRleC4gRG8gbm90IGVkaXQuXG4gKi9cblxuZXhwb3J0ICogZnJvbSAnLi9wdWJsaWNfYXBpJztcbiJdfQ==

@@ -5,2 +5,5 @@ /**

*/
/** @typedef {?} */
var RenderResultQueries;
export { RenderResultQueries };
/**

@@ -15,29 +18,26 @@ * @record

/** @type {?} */
RenderResult.prototype.getFromTestBed;
/** @type {?} */
RenderResult.prototype.fixture;
// unsupported: template constraints.
/**
* @record
* @template C, Q
*/
export function Options() { }
export function RenderOptions() { }
/** @type {?|undefined} */
Options.prototype.detectChanges;
/** @type {?} */
Options.prototype.declarations;
RenderOptions.prototype.detectChanges;
/** @type {?|undefined} */
Options.prototype.providers;
RenderOptions.prototype.declarations;
/** @type {?|undefined} */
Options.prototype.imports;
RenderOptions.prototype.providers;
/** @type {?|undefined} */
Options.prototype.schemas;
/**
* @record
* @template T
*/
export function ComponentInput() { }
/** @type {?} */
ComponentInput.prototype.component;
RenderOptions.prototype.imports;
/** @type {?|undefined} */
ComponentInput.prototype.parameters;
RenderOptions.prototype.schemas;
/** @type {?|undefined} */
RenderOptions.prototype.componentProperties;
/** @type {?|undefined} */
RenderOptions.prototype.queries;
/** @type {?|undefined} */
RenderOptions.prototype.wrapper;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kZWxzLmpzIiwic291cmNlUm9vdCI6Im5nOi8vQGFuZ3VsYXItZXh0ZW5zaW9ucy90ZXN0aW5nLWxpYnJhcnkvIiwic291cmNlcyI6WyJsaWIvbW9kZWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBUeXBlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb21wb25lbnRGaXh0dXJlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZS90ZXN0aW5nJztcbmltcG9ydCB7IGdldFF1ZXJpZXNGb3JFbGVtZW50LCBGaXJlT2JqZWN0IH0gZnJvbSAnZG9tLXRlc3RpbmctbGlicmFyeSc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgUmVuZGVyUmVzdWx0IGV4dGVuZHMgUmV0dXJuVHlwZTx0eXBlb2YgZ2V0UXVlcmllc0ZvckVsZW1lbnQ+LCBGaXJlT2JqZWN0IHtcbiAgY29udGFpbmVyOiBIVE1MRWxlbWVudDtcbiAgZGVidWc6ICgpID0+IHZvaWQ7XG4gIGdldEZyb21UZXN0QmVkOiAodG9rZW46IGFueSwgbm90Rm91bmRWYWx1ZT86IGFueSkgPT4gYW55O1xuICBmaXh0dXJlOiBDb21wb25lbnRGaXh0dXJlPGFueT47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgT3B0aW9ucyB7XG4gIGRldGVjdENoYW5nZXM/OiBib29sZWFuO1xuICBkZWNsYXJhdGlvbnM6IGFueVtdO1xuICBwcm92aWRlcnM/OiBhbnlbXTtcbiAgaW1wb3J0cz86IGFueVtdO1xuICBzY2hlbWFzPzogYW55W107XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ29tcG9uZW50SW5wdXQ8VD4ge1xuICBjb21wb25lbnQ6IFR5cGU8VD47XG4gIHBhcmFtZXRlcnM/OiBQYXJ0aWFsPFQ+O1xufVxuIl19
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kZWxzLmpzIiwic291cmNlUm9vdCI6Im5nOi8vQGFuZ3VsYXItZXh0ZW5zaW9ucy90ZXN0aW5nLWxpYnJhcnkvIiwic291cmNlcyI6WyJsaWIvbW9kZWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBUeXBlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb21wb25lbnRGaXh0dXJlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZS90ZXN0aW5nJztcbmltcG9ydCB7IEZpcmVPYmplY3QsIFF1ZXJpZXMsIHF1ZXJpZXMsIEJvdW5kRnVuY3Rpb24gfSBmcm9tICdkb20tdGVzdGluZy1saWJyYXJ5JztcblxuZXhwb3J0IHR5cGUgUmVuZGVyUmVzdWx0UXVlcmllczxRIGV4dGVuZHMgUXVlcmllcyA9IHR5cGVvZiBxdWVyaWVzPiA9IHsgW1AgaW4ga2V5b2YgUV06IEJvdW5kRnVuY3Rpb248UVtQXT4gfTtcblxuZXhwb3J0IGludGVyZmFjZSBSZW5kZXJSZXN1bHQgZXh0ZW5kcyBSZW5kZXJSZXN1bHRRdWVyaWVzLCBGaXJlT2JqZWN0IHtcbiAgY29udGFpbmVyOiBIVE1MRWxlbWVudDtcbiAgZGVidWc6IChlbGVtZW50PzogSFRNTEVsZW1lbnQpID0+IHZvaWQ7XG4gIGZpeHR1cmU6IENvbXBvbmVudEZpeHR1cmU8YW55Pjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBSZW5kZXJPcHRpb25zPEMsIFEgZXh0ZW5kcyBRdWVyaWVzID0gdHlwZW9mIHF1ZXJpZXM+IHtcbiAgZGV0ZWN0Q2hhbmdlcz86IGJvb2xlYW47XG4gIGRlY2xhcmF0aW9ucz86IGFueVtdO1xuICBwcm92aWRlcnM/OiBhbnlbXTtcbiAgaW1wb3J0cz86IGFueVtdO1xuICBzY2hlbWFzPzogYW55W107XG4gIGNvbXBvbmVudFByb3BlcnRpZXM/OiBQYXJ0aWFsPEM+O1xuICBxdWVyaWVzPzogUTtcbiAgd3JhcHBlcj86IFR5cGU8YW55Pjtcbn1cbiJdfQ==

@@ -9,4 +9,5 @@ /**

import { getQueriesForElement, prettyDOM, fireEvent } from 'dom-testing-library';
var TestComponent = /** @class */ (function () {
function TestComponent(elemtRef) {
import { By } from '@angular/platform-browser';
var WrapperComponent = /** @class */ (function () {
function WrapperComponent(elemtRef) {
this.elemtRef = elemtRef;

@@ -17,3 +18,3 @@ }

*/
TestComponent.prototype.ngOnInit = /**
WrapperComponent.prototype.ngOnInit = /**
* @return {?}

@@ -24,14 +25,14 @@ */

};
TestComponent.decorators = [
{ type: Component, args: [{ selector: 'test-component', template: '' },] },
WrapperComponent.decorators = [
{ type: Component, args: [{ selector: 'wrapper-component', template: '' },] },
];
/** @nocollapse */
TestComponent.ctorParameters = function () { return [
WrapperComponent.ctorParameters = function () { return [
{ type: ElementRef }
]; };
return TestComponent;
return WrapperComponent;
}());
if (false) {
/** @type {?} */
TestComponent.prototype.elemtRef;
WrapperComponent.prototype.elemtRef;
}

@@ -44,13 +45,13 @@ /**

*/
export function createComponent(templateOrComponent, _a) {
var _b = _a.detectChanges, detectChanges = _b === void 0 ? true : _b, _c = _a.declarations, declarations = _c === void 0 ? [] : _c, _d = _a.providers, providers = _d === void 0 ? [] : _d, _e = _a.imports, imports = _e === void 0 ? [] : _e, _f = _a.schemas, schemas = _f === void 0 ? [] : _f;
export function render(templateOrComponent, _a) {
var _b = _a.detectChanges, detectChanges = _b === void 0 ? true : _b, _c = _a.declarations, declarations = _c === void 0 ? [] : _c, _d = _a.imports, imports = _d === void 0 ? [] : _d, _e = _a.providers, providers = _e === void 0 ? [] : _e, _f = _a.schemas, schemas = _f === void 0 ? [] : _f, queries = _a.queries, _g = _a.wrapper, wrapper = _g === void 0 ? WrapperComponent : _g, _h = _a.componentProperties, componentProperties = _h === void 0 ? {} : _h;
return tslib_1.__awaiter(this, void 0, void 0, function () {
var isTemplate, testComponent, fixture, eventsWithDetectChanges;
return tslib_1.__generator(this, function (_g) {
switch (_g.label) {
var isTemplate, componentDeclarations, fixture, eventsWithDetectChanges;
return tslib_1.__generator(this, function (_j) {
switch (_j.label) {
case 0:
isTemplate = typeof templateOrComponent === 'string';
testComponent = isTemplate ? [TestComponent] : [];
componentDeclarations = isTemplate ? [wrapper] : [templateOrComponent];
TestBed.configureTestingModule({
declarations: tslib_1.__spread(declarations, testComponent),
declarations: tslib_1.__spread(declarations, componentDeclarations),
providers: tslib_1.__spread(providers),

@@ -61,7 +62,7 @@ imports: tslib_1.__spread(imports),

fixture = isTemplate
? createTestComponentFixture(/** @type {?} */ (templateOrComponent))
: createComponentFixture(/** @type {?} */ (templateOrComponent));
? createWrapperComponentFixture(/** @type {?} */ (templateOrComponent), { wrapper: wrapper, componentProperties: componentProperties })
: createComponentFixture(/** @type {?} */ (templateOrComponent), { componentProperties: componentProperties });
return [4 /*yield*/, TestBed.compileComponents()];
case 1:
_g.sent();
_j.sent();
if (detectChanges) {

@@ -79,3 +80,6 @@ fixture.detectChanges();

}, /** @type {?} */ ({}));
return [2 /*return*/, tslib_1.__assign({ fixture: fixture, container: fixture.nativeElement, getFromTestBed: TestBed.get, debug: function () { return console.log(prettyDOM(fixture.nativeElement)); } }, eventsWithDetectChanges, getQueriesForElement(fixture.nativeElement))];
return [2 /*return*/, /** @type {?} */ (tslib_1.__assign({ fixture: fixture, container: fixture.nativeElement, debug: function (element) {
if (element === void 0) { element = fixture.nativeElement; }
return console.log(prettyDOM(element));
} }, getQueriesForElement(fixture.nativeElement, queries), eventsWithDetectChanges))];
}

@@ -86,7 +90,11 @@ });

/**
* Creates the wrapper component and sets its the template to the to-be-tested component
* @template T
* @param {?} template
* @param {?} __1
* @return {?}
*/
function createTestComponentFixture(template) {
TestBed.overrideComponent(TestComponent, {
function createWrapperComponentFixture(template, _a) {
var wrapper = _a.wrapper, componentProperties = _a.componentProperties;
TestBed.overrideComponent(wrapper, {
set: {

@@ -96,18 +104,42 @@ template: template,

});
return TestBed.createComponent(TestComponent);
/** @type {?} */
var fixture = TestBed.createComponent(wrapper);
/** @type {?} */
var componentSelector = template.match(/\<(.*?)\ /) || template.match(/\<(.*?)\>/);
if (!componentSelector) {
throw Error("Template " + template + " is not valid.");
}
/** @type {?} */
var sut = fixture.debugElement.query(By.css(componentSelector[1]));
setComponentProperties(sut, { componentProperties: componentProperties });
return fixture;
}
/**
* Creates the components and sets its properties
* @template T
* @param {?} componentInput
* @param {?} component
* @param {?} __1
* @return {?}
*/
function createComponentFixture(componentInput) {
var e_1, _a;
var component = componentInput.component, _b = componentInput.parameters, parameters = _b === void 0 ? {} : _b;
function createComponentFixture(component, _a) {
var _b = _a.componentProperties, componentProperties = _b === void 0 ? {} : _b;
/** @type {?} */
var fixture = TestBed.createComponent(component);
setComponentProperties(fixture, { componentProperties: componentProperties });
return fixture;
}
/**
* Set the component properties
* @template T
* @param {?} fixture
* @param {?} __1
* @return {?}
*/
function setComponentProperties(fixture, _a) {
var _b = _a.componentProperties, componentProperties = _b === void 0 ? {} : _b;
var e_1, _c;
try {
for (var _c = tslib_1.__values(Object.keys(parameters)), _d = _c.next(); !_d.done; _d = _c.next()) {
var key = _d.value;
fixture.componentInstance[key] = parameters[key];
for (var _d = tslib_1.__values(Object.keys(componentProperties)), _e = _d.next(); !_e.done; _e = _d.next()) {
var key = _e.value;
fixture.componentInstance[key] = componentProperties[key];
}

@@ -118,3 +150,3 @@ }

try {
if (_d && !_d.done && (_a = _c.return)) _a.call(_c);
if (_e && !_e.done && (_c = _d.return)) _c.call(_d);
}

@@ -126,2 +158,2 @@ finally { if (e_1) throw e_1.error; }

//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVzdGluZy1saWJyYXJ5LmpzIiwic291cmNlUm9vdCI6Im5nOi8vQGFuZ3VsYXItZXh0ZW5zaW9ucy90ZXN0aW5nLWxpYnJhcnkvIiwic291cmNlcyI6WyJsaWIvdGVzdGluZy1saWJyYXJ5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsT0FBTyxFQUFFLFNBQVMsRUFBVSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDOUQsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ2hELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUE0QixNQUFNLHFCQUFxQixDQUFDOztJQU16Ryx1QkFBb0IsUUFBb0I7UUFBcEIsYUFBUSxHQUFSLFFBQVEsQ0FBWTtLQUFJOzs7O0lBRTVDLGdDQUFROzs7SUFBUjtRQUNFLElBQUksQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDLGVBQWUsQ0FBQyxZQUFZLENBQUMsQ0FBQztLQUMzRDs7Z0JBTkYsU0FBUyxTQUFDLEVBQUUsUUFBUSxFQUFFLGdCQUFnQixFQUFFLFFBQVEsRUFBRSxFQUFFLEVBQUU7Ozs7Z0JBTjNCLFVBQVU7O3dCQUF0Qzs7Ozs7Ozs7Ozs7O0FBaUJBLE1BQU0sVUFBZ0IsZUFBZSxDQUNuQyxtQkFBK0MsRUFDL0MsRUFBZ0c7UUFBOUYscUJBQW9CLEVBQXBCLHlDQUFvQixFQUFFLG9CQUFpQixFQUFqQixzQ0FBaUIsRUFBRSxpQkFBYyxFQUFkLG1DQUFjLEVBQUUsZUFBWSxFQUFaLGlDQUFZLEVBQUUsZUFBWSxFQUFaLGlDQUFZOzs7Ozs7b0JBRS9FLFVBQVUsR0FBRyxPQUFPLG1CQUFtQixLQUFLLFFBQVEsQ0FBQztvQkFDckQsYUFBYSxHQUFHLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO29CQUV4RCxPQUFPLENBQUMsc0JBQXNCLENBQUM7d0JBQzdCLFlBQVksbUJBQU0sWUFBWSxFQUFLLGFBQWEsQ0FBQzt3QkFDakQsU0FBUyxtQkFBTSxTQUFTLENBQUM7d0JBQ3pCLE9BQU8sbUJBQU0sT0FBTyxDQUFDO3dCQUNyQixPQUFPLG1CQUFNLE9BQU8sQ0FBQztxQkFDdEIsQ0FBQyxDQUFDO29CQUVHLE9BQU8sR0FBRyxVQUFVO3dCQUN4QixDQUFDLENBQUMsMEJBQTBCLG1CQUFTLG1CQUFtQixFQUFDO3dCQUN6RCxDQUFDLENBQUMsc0JBQXNCLG1CQUFvQixtQkFBbUIsRUFBQyxDQUFDO29CQUVuRSxxQkFBTSxPQUFPLENBQUMsaUJBQWlCLEVBQUUsRUFBQTs7b0JBQWpDLFNBQWlDLENBQUM7b0JBRWxDLElBQUksYUFBYSxFQUFFO3dCQUNqQixPQUFPLENBQUMsYUFBYSxFQUFFLENBQUM7cUJBQ3pCO29CQUVLLHVCQUF1QixHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsTUFBTSxDQUMzRCxVQUFDLE1BQU0sRUFBRSxHQUFHO3dCQUNWLE1BQU0sQ0FBQyxHQUFHLENBQUMsR0FBRyxVQUFDLE9BQW9CLEVBQUUsT0FBWTs7NEJBQy9DLElBQU0sTUFBTSxHQUFHLFNBQVMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxPQUFPLEVBQUUsT0FBTyxDQUFDLENBQUM7NEJBQ2hELE9BQU8sQ0FBQyxhQUFhLEVBQUUsQ0FBQzs0QkFDeEIsT0FBTyxNQUFNLENBQUM7eUJBQ2YsQ0FBQzt3QkFDRixPQUFPLE1BQU0sQ0FBQztxQkFDZixvQkFDRCxFQUErQixFQUNoQyxDQUFDO29CQUVGLHlDQUNFLE9BQU8sU0FBQSxFQUNQLFNBQVMsRUFBRSxPQUFPLENBQUMsYUFBYSxFQUNoQyxjQUFjLEVBQUUsT0FBTyxDQUFDLEdBQUcsRUFDM0IsS0FBSyxFQUFFLGNBQU0sT0FBQSxPQUFPLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDLENBQUMsRUFBN0MsQ0FBNkMsSUFDdkQsdUJBQXVCLEVBQ3ZCLG9CQUFvQixDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMsR0FDOUM7Ozs7Q0FDSDs7Ozs7QUFFRCxTQUFTLDBCQUEwQixDQUFDLFFBQWdCO0lBQ2xELE9BQU8sQ0FBQyxpQkFBaUIsQ0FBQyxhQUFhLEVBQUU7UUFDdkMsR0FBRyxFQUFFO1lBQ0gsUUFBUSxFQUFFLFFBQVE7U0FDbkI7S0FDRixDQUFDLENBQUM7SUFDSCxPQUFPLE9BQU8sQ0FBQyxlQUFlLENBQUMsYUFBYSxDQUFDLENBQUM7Q0FDL0M7Ozs7OztBQUVELFNBQVMsc0JBQXNCLENBQUksY0FBaUM7O0lBQzFELElBQUEsb0NBQVMsRUFBRSw4QkFBZSxFQUFmLG9DQUFlLENBQW9COztJQUN0RCxJQUFNLE9BQU8sR0FBRyxPQUFPLENBQUMsZUFBZSxDQUFDLFNBQVMsQ0FBQyxDQUFDOztRQUNuRCxLQUFrQixJQUFBLEtBQUEsaUJBQUEsTUFBTSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQSxnQkFBQSw0QkFBRTtZQUF0QyxJQUFNLEdBQUcsV0FBQTtZQUNaLE9BQU8sQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHLENBQUMsR0FBRyxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUM7U0FDbEQ7Ozs7Ozs7OztJQUNELE9BQU8sT0FBTyxDQUFDO0NBQ2hCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQsIEVsZW1lbnRSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFRlc3RCZWQgfSBmcm9tICdAYW5ndWxhci9jb3JlL3Rlc3RpbmcnO1xuaW1wb3J0IHsgZ2V0UXVlcmllc0ZvckVsZW1lbnQsIHByZXR0eURPTSwgZmlyZUV2ZW50LCBGaXJlT2JqZWN0LCBGaXJlRnVuY3Rpb24gfSBmcm9tICdkb20tdGVzdGluZy1saWJyYXJ5JztcblxuaW1wb3J0IHsgT3B0aW9ucywgUmVuZGVyUmVzdWx0LCBDb21wb25lbnRJbnB1dCB9IGZyb20gJy4vbW9kZWxzJztcblxuQENvbXBvbmVudCh7IHNlbGVjdG9yOiAndGVzdC1jb21wb25lbnQnLCB0ZW1wbGF0ZTogJycgfSlcbmNsYXNzIFRlc3RDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGVsZW10UmVmOiBFbGVtZW50UmVmKSB7fVxuXG4gIG5nT25Jbml0KCkge1xuICAgIHRoaXMuZWxlbXRSZWYubmF0aXZlRWxlbWVudC5yZW1vdmVBdHRyaWJ1dGUoJ25nLXZlcnNpb24nKTtcbiAgfVxufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gY3JlYXRlQ29tcG9uZW50PFQ+KHRlbXBsYXRlOiBzdHJpbmcsIG9wdGlvbnM6IE9wdGlvbnMpOiBQcm9taXNlPFJlbmRlclJlc3VsdD47XG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gY3JlYXRlQ29tcG9uZW50PFQ+KGNvbXBvbmVudDogQ29tcG9uZW50SW5wdXQ8VD4sIG9wdGlvbnM6IE9wdGlvbnMpOiBQcm9taXNlPFJlbmRlclJlc3VsdD47XG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gY3JlYXRlQ29tcG9uZW50PFQ+KFxuICB0ZW1wbGF0ZU9yQ29tcG9uZW50OiBzdHJpbmcgfCBDb21wb25lbnRJbnB1dDxUPixcbiAgeyBkZXRlY3RDaGFuZ2VzID0gdHJ1ZSwgZGVjbGFyYXRpb25zID0gW10sIHByb3ZpZGVycyA9IFtdLCBpbXBvcnRzID0gW10sIHNjaGVtYXMgPSBbXSB9OiBPcHRpb25zLFxuKTogUHJvbWlzZTxSZW5kZXJSZXN1bHQ+IHtcbiAgY29uc3QgaXNUZW1wbGF0ZSA9IHR5cGVvZiB0ZW1wbGF0ZU9yQ29tcG9uZW50ID09PSAnc3RyaW5nJztcbiAgY29uc3QgdGVzdENvbXBvbmVudCA9IGlzVGVtcGxhdGUgPyBbVGVzdENvbXBvbmVudF0gOiBbXTtcblxuICBUZXN0QmVkLmNvbmZpZ3VyZVRlc3RpbmdNb2R1bGUoe1xuICAgIGRlY2xhcmF0aW9uczogWy4uLmRlY2xhcmF0aW9ucywgLi4udGVzdENvbXBvbmVudF0sXG4gICAgcHJvdmlkZXJzOiBbLi4ucHJvdmlkZXJzXSxcbiAgICBpbXBvcnRzOiBbLi4uaW1wb3J0c10sXG4gICAgc2NoZW1hczogWy4uLnNjaGVtYXNdLFxuICB9KTtcblxuICBjb25zdCBmaXh0dXJlID0gaXNUZW1wbGF0ZVxuICAgID8gY3JlYXRlVGVzdENvbXBvbmVudEZpeHR1cmUoPHN0cmluZz50ZW1wbGF0ZU9yQ29tcG9uZW50KVxuICAgIDogY3JlYXRlQ29tcG9uZW50Rml4dHVyZSg8Q29tcG9uZW50SW5wdXQ8VD4+dGVtcGxhdGVPckNvbXBvbmVudCk7XG5cbiAgYXdhaXQgVGVzdEJlZC5jb21waWxlQ29tcG9uZW50cygpO1xuXG4gIGlmIChkZXRlY3RDaGFuZ2VzKSB7XG4gICAgZml4dHVyZS5kZXRlY3RDaGFuZ2VzKCk7XG4gIH1cblxuICBjb25zdCBldmVudHNXaXRoRGV0ZWN0Q2hhbmdlcyA9IE9iamVjdC5rZXlzKGZpcmVFdmVudCkucmVkdWNlKFxuICAgIChldmVudHMsIGtleSkgPT4ge1xuICAgICAgZXZlbnRzW2tleV0gPSAoZWxlbWVudDogSFRNTEVsZW1lbnQsIG9wdGlvbnM/OiB7fSkgPT4ge1xuICAgICAgICBjb25zdCByZXN1bHQgPSBmaXJlRXZlbnRba2V5XShlbGVtZW50LCBvcHRpb25zKTtcbiAgICAgICAgZml4dHVyZS5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICB9O1xuICAgICAgcmV0dXJuIGV2ZW50cztcbiAgICB9LFxuICAgIHt9IGFzIEZpcmVGdW5jdGlvbiAmIEZpcmVPYmplY3QsXG4gICk7XG5cbiAgcmV0dXJuIHtcbiAgICBmaXh0dXJlLFxuICAgIGNvbnRhaW5lcjogZml4dHVyZS5uYXRpdmVFbGVtZW50LFxuICAgIGdldEZyb21UZXN0QmVkOiBUZXN0QmVkLmdldCxcbiAgICBkZWJ1ZzogKCkgPT4gY29uc29sZS5sb2cocHJldHR5RE9NKGZpeHR1cmUubmF0aXZlRWxlbWVudCkpLFxuICAgIC4uLmV2ZW50c1dpdGhEZXRlY3RDaGFuZ2VzLFxuICAgIC4uLmdldFF1ZXJpZXNGb3JFbGVtZW50KGZpeHR1cmUubmF0aXZlRWxlbWVudCksXG4gIH07XG59XG5cbmZ1bmN0aW9uIGNyZWF0ZVRlc3RDb21wb25lbnRGaXh0dXJlKHRlbXBsYXRlOiBzdHJpbmcpIHtcbiAgVGVzdEJlZC5vdmVycmlkZUNvbXBvbmVudChUZXN0Q29tcG9uZW50LCB7XG4gICAgc2V0OiB7XG4gICAgICB0ZW1wbGF0ZTogdGVtcGxhdGUsXG4gICAgfSxcbiAgfSk7XG4gIHJldHVybiBUZXN0QmVkLmNyZWF0ZUNvbXBvbmVudChUZXN0Q29tcG9uZW50KTtcbn1cblxuZnVuY3Rpb24gY3JlYXRlQ29tcG9uZW50Rml4dHVyZTxUPihjb21wb25lbnRJbnB1dDogQ29tcG9uZW50SW5wdXQ8VD4pIHtcbiAgY29uc3QgeyBjb21wb25lbnQsIHBhcmFtZXRlcnMgPSB7fSB9ID0gY29tcG9uZW50SW5wdXQ7XG4gIGNvbnN0IGZpeHR1cmUgPSBUZXN0QmVkLmNyZWF0ZUNvbXBvbmVudChjb21wb25lbnQpO1xuICBmb3IgKGNvbnN0IGtleSBvZiBPYmplY3Qua2V5cyhwYXJhbWV0ZXJzKSkge1xuICAgIGZpeHR1cmUuY29tcG9uZW50SW5zdGFuY2Vba2V5XSA9IHBhcmFtZXRlcnNba2V5XTtcbiAgfVxuICByZXR1cm4gZml4dHVyZTtcbn1cbiJdfQ==
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVzdGluZy1saWJyYXJ5LmpzIiwic291cmNlUm9vdCI6Im5nOi8vQGFuZ3VsYXItZXh0ZW5zaW9ucy90ZXN0aW5nLWxpYnJhcnkvIiwic291cmNlcyI6WyJsaWIvdGVzdGluZy1saWJyYXJ5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsT0FBTyxFQUFFLFNBQVMsRUFBVSxVQUFVLEVBQXNCLE1BQU0sZUFBZSxDQUFDO0FBQ2xGLE9BQU8sRUFBRSxPQUFPLEVBQW9CLE1BQU0sdUJBQXVCLENBQUM7QUFDbEUsT0FBTyxFQUFFLG9CQUFvQixFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQTRCLE1BQU0scUJBQXFCLENBQUM7QUFHM0csT0FBTyxFQUFFLEVBQUUsRUFBRSxNQUFNLDJCQUEyQixDQUFDOztJQUk3QywwQkFBb0IsUUFBb0I7UUFBcEIsYUFBUSxHQUFSLFFBQVEsQ0FBWTtLQUFJOzs7O0lBRTVDLG1DQUFROzs7SUFBUjtRQUNFLElBQUksQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDLGVBQWUsQ0FBQyxZQUFZLENBQUMsQ0FBQztLQUMzRDs7Z0JBTkYsU0FBUyxTQUFDLEVBQUUsUUFBUSxFQUFFLG1CQUFtQixFQUFFLFFBQVEsRUFBRSxFQUFFLEVBQUU7Ozs7Z0JBUDlCLFVBQVU7OzJCQUF0Qzs7Ozs7Ozs7Ozs7O0FBZ0JBLE1BQU0sVUFBZ0IsTUFBTSxDQUMxQixtQkFBcUMsRUFDckMsRUFTbUI7UUFSakIscUJBQW9CLEVBQXBCLHlDQUFvQixFQUNwQixvQkFBaUIsRUFBakIsc0NBQWlCLEVBQ2pCLGVBQVksRUFBWixpQ0FBWSxFQUNaLGlCQUFjLEVBQWQsbUNBQWMsRUFDZCxlQUFZLEVBQVosaUNBQVksRUFDWixvQkFBTyxFQUNQLGVBQTBCLEVBQTFCLCtDQUEwQixFQUMxQiwyQkFBd0IsRUFBeEIsNkNBQXdCOzs7Ozs7b0JBR3BCLFVBQVUsR0FBRyxPQUFPLG1CQUFtQixLQUFLLFFBQVEsQ0FBQztvQkFDckQscUJBQXFCLEdBQUcsVUFB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OztJQUsxQixJQUFNLE9BQU8sR0FBRyxPQUFPLENBQUMsZUFBZSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQ25ELHNCQUFzQixDQUFDLE9BQU8sRUFBRSxFQUFFLG1CQUFtQixxQkFBQSxFQUFFLENBQUMsQ0FBQztJQUN6RCxPQUFPLE9BQU8sQ0FBQztDQUNoQjs7Ozs7Ozs7QUFLRCxTQUFTLHNCQUFzQixDQUM3QixPQUEyQyxFQUMzQyxFQUlDO1FBSEMsMkJBQXdCLEVBQXhCLDZDQUF3Qjs7O1FBSzFCLEtBQWtCLElBQUEsS0FBQSxpQkFBQSxNQUFNLENBQUMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLENBQUEsZ0JBQUEsNEJBQUU7WUFBL0MsSUFBTSxHQUFHLFdBQUE7WUFDWixPQUFPLENBQUMsaUJBQWlCLENBQUMsR0FBRyxDQUFDLEdBQUcsbUJBQW1CLENBQUMsR0FBRyxDQUFDLENBQUM7U0FDM0Q7Ozs7Ozs7OztJQUNELE9BQU8sT0FBTyxDQUFDO0NBQ2hCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQsIEVsZW1lbnRSZWYsIFR5cGUsIERlYnVnRWxlbWVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgVGVzdEJlZCwgQ29tcG9uZW50Rml4dHVyZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvdGVzdGluZyc7XG5pbXBvcnQgeyBnZXRRdWVyaWVzRm9yRWxlbWVudCwgcHJldHR5RE9NLCBmaXJlRXZlbnQsIEZpcmVPYmplY3QsIEZpcmVGdW5jdGlvbiB9IGZyb20gJ2RvbS10ZXN0aW5nLWxpYnJhcnknO1xuXG5pbXBvcnQgeyBSZW5kZXJSZXN1bHQsIFJlbmRlck9wdGlvbnMgfSBmcm9tICcuL21vZGVscyc7XG5pbXBvcnQgeyBCeSB9IGZyb20gJ0Bhbmd1bGFyL3BsYXRmb3JtLWJyb3dzZXInO1xuXG5AQ29tcG9uZW50KHsgc2VsZWN0b3I6ICd3cmFwcGVyLWNvbXBvbmVudCcsIHRlbXBsYXRlOiAnJyB9KVxuY2xhc3MgV3JhcHBlckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgZWxlbXRSZWY6IEVsZW1lbnRSZWYpIHt9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5lbGVtdFJlZi5uYXRpdmVFbGVtZW50LnJlbW92ZUF0dHJpYnV0ZSgnbmctdmVyc2lvbicpO1xuICB9XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiByZW5kZXI8VD4oXG4gIHRlbXBsYXRlT3JDb21wb25lbnQ6IHN0cmluZyB8IFR5cGU8VD4sXG4gIHtcbiAgICBkZXRlY3RDaGFuZ2VzID0gdHJ1ZSxcbiAgICBkZWNsYXJhdGlvbnMgPSBbXSxcbiAgICBpbXBvcnRzID0gW10sXG4gICAgcHJvdmlkZXJzID0gW10sXG4gICAgc2NoZW1hcyA9IFtdLFxuICAgIHF1ZXJpZXMsXG4gICAgd3JhcHBlciA9IFdyYXBwZXJDb21wb25lbnQsXG4gICAgY29tcG9uZW50UHJvcGVydGllcyA9IHt9LFxuICB9OiBSZW5kZXJPcHRpb25zPFQ+LFxuKTogUHJvbWlzZTxSZW5kZXJSZXN1bHQ+IHtcbiAgY29uc3QgaXNUZW1wbGF0ZSA9IHR5cGVvZiB0ZW1wbGF0ZU9yQ29tcG9uZW50ID09PSAnc3RyaW5nJztcbiAgY29uc3QgY29tcG9uZW50RGVjbGFyYXRpb25zID0gaXNUZW1wbGF0ZSA/IFt3cmFwcGVyXSA6IFt0ZW1wbGF0ZU9yQ29tcG9uZW50XTtcblxuICBUZXN0QmVkLmNvbmZpZ3VyZVRlc3RpbmdNb2R1bGUoe1xuICAgIGRlY2xhcmF0aW9uczogWy4uLmRlY2xhcmF0aW9ucywgLi4uY29tcG9uZW50RGVjbGFyYXRpb25zXSxcbiAgICBwcm92aWRlcnM6IFsuLi5wcm92aWRlcnNdLFxuICAgIGltcG9ydHM6IFsuLi5pbXBvcnRzXSxcbiAgICBzY2hlbWFzOiBbLi4uc2NoZW1hc10sXG4gIH0pO1xuXG4gIGNvbnN0IGZpeHR1cmUgPSBpc1RlbXBsYXRlXG4gICAgPyBjcmVhdGVXcmFwcGVyQ29tcG9uZW50Rml4dHVyZSh0ZW1wbGF0ZU9yQ29tcG9uZW50IGFzIHN0cmluZywgeyB3cmFwcGVyLCBjb21wb25lbnRQcm9wZXJ0aWVzIH0pXG4gICAgOiBjcmVhdGVDb21wb25lbnRGaXh0dXJlKHRlbXBsYXRlT3JDb21wb25lbnQgYXMgVHlwZTxUPiwgeyBjb21wb25lbnRQcm9wZXJ0aWVzIH0pO1xuXG4gIGF3YWl0IFRlc3RCZWQuY29tcGlsZUNvbXBvbmVudHMoKTtcblxuICBpZiAoZGV0ZWN0Q2hhbmdlcykge1xuICAgIGZpeHR1cmUuZGV0ZWN0Q2hhbmdlcygpO1xuICB9XG5cbiAgY29uc3QgZXZlbnRzV2l0aERldGVjdENoYW5nZXMgPSBPYmplY3Qua2V5cyhmaXJlRXZlbnQpLnJlZHVjZShcbiAgICAoZXZlbnRzLCBrZXkpID0+IHtcbiAgICAgIGV2ZW50c1trZXldID0gKGVsZW1lbnQ6IEhUTUxFbGVtZW50LCBvcHRpb25zPzoge30pID0+IHtcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gZmlyZUV2ZW50W2tleV0oZWxlbWVudCwgb3B0aW9ucyk7XG4gICAgICAgIGZpeHR1cmUuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgfTtcbiAgICAgIHJldHVybiBldmVudHM7XG4gICAgfSxcbiAgICB7fSBhcyBGaXJlRnVuY3Rpb24gJiBGaXJlT2JqZWN0LFxuICApO1xuXG4gIHJldHVybiB7XG4gICAgZml4dHVyZSxcbiAgICBjb250YWluZXI6IGZpeHR1cmUubmF0aXZlRWxlbWVudCxcbiAgICBkZWJ1ZzogKGVsZW1lbnQgPSBmaXh0dXJlLm5hdGl2ZUVsZW1lbnQpID0+IGNvbnNvbGUubG9nKHByZXR0eURPTShlbGVtZW50KSksXG4gICAgLi4uZ2V0UXVlcmllc0ZvckVsZW1lbnQoZml4dHVyZS5uYXRpdmVFbGVtZW50LCBxdWVyaWVzKSxcbiAgICAuLi5ldmVudHNXaXRoRGV0ZWN0Q2hhbmdlcyxcbiAgfSBhcyBhbnk7XG59XG5cbi8qKlxuICogQ3JlYXRlcyB0aGUgd3JhcHBlciBjb21wb25lbnQgYW5kIHNldHMgaXRzIHRoZSB0ZW1wbGF0ZSB0byB0aGUgdG8tYmUtdGVzdGVkIGNvbXBvbmVudFxuICovXG5mdW5jdGlvbiBjcmVhdGVXcmFwcGVyQ29tcG9uZW50Rml4dHVyZTxUPihcbiAgdGVtcGxhdGU6IHN0cmluZyxcbiAge1xuICAgIHdyYXBwZXIsXG4gICAgY29tcG9uZW50UHJvcGVydGllcyxcbiAgfToge1xuICAgIHdyYXBwZXI6IFJlbmRlck9wdGlvbnM8VD5bJ3dyYXBwZXInXTtcbiAgICBjb21wb25lbnRQcm9wZXJ0aWVzOiBSZW5kZXJPcHRpb25zPFQ+Wydjb21wb25lbnRQcm9wZXJ0aWVzJ107XG4gIH0sXG4pOiBDb21wb25lbnRGaXh0dXJlPGFueT4ge1xuICBUZXN0QmVkLm92ZXJyaWRlQ29tcG9uZW50KHdyYXBwZXIsIHtcbiAgICBzZXQ6IHtcbiAgICAgIHRlbXBsYXRlOiB0ZW1wbGF0ZSxcbiAgICB9LFxuICB9KTtcblxuICBjb25zdCBmaXh0dXJlID0gVGVzdEJlZC5jcmVhdGVDb21wb25lbnQod3JhcHBlcik7XG4gIC8vIGdldCB0aGUgY29tcG9uZW50IHNlbGVjdG9yLCBlLmcuIDxmb28gY29sb3I9XCJncmVlblwiPiBhbmQgPGZvbz4gcmVzdWx0cyBpbiBmb29cbiAgY29uc3QgY29tcG9uZW50U2VsZWN0b3IgPSB0ZW1wbGF0ZS5tYXRjaCgvXFw8KC4qPylcXCAvKSB8fCB0ZW1wbGF0ZS5tYXRjaCgvXFw8KC4qPylcXD4vKTtcbiAgaWYgKCFjb21wb25lbnRTZWxlY3Rvcikge1xuICAgIHRocm93IEVycm9yKGBUZW1wbGF0ZSAke3RlbXBsYXRlfSBpcyBub3QgdmFsaWQuYCk7XG4gIH1cblxuICBjb25zdCBzdXQgPSBmaXh0dXJlLmRlYnVnRWxlbWVudC5xdWVyeShCeS5jc3MoY29tcG9uZW50U2VsZWN0b3JbMV0pKTtcbiAgc2V0Q29tcG9uZW50UHJvcGVydGllcyhzdXQsIHsgY29tcG9uZW50UHJvcGVydGllcyB9KTtcbiAgcmV0dXJuIGZpeHR1cmU7XG59XG5cbi8qKlxuICogQ3JlYXRlcyB0aGUgY29tcG9uZW50cyBhbmQgc2V0cyBpdHMgcHJvcGVydGllc1xuICovXG5mdW5jdGlvbiBjcmVhdGVDb21wb25lbnRGaXh0dXJlPFQ+KFxuICBjb21wb25lbnQ6IFR5cGU8VD4sXG4gIHtcbiAgICBjb21wb25lbnRQcm9wZXJ0aWVzID0ge30sXG4gIH06IHtcbiAgICBjb21wb25lbnRQcm9wZXJ0aWVzOiBSZW5kZXJPcHRpb25zPFQ+Wydjb21wb25lbnRQcm9wZXJ0aWVzJ107XG4gIH0sXG4pOiBDb21wb25lbnRGaXh0dXJlPFQ+IHtcbiAgY29uc3QgZml4dHVyZSA9IFRlc3RCZWQuY3JlYXRlQ29tcG9uZW50KGNvbXBvbmVudCk7XG4gIHNldENvbXBvbmVudFByb3BlcnRpZXMoZml4dHVyZSwgeyBjb21wb25lbnRQcm9wZXJ0aWVzIH0pO1xuICByZXR1cm4gZml4dHVyZTtcbn1cblxuLyoqXG4gKiBTZXQgdGhlIGNvbXBvbmVudCBwcm9wZXJ0aWVzXG4gKi9cbmZ1bmN0aW9uIHNldENvbXBvbmVudFByb3BlcnRpZXM8VD4oXG4gIGZpeHR1cmU6IENvbXBvbmVudEZpeHR1cmU8VD4gfCBEZWJ1Z0VsZW1lbnQsXG4gIHtcbiAgICBjb21wb25lbnRQcm9wZXJ0aWVzID0ge30sXG4gIH06IHtcbiAgICBjb21wb25lbnRQcm9wZXJ0aWVzOiBSZW5kZXJPcHRpb25zPFQ+Wydjb21wb25lbnRQcm9wZXJ0aWVzJ107XG4gIH0sXG4pIHtcbiAgZm9yIChjb25zdCBrZXkgb2YgT2JqZWN0LmtleXMoY29tcG9uZW50UHJvcGVydGllcykpIHtcbiAgICBmaXh0dXJlLmNvbXBvbmVudEluc3RhbmNlW2tleV0gPSBjb21wb25lbnRQcm9wZXJ0aWVzW2tleV07XG4gIH1cbiAgcmV0dXJuIGZpeHR1cmU7XG59XG4iXX0=

@@ -8,6 +8,6 @@ /**

*/
export { createComponent } from './lib/testing-library';
export { render } from './lib/testing-library';
export { configureJestSetup } from './jest-utils';
export { queries, queryHelpers, within, queryByPlaceholderText, queryAllByPlaceholderText, getByPlaceholderText, getAllByPlaceholderText, queryBySelectText, queryAllBySelectText, getBySelectText, getAllBySelectText, queryByText, queryAllByText, getByText, getAllByText, queryByLabelText, queryAllByLabelText, getByLabelText, getAllByLabelText, queryByAltText, queryAllByAltText, getByAltText, getAllByAltText, queryByTestId, queryAllByTestId, getByTestId, getAllByTestId, queryByTitle, queryAllByTitle, getByTitle, getAllByTitle, queryByValue, queryAllByValue, getByValue, getAllByValue, queryByDisplayValue, queryAllByDisplayValue, getByDisplayValue, getAllByDisplayValue, queryByRole, queryAllByRole, getByRole, getAllByRole, queryByAttribute, queryAllByAttribute, firstResultOrNull, debugDOM, getElementError, wait, waitForDomChange, waitForElement, getDefaultNormalizer, getNodeText, fireEvent, getQueriesForElement, prettyDOM, configure } from 'dom-testing-library';
export { queries, queryHelpers, within, getByLabelText, getAllByLabelText, queryByLabelText, queryAllByLabelText, findByLabelText, findAllByLabelText, getByPlaceholderText, getAllByPlaceholderText, queryByPlaceholderText, queryAllByPlaceholderText, findByPlaceholderText, findAllByPlaceholderText, getByText, getAllByText, queryByText, queryAllByText, findByText, findAllByText, getByAltText, getAllByAltText, queryByAltText, queryAllByAltText, findByAltText, findAllByAltText, getByTitle, getAllByTitle, queryByTitle, queryAllByTitle, findByTitle, findAllByTitle, getByDisplayValue, getAllByDisplayValue, queryByDisplayValue, queryAllByDisplayValue, findByDisplayValue, findAllByDisplayValue, getByRole, getAllByRole, queryByRole, queryAllByRole, findByRole, findAllByRole, getByTestId, getAllByTestId, queryByTestId, queryAllByTestId, findByTestId, findAllByTestId, queryByAttribute, queryAllByAttribute, debugDOM, getElementError, wait, waitForDomChange, waitForElement, waitForElementToBeRemoved, getDefaultNormalizer, getNodeText, fireEvent, getQueriesForElement, prettyDOM, configure } from 'dom-testing-library';
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljX2FwaS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0Bhbmd1bGFyLWV4dGVuc2lvbnMvdGVzdGluZy1saWJyYXJ5LyIsInNvdXJjZXMiOlsicHVibGljX2FwaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBS0EsZ0NBQWMsdUJBQXVCLENBQUM7QUFDdEMsbUNBQWMsY0FBYyxDQUFDO0FBQzdCLHE3QkFBYyxxQkFBcUIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBQdWJsaWMgQVBJIFN1cmZhY2Ugb2YgdGVzdGluZy1saWJyYXJ5XG4gKi9cblxuZXhwb3J0ICogZnJvbSAnLi9saWIvbW9kZWxzJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3Rlc3RpbmctbGlicmFyeSc7XG5leHBvcnQgKiBmcm9tICcuL2plc3QtdXRpbHMnO1xuZXhwb3J0ICogZnJvbSAnZG9tLXRlc3RpbmctbGlicmFyeSc7XG4iXX0=
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljX2FwaS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0Bhbmd1bGFyLWV4dGVuc2lvbnMvdGVzdGluZy1saWJyYXJ5LyIsInNvdXJjZXMiOlsicHVibGljX2FwaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBS0EsdUJBQWMsdUJBQXVCLENBQUM7QUFDdEMsbUNBQWMsY0FBYyxDQUFDO0FBQzdCLHlrQ0FBYyxxQkFBcUIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBQdWJsaWMgQVBJIFN1cmZhY2Ugb2YgdGVzdGluZy1saWJyYXJ5XG4gKi9cblxuZXhwb3J0ICogZnJvbSAnLi9saWIvbW9kZWxzJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3Rlc3RpbmctbGlicmFyeSc7XG5leHBvcnQgKiBmcm9tICcuL2plc3QtdXRpbHMnO1xuZXhwb3J0ICogZnJvbSAnZG9tLXRlc3RpbmctbGlicmFyeSc7XG4iXX0=

@@ -5,3 +5,4 @@ import { __awaiter } from 'tslib';

import { getQueriesForElement, prettyDOM, fireEvent } from 'dom-testing-library';
export { queries, queryHelpers, within, queryByPlaceholderText, queryAllByPlaceholderText, getByPlaceholderText, getAllByPlaceholderText, queryBySelectText, queryAllBySelectText, getBySelectText, getAllBySelectText, queryByText, queryAllByText, getByText, getAllByText, queryByLabelText, queryAllByLabelText, getByLabelText, getAllByLabelText, queryByAltText, queryAllByAltText, getByAltText, getAllByAltText, queryByTestId, queryAllByTestId, getByTestId, getAllByTestId, queryByTitle, queryAllByTitle, getByTitle, getAllByTitle, queryByValue, queryAllByValue, getByValue, getAllByValue, queryByDisplayValue, queryAllByDisplayValue, getByDisplayValue, getAllByDisplayValue, queryByRole, queryAllByRole, getByRole, getAllByRole, queryByAttribute, queryAllByAttribute, firstResultOrNull, debugDOM, getElementError, wait, waitForDomChange, waitForElement, getDefaultNormalizer, getNodeText, fireEvent, getQueriesForElement, prettyDOM, configure } from 'dom-testing-library';
export { queries, queryHelpers, within, getByLabelText, getAllByLabelText, queryByLabelText, queryAllByLabelText, findByLabelText, findAllByLabelText, getByPlaceholderText, getAllByPlaceholderText, queryByPlaceholderText, queryAllByPlaceholderText, findByPlaceholderText, findAllByPlaceholderText, getByText, getAllByText, queryByText, queryAllByText, findByText, findAllByText, getByAltText, getAllByAltText, queryByAltText, queryAllByAltText, findByAltText, findAllByAltText, getByTitle, getAllByTitle, queryByTitle, queryAllByTitle, findByTitle, findAllByTitle, getByDisplayValue, getAllByDisplayValue, queryByDisplayValue, queryAllByDisplayValue, findByDisplayValue, findAllByDisplayValue, getByRole, getAllByRole, queryByRole, queryAllByRole, findByRole, findAllByRole, getByTestId, getAllByTestId, queryByTestId, queryAllByTestId, findByTestId, findAllByTestId, queryByAttribute, queryAllByAttribute, debugDOM, getElementError, wait, waitForDomChange, waitForElement, waitForElementToBeRemoved, getDefaultNormalizer, getNodeText, fireEvent, getQueriesForElement, prettyDOM, configure } from 'dom-testing-library';
import { By } from '@angular/platform-browser';
import 'jest';

@@ -13,3 +14,3 @@

*/
class TestComponent {
class WrapperComponent {
/**

@@ -28,7 +29,7 @@ * @param {?} elemtRef

}
TestComponent.decorators = [
{ type: Component, args: [{ selector: 'test-component', template: '' },] },
WrapperComponent.decorators = [
{ type: Component, args: [{ selector: 'wrapper-component', template: '' },] },
];
/** @nocollapse */
TestComponent.ctorParameters = () => [
WrapperComponent.ctorParameters = () => [
{ type: ElementRef }

@@ -42,3 +43,3 @@ ];

*/
function createComponent(templateOrComponent, { detectChanges = true, declarations = [], providers = [], imports = [], schemas = [] }) {
function render(templateOrComponent, { detectChanges = true, declarations = [], imports = [], providers = [], schemas = [], queries, wrapper = WrapperComponent, componentProperties = {}, }) {
return __awaiter(this, void 0, void 0, function* () {

@@ -48,5 +49,5 @@ /** @type {?} */

/** @type {?} */
const testComponent = isTemplate ? [TestComponent] : [];
const componentDeclarations = isTemplate ? [wrapper] : [templateOrComponent];
TestBed.configureTestingModule({
declarations: [...declarations, ...testComponent],
declarations: [...declarations, ...componentDeclarations],
providers: [...providers],

@@ -58,4 +59,4 @@ imports: [...imports],

const fixture = isTemplate
? createTestComponentFixture(/** @type {?} */ (templateOrComponent))
: createComponentFixture(/** @type {?} */ (templateOrComponent));
? createWrapperComponentFixture(/** @type {?} */ (templateOrComponent), { wrapper, componentProperties })
: createComponentFixture(/** @type {?} */ (templateOrComponent), { componentProperties });
yield TestBed.compileComponents();

@@ -75,11 +76,14 @@ if (detectChanges) {

}, /** @type {?} */ ({}));
return Object.assign({ fixture, container: fixture.nativeElement, getFromTestBed: TestBed.get, debug: () => console.log(prettyDOM(fixture.nativeElement)) }, eventsWithDetectChanges, getQueriesForElement(fixture.nativeElement));
return /** @type {?} */ (Object.assign({ fixture, container: fixture.nativeElement, debug: (element = fixture.nativeElement) => console.log(prettyDOM(element)) }, getQueriesForElement(fixture.nativeElement, queries), eventsWithDetectChanges));
});
}
/**
* Creates the wrapper component and sets its the template to the to-be-tested component
* @template T
* @param {?} template
* @param {?} __1
* @return {?}
*/
function createTestComponentFixture(template) {
TestBed.overrideComponent(TestComponent, {
function createWrapperComponentFixture(template, { wrapper, componentProperties, }) {
TestBed.overrideComponent(wrapper, {
set: {

@@ -89,15 +93,37 @@ template: template,

});
return TestBed.createComponent(TestComponent);
/** @type {?} */
const fixture = TestBed.createComponent(wrapper);
/** @type {?} */
const componentSelector = template.match(/\<(.*?)\ /) || template.match(/\<(.*?)\>/);
if (!componentSelector) {
throw Error(`Template ${template} is not valid.`);
}
/** @type {?} */
const sut = fixture.debugElement.query(By.css(componentSelector[1]));
setComponentProperties(sut, { componentProperties });
return fixture;
}
/**
* Creates the components and sets its properties
* @template T
* @param {?} componentInput
* @param {?} component
* @param {?} __1
* @return {?}
*/
function createComponentFixture(componentInput) {
const { component, parameters = {} } = componentInput;
function createComponentFixture(component, { componentProperties = {}, }) {
/** @type {?} */
const fixture = TestBed.createComponent(component);
for (const key of Object.keys(parameters)) {
fixture.componentInstance[key] = parameters[key];
setComponentProperties(fixture, { componentProperties });
return fixture;
}
/**
* Set the component properties
* @template T
* @param {?} fixture
* @param {?} __1
* @return {?}
*/
function setComponentProperties(fixture, { componentProperties = {}, }) {
for (const key of Object.keys(componentProperties)) {
fixture.componentInstance[key] = componentProperties[key];
}

@@ -148,4 +174,4 @@ return fixture;

export { createComponent, configureJestSetup };
export { render, configureJestSetup };
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5ndWxhci1leHRlbnNpb25zLXRlc3RpbmctbGlicmFyeS5qcy5tYXAiLCJzb3VyY2VzIjpbIm5nOi8vQGFuZ3VsYXItZXh0ZW5zaW9ucy90ZXN0aW5nLWxpYnJhcnkvbGliL3Rlc3RpbmctbGlicmFyeS50cyIsIm5nOi8vQGFuZ3VsYXItZXh0ZW5zaW9ucy90ZXN0aW5nLWxpYnJhcnkvamVzdC11dGlscy9jb25maWd1cmUtdGVzdC1zdWl0ZS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCwgRWxlbWVudFJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgVGVzdEJlZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvdGVzdGluZyc7XG5pbXBvcnQgeyBnZXRRdWVyaWVzRm9yRWxlbWVudCwgcHJldHR5RE9NLCBmaXJlRXZlbnQsIEZpcmVPYmplY3QsIEZpcmVGdW5jdGlvbiB9IGZyb20gJ2RvbS10ZXN0aW5nLWxpYnJhcnknO1xuXG5pbXBvcnQgeyBPcHRpb25zLCBSZW5kZXJSZXN1bHQsIENvbXBvbmVudElucHV0IH0gZnJvbSAnLi9tb2RlbHMnO1xuXG5AQ29tcG9uZW50KHsgc2VsZWN0b3I6ICd0ZXN0LWNvbXBvbmVudCcsIHRlbXBsYXRlOiAnJyB9KVxuY2xhc3MgVGVzdENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgZWxlbXRSZWY6IEVsZW1lbnRSZWYpIHt9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5lbGVtdFJlZi5uYXRpdmVFbGVtZW50LnJlbW92ZUF0dHJpYnV0ZSgnbmctdmVyc2lvbicpO1xuICB9XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBjcmVhdGVDb21wb25lbnQ8VD4odGVtcGxhdGU6IHN0cmluZywgb3B0aW9uczogT3B0aW9ucyk6IFByb21pc2U8UmVuZGVyUmVzdWx0PjtcbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBjcmVhdGVDb21wb25lbnQ8VD4oY29tcG9uZW50OiBDb21wb25lbnRJbnB1dDxUPiwgb3B0aW9uczogT3B0aW9ucyk6IFByb21pc2U8UmVuZGVyUmVzdWx0PjtcbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBjcmVhdGVDb21wb25lbnQ8VD4oXG4gIHRlbXBsYXRlT3JDb21wb25lbnQ6IHN0cmluZyB8IENvbXBvbmVudElucHV0PFQ+LFxuICB7IGRldGVjdENoYW5nZXMgPSB0cnVlLCBkZWNsYXJhdGlvbnMgPSBbXSwgcHJvdmlkZXJzID0gW10sIGltcG9ydHMgPSBbXSwgc2NoZW1hcyA9IFtdIH06IE9wdGlvbnMsXG4pOiBQcm9taXNlPFJlbmRlclJlc3VsdD4ge1xuICBjb25zdCBpc1RlbXBsYXRlID0gdHlwZW9mIHRlbXBsYXRlT3JDb21wb25lbnQgPT09ICdzdHJpbmcnO1xuICBjb25zdCB0ZXN0Q29tcG9uZW50ID0gaXNUZW1wbGF0ZSA/IFtUZXN0Q29tcG9uZW50XSA6IFtdO1xuXG4gIFRlc3RCZWQuY29uZmlndXJlVGVzdGluZ01vZHVsZSh7XG4gICAgZGVjbGFyYXRpb25zOiBbLi4uZGVjbGFyYXRpb25zLCAuLi50ZXN0Q29tcG9uZW50XSxcbiAgICBwcm92aWRlcnM6IFsuLi5wcm92aWRlcnNdLFxuICAgIGltcG9ydHM6IFsuLi5pbXBvcnRzXSxcbiAgICBzY2hlbWFzOiBbLi4uc2NoZW1hc10sXG4gIH0pO1xuXG4gIGNvbnN0IGZpeHR1cmUgPSBpc1RlbXBsYXRlXG4gICAgPyBjcmVhdGVUZXN0Q29tcG9uZW50Rml4dHVyZSg8c3RyaW5nPnRlbXBsYXRlT3JDb21wb25lbnQpXG4gICAgOiBjcmVhdGVDb21wb25lbnRGaXh0dXJlKDxDb21wb25lbnRJbnB1dDxUPj50ZW1wbGF0ZU9yQ29tcG9uZW50KTtcblxuICBhd2FpdCBUZXN0QmVkLmNvbXBpbGVDb21wb25lbnRzKCk7XG5cbiAgaWYgKGRldGVjdENoYW5nZXMpIHtcbiAgICBmaXh0dXJlLmRldGVjdENoYW5nZXMoKTtcbiAgfVxuXG4gIGNvbnN0IGV2ZW50c1dpdGhEZXRlY3RDaGFuZ2VzID0gT2JqZWN0LmtleXMoZmlyZUV2ZW50KS5yZWR1Y2UoXG4gICAgKGV2ZW50cywga2V5KSA9PiB7XG4gICAgICBldmVudHNba2V5XSA9IChlbGVtZW50OiBIVE1MRWxlbWVudCwgb3B0aW9ucz86IHt9KSA9PiB7XG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IGZpcmVFdmVudFtrZXldKGVsZW1lbnQsIG9wdGlvbnMpO1xuICAgICAgICBmaXh0dXJlLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgIH07XG4gICAgICByZXR1cm4gZXZlbnRzO1xuICAgIH0sXG4gICAge30gYXMgRmlyZUZ1bmN0aW9uICYgRmlyZU9iamVjdCxcbiAgKTtcblxuICByZXR1cm4ge1xuICAgIGZpeHR1cmUsXG4gICAgY29udGFpbmVyOiBmaXh0dXJlLm5hdGl2ZUVsZW1lbnQsXG4gICAgZ2V0RnJvbVRlc3RCZWQ6IFRlc3RCZWQuZ2V0LFxuICAgIGRlYnVnOiAoKSA9PiBjb25zb2xlLmxvZyhwcmV0dHlET00oZml4dHVyZS5uYXRpdmVFbGVtZW50KSksXG4gICAgLi4uZXZlbnRzV2l0aERldGVjdENoYW5nZXMsXG4gICAgLi4uZ2V0UXVlcmllc0ZvckVsZW1lbnQoZml4dHVyZS5uYXRpdmVFbGVtZW50KSxcbiAgfTtcbn1cblxuZnVuY3Rpb24gY3JlYXRlVGVzdENvbXBvbmVudEZpeHR1cmUodGVtcGxhdGU6IHN0cmluZykge1xuICBUZXN0QmVkLm92ZXJyaWRlQ29tcG9uZW50KFRlc3RDb21wb25lbnQsIHtcbiAgICBzZXQ6IHtcbiAgICAgIHRlbXBsYXRlOiB0ZW1wbGF0ZSxcbiAgICB9LFxuICB9KTtcbiAgcmV0dXJuIFRlc3RCZWQuY3JlYXRlQ29tcG9uZW50KFRlc3RDb21wb25lbnQpO1xufVxuXG5mdW5jdGlvbiBjcmVhdGVDb21wb25lbnRGaXh0dXJlPFQ+KGNvbXBvbmVudElucHV0OiBDb21wb25lbnRJbnB1dDxUPikge1xuICBjb25zdCB7IGNvbXBvbmVudCwgcGFyYW1ldGVycyA9IHt9IH0gPSBjb21wb25lbnRJbnB1dDtcbiAgY29uc3QgZml4dHVyZSA9IFRlc3RCZWQuY3JlYXRlQ29tcG9uZW50KGNvbXBvbmVudCk7XG4gIGZvciAoY29uc3Qga2V5IG9mIE9iamVjdC5rZXlzKHBhcmFtZXRlcnMpKSB7XG4gICAgZml4dHVyZS5jb21wb25lbnRJbnN0YW5jZVtrZXldID0gcGFyYW1ldGVyc1trZXldO1xuICB9XG4gIHJldHVybiBmaXh0dXJlO1xufVxuIiwiaW1wb3J0IHsgVGVzdEJlZCwgZ2V0VGVzdEJlZCwgQ29tcG9uZW50Rml4dHVyZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvdGVzdGluZyc7XG5pbXBvcnQgJ2plc3QnO1xuXG4vLyBSZWY6IGh0dHBzOi8vZ2l0aHViLmNvbS9hbmd1bGFyL2FuZ3VsYXIvaXNzdWVzLzEyNDA5XG5leHBvcnQgZnVuY3Rpb24gY29uZmlndXJlSmVzdFNldHVwKCkge1xuICBjb25zdCB0ZXN0QmVkQXBpOiBhbnkgPSBnZXRUZXN0QmVkKCk7XG4gIGNvbnN0IG9yaWdpblJlc2V0ID0gVGVzdEJlZC5yZXNldFRlc3RpbmdNb2R1bGU7XG5cbiAgYmVmb3JlQWxsKCgpID0+IHtcbiAgICBUZXN0QmVkLnJlc2V0VGVzdGluZ01vZHVsZSgpO1xuICAgIFRlc3RCZWQucmVzZXRUZXN0aW5nTW9kdWxlID0gKCkgPT4gVGVzdEJlZDtcbiAgfSk7XG5cbiAgYWZ0ZXJFYWNoKCgpID0+IHtcbiAgICB0ZXN0QmVkQXBpLl9hY3RpdmVGaXh0dXJlcy5mb3JFYWNoKChmaXh0dXJlOiBDb21wb25lbnRGaXh0dXJlPGFueT4pID0+IGZpeHR1cmUuZGVzdHJveSgpKTtcbiAgICB0ZXN0QmVkQXBpLl9pbnN0YW50aWF0ZWQgPSBmYWxzZTtcbiAgfSk7XG5cbiAgYWZ0ZXJBbGwoKCkgPT4ge1xuICAgIFRlc3RCZWQucmVzZXRUZXN0aW5nTW9kdWxlID0gb3JpZ2luUmVzZXQ7XG4gICAgVGVzdEJlZC5yZXNldFRlc3RpbmdN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
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5ndWxhci1leHRlbnNpb25zLXRlc3RpbmctbGlicmFyeS5qcy5tYXAiLCJzb3VyY2VzIjpbIm5nOi8vQGFuZ3VsYXItZXh0ZW5zaW9ucy90ZXN0aW5nLWxpYnJhcnkvbGliL3Rlc3RpbmctbGlicmFyeS50cyIsIm5nOi8vQGFuZ3VsYXItZXh0ZW5zaW9ucy90ZXN0aW5nLWxpYnJhcnkvamVzdC11dGlscy9jb25maWd1cmUtdGVzdC1zdWl0ZS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCwgRWxlbWVudFJlZiwgVHlwZSwgRGVidWdFbGVtZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBUZXN0QmVkLCBDb21wb25lbnRGaXh0dXJlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZS90ZXN0aW5nJztcbmltcG9ydCB7IGdldFF1ZXJpZXNGb3JFbGVtZW50LCBwcmV0dHlET00sIGZpcmVFdmVudCwgRmlyZU9iamVjdCwgRmlyZUZ1bmN0aW9uIH0gZnJvbSAnZG9tLXRlc3RpbmctbGlicmFyeSc7XG5cbmltcG9ydCB7IFJlbmRlclJlc3VsdCwgUmVuZGVyT3B0aW9ucyB9IGZyb20gJy4vbW9kZWxzJztcbmltcG9ydCB7IEJ5IH0gZnJvbSAnQGFuZ3VsYXIvcGxhdGZvcm0tYnJvd3Nlcic7XG5cbkBDb21wb25lbnQoeyBzZWxlY3RvcjogJ3dyYXBwZXItY29tcG9uZW50JywgdGVtcGxhdGU6ICcnIH0pXG5jbGFzcyBXcmFwcGVyQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBlbGVtdFJlZjogRWxlbWVudFJlZikge31cblxuICBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLmVsZW10UmVmLm5hdGl2ZUVsZW1lbnQucmVtb3ZlQXR0cmlidXRlKCduZy12ZXJzaW9uJyk7XG4gIH1cbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHJlbmRlcjxUPihcbiAgdGVtcGxhdGVPckNvbXBvbmVudDogc3RyaW5nIHwgVHlwZTxUPixcbiAge1xuICAgIGRldGVjdENoYW5nZXMgPSB0cnVlLFxuICAgIGRlY2xhcmF0aW9ucyA9IFtdLFxuICAgIGltcG9ydHMgPSBbXSxcbiAgICBwcm92aWRlcnMgPSBbXSxcbiAgICBzY2hlbWFzID0gW10sXG4gICAgcXVlcmllcyxcbiAgICB3cmFwcGVyID0gV3JhcHBlckNvbXBvbmVudCxcbiAgICBjb21wb25lbnRQcm9wZXJ0aWVzID0ge30sXG4gIH06IFJlbmRlck9wdGlvbnM8VD4sXG4pOiBQcm9taXNlPFJlbmRlclJlc3VsdD4ge1xuICBjb25zdCBpc1RlbXBsYXRlID0gdHlwZW9mIHRlbXBsYXRlT3JDb21wb25lbnQgPT09ICdzdHJpbmcnO1xuICBjb25zdCBjb21wb25lbnREZWNsYXJhdGlvbnMgPSBpc1RlbXBsYXRlID8gW3dyYXBwZXJdIDogW3RlbXBsYXRlT3JDb21wb25lbnRdO1xuXG4gIFRlc3RCZWQuY29uZmlndXJlVGVzdGluZ01vZHVsZSh7XG4gICAgZGVjbGFyYXRpb25zOiBbLi4uZGVjbGFyYXRpb25zLCAuLi5jb21wb25lbnREZWNsYXJhdGlvbnNdLFxuICAgIHByb3ZpZGVyczogWy4uLnByb3ZpZGVyc10sXG4gICAgaW1wb3J0czogWy4uLmltcG9ydHNdLFxuICAgIHNjaGVtYXM6IFsuLi5zY2hlbWFzXSxcbiAgfSk7XG5cbiAgY29uc3QgZml4dHVyZSA9IGlzVGVtcGxhdGVcbiAgICA/IGNyZWF0ZVdyYXBwZXJDb21wb25lbnRGaXh0dXJlKHRlbXBsYXRlT3JDb21wb25lbnQgYXMgc3RyaW5nLCB7IHdyYXBwZXIsIGNvbXBvbmVudFByb3BlcnRpZXMgfSlcbiAgICA6IGNyZWF0ZUNvbXBvbmVudEZpeHR1cmUodGVtcGxhdGVPckNvbXBvbmVudCBhcyBUeXBlPFQ+LCB7IGNvbXBvbmVudFByb3BlcnRpZXMgfSk7XG5cbiAgYXdhaXQgVGVzdEJlZC5jb21waWxlQ29tcG9uZW50cygpO1xuXG4gIGlmIChkZXRlY3RDaGFuZ2VzKSB7XG4gICAgZml4dHVyZS5kZXRlY3RDaGFuZ2VzKCk7XG4gIH1cblxuICBjb25zdCBldmVudHNXaXRoRGV0ZWN0Q2hhbmdlcyA9IE9iamVjdC5rZXlzKGZpcmVFdmVudCkucmVkdWNlKFxuICAgIChldmVudHMsIGtleSkgPT4ge1xuICAgICAgZXZlbnRzW2tleV0gPSAoZWxlbWVudDogSFRNTEVsZW1lbnQsIG9wdGlvbnM/OiB7fSkgPT4ge1xuICAgICAgICBjb25zdCByZXN1bHQgPSBmaXJlRXZlbnRba2V5XShlbGVtZW50LCBvcHRpb25zKTtcbiAgICAgICAgZml4dHVyZS5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICB9O1xuICAgICAgcmV0dXJuIGV2ZW50cztcbiAgICB9LFxuICAgIHt9IGFzIEZpcmVGdW5jdGlvbiAmIEZpcmVPYmplY3QsXG4gICk7XG5cbiAgcmV0dXJuIHtcbiAgICBmaXh0dXJlLFxuICAgIGNvbnRhaW5lcjogZml4dHVyZS5uYXRpdmVFbGVtZW50LFxuICAgIGRlYnVnOiAoZWxlbWVudCA9IGZpeHR1cmUubmF0aXZlRWxlbWVudCkgPT4gY29uc29sZS5sb2cocHJldHR5RE9NKGVsZW1lbnQpKSxcbiAgICAuLi5nZXRRdWVyaWVzRm9yRWxlbWVudChmaXh0dXJlLm5hdGl2ZUVsZW1lbnQsIHF1ZXJpZXMpLFxuICAgIC4uLmV2ZW50c1dpdGhEZXRlY3RDaGFuZ2VzLFxuICB9IGFzIGFueTtcbn1cblxuLyoqXG4gKiBDcmVhdGVzIHRoZSB3cmFwcGVyIGNvbXBvbmVudCBhbmQgc2V0cyBpdHMgdGhlIHRlbXBsYXRlIHRvIHRoZSB0by1iZS10ZXN0ZWQgY29tcG9uZW50XG4gKi9cbmZ1bmN0aW9uIGNyZWF0ZVdyYXBwZXJDb21wb25lbnRGaXh0dXJlPFQ+KFxuICB0ZW1wbGF0ZTogc3RyaW5nLFxuICB7XG4gICAgd3JhcHBlcixcbiAgICBjb21wb25lbnRQcm9wZXJ0aWVzLFxuICB9OiB7XG4gICAgd3JhcHBlcjogUmVuZGVyT3B0aW9uczxUPlsnd3JhcHBlciddO1xuICAgIGNvbXBvbmVudFByb3BlcnRpZXM6IFJlbmRlck9wdGlvbnM8VD5bJ2NvbXBvbmVudFByb3BlcnRpZXMnXTtcbiAgfSxcbik6IENvbXBvbmVudEZpeHR1cmU8YW55PiB7XG4gIFRlc3RCZWQub3ZlcnJpZGVDb21wb25lbnQod3JhcHBlciwge1xuICAgIHNldDoge1xuICAgICAgdGVtcGxhdGU6IHRlbXBsYXRlLFxuICAgIH0sXG4gIH0pO1xuXG4gIGNvbnN0IGZpeHR1cmUgPSBUZXN0QmVkLmNyZWF0ZUNvbXBvbmVudCh3cmFwcGVyKTtcbiAgLy8gZ2V0IHRoZSBjb21wb25lbnQgc2VsZWN0b3IsIGUuZy4gPGZvbyBjb2xvcj1cImdyZWVuXCI+IGFuZCA8Zm9vPiByZXN1bHRzIGluIGZvb1xuICBjb25zdCBjb21wb25lbnRTZWxlY3RvciA9IHRlbXBsYXRlLm1hdGNoKC9cXDwoLio/KVxcIC8pIHx8IHRlbXBsYXRlLm1hdGNoKC9cXDwoLio/KVxcPi8pO1xuICBpZiAoIWNvbXBvbmVudFNlbGVjdG9yKSB7XG4gICAgdGhyb3cgRXJyb3IoYFRlbXBsYXRlICR7dGVtcGxhdGV9IGlzIG5vdCB2YWxpZC5gKTtcbiAgfVxuXG4gIGNvbnN0IHN1dCA9IGZpeHR1cmUuZGVidWdFbGVtZW50LnF1ZXJ5KEJ5LmNzcyhjb21wb25lbnRTZWxlY3RvclsxXSkpO1xuICBzZXRDb21wb25lbnRQcm9wZXJ0aWVzKHN1dCwgeyBjb21wb25lbnRQcm9wZXJ0aWVzIH0pO1xuICByZXR1cm4gZml4dHVyZTtcbn1cblxuLyoqXG4gKiBDcmVhdGVzIHRoZSBjb21wb25lbnRzIGFuZCBzZXRzIGl0cyBwcm9wZXJ0aWVzXG4gKi9cbmZ1bmN0aW9uIGNyZWF0ZUNvbXBvbmVudEZpeHR1cmU8VD4oXG4gIGNvbXBvbmVudDogVHlwZTxUPixcbiAge1xuICAgIGNvbXBvbmVudFByb3BlcnRpZXMgPSB7fSxcbiAgfToge1xuICAgIGNvbXBvbmVudFByb3BlcnRpZXM6IFJlbmRlck9wdGlvbnM8VD5bJ2NvbXBvbmVudFByb3BlcnRpZXMnXTtcbiAgfSxcbik6IENvbXBvbmVudEZpeHR1cmU8VD4ge1xuICBjb25zdCBmaXh0dXJlID0gVGVzdEJlZC5jcmVhdGVDb21wb25lbnQoY29tcG9uZW50KTtcbiAgc2V0Q29tcG9uZW50UHJvcGVydGllcyhmaXh0dXJlLCB7IGNvbXBvbmVudFByb3BlcnRpZXMgfSk7XG4gIHJldHVybiBmaXh0dXJlO1xufVxuXG4vKipcbiAqIFNldCB0aGUgY29tcG9uZW50IHByb3BlcnRpZXNcbiAqL1xuZnVuY3Rpb24gc2V0Q29tcG9uZW50UHJvcGVydGllczxUPihcbiAgZml4dHVyZTogQ29tcG9uZW50Rml4dHVyZTxUPiB8IERlYnVnRWxlbWVudCxcbiAge1xuICAgIGNvbXBvbmVudFByb3BlcnRpZXMgPSB7fSxcbiAgfToge1xuICAgIGNvbXBvbmVudFByb3BlcnRpZXM6IFJlbmRlck9wdGlvbnM8VD5bJ2NvbXBvbmVudFByb3BlcnRpZXMnXTtcbiAgfSxcbikge1xuICBmb3IgKGNvbnN0IGtleSBvZiBPYmplY3Qua2V5cyhjb21wb25lbnRQcm9wZXJ0aWVzKSkge1xuICAgIGZpeHR1cmUuY29tcG9uZW50SW5zdGFuY2Vba2V5XSA9IGNvbXBvbmVudFByb3BlcnRpZXNba2V5XTtcbiAgfVxuICByZXR1cm4gZml4dHVyZTtcbn1cbiIsImltcG9ydCB7IFRlc3RCZWQsIGdldFRlc3RCZWQsIENvbXBvbmVudEZpeHR1cmUgfSBmcm9tICdAYW5ndWxhci9jb3JlL3Rlc3RpbmcnO1xuaW1wb3J0ICdqZXN0JztcblxuLy8gUmVmOiBodHRwczovL2dpdGh1Yi5jb20vYW5ndWxhci9hbmd1bGFyL2lzc3Vlcy8xMjQwOVxuZXhwb3J0IGZ1bmN0aW9uIGNvbmZpZ3VyZUplc3RTZXR1cCgpIHtcbiAgY29uc3QgdGVzdEJlZEFwaTogYW55ID0gZ2V0VGVzdEJlZCgpO1xuICBjb25zdCBvcmlnaW5SZXNldCA9IFRlc3RCZWQucmVzZXRUZXN0aW5nTW9kdWxlO1xuXG4gIGJlZm9yZUFsbCgoKSA9PiB7XG4gICAgVGVzdEJlZC5yZXNldFRlc3RpbmdNb2R1bGUoKTtcbiAgICBUZXN0QmVkLnJlc2V0VGVzdGluZ01vZHVsZSA9ICgpID0+IFRlc3RCZWQ7XG4gIH0pO1xuXG4gIGFmdGVyRWFjaCgoKSA9PiB7XG4gICAgdGVzdEJlZEFwaS5fYWN0aXZlRml4dHVyZXMuZm9yRWFjaCgoZml4dHVyZTogQ29tcG9uZW50Rml4dHVyZTxhbnk+KSA9PiBmaXh0dXJlLmRlc3Ryb3koKSk7XG4gICAgdGVzdEJlZEFwaS5faW5zdGFudGlhdGVkID0gZmFsc2U7XG4gIH0pO1xuXG4gIGFmdGVyQWxsKCgpID0+IHtcbiAgICBUZXN0QmVkLnJlc2V0VGVzdGluZ01vZHVsZSA9IG9yaWdpblJlc2V0O1xuICAgIFRlc3RCZWQucmVzZXRUZXN0aW5nTW9kdWxlKCk7XG4gIH0pO1xufVxuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7OztBQU9BLE1BQ00sZ0JBQWdCOzs7O0lBQ3BCLFlBQW9CLFFBQW9CO1FBQXBCLGFBQVEsR0FBUixRQUFRLENBQVk7S0FBSTs7OztJQUU1QyxRQUFRO1FBQ04sSUFBSSxDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUMsZUFBZSxDQUFDLFlBQVksQ0FBQyxDQUFDO0tBQzNEOzs7WUFORixTQUFTLFNBQUMsRUFBRSxRQUFRLEVBQUUsbUJBQW1CLEVBQUUsUUFBUSxFQUFFLEVBQUUsRUFBRTs7OztZQVA5QixVQUFVOzs7Ozs7OztBQWdCdEMsU0FBc0IsTUFBTSxDQUMxQixtQkFBcUMsRUFDckMsRUFDRSxhQUFhLEdBQUcsSUFBSSxFQUNwQixZQUFZLEdBQUcsRUFBRSxFQUNqQixPQUFPLEdBQUcsRUFBRSxFQUNaLFNBQVMsR0FBRyxFQUFFLEVBQ2QsT0FBTyxHQUFHLEVBQUUsRUFDWixPQUFPLEVBQ1AsT0FBTyxHQUFHLGdCQUFnQixFQUMxQixtQkFBbUIsR0FBRyxFQUFFLEdBQ1A7OztRQUVuQixNQUFNLFVBQVUsR0FBRyxPQUFPLG1CQUFtQixLQUFLLFFBQVEsQ0FBQzs7UUFDM0QsTUFBTSxxQkFBcUIsR0FBRyxVQUFVLEdBQUcsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLG1CQUFtQixDQUFDLENBQUM7UUFFN0UsT0FBTyxDQUFDLHNCQUFzQixDQUFDO1lBQzdCLFlBQVksRUFBRSxDQUFDLEdBQUcsWUFBWSxFQUFFLEdBQUcscUJBQXFCLENBQUM7WUFDekQsU0FBUyxFQUFFLENBQUMsR0FBRyxTQUFTLENBQUM7WUFDekIsT0FBTyxFQUFFLENBQUMsR0FBRyxPQUFPLENBQUM7WUFDckIsT0FBTyxFQUFFLENBQUMsR0FBRyxPQUFPLENBQUM7U0FDdEIsQ0FBQyxDQUFDOztRQUVILE1BQU0sT0FBTyxHQUFHLFVBQVU7Y0FDdEIsNkJBQTZCLG1CQUFDLG1CQUE2QixHQUFFLEVBQUUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLENBQUM7Y0FDOUYsc0JBQXNCLG1CQUFDLG1CQUE4QixHQUFFLEVBQUUsbUJBQW1CLEVBQUUsQ0FBQyxDQUFDO1FBRXBGLE1BQU0sT0FBTyxDQUFDLGlCQUFpQixFQUFFLENBQUM7UUFFbEMsSUFBSSxhQUFhLEVBQUU7WUFDakIsT0FBTyxDQUFDLGFBQWEsRUFBRSxDQUFDO1NBQ3pCOztRQUVELE1BQU0sdUJBQXVCLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxNQUFNLENBQzNELENBQUMsTUFBTSxFQUFFLEdBQUc7WUFDVixNQUFNLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxPQUFvQixFQUFFLE9BQVk7O2dCQUMvQyxNQUFNLE1BQU0sR0FBRyxTQUFTLENBQUMsR0FBRyxDQUFDLENBQUMsT0FBTyxFQUFFLE9BQU8sQ0FBQyxDQUFDO2dCQUNoRCxPQUFPLENBQUMsYUFBYSxFQUFFLENBQUM7Z0JBQ3hCLE9BQU8sTUFBTSxDQUFDO2FBQ2YsQ0FBQztZQUNGLE9BQU8sTUFBTSxDQUFDO1NBQ2Ysb0JBQ0QsRUFBK0IsRUFDaEMsQ0FBQztRQUVGLHlCQUFPLGdCQUNMLE9BQU8sRUFDUCxTQUFTLEVBQUUsT0FBTyxDQUFDLGFBQWEsRUFDaEMsS0FBSyxFQUFFLENBQUMsT0FBTyxHQUFHLE9BQU8sQ0FBQyxhQUFhLEtBQUssT0FBTyxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLENBQUMsSUFDeEUsb0JBQW9CLENBQUMsT0FBTyxDQUFDLGFBQWEsRUFBRSxPQUFPLENBQUMsRUFDcEQsdUJBQXVCLENBQ3BCLEVBQUM7O0NBQ1Y7Ozs7Ozs7O0FBS0QsU0FBUyw2QkFBNkIsQ0FDcEMsUUFBZ0IsRUFDaEIsRUFDRSxPQUFPLEVBQ1AsbUJBQW1CLEdBSXBCO0lBRUQsT0FBTyxDQUFDLGlCQUFpQixDQUFDLE9BQU8sRUFBRTtRQUNqQyxHQUFHLEVBQUU7WUFDSCxRQUFRLEVBQUUsUUFBUTtTQUNuQjtLQUNGLENBQUMsQ0FBQzs7SUFFSCxNQUFNLE9BQU8sR0FBRyxPQUFPLENBQUMsZUFBZSxDQUFDLE9BQU8sQ0FBQyxDQUFDOztJQUVqRCxNQUFNLGlCQUFpQixHQUFHLFFBQVEsQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLElBQUksUUFBUSxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUNyRixJQUFJLENBQUMsaUJBQWlCLEVBQUU7UUFDdEIsTUFBTSxLQUFLLENBQUMsWUFBWSxRQUFRLGdCQUFnQixDQUFDLENBQUM7S0FDbkQ7O0lBRUQsTUFBTSxHQUFHLEdBQUcsT0FBTyxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDckUsc0JBQXNCLENBQUMsR0FBRyxFQUFFLEVBQUUsbUJBQW1CLEVBQUUsQ0FBQyxDQUFDO0lBQ3JELE9BQU8sT0FBTyxDQUFDO0NBQ2hCOzs7Ozs7OztBQUtELFNBQVMsc0JBQXNCLENBQzdCLFNBQWtCLEVBQ2xCLEVBQ0UsbUJBQW1CLEdBQUcsRUFBRSxHQUd6Qjs7SUFFRCxNQUFNLE9BQU8sR0FBRyxPQUFPLENBQUMsZUFBZSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQ25ELHNCQUFzQixDQUFDLE9BQU8sRUFBRSxFQUFFLG1CQUFtQixFQUFFLENBQUMsQ0FBQztJQUN6RCxPQUFPLE9BQU8sQ0FBQztDQUNoQjs7Ozs7Ozs7QUFLRCxTQUFTLHNCQUFzQixDQUM3QixPQUEyQyxFQUMzQyxFQUNFLG1CQUFtQixHQUFHLEVBQUUsR0FHekI7SUFFRCxLQUFLLE1BQU0sR0FBRyxJQUFJLE1BQU0sQ0FBQyxJQUFJLENBQUMsbUJBQW1CLENBQUMsRUFBRTtRQUNsRCxPQUFPLENBQUMsaUJBQWlCLENBQUMsR0FBRyxDQUFDLEdBQUcsbUJBQW1CLENBQUMsR0FBRyxDQUFDLENBQUM7S0FDM0Q7SUFDRCxPQUFPLE9BQU8sQ0FBQztDQUNoQjs7Ozs7O0FDcElEOzs7QUFJQSxTQUFnQixrQkFBa0I7O0lBQ2hDLE1BQU0sVUFBVSxHQUFRLFVBQVUsRUFBRSxDQUFDOztJQUNyQyxNQUFNLFdBQVcsR0FBRyxPQUFPLENBQUMsa0JBQWtCLENBQUM7SUFFL0MsU0FBUyxDQUFDO1FBQ1IsT0FBTyxDQUFDLGtCQUFrQixFQUFFLENBQUM7UUFDN0IsT0FBTyxDQUFDLGtCQUFrQixHQUFHLE1BQU0sT0FBTyxDQUFDO0tBQzVDLENBQUMsQ0FBQztJQUVILFNBQVMsQ0FBQztRQUNSLFVBQVUsQ0FBQyxlQUFlLENBQUMsT0FBTyxDQUFDLENBQUMsT0FBOEIsS0FBSyxPQUFPLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQztRQUMxRixVQUFVLENBQUMsYUFBYSxHQUFHLEtBQUssQ0FBQztLQUNsQyxDQUFDLENBQUM7SUFFSCxRQUFRLENBQUM7UUFDUCxPQUFPLENBQUMsa0JBQWtCLEdBQUcsV0FBVyxDQUFDO1FBQ3pDLE9BQU8sQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO0tBQzlCLENBQUMsQ0FBQztDQUNKOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OyJ9

@@ -5,3 +5,4 @@ import { __awaiter, __generator, __spread, __assign, __values } from 'tslib';

import { getQueriesForElement, prettyDOM, fireEvent } from 'dom-testing-library';
export { queries, queryHelpers, within, queryByPlaceholderText, queryAllByPlaceholderText, getByPlaceholderText, getAllByPlaceholderText, queryBySelectText, queryAllBySelectText, getBySelectText, getAllBySelectText, queryByText, queryAllByText, getByText, getAllByText, queryByLabelText, queryAllByLabelText, getByLabelText, getAllByLabelText, queryByAltText, queryAllByAltText, getByAltText, getAllByAltText, queryByTestId, queryAllByTestId, getByTestId, getAllByTestId, queryByTitle, queryAllByTitle, getByTitle, getAllByTitle, queryByValue, queryAllByValue, getByValue, getAllByValue, queryByDisplayValue, queryAllByDisplayValue, getByDisplayValue, getAllByDisplayValue, queryByRole, queryAllByRole, getByRole, getAllByRole, queryByAttribute, queryAllByAttribute, firstResultOrNull, debugDOM, getElementError, wait, waitForDomChange, waitForElement, getDefaultNormalizer, getNodeText, fireEvent, getQueriesForElement, prettyDOM, configure } from 'dom-testing-library';
export { queries, queryHelpers, within, getByLabelText, getAllByLabelText, queryByLabelText, queryAllByLabelText, findByLabelText, findAllByLabelText, getByPlaceholderText, getAllByPlaceholderText, queryByPlaceholderText, queryAllByPlaceholderText, findByPlaceholderText, findAllByPlaceholderText, getByText, getAllByText, queryByText, queryAllByText, findByText, findAllByText, getByAltText, getAllByAltText, queryByAltText, queryAllByAltText, findByAltText, findAllByAltText, getByTitle, getAllByTitle, queryByTitle, queryAllByTitle, findByTitle, findAllByTitle, getByDisplayValue, getAllByDisplayValue, queryByDisplayValue, queryAllByDisplayValue, findByDisplayValue, findAllByDisplayValue, getByRole, getAllByRole, queryByRole, queryAllByRole, findByRole, findAllByRole, getByTestId, getAllByTestId, queryByTestId, queryAllByTestId, findByTestId, findAllByTestId, queryByAttribute, queryAllByAttribute, debugDOM, getElementError, wait, waitForDomChange, waitForElement, waitForElementToBeRemoved, getDefaultNormalizer, getNodeText, fireEvent, getQueriesForElement, prettyDOM, configure } from 'dom-testing-library';
import { By } from '@angular/platform-browser';
import 'jest';

@@ -13,4 +14,4 @@

*/
var TestComponent = /** @class */ (function () {
function TestComponent(elemtRef) {
var WrapperComponent = /** @class */ (function () {
function WrapperComponent(elemtRef) {
this.elemtRef = elemtRef;

@@ -21,3 +22,3 @@ }

*/
TestComponent.prototype.ngOnInit = /**
WrapperComponent.prototype.ngOnInit = /**
* @return {?}

@@ -28,10 +29,10 @@ */

};
TestComponent.decorators = [
{ type: Component, args: [{ selector: 'test-component', template: '' },] },
WrapperComponent.decorators = [
{ type: Component, args: [{ selector: 'wrapper-component', template: '' },] },
];
/** @nocollapse */
TestComponent.ctorParameters = function () { return [
WrapperComponent.ctorParameters = function () { return [
{ type: ElementRef }
]; };
return TestComponent;
return WrapperComponent;
}());

@@ -44,13 +45,13 @@ /**

*/
function createComponent(templateOrComponent, _a) {
var _b = _a.detectChanges, detectChanges = _b === void 0 ? true : _b, _c = _a.declarations, declarations = _c === void 0 ? [] : _c, _d = _a.providers, providers = _d === void 0 ? [] : _d, _e = _a.imports, imports = _e === void 0 ? [] : _e, _f = _a.schemas, schemas = _f === void 0 ? [] : _f;
function render(templateOrComponent, _a) {
var _b = _a.detectChanges, detectChanges = _b === void 0 ? true : _b, _c = _a.declarations, declarations = _c === void 0 ? [] : _c, _d = _a.imports, imports = _d === void 0 ? [] : _d, _e = _a.providers, providers = _e === void 0 ? [] : _e, _f = _a.schemas, schemas = _f === void 0 ? [] : _f, queries = _a.queries, _g = _a.wrapper, wrapper = _g === void 0 ? WrapperComponent : _g, _h = _a.componentProperties, componentProperties = _h === void 0 ? {} : _h;
return __awaiter(this, void 0, void 0, function () {
var isTemplate, testComponent, fixture, eventsWithDetectChanges;
return __generator(this, function (_g) {
switch (_g.label) {
var isTemplate, componentDeclarations, fixture, eventsWithDetectChanges;
return __generator(this, function (_j) {
switch (_j.label) {
case 0:
isTemplate = typeof templateOrComponent === 'string';
testComponent = isTemplate ? [TestComponent] : [];
componentDeclarations = isTemplate ? [wrapper] : [templateOrComponent];
TestBed.configureTestingModule({
declarations: __spread(declarations, testComponent),
declarations: __spread(declarations, componentDeclarations),
providers: __spread(providers),

@@ -61,7 +62,7 @@ imports: __spread(imports),

fixture = isTemplate
? createTestComponentFixture(/** @type {?} */ (templateOrComponent))
: createComponentFixture(/** @type {?} */ (templateOrComponent));
? createWrapperComponentFixture(/** @type {?} */ (templateOrComponent), { wrapper: wrapper, componentProperties: componentProperties })
: createComponentFixture(/** @type {?} */ (templateOrComponent), { componentProperties: componentProperties });
return [4 /*yield*/, TestBed.compileComponents()];
case 1:
_g.sent();
_j.sent();
if (detectChanges) {

@@ -79,3 +80,6 @@ fixture.detectChanges();

}, /** @type {?} */ ({}));
return [2 /*return*/, __assign({ fixture: fixture, container: fixture.nativeElement, getFromTestBed: TestBed.get, debug: function () { return console.log(prettyDOM(fixture.nativeElement)); } }, eventsWithDetectChanges, getQueriesForElement(fixture.nativeElement))];
return [2 /*return*/, /** @type {?} */ (__assign({ fixture: fixture, container: fixture.nativeElement, debug: function (element) {
if (element === void 0) { element = fixture.nativeElement; }
return console.log(prettyDOM(element));
} }, getQueriesForElement(fixture.nativeElement, queries), eventsWithDetectChanges))];
}

@@ -86,7 +90,11 @@ });

/**
* Creates the wrapper component and sets its the template to the to-be-tested component
* @template T
* @param {?} template
* @param {?} __1
* @return {?}
*/
function createTestComponentFixture(template) {
TestBed.overrideComponent(TestComponent, {
function createWrapperComponentFixture(template, _a) {
var wrapper = _a.wrapper, componentProperties = _a.componentProperties;
TestBed.overrideComponent(wrapper, {
set: {

@@ -96,18 +104,42 @@ template: template,

});
return TestBed.createComponent(TestComponent);
/** @type {?} */
var fixture = TestBed.createComponent(wrapper);
/** @type {?} */
var componentSelector = template.match(/\<(.*?)\ /) || template.match(/\<(.*?)\>/);
if (!componentSelector) {
throw Error("Template " + template + " is not valid.");
}
/** @type {?} */
var sut = fixture.debugElement.query(By.css(componentSelector[1]));
setComponentProperties(sut, { componentProperties: componentProperties });
return fixture;
}
/**
* Creates the components and sets its properties
* @template T
* @param {?} componentInput
* @param {?} component
* @param {?} __1
* @return {?}
*/
function createComponentFixture(componentInput) {
var e_1, _a;
var component = componentInput.component, _b = componentInput.parameters, parameters = _b === void 0 ? {} : _b;
function createComponentFixture(component, _a) {
var _b = _a.componentProperties, componentProperties = _b === void 0 ? {} : _b;
/** @type {?} */
var fixture = TestBed.createComponent(component);
setComponentProperties(fixture, { componentProperties: componentProperties });
return fixture;
}
/**
* Set the component properties
* @template T
* @param {?} fixture
* @param {?} __1
* @return {?}
*/
function setComponentProperties(fixture, _a) {
var _b = _a.componentProperties, componentProperties = _b === void 0 ? {} : _b;
var e_1, _c;
try {
for (var _c = __values(Object.keys(parameters)), _d = _c.next(); !_d.done; _d = _c.next()) {
var key = _d.value;
fixture.componentInstance[key] = parameters[key];
for (var _d = __values(Object.keys(componentProperties)), _e = _d.next(); !_e.done; _e = _d.next()) {
var key = _e.value;
fixture.componentInstance[key] = componentProperties[key];
}

@@ -118,3 +150,3 @@ }

try {
if (_d && !_d.done && (_a = _c.return)) _a.call(_c);
if (_e && !_e.done && (_c = _d.return)) _c.call(_d);
}

@@ -167,4 +199,4 @@ finally { if (e_1) throw e_1.error; }

export { createComponent, configureJestSetup };
export { render, configureJestSetup };
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5ndWxhci1leHRlbnNpb25zLXRlc3RpbmctbGlicmFyeS5qcy5tYXAiLCJzb3VyY2VzIjpbIm5nOi8vQGFuZ3VsYXItZXh0ZW5zaW9ucy90ZXN0aW5nLWxpYnJhcnkvbGliL3Rlc3RpbmctbGlicmFyeS50cyIsIm5nOi8vQGFuZ3VsYXItZXh0ZW5zaW9ucy90ZXN0aW5nLWxpYnJhcnkvamVzdC11dGlscy9jb25maWd1cmUtdGVzdC1zdWl0ZS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCwgRWxlbWVudFJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgVGVzdEJlZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvdGVzdGluZyc7XG5pbXBvcnQgeyBnZXRRdWVyaWVzRm9yRWxlbWVudCwgcHJldHR5RE9NLCBmaXJlRXZlbnQsIEZpcmVPYmplY3QsIEZpcmVGdW5jdGlvbiB9IGZyb20gJ2RvbS10ZXN0aW5nLWxpYnJhcnknO1xuXG5pbXBvcnQgeyBPcHRpb25zLCBSZW5kZXJSZXN1bHQsIENvbXBvbmVudElucHV0IH0gZnJvbSAnLi9tb2RlbHMnO1xuXG5AQ29tcG9uZW50KHsgc2VsZWN0b3I6ICd0ZXN0LWNvbXBvbmVudCcsIHRlbXBsYXRlOiAnJyB9KVxuY2xhc3MgVGVzdENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgZWxlbXRSZWY6IEVsZW1lbnRSZWYpIHt9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5lbGVtdFJlZi5uYXRpdmVFbGVtZW50LnJlbW92ZUF0dHJpYnV0ZSgnbmctdmVyc2lvbicpO1xuICB9XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBjcmVhdGVDb21wb25lbnQ8VD4odGVtcGxhdGU6IHN0cmluZywgb3B0aW9uczogT3B0aW9ucyk6IFByb21pc2U8UmVuZGVyUmVzdWx0PjtcbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBjcmVhdGVDb21wb25lbnQ8VD4oY29tcG9uZW50OiBDb21wb25lbnRJbnB1dDxUPiwgb3B0aW9uczogT3B0aW9ucyk6IFByb21pc2U8UmVuZGVyUmVzdWx0PjtcbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBjcmVhdGVDb21wb25lbnQ8VD4oXG4gIHRlbXBsYXRlT3JDb21wb25lbnQ6IHN0cmluZyB8IENvbXBvbmVudElucHV0PFQ+LFxuICB7IGRldGVjdENoYW5nZXMgPSB0cnVlLCBkZWNsYXJhdGlvbnMgPSBbXSwgcHJvdmlkZXJzID0gW10sIGltcG9ydHMgPSBbXSwgc2NoZW1hcyA9IFtdIH06IE9wdGlvbnMsXG4pOiBQcm9taXNlPFJlbmRlclJlc3VsdD4ge1xuICBjb25zdCBpc1RlbXBsYXRlID0gdHlwZW9mIHRlbXBsYXRlT3JDb21wb25lbnQgPT09ICdzdHJpbmcnO1xuICBjb25zdCB0ZXN0Q29tcG9uZW50ID0gaXNUZW1wbGF0ZSA/IFtUZXN0Q29tcG9uZW50XSA6IFtdO1xuXG4gIFRlc3RCZWQuY29uZmlndXJlVGVzdGluZ01vZHVsZSh7XG4gICAgZGVjbGFyYXRpb25zOiBbLi4uZGVjbGFyYXRpb25zLCAuLi50ZXN0Q29tcG9uZW50XSxcbiAgICBwcm92aWRlcnM6IFsuLi5wcm92aWRlcnNdLFxuICAgIGltcG9ydHM6IFsuLi5pbXBvcnRzXSxcbiAgICBzY2hlbWFzOiBbLi4uc2NoZW1hc10sXG4gIH0pO1xuXG4gIGNvbnN0IGZpeHR1cmUgPSBpc1RlbXBsYXRlXG4gICAgPyBjcmVhdGVUZXN0Q29tcG9uZW50Rml4dHVyZSg8c3RyaW5nPnRlbXBsYXRlT3JDb21wb25lbnQpXG4gICAgOiBjcmVhdGVDb21wb25lbnRGaXh0dXJlKDxDb21wb25lbnRJbnB1dDxUPj50ZW1wbGF0ZU9yQ29tcG9uZW50KTtcblxuICBhd2FpdCBUZXN0QmVkLmNvbXBpbGVDb21wb25lbnRzKCk7XG5cbiAgaWYgKGRldGVjdENoYW5nZXMpIHtcbiAgICBmaXh0dXJlLmRldGVjdENoYW5nZXMoKTtcbiAgfVxuXG4gIGNvbnN0IGV2ZW50c1dpdGhEZXRlY3RDaGFuZ2VzID0gT2JqZWN0LmtleXMoZmlyZUV2ZW50KS5yZWR1Y2UoXG4gICAgKGV2ZW50cywga2V5KSA9PiB7XG4gICAgICBldmVudHNba2V5XSA9IChlbGVtZW50OiBIVE1MRWxlbWVudCwgb3B0aW9ucz86IHt9KSA9PiB7XG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IGZpcmVFdmVudFtrZXldKGVsZW1lbnQsIG9wdGlvbnMpO1xuICAgICAgICBmaXh0dXJlLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgIH07XG4gICAgICByZXR1cm4gZXZlbnRzO1xuICAgIH0sXG4gICAge30gYXMgRmlyZUZ1bmN0aW9uICYgRmlyZU9iamVjdCxcbiAgKTtcblxuICByZXR1cm4ge1xuICAgIGZpeHR1cmUsXG4gICAgY29udGFpbmVyOiBmaXh0dXJlLm5hdGl2ZUVsZW1lbnQsXG4gICAgZ2V0RnJvbVRlc3RCZWQ6IFRlc3RCZWQuZ2V0LFxuICAgIGRlYnVnOiAoKSA9PiBjb25zb2xlLmxvZyhwcmV0dHlET00oZml4dHVyZS5uYXRpdmVFbGVtZW50KSksXG4gICAgLi4uZXZlbnRzV2l0aERldGVjdENoYW5nZXMsXG4gICAgLi4uZ2V0UXVlcmllc0ZvckVsZW1lbnQoZml4dHVyZS5uYXRpdmVFbGVtZW50KSxcbiAgfTtcbn1cblxuZnVuY3Rpb24gY3JlYXRlVGVzdENvbXBvbmVudEZpeHR1cmUodGVtcGxhdGU6IHN0cmluZykge1xuICBUZXN0QmVkLm92ZXJyaWRlQ29tcG9uZW50KFRlc3RDb21wb25lbnQsIHtcbiAgICBzZXQ6IHtcbiAgICAgIHRlbXBsYXRlOiB0ZW1wbGF0ZSxcbiAgICB9LFxuICB9KTtcbiAgcmV0dXJuIFRlc3RCZWQuY3JlYXRlQ29tcG9uZW50KFRlc3RDb21wb25lbnQpO1xufVxuXG5mdW5jdGlvbiBjcmVhdGVDb21wb25lbnRGaXh0dXJlPFQ+KGNvbXBvbmVudElucHV0OiBDb21wb25lbnRJbnB1dDxUPikge1xuICBjb25zdCB7IGNvbXBvbmVudCwgcGFyYW1ldGVycyA9IHt9IH0gPSBjb21wb25lbnRJbnB1dDtcbiAgY29uc3QgZml4dHVyZSA9IFRlc3RCZWQuY3JlYXRlQ29tcG9uZW50KGNvbXBvbmVudCk7XG4gIGZvciAoY29uc3Qga2V5IG9mIE9iamVjdC5rZXlzKHBhcmFtZXRlcnMpKSB7XG4gICAgZml4dHVyZS5jb21wb25lbnRJbnN0YW5jZVtrZXldID0gcGFyYW1ldGVyc1trZXldO1xuICB9XG4gIHJldHVybiBmaXh0dXJlO1xufVxuIiwiaW1wb3J0IHsgVGVzdEJlZCwgZ2V0VGVzdEJlZCwgQ29tcG9uZW50Rml4dHVyZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvdGVzdGluZyc7XG5pbXBvcnQgJ2plc3QnO1xuXG4vLyBSZWY6IGh0dHBzOi8vZ2l0aHViLmNvbS9hbmd1bGFyL2FuZ3VsYXIvaXNzdWVzLzEyNDA5XG5leHBvcnQgZnVuY3Rpb24gY29uZmlndXJlSmVzdFNldHVwKCkge1xuICBjb25zdCB0ZXN0QmVkQXBpOiBhbnkgPSBnZXRUZXN0QmVkKCk7XG4gIGNvbnN0IG9yaWdpblJlc2V0ID0gVGVzdEJlZC5yZXNldFRlc3RpbmdNb2R1bGU7XG5cbiAgYmVmb3JlQWxsKCgpID0+IHtcbiAgICBUZXN0QmVkLnJlc2V0VGVzdGluZ01vZHVsZSgpO1xuICAgIFRlc3RCZWQucmVzZXRUZXN0aW5nTW9kdWxlID0gKCkgPT4gVGVzdEJlZDtcbiAgfSk7XG5cbiAgYWZ0ZXJFYWNoKCgpID0+IHtcbiAgICB0ZXN0QmVkQXBpLl9hY3RpdmVGaXh0dXJlcy5mb3JFYWNoKChmaXh0dXJlOiBDb21wb25lbnRGaXh0dXJlPGFueT4pID0+IGZpeHR1cmUuZGVzdHJveSgpKTtcbiAgICB0ZXN0QmVkQXBpLl9pbnN0YW50aWF0ZWQgPSBmYWxzZTtcbiAgfSk7XG5cbiAgYWZ0ZXJBbGwoKCkgPT4ge1xuICAgIFRlc3RCZWQucmVzZXRUZXN0aW5nTW9kdWxlID0gb3JpZ2luUmVzZXQ7XG4gICAgVGVzdEJlZC5yZXNldFRlc3RpbmdN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
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5ndWxhci1leHRlbnNpb25zLXRlc3RpbmctbGlicmFyeS5qcy5tYXAiLCJzb3VyY2VzIjpbIm5nOi8vQGFuZ3VsYXItZXh0ZW5zaW9ucy90ZXN0aW5nLWxpYnJhcnkvbGliL3Rlc3RpbmctbGlicmFyeS50cyIsIm5nOi8vQGFuZ3VsYXItZXh0ZW5zaW9ucy90ZXN0aW5nLWxpYnJhcnkvamVzdC11dGlscy9jb25maWd1cmUtdGVzdC1zdWl0ZS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCwgRWxlbWVudFJlZiwgVHlwZSwgRGVidWdFbGVtZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBUZXN0QmVkLCBDb21wb25lbnRGaXh0dXJlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZS90ZXN0aW5nJztcbmltcG9ydCB7IGdldFF1ZXJpZXNGb3JFbGVtZW50LCBwcmV0dHlET00sIGZpcmVFdmVudCwgRmlyZU9iamVjdCwgRmlyZUZ1bmN0aW9uIH0gZnJvbSAnZG9tLXRlc3RpbmctbGlicmFyeSc7XG5cbmltcG9ydCB7IFJlbmRlclJlc3VsdCwgUmVuZGVyT3B0aW9ucyB9IGZyb20gJy4vbW9kZWxzJztcbmltcG9ydCB7IEJ5IH0gZnJvbSAnQGFuZ3VsYXIvcGxhdGZvcm0tYnJvd3Nlcic7XG5cbkBDb21wb25lbnQoeyBzZWxlY3RvcjogJ3dyYXBwZXItY29tcG9uZW50JywgdGVtcGxhdGU6ICcnIH0pXG5jbGFzcyBXcmFwcGVyQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBlbGVtdFJlZjogRWxlbWVudFJlZikge31cblxuICBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLmVsZW10UmVmLm5hdGl2ZUVsZW1lbnQucmVtb3ZlQXR0cmlidXRlKCduZy12ZXJzaW9uJyk7XG4gIH1cbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHJlbmRlcjxUPihcbiAgdGVtcGxhdGVPckNvbXBvbmVudDogc3RyaW5nIHwgVHlwZTxUPixcbiAge1xuICAgIGRldGVjdENoYW5nZXMgPSB0cnVlLFxuICAgIGRlY2xhcmF0aW9ucyA9IFtdLFxuICAgIGltcG9ydHMgPSBbXSxcbiAgICBwcm92aWRlcnMgPSBbXSxcbiAgICBzY2hlbWFzID0gW10sXG4gICAgcXVlcmllcyxcbiAgICB3cmFwcGVyID0gV3JhcHBlckNvbXBvbmVudCxcbiAgICBjb21wb25lbnRQcm9wZXJ0aWVzID0ge30sXG4gIH06IFJlbmRlck9wdGlvbnM8VD4sXG4pOiBQcm9taXNlPFJlbmRlclJlc3VsdD4ge1xuICBjb25zdCBpc1RlbXBsYXRlID0gdHlwZW9mIHRlbXBsYXRlT3JDb21wb25lbnQgPT09ICdzdHJpbmcnO1xuICBjb25zdCBjb21wb25lbnREZWNsYXJhdGlvbnMgPSBpc1RlbXBsYXRlID8gW3dyYXBwZXJdIDogW3RlbXBsYXRlT3JDb21wb25lbnRdO1xuXG4gIFRlc3RCZWQuY29uZmlndXJlVGVzdGluZ01vZHVsZSh7XG4gICAgZGVjbGFyYXRpb25zOiBbLi4uZGVjbGFyYXRpb25zLCAuLi5jb21wb25lbnREZWNsYXJhdGlvbnNdLFxuICAgIHByb3ZpZGVyczogWy4uLnByb3ZpZGVyc10sXG4gICAgaW1wb3J0czogWy4uLmltcG9ydHNdLFxuICAgIHNjaGVtYXM6IFsuLi5zY2hlbWFzXSxcbiAgfSk7XG5cbiAgY29uc3QgZml4dHVyZSA9IGlzVGVtcGxhdGVcbiAgICA/IGNyZWF0ZVdyYXBwZXJDb21wb25lbnRGaXh0dXJlKHRlbXBsYXRlT3JDb21wb25lbnQgYXMgc3RyaW5nLCB7IHdyYXBwZXIsIGNvbXBvbmVudFByb3BlcnRpZXMgfSlcbiAgICA6IGNyZWF0ZUNvbXBvbmVudEZpeHR1cmUodGVtcGxhdGVPckNvbXBvbmVudCBhcyBUeXBlPFQ+LCB7IGNvbXBvbmVudFByb3BlcnRpZXMgfSk7XG5cbiAgYXdhaXQgVGVzdEJlZC5jb21waWxlQ29tcG9uZW50cygpO1xuXG4gIGlmIChkZXRlY3RDaGFuZ2VzKSB7XG4gICAgZml4dHVyZS5kZXRlY3RDaGFuZ2VzKCk7XG4gIH1cblxuICBjb25zdCBldmVudHNXaXRoRGV0ZWN0Q2hhbmdlcyA9IE9iamVjdC5rZXlzKGZpcmVFdmVudCkucmVkdWNlKFxuICAgIChldmVudHMsIGtleSkgPT4ge1xuICAgICAgZXZlbnRzW2tleV0gPSAoZWxlbWVudDogSFRNTEVsZW1lbnQsIG9wdGlvbnM/OiB7fSkgPT4ge1xuICAgICAgICBjb25zdCByZXN1bHQgPSBmaXJlRXZlbnRba2V5XShlbGVtZW50LCBvcHRpb25zKTtcbiAgICAgICAgZml4dHVyZS5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICB9O1xuICAgICAgcmV0dXJuIGV2ZW50cztcbiAgICB9LFxuICAgIHt9IGFzIEZpcmVGdW5jdGlvbiAmIEZpcmVPYmplY3QsXG4gICk7XG5cbiAgcmV0dXJuIHtcbiAgICBmaXh0dXJlLFxuICAgIGNvbnRhaW5lcjogZml4dHVyZS5uYXRpdmVFbGVtZW50LFxuICAgIGRlYnVnOiAoZWxlbWVudCA9IGZpeHR1cmUubmF0aXZlRWxlbWVudCkgPT4gY29uc29sZS5sb2cocHJldHR5RE9NKGVsZW1lbnQpKSxcbiAgICAuLi5nZXRRdWVyaWVzRm9yRWxlbWVudChmaXh0dXJlLm5hdGl2ZUVsZW1lbnQsIHF1ZXJpZXMpLFxuICAgIC4uLmV2ZW50c1dpdGhEZXRlY3RDaGFuZ2VzLFxuICB9IGFzIGFueTtcbn1cblxuLyoqXG4gKiBDcmVhdGVzIHRoZSB3cmFwcGVyIGNvbXBvbmVudCBhbmQgc2V0cyBpdHMgdGhlIHRlbXBsYXRlIHRvIHRoZSB0by1iZS10ZXN0ZWQgY29tcG9uZW50XG4gKi9cbmZ1bmN0aW9uIGNyZWF0ZVdyYXBwZXJDb21wb25lbnRGaXh0dXJlPFQ+KFxuICB0ZW1wbGF0ZTogc3RyaW5nLFxuICB7XG4gICAgd3JhcHBlcixcbiAgICBjb21wb25lbnRQcm9wZXJ0aWVzLFxuICB9OiB7XG4gICAgd3JhcHBlcjogUmVuZGVyT3B0aW9uczxUPlsnd3JhcHBlciddO1xuICAgIGNvbXBvbmVudFByb3BlcnRpZXM6IFJlbmRlck9wdGlvbnM8VD5bJ2NvbXBvbmVudFByb3BlcnRpZXMnXTtcbiAgfSxcbik6IENvbXBvbmVudEZpeHR1cmU8YW55PiB7XG4gIFRlc3RCZWQub3ZlcnJpZGVDb21wb25lbnQod3JhcHBlciwge1xuICAgIHNldDoge1xuICAgICAgdGVtcGxhdGU6IHRlbXBsYXRlLFxuICAgIH0sXG4gIH0pO1xuXG4gIGNvbnN0IGZpeHR1cmUgPSBUZXN0QmVkLmNyZWF0ZUNvbXBvbmVudCh3cmFwcGVyKTtcbiAgLy8gZ2V0IHRoZSBjb21wb25lbnQgc2VsZWN0b3IsIGUuZy4gPGZvbyBjb2xvcj1cImdyZWVuXCI+IGFuZCA8Zm9vPiByZXN1bHRzIGluIGZvb1xuICBjb25zdCBjb21wb25lbnRTZWxlY3RvciA9IHRlbXBsYXRlLm1hdGNoKC9cXDwoLio/KVxcIC8pIHx8IHRlbXBsYXRlLm1hdGNoKC9cXDwoLio/KVxcPi8pO1xuICBpZiAoIWNvbXBvbmVudFNlbGVjdG9yKSB7XG4gICAgdGhyb3cgRXJyb3IoYFRlbXBsYXRlICR7dGVtcGxhdGV9IGlzIG5vdCB2YWxpZC5gKTtcbiAgfVxuXG4gIGNvbnN0IHN1dCA9IGZpeHR1cmUuZGVidWdFbGVtZW50LnF1ZXJ5KEJ5LmNzcyhjb21wb25lbnRTZWxlY3RvclsxXSkpO1xuICBzZXRDb21wb25lbnRQcm9wZXJ0aWVzKHN1dCwgeyBjb21wb25lbnRQcm9wZXJ0aWVzIH0pO1xuICByZXR1cm4gZml4dHVyZTtcbn1cblxuLyoqXG4gKiBDcmVhdGVzIHRoZSBjb21wb25lbnRzIGFuZCBzZXRzIGl0cyBwcm9wZXJ0aWVzXG4gKi9cbmZ1bmN0aW9uIGNyZWF0ZUNvbXBvbmVudEZpeHR1cmU8VD4oXG4gIGNvbXBvbmVudDogVHlwZTxUPixcbiAge1xuICAgIGNvbXBvbmVudFByb3BlcnRpZXMgPSB7fSxcbiAgfToge1xuICAgIGNvbXBvbmVudFByb3BlcnRpZXM6IFJlbmRlck9wdGlvbnM8VD5bJ2NvbXBvbmVudFByb3BlcnRpZXMnXTtcbiAgfSxcbik6IENvbXBvbmVudEZpeHR1cmU8VD4ge1xuICBjb25zdCBmaXh0dXJlID0gVGVzdEJlZC5jcmVhdGVDb21wb25lbnQoY29tcG9uZW50KTtcbiAgc2V0Q29tcG9uZW50UHJvcGVydGllcyhmaXh0dXJlLCB7IGNvbXBvbmVudFByb3BlcnRpZXMgfSk7XG4gIHJldHVybiBmaXh0dXJlO1xufVxuXG4vKipcbiAqIFNldCB0aGUgY29tcG9uZW50IHByb3BlcnRpZXNcbiAqL1xuZnVuY3Rpb24gc2V0Q29tcG9uZW50UHJvcGVydGllczxUPihcbiAgZml4dHVyZTogQ29tcG9uZW50Rml4dHVyZTxUPiB8IERlYnVnRWxlbWVudCxcbiAge1xuICAgIGNvbXBvbmVudFByb3BlcnRpZXMgPSB7fSxcbiAgfToge1xuICAgIGNvbXBvbmVudFByb3BlcnRpZXM6IFJlbmRlck9wdGlvbnM8VD5bJ2NvbXBvbmVudFByb3BlcnRpZXMnXTtcbiAgfSxcbikge1xuICBmb3IgKGNvbnN0IGtleSBvZiBPYmplY3Qua2V5cyhjb21wb25lbnRQcm9wZXJ0aWVzKSkge1xuICAgIGZpeHR1cmUuY29tcG9uZW50SW5zdGFuY2Vba2V5XSA9IGNvbXBvbmVudFByb3BlcnRpZXNba2V5XTtcbiAgfVxuICByZXR1cm4gZml4dHVyZTtcbn1cbiIsImltcG9ydCB7IFRlc3RCZWQsIGdldFRlc3RCZWQsIENvbXBvbmVudEZpeHR1cmUgfSBmcm9tICdAYW5ndWxhci9jb3JlL3Rlc3RpbmcnO1xuaW1wb3J0ICdqZXN0JztcblxuLy8gUmVmOiBodHRwczovL2dpdGh1Yi5jb20vYW5ndWxhci9hbmd1bGFyL2lzc3Vlcy8xMjQwOVxuZXhwb3J0IGZ1bmN0aW9uIGNvbmZpZ3VyZUplc3RTZXR1cCgpIHtcbiAgY29uc3QgdGVzdEJlZEFwaTogYW55ID0gZ2V0VGVzdEJlZCgpO1xuICBjb25zdCBvcmlnaW5SZXNldCA9IFRlc3RCZWQucmVzZXRUZXN0aW5nTW9kdWxlO1xuXG4gIGJlZm9yZUFsbCgoKSA9PiB7XG4gICAgVGVzdEJlZC5yZXNldFRlc3RpbmdNb2R1bGUoKTtcbiAgICBUZXN0QmVkLnJlc2V0VGVzdGluZ01vZHVsZSA9ICgpID0+IFRlc3RCZWQ7XG4gIH0pO1xuXG4gIGFmdGVyRWFjaCgoKSA9PiB7XG4gICAgdGVzdEJlZEFwaS5fYWN0aXZlRml4dHVyZXMuZm9yRWFjaCgoZml4dHVyZTogQ29tcG9uZW50Rml4dHVyZTxhbnk+KSA9PiBmaXh0dXJlLmRlc3Ryb3koKSk7XG4gICAgdGVzdEJlZEFwaS5faW5zdGFudGlhdGVkID0gZmFsc2U7XG4gIH0pO1xuXG4gIGFmdGVyQWxsKCgpID0+IHtcbiAgICBUZXN0QmVkLnJlc2V0VGVzdGluZ01vZHVsZSA9IG9yaWdpblJlc2V0O1xuICAgIFRlc3RCZWQucmVzZXRUZXN0aW5nTW9kdWxlKCk7XG4gIH0pO1xufVxuIl0sIm5hbWVzIjpbInRzbGliXzEuX19hc3NpZ24iLCJ0c2xpYl8xLl9fdmFsdWVzIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7O0lBU0UsMEJBQW9CLFFBQW9CO1FBQXBCLGFBQVEsR0FBUixRQUFRLENBQVk7S0FBSTs7OztJQUU1QyxtQ0FBUTs7O0lBQVI7UUFDRSxJQUFJLENBQUMsUUFBUSxDQUFDLGFBQWEsQ0FBQyxlQUFlLENBQUMsWUFBWSxDQUFDLENBQUM7S0FDM0Q7O2dCQU5GLFNBQVMsU0FBQyxFQUFFLFFBQVEsRUFBRSxtQkFBbUIsRUFBRSxRQUFRLEVBQUUsRUFBRSxFQUFFOzs7O2dCQVA5QixVQUFVOzsyQkFBdEM7Ozs7Ozs7O0FBZ0JBLFNBQXNCLE1BQU0sQ0FDMUIsbUJBQXFDLEVBQ3JDLEVBU21CO1FBUmpCLHFCQUFvQixFQUFwQix5Q0FBb0IsRUFDcEIsb0JBQWlCLEVBQWpCLHNDQUFpQixFQUNqQixlQUFZLEVBQVosaUNBQVksRUFDWixpQkFBYyxFQUFkLG1DQUFjLEVBQ2QsZUFBWSxFQUFaLGlDQUFZLEVBQ1osb0JBQU8sRUFDUCxlQUEwQixFQUExQiwrQ0FBMEIsRUFDMUIsMkJBQXdCLEVBQXhCLDZD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
import { Type } from '@angular/core';
import { ComponentFixture } from '@angular/core/testing';
import { getQueriesForElement, FireObject } from 'dom-testing-library';
export interface RenderResult extends ReturnType<typeof getQueriesForElement>, FireObject {
import { FireObject, Queries, queries, BoundFunction } from 'dom-testing-library';
export declare type RenderResultQueries<Q extends Queries = typeof queries> = {
[P in keyof Q]: BoundFunction<Q[P]>;
};
export interface RenderResult extends RenderResultQueries, FireObject {
container: HTMLElement;
debug: () => void;
getFromTestBed: (token: any, notFoundValue?: any) => any;
debug: (element?: HTMLElement) => void;
fixture: ComponentFixture<any>;
}
export interface Options {
export interface RenderOptions<C, Q extends Queries = typeof queries> {
detectChanges?: boolean;
declarations: any[];
declarations?: any[];
providers?: any[];
imports?: any[];
schemas?: any[];
componentProperties?: Partial<C>;
queries?: Q;
wrapper?: Type<any>;
}
export interface ComponentInput<T> {
component: Type<T>;
parameters?: Partial<T>;
}

@@ -1,3 +0,3 @@

import { Options, RenderResult, ComponentInput } from './models';
export declare function createComponent<T>(template: string, options: Options): Promise<RenderResult>;
export declare function createComponent<T>(component: ComponentInput<T>, options: Options): Promise<RenderResult>;
import { Type } from '@angular/core';
import { RenderResult, RenderOptions } from './models';
export declare function render<T>(templateOrComponent: string | Type<T>, { detectChanges, declarations, imports, providers, schemas, queries, wrapper, componentProperties, }: RenderOptions<T>): Promise<RenderResult>;
{
"name": "@angular-extensions/testing-library",
"version": "3.2.0",
"version": "4.0.0",
"description": "Test your Angular components with the dom-testing-library",

@@ -30,3 +30,5 @@ "repository": {

"dependencies": {
"dom-testing-library": "^3.11.1",
"dom-testing-library": "^4.0.1",
"@phenomnomnominal/tsquery": "^3.0.0",
"tslint": "^5.16.0",
"tslib": "^1.9.0"

@@ -37,2 +39,5 @@ },

},
"ng-update": {
"migrations": "./migrations/migration.json"
},
"main": "bundles/angular-extensions-testing-library.umd.js",

@@ -39,0 +44,0 @@ "module": "fesm5/angular-extensions-testing-library.js",

@@ -1,182 +0,203 @@

# @angular-extensions/testing-library
<div align="center">
<h1>@angular-extensions/testing-library</h1>
Lightweight utility functions to test Angular components.
<a href="https://www.emojione.com/emoji/1f994">
<img
height="80"
width="80"
alt="hedgehog"
src="https://raw.githubusercontent.com/angular-extensions/testing-library/master/other/hedgehog.png"
/>
</a>
[**Read The Docs**](https://testing-library.com/angular) | [Edit the docs](https://github.com/alexkrolick/testing-library-docs)
<p>Simple and complete Angular testing utilities that encourage good testing
practices.</p>
<br />
[**Read The Docs**](https://testing-library.com/angular) |
[Edit the docs](https://github.com/alexkrolick/testing-library-docs)
<br />
</div>
<hr />
[![Build status][build-badge]][build]
[![npm][npm-badge]][npm]
[![Semantically released][sr-badge]][sr]
[![Styled with prettier][prettier-badge]][prettier]
<!-- prettier-ignore-start -->
[![Build Status][build-badge]][build]
[![version][version-badge]][package] [![downloads][downloads-badge]][npmtrends]
[![MIT License][license-badge]][license]
[![Code of Conduct][coc-badge]][coc]
## Table of Contents
[![PRs Welcome][prs-badge]][prs] [![Code of Conduct][coc-badge]][coc]
[![Join the community on Spectrum][spectrum-badge]][spectrum]
- [Installation](#installation)
- [Why](#why)
- [What](#what)
- [How](#how)
- [`createComponent`](#createcomponent)
- [`container: HTMLElement`](#container-htmlelement)
- [`debug() => void`](#debug--void)
- [`fixture: any`](#fixture-any)
- [`getFromTestBed(token: any, notFoundValue?: any) => any`](#getfromtestbedtoken-any-notfoundvalue-any--any)
- [Usage](#usage)
- [LICENSE](#license)
[![Watch on GitHub][github-watch-badge]][github-watch]
[![Star on GitHub][github-star-badge]][github-star]
[![Tweet][twitter-badge]][twitter]
<!-- prettier-ignore-end -->
## Installation
<div align="center">
<a href="https://testingjavascript.com">
<img
width="500"
alt="TestingJavaScript.com Learn the smart, efficient way to test any JavaScript application."
src="https://raw.githubusercontent.com/testing-library/react-testing-library/master/other/testingjavascript.jpg"
/>
</a>
</div>
Install `@angular-extensions/testing-library` from [npm] and add it your `devDependencies`:
## Table of Contents
`npm install @angular-extensions/testing-library --save-dev`
<!-- START doctoc generated TOC please keep comment here to allow auto update -->
<!-- DON'T EDIT THIS SECTION, INSTEAD RE-RUN doctoc TO UPDATE -->
## Why
- [The problem](#the-problem)
- [This solution](#this-solution)
- [Example](#example)
- [Installation](#installation)
- [Guiding Principles](#guiding-principles)
- [Docs](#docs)
- [Issues](#issues)
- [🐛 Bugs](#-bugs)
- [💡 Feature Requests](#-feature-requests)
- [❓ Questions](#-questions)
- [LICENSE](#license)
- test your UI components the way your users are using it
- making your tests resilient to implementation changes
<!-- END doctoc generated TOC please keep comment here to allow auto update -->
## What
## The problem
`@angular-extensions/testing-library` is an Angular adapter around [dom-testing-library][dom-testing-library],
which provides lightweight utility functions to test UI components. Your tests will work with actual DOM nodes.
You want to write maintainable tests for your Angular components. As a part of
this goal, you want your tests to avoid including implementation details of your
components and rather focus on making your tests give you the confidence for
which they are intended. As part of this, you want your testbase to be
maintainable in the long run so refactors of your components (changes to
implementation but not functionality) don't break your tests and slow you and
your team down.
## How
## This solution
### `createComponent`
The `@angular-extensions/testing-library` is a very lightweight solution for testing Angular
components. It provides light utility functions on top of `Angular` and
`dom-testing-library`, in a way that encourages better testing practices. Its
primary guiding principle is:
This library only consists of one function, `createComponent` which is used to setup the Angular `TestBed` and creates the component fixture.
> [The more your tests resemble the way your software is used, the more
> confidence they can give you.][guiding-principle]
This method can be used in two ways:
## Example
Based on a template:
counter.component.ts
```ts
import { createComponent } from '@angular-extensions/testing-library';
@Component({
selector: 'counter',
template: `
<button (click)="decrement()">-</button>
<span data-testid="count">Current Count: {{ counter }}</span>
<button (click)="increment()">+</button>
`,
})
export class CounterComponent {
@Input() counter = 0;
createComponent('<my-component [prop]="1"></my-component>', options);
increment() {
this.counter += 1;
}
decrement() {
this.counter -= 1;
}
}
```
Based on a component type:
counter.component.spec.ts
```ts
import { createComponent } from '@angular-extensions/testing-library';
```javascript
import { render } from '@angular-extensions/testing-library';
import CounterComponent from './counter.component.ts';
createComponent(
{
component: MyComponent,
parameters: {
prop: 1,
},
},
options,
);
```
describe('Counter', () => {
test('should render counter', async () => {
const { getByText } = await render(CounterComponent, { componentProperties: { counter: 5 } });
The second parameter in `createComponent` is the `options` parameter, which looks like this:
expect(getByText('Current Count: 5'));
});
```ts
{
detectChanges?: boolean = true;
declarations: any[] = [];
providers?: any[] = [];
imports?: any[] = [];
schemas?: any[] = [];
}
```
test('should increment the counter on click', async () => {
const { getByText, click } = await render(CounterComponent, { componentProperties: { counter: 5 } });
`detectChanges`: runs `detectChanges` on the fixture
click(getByText('+'));
`declarations`: passed to the `TestBed`
expect(getByText('Current Count: 6'));
});
});
```
`providers`: passed to the `TestBed`
## Installation
`imports`: passed to the `TestBed`
This module is distributed via [npm][npm] which is bundled with [node][node] and
should be installed as one of your project's `devDependencies`:
`schemas`: passed to the `TestBed`
```bash
npm install @angular-extensions/testing-library --save-dev
```
The `createComponent` function returns an object consisting all of the query functions from [dom-testing-library][dom-testing-library], all the event functions exposed from `fireEvent`, and adds the following properties:
You may also be interested in installing `jest-dom` so you can use
[the custom jest matchers](https://github.com/gnapse/jest-dom#readme).
> Every event runs `detectChanges` on the fixture.
> [**Docs**](https://testing-library.com/angular)
#### `container: HTMLElement`
## Guiding Principles
The DOM node containing the Angular component.
> [The more your tests resemble the way your software is used, the more
> confidence they can give you.][guiding-principle]
All of the [dom-testing-library][dom-testing-library] query functions are binded to this container.
We try to only expose methods and utilities that encourage you to write tests
that closely resemble how your Angular components are used.
#### `debug() => void`
Utilities are included in this project based on the following guiding
principles:
Prints out the container.
1. If it relates to rendering components, it deals with DOM nodes rather than
component instances, nor should it encourage dealing with component
instances.
2. It should be generally useful for testing individual Angular components or
full Angular applications.
3. Utility implementations and APIs should be simple and flexible.
#### `fixture: any`
At the end of the day, what we want is for this library to be pretty
light-weight, simple, and understandable.
The Angular fixture.
## Docs
#### `getFromTestBed(token: any, notFoundValue?: any) => any`
[**Read The Docs**](https://testing-library.com/angular) |
[Edit the docs](https://github.com/alexkrolick/testing-library-docs)
Calls the the Angular `TestBed.get` function.
## Issues
## Usage
_Looking to contribute? Look for the [Good First Issue][good-first-issue]
label._
You can find some examples in the [tests folder](https://github.com/angular-extensions/testing-library/tree/master/projects/testing-library/tests).
### 🐛 Bugs
Here is how the "default" specifications can be written with `@angular-extensions/testing-library`.
Please file an issue for bugs, missing documentation, or unexpected behavior.
Before:
[**See Bugs**][bugs]
```ts
import { TestBed, async } from '@angular/core/testing';
import { AppComponent } from './app.component';
### 💡 Feature Requests
describe('AppComponent', () => {
beforeEach(async(() => {
TestBed.configureTestingModule({
declarations: [AppComponent],
}).compileComponents();
}));
Please file an issue to suggest new features. Vote on feature requests by adding
a 👍. This helps maintainers prioritize what to work on.
it(`should have as title 'my-awesome-app'`, async(() => {
const fixture = TestBed.createComponent(AppComponent);
const app = fixture.debugElement.componentInstance;
expect(app.title).toEqual('my-awesome-app');
}));
[**See Feature Requests**][requests]
it(`should render title in a h1 tag`, async(() => {
const fixture = TestBed.createComponent(AppComponent);
fixture.detectChanges();
const compiled = fixture.debugElement.nativeElement;
expect(compiled.querySelector('h1').textContent).toContain('Welcome to my-awesome-app!');
}));
});
```
### ❓ Questions
After:
For questions related to using the library, please visit a support community
instead of filing an issue on GitHub.
```ts
import { createComponent } from '@angular-extensions/testing-library';
import { AppComponent } from './app.component';
- [Spectrum][spectrum]
- [Stack Overflow][stackoverflow]
it(`should have as title 'my-awesome-app'`, async () => {
const { getByText } = await createComponent('<app-root></app-root>', {
declarations: [AppComponent],
});
expect(getByText('Welcome to my-awesome-app!')).toBeDefined();
});
it(`should render title in a h1 tag`, async () => {
const { container } = await createComponent(
{
component: AppComponent,
},
{
declarations: [AppComponent],
},
);
expect(container.querySelector('h1').textContent).toContain('Welcome to my-awesome-app!');
});
```
## LICENSE

@@ -186,14 +207,40 @@

<!--
Links:
-->
<!-- prettier-ignore-start -->
[npm]: https://www.npmjs.com/
[node]: https://nodejs.org
[build-badge]: https://circleci.com/gh/angular-extensions/testing-library/tree/master.svg?style=shield
[build]: https://circleci.com/gh/angular-extensions/testing-library/tree/master
[sr-badge]: https://img.shields.io/badge/%20%20%F0%9F%93%A6%F0%9F%9A%80-semantic--release-e10079.svg
[sr]: https://github.com/semantic-release/semantic-release
[prettier-badge]: https://img.shields.io/badge/styled_with-prettier-ff69b4.svg
[prettier]: https://github.com/prettier/prettier
[npm-badge]: https://img.shields.io/npm/v/@angular-extensions/testing-library.svg
[npm]: https://www.npmjs.com/package/@angular-extensions/testing-library
[version-badge]: https://img.shields.io/npm/v/@angular-extensions/testing-library.svg?style=flat-square
[package]: https://www.npmjs.com/package/@angular-extensions/testing-library
[downloads-badge]: https://img.shields.io/npm/dm/@angular-extensions/testing-library.svg?style=flat-square
[npmtrends]: http://www.npmtrends.com/@angular-extensions/testing-library
[spectrum-badge]: https://withspectrum.github.io/badge/badge.svg
[spectrum]: https://spectrum.chat/testing-library
[license-badge]: https://img.shields.io/npm/l/@angular-extensions/testing-library.svg?style=flat-square
[license]: https://github.com/angular-extensions/testing-library/blob/master/LICENSE
[prs-badge]: https://img.shields.io/badge/PRs-welcome-brightgreen.svg?style=flat-square
[prs]: http://makeapullrequest.com
[donate-badge]: https://img.shields.io/badge/$-support-green.svg?style=flat-square
[coc-badge]: https://img.shields.io/badge/code%20of-conduct-ff69b4.svg?style=flat-square
[coc]: https://github.com/angular-extensions/testing-library/blob/master/CODE_OF_CONDUCT.md
[dom-testing-library]: https://testing-library.com/
[github-watch-badge]: https://img.shields.io/github/watchers/angular-extensions/testing-library.svg?style=social
[github-watch]: https://github.com/angular-extensions/testing-library/watchers
[github-star-badge]: https://img.shields.io/github/stars/angular-extensions/testing-library.svg?style=social
[github-star]: https://github.com/angular-extensions/testing-library/stargazers
[twitter]: https://twitter.com/intent/tweet?text=Check%20out%20🦔%20@angular-extensions/testing-library%20by%20%40tim_deschryver%20https%3A%2F%2Fgithub.com%2F@angular-extensions/testing-library
[twitter-badge]: https://img.shields.io/twitter/url/https/github.com/angular-extensions/testing-library.svg?style=social
[emojis]: https://github.com/all-contributors/all-contributors#emoji-key
[all-contributors]: https://github.com/all-contributors/all-contributors
[set-immediate]: https://developer.mozilla.org/en-US/docs/Web/API/Window/setImmediate
[guiding-principle]: https://twitter.com/kentcdodds/status/977018512689455106
[bugs]: https://github.com/angular-extensions/testing-library/issues?q=is%3Aissue+is%3Aopen+label%3Abug+sort%3Acreated-desc
[requests]: https://github.com/angular-extensions/testing-library/issues?q=is%3Aissue+sort%3Areactions-%2B1-desc+label%3Aenhancement+is%3Aopen
[good-first-issue]: https://github.com/angular-extensions/testing-library/issues?utf8=✓&q=is%3Aissue+is%3Aopen+sort%3Areactions-%2B1-desc+label%3A"good+first+issue"+
[stackoverflow]: https://stackoverflow.com/questions/tagged/angular-testing-library
<!-- prettier-ignore-end -->

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

SocketSocket SOC 2 Logo

Product

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

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc