ngrx-forms
Version:
Proper integration of forms in Angular 4 applications using ngrx
211 lines • 25.7 kB
JavaScript
// NOTE: the explicit type declaration for the `TYPE` properties is required
// for the output declarations to properly use the literal string type instead
// of just `string`
export class SetValueAction {
constructor(controlId, value) {
this.controlId = controlId;
this.value = value;
this.type = SetValueAction.TYPE;
}
}
SetValueAction.TYPE = 'ngrx/forms/SET_VALUE';
export class SetErrorsAction {
constructor(controlId, errors) {
this.controlId = controlId;
this.errors = errors;
this.type = SetErrorsAction.TYPE;
}
}
SetErrorsAction.TYPE = 'ngrx/forms/SET_ERRORS';
export class SetAsyncErrorAction {
constructor(controlId, name, value) {
this.controlId = controlId;
this.name = name;
this.value = value;
this.type = SetAsyncErrorAction.TYPE;
}
}
SetAsyncErrorAction.TYPE = 'ngrx/forms/SET_ASYNC_ERROR';
export class ClearAsyncErrorAction {
constructor(controlId, name) {
this.controlId = controlId;
this.name = name;
this.type = ClearAsyncErrorAction.TYPE;
}
}
ClearAsyncErrorAction.TYPE = 'ngrx/forms/CLEAR_ASYNC_ERROR';
export class StartAsyncValidationAction {
constructor(controlId, name) {
this.controlId = controlId;
this.name = name;
this.type = StartAsyncValidationAction.TYPE;
}
}
StartAsyncValidationAction.TYPE = 'ngrx/forms/START_ASYNC_VALIDATION';
export class MarkAsDirtyAction {
constructor(controlId) {
this.controlId = controlId;
this.type = MarkAsDirtyAction.TYPE;
}
}
MarkAsDirtyAction.TYPE = 'ngrx/forms/MARK_AS_DIRTY';
export class MarkAsPristineAction {
constructor(controlId) {
this.controlId = controlId;
this.type = MarkAsPristineAction.TYPE;
}
}
MarkAsPristineAction.TYPE = 'ngrx/forms/MARK_AS_PRISTINE';
export class EnableAction {
constructor(controlId) {
this.controlId = controlId;
this.type = EnableAction.TYPE;
}
}
EnableAction.TYPE = 'ngrx/forms/ENABLE';
export class DisableAction {
constructor(controlId) {
this.controlId = controlId;
this.type = DisableAction.TYPE;
}
}
DisableAction.TYPE = 'ngrx/forms/DISABLE';
export class MarkAsTouchedAction {
constructor(controlId) {
this.controlId = controlId;
this.type = MarkAsTouchedAction.TYPE;
}
}
MarkAsTouchedAction.TYPE = 'ngrx/forms/MARK_AS_TOUCHED';
export class MarkAsUntouchedAction {
constructor(controlId) {
this.controlId = controlId;
this.type = MarkAsUntouchedAction.TYPE;
}
}
MarkAsUntouchedAction.TYPE = 'ngrx/forms/MARK_AS_UNTOUCHED';
export class FocusAction {
constructor(controlId) {
this.controlId = controlId;
this.type = FocusAction.TYPE;
}
}
FocusAction.TYPE = 'ngrx/forms/FOCUS';
export class UnfocusAction {
constructor(controlId) {
this.controlId = controlId;
this.type = UnfocusAction.TYPE;
}
}
UnfocusAction.TYPE = 'ngrx/forms/UNFOCUS';
export class MarkAsSubmittedAction {
constructor(controlId) {
this.controlId = controlId;
this.type = MarkAsSubmittedAction.TYPE;
}
}
MarkAsSubmittedAction.TYPE = 'ngrx/forms/MARK_AS_SUBMITTED';
export class MarkAsUnsubmittedAction {
constructor(controlId) {
this.controlId = controlId;
this.type = MarkAsUnsubmittedAction.TYPE;
}
}
MarkAsUnsubmittedAction.TYPE = 'ngrx/forms/MARK_AS_UNSUBMITTED';
export class AddArrayControlAction {
constructor(controlId, value, index) {
this.controlId = controlId;
this.value = value;
this.index = index;
this.type = AddArrayControlAction.TYPE;
}
}
AddArrayControlAction.TYPE = 'ngrx/forms/ADD_ARRAY_CONTROL';
export class AddGroupControlAction {
constructor(controlId, name, value) {
this.controlId = controlId;
this.name = name;
this.value = value;
this.type = AddGroupControlAction.TYPE;
}
}
AddGroupControlAction.TYPE = 'ngrx/forms/ADD_GROUP_CONTROL';
export class RemoveArrayControlAction {
constructor(controlId, index) {
this.controlId = controlId;
this.index = index;
this.type = RemoveArrayControlAction.TYPE;
}
}
RemoveArrayControlAction.TYPE = 'ngrx/forms/REMOVE_ARRAY_CONTROL';
export class SwapArrayControlAction {
constructor(controlId, fromIndex, toIndex) {
this.controlId = controlId;
this.fromIndex = fromIndex;
this.toIndex = toIndex;
this.type = SwapArrayControlAction.TYPE;
}
}
SwapArrayControlAction.TYPE = 'ngrx/forms/SWAP_ARRAY_CONTROL';
export class MoveArrayControlAction {
constructor(controlId, fromIndex, toIndex) {
this.controlId = controlId;
this.fromIndex = fromIndex;
this.toIndex = toIndex;
this.type = MoveArrayControlAction.TYPE;
}
}
MoveArrayControlAction.TYPE = 'ngrx/forms/MOVE_ARRAY_CONTROL';
export class RemoveGroupControlAction {
constructor(controlId, name) {
this.controlId = controlId;
this.name = name;
this.type = RemoveGroupControlAction.TYPE;
}
}
RemoveGroupControlAction.TYPE = 'ngrx/forms/REMOVE_CONTROL';
export class SetUserDefinedPropertyAction {
constructor(controlId, name, value) {
this.controlId = controlId;
this.name = name;
this.value = value;
this.type = SetUserDefinedPropertyAction.TYPE;
}
}
SetUserDefinedPropertyAction.TYPE = 'ngrx/forms/SET_USER_DEFINED_PROPERTY';
export class ResetAction {
constructor(controlId) {
this.controlId = controlId;
this.type = ResetAction.TYPE;
}
}
ResetAction.TYPE = 'ngrx/forms/RESET';
export function isNgrxFormsAction(action) {
return !!action.type && action.type.startsWith('ngrx/forms/');
}
export const ALL_NGRX_FORMS_ACTION_TYPES = [
SetValueAction.TYPE,
SetErrorsAction.TYPE,
SetAsyncErrorAction.TYPE,
ClearAsyncErrorAction.TYPE,
StartAsyncValidationAction.TYPE,
MarkAsDirtyAction.TYPE,
MarkAsPristineAction.TYPE,
EnableAction.TYPE,
DisableAction.TYPE,
MarkAsTouchedAction.TYPE,
MarkAsUntouchedAction.TYPE,
FocusAction.TYPE,
UnfocusAction.TYPE,
MarkAsSubmittedAction.TYPE,
MarkAsUnsubmittedAction.TYPE,
AddGroupControlAction.TYPE,
RemoveGroupControlAction.TYPE,
AddArrayControlAction.TYPE,
RemoveArrayControlAction.TYPE,
SetUserDefinedPropertyAction.TYPE,
ResetAction.TYPE,
SwapArrayControlAction.TYPE,
MoveArrayControlAction.TYPE,
];
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0aW9ucy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hY3Rpb25zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUdBLDRFQUE0RTtBQUM1RSw4RUFBOEU7QUFDOUUsbUJBQW1CO0FBRW5CLE1BQU0sT0FBTyxjQUFjO0lBSXpCLFlBQ2tCLFNBQTRCLEVBQzVCLEtBQWE7UUFEYixjQUFTLEdBQVQsU0FBUyxDQUFtQjtRQUM1QixVQUFLLEdBQUwsS0FBSyxDQUFRO1FBSnRCLFNBQUksR0FBRyxjQUFjLENBQUMsSUFBSSxDQUFDO0lBS2hDLENBQUM7O0FBTlcsbUJBQUksR0FBMkIsc0JBQXNCLENBQUM7QUFTeEUsTUFBTSxPQUFPLGVBQWU7SUFJMUIsWUFDa0IsU0FBNEIsRUFDNUIsTUFBd0I7UUFEeEIsY0FBUyxHQUFULFNBQVMsQ0FBbUI7UUFDNUIsV0FBTSxHQUFOLE1BQU0sQ0FBa0I7UUFKakMsU0FBSSxHQUFHLGVBQWUsQ0FBQyxJQUFJLENBQUM7SUFLakMsQ0FBQzs7QUFOVyxvQkFBSSxHQUE0Qix1QkFBdUIsQ0FBQztBQVMxRSxNQUFNLE9BQU8sbUJBQW1CO0lBSTlCLFlBQ2tCLFNBQTRCLEVBQzVCLElBQVksRUFDWixLQUFVO1FBRlYsY0FBUyxHQUFULFNBQVMsQ0FBbUI7UUFDNUIsU0FBSSxHQUFKLElBQUksQ0FBUTtRQUNaLFVBQUssR0FBTCxLQUFLLENBQUs7UUFMbkIsU0FBSSxHQUFHLG1CQUFtQixDQUFDLElBQUksQ0FBQztJQU1yQyxDQUFDOztBQVBXLHdCQUFJLEdBQWlDLDRCQUE0QixDQUFDO0FBVXBGLE1BQU0sT0FBTyxxQkFBcUI7SUFJaEMsWUFDa0IsU0FBNEIsRUFDNUIsSUFBWTtRQURaLGNBQVMsR0FBVCxTQUFTLENBQW1CO1FBQzVCLFNBQUksR0FBSixJQUFJLENBQVE7UUFKckIsU0FBSSxHQUFHLHFCQUFxQixDQUFDLElBQUksQ0FBQztJQUt2QyxDQUFDOztBQU5XLDBCQUFJLEdBQW1DLDhC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STtJQUNqQixhQUFhLENBQUMsSUFBSTtJQUNsQixtQkFBbUIsQ0FBQyxJQUFJO0lBQ3hCLHFCQUFxQixDQUFDLElBQUk7SUFDMUIsV0FBVyxDQUFDLElBQUk7SUFDaEIsYUFBYSxDQUFDLElBQUk7SUFDbEIscUJBQXFCLENBQUMsSUFBSTtJQUMxQix1QkFBdUIsQ0FBQyxJQUFJO0lBQzVCLHFCQUFxQixDQUFDLElBQUk7SUFDMUIsd0JBQXdCLENBQUMsSUFBSTtJQUM3QixxQkFBcUIsQ0FBQyxJQUFJO0lBQzFCLHdCQUF3QixDQUFDLElBQUk7SUFDN0IsNEJBQTRCLENBQUMsSUFBSTtJQUNqQyxXQUFXLENBQUMsSUFBSTtJQUNoQixzQkFBc0IsQ0FBQyxJQUFJO0lBQzNCLHNCQUFzQixDQUFDLElBQUk7Q0FDNUIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFjdGlvbiB9IGZyb20gJ0BuZ3J4L3N0b3JlJztcclxuaW1wb3J0IHsgS2V5VmFsdWUsIE5ncnhGb3JtQ29udHJvbElkLCBWYWxpZGF0aW9uRXJyb3JzIH0gZnJvbSAnLi9zdGF0ZSc7XHJcblxyXG4vLyBOT1RFOiB0aGUgZXhwbGljaXQgdHlwZSBkZWNsYXJhdGlvbiBmb3IgdGhlIGBUWVBFYCBwcm9wZXJ0aWVzIGlzIHJlcXVpcmVkXHJcbi8vIGZvciB0aGUgb3V0cHV0IGRlY2xhcmF0aW9ucyB0byBwcm9wZXJseSB1c2UgdGhlIGxpdGVyYWwgc3RyaW5nIHR5cGUgaW5zdGVhZFxyXG4vLyBvZiBqdXN0IGBzdHJpbmdgXHJcblxyXG5leHBvcnQgY2xhc3MgU2V0VmFsdWVBY3Rpb248VFZhbHVlPiBpbXBsZW1lbnRzIEFjdGlvbiB7XHJcbiAgc3RhdGljIHJlYWRvbmx5IFRZUEU6ICduZ3J4L2Zvcm1zL1NFVF9WQUxVRScgPSAnbmdyeC9mb3Jtcy9TRVRfVkFMVUUnO1xyXG4gIHJlYWRvbmx5IHR5cGUgPSBTZXRWYWx1ZUFjdGlvbi5UWVBFO1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHB1YmxpYyByZWFkb25seSBjb250cm9sSWQ6IE5ncnhGb3JtQ29udHJvbElkLFxyXG4gICAgcHVibGljIHJlYWRvbmx5IHZhbHVlOiBUVmFsdWUsXHJcbiAgKSB7IH1cclxufVxyXG5cclxuZXhwb3J0IGNsYXNzIFNldEVycm9yc0FjdGlvbiBpbXBsZW1lbnRzIEFjdGlvbiB7XHJcbiAgc3RhdGljIHJlYWRvbmx5IFRZUEU6ICduZ3J4L2Zvcm1zL1NFVF9FUlJPUlMnID0gJ25ncngvZm9ybXMvU0VUX0VSUk9SUyc7XHJcbiAgcmVhZG9ubHkgdHlwZSA9IFNldEVycm9yc0FjdGlvbi5UWVBFO1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHB1YmxpYyByZWFkb25seSBjb250cm9sSWQ6IE5ncnhGb3JtQ29udHJvbElkLFxyXG4gICAgcHVibGljIHJlYWRvbmx5IGVycm9yczogVmFsaWRhdGlvbkVycm9ycyxcclxuICApIHsgfVxyXG59XHJcblxyXG5leHBvcnQgY2xhc3MgU2V0QXN5bmNFcnJvckFjdGlvbiBpbXBsZW1lbnRzIEFjdGlvbiB7XHJcbiAgc3RhdGljIHJlYWRvbmx5IFRZUEU6ICduZ3J4L2Zvcm1zL1NFVF9BU1lOQ19FUlJPUicgPSAnbmdyeC9mb3Jtcy9TRVRfQVNZTkNfRVJST1InO1xyXG4gIHJlYWRvbmx5IHR5cGUgPSBTZXRBc3luY0Vycm9yQWN0aW9uLlRZUEU7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHVibGljIHJlYWRvbmx5IGNvbnRyb2xJZDogTmdyeEZvcm1Db250cm9sSWQsXHJcbiAgICBwdWJsaWMgcmVhZG9ubHkgbmFtZTogc3RyaW5nLFxyXG4gICAgcHVibGljIHJlYWRvbmx5IHZhbHVlOiBhbnksXHJcbiAgKSB7IH1cclxufVxyXG5cclxuZXhwb3J0IGNsYXNzIENsZWFyQXN5bmNFcnJvckFjdGlvbiBpbXBsZW1lbnRzIEFjdGlvbiB7XHJcbiAgc3RhdGljIHJlYWRvbmx5IFRZUEU6ICduZ3J4L2Zvcm1zL0NMRUFSX0FTWU5DX0VSUk9SJyA9ICduZ3J4L2Zvcm1zL0NMRUFSX0FTWU5DX0VSUk9SJztcclxuICByZWFkb25seSB0eXBlID0gQ2xlYXJBc3luY0Vycm9yQWN0aW9uLlRZUEU7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHVibGljIHJlYWRvbmx5IGNvbnRyb2xJZDogTmdyeEZvcm1Db250cm9sSWQsXHJcbiAgICBwdWJsaWMgcmVhZG9ubHkgbmFtZTogc3RyaW5nLFxyXG4gICkgeyB9XHJcbn1cclxuXHJcbmV4cG9ydCBjbGFzcyBTdGFydEFzeW5jVmFsaWRhdGlvbkFjdGlvbiBpbXBsZW1lbnRzIEFjdGlvbiB7XHJcbiAgc3RhdGljIHJlYWRvbmx5IFRZUEU6ICduZ3J4L2Zvcm1zL1NUQVJUX0FTWU5DX1ZBTElEQVRJT04nID0gJ25ncngvZm9ybXMvU1RBUlRfQVNZTkNfVkFMSURBVElPTic7XHJcbiAgcmVhZG9ubHkgdHlwZSA9IFN0YXJ0QXN5bmNWYWxpZGF0aW9uQWN0aW9uLlRZUEU7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHVibGljIHJlYWRvbmx5IGNvbnRyb2xJZDogTmdyeEZvcm1Db250cm9sSWQsXHJcbiAgICBwdWJsaWMgcmVhZG9ubHkgbmFtZTogc3RyaW5nLFxyXG4gICkgeyB9XHJcbn1cclxuXHJcbmV4cG9ydCBjbGFzcyBNYXJrQXNEaXJ0eUFjdGlvbiBpbXBsZW1lbnRzIEFjdGlvbiB7XHJcbiAgc3RhdGljIHJlYWRvbmx5IFRZUEU6ICduZ3J4L2Zvcm1zL01BUktfQVNfRElSVFknID0gJ25ncngvZm9ybXMvTUFSS19BU19ESVJUWSc7XHJcbiAgcmVhZG9ubHkgdHlwZSA9IE1hcmtBc0RpcnR5QWN0aW9uLlRZUEU7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHVibGljIHJlYWRvbmx5IGNvbnRyb2xJZDogTmdyeEZvcm1Db250cm9sSWQsXHJcbiAgKSB7IH1cclxufVxyXG5cclxuZXhwb3J0IGNsYXNzIE1hcmtBc1ByaXN0aW5lQWN0aW9uIGltcGxlbWVudHMgQWN0aW9uIHtcclxuICBzdGF0aWMgcmVhZG9ubHkgVFlQRTogJ25ncngvZm9ybXMvTUFSS19BU19QUklTVElORScgPSAnbmdyeC9mb3Jtcy9NQVJLX0FTX1BSSVNUSU5FJztcclxuICByZWFkb25seSB0eXBlID0gTWFya0FzUHJpc3RpbmVBY3Rpb24uVFlQRTtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwdWJsaWMgcmVhZG9ubHkgY29udHJvbElkOiBOZ3J4Rm9ybUNvbnRyb2xJZCxcclxuICApIHsgfVxyXG59XHJcblxyXG5leHBvcnQgY2xhc3MgRW5hYmxlQWN0aW9uIGltcGxlbWVudHMgQWN0aW9uIHtcclxuICBzdGF0aWMgcmVhZG9ubHkgVFlQRTogJ25ncngvZm9ybXMvRU5BQkxFJyA9ICduZ3J4L2Zvcm1zL0VOQUJMRSc7XHJcbiAgcmVhZG9ubHkgdHlwZSA9IEVuYWJsZUFjdGlvbi5UWVBFO1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHB1YmxpYyByZWFkb25seSBjb250cm9sSWQ6IE5ncnhGb3JtQ29udHJvbElkLFxyXG4gICkgeyB9XHJcbn1cclxuXHJcbmV4cG9ydCBjbGFzcyBEaXNhYmxlQWN0aW9uIGltcGxlbWVudHMgQWN0aW9uIHtcclxuICBzdGF0aWMgcmVhZG9ubHkgVFlQRTogJ25ncngvZm9ybXMvRElTQUJMRScgPSAnbmdyeC9mb3Jtcy9ESVNBQkxFJztcclxuICByZWFkb25seSB0eXBlID0gRGlzYWJsZUFjdGlvbi5UWVBFO1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHB1YmxpYyByZWFkb25seSBjb250cm9sSWQ6IE5ncnhGb3JtQ29udHJvbElkLFxyXG4gICkgeyB9XHJcbn1cclxuXHJcbmV4cG9ydCBjbGFzcyBNYXJrQXNUb3VjaGVkQWN0aW9uIGltcGxlbWVudHMgQWN0aW9uIHtcclxuICBzdGF0aWMgcmVhZG9ubHkgVFlQRTogJ25ncngvZm9ybXMvTUFSS19BU19UT1VDSEVEJyA9ICduZ3J4L2Zvcm1zL01BUktfQVNfVE9VQ0hFRCc7XHJcbiAgcmVhZG9ubHkgdHlwZSA9IE1hcmtBc1RvdWNoZWRBY3Rpb24uVFlQRTtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwdWJsaWMgcmVhZG9ubHkgY29udHJvbElkOiBOZ3J4Rm9ybUNvbnRyb2xJZCxcclxuICApIHsgfVxyXG59XHJcblxyXG5leHBvcnQgY2xhc3MgTWFya0FzVW50b3VjaGVkQWN0aW9uIGltcGxlbWVudHMgQWN0aW9uIHtcclxuICBzdGF0aWMgcmVhZG9ubHkgVFlQRTogJ25ncngvZm9ybXMvTUFSS19BU19VTlRPVUNIRUQnID0gJ25ncngvZm9ybXMvTUFSS19BU19VTlRPVUNIRUQnO1xyXG4gIHJlYWRvbmx5IHR5cGUgPSBNYXJrQXNVbnRvdWNoZWRBY3Rpb24uVFlQRTtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwdWJsaWMgcmVhZG9ubHkgY29udHJvbElkOiBOZ3J4Rm9ybUNvbnRyb2xJZCxcclxuICApIHsgfVxyXG59XHJcblxyXG5leHBvcnQgY2xhc3MgRm9jdXNBY3Rpb24gaW1wbGVtZW50cyBBY3Rpb24ge1xyXG4gIHN0YXRpYyByZWFkb25seSBUWVBFOiAnbmdyeC9mb3Jtcy9GT0NVUycgPSAnbmdyeC9mb3Jtcy9GT0NVUyc7XHJcbiAgcmVhZG9ubHkgdHlwZSA9IEZvY3VzQWN0aW9uLlRZUEU7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHVibGljIHJlYWRvbmx5IGNvbnRyb2xJZDogTmdyeEZvcm1Db250cm9sSWQsXHJcbiAgKSB7IH1cclxufVxyXG5cclxuZXhwb3J0IGNsYXNzIFVuZm9jdXNBY3Rpb24gaW1wbGVtZW50cyBBY3Rpb24ge1xyXG4gIHN0YXRpYyByZWFkb25seSBUWVBFOiAnbmdyeC9mb3Jtcy9VTkZPQ1VTJyA9ICduZ3J4L2Zvcm1zL1VORk9DVVMnO1xyXG4gIHJlYWRvbmx5IHR5cGUgPSBVbmZvY3VzQWN0aW9uLlRZUEU7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHVibGljIHJlYWRvbmx5IGNvbnRyb2xJZDogTmdyeEZvcm1Db250cm9sSWQsXHJcbiAgKSB7IH1cclxufVxyXG5cclxuZXhwb3J0IGNsYXNzIE1hcmtBc1N1Ym1pdHRlZEFjdGlvbiBpbXBsZW1lbnRzIEFjdGlvbiB7XHJcbiAgc3RhdGljIHJlYWRvbmx5IFRZUEU6ICduZ3J4L2Zvcm1zL01BUktfQVNfU1VCTUlUVEVEJyA9ICduZ3J4L2Zvcm1zL01BUktfQVNfU1VCTUlUVEVEJztcclxuICByZWFkb25seSB0eXBlID0gTWFya0FzU3VibWl0dGVkQWN0aW9uLlRZUEU7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHVibGljIHJlYWRvbmx5IGNvbnRyb2xJZDogTmdyeEZvcm1Db250cm9sSWQsXHJcbiAgKSB7IH1cclxufVxyXG5cclxuZXhwb3J0IGNsYXNzIE1hcmtBc1Vuc3VibWl0dGVkQWN0aW9uIGltcGxlbWVudHMgQWN0aW9uIHtcclxuICBzdGF0aWMgcmVhZG9ubHkgVFlQRTogJ25ncngvZm9ybXMvTUFSS19BU19VTlNVQk1JVFRFRCcgPSAnbmdyeC9mb3Jtcy9NQVJLX0FTX1VOU1VCTUlUVEVEJztcclxuICByZWFkb25seSB0eXBlID0gTWFya0FzVW5zdWJtaXR0ZWRBY3Rpb24uVFlQRTtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwdWJsaWMgcmVhZG9ubHkgY29udHJvbElkOiBOZ3J4Rm9ybUNvbnRyb2xJZCxcclxuICApIHsgfVxyXG59XHJcblxyXG5leHBvcnQgY2xhc3MgQWRkQXJyYXlDb250cm9sQWN0aW9uPFRWYWx1ZT4gaW1wbGVtZW50cyBBY3Rpb24ge1xyXG4gIHN0YXRpYyByZWFkb25seSBUWVBFOiAnbmdyeC9mb3Jtcy9BRERfQVJSQVlfQ09OVFJPTCcgPSAnbmdyeC9mb3Jtcy9BRERfQVJSQVlfQ09OVFJPTCc7XHJcbiAgcmVhZG9ubHkgdHlwZSA9IEFkZEFycmF5Q29udHJvbEFjdGlvbi5UWVBFO1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHB1YmxpYyByZWFkb25seSBjb250cm9sSWQ6IE5ncnhGb3JtQ29udHJvbElkLFxyXG4gICAgcHVibGljIHJlYWRvbmx5IHZhbHVlOiBUVmFsdWUsXHJcbiAgICBwdWJsaWMgcmVhZG9ubHkgaW5kZXg/OiBudW1iZXIsXHJcbiAgKSB7IH1cclxufVxyXG5cclxuZXhwb3J0IGNsYXNzIEFkZEdyb3VwQ29udHJvbEFjdGlvbjxUVmFsdWUgZXh0ZW5kcyBLZXlWYWx1ZSwgVENvbnRyb2xLZXkgZXh0ZW5kcyBrZXlvZiBUVmFsdWUgPSBrZXlvZiBUVmFsdWU+IGltcGxlbWVudHMgQWN0aW9uIHtcclxuICBzdGF0aWMgcmVhZG9ubHkgVFlQRTogJ25ncngvZm9ybXMvQUREX0dST1VQX0NPTlRST0wnID0gJ25ncngvZm9ybXMvQUREX0dST1VQX0NPTlRST0wnO1xyXG4gIHJlYWRvbmx5IHR5cGUgPSBBZGRHcm91cENvbnRyb2xBY3Rpb24uVFlQRTtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwdWJsaWMgcmVhZG9ubHkgY29udHJvbElkOiBOZ3J4Rm9ybUNvbnRyb2xJZCxcclxuICAgIHB1YmxpYyByZWFkb25seSBuYW1lOiBrZXlvZiBUVmFsdWUsXHJcbiAgICBwdWJsaWMgcmVhZG9ubHkgdmFsdWU6IFRWYWx1ZVtUQ29udHJvbEtleV0sXHJcbiAgKSB7IH1cclxufVxyXG5cclxuZXhwb3J0IGNsYXNzIFJlbW92ZUFycmF5Q29udHJvbEFjdGlvbiBpbXBsZW1lbnRzIEFjdGlvbiB7XHJcbiAgc3RhdGljIHJlYWRvbmx5IFRZUEU6ICduZ3J4L2Zvcm1zL1JFTU9WRV9BUlJBWV9DT05UUk9MJyA9ICduZ3J4L2Zvcm1zL1JFTU9WRV9BUlJBWV9DT05UUk9MJztcclxuICByZWFkb25seSB0eXBlID0gUmVtb3ZlQXJyYXlDb250cm9sQWN0aW9uLlRZUEU7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHVibGljIHJlYWRvbmx5IGNvbnRyb2xJZDogTmdyeEZvcm1Db250cm9sSWQsXHJcbiAgICBwdWJsaWMgcmVhZG9ubHkgaW5kZXg6IG51bWJlcixcclxuICApIHsgfVxyXG59XHJcblxyXG5leHBvcnQgY2xhc3MgU3dhcEFycmF5Q29udHJvbEFjdGlvbiBpbXBsZW1lbnRzIEFjdGlvbiB7XHJcbiAgc3RhdGljIHJlYWRvbmx5IFRZUEU6ICduZ3J4L2Zvcm1zL1NXQVBfQVJSQVlfQ09OVFJPTCcgPSAnbmdyeC9mb3Jtcy9TV0FQX0FSUkFZX0NPTlRST0wnO1xyXG4gIHJlYWRvbmx5IHR5cGUgPSBTd2FwQXJyYXlDb250cm9sQWN0aW9uLlRZUEU7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHVibGljIHJlYWRvbmx5IGNvbnRyb2xJZDogTmdyeEZvcm1Db250cm9sSWQsXHJcbiAgICBwdWJsaWMgcmVhZG9ubHkgZnJvbUluZGV4OiBudW1iZXIsXHJcbiAgICBwdWJsaWMgcmVhZG9ubHkgdG9JbmRleDogbnVtYmVyXHJcbiAgKSB7IH1cclxufVxyXG5cclxuZXhwb3J0IGNsYXNzIE1vdmVBcnJheUNvbnRyb2xBY3Rpb24gaW1wbGVtZW50cyBBY3Rpb24ge1xyXG4gIHN0YXRpYyByZWFkb25seSBUWVBFOiAnbmdyeC9mb3Jtcy9NT1ZFX0FSUkFZX0NPTlRST0wnID0gJ25ncngvZm9ybXMvTU9WRV9BUlJBWV9DT05UUk9MJztcclxuICByZWFkb25seSB0eXBlID0gTW92ZUFycmF5Q29udHJvbEFjdGlvbi5UWVBFO1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHB1YmxpYyByZWFkb25seSBjb250cm9sSWQ6IE5ncnhGb3JtQ29udHJvbElkLFxyXG4gICAgcHVibGljIHJlYWRvbmx5IGZyb21JbmRleDogbnVtYmVyLFxyXG4gICAgcHVibGljIHJlYWRvbmx5IHRvSW5kZXg6IG51bWJlclxyXG4gICkgeyB9XHJcbn1cclxuXHJcbmV4cG9ydCBjbGFzcyBSZW1vdmVHcm91cENvbnRyb2xBY3Rpb248VFZhbHVlPiBpbXBsZW1lbnRzIEFjdGlvbiB7XHJcbiAgc3RhdGljIHJlYWRvbmx5IFRZUEU6ICduZ3J4L2Zvcm1zL1JFTU9WRV9DT05UUk9MJyA9ICduZ3J4L2Zvcm1zL1JFTU9WRV9DT05UUk9MJztcclxuICByZWFkb25seSB0eXBlID0gUmVtb3ZlR3JvdXBDb250cm9sQWN0aW9uLlRZUEU7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHVibGljIHJlYWRvbmx5IGNvbnRyb2xJZDogTmdyeEZvcm1Db250cm9sSWQsXHJcbiAgICBwdWJsaWMgcmVhZG9ubHkgbmFtZToga2V5b2YgVFZhbHVlLFxyXG4gICkgeyB9XHJcbn1cclxuXHJcbmV4cG9ydCBjbGFzcyBTZXRVc2VyRGVmaW5lZFByb3BlcnR5QWN0aW9uIGltcGxlbWVudHMgQWN0aW9uIHtcclxuICBzdGF0aWMgcmVhZG9ubHkgVFlQRTogJ25ncngvZm9ybXMvU0VUX1VTRVJfREVGSU5FRF9QUk9QRVJUWScgPSAnbmdyeC9mb3Jtcy9TRVRfVVNFUl9ERUZJTkVEX1BST1BFUlRZJztcclxuICByZWFkb25seSB0eXBlID0gU2V0VXNlckRlZmluZWRQcm9wZXJ0eUFjdGlvbi5UWVBFO1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHB1YmxpYyByZWFkb25seSBjb250cm9sSWQ6IE5ncnhGb3JtQ29udHJvbElkLFxyXG4gICAgcHVibGljIHJlYWRvbmx5IG5hbWU6IHN0cmluZyxcclxuICAgIHB1YmxpYyByZWFkb25seSB2YWx1ZTogYW55LFxyXG4gICkgeyB9XHJcbn1cclxuXHJcbmV4cG9ydCBjbGFzcyBSZXNldEFjdGlvbiBpbXBsZW1lbnRzIEFjdGlvbiB7XHJcbiAgc3RhdGljIHJlYWRvbmx5IFRZUEU6ICduZ3J4L2Zvcm1zL1JFU0VUJyA9ICduZ3J4L2Zvcm1zL1JFU0VUJztcclxuICByZWFkb25seSB0eXBlID0gUmVzZXRBY3Rpb24uVFlQRTtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwdWJsaWMgcmVhZG9ubHkgY29udHJvbElkOiBOZ3J4Rm9ybUNvbnRyb2xJZCxcclxuICApIHsgfVxyXG59XHJcblxyXG5leHBvcnQgdHlwZSBBY3Rpb25zPFRWYWx1ZT4gPVxyXG4gIHwgU2V0VmFsdWVBY3Rpb248VFZhbHVlPlxyXG4gIHwgU2V0RXJyb3JzQWN0aW9uXHJcbiAgfCBTZXRBc3luY0Vycm9yQWN0aW9uXHJcbiAgfCBDbGVhckFzeW5jRXJyb3JBY3Rpb25cclxuICB8IFN0YXJ0QXN5bmNWYWxpZGF0aW9uQWN0aW9uXHJcbiAgfCBNYXJrQXNEaXJ0eUFjdGlvblxyXG4gIHwgTWFya0FzUHJpc3RpbmVBY3Rpb25cclxuICB8IEVuYWJsZUFjdGlvblxyXG4gIHwgRGlzYWJsZUFjdGlvblxyXG4gIHwgTWFya0FzVG91Y2hlZEFjdGlvblxyXG4gIHwgTWFya0FzVW50b3VjaGVkQWN0aW9uXHJcbiAgfCBGb2N1c0FjdGlvblxyXG4gIHwgVW5mb2N1c0FjdGlvblxyXG4gIHwgTWFya0FzU3VibWl0dGVkQWN0aW9uXHJcbiAgfCBNYXJrQXNVbnN1Ym1pdHRlZEFjdGlvblxyXG4gIHwgKFRWYWx1ZSBleHRlbmRzIEtleVZhbHVlID8gQWRkR3JvdXBDb250cm9sQWN0aW9uPFRWYWx1ZT4gOiBuZXZlcilcclxuICB8IFJlbW92ZUdyb3VwQ29udHJvbEFjdGlvbjxUVmFsdWU+XHJcbiAgfCBBZGRBcnJheUNvbnRyb2xBY3Rpb248YW55PlxyXG4gIHwgUmVtb3ZlQXJyYXlDb250cm9sQWN0aW9uXHJcbiAgfCBTZXRVc2VyRGVmaW5lZFByb3BlcnR5QWN0aW9uXHJcbiAgfCBSZXNldEFjdGlvblxyXG4gIHwgU3dhcEFycmF5Q29udHJvbEFjdGlvblxyXG4gIHwgTW92ZUFycmF5Q29udHJvbEFjdGlvblxyXG4gIDtcclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBpc05ncnhGb3Jtc0FjdGlvbihhY3Rpb246IEFjdGlvbikge1xyXG4gIHJldHVybiAhIWFjdGlvbi50eXBlICYmIGFjdGlvbi50eXBlLnN0YXJ0c1dpdGgoJ25ncngvZm9ybXMvJyk7XHJcbn1cclxuXHJcbmV4cG9ydCBjb25zdCBBTExfTkdSWF9GT1JNU19BQ1RJT05fVFlQRVM6IEFjdGlvbnM8YW55PlsndHlwZSddW10gPSBbXHJcbiAgU2V0VmFsdWVBY3Rpb24uVFlQRSxcclxuICBTZXRFcnJvcnNBY3Rpb24uVFlQRSxcclxuICBTZXRBc3luY0Vycm9yQWN0aW9uLlRZUEUsXHJcbiAgQ2xlYXJBc3luY0Vycm9yQWN0aW9uLlRZUEUsXHJcbiAgU3RhcnRBc3luY1ZhbGlkYXRpb25BY3Rpb24uVFlQRSxcclxuICBNYXJrQXNEaXJ0eUFjdGlvbi5UWVBFLFxyXG4gIE1hcmtBc1ByaXN0aW5lQWN0aW9uLlRZUEUsXHJcbiAgRW5hYmxlQWN0aW9uLlRZUEUsXHJcbiAgRGlzYWJsZUFjdGlvbi5UWVBFLFxyXG4gIE1hcmtBc1RvdWNoZWRBY3Rpb24uVFlQRSxcclxuICBNYXJrQXNVbnRvdWNoZWRBY3Rpb24uVFlQRSxcclxuICBGb2N1c0FjdGlvbi5UWVBFLFxyXG4gIFVuZm9jdXNBY3Rpb24uVFlQRSxcclxuICBNYXJrQXNTdWJtaXR0ZWRBY3Rpb24uVFlQRSxcclxuICBNYXJrQXNVbnN1Ym1pdHRlZEFjdGlvbi5UWVBFLFxyXG4gIEFkZEdyb3VwQ29udHJvbEFjdGlvbi5UWVBFLFxyXG4gIFJlbW92ZUdyb3VwQ29udHJvbEFjdGlvbi5UWVBFLFxyXG4gIEFkZEFycmF5Q29udHJvbEFjdGlvbi5UWVBFLFxyXG4gIFJlbW92ZUFycmF5Q29udHJvbEFjdGlvbi5UWVBFLFxyXG4gIFNldFVzZXJEZWZpbmVkUHJvcGVydHlBY3Rpb24uVFlQRSxcclxuICBSZXNldEFjdGlvbi5UWVBFLFxyXG4gIFN3YXBBcnJheUNvbnRyb2xBY3Rpb24uVFlQRSxcclxuICBNb3ZlQXJyYXlDb250cm9sQWN0aW9uLlRZUEUsXHJcbl07XHJcbiJdfQ==