Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

@ngneat/reactive-forms

Package Overview
Dependencies
Maintainers
3
Versions
53
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@ngneat/reactive-forms - npm Package Compare versions

Comparing version 1.3.1 to 1.4.0

esm2015/lib/type-tests/mocks.spec.js

3

bundles/ngneat-reactive-forms.umd.js

@@ -793,3 +793,3 @@ (function (global, factory) {

}
return this.get(names.join('.'));
return this.get(names);
};

@@ -957,3 +957,2 @@ FormGroup.prototype.addControl = function (name, control) {

}
// Todo: dan remove the any
return new FormGroup(controls, { asyncValidators: asyncValidators, updateOn: updateOn, validators: validators });

@@ -960,0 +959,0 @@ };

@@ -15,3 +15,3 @@ !function(t,r){"object"==typeof exports&&"undefined"!=typeof module?r(exports,require("@angular/forms"),require("rxjs"),require("rxjs/operators"),require("@angular/core")):"function"==typeof define&&define.amd?define("@ngneat/reactive-forms",["exports","@angular/forms","rxjs","rxjs/operators","@angular/core"],r):r(((t="undefined"!=typeof globalThis?globalThis:t||self).ngneat=t.ngneat||{},t.ngneat["reactive-forms"]={}),t.ng.forms,t.rxjs,t.rxjs.operators,t.ng.core)}(this,(function(t,r,e,o,n){"use strict";

PERFORMANCE OF THIS SOFTWARE.
***************************************************************************** */var i=function(t,r){return(i=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,r){t.__proto__=r}||function(t,r){for(var e in r)Object.prototype.hasOwnProperty.call(r,e)&&(t[e]=r[e])})(t,r)};function a(t,r){function e(){this.constructor=t}i(t,r),t.prototype=null===r?Object.create(r):(e.prototype=r.prototype,new e)}Object.create;function s(t,r){var e="function"==typeof Symbol&&t[Symbol.iterator];if(!e)return t;var o,n,i=e.call(t),a=[];try{for(;(void 0===r||r-- >0)&&!(o=i.next()).done;)a.push(o.value)}catch(t){n={error:t}}finally{try{o&&!o.done&&(e=i.return)&&e.call(i)}finally{if(n)throw n.error}}return a}function u(){for(var t=[],r=0;r<arguments.length;r++)t=t.concat(s(arguments[r]));return t}Object.create;function p(t){return Array.isArray(t)?t:[t]}function c(t){return null==t}function l(t){return e.isObservable(t)||function(t){return"function"==typeof(null==t?void 0:t.then)}(t)?e.from(t):e.of(t)}function y(t,r){return t||r?Object.assign(Object.assign({},t),r):null}function h(t,r){if(!t)return null;var e=Object.assign({},t);return delete e[r],Object.keys(e).length>0?e:null}function f(t){return t.getRawValue?t.getRawValue():t.value}function d(t){return e.merge(e.defer((function(){return e.of(f(t))})),t.valueChanges.pipe(o.map((function(){return f(t)}))))}function g(t){return e.merge(e.defer((function(){return e.of(t.disabled)})),t.statusChanges.pipe(o.map((function(){return t.disabled})),o.distinctUntilChanged()))}function b(t){return e.merge(e.defer((function(){return e.of(t.enabled)})),t.statusChanges.pipe(o.map((function(){return t.enabled})),o.distinctUntilChanged()))}function v(t){return e.merge(e.defer((function(){return e.of(t.status)})),t.statusChanges.pipe(o.map((function(){return t.status})),o.distinctUntilChanged()))}function m(t,r){return e.merge(e.defer((function(){return e.of(t.errors)})),r,t.valueChanges.pipe(o.map((function(){return t.errors})),o.distinctUntilChanged((function(t,r){return function(t,r){return c(t)||c(r)?t===r:JSON.stringify(t)===JSON.stringify(r)}(t,r)}))))}function V(t,r,e){r?t.enable(e):t.disable(e)}function A(t,r,e){V(t,!r,e)}function C(t,r,e){return r.subscribe((function(r){return A(t,r,e)}))}function O(t,r,e){return r.subscribe((function(r){return V(t,r,e)}))}function E(t,r){t.setValidators(u([t.validator],p(r))),t.updateValueAndValidity()}function j(t,r){return r.subscribe((function(r){t.setErrors(r)}))}function S(t,r,e){return t.hasError(r,e&&0!==e.length?e:void 0)&&t.touched}function k(t,r,e){return t.hasError(r,e&&0!==e.length?e:void 0)&&t.dirty}function w(t){t.markAsDirty({onlySelf:!0}),t._forEachChild((function(t){return t.markAllAsDirty()}))}var x=function(t){function r(r,n,i){var a=t.call(this,r,n,i)||this;return a.controls=r,a.touchChanges=new e.Subject,a.dirtyChanges=new e.Subject,a.errorsSubject=new e.Subject,a.touch$=a.touchChanges.asObservable().pipe(o.distinctUntilChanged()),a.dirty$=a.dirtyChanges.asObservable().pipe(o.distinctUntilChanged()),a.value$=d(a),a.disabled$=g(a),a.enabled$=b(a),a.status$=v(a),a.errors$=m(a,a.errorsSubject.asObservable()),a}return a(r,t),Object.defineProperty(r.prototype,"asyncValidator",{get:function(){return t.prototype.asyncValidator},set:function(r){t.prototype.asyncValidator=r},enumerable:!1,configurable:!0}),Object.defineProperty(r.prototype,"validator",{get:function(){return t.prototype.validator},set:function(r){t.prototype.validator=r},enumerable:!1,configurable:!0}),r.prototype.select=function(t){return this.value$.pipe(o.map(t),o.distinctUntilChanged())},r.prototype.getRawValue=function(){return t.prototype.getRawValue.call(this)},r.prototype.at=function(r){return t.prototype.at.call(this,r)},r.prototype.setValue=function(r,o){var n=this;if(e.isObservable(r))return r.subscribe((function(r){return t.prototype.setValue.call(n,r,o)}));t.prototype.setValue.call(this,r,o)},r.prototype.patchValue=function(r,o){var n=this;if(e.isObservable(r))return r.subscribe((function(r){return t.prototype.patchValue.call(n,r,o)}));t.prototype.patchValue.call(this,r,o)},r.prototype.push=function(r){return t.prototype.push.call(this,r)},r.prototype.insert=function(r,e){return t.prototype.insert.call(this,r,e)},r.prototype.setControl=function(r,e){return t.prototype.setControl.call(this,r,e)},r.prototype.disabledWhile=function(t,r){return C(this,t,r)},r.prototype.enabledWhile=function(t,r){return O(this,t,r)},r.prototype.mergeValidators=function(t){E(this,t)},r.prototype.mergeAsyncValidators=function(t){this.setAsyncValidators(u([this.asyncValidator],p(t))),this.updateValueAndValidity()},r.prototype.markAsTouched=function(r){t.prototype.markAsTouched.call(this,r),this.touchChanges.next(!0)},r.prototype.markAsUntouched=function(r){t.prototype.markAsUntouched.call(this,r),this.touchChanges.next(!1)},r.prototype.markAsPristine=function(r){t.prototype.markAsPristine.call(this,r),this.dirtyChanges.next(!1)},r.prototype.markAsDirty=function(r){t.prototype.markAsDirty.call(this,r),this.dirtyChanges.next(!0)},r.prototype.markAllAsDirty=function(){w(this)},r.prototype.reset=function(r,e){t.prototype.reset.call(this,r,e)},r.prototype.setValidators=function(r){t.prototype.setValidators.call(this,r),t.prototype.updateValueAndValidity.call(this)},r.prototype.setAsyncValidators=function(r){t.prototype.setAsyncValidators.call(this,r),t.prototype.updateValueAndValidity.call(this)},r.prototype.validateOn=function(t){var r=this;return t.subscribe((function(t){r.setErrors(t)}))},r.prototype.hasError=function(r,e){return t.prototype.hasError.call(this,r,e)},r.prototype.setErrors=function(r,e){return void 0===e&&(e={}),this.errorsSubject.next(r),t.prototype.setErrors.call(this,r,e)},r.prototype.mergeErrors=function(t,r){void 0===r&&(r={}),this.setErrors(y(this.errors,t),r)},r.prototype.removeError=function(t,r){void 0===r&&(r={}),this.setErrors(h(this.errors,t),r)},r.prototype.getError=function(r,e){return t.prototype.getError.call(this,r,e)},r.prototype.hasErrorAndTouched=function(t,r){return S(this,t,r)},r.prototype.hasErrorAndDirty=function(t,r){return k(this,t,r)},r.prototype.setEnable=function(t,r){void 0===t&&(t=!0),V(this,t,r)},r.prototype.setDisable=function(t,r){void 0===t&&(t=!0),A(this,t,r)},r.prototype.remove=function(t){this.removeWhen((function(r){return r.value===t}))},r.prototype.removeWhen=function(t){for(var r=this.length-1;r>=0;--r)t(this.at(r))&&this.removeAt(r)},r}(r.FormArray),$=function(t){function r(r,n,i){var a=t.call(this,r,n,i)||this;return a.touchChanges=new e.Subject,a.dirtyChanges=new e.Subject,a.errorsSubject=new e.Subject,a.touch$=a.touchChanges.asObservable().pipe(o.distinctUntilChanged()),a.dirty$=a.dirtyChanges.asObservable().pipe(o.distinctUntilChanged()),a.value$=d(a),a.disabled$=g(a),a.enabled$=b(a),a.status$=v(a),a.errors$=m(a,a.errorsSubject.asObservable()),a}return a(r,t),Object.defineProperty(r.prototype,"asyncValidator",{get:function(){return t.prototype.asyncValidator},set:function(r){t.prototype.asyncValidator=r},enumerable:!1,configurable:!0}),Object.defineProperty(r.prototype,"validator",{get:function(){return t.prototype.validator},set:function(r){t.prototype.validator=r},enumerable:!1,configurable:!0}),r.prototype.setValue=function(r,o){var n=this;if(e.isObservable(r))return r.subscribe((function(r){return t.prototype.setValue.call(n,r,o)}));t.prototype.setValue.call(this,r,o)},r.prototype.patchValue=function(r,o){var n=this;if(e.isObservable(r))return r.subscribe((function(r){return t.prototype.patchValue.call(n,r,o)}));t.prototype.patchValue.call(this,r,o)},r.prototype.disabledWhile=function(t,r){return C(this,t,r)},r.prototype.enabledWhile=function(t,r){return O(this,t,r)},r.prototype.mergeValidators=function(t){E(this,t)},r.prototype.mergeAsyncValidators=function(t){this.setAsyncValidators(u([this.asyncValidator],p(t))),this.updateValueAndValidity()},r.prototype.markAsTouched=function(r){t.prototype.markAsTouched.call(this,r),this.touchChanges.next(!0)},r.prototype.markAsUntouched=function(r){t.prototype.markAsUntouched.call(this,r),this.touchChanges.next(!1)},r.prototype.markAsPristine=function(r){t.prototype.markAsPristine.call(this,r),this.dirtyChanges.next(!1)},r.prototype.markAsDirty=function(r){t.prototype.markAsDirty.call(this,r),this.dirtyChanges.next(!0)},r.prototype.markAllAsDirty=function(){this.markAsDirty({onlySelf:!0})},r.prototype.reset=function(r,e){t.prototype.reset.call(this,r,e)},r.prototype.setValidators=function(r){t.prototype.setValidators.call(this,r),t.prototype.updateValueAndValidity.call(this)},r.prototype.setAsyncValidators=function(r){t.prototype.setAsyncValidators.call(this,r),t.prototype.updateValueAndValidity.call(this)},r.prototype.validateOn=function(t){return j(this,t)},r.prototype.getError=function(r){return t.prototype.getError.call(this,r)},r.prototype.hasError=function(r){return t.prototype.hasError.call(this,r)},r.prototype.setErrors=function(r,e){return void 0===e&&(e={}),this.errorsSubject.next(r),t.prototype.setErrors.call(this,r,e)},r.prototype.mergeErrors=function(t,r){void 0===r&&(r={}),this.setErrors(y(this.errors,t),r)},r.prototype.removeError=function(t,r){void 0===r&&(r={}),this.setErrors(h(this.errors,t),r)},r.prototype.hasErrorAndTouched=function(t){return S(this,t)},r.prototype.hasErrorAndDirty=function(t){return k(this,t)},r.prototype.setEnable=function(t,r){void 0===t&&(t=!0),V(this,t,r)},r.prototype.setDisable=function(t,r){void 0===t&&(t=!0),A(this,t,r)},r}(r.FormControl),D=function(){function t(){}return t.prototype.setValue=function(t,r){return localStorage.setItem(t,JSON.stringify(r)),r},t.prototype.getValue=function(t){return JSON.parse(localStorage.getItem(t)||"{}")},t}(),T=function(t){function n(r,n,i){var a=t.call(this,r,n,i)||this;return a.controls=r,a.touchChanges=new e.Subject,a.dirtyChanges=new e.Subject,a.errorsSubject=new e.Subject,a.touch$=a.touchChanges.asObservable().pipe(o.distinctUntilChanged()),a.dirty$=a.dirtyChanges.asObservable().pipe(o.distinctUntilChanged()),a.value$=d(a),a.disabled$=g(a),a.enabled$=b(a),a.status$=v(a),a.errors$=m(a,a.errorsSubject.asObservable()),a}return a(n,t),Object.defineProperty(n.prototype,"asyncValidator",{get:function(){return t.prototype.asyncValidator},set:function(r){t.prototype.asyncValidator=r},enumerable:!1,configurable:!0}),Object.defineProperty(n.prototype,"validator",{get:function(){return t.prototype.validator},set:function(r){t.prototype.validator=r},enumerable:!1,configurable:!0}),n.prototype.select=function(t){return function(t,r){return t.value$.pipe(o.map(r),o.distinctUntilChanged())}(this,t)},n.prototype.getRawValue=function(){return t.prototype.getRawValue.call(this)},n.prototype.get=function(r){return t.prototype.get.call(this,r)},n.prototype.getControl=function(){for(var t=[],r=0;r<arguments.length;r++)t[r]=arguments[r];return this.get(t.join("."))},n.prototype.addControl=function(r,e){t.prototype.addControl.call(this,r,e)},n.prototype.removeControl=function(r){t.prototype.removeControl.call(this,r)},n.prototype.contains=function(r){return t.prototype.contains.call(this,r)},n.prototype.setControl=function(r,e){t.prototype.setControl.call(this,r,e)},n.prototype.setValue=function(r,o){var n=this;if(e.isObservable(r))return r.subscribe((function(r){return t.prototype.setValue.call(n,r,o)}));t.prototype.setValue.call(this,r,o)},n.prototype.patchValue=function(r,o){var n=this;if(e.isObservable(r))return r.subscribe((function(r){return t.prototype.patchValue.call(n,r,o)}));t.prototype.patchValue.call(this,r,o)},n.prototype.disabledWhile=function(t,r){return C(this,t,r)},n.prototype.enabledWhile=function(t,r){return O(this,t,r)},n.prototype.mergeValidators=function(t){E(this,t)},n.prototype.mergeAsyncValidators=function(t){this.setAsyncValidators(u([this.asyncValidator],p(t))),this.updateValueAndValidity()},n.prototype.markAsTouched=function(r){t.prototype.markAsTouched.call(this,r),this.touchChanges.next(!0)},n.prototype.markAsUntouched=function(r){t.prototype.markAsUntouched.call(this,r),this.touchChanges.next(!1)},n.prototype.markAsPristine=function(r){t.prototype.markAsPristine.call(this,r),this.dirtyChanges.next(!1)},n.prototype.markAsDirty=function(r){t.prototype.markAsDirty.call(this,r),this.dirtyChanges.next(!0)},n.prototype.markAllAsDirty=function(){w(this)},n.prototype.reset=function(r,e){t.prototype.reset.call(this,r,e)},n.prototype.setValidators=function(r){t.prototype.setValidators.call(this,r),t.prototype.updateValueAndValidity.call(this)},n.prototype.setAsyncValidators=function(r){t.prototype.setAsyncValidators.call(this,r),t.prototype.updateValueAndValidity.call(this)},n.prototype.validateOn=function(t){return j(this,t)},n.prototype.hasError=function(r,e){return t.prototype.hasError.call(this,r,e)},n.prototype.setErrors=function(r,e){return void 0===e&&(e={}),this.errorsSubject.next(r),t.prototype.setErrors.call(this,r,e)},n.prototype.mergeErrors=function(t,r){void 0===r&&(r={}),this.setErrors(y(this.errors,t),r)},n.prototype.removeError=function(t,r){void 0===r&&(r={}),this.setErrors(h(this.errors,t),r)},n.prototype.getError=function(r,e){return t.prototype.getError.call(this,r,e)},n.prototype.hasErrorAndTouched=function(t){for(var r=[],e=1;e<arguments.length;e++)r[e-1]=arguments[e];return S.apply(void 0,u([this,t],r))},n.prototype.hasErrorAndDirty=function(t){for(var r=[],e=1;e<arguments.length;e++)r[e-1]=arguments[e];return k.apply(void 0,u([this,t],r))},n.prototype.setEnable=function(t,r){void 0===t&&(t=!0),V(this,t,r)},n.prototype.setDisable=function(t,r){void 0===t&&(t=!0),A(this,t,r)},n.prototype.persist=function(t,r){var e=this,n=r.debounceTime,i=r.manager,a=r.arrControlFactory,s=i||new D;return this.restore(t,s,a).pipe(o.switchMap((function(){return function(t,r,e){return t.valueChanges.pipe(o.debounceTime(e.debounceTime),o.switchMap((function(t){return l(e.manager.setValue(r,t))})))}(e,t,{debounceTime:n||250,manager:s})})))},n.prototype.restore=function(t,e,n){var i=this;return l(e.getValue(t)).pipe(o.take(1),o.tap((function(t){t&&(!function(t,e,o){Object.keys(e).forEach((function(n){var i=e[n];if(Array.isArray(i)&&t.get(n)instanceof r.FormArray){if(!o||o&&!(n in o))throw new Error("Please provide arrControlFactory for "+n);var a=t.get(n),s=o[n];!function(t){for(;0!==t.length;)t.removeAt(0)}(a),i.forEach((function(t,r){return a.insert(r,s(t))}))}}))}(i,t,n),i.patchValue(t,{emitEvent:!1}))})))},n}(r.FormGroup);var U=function(t){function r(){return null!==t&&t.apply(this,arguments)||this}return a(r,t),r.prototype.group=function(t,r){var e,o=this._reduceControls(t),n=null,i=null;return null!=r&&(!function(t){return void 0!==t.asyncValidators||void 0!==t.validators||void 0!==t.updateOn}(r)?(n=null!=r.validator?r.validator:null,i=null!=r.asyncValidator?r.asyncValidator:null):(n=null!=r.validators?r.validators:null,i=null!=r.asyncValidators?r.asyncValidators:null,e=null!=r.updateOn?r.updateOn:void 0)),new T(o,{asyncValidators:i,updateOn:e,validators:n})},r.prototype.control=function(t,r,e){return new $(t,r,e)},r.prototype.array=function(t,r,e){var o=this,n=t.map((function(t){return o._createControl(t)}));return new x(n,r,e)},r}(r.FormBuilder);U.ɵprov=n.ɵɵdefineInjectable({factory:function(){return new U},token:U,providedIn:"root"}),U.decorators=[{type:n.Injectable,args:[{providedIn:"root"}]}];var P=function(){function t(){this.onChange=function(t){},this.onTouched=function(){}}return t.prototype.registerOnChange=function(t){this.onChange=t},t.prototype.registerOnTouched=function(t){this.onTouched=t},t}(),_=function(){function t(){}return t.prototype.setValue=function(t,r){return sessionStorage.setItem(t,JSON.stringify(r)),r},t.prototype.getValue=function(t){return JSON.parse(sessionStorage.getItem(t)||"{}")},t}();t.ControlValueAccessor=P,t.FormArray=x,t.FormBuilder=U,t.FormControl=$,t.FormGroup=T,t.LocalStorageManager=D,t.SessionStorageManager=_,Object.defineProperty(t,"__esModule",{value:!0})}));
***************************************************************************** */var i=function(t,r){return(i=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,r){t.__proto__=r}||function(t,r){for(var e in r)Object.prototype.hasOwnProperty.call(r,e)&&(t[e]=r[e])})(t,r)};function a(t,r){function e(){this.constructor=t}i(t,r),t.prototype=null===r?Object.create(r):(e.prototype=r.prototype,new e)}Object.create;function s(t,r){var e="function"==typeof Symbol&&t[Symbol.iterator];if(!e)return t;var o,n,i=e.call(t),a=[];try{for(;(void 0===r||r-- >0)&&!(o=i.next()).done;)a.push(o.value)}catch(t){n={error:t}}finally{try{o&&!o.done&&(e=i.return)&&e.call(i)}finally{if(n)throw n.error}}return a}function u(){for(var t=[],r=0;r<arguments.length;r++)t=t.concat(s(arguments[r]));return t}Object.create;function p(t){return Array.isArray(t)?t:[t]}function c(t){return null==t}function l(t){return e.isObservable(t)||function(t){return"function"==typeof(null==t?void 0:t.then)}(t)?e.from(t):e.of(t)}function y(t,r){return t||r?Object.assign(Object.assign({},t),r):null}function h(t,r){if(!t)return null;var e=Object.assign({},t);return delete e[r],Object.keys(e).length>0?e:null}function f(t){return t.getRawValue?t.getRawValue():t.value}function d(t){return e.merge(e.defer((function(){return e.of(f(t))})),t.valueChanges.pipe(o.map((function(){return f(t)}))))}function g(t){return e.merge(e.defer((function(){return e.of(t.disabled)})),t.statusChanges.pipe(o.map((function(){return t.disabled})),o.distinctUntilChanged()))}function b(t){return e.merge(e.defer((function(){return e.of(t.enabled)})),t.statusChanges.pipe(o.map((function(){return t.enabled})),o.distinctUntilChanged()))}function v(t){return e.merge(e.defer((function(){return e.of(t.status)})),t.statusChanges.pipe(o.map((function(){return t.status})),o.distinctUntilChanged()))}function m(t,r){return e.merge(e.defer((function(){return e.of(t.errors)})),r,t.valueChanges.pipe(o.map((function(){return t.errors})),o.distinctUntilChanged((function(t,r){return function(t,r){return c(t)||c(r)?t===r:JSON.stringify(t)===JSON.stringify(r)}(t,r)}))))}function V(t,r,e){r?t.enable(e):t.disable(e)}function A(t,r,e){V(t,!r,e)}function C(t,r,e){return r.subscribe((function(r){return A(t,r,e)}))}function O(t,r,e){return r.subscribe((function(r){return V(t,r,e)}))}function E(t,r){t.setValidators(u([t.validator],p(r))),t.updateValueAndValidity()}function j(t,r){return r.subscribe((function(r){t.setErrors(r)}))}function S(t,r,e){return t.hasError(r,e&&0!==e.length?e:void 0)&&t.touched}function k(t,r,e){return t.hasError(r,e&&0!==e.length?e:void 0)&&t.dirty}function w(t){t.markAsDirty({onlySelf:!0}),t._forEachChild((function(t){return t.markAllAsDirty()}))}var x=function(t){function r(r,n,i){var a=t.call(this,r,n,i)||this;return a.controls=r,a.touchChanges=new e.Subject,a.dirtyChanges=new e.Subject,a.errorsSubject=new e.Subject,a.touch$=a.touchChanges.asObservable().pipe(o.distinctUntilChanged()),a.dirty$=a.dirtyChanges.asObservable().pipe(o.distinctUntilChanged()),a.value$=d(a),a.disabled$=g(a),a.enabled$=b(a),a.status$=v(a),a.errors$=m(a,a.errorsSubject.asObservable()),a}return a(r,t),Object.defineProperty(r.prototype,"asyncValidator",{get:function(){return t.prototype.asyncValidator},set:function(r){t.prototype.asyncValidator=r},enumerable:!1,configurable:!0}),Object.defineProperty(r.prototype,"validator",{get:function(){return t.prototype.validator},set:function(r){t.prototype.validator=r},enumerable:!1,configurable:!0}),r.prototype.select=function(t){return this.value$.pipe(o.map(t),o.distinctUntilChanged())},r.prototype.getRawValue=function(){return t.prototype.getRawValue.call(this)},r.prototype.at=function(r){return t.prototype.at.call(this,r)},r.prototype.setValue=function(r,o){var n=this;if(e.isObservable(r))return r.subscribe((function(r){return t.prototype.setValue.call(n,r,o)}));t.prototype.setValue.call(this,r,o)},r.prototype.patchValue=function(r,o){var n=this;if(e.isObservable(r))return r.subscribe((function(r){return t.prototype.patchValue.call(n,r,o)}));t.prototype.patchValue.call(this,r,o)},r.prototype.push=function(r){return t.prototype.push.call(this,r)},r.prototype.insert=function(r,e){return t.prototype.insert.call(this,r,e)},r.prototype.setControl=function(r,e){return t.prototype.setControl.call(this,r,e)},r.prototype.disabledWhile=function(t,r){return C(this,t,r)},r.prototype.enabledWhile=function(t,r){return O(this,t,r)},r.prototype.mergeValidators=function(t){E(this,t)},r.prototype.mergeAsyncValidators=function(t){this.setAsyncValidators(u([this.asyncValidator],p(t))),this.updateValueAndValidity()},r.prototype.markAsTouched=function(r){t.prototype.markAsTouched.call(this,r),this.touchChanges.next(!0)},r.prototype.markAsUntouched=function(r){t.prototype.markAsUntouched.call(this,r),this.touchChanges.next(!1)},r.prototype.markAsPristine=function(r){t.prototype.markAsPristine.call(this,r),this.dirtyChanges.next(!1)},r.prototype.markAsDirty=function(r){t.prototype.markAsDirty.call(this,r),this.dirtyChanges.next(!0)},r.prototype.markAllAsDirty=function(){w(this)},r.prototype.reset=function(r,e){t.prototype.reset.call(this,r,e)},r.prototype.setValidators=function(r){t.prototype.setValidators.call(this,r),t.prototype.updateValueAndValidity.call(this)},r.prototype.setAsyncValidators=function(r){t.prototype.setAsyncValidators.call(this,r),t.prototype.updateValueAndValidity.call(this)},r.prototype.validateOn=function(t){var r=this;return t.subscribe((function(t){r.setErrors(t)}))},r.prototype.hasError=function(r,e){return t.prototype.hasError.call(this,r,e)},r.prototype.setErrors=function(r,e){return void 0===e&&(e={}),this.errorsSubject.next(r),t.prototype.setErrors.call(this,r,e)},r.prototype.mergeErrors=function(t,r){void 0===r&&(r={}),this.setErrors(y(this.errors,t),r)},r.prototype.removeError=function(t,r){void 0===r&&(r={}),this.setErrors(h(this.errors,t),r)},r.prototype.getError=function(r,e){return t.prototype.getError.call(this,r,e)},r.prototype.hasErrorAndTouched=function(t,r){return S(this,t,r)},r.prototype.hasErrorAndDirty=function(t,r){return k(this,t,r)},r.prototype.setEnable=function(t,r){void 0===t&&(t=!0),V(this,t,r)},r.prototype.setDisable=function(t,r){void 0===t&&(t=!0),A(this,t,r)},r.prototype.remove=function(t){this.removeWhen((function(r){return r.value===t}))},r.prototype.removeWhen=function(t){for(var r=this.length-1;r>=0;--r)t(this.at(r))&&this.removeAt(r)},r}(r.FormArray),$=function(t){function r(r,n,i){var a=t.call(this,r,n,i)||this;return a.touchChanges=new e.Subject,a.dirtyChanges=new e.Subject,a.errorsSubject=new e.Subject,a.touch$=a.touchChanges.asObservable().pipe(o.distinctUntilChanged()),a.dirty$=a.dirtyChanges.asObservable().pipe(o.distinctUntilChanged()),a.value$=d(a),a.disabled$=g(a),a.enabled$=b(a),a.status$=v(a),a.errors$=m(a,a.errorsSubject.asObservable()),a}return a(r,t),Object.defineProperty(r.prototype,"asyncValidator",{get:function(){return t.prototype.asyncValidator},set:function(r){t.prototype.asyncValidator=r},enumerable:!1,configurable:!0}),Object.defineProperty(r.prototype,"validator",{get:function(){return t.prototype.validator},set:function(r){t.prototype.validator=r},enumerable:!1,configurable:!0}),r.prototype.setValue=function(r,o){var n=this;if(e.isObservable(r))return r.subscribe((function(r){return t.prototype.setValue.call(n,r,o)}));t.prototype.setValue.call(this,r,o)},r.prototype.patchValue=function(r,o){var n=this;if(e.isObservable(r))return r.subscribe((function(r){return t.prototype.patchValue.call(n,r,o)}));t.prototype.patchValue.call(this,r,o)},r.prototype.disabledWhile=function(t,r){return C(this,t,r)},r.prototype.enabledWhile=function(t,r){return O(this,t,r)},r.prototype.mergeValidators=function(t){E(this,t)},r.prototype.mergeAsyncValidators=function(t){this.setAsyncValidators(u([this.asyncValidator],p(t))),this.updateValueAndValidity()},r.prototype.markAsTouched=function(r){t.prototype.markAsTouched.call(this,r),this.touchChanges.next(!0)},r.prototype.markAsUntouched=function(r){t.prototype.markAsUntouched.call(this,r),this.touchChanges.next(!1)},r.prototype.markAsPristine=function(r){t.prototype.markAsPristine.call(this,r),this.dirtyChanges.next(!1)},r.prototype.markAsDirty=function(r){t.prototype.markAsDirty.call(this,r),this.dirtyChanges.next(!0)},r.prototype.markAllAsDirty=function(){this.markAsDirty({onlySelf:!0})},r.prototype.reset=function(r,e){t.prototype.reset.call(this,r,e)},r.prototype.setValidators=function(r){t.prototype.setValidators.call(this,r),t.prototype.updateValueAndValidity.call(this)},r.prototype.setAsyncValidators=function(r){t.prototype.setAsyncValidators.call(this,r),t.prototype.updateValueAndValidity.call(this)},r.prototype.validateOn=function(t){return j(this,t)},r.prototype.getError=function(r){return t.prototype.getError.call(this,r)},r.prototype.hasError=function(r){return t.prototype.hasError.call(this,r)},r.prototype.setErrors=function(r,e){return void 0===e&&(e={}),this.errorsSubject.next(r),t.prototype.setErrors.call(this,r,e)},r.prototype.mergeErrors=function(t,r){void 0===r&&(r={}),this.setErrors(y(this.errors,t),r)},r.prototype.removeError=function(t,r){void 0===r&&(r={}),this.setErrors(h(this.errors,t),r)},r.prototype.hasErrorAndTouched=function(t){return S(this,t)},r.prototype.hasErrorAndDirty=function(t){return k(this,t)},r.prototype.setEnable=function(t,r){void 0===t&&(t=!0),V(this,t,r)},r.prototype.setDisable=function(t,r){void 0===t&&(t=!0),A(this,t,r)},r}(r.FormControl),D=function(){function t(){}return t.prototype.setValue=function(t,r){return localStorage.setItem(t,JSON.stringify(r)),r},t.prototype.getValue=function(t){return JSON.parse(localStorage.getItem(t)||"{}")},t}(),T=function(t){function n(r,n,i){var a=t.call(this,r,n,i)||this;return a.controls=r,a.touchChanges=new e.Subject,a.dirtyChanges=new e.Subject,a.errorsSubject=new e.Subject,a.touch$=a.touchChanges.asObservable().pipe(o.distinctUntilChanged()),a.dirty$=a.dirtyChanges.asObservable().pipe(o.distinctUntilChanged()),a.value$=d(a),a.disabled$=g(a),a.enabled$=b(a),a.status$=v(a),a.errors$=m(a,a.errorsSubject.asObservable()),a}return a(n,t),Object.defineProperty(n.prototype,"asyncValidator",{get:function(){return t.prototype.asyncValidator},set:function(r){t.prototype.asyncValidator=r},enumerable:!1,configurable:!0}),Object.defineProperty(n.prototype,"validator",{get:function(){return t.prototype.validator},set:function(r){t.prototype.validator=r},enumerable:!1,configurable:!0}),n.prototype.select=function(t){return function(t,r){return t.value$.pipe(o.map(r),o.distinctUntilChanged())}(this,t)},n.prototype.getRawValue=function(){return t.prototype.getRawValue.call(this)},n.prototype.get=function(r){return t.prototype.get.call(this,r)},n.prototype.getControl=function(){for(var t=[],r=0;r<arguments.length;r++)t[r]=arguments[r];return this.get(t)},n.prototype.addControl=function(r,e){t.prototype.addControl.call(this,r,e)},n.prototype.removeControl=function(r){t.prototype.removeControl.call(this,r)},n.prototype.contains=function(r){return t.prototype.contains.call(this,r)},n.prototype.setControl=function(r,e){t.prototype.setControl.call(this,r,e)},n.prototype.setValue=function(r,o){var n=this;if(e.isObservable(r))return r.subscribe((function(r){return t.prototype.setValue.call(n,r,o)}));t.prototype.setValue.call(this,r,o)},n.prototype.patchValue=function(r,o){var n=this;if(e.isObservable(r))return r.subscribe((function(r){return t.prototype.patchValue.call(n,r,o)}));t.prototype.patchValue.call(this,r,o)},n.prototype.disabledWhile=function(t,r){return C(this,t,r)},n.prototype.enabledWhile=function(t,r){return O(this,t,r)},n.prototype.mergeValidators=function(t){E(this,t)},n.prototype.mergeAsyncValidators=function(t){this.setAsyncValidators(u([this.asyncValidator],p(t))),this.updateValueAndValidity()},n.prototype.markAsTouched=function(r){t.prototype.markAsTouched.call(this,r),this.touchChanges.next(!0)},n.prototype.markAsUntouched=function(r){t.prototype.markAsUntouched.call(this,r),this.touchChanges.next(!1)},n.prototype.markAsPristine=function(r){t.prototype.markAsPristine.call(this,r),this.dirtyChanges.next(!1)},n.prototype.markAsDirty=function(r){t.prototype.markAsDirty.call(this,r),this.dirtyChanges.next(!0)},n.prototype.markAllAsDirty=function(){w(this)},n.prototype.reset=function(r,e){t.prototype.reset.call(this,r,e)},n.prototype.setValidators=function(r){t.prototype.setValidators.call(this,r),t.prototype.updateValueAndValidity.call(this)},n.prototype.setAsyncValidators=function(r){t.prototype.setAsyncValidators.call(this,r),t.prototype.updateValueAndValidity.call(this)},n.prototype.validateOn=function(t){return j(this,t)},n.prototype.hasError=function(r,e){return t.prototype.hasError.call(this,r,e)},n.prototype.setErrors=function(r,e){return void 0===e&&(e={}),this.errorsSubject.next(r),t.prototype.setErrors.call(this,r,e)},n.prototype.mergeErrors=function(t,r){void 0===r&&(r={}),this.setErrors(y(this.errors,t),r)},n.prototype.removeError=function(t,r){void 0===r&&(r={}),this.setErrors(h(this.errors,t),r)},n.prototype.getError=function(r,e){return t.prototype.getError.call(this,r,e)},n.prototype.hasErrorAndTouched=function(t){for(var r=[],e=1;e<arguments.length;e++)r[e-1]=arguments[e];return S.apply(void 0,u([this,t],r))},n.prototype.hasErrorAndDirty=function(t){for(var r=[],e=1;e<arguments.length;e++)r[e-1]=arguments[e];return k.apply(void 0,u([this,t],r))},n.prototype.setEnable=function(t,r){void 0===t&&(t=!0),V(this,t,r)},n.prototype.setDisable=function(t,r){void 0===t&&(t=!0),A(this,t,r)},n.prototype.persist=function(t,r){var e=this,n=r.debounceTime,i=r.manager,a=r.arrControlFactory,s=i||new D;return this.restore(t,s,a).pipe(o.switchMap((function(){return function(t,r,e){return t.valueChanges.pipe(o.debounceTime(e.debounceTime),o.switchMap((function(t){return l(e.manager.setValue(r,t))})))}(e,t,{debounceTime:n||250,manager:s})})))},n.prototype.restore=function(t,e,n){var i=this;return l(e.getValue(t)).pipe(o.take(1),o.tap((function(t){t&&(!function(t,e,o){Object.keys(e).forEach((function(n){var i=e[n];if(Array.isArray(i)&&t.get(n)instanceof r.FormArray){if(!o||o&&!(n in o))throw new Error("Please provide arrControlFactory for "+n);var a=t.get(n),s=o[n];!function(t){for(;0!==t.length;)t.removeAt(0)}(a),i.forEach((function(t,r){return a.insert(r,s(t))}))}}))}(i,t,n),i.patchValue(t,{emitEvent:!1}))})))},n}(r.FormGroup);var U=function(t){function r(){return null!==t&&t.apply(this,arguments)||this}return a(r,t),r.prototype.group=function(t,r){var e,o=this._reduceControls(t),n=null,i=null;return null!=r&&(!function(t){return void 0!==t.asyncValidators||void 0!==t.validators||void 0!==t.updateOn}(r)?(n=null!=r.validator?r.validator:null,i=null!=r.asyncValidator?r.asyncValidator:null):(n=null!=r.validators?r.validators:null,i=null!=r.asyncValidators?r.asyncValidators:null,e=null!=r.updateOn?r.updateOn:void 0)),new T(o,{asyncValidators:i,updateOn:e,validators:n})},r.prototype.control=function(t,r,e){return new $(t,r,e)},r.prototype.array=function(t,r,e){var o=this,n=t.map((function(t){return o._createControl(t)}));return new x(n,r,e)},r}(r.FormBuilder);U.ɵprov=n.ɵɵdefineInjectable({factory:function(){return new U},token:U,providedIn:"root"}),U.decorators=[{type:n.Injectable,args:[{providedIn:"root"}]}];var P=function(){function t(){this.onChange=function(t){},this.onTouched=function(){}}return t.prototype.registerOnChange=function(t){this.onChange=t},t.prototype.registerOnTouched=function(t){this.onTouched=t},t}(),_=function(){function t(){}return t.prototype.setValue=function(t,r){return sessionStorage.setItem(t,JSON.stringify(r)),r},t.prototype.getValue=function(t){return JSON.parse(sessionStorage.getItem(t)||"{}")},t}();t.ControlValueAccessor=P,t.FormArray=x,t.FormBuilder=U,t.FormControl=$,t.FormGroup=T,t.LocalStorageManager=D,t.SessionStorageManager=_,Object.defineProperty(t,"__esModule",{value:!0})}));
//# sourceMappingURL=ngneat-reactive-forms.umd.min.js.map

@@ -0,0 +0,0 @@ import { FormArray as NgFormArray } from '@angular/forms';

@@ -0,0 +0,0 @@ export class ControlValueAccessor {

@@ -151,2 +151,2 @@ import { FormArray as NgFormArray } from '@angular/forms';

}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybUFycmF5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmduZWF0L3JlYWN0aXZlLWZvcm1zL3NyYy9saWIvZm9ybUFycmF5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLElBQUksV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDMUQsT0FBTyxFQUFFLFlBQVksRUFBYyxPQUFPLEVBQWdCLE1BQU0sTUFBTSxDQUFDO0FBQ3ZFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUMzRCxPQUFPLEVBQ0wsZ0JBQWdCLEVBQ2hCLG9CQUFvQixFQUNwQixlQUFlLEVBQ2YsbUJBQW1CLEVBQ25CLG9CQUFvQixFQUNwQixxQkFBcUIsRUFDckIsb0JBQW9CLEVBQ3BCLGNBQWMsRUFDZCxhQUFhLEVBQ2IsZ0JBQWdCLEVBQ2hCLGtCQUFrQixFQUNsQixZQUFZLEVBQ1osc0JBQXNCLEVBQ3ZCLE1BQU0sbUJBQW1CLENBQUM7QUFnQjNCLE9BQU8sRUFBRSxXQUFXLEVBQUUsV0FBVyxFQUFFLFdBQVcsRUFBRSxNQUFNLFNBQVMsQ0FBQztBQUVoRSxNQUFNLE9BQU8sU0FBMkMsU0FBUSxXQUFXO0lBa0N6RSxZQUNTLFFBQW1DLEVBQzFDLGVBQWlDLEVBQ2pDLGNBQStCO1FBRS9CLEtBQUssQ0FBQyxRQUFRLEVBQUUsZUFBZSxFQUFFLGNBQWMsQ0FBQyxDQUFDO1FBSjFDLGFBQVEsR0FBUixRQUFRLENBQTJCO1FBNUJwQyxpQkFBWSxHQUFHLElBQUksT0FBTyxFQUFXLENBQUM7UUFDdEMsaUJBQVksR0FBRyxJQUFJLE9BQU8sRUFBVyxDQUFDO1FBQ3RDLGtCQUFhLEdBQUcsSUFBSSxPQUFPLEVBQWMsQ0FBQztRQUV6QyxXQUFNLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxZQUFZLEVBQUUsQ0FBQyxJQUFJLENBQUMsb0JBQW9CLEVB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ImltcG9ydCB7IEZvcm1BcnJheSBhcyBOZ0Zvcm1BcnJheSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IGlzT2JzZXJ2YWJsZSwgT2JzZXJ2YWJsZSwgU3ViamVjdCwgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBkaXN0aW5jdFVudGlsQ2hhbmdlZCwgbWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHtcbiAgY29udHJvbERpc2FibGVkJCxcbiAgY29udHJvbERpc2FibGVkV2hpbGUsXG4gIGNvbnRyb2xFbmFibGVkJCxcbiAgY29udHJvbEVuYWJsZWRXaGlsZSxcbiAgY29udHJvbEVycm9yQ2hhbmdlcyQsXG4gIGNvbnRyb2xTdGF0dXNDaGFuZ2VzJCxcbiAgY29udHJvbFZhbHVlQ2hhbmdlcyQsXG4gIGRpc2FibGVDb250cm9sLFxuICBlbmFibGVDb250cm9sLFxuICBoYXNFcnJvckFuZERpcnR5LFxuICBoYXNFcnJvckFuZFRvdWNoZWQsXG4gIG1hcmtBbGxEaXJ0eSxcbiAgbWVyZ2VDb250cm9sVmFsaWRhdG9yc1xufSBmcm9tICcuL2NvbnRyb2wtYWN0aW9ucyc7XG5pbXBvcnQge1xuICBBYnN0cmFjdENvbnRyb2wsXG4gIEFzeW5jVmFsaWRhdG9yLFxuICBBc3luY1ZhbGlkYXRvckZuLFxuICBDb250cm9sRXZlbnRPcHRpb25zLFxuICBDb250cm9sT3B0aW9ucyxcbiAgQ29udHJvbFBhdGgsXG4gIENvbnRyb2xTdGF0ZSxcbiAgRW1pdEV2ZW50LFxuICBFeHRyYWN0U3RyaW5ncyxcbiAgT25seVNlbGYsXG4gIFZhbGlkYXRvcixcbiAgVmFsaWRhdG9yRm4sXG4gIFZhbGlkYXRvck9yT3B0c1xufSBmcm9tICcuL3R5cGVzJztcbmltcG9ydCB7IGNvZXJjZUFycmF5LCBtZXJnZUVycm9ycywgcmVtb3ZlRXJyb3IgfSBmcm9tICcuL3V0aWxzJztcblxuZXhwb3J0IGNsYXNzIEZvcm1BcnJheTxUID0gYW55LCBFIGV4dGVuZHMgb2JqZWN0ID0gYW55PiBleHRlbmRzIE5nRm9ybUFycmF5IHtcbiAgcmVhZG9ubHkgdmFsdWU6IFRbXTtcbiAgcmVhZG9ubHkgdmFsdWVDaGFuZ2VzOiBPYnNlcnZhYmxlPFRbXT47XG4gIHJlYWRvbmx5IHN0YXR1czogQ29udHJvbFN0YXRlO1xuICByZWFkb25seSBzdGF0dXNDaGFuZ2VzOiBPYnNlcnZhYmxlPENvbnRyb2xTdGF0ZT47XG4gIHJlYWRvbmx5IGVycm9yczogRSB8IG51bGw7XG5cbiAgcHJpdmF0ZSB0b3VjaENoYW5nZXMgPSBuZXcgU3ViamVjdDxib29sZWFuPigpO1xuICBwcml2YXRlIGRpcnR5Q2hhbmdlcyA9IG5ldyBTdWJqZWN0PGJvb2xlYW4+KCk7XG4gIHByaXZhdGUgZXJyb3JzU3ViamVjdCA9IG5ldyBTdWJqZWN0PFBhcnRpYWw8RT4+KCk7XG5cbiAgcmVhZG9ubHkgdG91Y2gkID0gdGhpcy50b3VjaENoYW5nZXMuYXNPYnNlcnZhYmxlKCkucGlwZShkaXN0aW5jdFVudGlsQ2hhbmdlZCgpKTtcbiAgcmVhZG9ubHkgZGlydHkkID0gdGhpcy5kaXJ0eUNoYW5nZXMuYXNPYnNlcnZhYmxlKCkucGlwZShkaXN0aW5jdFVudGlsQ2hhbmdlZCgpKTtcblxuICByZWFkb25seSB2YWx1ZSQgPSBjb250cm9sVmFsdWVDaGFuZ2VzJDxUW10+KHRoaXMpO1xuICByZWFkb25seSBkaXNhYmxlZCQgPSBjb250cm9sRGlzYWJsZWQkKHRoaXMpO1xuICByZWFkb25seSBlbmFibGVkJCA9IGNvbnRyb2xFbmFibGVkJCh0aGlzKTtcbiAgcmVhZG9ubHkgc3RhdHVzJCA9IGNvbnRyb2xTdGF0dXNDaGFuZ2VzJCh0aGlzKTtcbiAgcmVhZG9ubHkgZXJyb3JzJCA9IGNvbnRyb2xFcnJvckNoYW5nZXMkPEU+KHRoaXMsIHRoaXMuZXJyb3JzU3ViamVjdC5hc09ic2VydmFibGUoKSk7XG5cbiAgZ2V0IGFzeW5jVmFsaWRhdG9yKCk6IEFzeW5jVmFsaWRhdG9yRm48VFtdPiB8IG51bGwge1xuICAgIHJldHVybiBzdXBlci5hc3luY1ZhbGlkYXRvcjtcbiAgfVxuICBzZXQgYXN5bmNWYWxpZGF0b3IoYXN5bmNWYWxpZGF0b3I6IEFzeW5jVmFsaWRhdG9yRm48VFtdPiB8IG51bGwpIHtcbiAgICBzdXBlci5hc3luY1ZhbGlkYXRvciA9IGFzeW5jVmFsaWRhdG9yO1xuICB9XG5cbiAgZ2V0IHZhbGlkYXRvcigpOiBWYWxpZGF0b3JGbjxUW10+IHwgbnVsbCB7XG4gICAgcmV0dXJuIHN1cGVyLnZhbGlkYXRvcjtcbiAgfVxuICBzZXQgdmFsaWRhdG9yKHZhbGlkYXRvcjogVmFsaWRhdG9yRm48VFtdPiB8IG51bGwpIHtcbiAgICBzdXBlci52YWxpZGF0b3IgPSB2YWxpZGF0b3I7XG4gIH1cblxuICBjb25zdHJ1Y3RvcihcbiAgICBwdWJsaWMgY29udHJvbHM6IEFycmF5PEFic3RyYWN0Q29udHJvbDxUPj4sXG4gICAgdmFsaWRhdG9yT3JPcHRzPzogVmFsaWRhdG9yT3JPcHRzLFxuICAgIGFzeW5jVmFsaWRhdG9yPzogQXN5bmNWYWxpZGF0b3JcbiAgKSB7XG4gICAgc3VwZXIoY29udHJvbHMsIHZhbGlkYXRvck9yT3B0cywgYXN5bmNWYWxpZGF0b3IpO1xuICB9XG5cbiAgc2VsZWN0PFI+KG1hcEZuOiAoc3RhdGU6IFRbXSkgPT4gUik6IE9ic2VydmFibGU8Uj4ge1xuICAgIHJldHVybiB0aGlzLnZhbHVlJC5waXBlKG1hcChtYXBGbiksIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCkpO1xuICB9XG5cbiAgZ2V0UmF3VmFsdWUoKTogVFtdIHtcbiAgICByZXR1cm4gc3VwZXIuZ2V0UmF3VmFsdWUoKTtcbiAgfVxuXG4gIGF0KGluZGV4OiBudW1iZXIpOiBBYnN0cmFjdENvbnRyb2w8VD4ge1xuICAgIHJldHVybiBzdXBlci5hdChpbmRleCkgYXMgQWJzdHJhY3RDb250cm9sPFQ+O1xuICB9XG5cbiAgc2V0VmFsdWUodmFsdWVPck9ic2VydmFibGU6IE9ic2VydmFibGU8VFtdPiwgb3B0aW9ucz86IENvbnRyb2xFdmVudE9wdGlvbnMpOiBTdWJzY3JpcHRpb247XG4gIHNldFZhbHVlKHZhbHVlT3JPYnNlcnZhYmxlOiBUW10sIG9wdGlvbnM/OiBDb250cm9sRXZlbnRPcHRpb25zKTogdm9pZDtcbiAgc2V0VmFsdWUodmFsdWVPck9ic2VydmFibGU6IFRbXSB8IE9ic2VydmFibGU8VFtdPiwgb3B0aW9ucz86IENvbnRyb2xFdmVudE9wdGlvbnMpOiBTdWJzY3JpcHRpb24gfCB2b2lkIHtcbiAgICBpZiAoaXNPYnNlcnZhYmxlKHZhbHVlT3JPYnNlcnZhYmxlKSkge1xuICAgICAgcmV0dXJuIHZhbHVlT3JPYnNlcnZhYmxlLnN1YnNjcmliZSh2YWx1ZSA9PiBzdXBlci5zZXRWYWx1ZSh2YWx1ZSwgb3B0aW9ucykpO1xuICAgIH1cblxuICAgIHN1cGVyLnNldFZhbHVlKHZhbHVlT3JPYnNlcnZhYmxlLCBvcHRpb25zKTtcbiAgfVxuXG4gIHBhdGNoVmFsdWUodmFsdWVPck9ic2VydmFibGU6IE9ic2VydmFibGU8VFtdPiwgb3B0aW9ucz86IENvbnRyb2xFdmVudE9wdGlvbnMpOiBTdWJzY3JpcHRpb247XG4gIHBhdGNoVmFsdWUodmFsdWVPck9ic2VydmFibGU6IFRbXSwgb3B0aW9ucz86IENvbnRyb2xFdmVudE9wdGlvbnMpOiB2b2lkO1xuICBwYXRjaFZhbHVlKHZhbHVlT3JPYnNlcnZhYmxlOiBhbnksIG9wdGlvbnM/OiBDb250cm9sRXZlbnRPcHRpb25zKTogU3Vic2NyaXB0aW9uIHwgdm9pZCB7XG4gICAgaWYgKGlzT2JzZXJ2YWJsZSh2YWx1ZU9yT2JzZXJ2YWJsZSkpIHtcbiAgICAgIHJldHVybiB2YWx1ZU9yT2JzZXJ2YWJsZS5zdWJzY3JpYmUoKHZhbHVlOiBUW10pID0+IHN1cGVyLnBhdGNoVmFsdWUodmFsdWUsIG9wdGlvbnMpKTtcbiAgICB9XG5cbiAgICBzdXBlci5wYXRjaFZhbHVlKHZhbHVlT3JPYnNlcnZhYmxlIGFzIFRbXSwgb3B0aW9ucyk7XG4gIH1cblxuICBwdXNoKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbDxUPik6IHZvaWQge1xuICAgIHJldHVybiBzdXBlci5wdXNoKGNvbnRyb2wpO1xuICB9XG5cbiAgaW5zZXJ0KGluZGV4OiBudW1iZXIsIGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbDxUPik6IHZvaWQge1xuICAgIHJldHVybiBzdXBlci5pbnNlcnQoaW5kZXgsIGNvbnRyb2wpO1xuICB9XG5cbiAgc2V0Q29udHJvbChpbmRleDogbnVtYmVyLCBjb250cm9sOiBBYnN0cmFjdENvbnRyb2w8VD4pOiB2b2lkIHtcbiAgICByZXR1cm4gc3VwZXIuc2V0Q29udHJvbChpbmRleCwgY29udHJvbCk7XG4gIH1cblxuICBkaXNhYmxlZFdoaWxlKG9ic2VydmFibGU6IE9ic2VydmFibGU8Ym9vbGVhbj4sIG9wdGlvbnM/OiBDb250cm9sT3B0aW9ucykge1xuICAgIHJldHVybiBjb250cm9sRGlzYWJsZWRXaGlsZSh0aGlzLCBvYnNlcnZhYmxlLCBvcHRpb25zKTtcbiAgfVxuXG4gIGVuYWJsZWRXaGlsZShvYnNlcnZhYmxlOiBPYnNlcnZhYmxlPGJvb2xlYW4+LCBvcHRpb25zPzogQ29udHJvbE9wdGlvbnMpIHtcbiAgICByZXR1cm4gY29udHJvbEVuYWJsZWRXaGlsZSh0aGlzLCBvYnNlcnZhYmxlLCBvcHRpb25zKTtcbiAgfVxuXG4gIG1lcmdlVmFsaWRhdG9ycyh2YWxpZGF0b3JzOiBWYWxpZGF0b3IpIHtcbiAgICBtZXJnZUNvbnRyb2xWYWxpZGF0b3JzKHRoaXMsIHZhbGlkYXRvcnMpO1xuICB9XG5cbiAgbWVyZ2VBc3luY1ZhbGlkYXRvcnModmFsaWRhdG9yczogQXN5bmNWYWxpZGF0b3IpIHtcbiAgICB0aGlzLnNldEFzeW5jVmFsaWRhdG9ycyhbdGhpcy5hc3luY1ZhbGlkYXRvciwgLi4uY29lcmNlQXJyYXkodmFsaWRhdG9ycyldKTtcbiAgICB0aGlzLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcbiAgfVxuXG4gIG1hcmtBc1RvdWNoZWQob3B0cz86IE9ubHlTZWxmKTogdm9pZCB7XG4gICAgc3VwZXIubWFya0FzVG91Y2hlZChvcHRzKTtcbiAgICB0aGlzLnRvdWNoQ2hhbmdlcy5uZXh0KHRydWUpO1xuICB9XG5cbiAgbWFya0FzVW50b3VjaGVkKG9wdHM/OiBPbmx5U2VsZik6IHZvaWQge1xuICAgIHN1cGVyLm1hcmtBc1VudG91Y2hlZChvcHRzKTtcbiAgICB0aGlzLnRvdWNoQ2hhbmdlcy5uZXh0KGZhbHNlKTtcbiAgfVxuXG4gIG1hcmtBc1ByaXN0aW5lKG9wdHM/OiBPbmx5U2VsZik6IHZvaWQge1xuICAgIHN1cGVyLm1hcmtBc1ByaXN0aW5lKG9wdHMpO1xuICAgIHRoaXMuZGlydHlDaGFuZ2VzLm5leHQoZmFsc2UpO1xuICB9XG5cbiAgbWFya0FzRGlydHkob3B0cz86IE9ubHlTZWxmKTogdm9pZCB7XG4gICAgc3VwZXIubWFya0FzRGlydHkob3B0cyk7XG4gICAgdGhpcy5kaXJ0eUNoYW5nZXMubmV4dCh0cnVlKTtcbiAgfVxuXG4gIG1hcmtBbGxBc0RpcnR5KCk6IHZvaWQge1xuICAgIG1hcmtBbGxEaXJ0eSh0aGlzKTtcbiAgfVxuXG4gIHJlc2V0KHZhbHVlPzogVFtdLCBvcHRpb25zPzogQ29udHJvbEV2ZW50T3B0aW9ucyk6IHZvaWQge1xuICAgIHN1cGVyLnJlc2V0KHZhbHVlLCBvcHRpb25zKTtcbiAgfVxuXG4gIHNldFZhbGlkYXRvcnMobmV3VmFsaWRhdG9yOiBWYWxpZGF0b3IpOiB2b2lkIHtcbiAgICBzdXBlci5zZXRWYWxpZGF0b3JzKG5ld1ZhbGlkYXRvcik7XG4gICAgc3VwZXIudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xuICB9XG5cbiAgc2V0QXN5bmNWYWxpZGF0b3JzKG5ld1ZhbGlkYXRvcjogQXN5bmNWYWxpZGF0b3IpOiB2b2lkIHtcbiAgICBzdXBlci5zZXRBc3luY1ZhbGlkYXRvcnMobmV3VmFsaWRhdG9yKTtcbiAgICBzdXBlci51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XG4gIH1cblxuICB2YWxpZGF0ZU9uKG9ic2VydmFibGVWYWxpZGF0aW9uOiBPYnNlcnZhYmxlPG51bGwgfCBvYmplY3Q+KSB7XG4gICAgcmV0dXJuIG9ic2VydmFibGVWYWxpZGF0aW9uLnN1YnNjcmliZShtYXliZUVycm9yID0+IHtcbiAgICAgIHRoaXMuc2V0RXJyb3JzKG1heWJlRXJyb3IpO1xuICAgIH0pO1xuICB9XG5cbiAgaGFzRXJyb3IoZXJyb3JDb2RlOiBFeHRyYWN0U3RyaW5nczxFPiwgcGF0aD86IENvbnRyb2xQYXRoKSB7XG4gICAgcmV0dXJuIHN1cGVyLmhhc0Vycm9yKGVycm9yQ29kZSwgcGF0aCk7XG4gIH1cblxuICBzZXRFcnJvcnMoZXJyb3JzOiBQYXJ0aWFsPEU+IHwgbnVsbCwgb3B0czogRW1pdEV2ZW50ID0ge30pIHtcbiAgICB0aGlzLmVycm9yc1N1YmplY3QubmV4dChlcnJvcnMpO1xuICAgIHJldHVybiBzdXBlci5zZXRFcnJvcnMoZXJyb3JzLCBvcHRzKTtcbiAgfVxuXG4gIG1lcmdlRXJyb3JzKGVycm9yczogUGFydGlhbDxFPiwgb3B0czogRW1pdEV2ZW50ID0ge30pOiB2b2lkIHtcbiAgICB0aGlzLnNldEVycm9ycyhtZXJnZUVycm9yczxFPih0aGlzLmVycm9ycywgZXJyb3JzKSwgb3B0cyk7XG4gIH1cblxuICByZW1vdmVFcnJvcihrZXk6IGtleW9mIEUsIG9wdHM6IEVtaXRFdmVudCA9IHt9KTogdm9pZCB7XG4gICAgdGhpcy5zZXRFcnJvcnMocmVtb3ZlRXJyb3I8RT4odGhpcy5lcnJvcnMsIGtleSksIG9wdHMpO1xuICB9XG5cbiAgZ2V0RXJyb3I8SyBleHRlbmRzIEV4dHJhY3RTdHJpbmdzPEU+PihlcnJvckNvZGU6IEssIHBhdGg/OiBDb250cm9sUGF0aCkge1xuICAgIHJldHVybiBzdXBlci5nZXRFcnJvcihlcnJvckNvZGUsIHBhdGgpIGFzIEVbS10gfCBudWxsO1xuICB9XG5cbiAgaGFzRXJyb3JBbmRUb3VjaGVkKGVycm9yQ29kZTogRXh0cmFjdFN0cmluZ3M8RT4sIHBhdGg/OiBDb250cm9sUGF0aCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBoYXNFcnJvckFuZFRvdWNoZWQodGhpcywgZXJyb3JDb2RlLCBwYXRoKTtcbiAgfVxuXG4gIGhhc0Vycm9yQW5kRGlydHkoZXJyb3JDb2RlOiBFeHRyYWN0U3RyaW5nczxFPiwgcGF0aD86IENvbnRyb2xQYXRoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIGhhc0Vycm9yQW5kRGlydHkodGhpcywgZXJyb3JDb2RlLCBwYXRoKTtcbiAgfVxuXG4gIHNldEVuYWJsZShlbmFibGUgPSB0cnVlLCBvcHRzPzogQ29udHJvbEV2ZW50T3B0aW9ucykge1xuICAgIGVuYWJsZUNvbnRyb2wodGhpcywgZW5hYmxlLCBvcHRzKTtcbiAgfVxuXG4gIHNldERpc2FibGUoZGlzYWJsZSA9IHRydWUsIG9wdHM/OiBDb250cm9sRXZlbnRPcHRpb25zKSB7XG4gICAgZGlzYWJsZUNvbnRyb2wodGhpcywgZGlzYWJsZSwgb3B0cyk7XG4gIH1cblxuICByZW1vdmUodmFsdWU6IFQpOiB2b2lkIHtcbiAgICB0aGlzLnJlbW92ZVdoZW4odiA9PiB2LnZhbHVlID09PSB2YWx1ZSk7XG4gIH1cblxuICByZW1vdmVXaGVuKHByZWRpY2F0ZTogKGVsZW1lbnQ6IEFic3RyYWN0Q29udHJvbDxUPikgPT4gYm9vbGVhbik6IHZvaWQge1xuICAgIGNvbnN0IHRvUmVtb3ZlOiBudW1iZXJbXSA9IFtdO1xuICAgIGZvciAobGV0IGkgPSB0aGlzLmxlbmd0aCAtIDE7IGkgPj0gMDsgLS1pKSB7XG4gICAgICBpZiAocHJlZGljYXRlKHRoaXMuYXQoaSkpKSB7XG4gICAgICAgIHRoaXMucmVtb3ZlQXQoaSk7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG4iXX0=
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybUFycmF5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmduZWF0L3JlYWN0aXZlLWZvcm1zL3NyYy9saWIvZm9ybUFycmF5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLElBQUksV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDMUQsT0FBTyxFQUFFLFlBQVksRUFBYyxPQUFPLEVBQWdCLE1BQU0sTUFBTSxDQUFDO0FBQ3ZFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUMzRCxPQUFPLEVBQ0wsZ0JBQWdCLEVBQ2hCLG9CQUFvQixFQUNwQixlQUFlLEVBQ2YsbUJBQW1CLEVBQ25CLG9CQUFvQixFQUNwQixxQkFBcUIsRUFDckIsb0JBQW9CLEVBQ3BCLGNBQWMsRUFDZCxhQUFhLEVBQ2IsZ0JBQWdCLEVBQ2hCLGtCQUFrQixFQUNsQixZQUFZLEVBQ1osc0JBQXNCLEVBQ3ZCLE1BQU0sbUJBQW1CLENBQUM7QUFpQjNCLE9BQU8sRUFBRSxXQUFXLEVBQUUsV0FBVyxFQUFFLFdBQVcsRUFBRSxNQUFNLFNBQVMsQ0FBQztBQUVoRSxNQUFNLE9BQU8sU0FBMkMsU0FBUSxXQUFXO0lBa0N6RSxZQUNTLFFBQXFDLEVBQzVDLGVBQWlDLEVBQ2pDLGNBQStCO1FBRS9CLEtBQUssQ0FBQyxRQUFRLEVBQUUsZUFBZSxFQUFFLGNBQWMsQ0FBQyxDQUFDO1FBSjFDLGFBQVEsR0FBUixRQUFRLENBQTZCO1FBNUJ0QyxpQkFBWSxHQUFHLElBQUksT0FBTyxFQUFXLENBQUM7UUFDdEMsaUJBQVksR0FBRyxJQUFJLE9BQU8sRUFBVyxDQUFDO1FBQ3RDLGtCQUFhLEdBQUcsSUFBSSxPQUFPLEVBQWMsQ0FBQztRQUV6QyxXQUFNLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxZQUFZLEVBQUUsQ0FBQyxJQUFJLENBQUMsb0JBQW9CLEVB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IjpbImltcG9ydCB7IEZvcm1BcnJheSBhcyBOZ0Zvcm1BcnJheSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IGlzT2JzZXJ2YWJsZSwgT2JzZXJ2YWJsZSwgU3ViamVjdCwgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBkaXN0aW5jdFVudGlsQ2hhbmdlZCwgbWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHtcbiAgY29udHJvbERpc2FibGVkJCxcbiAgY29udHJvbERpc2FibGVkV2hpbGUsXG4gIGNvbnRyb2xFbmFibGVkJCxcbiAgY29udHJvbEVuYWJsZWRXaGlsZSxcbiAgY29udHJvbEVycm9yQ2hhbmdlcyQsXG4gIGNvbnRyb2xTdGF0dXNDaGFuZ2VzJCxcbiAgY29udHJvbFZhbHVlQ2hhbmdlcyQsXG4gIGRpc2FibGVDb250cm9sLFxuICBlbmFibGVDb250cm9sLFxuICBoYXNFcnJvckFuZERpcnR5LFxuICBoYXNFcnJvckFuZFRvdWNoZWQsXG4gIG1hcmtBbGxEaXJ0eSxcbiAgbWVyZ2VDb250cm9sVmFsaWRhdG9yc1xufSBmcm9tICcuL2NvbnRyb2wtYWN0aW9ucyc7XG5pbXBvcnQge1xuICBBc3luY1ZhbGlkYXRvcixcbiAgQXN5bmNWYWxpZGF0b3JGbixcbiAgQ29udHJvbEV2ZW50T3B0aW9ucyxcbiAgQ29udHJvbE9wdGlvbnMsXG4gIENvbnRyb2xQYXRoLFxuICBDb250cm9sU3RhdGUsXG4gIEVtaXRFdmVudCxcbiAgRXh0cmFjdFN0cmluZ3MsXG4gIE9ubHlTZWxmLFxuICBWYWxpZGF0b3IsXG4gIFZhbGlkYXRvck9yT3B0cyxcbiAgQ29udHJvbFZhbHVlLFxuICBBYnN0cmFjdENvbnRyb2xPZixcbiAgVmFsaWRhdG9yRm5cbn0gZnJvbSAnLi90eXBlcyc7XG5pbXBvcnQgeyBjb2VyY2VBcnJheSwgbWVyZ2VFcnJvcnMsIHJlbW92ZUVycm9yIH0gZnJvbSAnLi91dGlscyc7XG5cbmV4cG9ydCBjbGFzcyBGb3JtQXJyYXk8VCA9IGFueSwgRSBleHRlbmRzIG9iamVjdCA9IGFueT4gZXh0ZW5kcyBOZ0Zvcm1BcnJheSB7XG4gIHJlYWRvbmx5IHZhbHVlOiBDb250cm9sVmFsdWU8VD5bXTtcbiAgcmVhZG9ubHkgdmFsdWVDaGFuZ2VzOiBPYnNlcnZhYmxlPENvbnRyb2xWYWx1ZTxUPltdPjtcbiAgcmVhZG9ubHkgc3RhdHVzOiBDb250cm9sU3RhdGU7XG4gIHJlYWRvbmx5IHN0YXR1c0NoYW5nZXM6IE9ic2VydmFibGU8Q29udHJvbFN0YXRlPjtcbiAgcmVhZG9ubHkgZXJyb3JzOiBFIHwgbnVsbDtcblxuICBwcml2YXRlIHRvdWNoQ2hhbmdlcyA9IG5ldyBTdWJqZWN0PGJvb2xlYW4+KCk7XG4gIHByaXZhdGUgZGlydHlDaGFuZ2VzID0gbmV3IFN1YmplY3Q8Ym9vbGVhbj4oKTtcbiAgcHJpdmF0ZSBlcnJvcnNTdWJqZWN0ID0gbmV3IFN1YmplY3Q8UGFydGlhbDxFPj4oKTtcblxuICByZWFkb25seSB0b3VjaCQgPSB0aGlzLnRvdWNoQ2hhbmdlcy5hc09ic2VydmFibGUoKS5waXBlKGRpc3RpbmN0VW50aWxDaGFuZ2VkKCkpO1xuICByZWFkb25seSBkaXJ0eSQgPSB0aGlzLmRpcnR5Q2hhbmdlcy5hc09ic2VydmFibGUoKS5waXBlKGRpc3RpbmN0VW50aWxDaGFuZ2VkKCkpO1xuXG4gIHJlYWRvbmx5IHZhbHVlJCA9IGNvbnRyb2xWYWx1ZUNoYW5nZXMkPENvbnRyb2xWYWx1ZTxUPltdPih0aGlzKTtcbiAgcmVhZG9ubHkgZGlzYWJsZWQkID0gY29udHJvbERpc2FibGVkJCh0aGlzKTtcbiAgcmVhZG9ubHkgZW5hYmxlZCQgPSBjb250cm9sRW5hYmxlZCQodGhpcyk7XG4gIHJlYWRvbmx5IHN0YXR1cyQgPSBjb250cm9sU3RhdHVzQ2hhbmdlcyQodGhpcyk7XG4gIHJlYWRvbmx5IGVycm9ycyQgPSBjb250cm9sRXJyb3JDaGFuZ2VzJDxFPih0aGlzLCB0aGlzLmVycm9yc1N1YmplY3QuYXNPYnNlcnZhYmxlKCkpO1xuXG4gIGdldCBhc3luY1ZhbGlkYXRvcigpOiBBc3luY1ZhbGlkYXRvckZuPFRbXT4gfCBudWxsIHtcbiAgICByZXR1cm4gc3VwZXIuYXN5bmNWYWxpZGF0b3I7XG4gIH1cbiAgc2V0IGFzeW5jVmFsaWRhdG9yKGFzeW5jVmFsaWRhdG9yOiBBc3luY1ZhbGlkYXRvckZuPFRbXT4gfCBudWxsKSB7XG4gICAgc3VwZXIuYXN5bmNWYWxpZGF0b3IgPSBhc3luY1ZhbGlkYXRvcjtcbiAgfVxuXG4gIGdldCB2YWxpZGF0b3IoKTogVmFsaWRhdG9yRm48VFtdPiB8IG51bGwge1xuICAgIHJldHVybiBzdXBlci52YWxpZGF0b3I7XG4gIH1cbiAgc2V0IHZhbGlkYXRvcih2YWxpZGF0b3I6IFZhbGlkYXRvckZuPFRbXT4gfCBudWxsKSB7XG4gICAgc3VwZXIudmFsaWRhdG9yID0gdmFsaWRhdG9yO1xuICB9XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHVibGljIGNvbnRyb2xzOiBBcnJheTxBYnN0cmFjdENvbnRyb2xPZjxUPj4sXG4gICAgdmFsaWRhdG9yT3JPcHRzPzogVmFsaWRhdG9yT3JPcHRzLFxuICAgIGFzeW5jVmFsaWRhdG9yPzogQXN5bmNWYWxpZGF0b3JcbiAgKSB7XG4gICAgc3VwZXIoY29udHJvbHMsIHZhbGlkYXRvck9yT3B0cywgYXN5bmNWYWxpZGF0b3IpO1xuICB9XG5cbiAgc2VsZWN0PFI+KG1hcEZuOiAoc3RhdGU6IENvbnRyb2xWYWx1ZTxUPltdKSA9PiBSKTogT2JzZXJ2YWJsZTxSPiB7XG4gICAgcmV0dXJuIHRoaXMudmFsdWUkLnBpcGUobWFwKG1hcEZuKSwgZGlzdGluY3RVbnRpbENoYW5nZWQoKSk7XG4gIH1cblxuICBnZXRSYXdWYWx1ZSgpOiBDb250cm9sVmFsdWU8VD5bXSB7XG4gICAgcmV0dXJuIHN1cGVyLmdldFJhd1ZhbHVlKCk7XG4gIH1cblxuICBhdChpbmRleDogbnVtYmVyKTogQWJzdHJhY3RDb250cm9sT2Y8VD4ge1xuICAgIHJldHVybiBzdXBlci5hdChpbmRleCkgYXMgQWJzdHJhY3RDb250cm9sT2Y8VD47XG4gIH1cblxuICBzZXRWYWx1ZSh2YWx1ZU9yT2JzZXJ2YWJsZTogT2JzZXJ2YWJsZTxDb250cm9sVmFsdWU8VD5bXT4sIG9wdGlvbnM/OiBDb250cm9sRXZlbnRPcHRpb25zKTogU3Vic2NyaXB0aW9uO1xuICBzZXRWYWx1ZSh2YWx1ZU9yT2JzZXJ2YWJsZTogQ29udHJvbFZhbHVlPFQ+W10sIG9wdGlvbnM/OiBDb250cm9sRXZlbnRPcHRpb25zKTogdm9pZDtcbiAgc2V0VmFsdWUoXG4gICAgdmFsdWVPck9ic2VydmFibGU6IENvbnRyb2xWYWx1ZTxUPltdIHwgT2JzZXJ2YWJsZTxDb250cm9sVmFsdWU8VD5bXT4sXG4gICAgb3B0aW9ucz86IENvbnRyb2xFdmVudE9wdGlvbnNcbiAgKTogU3Vic2NyaXB0aW9uIHwgdm9pZCB7XG4gICAgaWYgKGlzT2JzZXJ2YWJsZSh2YWx1ZU9yT2JzZXJ2YWJsZSkpIHtcbiAgICAgIHJldHVybiB2YWx1ZU9yT2JzZXJ2YWJsZS5zdWJzY3JpYmUodmFsdWUgPT4gc3VwZXIuc2V0VmFsdWUodmFsdWUsIG9wdGlvbnMpKTtcbiAgICB9XG5cbiAgICBzdXBlci5zZXRWYWx1ZSh2YWx1ZU9yT2JzZXJ2YWJsZSwgb3B0aW9ucyk7XG4gIH1cblxuICBwYXRjaFZhbHVlKHZhbHVlT3JPYnNlcnZhYmxlOiBPYnNlcnZhYmxlPFBhcnRpYWw8Q29udHJvbFZhbHVlPFQ+PltdPiwgb3B0aW9ucz86IENvbnRyb2xFdmVudE9wdGlvbnMpOiBTdWJzY3JpcHRpb247XG4gIHBhdGNoVmFsdWUodmFsdWVPck9ic2VydmFibGU6IFBhcnRpYWw8Q29udHJvbFZhbHVlPFQ+PltdLCBvcHRpb25zPzogQ29udHJvbEV2ZW50T3B0aW9ucyk6IHZvaWQ7XG4gIHBhdGNoVmFsdWUodmFsdWVPck9ic2VydmFibGU6IGFueSwgb3B0aW9ucz86IENvbnRyb2xFdmVudE9wdGlvbnMpOiBTdWJzY3JpcHRpb24gfCB2b2lkIHtcbiAgICBpZiAoaXNPYnNlcnZhYmxlKHZhbHVlT3JPYnNlcnZhYmxlKSkge1xuICAgICAgcmV0dXJuIHZhbHVlT3JPYnNlcnZhYmxlLnN1YnNjcmliZSgodmFsdWU6IFRbXSkgPT4gc3VwZXIucGF0Y2hWYWx1ZSh2YWx1ZSwgb3B0aW9ucykpO1xuICAgIH1cblxuICAgIHN1cGVyLnBhdGNoVmFsdWUodmFsdWVPck9ic2VydmFibGUgYXMgVFtdLCBvcHRpb25zKTtcbiAgfVxuXG4gIHB1c2goY29udHJvbDogQWJzdHJhY3RDb250cm9sT2Y8VD4pOiB2b2lkIHtcbiAgICByZXR1cm4gc3VwZXIucHVzaChjb250cm9sKTtcbiAgfVxuXG4gIGluc2VydChpbmRleDogbnVtYmVyLCBjb250cm9sOiBBYnN0cmFjdENvbnRyb2xPZjxUPik6IHZvaWQge1xuICAgIHJldHVybiBzdXBlci5pbnNlcnQoaW5kZXgsIGNvbnRyb2wpO1xuICB9XG5cbiAgc2V0Q29udHJvbChpbmRleDogbnVtYmVyLCBjb250cm9sOiBBYnN0cmFjdENvbnRyb2xPZjxUPik6IHZvaWQge1xuICAgIHJldHVybiBzdXBlci5zZXRDb250cm9sKGluZGV4LCBjb250cm9sKTtcbiAgfVxuXG4gIGRpc2FibGVkV2hpbGUob2JzZXJ2YWJsZTogT2JzZXJ2YWJsZTxib29sZWFuPiwgb3B0aW9ucz86IENvbnRyb2xPcHRpb25zKSB7XG4gICAgcmV0dXJuIGNvbnRyb2xEaXNhYmxlZFdoaWxlKHRoaXMsIG9ic2VydmFibGUsIG9wdGlvbnMpO1xuICB9XG5cbiAgZW5hYmxlZFdoaWxlKG9ic2VydmFibGU6IE9ic2VydmFibGU8Ym9vbGVhbj4sIG9wdGlvbnM/OiBDb250cm9sT3B0aW9ucykge1xuICAgIHJldHVybiBjb250cm9sRW5hYmxlZFdoaWxlKHRoaXMsIG9ic2VydmFibGUsIG9wdGlvbnMpO1xuICB9XG5cbiAgbWVyZ2VWYWxpZGF0b3JzKHZhbGlkYXRvcnM6IFZhbGlkYXRvcikge1xuICAgIG1lcmdlQ29udHJvbFZhbGlkYXRvcnModGhpcywgdmFsaWRhdG9ycyk7XG4gIH1cblxuICBtZXJnZUFzeW5jVmFsaWRhdG9ycyh2YWxpZGF0b3JzOiBBc3luY1ZhbGlkYXRvcikge1xuICAgIHRoaXMuc2V0QXN5bmNWYWxpZGF0b3JzKFt0aGlzLmFzeW5jVmFsaWRhdG9yLCAuLi5jb2VyY2VBcnJheSh2YWxpZGF0b3JzKV0pO1xuICAgIHRoaXMudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xuICB9XG5cbiAgbWFya0FzVG91Y2hlZChvcHRzPzogT25seVNlbGYpOiB2b2lkIHtcbiAgICBzdXBlci5tYXJrQXNUb3VjaGVkKG9wdHMpO1xuICAgIHRoaXMudG91Y2hDaGFuZ2VzLm5leHQodHJ1ZSk7XG4gIH1cblxuICBtYXJrQXNVbnRvdWNoZWQob3B0cz86IE9ubHlTZWxmKTogdm9pZCB7XG4gICAgc3VwZXIubWFya0FzVW50b3VjaGVkKG9wdHMpO1xuICAgIHRoaXMudG91Y2hDaGFuZ2VzLm5leHQoZmFsc2UpO1xuICB9XG5cbiAgbWFya0FzUHJpc3RpbmUob3B0cz86IE9ubHlTZWxmKTogdm9pZCB7XG4gICAgc3VwZXIubWFya0FzUHJpc3RpbmUob3B0cyk7XG4gICAgdGhpcy5kaXJ0eUNoYW5nZXMubmV4dChmYWxzZSk7XG4gIH1cblxuICBtYXJrQXNEaXJ0eShvcHRzPzogT25seVNlbGYpOiB2b2lkIHtcbiAgICBzdXBlci5tYXJrQXNEaXJ0eShvcHRzKTtcbiAgICB0aGlzLmRpcnR5Q2hhbmdlcy5uZXh0KHRydWUpO1xuICB9XG5cbiAgbWFya0FsbEFzRGlydHkoKTogdm9pZCB7XG4gICAgbWFya0FsbERpcnR5KHRoaXMpO1xuICB9XG5cbiAgcmVzZXQodmFsdWU/OiBDb250cm9sVmFsdWU8VD5bXSwgb3B0aW9ucz86IENvbnRyb2xFdmVudE9wdGlvbnMpOiB2b2lkIHtcbiAgICBzdXBlci5yZXNldCh2YWx1ZSwgb3B0aW9ucyk7XG4gIH1cblxuICBzZXRWYWxpZGF0b3JzKG5ld1ZhbGlkYXRvcjogVmFsaWRhdG9yKTogdm9pZCB7XG4gICAgc3VwZXIuc2V0VmFsaWRhdG9ycyhuZXdWYWxpZGF0b3IpO1xuICAgIHN1cGVyLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcbiAgfVxuXG4gIHNldEFzeW5jVmFsaWRhdG9ycyhuZXdWYWxpZGF0b3I6IEFzeW5jVmFsaWRhdG9yKTogdm9pZCB7XG4gICAgc3VwZXIuc2V0QXN5bmNWYWxpZGF0b3JzKG5ld1ZhbGlkYXRvcik7XG4gICAgc3VwZXIudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xuICB9XG5cbiAgdmFsaWRhdGVPbihvYnNlcnZhYmxlVmFsaWRhdGlvbjogT2JzZXJ2YWJsZTxudWxsIHwgb2JqZWN0Pikge1xuICAgIHJldHVybiBvYnNlcnZhYmxlVmFsaWRhdGlvbi5zdWJzY3JpYmUobWF5YmVFcnJvciA9PiB7XG4gICAgICB0aGlzLnNldEVycm9ycyhtYXliZUVycm9yKTtcbiAgICB9KTtcbiAgfVxuXG4gIGhhc0Vycm9yKGVycm9yQ29kZTogRXh0cmFjdFN0cmluZ3M8RT4sIHBhdGg/OiBDb250cm9sUGF0aCkge1xuICAgIHJldHVybiBzdXBlci5oYXNFcnJvcihlcnJvckNvZGUsIHBhdGgpO1xuICB9XG5cbiAgc2V0RXJyb3JzKGVycm9yczogUGFydGlhbDxFPiB8IG51bGwsIG9wdHM6IEVtaXRFdmVudCA9IHt9KSB7XG4gICAgdGhpcy5lcnJvcnNTdWJqZWN0Lm5leHQoZXJyb3JzKTtcbiAgICByZXR1cm4gc3VwZXIuc2V0RXJyb3JzKGVycm9ycywgb3B0cyk7XG4gIH1cblxuICBtZXJnZUVycm9ycyhlcnJvcnM6IFBhcnRpYWw8RT4sIG9wdHM6IEVtaXRFdmVudCA9IHt9KTogdm9pZCB7XG4gICAgdGhpcy5zZXRFcnJvcnMobWVyZ2VFcnJvcnM8RT4odGhpcy5lcnJvcnMsIGVycm9ycyksIG9wdHMpO1xuICB9XG5cbiAgcmVtb3ZlRXJyb3Ioa2V5OiBrZXlvZiBFLCBvcHRzOiBFbWl0RXZlbnQgPSB7fSk6IHZvaWQge1xuICAgIHRoaXMuc2V0RXJyb3JzKHJlbW92ZUVycm9yPEU+KHRoaXMuZXJyb3JzLCBrZXkpLCBvcHRzKTtcbiAgfVxuXG4gIGdldEVycm9yPEsgZXh0ZW5kcyBFeHRyYWN0U3RyaW5nczxFPj4oZXJyb3JDb2RlOiBLLCBwYXRoPzogQ29udHJvbFBhdGgpIHtcbiAgICByZXR1cm4gc3VwZXIuZ2V0RXJyb3IoZXJyb3JDb2RlLCBwYXRoKSBhcyBFW0tdIHwgbnVsbDtcbiAgfVxuXG4gIGhhc0Vycm9yQW5kVG91Y2hlZChlcnJvckNvZGU6IEV4dHJhY3RTdHJpbmdzPEU+LCBwYXRoPzogQ29udHJvbFBhdGgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gaGFzRXJyb3JBbmRUb3VjaGVkKHRoaXMsIGVycm9yQ29kZSwgcGF0aCk7XG4gIH1cblxuICBoYXNFcnJvckFuZERpcnR5KGVycm9yQ29kZTogRXh0cmFjdFN0cmluZ3M8RT4sIHBhdGg/OiBDb250cm9sUGF0aCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBoYXNFcnJvckFuZERpcnR5KHRoaXMsIGVycm9yQ29kZSwgcGF0aCk7XG4gIH1cblxuICBzZXRFbmFibGUoZW5hYmxlID0gdHJ1ZSwgb3B0cz86IENvbnRyb2xFdmVudE9wdGlvbnMpIHtcbiAgICBlbmFibGVDb250cm9sKHRoaXMsIGVuYWJsZSwgb3B0cyk7XG4gIH1cblxuICBzZXREaXNhYmxlKGRpc2FibGUgPSB0cnVlLCBvcHRzPzogQ29udHJvbEV2ZW50T3B0aW9ucykge1xuICAgIGRpc2FibGVDb250cm9sKHRoaXMsIGRpc2FibGUsIG9wdHMpO1xuICB9XG5cbiAgcmVtb3ZlKHZhbHVlOiBUKTogdm9pZCB7XG4gICAgdGhpcy5yZW1vdmVXaGVuKHYgPT4gdi52YWx1ZSA9PT0gdmFsdWUpO1xuICB9XG5cbiAgcmVtb3ZlV2hlbihwcmVkaWNhdGU6IChlbGVtZW50OiBBYnN0cmFjdENvbnRyb2xPZjxUPikgPT4gYm9vbGVhbik6IHZvaWQge1xuICAgIGNvbnN0IHRvUmVtb3ZlOiBudW1iZXJbXSA9IFtdO1xuICAgIGZvciAobGV0IGkgPSB0aGlzLmxlbmd0aCAtIDE7IGkgPj0gMDsgLS1pKSB7XG4gICAgICBpZiAocHJlZGljYXRlKHRoaXMuYXQoaSkpKSB7XG4gICAgICAgIHRoaXMucmVtb3ZlQXQoaSk7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG4iXX0=

@@ -30,3 +30,2 @@ import { Injectable } from '@angular/core';

}
// Todo: dan remove the any
return new FormGroup(controls, { asyncValidators, updateOn, validators });

@@ -46,2 +45,2 @@ }

];
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybUJ1aWxkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ25lYXQvcmVhY3RpdmUtZm9ybXMvc3JjL2xpYi9mb3JtQnVpbGRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxXQUFXLElBQUksYUFBYSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDOUQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUN4QyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzVDLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxhQUFhLENBQUM7O0FBR3hDLFNBQVMsd0JBQXdCLENBQy9CLE9BQTJEO0lBRTNELE9BQU8sQ0FDdUIsT0FBUSxDQUFDLGVBQWUsS0FBSyxTQUFTO1FBQ3RDLE9BQVEsQ0FBQyxVQUFVLEtBQUssU0FBUztRQUNqQyxPQUFRLENBQUMsUUFBUSxLQUFLLFNBQVMsQ0FDNUQsQ0FBQztBQUNKLENBQUM7QUFhRCxNQUFNLE9BQU8sV0FBWSxTQUFRLGFBQWE7SUFDNUMsS0FBSyxDQUNILGNBQTJCLEVBQzNCLE9BTVE7UUFFUixNQUFNLFFBQVEsR0FBSSxJQUFZLENBQUMsZUFBZSxDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBRS9ELElBQUksVUFBVSxHQUF1QyxJQUFJLENBQUM7UUFDMUQsSUFBSSxlQUFlLEdBQWlELElBQUksQ0FBQztRQUN6RSxJQUFJLFFBQTJELENBQUM7UUFFaEUsSUFBSSxPQUFPLElBQUksSUFBSSxFQUFFO1lBQ25CLElBQUksd0JBQXdCLENBQUMsT0FBTyxDQUFDLEVBQUU7Z0JBQ3JDLFVBQVUsR0FBRyxPQUFPLENBQUMsVUFBVSxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO2dCQUNwRSxlQUFlLEdBQUcsT0FBTyxDQUFDLGVBQWUsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztnQkFDbkYsUUFBUSxHQUFHLE9BQU8sQ0FBQyxRQUFRLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUM7YUFDcEU7aUJBQU07Z0JBQ0wsMENBQTBDO2dCQUMxQyxVQUFVLEdBQUcsT0FBTyxDQUFDLFdBQVcsQ0FBQyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7Z0JBQ3hFLGVBQWUsR0FBRyxPQUFPLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7YUFDeEY7U0FDRjtRQUVELDJCQUEyQjtRQUMzQixPQUFPLElBQUksU0FBUyxDQUFDLFFBQVEsRUFBRSxFQUFFLGVBQWUsRUFBRSxRQUFRLEVBQUUsVUFBVSxFQUFFLENBQUMsQ0FBQztJQUM1RSxDQUFDO0lBRUQsT0FBTyxDQUNMLFNBQTBCLEVBQzFCLGVBQTZFLEVBQzdFLGNBQTZEO1FBRTdELE9BQU8sSUFBSSxXQUFXLENBQUMsU0FBUyxFQUFFLGVBQWUsRUFBRSxjQUFjLENBQUMsQ0FBQztJQUNyRSxDQUFDO0lBRUQsS0FBSyxDQUNILGNBQW9DLEVBQ3BDLGVBQTZFLEVBQzdFLGNBQTZEO1FBRTdELE1BQU0sUUFBUSxHQUFHLGNBQWMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBRSxJQUFZLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDMUUsT0FBTyxJQUFJLFNBQVMsQ0FBQyxRQUFRLEVBQUUsZUFBZSxFQUFFLGNBQWMsQ0FBQyxDQUFDO0lBQ2xFLENBQUM7Ozs7WUFqREYsVUFBVSxTQUFDLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvcm1CdWlsZGVyIGFzIE5nRm9ybUJ1aWxkZXIgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBGb3JtQXJyYXkgfSBmcm9tICcuL2Zvcm1BcnJheSc7XG5pbXBvcnQgeyBGb3JtQ29udHJvbCB9IGZyb20gJy4vZm9ybUNvbnRyb2wnO1xuaW1wb3J0IHsgRm9ybUdyb3VwIH0gZnJvbSAnLi9mb3JtR3JvdXAnO1xuaW1wb3J0IHsgQWJzdHJhY3RDb250cm9sT3B0aW9ucywgQXN5bmNWYWxpZGF0b3JGbiwgQWJzdHJhY3RDb250cm9sLCBPckJveGVkVmFsdWUsIFZhbGlkYXRvckZuIH0gZnJvbSAnLi90eXBlcyc7XG5cbmZ1bmN0aW9uIGlzQWJzdHJhY3RDb250cm9sT3B0aW9uczxUPihcbiAgb3B0aW9uczogQWJzdHJhY3RDb250cm9sT3B0aW9uczxUPiB8IHsgW2tleTogc3RyaW5nXTogYW55IH1cbik6IG9wdGlvbnMgaXMgQWJzdHJhY3RDb250cm9sT3B0aW9uczxUPiB7XG4gIHJldHVybiAoXG4gICAgKDxBYnN0cmFjdENvbnRyb2xPcHRpb25zPFQ+Pm9wdGlvbnMpLmFzeW5jVmFsaWRhdG9ycyAhPT0gdW5kZWZpbmVkIHx8XG4gICAgKDxBYnN0cmFjdENvbnRyb2xPcHRpb25zPFQ+Pm9wdGlvbnMpLnZhbGlkYXRvcnMgIT09IHVuZGVmaW5lZCB8fFxuICAgICg8QWJzdHJhY3RDb250cm9sT3B0aW9uczxUPj5vcHRpb25zKS51cGRhdGVPbiAhPT0gdW5kZWZpbmVkXG4gICk7XG59XG5cbmV4cG9ydCB0eXBlIEZiQ29udHJvbENvbmZpZzxUID0gYW55PiA9XG4gIHwgQWJzdHJhY3RDb250cm9sPFQ+XG4gIHwgW09yQm94ZWRWYWx1ZTxUPiwgVmFsaWRhdG9yRm4gfCBWYWxpZGF0b3JGbltdIHwgbnVsbCwgQXN5bmNWYWxpZGF0b3JGbiB8IEFzeW5jVmFsaWRhdG9yRm5bXSB8IG51bGxdXG4gIHwgW09yQm94ZWRWYWx1ZTxUPiwgVmFsaWRhdG9yRm4gfCBWYWxpZGF0b3JGbltdIHwgQWJzdHJhY3RDb250cm9sT3B0aW9ucyB8IG51bGxdXG4gIHwgW1QgfCBPckJveGVkVmFsdWU8VD5dXG4gIHwgT3JCb3hlZFZhbHVlPFQ+XG4gIHwgVDtcblxuZXhwb3J0IHR5cGUgRmJHcm91cENvbmZpZzxUID0gYW55PiA9IHsgW2tleSBpbiBrZXlvZiBUXTogRmJDb250cm9sQ29uZmlnPFRba2V5XT4gfTtcblxuQEluamVjdGFibGUoeyBwcm92aWRlZEluOiAncm9vdCcgfSlcbmV4cG9ydCBjbGFzcyBGb3JtQnVpbGRlciBleHRlbmRzIE5nRm9ybUJ1aWxkZXIge1xuICBncm91cDxUIGV4dGVuZHMgb2JqZWN0LCBFIGV4dGVuZHMgb2JqZWN0ID0gYW55LCBHcm91cENvbmZpZyBleHRlbmRzIEZiR3JvdXBDb25maWc8VD4gPSBGYkdyb3VwQ29uZmlnPFQ+PihcbiAgICBjb250cm9sc0NvbmZpZzogR3JvdXBDb25maWcsXG4gICAgb3B0aW9ucz86XG4gICAgICB8IEFic3RyYWN0Q29udHJvbE9wdGlvbnM8VD5cbiAgICAgIHwge1xuICAgICAgICAgIHZhbGlkYXRvcj86IFZhbGlkYXRvckZuIHwgVmFsaWRhdG9yRm5bXTtcbiAgICAgICAgICBhc3luY1ZhbGlkYXRvcj86IEFzeW5jVmFsaWRhdG9yRm4gfCBBc3luY1ZhbGlkYXRvckZuW107XG4gICAgICAgIH1cbiAgICAgIHwgbnVsbFxuICApOiBGb3JtR3JvdXA8VCwgRT4ge1xuICAgIGNvbnN0IGNvbnRyb2xzID0gKHRoaXMgYXMgYW55KS5fcmVkdWNlQ29udHJvbHMoY29udHJvbHNDb25maWcpO1xuXG4gICAgbGV0IHZhbGlkYXRvcnM6IFZhbGlkYXRvckZuIHwgVmFsaWRhdG9yRm5bXSB8IG51bGwgPSBudWxsO1xuICAgIGxldCBhc3luY1ZhbGlkYXRvcnM6IEFzeW5jVmFsaWRhdG9yRm4gfCBBc3luY1ZhbGlkYXRvckZuW10gfCBudWxsID0gbnVsbDtcbiAgICBsZXQgdXBkYXRlT246IEFic3RyYWN0Q29udHJvbE9wdGlvbnM8VD5bJ3VwZGF0ZU9uJ10gfCB1bmRlZmluZWQ7XG5cbiAgICBpZiAob3B0aW9ucyAhPSBudWxsKSB7XG4gICAgICBpZiAoaXNBYnN0cmFjdENvbnRyb2xPcHRpb25zKG9wdGlvbnMpKSB7XG4gICAgICAgIHZhbGlkYXRvcnMgPSBvcHRpb25zLnZhbGlkYXRvcnMgIT0gbnVsbCA/IG9wdGlvbnMudmFsaWRhdG9ycyA6IG51bGw7XG4gICAgICAgIGFzeW5jVmFsaWRhdG9ycyA9IG9wdGlvbnMuYXN5bmNWYWxpZGF0b3JzICE9IG51bGwgPyBvcHRpb25zLmFzeW5jVmFsaWRhdG9ycyA6IG51bGw7XG4gICAgICAgIHVwZGF0ZU9uID0gb3B0aW9ucy51cGRhdGVPbiAhPSBudWxsID8gb3B0aW9ucy51cGRhdGVPbiA6IHVuZGVmaW5lZDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIGBvcHRpb25zYCBhcmUgbGVnYWN5IGZvcm0gZ3JvdXAgb3B0aW9uc1xuICAgICAgICB2YWxpZGF0b3JzID0gb3B0aW9uc1sndmFsaWRhdG9yJ10gIT0gbnVsbCA/IG9wdGlvbnNbJ3ZhbGlkYXRvciddIDogbnVsbDtcbiAgICAgICAgYXN5bmNWYWxpZGF0b3JzID0gb3B0aW9uc1snYXN5bmNWYWxpZGF0b3InXSAhPSBudWxsID8gb3B0aW9uc1snYXN5bmNWYWxpZGF0b3InXSA6IG51bGw7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gVG9kbzogZGFuIHJlbW92ZSB0aGUgYW55XG4gICAgcmV0dXJuIG5ldyBGb3JtR3JvdXAoY29udHJvbHMsIHsgYXN5bmNWYWxpZGF0b3JzLCB1cGRhdGVPbiwgdmFsaWRhdG9ycyB9KTtcbiAgfVxuXG4gIGNvbnRyb2w8VCwgRSBleHRlbmRzIG9iamVjdCA9IGFueT4oXG4gICAgZm9ybVN0YXRlOiBPckJveGVkVmFsdWU8VD4sXG4gICAgdmFsaWRhdG9yT3JPcHRzPzogVmFsaWRhdG9yRm4gfCBWYWxpZGF0b3JGbltdIHwgQWJzdHJhY3RDb250cm9sT3B0aW9ucyB8IG51bGwsXG4gICAgYXN5bmNWYWxpZGF0b3I/OiBBc3luY1ZhbGlkYXRvckZuIHwgQXN5bmNWYWxpZGF0b3JGbltdIHwgbnVsbFxuICApOiBGb3JtQ29udHJvbDxULCBFPiB7XG4gICAgcmV0dXJuIG5ldyBGb3JtQ29udHJvbChmb3JtU3RhdGUsIHZhbGlkYXRvck9yT3B0cywgYXN5bmNWYWxpZGF0b3IpO1xuICB9XG5cbiAgYXJyYXk8VCwgRSBleHRlbmRzIG9iamVjdCA9IGFueT4oXG4gICAgY29udHJvbHNDb25maWc6IEZiQ29udHJvbENvbmZpZzxUPltdLFxuICAgIHZhbGlkYXRvck9yT3B0cz86IFZhbGlkYXRvckZuIHwgVmFsaWRhdG9yRm5bXSB8IEFic3RyYWN0Q29udHJvbE9wdGlvbnMgfCBudWxsLFxuICAgIGFzeW5jVmFsaWRhdG9yPzogQXN5bmNWYWxpZGF0b3JGbiB8IEFzeW5jVmFsaWRhdG9yRm5bXSB8IG51bGxcbiAgKTogRm9ybUFycmF5PFQsIEU+IHtcbiAgICBjb25zdCBjb250cm9scyA9IGNvbnRyb2xzQ29uZmlnLm1hcChjID0+ICh0aGlzIGFzIGFueSkuX2NyZWF0ZUNvbnRyb2woYykpO1xuICAgIHJldHVybiBuZXcgRm9ybUFycmF5KGNvbnRyb2xzLCB2YWxpZGF0b3JPck9wdHMsIGFzeW5jVmFsaWRhdG9yKTtcbiAgfVxufVxuIl19
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybUJ1aWxkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ25lYXQvcmVhY3RpdmUtZm9ybXMvc3JjL2xpYi9mb3JtQnVpbGRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxXQUFXLElBQUksYUFBYSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDOUQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUN4QyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzVDLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxhQUFhLENBQUM7O0FBVXhDLFNBQVMsd0JBQXdCLENBQy9CLE9BQTJEO0lBRTNELE9BQU8sQ0FDdUIsT0FBUSxDQUFDLGVBQWUsS0FBSyxTQUFTO1FBQ3RDLE9BQVEsQ0FBQyxVQUFVLEtBQUssU0FBUztRQUNqQyxPQUFRLENBQUMsUUFBUSxLQUFLLFNBQVMsQ0FDNUQsQ0FBQztBQUNKLENBQUM7QUFhRCxNQUFNLE9BQU8sV0FBWSxTQUFRLGFBQWE7SUFDNUMsS0FBSyxDQUNILGNBQTJCLEVBQzNCLE9BTVE7UUFFUixNQUFNLFFBQVEsR0FBSSxJQUFZLENBQUMsZUFBZSxDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBRS9ELElBQUksVUFBVSxHQUF1QyxJQUFJLENBQUM7UUFDMUQsSUFBSSxlQUFlLEdBQWlELElBQUksQ0FBQztRQUN6RSxJQUFJLFFBQTJELENBQUM7UUFFaEUsSUFBSSxPQUFPLElBQUksSUFBSSxFQUFFO1lBQ25CLElBQUksd0JBQXdCLENBQUMsT0FBTyxDQUFDLEVBQUU7Z0JBQ3JDLFVBQVUsR0FBRyxPQUFPLENBQUMsVUFBVSxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO2dCQUNwRSxlQUFlLEdBQUcsT0FBTyxDQUFDLGVBQWUsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztnQkFDbkYsUUFBUSxHQUFHLE9BQU8sQ0FBQyxRQUFRLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUM7YUFDcEU7aUJBQU07Z0JBQ0wsMENBQTBDO2dCQUMxQyxVQUFVLEdBQUcsT0FBTyxDQUFDLFdBQVcsQ0FBQyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7Z0JBQ3hFLGVBQWUsR0FBRyxPQUFPLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7YUFDeEY7U0FDRjtRQUVELE9BQU8sSUFBSSxTQUFTLENBQUMsUUFBUSxFQUFFLEVBQUUsZUFBZSxFQUFFLFFBQVEsRUFBRSxVQUFVLEVBQUUsQ0FBQyxDQUFDO0lBQzVFLENBQUM7SUFFRCxPQUFPLENBQ0wsU0FBMEIsRUFDMUIsZUFBNkUsRUFDN0UsY0FBNkQ7UUFFN0QsT0FBTyxJQUFJLFdBQVcsQ0FBQyxTQUFTLEVBQUUsZUFBZSxFQUFFLGNBQWMsQ0FBQyxDQUFDO0lBQ3JFLENBQUM7SUFFRCxLQUFLLENBQ0gsY0FBb0MsRUFDcEMsZUFBNkUsRUFDN0UsY0FBNkQ7UUFFN0QsTUFBTSxRQUFRLEdBQUcsY0FBYyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFFLElBQVksQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUMxRSxPQUFPLElBQUksU0FBUyxDQUFDLFFBQVEsRUFBRSxlQUFlLEVBQUUsY0FBYyxDQUFDLENBQUM7SUFDbEUsQ0FBQzs7OztZQWhERixVQUFVLFNBQUMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9ybUJ1aWxkZXIgYXMgTmdGb3JtQnVpbGRlciB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IEZvcm1BcnJheSB9IGZyb20gJy4vZm9ybUFycmF5JztcbmltcG9ydCB7IEZvcm1Db250cm9sIH0gZnJvbSAnLi9mb3JtQ29udHJvbCc7XG5pbXBvcnQgeyBGb3JtR3JvdXAgfSBmcm9tICcuL2Zvcm1Hcm91cCc7XG5pbXBvcnQge1xuICBBYnN0cmFjdENvbnRyb2xPcHRpb25zLFxuICBBc3luY1ZhbGlkYXRvckZuLFxuICBBYnN0cmFjdENvbnRyb2wsXG4gIE9yQm94ZWRWYWx1ZSxcbiAgVmFsaWRhdG9yRm4sXG4gIENvbnRyb2xzT2Zcbn0gZnJvbSAnLi90eXBlcyc7XG5cbmZ1bmN0aW9uIGlzQWJzdHJhY3RDb250cm9sT3B0aW9uczxUPihcbiAgb3B0aW9uczogQWJzdHJhY3RDb250cm9sT3B0aW9uczxUPiB8IHsgW2tleTogc3RyaW5nXTogYW55IH1cbik6IG9wdGlvbnMgaXMgQWJzdHJhY3RDb250cm9sT3B0aW9uczxUPiB7XG4gIHJldHVybiAoXG4gICAgKDxBYnN0cmFjdENvbnRyb2xPcHRpb25zPFQ+Pm9wdGlvbnMpLmFzeW5jVmFsaWRhdG9ycyAhPT0gdW5kZWZpbmVkIHx8XG4gICAgKDxBYnN0cmFjdENvbnRyb2xPcHRpb25zPFQ+Pm9wdGlvbnMpLnZhbGlkYXRvcnMgIT09IHVuZGVmaW5lZCB8fFxuICAgICg8QWJzdHJhY3RDb250cm9sT3B0aW9uczxUPj5vcHRpb25zKS51cGRhdGVPbiAhPT0gdW5kZWZpbmVkXG4gICk7XG59XG5cbmV4cG9ydCB0eXBlIEZiQ29udHJvbENvbmZpZzxUID0gYW55PiA9XG4gIHwgQWJzdHJhY3RDb250cm9sPFQ+XG4gIHwgW09yQm94ZWRWYWx1ZTxUPiwgVmFsaWRhdG9yRm4gfCBWYWxpZGF0b3JGbltdIHwgbnVsbCwgQXN5bmNWYWxpZGF0b3JGbiB8IEFzeW5jVmFsaWRhdG9yRm5bXSB8IG51bGxdXG4gIHwgW09yQm94ZWRWYWx1ZTxUPiwgVmFsaWRhdG9yRm4gfCBWYWxpZGF0b3JGbltdIHwgQWJzdHJhY3RDb250cm9sT3B0aW9ucyB8IG51bGxdXG4gIHwgW1QgfCBPckJveGVkVmFsdWU8VD5dXG4gIHwgT3JCb3hlZFZhbHVlPFQ+XG4gIHwgVDtcblxuZXhwb3J0IHR5cGUgRmJHcm91cENvbmZpZzxUID0gYW55PiA9IHsgW2tleSBpbiBrZXlvZiBUXTogRmJDb250cm9sQ29uZmlnPFRba2V5XT4gfTtcblxuQEluamVjdGFibGUoeyBwcm92aWRlZEluOiAncm9vdCcgfSlcbmV4cG9ydCBjbGFzcyBGb3JtQnVpbGRlciBleHRlbmRzIE5nRm9ybUJ1aWxkZXIge1xuICBncm91cDxUIGV4dGVuZHMgb2JqZWN0LCBFIGV4dGVuZHMgb2JqZWN0ID0gYW55LCBHcm91cENvbmZpZyBleHRlbmRzIEZiR3JvdXBDb25maWc8VD4gPSBGYkdyb3VwQ29uZmlnPFQ+PihcbiAgICBjb250cm9sc0NvbmZpZzogR3JvdXBDb25maWcsXG4gICAgb3B0aW9ucz86XG4gICAgICB8IEFic3RyYWN0Q29udHJvbE9wdGlvbnM8VD5cbiAgICAgIHwge1xuICAgICAgICAgIHZhbGlkYXRvcj86IFZhbGlkYXRvckZuIHwgVmFsaWRhdG9yRm5bXTtcbiAgICAgICAgICBhc3luY1ZhbGlkYXRvcj86IEFzeW5jVmFsaWRhdG9yRm4gfCBBc3luY1ZhbGlkYXRvckZuW107XG4gICAgICAgIH1cbiAgICAgIHwgbnVsbFxuICApOiBGb3JtR3JvdXA8VCwgRT4ge1xuICAgIGNvbnN0IGNvbnRyb2xzID0gKHRoaXMgYXMgYW55KS5fcmVkdWNlQ29udHJvbHMoY29udHJvbHNDb25maWcpO1xuXG4gICAgbGV0IHZhbGlkYXRvcnM6IFZhbGlkYXRvckZuIHwgVmFsaWRhdG9yRm5bXSB8IG51bGwgPSBudWxsO1xuICAgIGxldCBhc3luY1ZhbGlkYXRvcnM6IEFzeW5jVmFsaWRhdG9yRm4gfCBBc3luY1ZhbGlkYXRvckZuW10gfCBudWxsID0gbnVsbDtcbiAgICBsZXQgdXBkYXRlT246IEFic3RyYWN0Q29udHJvbE9wdGlvbnM8VD5bJ3VwZGF0ZU9uJ10gfCB1bmRlZmluZWQ7XG5cbiAgICBpZiAob3B0aW9ucyAhPSBudWxsKSB7XG4gICAgICBpZiAoaXNBYnN0cmFjdENvbnRyb2xPcHRpb25zKG9wdGlvbnMpKSB7XG4gICAgICAgIHZhbGlkYXRvcnMgPSBvcHRpb25zLnZhbGlkYXRvcnMgIT0gbnVsbCA/IG9wdGlvbnMudmFsaWRhdG9ycyA6IG51bGw7XG4gICAgICAgIGFzeW5jVmFsaWRhdG9ycyA9IG9wdGlvbnMuYXN5bmNWYWxpZGF0b3JzICE9IG51bGwgPyBvcHRpb25zLmFzeW5jVmFsaWRhdG9ycyA6IG51bGw7XG4gICAgICAgIHVwZGF0ZU9uID0gb3B0aW9ucy51cGRhdGVPbiAhPSBudWxsID8gb3B0aW9ucy51cGRhdGVPbiA6IHVuZGVmaW5lZDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIGBvcHRpb25zYCBhcmUgbGVnYWN5IGZvcm0gZ3JvdXAgb3B0aW9uc1xuICAgICAgICB2YWxpZGF0b3JzID0gb3B0aW9uc1sndmFsaWRhdG9yJ10gIT0gbnVsbCA/IG9wdGlvbnNbJ3ZhbGlkYXRvciddIDogbnVsbDtcbiAgICAgICAgYXN5bmNWYWxpZGF0b3JzID0gb3B0aW9uc1snYXN5bmNWYWxpZGF0b3InXSAhPSBudWxsID8gb3B0aW9uc1snYXN5bmNWYWxpZGF0b3InXSA6IG51bGw7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIG5ldyBGb3JtR3JvdXAoY29udHJvbHMsIHsgYXN5bmNWYWxpZGF0b3JzLCB1cGRhdGVPbiwgdmFsaWRhdG9ycyB9KTtcbiAgfVxuXG4gIGNvbnRyb2w8VCwgRSBleHRlbmRzIG9iamVjdCA9IGFueT4oXG4gICAgZm9ybVN0YXRlOiBPckJveGVkVmFsdWU8VD4sXG4gICAgdmFsaWRhdG9yT3JPcHRzPzogVmFsaWRhdG9yRm4gfCBWYWxpZGF0b3JGbltdIHwgQWJzdHJhY3RDb250cm9sT3B0aW9ucyB8IG51bGwsXG4gICAgYXN5bmNWYWxpZGF0b3I/OiBBc3luY1ZhbGlkYXRvckZuIHwgQXN5bmNWYWxpZGF0b3JGbltdIHwgbnVsbFxuICApOiBGb3JtQ29udHJvbDxULCBFPiB7XG4gICAgcmV0dXJuIG5ldyBGb3JtQ29udHJvbChmb3JtU3RhdGUsIHZhbGlkYXRvck9yT3B0cywgYXN5bmNWYWxpZGF0b3IpO1xuICB9XG5cbiAgYXJyYXk8VCwgRSBleHRlbmRzIG9iamVjdCA9IGFueT4oXG4gICAgY29udHJvbHNDb25maWc6IEZiQ29udHJvbENvbmZpZzxUPltdLFxuICAgIHZhbGlkYXRvck9yT3B0cz86IFZhbGlkYXRvckZuIHwgVmFsaWRhdG9yRm5bXSB8IEFic3RyYWN0Q29udHJvbE9wdGlvbnMgfCBudWxsLFxuICAgIGFzeW5jVmFsaWRhdG9yPzogQXN5bmNWYWxpZGF0b3JGbiB8IEFzeW5jVmFsaWRhdG9yRm5bXSB8IG51bGxcbiAgKTogRm9ybUFycmF5PFQsIEU+IHtcbiAgICBjb25zdCBjb250cm9scyA9IGNvbnRyb2xzQ29uZmlnLm1hcChjID0+ICh0aGlzIGFzIGFueSkuX2NyZWF0ZUNvbnRyb2woYykpO1xuICAgIHJldHVybiBuZXcgRm9ybUFycmF5KGNvbnRyb2xzLCB2YWxpZGF0b3JPck9wdHMsIGFzeW5jVmFsaWRhdG9yKTtcbiAgfVxufVxuIl19

@@ -0,0 +0,0 @@ import { FormControl as NgFormControl } from '@angular/forms';

@@ -44,3 +44,3 @@ import { FormGroup as NgFormGroup } from '@angular/forms';

getControl(...names) {
return this.get(names.join('.'));
return this.get(names);
}

@@ -161,2 +161,2 @@ addControl(name, control) {

}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybUdyb3VwLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmduZWF0L3JlYWN0aXZlLWZvcm1zL3NyYy9saWIvZm9ybUdyb3VwLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLElBQUksV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDMUQsT0FBTyxFQUFFLFlBQVksRUFBYyxPQUFPLEVBQWdCLE1BQU0sTUFBTSxDQUFDO0FBQ3ZFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzVFLE9BQU8sRUFDTCxnQkFBZ0IsRUFDaEIsb0JBQW9CLEVBQ3BCLGVBQWUsRUFDZixtQkFBbUIsRUFDbkIsb0JBQW9CLEVBQ3BCLHFCQUFxQixFQUNyQixvQkFBb0IsRUFDcEIsY0FBYyxFQUNkLGFBQWEsRUFDYixnQkFBZ0IsRUFDaEIsZ0JBQWdCLEVBQ2hCLGtCQUFrQixFQUNsQixZQUFZLEVBQ1osc0JBQXNCLEVBQ3RCLGFBQWEsRUFDYixtQkFBbUIsRUFDbkIsaUJBQWlCLEVBQ2xCLE1BQU0sbUJBQW1CLENBQUM7QUFDM0IsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFxQjVELE9BQU8sRUFBRSxXQUFXLEVBQUUsV0FBVyxFQUFFLFdBQVcsRUFBRSxrQkFBa0IsRUFBRSxNQUFNLFNBQVMsQ0FBQztBQUVwRixNQUFNLE9BQU8sU0FBdUQsU0FBUSxXQUFXO0lBa0NyRixZQUNTLFFBQXdELEVBQy9ELGVBQWlDLEVBQ2pDLGNBQStCO1FBRS9CLEtBQUssQ0FBQyxRQUFRLEVBQUUsZUFBZSxFQUFFLGNBQWMsQ0FBQyxDQUFDO1FBSjFDLGFBQVEsR0FBUixRQUFRLENBQWdEO1FBNUJ6RCxpQkFBWSxHQUFHLElBQUksT0FBTyxFQUFXLENBQUM7UUFDdEMsaUJBQVksR0FBRyxJQUFJLE9BQU8sRUFBVyxDQUFDO1FBQ3RDLGtCQUFhLEdBQUcsSUFBSSxPQUFPLEVBQWMsQ0FBQztRQUVsRCxXQUFNLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxZQUFZLEVBQUUsQ0FBQyxJQUFJLENBQUMsb0JBQW9CLEVBQUUsQ0FBQyxDQUFDO1FBQ3ZFLFdBQU0sR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLFlBQVksRUFBRSxDQUFDLElBQUksQ0FBQyxvQkFBb0IsRUFBRSxDQUFDLENBQUM7UUFFOUQsV0FBTSxHQUFHLG9CQUFvQixDQUFJLElBQUksQ0FBQyxDQUFDO1FBQ3ZDLGNBQVMsR0FBRyxnQkFBZ0IsQ0FBSSxJQUFJLENBQUMsQ0FBQztRQUN0QyxhQUFRLEdBQUcsZUFBZSxDQUFJLElBQUksQ0FBQyxDQUFDO1FBQ3BDLFlBQU8sR0FBRyxxQkFBcUIsQ0FBSSxJQUFJLENBQUMsQ0FBQztRQUN6QyxZQUFPLEdBQUcsb0JBQW9CLENBQUksSUFBSSxFQUFFLElBQUksQ0FBQyxhQUFhLENBQUMsWUFBWSxFQUFFLENBQUMsQ0FBQztJQXNCcEYsQ0FBQztJQXBCRCxJQUFJLGNBQWM7UUFDaEIsT0FBTyxLQUFLLENBQUMsY0FBYyxDQUFDO0lBQzlCLENBQUM7SUFDRCxJQUFJLGNBQWMsQ0FBQyxjQUEwQztRQUMzRCxLQUFLLENBQUMsY0FBYyxHQUFHLGNBQWMsQ0FBQztJQUN4QyxDQUFDO0lBRUQsSUFBSSxTQUFTO1FBQ1gsT0FBTyxLQUFLLENBQUMsU0FBUyxDQUFDO0lBQ3pCLENBQUM7SUFDRCxJQUFJLFNBQVMsQ0FBQyxTQUFnQztRQUM1QyxLQUFLLENBQUMsU0FBUyxHQUFHLFNBQVMsQ0FBQztJQUM5QixDQUFDO0lBVUQsTUFBTSxDQUFJLEtBQXNCO1FBQzlCLE9BQU8sbUJBQW1CLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQzFDLENBQUM7SUFFRCxXQUFXO1FBQ1QsT0FBTyxLQUFLLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDN0IsQ0FBQztJQVFELEdBQUcsQ0FBQyxJQUFTO1FBQ1gsT0FBTyxLQUFLLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3pCLENBQUM7SUFlRCxVQUFVLENBQUMsR0FBRyxLQUFVO1FBQ3RCLE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDbkMsQ0FBQztJQUVELFVBQVUsQ0FBOEIsSUFBTyxFQUFFLE9BQThCO1FBQzdFLEtBQUssQ0FBQyxVQUFVLENBQUMsSUFBSSxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQ2xDLENBQUM7SUFFRCxhQUFhLENBQUMsSUFBdUI7UUFDbkMsS0FBSyxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUM1QixDQUFDO0lBRUQsUUFBUSxDQUFDLFdBQThCO1FBQ3JDLE9BQU8sS0FBSyxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUNyQyxDQUFDO0lBRUQsVUFBVSxDQUE4QixJQUFPLEVBQUUsT0FBOEI7UUFDN0UsS0FBSyxDQUFDLFVBQVUsQ0FBQyxJQUFJLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDbEMsQ0FBQztJQUlELFFBQVEsQ0FBQyxpQkFBc0IsRUFBRSxPQUE2QjtRQUM1RCxJQUFJLFlBQVksQ0FBQyxpQkFBaUIsQ0FBQyxFQUFFO1lBQ25DLE9BQU8saUJBQWlCLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxLQUFLLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQztTQUM3RTtRQUVELEtBQUssQ0FBQyxRQUFRLENBQUMsaUJBQWlCLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDN0MsQ0FBQztJQUlELFVBQVUsQ0FBQyxpQkFBc0IsRUFBRSxPQUE2QjtRQUM5RCxJQUFJLFlBQVksQ0FBQyxpQkFBaUIsQ0FBQyxFQUFFO1lBQ25DLE9BQU8saUJBQWlCLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxLQUFLLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQztTQUMvRTtRQUVELEtBQUssQ0FBQyxVQUFVLENBQUMsaUJBQWlCLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDL0MsQ0FBQztJQUVELGFBQWEsQ0FBQyxVQUErQixFQUFFLE9BQXdCO1FBQ3JFLE9BQU8sb0JBQW9CLENBQUMsSUFBSSxFQUFFLFVBQVUsRUFBRSxPQUFPLENBQUMsQ0FBQztJQUN6RCxDQUFDO0lBRUQsWUFBWSxDQUFDLFVBQStCLEVBQUUsT0FBd0I7UUFDcEUsT0FBTyxtQkFBbUIsQ0FBQyxJQUFJLEVBQUUsVUFBVSxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQ3hELENBQUM7SUFFRCxlQUFlLENBQUMsVUFBcUI7UUFDbkMsc0JBQXNCLENBQUMsSUFBSSxFQUFFLFVBQVUsQ0FBQyxDQUFDO0lBQzNDLENBQUM7SUFFRCxvQkFBb0IsQ0FBQyxVQUEwQjtRQUM3QyxJQUFJLENBQUMsa0JBQWtCLENBQUMsQ0FBQyxJQUFJLENBQUMsY0FBYyxFQUFFLEdBQUcsV0FBVyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUMzRSxJQUFJLENBQUMsc0JBQXNCLEVBQUUsQ0FBQztJQUNoQyxDQUFDO0lBRUQsYUFBYSxDQUFDLElBQWU7UUFDM0IsS0FBSyxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUMxQixJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUMvQixDQUFDO0lBRUQsZUFBZSxDQUFDLElBQWU7UUFDN0IsS0FBSyxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUM1QixJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNoQyxDQUFDO0lBRUQsY0FBYyxDQUFDLElBQWU7UUFDNUIsS0FBSyxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUMzQixJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNoQyxDQUFDO0lBRUQsV0FBVyxDQUFDLElBQWU7UUFDekIsS0FBSyxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN4QixJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUMvQixDQUFDO0lBRUQsY0FBYztRQUNaLFlBQVksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNyQixDQUFDO0lBRUQsS0FBSyxDQUFDLFNBQXNCLEVBQUUsT0FBNkI7UUFDekQsS0FBSyxDQUFDLEtBQUssQ0FBQyxTQUFTLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDbEMsQ0FBQztJQUVELGFBQWEsQ0FBQyxZQUF1QjtRQUNuQyxLQUFLLENBQUMsYUFBYSxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBQ2xDLEtBQUssQ0FBQyxzQkFBc0IsRUFBRSxDQUFDO0lBQ2pDLENBQUM7SUFFRCxrQkFBa0IsQ0FBQyxZQUE0QjtRQUM3QyxLQUFLLENBQUMsa0JBQWtCLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDdkMsS0FBSyxDQUFDLHNCQUFzQixFQUFFLENBQUM7SUFDakMsQ0FBQztJQUVELFVBQVUsQ0FBQyxvQkFBK0M7UUFDeEQsT0FBTyxpQkFBaUIsQ0FBQyxJQUFJLEVBQUUsb0JBQW9CLENBQUMsQ0FBQztJQUN2RCxDQUFDO0lBU0QsUUFBUSxDQUFDLFNBQTRCLEVBQUUsSUFBVTtRQUMvQyxPQUFPLEtBQUssQ0FBQyxRQUFRLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQ3pDLENBQUM7SUFFRCxTQUFTLENBQUMsTUFBeUIsRUFBRSxPQUFrQixFQUFFO1FBQ3ZELElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ2hDLE9BQU8sS0FBSyxDQUFDLFNBQVMsQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDdkMsQ0FBQztJQUVELFdBQVcsQ0FBQyxNQUFrQixFQUFFLE9BQWtCLEVBQUU7UUFDbEQsSUFBSSxDQUFDLFNBQVMsQ0FBQyxXQUFXLENBQUksSUFBSSxDQUFDLE1BQU0sRUFBRSxNQUFNLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQztJQUM1RCxDQUFDO0lBRUQsV0FBVyxDQUFDLEdBQVksRUFBRSxPQUFrQixFQUFFO1FBQzVDLElBQUksQ0FBQyxTQUFTLENBQUMsV0FBVyxDQUFJLElBQUksQ0FBQyxNQUFNLEVBQUUsR0FBRyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDekQsQ0FBQztJQVNELFFBQVEsQ0FBb0IsU0FBWSxFQUFFLElBQVU7UUFDbEQsT0FBTyxLQUFLLENBQUMsUUFBUSxDQUFDLFNBQWdCLEVBQUUsSUFBSSxDQUFnQixDQUFDO0lBQy9ELENBQUM7SUFvQkQsa0JBQWtCLENBQUMsS0FBVSxFQUFFLEdBQUcsSUFBUztRQUN6QyxPQUFPLGtCQUFrQixDQUFDLElBQUksRUFBRSxLQUFLLEVBQUUsR0FBRyxJQUFJLENBQUMsQ0FBQztJQUNsRCxDQUFDO0lBb0JELGdCQUFnQixDQUFDLEtBQVUsRUFBRSxHQUFHLElBQVM7UUFDdkMsT0FBTyxnQkFBZ0IsQ0FBQyxJQUFJLEVBQUUsS0FBSyxFQUFFLEdBQUcsSUFBSSxDQUFDLENBQUM7SUFDaEQsQ0FBQztJQUVELFNBQVMsQ0FBQyxNQUFNLEdBQUcsSUFBSSxFQUFFLElBQTBCO1FBQ2pELGFBQWEsQ0FBQyxJQUFJLEVBQUUsTUFBTSxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQ3BDLENBQUM7SUFFRCxVQUFVLENBQUMsT0FBTyxHQUFHLElBQUksRUFBRSxJQUEwQjtRQUNuRCxjQUFjLENBQUMsSUFBSSxFQUFFLE9BQU8sRUFBRSxJQUFJLENBQUMsQ0FBQztJQUN0QyxDQUFDO0lBRUQsT0FBTyxDQUFDLEdBQVcsRUFBRSxFQUFFLFlBQVksRUFBRSxPQUFPLEVBQUUsaUJBQWlCLEVBQXFCO1FBQ2xGLE1BQU0sY0FBYyxHQUFHLE9BQU8sSUFBSSxJQUFJLG1CQUFtQixFQUFFLENBQUM7UUFDNUQsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRSxjQUFjLEVBQUUsaUJBQWlCLENBQUMsQ0FBQyxJQUFJLENBQzlELFNBQVMsQ0FBQyxHQUFHLEVBQUUsQ0FDYixhQUFhLENBQUMsSUFBSSxFQUFFLEdBQUcsRUFBRTtZQUN2QixZQUFZLEVBQUUsWUFBWSxJQUFJLEdBQUc7WUFDakMsT0FBTyxFQUFFLGNBQWM7U0FDeEIsQ0FBQyxDQUNILENBQ0YsQ0FBQztJQUNKLENBQUM7SUFFTyxPQUFPLENBQUMsR0FBVyxFQUFFLE9BQTBCLEVBQUUsaUJBQXVDO1FBQzlGLE9BQU8sa0JBQWtCLENBQUksT0FBTyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FDdEQsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUNQLEdBQUcsQ0FBQyxLQUFLLENBQUMsRUFBRTtZQUNWLElBQUksQ0FBQyxLQUFLO2dCQUFFLE9BQU87WUFDbkIsZ0JBQWdCLENBQUMsSUFBSSxFQUFFLEtBQUssRUFBRSxpQkFBaUIsQ0FBQyxDQUFDO1lBQ2pELElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxFQUFFLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUM7UUFDL0MsQ0FBQyxDQUFDLENBQ0gsQ0FBQztJQUNKLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEZvcm1Hcm91cCBhcyBOZ0Zvcm1Hcm91cCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IGlzT2JzZXJ2YWJsZSwgT2JzZXJ2YWJsZSwgU3ViamVjdCwgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBkaXN0aW5jdFVudGlsQ2hhbmdlZCwgc3dpdGNoTWFwLCB0YWtlLCB0YXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQge1xuICBjb250cm9sRGlzYWJsZWQkLFxuICBjb250cm9sRGlzYWJsZWRXaGlsZSxcbiAgY29udHJvbEVuYWJsZWQkLFxuICBjb250cm9sRW5hYmxlZFdoaWxlLFxuICBjb250cm9sRXJyb3JDaGFuZ2VzJCxcbiAgY29udHJvbFN0YXR1c0NoYW5nZXMkLFxuICBjb250cm9sVmFsdWVDaGFuZ2VzJCxcbiAgZGlzYWJsZUNvbnRyb2wsXG4gIGVuYWJsZUNvbnRyb2wsXG4gIGhhbmRsZUZvcm1BcnJheXMsXG4gIGhhc0Vycm9yQW5kRGlydHksXG4gIGhhc0Vycm9yQW5kVG91Y2hlZCxcbiAgbWFya0FsbERpcnR5LFxuICBtZXJnZUNvbnRyb2xWYWxpZGF0b3JzLFxuICBwZXJzaXN0VmFsdWUkLFxuICBzZWxlY3RDb250cm9sVmFsdWUkLFxuICB2YWxpZGF0ZUNvbnRyb2xPblxufSBmcm9tICcuL2NvbnRyb2wtYWN0aW9ucyc7XG5pbXBvcnQgeyBMb2NhbFN0b3JhZ2VNYW5hZ2VyIH0gZnJvbSAnLi9sb2NhbFN0b3JhZ2VNYW5hZ2VyJztcbmltcG9ydCB7IFBlcnNpc3RNYW5hZ2VyIH0gZnJvbSAnLi9wZXJzaXN0TWFuYWdlcic7XG5pbXBvcnQge1xuICBBYnN0cmFjdENvbnRyb2wsXG4gIEFzeW5jVmFsaWRhdG9yLFxuICBBc3luY1ZhbGlkYXRvckZuLFxuICBDb250cm9sRXZlbnRPcHRpb25zLFxuICBDb250cm9sRmFjdG9yeU1hcCxcbiAgQ29udHJvbE9wdGlvbnMsXG4gIENvbnRyb2xTdGF0ZSxcbiAgRW1pdEV2ZW50LFxuICBFeHRyYWN0QWJzdHJhY3RDb250cm9sLFxuICBFeHRyYWN0U3RyaW5ncyxcbiAgS2V5VmFsdWVDb250cm9scyxcbiAgT2JqLFxuICBPbmx5U2VsZixcbiAgUGVyc2lzdE9wdGlvbnMsXG4gIFZhbGlkYXRvcixcbiAgVmFsaWRhdG9yRm4sXG4gIFZhbGlkYXRvck9yT3B0c1xufSBmcm9tICcuL3R5cGVzJztcbmltcG9ydCB7IGNvZXJjZUFycmF5LCBtZXJnZUVycm9ycywgcmVtb3ZlRXJyb3IsIHdyYXBJbnRvT2JzZXJ2YWJsZSB9IGZyb20gJy4vdXRpbHMnO1xuXG5leHBvcnQgY2xhc3MgRm9ybUdyb3VwPFQgZXh0ZW5kcyBPYmogPSBhbnksIEUgZXh0ZW5kcyBvYmplY3QgPSBhbnk+IGV4dGVuZHMgTmdGb3JtR3JvdXAge1xuICByZWFkb25seSB2YWx1ZTogVDtcbiAgcmVhZG9ubHkgZXJyb3JzOiBFIHwgbnVsbDtcbiAgcmVhZG9ubHkgdmFsdWVDaGFuZ2VzOiBPYnNlcnZhYmxlPFQ+O1xuICByZWFkb25seSBzdGF0dXM6IENvbnRyb2xTdGF0ZTtcbiAgcmVhZG9ubHkgc3RhdHVzQ2hhbmdlczogT2JzZXJ2YWJsZTxDb250cm9sU3RhdGU+O1xuXG4gIHByaXZhdGUgdG91Y2hDaGFuZ2VzID0gbmV3IFN1YmplY3Q8Ym9vbGVhbj4oKTtcbiAgcHJpdmF0ZSBkaXJ0eUNoYW5nZXMgPSBuZXcgU3ViamVjdDxib29sZWFuPigpO1xuICBwcml2YXRlIGVycm9yc1N1YmplY3QgPSBuZXcgU3ViamVjdDxQYXJ0aWFsPEU+PigpO1xuXG4gIHRvdWNoJCA9IHRoaXMudG91Y2hDaGFuZ2VzLmFzT2JzZXJ2YWJsZSgpLnBpcGUoZGlzdGluY3RVbnRpbENoYW5nZWQoKSk7XG4gIGRpcnR5JCA9IHRoaXMuZGlydHlDaGFuZ2VzLmFzT2JzZXJ2YWJsZSgpLnBpcGUoZGlzdGluY3RVbnRpbENoYW5nZWQoKSk7XG5cbiAgcmVhZG9ubHkgdmFsdWUkID0gY29udHJvbFZhbHVlQ2hhbmdlcyQ8VD4odGhpcyk7XG4gIHJlYWRvbmx5IGRpc2FibGVkJCA9IGNvbnRyb2xEaXNhYmxlZCQ8VD4odGhpcyk7XG4gIHJlYWRvbmx5IGVuYWJsZWQkID0gY29udHJvbEVuYWJsZWQkPFQ+KHRoaXMpO1xuICByZWFkb25seSBzdGF0dXMkID0gY29udHJvbFN0YXR1c0NoYW5nZXMkPFQ+KHRoaXMpO1xuICByZWFkb25seSBlcnJvcnMkID0gY29udHJvbEVycm9yQ2hhbmdlcyQ8RT4odGhpcywgdGhpcy5lcnJvcnNTdWJqZWN0LmFzT2JzZXJ2YWJsZSgpKTtcblxuICBnZXQgYXN5bmNWYWxpZGF0b3IoKTogQXN5bmNWYWxpZGF0b3JGbjxUPiB8IG51bGwge1xuICAgIHJldHVybiBzdXBlci5hc3luY1ZhbGlkYXRvcjtcbiAgfVxuICBzZXQgYXN5bmNWYWxpZGF0b3IoYXN5bmNWYWxpZGF0b3I6IEFzeW5jVmFsaWRhdG9yRm48VD4gfCBudWxsKSB7XG4gICAgc3VwZXIuYXN5bmNWYWxpZGF0b3IgPSBhc3luY1ZhbGlkYXRvcjtcbiAgfVxuXG4gIGdldCB2YWxpZGF0b3IoKTogVmFsaWRhdG9yRm48VD4gfCBudWxsIHtcbiAgICByZXR1cm4gc3VwZXIudmFsaWRhdG9yO1xuICB9XG4gIHNldCB2YWxpZGF0b3IodmFsaWRhdG9yOiBWYWxpZGF0b3JGbjxUPiB8IG51bGwpIHtcbiAgICBzdXBlci52YWxpZGF0b3IgPSB2YWxpZGF0b3I7XG4gIH1cblxuICBjb25zdHJ1Y3RvcihcbiAgICBwdWJsaWMgY29udHJvbHM6IEV4dHJhY3RBYnN0cmFjdENvbnRyb2w8S2V5VmFsdWVDb250cm9sczxUPiwgVD4sXG4gICAgdmFsaWRhdG9yT3JPcHRzPzogVmFsaWRhdG9yT3JPcHRzLFxuICAgIGFzeW5jVmFsaWRhdG9yPzogQXN5bmNWYWxpZGF0b3JcbiAgKSB7XG4gICAgc3VwZXIoY29udHJvbHMsIHZhbGlkYXRvck9yT3B0cywgYXN5bmNWYWxpZGF0b3IpO1xuICB9XG5cbiAgc2VsZWN0PFI+KG1hcEZuOiAoc3RhdGU6IFQpID0+IFIpOiBPYnNlcnZhYmxlPFI+IHtcbiAgICByZXR1cm4gc2VsZWN0Q29udHJvbFZhbHVlJCh0aGlzLCBtYXBGbik7XG4gIH1cblxuICBnZXRSYXdWYWx1ZSgpOiBUIHtcbiAgICByZXR1cm4gc3VwZXIuZ2V0UmF3VmFsdWUoKTtcbiAgfVxuXG4gIGdldDxLMSBleHRlbmRzIGtleW9mIFQ+KHBhdGg/OiBbSzFdKTogQWJzdHJhY3RDb250cm9sPFRbSzFdPjtcbiAgZ2V0PEsxIGV4dGVuZHMga2V5b2YgVCwgSzIgZXh0ZW5kcyBrZXlvZiBUW0sxXT4ocGF0aD86IFtLMSwgSzJdKTogQWJzdHJhY3RDb250cm9sPFRbSzFdW0syXT47XG4gIGdldDxLMSBleHRlbmRzIGtleW9mIFQsIEsyIGV4dGVuZHMga2V5b2YgVFtLMV0sIEszIGV4dGVuZHMga2V5b2YgVFtLMV1bSzJdPihcbiAgICBwYXRoPzogW0sxLCBLMiwgSzNdXG4gICk6IEFic3RyYWN0Q29udHJvbDxUW0sxXVtLMl1bSzNdPjtcbiAgZ2V0KHBhdGg/OiBzdHJpbmcpOiBBYnN0cmFjdENvbnRyb2w7XG4gIGdldChwYXRoOiBhbnkpIHtcbiAgICByZXR1cm4gc3VwZXIuZ2V0KHBhdGgpO1xuICB9XG5cbiAgZ2V0Q29udHJvbDxQMSBleHRlbmRzIGtleW9mIFQ+KHByb3AxOiBQMSk6IEFic3RyYWN0Q29udHJvbDxUW1AxXT47XG4gIGdldENvbnRyb2w8UDEgZXh0ZW5kcyBrZXlvZiBULCBQMiBleHRlbmRzIGtleW9mIFRbUDFdPihwcm9wMTogUDEsIHByb3AyOiBQMik6IEFic3RyYWN0Q29udHJvbDxUW1AxXVtQMl0+O1xuICBnZXRDb250cm9sPFAxIGV4dGVuZHMga2V5b2YgVCwgUDIgZXh0ZW5kcyBrZXlvZiBUW1AxXSwgUDMgZXh0ZW5kcyBrZXlvZiBUW1AxXVtQMl0+KFxuICAgIHByb3AxOiBQMSxcbiAgICBwcm9wMjogUDIsXG4gICAgcHJvcDM6IFAzXG4gICk6IEFic3RyYWN0Q29udHJvbDxUW1AxXVtQMl1bUDNdPjtcbiAgZ2V0Q29udHJvbDxQMSBleHRlbmRzIGtleW9mIFQsIFAyIGV4dGVuZHMga2V5b2YgVFtQMV0sIFAzIGV4dGVuZHMga2V5b2YgVFtQMV1bUDJdLCBQNCBleHRlbmRzIGtleW9mIFRbUDFdW1AyXVtQM10+KFxuICAgIHByb3AxOiBQMSxcbiAgICBwcm9wMjogUDIsXG4gICAgcHJvcDM6IFAzLFxuICAgIHByb3A0OiBQNFxuICApOiBBYnN0cmFjdENvbnRyb2w8VFtQMV1bUDJdW1AzXVtQNF0+O1xuICBnZXRDb250cm9sKC4uLm5hbWVzOiBhbnkpOiBBYnN0cmFjdENvbnRyb2w8YW55PiB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0KG5hbWVzLmpvaW4oJy4nKSk7XG4gIH1cblxuICBhZGRDb250cm9sPEsgZXh0ZW5kcyBFeHRyYWN0U3RyaW5nczxUPj4obmFtZTogSywgY29udHJvbDogQWJzdHJhY3RDb250cm9sPFRbS10+KTogdm9pZCB7XG4gICAgc3VwZXIuYWRkQ29udHJvbChuYW1lLCBjb250cm9sKTtcbiAgfVxuXG4gIHJlbW92ZUNvbnRyb2wobmFtZTogRXh0cmFjdFN0cmluZ3M8VD4pOiB2b2lkIHtcbiAgICBzdXBlci5yZW1vdmVDb250cm9sKG5hbWUpO1xuICB9XG5cbiAgY29udGFpbnMoY29udHJvbE5hbWU6IEV4dHJhY3RTdHJpbmdzPFQ+KTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHN1cGVyLmNvbnRhaW5zKGNvbnRyb2xOYW1lKTtcbiAgfVxuXG4gIHNldENvbnRyb2w8SyBleHRlbmRzIEV4dHJhY3RTdHJpbmdzPFQ+PihuYW1lOiBLLCBjb250cm9sOiBBYnN0cmFjdENvbnRyb2w8VFtLXT4pOiB2b2lkIHtcbiAgICBzdXBlci5zZXRDb250cm9sKG5hbWUsIGNvbnRyb2wpO1xuICB9XG5cbiAgc2V0VmFsdWUodmFsdWVPck9ic2VydmFibGU6IE9ic2VydmFibGU8VD4sIG9wdGlvbnM/OiBDb250cm9sRXZlbnRPcHRpb25zKTogU3Vic2NyaXB0aW9uO1xuICBzZXRWYWx1ZSh2YWx1ZU9yT2JzZXJ2YWJsZTogVCwgb3B0aW9ucz86IENvbnRyb2xFdmVudE9wdGlvbnMpOiB2b2lkO1xuICBzZXRWYWx1ZSh2YWx1ZU9yT2JzZXJ2YWJsZTogYW55LCBvcHRpb25zPzogQ29udHJvbEV2ZW50T3B0aW9ucyk6IGFueSB7XG4gICAgaWYgKGlzT2JzZXJ2YWJsZSh2YWx1ZU9yT2JzZXJ2YWJsZSkpIHtcbiAgICAgIHJldHVybiB2YWx1ZU9yT2JzZXJ2YWJsZS5zdWJzY3JpYmUodmFsdWUgPT4gc3VwZXIuc2V0VmFsdWUodmFsdWUsIG9wdGlvbnMpKTtcbiAgICB9XG5cbiAgICBzdXBlci5zZXRWYWx1ZSh2YWx1ZU9yT2JzZXJ2YWJsZSwgb3B0aW9ucyk7XG4gIH1cblxuICBwYXRjaFZhbHVlKHZhbHVlT3JPYnNlcnZhYmxlOiBPYnNlcnZhYmxlPFBhcnRpYWw8VD4+LCBvcHRpb25zPzogQ29udHJvbEV2ZW50T3B0aW9ucyk6IFN1YnNjcmlwdGlvbjtcbiAgcGF0Y2hWYWx1ZSh2YWx1ZU9yT2JzZXJ2YWJsZTogUGFydGlhbDxUPiwgb3B0aW9ucz86IENvbnRyb2xFdmVudE9wdGlvbnMpOiB2b2lkO1xuICBwYXRjaFZhbHVlKHZhbHVlT3JPYnNlcnZhYmxlOiBhbnksIG9wdGlvbnM/OiBDb250cm9sRXZlbnRPcHRpb25zKTogU3Vic2NyaXB0aW9uIHwgdm9pZCB7XG4gICAgaWYgKGlzT2JzZXJ2YWJsZSh2YWx1ZU9yT2JzZXJ2YWJsZSkpIHtcbiAgICAgIHJldHVybiB2YWx1ZU9yT2JzZXJ2YWJsZS5zdWJzY3JpYmUodmFsdWUgPT4gc3VwZXIucGF0Y2hWYWx1ZSh2YWx1ZSwgb3B0aW9ucykpO1xuICAgIH1cblxuICAgIHN1cGVyLnBhdGNoVmFsdWUodmFsdWVPck9ic2VydmFibGUsIG9wdGlvbnMpO1xuICB9XG5cbiAgZGlzYWJsZWRXaGlsZShvYnNlcnZhYmxlOiBPYnNlcnZhYmxlPGJvb2xlYW4+LCBvcHRpb25zPzogQ29udHJvbE9wdGlvbnMpIHtcbiAgICByZXR1cm4gY29udHJvbERpc2FibGVkV2hpbGUodGhpcywgb2JzZXJ2YWJsZSwgb3B0aW9ucyk7XG4gIH1cblxuICBlbmFibGVkV2hpbGUob2JzZXJ2YWJsZTogT2JzZXJ2YWJsZTxib29sZWFuPiwgb3B0aW9ucz86IENvbnRyb2xPcHRpb25zKSB7XG4gICAgcmV0dXJuIGNvbnRyb2xFbmFibGVkV2hpbGUodGhpcywgb2JzZXJ2YWJsZSwgb3B0aW9ucyk7XG4gIH1cblxuICBtZXJnZVZhbGlkYXRvcnModmFsaWRhdG9yczogVmFsaWRhdG9yKSB7XG4gICAgbWVyZ2VDb250cm9sVmFsaWRhdG9ycyh0aGlzLCB2YWxpZGF0b3JzKTtcbiAgfVxuXG4gIG1lcmdlQXN5bmNWYWxpZGF0b3JzKHZhbGlkYXRvcnM6IEFzeW5jVmFsaWRhdG9yKSB7XG4gICAgdGhpcy5zZXRBc3luY1ZhbGlkYXRvcnMoW3RoaXMuYXN5bmNWYWxpZGF0b3IsIC4uLmNvZXJjZUFycmF5KHZhbGlkYXRvcnMpXSk7XG4gICAgdGhpcy51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XG4gIH1cblxuICBtYXJrQXNUb3VjaGVkKG9wdHM/OiBPbmx5U2VsZik6IHZvaWQge1xuICAgIHN1cGVyLm1hcmtBc1RvdWNoZWQob3B0cyk7XG4gICAgdGhpcy50b3VjaENoYW5nZXMubmV4dCh0cnVlKTtcbiAgfVxuXG4gIG1hcmtBc1VudG91Y2hlZChvcHRzPzogT25seVNlbGYpOiB2b2lkIHtcbiAgICBzdXBlci5tYXJrQXNVbnRvdWNoZWQob3B0cyk7XG4gICAgdGhpcy50b3VjaENoYW5nZXMubmV4dChmYWxzZSk7XG4gIH1cblxuICBtYXJrQXNQcmlzdGluZShvcHRzPzogT25seVNlbGYpOiB2b2lkIHtcbiAgICBzdXBlci5tYXJrQXNQcmlzdGluZShvcHRzKTtcbiAgICB0aGlzLmRpcnR5Q2hhbmdlcy5uZXh0KGZhbHNlKTtcbiAgfVxuXG4gIG1hcmtBc0RpcnR5KG9wdHM/OiBPbmx5U2VsZik6IHZvaWQge1xuICAgIHN1cGVyLm1hcmtBc0RpcnR5KG9wdHMpO1xuICAgIHRoaXMuZGlydHlDaGFuZ2VzLm5leHQodHJ1ZSk7XG4gIH1cblxuICBtYXJrQWxsQXNEaXJ0eSgpOiB2b2lkIHtcbiAgICBtYXJrQWxsRGlydHkodGhpcyk7XG4gIH1cblxuICByZXNldChmb3JtU3RhdGU/OiBQYXJ0aWFsPFQ+LCBvcHRpb25zPzogQ29udHJvbEV2ZW50T3B0aW9ucyk6IHZvaWQge1xuICAgIHN1cGVyLnJlc2V0KGZvcm1TdGF0ZSwgb3B0aW9ucyk7XG4gIH1cblxuICBzZXRWYWxpZGF0b3JzKG5ld1ZhbGlkYXRvcjogVmFsaWRhdG9yKTogdm9pZCB7XG4gICAgc3VwZXIuc2V0VmFsaWRhdG9ycyhuZXdWYWxpZGF0b3IpO1xuICAgIHN1cGVyLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcbiAgfVxuXG4gIHNldEFzeW5jVmFsaWRhdG9ycyhuZXdWYWxpZGF0b3I6IEFzeW5jVmFsaWRhdG9yKTogdm9pZCB7XG4gICAgc3VwZXIuc2V0QXN5bmNWYWxpZGF0b3JzKG5ld1ZhbGlkYXRvcik7XG4gICAgc3VwZXIudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xuICB9XG5cbiAgdmFsaWRhdGVPbihvYnNlcnZhYmxlVmFsaWRhdGlvbjogT2JzZXJ2YWJsZTxudWxsIHwgb2JqZWN0Pikge1xuICAgIHJldHVybiB2YWxpZGF0ZUNvbnRyb2xPbih0aGlzLCBvYnNlcnZhYmxlVmFsaWRhdGlvbik7XG4gIH1cblxuICBoYXNFcnJvcjxLMSBleHRlbmRzIGtleW9mIFQ+KGVycm9yQ29kZTogRXh0cmFjdFN0cmluZ3M8RT4sIHBhdGg/OiBbSzFdKTogYm9vbGVhbjtcbiAgaGFzRXJyb3I8SzEgZXh0ZW5kcyBrZXlvZiBULCBLMiBleHRlbmRzIGtleW9mIFRbSzFdPihlcnJvckNvZGU6IEV4dHJhY3RTdHJpbmdzPEU+LCBwYXRoPzogW0sxLCBLMl0pOiBib29sZWFuO1xuICBoYXNFcnJvcjxLMSBleHRlbmRzIGtleW9mIFQsIEsyIGV4dGVuZHMga2V5b2YgVFtLMV0sIEszIGV4dGVuZHMga2V5b2YgVFtLMV1bSzJdPihcbiAgICBlcnJvckNvZGU6IEV4dHJhY3RTdHJpbmdzPEU+LFxuICAgIHBhdGg/OiBbSzEsIEsyLCBLM11cbiAgKTogYm9vbGVhbjtcbiAgaGFzRXJyb3IoZXJyb3JDb2RlOiBFeHRyYWN0U3RyaW5nczxFPiwgcGF0aD86IHN0cmluZyk6IGJvb2xlYW47XG4gIGhhc0Vycm9yKGVycm9yQ29kZTogRXh0cmFjdFN0cmluZ3M8RT4sIHBhdGg/OiBhbnkpOiBib29sZWFuIHtcbiAgICByZXR1cm4gc3VwZXIuaGFzRXJyb3IoZXJyb3JDb2RlLCBwYXRoKTtcbiAgfVxuXG4gIHNldEVycm9ycyhlcnJvcnM6IFBhcnRpYWw8RT4gfCBudWxsLCBvcHRzOiBFbWl0RXZlbnQgPSB7fSkge1xuICAgIHRoaXMuZXJyb3JzU3ViamVjdC5uZXh0KGVycm9ycyk7XG4gICAgcmV0dXJuIHN1cGVyLnNldEVycm9ycyhlcnJvcnMsIG9wdHMpO1xuICB9XG5cbiAgbWVyZ2VFcnJvcnMoZXJyb3JzOiBQYXJ0aWFsPEU+LCBvcHRzOiBFbWl0RXZlbnQgPSB7fSk6IHZvaWQge1xuICAgIHRoaXMuc2V0RXJyb3JzKG1lcmdlRXJyb3JzPEU+KHRoaXMuZXJyb3JzLCBlcnJvcnMpLCBvcHRzKTtcbiAgfVxuXG4gIHJlbW92ZUVycm9yKGtleToga2V5b2YgRSwgb3B0czogRW1pdEV2ZW50ID0ge30pOiB2b2lkIHtcbiAgICB0aGlzLnNldEVycm9ycyhyZW1vdmVFcnJvcjxFPih0aGlzLmVycm9ycywga2V5KSwgb3B0cyk7XG4gIH1cblxuICBnZXRFcnJvcjxLIGV4dGVuZHMga2V5b2YgRSwgSzEgZXh0ZW5kcyBrZXlvZiBUPihlcnJvckNvZGU6IEssIHBhdGg/OiBbSzFdKTogRVtLXSB8IG51bGw7XG4gIGdldEVycm9yPEsgZXh0ZW5kcyBrZXlvZiBFLCBLMSBleHRlbmRzIGtleW9mIFQsIEsyIGV4dGVuZHMga2V5b2YgVFtLMV0+KGVycm9yQ29kZTogSywgcGF0aD86IFtLMSwgSzJdKTogRVtLXSB8IG51bGw7XG4gIGdldEVycm9yPEsgZXh0ZW5kcyBrZXlvZiBFLCBLMSBleHRlbmRzIGtleW9mIFQsIEsyIGV4dGVuZHMga2V5b2YgVFtLMV0sIEszIGV4dGVuZHMga2V5b2YgVFtLMV1bSzJdPihcbiAgICBlcnJvckNvZGU6IEssXG4gICAgcGF0aD86IFtLMSwgSzIsIEszXVxuICApOiBFW0tdIHwgbnVsbDtcbiAgZ2V0RXJyb3I8SyBleHRlbmRzIGtleW9mIEU+KGVycm9yQ29kZTogSywgcGF0aD86IHN0cmluZyk6IEVbS10gfCBudWxsO1xuICBnZXRFcnJvcjxLIGV4dGVuZHMga2V5b2YgRT4oZXJyb3JDb2RlOiBLLCBwYXRoPzogYW55KTogRVtLXSB8IG51bGwge1xuICAgIHJldHVybiBzdXBlci5nZXRFcnJvcihlcnJvckNvZGUgYXMgYW55LCBwYXRoKSBhcyBFW0tdIHwgbnVsbDtcbiAgfVxuXG4gIGhhc0Vycm9yQW5kVG91Y2hlZDxQMSBleHRlbmRzIGtleW9mIFQ+KGVycm9yOiBFeHRyYWN0U3RyaW5nczxFPiwgcHJvcDE/OiBQMSk6IGJvb2xlYW47XG4gIGhhc0Vycm9yQW5kVG91Y2hlZDxQMSBleHRlbmRzIGtleW9mIFQsIFAyIGV4dGVuZHMga2V5b2YgVFtQMV0+KFxuICAgIGVycm9yOiBFeHRyYWN0U3RyaW5nczxFPixcbiAgICBwcm9wMT86IFAxLFxuICAgIHByb3AyPzogUDJcbiAgKTogYm9vbGVhbjtcbiAgaGFzRXJyb3JBbmRUb3VjaGVkPFAxIGV4dGVuZHMga2V5b2YgVCwgUDIgZXh0ZW5kcyBrZXlvZiBUW1AxXSwgUDMgZXh0ZW5kcyBrZXlvZiBUW1AxXVtQMl0+KFxuICAgIGVycm9yOiBFeHRyYWN0U3RyaW5nczxFPixcbiAgICBwcm9wMT86IFAxLFxuICAgIHByb3AyPzogUDIsXG4gICAgcHJvcDM/OiBQM1xuICApOiBib29sZWFuO1xuICBoYXNFcnJvckFuZFRvdWNoZWQ8XG4gICAgUDEgZXh0ZW5kcyBrZXlvZiBULFxuICAgIFAyIGV4dGVuZHMga2V5b2YgVFtQMV0sXG4gICAgUDMgZXh0ZW5kcyBrZXlvZiBUW1AxXVtQMl0sXG4gICAgUDQgZXh0ZW5kcyBrZXlvZiBUW1AxXVtQMl1bUDNdXG4gID4oZXJyb3I6IEV4dHJhY3RTdHJpbmdzPEU+LCBwcm9wMT86IFAxLCBwcm9wMj86IFAyLCBwcm9wMz86IFAzLCBwcm9wND86IFA0KTogYm9vbGVhbjtcbiAgaGFzRXJyb3JBbmRUb3VjaGVkKGVycm9yOiBhbnksIC4uLnBhdGg6IGFueSk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBoYXNFcnJvckFuZFRvdWNoZWQodGhpcywgZXJyb3IsIC4uLnBhdGgpO1xuICB9XG5cbiAgaGFzRXJyb3JBbmREaXJ0eTxQMSBleHRlbmRzIGtleW9mIFQ+KGVycm9yOiBFeHRyYWN0U3RyaW5nczxFPiwgcHJvcDE/OiBQMSk6IGJvb2xlYW47XG4gIGhhc0Vycm9yQW5kRGlydHk8UDEgZXh0ZW5kcyBrZXlvZiBULCBQMiBleHRlbmRzIGtleW9mIFRbUDFdPihcbiAgICBlcnJvcjogRXh0cmFjdFN0cmluZ3M8RT4sXG4gICAgcHJvcDE/OiBQMSxcbiAgICBwcm9wMj86IFAyXG4gICk6IGJvb2xlYW47XG4gIGhhc0Vycm9yQW5kRGlydHk8UDEgZXh0ZW5kcyBrZXlvZiBULCBQMiBleHRlbmRzIGtleW9mIFRbUDFdLCBQMyBleHRlbmRzIGtleW9mIFRbUDFdW1AyXT4oXG4gICAgZXJyb3I6IEV4dHJhY3RTdHJpbmdzPEU+LFxuICAgIHByb3AxPzogUDEsXG4gICAgcHJvcDI/OiBQMixcbiAgICBwcm9wMz86IFAzXG4gICk6IGJvb2xlYW47XG4gIGhhc0Vycm9yQW5kRGlydHk8XG4gICAgUDEgZXh0ZW5kcyBrZXlvZiBULFxuICAgIFAyIGV4dGVuZHMga2V5b2YgVFtQMV0sXG4gICAgUDMgZXh0ZW5kcyBrZXlvZiBUW1AxXVtQMl0sXG4gICAgUDQgZXh0ZW5kcyBrZXlvZiBUW1AxXVtQMl1bUDNdXG4gID4oZXJyb3I6IEV4dHJhY3RTdHJpbmdzPEU+LCBwcm9wMT86IFAxLCBwcm9wMj86IFAyLCBwcm9wMz86IFAzLCBwcm9wND86IFA0KTogYm9vbGVhbjtcbiAgaGFzRXJyb3JBbmREaXJ0eShlcnJvcjogYW55LCAuLi5wYXRoOiBhbnkpOiBib29sZWFuIHtcbiAgICByZXR1cm4gaGFzRXJyb3JBbmREaXJ0eSh0aGlzLCBlcnJvciwgLi4ucGF0aCk7XG4gIH1cblxuICBzZXRFbmFibGUoZW5hYmxlID0gdHJ1ZSwgb3B0cz86IENvbnRyb2xFdmVudE9wdGlvbnMpIHtcbiAgICBlbmFibGVDb250cm9sKHRoaXMsIGVuYWJsZSwgb3B0cyk7XG4gIH1cblxuICBzZXREaXNhYmxlKGRpc2FibGUgPSB0cnVlLCBvcHRzPzogQ29udHJvbEV2ZW50T3B0aW9ucykge1xuICAgIGRpc2FibGVDb250cm9sKHRoaXMsIGRpc2FibGUsIG9wdHMpO1xuICB9XG5cbiAgcGVyc2lzdChrZXk6IHN0cmluZywgeyBkZWJvdW5jZVRpbWUsIG1hbmFnZXIsIGFyckNvbnRyb2xGYWN0b3J5IH06IFBlcnNpc3RPcHRpb25zPFQ+KTogT2JzZXJ2YWJsZTxUPiB7XG4gICAgY29uc3QgcGVyc2lzdE1hbmFnZXIgPSBtYW5hZ2VyIHx8IG5ldyBMb2NhbFN0b3JhZ2VNYW5hZ2VyKCk7XG4gICAgcmV0dXJuIHRoaXMucmVzdG9yZShrZXksIHBlcnNpc3RNYW5hZ2VyLCBhcnJDb250cm9sRmFjdG9yeSkucGlwZShcbiAgICAgIHN3aXRjaE1hcCgoKSA9PlxuICAgICAgICBwZXJzaXN0VmFsdWUkKHRoaXMsIGtleSwge1xuICAgICAgICAgIGRlYm91bmNlVGltZTogZGVib3VuY2VUaW1lIHx8IDI1MCxcbiAgICAgICAgICBtYW5hZ2VyOiBwZXJzaXN0TWFuYWdlclxuICAgICAgICB9KVxuICAgICAgKVxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIHJlc3RvcmUoa2V5OiBzdHJpbmcsIG1hbmFnZXI6IFBlcnNpc3RNYW5hZ2VyPFQ+LCBhcnJDb250cm9sRmFjdG9yeTogQ29udHJvbEZhY3RvcnlNYXA8VD4pOiBPYnNlcnZhYmxlPFQ+IHtcbiAgICByZXR1cm4gd3JhcEludG9PYnNlcnZhYmxlPFQ+KG1hbmFnZXIuZ2V0VmFsdWUoa2V5KSkucGlwZShcbiAgICAgIHRha2UoMSksXG4gICAgICB0YXAodmFsdWUgPT4ge1xuICAgICAgICBpZiAoIXZhbHVlKSByZXR1cm47XG4gICAgICAgIGhhbmRsZUZvcm1BcnJheXModGhpcywgdmFsdWUsIGFyckNvbnRyb2xGYWN0b3J5KTtcbiAgICAgICAgdGhpcy5wYXRjaFZhbHVlKHZhbHVlLCB7IGVtaXRFdmVudDogZmFsc2UgfSk7XG4gICAgICB9KVxuICAgICk7XG4gIH1cbn1cbiJdfQ==
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybUdyb3VwLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmduZWF0L3JlYWN0aXZlLWZvcm1zL3NyYy9saWIvZm9ybUdyb3VwLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLElBQUksV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDMUQsT0FBTyxFQUFFLFlBQVksRUFBYyxPQUFPLEVBQWdCLE1BQU0sTUFBTSxDQUFDO0FBQ3ZFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzVFLE9BQU8sRUFDTCxnQkFBZ0IsRUFDaEIsb0JBQW9CLEVBQ3BCLGVBQWUsRUFDZixtQkFBbUIsRUFDbkIsb0JBQW9CLEVBQ3BCLHFCQUFxQixFQUNyQixvQkFBb0IsRUFDcEIsY0FBYyxFQUNkLGFBQWEsRUFDYixnQkFBZ0IsRUFDaEIsZ0JBQWdCLEVBQ2hCLGtCQUFrQixFQUNsQixZQUFZLEVBQ1osc0JBQXNCLEVBQ3RCLGFBQWEsRUFDYixtQkFBbUIsRUFDbkIsaUJBQWlCLEVBQ2xCLE1BQU0sbUJBQW1CLENBQUM7QUFDM0IsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFxQjVELE9BQU8sRUFBRSxXQUFXLEVBQUUsV0FBVyxFQUFFLFdBQVcsRUFBRSxrQkFBa0IsRUFBRSxNQUFNLFNBQVMsQ0FBQztBQUdwRixNQUFNLE9BQU8sU0FBdUQsU0FBUSxXQUFXO0lBa0NyRixZQUNTLFFBQStCLEVBQ3RDLGVBQWlDLEVBQ2pDLGNBQStCO1FBRS9CLEtBQUssQ0FBQyxRQUFRLEVBQUUsZUFBZSxFQUFFLGNBQWMsQ0FBQyxDQUFDO1FBSjFDLGFBQVEsR0FBUixRQUFRLENBQXVCO1FBNUJoQyxpQkFBWSxHQUFHLElBQUksT0FBTyxFQUFXLENBQUM7UUFDdEMsaUJBQVksR0FBRyxJ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QUcsRUFBRSxDQUNiLGFBQWEsQ0FBQyxJQUFJLEVBQUUsR0FBRyxFQUFFO1lBQ3ZCLFlBQVksRUFBRSxZQUFZLElBQUksR0FBRztZQUNqQyxPQUFPLEVBQUUsY0FBYztTQUN4QixDQUFDLENBQ0gsQ0FDRixDQUFDO0lBQ0osQ0FBQztJQUVPLE9BQU8sQ0FBQyxHQUFXLEVBQUUsT0FBMEIsRUFBRSxpQkFBdUM7UUFDOUYsT0FBTyxrQkFBa0IsQ0FBSSxPQUFPLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUN0RCxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQ1AsR0FBRyxDQUFDLEtBQUssQ0FBQyxFQUFFO1lBQ1YsSUFBSSxDQUFDLEtBQUs7Z0JBQUUsT0FBTztZQUNuQixnQkFBZ0IsQ0FBQyxJQUFJLEVBQUUsS0FBSyxFQUFFLGlCQUFpQixDQUFDLENBQUM7WUFDakQsSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLEVBQUUsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQztRQUMvQyxDQUFDLENBQUMsQ0FDSCxDQUFDO0lBQ0osQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRm9ybUdyb3VwIGFzIE5nRm9ybUdyb3VwIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgaXNPYnNlcnZhYmxlLCBPYnNlcnZhYmxlLCBTdWJqZWN0LCBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGRpc3RpbmN0VW50aWxDaGFuZ2VkLCBzd2l0Y2hNYXAsIHRha2UsIHRhcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7XG4gIGNvbnRyb2xEaXNhYmxlZCQsXG4gIGNvbnRyb2xEaXNhYmxlZFdoaWxlLFxuICBjb250cm9sRW5hYmxlZCQsXG4gIGNvbnRyb2xFbmFibGVkV2hpbGUsXG4gIGNvbnRyb2xFcnJvckNoYW5nZXMkLFxuICBjb250cm9sU3RhdHVzQ2hhbmdlcyQsXG4gIGNvbnRyb2xWYWx1ZUNoYW5nZXMkLFxuICBkaXNhYmxlQ29udHJvbCxcbiAgZW5hYmxlQ29udHJvbCxcbiAgaGFuZGxlRm9ybUFycmF5cyxcbiAgaGFzRXJyb3JBbmREaXJ0eSxcbiAgaGFzRXJyb3JBbmRUb3VjaGVkLFxuICBtYXJrQWxsRGlydHksXG4gIG1lcmdlQ29udHJvbFZhbGlkYXRvcnMsXG4gIHBlcnNpc3RWYWx1ZSQsXG4gIHNlbGVjdENvbnRyb2xWYWx1ZSQsXG4gIHZhbGlkYXRlQ29udHJvbE9uXG59IGZyb20gJy4vY29udHJvbC1hY3Rpb25zJztcbmltcG9ydCB7IExvY2FsU3RvcmFnZU1hbmFnZXIgfSBmcm9tICcuL2xvY2FsU3RvcmFnZU1hbmFnZXInO1xuaW1wb3J0IHsgUGVyc2lzdE1hbmFnZXIgfSBmcm9tICcuL3BlcnNpc3RNYW5hZ2VyJztcbmltcG9ydCB7XG4gIEFic3RyYWN0Q29udHJvbCxcbiAgQXN5bmNWYWxpZGF0b3IsXG4gIEFzeW5jVmFsaWRhdG9yRm4sXG4gIENvbnRyb2xFdmVudE9wdGlvbnMsXG4gIENvbnRyb2xGYWN0b3J5TWFwLFxuICBDb250cm9sT3B0aW9ucyxcbiAgQ29udHJvbFN0YXRlLFxuICBFbWl0RXZlbnQsXG4gIEV4dHJhY3RTdHJpbmdzLFxuICBPYmosXG4gIE9ubHlTZWxmLFxuICBWYWxpZGF0b3IsXG4gIFZhbGlkYXRvck9yT3B0cyxcbiAgQ29udHJvbHNWYWx1ZSxcbiAgQWJzdHJhY3RDb250cm9sc09mLFxuICBQZXJzaXN0T3B0aW9ucyxcbiAgVmFsaWRhdG9yRm5cbn0gZnJvbSAnLi90eXBlcyc7XG5pbXBvcnQgeyBjb2VyY2VBcnJheSwgbWVyZ2VFcnJvcnMsIHJlbW92ZUVycm9yLCB3cmFwSW50b09ic2VydmFibGUgfSBmcm9tICcuL3V0aWxzJztcbmltcG9ydCB7IEZvcm1BcnJheSB9IGZyb20gJy4vZm9ybUFycmF5JztcblxuZXhwb3J0IGNsYXNzIEZvcm1Hcm91cDxUIGV4dGVuZHMgT2JqID0gYW55LCBFIGV4dGVuZHMgb2JqZWN0ID0gYW55PiBleHRlbmRzIE5nRm9ybUdyb3VwIHtcbiAgcmVhZG9ubHkgdmFsdWU6IENvbnRyb2xzVmFsdWU8VD47XG4gIHJlYWRvbmx5IGVycm9yczogRSB8IG51bGw7XG4gIHJlYWRvbmx5IHZhbHVlQ2hhbmdlczogT2JzZXJ2YWJsZTxDb250cm9sc1ZhbHVlPFQ+PjtcbiAgcmVhZG9ubHkgc3RhdHVzOiBDb250cm9sU3RhdGU7XG4gIHJlYWRvbmx5IHN0YXR1c0NoYW5nZXM6IE9ic2VydmFibGU8Q29udHJvbFN0YXRlPjtcblxuICBwcml2YXRlIHRvdWNoQ2hhbmdlcyA9IG5ldyBTdWJqZWN0PGJvb2xlYW4+KCk7XG4gIHByaXZhdGUgZGlydHlDaGFuZ2VzID0gbmV3IFN1YmplY3Q8Ym9vbGVhbj4oKTtcbiAgcHJpdmF0ZSBlcnJvcnNTdWJqZWN0ID0gbmV3IFN1YmplY3Q8UGFydGlhbDxFPj4oKTtcblxuICB0b3VjaCQgPSB0aGlzLnRvdWNoQ2hhbmdlcy5hc09ic2VydmFibGUoKS5waXBlKGRpc3RpbmN0VW50aWxDaGFuZ2VkKCkpO1xuICBkaXJ0eSQgPSB0aGlzLmRpcnR5Q2hhbmdlcy5hc09ic2VydmFibGUoKS5waXBlKGRpc3RpbmN0VW50aWxDaGFuZ2VkKCkpO1xuXG4gIHJlYWRvbmx5IHZhbHVlJCA9IGNvbnRyb2xWYWx1ZUNoYW5nZXMkPENvbnRyb2xzVmFsdWU8VD4+KHRoaXMpO1xuICByZWFkb25seSBkaXNhYmxlZCQgPSBjb250cm9sRGlzYWJsZWQkPENvbnRyb2xzVmFsdWU8VD4+KHRoaXMpO1xuICByZWFkb25seSBlbmFibGVkJCA9IGNvbnRyb2xFbmFibGVkJDxDb250cm9sc1ZhbHVlPFQ+Pih0aGlzKTtcbiAgcmVhZG9ubHkgc3RhdHVzJCA9IGNvbnRyb2xTdGF0dXNDaGFuZ2VzJDxDb250cm9sc1ZhbHVlPFQ+Pih0aGlzKTtcbiAgcmVhZG9ubHkgZXJyb3JzJCA9IGNvbnRyb2xFcnJvckNoYW5nZXMkPEU+KHRoaXMsIHRoaXMuZXJyb3JzU3ViamVjdC5hc09ic2VydmFibGUoKSk7XG5cbiAgZ2V0IGFzeW5jVmFsaWRhdG9yKCk6IEFzeW5jVmFsaWRhdG9yRm48VD4gfCBudWxsIHtcbiAgICByZXR1cm4gc3VwZXIuYXN5bmNWYWxpZGF0b3I7XG4gIH1cbiAgc2V0IGFzeW5jVmFsaWRhdG9yKGFzeW5jVmFsaWRhdG9yOiBBc3luY1ZhbGlkYXRvckZuPFQ+IHwgbnVsbCkge1xuICAgIHN1cGVyLmFzeW5jVmFsaWRhdG9yID0gYXN5bmNWYWxpZGF0b3I7XG4gIH1cblxuICBnZXQgdmFsaWRhdG9yKCk6IFZhbGlkYXRvckZuPFQ+IHwgbnVsbCB7XG4gICAgcmV0dXJuIHN1cGVyLnZhbGlkYXRvcjtcbiAgfVxuICBzZXQgdmFsaWRhdG9yKHZhbGlkYXRvcjogVmFsaWRhdG9yRm48VD4gfCBudWxsKSB7XG4gICAgc3VwZXIudmFsaWRhdG9yID0gdmFsaWRhdG9yO1xuICB9XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHVibGljIGNvbnRyb2xzOiBBYnN0cmFjdENvbnRyb2xzT2Y8VD4sXG4gICAgdmFsaWRhdG9yT3JPcHRzPzogVmFsaWRhdG9yT3JPcHRzLFxuICAgIGFzeW5jVmFsaWRhdG9yPzogQXN5bmNWYWxpZGF0b3JcbiAgKSB7XG4gICAgc3VwZXIoY29udHJvbHMsIHZhbGlkYXRvck9yT3B0cywgYXN5bmNWYWxpZGF0b3IpO1xuICB9XG5cbiAgc2VsZWN0PFI+KG1hcEZuOiAoc3RhdGU6IENvbnRyb2xzVmFsdWU8VD4pID0+IFIpOiBPYnNlcnZhYmxlPFI+IHtcbiAgICByZXR1cm4gc2VsZWN0Q29udHJvbFZhbHVlJCh0aGlzLCBtYXBGbik7XG4gIH1cblxuICBnZXRSYXdWYWx1ZSgpOiBDb250cm9sc1ZhbHVlPFQ+IHtcbiAgICByZXR1cm4gc3VwZXIuZ2V0UmF3VmFsdWUoKTtcbiAgfVxuXG4gIGdldDxLMSBleHRlbmRzIGtleW9mIENvbnRyb2xzVmFsdWU8VD4+KHBhdGg/OiBbSzFdKTogQWJzdHJhY3RDb250cm9sc09mPFQ+W0sxXTtcbiAgZ2V0PFxuICAgIEsxIGV4dGVuZHMga2V5b2YgQ29udHJvbHNWYWx1ZTxUPixcbiAgICBLMiBleHRlbmRzIEFic3RyYWN0Q29udHJvbHNPZjxUPltLMV0gZXh0ZW5kcyBGb3JtR3JvdXAgfCBGb3JtQXJyYXlcbiAgICAgID8ga2V5b2YgQWJzdHJhY3RDb250cm9sc09mPFQ+W0sxXVsnY29udHJvbHMnXVxuICAgICAgOiBuZXZlclxuICA+KFxuICAgIHBhdGg/OiBbSzEsIEsyXVxuICApOiBBYnN0cmFjdENvbnRyb2xzT2Y8VD5bSzFdIGV4dGVuZHMgRm9ybUdyb3VwIHwgRm9ybUFycmF5ID8gQWJzdHJhY3RDb250cm9sc09mPFQ+W0sxXVsnY29udHJvbHMnXVtLMl0gOiBuZXZlcjtcbiAgZ2V0PEsxIGV4dGVuZHMga2V5b2YgQ29udHJvbHNWYWx1ZTxUPiwgSzIgZXh0ZW5kcyBrZXlvZiBDb250cm9sc1ZhbHVlPFQ+W0sxXT4oXG4gICAgcGF0aD86IFtLMSwgSzJdXG4gICk6IEFic3RyYWN0Q29udHJvbDxDb250cm9sc1ZhbHVlPFQ+W0sxXVtLMl0+O1xuICBnZXQ8XG4gICAgSzEgZXh0ZW5kcyBrZXlvZiBDb250cm9sc1ZhbHVlPFQ+LFxuICAgIEsyIGV4dGVuZHMga2V5b2YgQ29udHJvbHNWYWx1ZTxUPltLMV0sXG4gICAgSzMgZXh0ZW5kcyBrZXlvZiBDb250cm9sc1ZhbHVlPFQ+W0sxXVtLMl1cbiAgPihwYXRoPzogW0sxLCBLMiwgSzNdKTogQWJzdHJhY3RDb250cm9sPENvbnRyb2xzVmFsdWU8VD5bSzFdW0syXVtLM10+O1xuICBnZXQocGF0aD86IEFycmF5PHN0cmluZyB8IG51bWJlcj4gfCBzdHJpbmcpOiBBYnN0cmFjdENvbnRyb2w7XG4gIGdldChwYXRoOiBBcnJheTxzdHJpbmcgfCBudW1iZXI+IHwgc3RyaW5nKSB7XG4gICAgcmV0dXJuIHN1cGVyLmdldChwYXRoKTtcbiAgfVxuXG4gIGdldENvbnRyb2w8UDEgZXh0ZW5kcyBrZXlvZiBDb250cm9sc1ZhbHVlPFQ+PihwYXRoPzogUDEpOiBBYnN0cmFjdENvbnRyb2xzT2Y8VD5bUDFdO1xuICBnZXRDb250cm9sPFxuICAgIFAxIGV4dGVuZHMga2V5b2YgQ29udHJvbHNWYWx1ZTxUPixcbiAgICBQMiBleHRlbmRzIEFic3RyYWN0Q29udHJvbHNPZjxUPltQMV0gZXh0ZW5kcyBGb3JtR3JvdXAgfCBGb3JtQXJyYXlcbiAgICAgID8ga2V5b2YgQWJzdHJhY3RDb250cm9sc09mPFQ+W1AxXVsnY29udHJvbHMnXVxuICAgICAgOiBuZXZlclxuICA+KFxuICAgIHByb3AxOiBQMSxcbiAgICBwcm9wMjogUDJcbiAgKTogQWJzdHJhY3RDb250cm9sc09mPFQ+W1AxXSBleHRlbmRzIEZvcm1Hcm91cCB8IEZvcm1BcnJheSA/IEFic3RyYWN0Q29udHJvbHNPZjxUPltQMV1bJ2NvbnRyb2xzJ11bUDJdIDogbmV2ZXI7XG4gIGdldENvbnRyb2w8UDEgZXh0ZW5kcyBrZXlvZiBDb250cm9sc1ZhbHVlPFQ+LCBQMiBleHRlbmRzIGtleW9mIENvbnRyb2xzVmFsdWU8VD5bUDFdPihcbiAgICBwcm9wMTogUDEsXG4gICAgcHJvcDI6IFAyXG4gICk6IEFic3RyYWN0Q29udHJvbDxDb250cm9sc1ZhbHVlPFQ+W1AxXVtQMl0+O1xuICBnZXRDb250cm9sPFxuICAgIFAxIGV4dGVuZHMga2V5b2YgQ29udHJvbHNWYWx1ZTxUPixcbiAgICBQMiBleHRlbmRzIGtleW9mIENvbnRyb2xzVmFsdWU8VD5bUDFdLFxuICAgIFAzIGV4dGVuZHMga2V5b2YgQ29udHJvbHNWYWx1ZTxUPltQMV1bUDJdXG4gID4ocHJvcDE6IFAxLCBwcm9wMjogUDIsIHByb3AzOiBQMyk6IEFic3RyYWN0Q29udHJvbDxDb250cm9sc1ZhbHVlPFQ+W1AxXVtQMl1bUDNdPjtcbiAgZ2V0Q29udHJvbChwYXRoPzogc3RyaW5nKTogQWJzdHJhY3RDb250cm9sO1xuICBnZXRDb250cm9sKC4uLm5hbWVzOiBBcnJheTxzdHJpbmcgfCBudW1iZXI+KTogQWJzdHJhY3RDb250cm9sPGFueT4ge1xuICAgIHJldHVybiB0aGlzLmdldChuYW1lcyk7XG4gIH1cblxuICBhZGRDb250cm9sPEsgZXh0ZW5kcyBFeHRyYWN0U3RyaW5nczxUPj4obmFtZTogSywgY29udHJvbDogQWJzdHJhY3RDb250cm9sc09mPFQ+W0tdKTogdm9pZCB7XG4gICAgc3VwZXIuYWRkQ29udHJvbChuYW1lLCBjb250cm9sKTtcbiAgfVxuXG4gIHJlbW92ZUNvbnRyb2wobmFtZTogRXh0cmFjdFN0cmluZ3M8VD4pOiB2b2lkIHtcbiAgICBzdXBlci5yZW1vdmVDb250cm9sKG5hbWUpO1xuICB9XG5cbiAgY29udGFpbnMoY29udHJvbE5hbWU6IEV4dHJhY3RTdHJpbmdzPFQ+KTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHN1cGVyLmNvbnRhaW5zKGNvbnRyb2xOYW1lKTtcbiAgfVxuXG4gIHNldENvbnRyb2w8SyBleHRlbmRzIEV4dHJhY3RTdHJpbmdzPFQ+PihuYW1lOiBLLCBjb250cm9sOiBBYnN0cmFjdENvbnRyb2xzT2Y8VD5bS10pOiB2b2lkIHtcbiAgICBzdXBlci5zZXRDb250cm9sKG5hbWUsIGNvbnRyb2wpO1xuICB9XG5cbiAgc2V0VmFsdWUodmFsdWVPck9ic2VydmFibGU6IE9ic2VydmFibGU8Q29udHJvbHNWYWx1ZTxUPj4sIG9wdGlvbnM/OiBDb250cm9sRXZlbnRPcHRpb25zKTogU3Vic2NyaXB0aW9uO1xuICBzZXRWYWx1ZSh2YWx1ZU9yT2JzZXJ2YWJsZTogQ29udHJvbHNWYWx1ZTxUPiwgb3B0aW9ucz86IENvbnRyb2xFdmVudE9wdGlvbnMpOiB2b2lkO1xuICBzZXRWYWx1ZSh2YWx1ZU9yT2JzZXJ2YWJsZTogYW55LCBvcHRpb25zPzogQ29udHJvbEV2ZW50T3B0aW9ucyk6IGFueSB7XG4gICAgaWYgKGlzT2JzZXJ2YWJsZSh2YWx1ZU9yT2JzZXJ2YWJsZSkpIHtcbiAgICAgIHJldHVybiB2YWx1ZU9yT2JzZXJ2YWJsZS5zdWJzY3JpYmUodmFsdWUgPT4gc3VwZXIuc2V0VmFsdWUodmFsdWUsIG9wdGlvbnMpKTtcbiAgICB9XG5cbiAgICBzdXBlci5zZXRWYWx1ZSh2YWx1ZU9yT2JzZXJ2YWJsZSwgb3B0aW9ucyk7XG4gIH1cblxuICBwYXRjaFZhbHVlKHZhbHVlT3JPYnNlcnZhYmxlOiBPYnNlcnZhYmxlPFBhcnRpYWw8Q29udHJvbHNWYWx1ZTxUPj4+LCBvcHRpb25zPzogQ29udHJvbEV2ZW50T3B0aW9ucyk6IFN1YnNjcmlwdGlvbjtcbiAgcGF0Y2hWYWx1ZSh2YWx1ZU9yT2JzZXJ2YWJsZTogUGFydGlhbDxDb250cm9sc1ZhbHVlPFQ+Piwgb3B0aW9ucz86IENvbnRyb2xFdmVudE9wdGlvbnMpOiB2b2lkO1xuICBwYXRjaFZhbHVlKHZhbHVlT3JPYnNlcnZhYmxlOiBhbnksIG9wdGlvbnM/OiBDb250cm9sRXZlbnRPcHRpb25zKTogU3Vic2NyaXB0aW9uIHwgdm9pZCB7XG4gICAgaWYgKGlzT2JzZXJ2YWJsZSh2YWx1ZU9yT2JzZXJ2YWJsZSkpIHtcbiAgICAgIHJldHVybiB2YWx1ZU9yT2JzZXJ2YWJsZS5zdWJzY3JpYmUodmFsdWUgPT4gc3VwZXIucGF0Y2hWYWx1ZSh2YWx1ZSwgb3B0aW9ucykpO1xuICAgIH1cblxuICAgIHN1cGVyLnBhdGNoVmFsdWUodmFsdWVPck9ic2VydmFibGUsIG9wdGlvbnMpO1xuICB9XG5cbiAgZGlzYWJsZWRXaGlsZShvYnNlcnZhYmxlOiBPYnNlcnZhYmxlPGJvb2xlYW4+LCBvcHRpb25zPzogQ29udHJvbE9wdGlvbnMpIHtcbiAgICByZXR1cm4gY29udHJvbERpc2FibGVkV2hpbGUodGhpcywgb2JzZXJ2YWJsZSwgb3B0aW9ucyk7XG4gIH1cblxuICBlbmFibGVkV2hpbGUob2JzZXJ2YWJsZTogT2JzZXJ2YWJsZTxib29sZWFuPiwgb3B0aW9ucz86IENvbnRyb2xPcHRpb25zKSB7XG4gICAgcmV0dXJuIGNvbnRyb2xFbmFibGVkV2hpbGUodGhpcywgb2JzZXJ2YWJsZSwgb3B0aW9ucyk7XG4gIH1cblxuICBtZXJnZVZhbGlkYXRvcnModmFsaWRhdG9yczogVmFsaWRhdG9yKSB7XG4gICAgbWVyZ2VDb250cm9sVmFsaWRhdG9ycyh0aGlzLCB2YWxpZGF0b3JzKTtcbiAgfVxuXG4gIG1lcmdlQXN5bmNWYWxpZGF0b3JzKHZhbGlkYXRvcnM6IEFzeW5jVmFsaWRhdG9yKSB7XG4gICAgdGhpcy5zZXRBc3luY1ZhbGlkYXRvcnMoW3RoaXMuYXN5bmNWYWxpZGF0b3IsIC4uLmNvZXJjZUFycmF5KHZhbGlkYXRvcnMpXSk7XG4gICAgdGhpcy51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XG4gIH1cblxuICBtYXJrQXNUb3VjaGVkKG9wdHM/OiBPbmx5U2VsZik6IHZvaWQge1xuICAgIHN1cGVyLm1hcmtBc1RvdWNoZWQob3B0cyk7XG4gICAgdGhpcy50b3VjaENoYW5nZXMubmV4dCh0cnVlKTtcbiAgfVxuXG4gIG1hcmtBc1VudG91Y2hlZChvcHRzPzogT25seVNlbGYpOiB2b2lkIHtcbiAgICBzdXBlci5tYXJrQXNVbnRvdWNoZWQob3B0cyk7XG4gICAgdGhpcy50b3VjaENoYW5nZXMubmV4dChmYWxzZSk7XG4gIH1cblxuICBtYXJrQXNQcmlzdGluZShvcHRzPzogT25seVNlbGYpOiB2b2lkIHtcbiAgICBzdXBlci5tYXJrQXNQcmlzdGluZShvcHRzKTtcbiAgICB0aGlzLmRpcnR5Q2hhbmdlcy5uZXh0KGZhbHNlKTtcbiAgfVxuXG4gIG1hcmtBc0RpcnR5KG9wdHM/OiBPbmx5U2VsZik6IHZvaWQge1xuICAgIHN1cGVyLm1hcmtBc0RpcnR5KG9wdHMpO1xuICAgIHRoaXMuZGlydHlDaGFuZ2VzLm5leHQodHJ1ZSk7XG4gIH1cblxuICBtYXJrQWxsQXNEaXJ0eSgpOiB2b2lkIHtcbiAgICBtYXJrQWxsRGlydHkodGhpcyk7XG4gIH1cblxuICByZXNldChmb3JtU3RhdGU/OiBQYXJ0aWFsPENvbnRyb2xzVmFsdWU8VD4+LCBvcHRpb25zPzogQ29udHJvbEV2ZW50T3B0aW9ucyk6IHZvaWQge1xuICAgIHN1cGVyLnJlc2V0KGZvcm1TdGF0ZSwgb3B0aW9ucyk7XG4gIH1cblxuICBzZXRWYWxpZGF0b3JzKG5ld1ZhbGlkYXRvcjogVmFsaWRhdG9yKTogdm9pZCB7XG4gICAgc3VwZXIuc2V0VmFsaWRhdG9ycyhuZXdWYWxpZGF0b3IpO1xuICAgIHN1cGVyLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcbiAgfVxuXG4gIHNldEFzeW5jVmFsaWRhdG9ycyhuZXdWYWxpZGF0b3I6IEFzeW5jVmFsaWRhdG9yKTogdm9pZCB7XG4gICAgc3VwZXIuc2V0QXN5bmNWYWxpZGF0b3JzKG5ld1ZhbGlkYXRvcik7XG4gICAgc3VwZXIudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xuICB9XG5cbiAgdmFsaWRhdGVPbihvYnNlcnZhYmxlVmFsaWRhdGlvbjogT2JzZXJ2YWJsZTxudWxsIHwgb2JqZWN0Pikge1xuICAgIHJldHVybiB2YWxpZGF0ZUNvbnRyb2xPbih0aGlzLCBvYnNlcnZhYmxlVmFsaWRhdGlvbik7XG4gIH1cblxuICBoYXNFcnJvcjxLMSBleHRlbmRzIGtleW9mIENvbnRyb2xzVmFsdWU8VD4+KGVycm9yQ29kZTogRXh0cmFjdFN0cmluZ3M8RT4sIHBhdGg/OiBbSzFdKTogYm9vbGVhbjtcbiAgaGFzRXJyb3I8SzEgZXh0ZW5kcyBrZXlvZiBDb250cm9sc1ZhbHVlPFQ+LCBLMiBleHRlbmRzIGtleW9mIENvbnRyb2xzVmFsdWU8VD5bSzFdPihcbiAgICBlcnJvckNvZGU6IEV4dHJhY3RTdHJpbmdzPEU+LFxuICAgIHBhdGg/OiBbSzEsIEsyXVxuICApOiBib29sZWFuO1xuICBoYXNFcnJvcjxcbiAgICBLMSBleHRlbmRzIGtleW9mIENvbnRyb2xzVmFsdWU8VD4sXG4gICAgSzIgZXh0ZW5kcyBrZXlvZiBDb250cm9sc1ZhbHVlPFQ+W0sxXSxcbiAgICBLMyBleHRlbmRzIGtleW9mIENvbnRyb2xzVmFsdWU8VD5bSzFdW0syXVxuICA+KGVycm9yQ29kZTogRXh0cmFjdFN0cmluZ3M8RT4sIHBhdGg/OiBbSzEsIEsyLCBLM10pOiBib29sZWFuO1xuICBoYXNFcnJvcihlcnJvckNvZGU6IEV4dHJhY3RTdHJpbmdzPEU+LCBwYXRoPzogc3RyaW5nKTogYm9vbGVhbjtcbiAgaGFzRXJyb3IoZXJyb3JDb2RlOiBFeHRyYWN0U3RyaW5nczxFPiwgcGF0aD86IGFueSk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBzdXBlci5oYXNFcnJvcihlcnJvckNvZGUsIHBhdGgpO1xuICB9XG5cbiAgc2V0RXJyb3JzKGVycm9yczogUGFydGlhbDxFPiB8IG51bGwsIG9wdHM6IEVtaXRFdmVudCA9IHt9KSB7XG4gICAgdGhpcy5lcnJvcnNTdWJqZWN0Lm5leHQoZXJyb3JzKTtcbiAgICByZXR1cm4gc3VwZXIuc2V0RXJyb3JzKGVycm9ycywgb3B0cyk7XG4gIH1cblxuICBtZXJnZUVycm9ycyhlcnJvcnM6IFBhcnRpYWw8RT4sIG9wdHM6IEVtaXRFdmVudCA9IHt9KTogdm9pZCB7XG4gICAgdGhpcy5zZXRFcnJvcnMobWVyZ2VFcnJvcnM8RT4odGhpcy5lcnJvcnMsIGVycm9ycyksIG9wdHMpO1xuICB9XG5cbiAgcmVtb3ZlRXJyb3Ioa2V5OiBrZXlvZiBFLCBvcHRzOiBFbWl0RXZlbnQgPSB7fSk6IHZvaWQge1xuICAgIHRoaXMuc2V0RXJyb3JzKHJlbW92ZUVycm9yPEU+KHRoaXMuZXJyb3JzLCBrZXkpLCBvcHRzKTtcbiAgfVxuXG4gIGdldEVycm9yPEsgZXh0ZW5kcyBrZXlvZiBFLCBLMSBleHRlbmRzIGtleW9mIENvbnRyb2xzVmFsdWU8VD4+KGVycm9yQ29kZTogSywgcGF0aD86IFtLMV0pOiBFW0tdIHwgbnVsbDtcbiAgZ2V0RXJyb3I8SyBleHRlbmRzIGtleW9mIEUsIEsxIGV4dGVuZHMga2V5b2YgQ29udHJvbHNWYWx1ZTxUPiwgSzIgZXh0ZW5kcyBrZXlvZiBDb250cm9sc1ZhbHVlPFQ+W0sxXT4oXG4gICAgZXJyb3JDb2RlOiBLLFxuICAgIHBhdGg/OiBbSzEsIEsyXVxuICApOiBFW0tdIHwgbnVsbDtcbiAgZ2V0RXJyb3I8XG4gICAgSyBleHRlbmRzIGtleW9mIEUsXG4gICAgSzEgZXh0ZW5kcyBrZXlvZiBDb250cm9sc1ZhbHVlPFQ+LFxuICAgIEsyIGV4dGVuZHMga2V5b2YgQ29udHJvbHNWYWx1ZTxUPltLMV0sXG4gICAgSzMgZXh0ZW5kcyBrZXlvZiBDb250cm9sc1ZhbHVlPFQ+W0sxXVtLMl1cbiAgPihlcnJvckNvZGU6IEssIHBhdGg/OiBbSzEsIEsyLCBLM10pOiBFW0tdIHwgbnVsbDtcbiAgZ2V0RXJyb3I8SyBleHRlbmRzIGtleW9mIEU+KGVycm9yQ29kZTogSywgcGF0aD86IHN0cmluZyk6IEVbS10gfCBudWxsO1xuICBnZXRFcnJvcjxLIGV4dGVuZHMga2V5b2YgRT4oZXJyb3JDb2RlOiBLLCBwYXRoPzogYW55KTogRVtLXSB8IG51bGwge1xuICAgIHJldHVybiBzdXBlci5nZXRFcnJvcihlcnJvckNvZGUgYXMgYW55LCBwYXRoKSBhcyBFW0tdIHwgbnVsbDtcbiAgfVxuXG4gIGhhc0Vycm9yQW5kVG91Y2hlZDxQMSBleHRlbmRzIGtleW9mIENvbnRyb2xzVmFsdWU8VD4+KGVycm9yOiBFeHRyYWN0U3RyaW5nczxFPiwgcHJvcDE/OiBQMSk6IGJvb2xlYW47XG4gIGhhc0Vycm9yQW5kVG91Y2hlZDxQMSBleHRlbmRzIGtleW9mIENvbnRyb2xzVmFsdWU8VD4sIFAyIGV4dGVuZHMga2V5b2YgQ29udHJvbHNWYWx1ZTxUPltQMV0+KFxuICAgIGVycm9yOiBFeHRyYWN0U3RyaW5nczxFPixcbiAgICBwcm9wMT86IFAxLFxuICAgIHByb3AyPzogUDJcbiAgKTogYm9vbGVhbjtcbiAgaGFzRXJyb3JBbmRUb3VjaGVkPFxuICAgIFAxIGV4dGVuZHMga2V5b2YgQ29udHJvbHNWYWx1ZTxUPixcbiAgICBQMiBleHRlbmRzIGtleW9mIENvbnRyb2xzVmFsdWU8VD5bUDFdLFxuICAgIFAzIGV4dGVuZHMga2V5b2YgQ29udHJvbHNWYWx1ZTxUPltQMV1bUDJdXG4gID4oZXJyb3I6IEV4dHJhY3RTdHJpbmdzPEU+LCBwcm9wMT86IFAxLCBwcm9wMj86IFAyLCBwcm9wMz86IFAzKTogYm9vbGVhbjtcbiAgaGFzRXJyb3JBbmRUb3VjaGVkPFxuICAgIFAxIGV4dGVuZHMga2V5b2YgQ29udHJvbHNWYWx1ZTxUPixcbiAgICBQMiBleHRlbmRzIGtleW9mIENvbnRyb2xzVmFsdWU8VD5bUDFdLFxuICAgIFAzIGV4dGVuZHMga2V5b2YgQ29udHJvbHNWYWx1ZTxUPltQMV1bUDJdLFxuICAgIFA0IGV4dGVuZHMga2V5b2YgQ29udHJvbHNWYWx1ZTxUPltQMV1bUDJdW1AzXVxuICA+KGVycm9yOiBFeHRyYWN0U3RyaW5nczxFPiwgcHJvcDE/OiBQMSwgcHJvcDI/OiBQMiwgcHJvcDM/OiBQMywgcHJvcDQ/OiBQNCk6IGJvb2xlYW47XG4gIGhhc0Vycm9yQW5kVG91Y2hlZChlcnJvcjogYW55LCAuLi5wYXRoOiBhbnkpOiBib29sZWFuIHtcbiAgICByZXR1cm4gaGFzRXJyb3JBbmRUb3VjaGVkKHRoaXMsIGVycm9yLCAuLi5wYXRoKTtcbiAgfVxuXG4gIGhhc0Vycm9yQW5kRGlydHk8UDEgZXh0ZW5kcyBrZXlvZiBDb250cm9sc1ZhbHVlPFQ+PihlcnJvcjogRXh0cmFjdFN0cmluZ3M8RT4sIHByb3AxPzogUDEpOiBib29sZWFuO1xuICBoYXNFcnJvckFuZERpcnR5PFAxIGV4dGVuZHMga2V5b2YgQ29udHJvbHNWYWx1ZTxUPiwgUDIgZXh0ZW5kcyBrZXlvZiBDb250cm9sc1ZhbHVlPFQ+W1AxXT4oXG4gICAgZXJyb3I6IEV4dHJhY3RTdHJpbmdzPEU+LFxuICAgIHByb3AxPzogUDEsXG4gICAgcHJvcDI/OiBQMlxuICApOiBib29sZWFuO1xuICBoYXNFcnJvckFuZERpcnR5PFxuICAgIFAxIGV4dGVuZHMga2V5b2YgQ29udHJvbHNWYWx1ZTxUPixcbiAgICBQMiBleHRlbmRzIGtleW9mIENvbnRyb2xzVmFsdWU8VD5bUDFdLFxuICAgIFAzIGV4dGVuZHMga2V5b2YgQ29udHJvbHNWYWx1ZTxUPltQMV1bUDJdXG4gID4oZXJyb3I6IEV4dHJhY3RTdHJpbmdzPEU+LCBwcm9wMT86IFAxLCBwcm9wMj86IFAyLCBwcm9wMz86IFAzKTogYm9vbGVhbjtcbiAgaGFzRXJyb3JBbmREaXJ0eTxcbiAgICBQMSBleHRlbmRzIGtleW9mIENvbnRyb2xzVmFsdWU8VD4sXG4gICAgUDIgZXh0ZW5kcyBrZXlvZiBDb250cm9sc1ZhbHVlPFQ+W1AxXSxcbiAgICBQMyBleHRlbmRzIGtleW9mIENvbnRyb2xzVmFsdWU8VD5bUDFdW1AyXSxcbiAgICBQNCBleHRlbmRzIGtleW9mIENvbnRyb2xzVmFsdWU8VD5bUDFdW1AyXVtQM11cbiAgPihlcnJvcjogRXh0cmFjdFN0cmluZ3M8RT4sIHByb3AxPzogUDEsIHByb3AyPzogUDIsIHByb3AzPzogUDMsIHByb3A0PzogUDQpOiBib29sZWFuO1xuICBoYXNFcnJvckFuZERpcnR5KGVycm9yOiBhbnksIC4uLnBhdGg6IGFueSk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBoYXNFcnJvckFuZERpcnR5KHRoaXMsIGVycm9yLCAuLi5wYXRoKTtcbiAgfVxuXG4gIHNldEVuYWJsZShlbmFibGUgPSB0cnVlLCBvcHRzPzogQ29udHJvbEV2ZW50T3B0aW9ucykge1xuICAgIGVuYWJsZUNvbnRyb2wodGhpcywgZW5hYmxlLCBvcHRzKTtcbiAgfVxuXG4gIHNldERpc2FibGUoZGlzYWJsZSA9IHRydWUsIG9wdHM/OiBDb250cm9sRXZlbnRPcHRpb25zKSB7XG4gICAgZGlzYWJsZUNvbnRyb2wodGhpcywgZGlzYWJsZSwgb3B0cyk7XG4gIH1cblxuICBwZXJzaXN0KGtleTogc3RyaW5nLCB7IGRlYm91bmNlVGltZSwgbWFuYWdlciwgYXJyQ29udHJvbEZhY3RvcnkgfTogUGVyc2lzdE9wdGlvbnM8VD4pOiBPYnNlcnZhYmxlPFQ+IHtcbiAgICBjb25zdCBwZXJzaXN0TWFuYWdlciA9IG1hbmFnZXIgfHwgbmV3IExvY2FsU3RvcmFnZU1hbmFnZXIoKTtcbiAgICByZXR1cm4gdGhpcy5yZXN0b3JlKGtleSwgcGVyc2lzdE1hbmFnZXIsIGFyckNvbnRyb2xGYWN0b3J5KS5waXBlKFxuICAgICAgc3dpdGNoTWFwKCgpID0+XG4gICAgICAgIHBlcnNpc3RWYWx1ZSQodGhpcywga2V5LCB7XG4gICAgICAgICAgZGVib3VuY2VUaW1lOiBkZWJvdW5jZVRpbWUgfHwgMjUwLFxuICAgICAgICAgIG1hbmFnZXI6IHBlcnNpc3RNYW5hZ2VyXG4gICAgICAgIH0pXG4gICAgICApXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgcmVzdG9yZShrZXk6IHN0cmluZywgbWFuYWdlcjogUGVyc2lzdE1hbmFnZXI8VD4sIGFyckNvbnRyb2xGYWN0b3J5OiBDb250cm9sRmFjdG9yeU1hcDxUPik6IE9ic2VydmFibGU8VD4ge1xuICAgIHJldHVybiB3cmFwSW50b09ic2VydmFibGU8VD4obWFuYWdlci5nZXRWYWx1ZShrZXkpKS5waXBlKFxuICAgICAgdGFrZSgxKSxcbiAgICAgIHRhcCh2YWx1ZSA9PiB7XG4gICAgICAgIGlmICghdmFsdWUpIHJldHVybjtcbiAgICAgICAgaGFuZGxlRm9ybUFycmF5cyh0aGlzLCB2YWx1ZSwgYXJyQ29udHJvbEZhY3RvcnkpO1xuICAgICAgICB0aGlzLnBhdGNoVmFsdWUodmFsdWUsIHsgZW1pdEV2ZW50OiBmYWxzZSB9KTtcbiAgICAgIH0pXG4gICAgKTtcbiAgfVxufVxuIl19

@@ -0,0 +0,0 @@ export class LocalStorageManager {

export {};
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGVyc2lzdE1hbmFnZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ25lYXQvcmVhY3RpdmUtZm9ybXMvc3JjL2xpYi9wZXJzaXN0TWFuYWdlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuXG5leHBvcnQgaW50ZXJmYWNlIFBlcnNpc3RNYW5hZ2VyPFQ+IHtcbiAgc2V0VmFsdWUoa2V5OiBzdHJpbmcsIGRhdGE6IFQpOiBUIHwgUHJvbWlzZTxUPiB8IE9ic2VydmFibGU8VD47XG4gIGdldFZhbHVlKGtleTogc3RyaW5nKTogVCB8IFByb21pc2U8VD4gfCBPYnNlcnZhYmxlPFQ+O1xufVxuIl19

@@ -0,0 +0,0 @@ export class SessionStorageManager {

export {};
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ25lYXQvcmVhY3RpdmUtZm9ybXMvc3JjL2xpYi90eXBlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQWJzdHJhY3RDb250cm9sIGFzIE5nQWJzdHJhY3RDb250cm9sLFxuICBBYnN0cmFjdENvbnRyb2xPcHRpb25zIGFzIE5nQWJzdHJhY3RDb250cm9sT3B0aW9ucyxcbiAgVmFsaWRhdGlvbkVycm9ycyBhcyBOZ1ZhbGlkYXRpb25FcnJvcnNcbn0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgRm9ybUFycmF5IH0gZnJvbSAnLi9mb3JtQXJyYXknO1xuaW1wb3J0IHsgRm9ybUNvbnRyb2wgfSBmcm9tICcuL2Zvcm1Db250cm9sJztcbmltcG9ydCB7IEZvcm1Hcm91cCB9IGZyb20gJy4vZm9ybUdyb3VwJztcbmltcG9ydCB7IFBlcnNpc3RNYW5hZ2VyIH0gZnJvbSAnLi9wZXJzaXN0TWFuYWdlcic7XG5cbmV4cG9ydCB0eXBlIFZhbGlkYXRpb25FcnJvcnM8VCA9IE5nVmFsaWRhdGlvbkVycm9ycz4gPSBUO1xuZXhwb3J0IHR5cGUgVmFsaWRhdG9yRm48VCA9IGFueSwgRSA9IGFueT4gPSAoY29udHJvbDogQWJzdHJhY3RDb250cm9sPFQ+KSA9PiBWYWxpZGF0aW9uRXJyb3JzPEU+IHwgbnVsbDtcbmV4cG9ydCB0eXBlIEFzeW5jVmFsaWRhdG9yRm48VCA9IGFueSwgRSA9IGFueT4gPSAoXG4gIGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbDxUPlxuKSA9PiBQcm9taXNlPFZhbGlkYXRpb25FcnJvcnM8RT4gfCBudWxsPiB8IE9ic2VydmFibGU8VmFsaWRhdGlvbkVycm9yczxFPiB8IG51bGw+O1xuXG5leHBvcnQgaW50ZXJmYWNlIEFic3RyYWN0Q29udHJvbE9wdGlvbnM8VCA9IGFueSwgRSA9IGFueT4gZXh0ZW5kcyBOZ0Fic3RyYWN0Q29udHJvbE9wdGlvbnMge1xuICB2YWxpZGF0b3JzPzogVmFsaWRhdG9yRm48VCwgRT4gfCBWYWxpZGF0b3JGbjxULCBFPltdIHwgbnVsbDtcbiAgYXN5bmNWYWxpZGF0b3JzPzogQXN5bmNWYWxpZGF0b3JGbjxULCBFPiB8IEFzeW5jVmFsaWRhdG9yRm48VCwgRT5bXSB8IG51bGw7XG59XG5cbmV4cG9ydCB0eXBlIFZhbGlkYXRvck9yT3B0cyA9IFZhbGlkYXRvckZuIHwgVmFsaWRhdG9yRm5bXSB8IEFic3RyYWN0Q29udHJvbE9wdGlvbnMgfCBudWxsO1xuZXhwb3J0IHR5cGUgQXN5bmNWYWxpZGF0b3IgPSBBc3luY1ZhbGlkYXRvckZuIHwgQXN5bmNWYWxpZGF0b3JGbltdIHwgbnVsbDtcbmV4cG9ydCB0eXBlIFZhbGlkYXRvciA9IFZhbGlkYXRvckZuIHwgVmFsaWRhdG9yRm5bXTtcblxuZXhwb3J0IGludGVyZmFjZSBDb250cm9sT3B0aW9ucyB7XG4gIG9ubHlTZWxmPzogYm9vbGVhbjtcbiAgZW1pdEV2ZW50PzogYm9vbGVhbjtcbiAgZW1pdE1vZGVsVG9WaWV3Q2hhbmdlPzogYm9vbGVhbjtcbiAgZW1pdFZpZXdUb01vZGVsQ2hhbmdlPzogYm9vbGVhbjtcbn1cblxuZXhwb3J0IHR5cGUgQ29udHJvbEV2ZW50T3B0aW9ucyA9IFBpY2s8Q29udHJvbE9wdGlvbnMsICdlbWl0RXZlbnQnIHwgJ29ubHlTZWxmJz47XG5leHBvcnQgdHlwZSBPbmx5U2VsZiA9IFBpY2s8Q29udHJvbE9wdGlvbnMsICdvbmx5U2VsZic+O1xuZXhwb3J0IHR5cGUgRW1pdEV2ZW50ID0gUGljazxDb250cm9sT3B0aW9ucywgJ2VtaXRFdmVudCc+O1xuZXhwb3J0IHR5cGUgQ29udHJvbFBhdGggPSBBcnJheTxzdHJpbmcgfCBudW1iZXI+IHwgc3RyaW5nO1xuZXhwb3J0IHR5cGUgQ29udHJvbFN0YXRlID0gJ1ZBTElEJyB8ICdJTlZBTElEJyB8ICdQRU5ESU5HJyB8ICdESVNBQkxFRCc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQWJzdHJhY3RDb250cm9sPFQgPSBhbnk+IGV4dGVuZHMgTmdBYnN0cmFjdENvbnRyb2wge1xuICB2YWx1ZTogVDtcbn1cblxuZXhwb3J0IHR5cGUgRXh0cmFjdFN0cmluZ3M8VD4gPSBFeHRyYWN0PGtleW9mIFQsIHN0cmluZz47XG5cbmV4cG9ydCBpbnRlcmZhY2UgTmdWYWxpZGF0b3JzRXJyb3JzIHtcbiAgcmVxdWlyZWQ6IHRydWU7XG4gIGVtYWlsOiB0cnVlO1xuICBwYXR0ZXJuOiB7IHJlcXVpcmVkUGF0dGVybjogc3RyaW5nOyBhY3R1YWxWYWx1ZTogc3RyaW5nIH07XG4gIG1pbmxlbmd0aDogeyByZXF1aXJlZExlbmd0aDogbnVtYmVyOyBhY3R1YWxMZW5ndGg6IG51bWJlciB9O1xuICBtYXhsZW5ndGg6IHsgcmVxdWlyZWRMZW5ndGg6IG51bWJlcjsgYWN0dWFsTGVuZ3RoOiBudW1iZXIgfTtcbiAgbWluOiB7IG1pbjogbnVtYmVyOyBhY3R1YWw6IG51bWJlciB9O1xuICBtYXg6IHsgbWF4OiBudW1iZXI7IGFjdHVhbDogbnVtYmVyIH07XG59XG5cbmV4cG9ydCB0eXBlIEJveGVkVmFsdWU8VD4gPSB7IHZhbHVlOiBUOyBkaXNhYmxlZD86IGJvb2xlYW4gfTtcbmV4cG9ydCB0eXBlIE9yQm94ZWRWYWx1ZTxUPiA9IFQgfCBCb3hlZFZhbHVlPFQ+O1xuXG5leHBvcnQgdHlwZSBPYmogPSB7IFtrZXk6IHN0cmluZ106IGFueSB9O1xudHlwZSBBcnJheVR5cGU8VD4gPSBUIGV4dGVuZHMgQXJyYXk8aW5mZXIgUj4gPyBSIDogYW55O1xuXG5leHBvcnQgdHlwZSBLZXlWYWx1ZUNvbnRyb2xzPFQgZXh0ZW5kcyBPYmo+ID0ge1xuICBbSyBpbiBrZXlvZiBUXTogVFtLXSBleHRlbmRzIEZvcm1Db250cm9sPFRbS10+XG4gICAgPyBGb3JtQ29udHJvbDxUW0tdPlxuICAgIDogVFtLXSBleHRlbmRzIEZvcm1Hcm91cDxUW0tdPlxuICAgID8gRm9ybUdyb3VwPFRbS10+XG4gICAgOiBUW0tdIGV4dGVuZHMgRm9ybUFycmF5PEFycmF5VHlwZTxUW0tdPj5cbiAgICA/IEZvcm1BcnJheTxBcnJheVR5cGU8VFtLXT4+XG4gICAgOiBBYnN0cmFjdENvbnRyb2w8VFtLXT47XG59O1xuZXhwb3J0IHR5cGUgRXh0cmFjdEFic3RyYWN0Q29udHJvbDxULCBVPiA9IFQgZXh0ZW5kcyBLZXlWYWx1ZUNvbnRyb2xzPGFueT5cbiAgPyB7IFtLIGluIGtleW9mIFVdOiBBYnN0cmFjdENvbnRyb2w8VVtLXT4gfVxuICA6IFQ7XG5cbmV4cG9ydCB0eXBlIEFycmF5S2V5czxUPiA9IHsgW0sgaW4ga2V5b2YgVF06IFRbS10gZXh0ZW5kcyBBcnJheTxhbnk+ID8gSyA6IG5ldmVyIH1ba2V5b2YgVF07XG5leHBvcnQgdHlwZSBDb250cm9sRmFjdG9yeTxUPiA9ICh2YWx1ZTogVCkgPT4gQWJzdHJhY3RDb250cm9sPFQ+O1xuZXhwb3J0IHR5cGUgQ29udHJvbEZhY3RvcnlNYXA8VD4gPSB7XG4gIFtLIGluIEFycmF5S2V5czxUPl0/OiBDb250cm9sRmFjdG9yeTxBcnJheVR5cGU8VFtLXT4+O1xufTtcblxuZXhwb3J0IGludGVyZmFjZSBQZXJzaXN0T3B0aW9uczxUPiB7XG4gIGRlYm91bmNlVGltZT86IG51bWJlcjtcbiAgbWFuYWdlcj86IFBlcnNpc3RNYW5hZ2VyPFQ+O1xuICBhcnJDb250cm9sRmFjdG9yeT86IENvbnRyb2xGYWN0b3J5TWFwPFQ+O1xufVxuIl19
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ25lYXQvcmVhY3RpdmUtZm9ybXMvc3JjL2xpYi90eXBlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQWJzdHJhY3RDb250cm9sIGFzIE5nQWJzdHJhY3RDb250cm9sLFxuICBBYnN0cmFjdENvbnRyb2xPcHRpb25zIGFzIE5nQWJzdHJhY3RDb250cm9sT3B0aW9ucyxcbiAgVmFsaWRhdGlvbkVycm9ycyBhcyBOZ1ZhbGlkYXRpb25FcnJvcnNcbn0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgRm9ybUFycmF5IH0gZnJvbSAnLi9mb3JtQXJyYXknO1xuaW1wb3J0IHsgRm9ybUNvbnRyb2wgfSBmcm9tICcuL2Zvcm1Db250cm9sJztcbmltcG9ydCB7IEZvcm1Hcm91cCB9IGZyb20gJy4vZm9ybUdyb3VwJztcbmltcG9ydCB7IFBlcnNpc3RNYW5hZ2VyIH0gZnJvbSAnLi9wZXJzaXN0TWFuYWdlcic7XG5pbXBvcnQgeyBOZXN0ZWRGb3JtIH0gZnJvbSAnLi90eXBlLXRlc3RzL21vY2tzLnNwZWMnO1xuXG5leHBvcnQgdHlwZSBWYWxpZGF0aW9uRXJyb3JzPFQgPSBOZ1ZhbGlkYXRpb25FcnJvcnM+ID0gVDtcbmV4cG9ydCB0eXBlIFZhbGlkYXRvckZuPFQgPSBhbnksIEUgPSBhbnk+ID0gKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbDxUPikgPT4gVmFsaWRhdGlvbkVycm9yczxFPiB8IG51bGw7XG5leHBvcnQgdHlwZSBBc3luY1ZhbGlkYXRvckZuPFQgPSBhbnksIEUgPSBhbnk+ID0gKFxuICBjb250cm9sOiBBYnN0cmFjdENvbnRyb2w8VD5cbikgPT4gUHJvbWlzZTxWYWxpZGF0aW9uRXJyb3JzPEU+IHwgbnVsbD4gfCBPYnNlcnZhYmxlPFZhbGlkYXRpb25FcnJvcnM8RT4gfCBudWxsPjtcblxuZXhwb3J0IGludGVyZmFjZSBBYnN0cmFjdENvbnRyb2xPcHRpb25zPFQgPSBhbnksIEUgPSBhbnk+IGV4dGVuZHMgTmdBYnN0cmFjdENvbnRyb2xPcHRpb25zIHtcbiAgdmFsaWRhdG9ycz86IFZhbGlkYXRvckZuPFQsIEU+IHwgVmFsaWRhdG9yRm48VCwgRT5bXSB8IG51bGw7XG4gIGFzeW5jVmFsaWRhdG9ycz86IEFzeW5jVmFsaWRhdG9yRm48VCwgRT4gfCBBc3luY1ZhbGlkYXRvckZuPFQsIEU+W10gfCBudWxsO1xufVxuXG5leHBvcnQgdHlwZSBWYWxpZGF0b3JPck9wdHMgPSBWYWxpZGF0b3JGbiB8IFZhbGlkYXRvckZuW10gfCBBYnN0cmFjdENvbnRyb2xPcHRpb25zIHwgbnVsbDtcbmV4cG9ydCB0eXBlIEFzeW5jVmFsaWRhdG9yID0gQXN5bmNWYWxpZGF0b3JGbiB8IEFzeW5jVmFsaWRhdG9yRm5bXSB8IG51bGw7XG5leHBvcnQgdHlwZSBWYWxpZGF0b3IgPSBWYWxpZGF0b3JGbiB8IFZhbGlkYXRvckZuW107XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ29udHJvbE9wdGlvbnMge1xuICBvbmx5U2VsZj86IGJvb2xlYW47XG4gIGVtaXRFdmVudD86IGJvb2xlYW47XG4gIGVtaXRNb2RlbFRvVmlld0NoYW5nZT86IGJvb2xlYW47XG4gIGVtaXRWaWV3VG9Nb2RlbENoYW5nZT86IGJvb2xlYW47XG59XG5cbmV4cG9ydCB0eXBlIENvbnRyb2xFdmVudE9wdGlvbnMgPSBQaWNrPENvbnRyb2xPcHRpb25zLCAnZW1pdEV2ZW50JyB8ICdvbmx5U2VsZic+O1xuZXhwb3J0IHR5cGUgT25seVNlbGYgPSBQaWNrPENvbnRyb2xPcHRpb25zLCAnb25seVNlbGYnPjtcbmV4cG9ydCB0eXBlIEVtaXRFdmVudCA9IFBpY2s8Q29udHJvbE9wdGlvbnMsICdlbWl0RXZlbnQnPjtcbmV4cG9ydCB0eXBlIENvbnRyb2xQYXRoID0gQXJyYXk8c3RyaW5nIHwgbnVtYmVyPiB8IHN0cmluZztcbmV4cG9ydCB0eXBlIENvbnRyb2xTdGF0ZSA9ICdWQUxJRCcgfCAnSU5WQUxJRCcgfCAnUEVORElORycgfCAnRElTQUJMRUQnO1xuXG5leHBvcnQgaW50ZXJmYWNlIEFic3RyYWN0Q29udHJvbDxUID0gYW55PiBleHRlbmRzIE5nQWJzdHJhY3RDb250cm9sIHtcbiAgdmFsdWU6IFQ7XG59XG5cbmV4cG9ydCB0eXBlIEV4dHJhY3RTdHJpbmdzPFQ+ID0gRXh0cmFjdDxrZXlvZiBULCBzdHJpbmc+O1xuXG5leHBvcnQgaW50ZXJmYWNlIE5nVmFsaWRhdG9yc0Vycm9ycyB7XG4gIHJlcXVpcmVkOiB0cnVlO1xuICBlbWFpbDogdHJ1ZTtcbiAgcGF0dGVybjogeyByZXF1aXJlZFBhdHRlcm46IHN0cmluZzsgYWN0dWFsVmFsdWU6IHN0cmluZyB9O1xuICBtaW5sZW5ndGg6IHsgcmVxdWlyZWRMZW5ndGg6IG51bWJlcjsgYWN0dWFsTGVuZ3RoOiBudW1iZXIgfTtcbiAgbWF4bGVuZ3RoOiB7IHJlcXVpcmVkTGVuZ3RoOiBudW1iZXI7IGFjdHVhbExlbmd0aDogbnVtYmVyIH07XG4gIG1pbjogeyBtaW46IG51bWJlcjsgYWN0dWFsOiBudW1iZXIgfTtcbiAgbWF4OiB7IG1heDogbnVtYmVyOyBhY3R1YWw6IG51bWJlciB9O1xufVxuXG5leHBvcnQgdHlwZSBCb3hlZFZhbHVlPFQ+ID0geyB2YWx1ZTogVDsgZGlzYWJsZWQ/OiBib29sZWFuIH07XG5leHBvcnQgdHlwZSBPckJveGVkVmFsdWU8VD4gPSBUIHwgQm94ZWRWYWx1ZTxUPjtcblxuZXhwb3J0IHR5cGUgT2JqID0geyBba2V5OiBzdHJpbmddOiBhbnkgfTtcbnR5cGUgQXJyYXlUeXBlPFQ+ID0gVCBleHRlbmRzIEFycmF5PGluZmVyIFI+ID8gUiA6IGFueTtcblxuLypcbiAqIENvbnZlcnQgYSBDb250cm9sIHR5cGUgb3IgYSB2YWx1ZSB0eXBlXG4gKiBMZWF2aW5nIG5vbi1jb250cm9sIHR5cGVzIGFzIGlzXG4gKiAqL1xuZXhwb3J0IHR5cGUgQ29udHJvbFZhbHVlPFQ+ID0gVCBleHRlbmRzIEZvcm1Db250cm9sIHwgRm9ybUdyb3VwIHwgRm9ybUFycmF5IHwgQWJzdHJhY3RDb250cm9sID8gVFsndmFsdWUnXSA6IFQ7XG5cbi8qKlxuICogQ29udmVydCBhbiBvYmplY3Qgb2YgYSBGb3JtR3JvdXAncyBcInZhbHVlXCIgb3IgXCJjb250cm9sc1wiIHRvIGl0cyBcInZhbHVlXCJcbiAqICovXG5leHBvcnQgdHlwZSBDb250cm9sc1ZhbHVlPFQgZXh0ZW5kcyBvYmplY3Q+ID0ge1xuICBbSyBpbiBrZXlvZiBUXTogQ29udHJvbFZhbHVlPFRbS10+O1xufTtcblxudHlwZSBQcmltaXRpdmUgPSBudW1iZXIgfCBzdHJpbmcgfCBib29sZWFuIHwgbnVsbCB8IHVuZGVmaW5lZDtcblxudHlwZSBVbndyYXBBcnJheTxUPiA9IFQgZXh0ZW5kcyBBcnJheTxpbmZlciBVPiA/IFUgOiBuZXZlcjtcblxuLyoqXG4gKiBDb252ZXJ0cyBhIHZhbHVlIC8gZm9ybSBjb250cm9sIHRvIGZvcm0gY29udHJvbFxuICogQ29udmVydGluZyBub24tY29udHJvbCB0eXBlcyB0byBBYnN0cmFjdENvbnRyb2wgb2YgdGhlIHR5cGVcbiAqXG4gKiBUaGUgaW50ZXJtZWRpYXRlIHR5cGUgaXMgdG8gc29sdmUgdGhlIGlzc3VlIG9mIFQgYmVpbmcgYW55LCB0aHVzIGFzc2lnbmFibGUgdG8gYWxsIGNvbmRpdGlvbiBhbmQgcmVzdWx0aW5nIGluIHRoZSBcImFueVwiIHR5cGUuXG4gKlxuICogTm90ZSB0aGUgdXNlIG9mIGFuIGFycmF5IGlzIHRvIHByZXZlbnQgdXNlIG9mIGRpc3RyaWJ1dGl2ZSBjb25kaXRpb25hbCB0eXBlcy4gKGh0dHBzOi8vZ2l0aHViLmNvbS9taWNyb3NvZnQvVHlwZVNjcmlwdC9pc3N1ZXMvMzcyNzkpXG4gKiAqL1xudHlwZSBBYnN0cmFjdENvbnRyb2xPZldpdGhQb3RlbnRpYWxVbmlvbjxUPiA9IFtUXSBleHRlbmRzIFtBYnN0cmFjdENvbnRyb2xdXG4gID8gVFxuICA6IFtUXSBleHRlbmRzIFtQcmltaXRpdmVdXG4gID8gRm9ybUNvbnRyb2w8VD5cbiAgOiBBYnN0cmFjdENvbnRyb2w8VD47XG5leHBvcnQgdHlwZSBBYnN0cmFjdENvbnRyb2xPZjxUPiA9IEFic3RyYWN0Q29udHJvbCBleHRlbmRzIEFic3RyYWN0Q29udHJvbE9mV2l0aFBvdGVudGlhbFVuaW9uPFQ+XG4gID8gQWJzdHJhY3RDb250cm9sPEFic3RyYWN0Q29udHJvbE9mV2l0aFBvdGVudGlhbFVuaW9uPFQ+Wyd2YWx1ZSddPlxuICA6IEFic3RyYWN0Q29udHJvbE9mV2l0aFBvdGVudGlhbFVuaW9uPFQ+O1xuXG4vKipcbiAqIENvbnZlcnQgYW4gb2JqZWN0IG9mIGEgRm9ybUdyb3VwJ3MgXCJ2YWx1ZVwiIG9yIFwiY29udHJvbHNcIiB0byBcImNvbnRyb2xzXCIuXG4gKiBDb252ZXJ0aW5nIG5vbi1jb250cm9sIHR5cGVzIHRvIEFic3RyYWN0Q29udHJvbCBvZiB0aGUgdHlwZVxuICogKi9cbmV4cG9ydCB0eXBlIEFic3RyYWN0Q29udHJvbHNPZjxUIGV4dGVuZHMgT2JqPiA9IHtcbiAgW0sgaW4ga2V5b2YgVF06IEFic3RyYWN0Q29udHJvbE9mPFRbS10+O1xufTtcblxuLyoqXG4gKiBVc2Ugd2l0aCBGb3JtR3JvdXAgeW91IHdhbnQgYSBGb3JtQ29udHJvbCBmb3IgYSBwcmltaXRpdmUsIGEgRm9ybUdyb3VwIGZvciBhbiBvYmplY3QsIGFuZCBhIEZvcm1BcnJheSBmb3IgYW4gYXJyYXlcbiAqXG4gKiBAZXhhbXBsZVxuICogbmV3XG4gKiAgIEZvcm1Hcm91cDxDb250cm9sc09mPHtcbiAqICAgbmFtZTogc3RyaW5nO1xuICogICBwaG9uZToge1xuICogICAgIG51bTogbnVtYmVyO1xuICogICAgIHByZWZpeDogbnVtYmVyO1xuICogICB9O1xuICogICBjaGlsZHJlbjogc3RyaW5nW10sXG4gKiB9Pj4oe1xuICogICBuYW1lOiBuZXcgRm9ybUNvbnRyb2w8c3RyaW5nPigpLFxuICogICBwaG9uZTogbmV3IEZvcm1Hcm91cCh7XG4gKiAgICAgbnVtOiBuZXcgRm9ybUNvbnRyb2w8bnVtYmVyPigpLFxuICogICAgIHByZWZpeDogbmV3IEZvcm1Db250cm9sPG51bWJlcj4oKSxcbiAqICAgfSksXG4gKiAgIGNoaWxkcmVuOiBuZXcgRm9ybUFycmF5KFtcbiAqICAgICBuZXcgRm9ybUNvbnRyb2w8bnVtYmVyPigpXG4gKiAgIF0pXG4gKiB9KTtcbiAqICovXG5leHBvcnQgdHlwZSBDb250cm9sT2Y8VD4gPSBbVF0gZXh0ZW5kcyBbYW55W11dXG4gID8gRm9ybUFycmF5PENvbnRyb2xPZjxVbndyYXBBcnJheTxUPj4+XG4gIDogW1RdIGV4dGVuZHMgW29iamVjdF1cbiAgPyBGb3JtR3JvdXA8Q29udHJvbHNPZjxUPj5cbiAgOiBGb3JtQ29udHJvbDxUPjtcbmV4cG9ydCB0eXBlIENvbnRyb2xzT2Y8VCBleHRlbmRzIE9iamVjdCwgVE92ZXJyaWRlcyBleHRlbmRzIFBhcnRpYWw8QWJzdHJhY3RDb250cm9sc09mPFQ+PiA9IHt9PiA9IHtcbiAgW2tleSBpbiBrZXlvZiBUXTogdW5rbm93biBleHRlbmRzIFRPdmVycmlkZXNba2V5XSA/IENvbnRyb2xPZjxUW2tleV0+IDogVE92ZXJyaWRlc1trZXldO1xufTtcblxuZXhwb3J0IHR5cGUgQXJyYXlLZXlzPFQ+ID0geyBbSyBpbiBrZXlvZiBUXTogVFtLXSBleHRlbmRzIEFycmF5PGFueT4gPyBLIDogbmV2ZXIgfVtrZXlvZiBUXTtcbmV4cG9ydCB0eXBlIENvbnRyb2xGYWN0b3J5PFQ+ID0gKHZhbHVlOiBUKSA9PiBBYnN0cmFjdENvbnRyb2w8VD47XG5leHBvcnQgdHlwZSBDb250cm9sRmFjdG9yeU1hcDxUPiA9IHtcbiAgW0sgaW4gQXJyYXlLZXlzPFQ+XT86IENvbnRyb2xGYWN0b3J5PEFycmF5VHlwZTxUW0tdPj47XG59O1xuXG5leHBvcnQgaW50ZXJmYWNlIFBlcnNpc3RPcHRpb25zPFQ+IHtcbiAgZGVib3VuY2VUaW1lPzogbnVtYmVyO1xuICBtYW5hZ2VyPzogUGVyc2lzdE1hbmFnZXI8VD47XG4gIGFyckNvbnRyb2xGYWN0b3J5PzogQ29udHJvbEZhY3RvcnlNYXA8VD47XG59XG4iXX0=

@@ -0,0 +0,0 @@ import { from, isObservable, of } from 'rxjs';

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

export * from './public-api';
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmduZWF0LXJlYWN0aXZlLWZvcm1zLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvbmduZWF0L3JlYWN0aXZlLWZvcm1zL3NyYy9uZ25lYXQtcmVhY3RpdmUtZm9ybXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFFSCxjQUFjLGNBQWMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogR2VuZXJhdGVkIGJ1bmRsZSBpbmRleC4gRG8gbm90IGVkaXQuXG4gKi9cblxuZXhwb3J0ICogZnJvbSAnLi9wdWJsaWMtYXBpJztcblxuZXhwb3J0IHtBc3luY1ZhbGlkYXRvciBhcyDJtWIsRXh0cmFjdEFic3RyYWN0Q29udHJvbCBhcyDJtWQsT3JCb3hlZFZhbHVlIGFzIMm1YyxWYWxpZGF0b3JPck9wdHMgYXMgybVhfSBmcm9tICcuL2xpYi90eXBlcyc7Il19
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmduZWF0LXJlYWN0aXZlLWZvcm1zLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvbmduZWF0L3JlYWN0aXZlLWZvcm1zL3NyYy9uZ25lYXQtcmVhY3RpdmUtZm9ybXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFFSCxjQUFjLGNBQWMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogR2VuZXJhdGVkIGJ1bmRsZSBpbmRleC4gRG8gbm90IGVkaXQuXG4gKi9cblxuZXhwb3J0ICogZnJvbSAnLi9wdWJsaWMtYXBpJztcblxuZXhwb3J0IHtBYnN0cmFjdENvbnRyb2xPZiBhcyDJtWQsQWJzdHJhY3RDb250cm9sc09mIGFzIMm1ZSxBc3luY1ZhbGlkYXRvciBhcyDJtWIsT3JCb3hlZFZhbHVlIGFzIMm1YyxWYWxpZGF0b3JPck9wdHMgYXMgybVhfSBmcm9tICcuL2xpYi90eXBlcyc7Il19

@@ -0,0 +0,0 @@ export { FormArray } from './lib/formArray';

@@ -437,3 +437,3 @@ import { FormArray as FormArray$1, FormControl as FormControl$1, FormGroup as FormGroup$1, FormBuilder as FormBuilder$1 } from '@angular/forms';

getControl(...names) {
return this.get(names.join('.'));
return this.get(names);
}

@@ -578,3 +578,2 @@ addControl(name, control) {

}
// Todo: dan remove the any
return new FormGroup(controls, { asyncValidators, updateOn, validators });

@@ -581,0 +580,0 @@ }

@@ -0,0 +0,0 @@ import { FormArray as NgFormArray } from '@angular/forms';

@@ -0,0 +0,0 @@ import { ControlValueAccessor as NgControlValueAccessor } from '@angular/forms';

import { FormArray as NgFormArray } from '@angular/forms';
import { Observable, Subscription } from 'rxjs';
import { AbstractControl, AsyncValidator, AsyncValidatorFn, ControlEventOptions, ControlOptions, ControlPath, ControlState, EmitEvent, ExtractStrings, OnlySelf, Validator, ValidatorFn, ValidatorOrOpts } from './types';
import { AsyncValidator, AsyncValidatorFn, ControlEventOptions, ControlOptions, ControlPath, ControlState, EmitEvent, ExtractStrings, OnlySelf, Validator, ValidatorOrOpts, ControlValue, AbstractControlOf, ValidatorFn } from './types';
export declare class FormArray<T = any, E extends object = any> extends NgFormArray {
controls: Array<AbstractControl<T>>;
readonly value: T[];
readonly valueChanges: Observable<T[]>;
controls: Array<AbstractControlOf<T>>;
readonly value: ControlValue<T>[];
readonly valueChanges: Observable<ControlValue<T>[]>;
readonly status: ControlState;

@@ -16,3 +16,3 @@ readonly statusChanges: Observable<ControlState>;

readonly dirty$: Observable<boolean>;
readonly value$: Observable<T[]>;
readonly value$: Observable<ControlValue<T>[]>;
readonly disabled$: Observable<boolean>;

@@ -26,13 +26,13 @@ readonly enabled$: Observable<boolean>;

set validator(validator: ValidatorFn<T[]> | null);
constructor(controls: Array<AbstractControl<T>>, validatorOrOpts?: ValidatorOrOpts, asyncValidator?: AsyncValidator);
select<R>(mapFn: (state: T[]) => R): Observable<R>;
getRawValue(): T[];
at(index: number): AbstractControl<T>;
setValue(valueOrObservable: Observable<T[]>, options?: ControlEventOptions): Subscription;
setValue(valueOrObservable: T[], options?: ControlEventOptions): void;
patchValue(valueOrObservable: Observable<T[]>, options?: ControlEventOptions): Subscription;
patchValue(valueOrObservable: T[], options?: ControlEventOptions): void;
push(control: AbstractControl<T>): void;
insert(index: number, control: AbstractControl<T>): void;
setControl(index: number, control: AbstractControl<T>): void;
constructor(controls: Array<AbstractControlOf<T>>, validatorOrOpts?: ValidatorOrOpts, asyncValidator?: AsyncValidator);
select<R>(mapFn: (state: ControlValue<T>[]) => R): Observable<R>;
getRawValue(): ControlValue<T>[];
at(index: number): AbstractControlOf<T>;
setValue(valueOrObservable: Observable<ControlValue<T>[]>, options?: ControlEventOptions): Subscription;
setValue(valueOrObservable: ControlValue<T>[], options?: ControlEventOptions): void;
patchValue(valueOrObservable: Observable<Partial<ControlValue<T>>[]>, options?: ControlEventOptions): Subscription;
patchValue(valueOrObservable: Partial<ControlValue<T>>[], options?: ControlEventOptions): void;
push(control: AbstractControlOf<T>): void;
insert(index: number, control: AbstractControlOf<T>): void;
setControl(index: number, control: AbstractControlOf<T>): void;
disabledWhile(observable: Observable<boolean>, options?: ControlOptions): Subscription;

@@ -47,3 +47,3 @@ enabledWhile(observable: Observable<boolean>, options?: ControlOptions): Subscription;

markAllAsDirty(): void;
reset(value?: T[], options?: ControlEventOptions): void;
reset(value?: ControlValue<T>[], options?: ControlEventOptions): void;
setValidators(newValidator: Validator): void;

@@ -62,3 +62,3 @@ setAsyncValidators(newValidator: AsyncValidator): void;

remove(value: T): void;
removeWhen(predicate: (element: AbstractControl<T>) => boolean): void;
removeWhen(predicate: (element: AbstractControlOf<T>) => boolean): void;
}

@@ -0,0 +0,0 @@ import { FormBuilder as NgFormBuilder } from '@angular/forms';

@@ -0,0 +0,0 @@ import { FormControl as NgFormControl } from '@angular/forms';

import { FormGroup as NgFormGroup } from '@angular/forms';
import { Observable, Subscription } from 'rxjs';
import { AbstractControl, AsyncValidator, AsyncValidatorFn, ControlEventOptions, ControlOptions, ControlState, EmitEvent, ExtractAbstractControl, ExtractStrings, KeyValueControls, Obj, OnlySelf, PersistOptions, Validator, ValidatorFn, ValidatorOrOpts } from './types';
import { AbstractControl, AsyncValidator, AsyncValidatorFn, ControlEventOptions, ControlOptions, ControlState, EmitEvent, ExtractStrings, Obj, OnlySelf, Validator, ValidatorOrOpts, ControlsValue, AbstractControlsOf, PersistOptions, ValidatorFn } from './types';
import { FormArray } from './formArray';
export declare class FormGroup<T extends Obj = any, E extends object = any> extends NgFormGroup {
controls: ExtractAbstractControl<KeyValueControls<T>, T>;
readonly value: T;
controls: AbstractControlsOf<T>;
readonly value: ControlsValue<T>;
readonly errors: E | null;
readonly valueChanges: Observable<T>;
readonly valueChanges: Observable<ControlsValue<T>>;
readonly status: ControlState;

@@ -16,3 +17,3 @@ readonly statusChanges: Observable<ControlState>;

dirty$: Observable<boolean>;
readonly value$: Observable<T>;
readonly value$: Observable<ControlsValue<T>>;
readonly disabled$: Observable<boolean>;

@@ -26,21 +27,23 @@ readonly enabled$: Observable<boolean>;

set validator(validator: ValidatorFn<T> | null);
constructor(controls: ExtractAbstractControl<KeyValueControls<T>, T>, validatorOrOpts?: ValidatorOrOpts, asyncValidator?: AsyncValidator);
select<R>(mapFn: (state: T) => R): Observable<R>;
getRawValue(): T;
get<K1 extends keyof T>(path?: [K1]): AbstractControl<T[K1]>;
get<K1 extends keyof T, K2 extends keyof T[K1]>(path?: [K1, K2]): AbstractControl<T[K1][K2]>;
get<K1 extends keyof T, K2 extends keyof T[K1], K3 extends keyof T[K1][K2]>(path?: [K1, K2, K3]): AbstractControl<T[K1][K2][K3]>;
get(path?: string): AbstractControl;
getControl<P1 extends keyof T>(prop1: P1): AbstractControl<T[P1]>;
getControl<P1 extends keyof T, P2 extends keyof T[P1]>(prop1: P1, prop2: P2): AbstractControl<T[P1][P2]>;
getControl<P1 extends keyof T, P2 extends keyof T[P1], P3 extends keyof T[P1][P2]>(prop1: P1, prop2: P2, prop3: P3): AbstractControl<T[P1][P2][P3]>;
getControl<P1 extends keyof T, P2 extends keyof T[P1], P3 extends keyof T[P1][P2], P4 extends keyof T[P1][P2][P3]>(prop1: P1, prop2: P2, prop3: P3, prop4: P4): AbstractControl<T[P1][P2][P3][P4]>;
addControl<K extends ExtractStrings<T>>(name: K, control: AbstractControl<T[K]>): void;
constructor(controls: AbstractControlsOf<T>, validatorOrOpts?: ValidatorOrOpts, asyncValidator?: AsyncValidator);
select<R>(mapFn: (state: ControlsValue<T>) => R): Observable<R>;
getRawValue(): ControlsValue<T>;
get<K1 extends keyof ControlsValue<T>>(path?: [K1]): AbstractControlsOf<T>[K1];
get<K1 extends keyof ControlsValue<T>, K2 extends AbstractControlsOf<T>[K1] extends FormGroup | FormArray ? keyof AbstractControlsOf<T>[K1]['controls'] : never>(path?: [K1, K2]): AbstractControlsOf<T>[K1] extends FormGroup | FormArray ? AbstractControlsOf<T>[K1]['controls'][K2] : never;
get<K1 extends keyof ControlsValue<T>, K2 extends keyof ControlsValue<T>[K1]>(path?: [K1, K2]): AbstractControl<ControlsValue<T>[K1][K2]>;
get<K1 extends keyof ControlsValue<T>, K2 extends keyof ControlsValue<T>[K1], K3 extends keyof ControlsValue<T>[K1][K2]>(path?: [K1, K2, K3]): AbstractControl<ControlsValue<T>[K1][K2][K3]>;
get(path?: Array<string | number> | string): AbstractControl;
getControl<P1 extends keyof ControlsValue<T>>(path?: P1): AbstractControlsOf<T>[P1];
getControl<P1 extends keyof ControlsValue<T>, P2 extends AbstractControlsOf<T>[P1] extends FormGroup | FormArray ? keyof AbstractControlsOf<T>[P1]['controls'] : never>(prop1: P1, prop2: P2): AbstractControlsOf<T>[P1] extends FormGroup | FormArray ? AbstractControlsOf<T>[P1]['controls'][P2] : never;
getControl<P1 extends keyof ControlsValue<T>, P2 extends keyof ControlsValue<T>[P1]>(prop1: P1, prop2: P2): AbstractControl<ControlsValue<T>[P1][P2]>;
getControl<P1 extends keyof ControlsValue<T>, P2 extends keyof ControlsValue<T>[P1], P3 extends keyof ControlsValue<T>[P1][P2]>(prop1: P1, prop2: P2, prop3: P3): AbstractControl<ControlsValue<T>[P1][P2][P3]>;
getControl(path?: string): AbstractControl;
addControl<K extends ExtractStrings<T>>(name: K, control: AbstractControlsOf<T>[K]): void;
removeControl(name: ExtractStrings<T>): void;
contains(controlName: ExtractStrings<T>): boolean;
setControl<K extends ExtractStrings<T>>(name: K, control: AbstractControl<T[K]>): void;
setValue(valueOrObservable: Observable<T>, options?: ControlEventOptions): Subscription;
setValue(valueOrObservable: T, options?: ControlEventOptions): void;
patchValue(valueOrObservable: Observable<Partial<T>>, options?: ControlEventOptions): Subscription;
patchValue(valueOrObservable: Partial<T>, options?: ControlEventOptions): void;
setControl<K extends ExtractStrings<T>>(name: K, control: AbstractControlsOf<T>[K]): void;
setValue(valueOrObservable: Observable<ControlsValue<T>>, options?: ControlEventOptions): Subscription;
setValue(valueOrObservable: ControlsValue<T>, options?: ControlEventOptions): void;
patchValue(valueOrObservable: Observable<Partial<ControlsValue<T>>>, options?: ControlEventOptions): Subscription;
patchValue(valueOrObservable: Partial<ControlsValue<T>>, options?: ControlEventOptions): void;
disabledWhile(observable: Observable<boolean>, options?: ControlOptions): Subscription;

@@ -55,9 +58,9 @@ enabledWhile(observable: Observable<boolean>, options?: ControlOptions): Subscription;

markAllAsDirty(): void;
reset(formState?: Partial<T>, options?: ControlEventOptions): void;
reset(formState?: Partial<ControlsValue<T>>, options?: ControlEventOptions): void;
setValidators(newValidator: Validator): void;
setAsyncValidators(newValidator: AsyncValidator): void;
validateOn(observableValidation: Observable<null | object>): Subscription;
hasError<K1 extends keyof T>(errorCode: ExtractStrings<E>, path?: [K1]): boolean;
hasError<K1 extends keyof T, K2 extends keyof T[K1]>(errorCode: ExtractStrings<E>, path?: [K1, K2]): boolean;
hasError<K1 extends keyof T, K2 extends keyof T[K1], K3 extends keyof T[K1][K2]>(errorCode: ExtractStrings<E>, path?: [K1, K2, K3]): boolean;
hasError<K1 extends keyof ControlsValue<T>>(errorCode: ExtractStrings<E>, path?: [K1]): boolean;
hasError<K1 extends keyof ControlsValue<T>, K2 extends keyof ControlsValue<T>[K1]>(errorCode: ExtractStrings<E>, path?: [K1, K2]): boolean;
hasError<K1 extends keyof ControlsValue<T>, K2 extends keyof ControlsValue<T>[K1], K3 extends keyof ControlsValue<T>[K1][K2]>(errorCode: ExtractStrings<E>, path?: [K1, K2, K3]): boolean;
hasError(errorCode: ExtractStrings<E>, path?: string): boolean;

@@ -67,14 +70,14 @@ setErrors(errors: Partial<E> | null, opts?: EmitEvent): void;

removeError(key: keyof E, opts?: EmitEvent): void;
getError<K extends keyof E, K1 extends keyof T>(errorCode: K, path?: [K1]): E[K] | null;
getError<K extends keyof E, K1 extends keyof T, K2 extends keyof T[K1]>(errorCode: K, path?: [K1, K2]): E[K] | null;
getError<K extends keyof E, K1 extends keyof T, K2 extends keyof T[K1], K3 extends keyof T[K1][K2]>(errorCode: K, path?: [K1, K2, K3]): E[K] | null;
getError<K extends keyof E, K1 extends keyof ControlsValue<T>>(errorCode: K, path?: [K1]): E[K] | null;
getError<K extends keyof E, K1 extends keyof ControlsValue<T>, K2 extends keyof ControlsValue<T>[K1]>(errorCode: K, path?: [K1, K2]): E[K] | null;
getError<K extends keyof E, K1 extends keyof ControlsValue<T>, K2 extends keyof ControlsValue<T>[K1], K3 extends keyof ControlsValue<T>[K1][K2]>(errorCode: K, path?: [K1, K2, K3]): E[K] | null;
getError<K extends keyof E>(errorCode: K, path?: string): E[K] | null;
hasErrorAndTouched<P1 extends keyof T>(error: ExtractStrings<E>, prop1?: P1): boolean;
hasErrorAndTouched<P1 extends keyof T, P2 extends keyof T[P1]>(error: ExtractStrings<E>, prop1?: P1, prop2?: P2): boolean;
hasErrorAndTouched<P1 extends keyof T, P2 extends keyof T[P1], P3 extends keyof T[P1][P2]>(error: ExtractStrings<E>, prop1?: P1, prop2?: P2, prop3?: P3): boolean;
hasErrorAndTouched<P1 extends keyof T, P2 extends keyof T[P1], P3 extends keyof T[P1][P2], P4 extends keyof T[P1][P2][P3]>(error: ExtractStrings<E>, prop1?: P1, prop2?: P2, prop3?: P3, prop4?: P4): boolean;
hasErrorAndDirty<P1 extends keyof T>(error: ExtractStrings<E>, prop1?: P1): boolean;
hasErrorAndDirty<P1 extends keyof T, P2 extends keyof T[P1]>(error: ExtractStrings<E>, prop1?: P1, prop2?: P2): boolean;
hasErrorAndDirty<P1 extends keyof T, P2 extends keyof T[P1], P3 extends keyof T[P1][P2]>(error: ExtractStrings<E>, prop1?: P1, prop2?: P2, prop3?: P3): boolean;
hasErrorAndDirty<P1 extends keyof T, P2 extends keyof T[P1], P3 extends keyof T[P1][P2], P4 extends keyof T[P1][P2][P3]>(error: ExtractStrings<E>, prop1?: P1, prop2?: P2, prop3?: P3, prop4?: P4): boolean;
hasErrorAndTouched<P1 extends keyof ControlsValue<T>>(error: ExtractStrings<E>, prop1?: P1): boolean;
hasErrorAndTouched<P1 extends keyof ControlsValue<T>, P2 extends keyof ControlsValue<T>[P1]>(error: ExtractStrings<E>, prop1?: P1, prop2?: P2): boolean;
hasErrorAndTouched<P1 extends keyof ControlsValue<T>, P2 extends keyof ControlsValue<T>[P1], P3 extends keyof ControlsValue<T>[P1][P2]>(error: ExtractStrings<E>, prop1?: P1, prop2?: P2, prop3?: P3): boolean;
hasErrorAndTouched<P1 extends keyof ControlsValue<T>, P2 extends keyof ControlsValue<T>[P1], P3 extends keyof ControlsValue<T>[P1][P2], P4 extends keyof ControlsValue<T>[P1][P2][P3]>(error: ExtractStrings<E>, prop1?: P1, prop2?: P2, prop3?: P3, prop4?: P4): boolean;
hasErrorAndDirty<P1 extends keyof ControlsValue<T>>(error: ExtractStrings<E>, prop1?: P1): boolean;
hasErrorAndDirty<P1 extends keyof ControlsValue<T>, P2 extends keyof ControlsValue<T>[P1]>(error: ExtractStrings<E>, prop1?: P1, prop2?: P2): boolean;
hasErrorAndDirty<P1 extends keyof ControlsValue<T>, P2 extends keyof ControlsValue<T>[P1], P3 extends keyof ControlsValue<T>[P1][P2]>(error: ExtractStrings<E>, prop1?: P1, prop2?: P2, prop3?: P3): boolean;
hasErrorAndDirty<P1 extends keyof ControlsValue<T>, P2 extends keyof ControlsValue<T>[P1], P3 extends keyof ControlsValue<T>[P1][P2], P4 extends keyof ControlsValue<T>[P1][P2][P3]>(error: ExtractStrings<E>, prop1?: P1, prop2?: P2, prop3?: P3, prop4?: P4): boolean;
setEnable(enable?: boolean, opts?: ControlEventOptions): void;

@@ -81,0 +84,0 @@ setDisable(disable?: boolean, opts?: ControlEventOptions): void;

@@ -0,0 +0,0 @@ import { PersistManager } from './persistManager';

@@ -0,0 +0,0 @@ import { Observable } from 'rxjs';

@@ -0,0 +0,0 @@ import { PersistManager } from './persistManager';

@@ -65,8 +65,55 @@ import { AbstractControl as NgAbstractControl, AbstractControlOptions as NgAbstractControlOptions, ValidationErrors as NgValidationErrors } from '@angular/forms';

declare type ArrayType<T> = T extends Array<infer R> ? R : any;
export declare type KeyValueControls<T extends Obj> = {
[K in keyof T]: T[K] extends FormControl<T[K]> ? FormControl<T[K]> : T[K] extends FormGroup<T[K]> ? FormGroup<T[K]> : T[K] extends FormArray<ArrayType<T[K]>> ? FormArray<ArrayType<T[K]>> : AbstractControl<T[K]>;
export declare type ControlValue<T> = T extends FormControl | FormGroup | FormArray | AbstractControl ? T['value'] : T;
/**
* Convert an object of a FormGroup's "value" or "controls" to its "value"
* */
export declare type ControlsValue<T extends object> = {
[K in keyof T]: ControlValue<T[K]>;
};
export declare type ExtractAbstractControl<T, U> = T extends KeyValueControls<any> ? {
[K in keyof U]: AbstractControl<U[K]>;
} : T;
declare type Primitive = number | string | boolean | null | undefined;
declare type UnwrapArray<T> = T extends Array<infer U> ? U : never;
/**
* Converts a value / form control to form control
* Converting non-control types to AbstractControl of the type
*
* The intermediate type is to solve the issue of T being any, thus assignable to all condition and resulting in the "any" type.
*
* Note the use of an array is to prevent use of distributive conditional types. (https://github.com/microsoft/TypeScript/issues/37279)
* */
declare type AbstractControlOfWithPotentialUnion<T> = [T] extends [AbstractControl] ? T : [T] extends [Primitive] ? FormControl<T> : AbstractControl<T>;
export declare type AbstractControlOf<T> = AbstractControl extends AbstractControlOfWithPotentialUnion<T> ? AbstractControl<AbstractControlOfWithPotentialUnion<T>['value']> : AbstractControlOfWithPotentialUnion<T>;
/**
* Convert an object of a FormGroup's "value" or "controls" to "controls".
* Converting non-control types to AbstractControl of the type
* */
export declare type AbstractControlsOf<T extends Obj> = {
[K in keyof T]: AbstractControlOf<T[K]>;
};
/**
* Use with FormGroup you want a FormControl for a primitive, a FormGroup for an object, and a FormArray for an array
*
* @example
* new
* FormGroup<ControlsOf<{
* name: string;
* phone: {
* num: number;
* prefix: number;
* };
* children: string[],
* }>>({
* name: new FormControl<string>(),
* phone: new FormGroup({
* num: new FormControl<number>(),
* prefix: new FormControl<number>(),
* }),
* children: new FormArray([
* new FormControl<number>()
* ])
* });
* */
export declare type ControlOf<T> = [T] extends [any[]] ? FormArray<ControlOf<UnwrapArray<T>>> : [T] extends [object] ? FormGroup<ControlsOf<T>> : FormControl<T>;
export declare type ControlsOf<T extends Object, TOverrides extends Partial<AbstractControlsOf<T>> = {}> = {
[key in keyof T]: unknown extends TOverrides[key] ? ControlOf<T[key]> : TOverrides[key];
};
export declare type ArrayKeys<T> = {

@@ -73,0 +120,0 @@ [K in keyof T]: T[K] extends Array<any> ? K : never;

@@ -0,0 +0,0 @@ import { Observable } from 'rxjs';

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

export * from './public-api';
export { AsyncValidator as ɵb, ExtractAbstractControl as ɵd, OrBoxedValue as ɵc, ValidatorOrOpts as ɵa } from './lib/types';
export { AbstractControlOf as ɵd, AbstractControlsOf as ɵe, AsyncValidator as ɵb, OrBoxedValue as ɵc, ValidatorOrOpts as ɵa } from './lib/types';

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

{"__symbolic":"module","version":4,"metadata":{"FormArray":{"__symbolic":"class","arity":2,"extends":{"__symbolic":"reference","module":"@angular/forms","name":"FormArray","line":35,"character":64},"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"Array","arguments":[{"__symbolic":"reference","name":"AbstractControl"}]},{"__symbolic":"reference","name":"ɵa"},{"__symbolic":"reference","name":"ɵb"}]}],"select":[{"__symbolic":"method"}],"getRawValue":[{"__symbolic":"method"}],"at":[{"__symbolic":"method"}],"setValue":[{"__symbolic":"method"},{"__symbolic":"method"},{"__symbolic":"method"}],"patchValue":[{"__symbolic":"method"},{"__symbolic":"method"},{"__symbolic":"method"}],"push":[{"__symbolic":"method"}],"insert":[{"__symbolic":"method"}],"setControl":[{"__symbolic":"method"}],"disabledWhile":[{"__symbolic":"method"}],"enabledWhile":[{"__symbolic":"method"}],"mergeValidators":[{"__symbolic":"method"}],"mergeAsyncValidators":[{"__symbolic":"method"}],"markAsTouched":[{"__symbolic":"method"}],"markAsUntouched":[{"__symbolic":"method"}],"markAsPristine":[{"__symbolic":"method"}],"markAsDirty":[{"__symbolic":"method"}],"markAllAsDirty":[{"__symbolic":"method"}],"reset":[{"__symbolic":"method"}],"setValidators":[{"__symbolic":"method"}],"setAsyncValidators":[{"__symbolic":"method"}],"validateOn":[{"__symbolic":"method"}],"hasError":[{"__symbolic":"method"}],"setErrors":[{"__symbolic":"method"}],"mergeErrors":[{"__symbolic":"method"}],"removeError":[{"__symbolic":"method"}],"getError":[{"__symbolic":"method"}],"hasErrorAndTouched":[{"__symbolic":"method"}],"hasErrorAndDirty":[{"__symbolic":"method"}],"setEnable":[{"__symbolic":"method"}],"setDisable":[{"__symbolic":"method"}],"remove":[{"__symbolic":"method"}],"removeWhen":[{"__symbolic":"method"}]}},"FormControl":{"__symbolic":"class","arity":2,"extends":{"__symbolic":"reference","module":"@angular/forms","name":"FormControl","line":34,"character":66},"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"ɵc"},{"__symbolic":"reference","name":"ɵa"},{"__symbolic":"reference","name":"ɵb"}]}],"setValue":[{"__symbolic":"method"},{"__symbolic":"method"},{"__symbolic":"method"}],"patchValue":[{"__symbolic":"method"},{"__symbolic":"method"},{"__symbolic":"method"}],"disabledWhile":[{"__symbolic":"method"}],"enabledWhile":[{"__symbolic":"method"}],"mergeValidators":[{"__symbolic":"method"}],"mergeAsyncValidators":[{"__symbolic":"method"}],"markAsTouched":[{"__symbolic":"method"}],"markAsUntouched":[{"__symbolic":"method"}],"markAsPristine":[{"__symbolic":"method"}],"markAsDirty":[{"__symbolic":"method"}],"markAllAsDirty":[{"__symbolic":"method"}],"reset":[{"__symbolic":"method"}],"setValidators":[{"__symbolic":"method"}],"setAsyncValidators":[{"__symbolic":"method"}],"validateOn":[{"__symbolic":"method"}],"getError":[{"__symbolic":"method"}],"hasError":[{"__symbolic":"method"}],"setErrors":[{"__symbolic":"method"}],"mergeErrors":[{"__symbolic":"method"}],"removeError":[{"__symbolic":"method"}],"hasErrorAndTouched":[{"__symbolic":"method"}],"hasErrorAndDirty":[{"__symbolic":"method"}],"setEnable":[{"__symbolic":"method"}],"setDisable":[{"__symbolic":"method"}]}},"FormGroup":{"__symbolic":"class","arity":2,"extends":{"__symbolic":"reference","module":"@angular/forms","name":"FormGroup","line":45,"character":76},"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"ɵd"},{"__symbolic":"reference","name":"ɵa"},{"__symbolic":"reference","name":"ɵb"}]}],"select":[{"__symbolic":"method"}],"getRawValue":[{"__symbolic":"method"}],"get":[{"__symbolic":"method"},{"__symbolic":"method"},{"__symbolic":"method"},{"__symbolic":"method"},{"__symbolic":"method"}],"getControl":[{"__symbolic":"method"},{"__symbolic":"method"},{"__symbolic":"method"},{"__symbolic":"method"},{"__symbolic":"method"}],"addControl":[{"__symbolic":"method"}],"removeControl":[{"__symbolic":"method"}],"contains":[{"__symbolic":"method"}],"setControl":[{"__symbolic":"method"}],"setValue":[{"__symbolic":"method"},{"__symbolic":"method"},{"__symbolic":"method"}],"patchValue":[{"__symbolic":"method"},{"__symbolic":"method"},{"__symbolic":"method"}],"disabledWhile":[{"__symbolic":"method"}],"enabledWhile":[{"__symbolic":"method"}],"mergeValidators":[{"__symbolic":"method"}],"mergeAsyncValidators":[{"__symbolic":"method"}],"markAsTouched":[{"__symbolic":"method"}],"markAsUntouched":[{"__symbolic":"method"}],"markAsPristine":[{"__symbolic":"method"}],"markAsDirty":[{"__symbolic":"method"}],"markAllAsDirty":[{"__symbolic":"method"}],"reset":[{"__symbolic":"method"}],"setValidators":[{"__symbolic":"method"}],"setAsyncValidators":[{"__symbolic":"method"}],"validateOn":[{"__symbolic":"method"}],"hasError":[{"__symbolic":"method"},{"__symbolic":"method"},{"__symbolic":"method"},{"__symbolic":"method"},{"__symbolic":"method"}],"setErrors":[{"__symbolic":"method"}],"mergeErrors":[{"__symbolic":"method"}],"removeError":[{"__symbolic":"method"}],"getError":[{"__symbolic":"method"},{"__symbolic":"method"},{"__symbolic":"method"},{"__symbolic":"method"},{"__symbolic":"method"}],"hasErrorAndTouched":[{"__symbolic":"method"},{"__symbolic":"method"},{"__symbolic":"method"},{"__symbolic":"method"},{"__symbolic":"method"}],"hasErrorAndDirty":[{"__symbolic":"method"},{"__symbolic":"method"},{"__symbolic":"method"},{"__symbolic":"method"},{"__symbolic":"method"}],"setEnable":[{"__symbolic":"method"}],"setDisable":[{"__symbolic":"method"}],"persist":[{"__symbolic":"method"}],"restore":[{"__symbolic":"method"}]}},"FormBuilder":{"__symbolic":"class","extends":{"__symbolic":"reference","module":"@angular/forms","name":"FormBuilder","line":28,"character":33},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":27,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"group":[{"__symbolic":"method"}],"control":[{"__symbolic":"method"}],"array":[{"__symbolic":"method"}]},"statics":{"ɵprov":{}}},"ɵa":{"__symbolic":"interface"},"ɵb":{"__symbolic":"interface"},"ɵc":{"__symbolic":"interface"},"ɵd":{"__symbolic":"interface"},"AbstractControl":{"__symbolic":"interface"},"ValidatorFn":{"__symbolic":"interface"},"AsyncValidatorFn":{"__symbolic":"interface"},"NgValidatorsErrors":{"__symbolic":"interface"},"ControlFactory":{"__symbolic":"interface"},"ControlFactoryMap":{"__symbolic":"interface"},"PersistOptions":{"__symbolic":"interface"},"ControlValueAccessor":{"__symbolic":"class","arity":1,"members":{"writeValue":[{"__symbolic":"method"}],"registerOnChange":[{"__symbolic":"method"}],"registerOnTouched":[{"__symbolic":"method"}]}},"PersistManager":{"__symbolic":"interface"},"LocalStorageManager":{"__symbolic":"class","arity":1,"members":{"setValue":[{"__symbolic":"method"}],"getValue":[{"__symbolic":"method"}]}},"SessionStorageManager":{"__symbolic":"class","arity":1,"members":{"setValue":[{"__symbolic":"method"}],"getValue":[{"__symbolic":"method"}]}}},"origins":{"FormArray":"./lib/formArray","FormControl":"./lib/formControl","FormGroup":"./lib/formGroup","FormBuilder":"./lib/formBuilder","ɵa":"./lib/types","ɵb":"./lib/types","ɵc":"./lib/types","ɵd":"./lib/types","AbstractControl":"./lib/types","ValidatorFn":"./lib/types","AsyncValidatorFn":"./lib/types","NgValidatorsErrors":"./lib/types","ControlFactory":"./lib/types","ControlFactoryMap":"./lib/types","PersistOptions":"./lib/types","ControlValueAccessor":"./lib/controlValueAccessor","PersistManager":"./lib/persistManager","LocalStorageManager":"./lib/localStorageManager","SessionStorageManager":"./lib/sessionStorageManager"},"importAs":"@ngneat/reactive-forms"}
{"__symbolic":"module","version":4,"metadata":{"FormArray":{"__symbolic":"class","arity":2,"extends":{"__symbolic":"reference","module":"@angular/forms","name":"FormArray","line":36,"character":64},"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"Array","arguments":[{"__symbolic":"reference","name":"ɵd"}]},{"__symbolic":"reference","name":"ɵa"},{"__symbolic":"reference","name":"ɵb"}]}],"select":[{"__symbolic":"method"}],"getRawValue":[{"__symbolic":"method"}],"at":[{"__symbolic":"method"}],"setValue":[{"__symbolic":"method"},{"__symbolic":"method"},{"__symbolic":"method"}],"patchValue":[{"__symbolic":"method"},{"__symbolic":"method"},{"__symbolic":"method"}],"push":[{"__symbolic":"method"}],"insert":[{"__symbolic":"method"}],"setControl":[{"__symbolic":"method"}],"disabledWhile":[{"__symbolic":"method"}],"enabledWhile":[{"__symbolic":"method"}],"mergeValidators":[{"__symbolic":"method"}],"mergeAsyncValidators":[{"__symbolic":"method"}],"markAsTouched":[{"__symbolic":"method"}],"markAsUntouched":[{"__symbolic":"method"}],"markAsPristine":[{"__symbolic":"method"}],"markAsDirty":[{"__symbolic":"method"}],"markAllAsDirty":[{"__symbolic":"method"}],"reset":[{"__symbolic":"method"}],"setValidators":[{"__symbolic":"method"}],"setAsyncValidators":[{"__symbolic":"method"}],"validateOn":[{"__symbolic":"method"}],"hasError":[{"__symbolic":"method"}],"setErrors":[{"__symbolic":"method"}],"mergeErrors":[{"__symbolic":"method"}],"removeError":[{"__symbolic":"method"}],"getError":[{"__symbolic":"method"}],"hasErrorAndTouched":[{"__symbolic":"method"}],"hasErrorAndDirty":[{"__symbolic":"method"}],"setEnable":[{"__symbolic":"method"}],"setDisable":[{"__symbolic":"method"}],"remove":[{"__symbolic":"method"}],"removeWhen":[{"__symbolic":"method"}]}},"FormControl":{"__symbolic":"class","arity":2,"extends":{"__symbolic":"reference","module":"@angular/forms","name":"FormControl","line":34,"character":66},"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"ɵc"},{"__symbolic":"reference","name":"ɵa"},{"__symbolic":"reference","name":"ɵb"}]}],"setValue":[{"__symbolic":"method"},{"__symbolic":"method"},{"__symbolic":"method"}],"patchValue":[{"__symbolic":"method"},{"__symbolic":"method"},{"__symbolic":"method"}],"disabledWhile":[{"__symbolic":"method"}],"enabledWhile":[{"__symbolic":"method"}],"mergeValidators":[{"__symbolic":"method"}],"mergeAsyncValidators":[{"__symbolic":"method"}],"markAsTouched":[{"__symbolic":"method"}],"markAsUntouched":[{"__symbolic":"method"}],"markAsPristine":[{"__symbolic":"method"}],"markAsDirty":[{"__symbolic":"method"}],"markAllAsDirty":[{"__symbolic":"method"}],"reset":[{"__symbolic":"method"}],"setValidators":[{"__symbolic":"method"}],"setAsyncValidators":[{"__symbolic":"method"}],"validateOn":[{"__symbolic":"method"}],"getError":[{"__symbolic":"method"}],"hasError":[{"__symbolic":"method"}],"setErrors":[{"__symbolic":"method"}],"mergeErrors":[{"__symbolic":"method"}],"removeError":[{"__symbolic":"method"}],"hasErrorAndTouched":[{"__symbolic":"method"}],"hasErrorAndDirty":[{"__symbolic":"method"}],"setEnable":[{"__symbolic":"method"}],"setDisable":[{"__symbolic":"method"}]}},"FormGroup":{"__symbolic":"class","arity":2,"extends":{"__symbolic":"reference","module":"@angular/forms","name":"FormGroup","line":46,"character":76},"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"ɵe"},{"__symbolic":"reference","name":"ɵa"},{"__symbolic":"reference","name":"ɵb"}]}],"select":[{"__symbolic":"method"}],"getRawValue":[{"__symbolic":"method"}],"get":[{"__symbolic":"method"},{"__symbolic":"method"},{"__symbolic":"method"},{"__symbolic":"method"},{"__symbolic":"method"},{"__symbolic":"method"}],"getControl":[{"__symbolic":"method"},{"__symbolic":"method"},{"__symbolic":"method"},{"__symbolic":"method"},{"__symbolic":"method"},{"__symbolic":"method"}],"addControl":[{"__symbolic":"method"}],"removeControl":[{"__symbolic":"method"}],"contains":[{"__symbolic":"method"}],"setControl":[{"__symbolic":"method"}],"setValue":[{"__symbolic":"method"},{"__symbolic":"method"},{"__symbolic":"method"}],"patchValue":[{"__symbolic":"method"},{"__symbolic":"method"},{"__symbolic":"method"}],"disabledWhile":[{"__symbolic":"method"}],"enabledWhile":[{"__symbolic":"method"}],"mergeValidators":[{"__symbolic":"method"}],"mergeAsyncValidators":[{"__symbolic":"method"}],"markAsTouched":[{"__symbolic":"method"}],"markAsUntouched":[{"__symbolic":"method"}],"markAsPristine":[{"__symbolic":"method"}],"markAsDirty":[{"__symbolic":"method"}],"markAllAsDirty":[{"__symbolic":"method"}],"reset":[{"__symbolic":"method"}],"setValidators":[{"__symbolic":"method"}],"setAsyncValidators":[{"__symbolic":"method"}],"validateOn":[{"__symbolic":"method"}],"hasError":[{"__symbolic":"method"},{"__symbolic":"method"},{"__symbolic":"method"},{"__symbolic":"method"},{"__symbolic":"method"}],"setErrors":[{"__symbolic":"method"}],"mergeErrors":[{"__symbolic":"method"}],"removeError":[{"__symbolic":"method"}],"getError":[{"__symbolic":"method"},{"__symbolic":"method"},{"__symbolic":"method"},{"__symbolic":"method"},{"__symbolic":"method"}],"hasErrorAndTouched":[{"__symbolic":"method"},{"__symbolic":"method"},{"__symbolic":"method"},{"__symbolic":"method"},{"__symbolic":"method"}],"hasErrorAndDirty":[{"__symbolic":"method"},{"__symbolic":"method"},{"__symbolic":"method"},{"__symbolic":"method"},{"__symbolic":"method"}],"setEnable":[{"__symbolic":"method"}],"setDisable":[{"__symbolic":"method"}],"persist":[{"__symbolic":"method"}],"restore":[{"__symbolic":"method"}]}},"FormBuilder":{"__symbolic":"class","extends":{"__symbolic":"reference","module":"@angular/forms","name":"FormBuilder","line":35,"character":33},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":34,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"group":[{"__symbolic":"method"}],"control":[{"__symbolic":"method"}],"array":[{"__symbolic":"method"}]},"statics":{"ɵprov":{}}},"ɵa":{"__symbolic":"interface"},"ɵb":{"__symbolic":"interface"},"ɵc":{"__symbolic":"interface"},"ɵd":{"__symbolic":"interface"},"ɵe":{"__symbolic":"interface"},"AbstractControl":{"__symbolic":"interface"},"ValidatorFn":{"__symbolic":"interface"},"AsyncValidatorFn":{"__symbolic":"interface"},"NgValidatorsErrors":{"__symbolic":"interface"},"ControlFactory":{"__symbolic":"interface"},"ControlFactoryMap":{"__symbolic":"interface"},"PersistOptions":{"__symbolic":"interface"},"ControlValueAccessor":{"__symbolic":"class","arity":1,"members":{"writeValue":[{"__symbolic":"method"}],"registerOnChange":[{"__symbolic":"method"}],"registerOnTouched":[{"__symbolic":"method"}]}},"PersistManager":{"__symbolic":"interface"},"LocalStorageManager":{"__symbolic":"class","arity":1,"members":{"setValue":[{"__symbolic":"method"}],"getValue":[{"__symbolic":"method"}]}},"SessionStorageManager":{"__symbolic":"class","arity":1,"members":{"setValue":[{"__symbolic":"method"}],"getValue":[{"__symbolic":"method"}]}}},"origins":{"FormArray":"./lib/formArray","FormControl":"./lib/formControl","FormGroup":"./lib/formGroup","FormBuilder":"./lib/formBuilder","ɵa":"./lib/types","ɵb":"./lib/types","ɵc":"./lib/types","ɵd":"./lib/types","ɵe":"./lib/types","AbstractControl":"./lib/types","ValidatorFn":"./lib/types","AsyncValidatorFn":"./lib/types","NgValidatorsErrors":"./lib/types","ControlFactory":"./lib/types","ControlFactoryMap":"./lib/types","PersistOptions":"./lib/types","ControlValueAccessor":"./lib/controlValueAccessor","PersistManager":"./lib/persistManager","LocalStorageManager":"./lib/localStorageManager","SessionStorageManager":"./lib/sessionStorageManager"},"importAs":"@ngneat/reactive-forms"}
{
"name": "@ngneat/reactive-forms",
"description": "(Angular Reactive) Forms with Benefits",
"version": "1.3.1",
"version": "1.4.0",
"schematics": "./schematics/collection.json",

@@ -6,0 +6,0 @@ "keywords": [

@@ -0,0 +0,0 @@ export { FormArray } from './lib/formArray';

@@ -53,4 +53,4 @@ <p align="center">

Each `AbstractControl` takes a generic, which serves as the `type` for any method exposed by Angular or this library:
Each `AbstractControl` takes a generic, which can be neither the value `type` (all `AbstractControl`s) or the type of the controls (`FormGroup`/`FormArray`). This type is than used to enhance every method exposed by Angular or this library.
Use it with a `FormControl`:

@@ -61,3 +61,3 @@

const control = new FormControl('');
const control = new FormControl<string>('');
control.valueChanges.subscribe(value => {

@@ -68,2 +68,15 @@ // value is typed as string

Use it with a `FormArray`:
```ts
import { FormArray, FormControl } from '@ngneat/reactive-forms';
const control = new FormArray<string>([new FormControl()]);
control.value$.subscribe(value => {
// value is typed as string[]
});
```
Use it with a `FormGroup`:

@@ -98,14 +111,33 @@

Use it with a `FormArray`:
Or alternatively, with the controls as the generic type:
```ts
import { FormArray, FormControl } from '@ngneat/reactive-forms';
import { FormGroup } from '@ngneat/reactive-forms';
const control = new FormArray<string>([new FormControl()]);
interface ProfileControls {
firstName: string; // Note that for primitive types the type "FormControl" is infered, so no need to write that.
lastName: string;
address: FormGroup<
street: string,
city: string,
>;
}
control.value$.subscribe(value => {
// value is typed as string[]
const profileForm = new FormGroup<ProfileControls>({
firstName: new FormControl(''),
lastName: new FormControl(''),
address: new FormGroup({
street: new FormControl(''),
city: new FormControl('')
})
});
// typed as Profile
profileForm.setValue(new Profile());
// typed as Partial<Profile>
profileForm.patchValue({ firstName: 'Netanel' });
```
(Note supplying the controls type will enable you to access individual controls later with type inference, and avoid unneeded casting.)
## Control Queries

@@ -352,2 +384,3 @@

A method with `typed` parameters which obtains a reference to a specific control.
When supplying the controls type, type inference for the returned control will be available for up to 2 keys in path. (Thus, for example `getControl('a', 'b', 'c')` will always return `AbstractControl` )

@@ -357,8 +390,8 @@ ```ts

const group = new FormGroup<Profile>(...);
const address = group.getControl('name') as FormGroup<Profile['address']>;
const city = group.getControl('address', 'city') as FormControl<string>;
const group = new FormGroup<ProfileControls>(...);
const address: FormControl<string> = group.getControl('name');
const city: FormControl<string> = group.getControl('address', 'city');
```
**Note that the return type should still be inferred.**
Note that if you're only passing the "value" type (e.g. `FormGroup<Profile>`), this method will always return AbstractControl. In that case the return type might need to be inferred.

@@ -418,3 +451,3 @@ ### `mergeErrors()`

```ts
const num = group.get(['phone', 'num']) as FormControl<string>;
const num = group.get(['phone', 'num']);
const hasError = group.hasError('required', ['phone', 'num']);

@@ -421,0 +454,0 @@ const getError = group.getError('required', ['phone', 'num']);

@@ -0,0 +0,0 @@ "use strict";

@@ -0,0 +0,0 @@ "use strict";

"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
//# sourceMappingURL=schema.js.map
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.insertAfterLastOccurrence = exports.findNodes = exports.insertImport = void 0;
// /**

@@ -5,0 +4,0 @@ // * @license

"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.applyChanges = exports.commitChanges = exports.createChangeRecorder = exports.createReplaceChange = exports.ReplaceChange = exports.RemoveChange = exports.InsertChange = exports.NoopChange = void 0;
/**

@@ -5,0 +4,0 @@ * An operation that does nothing.

"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.splice = void 0;
function splice(str, pos, end, insertion = '') {

@@ -5,0 +4,0 @@ return str.slice(0, pos) + insertion + str.slice(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

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
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc