@ngx-formly/core 5.10.23 → 5.10.27

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"sources":["node_modules/tslib/tslib.es6.js","ng://@ngx-formly/core/lib/utils.ts","ng://@ngx-formly/core/lib/services/formly.config.ts","ng://@ngx-formly/core/lib/services/formly.form.builder.ts","ng://@ngx-formly/core/lib/extensions/field-form/utils.ts","ng://@ngx-formly/core/lib/components/formly.form.ts","ng://@ngx-formly/core/lib/components/formly.field.ts","ng://@ngx-formly/core/lib/components/formly.attributes.ts","ng://@ngx-formly/core/lib/templates/field.type.ts","ng://@ngx-formly/core/lib/templates/field-array.type.ts","ng://@ngx-formly/core/lib/templates/field.wrapper.ts","ng://@ngx-formly/core/lib/templates/formly.group.ts","ng://@ngx-formly/core/lib/templates/formly.validation-message.ts","ng://@ngx-formly/core/lib/templates/field-template.type.ts","ng://@ngx-formly/core/lib/extensions/field-expression/utils.ts","ng://@ngx-formly/core/lib/extensions/field-expression/field-expression.ts","ng://@ngx-formly/core/lib/extensions/field-validation/field-validation.ts","ng://@ngx-formly/core/lib/extensions/field-form/field-form.ts","ng://@ngx-formly/core/lib/extensions/core/core.ts","ng://@ngx-formly/core/lib/core.module.ts"],"names":["extendStatics","d","b","Object","setPrototypeOf","__proto__","Array","p","hasOwnProperty","__extends","__","this","constructor","prototype","create","__assign","assign","t","s","i","n","arguments","length","call","apply","__rest","e","indexOf","getOwnPropertySymbols","propertyIsEnumerable","__values","o","m","Symbol","iterator","next","value","done","__read","r","ar","push","error","__spread","concat","getKeyPath","field","key","_keyPath","path","replace","split","isArray","slice","FORMLY_VALIDATORS","assignFieldValue","paths","root","parent","undefined","resetOnHide","k","pop","reduce","model","assignModelValue","isObject","test","clone","getFieldValue","_b","tslib_1.__values","_c","reverseDeepMerge","dest","args","_i","forEach","src","srcArg","isNullOrUndefined","obj1","obj2","getPrototypeOf","isUndefined","isFunction","x","isObservable","changingThisBreaksApplicationSecurity","name","Set","Map","_isAMomentObject","AbstractControl","Date","getTime","map","v","proto","c","keys","newVal","prop","propDesc","getOwnPropertyDescriptor","get","defineProperty","defineHiddenProp","defaultValue","enumerable","writable","configurable","wrapProperty","setFn","_observers","fns","currentValue","firstChange","set","previousValue_1","changeFn","previousValue","splice","reduceFormUpdateValidityCalls","form","action","updateValidity","_updateTreeValidity","bind","updateValidityArgs","called","emitEvent","_a","FORMLY_CONFIG","InjectionToken","FormlyConfig","types","validators","wrappers","messages","templateManipulators","preWrapper","postWrapper","extras","checkExpressionOn","lazyRender","showError","formControl","invalid","touched","options","parentForm","submitted","validation","show","extensions","addConfig","config","_this","type","setType","validator","setValidator","wrapper","setWrapper","manipulators","console","warn","manipulator","setManipulator","validationMessages","addValidatorMessage","message","extension","option","getType","Error","mergeExtendedType","getMergedField","defaultOptions","extendDefaults","extends","optionsTypes","componentRef","resolveFieldTypeRef","instance","component","_resolver","_injector","resolveComponentFactory","destroy","setTypeWrapper","getWrapper","getValidator","getValidatorMessage","class","method","extendedType","Injectable","providedIn","FormlyFormBuilder","formlyConfig","componentFactoryResolver","injector","buildForm","fieldGroup","core","_setOptions","_buildForm","_checkField","getExtensions","prePopulate","onPopulate","f","postPopulate","formState","fieldChanges","Subject","_hiddenFieldsForCheck","_markForCheck","_componentRefs","ref","ChangeDetectorRef","markForCheck","_buildField","ComponentFactoryResolver","Injector","unregisterControl","control","opts","FormArray","key_1","controls","findIndex","updateControl","removeAt","FormGroup","key_2","removeControl","setParent","findControl","registerControl","setValidators","setAsyncValidators","templateOptions","disabled","disable","enable","registerOnDisabledChange","FormControl","patchValue","setControl","_hide","status","updateValueAndValidity","emit","_forEachChild","cb","FormlyForm","formlyBuilder","ngZone","immutable","parentFormGroup","modelChange","EventEmitter","_modelChangeValue","modelChangeSubs","modelChange$","modelChangeSub","pipe","switchMap","onStable","asObservable","take","subscribe","runGuarded","checkExpressionChange","_model","_fields","fields","_options","content","hasContent","node","nativeElement","nextSibling","nodeType","Node","ELEMENT_NODE","TEXT_NODE","textContent","trim","ngDoCheck","ngOnChanges","changes","clearControl","setOptions","updateInitialValue","clearModelSubscriptions","trackModelChanges","ngOnDestroy","unsubscribe","changeModel","resetModel","_initialModel","resetForm","reset","emitModelChange","rootKey","control_1","valueChanges","distinctUntilChanged","y","modelOptions","updateOn","debounce","default","debounceTime","onlySelf","parsers","parserFn","tslib_1.__spread","join","observers","unshift","sub","Component","selector","template","providers","NgZone","Attribute","FormGroupDirective","decorators","Optional","Input","Output","ViewChild","FormlyField","renderer","resolver","elementRef","hideDeprecation","warnDeprecation","hostObservers","componentRefs","hooksObservers","detectFieldBuild","ngAfterContentInit","triggerHook","ngAfterContentChecked","ngAfterViewInit","ngAfterViewChecked","render","ngOnInit","resetRefs","renderField","containerRef","clear","wps_1","ref_1","createComponent","attachComponentRef","viewRef","detach","destroyed","insert","changeDetectorRef","detectChanges","hooks","sub_1","lifecycle","setStyle","setAttribute","filter","Renderer2","ElementRef","read","ViewContainerRef","static","FormlyAttributes","_document","uiAttributesCache","uiAttributes","uiEvents","listeners","events","document","listener","eventName","to","listen","attributes","attr","removeAttribute","detachElementRef","attachElementRef","fieldAttrElements","id","toggleFocus","toLowerCase","element","focus","isFocused","activeElement","some","contains","blur","onFocus","$event","onBlur","onChange","change","markAsDirty","index","Directive","host","(focus)","(blur)","(change)","Inject","DOCUMENT","FieldType","Field","_super","tslib_1.__extends","FieldArrayType","builder","fieldArray","add","initialModel","remove","FieldWrapper","FormlyGroup","[class]","FormlyValidationMessage","errorMessage$","statusChanges","startWith","errorMessage","of","fieldForm","errors","errorPath","asyncValidators","changeDetection","ChangeDetectionStrategy","OnPush","FormlyTemplateType","sanitizer","innerHtml","safeHtml","bypassSecurityTrustHtml","DomSanitizer","evalExpression","expression","thisArg","argVal","Function","FieldExpressionExtension","checkLocked","ignoreCache","checkField","_expressionProperties","expressionProperties","expressionProperty","this_1","_evalExpression","Observable","subscribe_1","setExprValue","subscription_1","onInit_1","onInit","onDestroy_1","onDestroy","hideExpression","hide","parentExpression","evalStringExpression","argNames","fieldChanged","sort","toggleFormControl","checkFieldExpressionChange","checkFieldVisibilityChange","expressionValue","JSON","stringify","hideExpressionResult","hidden","setDisabledState","every","target","lastIndex","emitExpressionChanges","property","FieldValidationExtension","initFieldValidation","getPredefinedFieldValidation","validatorName","wrapNgValidatorFn","VALIDATORS","opt","Validators","compose","required","pattern","minLength","maxLength","min","max","validatorOption","isPromise","obj","then","handleAsyncResult","handleResult","ctrl","childCtrl","setErrors","childErrors","FieldFormExtension","addFormControl","fieldsToUpdate","controlOptions","componentType","c_1","enabled","updateControlValidity","asyncValidator","mergeValidators","composeAsync","childrenToUpdate","CoreExtension","formId","getFieldComponentInstance","fieldTransforms","fieldTransform","initFieldOptions","getFieldId","label","placeholder","resetFieldOnHide","setDefaultValue","parent_1","initFieldWrappers","fieldTemplateManipulators","el","a","defaultFormlyConfig","FormlyModule","configService","configs","forRoot","ngModule","provide","multi","useFactory","deps","useValue","ANALYZE_FOR_ENTRY_COMPONENTS","forChild","NgModule","declarations","entryComponents","exports","imports","CommonModule","getFieldInitialValue","paths_1","paths_1_1"],"mappings":"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","sourcesContent":["/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation. All rights reserved.\r\nLicensed under the Apache License, Version 2.0 (the \"License\"); you may not use\r\nthis file except in compliance with the License. You may obtain a copy of the\r\nLicense at http://www.apache.org/licenses/LICENSE-2.0\r\n\r\nTHIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\nKIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED\r\nWARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,\r\nMERCHANTABLITY OR NON-INFRINGEMENT.\r\n\r\nSee the Apache Version 2.0 License for specific language governing permissions\r\nand limitations under the License.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport function __exportStar(m, exports) {\r\n for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\n\r\nexport function __values(o) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator], i = 0;\r\n if (m) return m.call(o);\r\n return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n};\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\r\n result.default = mod;\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n","import { FormlyFieldConfig } from './core';\nimport { isObservable } from 'rxjs';\nimport { AbstractControl } from '@angular/forms';\nimport { FormlyFieldConfigCache } from './components/formly.field.config';\n\nexport function getFieldId(formId: string, field: FormlyFieldConfig, index: string|number) {\n if (field.id) return field.id;\n let type = field.type;\n if (!type && field.template) type = 'template';\n return [formId, type, field.key, index].join('_');\n}\n\nexport function getKeyPath(field: FormlyFieldConfigCache): string[] {\n if (!field.key) {\n return [];\n }\n\n /* We store the keyPath in the field for performance reasons. This function will be called frequently. */\n if (!field._keyPath || field._keyPath.key !== field.key) {\n let path: string[] = [];\n if (typeof field.key === 'string') {\n const key = field.key.indexOf('[') === -1\n ? field.key\n : field.key.replace(/\\[(\\w+)\\]/g, '.$1');\n path = key.indexOf('.') !== -1 ? key.split('.') : [key];\n } else if (Array.isArray(field.key)) {\n path = field.key.slice(0);\n } else {\n path = [`${field.key}`];\n }\n\n field._keyPath = { key: field.key, path };\n }\n\n return field._keyPath.path.slice(0);\n}\n\nexport const FORMLY_VALIDATORS = ['required', 'pattern', 'minLength', 'maxLength', 'min', 'max'];\n\nexport function assignFieldValue(field: FormlyFieldConfigCache, value: any) {\n let paths = getKeyPath(field);\n if (paths.length === 0) {\n return;\n }\n\n let root = field;\n while (root.parent) {\n root = root.parent;\n paths = [...getKeyPath(root), ...paths];\n }\n\n if (value === undefined && field.resetOnHide) {\n const k = paths.pop();\n const m = paths.reduce((model, path) => model[path] || {}, root.model);\n delete m[k];\n return;\n }\n\n assignModelValue(root.model, paths, value);\n}\n\nexport function assignModelValue(model: any, paths: string[], value: any) {\n for (let i = 0; i < (paths.length - 1); i++) {\n const path = paths[i];\n if (!model[path] || !isObject(model[path])) {\n model[path] = /^\\d+$/.test(paths[i + 1]) ? [] : {};\n }\n\n model = model[path];\n }\n\n model[paths[paths.length - 1]] = clone(value);\n}\n\nexport function getFieldInitialValue(field: FormlyFieldConfig) {\n let value = field.options['_initialModel'];\n let paths = getKeyPath(field);\n while (field.parent) {\n field = field.parent;\n paths = [...getKeyPath(field), ...paths];\n }\n\n for (const path of paths) {\n if (!value) {\n return undefined;\n }\n value = value[path];\n }\n\n return value;\n}\n\nexport function getFieldValue(field: FormlyFieldConfig): any {\n let model = field.parent.model;\n for (const path of getKeyPath(field)) {\n if (!model) {\n return model;\n }\n model = model[path];\n }\n\n return model;\n}\n\nexport function reverseDeepMerge(dest: any, ...args: any[]) {\n args.forEach(src => {\n for (let srcArg in src) {\n if (isNullOrUndefined(dest[srcArg]) || isBlankString(dest[srcArg])) {\n dest[srcArg] = clone(src[srcArg]);\n } else if (objAndSameType(dest[srcArg], src[srcArg])) {\n reverseDeepMerge(dest[srcArg], src[srcArg]);\n }\n }\n });\n return dest;\n}\n\nexport function isNullOrUndefined(value: any) {\n return value === undefined || value === null;\n}\n\nexport function isUndefined(value: any) {\n return value === undefined;\n}\n\nexport function isBlankString(value: any) {\n return value === '';\n}\n\nexport function isFunction(value: any) {\n return typeof(value) === 'function';\n}\n\nexport function objAndSameType(obj1: any, obj2: any) {\n return isObject(obj1) && isObject(obj2)\n && Object.getPrototypeOf(obj1) === Object.getPrototypeOf(obj2)\n && !(Array.isArray(obj1) || Array.isArray(obj2));\n}\n\nexport function isObject(x: any) {\n return x != null && typeof x === 'object';\n}\n\nexport function isPromise(obj: any): obj is Promise<any> {\n return !!obj && typeof obj.then === 'function';\n}\n\nexport function clone(value: any): any {\n if (\n !isObject(value)\n || isObservable(value)\n || /* instanceof SafeHtmlImpl */ value.changingThisBreaksApplicationSecurity\n || ['RegExp', 'FileList', 'File', 'Blob'].indexOf(value.constructor.name) !== -1\n ) {\n return value;\n }\n\n if (value instanceof Set) {\n return new Set(value);\n }\n\n if (value instanceof Map) {\n return new Map(value);\n }\n\n // https://github.com/moment/moment/blob/master/moment.js#L252\n if (value._isAMomentObject && isFunction(value.clone)) {\n return value.clone();\n }\n\n if (value instanceof AbstractControl) {\n return null;\n }\n\n if (value instanceof Date) {\n return new Date(value.getTime());\n }\n\n if (Array.isArray(value)) {\n return value.slice(0).map(v => clone(v));\n }\n\n // best way to clone a js object maybe\n // https://stackoverflow.com/questions/41474986/how-to-clone-a-javascript-es6-class-instance\n const proto = Object.getPrototypeOf(value);\n let c = Object.create(proto);\n c = Object.setPrototypeOf(c, proto);\n // need to make a deep copy so we dont use Object.assign\n // also Object.assign wont copy property descriptor exactly\n return Object.keys(value).reduce((newVal, prop) => {\n const propDesc = Object.getOwnPropertyDescriptor(value, prop);\n if (propDesc.get) {\n Object.defineProperty(newVal, prop, propDesc);\n } else {\n newVal[prop] = clone(value[prop]);\n }\n\n return newVal;\n }, c);\n}\n\nexport function defineHiddenProp(field: any, prop: string, defaultValue: any) {\n Object.defineProperty(field, prop, { enumerable: false, writable: true, configurable: true });\n field[prop] = defaultValue;\n}\n\nexport function wrapProperty<T = any>(\n o: any,\n prop: string,\n setFn: (change: {currentValue: T, previousValue?: T, firstChange: boolean}) => void,\n) {\n if (!o._observers) {\n defineHiddenProp(o, '_observers', {});\n }\n\n if (!o._observers[prop]) {\n o._observers[prop] = [];\n }\n\n let fns: typeof setFn[] = o._observers[prop];\n if (fns.indexOf(setFn) === -1) {\n fns.push(setFn);\n setFn({ currentValue: o[prop], firstChange: true });\n if (fns.length === 1) {\n defineHiddenProp(o, `___$${prop}`, o[prop]);\n Object.defineProperty(o, prop, {\n configurable: true,\n get: () => o[`___$${prop}`],\n set: currentValue => {\n if (currentValue !== o[`___$${prop}`]) {\n const previousValue = o[`___$${prop}`];\n o[`___$${prop}`] = currentValue;\n fns.forEach(changeFn => changeFn({ previousValue, currentValue, firstChange: false }));\n }\n },\n });\n }\n }\n\n return () => fns.splice(fns.indexOf(setFn), 1);\n}\n\nexport function reduceFormUpdateValidityCalls(form: any, action: Function) {\n const updateValidity = form._updateTreeValidity.bind(form);\n\n let updateValidityArgs = { called: false, emitEvent: false };\n form._updateTreeValidity = ({ emitEvent } = { emitEvent: true }) => updateValidityArgs = { called: true, emitEvent: emitEvent || updateValidityArgs.emitEvent };\n action();\n\n updateValidityArgs.called && updateValidity({ emitEvent: updateValidityArgs.emitEvent });\n form._updateTreeValidity = updateValidity;\n}\n","import { Injectable, InjectionToken, ComponentRef } from '@angular/core';\nimport { ValidationErrors, AbstractControl } from '@angular/forms';\nimport { FieldType } from './../templates/field.type';\nimport { reverseDeepMerge, defineHiddenProp } from './../utils';\nimport { FormlyFieldConfig, FormlyFieldConfigCache } from '../components/formly.field.config';\nimport { Observable } from 'rxjs';\n\nexport const FORMLY_CONFIG = new InjectionToken<FormlyConfig>('FORMLY_CONFIG');\n\n/** @experimental */\nexport interface FormlyExtension {\n prePopulate?(field: FormlyFieldConfig): void;\n onPopulate?(field: FormlyFieldConfig): void;\n postPopulate?(field: FormlyFieldConfig): void;\n}\n\n/**\n * Maintains list of formly field directive types. This can be used to register new field templates.\n */\n@Injectable({ providedIn: 'root' })\nexport class FormlyConfig {\n types: {[name: string]: TypeOption} = {};\n validators: { [name: string]: ValidatorOption } = {};\n wrappers: { [name: string]: WrapperOption } = {};\n messages: { [name: string]: ValidationMessageOption['message'] } = {};\n templateManipulators: {\n preWrapper: ManipulatorWrapper[];\n postWrapper: ManipulatorWrapper[];\n } = {\n preWrapper: [],\n postWrapper: [],\n };\n extras: ConfigOption['extras'] = {\n checkExpressionOn: 'changeDetectionCheck',\n lazyRender: false,\n showError: function(field: FieldType) {\n return field.formControl && field.formControl.invalid && (field.formControl.touched || (field.options.parentForm && field.options.parentForm.submitted) || !!(field.field.validation && field.field.validation.show));\n },\n };\n extensions: { [name: string]: FormlyExtension } = {};\n\n addConfig(config: ConfigOption) {\n if (config.types) {\n config.types.forEach(type => this.setType(type));\n }\n if (config.validators) {\n config.validators.forEach(validator => this.setValidator(validator));\n }\n if (config.wrappers) {\n config.wrappers.forEach(wrapper => this.setWrapper(wrapper));\n }\n if (config.manipulators) {\n console.warn(`NgxFormly: passing 'manipulators' config is deprecated, use custom extension instead.`);\n config.manipulators.forEach(manipulator => this.setManipulator(manipulator));\n }\n if (config.validationMessages) {\n config.validationMessages.forEach(validation => this.addValidatorMessage(validation.name, validation.message));\n }\n if (config.extensions) {\n config.extensions.forEach(c => this.extensions[c.name] = c.extension);\n }\n if (config.extras) {\n this.extras = { ...this.extras, ...config.extras };\n }\n }\n\n setType(options: TypeOption | TypeOption[]) {\n if (Array.isArray(options)) {\n options.forEach((option) => this.setType(option));\n } else {\n if (!this.types[options.name]) {\n this.types[options.name] = <TypeOption>{ name: options.name };\n }\n\n ['component', 'extends', 'defaultOptions', 'wrappers'].forEach(prop => {\n if (options.hasOwnProperty(prop)) {\n this.types[options.name][prop] = options[prop];\n }\n });\n }\n }\n\n getType(name: string): TypeOption {\n if (!this.types[name]) {\n throw new Error(`[Formly Error] The type \"${name}\" could not be found. Please make sure that is registered through the FormlyModule declaration.`);\n }\n\n this.mergeExtendedType(name);\n\n return this.types[name];\n }\n\n getMergedField(field: FormlyFieldConfig = {}): any {\n const type = this.getType(field.type);\n if (type.defaultOptions) {\n reverseDeepMerge(field, type.defaultOptions);\n }\n\n const extendDefaults = type.extends && this.getType(type.extends).defaultOptions;\n if (extendDefaults) {\n reverseDeepMerge(field, extendDefaults);\n }\n\n if (field && field.optionsTypes) {\n field.optionsTypes.forEach(option => {\n const defaultOptions = this.getType(option).defaultOptions;\n if (defaultOptions) {\n reverseDeepMerge(field, defaultOptions);\n }\n });\n }\n\n const componentRef = this.resolveFieldTypeRef(field);\n if (componentRef && componentRef.instance && componentRef.instance.defaultOptions) {\n reverseDeepMerge(field, componentRef.instance.defaultOptions);\n }\n\n if (!field.wrappers && type.wrappers) {\n field.wrappers = [...type.wrappers];\n }\n }\n\n /** @internal */\n resolveFieldTypeRef(field: FormlyFieldConfigCache = {}): ComponentRef<FieldType> {\n if (!field.type) {\n return null;\n }\n\n const type = this.getType(field.type);\n if (!type.component || type['_componentRef']) {\n return type['_componentRef'];\n }\n\n const { _resolver, _injector } = field.parent.options;\n const componentRef = _resolver\n .resolveComponentFactory<FieldType>(type.component)\n .create(_injector);\n\n defineHiddenProp(type, '_componentRef', componentRef);\n componentRef.destroy();\n\n return type['_componentRef'];\n }\n\n setWrapper(options: WrapperOption) {\n this.wrappers[options.name] = options;\n if (options.types) {\n options.types.forEach((type) => {\n this.setTypeWrapper(type, options.name);\n });\n }\n }\n\n getWrapper(name: string): WrapperOption {\n if (!this.wrappers[name]) {\n throw new Error(`[Formly Error] The wrapper \"${name}\" could not be found. Please make sure that is registered through the FormlyModule declaration.`);\n }\n\n return this.wrappers[name];\n }\n\n setTypeWrapper(type: string, name: string) {\n if (!this.types[type]) {\n this.types[type] = <TypeOption>{};\n }\n if (!this.types[type].wrappers) {\n this.types[type].wrappers = [];\n }\n if (this.types[type].wrappers.indexOf(name) === -1) {\n this.types[type].wrappers.push(name);\n }\n }\n\n setValidator(options: ValidatorOption) {\n this.validators[options.name] = options;\n }\n\n getValidator(name: string): ValidatorOption {\n if (!this.validators[name]) {\n throw new Error(`[Formly Error] The validator \"${name}\" could not be found. Please make sure that is registered through the FormlyModule declaration.`);\n }\n\n return this.validators[name];\n }\n\n addValidatorMessage(name: string, message: ValidationMessageOption['message']) {\n this.messages[name] = message;\n }\n\n getValidatorMessage(name: string) {\n return this.messages[name];\n }\n\n setManipulator(manipulator: ManipulatorOption) {\n new manipulator.class()[manipulator.method](this);\n }\n\n private mergeExtendedType(name: string) {\n if (!this.types[name].extends) {\n return;\n }\n\n const extendedType = this.getType(this.types[name].extends);\n if (!this.types[name].component) {\n this.types[name].component = extendedType.component;\n }\n\n if (!this.types[name].wrappers) {\n this.types[name].wrappers = extendedType.wrappers;\n }\n }\n}\nexport interface TypeOption {\n name: string;\n component?: any;\n wrappers?: string[];\n extends?: string;\n defaultOptions?: FormlyFieldConfig;\n}\n\nexport interface WrapperOption {\n name: string;\n component: any;\n types?: string[];\n}\n\nexport interface FieldValidatorFn {\n (c: AbstractControl, field: FormlyFieldConfig, options?: { [id: string]: any; }): ValidationErrors | null;\n}\n\nexport interface ValidatorOption {\n name: string;\n validation: FieldValidatorFn;\n options?: { [id: string]: any };\n}\n\nexport interface ExtensionOption {\n name: string;\n extension: FormlyExtension;\n}\n\nexport interface ValidationMessageOption {\n name: string;\n message: string | ((error: any, field: FormlyFieldConfig) => string | Observable<string>);\n}\n\nexport interface ManipulatorOption {\n class?: { new (): any };\n method?: string;\n}\n\nexport interface ManipulatorWrapper {\n (f: FormlyFieldConfig): string;\n}\n\nexport interface TemplateManipulators {\n preWrapper?: ManipulatorWrapper[];\n postWrapper?: ManipulatorWrapper[];\n}\n\nexport interface ConfigOption {\n types?: TypeOption[];\n wrappers?: WrapperOption[];\n validators?: ValidatorOption[];\n extensions?: ExtensionOption[];\n validationMessages?: ValidationMessageOption[];\n\n /** @deprecated use `extensions` instead */\n manipulators?: ManipulatorOption[];\n extras?: {\n /** @deprecated use `extensions` instead */\n fieldTransform?: any,\n immutable?: boolean,\n showError?: (field: FieldType) => boolean;\n\n /**\n * Defines the option which formly rely on to check field expression properties.\n * - `modelChange`: perform a check when the value of the form control changes (Will be set by default in the next major version).\n * - `changeDetectionCheck`: triggers an immediate check when `ngDoCheck` is called.\n *\n * Defaults to `changeDetectionCheck`.\n */\n checkExpressionOn?: 'modelChange' | 'changeDetectionCheck',\n\n /**\n * Whether to lazily render field components or not when marked as hidden.\n * - `true`: lazily render field components (Will be set by default in the next major version).\n * - `false`: render field components and use CSS to control their visibility.\n *\n * Defaults to `false`.\n */\n lazyRender?: boolean,\n\n /**\n * When true, reset the value of hidden fields.\n *\n * Defaults to `false`.\n */\n resetFieldOnHide?: boolean,\n };\n}\n","import { Injectable, ComponentFactoryResolver, Injector, ChangeDetectorRef } from '@angular/core';\nimport { FormGroup, FormArray } from '@angular/forms';\nimport { FormlyConfig } from './formly.config';\nimport { FormlyFieldConfig, FormlyFormOptions, FormlyFieldConfigCache, FormlyValueChangeEvent, FormlyFormOptionsCache } from '../components/formly.field.config';\nimport { Subject } from 'rxjs';\nimport { defineHiddenProp, reduceFormUpdateValidityCalls } from '../utils';\n\n@Injectable({ providedIn: 'root' })\nexport class FormlyFormBuilder {\n constructor(\n private formlyConfig: FormlyConfig,\n private componentFactoryResolver: ComponentFactoryResolver,\n private injector: Injector,\n ) {}\n\n buildForm(formControl: FormGroup | FormArray, fieldGroup: FormlyFieldConfig[] = [], model: any, options: FormlyFormOptions) {\n if (!this.formlyConfig.extensions.core) {\n throw new Error('NgxFormly: missing `forRoot()` call. use `forRoot()` when registering the `FormlyModule`.');\n }\n\n const field = { fieldGroup, model, formControl, options: this._setOptions(options) };\n reduceFormUpdateValidityCalls(formControl, () => this._buildForm(field));\n field.options._checkField(field, true);\n }\n\n private _buildForm(field: FormlyFieldConfigCache) {\n this.getExtensions().forEach(extension => extension.prePopulate && extension.prePopulate(field));\n this.getExtensions().forEach(extension => extension.onPopulate && extension.onPopulate(field));\n\n if (field.fieldGroup) {\n field.fieldGroup.forEach((f) => this._buildForm(f));\n }\n\n this.getExtensions().forEach(extension => extension.postPopulate && extension.postPopulate(field));\n }\n\n private getExtensions() {\n return Object.keys(this.formlyConfig.extensions).map(name => this.formlyConfig.extensions[name]);\n }\n\n private _setOptions(options: FormlyFormOptionsCache) {\n options = options || {};\n options.formState = options.formState || {};\n\n if (!options.showError) {\n options.showError = this.formlyConfig.extras.showError;\n }\n\n if (!options.fieldChanges) {\n defineHiddenProp(options, 'fieldChanges', new Subject<FormlyValueChangeEvent>());\n }\n\n if (!options._resolver) {\n defineHiddenProp(options, '_resolver', this.componentFactoryResolver);\n }\n\n if (!options._injector) {\n defineHiddenProp(options, '_injector', this.injector);\n }\n\n if (!options._hiddenFieldsForCheck) {\n options._hiddenFieldsForCheck = [];\n }\n\n if (!options._markForCheck) {\n options._markForCheck = (field) => {\n if (field._componentRefs) {\n field._componentRefs.forEach(ref => {\n // NOTE: we cannot use ref.changeDetectorRef, see https://github.com/ngx-formly/ngx-formly/issues/2191\n const changeDetectorRef = ref.injector.get(ChangeDetectorRef);\n changeDetectorRef.markForCheck();\n });\n }\n\n if (field.fieldGroup) {\n field.fieldGroup.forEach(f => options._markForCheck(f));\n }\n };\n }\n\n if (!options._buildField) {\n options._buildField = (field: FormlyFieldConfig) => {\n this.buildForm(field.form, field.fieldGroup, field.model, field.options);\n return field;\n };\n }\n\n return options;\n }\n}\n","import { FormArray, FormGroup, FormControl, AbstractControl } from '@angular/forms';\nimport { FormlyFieldConfig } from '../../core';\nimport { getKeyPath, getFieldValue, isNullOrUndefined, defineHiddenProp, wrapProperty } from '../../utils';\nimport { FormlyFieldConfigCache } from '../../components/formly.field.config';\nimport { EventEmitter } from '@angular/core';\n\nexport function unregisterControl(field: FormlyFieldConfig, emitEvent = false) {\n const form = field.formControl.parent as FormArray | FormGroup;\n if (!form) {\n return;\n }\n\n const control = field.formControl;\n const opts = { emitEvent };\n if (form instanceof FormArray) {\n const key = form.controls.findIndex(c => c === control);\n if (key !== -1) {\n updateControl(form, opts, () => form.removeAt(key));\n }\n } else if (form instanceof FormGroup) {\n const paths = getKeyPath(field);\n const key = paths[paths.length - 1];\n if (form.get([key]) === control) {\n updateControl(form, opts, () => form.removeControl(key));\n }\n }\n\n control.setParent(null);\n}\n\nexport function findControl(field: FormlyFieldConfig): AbstractControl {\n if (field.formControl) {\n return field.formControl;\n }\n\n if (field['shareFormControl'] === false) {\n return null;\n }\n\n const form = field.parent.formControl as FormGroup;\n\n return form ? form.get(getKeyPath(field)) : null;\n}\n\nexport function registerControl(field: FormlyFieldConfigCache, control?: any, emitEvent = false) {\n control = control || field.formControl;\n if (!control['_fields']) {\n defineHiddenProp(control, '_fields', []);\n }\n if (control['_fields'].indexOf(field) === -1) {\n control['_fields'].push(field);\n }\n\n if (!field.formControl && control) {\n defineHiddenProp(field, 'formControl', control);\n control.setValidators(null);\n control.setAsyncValidators(null);\n\n field.templateOptions.disabled = !!field.templateOptions.disabled;\n wrapProperty(field.templateOptions, 'disabled', ({ firstChange, currentValue }) => {\n if (!firstChange) {\n currentValue ? field.formControl.disable() : field.formControl.enable();\n }\n });\n if (control.registerOnDisabledChange) {\n control.registerOnDisabledChange(\n (value: boolean) => {\n field.templateOptions['___$disabled'] = value;\n // TODO remove in V6\n field.options && field.options._markForCheck(field);\n },\n );\n }\n }\n\n let parent = field.parent.formControl as FormGroup;\n if (!parent || !field.key) {\n return;\n }\n\n const paths = getKeyPath(field);\n const value = getFieldValue(field);\n if (\n !(isNullOrUndefined(control.value) && isNullOrUndefined(value))\n && control.value !== value\n && control instanceof FormControl\n ) {\n control.patchValue(value);\n }\n\n for (let i = 0; i < (paths.length - 1); i++) {\n const path = paths[i];\n if (!parent.get([path])) {\n updateControl(\n parent,\n { emitEvent },\n () => parent.setControl(path, new FormGroup({})),\n );\n }\n\n parent = <FormGroup> parent.get([path]);\n }\n\n const key = paths[paths.length - 1];\n if (!field._hide && parent.get([key]) !== control) {\n updateControl(\n parent,\n { emitEvent },\n () => parent.setControl(key, control),\n );\n }\n}\n\nexport function updateValidity(c: AbstractControl) {\n const status = c.status;\n c.updateValueAndValidity({ emitEvent: false });\n if (status !== c.status) {\n (c.statusChanges as EventEmitter<string>).emit(c.status);\n }\n}\n\nfunction updateControl(form: FormGroup|FormArray, opts: { emitEvent: boolean }, action: Function) {\n /**\n * workaround for https://github.com/angular/angular/issues/27679\n */\n if (form instanceof FormGroup && !form['__patchForEachChild']) {\n defineHiddenProp(form, '__patchForEachChild', true);\n (form as any)._forEachChild = (cb: Function) => {\n Object\n .keys(form.controls)\n .forEach(k => form.controls[k] && cb(form.controls[k], k));\n };\n }\n\n /**\n * workaround for https://github.com/angular/angular/issues/20439\n */\n const updateValueAndValidity = form.updateValueAndValidity.bind(form);\n if (opts.emitEvent === false) {\n form.updateValueAndValidity = (opts) => {\n updateValueAndValidity({ ...(opts || {}), emitEvent: false });\n };\n }\n\n action();\n\n if (opts.emitEvent === false) {\n form.updateValueAndValidity = updateValueAndValidity;\n }\n}\n\nexport function clearControl(form: AbstractControl) {\n form['_fields'] && delete form['_fields'];\n if (form instanceof FormGroup || form instanceof FormArray) {\n Object.keys(form.controls)\n .forEach((k) => clearControl(form.controls[k]));\n }\n}\n","import { Component, DoCheck, OnChanges, Input, SimpleChanges, Optional, EventEmitter, Output, OnDestroy, Attribute, ViewChild, ElementRef, NgZone } from '@angular/core';\nimport { FormGroup, FormArray, FormGroupDirective, FormControl } from '@angular/forms';\nimport { FormlyFieldConfig, FormlyFormOptions, FormlyFormOptionsCache } from './formly.field.config';\nimport { FormlyFormBuilder } from '../services/formly.form.builder';\nimport { FormlyConfig } from '../services/formly.config';\nimport { assignFieldValue, isNullOrUndefined, wrapProperty, clone, defineHiddenProp, getKeyPath, isObject } from '../utils';\nimport { Subscription, Subject } from 'rxjs';\nimport { debounceTime, switchMap, distinctUntilChanged, take } from 'rxjs/operators';\nimport { clearControl } from '../extensions/field-form/utils';\n\n@Component({\n selector: 'formly-form',\n template: `\n <formly-field *ngFor=\"let field of fields\"\n hide-deprecation\n [form]=\"field.form\"\n [options]=\"field.options\"\n [model]=\"field.model\"\n [field]=\"field\">\n </formly-field>\n <ng-container #content>\n <ng-content></ng-content>\n </ng-container>\n `,\n providers: [FormlyFormBuilder],\n})\nexport class FormlyForm implements DoCheck, OnChanges, OnDestroy {\n @Input() form: FormGroup | FormArray;\n\n @Input()\n set model(model: any) { this._model = this.immutable ? clone(model) : model; }\n get model() {\n if (!this._model) {\n this._model = {};\n }\n\n return this._model;\n }\n\n @Input()\n set fields(fields: FormlyFieldConfig[]) { this._fields = this.immutable ? clone(fields) : fields; }\n get fields() { return this._fields || []; }\n\n @Input()\n set options(options: FormlyFormOptions) { this._options = this.immutable ? clone(options) : options; }\n get options() { return this._options; }\n\n @Output() modelChange = new EventEmitter<any>();\n @ViewChild('content') set content(content: ElementRef<HTMLElement>) {\n if (content) {\n let hasContent = false;\n let node = content.nativeElement.nextSibling;\n while (node && !hasContent) {\n if (\n node.nodeType === Node.ELEMENT_NODE\n || node.nodeType === Node.TEXT_NODE && node.textContent && node.textContent.trim() !== ''\n ) {\n hasContent = true;\n }\n\n node = node.nextSibling;\n }\n\n if (hasContent) {\n console.warn(`NgxFormly: content projection for 'formly-form' component is deprecated since v5.5, you should avoid passing content inside the 'formly-form' tag.`);\n }\n }\n }\n\n private immutable = false;\n private _model: any;\n private _modelChangeValue: any = {};\n private _fields: FormlyFieldConfig[];\n private _options: FormlyFormOptions;\n private modelChangeSubs: Subscription[] = [];\n private modelChange$ = new Subject<void>();\n private modelChangeSub = this.modelChange$.pipe(\n switchMap(() => this.ngZone.onStable.asObservable().pipe(take(1))),\n ).subscribe(() => this.ngZone.runGuarded(() => {\n // runGuarded is used to keep the expression changes in-sync\n // https://github.com/ngx-formly/ngx-formly/issues/2095\n this.checkExpressionChange();\n this.modelChange.emit(this._modelChangeValue = clone(this.model));\n }));\n\n constructor(\n private formlyBuilder: FormlyFormBuilder,\n private formlyConfig: FormlyConfig,\n private ngZone: NgZone,\n // tslint:disable-next-line\n @Attribute('immutable') immutable,\n @Optional() private parentFormGroup: FormGroupDirective,\n ) {\n if (immutable !== null) {\n console.warn(`NgxFormly: passing 'immutable' attribute to 'formly-form' component is deprecated since v5.5, enable immutable mode through NgModule declaration instead.`);\n }\n\n this.immutable = (immutable !== null) || !!formlyConfig.extras.immutable;\n }\n\n ngDoCheck() {\n if (this.formlyConfig.extras.checkExpressionOn === 'changeDetectionCheck') {\n this.checkExpressionChange();\n }\n }\n\n ngOnChanges(changes: SimpleChanges) {\n // https://github.com/ngx-formly/ngx-formly/issues/2294\n if (changes.model && this.field) {\n this.field.model = this.model;\n }\n\n if (changes.fields && this.form) {\n clearControl(this.form);\n }\n\n if (changes.fields || changes.form || (changes.model && this._modelChangeValue !== changes.model.currentValue)) {\n this.form = this.form || (new FormGroup({}));\n this.setOptions();\n this.options.updateInitialValue();\n this.clearModelSubscriptions();\n this.formlyBuilder.buildForm(this.form, this.fields, this.model, this.options);\n this.trackModelChanges(this.fields);\n }\n }\n\n ngOnDestroy() {\n this.modelChangeSub.unsubscribe();\n this.clearModelSubscriptions();\n }\n\n changeModel({ key, value, field }: { key: string, value: any, field: FormlyFieldConfig }) {\n assignFieldValue(field, value);\n this.modelChange$.next();\n }\n\n setOptions() {\n if (!this.options) {\n this.options = {};\n }\n\n if (!this.options.resetModel) {\n this.options.resetModel = (model ?: any) => {\n model = clone(isNullOrUndefined(model) ? (<FormlyFormOptionsCache> this.options)._initialModel : model);\n if (this.model) {\n Object.keys(this.model).forEach(k => delete this.model[k]);\n Object.assign(this.model, model || {});\n }\n\n (<FormlyFormOptionsCache> this.options)._buildForm();\n\n // we should call `NgForm::resetForm` to ensure changing `submitted` state after resetting form\n // but only when the current component is a root one.\n if (this.options.parentForm && this.options.parentForm.control === this.form) {\n this.options.parentForm.resetForm(this.model);\n } else {\n this.form.reset(this.model);\n }\n };\n }\n\n if (!this.options.parentForm && this.parentFormGroup) {\n defineHiddenProp(this.options, 'parentForm', this.parentFormGroup);\n wrapProperty(this.options.parentForm, 'submitted', ({ firstChange }) => {\n if (!firstChange) {\n this.checkExpressionChange();\n (<FormlyFormOptionsCache> this.options)._markForCheck({\n fieldGroup: this.fields,\n model: this.model,\n formControl: this.form,\n options: this.options,\n });\n }\n });\n }\n\n if (!this.options.updateInitialValue) {\n this.options.updateInitialValue = () => (<FormlyFormOptionsCache> this.options)._initialModel = clone(this.model);\n }\n\n if (!(<FormlyFormOptionsCache> this.options)._buildForm) {\n (<FormlyFormOptionsCache> this.options)._buildForm = (emitModelChange = false) => {\n this.clearModelSubscriptions();\n this.formlyBuilder.buildForm(this.form, this.fields, this.model, this.options);\n this.trackModelChanges(this.fields);\n\n if (emitModelChange) {\n this.modelChange.emit(this._modelChangeValue = clone(this.model));\n }\n };\n }\n }\n\n private checkExpressionChange() {\n if (this.options && (<FormlyFormOptionsCache> this.options)._checkField) {\n (<FormlyFormOptionsCache> this.options)._checkField({\n fieldGroup: this.fields,\n model: this.model,\n formControl: this.form,\n options: this.options,\n });\n }\n }\n\n private trackModelChanges(fields: FormlyFieldConfig[], rootKey: string[] = []) {\n fields.forEach(field => {\n if (field.key && !field.fieldGroup && field.formControl) {\n const control = field.formControl;\n let valueChanges = control.valueChanges.pipe(\n distinctUntilChanged((x, y) => {\n if (x !== y || Array.isArray(x) || isObject(x)) {\n return false;\n }\n\n return true;\n }),\n );\n\n const { updateOn, debounce } = field.modelOptions;\n if ((!updateOn || updateOn === 'change') && debounce && debounce.default > 0) {\n valueChanges = control.valueChanges.pipe(debounceTime(debounce.default));\n }\n\n this.modelChangeSubs.push(valueChanges.subscribe((value) => {\n // workaround for https://github.com/angular/angular/issues/13792\n if (control instanceof FormControl && control['_fields'] && control['_fields'].length > 1) {\n control.patchValue(value, { emitEvent: false, onlySelf: true });\n }\n\n if (field.parsers && field.parsers.length > 0) {\n field.parsers.forEach(parserFn => value = parserFn(value));\n }\n\n this.changeModel({ key: [...rootKey, ...getKeyPath(field)].join('.'), value, field });\n }));\n\n // workaround for v5 (https://github.com/ngx-formly/ngx-formly/issues/2061)\n const observers = control.valueChanges['observers'];\n if (observers && observers.length > 1) {\n observers.unshift(observers.pop());\n }\n }\n\n if (field.fieldGroup && field.fieldGroup.length > 0) {\n this.trackModelChanges(field.fieldGroup, field.key ? [...rootKey, ...getKeyPath(field)] : rootKey);\n }\n });\n }\n\n private clearModelSubscriptions() {\n this.modelChangeSubs.forEach(sub => sub.unsubscribe());\n this.modelChangeSubs = [];\n }\n\n private get field(): any {\n return this.fields && this.fields[0] && this.fields[0].parent;\n }\n}\n","import {\n Component, EventEmitter, Input, Output,\n ViewContainerRef, ViewChild, ComponentRef, SimpleChanges, Attribute, ComponentFactoryResolver,\n OnInit, OnChanges, OnDestroy, DoCheck, AfterContentInit, AfterContentChecked, AfterViewInit, AfterViewChecked, Renderer2, ElementRef,\n} from '@angular/core';\nimport { FormGroup } from '@angular/forms';\nimport { FormlyConfig } from '../services/formly.config';\nimport { FormlyFieldConfig, FormlyFormOptions, FormlyFieldConfigCache } from './formly.field.config';\nimport { defineHiddenProp, wrapProperty } from '../utils';\nimport { FieldWrapper } from '../templates/field.wrapper';\nimport { FieldType } from '../templates/field.type';\nimport { isObservable } from 'rxjs';\n\n@Component({\n selector: 'formly-field',\n template: `<ng-template #container></ng-template>`,\n})\nexport class FormlyField implements OnInit, OnChanges, DoCheck, AfterContentInit, AfterContentChecked, AfterViewInit, AfterViewChecked, OnDestroy {\n @Input() field: FormlyFieldConfig;\n\n warnDeprecation = false;\n\n @Input() set model(m: any) {\n this.warnDeprecation && console.warn(`NgxFormly: passing 'model' input to '${this.constructor.name}' component is not required anymore, you may remove it!`);\n }\n\n @Input() set form(form: FormGroup) {\n this.warnDeprecation && console.warn(`NgxFormly: passing 'form' input to '${this.constructor.name}' component is not required anymore, you may remove it!`);\n }\n\n @Input() set options(options: FormlyFormOptions) {\n this.warnDeprecation && console.warn(`NgxFormly: passing 'options' input to '${this.constructor.name}' component is not required anymore, you may remove it!`);\n }\n\n @Output() modelChange: EventEmitter<any> = new EventEmitter();\n // TODO: remove `any`, once dropping angular `V7` support.\n @ViewChild('container', <any> {read: ViewContainerRef, static: true }) containerRef: ViewContainerRef;\n private hostObservers: Function[] = [];\n private componentRefs: any[] = [];\n private hooksObservers: Function[] = [];\n private detectFieldBuild = false;\n\n constructor(\n private formlyConfig: FormlyConfig,\n private renderer: Renderer2,\n private resolver: ComponentFactoryResolver,\n private elementRef: ElementRef,\n // tslint:disable-next-line\n @Attribute('hide-deprecation') hideDeprecation,\n ) {\n this.warnDeprecation = hideDeprecation === null;\n }\n\n ngAfterContentInit() {\n this.triggerHook('afterContentInit');\n }\n\n ngAfterContentChecked() {\n this.triggerHook('afterContentChecked');\n }\n\n ngAfterViewInit() {\n this.triggerHook('afterViewInit');\n }\n\n ngAfterViewChecked() {\n this.triggerHook('afterViewChecked');\n }\n\n ngDoCheck() {\n this.triggerHook('doCheck');\n if (this.detectFieldBuild && (this.field && this.field.options)) {\n this.render();\n }\n }\n\n ngOnInit() {\n this.triggerHook('onInit');\n }\n\n ngOnChanges(changes: SimpleChanges) {\n this.triggerHook('onChanges', changes);\n }\n\n ngOnDestroy() {\n this.resetRefs(this.field);\n this.hostObservers.forEach(unsubscribe => unsubscribe());\n this.hooksObservers.forEach(unsubscribe => unsubscribe());\n this.triggerHook('onDestroy');\n }\n\n private renderField(containerRef: ViewContainerRef, f: FormlyFieldConfigCache, wrappers: string[] = []) {\n if (this.containerRef === containerRef) {\n this.resetRefs(this.field);\n this.containerRef.clear();\n wrappers = this.field ? this.field.wrappers : [];\n }\n\n if (wrappers && wrappers.length > 0) {\n const [wrapper, ...wps] = wrappers;\n const { component } = this.formlyConfig.getWrapper(wrapper);\n\n const ref = containerRef.createComponent<FieldWrapper>(this.resolver.resolveComponentFactory(component));\n this.attachComponentRef(ref, f);\n wrapProperty<ViewContainerRef>(ref.instance, 'fieldComponent', ({ firstChange, previousValue, currentValue }) => {\n if (currentValue) {\n if (previousValue && previousValue['_lContainer'] === currentValue['_lContainer']) {\n return;\n }\n\n const viewRef = previousValue ? previousValue.detach() : null;\n if (viewRef && !viewRef.destroyed) {\n currentValue.insert(viewRef);\n } else {\n this.renderField(currentValue, f, wps);\n }\n\n !firstChange && ref.changeDetectorRef.detectChanges();\n }\n });\n } else if (f && f.type) {\n const { component } = this.formlyConfig.getType(f.type);\n const ref = containerRef.createComponent<FieldWrapper>(this.resolver.resolveComponentFactory(component));\n this.attachComponentRef(ref, f);\n }\n }\n\n private triggerHook(name: string, changes?: SimpleChanges) {\n if (this.field && this.field.hooks && this.field.hooks[name]) {\n if (!changes || changes.field) {\n const r = this.field.hooks[name](this.field);\n if (isObservable(r) && ['onInit', 'afterContentInit', 'afterViewInit'].indexOf(name) !== -1) {\n const sub = r.subscribe();\n this.hooksObservers.push(() => sub.unsubscribe());\n }\n }\n }\n\n if (this.field && this.field.lifecycle && this.field.lifecycle[name]) {\n this.field.lifecycle[name](\n this.field.form,\n this.field,\n this.field.model,\n this.field.options,\n );\n }\n\n if (name === 'onChanges' && changes.field) {\n this.resetRefs(changes.field.previousValue);\n this.render();\n }\n }\n\n private attachComponentRef<T extends FieldType>(ref: ComponentRef<T>, field: FormlyFieldConfigCache) {\n this.componentRefs.push(ref);\n field._componentRefs.push(ref);\n Object.assign(ref.instance, { field });\n }\n\n private render() {\n if (!this.field) {\n return;\n }\n\n // require Formly build\n if (!this.field.options) {\n this.detectFieldBuild = true;\n\n return;\n }\n\n this.detectFieldBuild = false;\n this.hostObservers.forEach(unsubscribe => unsubscribe());\n this.hostObservers = [\n wrapProperty(this.field, 'hide', ({ firstChange, currentValue }) => {\n if (!this.formlyConfig.extras.lazyRender) {\n firstChange && this.renderField(this.containerRef, this.field);\n if (!firstChange || (firstChange && currentValue)) {\n this.renderer.setStyle(this.elementRef.nativeElement, 'display', currentValue ? 'none' : '');\n }\n } else {\n if (currentValue) {\n this.containerRef.clear();\n } else {\n this.renderField(this.containerRef, this.field);\n }\n }\n }),\n wrapProperty(this.field, 'className', ({ firstChange, currentValue }) => {\n if (!firstChange || (firstChange && currentValue)) {\n this.renderer.setAttribute(this.elementRef.nativeElement, 'class', currentValue);\n }\n }),\n ];\n }\n\n private resetRefs(field: FormlyFieldConfigCache) {\n if (field) {\n if (field._componentRefs) {\n field._componentRefs = field._componentRefs.filter(ref => this.componentRefs.indexOf(ref) === -1);\n } else {\n defineHiddenProp(this.field, '_componentRefs', []);\n }\n }\n\n this.componentRefs = [];\n }\n}\n","import { Directive, ElementRef, Input, OnChanges, SimpleChanges, Renderer2, DoCheck, Inject, OnDestroy } from '@angular/core';\nimport { FormlyFieldConfig, FormlyTemplateOptions } from './formly.field.config';\nimport { wrapProperty, defineHiddenProp, FORMLY_VALIDATORS } from '../utils';\nimport { DOCUMENT } from '@angular/common';\n\n@Directive({\n selector: '[formlyAttributes]',\n host: {\n '(focus)': 'onFocus($event)',\n '(blur)': 'onBlur($event)',\n '(change)': 'onChange($event)',\n },\n})\nexport class FormlyAttributes implements OnChanges, DoCheck, OnDestroy {\n @Input('formlyAttributes') field: FormlyFieldConfig;\n @Input() id: string;\n\n private document: Document;\n private uiAttributesCache: any = {};\n private uiAttributes = [\n ...FORMLY_VALIDATORS,\n 'tabindex',\n 'placeholder',\n 'readonly',\n 'disabled',\n 'step',\n ];\n\n /**\n * HostBinding doesn't register listeners conditionally which may produce some perf issues.\n *\n * Formly issue: https://github.com/ngx-formly/ngx-formly/issues/1991\n */\n private uiEvents = {\n listeners: [],\n events: [\n 'click',\n 'keyup',\n 'keydown',\n 'keypress',\n ],\n };\n\n get to(): FormlyTemplateOptions { return this.field.templateOptions || {}; }\n\n private get fieldAttrElements(): ElementRef[] { return (this.field && this.field['_elementRefs']) || []; }\n\n constructor(\n private renderer: Renderer2,\n private elementRef: ElementRef,\n @Inject(DOCUMENT) _document: any,\n ) {\n this.document = _document;\n }\n\n ngOnChanges(changes: SimpleChanges) {\n if (changes.field) {\n this.field.name && this.setAttribute('name', this.field.name);\n this.uiEvents.listeners.forEach(listener => listener());\n this.uiEvents.events.forEach(eventName => {\n if (this.to && this.to[eventName]) {\n this.uiEvents.listeners.push(\n this.renderer.listen(\n this.elementRef.nativeElement,\n eventName,\n (e) => this.to[eventName](this.field, e),\n ),\n );\n }\n });\n\n if (this.to && this.to.attributes) {\n wrapProperty(this.to, 'attributes', ({ currentValue, previousValue }) => {\n if (previousValue) {\n Object.keys(previousValue).forEach(attr => this.removeAttribute(attr));\n }\n\n if (currentValue) {\n Object.keys(currentValue).forEach(attr => {\n if (currentValue[attr] != null) {\n this.setAttribute(attr, currentValue[attr]);\n }\n });\n }\n });\n }\n\n this.detachElementRef(changes.field.previousValue);\n this.attachElementRef(changes.field.currentValue);\n if (this.fieldAttrElements.length === 1) {\n !this.id && this.field.id && this.setAttribute('id', this.field.id);\n wrapProperty(this.field, 'focus', ({ currentValue }) => {\n this.toggleFocus(currentValue);\n });\n }\n }\n\n if (changes.id) {\n this.setAttribute('id', this.id);\n }\n }\n\n /**\n * We need to re-evaluate all the attributes on every change detection cycle, because\n * by using a HostBinding we run into certain edge cases. This means that whatever logic\n * is in here has to be super lean or we risk seriously damaging or destroying the performance.\n *\n * Formly issue: https://github.com/ngx-formly/ngx-formly/issues/1317\n * Material issue: https://github.com/angular/components/issues/14024\n */\n ngDoCheck() {\n this.uiAttributes.forEach(attr => {\n const value = this.to[attr];\n if (\n this.uiAttributesCache[attr] !== value\n && (!this.to.attributes || !this.to.attributes.hasOwnProperty(attr.toLowerCase()))\n ) {\n this.uiAttributesCache[attr] = value;\n if (value || value === 0) {\n this.setAttribute(attr, value === true ? attr : `${value}`);\n } else {\n this.removeAttribute(attr);\n }\n }\n });\n }\n\n ngOnDestroy() {\n this.uiEvents.listeners.forEach(listener => listener());\n this.detachElementRef(this.field);\n }\n\n toggleFocus(value: boolean) {\n const element = this.fieldAttrElements ? this.fieldAttrElements[0] : null;\n if (!element || !element.nativeElement.focus) {\n return;\n }\n\n const isFocused = !!this.document.activeElement\n && this.fieldAttrElements\n .some(({ nativeElement }) => this.document.activeElement === nativeElement || nativeElement.contains(this.document.activeElement));\n\n if (value && !isFocused) {\n element.nativeElement.focus();\n } else if (!value && isFocused) {\n element.nativeElement.blur();\n }\n }\n\n onFocus($event: any) {\n this.field['___$focus'] = true;\n if (this.to.focus) {\n this.to.focus(this.field, $event);\n }\n }\n\n onBlur($event: any) {\n this.field['___$focus'] = false;\n if (this.to.blur) {\n this.to.blur(this.field, $event);\n }\n }\n\n onChange($event: any) {\n if (this.to.change) {\n this.to.change(this.field, $event);\n }\n\n if (this.field.formControl) {\n this.field.formControl.markAsDirty();\n }\n }\n\n private attachElementRef(f: FormlyFieldConfig) {\n if (!f) {\n return;\n }\n\n if (f['_elementRefs'] && f['_elementRefs'].indexOf(this.elementRef) === -1) {\n f['_elementRefs'].push(this.elementRef);\n } else {\n defineHiddenProp(f, '_elementRefs', [this.elementRef]);\n }\n }\n\n private detachElementRef(f: FormlyFieldConfig) {\n const index = f && f['_elementRefs'] ? this.fieldAttrElements.indexOf(this.elementRef) : -1;\n if (index !== -1) {\n this.field['_elementRefs'].splice(index, 1);\n }\n }\n\n private setAttribute(attr: string, value: string) {\n this.renderer.setAttribute(this.elementRef.nativeElement, attr, value);\n }\n\n private removeAttribute(attr: string) {\n this.renderer.removeAttribute(this.elementRef.nativeElement, attr);\n }\n}\n","import { Input } from '@angular/core';\nimport { FormGroup } from '@angular/forms';\nimport { FormlyFieldConfig } from '../components/formly.field.config';\n\nexport abstract class FieldType<F extends FormlyFieldConfig = FormlyFieldConfig> {\n @Input() field: F;\n defaultOptions?: F;\n\n @Input()\n get model() { return this.field.model; }\n set model(m: any) { console.warn(`NgxFormly: passing 'model' input to '${this.constructor.name}' component is not required anymore, you may remove it!`); }\n\n @Input()\n get form() { return <FormGroup> this.field.parent.formControl; }\n set form(form) { console.warn(`NgxFormly: passing 'form' input to '${this.constructor.name}' component is not required anymore, you may remove it!`); }\n\n @Input()\n get options() { return this.field.options; }\n set options(options: F['options']) { console.warn(`NgxFormly: passing 'options' input to '${this.constructor.name}' component is not required anymore, you may remove it!`); }\n\n get key() { return this.field.key; }\n\n get formControl() { return this.field.formControl; }\n\n get to() { return this.field.templateOptions || {}; }\n\n get showError(): boolean { return this.options.showError(this); }\n\n get id(): string { return this.field.id; }\n\n get formState() { return this.options.formState || {}; }\n}\n\n/**\n * @deprecated use `FieldType` instead\n */\nexport abstract class Field extends FieldType {\n constructor() {\n super();\n console.warn(`NgxFormly: 'Field' has been renamed to 'FieldType', extend 'FieldType' instead.`);\n }\n}\n","import { Inject, Optional } from '@angular/core';\nimport { FormArray } from '@angular/forms';\nimport { FieldType } from './field.type';\nimport { clone, isNullOrUndefined, assignFieldValue } from '../utils';\nimport { FormlyFormBuilder } from '../services/formly.form.builder';\nimport { FormlyFieldConfig } from '../components/formly.field.config';\nimport { FORMLY_CONFIG, FormlyExtension } from '../services/formly.config';\nimport { registerControl, unregisterControl, findControl } from '../extensions/field-form/utils';\nimport { Directive } from '@angular/core';\n\n// TODO remove `selector` in V6\n// tslint:disable-next-line\n@Directive({ selector: '[ɵfieldArray]' })\nexport abstract class FieldArrayType<F extends FormlyFieldConfig = FormlyFieldConfig> extends FieldType<F> implements FormlyExtension {\n get formControl() {\n return this.field.formControl as FormArray;\n }\n\n defaultOptions: any = {\n defaultValue: [],\n };\n\n constructor(@Inject(FORMLY_CONFIG) @Optional() builder?: FormlyFormBuilder) {\n super();\n\n if (builder instanceof FormlyFormBuilder) {\n console.warn(`NgxFormly: passing 'FormlyFormBuilder' to '${this.constructor.name}' type is not required anymore, you may remove it!`);\n }\n }\n\n onPopulate(field: FormlyFieldConfig) {\n if (!field.formControl && field.key) {\n const control = findControl(field);\n registerControl(field, control ? control : new FormArray([], { updateOn: field.modelOptions.updateOn }));\n }\n\n field.fieldGroup = field.fieldGroup || [];\n\n const length = field.model ? field.model.length : 0;\n if (field.fieldGroup.length > length) {\n for (let i = field.fieldGroup.length - 1; i >= length; --i) {\n unregisterControl(field.fieldGroup[i]);\n field.fieldGroup.splice(i, 1);\n }\n }\n\n for (let i = field.fieldGroup.length; i < length; i++) {\n const f = { ...clone(field.fieldArray), key: `${i}` };\n field.fieldGroup.push(f);\n }\n }\n\n add(i?: number, initialModel?: any, { markAsDirty } = { markAsDirty: true }) {\n i = isNullOrUndefined(i) ? this.field.fieldGroup.length : i;\n if (!this.model) {\n assignFieldValue(this.field, []);\n }\n\n this.model.splice(i, 0, initialModel ? clone(initialModel) : undefined);\n\n (<any> this.options)._buildForm(true);\n markAsDirty && this.formControl.markAsDirty();\n }\n\n remove(i: number, { markAsDirty } = { markAsDirty: true }) {\n this.model.splice(i, 1);\n unregisterControl(this.field.fieldGroup[i], true);\n this.field.fieldGroup.splice(i, 1);\n this.field.fieldGroup.forEach((f, key) => f.key = `${key}`);\n\n (<any> this.options)._buildForm(true);\n markAsDirty && this.formControl.markAsDirty();\n }\n}\n","import { ViewContainerRef, ViewChild } from '@angular/core';\nimport { FieldType } from './field.type';\nimport { FormlyFieldConfig } from '../components/formly.field.config';\n\nexport abstract class FieldWrapper<F extends FormlyFieldConfig = FormlyFieldConfig> extends FieldType<F> {\n // TODO: remove `any`, once dropping angular `V7` support.\n @ViewChild('fieldComponent', <any>{ read: ViewContainerRef, static: false }) fieldComponent: ViewContainerRef;\n}\n","import { Component } from '@angular/core';\nimport { FieldType } from './field.type';\n\n@Component({\n selector: 'formly-group',\n template: `\n <formly-field *ngFor=\"let f of field.fieldGroup\" [field]=\"f\"></formly-field>\n <ng-content></ng-content>\n `,\n host: {\n '[class]': 'field.fieldGroupClassName || \"\"',\n },\n})\nexport class FormlyGroup extends FieldType {\n defaultOptions = {\n defaultValue: {},\n };\n}\n","import { Component, Input, ChangeDetectionStrategy, OnChanges } from '@angular/core';\nimport { FormlyConfig, ValidationMessageOption } from '../services/formly.config';\nimport { FormlyFieldConfig } from '../components/formly.field.config';\nimport { isObject } from '../utils';\nimport { Observable, isObservable, of } from 'rxjs';\nimport { startWith, switchMap } from 'rxjs/operators';\n\n@Component({\n selector: 'formly-validation-message',\n template: `{{ errorMessage$ | async }}`,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class FormlyValidationMessage implements OnChanges {\n @Input() field: FormlyFieldConfig;\n errorMessage$: Observable<string>;\n\n constructor(private formlyConfig: FormlyConfig) {}\n\n ngOnChanges() {\n this.errorMessage$ = this.field.formControl.statusChanges.pipe(\n startWith(null),\n switchMap(() => isObservable(this.errorMessage)\n ? this.errorMessage\n : of(this.errorMessage),\n ),\n );\n }\n\n get errorMessage() {\n const fieldForm = this.field.formControl;\n for (let error in fieldForm.errors) {\n if (fieldForm.errors.hasOwnProperty(error)) {\n let message: ValidationMessageOption['message'] = this.formlyConfig.getValidatorMessage(error);\n\n if (isObject(fieldForm.errors[error])) {\n if (fieldForm.errors[error].errorPath) {\n return;\n }\n\n if (fieldForm.errors[error].message) {\n message = fieldForm.errors[error].message;\n }\n }\n\n if (this.field.validation && this.field.validation.messages && this.field.validation.messages[error]) {\n message = this.field.validation.messages[error];\n }\n\n if (this.field.validators && this.field.validators[error] && this.field.validators[error].message) {\n message = this.field.validators[error].message;\n }\n\n if (this.field.asyncValidators && this.field.asyncValidators[error] && this.field.asyncValidators[error].message) {\n message = this.field.asyncValidators[error].message;\n }\n\n if (typeof message === 'function') {\n return message(fieldForm.errors[error], this.field);\n }\n\n return message;\n }\n }\n }\n}\n","import { Component } from '@angular/core';\nimport { DomSanitizer } from '@angular/platform-browser';\nimport { FieldType } from './field.type';\n\n@Component({\n selector: 'formly-template',\n template: `<div [innerHtml]=\"template\"></div>`,\n})\nexport class FormlyTemplateType extends FieldType {\n get template() {\n if (this.field && (this.field.template !== this.innerHtml.template)) {\n this.innerHtml = {\n template: this.field.template,\n content: this.to.safeHtml\n ? this.sanitizer.bypassSecurityTrustHtml(this.field.template)\n : this.field.template,\n };\n }\n\n return this.innerHtml.content;\n }\n\n private innerHtml = { content: null, template: null };\n constructor(private sanitizer: DomSanitizer) {\n super();\n }\n}\n","export function evalStringExpression(expression: string, argNames: string[]) {\n try {\n if (expression.indexOf('this.field') !== -1) {\n console.warn(`NgxFormly: using 'this.field' in expressionProperties is deprecated since v5.1, use 'field' instead.`);\n }\n\n return Function(...argNames, `return ${expression};`) as any;\n } catch (error) {\n console.error(error);\n }\n}\n\nexport function evalExpressionValueSetter(expression: string, argNames: string[]) {\n try {\n return Function(...argNames, `${expression} = expressionValue;`) as (value: any) => void;\n } catch (error) {\n console.error(error);\n }\n}\n\nexport function evalExpression(expression: string | Function | boolean, thisArg: any, argVal: any[]): any {\n if (expression instanceof Function) {\n return expression.apply(thisArg, argVal);\n } else {\n return expression ? true : false;\n }\n}\n","import { FormlyFieldConfig, FormlyValueChangeEvent, FormlyFieldConfigCache } from '../../components/formly.field.config';\nimport { isObject, isNullOrUndefined, isUndefined, isFunction, defineHiddenProp, wrapProperty, reduceFormUpdateValidityCalls, getFieldValue, assignFieldValue } from '../../utils';\nimport { evalExpression, evalStringExpression } from './utils';\nimport { isObservable, Observable, Subscription } from 'rxjs';\nimport { FormlyExtension } from '../../services/formly.config';\nimport { unregisterControl, registerControl, updateValidity } from '../field-form/utils';\nimport { FormArray } from '@angular/forms';\n\n/** @experimental */\nexport class FieldExpressionExtension implements FormlyExtension {\n prePopulate(field: FormlyFieldConfigCache) {\n if (field.parent || field.options._checkField) {\n return;\n }\n\n let checkLocked = false;\n field.options._checkField = (f, ignoreCache) => {\n if (!checkLocked) {\n checkLocked = true;\n reduceFormUpdateValidityCalls(\n f.formControl,\n () => this.checkField(f, ignoreCache),\n );\n checkLocked = false;\n }\n };\n }\n\n postPopulate(field: FormlyFieldConfigCache) {\n if (!field.parent || field._expressionProperties) {\n return;\n }\n\n // cache built expression\n defineHiddenProp(field, '_expressionProperties', {});\n\n if (field.expressionProperties) {\n for (const key in field.expressionProperties) {\n const expressionProperty = field.expressionProperties[key];\n\n if (typeof expressionProperty === 'string' || isFunction(expressionProperty)) {\n field._expressionProperties[key] = {\n expression: this._evalExpression(\n key,\n expressionProperty,\n key === 'templateOptions.disabled' && field.parent.expressionProperties && field.parent.expressionProperties.hasOwnProperty('templateOptions.disabled')\n ? () => field.parent.templateOptions.disabled\n : undefined,\n ),\n };\n if (key === 'templateOptions.disabled') {\n Object.defineProperty(field._expressionProperties[key], 'expressionValue', {\n get: () => field.templateOptions.disabled,\n set: () => { },\n enumerable: true,\n configurable: true,\n });\n }\n } else if (expressionProperty instanceof Observable) {\n const subscribe = () => (expressionProperty as Observable<any>)\n .subscribe(v => {\n this.setExprValue(field, key, v);\n if (field.options && field.options._markForCheck) {\n field.options._markForCheck(field);\n }\n });\n\n let subscription: Subscription = subscribe();\n const onInit = field.hooks.onInit;\n field.hooks.onInit = () => {\n if (subscription === null) {\n subscription = subscribe();\n }\n return onInit && onInit(field);\n };\n\n const onDestroy = field.hooks.onDestroy;\n field.hooks.onDestroy = () => {\n onDestroy && onDestroy(field);\n subscription.unsubscribe();\n subscription = null;\n };\n }\n }\n }\n\n if (field.hideExpression) {\n // delete hide value in order to force re-evaluate it in FormlyFormExpression.\n delete field.hide;\n\n field.hideExpression = this._evalExpression(\n 'hide',\n field.hideExpression,\n () => {\n let root = field.parent;\n while (root.parent && !root.hide) {\n root = root.parent;\n }\n\n return root.hide;\n },\n );\n } else {\n wrapProperty(field, 'hide', ({ currentValue, firstChange }) => {\n field._hide = currentValue;\n if (!firstChange || (firstChange && currentValue === true)) {\n field.options._hiddenFieldsForCheck.push(field);\n }\n });\n }\n }\n\n private _evalExpression(prop: string, expression, parentExpression?) {\n return (model: any, formState: any, field: FormlyFieldConfig) => {\n try {\n if (typeof expression === 'string') {\n expression = evalStringExpression(expression, ['model', 'formState', 'field']);\n }\n\n if (typeof expression !== 'function') {\n expression = () => !!expression;\n }\n\n return (parentExpression && parentExpression()) || expression(model, formState, field);\n } catch (error) {\n error.message = `[Formly Error] [Expression \"${prop}\"] ${error.message}`;\n throw error;\n }\n };\n }\n\n private checkField(field: FormlyFieldConfigCache, ignoreCache = false) {\n const fieldChanged = this._checkField(field, ignoreCache);\n\n field.options._hiddenFieldsForCheck\n .sort(f => f.hide ? -1 : 1)\n .forEach(f => this.toggleFormControl(f, !!f.hide, !ignoreCache));\n\n field.options._hiddenFieldsForCheck = [];\n if (fieldChanged) {\n this.checkField(field);\n if (field.options && field.options._markForCheck) {\n field.options._markForCheck(field);\n }\n }\n }\n\n private _checkField(field: FormlyFieldConfigCache, ignoreCache = false) {\n let fieldChanged = false;\n field.fieldGroup.forEach(f => {\n if (!f.options) {\n return;\n }\n\n this.checkFieldExpressionChange(f, ignoreCache) && (fieldChanged = true);\n if (this.checkFieldVisibilityChange(f, ignoreCache)) {\n field.options._hiddenFieldsForCheck.push(f);\n fieldChanged = true;\n }\n\n if (f.fieldGroup && f.fieldGroup.length > 0) {\n this._checkField(f, ignoreCache) && (fieldChanged = true);\n }\n });\n\n return fieldChanged;\n }\n\n private checkFieldExpressionChange(field: FormlyFieldConfigCache, ignoreCache): boolean {\n if (!field || !field._expressionProperties) {\n return false;\n }\n\n let markForCheck = false;\n const expressionProperties = field._expressionProperties;\n\n for (const key in expressionProperties) {\n let expressionValue = evalExpression(expressionProperties[key].expression, { field }, [field.model, field.options.formState, field]);\n if (key === 'templateOptions.disabled') {\n expressionValue = !!expressionValue;\n }\n\n if (\n ignoreCache || (\n expressionProperties[key].expressionValue !== expressionValue\n && (\n !isObject(expressionValue)\n || isObservable(expressionValue)\n || JSON.stringify(expressionValue) !== JSON.stringify(expressionProperties[key].expressionValue)\n )\n )\n ) {\n markForCheck = true;\n expressionProperties[key].expressionValue = expressionValue;\n this.setExprValue(field, key, expressionValue);\n }\n }\n\n return markForCheck;\n }\n\n private checkFieldVisibilityChange(field: FormlyFieldConfigCache, ignoreCache): boolean {\n if (!field || isNullOrUndefined(field.hideExpression)) {\n return false;\n }\n\n const hideExpressionResult: boolean = !!evalExpression(\n field.hideExpression,\n { field },\n [field.model, field.options.formState, field],\n );\n let markForCheck = false;\n if (hideExpressionResult !== field.hide || ignoreCache) {\n markForCheck = true;\n // toggle hide\n field.hide = hideExpressionResult;\n field.templateOptions.hidden = hideExpressionResult;\n }\n\n return markForCheck;\n }\n\n private setDisabledState(field: FormlyFieldConfig, value: boolean) {\n if (field.fieldGroup) {\n field.fieldGroup\n .filter(f => !f.expressionProperties || !f.expressionProperties.hasOwnProperty('templateOptions.disabled'))\n .forEach(f => this.setDisabledState(f, value));\n }\n\n if (field.key && field.templateOptions.disabled !== value) {\n field.templateOptions.disabled = value;\n }\n }\n\n private toggleFormControl(field: FormlyFieldConfigCache, hide: boolean, resetOnHide: boolean) {\n if (field.formControl && field.key) {\n defineHiddenProp(field, '_hide', !!(hide || field.hide));\n const c = field.formControl;\n if (c['_fields'] && c['_fields'].length > 1) {\n updateValidity(c);\n }\n\n if (hide === true && (!c['_fields'] || c['_fields'].every(f => !!f._hide))) {\n unregisterControl(field, true);\n if (resetOnHide && field.resetOnHide) {\n field.formControl.reset({ value: undefined, disabled: field.formControl.disabled });\n if (field.fieldGroup) {\n assignFieldValue(field, undefined);\n\n if (field.formControl instanceof FormArray) {\n field.fieldGroup.length = 0;\n }\n }\n }\n } else if (hide === false) {\n if (field.resetOnHide && field.parent && !isUndefined(field.defaultValue) && isUndefined(getFieldValue(field))) {\n assignFieldValue(field, field.defaultValue);\n }\n registerControl(field, undefined, true);\n if (field.resetOnHide && field.fieldArray && (field.fieldGroup || []).length !== (field.model || []).length) {\n (<any> field.options)._buildForm(true);\n }\n }\n }\n\n if (field.fieldGroup) {\n field.fieldGroup\n .filter(f => !f.hideExpression)\n .forEach(f => this.toggleFormControl(f, hide, resetOnHide));\n }\n\n if (field.options.fieldChanges) {\n field.options.fieldChanges.next(<FormlyValueChangeEvent> { field, type: 'hidden', value: hide });\n }\n }\n\n private setExprValue(field: FormlyFieldConfigCache, prop: string, value: any) {\n try {\n let target = field;\n const paths = prop.indexOf('[') === -1\n ? prop.split('.')\n : prop\n .replace(/\\'|\\\"/g, '')\n .split(/[[\\]]{1,2}/) // https://stackoverflow.com/a/20198206\n .filter(v => v)\n ;\n const lastIndex = paths.length - 1;\n for (let i = 0; i < lastIndex; i++) {\n target = target[paths[i]];\n }\n\n target[paths[lastIndex]] = value;\n } catch (error) {\n error.message = `[Formly Error] [Expression \"${prop}\"] ${error.message}`;\n throw error;\n }\n\n if (prop === 'templateOptions.disabled' && field.key) {\n this.setDisabledState(field, value);\n }\n\n if (prop.indexOf('model.') === 0) {\n const path = prop.replace(/^model\\./, ''),\n control = field.key && prop === path ? field.formControl : field.parent.formControl.get(path);\n\n if (\n control\n && !(isNullOrUndefined(control.value) && isNullOrUndefined(value))\n && control.value !== value\n ) {\n control.patchValue(value);\n }\n }\n\n this.emitExpressionChanges(field, prop, value);\n }\n\n private emitExpressionChanges(field: FormlyFieldConfigCache, property: string, value: any) {\n if (!field.options.fieldChanges) {\n return;\n }\n\n field.options.fieldChanges.next({\n field: field,\n type: 'expressionChanges',\n property,\n value,\n });\n }\n}\n","import { FormlyExtension, FormlyConfig, ValidatorOption } from '../../services/formly.config';\nimport { FormlyFieldConfigCache } from '../../components/formly.field.config';\nimport { AbstractControl, Validators, ValidatorFn } from '@angular/forms';\nimport { FORMLY_VALIDATORS, defineHiddenProp, isPromise, wrapProperty, clone, isObject } from '../../utils';\nimport { updateValidity } from '../field-form/utils';\nimport { isObservable } from 'rxjs';\nimport { map } from 'rxjs/operators';\n\n/** @experimental */\nexport class FieldValidationExtension implements FormlyExtension {\n constructor(private formlyConfig: FormlyConfig) {}\n\n onPopulate(field: FormlyFieldConfigCache) {\n this.initFieldValidation(field, 'validators');\n this.initFieldValidation(field, 'asyncValidators');\n }\n\n private initFieldValidation(field: FormlyFieldConfigCache, type: 'validators' | 'asyncValidators') {\n const validators: ValidatorFn[] = [];\n if (type === 'validators' && !(field.hasOwnProperty('fieldGroup') && !field.key)) {\n validators.push(this.getPredefinedFieldValidation(field));\n }\n\n if (field[type]) {\n for (const validatorName in field[type]) {\n if (validatorName === 'validation' && !Array.isArray(field[type].validation)) {\n field[type].validation = [field[type].validation];\n console.warn(`NgxFormly(${field.key}): passing a non array value to the 'validation' is deprecated, pass an array instead`);\n }\n\n validatorName === 'validation'\n ? validators.push(...field[type].validation.map(v => this.wrapNgValidatorFn(field, v)))\n : validators.push(this.wrapNgValidatorFn(field, field[type][validatorName], validatorName))\n ;\n }\n }\n\n defineHiddenProp(field, '_' + type, validators);\n }\n\n private getPredefinedFieldValidation(field: FormlyFieldConfigCache): ValidatorFn {\n let VALIDATORS = [];\n FORMLY_VALIDATORS.forEach(opt => wrapProperty(field.templateOptions, opt, ({ currentValue, firstChange }) => {\n VALIDATORS = VALIDATORS.filter(o => o !== opt);\n if (currentValue != null && currentValue !== false) {\n VALIDATORS.push(opt);\n }\n if (!firstChange && field.formControl) {\n updateValidity(field.formControl);\n }\n }));\n\n return (control: AbstractControl) => {\n if (VALIDATORS.length === 0) {\n return null;\n }\n\n return Validators.compose(VALIDATORS.map(opt => () => {\n const value = field.templateOptions[opt];\n switch (opt) {\n case 'required':\n return Validators.required(control);\n case 'pattern':\n return Validators.pattern(value)(control);\n case 'minLength':\n return Validators.minLength(value)(control);\n case 'maxLength':\n return Validators.maxLength(value)(control);\n case 'min':\n return Validators.min(value)(control);\n case 'max':\n return Validators.max(value)(control);\n }\n }))(control);\n };\n }\n\n private wrapNgValidatorFn(field: FormlyFieldConfigCache, validator: any, validatorName?: string) {\n let validatorOption: ValidatorOption = null;\n if (typeof validator === 'string') {\n validatorOption = clone(this.formlyConfig.getValidator(validator));\n }\n\n if (typeof validator === 'object' && validator.name) {\n validatorOption = clone(this.formlyConfig.getValidator(validator.name));\n if (validator.options) {\n validatorOption.options = validator.options;\n }\n }\n\n if (typeof validator === 'object' && validator.expression) {\n const { expression, ...options } = validator;\n validatorOption = {\n name: validatorName,\n validation: expression,\n options: Object.keys(options).length > 0 ? options : null,\n };\n }\n\n if (typeof validator === 'function') {\n validatorOption = {\n name: validatorName,\n validation: validator,\n };\n }\n\n return (control: AbstractControl) => {\n const errors: any = validatorOption.validation(control, field, validatorOption.options);\n if (isPromise(errors)) {\n return errors.then(v => this.handleAsyncResult(field, validatorName ? !!v : v, validatorOption));\n }\n\n if (isObservable(errors)) {\n return errors.pipe(map(v => this.handleAsyncResult(field, validatorName ? !!v : v, validatorOption)));\n }\n\n return this.handleResult(field, validatorName ? !!errors : errors, validatorOption);\n };\n }\n\n private handleAsyncResult(field: FormlyFieldConfigCache, errors: any, options: ValidatorOption) {\n // workaround for https://github.com/angular/angular/issues/13200\n if (field.options && field.options._markForCheck) {\n field.options._markForCheck(field);\n }\n\n return this.handleResult(field, errors, options);\n }\n\n private handleResult(field: FormlyFieldConfigCache, errors: any, { name, options }: ValidatorOption) {\n if (typeof errors === 'boolean') {\n errors = errors ? null : { [name]: options ? options : true };\n }\n\n const ctrl = field.formControl;\n ctrl['_childrenErrors'] && ctrl['_childrenErrors'][name] && ctrl['_childrenErrors'][name]();\n\n if (isObject(errors)) {\n Object.keys(errors).forEach(name => {\n const errorPath = errors[name].errorPath\n ? errors[name].errorPath\n : (options || {}).errorPath;\n\n const childCtrl = errorPath ? field.formControl.get(errorPath) : null;\n if (childCtrl) {\n const { errorPath, ...opts } = errors[name];\n childCtrl.setErrors({ ...(childCtrl.errors || {}), [name]: opts });\n\n !ctrl['_childrenErrors'] && defineHiddenProp(ctrl, '_childrenErrors', {});\n ctrl['_childrenErrors'][name] = () => {\n const { [name]: toDelete, ...childErrors } = childCtrl.errors || {};\n childCtrl.setErrors(Object.keys(childErrors).length === 0 ? null : childErrors);\n };\n }\n });\n }\n\n return errors;\n }\n}\n","import { FormlyExtension, FormlyConfig } from '../../services/formly.config';\nimport { FormlyFieldConfigCache } from '../../components/formly.field.config';\nimport { FormGroup, FormControl, AbstractControlOptions, Validators, ValidatorFn, AsyncValidatorFn } from '@angular/forms';\nimport { getFieldValue, defineHiddenProp } from '../../utils';\nimport { registerControl, findControl, updateValidity as updateControlValidity } from './utils';\nimport { of } from 'rxjs';\n\n/** @experimental */\nexport class FieldFormExtension implements FormlyExtension {\n constructor(private config: FormlyConfig) { }\n\n onPopulate(field: FormlyFieldConfigCache) {\n if (!field.parent) {\n return;\n }\n\n if (field.fieldGroup && !field.key) {\n defineHiddenProp(field, 'formControl', field.parent.formControl);\n } else {\n this.addFormControl(field);\n }\n }\n\n postPopulate(field: FormlyFieldConfigCache) {\n if (field.parent) {\n return;\n }\n\n const fieldsToUpdate = this.setValidators(field);\n if (fieldsToUpdate.length === 0) {\n return;\n }\n\n if (fieldsToUpdate.length === 1) {\n let control = fieldsToUpdate[0].formControl;\n while (control) {\n (control as any)._updateTreeValidity({ onlySelf: true });\n control = control.parent;\n }\n } else {\n (field.formControl as any)._updateTreeValidity();\n }\n }\n\n private addFormControl(field: FormlyFieldConfigCache) {\n let control = findControl(field);\n if (!control) {\n const controlOptions: AbstractControlOptions = { updateOn: field.modelOptions.updateOn };\n const value = field.key ? getFieldValue(field) : field.defaultValue;\n\n const ref = this.config ? this.config.resolveFieldTypeRef(field) : null;\n if (ref && ref.componentType && ref.componentType['createControl']) {\n const component = ref.componentType;\n console.warn(`NgxFormly: '${component.name}::createControl' is deprecated since v5.0, use 'prePopulate' hook instead.`);\n control = component['createControl'](value, field);\n } else if (field.fieldGroup) {\n // TODO: move to postPopulate\n control = new FormGroup({}, controlOptions);\n } else {\n control = new FormControl(value, controlOptions);\n }\n }\n\n registerControl(field, control);\n }\n\n private setValidators(field: FormlyFieldConfigCache) {\n let updateValidity = false;\n if (field.key || !field.parent || (!field.key && !field.fieldGroup)) {\n const { formControl: c } = field;\n const disabled = field.templateOptions ? field.templateOptions.disabled : false;\n if (field.key && c) {\n if (disabled && c.enabled) {\n c.disable({ emitEvent: false, onlySelf: true });\n if (!c.parent) {\n updateControlValidity(c);\n } else {\n updateValidity = true;\n }\n }\n\n if (!disabled && c.disabled) {\n c.enable({ emitEvent: false, onlySelf: true });\n if (!c.parent) {\n updateControlValidity(c);\n } else {\n updateValidity = true;\n }\n }\n }\n\n\n if (c && (null === c.validator || null === c.asyncValidator)) {\n c.setValidators(() => {\n const v = Validators.compose(this.mergeValidators<ValidatorFn>(field, '_validators'));\n\n return v ? v(c) : null;\n });\n c.setAsyncValidators(() => {\n const v = Validators.composeAsync(this.mergeValidators<AsyncValidatorFn>(field, '_asyncValidators'));\n\n return v ? v(c) : of(null);\n });\n\n if (!c.parent) {\n updateControlValidity(c);\n } else {\n updateValidity = true;\n }\n }\n }\n\n const fieldsToUpdate = updateValidity ? [field] : [];\n (field.fieldGroup || []).forEach(f => {\n const childrenToUpdate = this.setValidators(f);\n if (!updateValidity) {\n fieldsToUpdate.push(...childrenToUpdate);\n }\n });\n\n return fieldsToUpdate;\n }\n\n private mergeValidators<T>(field: FormlyFieldConfigCache, type: '_validators' | '_asyncValidators'): T[] {\n const validators: any = [];\n const c = field.formControl;\n if (c && c['_fields'] && c['_fields'].length > 1) {\n c['_fields']\n .filter((f: FormlyFieldConfigCache) => !f._hide)\n .forEach((f: FormlyFieldConfigCache) => validators.push(...f[type]));\n } else if (field[type]) {\n validators.push(...field[type]);\n }\n\n if (field.fieldGroup) {\n field.fieldGroup\n .filter(f => !f.key && f.fieldGroup)\n .forEach(f => validators.push(...this.mergeValidators(f, type)));\n }\n\n return validators;\n }\n}\n","import { FormlyExtension, FormlyConfig, TemplateManipulators } from '../../services/formly.config';\nimport { FormlyFieldConfigCache, FormlyFieldConfig } from '../../components/formly.field.config';\nimport { FormGroup } from '@angular/forms';\nimport { getFieldId, isUndefined, getFieldValue, reverseDeepMerge, assignFieldValue } from '../../utils';\n\n/** @experimental */\nexport class CoreExtension implements FormlyExtension {\n private formId = 0;\n constructor(private formlyConfig: FormlyConfig) { }\n\n prePopulate(field: FormlyFieldConfigCache) {\n this.getFieldComponentInstance(field).prePopulate();\n if (field.parent) {\n return;\n }\n\n const fieldTransforms = (field.options && field.options.fieldTransform) || this.formlyConfig.extras.fieldTransform;\n (Array.isArray(fieldTransforms) ? fieldTransforms : [fieldTransforms]).forEach(fieldTransform => {\n if (fieldTransform) {\n console.warn(`NgxFormly: fieldTransform is deprecated since v5.0, use custom extension instead.`);\n const fieldGroup = fieldTransform(field.fieldGroup, field.model, <FormGroup>field.formControl, field.options);\n if (!fieldGroup) {\n throw new Error('fieldTransform must return an array of fields');\n }\n }\n });\n }\n\n onPopulate(field: FormlyFieldConfigCache) {\n this.initFieldOptions(field);\n this.getFieldComponentInstance(field).onPopulate();\n if (field.fieldGroup) {\n field.fieldGroup.forEach((f, index) => {\n Object.defineProperty(f, 'parent', { get: () => field, configurable: true });\n Object.defineProperty(f, 'index', { get: () => index, configurable: true });\n this.formId++;\n });\n }\n }\n\n postPopulate(field: FormlyFieldConfigCache) {\n this.getFieldComponentInstance(field).postPopulate();\n }\n\n private initFieldOptions(field: FormlyFieldConfigCache) {\n const root = <FormlyFieldConfigCache> field.parent;\n if (!root) {\n return;\n }\n\n Object.defineProperty(field, 'form', { get: () => root.formControl, configurable: true });\n Object.defineProperty(field, 'options', { get: () => root.options, configurable: true });\n Object.defineProperty(field, 'model', {\n get: () => field.key && field.fieldGroup ? getFieldValue(field) : root.model,\n configurable: true,\n });\n\n reverseDeepMerge(field, {\n id: getFieldId(`formly_${this.formId}`, field, field['index']),\n hooks: {},\n modelOptions: {},\n templateOptions: !field.type || !field.key ? {} : {\n label: '',\n placeholder: '',\n focus: false,\n disabled: false,\n },\n });\n\n if (this.formlyConfig.extras.resetFieldOnHide && field.resetOnHide !== false) {\n field.resetOnHide = true;\n }\n\n if (field.lifecycle) {\n console.warn(`NgxFormly: 'lifecycle' is deprecated since v5.0, use 'hooks' instead.`);\n }\n\n if (\n field.type !== 'formly-template'\n && (\n field.template\n || (field.expressionProperties && field.expressionProperties.template)\n )\n ) {\n if (field.type) {\n console.warn(`NgxFormly: passing 'type' property is not allowed when 'template' is set.`);\n }\n field.type = 'formly-template';\n }\n\n if (!field.type && field.fieldGroup) {\n field.type = 'formly-group';\n }\n\n if (field.type) {\n this.formlyConfig.getMergedField(field);\n }\n\n if (field.parent) {\n let setDefaultValue = !isUndefined(field.key)\n && !isUndefined(field.defaultValue)\n && isUndefined(getFieldValue(field))\n && (!field.resetOnHide || !(field.hide || field.hideExpression));\n if (setDefaultValue && field.resetOnHide) {\n let parent = field.parent;\n while (parent && !parent.hideExpression && !parent.hide) {\n parent = parent.parent;\n }\n setDefaultValue = !parent || !(parent.hideExpression || parent.hide);\n }\n\n if (setDefaultValue) {\n assignFieldValue(field, field.defaultValue);\n }\n }\n\n this.initFieldWrappers(field);\n }\n\n private initFieldWrappers(field: FormlyFieldConfig) {\n field.wrappers = field.wrappers || [];\n const fieldTemplateManipulators: TemplateManipulators = {\n preWrapper: [],\n postWrapper: [],\n ...(field.templateOptions.templateManipulators || {}),\n };\n\n field.wrappers = [\n ...this.formlyConfig.templateManipulators.preWrapper.map(m => m(field)),\n ...fieldTemplateManipulators.preWrapper.map(m => m(field)),\n ...field.wrappers,\n ...this.formlyConfig.templateManipulators.postWrapper.map(m => m(field)),\n ...fieldTemplateManipulators.postWrapper.map(m => m(field)),\n ].filter((el, i, a) => el && i === a.indexOf(el));\n }\n\n private getFieldComponentInstance(field: FormlyFieldConfigCache) {\n const componentRef = this.formlyConfig.resolveFieldTypeRef(field);\n const instance: FormlyExtension = componentRef ? componentRef.instance as any : {};\n\n return {\n prePopulate: () => instance.prePopulate && instance.prePopulate(field),\n onPopulate: () => instance.onPopulate && instance.onPopulate(field),\n postPopulate: () => instance.postPopulate && instance.postPopulate(field),\n };\n }\n}\n","import { NgModule, ModuleWithProviders, ANALYZE_FOR_ENTRY_COMPONENTS, Inject, Optional } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormlyForm } from './components/formly.form';\nimport { FormlyField } from './components/formly.field';\nimport { FormlyAttributes } from './components/formly.attributes';\nimport { FormlyConfig, ConfigOption, FORMLY_CONFIG } from './services/formly.config';\nimport { FormlyFormBuilder } from './services/formly.form.builder';\nimport { FormlyGroup } from './templates/formly.group';\nimport { FormlyValidationMessage } from './templates/formly.validation-message';\nimport { FormlyTemplateType } from './templates/field-template.type';\n\nimport { FieldExpressionExtension } from './extensions/field-expression/field-expression';\nimport { FieldValidationExtension } from './extensions/field-validation/field-validation';\nimport { FieldFormExtension } from './extensions/field-form/field-form';\nimport { CoreExtension } from './extensions/core/core';\nimport { FieldArrayType } from './templates/field-array.type';\n\nexport function defaultFormlyConfig(formlyConfig: FormlyConfig): ConfigOption {\n return {\n types: [\n { name: 'formly-group', component: FormlyGroup },\n { name: 'formly-template', component: FormlyTemplateType },\n ],\n extensions: [\n { name: 'core', extension: new CoreExtension(formlyConfig) },\n { name: 'field-validation', extension: new FieldValidationExtension(formlyConfig) },\n { name: 'field-form', extension: new FieldFormExtension(formlyConfig) },\n { name: 'field-expression', extension: new FieldExpressionExtension() },\n ],\n };\n}\n\n@NgModule({\n declarations: [\n FormlyForm,\n FormlyField,\n FormlyAttributes,\n FormlyGroup,\n FormlyValidationMessage,\n FormlyTemplateType,\n FieldArrayType as any,\n ],\n entryComponents: [FormlyGroup, FormlyTemplateType],\n exports: [FormlyForm, FormlyField, FormlyAttributes, FormlyGroup, FormlyValidationMessage],\n imports: [CommonModule],\n})\nexport class FormlyModule {\n static forRoot(config: ConfigOption = {}): ModuleWithProviders<FormlyModule> {\n return {\n ngModule: FormlyModule,\n providers: [\n { provide: FORMLY_CONFIG, multi: true, useFactory: defaultFormlyConfig, deps: [FormlyConfig] },\n { provide: FORMLY_CONFIG, useValue: config, multi: true },\n { provide: ANALYZE_FOR_ENTRY_COMPONENTS, useValue: config, multi: true },\n FormlyConfig,\n FormlyFormBuilder,\n ],\n };\n }\n\n static forChild(config: ConfigOption = {}): ModuleWithProviders<FormlyModule> {\n return {\n ngModule: FormlyModule,\n providers: [\n { provide: FORMLY_CONFIG, multi: true, useFactory: defaultFormlyConfig, deps: [FormlyConfig] },\n { provide: FORMLY_CONFIG, useValue: config, multi: true },\n { provide: ANALYZE_FOR_ENTRY_COMPONENTS, useValue: config, multi: true },\n FormlyFormBuilder,\n ],\n };\n }\n\n constructor(\n configService: FormlyConfig,\n @Optional() @Inject(FORMLY_CONFIG) configs: ConfigOption[] = [],\n ) {\n if (!configs) {\n return;\n }\n\n configs.forEach(config => configService.addConfig(config));\n }\n}\n"]}
1
+ {"version":3,"sources":["node_modules/tslib/tslib.es6.js","ng://@ngx-formly/core/lib/utils.ts","ng://@ngx-formly/core/lib/services/formly.config.ts","ng://@ngx-formly/core/lib/services/formly.form.builder.ts","ng://@ngx-formly/core/lib/extensions/field-form/utils.ts","ng://@ngx-formly/core/lib/components/formly.form.ts","ng://@ngx-formly/core/lib/components/formly.field.ts","ng://@ngx-formly/core/lib/components/formly.attributes.ts","ng://@ngx-formly/core/lib/templates/field.type.ts","ng://@ngx-formly/core/lib/templates/field-array.type.ts","ng://@ngx-formly/core/lib/templates/field.wrapper.ts","ng://@ngx-formly/core/lib/templates/formly.group.ts","ng://@ngx-formly/core/lib/templates/formly.validation-message.ts","ng://@ngx-formly/core/lib/templates/field-template.type.ts","ng://@ngx-formly/core/lib/extensions/field-expression/utils.ts","ng://@ngx-formly/core/lib/extensions/field-expression/field-expression.ts","ng://@ngx-formly/core/lib/extensions/field-validation/field-validation.ts","ng://@ngx-formly/core/lib/extensions/field-form/field-form.ts","ng://@ngx-formly/core/lib/extensions/core/core.ts","ng://@ngx-formly/core/lib/core.module.ts"],"names":["extendStatics","d","b","Object","setPrototypeOf","__proto__","Array","p","hasOwnProperty","__extends","__","this","constructor","prototype","create","__assign","assign","t","s","i","n","arguments","length","call","apply","__rest","e","indexOf","getOwnPropertySymbols","propertyIsEnumerable","__values","o","m","Symbol","iterator","next","value","done","__read","r","ar","push","error","__spread","concat","getKeyPath","field","key","_keyPath","path","replace","split","isArray","slice","FORMLY_VALIDATORS","assignFieldValue","paths","root","parent","undefined","resetOnHide","k","pop","reduce","model","assignModelValue","isObject","test","clone","getFieldValue","_b","tslib_1.__values","_c","reverseDeepMerge","dest","args","_i","forEach","src","srcArg","isNullOrUndefined","obj1","obj2","getPrototypeOf","isUndefined","isFunction","x","isObservable","TemplateRef","changingThisBreaksApplicationSecurity","name","Set","Map","_isAMomentObject","AbstractControl","Date","getTime","map","v","proto","c","keys","newVal","prop","propDesc","getOwnPropertyDescriptor","get","defineProperty","defineHiddenProp","defaultValue","enumerable","writable","configurable","wrapProperty","setFn","_observers","fns","currentValue","firstChange","set","previousValue_1","changeFn","previousValue","splice","reduceFormUpdateValidityCalls","form","action","updateValidity","_updateTreeValidity","bind","updateValidityArgs","called","emitEvent","_a","FORMLY_CONFIG","InjectionToken","FormlyConfig","types","validators","wrappers","messages","templateManipulators","preWrapper","postWrapper","extras","checkExpressionOn","lazyRender","showError","formControl","invalid","touched","options","parentForm","submitted","validation","show","extensions","addConfig","config","_this","type","setType","validator","setValidator","wrapper","setWrapper","manipulators","console","warn","manipulator","setManipulator","validationMessages","addValidatorMessage","message","extension","option","getType","Error","mergeExtendedType","getMergedField","defaultOptions","extendDefaults","extends","optionsTypes","componentRef","resolveFieldTypeRef","instance","component","_resolver","_injector","resolveComponentFactory","destroy","setTypeWrapper","getWrapper","getValidator","getValidatorMessage","class","method","extendedType","Injectable","providedIn","FormlyFormBuilder","formlyConfig","componentFactoryResolver","injector","buildForm","fieldGroup","core","_setOptions","_buildForm","_checkField","getExtensions","prePopulate","onPopulate","f","postPopulate","formState","fieldChanges","Subject","_hiddenFieldsForCheck","_markForCheck","_componentRefs","ref","ChangeDetectorRef","markForCheck","_buildField","ComponentFactoryResolver","Injector","unregisterControl","control","fieldIndex","opts","FormArray","key_1","controls","findIndex","updateControl","removeAt","FormGroup","key_2","removeControl","setParent","findControl","registerControl","setValidators","setAsyncValidators","templateOptions","disabled","disable","enable","registerOnDisabledChange","FormControl","patchValue","setControl","_hide","status","updateValueAndValidity","emit","_forEachChild","cb","FormlyForm","formlyBuilder","ngZone","immutable","parentFormGroup","modelChange","EventEmitter","_modelChangeValue","modelChangeSubs","modelChange$","modelChangeSub","pipe","switchMap","onStable","asObservable","take","subscribe","runGuarded","checkExpressionChange","_model","_fields","fields","_options","content","hasContent","node","nativeElement","nextSibling","nodeType","Node","ELEMENT_NODE","TEXT_NODE","textContent","trim","ngDoCheck","ngOnChanges","changes","clearControl","setOptions","updateInitialValue","clearModelSubscriptions","trackModelChanges","ngOnDestroy","unsubscribe","changeModel","resetModel","_initialModel","resetForm","reset","emitModelChange","rootKey","control_1","valueChanges","distinctUntilChanged","y","modelOptions","updateOn","debounce","default","debounceTime","onlySelf","parsers","parserFn","tslib_1.__spread","join","observers","unshift","sub","Component","selector","template","providers","NgZone","Attribute","FormGroupDirective","decorators","Optional","Input","Output","ViewChild","FormlyField","renderer","resolver","elementRef","hideDeprecation","warnDeprecation","hostObservers","componentRefs","hooksObservers","detectFieldBuild","ngAfterContentInit","triggerHook","ngAfterContentChecked","ngAfterViewInit","ngAfterViewChecked","render","ngOnInit","resetRefs","renderField","containerRef","clear","wps_1","ref_1","createComponent","attachComponentRef","viewRef","detach","destroyed","insert","changeDetectorRef","detectChanges","hooks","sub_1","lifecycle","className","removeAttribute","setAttribute","setStyle","hide","filter","Renderer2","ElementRef","read","ViewContainerRef","static","FormlyAttributes","_document","uiAttributesCache","uiAttributes","uiEvents","listeners","events","document","listener","eventName","to","listen","attributes","attr","detachElementRef","attachElementRef","fieldAttrElements","id","toggleFocus","toLowerCase","element","focus","isFocused","activeElement","some","contains","blur","onFocus","$event","onBlur","onChange","change","markAsDirty","index","Directive","host","(focus)","(blur)","(change)","Inject","DOCUMENT","FieldType","Field","_super","tslib_1.__extends","FieldArrayType","builder","fieldArray","add","initialModel","remove","FieldWrapper","FormlyGroup","[class]","FormlyValidationMessage","errorMessage$","statusChanges","startWith","errorMessage","of","fieldForm","errors","errorPath","asyncValidators","changeDetection","ChangeDetectionStrategy","OnPush","FormlyTemplateType","sanitizer","innerHtml","safeHtml","bypassSecurityTrustHtml","DomSanitizer","evalExpression","expression","thisArg","argVal","Function","FieldExpressionExtension","checkLocked","ignoreCache","checkField","_expressionProperties","expressionProperties","expressionProperty","this_1","_evalExpression","Observable","subscribe_1","setExprValue","subscription_1","onInit_1","onInit","onDestroy_1","onDestroy","hideExpression","parentExpression","evalStringExpression","argNames","fieldChanged","sort","toggleFormControl","checkFieldExpressionChange","checkFieldVisibilityChange","expressionValue","JSON","stringify","hideExpressionResult","hidden","setDisabledState","every","target","lastIndex","emitExpressionChanges","property","FieldValidationExtension","initFieldValidation","getPredefinedFieldValidation","validatorName","wrapNgValidatorFn","VALIDATORS","opt","Validators","compose","required","pattern","minLength","maxLength","min","max","validatorOption","isPromise","obj","then","handleAsyncResult","handleResult","ctrl","childCtrl","setErrors","childErrors","FieldFormExtension","addFormControl","fieldsToUpdate","controlOptions","componentType","c_1","enabled","updateControlValidity","asyncValidator","mergeValidators","composeAsync","childrenToUpdate","CoreExtension","formId","getFieldComponentInstance","fieldTransforms","fieldTransform","initFieldOptions","getFieldId","label","placeholder","resetFieldOnHide","setDefaultValue","parent_1","initFieldWrappers","fieldTemplateManipulators","el","a","defaultFormlyConfig","FormlyModule","configService","configs","forRoot","ngModule","provide","multi","useFactory","deps","useValue","ANALYZE_FOR_ENTRY_COMPONENTS","forChild","NgModule","declarations","entryComponents","exports","imports","CommonModule","getFieldInitialValue","paths_1","paths_1_1"],"mappings":"4lBAgBA,IAAIA,EAAgB,SAASC,EAAGC,GAI5B,OAHAF,EAAgBG,OAAOC,gBAClB,CAAEC,UAAW,cAAgBC,OAAS,SAAUL,EAAGC,GAAKD,EAAEI,UAAYH,IACvE,SAAUD,EAAGC,GAAK,IAAK,IAAIK,KAAKL,EAAOA,EAAEM,eAAeD,KAAIN,EAAEM,GAAKL,EAAEK,MACpDN,EAAGC,IAG5B,SAAgBO,EAAUR,EAAGC,GAEzB,SAASQ,IAAOC,KAAKC,YAAcX,EADnCD,EAAcC,EAAGC,GAEjBD,EAAEY,UAAkB,OAANX,EAAaC,OAAOW,OAAOZ,IAAMQ,EAAGG,UAAYX,EAAEW,UAAW,IAAIH,GAG5E,IAAIK,EAAW,WAQlB,OAPAA,EAAWZ,OAAOa,QAAU,SAAkBC,GAC1C,IAAK,IAAIC,EAAGC,EAAI,EAAGC,EAAIC,UAAUC,OAAQH,EAAIC,EAAGD,IAE5C,IAAK,IAAIZ,KADTW,EAAIG,UAAUF,GACOhB,OAAOU,UAAUL,eAAee,KAAKL,EAAGX,KAAIU,EAAEV,GAAKW,EAAEX,IAE9E,OAAOU,IAEKO,MAAMb,KAAMU,YAGhC,SAAgBI,EAAOP,EAAGQ,GACtB,IAAIT,EAAI,GACR,IAAK,IAAIV,KAAKW,EAAOf,OAAOU,UAAUL,eAAee,KAAKL,EAAGX,IAAMmB,EAAEC,QAAQpB,GAAK,IAC9EU,EAAEV,GAAKW,EAAEX,IACb,GAAS,MAALW,GAAqD,mBAAjCf,OAAOyB,sBACtB,CAAA,IAAIT,EAAI,EAAb,IAAgBZ,EAAIJ,OAAOyB,sBAAsBV,GAAIC,EAAIZ,EAAEe,OAAQH,IAC3DO,EAAEC,QAAQpB,EAAEY,IAAM,GAAKhB,OAAOU,UAAUgB,qBAAqBN,KAAKL,EAAGX,EAAEY,MACvEF,EAAEV,EAAEY,IAAMD,EAAEX,EAAEY,KAE1B,OAAOF,EAGX,SAwDgBa,EAASC,GACrB,IAAIC,EAAsB,mBAAXC,QAAyBF,EAAEE,OAAOC,UAAWf,EAAI,EAChE,OAAIa,EAAUA,EAAET,KAAKQ,GACd,CACHI,KAAM,WAEF,OADIJ,GAAKZ,GAAKY,EAAET,SAAQS,OAAI,GACrB,CAAEK,MAAOL,GAAKA,EAAEZ,KAAMkB,MAAON,KAKhD,SAAgBO,EAAOP,EAAGX,GACtB,IAAIY,EAAsB,mBAAXC,QAAyBF,EAAEE,OAAOC,UACjD,IAAKF,EAAG,OAAOD,EACf,IAAmBQ,EAAYb,EAA3BP,EAAIa,EAAET,KAAKQ,GAAOS,EAAK,GAC3B,IACI,WAAc,IAANpB,GAAsB,EAANA,QAAcmB,EAAIpB,EAAEgB,QAAQE,MAAMG,EAAGC,KAAKF,EAAEH,OAExE,MAAOM,GAAShB,EAAI,CAAEgB,MAAOA,WAEzB,IACQH,IAAMA,EAAEF,OAASL,EAAIb,EAAU,YAAIa,EAAET,KAAKJ,WAExC,GAAIO,EAAG,MAAMA,EAAEgB,OAE7B,OAAOF,EAGX,SAAgBG,IACZ,IAAK,IAAIH,EAAK,GAAIrB,EAAI,EAAGA,EAAIE,UAAUC,OAAQH,IAC3CqB,EAAKA,EAAGI,OAAON,EAAOjB,UAAUF,KACpC,OAAOqB,EC9HX,SAAgBK,EAAWC,GACzB,IAAKA,EAAMC,IACT,MAAO,GAIT,IAAKD,EAAME,UAAYF,EAAME,SAASD,MAAQD,EAAMC,IAAK,KACnDE,EAAiB,GACrB,GAAyB,iBAAdH,EAAMC,IAAkB,KAC3BA,GAAkC,IAA5BD,EAAMC,IAAIpB,QAAQ,KAC1BmB,EAAMC,IACND,EAAMC,IAAIG,QAAQ,aAAc,OACpCD,GAA6B,IAAtBF,EAAIpB,QAAQ,KAAcoB,EAAII,MAAM,KAAO,CAACJ,QAEnDE,EADS3C,MAAM8C,QAAQN,EAAMC,KACtBD,EAAMC,IAAIM,MAAM,GAEhB,CAAC,GAAGP,EAAMC,KAGnBD,EAAME,SAAW,CAAED,IAAKD,EAAMC,IAAKE,KAAIA,GAGzC,OAAOH,EAAME,SAASC,KAAKI,MAAM,GAGnC,IAAaC,EAAoB,CAAC,WAAY,UAAW,YAAa,YAAa,MAAO,OAE1F,SAAgBC,EAAiBT,EAA+BV,OAC1DoB,EAAQX,EAAWC,GACvB,GAAqB,IAAjBU,EAAMlC,OAAV,CAKA,QADImC,EAAOX,EACJW,EAAKC,QAEVF,EAAKb,EAAOE,EADZY,EAAOA,EAAKC,QACqBF,GAGnC,GAAIpB,IAAUuB,WAAab,EAAMc,YAAjC,KACQC,EAAIL,EAAMM,aACNN,EAAMO,OAAM,SAAEC,EAAOf,GAAS,OAAAe,EAAMf,IAAS,IAAIQ,EAAKO,OACvDH,QAOb,SAAgBI,EAAiBD,EAAYR,EAAiBpB,GAC5D,IAAK,IAAIjB,EAAI,EAAGA,EAAKqC,EAAMlC,OAAS,EAAIH,IAAK,KACrC8B,EAAOO,EAAMrC,GACd6C,EAAMf,IAAUiB,EAASF,EAAMf,MAClCe,EAAMf,GAAQ,QAAQkB,KAAKX,EAAMrC,EAAI,IAAM,GAAK,IAGlD6C,EAAQA,EAAMf,GAGhBe,EAAMR,EAAMA,EAAMlC,OAAS,IAAM8C,EAAMhC,GAbvC6B,CAAiBR,EAAKO,MAAOR,EAAOpB,IAkCtC,SAAgBiC,EAAcvB,WACxBkB,EAAQlB,EAAMY,OAAOM,UACzB,IAAmB,IAAAM,EAAAC,EAAA1B,EAAWC,IAAM0B,EAAAF,EAAAnC,QAAAqC,EAAAnC,KAAAmC,EAAAF,EAAAnC,OAAE,CAAjC,IAAMc,EAAIuB,EAAApC,MACb,IAAK4B,EACH,OAAOA,EAETA,EAAQA,EAAMf,wGAGhB,OAAOe,EAGT,SAAgBS,EAAiBC,OAAW,IAAAC,EAAA,GAAAC,EAAA,EAAAA,EAAAvD,UAAAC,OAAAsD,IAAAD,EAAAC,EAAA,GAAAvD,UAAAuD,GAU1C,OATAD,EAAKE,QAAO,SAACC,GACX,IAAK,IAAIC,KAAUD,EACbE,EAAkBN,EAAKK,KAmBd,KAnBwCL,EAAKK,GACxDL,EAAKK,GAAUX,EAAMU,EAAIC,KAyBFE,EAxBCP,EAAKK,GAwBKG,EAxBIJ,EAAIC,GAyBzCb,EAASe,IAASf,EAASgB,IAC7B/E,OAAOgF,eAAeF,KAAU9E,OAAOgF,eAAeD,KACpD5E,MAAM8C,QAAQ6B,KAAS3E,MAAM8C,QAAQ8B,IA1BtCT,EAAiBC,EAAKK,GAASD,EAAIC,KAuB3C,IAA+BE,EAAWC,IAnBjCR,EAGT,SAAgBM,EAAkB5C,GAChC,OAAOA,IAAUuB,WAAuB,OAAVvB,EAGhC,SAAgBgD,EAAYhD,GAC1B,OAAOA,IAAUuB,UAOnB,SAAgB0B,EAAWjD,GACzB,MAAyB,mBAAlB,EAST,SAAgB8B,EAASoB,GACvB,OAAY,MAALA,GAA0B,iBAANA,EAO7B,SAAgBlB,EAAMhC,GACpB,IACG8B,EAAS9B,IACPmD,EAAAA,aAAanD,IACZA,aAAiBoD,EAAAA,aACYpD,EAAMqD,wCACwC,IAA5E,CAAC,SAAU,WAAY,OAAQ,QAAQ9D,QAAQS,EAAMxB,YAAY8E,MAEpE,OAAOtD,EAGT,GAAIA,aAAiBuD,IACnB,OAAO,IAAIA,IAAIvD,GAGjB,GAAIA,aAAiBwD,IACnB,OAAO,IAAIA,IAAIxD,GAIjB,GAAIA,EAAMyD,kBAAoBR,EAAWjD,EAAMgC,OAC7C,OAAOhC,EAAMgC,QAGf,GAAIhC,aAAiB0D,EAAAA,gBACnB,OAAO,KAGT,GAAI1D,aAAiB2D,KACnB,OAAO,IAAIA,KAAK3D,EAAM4D,WAGxB,GAAI1F,MAAM8C,QAAQhB,GAChB,OAAOA,EAAMiB,MAAM,GAAG4C,IAAG,SAACC,GAAK,OAAA9B,EAAM8B,SAKjCC,EAAQhG,OAAOgF,eAAe/C,GAChCgE,EAAIjG,OAAOW,OAAOqF,GAItB,OAHAC,EAAIjG,OAAOC,eAAegG,EAAGD,GAGtBhG,OAAOkG,KAAKjE,GAAO2B,OAAM,SAAEuC,EAAQC,OAClCC,EAAWrG,OAAOsG,yBAAyBrE,EAAOmE,GAOxD,OANIC,EAASE,IACXvG,OAAOwG,eAAeL,EAAQC,EAAMC,GAEpCF,EAAOC,GAAQnC,EAAMhC,EAAMmE,IAGtBD,GACNF,GAGL,SAAgBQ,EAAiB9D,EAAYyD,EAAcM,GACzD1G,OAAOwG,eAAe7D,EAAOyD,EAAM,CAAEO,YAAY,EAAOC,UAAU,EAAMC,cAAc,IACtFlE,EAAMyD,GAAQM,EAGhB,SAAgBI,EACdlF,EACAwE,EACAW,GAEKnF,EAAEoF,YACLP,EAAiB7E,EAAG,aAAc,IAG/BA,EAAEoF,WAAWZ,KAChBxE,EAAEoF,WAAWZ,GAAQ,QAGnBa,EAAsBrF,EAAEoF,WAAWZ,GAoBvC,OAnB4B,IAAxBa,EAAIzF,QAAQuF,KACdE,EAAI3E,KAAKyE,GACTA,EAAM,CAAEG,aAActF,EAAEwE,GAAOe,aAAa,IACzB,IAAfF,EAAI9F,SACNsF,EAAiB7E,EAAG,OAAOwE,EAAQxE,EAAEwE,IACrCpG,OAAOwG,eAAe5E,EAAGwE,EAAM,CAC7BS,cAAc,EACdN,IAAG,WAAQ,OAAA3E,EAAE,OAAOwE,IACpBgB,IAAG,SAAEF,GACH,GAAIA,IAAiBtF,EAAE,OAAOwE,GAAS,KAC/BiB,EAAgBzF,EAAE,OAAOwE,GAC/BxE,EAAE,OAAOwE,GAAUc,EACnBD,EAAIvC,QAAO,SAAC4C,GAAY,OAAAA,EAAS,CAAEC,cAAaF,EAAEH,aAAYA,EAAEC,aAAa,YAOvF,WAAa,OAAAF,EAAIO,OAAOP,EAAIzF,QAAQuF,GAAQ,IAG9C,SAAgBU,EAA8BC,EAAWC,OACjDC,EAAiBF,EAAKG,oBAAoBC,KAAKJ,GAEjDK,EAAqB,CAAEC,QAAQ,EAAOC,WAAW,GACrDP,EAAKG,oBAAmB,SAAIK,OAAED,QAAA,IAAAC,EAAA,CAAAD,WAAA,GAAAC,GAAAD,UAAsC,OAAAF,EAAqB,CAAEC,QAAQ,EAAMC,UAAWA,GAAaF,EAAmBE,YACpJN,IAEAI,EAAmBC,QAAUJ,EAAe,CAAEK,UAAWF,EAAmBE,YAC5EP,EAAKG,oBAAsBD,ECrP7B,IAAaO,EAAgB,IAAIC,EAAAA,eAA6B,iBAY9DC,EAAA,WAAA,SAAAA,IAEE7H,KAAA8H,MAAsC,GACtC9H,KAAA+H,WAAkD,GAClD/H,KAAAgI,SAA8C,GAC9ChI,KAAAiI,SAAmE,GACnEjI,KAAAkI,qBAGI,CACFC,WAAY,GACZC,YAAa,IAEfpI,KAAAqI,OAAiC,CAC/BC,kBAAmB,uBACnBC,YAAY,EACZC,UAAS,SAAWrG,GAClB,OAAOA,EAAMsG,aAAetG,EAAMsG,YAAYC,UAAYvG,EAAMsG,YAAYE,SAAYxG,EAAMyG,QAAQC,YAAc1G,EAAMyG,QAAQC,WAAWC,cAAiB3G,EAAMA,MAAM4G,aAAc5G,EAAMA,MAAM4G,WAAWC,SAGnNhJ,KAAAiJ,WAAkD,UAElDpB,EAAA3H,UAAAgJ,UAAA,SAAUC,GAAV,IAAAC,EAAApJ,KACMmJ,EAAOrB,OACTqB,EAAOrB,MAAM5D,QAAO,SAACmF,GAAQ,OAAAD,EAAKE,QAAQD,KAExCF,EAAOpB,YACToB,EAAOpB,WAAW7D,QAAO,SAACqF,GAAa,OAAAH,EAAKI,aAAaD,KAEvDJ,EAAOnB,UACTmB,EAAOnB,SAAS9D,QAAO,SAACuF,GAAW,OAAAL,EAAKM,WAAWD,KAEjDN,EAAOQ,eACTC,QAAQC,KAAK,yFACbV,EAAOQ,aAAazF,QAAO,SAAC4F,GAAe,OAAAV,EAAKW,eAAeD,MAE7DX,EAAOa,oBACTb,EAAOa,mBAAmB9F,QAAO,SAAC6E,GAAc,OAAAK,EAAKa,oBAAoBlB,EAAWhE,KAAMgE,EAAWmB,WAEnGf,EAAOF,YACTE,EAAOF,WAAW/E,QAAO,SAACuB,GAAK,OAAA2D,EAAKH,WAAWxD,EAAEV,MAAQU,EAAE0E,YAEzDhB,EAAOd,SACTrI,KAAKqI,OAAMjI,EAAA,GAAQJ,KAAKqI,OAAWc,EAAOd,UAI9CR,EAAA3H,UAAAoJ,QAAA,SAAQV,GAAR,IAAAQ,EAAApJ,KACML,MAAM8C,QAAQmG,GAChBA,EAAQ1E,QAAO,SAAEkG,GAAW,OAAAhB,EAAKE,QAAQc,MAEpCpK,KAAK8H,MAAMc,EAAQ7D,QACtB/E,KAAK8H,MAAMc,EAAQ7D,MAAK,CAAiBA,KAAM6D,EAAQ7D,OAGzD,CAAC,YAAa,UAAW,iBAAkB,YAAYb,QAAO,SAAC0B,GACzDgD,EAAQ/I,eAAe+F,KACzBwD,EAAKtB,MAAMc,EAAQ7D,MAAMa,GAAQgD,EAAQhD,QAMjDiC,EAAA3H,UAAAmK,QAAA,SAAQtF,GACN,IAAK/E,KAAK8H,MAAM/C,GACd,MAAM,IAAIuF,MAAM,4BAA4BvF,EAAI,mGAKlD,OAFA/E,KAAKuK,kBAAkBxF,GAEhB/E,KAAK8H,MAAM/C,IAGpB8C,EAAA3H,UAAAsK,eAAA,SAAerI,GAAf,IAAAiH,EAAApJ,UAAe,IAAAmC,IAAAA,EAAA,QACPkH,EAAOrJ,KAAKqK,QAAQlI,EAAMkH,MAC5BA,EAAKoB,gBACP3G,EAAiB3B,EAAOkH,EAAKoB,oBAGzBC,EAAiBrB,EAAKsB,YAAW3K,KAAKqK,QAAQhB,EAAKsB,YAASF,eAC9DC,GACF5G,EAAiB3B,EAAOuI,GAGtBvI,GAASA,EAAMyI,cACjBzI,EAAMyI,aAAa1G,QAAO,SAACkG,OACnBK,EAAiBrB,EAAKiB,QAAQD,GAAQK,eACxCA,GACF3G,EAAiB3B,EAAOsI,SAKxBI,EAAe7K,KAAK8K,oBAAoB3I,GAC1C0I,GAAgBA,EAAaE,UAAYF,EAAaE,SAASN,gBACjE3G,EAAiB3B,EAAO0I,EAAaE,SAASN,iBAG3CtI,EAAM6F,UAAYqB,EAAKrB,WAC1B7F,EAAM6F,SAAQhG,EAAOqH,EAAKrB,YAK9BH,EAAA3H,UAAA4K,oBAAA,SAAoB3I,GAClB,QADkB,IAAAA,IAAAA,EAAA,KACbA,EAAMkH,KACT,OAAO,SAGHA,EAAOrJ,KAAKqK,QAAQlI,EAAMkH,MAChC,IAAKA,EAAK2B,WAAa3B,EAAoB,cACzC,OAAOA,EAAoB,cAGvB,IAAA3B,EAAAvF,EAAAY,OAAA6F,QAAEqC,EAAAvD,EAAAuD,UAAWC,EAAAxD,EAAAwD,UACbL,EAAeI,EAClBE,wBAAmC9B,EAAK2B,WACxC7K,OAAO+K,GAKV,OAHAjF,EAAiBoD,EAAM,gBAAiBwB,GACxCA,EAAaO,UAEN/B,EAAoB,eAG7BxB,EAAA3H,UAAAwJ,WAAA,SAAWd,GAAX,IAAAQ,EAAApJ,MACEA,KAAKgI,SAASY,EAAQ7D,MAAQ6D,GAClBd,OACVc,EAAQd,MAAM5D,QAAO,SAAEmF,GACrBD,EAAKiC,eAAehC,EAAMT,EAAQ7D,SAKxC8C,EAAA3H,UAAAoL,WAAA,SAAWvG,GACT,IAAK/E,KAAKgI,SAASjD,GACjB,MAAM,IAAIuF,MAAM,+BAA+BvF,EAAI,mGAGrD,OAAO/E,KAAKgI,SAASjD,IAGvB8C,EAAA3H,UAAAmL,eAAA,SAAehC,EAActE,GACtB/E,KAAK8H,MAAMuB,KACdrJ,KAAK8H,MAAMuB,GAAK,IAEbrJ,KAAK8H,MAAMuB,GAAMrB,WACpBhI,KAAK8H,MAAMuB,GAAMrB,SAAW,KAEmB,IAA7ChI,KAAK8H,MAAMuB,GAAMrB,SAAShH,QAAQ+D,IACpC/E,KAAK8H,MAAMuB,GAAMrB,SAASlG,KAAKiD,IAInC8C,EAAA3H,UAAAsJ,aAAA,SAAaZ,GACX5I,KAAK+H,WAAWa,EAAQ7D,MAAQ6D,GAGlCf,EAAA3H,UAAAqL,aAAA,SAAaxG,GACX,IAAK/E,KAAK+H,WAAWhD,GACnB,MAAM,IAAIuF,MAAM,iCAAiCvF,EAAI,mGAGvD,OAAO/E,KAAK+H,WAAWhD,IAGzB8C,EAAA3H,UAAA+J,oBAAA,SAAoBlF,EAAcmF,GAChClK,KAAKiI,SAASlD,GAAQmF,GAGxBrC,EAAA3H,UAAAsL,oBAAA,SAAoBzG,GAClB,OAAO/E,KAAKiI,SAASlD,IAGvB8C,EAAA3H,UAAA6J,eAAA,SAAeD,IACb,IAAIA,EAAY2B,UAAQ3B,EAAY4B,QAAQ1L,OAGtC6H,EAAA3H,UAAAqK,kBAAR,SAA0BxF,GACxB,GAAK/E,KAAK8H,MAAM/C,GAAM4F,WAAtB,KAIMgB,EAAe3L,KAAKqK,QAAQrK,KAAK8H,MAAM/C,GAAM4F,YAC9C3K,KAAK8H,MAAM/C,GAAMiG,YACpBhL,KAAK8H,MAAM/C,GAAMiG,UAAYW,EAAaX,WAGvChL,KAAK8H,MAAM/C,GAAMiD,WACpBhI,KAAK8H,MAAM/C,GAAMiD,SAAW2D,EAAa3D,gCA7L9C4D,EAAAA,WAAU5H,KAAA,CAAC,CAAE6H,WAAY,gHAA1B,GCnBAC,EAAA,WASE,SAAAA,EACUC,EACAC,EACAC,GAFAjM,KAAA+L,aAAAA,EACA/L,KAAAgM,yBAAAA,EACAhM,KAAAiM,SAAAA,SAGVH,EAAA5L,UAAAgM,UAAA,SAAUzD,EAAoC0D,EAAsC9I,EAAYuF,GAAhG,IAAAQ,EAAApJ,KACE,QAD4C,IAAAmM,IAAAA,EAAA,KACvCnM,KAAK+L,aAAa9C,WAAWmD,KAChC,MAAM,IAAI9B,MAAM,iGAGZnI,EAAQ,CAAEgK,WAAUA,EAAE9I,MAAKA,EAAEoF,YAAWA,EAAEG,QAAS5I,KAAKqM,YAAYzD,IAC1E3B,EAA8BwB,EAAW,WAAQ,OAAAW,EAAKkD,WAAWnK,KACjEA,EAAMyG,QAAQ2D,YAAYpK,GAAO,IAG3B2J,EAAA5L,UAAAoM,WAAR,SAAmBnK,GAAnB,IAAAiH,EAAApJ,KACEA,KAAKwM,gBAAgBtI,QAAO,SAACiG,GAAa,OAAAA,EAAUsC,aAAetC,EAAUsC,YAAYtK,KACzFnC,KAAKwM,gBAAgBtI,QAAO,SAACiG,GAAa,OAAAA,EAAUuC,YAAcvC,EAAUuC,WAAWvK,KAEnFA,EAAMgK,YACRhK,EAAMgK,WAAWjI,QAAO,SAAEyI,GAAM,OAAAvD,EAAKkD,WAAWK,KAGlD3M,KAAKwM,gBAAgBtI,QAAO,SAACiG,GAAa,OAAAA,EAAUyC,cAAgBzC,EAAUyC,aAAazK,MAGrF2J,EAAA5L,UAAAsM,cAAR,WAAA,IAAApD,EAAApJ,KACE,OAAOR,OAAOkG,KAAK1F,KAAK+L,aAAa9C,YAAY3D,IAAG,SAACP,GAAQ,OAAAqE,EAAK2C,aAAa9C,WAAWlE,MAGpF+G,EAAA5L,UAAAmM,YAAR,SAAoBzD,GAApB,IAAAQ,EAAApJ,KA+CE,OA9CA4I,EAAUA,GAAW,IACbiE,UAAYjE,EAAQiE,WAAa,GAEpCjE,EAAQJ,YACXI,EAAQJ,UAAYxI,KAAK+L,aAAa1D,OAAOG,WAG1CI,EAAQkE,cACX7G,EAAiB2C,EAAS,eAAgB,IAAImE,EAAAA,SAG3CnE,EAAQqC,WACXhF,EAAiB2C,EAAS,YAAa5I,KAAKgM,0BAGzCpD,EAAQsC,WACXjF,EAAiB2C,EAAS,YAAa5I,KAAKiM,UAGzCrD,EAAQoE,wBACXpE,EAAQoE,sBAAwB,IAG7BpE,EAAQqE,gBACXrE,EAAQqE,cAAa,SAAI9K,GACnBA,EAAM+K,gBACR/K,EAAM+K,eAAehJ,QAAO,SAACiJ,GAEDA,EAAIlB,SAASlG,IAAIqH,EAAAA,mBACzBC,iBAIlBlL,EAAMgK,YACRhK,EAAMgK,WAAWjI,QAAO,SAACyI,GAAK,OAAA/D,EAAQqE,cAAcN,OAKrD/D,EAAQ0E,cACX1E,EAAQ0E,YAAW,SAAInL,GAErB,OADAiH,EAAK8C,UAAU/J,EAAM+E,KAAM/E,EAAMgK,WAAYhK,EAAMkB,MAAOlB,EAAMyG,SACzDzG,IAIJyG,uBAhFVgD,EAAAA,WAAU5H,KAAA,CAAC,CAAE6H,WAAY,oDALjBhE,SAFY0F,EAAAA,gCAA0BC,EAAAA,wLAA/C,GCMA,SAAgBC,EAAkBtL,EAA0BsF,QAAA,IAAAA,IAAAA,GAAA,OACpDiG,EAAUvL,EAAMsG,YAChBkF,EAAaD,EAAiB,QAAIA,EAAiB,QAAE1M,QAAQmB,IAAU,GACzD,IAAhBwL,GACFD,EAAiB,QAAE1G,OAAO2G,EAAY,OAGlCzG,EAAOwG,EAAc,OAC3B,GAAKxG,EAAL,KAIM0G,EAAO,CAAEnG,UAASA,GACxB,GAAIP,aAAgB2G,EAAAA,UAAW,KACvBC,EAAM5G,EAAK6G,SAASC,UAAS,SAACvI,GAAK,OAAAA,IAAMiI,KAClC,IAATI,GACFG,EAAc/G,EAAM0G,EAAI,WAAQ,OAAA1G,EAAKgH,SAASJ,UAE3C,GAAI5G,aAAgBiH,EAAAA,UAAW,KAC9BtL,EAAQX,EAAWC,GACnBiM,EAAMvL,EAAMA,EAAMlC,OAAS,GAC7BuG,EAAKnB,IAAI,CAACqI,MAAUV,GACtBO,EAAc/G,EAAM0G,EAAI,WAAQ,OAAA1G,EAAKmH,cAAcD,KAIvDV,EAAQY,UAAU,OAGpB,SAAgBC,EAAYpM,GAC1B,GAAIA,EAAMsG,YACR,OAAOtG,EAAMsG,YAGf,IAAkC,IAA9BtG,EAAwB,iBAC1B,OAAO,SAGH+E,EAAO/E,EAAMY,OAAkB,YAErC,OAAOmE,EAAOA,EAAKnB,IAAI7D,EAAWC,IAAU,KAG9C,SAAgBqM,EAAgBrM,EAA+BuL,EAAejG,QAAA,IAAAA,IAAAA,GAAA,IAC5EiG,EAAUA,GAAWvL,EAAMsG,aACL,SACpBxC,EAAiByH,EAAS,UAAW,KAEI,IAAvCA,EAAiB,QAAE1M,QAAQmB,IAC7BuL,EAAiB,QAAE5L,KAAKK,IAGrBA,EAAMsG,aAAeiF,IACxBzH,EAAiB9D,EAAO,cAAeuL,GACvCA,EAAQe,cAAc,MACtBf,EAAQgB,mBAAmB,MAE3BvM,EAAMwM,gBAAgBC,WAAazM,EAAMwM,gBAAgBC,SACzDtI,EAAanE,EAAMwM,gBAAiB,WAAU,SAAGjH,OAAEf,EAAAe,EAAAf,YAAaD,EAAAgB,EAAAhB,aACzDC,IACHD,EAAevE,EAAMsG,YAAYoG,UAAY1M,EAAMsG,YAAYqG,YAG/DpB,EAAQqB,0BACVrB,EAAQqB,yBAAwB,SAC7BtN,GACCU,EAAMwM,gBAA8B,aAAIlN,EAExCU,EAAMyG,SAAWzG,EAAMyG,QAAQqE,cAAc9K,UAMjDY,EAASZ,EAAMY,OAAkB,YACrC,GAAKA,GAAWZ,EAAMC,IAAtB,KAIMS,EAAQX,EAAWC,GACnBV,EAAQiC,EAAcvB,GAExBkC,EAAkBqJ,EAAQjM,QAAU4C,EAAkB5C,IACrDiM,EAAQjM,QAAUA,KAClBiM,aAAmBsB,EAAAA,cAEtBtB,EAAQuB,WAAWxN,GAGrB,mBAASjB,OACD8B,EAAOO,EAAMrC,GACduC,EAAOgD,IAAI,CAACzD,KACf2L,EACElL,EACA,CAAE0E,UAASA,GAAE,WACP,OAAA1E,EAAOmM,WAAW5M,EAAM,IAAI6L,EAAAA,UAAU,OAIhDpL,EAAqBA,EAAOgD,IAAI,CAACzD,KAV1B9B,EAAI,EAAGA,EAAKqC,EAAMlC,OAAS,EAAIH,MAA/BA,OAaH4B,EAAMS,EAAMA,EAAMlC,OAAS,GAC5BwB,EAAMgN,OAASpM,EAAOgD,IAAI,CAAC3D,MAAUsL,GACxCO,EACElL,EACA,CAAE0E,UAASA,GAAE,WACP,OAAA1E,EAAOmM,WAAW9M,EAAKsL,MAKnC,SAAgBtG,EAAe3B,OACvB2J,EAAS3J,EAAE2J,OACjB3J,EAAE4J,uBAAuB,CAAE5H,WAAW,IAClC2H,IAAW3J,EAAE2J,QACd3J,EAAe,cAA0B6J,KAAK7J,EAAE2J,QAIrD,SAASnB,EAAc/G,EAA2B0G,EAA8BzG,GAI1ED,aAAgBiH,EAAAA,YAAcjH,EAA0B,sBAC1DjB,EAAiBiB,EAAM,uBAAuB,GAC9C,EAAcqI,cAAa,SAAIC,GAC7BhQ,OACGkG,KAAKwB,EAAK6G,UACV7J,QAAO,SAAChB,GAAK,OAAAgE,EAAK6G,SAAS7K,IAAMsM,EAAGtI,EAAK6G,SAAS7K,GAAIA,WAOvDmM,EAAyBnI,EAAKmI,uBAAuB/H,KAAKJ,IACzC,IAAnB0G,EAAKnG,YACPP,EAAKmI,uBAAsB,SAAIzB,GAC7ByB,EAAsBjP,EAAA,GAAOwN,GAAQ,GAAE,CAAGnG,WAAW,OAIzDN,KAEuB,IAAnByG,EAAKnG,YACPP,EAAKmI,uBAAyBA,oBCnEhC,SAAAI,EACUC,EACA3D,EACA4D,EAEgBC,EACJC,GANtB,IAAAzG,EAAApJ,KACUA,KAAA0P,cAAAA,EACA1P,KAAA+L,aAAAA,EACA/L,KAAA2P,OAAAA,EAGY3P,KAAA6P,gBAAAA,EA5CZ7P,KAAA8P,YAAc,IAAIC,EAAAA,aAsBpB/P,KAAA4P,WAAY,EAEZ5P,KAAAgQ,kBAAyB,GAGzBhQ,KAAAiQ,gBAAkC,GAClCjQ,KAAAkQ,aAAe,IAAInD,EAAAA,QACnB/M,KAAAmQ,eAAiBnQ,KAAKkQ,aAAaE,KACzCC,EAAAA,UAAS,WAAO,OAAAjH,EAAKuG,OAAOW,SAASC,eAAeH,KAAKI,EAAAA,KAAK,OAC9DC,UAAS,WAAO,OAAArH,EAAKuG,OAAOe,WAAU,WAGtCtH,EAAKuH,wBACLvH,EAAK0G,YAAYR,KAAKlG,EAAK4G,kBAAoBvM,EAAM2F,EAAK/F,YAWxC,OAAduM,GACFhG,QAAQC,KAAK,6JAGf7J,KAAK4P,UAA2B,OAAdA,KAAyB7D,EAAa1D,OAAOuH,UAgKnE,OApOEpQ,OAAAwG,eACIyJ,EAAAvP,UAAA,QAAK,KACT,WAKE,OAJKF,KAAK4Q,SACR5Q,KAAK4Q,OAAS,IAGT5Q,KAAK4Q,YAPd,SACUvN,GAAcrD,KAAK4Q,OAAS5Q,KAAK4P,UAAYnM,EAAMJ,GAASA,mCAStE7D,OAAAwG,eACIyJ,EAAAvP,UAAA,SAAM,KACV,WAAe,OAAOF,KAAK6Q,SAAW,QAFtC,SACWC,GAA+B9Q,KAAK6Q,QAAU7Q,KAAK4P,UAAYnM,EAAMqN,GAAUA,mCAG1FtR,OAAAwG,eACIyJ,EAAAvP,UAAA,UAAO,KACX,WAAgB,OAAOF,KAAK+Q,cAF5B,SACYnI,GAA8B5I,KAAK+Q,SAAW/Q,KAAK4P,UAAYnM,EAAMmF,GAAWA,mCAI5FpJ,OAAAwG,eAA0ByJ,EAAAvP,UAAA,UAAO,KAAjC,SAAkC8Q,GAChC,GAAIA,EAAS,CAGX,QAFIC,GAAa,EACbC,EAAOF,EAAQG,cAAcC,YAC1BF,IAASD,IAEZC,EAAKG,WAAaC,KAAKC,cACpBL,EAAKG,WAAaC,KAAKE,WAAaN,EAAKO,aAA2C,KAA5BP,EAAKO,YAAYC,UAE5ET,GAAa,GAGfC,EAAOA,EAAKE,YAGVH,GACFrH,QAAQC,KAAK,wLAoCnB4F,EAAAvP,UAAAyR,UAAA,WACqD,yBAA/C3R,KAAK+L,aAAa1D,OAAOC,mBAC3BtI,KAAK2Q,yBAITlB,EAAAvP,UAAA0R,YAAA,SAAYC,GAENA,EAAQxO,OAASrD,KAAKmC,QACxBnC,KAAKmC,MAAMkB,MAAQrD,KAAKqD,OAGtBwO,EAAQf,QAAU9Q,KAAKkH,MD4C/B,SAAgB4K,EAAa5K,GAC3BA,EAAc,gBAAYA,EAAc,QACxCA,EAAKuH,cAAc,MACnBvH,EAAKwH,mBAAmB,OACpBxH,aAAgBiH,EAAAA,WAAajH,aAAgB2G,EAAAA,YAC/CrO,OAAOkG,KAAKwB,EAAK6G,UACd7J,QAAO,SAAEhB,GAAM,OAAA4O,EAAa5K,EAAK6G,SAAS7K,MCjD3C4O,CAAa9R,KAAKkH,OAGhB2K,EAAQf,QAAUe,EAAQ3K,MAAS2K,EAAQxO,OAASrD,KAAKgQ,oBAAsB6B,EAAQxO,MAAMqD,gBAC/F1G,KAAKkH,KAAOlH,KAAKkH,MAAI,IAASiH,EAAAA,UAAU,IACxCnO,KAAK+R,aACL/R,KAAK4I,QAAQoJ,qBACbhS,KAAKiS,0BACLjS,KAAK0P,cAAcxD,UAAUlM,KAAKkH,KAAMlH,KAAK8Q,OAAQ9Q,KAAKqD,MAAOrD,KAAK4I,SACtE5I,KAAKkS,kBAAkBlS,KAAK8Q,UAIhCrB,EAAAvP,UAAAiS,YAAA,WACEnS,KAAKmQ,eAAeiC,cACpBpS,KAAKiS,2BAGPxC,EAAAvP,UAAAmS,YAAA,SAAY3K,GAAEA,EAAAtF,QAAKX,EAAAiG,EAAAjG,MACjBmB,EADwB8E,EAAAvF,MACAV,GACxBzB,KAAKkQ,aAAa1O,QAGpBiO,EAAAvP,UAAA6R,WAAA,WAAA,IAAA3I,EAAApJ,KACOA,KAAK4I,UACR5I,KAAK4I,QAAU,IAGZ5I,KAAK4I,QAAQ0J,aAChBtS,KAAK4I,QAAQ0J,WAAU,SAAIjP,GACzBA,EAAQI,EAAMY,EAAkBhB,GAAmC+F,EAAY,QAAEmJ,cAAgBlP,GAC7F+F,EAAK/F,QACP7D,OAAOkG,KAAK0D,EAAK/F,OAAOa,QAAO,SAAChB,GAAK,cAAOkG,EAAK/F,MAAMH,KACvD1D,OAAOa,OAAO+I,EAAK/F,MAAOA,GAAS,KAGX+F,EAAY,QAAEkD,aAIpClD,EAAKR,QAAQC,YAAcO,EAAKR,QAAQC,WAAW6E,UAAYtE,EAAKlC,KACtEkC,EAAKR,QAAQC,WAAW2J,UAAUpJ,EAAK/F,OAEvC+F,EAAKlC,KAAKuL,MAAMrJ,EAAK/F,UAKtBrD,KAAK4I,QAAQC,YAAc7I,KAAK6P,kBACnC5J,EAAiBjG,KAAK4I,QAAS,aAAc5I,KAAK6P,iBAClDvJ,EAAatG,KAAK4I,QAAQC,WAAY,YAAW,SAAGnB,GAAEA,EAAAf,cAElDyC,EAAKuH,wBACqBvH,EAAY,QAAE6D,cAAc,CACpDd,WAAY/C,EAAK0H,OACjBzN,MAAO+F,EAAK/F,MACZoF,YAAaW,EAAKlC,KAClB0B,QAASQ,EAAKR,cAMjB5I,KAAK4I,QAAQoJ,qBAChBhS,KAAK4I,QAAQoJ,mBAAkB,WAAS,OAA0B5I,EAAY,QAAEmJ,cAAgB9O,EAAM2F,EAAK/F,SAG9ErD,KAAY,QAAEsM,aACjBtM,KAAY,QAAEsM,WAAU,SAAIoG,QAAA,IAAAA,IAAAA,GAAA,GACpDtJ,EAAK6I,0BACL7I,EAAKsG,cAAcxD,UAAU9C,EAAKlC,KAAMkC,EAAK0H,OAAQ1H,EAAK/F,MAAO+F,EAAKR,SACtEQ,EAAK8I,kBAAkB9I,EAAK0H,QAExB4B,GACFtJ,EAAK0G,YAAYR,KAAKlG,EAAK4G,kBAAoBvM,EAAM2F,EAAK/F,WAM1DoM,EAAAvP,UAAAyQ,sBAAR,WACM3Q,KAAK4I,SAAqC5I,KAAY,QAAEuM,aAChCvM,KAAY,QAAEuM,YAAY,CAClDJ,WAAYnM,KAAK8Q,OACjBzN,MAAOrD,KAAKqD,MACZoF,YAAazI,KAAKkH,KAClB0B,QAAS5I,KAAK4I,WAKZ6G,EAAAvP,UAAAgS,kBAAR,SAA0BpB,EAA6B6B,GAAvD,IAAAvJ,EAAApJ,UAAuD,IAAA2S,IAAAA,EAAA,IACrD7B,EAAO5M,QAAO,SAAC/B,GACb,GAAIA,EAAMC,MAAQD,EAAMgK,YAAchK,EAAMsG,YAAa,KACjDmK,EAAUzQ,EAAMsG,YAClBoK,EAAeD,EAAQC,aAAazC,KACtC0C,EAAAA,qBAAoB,SAAEnO,EAAGoO,GACvB,OAAIpO,IAAMoO,IAAKpT,MAAM8C,QAAQkC,KAAMpB,EAASoB,MAQ1C+C,EAAAvF,EAAA6Q,aAAEC,EAAAvL,EAAAuL,SAAUC,EAAAxL,EAAAwL,WACZD,GAAyB,WAAbA,IAA0BC,GAA+B,EAAnBA,EAASC,aAC/DN,EAAeD,EAAQC,aAAazC,KAAKgD,EAAAA,aAAaF,EAASC,cAGjE/J,EAAK6G,gBAAgBnO,KAAK+Q,EAAapC,UAAS,SAAEhP,GAE5CmR,aAAmB5D,EAAAA,aAAe4D,EAAiB,SAAiC,EAA5BA,EAAiB,QAAEjS,QAC7EiS,EAAQ3D,WAAWxN,EAAO,CAAEgG,WAAW,EAAO4L,UAAU,IAGtDlR,EAAMmR,SAAkC,EAAvBnR,EAAMmR,QAAQ3S,QACjCwB,EAAMmR,QAAQpP,QAAO,SAACqP,GAAY,OAAA9R,EAAQ8R,EAAS9R,KAGrD2H,EAAKiJ,YAAY,CAAEjQ,IAAKoR,EAAIb,EAAYzQ,EAAWC,IAAQsR,KAAK,KAAMhS,MAAKA,EAAEU,MAAKA,WAI9EuR,EAAYd,EAAQC,aAAwB,UAC9Ca,GAAgC,EAAnBA,EAAU/S,QACzB+S,EAAUC,QAAQD,EAAUvQ,OAI5BhB,EAAMgK,YAAwC,EAA1BhK,EAAMgK,WAAWxL,QACvCyI,EAAK8I,kBAAkB/P,EAAMgK,WAAYhK,EAAMC,IAAGJ,EAAO2Q,EAAYzQ,EAAWC,IAAUwQ,MAKxFlD,EAAAvP,UAAA+R,wBAAR,WACEjS,KAAKiQ,gBAAgB/L,QAAO,SAAC0P,GAAO,OAAAA,EAAIxB,gBACxCpS,KAAKiQ,gBAAkB,IAGzBzQ,OAAAwG,eAAYyJ,EAAAvP,UAAA,QAAK,KAAjB,WACE,OAAOF,KAAK8Q,QAAU9Q,KAAK8Q,OAAO,IAAM9Q,KAAK8Q,OAAO,GAAG/N,4DArP1D8Q,EAAAA,UAAS7P,KAAA,CAAC,CACT8P,SAAU,cACVC,SAAU,wSAYVC,UAAW,CAAClI,gDArBLA,SACAjE,SAJkIoM,EAAAA,0CA0FtIC,EAAAA,UAASlQ,KAAA,CAAC,sBAzFgBmQ,EAAAA,mBAAkBC,WAAA,CAAA,CAAA/K,KA0F5CgL,EAAAA,4CAhEFC,EAAAA,qBAEAA,EAAAA,sBAUAA,EAAAA,uBAIAA,EAAAA,2BAIAC,EAAAA,wBACAC,EAAAA,UAASxQ,KAAA,CAAC,cAiNbyL,kBCvNE,SAAAgF,EACU1I,EACA2I,EACAC,EACAC,EAEuBC,GALvB7U,KAAA+L,aAAAA,EACA/L,KAAA0U,SAAAA,EACA1U,KAAA2U,SAAAA,EACA3U,KAAA4U,WAAAA,EA1BV5U,KAAA8U,iBAAkB,EAcR9U,KAAA8P,YAAiC,IAAIC,EAAAA,aAGvC/P,KAAA+U,cAA4B,GAC5B/U,KAAAgV,cAAuB,GACvBhV,KAAAiV,eAA6B,GAC7BjV,KAAAkV,kBAAmB,EAUzBlV,KAAK8U,gBAAsC,OAApBD,EAsK3B,OAlMErV,OAAAwG,eAAayO,EAAAvU,UAAA,QAAK,KAAlB,SAAmBmB,GACjBrB,KAAK8U,iBAAmBlL,QAAQC,KAAK,wCAAwC7J,KAAKC,YAAY8E,KAAI,4FAGpGvF,OAAAwG,eAAayO,EAAAvU,UAAA,OAAI,KAAjB,SAAkBgH,GAChBlH,KAAK8U,iBAAmBlL,QAAQC,KAAK,uCAAuC7J,KAAKC,YAAY8E,KAAI,4FAGnGvF,OAAAwG,eAAayO,EAAAvU,UAAA,UAAO,KAApB,SAAqB0I,GACnB5I,KAAK8U,iBAAmBlL,QAAQC,KAAK,0CAA0C7J,KAAKC,YAAY8E,KAAI,4FAsBtG0P,EAAAvU,UAAAiV,mBAAA,WACEnV,KAAKoV,YAAY,qBAGnBX,EAAAvU,UAAAmV,sBAAA,WACErV,KAAKoV,YAAY,wBAGnBX,EAAAvU,UAAAoV,gBAAA,WACEtV,KAAKoV,YAAY,kBAGnBX,EAAAvU,UAAAqV,mBAAA,WACEvV,KAAKoV,YAAY,qBAGnBX,EAAAvU,UAAAyR,UAAA,WACE3R,KAAKoV,YAAY,WACbpV,KAAKkV,kBAAqBlV,KAAKmC,OAASnC,KAAKmC,MAAMyG,SACrD5I,KAAKwV,UAITf,EAAAvU,UAAAuV,SAAA,WACEzV,KAAKoV,YAAY,WAGnBX,EAAAvU,UAAA0R,YAAA,SAAYC,GACV7R,KAAKoV,YAAY,YAAavD,IAGhC4C,EAAAvU,UAAAiS,YAAA,WACEnS,KAAK0V,UAAU1V,KAAKmC,OACpBnC,KAAK+U,cAAc7Q,QAAO,SAACkO,GAAe,OAAAA,MAC1CpS,KAAKiV,eAAe/Q,QAAO,SAACkO,GAAe,OAAAA,MAC3CpS,KAAKoV,YAAY,cAGXX,EAAAvU,UAAAyV,YAAR,SAAoBC,EAAgCjJ,EAA2B3E,GAA/E,IAAAoB,EAAApJ,KAOE,QAP6E,IAAAgI,IAAAA,EAAA,IACzEhI,KAAK4V,eAAiBA,IACxB5V,KAAK0V,UAAU1V,KAAKmC,OACpBnC,KAAK4V,aAAaC,QAClB7N,EAAWhI,KAAKmC,MAAQnC,KAAKmC,MAAM6F,SAAW,IAG5CA,GAA8B,EAAlBA,EAASrH,OAAY,CAC7B,IAAA+G,EAAA/F,EAAAqG,GAACyB,EAAA/B,EAAA,GAASoO,EAAApO,EAAAhF,MAAA,GACRsI,EAAAhL,KAAA+L,aAAAT,WAAA7B,GAAAuB,UAEF+K,EAAMH,EAAaI,gBAA8BhW,KAAK2U,SAASxJ,wBAAwBH,IAC7FhL,KAAKiW,mBAAmBF,EAAKpJ,GAC7BrG,EAA+ByP,EAAIhL,SAAU,iBAAgB,SAAGrD,OAAEf,EAAAe,EAAAf,YAAaI,EAAAW,EAAAX,cAAeL,EAAAgB,EAAAhB,aAC5F,GAAIA,EAAc,CAChB,GAAIK,GAAiBA,EAA2B,cAAML,EAA0B,YAC9E,WAGIwP,EAAUnP,EAAgBA,EAAcoP,SAAW,KACrDD,IAAYA,EAAQE,UACtB1P,EAAa2P,OAAOH,GAEpB9M,EAAKuM,YAAYjP,EAAciG,EAAGmJ,IAGnCnP,GAAeoP,EAAIO,kBAAkBC,wBAGrC,GAAI5J,GAAKA,EAAEtD,KAAM,CACd2B,EAAAhL,KAAA+L,aAAA1B,QAAAsC,EAAAtD,MAAA2B,UAAA,IACFmC,EAAMyI,EAAaI,gBAA8BhW,KAAK2U,SAASxJ,wBAAwBH,IAC7FhL,KAAKiW,mBAAmB9I,EAAKR,KAIzB8H,EAAAvU,UAAAkV,YAAR,SAAoBrQ,EAAc8M,GAChC,GAAI7R,KAAKmC,OAASnC,KAAKmC,MAAMqU,OAASxW,KAAKmC,MAAMqU,MAAMzR,MAChD8M,GAAWA,EAAQ1P,OAAO,KACvBP,EAAI5B,KAAKmC,MAAMqU,MAAMzR,GAAM/E,KAAKmC,OACtC,GAAIyC,EAAAA,aAAahD,KAAyE,IAAnE,CAAC,SAAU,mBAAoB,iBAAiBZ,QAAQ+D,GAAc,KACrF0R,EAAM7U,EAAE6O,YACdzQ,KAAKiV,eAAenT,KAAI,WAAO,OAAA2U,EAAIrE,iBAKrCpS,KAAKmC,OAASnC,KAAKmC,MAAMuU,WAAa1W,KAAKmC,MAAMuU,UAAU3R,IAC7D/E,KAAKmC,MAAMuU,UAAU3R,GACnB/E,KAAKmC,MAAM+E,KACXlH,KAAKmC,MACLnC,KAAKmC,MAAMkB,MACXrD,KAAKmC,MAAMyG,SAIF,cAAT7D,GAAwB8M,EAAQ1P,QAClCnC,KAAK0V,UAAU7D,EAAQ1P,MAAM4E,eAC7B/G,KAAKwV,WAIDf,EAAAvU,UAAA+V,mBAAR,SAAgD9I,EAAsBhL,GACpEnC,KAAKgV,cAAclT,KAAKqL,GACxBhL,EAAM+K,eAAepL,KAAKqL,GAC1B3N,OAAOa,OAAO8M,EAAIpC,SAAU,CAAE5I,MAAKA,KAG7BsS,EAAAvU,UAAAsV,OAAR,WAAA,IAAApM,EAAApJ,KACOA,KAAKmC,QAKLnC,KAAKmC,MAAMyG,SAMhB5I,KAAKkV,kBAAmB,EACxBlV,KAAK+U,cAAc7Q,QAAO,SAACkO,GAAe,OAAAA,MAC1CpS,KAAK+U,cAAgB,CACnBzO,EAAatG,KAAKmC,MAAO,OAAM,SAAGuF,OAAEf,EAAAe,EAAAf,YAAaD,EAAAgB,EAAAhB,aAC1C0C,EAAK2C,aAAa1D,OAAOE,WAMxB7B,GACF0C,EAAKwM,aAAaC,QACdzM,EAAKjH,MAAMwU,WACbvN,EAAKsL,SAASkC,gBAAgBxN,EAAKwL,WAAWzD,cAAe,WAG/D/H,EAAKuM,YAAYvM,EAAKwM,aAAcxM,EAAKjH,OACrCiH,EAAKjH,MAAMwU,WACbvN,EAAKsL,SAASmC,aAAazN,EAAKwL,WAAWzD,cAAe,QAAS/H,EAAKjH,MAAMwU,aAblFhQ,GAAeyC,EAAKuM,YAAYvM,EAAKwM,aAAcxM,EAAKjH,SACnDwE,GAAgBA,GAAeD,IAClC0C,EAAKsL,SAASoC,SAAS1N,EAAKwL,WAAWzD,cAAe,UAAWzK,EAAe,OAAS,OAgB/FJ,EAAatG,KAAKmC,MAAO,YAAW,SAAGuF,OAAEf,EAAAe,EAAAf,YAAaD,EAAAgB,EAAAhB,gBAEhDC,GAAgBA,GAAeD,IAC5B0C,EAAK2C,aAAa1D,OAAOE,aAAmC,IAApBa,EAAKjH,MAAM4U,MAExD3N,EAAKsL,SAASmC,aAAazN,EAAKwL,WAAWzD,cAAe,QAASzK,OAjCvE1G,KAAKkV,kBAAmB,IAuCpBT,EAAAvU,UAAAwV,UAAR,SAAkBvT,GAAlB,IAAAiH,EAAApJ,KACMmC,IACEA,EAAM+K,eACR/K,EAAM+K,eAAiB/K,EAAM+K,eAAe8J,OAAM,SAAC7J,GAAO,OAAqC,IAArC/D,EAAK4L,cAAchU,QAAQmM,KAErFlH,EAAiBjG,KAAKmC,MAAO,iBAAkB,KAInDnC,KAAKgV,cAAgB,wBAzMxBnB,EAAAA,UAAS7P,KAAA,CAAC,CACT8P,SAAU,eACVC,SAAU,sFATHlM,SAHwGoP,EAAAA,iBAD1C1J,EAAAA,gCACqD2J,EAAAA,8CA6CvHhD,EAAAA,UAASlQ,KAAA,CAAC,wDA9BZsQ,EAAAA,qBAIAA,EAAAA,oBAIAA,EAAAA,uBAIAA,EAAAA,2BAIAC,EAAAA,6BAEAC,EAAAA,UAASxQ,KAAA,CAAC,YAAW,CAASmT,KAAMC,EAAAA,iBAAkBC,UAAQ,OAoLjE5C,kBCzKE,SAAA6C,EACU5C,EACAE,EACU2C,GAFVvX,KAAA0U,SAAAA,EACA1U,KAAA4U,WAAAA,EA/BF5U,KAAAwX,kBAAyB,GACzBxX,KAAAyX,aAAYzV,EACfW,EAAiB,CACpB,WACA,cACA,WACA,WACA,SAQM3C,KAAA0X,SAAW,CACjBC,UAAW,GACXC,OAAQ,CACN,QACA,QACA,UACA,aAaF5X,KAAK6X,SAAWN,EAmJpB,OA5JE/X,OAAAwG,eAAIsR,EAAApX,UAAA,KAAE,KAAN,WAAkC,OAAOF,KAAKmC,MAAMwM,iBAAmB,oCAEvEnP,OAAAwG,eAAYsR,EAAApX,UAAA,oBAAiB,KAA7B,WAAgD,OAAQF,KAAKmC,OAASnC,KAAKmC,MAAoB,cAAM,oCAUrGmV,EAAApX,UAAA0R,YAAA,SAAYC,GAAZ,IAAAzI,EAAApJ,KACM6R,EAAQ1P,QACVnC,KAAKmC,MAAM4C,MAAQ/E,KAAK6W,aAAa,OAAQ7W,KAAKmC,MAAM4C,MACxD/E,KAAK0X,SAASC,UAAUzT,QAAO,SAAC4T,GAAY,OAAAA,MAC5C9X,KAAK0X,SAASE,OAAO1T,QAAO,SAAC6T,GACvB3O,EAAK4O,IAAM5O,EAAK4O,GAAGD,IACrB3O,EAAKsO,SAASC,UAAU7V,KACtBsH,EAAKsL,SAASuD,OACZ7O,EAAKwL,WAAWzD,cAChB4G,EAAS,SACRhX,GAAM,OAAAqI,EAAK4O,GAAGD,GAAW3O,EAAKjH,MAAOpB,QAM1Cf,KAAKgY,IAAMhY,KAAKgY,GAAGE,YACrB5R,EAAatG,KAAKgY,GAAI,aAAY,SAAGtQ,OAAEhB,EAAAgB,EAAAhB,aAAcK,EAAAW,EAAAX,cAC/CA,GACFvH,OAAOkG,KAAKqB,GAAe7C,QAAO,SAACiU,GAAQ,OAAA/O,EAAKwN,gBAAgBuB,KAG9DzR,GACFlH,OAAOkG,KAAKgB,GAAcxC,QAAO,SAACiU,GACN,MAAtBzR,EAAayR,IACf/O,EAAKyN,aAAasB,EAAMzR,EAAayR,QAO/CnY,KAAKoY,iBAAiBvG,EAAQ1P,MAAM4E,eACpC/G,KAAKqY,iBAAiBxG,EAAQ1P,MAAMuE,cACE,IAAlC1G,KAAKsY,kBAAkB3X,UACxBX,KAAKuY,IAAMvY,KAAKmC,MAAMoW,IAAMvY,KAAK6W,aAAa,KAAM7W,KAAKmC,MAAMoW,IAChEjS,EAAatG,KAAKmC,MAAO,QAAO,SAAGuF,OAAEhB,EAAAgB,EAAAhB,aACnC0C,EAAKoP,YAAY9R,OAKnBmL,EAAQ0G,IACVvY,KAAK6W,aAAa,KAAM7W,KAAKuY,KAYjCjB,EAAApX,UAAAyR,UAAA,WAAA,IAAAvI,EAAApJ,KACEA,KAAKyX,aAAavT,QAAO,SAACiU,OAClB1W,EAAQ2H,EAAK4O,GAAGG,GAEpB/O,EAAKoO,kBAAkBW,KAAU1W,GAC5B2H,EAAK4O,GAAGE,YAAe9O,EAAK4O,GAAGE,WAAWrY,eAAesY,EAAKM,kBAEnErP,EAAKoO,kBAAkBW,GAAQ1W,IACR,IAAVA,EACX2H,EAAKyN,aAAasB,GAAgB,IAAV1W,EAAiB0W,EAAO,GAAG1W,GAEnD2H,EAAKwN,gBAAgBuB,OAM7Bb,EAAApX,UAAAiS,YAAA,WACEnS,KAAK0X,SAASC,UAAUzT,QAAO,SAAC4T,GAAY,OAAAA,MAC5C9X,KAAKoY,iBAAiBpY,KAAKmC,QAG7BmV,EAAApX,UAAAsY,YAAA,SAAY/W,GAAZ,IAAA2H,EAAApJ,KACQ0Y,EAAU1Y,KAAKsY,kBAAoBtY,KAAKsY,kBAAkB,GAAK,KACrE,GAAKI,GAAYA,EAAQvH,cAAcwH,MAAvC,KAIMC,IAAc5Y,KAAK6X,SAASgB,eAC7B7Y,KAAKsY,kBACLQ,KAAI,SAAEpR,OAAEyJ,EAAAzJ,EAAAyJ,cAAoB,OAAA/H,EAAKyO,SAASgB,gBAAkB1H,GAAiBA,EAAc4H,SAAS3P,EAAKyO,SAASgB,iBAEnHpX,IAAUmX,EACZF,EAAQvH,cAAcwH,SACZlX,GAASmX,GACnBF,EAAQvH,cAAc6H,SAI1B1B,EAAApX,UAAA+Y,QAAA,SAAQC,GACNlZ,KAAKmC,MAAiB,WAAI,EACtBnC,KAAKgY,GAAGW,OACV3Y,KAAKgY,GAAGW,MAAM3Y,KAAKmC,MAAO+W,IAI9B5B,EAAApX,UAAAiZ,OAAA,SAAOD,GACLlZ,KAAKmC,MAAiB,WAAI,EACtBnC,KAAKgY,GAAGgB,MACVhZ,KAAKgY,GAAGgB,KAAKhZ,KAAKmC,MAAO+W,IAI7B5B,EAAApX,UAAAkZ,SAAA,SAASF,GACHlZ,KAAKgY,GAAGqB,QACVrZ,KAAKgY,GAAGqB,OAAOrZ,KAAKmC,MAAO+W,GAGzBlZ,KAAKmC,MAAMsG,aACbzI,KAAKmC,MAAMsG,YAAY6Q,eAInBhC,EAAApX,UAAAmY,iBAAR,SAAyB1L,GAClBA,IAIDA,EAAgB,eAAqD,IAAhDA,EAAgB,aAAE3L,QAAQhB,KAAK4U,YACtDjI,EAAgB,aAAE7K,KAAK9B,KAAK4U,YAE5B3O,EAAiB0G,EAAG,eAAgB,CAAC3M,KAAK4U,eAItC0C,EAAApX,UAAAkY,iBAAR,SAAyBzL,OACjB4M,EAAQ5M,GAAKA,EAAgB,aAAI3M,KAAKsY,kBAAkBtX,QAAQhB,KAAK4U,aAAe,GAC3E,IAAX2E,GACFvZ,KAAKmC,MAAoB,aAAE6E,OAAOuS,EAAO,IAIrCjC,EAAApX,UAAA2W,aAAR,SAAqBsB,EAAc1W,GACjCzB,KAAK0U,SAASmC,aAAa7W,KAAK4U,WAAWzD,cAAegH,EAAM1W,IAG1D6V,EAAApX,UAAA0W,gBAAR,SAAwBuB,GACtBnY,KAAK0U,SAASkC,gBAAgB5W,KAAK4U,WAAWzD,cAAegH,wBAhMhEqB,EAAAA,UAASxV,KAAA,CAAC,CACT8P,SAAU,qBACV2F,KAAM,CACJC,UAAW,kBACXC,SAAU,iBACVC,WAAY,iEAViD3C,EAAAA,iBAA7CC,EAAAA,8CAkDf2C,EAAAA,OAAM7V,KAAA,CAAC8V,EAAAA,8CApCTxF,EAAAA,MAAKtQ,KAAA,CAAC,gCACNsQ,EAAAA,SAwLHgD,KCnMAyC,EAAA,WAAA,SAAAA,KA2BA,OAvBEva,OAAAwG,eACI+T,EAAA7Z,UAAA,QAAK,KADT,WACc,OAAOF,KAAKmC,MAAMkB,WAChC,SAAUhC,GAAUuI,QAAQC,KAAK,wCAAwC7J,KAAKC,YAAY8E,KAAI,4FAE9FvF,OAAAwG,eACI+T,EAAA7Z,UAAA,OAAI,KADR,WACa,OAAmBF,KAAKmC,MAAMY,OAAkB,iBAC7D,SAASmE,GAAQ0C,QAAQC,KAAK,uCAAuC7J,KAAKC,YAAY8E,KAAI,4FAE1FvF,OAAAwG,eACI+T,EAAA7Z,UAAA,UAAO,KADX,WACgB,OAAOF,KAAKmC,MAAMyG,aAClC,SAAYA,GAAyBgB,QAAQC,KAAK,0CAA0C7J,KAAKC,YAAY8E,KAAI,4FAEjHvF,OAAAwG,eAAI+T,EAAA7Z,UAAA,MAAG,KAAP,WAAY,OAAOF,KAAKmC,MAAMC,qCAE9B5C,OAAAwG,eAAI+T,EAAA7Z,UAAA,cAAW,KAAf,WAAoB,OAAOF,KAAKmC,MAAMsG,6CAEtCjJ,OAAAwG,eAAI+T,EAAA7Z,UAAA,KAAE,KAAN,WAAW,OAAOF,KAAKmC,MAAMwM,iBAAmB,oCAEhDnP,OAAAwG,eAAI+T,EAAA7Z,UAAA,YAAS,KAAb,WAA2B,OAAOF,KAAK4I,QAAQJ,UAAUxI,uCAEzDR,OAAAwG,eAAI+T,EAAA7Z,UAAA,KAAE,KAAN,WAAmB,OAAOF,KAAKmC,MAAMoW,oCAErC/Y,OAAAwG,eAAI+T,EAAA7Z,UAAA,YAAS,KAAb,WAAkB,OAAOF,KAAK4I,QAAQiE,WAAa,mEAzBlDyH,EAAAA,qBAGAA,EAAAA,oBAIAA,EAAAA,uBAIAA,EAAAA,SAeHyF,EA3BA,iBAiCE,SAAAC,IAAA,IAAA5Q,EACE6Q,EAAArZ,KAAAZ,OAAOA,YACP4J,QAAQC,KAAK,qFAEjB,OALoCqQ,EAAAA,EAAAA,GAKpCF,GALoCD,GCxBpCI,EAAA,SAAAF,GAUE,SAAAE,EAA+CC,GAA/C,IAAAhR,EACE6Q,EAAArZ,KAAAZ,OAAOA,YALToJ,EAAAqB,eAAsB,CACpBvE,aAAc,IAMVkU,aAAmBtO,GACrBlC,QAAQC,KAAK,8CAA8CT,EAAKnJ,YAAY8E,KAAI,wDA+CtF,OA5D8FmV,EAAAA,EAAAA,GAC5F1a,OAAAwG,eAAImU,EAAAja,UAAA,cAAW,KAAf,WACE,OAAOF,KAAKmC,MAAiB,6CAe/BgY,EAAAja,UAAAwM,WAAA,SAAWvK,GACT,IAAKA,EAAMsG,aAAetG,EAAMC,IAAK,KAC7BsL,EAAUa,EAAYpM,GAC5BqM,EAAgBrM,EAAOuL,GAAoB,IAAIG,EAAAA,UAAU,GAAI,CAAEoF,SAAU9Q,EAAM6Q,aAAaC,YAG9F9Q,EAAMgK,WAAahK,EAAMgK,YAAc,OAEjCxL,EAASwB,EAAMkB,MAAQlB,EAAMkB,MAAM1C,OAAS,EAClD,GAAIwB,EAAMgK,WAAWxL,OAASA,EAC5B,IAAK,IAAIH,EAAI2B,EAAMgK,WAAWxL,OAAS,EAAQA,GAALH,IAAeA,EACvDiN,EAAkBtL,EAAMgK,WAAW3L,IACnC2B,EAAMgK,WAAWnF,OAAOxG,EAAG,GAI/B,IAASA,EAAI2B,EAAMgK,WAAWxL,OAAQH,EAAIG,EAAQH,IAAK,KAC/CmM,EAACvM,EAAA,GAAQqD,EAAMtB,EAAMkY,YAAW,CAAEjY,IAAK,GAAG5B,IAChD2B,EAAMgK,WAAWrK,KAAK6K,KAI1BwN,EAAAja,UAAAoa,IAAA,SAAI9Z,EAAY+Z,EAAoB7S,OAAE4R,QAAA,IAAA5R,EAAA,CAAA4R,aAAA,GAAA5R,GAAA4R,YACpC9Y,EAAI6D,EAAkB7D,GAAKR,KAAKmC,MAAMgK,WAAWxL,OAASH,EACrDR,KAAKqD,OACRT,EAAiB5C,KAAKmC,MAAO,IAG/BnC,KAAKqD,MAAM2D,OAAOxG,EAAG,EAAG+Z,EAAe9W,EAAM8W,GAAgBvX,WAEtDhD,KAAY,QAAEsM,YAAW,GAChCgN,GAAetZ,KAAKyI,YAAY6Q,eAGlCa,EAAAja,UAAAsa,OAAA,SAAOha,EAAWkH,OAAE4R,QAAA,IAAA5R,EAAA,CAAA4R,aAAA,GAAA5R,GAAA4R,YAClBtZ,KAAKqD,MAAM2D,OAAOxG,EAAG,GACrBiN,EAAkBzN,KAAKmC,MAAMgK,WAAW3L,IAAI,GAC5CR,KAAKmC,MAAMgK,WAAWnF,OAAOxG,EAAG,GAChCR,KAAKmC,MAAMgK,WAAWjI,QAAO,SAAEyI,EAAGvK,GAAQ,OAAAuK,EAAEvK,IAAM,GAAGA,IAE9CpC,KAAY,QAAEsM,YAAW,GAChCgN,GAAetZ,KAAKyI,YAAY6Q,mCA3DnCE,EAAAA,UAASxV,KAAA,CAAC,CAAE8P,SAAU,6DARdhI,EAAiBsI,WAAA,CAAA,CAAA/K,KAkBXwQ,EAAAA,OAAM7V,KAAA,CAAC2D,IAAa,CAAA0B,KAAGgL,EAAAA,cAmDtC8F,EA7DA,CAC8FJ,GCT9FU,EAAA,SAAAR,GAAA,SAAAQ,mDAGA,OAH4FP,EAAAA,EAAAA,2CAEzF1F,EAAAA,UAASxQ,KAAA,CAAC,iBAAgB,CAASmT,KAAMC,EAAAA,iBAAkBC,UAAQ,OACtEoD,EAHA,CAA4FV,iBCD5F,SAAAW,IAAA,IAAAtR,EAAA,OAAA6Q,GAAAA,EAAApZ,MAAAb,KAAAU,YAAAV,YAWEoJ,EAAAqB,eAAiB,CACfvE,aAAc,MAElB,OAJiCgU,EAAAA,EAAAA,uBAVhCrG,EAAAA,UAAS7P,KAAA,CAAC,CACT8P,SAAU,eACVC,SAAU,wHAIV0F,KAAM,CACJkB,UAAW,uCAOfD,GAJiCX,GCbjCa,EAAA,WAgBE,SAAAA,EAAoB7O,GAAA/L,KAAA+L,aAAAA,EAgDtB,OA9CE6O,EAAA1a,UAAA0R,YAAA,WAAA,IAAAxI,EAAApJ,KACEA,KAAK6a,cAAgB7a,KAAKmC,MAAMsG,YAAYqS,cAAc1K,KACxD2K,EAAAA,UAAU,MACV1K,EAAAA,UAAS,WAAO,OAAAzL,EAAAA,aAAawE,EAAK4R,cAC9B5R,EAAK4R,aACLC,EAAAA,GAAG7R,EAAK4R,kBAKhBxb,OAAAwG,eAAI4U,EAAA1a,UAAA,eAAY,KAAhB,eACQgb,EAAYlb,KAAKmC,MAAMsG,YAC7B,IAAK,IAAI1G,KAASmZ,EAAUC,OAC1B,GAAID,EAAUC,OAAOtb,eAAekC,GAAQ,KACtCmI,EAA8ClK,KAAK+L,aAAaP,oBAAoBzJ,GAExF,GAAIwB,EAAS2X,EAAUC,OAAOpZ,IAAS,CACrC,GAAImZ,EAAUC,OAAOpZ,GAAOqZ,UAC1B,OAGEF,EAAUC,OAAOpZ,GAAOmI,UAC1BA,EAAUgR,EAAUC,OAAOpZ,GAAOmI,SAgBtC,OAZIlK,KAAKmC,MAAM4G,YAAc/I,KAAKmC,MAAM4G,WAAWd,UAAYjI,KAAKmC,MAAM4G,WAAWd,SAASlG,KAC5FmI,EAAUlK,KAAKmC,MAAM4G,WAAWd,SAASlG,IAGvC/B,KAAKmC,MAAM4F,YAAc/H,KAAKmC,MAAM4F,WAAWhG,IAAU/B,KAAKmC,MAAM4F,WAAWhG,GAAOmI,UACxFA,EAAUlK,KAAKmC,MAAM4F,WAAWhG,GAAOmI,SAGrClK,KAAKmC,MAAMkZ,iBAAmBrb,KAAKmC,MAAMkZ,gBAAgBtZ,IAAU/B,KAAKmC,MAAMkZ,gBAAgBtZ,GAAOmI,UACvGA,EAAUlK,KAAKmC,MAAMkZ,gBAAgBtZ,GAAOmI,SAGvB,mBAAZA,EACFA,EAAQgR,EAAUC,OAAOpZ,GAAQ/B,KAAKmC,OAGxC+H,wDArDd2J,EAAAA,UAAS7P,KAAA,CAAC,CACT8P,SAAU,4BACVC,SAAU,8BACVuH,gBAAiBC,EAAAA,wBAAwBC,oDATlC3T,oCAYNyM,EAAAA,SAmDHsG,EAhEA,iBCuBE,SAAAa,EAAoBC,GAApB,IAAAtS,EACE6Q,EAAArZ,KAAAZ,OAAOA,YADWoJ,EAAAsS,UAAAA,EADZtS,EAAAuS,UAAY,CAAE3K,QAAS,KAAM+C,SAAU,QAIjD,OAlBwCmG,EAAAA,EAAAA,GACtC1a,OAAAwG,eAAIyV,EAAAvb,UAAA,WAAQ,KAAZ,WAUE,OATIF,KAAKmC,OAAUnC,KAAKmC,MAAM4R,WAAa/T,KAAK2b,UAAU5H,WACxD/T,KAAK2b,UAAY,CACf5H,SAAU/T,KAAKmC,MAAM4R,SACrB/C,QAAShR,KAAKgY,GAAG4D,SACb5b,KAAK0b,UAAUG,wBAAwB7b,KAAKmC,MAAM4R,UAClD/T,KAAKmC,MAAM4R,WAIZ/T,KAAK2b,UAAU3K,6DAfzB6C,EAAAA,UAAS7P,KAAA,CAAC,CACT8P,SAAU,kBACVC,SAAU,kFALH+H,EAAAA,gBAyBTL,GAlBwC1B,GCYxC,SAAgBgC,EAAeC,EAAyCC,EAAcC,GACpF,OAAIF,aAAsBG,SACjBH,EAAWnb,MAAMob,EAASC,KAE1BF,ECfX,iBAAA,SAAAI,KAoUA,OAnUEA,EAAAlc,UAAAuM,YAAA,SAAYtK,GAAZ,IAAAiH,EAAApJ,KACE,IAAImC,EAAMY,SAAUZ,EAAMyG,QAAQ2D,YAAlC,KAII8P,GAAc,EAClBla,EAAMyG,QAAQ2D,YAAW,SAAII,EAAG2P,GACzBD,IACHA,GAAc,EACdpV,EACE0F,EAAElE,YAAW,WACP,OAAAW,EAAKmT,WAAW5P,EAAG2P,KAE3BD,GAAc,MAKpBD,EAAAlc,UAAA0M,aAAA,SAAazK,GAAb,IAAAiH,EAAApJ,KACE,GAAKmC,EAAMY,SAAUZ,EAAMqa,sBAA3B,CAOA,GAFAvW,EAAiB9D,EAAO,wBAAyB,IAE7CA,EAAMsa,qBAAsB,gBACnBra,OACHsa,EAAqBva,EAAMsa,qBAAqBra,GAEtD,GAAkC,iBAAvBsa,GAAmChY,EAAWgY,GACvDva,EAAMqa,sBAAsBpa,GAAO,CACjC4Z,WAAYW,EAAKC,gBACfxa,EACAsa,EACQ,6BAARta,GAAsCD,EAAMY,OAAO0Z,sBAAwBta,EAAMY,OAAO0Z,qBAAqB5c,eAAe,uCAClH,OAAAsC,EAAMY,OAAO4L,gBAAgBC,UACnC5L,YAGI,6BAARZ,GACF5C,OAAOwG,eAAe7D,EAAMqa,sBAAsBpa,GAAM,kBAAmB,CACzE2D,IAAG,WAAQ,OAAA5D,EAAMwM,gBAAgBC,UACjChI,IAAG,aACHT,YAAY,EACZE,cAAc,SAGb,GAAIqW,aAA8BG,EAAAA,WAAY,KAC7CC,EAAS,WAAS,OAAA,EACrBrM,UAAS,SAAClL,GACT6D,EAAK2T,aAAa5a,EAAOC,EAAKmD,GAC1BpD,EAAMyG,SAAWzG,EAAMyG,QAAQqE,eACjC9K,EAAMyG,QAAQqE,cAAc9K,MAI9B6a,EAA6BF,IAC3BG,EAAS9a,EAAMqU,MAAM0G,OAC3B/a,EAAMqU,MAAM0G,OAAM,WAIhB,OAHqB,OAAjBF,IACFA,EAAeF,KAEVG,GAAUA,EAAO9a,QAGpBgb,EAAYhb,EAAMqU,MAAM4G,UAC9Bjb,EAAMqU,MAAM4G,UAAS,WACnBD,GAAaA,EAAUhb,GACvB6a,EAAa5K,cACb4K,EAAe,eA3CrB,IAAK,IAAM5a,KAAOD,EAAMsa,uBAAbra,GAiDTD,EAAMkb,uBAEDlb,EAAM4U,KAEb5U,EAAMkb,eAAiBrd,KAAK4c,gBAC1B,OACAza,EAAMkb,eAAc,WAGlB,QADIva,EAAOX,EAAMY,OACVD,EAAKC,SAAWD,EAAKiU,MAC1BjU,EAAOA,EAAKC,OAGd,OAAOD,EAAKiU,QAIhBzQ,EAAanE,EAAO,OAAM,SAAGuF,OAAEhB,EAAAgB,EAAAhB,aAAcC,EAAAe,EAAAf,YAC3CxE,EAAMgN,MAAQzI,IACTC,GAAgBA,IAAgC,IAAjBD,IAClCvE,EAAMyG,QAAQoE,sBAAsBlL,KAAKK,OAMzCia,EAAAlc,UAAA0c,gBAAR,SAAwBhX,EAAcoW,EAAYsB,GAChD,OAAA,eAAQ,IAAAtZ,EAAA,GAAAC,EAAA,EAAAA,EAAAvD,UAAAC,OAAAsD,IAAAD,EAAAC,GAAAvD,UAAAuD,GACN,IASE,MAR0B,iBAAf+X,IACTA,EDpHV,SAAgBuB,EAAqBvB,EAAoBwB,GACvD,IAKE,OAJ0C,IAAtCxB,EAAWhb,QAAQ,eACrB4I,QAAQC,KAAK,wGAGRsS,SAAQtb,WAAA,EAAAmB,EAAIwb,EAAQ,CAAE,UAAUxB,EAAU,OACjD,MAAOja,GACP6H,QAAQ7H,MAAMA,IC4GKwb,CAAqBvB,EAAY,CAAC,QAAS,YAAa,WAG7C,mBAAfA,IACTA,EAAU,WAAS,QAAEA,IAGfsB,GAAoBA,KAAuBtB,EAAUnb,WAAA,EAAAmB,EAAIgC,IACjE,MAAOjC,GAEP,MADAA,EAAMmI,QAAU,+BAA+BtE,EAAI,MAAM7D,EAAMmI,QACzDnI,KAKJqa,EAAAlc,UAAAqc,WAAR,SAAmBpa,EAA+Bma,GAAlD,IAAAlT,EAAApJ,UAAkD,IAAAsc,IAAAA,GAAA,OAC1CmB,EAAezd,KAAKuM,YAAYpK,EAAOma,GAE7Cna,EAAMyG,QAAQoE,sBACX0Q,KAAI,SAAC/Q,GAAK,OAAAA,EAAEoK,MAAQ,EAAI,IACxB7S,QAAO,SAACyI,GAAK,OAAAvD,EAAKuU,kBAAkBhR,IAAKA,EAAEoK,MAAOuF,KAErDna,EAAMyG,QAAQoE,sBAAwB,GAClCyQ,IACFzd,KAAKuc,WAAWpa,GACZA,EAAMyG,SAAWzG,EAAMyG,QAAQqE,eACjC9K,EAAMyG,QAAQqE,cAAc9K,KAK1Bia,EAAAlc,UAAAqM,YAAR,SAAoBpK,EAA+Bma,GAAnD,IAAAlT,EAAApJ,UAAmD,IAAAsc,IAAAA,GAAA,OAC7CmB,GAAe,EAiBnB,OAhBAtb,EAAMgK,WAAWjI,QAAO,SAACyI,GAClBA,EAAE/D,UAIPQ,EAAKwU,2BAA2BjR,EAAG2P,KAAiBmB,GAAe,GAC/DrU,EAAKyU,2BAA2BlR,EAAG2P,KACrCna,EAAMyG,QAAQoE,sBAAsBlL,KAAK6K,GACzC8Q,GAAe,GAGb9Q,EAAER,YAAoC,EAAtBQ,EAAER,WAAWxL,QAC/ByI,EAAKmD,YAAYI,EAAG2P,KAAiBmB,GAAe,MAIjDA,GAGDrB,EAAAlc,UAAA0d,2BAAR,SAAmCzb,EAA+Bma,GAChE,IAAKna,IAAUA,EAAMqa,sBACnB,OAAO,MAGLnP,GAAe,EACboP,EAAuBta,EAAMqa,sBAEnC,IAAK,IAAMpa,KAAOqa,EAAsB,KAClCqB,EAAkB/B,EAAeU,EAAqBra,GAAK4Z,WAAY,CAAE7Z,MAAKA,GAAI,CAACA,EAAMkB,MAAOlB,EAAMyG,QAAQiE,UAAW1K,EAAOma,IACxH,6BAARla,IACF0b,IAAoBA,IAIpBxB,GACEG,EAAqBra,GAAK0b,kBAAoBA,KAE1Cva,EAASua,KAAoBpZ,EAAWoZ,IAExCpZ,EAAWoZ,IACP,GAAKrB,EAAqBra,GAAK0b,iBAAoB,GAAKA,GAE3DlZ,EAAAA,aAAakZ,IACbC,KAAKC,UAAUF,KAAqBC,KAAKC,UAAUvB,EAAqBra,GAAK0b,qBAIpFzQ,GAAe,EACfoP,EAAqBra,GAAK0b,gBAAkBA,EAC5C9d,KAAK+c,aAAa5a,EAAOC,EAAK0b,IAIlC,OAAOzQ,GAGD+O,EAAAlc,UAAA2d,2BAAR,SAAmC1b,EAA+Bma,GAChE,IAAKna,GAASkC,EAAkBlC,EAAMkb,gBACpC,OAAO,MAGHY,IAAkClC,EACtC5Z,EAAMkb,eACN,CAAElb,MAAKA,GACP,CAACA,EAAMkB,MAAOlB,EAAMyG,QAAQiE,UAAW1K,EAAOma,IAE5CjP,GAAe,EAQnB,OAPI4Q,IAAyB9b,EAAM4U,MAAQuF,KACzCjP,GAAe,EAEflL,EAAM4U,KAAOkH,EACb9b,EAAMwM,gBAAgBuP,OAASD,GAG1B5Q,GAGD+O,EAAAlc,UAAAie,iBAAR,SAAyBhc,EAA0BV,GAAnD,IAAA2H,EAAApJ,KACMmC,EAAMgK,YACRhK,EAAMgK,WACH6K,OAAM,SAACrK,GAAK,OAACA,EAAE8P,uBAAyB9P,EAAE8P,qBAAqB5c,eAAe,8BAC9EqE,QAAO,SAACyI,GAAK,OAAAvD,EAAK+U,iBAAiBxR,EAAGlL,KAGvCU,EAAMC,KAAOD,EAAMwM,gBAAgBC,WAAanN,IAClDU,EAAMwM,gBAAgBC,SAAWnN,IAI7B2a,EAAAlc,UAAAyd,kBAAR,SAA0Bxb,EAA+B4U,EAAe9T,GAAxE,IAAAmG,EAAApJ,KAOE,GANImC,EAAMgK,YACRhK,EAAMgK,WACH6K,OAAM,SAACrK,GAAK,OAACA,EAAE0Q,iBACfnZ,QAAO,SAACyI,GAAK,OAAAvD,EAAKuU,kBAAkBhR,EAAGoK,EAAM9T,KAG9Cd,EAAMsG,aAAetG,EAAMC,IAAK,CAClC6D,EAAiB9D,EAAO,WAAY4U,IAAQ5U,EAAM4U,WAC5CtR,EAAItD,EAAMsG,YACZhD,EAAW,SAA2B,EAAtBA,EAAW,QAAE9E,QAC/ByG,EAAe3B,IAGJ,IAATsR,GAAmBtR,EAAW,UAAKA,EAAW,QAAE2Y,MAAK,SAACzR,GAAK,QAAEA,EAAEwC,SAY/C,IAAT4H,IACL5U,EAAMc,aAAed,EAAMY,SAAW0B,EAAYtC,EAAM+D,eAAiBzB,EAAYf,EAAcvB,KACrGS,EAAiBT,EAAOA,EAAM+D,cAEhCsI,EAAgBrM,EAAOa,WAAW,GAC9Bb,EAAMc,aAAed,EAAMkY,aAAelY,EAAMgK,YAAc,IAAIxL,UAAYwB,EAAMkB,OAAS,IAAI1C,QAC5FwB,EAAa,QAAEmK,YAAW,KAjBnCmB,EAAkBtL,GAAO,GACrBc,GAAed,EAAMc,cACvBd,EAAMsG,YAAYgK,MAAM,CAAEhR,MAAOuB,UAAW4L,SAAUzM,EAAMsG,YAAYmG,WACpEzM,EAAMgK,aACRvJ,EAAiBT,EAAOa,WAEpBb,EAAMsG,uBAAuBoF,EAAAA,YAC/B1L,EAAMgK,WAAWxL,OAAS,MAehCwB,EAAMyG,QAAQkE,cAChB3K,EAAMyG,QAAQkE,aAAatL,KAAI,CAA4BW,MAAKA,EAAEkH,KAAM,SAAU5H,MAAOsV,KAIrFqF,EAAAlc,UAAA6c,aAAR,SAAqB5a,EAA+ByD,EAAcnE,GAChE,IAUE,QATI4c,EAASlc,EACPU,GAA+B,IAAvB+C,EAAK5E,QAAQ,KACvB4E,EAAKpD,MAAM,KACXoD,EACCrD,QAAQ,SAAU,IAClBC,MAAM,cACNwU,OAAM,SAACzR,GAAK,OAAAA,IAEX+Y,EAAYzb,EAAMlC,OAAS,EACxBH,EAAI,EAAGA,EAAI8d,EAAW9d,IAC7B6d,EAASA,EAAOxb,EAAMrC,IAGxB6d,EAAOxb,EAAMyb,IAAc7c,EAC3B,MAAOM,GAEP,MADAA,EAAMmI,QAAU,+BAA+BtE,EAAI,MAAM7D,EAAMmI,QACzDnI,EAOR,GAJa,6BAAT6D,GAAuCzD,EAAMC,KAC/CpC,KAAKme,iBAAiBhc,EAAOV,GAGA,IAA3BmE,EAAK5E,QAAQ,UAAiB,KAC1BsB,EAAOsD,EAAKrD,QAAQ,WAAY,IACpCmL,EAAUvL,EAAMC,KAAOwD,IAAStD,EAAOH,EAAMsG,YAActG,EAAMY,OAAO0F,YAAY1C,IAAIzD,IAGxFoL,GACKrJ,EAAkBqJ,EAAQjM,QAAU4C,EAAkB5C,IACxDiM,EAAQjM,QAAUA,GAErBiM,EAAQuB,WAAWxN,GAIvBzB,KAAKue,sBAAsBpc,EAAOyD,EAAMnE,IAGlC2a,EAAAlc,UAAAqe,sBAAR,SAA8Bpc,EAA+Bqc,EAAkB/c,GACxEU,EAAMyG,QAAQkE,cAInB3K,EAAMyG,QAAQkE,aAAatL,KAAK,CAC9BW,MAAOA,EACPkH,KAAM,oBACNmV,SAAQA,EACR/c,MAAKA,KAGX2a,kBCnUE,SAAAqC,EAAoB1S,GAAA/L,KAAA+L,aAAAA,EAqJtB,OAnJE0S,EAAAve,UAAAwM,WAAA,SAAWvK,GACTnC,KAAK0e,oBAAoBvc,EAAO,cAChCnC,KAAK0e,oBAAoBvc,EAAO,oBAG1Bsc,EAAAve,UAAAwe,oBAAR,SAA4Bvc,EAA+BkH,GAA3D,IAAAD,EAAApJ,KACQ+H,EAA4B,GAKlC,GAJa,eAATsB,GAA2BlH,EAAMtC,eAAe,gBAAkBsC,EAAMC,KAC1E2F,EAAWjG,KAAK9B,KAAK2e,6BAA6Bxc,IAGhDA,EAAMkH,GACR,IAAK,IAAMuV,KAAiBzc,EAAMkH,GACV,eAAlBuV,GAAmCjf,MAAM8C,QAAQN,EAAMkH,GAAMN,cAC/D5G,EAAMkH,GAAMN,WAAa,CAAC5G,EAAMkH,GAAMN,YACtCa,QAAQC,KAAK,aAAa1H,EAAMC,IAAG,0FAGnB,eAAlBwc,EACI7W,EAAWjG,KAAIjB,MAAfkH,EAAU/F,EAASG,EAAMkH,GAAMN,WAAWzD,IAAG,SAACC,GAAK,OAAA6D,EAAKyV,kBAAkB1c,EAAOoD,OACjFwC,EAAWjG,KAAK9B,KAAK6e,kBAAkB1c,EAAOA,EAAMkH,GAAMuV,GAAgBA,IAKlF3Y,EAAiB9D,EAAO,IAAMkH,EAAMtB,IAG9B0W,EAAAve,UAAAye,6BAAR,SAAqCxc,OAC/B2c,EAAa,GAWjB,OAVAnc,EAAkBuB,QAAO,SAAC6a,GAAO,OAAAzY,EAAanE,EAAMwM,gBAAiBoQ,EAAG,SAAGrX,OAAEhB,EAAAgB,EAAAhB,aAAcC,EAAAe,EAAAf,YACzFmY,EAAaA,EAAW9H,OAAM,SAAC5V,GAAK,OAAAA,IAAM2d,IACtB,MAAhBrY,IAAyC,IAAjBA,GAC1BoY,EAAWhd,KAAKid,IAEbpY,GAAexE,EAAMsG,aACxBrB,EAAejF,EAAMsG,iBAIzB,SAAQiF,GACN,OAA0B,IAAtBoR,EAAWne,OACN,KAGFqe,EAAAA,WAAWC,QAAQH,EAAWxZ,IAAG,SAACyZ,yBACjCtd,EAAQU,EAAMwM,gBAAgBoQ,GACpC,OAAQA,GACN,IAAK,WACH,OAAOC,EAAAA,WAAWE,SAASxR,GAC7B,IAAK,UACH,OAAOsR,EAAAA,WAAWG,QAAQ1d,EAAnBud,CAA0BtR,GACnC,IAAK,YACH,OAAOsR,EAAAA,WAAWI,UAAU3d,EAArBud,CAA4BtR,GACrC,IAAK,YACH,OAAOsR,EAAAA,WAAWK,UAAU5d,EAArBud,CAA4BtR,GACrC,IAAK,MACH,OAAOsR,EAAAA,WAAWM,IAAI7d,EAAfud,CAAsBtR,GAC/B,IAAK,MACH,OAAOsR,EAAAA,WAAWO,IAAI9d,EAAfud,CAAsBtR,OAd5BsR,CAgBHtR,KAIA+Q,EAAAve,UAAA2e,kBAAR,SAA0B1c,EAA+BoH,EAAgBqV,GAAzE,IAAAxV,EAAApJ,KACMwf,EAAmC,KAYvC,GAXyB,iBAAdjW,IACTiW,EAAkB/b,EAAMzD,KAAK+L,aAAaR,aAAahC,KAGhC,iBAAdA,GAA0BA,EAAUxE,OAC7Cya,EAAkB/b,EAAMzD,KAAK+L,aAAaR,aAAahC,EAAUxE,OAC7DwE,EAAUX,UACZ4W,EAAgB5W,QAAUW,EAAUX,UAIf,iBAAdW,GAA0BA,EAAUyS,WAAY,CACjD,IAAAA,EAAAzS,EAAAyS,WAAYpT,EAAA9H,EAAAyI,EAAA,CAAA,eACpBiW,EAAkB,CAChBza,KAAM6Z,EACN7V,WAAYiT,EACZpT,QAAuC,EAA9BpJ,OAAOkG,KAAKkD,GAASjI,OAAaiI,EAAU,MAWzD,MAPyB,mBAAdW,IACTiW,EAAkB,CAChBza,KAAM6Z,EACN7V,WAAYQ,IAIhB,SAAQmE,OACAyN,EAAcqE,EAAgBzW,WAAW2E,EAASvL,EAAOqd,EAAgB5W,SAC/E,OfoCN,SAAgB6W,EAAUC,GACxB,QAASA,GAA2B,mBAAbA,EAAIC,KerCnBF,CAAUtE,GACLA,EAAOwE,KAAI,SAACpa,GAAK,OAAA6D,EAAKwW,kBAAkBzd,EAAOyc,IAAkBrZ,EAAIA,EAAGia,KAG7E5a,EAAAA,aAAauW,GACRA,EAAO/K,KAAK9K,EAAAA,IAAG,SAACC,GAAK,OAAA6D,EAAKwW,kBAAkBzd,EAAOyc,IAAkBrZ,EAAIA,EAAGia,MAG9EpW,EAAKyW,aAAa1d,EAAOyc,IAAkBzD,EAASA,EAAQqE,KAI/Df,EAAAve,UAAA0f,kBAAR,SAA0Bzd,EAA+BgZ,EAAavS,GAMpE,OAJIzG,EAAMyG,SAAWzG,EAAMyG,QAAQqE,eACjC9K,EAAMyG,QAAQqE,cAAc9K,GAGvBnC,KAAK6f,aAAa1d,EAAOgZ,EAAQvS,IAGlC6V,EAAAve,UAAA2f,aAAR,SAAqB1d,EAA+BgZ,EAAazT,SAAE3C,EAAA2C,EAAA3C,KAAM6D,EAAAlB,EAAAkB,QACjD,kBAAXuS,IACTA,EAASA,EAAS,OAAIxX,EAAA,IAAMoB,GAAO6D,IAAoB,EAAIjF,QAGvDmc,EAAO3d,EAAMsG,YAuBnB,OAtBAqX,EAAsB,iBAAKA,EAAsB,gBAAE/a,IAAS+a,EAAsB,gBAAE/a,KAEhFxB,EAAS4X,IACX3b,OAAOkG,KAAKyV,GAAQjX,QAAO,SAACa,SACpBqW,EAAYD,EAAOpW,GAAMqW,UAC3BD,EAAOpW,GAAMqW,WACZxS,GAAW,IAAIwS,UAEd2E,EAAY3E,EAAYjZ,EAAMsG,YAAY1C,IAAIqV,GAAa,KACjE,GAAI2E,EAAW,KACPpc,EAAAwX,EAAApW,GAAa6I,GAAXjK,EAAAyX,UAAWta,EAAA6C,EAAA,CAAA,eACnBoc,EAAUC,UAAS5f,EAAA,GAAO2f,EAAU5E,QAAU,KAAEzT,EAAA,IAAI3C,GAAO6I,EAAIlG,MAE9DoY,EAAsB,iBAAK7Z,EAAiB6Z,EAAM,kBAAmB,IACtEA,EAAsB,gBAAE/a,GAAK,eACrB2C,EAAAqY,EAAA5E,QAAA,GAAExX,EAAAoB,EAAkBkb,GAAlBvY,EAAA/D,GAAkB7C,EAAA4G,EAAA,CAAA,iBAAA/D,EAAAA,EAAAA,EAAA,MAC1Boc,EAAUC,UAA8C,IAApCxgB,OAAOkG,KAAKua,GAAatf,OAAe,KAAOsf,OAMpE9E,GAEXsD,kBCtJE,SAAAyB,EAAoB/W,GAAAnJ,KAAAmJ,OAAAA,EAqItB,OAnIE+W,EAAAhgB,UAAAwM,WAAA,SAAWvK,GACJA,EAAMY,SAIPZ,EAAMgK,aAAehK,EAAMC,IAC7B6D,EAAiB9D,EAAO,cAAeA,EAAMY,OAAO0F,aAEpDzI,KAAKmgB,eAAehe,KAIxB+d,EAAAhgB,UAAA0M,aAAA,SAAazK,GACX,IAAIA,EAAMY,OAAV,KAIMqd,EAAiBpgB,KAAKyO,cAActM,GAC1C,GAA8B,IAA1Bie,EAAezf,OAInB,GAA8B,IAA1Byf,EAAezf,OAEjB,QADI+M,EAAU0S,EAAe,GAAG3X,YACzBiF,GACL,EAAiBrG,oBAAoB,CAAEgM,UAAU,IACjD3F,EAAUA,EAAQ3K,YAGnBZ,EAAiB,YAASkF,wBAIvB6Y,EAAAhgB,UAAAigB,eAAR,SAAuBhe,OACjBuL,EAAUa,EAAYpM,GAC1B,IAAKuL,EAAS,KACN2S,EAAyC,CAAEpN,SAAU9Q,EAAM6Q,aAAaC,UACxExR,EAAQU,EAAMC,IAAMsB,EAAcvB,GAASA,EAAM+D,aAEjDiH,EAAMnN,KAAKmJ,OAASnJ,KAAKmJ,OAAO2B,oBAAoB3I,GAAS,KACnE,GAAIgL,GAAOA,EAAImT,eAAiBnT,EAAImT,cAA6B,cAAG,KAC5DtV,EAAYmC,EAAImT,cACtB1W,QAAQC,KAAK,eAAemB,EAAUjG,KAAI,8EAC1C2I,EAAU1C,EAAyB,cAAEvJ,EAAOU,QAG5CuL,EAFSvL,EAAMgK,WAEL,IAAIgC,EAAAA,UAAU,GAAIkS,GAElB,IAAIrR,EAAAA,YAAYvN,EAAO4e,GAIrC7R,EAAgBrM,EAAOuL,IAGjBwS,EAAAhgB,UAAAuO,cAAR,SAAsBtM,GAAtB,IAAAiH,EAAApJ,KACMoH,GAAiB,EACrB,GAAIjF,EAAMC,MAAQD,EAAMY,SAAYZ,EAAMC,MAAQD,EAAMgK,WAAa,CAC3D,IAAAoU,EAAApe,EAAAsG,YACFmG,IAAWzM,EAAMwM,iBAAkBxM,EAAMwM,gBAAgBC,SAC3DzM,EAAMC,KAAOme,IACX3R,GAAY2R,EAAEC,UAChBD,EAAE1R,QAAQ,CAAEpH,WAAW,EAAO4L,UAAU,IACnCkN,EAAExd,OAGLqE,GAAiB,EAFjBqZ,EAAsBF,KAMrB3R,GAAY2R,EAAE3R,WACjB2R,EAAEzR,OAAO,CAAErH,WAAW,EAAO4L,UAAU,IAClCkN,EAAExd,OAGLqE,GAAiB,EAFjBqZ,EAAsBF,MAQxBA,GAAM,OAASA,EAAEhX,WAAa,OAASgX,EAAEG,iBAC3CH,EAAE9R,cAAa,eACPlJ,EAAIyZ,EAAAA,WAAWC,QAAQ7V,EAAKuX,gBAA6Bxe,EAAO,gBAEtE,OAAOoD,EAAIA,EAAEgb,GAAK,OAEpBA,EAAE7R,mBAAkB,eACZnJ,EAAIyZ,EAAAA,WAAW4B,aAAaxX,EAAKuX,gBAAkCxe,EAAO,qBAEhF,OAAOoD,EAAIA,EAAEgb,GAAKtF,EAAAA,GAAG,QAGlBsF,EAAExd,OAGLqE,GAAiB,EAFjBqZ,EAAsBF,QAOtBH,EAAiBhZ,EAAiB,CAACjF,GAAS,GAQlD,OAPCA,EAAMgK,YAAc,IAAIjI,QAAO,SAACyI,OACzBkU,EAAmBzX,EAAKqF,cAAc9B,GACvCvF,GACHgZ,EAAete,KAAIjB,MAAnBuf,EAAcpe,EAAS6e,MAIpBT,GAGDF,EAAAhgB,UAAAygB,gBAAR,SAA2Bxe,EAA+BkH,GAA1D,IAAAD,EAAApJ,KACQ+H,EAAkB,GAClBtC,EAAItD,EAAMsG,YAehB,OAdIhD,GAAKA,EAAW,SAA2B,EAAtBA,EAAW,QAAE9E,OACpC8E,EAAW,QACRuR,OAAM,SAAErK,GAA8B,OAACA,EAAEwC,QACzCjL,QAAO,SAAEyI,GAA8B,OAAA5E,EAAWjG,KAAIjB,MAAfkH,EAAU/F,EAAS2K,EAAEtD,OACtDlH,EAAMkH,IACftB,EAAWjG,KAAIjB,MAAfkH,EAAU/F,EAASG,EAAMkH,KAGvBlH,EAAMgK,YACRhK,EAAMgK,WACH6K,OAAM,SAACrK,GAAK,OAACA,EAAEvK,KAAOuK,EAAER,aACxBjI,QAAO,SAACyI,GAAK,OAAA5E,EAAWjG,KAAIjB,MAAfkH,EAAU/F,EAASoH,EAAKuX,gBAAgBhU,EAAGtD,OAGtDtB,GAEXmY,kBCtIE,SAAAY,EAAoB/U,GAAA/L,KAAA+L,aAAAA,EADZ/L,KAAA+gB,OAAS,EA2InB,OAxIED,EAAA5gB,UAAAuM,YAAA,SAAYtK,GAEV,GADAnC,KAAKghB,0BAA0B7e,GAAOsK,eAClCtK,EAAMY,OAAV,KAIMke,EAAmB9e,EAAMyG,SAAWzG,EAAMyG,QAAQsY,gBAAmBlhB,KAAK+L,aAAa1D,OAAO6Y,gBACnGvhB,MAAM8C,QAAQwe,GAAmBA,EAAkB,CAACA,IAAkB/c,QAAO,SAACgd,GAC7E,GAAIA,IACFtX,QAAQC,KAAK,sFACMqX,EAAe/e,EAAMgK,WAAYhK,EAAMkB,MAAkBlB,EAAiB,YAAEA,EAAMyG,UAEnG,MAAM,IAAI0B,MAAM,qDAMxBwW,EAAA5gB,UAAAwM,WAAA,SAAWvK,GAAX,IAAAiH,EAAApJ,KACEA,KAAKmhB,iBAAiBhf,GACtBnC,KAAKghB,0BAA0B7e,GAAOuK,aAClCvK,EAAMgK,YACRhK,EAAMgK,WAAWjI,QAAO,SAAEyI,EAAG4M,GAC3B/Z,OAAOwG,eAAe2G,EAAG,SAAU,CAAE5G,IAAG,WAAQ,OAAA5D,GAAOkE,cAAc,IACrE7G,OAAOwG,eAAe2G,EAAG,QAAS,CAAE5G,IAAG,WAAQ,OAAAwT,GAAOlT,cAAc,IACpE+C,EAAK2X,YAKXD,EAAA5gB,UAAA0M,aAAA,SAAazK,GACXnC,KAAKghB,0BAA0B7e,GAAOyK,gBAGhCkU,EAAA5gB,UAAAihB,iBAAR,SAAyBhf,OACjBW,EAAgCX,EAAY,OAClD,GAAKW,EAAL,CAoDA,GAhDAtD,OAAOwG,eAAe7D,EAAO,OAAQ,CAAE4D,IAAG,WAAQ,OAAAjD,EAAK2F,aAAapC,cAAc,IAClF7G,OAAOwG,eAAe7D,EAAO,UAAW,CAAE4D,IAAG,WAAQ,OAAAjD,EAAK8F,SAASvC,cAAc,IACjF7G,OAAOwG,eAAe7D,EAAO,QAAS,CACpC4D,IAAG,WAAQ,OAAA5D,EAAMC,KAAOD,EAAMgK,WAAazI,EAAcvB,GAASW,EAAKO,OACvEgD,cAAc,IAGhBvC,EAAiB3B,EAAO,CACtBoW,GjBpDN,SAAgB6I,EAAWL,EAAgB5e,EAA0BoX,GACnE,GAAIpX,EAAMoW,GAAI,OAAOpW,EAAMoW,OACvBlP,EAAOlH,EAAMkH,KAEjB,OADKA,GAAQlH,EAAM4R,WAAU1K,EAAO,YAC7B,CAAC0X,EAAQ1X,EAAMlH,EAAMC,IAAKmX,GAAO9F,KAAK,KiBgDrC2N,CAAW,UAAUphB,KAAK+gB,OAAU5e,EAAOA,EAAa,OAC5DqU,MAAO,GACPxD,aAAc,GACdrE,gBAAkBxM,EAAMkH,MAASlH,EAAMC,IAAW,CAChDif,MAAO,GACPC,YAAa,GACb3I,OAAO,EACP/J,UAAU,GAJiC,KAQ3C5O,KAAK+L,aAAa1D,OAAOkZ,mBAA0C,IAAtBpf,EAAMc,cACrDd,EAAMc,aAAc,GAGlBd,EAAMuU,WACR9M,QAAQC,KAAK,yEAIE,oBAAf1H,EAAMkH,OAEJlH,EAAM4R,UACF5R,EAAMsa,sBAAwBta,EAAMsa,qBAAqB1I,YAG3D5R,EAAMkH,MACRO,QAAQC,KAAK,6EAEf1H,EAAMkH,KAAO,oBAGVlH,EAAMkH,MAAQlH,EAAMgK,aACvBhK,EAAMkH,KAAO,gBAGXlH,EAAMkH,MACRrJ,KAAK+L,aAAavB,eAAerI,GAG/BA,EAAMY,OAAQ,KACZye,GAAmB/c,EAAYtC,EAAMC,OACnCqC,EAAYtC,EAAM+D,eACnBzB,EAAYf,EAAcvB,OACxBA,EAAMc,eAAiBd,EAAM4U,MAAQ5U,EAAMkb,iBAClD,GAAImE,GAAmBrf,EAAMc,YAAa,CAExC,QADIwe,EAAStf,EAAMY,OACZ0e,IAAWA,EAAOpE,iBAAmBoE,EAAO1K,MACjD0K,EAASA,EAAO1e,OAElBye,GAAmBC,KAAYA,EAAOpE,gBAAkBoE,EAAO1K,MAG7DyK,GACF5e,EAAiBT,EAAOA,EAAM+D,cAIlClG,KAAK0hB,kBAAkBvf,KAGjB2e,EAAA5gB,UAAAwhB,kBAAR,SAA0Bvf,GACxBA,EAAM6F,SAAW7F,EAAM6F,UAAY,OAC7B2Z,EAAyBvhB,EAAA,CAC7B+H,WAAY,GACZC,YAAa,IACTjG,EAAMwM,gBAAgBzG,sBAAwB,IAGpD/F,EAAM6F,SAAWwL,EACZxT,KAAK+L,aAAa7D,qBAAqBC,WAAW7C,IAAG,SAACjE,GAAK,OAAAA,EAAEc,KAC7Dwf,EAA0BxZ,WAAW7C,IAAG,SAACjE,GAAK,OAAAA,EAAEc,KAChDA,EAAM6F,SACNhI,KAAK+L,aAAa7D,qBAAqBE,YAAY9C,IAAG,SAACjE,GAAK,OAAAA,EAAEc,KAC9Dwf,EAA0BvZ,YAAY9C,IAAG,SAACjE,GAAK,OAAAA,EAAEc,MACpD6U,OAAM,SAAE4K,EAAIphB,EAAGqhB,GAAM,OAAAD,GAAMphB,IAAMqhB,EAAE7gB,QAAQ4gB,MAGvCd,EAAA5gB,UAAA8gB,0BAAR,SAAkC7e,OAC1B0I,EAAe7K,KAAK+L,aAAajB,oBAAoB3I,GACrD4I,EAA4BF,EAAeA,EAAqB,SAAU,GAEhF,MAAO,CACL4B,YAAW,WAAQ,OAAA1B,EAAS0B,aAAe1B,EAAS0B,YAAYtK,IAChEuK,WAAU,WAAQ,OAAA3B,EAAS2B,YAAc3B,EAAS2B,WAAWvK,IAC7DyK,aAAY,WAAQ,OAAA7B,EAAS6B,cAAgB7B,EAAS6B,aAAazK,MAGzE2e,KCjIA,SAAgBgB,EAAoB/V,GAClC,MAAO,CACLjE,MAAO,CACL,CAAE/C,KAAM,eAAgBiG,UAAW0P,GACnC,CAAE3V,KAAM,kBAAmBiG,UAAWyQ,IAExCxS,WAAY,CACV,CAAElE,KAAM,OAAQoF,UAAW,IAAI2W,EAAc/U,IAC7C,CAAEhH,KAAM,mBAAoBoF,UAAW,IAAIsU,EAAyB1S,IACpE,CAAEhH,KAAM,aAAcoF,UAAW,IAAI+V,EAAmBnU,IACxD,CAAEhH,KAAM,mBAAoBoF,UAAW,IAAIiS,KAKjD,IAAA2F,EAAA,WAwCE,SAAAA,EACEC,EACmCC,QAAnC,IAAAA,IAAAA,EAAA,IAEKA,GAILA,EAAQ/d,QAAO,SAACiF,GAAU,OAAA6Y,EAAc9Y,UAAUC,KAEtD,OAnCS4Y,EAAAG,QAAP,SAAe/Y,GACb,YADa,IAAAA,IAAAA,EAAA,IACN,CACLgZ,SAAUJ,EACV/N,UAAW,CACT,CAAEoO,QAASza,EAAe0a,OAAO,EAAMC,WAAYR,EAAqBS,KAAM,CAAC1a,IAC/E,CAAEua,QAASza,EAAe6a,SAAUrZ,EAAQkZ,OAAO,GACnD,CAAED,QAASK,EAAAA,6BAA8BD,SAAUrZ,EAAQkZ,OAAO,GAClExa,EACAiE,KAKCiW,EAAAW,SAAP,SAAgBvZ,GACd,YADc,IAAAA,IAAAA,EAAA,IACP,CACLgZ,SAAUJ,EACV/N,UAAW,CACT,CAAEoO,QAASza,EAAe0a,OAAO,EAAMC,WAAYR,EAAqBS,KAAM,CAAC1a,IAC/E,CAAEua,QAASza,EAAe6a,SAAUrZ,EAAQkZ,OAAO,GACnD,CAAED,QAASK,EAAAA,6BAA8BD,SAAUrZ,EAAQkZ,OAAO,GAClEvW,yBAnCP6W,EAAAA,SAAQ3e,KAAA,CAAC,CACR4e,aAAc,CACZnT,EACAgF,EACA6C,EACAoD,EACAE,EACAa,KAGFoH,gBAAiB,CAACnI,EAAae,GAC/BqH,QAAS,CAACrT,EAAYgF,EAAa6C,EAAkBoD,EAAaE,GAClEmI,QAAS,CAACC,EAAAA,2DAvCHnb,iCAqEJwM,EAAAA,UAAQ,CAAAhL,KAAIwQ,EAAAA,OAAM7V,KAAA,CAAC2D,QAQxBoa,EAlDA,iQlB2CA,SAAgBkB,EAAqB9gB,GAGnC,YAFIV,EAAQU,EAAMyG,QAAuB,cACrC/F,EAAQX,EAAWC,GAChBA,EAAMY,QAEXF,EAAKb,EAAOE,EADZC,EAAQA,EAAMY,QACoBF,OAGpC,IAAmB,IAAAqgB,EAAAtf,EAAAf,GAAKsgB,EAAAD,EAAA1hB,QAAA2hB,EAAAzhB,KAAAyhB,EAAAD,EAAA1hB,OAAE,CAArB,IAAMc,EAAI6gB,EAAA1hB,MACb,IAAKA,EACH,OAAOuB,UAETvB,EAAQA,EAAMa,wGAGhB,OAAOb","sourcesContent":["/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation. All rights reserved.\r\nLicensed under the Apache License, Version 2.0 (the \"License\"); you may not use\r\nthis file except in compliance with the License. You may obtain a copy of the\r\nLicense at http://www.apache.org/licenses/LICENSE-2.0\r\n\r\nTHIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\nKIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED\r\nWARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,\r\nMERCHANTABLITY OR NON-INFRINGEMENT.\r\n\r\nSee the Apache Version 2.0 License for specific language governing permissions\r\nand limitations under the License.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport function __exportStar(m, exports) {\r\n for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\n\r\nexport function __values(o) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator], i = 0;\r\n if (m) return m.call(o);\r\n return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n};\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\r\n result.default = mod;\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n","import { FormlyFieldConfig } from './core';\nimport { isObservable } from 'rxjs';\nimport { AbstractControl } from '@angular/forms';\nimport { FormlyFieldConfigCache } from './components/formly.field.config';\nimport { TemplateRef } from '@angular/core';\n\nexport function getFieldId(formId: string, field: FormlyFieldConfig, index: string|number) {\n if (field.id) return field.id;\n let type = field.type;\n if (!type && field.template) type = 'template';\n return [formId, type, field.key, index].join('_');\n}\n\nexport function getKeyPath(field: FormlyFieldConfigCache): string[] {\n if (!field.key) {\n return [];\n }\n\n /* We store the keyPath in the field for performance reasons. This function will be called frequently. */\n if (!field._keyPath || field._keyPath.key !== field.key) {\n let path: string[] = [];\n if (typeof field.key === 'string') {\n const key = field.key.indexOf('[') === -1\n ? field.key\n : field.key.replace(/\\[(\\w+)\\]/g, '.$1');\n path = key.indexOf('.') !== -1 ? key.split('.') : [key];\n } else if (Array.isArray(field.key)) {\n path = field.key.slice(0);\n } else {\n path = [`${field.key}`];\n }\n\n field._keyPath = { key: field.key, path };\n }\n\n return field._keyPath.path.slice(0);\n}\n\nexport const FORMLY_VALIDATORS = ['required', 'pattern', 'minLength', 'maxLength', 'min', 'max'];\n\nexport function assignFieldValue(field: FormlyFieldConfigCache, value: any) {\n let paths = getKeyPath(field);\n if (paths.length === 0) {\n return;\n }\n\n let root = field;\n while (root.parent) {\n root = root.parent;\n paths = [...getKeyPath(root), ...paths];\n }\n\n if (value === undefined && field.resetOnHide) {\n const k = paths.pop();\n const m = paths.reduce((model, path) => model[path] || {}, root.model);\n delete m[k];\n return;\n }\n\n assignModelValue(root.model, paths, value);\n}\n\nexport function assignModelValue(model: any, paths: string[], value: any) {\n for (let i = 0; i < (paths.length - 1); i++) {\n const path = paths[i];\n if (!model[path] || !isObject(model[path])) {\n model[path] = /^\\d+$/.test(paths[i + 1]) ? [] : {};\n }\n\n model = model[path];\n }\n\n model[paths[paths.length - 1]] = clone(value);\n}\n\nexport function getFieldInitialValue(field: FormlyFieldConfig) {\n let value = field.options['_initialModel'];\n let paths = getKeyPath(field);\n while (field.parent) {\n field = field.parent;\n paths = [...getKeyPath(field), ...paths];\n }\n\n for (const path of paths) {\n if (!value) {\n return undefined;\n }\n value = value[path];\n }\n\n return value;\n}\n\nexport function getFieldValue(field: FormlyFieldConfig): any {\n let model = field.parent.model;\n for (const path of getKeyPath(field)) {\n if (!model) {\n return model;\n }\n model = model[path];\n }\n\n return model;\n}\n\nexport function reverseDeepMerge(dest: any, ...args: any[]) {\n args.forEach(src => {\n for (let srcArg in src) {\n if (isNullOrUndefined(dest[srcArg]) || isBlankString(dest[srcArg])) {\n dest[srcArg] = clone(src[srcArg]);\n } else if (objAndSameType(dest[srcArg], src[srcArg])) {\n reverseDeepMerge(dest[srcArg], src[srcArg]);\n }\n }\n });\n return dest;\n}\n\nexport function isNullOrUndefined(value: any) {\n return value === undefined || value === null;\n}\n\nexport function isUndefined(value: any) {\n return value === undefined;\n}\n\nexport function isBlankString(value: any) {\n return value === '';\n}\n\nexport function isFunction(value: any) {\n return typeof(value) === 'function';\n}\n\nexport function objAndSameType(obj1: any, obj2: any) {\n return isObject(obj1) && isObject(obj2)\n && Object.getPrototypeOf(obj1) === Object.getPrototypeOf(obj2)\n && !(Array.isArray(obj1) || Array.isArray(obj2));\n}\n\nexport function isObject(x: any) {\n return x != null && typeof x === 'object';\n}\n\nexport function isPromise(obj: any): obj is Promise<any> {\n return !!obj && typeof obj.then === 'function';\n}\n\nexport function clone(value: any): any {\n if (\n !isObject(value)\n || isObservable(value)\n || (value instanceof TemplateRef)\n || /* instanceof SafeHtmlImpl */ value.changingThisBreaksApplicationSecurity\n || ['RegExp', 'FileList', 'File', 'Blob'].indexOf(value.constructor.name) !== -1\n ) {\n return value;\n }\n\n if (value instanceof Set) {\n return new Set(value);\n }\n\n if (value instanceof Map) {\n return new Map(value);\n }\n\n // https://github.com/moment/moment/blob/master/moment.js#L252\n if (value._isAMomentObject && isFunction(value.clone)) {\n return value.clone();\n }\n\n if (value instanceof AbstractControl) {\n return null;\n }\n\n if (value instanceof Date) {\n return new Date(value.getTime());\n }\n\n if (Array.isArray(value)) {\n return value.slice(0).map(v => clone(v));\n }\n\n // best way to clone a js object maybe\n // https://stackoverflow.com/questions/41474986/how-to-clone-a-javascript-es6-class-instance\n const proto = Object.getPrototypeOf(value);\n let c = Object.create(proto);\n c = Object.setPrototypeOf(c, proto);\n // need to make a deep copy so we dont use Object.assign\n // also Object.assign wont copy property descriptor exactly\n return Object.keys(value).reduce((newVal, prop) => {\n const propDesc = Object.getOwnPropertyDescriptor(value, prop);\n if (propDesc.get) {\n Object.defineProperty(newVal, prop, propDesc);\n } else {\n newVal[prop] = clone(value[prop]);\n }\n\n return newVal;\n }, c);\n}\n\nexport function defineHiddenProp(field: any, prop: string, defaultValue: any) {\n Object.defineProperty(field, prop, { enumerable: false, writable: true, configurable: true });\n field[prop] = defaultValue;\n}\n\nexport function wrapProperty<T = any>(\n o: any,\n prop: string,\n setFn: (change: {currentValue: T, previousValue?: T, firstChange: boolean}) => void,\n) {\n if (!o._observers) {\n defineHiddenProp(o, '_observers', {});\n }\n\n if (!o._observers[prop]) {\n o._observers[prop] = [];\n }\n\n let fns: typeof setFn[] = o._observers[prop];\n if (fns.indexOf(setFn) === -1) {\n fns.push(setFn);\n setFn({ currentValue: o[prop], firstChange: true });\n if (fns.length === 1) {\n defineHiddenProp(o, `___$${prop}`, o[prop]);\n Object.defineProperty(o, prop, {\n configurable: true,\n get: () => o[`___$${prop}`],\n set: currentValue => {\n if (currentValue !== o[`___$${prop}`]) {\n const previousValue = o[`___$${prop}`];\n o[`___$${prop}`] = currentValue;\n fns.forEach(changeFn => changeFn({ previousValue, currentValue, firstChange: false }));\n }\n },\n });\n }\n }\n\n return () => fns.splice(fns.indexOf(setFn), 1);\n}\n\nexport function reduceFormUpdateValidityCalls(form: any, action: Function) {\n const updateValidity = form._updateTreeValidity.bind(form);\n\n let updateValidityArgs = { called: false, emitEvent: false };\n form._updateTreeValidity = ({ emitEvent } = { emitEvent: true }) => updateValidityArgs = { called: true, emitEvent: emitEvent || updateValidityArgs.emitEvent };\n action();\n\n updateValidityArgs.called && updateValidity({ emitEvent: updateValidityArgs.emitEvent });\n form._updateTreeValidity = updateValidity;\n}\n","import { Injectable, InjectionToken, ComponentRef } from '@angular/core';\nimport { ValidationErrors, AbstractControl } from '@angular/forms';\nimport { FieldType } from './../templates/field.type';\nimport { reverseDeepMerge, defineHiddenProp } from './../utils';\nimport { FormlyFieldConfig, FormlyFieldConfigCache } from '../components/formly.field.config';\nimport { Observable } from 'rxjs';\n\nexport const FORMLY_CONFIG = new InjectionToken<FormlyConfig>('FORMLY_CONFIG');\n\n/** @experimental */\nexport interface FormlyExtension {\n prePopulate?(field: FormlyFieldConfig): void;\n onPopulate?(field: FormlyFieldConfig): void;\n postPopulate?(field: FormlyFieldConfig): void;\n}\n\n/**\n * Maintains list of formly field directive types. This can be used to register new field templates.\n */\n@Injectable({ providedIn: 'root' })\nexport class FormlyConfig {\n types: {[name: string]: TypeOption} = {};\n validators: { [name: string]: ValidatorOption } = {};\n wrappers: { [name: string]: WrapperOption } = {};\n messages: { [name: string]: ValidationMessageOption['message'] } = {};\n templateManipulators: {\n preWrapper: ManipulatorWrapper[];\n postWrapper: ManipulatorWrapper[];\n } = {\n preWrapper: [],\n postWrapper: [],\n };\n extras: ConfigOption['extras'] = {\n checkExpressionOn: 'changeDetectionCheck',\n lazyRender: false,\n showError: function(field: FieldType) {\n return field.formControl && field.formControl.invalid && (field.formControl.touched || (field.options.parentForm && field.options.parentForm.submitted) || !!(field.field.validation && field.field.validation.show));\n },\n };\n extensions: { [name: string]: FormlyExtension } = {};\n\n addConfig(config: ConfigOption) {\n if (config.types) {\n config.types.forEach(type => this.setType(type));\n }\n if (config.validators) {\n config.validators.forEach(validator => this.setValidator(validator));\n }\n if (config.wrappers) {\n config.wrappers.forEach(wrapper => this.setWrapper(wrapper));\n }\n if (config.manipulators) {\n console.warn(`NgxFormly: passing 'manipulators' config is deprecated, use custom extension instead.`);\n config.manipulators.forEach(manipulator => this.setManipulator(manipulator));\n }\n if (config.validationMessages) {\n config.validationMessages.forEach(validation => this.addValidatorMessage(validation.name, validation.message));\n }\n if (config.extensions) {\n config.extensions.forEach(c => this.extensions[c.name] = c.extension);\n }\n if (config.extras) {\n this.extras = { ...this.extras, ...config.extras };\n }\n }\n\n setType(options: TypeOption | TypeOption[]) {\n if (Array.isArray(options)) {\n options.forEach((option) => this.setType(option));\n } else {\n if (!this.types[options.name]) {\n this.types[options.name] = <TypeOption>{ name: options.name };\n }\n\n ['component', 'extends', 'defaultOptions', 'wrappers'].forEach(prop => {\n if (options.hasOwnProperty(prop)) {\n this.types[options.name][prop] = options[prop];\n }\n });\n }\n }\n\n getType(name: string): TypeOption {\n if (!this.types[name]) {\n throw new Error(`[Formly Error] The type \"${name}\" could not be found. Please make sure that is registered through the FormlyModule declaration.`);\n }\n\n this.mergeExtendedType(name);\n\n return this.types[name];\n }\n\n getMergedField(field: FormlyFieldConfig = {}): any {\n const type = this.getType(field.type);\n if (type.defaultOptions) {\n reverseDeepMerge(field, type.defaultOptions);\n }\n\n const extendDefaults = type.extends && this.getType(type.extends).defaultOptions;\n if (extendDefaults) {\n reverseDeepMerge(field, extendDefaults);\n }\n\n if (field && field.optionsTypes) {\n field.optionsTypes.forEach(option => {\n const defaultOptions = this.getType(option).defaultOptions;\n if (defaultOptions) {\n reverseDeepMerge(field, defaultOptions);\n }\n });\n }\n\n const componentRef = this.resolveFieldTypeRef(field);\n if (componentRef && componentRef.instance && componentRef.instance.defaultOptions) {\n reverseDeepMerge(field, componentRef.instance.defaultOptions);\n }\n\n if (!field.wrappers && type.wrappers) {\n field.wrappers = [...type.wrappers];\n }\n }\n\n /** @internal */\n resolveFieldTypeRef(field: FormlyFieldConfigCache = {}): ComponentRef<FieldType> {\n if (!field.type) {\n return null;\n }\n\n const type = this.getType(field.type);\n if (!type.component || type['_componentRef']) {\n return type['_componentRef'];\n }\n\n const { _resolver, _injector } = field.parent.options;\n const componentRef = _resolver\n .resolveComponentFactory<FieldType>(type.component)\n .create(_injector);\n\n defineHiddenProp(type, '_componentRef', componentRef);\n componentRef.destroy();\n\n return type['_componentRef'];\n }\n\n setWrapper(options: WrapperOption) {\n this.wrappers[options.name] = options;\n if (options.types) {\n options.types.forEach((type) => {\n this.setTypeWrapper(type, options.name);\n });\n }\n }\n\n getWrapper(name: string): WrapperOption {\n if (!this.wrappers[name]) {\n throw new Error(`[Formly Error] The wrapper \"${name}\" could not be found. Please make sure that is registered through the FormlyModule declaration.`);\n }\n\n return this.wrappers[name];\n }\n\n setTypeWrapper(type: string, name: string) {\n if (!this.types[type]) {\n this.types[type] = <TypeOption>{};\n }\n if (!this.types[type].wrappers) {\n this.types[type].wrappers = [];\n }\n if (this.types[type].wrappers.indexOf(name) === -1) {\n this.types[type].wrappers.push(name);\n }\n }\n\n setValidator(options: ValidatorOption) {\n this.validators[options.name] = options;\n }\n\n getValidator(name: string): ValidatorOption {\n if (!this.validators[name]) {\n throw new Error(`[Formly Error] The validator \"${name}\" could not be found. Please make sure that is registered through the FormlyModule declaration.`);\n }\n\n return this.validators[name];\n }\n\n addValidatorMessage(name: string, message: ValidationMessageOption['message']) {\n this.messages[name] = message;\n }\n\n getValidatorMessage(name: string) {\n return this.messages[name];\n }\n\n setManipulator(manipulator: ManipulatorOption) {\n new manipulator.class()[manipulator.method](this);\n }\n\n private mergeExtendedType(name: string) {\n if (!this.types[name].extends) {\n return;\n }\n\n const extendedType = this.getType(this.types[name].extends);\n if (!this.types[name].component) {\n this.types[name].component = extendedType.component;\n }\n\n if (!this.types[name].wrappers) {\n this.types[name].wrappers = extendedType.wrappers;\n }\n }\n}\nexport interface TypeOption {\n name: string;\n component?: any;\n wrappers?: string[];\n extends?: string;\n defaultOptions?: FormlyFieldConfig;\n}\n\nexport interface WrapperOption {\n name: string;\n component: any;\n types?: string[];\n}\n\nexport interface FieldValidatorFn {\n (c: AbstractControl, field: FormlyFieldConfig, options?: { [id: string]: any; }): ValidationErrors | null;\n}\n\nexport interface ValidatorOption {\n name: string;\n validation: FieldValidatorFn;\n options?: { [id: string]: any };\n}\n\nexport interface ExtensionOption {\n name: string;\n extension: FormlyExtension;\n}\n\nexport interface ValidationMessageOption {\n name: string;\n message: string | ((error: any, field: FormlyFieldConfig) => string | Observable<string>);\n}\n\nexport interface ManipulatorOption {\n class?: { new (): any };\n method?: string;\n}\n\nexport interface ManipulatorWrapper {\n (f: FormlyFieldConfig): string;\n}\n\nexport interface TemplateManipulators {\n preWrapper?: ManipulatorWrapper[];\n postWrapper?: ManipulatorWrapper[];\n}\n\nexport interface ConfigOption {\n types?: TypeOption[];\n wrappers?: WrapperOption[];\n validators?: ValidatorOption[];\n extensions?: ExtensionOption[];\n validationMessages?: ValidationMessageOption[];\n\n /** @deprecated use `extensions` instead */\n manipulators?: ManipulatorOption[];\n extras?: {\n /** @deprecated use `extensions` instead */\n fieldTransform?: any,\n immutable?: boolean,\n showError?: (field: FieldType) => boolean;\n\n /**\n * Defines the option which formly rely on to check field expression properties.\n * - `modelChange`: perform a check when the value of the form control changes (Will be set by default in the next major version).\n * - `changeDetectionCheck`: triggers an immediate check when `ngDoCheck` is called.\n *\n * Defaults to `changeDetectionCheck`.\n */\n checkExpressionOn?: 'modelChange' | 'changeDetectionCheck',\n\n /**\n * Whether to lazily render field components or not when marked as hidden.\n * - `true`: lazily render field components (Will be set by default in the next major version).\n * - `false`: render field components and use CSS to control their visibility.\n *\n * Defaults to `false`.\n */\n lazyRender?: boolean,\n\n /**\n * When true, reset the value of hidden fields.\n *\n * Defaults to `false`.\n */\n resetFieldOnHide?: boolean,\n };\n}\n","import { Injectable, ComponentFactoryResolver, Injector, ChangeDetectorRef } from '@angular/core';\nimport { FormGroup, FormArray } from '@angular/forms';\nimport { FormlyConfig } from './formly.config';\nimport { FormlyFieldConfig, FormlyFormOptions, FormlyFieldConfigCache, FormlyValueChangeEvent, FormlyFormOptionsCache } from '../components/formly.field.config';\nimport { Subject } from 'rxjs';\nimport { defineHiddenProp, reduceFormUpdateValidityCalls } from '../utils';\n\n@Injectable({ providedIn: 'root' })\nexport class FormlyFormBuilder {\n constructor(\n private formlyConfig: FormlyConfig,\n private componentFactoryResolver: ComponentFactoryResolver,\n private injector: Injector,\n ) {}\n\n buildForm(formControl: FormGroup | FormArray, fieldGroup: FormlyFieldConfig[] = [], model: any, options: FormlyFormOptions) {\n if (!this.formlyConfig.extensions.core) {\n throw new Error('NgxFormly: missing `forRoot()` call. use `forRoot()` when registering the `FormlyModule`.');\n }\n\n const field = { fieldGroup, model, formControl, options: this._setOptions(options) };\n reduceFormUpdateValidityCalls(formControl, () => this._buildForm(field));\n field.options._checkField(field, true);\n }\n\n private _buildForm(field: FormlyFieldConfigCache) {\n this.getExtensions().forEach(extension => extension.prePopulate && extension.prePopulate(field));\n this.getExtensions().forEach(extension => extension.onPopulate && extension.onPopulate(field));\n\n if (field.fieldGroup) {\n field.fieldGroup.forEach((f) => this._buildForm(f));\n }\n\n this.getExtensions().forEach(extension => extension.postPopulate && extension.postPopulate(field));\n }\n\n private getExtensions() {\n return Object.keys(this.formlyConfig.extensions).map(name => this.formlyConfig.extensions[name]);\n }\n\n private _setOptions(options: FormlyFormOptionsCache) {\n options = options || {};\n options.formState = options.formState || {};\n\n if (!options.showError) {\n options.showError = this.formlyConfig.extras.showError;\n }\n\n if (!options.fieldChanges) {\n defineHiddenProp(options, 'fieldChanges', new Subject<FormlyValueChangeEvent>());\n }\n\n if (!options._resolver) {\n defineHiddenProp(options, '_resolver', this.componentFactoryResolver);\n }\n\n if (!options._injector) {\n defineHiddenProp(options, '_injector', this.injector);\n }\n\n if (!options._hiddenFieldsForCheck) {\n options._hiddenFieldsForCheck = [];\n }\n\n if (!options._markForCheck) {\n options._markForCheck = (field) => {\n if (field._componentRefs) {\n field._componentRefs.forEach(ref => {\n // NOTE: we cannot use ref.changeDetectorRef, see https://github.com/ngx-formly/ngx-formly/issues/2191\n const changeDetectorRef = ref.injector.get(ChangeDetectorRef);\n changeDetectorRef.markForCheck();\n });\n }\n\n if (field.fieldGroup) {\n field.fieldGroup.forEach(f => options._markForCheck(f));\n }\n };\n }\n\n if (!options._buildField) {\n options._buildField = (field: FormlyFieldConfig) => {\n this.buildForm(field.form, field.fieldGroup, field.model, field.options);\n return field;\n };\n }\n\n return options;\n }\n}\n","import { FormArray, FormGroup, FormControl, AbstractControl } from '@angular/forms';\nimport { FormlyFieldConfig } from '../../core';\nimport { getKeyPath, getFieldValue, isNullOrUndefined, defineHiddenProp, wrapProperty } from '../../utils';\nimport { FormlyFieldConfigCache } from '../../components/formly.field.config';\nimport { EventEmitter } from '@angular/core';\n\nexport function unregisterControl(field: FormlyFieldConfig, emitEvent = false) {\n const control = field.formControl;\n const fieldIndex = control['_fields'] ? control['_fields'].indexOf(field) : -1;\n if (fieldIndex !== -1) {\n control['_fields'].splice(fieldIndex, 1);\n }\n\n const form = control.parent as FormArray | FormGroup;\n if (!form) {\n return;\n }\n\n const opts = { emitEvent };\n if (form instanceof FormArray) {\n const key = form.controls.findIndex(c => c === control);\n if (key !== -1) {\n updateControl(form, opts, () => form.removeAt(key));\n }\n } else if (form instanceof FormGroup) {\n const paths = getKeyPath(field);\n const key = paths[paths.length - 1];\n if (form.get([key]) === control) {\n updateControl(form, opts, () => form.removeControl(key));\n }\n }\n\n control.setParent(null);\n}\n\nexport function findControl(field: FormlyFieldConfig): AbstractControl {\n if (field.formControl) {\n return field.formControl;\n }\n\n if (field['shareFormControl'] === false) {\n return null;\n }\n\n const form = field.parent.formControl as FormGroup;\n\n return form ? form.get(getKeyPath(field)) : null;\n}\n\nexport function registerControl(field: FormlyFieldConfigCache, control?: any, emitEvent = false) {\n control = control || field.formControl;\n if (!control['_fields']) {\n defineHiddenProp(control, '_fields', []);\n }\n if (control['_fields'].indexOf(field) === -1) {\n control['_fields'].push(field);\n }\n\n if (!field.formControl && control) {\n defineHiddenProp(field, 'formControl', control);\n control.setValidators(null);\n control.setAsyncValidators(null);\n\n field.templateOptions.disabled = !!field.templateOptions.disabled;\n wrapProperty(field.templateOptions, 'disabled', ({ firstChange, currentValue }) => {\n if (!firstChange) {\n currentValue ? field.formControl.disable() : field.formControl.enable();\n }\n });\n if (control.registerOnDisabledChange) {\n control.registerOnDisabledChange(\n (value: boolean) => {\n field.templateOptions['___$disabled'] = value;\n // TODO remove in V6\n field.options && field.options._markForCheck(field);\n },\n );\n }\n }\n\n let parent = field.parent.formControl as FormGroup;\n if (!parent || !field.key) {\n return;\n }\n\n const paths = getKeyPath(field);\n const value = getFieldValue(field);\n if (\n !(isNullOrUndefined(control.value) && isNullOrUndefined(value))\n && control.value !== value\n && control instanceof FormControl\n ) {\n control.patchValue(value);\n }\n\n for (let i = 0; i < (paths.length - 1); i++) {\n const path = paths[i];\n if (!parent.get([path])) {\n updateControl(\n parent,\n { emitEvent },\n () => parent.setControl(path, new FormGroup({})),\n );\n }\n\n parent = <FormGroup> parent.get([path]);\n }\n\n const key = paths[paths.length - 1];\n if (!field._hide && parent.get([key]) !== control) {\n updateControl(\n parent,\n { emitEvent },\n () => parent.setControl(key, control),\n );\n }\n}\n\nexport function updateValidity(c: AbstractControl) {\n const status = c.status;\n c.updateValueAndValidity({ emitEvent: false });\n if (status !== c.status) {\n (c.statusChanges as EventEmitter<string>).emit(c.status);\n }\n}\n\nfunction updateControl(form: FormGroup|FormArray, opts: { emitEvent: boolean }, action: Function) {\n /**\n * workaround for https://github.com/angular/angular/issues/27679\n */\n if (form instanceof FormGroup && !form['__patchForEachChild']) {\n defineHiddenProp(form, '__patchForEachChild', true);\n (form as any)._forEachChild = (cb: Function) => {\n Object\n .keys(form.controls)\n .forEach(k => form.controls[k] && cb(form.controls[k], k));\n };\n }\n\n /**\n * workaround for https://github.com/angular/angular/issues/20439\n */\n const updateValueAndValidity = form.updateValueAndValidity.bind(form);\n if (opts.emitEvent === false) {\n form.updateValueAndValidity = (opts) => {\n updateValueAndValidity({ ...(opts || {}), emitEvent: false });\n };\n }\n\n action();\n\n if (opts.emitEvent === false) {\n form.updateValueAndValidity = updateValueAndValidity;\n }\n}\n\nexport function clearControl(form: AbstractControl) {\n form['_fields'] && delete form['_fields'];\n form.setValidators(null);\n form.setAsyncValidators(null);\n if (form instanceof FormGroup || form instanceof FormArray) {\n Object.keys(form.controls)\n .forEach((k) => clearControl(form.controls[k]));\n }\n}\n","import { Component, DoCheck, OnChanges, Input, SimpleChanges, Optional, EventEmitter, Output, OnDestroy, Attribute, ViewChild, ElementRef, NgZone } from '@angular/core';\nimport { FormGroup, FormArray, FormGroupDirective, FormControl } from '@angular/forms';\nimport { FormlyFieldConfig, FormlyFormOptions, FormlyFormOptionsCache } from './formly.field.config';\nimport { FormlyFormBuilder } from '../services/formly.form.builder';\nimport { FormlyConfig } from '../services/formly.config';\nimport { assignFieldValue, isNullOrUndefined, wrapProperty, clone, defineHiddenProp, getKeyPath, isObject } from '../utils';\nimport { Subscription, Subject } from 'rxjs';\nimport { debounceTime, switchMap, distinctUntilChanged, take } from 'rxjs/operators';\nimport { clearControl } from '../extensions/field-form/utils';\n\n@Component({\n selector: 'formly-form',\n template: `\n <formly-field *ngFor=\"let field of fields\"\n hide-deprecation\n [form]=\"field.form\"\n [options]=\"field.options\"\n [model]=\"field.model\"\n [field]=\"field\">\n </formly-field>\n <ng-container #content>\n <ng-content></ng-content>\n </ng-container>\n `,\n providers: [FormlyFormBuilder],\n})\nexport class FormlyForm implements DoCheck, OnChanges, OnDestroy {\n @Input() form: FormGroup | FormArray;\n\n @Input()\n set model(model: any) { this._model = this.immutable ? clone(model) : model; }\n get model() {\n if (!this._model) {\n this._model = {};\n }\n\n return this._model;\n }\n\n @Input()\n set fields(fields: FormlyFieldConfig[]) { this._fields = this.immutable ? clone(fields) : fields; }\n get fields() { return this._fields || []; }\n\n @Input()\n set options(options: FormlyFormOptions) { this._options = this.immutable ? clone(options) : options; }\n get options() { return this._options; }\n\n @Output() modelChange = new EventEmitter<any>();\n @ViewChild('content') set content(content: ElementRef<HTMLElement>) {\n if (content) {\n let hasContent = false;\n let node = content.nativeElement.nextSibling;\n while (node && !hasContent) {\n if (\n node.nodeType === Node.ELEMENT_NODE\n || node.nodeType === Node.TEXT_NODE && node.textContent && node.textContent.trim() !== ''\n ) {\n hasContent = true;\n }\n\n node = node.nextSibling;\n }\n\n if (hasContent) {\n console.warn(`NgxFormly: content projection for 'formly-form' component is deprecated since v5.5, you should avoid passing content inside the 'formly-form' tag.`);\n }\n }\n }\n\n private immutable = false;\n private _model: any;\n private _modelChangeValue: any = {};\n private _fields: FormlyFieldConfig[];\n private _options: FormlyFormOptions;\n private modelChangeSubs: Subscription[] = [];\n private modelChange$ = new Subject<void>();\n private modelChangeSub = this.modelChange$.pipe(\n switchMap(() => this.ngZone.onStable.asObservable().pipe(take(1))),\n ).subscribe(() => this.ngZone.runGuarded(() => {\n // runGuarded is used to keep the expression changes in-sync\n // https://github.com/ngx-formly/ngx-formly/issues/2095\n this.checkExpressionChange();\n this.modelChange.emit(this._modelChangeValue = clone(this.model));\n }));\n\n constructor(\n private formlyBuilder: FormlyFormBuilder,\n private formlyConfig: FormlyConfig,\n private ngZone: NgZone,\n // tslint:disable-next-line\n @Attribute('immutable') immutable,\n @Optional() private parentFormGroup: FormGroupDirective,\n ) {\n if (immutable !== null) {\n console.warn(`NgxFormly: passing 'immutable' attribute to 'formly-form' component is deprecated since v5.5, enable immutable mode through NgModule declaration instead.`);\n }\n\n this.immutable = (immutable !== null) || !!formlyConfig.extras.immutable;\n }\n\n ngDoCheck() {\n if (this.formlyConfig.extras.checkExpressionOn === 'changeDetectionCheck') {\n this.checkExpressionChange();\n }\n }\n\n ngOnChanges(changes: SimpleChanges) {\n // https://github.com/ngx-formly/ngx-formly/issues/2294\n if (changes.model && this.field) {\n this.field.model = this.model;\n }\n\n if (changes.fields && this.form) {\n clearControl(this.form);\n }\n\n if (changes.fields || changes.form || (changes.model && this._modelChangeValue !== changes.model.currentValue)) {\n this.form = this.form || (new FormGroup({}));\n this.setOptions();\n this.options.updateInitialValue();\n this.clearModelSubscriptions();\n this.formlyBuilder.buildForm(this.form, this.fields, this.model, this.options);\n this.trackModelChanges(this.fields);\n }\n }\n\n ngOnDestroy() {\n this.modelChangeSub.unsubscribe();\n this.clearModelSubscriptions();\n }\n\n changeModel({ key, value, field }: { key: string, value: any, field: FormlyFieldConfig }) {\n assignFieldValue(field, value);\n this.modelChange$.next();\n }\n\n setOptions() {\n if (!this.options) {\n this.options = {};\n }\n\n if (!this.options.resetModel) {\n this.options.resetModel = (model ?: any) => {\n model = clone(isNullOrUndefined(model) ? (<FormlyFormOptionsCache> this.options)._initialModel : model);\n if (this.model) {\n Object.keys(this.model).forEach(k => delete this.model[k]);\n Object.assign(this.model, model || {});\n }\n\n (<FormlyFormOptionsCache> this.options)._buildForm();\n\n // we should call `NgForm::resetForm` to ensure changing `submitted` state after resetting form\n // but only when the current component is a root one.\n if (this.options.parentForm && this.options.parentForm.control === this.form) {\n this.options.parentForm.resetForm(this.model);\n } else {\n this.form.reset(this.model);\n }\n };\n }\n\n if (!this.options.parentForm && this.parentFormGroup) {\n defineHiddenProp(this.options, 'parentForm', this.parentFormGroup);\n wrapProperty(this.options.parentForm, 'submitted', ({ firstChange }) => {\n if (!firstChange) {\n this.checkExpressionChange();\n (<FormlyFormOptionsCache> this.options)._markForCheck({\n fieldGroup: this.fields,\n model: this.model,\n formControl: this.form,\n options: this.options,\n });\n }\n });\n }\n\n if (!this.options.updateInitialValue) {\n this.options.updateInitialValue = () => (<FormlyFormOptionsCache> this.options)._initialModel = clone(this.model);\n }\n\n if (!(<FormlyFormOptionsCache> this.options)._buildForm) {\n (<FormlyFormOptionsCache> this.options)._buildForm = (emitModelChange = false) => {\n this.clearModelSubscriptions();\n this.formlyBuilder.buildForm(this.form, this.fields, this.model, this.options);\n this.trackModelChanges(this.fields);\n\n if (emitModelChange) {\n this.modelChange.emit(this._modelChangeValue = clone(this.model));\n }\n };\n }\n }\n\n private checkExpressionChange() {\n if (this.options && (<FormlyFormOptionsCache> this.options)._checkField) {\n (<FormlyFormOptionsCache> this.options)._checkField({\n fieldGroup: this.fields,\n model: this.model,\n formControl: this.form,\n options: this.options,\n });\n }\n }\n\n private trackModelChanges(fields: FormlyFieldConfig[], rootKey: string[] = []) {\n fields.forEach(field => {\n if (field.key && !field.fieldGroup && field.formControl) {\n const control = field.formControl;\n let valueChanges = control.valueChanges.pipe(\n distinctUntilChanged((x, y) => {\n if (x !== y || Array.isArray(x) || isObject(x)) {\n return false;\n }\n\n return true;\n }),\n );\n\n const { updateOn, debounce } = field.modelOptions;\n if ((!updateOn || updateOn === 'change') && debounce && debounce.default > 0) {\n valueChanges = control.valueChanges.pipe(debounceTime(debounce.default));\n }\n\n this.modelChangeSubs.push(valueChanges.subscribe((value) => {\n // workaround for https://github.com/angular/angular/issues/13792\n if (control instanceof FormControl && control['_fields'] && control['_fields'].length > 1) {\n control.patchValue(value, { emitEvent: false, onlySelf: true });\n }\n\n if (field.parsers && field.parsers.length > 0) {\n field.parsers.forEach(parserFn => value = parserFn(value));\n }\n\n this.changeModel({ key: [...rootKey, ...getKeyPath(field)].join('.'), value, field });\n }));\n\n // workaround for v5 (https://github.com/ngx-formly/ngx-formly/issues/2061)\n const observers = control.valueChanges['observers'];\n if (observers && observers.length > 1) {\n observers.unshift(observers.pop());\n }\n }\n\n if (field.fieldGroup && field.fieldGroup.length > 0) {\n this.trackModelChanges(field.fieldGroup, field.key ? [...rootKey, ...getKeyPath(field)] : rootKey);\n }\n });\n }\n\n private clearModelSubscriptions() {\n this.modelChangeSubs.forEach(sub => sub.unsubscribe());\n this.modelChangeSubs = [];\n }\n\n private get field(): any {\n return this.fields && this.fields[0] && this.fields[0].parent;\n }\n}\n","import {\n Component, EventEmitter, Input, Output,\n ViewContainerRef, ViewChild, ComponentRef, SimpleChanges, Attribute, ComponentFactoryResolver,\n OnInit, OnChanges, OnDestroy, DoCheck, AfterContentInit, AfterContentChecked, AfterViewInit, AfterViewChecked, Renderer2, ElementRef,\n} from '@angular/core';\nimport { FormGroup } from '@angular/forms';\nimport { FormlyConfig } from '../services/formly.config';\nimport { FormlyFieldConfig, FormlyFormOptions, FormlyFieldConfigCache } from './formly.field.config';\nimport { defineHiddenProp, wrapProperty } from '../utils';\nimport { FieldWrapper } from '../templates/field.wrapper';\nimport { FieldType } from '../templates/field.type';\nimport { isObservable } from 'rxjs';\n\n@Component({\n selector: 'formly-field',\n template: `<ng-template #container></ng-template>`,\n})\nexport class FormlyField implements OnInit, OnChanges, DoCheck, AfterContentInit, AfterContentChecked, AfterViewInit, AfterViewChecked, OnDestroy {\n @Input() field: FormlyFieldConfig;\n\n warnDeprecation = false;\n\n @Input() set model(m: any) {\n this.warnDeprecation && console.warn(`NgxFormly: passing 'model' input to '${this.constructor.name}' component is not required anymore, you may remove it!`);\n }\n\n @Input() set form(form: FormGroup) {\n this.warnDeprecation && console.warn(`NgxFormly: passing 'form' input to '${this.constructor.name}' component is not required anymore, you may remove it!`);\n }\n\n @Input() set options(options: FormlyFormOptions) {\n this.warnDeprecation && console.warn(`NgxFormly: passing 'options' input to '${this.constructor.name}' component is not required anymore, you may remove it!`);\n }\n\n @Output() modelChange: EventEmitter<any> = new EventEmitter();\n // TODO: remove `any`, once dropping angular `V7` support.\n @ViewChild('container', <any> {read: ViewContainerRef, static: true }) containerRef: ViewContainerRef;\n private hostObservers: Function[] = [];\n private componentRefs: any[] = [];\n private hooksObservers: Function[] = [];\n private detectFieldBuild = false;\n\n constructor(\n private formlyConfig: FormlyConfig,\n private renderer: Renderer2,\n private resolver: ComponentFactoryResolver,\n private elementRef: ElementRef,\n // tslint:disable-next-line\n @Attribute('hide-deprecation') hideDeprecation,\n ) {\n this.warnDeprecation = hideDeprecation === null;\n }\n\n ngAfterContentInit() {\n this.triggerHook('afterContentInit');\n }\n\n ngAfterContentChecked() {\n this.triggerHook('afterContentChecked');\n }\n\n ngAfterViewInit() {\n this.triggerHook('afterViewInit');\n }\n\n ngAfterViewChecked() {\n this.triggerHook('afterViewChecked');\n }\n\n ngDoCheck() {\n this.triggerHook('doCheck');\n if (this.detectFieldBuild && (this.field && this.field.options)) {\n this.render();\n }\n }\n\n ngOnInit() {\n this.triggerHook('onInit');\n }\n\n ngOnChanges(changes: SimpleChanges) {\n this.triggerHook('onChanges', changes);\n }\n\n ngOnDestroy() {\n this.resetRefs(this.field);\n this.hostObservers.forEach(unsubscribe => unsubscribe());\n this.hooksObservers.forEach(unsubscribe => unsubscribe());\n this.triggerHook('onDestroy');\n }\n\n private renderField(containerRef: ViewContainerRef, f: FormlyFieldConfigCache, wrappers: string[] = []) {\n if (this.containerRef === containerRef) {\n this.resetRefs(this.field);\n this.containerRef.clear();\n wrappers = this.field ? this.field.wrappers : [];\n }\n\n if (wrappers && wrappers.length > 0) {\n const [wrapper, ...wps] = wrappers;\n const { component } = this.formlyConfig.getWrapper(wrapper);\n\n const ref = containerRef.createComponent<FieldWrapper>(this.resolver.resolveComponentFactory(component));\n this.attachComponentRef(ref, f);\n wrapProperty<ViewContainerRef>(ref.instance, 'fieldComponent', ({ firstChange, previousValue, currentValue }) => {\n if (currentValue) {\n if (previousValue && previousValue['_lContainer'] === currentValue['_lContainer']) {\n return;\n }\n\n const viewRef = previousValue ? previousValue.detach() : null;\n if (viewRef && !viewRef.destroyed) {\n currentValue.insert(viewRef);\n } else {\n this.renderField(currentValue, f, wps);\n }\n\n !firstChange && ref.changeDetectorRef.detectChanges();\n }\n });\n } else if (f && f.type) {\n const { component } = this.formlyConfig.getType(f.type);\n const ref = containerRef.createComponent<FieldWrapper>(this.resolver.resolveComponentFactory(component));\n this.attachComponentRef(ref, f);\n }\n }\n\n private triggerHook(name: string, changes?: SimpleChanges) {\n if (this.field && this.field.hooks && this.field.hooks[name]) {\n if (!changes || changes.field) {\n const r = this.field.hooks[name](this.field);\n if (isObservable(r) && ['onInit', 'afterContentInit', 'afterViewInit'].indexOf(name) !== -1) {\n const sub = r.subscribe();\n this.hooksObservers.push(() => sub.unsubscribe());\n }\n }\n }\n\n if (this.field && this.field.lifecycle && this.field.lifecycle[name]) {\n this.field.lifecycle[name](\n this.field.form,\n this.field,\n this.field.model,\n this.field.options,\n );\n }\n\n if (name === 'onChanges' && changes.field) {\n this.resetRefs(changes.field.previousValue);\n this.render();\n }\n }\n\n private attachComponentRef<T extends FieldType>(ref: ComponentRef<T>, field: FormlyFieldConfigCache) {\n this.componentRefs.push(ref);\n field._componentRefs.push(ref);\n Object.assign(ref.instance, { field });\n }\n\n private render() {\n if (!this.field) {\n return;\n }\n\n // require Formly build\n if (!this.field.options) {\n this.detectFieldBuild = true;\n\n return;\n }\n\n this.detectFieldBuild = false;\n this.hostObservers.forEach(unsubscribe => unsubscribe());\n this.hostObservers = [\n wrapProperty(this.field, 'hide', ({ firstChange, currentValue }) => {\n if (!this.formlyConfig.extras.lazyRender) {\n firstChange && this.renderField(this.containerRef, this.field);\n if (!firstChange || (firstChange && currentValue)) {\n this.renderer.setStyle(this.elementRef.nativeElement, 'display', currentValue ? 'none' : '');\n }\n } else {\n if (currentValue) {\n this.containerRef.clear();\n if (this.field.className) {\n this.renderer.removeAttribute(this.elementRef.nativeElement, 'class');\n }\n } else {\n this.renderField(this.containerRef, this.field);\n if (this.field.className) {\n this.renderer.setAttribute(this.elementRef.nativeElement, 'class', this.field.className);\n }\n }\n }\n }),\n wrapProperty(this.field, 'className', ({ firstChange, currentValue }) => {\n if (\n (!firstChange || (firstChange && currentValue))\n && (!this.formlyConfig.extras.lazyRender || (this.field.hide !== true))\n ) {\n this.renderer.setAttribute(this.elementRef.nativeElement, 'class', currentValue);\n }\n }),\n ];\n }\n\n private resetRefs(field: FormlyFieldConfigCache) {\n if (field) {\n if (field._componentRefs) {\n field._componentRefs = field._componentRefs.filter(ref => this.componentRefs.indexOf(ref) === -1);\n } else {\n defineHiddenProp(this.field, '_componentRefs', []);\n }\n }\n\n this.componentRefs = [];\n }\n}\n","import { Directive, ElementRef, Input, OnChanges, SimpleChanges, Renderer2, DoCheck, Inject, OnDestroy } from '@angular/core';\nimport { FormlyFieldConfig, FormlyTemplateOptions } from './formly.field.config';\nimport { wrapProperty, defineHiddenProp, FORMLY_VALIDATORS } from '../utils';\nimport { DOCUMENT } from '@angular/common';\n\n@Directive({\n selector: '[formlyAttributes]',\n host: {\n '(focus)': 'onFocus($event)',\n '(blur)': 'onBlur($event)',\n '(change)': 'onChange($event)',\n },\n})\nexport class FormlyAttributes implements OnChanges, DoCheck, OnDestroy {\n @Input('formlyAttributes') field: FormlyFieldConfig;\n @Input() id: string;\n\n private document: Document;\n private uiAttributesCache: any = {};\n private uiAttributes = [\n ...FORMLY_VALIDATORS,\n 'tabindex',\n 'placeholder',\n 'readonly',\n 'disabled',\n 'step',\n ];\n\n /**\n * HostBinding doesn't register listeners conditionally which may produce some perf issues.\n *\n * Formly issue: https://github.com/ngx-formly/ngx-formly/issues/1991\n */\n private uiEvents = {\n listeners: [],\n events: [\n 'click',\n 'keyup',\n 'keydown',\n 'keypress',\n ],\n };\n\n get to(): FormlyTemplateOptions { return this.field.templateOptions || {}; }\n\n private get fieldAttrElements(): ElementRef[] { return (this.field && this.field['_elementRefs']) || []; }\n\n constructor(\n private renderer: Renderer2,\n private elementRef: ElementRef,\n @Inject(DOCUMENT) _document: any,\n ) {\n this.document = _document;\n }\n\n ngOnChanges(changes: SimpleChanges) {\n if (changes.field) {\n this.field.name && this.setAttribute('name', this.field.name);\n this.uiEvents.listeners.forEach(listener => listener());\n this.uiEvents.events.forEach(eventName => {\n if (this.to && this.to[eventName]) {\n this.uiEvents.listeners.push(\n this.renderer.listen(\n this.elementRef.nativeElement,\n eventName,\n (e) => this.to[eventName](this.field, e),\n ),\n );\n }\n });\n\n if (this.to && this.to.attributes) {\n wrapProperty(this.to, 'attributes', ({ currentValue, previousValue }) => {\n if (previousValue) {\n Object.keys(previousValue).forEach(attr => this.removeAttribute(attr));\n }\n\n if (currentValue) {\n Object.keys(currentValue).forEach(attr => {\n if (currentValue[attr] != null) {\n this.setAttribute(attr, currentValue[attr]);\n }\n });\n }\n });\n }\n\n this.detachElementRef(changes.field.previousValue);\n this.attachElementRef(changes.field.currentValue);\n if (this.fieldAttrElements.length === 1) {\n !this.id && this.field.id && this.setAttribute('id', this.field.id);\n wrapProperty(this.field, 'focus', ({ currentValue }) => {\n this.toggleFocus(currentValue);\n });\n }\n }\n\n if (changes.id) {\n this.setAttribute('id', this.id);\n }\n }\n\n /**\n * We need to re-evaluate all the attributes on every change detection cycle, because\n * by using a HostBinding we run into certain edge cases. This means that whatever logic\n * is in here has to be super lean or we risk seriously damaging or destroying the performance.\n *\n * Formly issue: https://github.com/ngx-formly/ngx-formly/issues/1317\n * Material issue: https://github.com/angular/components/issues/14024\n */\n ngDoCheck() {\n this.uiAttributes.forEach(attr => {\n const value = this.to[attr];\n if (\n this.uiAttributesCache[attr] !== value\n && (!this.to.attributes || !this.to.attributes.hasOwnProperty(attr.toLowerCase()))\n ) {\n this.uiAttributesCache[attr] = value;\n if (value || value === 0) {\n this.setAttribute(attr, value === true ? attr : `${value}`);\n } else {\n this.removeAttribute(attr);\n }\n }\n });\n }\n\n ngOnDestroy() {\n this.uiEvents.listeners.forEach(listener => listener());\n this.detachElementRef(this.field);\n }\n\n toggleFocus(value: boolean) {\n const element = this.fieldAttrElements ? this.fieldAttrElements[0] : null;\n if (!element || !element.nativeElement.focus) {\n return;\n }\n\n const isFocused = !!this.document.activeElement\n && this.fieldAttrElements\n .some(({ nativeElement }) => this.document.activeElement === nativeElement || nativeElement.contains(this.document.activeElement));\n\n if (value && !isFocused) {\n element.nativeElement.focus();\n } else if (!value && isFocused) {\n element.nativeElement.blur();\n }\n }\n\n onFocus($event: any) {\n this.field['___$focus'] = true;\n if (this.to.focus) {\n this.to.focus(this.field, $event);\n }\n }\n\n onBlur($event: any) {\n this.field['___$focus'] = false;\n if (this.to.blur) {\n this.to.blur(this.field, $event);\n }\n }\n\n onChange($event: any) {\n if (this.to.change) {\n this.to.change(this.field, $event);\n }\n\n if (this.field.formControl) {\n this.field.formControl.markAsDirty();\n }\n }\n\n private attachElementRef(f: FormlyFieldConfig) {\n if (!f) {\n return;\n }\n\n if (f['_elementRefs'] && f['_elementRefs'].indexOf(this.elementRef) === -1) {\n f['_elementRefs'].push(this.elementRef);\n } else {\n defineHiddenProp(f, '_elementRefs', [this.elementRef]);\n }\n }\n\n private detachElementRef(f: FormlyFieldConfig) {\n const index = f && f['_elementRefs'] ? this.fieldAttrElements.indexOf(this.elementRef) : -1;\n if (index !== -1) {\n this.field['_elementRefs'].splice(index, 1);\n }\n }\n\n private setAttribute(attr: string, value: string) {\n this.renderer.setAttribute(this.elementRef.nativeElement, attr, value);\n }\n\n private removeAttribute(attr: string) {\n this.renderer.removeAttribute(this.elementRef.nativeElement, attr);\n }\n}\n","import { Input } from '@angular/core';\nimport { FormGroup } from '@angular/forms';\nimport { FormlyFieldConfig } from '../components/formly.field.config';\n\nexport abstract class FieldType<F extends FormlyFieldConfig = FormlyFieldConfig> {\n @Input() field: F;\n defaultOptions?: F;\n\n @Input()\n get model() { return this.field.model; }\n set model(m: any) { console.warn(`NgxFormly: passing 'model' input to '${this.constructor.name}' component is not required anymore, you may remove it!`); }\n\n @Input()\n get form() { return <FormGroup> this.field.parent.formControl; }\n set form(form) { console.warn(`NgxFormly: passing 'form' input to '${this.constructor.name}' component is not required anymore, you may remove it!`); }\n\n @Input()\n get options() { return this.field.options; }\n set options(options: F['options']) { console.warn(`NgxFormly: passing 'options' input to '${this.constructor.name}' component is not required anymore, you may remove it!`); }\n\n get key() { return this.field.key; }\n\n get formControl() { return this.field.formControl; }\n\n get to() { return this.field.templateOptions || {}; }\n\n get showError(): boolean { return this.options.showError(this); }\n\n get id(): string { return this.field.id; }\n\n get formState() { return this.options.formState || {}; }\n}\n\n/**\n * @deprecated use `FieldType` instead\n */\nexport abstract class Field extends FieldType {\n constructor() {\n super();\n console.warn(`NgxFormly: 'Field' has been renamed to 'FieldType', extend 'FieldType' instead.`);\n }\n}\n","import { Inject, Optional } from '@angular/core';\nimport { FormArray } from '@angular/forms';\nimport { FieldType } from './field.type';\nimport { clone, isNullOrUndefined, assignFieldValue } from '../utils';\nimport { FormlyFormBuilder } from '../services/formly.form.builder';\nimport { FormlyFieldConfig } from '../components/formly.field.config';\nimport { FORMLY_CONFIG, FormlyExtension } from '../services/formly.config';\nimport { registerControl, unregisterControl, findControl } from '../extensions/field-form/utils';\nimport { Directive } from '@angular/core';\n\n// TODO remove `selector` in V6\n// tslint:disable-next-line\n@Directive({ selector: '[ɵfieldArray]' })\nexport abstract class FieldArrayType<F extends FormlyFieldConfig = FormlyFieldConfig> extends FieldType<F> implements FormlyExtension {\n get formControl() {\n return this.field.formControl as FormArray;\n }\n\n defaultOptions: any = {\n defaultValue: [],\n };\n\n constructor(@Inject(FORMLY_CONFIG) @Optional() builder?: FormlyFormBuilder) {\n super();\n\n if (builder instanceof FormlyFormBuilder) {\n console.warn(`NgxFormly: passing 'FormlyFormBuilder' to '${this.constructor.name}' type is not required anymore, you may remove it!`);\n }\n }\n\n onPopulate(field: FormlyFieldConfig) {\n if (!field.formControl && field.key) {\n const control = findControl(field);\n registerControl(field, control ? control : new FormArray([], { updateOn: field.modelOptions.updateOn }));\n }\n\n field.fieldGroup = field.fieldGroup || [];\n\n const length = field.model ? field.model.length : 0;\n if (field.fieldGroup.length > length) {\n for (let i = field.fieldGroup.length - 1; i >= length; --i) {\n unregisterControl(field.fieldGroup[i]);\n field.fieldGroup.splice(i, 1);\n }\n }\n\n for (let i = field.fieldGroup.length; i < length; i++) {\n const f = { ...clone(field.fieldArray), key: `${i}` };\n field.fieldGroup.push(f);\n }\n }\n\n add(i?: number, initialModel?: any, { markAsDirty } = { markAsDirty: true }) {\n i = isNullOrUndefined(i) ? this.field.fieldGroup.length : i;\n if (!this.model) {\n assignFieldValue(this.field, []);\n }\n\n this.model.splice(i, 0, initialModel ? clone(initialModel) : undefined);\n\n (<any> this.options)._buildForm(true);\n markAsDirty && this.formControl.markAsDirty();\n }\n\n remove(i: number, { markAsDirty } = { markAsDirty: true }) {\n this.model.splice(i, 1);\n unregisterControl(this.field.fieldGroup[i], true);\n this.field.fieldGroup.splice(i, 1);\n this.field.fieldGroup.forEach((f, key) => f.key = `${key}`);\n\n (<any> this.options)._buildForm(true);\n markAsDirty && this.formControl.markAsDirty();\n }\n}\n","import { ViewContainerRef, ViewChild } from '@angular/core';\nimport { FieldType } from './field.type';\nimport { FormlyFieldConfig } from '../components/formly.field.config';\n\nexport abstract class FieldWrapper<F extends FormlyFieldConfig = FormlyFieldConfig> extends FieldType<F> {\n // TODO: remove `any`, once dropping angular `V7` support.\n @ViewChild('fieldComponent', <any>{ read: ViewContainerRef, static: false }) fieldComponent: ViewContainerRef;\n}\n","import { Component } from '@angular/core';\nimport { FieldType } from './field.type';\n\n@Component({\n selector: 'formly-group',\n template: `\n <formly-field *ngFor=\"let f of field.fieldGroup\" [field]=\"f\"></formly-field>\n <ng-content></ng-content>\n `,\n host: {\n '[class]': 'field.fieldGroupClassName || \"\"',\n },\n})\nexport class FormlyGroup extends FieldType {\n defaultOptions = {\n defaultValue: {},\n };\n}\n","import { Component, Input, ChangeDetectionStrategy, OnChanges } from '@angular/core';\nimport { FormlyConfig, ValidationMessageOption } from '../services/formly.config';\nimport { FormlyFieldConfig } from '../components/formly.field.config';\nimport { isObject } from '../utils';\nimport { Observable, isObservable, of } from 'rxjs';\nimport { startWith, switchMap } from 'rxjs/operators';\n\n@Component({\n selector: 'formly-validation-message',\n template: `{{ errorMessage$ | async }}`,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class FormlyValidationMessage implements OnChanges {\n @Input() field: FormlyFieldConfig;\n errorMessage$: Observable<string>;\n\n constructor(private formlyConfig: FormlyConfig) {}\n\n ngOnChanges() {\n this.errorMessage$ = this.field.formControl.statusChanges.pipe(\n startWith(null),\n switchMap(() => isObservable(this.errorMessage)\n ? this.errorMessage\n : of(this.errorMessage),\n ),\n );\n }\n\n get errorMessage() {\n const fieldForm = this.field.formControl;\n for (let error in fieldForm.errors) {\n if (fieldForm.errors.hasOwnProperty(error)) {\n let message: ValidationMessageOption['message'] = this.formlyConfig.getValidatorMessage(error);\n\n if (isObject(fieldForm.errors[error])) {\n if (fieldForm.errors[error].errorPath) {\n return;\n }\n\n if (fieldForm.errors[error].message) {\n message = fieldForm.errors[error].message;\n }\n }\n\n if (this.field.validation && this.field.validation.messages && this.field.validation.messages[error]) {\n message = this.field.validation.messages[error];\n }\n\n if (this.field.validators && this.field.validators[error] && this.field.validators[error].message) {\n message = this.field.validators[error].message;\n }\n\n if (this.field.asyncValidators && this.field.asyncValidators[error] && this.field.asyncValidators[error].message) {\n message = this.field.asyncValidators[error].message;\n }\n\n if (typeof message === 'function') {\n return message(fieldForm.errors[error], this.field);\n }\n\n return message;\n }\n }\n }\n}\n","import { Component } from '@angular/core';\nimport { DomSanitizer } from '@angular/platform-browser';\nimport { FieldType } from './field.type';\n\n@Component({\n selector: 'formly-template',\n template: `<div [innerHtml]=\"template\"></div>`,\n})\nexport class FormlyTemplateType extends FieldType {\n get template() {\n if (this.field && (this.field.template !== this.innerHtml.template)) {\n this.innerHtml = {\n template: this.field.template,\n content: this.to.safeHtml\n ? this.sanitizer.bypassSecurityTrustHtml(this.field.template)\n : this.field.template,\n };\n }\n\n return this.innerHtml.content;\n }\n\n private innerHtml = { content: null, template: null };\n constructor(private sanitizer: DomSanitizer) {\n super();\n }\n}\n","export function evalStringExpression(expression: string, argNames: string[]) {\n try {\n if (expression.indexOf('this.field') !== -1) {\n console.warn(`NgxFormly: using 'this.field' in expressionProperties is deprecated since v5.1, use 'field' instead.`);\n }\n\n return Function(...argNames, `return ${expression};`) as any;\n } catch (error) {\n console.error(error);\n }\n}\n\nexport function evalExpressionValueSetter(expression: string, argNames: string[]) {\n try {\n return Function(...argNames, `${expression} = expressionValue;`) as (value: any) => void;\n } catch (error) {\n console.error(error);\n }\n}\n\nexport function evalExpression(expression: string | Function | boolean, thisArg: any, argVal: any[]): any {\n if (expression instanceof Function) {\n return expression.apply(thisArg, argVal);\n } else {\n return expression ? true : false;\n }\n}\n","import { FormlyFieldConfig, FormlyValueChangeEvent, FormlyFieldConfigCache } from '../../components/formly.field.config';\nimport { isObject, isNullOrUndefined, isUndefined, isFunction, defineHiddenProp, wrapProperty, reduceFormUpdateValidityCalls, getFieldValue, assignFieldValue } from '../../utils';\nimport { evalExpression, evalStringExpression } from './utils';\nimport { isObservable, Observable, Subscription } from 'rxjs';\nimport { FormlyExtension } from '../../services/formly.config';\nimport { unregisterControl, registerControl, updateValidity } from '../field-form/utils';\nimport { FormArray } from '@angular/forms';\n\n/** @experimental */\nexport class FieldExpressionExtension implements FormlyExtension {\n prePopulate(field: FormlyFieldConfigCache) {\n if (field.parent || field.options._checkField) {\n return;\n }\n\n let checkLocked = false;\n field.options._checkField = (f, ignoreCache) => {\n if (!checkLocked) {\n checkLocked = true;\n reduceFormUpdateValidityCalls(\n f.formControl,\n () => this.checkField(f, ignoreCache),\n );\n checkLocked = false;\n }\n };\n }\n\n postPopulate(field: FormlyFieldConfigCache) {\n if (!field.parent || field._expressionProperties) {\n return;\n }\n\n // cache built expression\n defineHiddenProp(field, '_expressionProperties', {});\n\n if (field.expressionProperties) {\n for (const key in field.expressionProperties) {\n const expressionProperty = field.expressionProperties[key];\n\n if (typeof expressionProperty === 'string' || isFunction(expressionProperty)) {\n field._expressionProperties[key] = {\n expression: this._evalExpression(\n key,\n expressionProperty,\n key === 'templateOptions.disabled' && field.parent.expressionProperties && field.parent.expressionProperties.hasOwnProperty('templateOptions.disabled')\n ? () => field.parent.templateOptions.disabled\n : undefined,\n ),\n };\n if (key === 'templateOptions.disabled') {\n Object.defineProperty(field._expressionProperties[key], 'expressionValue', {\n get: () => field.templateOptions.disabled,\n set: () => { },\n enumerable: true,\n configurable: true,\n });\n }\n } else if (expressionProperty instanceof Observable) {\n const subscribe = () => (expressionProperty as Observable<any>)\n .subscribe(v => {\n this.setExprValue(field, key, v);\n if (field.options && field.options._markForCheck) {\n field.options._markForCheck(field);\n }\n });\n\n let subscription: Subscription = subscribe();\n const onInit = field.hooks.onInit;\n field.hooks.onInit = () => {\n if (subscription === null) {\n subscription = subscribe();\n }\n return onInit && onInit(field);\n };\n\n const onDestroy = field.hooks.onDestroy;\n field.hooks.onDestroy = () => {\n onDestroy && onDestroy(field);\n subscription.unsubscribe();\n subscription = null;\n };\n }\n }\n }\n\n if (field.hideExpression) {\n // delete hide value in order to force re-evaluate it in FormlyFormExpression.\n delete field.hide;\n\n field.hideExpression = this._evalExpression(\n 'hide',\n field.hideExpression,\n () => {\n let root = field.parent;\n while (root.parent && !root.hide) {\n root = root.parent;\n }\n\n return root.hide;\n },\n );\n } else {\n wrapProperty(field, 'hide', ({ currentValue, firstChange }) => {\n field._hide = currentValue;\n if (!firstChange || (firstChange && currentValue === true)) {\n field.options._hiddenFieldsForCheck.push(field);\n }\n });\n }\n }\n\n private _evalExpression(prop: string, expression, parentExpression?) {\n return (...args) => {\n try {\n if (typeof expression === 'string') {\n expression = evalStringExpression(expression, ['model', 'formState', 'field']);\n }\n\n if (typeof expression !== 'function') {\n expression = () => !!expression;\n }\n\n return (parentExpression && parentExpression()) || expression(...args);\n } catch (error) {\n error.message = `[Formly Error] [Expression \"${prop}\"] ${error.message}`;\n throw error;\n }\n };\n }\n\n private checkField(field: FormlyFieldConfigCache, ignoreCache = false) {\n const fieldChanged = this._checkField(field, ignoreCache);\n\n field.options._hiddenFieldsForCheck\n .sort(f => f.hide ? -1 : 1)\n .forEach(f => this.toggleFormControl(f, !!f.hide, !ignoreCache));\n\n field.options._hiddenFieldsForCheck = [];\n if (fieldChanged) {\n this.checkField(field);\n if (field.options && field.options._markForCheck) {\n field.options._markForCheck(field);\n }\n }\n }\n\n private _checkField(field: FormlyFieldConfigCache, ignoreCache = false) {\n let fieldChanged = false;\n field.fieldGroup.forEach(f => {\n if (!f.options) {\n return;\n }\n\n this.checkFieldExpressionChange(f, ignoreCache) && (fieldChanged = true);\n if (this.checkFieldVisibilityChange(f, ignoreCache)) {\n field.options._hiddenFieldsForCheck.push(f);\n fieldChanged = true;\n }\n\n if (f.fieldGroup && f.fieldGroup.length > 0) {\n this._checkField(f, ignoreCache) && (fieldChanged = true);\n }\n });\n\n return fieldChanged;\n }\n\n private checkFieldExpressionChange(field: FormlyFieldConfigCache, ignoreCache): boolean {\n if (!field || !field._expressionProperties) {\n return false;\n }\n\n let markForCheck = false;\n const expressionProperties = field._expressionProperties;\n\n for (const key in expressionProperties) {\n let expressionValue = evalExpression(expressionProperties[key].expression, { field }, [field.model, field.options.formState, field, ignoreCache]);\n if (key === 'templateOptions.disabled') {\n expressionValue = !!expressionValue;\n }\n\n if (\n ignoreCache || (\n expressionProperties[key].expressionValue !== expressionValue\n && (\n !(isObject(expressionValue) || isFunction(expressionValue))\n || (\n isFunction(expressionValue)\n && ('' + expressionProperties[key].expressionValue !== '' + expressionValue)\n )\n || isObservable(expressionValue)\n || JSON.stringify(expressionValue) !== JSON.stringify(expressionProperties[key].expressionValue)\n )\n )\n ) {\n markForCheck = true;\n expressionProperties[key].expressionValue = expressionValue;\n this.setExprValue(field, key, expressionValue);\n }\n }\n\n return markForCheck;\n }\n\n private checkFieldVisibilityChange(field: FormlyFieldConfigCache, ignoreCache): boolean {\n if (!field || isNullOrUndefined(field.hideExpression)) {\n return false;\n }\n\n const hideExpressionResult: boolean = !!evalExpression(\n field.hideExpression,\n { field },\n [field.model, field.options.formState, field, ignoreCache],\n );\n let markForCheck = false;\n if (hideExpressionResult !== field.hide || ignoreCache) {\n markForCheck = true;\n // toggle hide\n field.hide = hideExpressionResult;\n field.templateOptions.hidden = hideExpressionResult;\n }\n\n return markForCheck;\n }\n\n private setDisabledState(field: FormlyFieldConfig, value: boolean) {\n if (field.fieldGroup) {\n field.fieldGroup\n .filter(f => !f.expressionProperties || !f.expressionProperties.hasOwnProperty('templateOptions.disabled'))\n .forEach(f => this.setDisabledState(f, value));\n }\n\n if (field.key && field.templateOptions.disabled !== value) {\n field.templateOptions.disabled = value;\n }\n }\n\n private toggleFormControl(field: FormlyFieldConfigCache, hide: boolean, resetOnHide: boolean) {\n if (field.fieldGroup) {\n field.fieldGroup\n .filter(f => !f.hideExpression)\n .forEach(f => this.toggleFormControl(f, hide, resetOnHide));\n }\n\n if (field.formControl && field.key) {\n defineHiddenProp(field, '_hide', !!(hide || field.hide));\n const c = field.formControl;\n if (c['_fields'] && c['_fields'].length > 1) {\n updateValidity(c);\n }\n\n if (hide === true && (!c['_fields'] || c['_fields'].every(f => !!f._hide))) {\n unregisterControl(field, true);\n if (resetOnHide && field.resetOnHide) {\n field.formControl.reset({ value: undefined, disabled: field.formControl.disabled });\n if (field.fieldGroup) {\n assignFieldValue(field, undefined);\n\n if (field.formControl instanceof FormArray) {\n field.fieldGroup.length = 0;\n }\n }\n }\n } else if (hide === false) {\n if (field.resetOnHide && field.parent && !isUndefined(field.defaultValue) && isUndefined(getFieldValue(field))) {\n assignFieldValue(field, field.defaultValue);\n }\n registerControl(field, undefined, true);\n if (field.resetOnHide && field.fieldArray && (field.fieldGroup || []).length !== (field.model || []).length) {\n (<any> field.options)._buildForm(true);\n }\n }\n }\n\n if (field.options.fieldChanges) {\n field.options.fieldChanges.next(<FormlyValueChangeEvent> { field, type: 'hidden', value: hide });\n }\n }\n\n private setExprValue(field: FormlyFieldConfigCache, prop: string, value: any) {\n try {\n let target = field;\n const paths = prop.indexOf('[') === -1\n ? prop.split('.')\n : prop\n .replace(/\\'|\\\"/g, '')\n .split(/[[\\]]{1,2}/) // https://stackoverflow.com/a/20198206\n .filter(v => v)\n ;\n const lastIndex = paths.length - 1;\n for (let i = 0; i < lastIndex; i++) {\n target = target[paths[i]];\n }\n\n target[paths[lastIndex]] = value;\n } catch (error) {\n error.message = `[Formly Error] [Expression \"${prop}\"] ${error.message}`;\n throw error;\n }\n\n if (prop === 'templateOptions.disabled' && field.key) {\n this.setDisabledState(field, value);\n }\n\n if (prop.indexOf('model.') === 0) {\n const path = prop.replace(/^model\\./, ''),\n control = field.key && prop === path ? field.formControl : field.parent.formControl.get(path);\n\n if (\n control\n && !(isNullOrUndefined(control.value) && isNullOrUndefined(value))\n && control.value !== value\n ) {\n control.patchValue(value);\n }\n }\n\n this.emitExpressionChanges(field, prop, value);\n }\n\n private emitExpressionChanges(field: FormlyFieldConfigCache, property: string, value: any) {\n if (!field.options.fieldChanges) {\n return;\n }\n\n field.options.fieldChanges.next({\n field: field,\n type: 'expressionChanges',\n property,\n value,\n });\n }\n}\n","import { FormlyExtension, FormlyConfig, ValidatorOption } from '../../services/formly.config';\nimport { FormlyFieldConfigCache } from '../../components/formly.field.config';\nimport { AbstractControl, Validators, ValidatorFn } from '@angular/forms';\nimport { FORMLY_VALIDATORS, defineHiddenProp, isPromise, wrapProperty, clone, isObject } from '../../utils';\nimport { updateValidity } from '../field-form/utils';\nimport { isObservable } from 'rxjs';\nimport { map } from 'rxjs/operators';\n\n/** @experimental */\nexport class FieldValidationExtension implements FormlyExtension {\n constructor(private formlyConfig: FormlyConfig) {}\n\n onPopulate(field: FormlyFieldConfigCache) {\n this.initFieldValidation(field, 'validators');\n this.initFieldValidation(field, 'asyncValidators');\n }\n\n private initFieldValidation(field: FormlyFieldConfigCache, type: 'validators' | 'asyncValidators') {\n const validators: ValidatorFn[] = [];\n if (type === 'validators' && !(field.hasOwnProperty('fieldGroup') && !field.key)) {\n validators.push(this.getPredefinedFieldValidation(field));\n }\n\n if (field[type]) {\n for (const validatorName in field[type]) {\n if (validatorName === 'validation' && !Array.isArray(field[type].validation)) {\n field[type].validation = [field[type].validation];\n console.warn(`NgxFormly(${field.key}): passing a non array value to the 'validation' is deprecated, pass an array instead`);\n }\n\n validatorName === 'validation'\n ? validators.push(...field[type].validation.map(v => this.wrapNgValidatorFn(field, v)))\n : validators.push(this.wrapNgValidatorFn(field, field[type][validatorName], validatorName))\n ;\n }\n }\n\n defineHiddenProp(field, '_' + type, validators);\n }\n\n private getPredefinedFieldValidation(field: FormlyFieldConfigCache): ValidatorFn {\n let VALIDATORS = [];\n FORMLY_VALIDATORS.forEach(opt => wrapProperty(field.templateOptions, opt, ({ currentValue, firstChange }) => {\n VALIDATORS = VALIDATORS.filter(o => o !== opt);\n if (currentValue != null && currentValue !== false) {\n VALIDATORS.push(opt);\n }\n if (!firstChange && field.formControl) {\n updateValidity(field.formControl);\n }\n }));\n\n return (control: AbstractControl) => {\n if (VALIDATORS.length === 0) {\n return null;\n }\n\n return Validators.compose(VALIDATORS.map(opt => () => {\n const value = field.templateOptions[opt];\n switch (opt) {\n case 'required':\n return Validators.required(control);\n case 'pattern':\n return Validators.pattern(value)(control);\n case 'minLength':\n return Validators.minLength(value)(control);\n case 'maxLength':\n return Validators.maxLength(value)(control);\n case 'min':\n return Validators.min(value)(control);\n case 'max':\n return Validators.max(value)(control);\n }\n }))(control);\n };\n }\n\n private wrapNgValidatorFn(field: FormlyFieldConfigCache, validator: any, validatorName?: string) {\n let validatorOption: ValidatorOption = null;\n if (typeof validator === 'string') {\n validatorOption = clone(this.formlyConfig.getValidator(validator));\n }\n\n if (typeof validator === 'object' && validator.name) {\n validatorOption = clone(this.formlyConfig.getValidator(validator.name));\n if (validator.options) {\n validatorOption.options = validator.options;\n }\n }\n\n if (typeof validator === 'object' && validator.expression) {\n const { expression, ...options } = validator;\n validatorOption = {\n name: validatorName,\n validation: expression,\n options: Object.keys(options).length > 0 ? options : null,\n };\n }\n\n if (typeof validator === 'function') {\n validatorOption = {\n name: validatorName,\n validation: validator,\n };\n }\n\n return (control: AbstractControl) => {\n const errors: any = validatorOption.validation(control, field, validatorOption.options);\n if (isPromise(errors)) {\n return errors.then(v => this.handleAsyncResult(field, validatorName ? !!v : v, validatorOption));\n }\n\n if (isObservable(errors)) {\n return errors.pipe(map(v => this.handleAsyncResult(field, validatorName ? !!v : v, validatorOption)));\n }\n\n return this.handleResult(field, validatorName ? !!errors : errors, validatorOption);\n };\n }\n\n private handleAsyncResult(field: FormlyFieldConfigCache, errors: any, options: ValidatorOption) {\n // workaround for https://github.com/angular/angular/issues/13200\n if (field.options && field.options._markForCheck) {\n field.options._markForCheck(field);\n }\n\n return this.handleResult(field, errors, options);\n }\n\n private handleResult(field: FormlyFieldConfigCache, errors: any, { name, options }: ValidatorOption) {\n if (typeof errors === 'boolean') {\n errors = errors ? null : { [name]: options ? options : true };\n }\n\n const ctrl = field.formControl;\n ctrl['_childrenErrors'] && ctrl['_childrenErrors'][name] && ctrl['_childrenErrors'][name]();\n\n if (isObject(errors)) {\n Object.keys(errors).forEach(name => {\n const errorPath = errors[name].errorPath\n ? errors[name].errorPath\n : (options || {}).errorPath;\n\n const childCtrl = errorPath ? field.formControl.get(errorPath) : null;\n if (childCtrl) {\n const { errorPath, ...opts } = errors[name];\n childCtrl.setErrors({ ...(childCtrl.errors || {}), [name]: opts });\n\n !ctrl['_childrenErrors'] && defineHiddenProp(ctrl, '_childrenErrors', {});\n ctrl['_childrenErrors'][name] = () => {\n const { [name]: toDelete, ...childErrors } = childCtrl.errors || {};\n childCtrl.setErrors(Object.keys(childErrors).length === 0 ? null : childErrors);\n };\n }\n });\n }\n\n return errors;\n }\n}\n","import { FormlyExtension, FormlyConfig } from '../../services/formly.config';\nimport { FormlyFieldConfigCache } from '../../components/formly.field.config';\nimport { FormGroup, FormControl, AbstractControlOptions, Validators, ValidatorFn, AsyncValidatorFn } from '@angular/forms';\nimport { getFieldValue, defineHiddenProp } from '../../utils';\nimport { registerControl, findControl, updateValidity as updateControlValidity } from './utils';\nimport { of } from 'rxjs';\n\n/** @experimental */\nexport class FieldFormExtension implements FormlyExtension {\n constructor(private config: FormlyConfig) { }\n\n onPopulate(field: FormlyFieldConfigCache) {\n if (!field.parent) {\n return;\n }\n\n if (field.fieldGroup && !field.key) {\n defineHiddenProp(field, 'formControl', field.parent.formControl);\n } else {\n this.addFormControl(field);\n }\n }\n\n postPopulate(field: FormlyFieldConfigCache) {\n if (field.parent) {\n return;\n }\n\n const fieldsToUpdate = this.setValidators(field);\n if (fieldsToUpdate.length === 0) {\n return;\n }\n\n if (fieldsToUpdate.length === 1) {\n let control = fieldsToUpdate[0].formControl;\n while (control) {\n (control as any)._updateTreeValidity({ onlySelf: true });\n control = control.parent;\n }\n } else {\n (field.formControl as any)._updateTreeValidity();\n }\n }\n\n private addFormControl(field: FormlyFieldConfigCache) {\n let control = findControl(field);\n if (!control) {\n const controlOptions: AbstractControlOptions = { updateOn: field.modelOptions.updateOn };\n const value = field.key ? getFieldValue(field) : field.defaultValue;\n\n const ref = this.config ? this.config.resolveFieldTypeRef(field) : null;\n if (ref && ref.componentType && ref.componentType['createControl']) {\n const component = ref.componentType;\n console.warn(`NgxFormly: '${component.name}::createControl' is deprecated since v5.0, use 'prePopulate' hook instead.`);\n control = component['createControl'](value, field);\n } else if (field.fieldGroup) {\n // TODO: move to postPopulate\n control = new FormGroup({}, controlOptions);\n } else {\n control = new FormControl(value, controlOptions);\n }\n }\n\n registerControl(field, control);\n }\n\n private setValidators(field: FormlyFieldConfigCache) {\n let updateValidity = false;\n if (field.key || !field.parent || (!field.key && !field.fieldGroup)) {\n const { formControl: c } = field;\n const disabled = field.templateOptions ? field.templateOptions.disabled : false;\n if (field.key && c) {\n if (disabled && c.enabled) {\n c.disable({ emitEvent: false, onlySelf: true });\n if (!c.parent) {\n updateControlValidity(c);\n } else {\n updateValidity = true;\n }\n }\n\n if (!disabled && c.disabled) {\n c.enable({ emitEvent: false, onlySelf: true });\n if (!c.parent) {\n updateControlValidity(c);\n } else {\n updateValidity = true;\n }\n }\n }\n\n\n if (c && (null === c.validator || null === c.asyncValidator)) {\n c.setValidators(() => {\n const v = Validators.compose(this.mergeValidators<ValidatorFn>(field, '_validators'));\n\n return v ? v(c) : null;\n });\n c.setAsyncValidators(() => {\n const v = Validators.composeAsync(this.mergeValidators<AsyncValidatorFn>(field, '_asyncValidators'));\n\n return v ? v(c) : of(null);\n });\n\n if (!c.parent) {\n updateControlValidity(c);\n } else {\n updateValidity = true;\n }\n }\n }\n\n const fieldsToUpdate = updateValidity ? [field] : [];\n (field.fieldGroup || []).forEach(f => {\n const childrenToUpdate = this.setValidators(f);\n if (!updateValidity) {\n fieldsToUpdate.push(...childrenToUpdate);\n }\n });\n\n return fieldsToUpdate;\n }\n\n private mergeValidators<T>(field: FormlyFieldConfigCache, type: '_validators' | '_asyncValidators'): T[] {\n const validators: any = [];\n const c = field.formControl;\n if (c && c['_fields'] && c['_fields'].length > 1) {\n c['_fields']\n .filter((f: FormlyFieldConfigCache) => !f._hide)\n .forEach((f: FormlyFieldConfigCache) => validators.push(...f[type]));\n } else if (field[type]) {\n validators.push(...field[type]);\n }\n\n if (field.fieldGroup) {\n field.fieldGroup\n .filter(f => !f.key && f.fieldGroup)\n .forEach(f => validators.push(...this.mergeValidators(f, type)));\n }\n\n return validators;\n }\n}\n","import { FormlyExtension, FormlyConfig, TemplateManipulators } from '../../services/formly.config';\nimport { FormlyFieldConfigCache, FormlyFieldConfig } from '../../components/formly.field.config';\nimport { FormGroup } from '@angular/forms';\nimport { getFieldId, isUndefined, getFieldValue, reverseDeepMerge, assignFieldValue } from '../../utils';\n\n/** @experimental */\nexport class CoreExtension implements FormlyExtension {\n private formId = 0;\n constructor(private formlyConfig: FormlyConfig) { }\n\n prePopulate(field: FormlyFieldConfigCache) {\n this.getFieldComponentInstance(field).prePopulate();\n if (field.parent) {\n return;\n }\n\n const fieldTransforms = (field.options && field.options.fieldTransform) || this.formlyConfig.extras.fieldTransform;\n (Array.isArray(fieldTransforms) ? fieldTransforms : [fieldTransforms]).forEach(fieldTransform => {\n if (fieldTransform) {\n console.warn(`NgxFormly: fieldTransform is deprecated since v5.0, use custom extension instead.`);\n const fieldGroup = fieldTransform(field.fieldGroup, field.model, <FormGroup>field.formControl, field.options);\n if (!fieldGroup) {\n throw new Error('fieldTransform must return an array of fields');\n }\n }\n });\n }\n\n onPopulate(field: FormlyFieldConfigCache) {\n this.initFieldOptions(field);\n this.getFieldComponentInstance(field).onPopulate();\n if (field.fieldGroup) {\n field.fieldGroup.forEach((f, index) => {\n Object.defineProperty(f, 'parent', { get: () => field, configurable: true });\n Object.defineProperty(f, 'index', { get: () => index, configurable: true });\n this.formId++;\n });\n }\n }\n\n postPopulate(field: FormlyFieldConfigCache) {\n this.getFieldComponentInstance(field).postPopulate();\n }\n\n private initFieldOptions(field: FormlyFieldConfigCache) {\n const root = <FormlyFieldConfigCache> field.parent;\n if (!root) {\n return;\n }\n\n Object.defineProperty(field, 'form', { get: () => root.formControl, configurable: true });\n Object.defineProperty(field, 'options', { get: () => root.options, configurable: true });\n Object.defineProperty(field, 'model', {\n get: () => field.key && field.fieldGroup ? getFieldValue(field) : root.model,\n configurable: true,\n });\n\n reverseDeepMerge(field, {\n id: getFieldId(`formly_${this.formId}`, field, field['index']),\n hooks: {},\n modelOptions: {},\n templateOptions: !field.type || !field.key ? {} : {\n label: '',\n placeholder: '',\n focus: false,\n disabled: false,\n },\n });\n\n if (this.formlyConfig.extras.resetFieldOnHide && field.resetOnHide !== false) {\n field.resetOnHide = true;\n }\n\n if (field.lifecycle) {\n console.warn(`NgxFormly: 'lifecycle' is deprecated since v5.0, use 'hooks' instead.`);\n }\n\n if (\n field.type !== 'formly-template'\n && (\n field.template\n || (field.expressionProperties && field.expressionProperties.template)\n )\n ) {\n if (field.type) {\n console.warn(`NgxFormly: passing 'type' property is not allowed when 'template' is set.`);\n }\n field.type = 'formly-template';\n }\n\n if (!field.type && field.fieldGroup) {\n field.type = 'formly-group';\n }\n\n if (field.type) {\n this.formlyConfig.getMergedField(field);\n }\n\n if (field.parent) {\n let setDefaultValue = !isUndefined(field.key)\n && !isUndefined(field.defaultValue)\n && isUndefined(getFieldValue(field))\n && (!field.resetOnHide || !(field.hide || field.hideExpression));\n if (setDefaultValue && field.resetOnHide) {\n let parent = field.parent;\n while (parent && !parent.hideExpression && !parent.hide) {\n parent = parent.parent;\n }\n setDefaultValue = !parent || !(parent.hideExpression || parent.hide);\n }\n\n if (setDefaultValue) {\n assignFieldValue(field, field.defaultValue);\n }\n }\n\n this.initFieldWrappers(field);\n }\n\n private initFieldWrappers(field: FormlyFieldConfig) {\n field.wrappers = field.wrappers || [];\n const fieldTemplateManipulators: TemplateManipulators = {\n preWrapper: [],\n postWrapper: [],\n ...(field.templateOptions.templateManipulators || {}),\n };\n\n field.wrappers = [\n ...this.formlyConfig.templateManipulators.preWrapper.map(m => m(field)),\n ...fieldTemplateManipulators.preWrapper.map(m => m(field)),\n ...field.wrappers,\n ...this.formlyConfig.templateManipulators.postWrapper.map(m => m(field)),\n ...fieldTemplateManipulators.postWrapper.map(m => m(field)),\n ].filter((el, i, a) => el && i === a.indexOf(el));\n }\n\n private getFieldComponentInstance(field: FormlyFieldConfigCache) {\n const componentRef = this.formlyConfig.resolveFieldTypeRef(field);\n const instance: FormlyExtension = componentRef ? componentRef.instance as any : {};\n\n return {\n prePopulate: () => instance.prePopulate && instance.prePopulate(field),\n onPopulate: () => instance.onPopulate && instance.onPopulate(field),\n postPopulate: () => instance.postPopulate && instance.postPopulate(field),\n };\n }\n}\n","import { NgModule, ModuleWithProviders, ANALYZE_FOR_ENTRY_COMPONENTS, Inject, Optional } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormlyForm } from './components/formly.form';\nimport { FormlyField } from './components/formly.field';\nimport { FormlyAttributes } from './components/formly.attributes';\nimport { FormlyConfig, ConfigOption, FORMLY_CONFIG } from './services/formly.config';\nimport { FormlyFormBuilder } from './services/formly.form.builder';\nimport { FormlyGroup } from './templates/formly.group';\nimport { FormlyValidationMessage } from './templates/formly.validation-message';\nimport { FormlyTemplateType } from './templates/field-template.type';\n\nimport { FieldExpressionExtension } from './extensions/field-expression/field-expression';\nimport { FieldValidationExtension } from './extensions/field-validation/field-validation';\nimport { FieldFormExtension } from './extensions/field-form/field-form';\nimport { CoreExtension } from './extensions/core/core';\nimport { FieldArrayType } from './templates/field-array.type';\n\nexport function defaultFormlyConfig(formlyConfig: FormlyConfig): ConfigOption {\n return {\n types: [\n { name: 'formly-group', component: FormlyGroup },\n { name: 'formly-template', component: FormlyTemplateType },\n ],\n extensions: [\n { name: 'core', extension: new CoreExtension(formlyConfig) },\n { name: 'field-validation', extension: new FieldValidationExtension(formlyConfig) },\n { name: 'field-form', extension: new FieldFormExtension(formlyConfig) },\n { name: 'field-expression', extension: new FieldExpressionExtension() },\n ],\n };\n}\n\n@NgModule({\n declarations: [\n FormlyForm,\n FormlyField,\n FormlyAttributes,\n FormlyGroup,\n FormlyValidationMessage,\n FormlyTemplateType,\n FieldArrayType as any,\n ],\n entryComponents: [FormlyGroup, FormlyTemplateType],\n exports: [FormlyForm, FormlyField, FormlyAttributes, FormlyGroup, FormlyValidationMessage],\n imports: [CommonModule],\n})\nexport class FormlyModule {\n static forRoot(config: ConfigOption = {}): ModuleWithProviders<FormlyModule> {\n return {\n ngModule: FormlyModule,\n providers: [\n { provide: FORMLY_CONFIG, multi: true, useFactory: defaultFormlyConfig, deps: [FormlyConfig] },\n { provide: FORMLY_CONFIG, useValue: config, multi: true },\n { provide: ANALYZE_FOR_ENTRY_COMPONENTS, useValue: config, multi: true },\n FormlyConfig,\n FormlyFormBuilder,\n ],\n };\n }\n\n static forChild(config: ConfigOption = {}): ModuleWithProviders<FormlyModule> {\n return {\n ngModule: FormlyModule,\n providers: [\n { provide: FORMLY_CONFIG, multi: true, useFactory: defaultFormlyConfig, deps: [FormlyConfig] },\n { provide: FORMLY_CONFIG, useValue: config, multi: true },\n { provide: ANALYZE_FOR_ENTRY_COMPONENTS, useValue: config, multi: true },\n FormlyFormBuilder,\n ],\n };\n }\n\n constructor(\n configService: FormlyConfig,\n @Optional() @Inject(FORMLY_CONFIG) configs: ConfigOption[] = [],\n ) {\n if (!configs) {\n return;\n }\n\n configs.forEach(config => configService.addConfig(config));\n }\n}\n"]}