{"version":3,"file":"vue-form-B6ORwZRc.js","sources":["../../../node_modules/vue-form/dist/vue-form.js"],"sourcesContent":["(function (global, factory) {\n\ttypeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n\ttypeof define === 'function' && define.amd ? define(factory) :\n\t(global.VueForm = factory());\n}(this, (function () { 'use strict';\n\nvar emailRegExp = /^[a-z0-9!#$%&'*+\\/=?^_`{|}~.-]+@[a-z0-9]([a-z0-9-]*[a-z0-9])?(\\.[a-z0-9]([a-z0-9-]*[a-z0-9])?)*$/i; // from angular\nvar urlRegExp = /^(http\\:\\/\\/|https\\:\\/\\/)(.{4,})$/;\n\nvar email = function email(value, attrValue, vnode) {\n return emailRegExp.test(value);\n};\nemail._allowNulls = true;\n\nvar number = function number(value, attrValue, vnode) {\n return !isNaN(value);\n};\nnumber._allowNulls = true;\n\nvar url = function url(value, attrValue, vnode) {\n return urlRegExp.test(value);\n};\nurl._allowNulls = true;\n\nvar validators = {\n email: email,\n number: number,\n url: url,\n required: function required(value, attrValue, vnode) {\n if (attrValue === false) {\n return true;\n }\n\n if (value === 0) {\n return true;\n }\n\n if (vnode.data.attrs && typeof vnode.data.attrs.bool !== 'undefined' || vnode.componentOptions && vnode.componentOptions.propsData && typeof vnode.componentOptions.propsData.bool !== 'undefined') {\n // bool attribute is present, allow false pass validation\n if (value === false) {\n return true;\n }\n }\n\n if (Array.isArray(value)) {\n return !!value.length;\n }\n return !!value;\n },\n minlength: function minlength(value, length) {\n return value.length >= length;\n },\n maxlength: function maxlength(value, length) {\n return length >= value.length;\n },\n pattern: function pattern(value, _pattern) {\n var patternRegExp = new RegExp('^' + _pattern + '$');\n return patternRegExp.test(value);\n },\n min: function min(value, _min, vnode) {\n if ((vnode.data.attrs.type || '').toLowerCase() == 'number') {\n return +value >= +_min;\n }\n return value >= _min;\n },\n max: function max(value, _max, vnode) {\n if ((vnode.data.attrs.type || '').toLowerCase() == 'number') {\n return +_max >= +value;\n }\n return _max >= value;\n }\n};\n\nvar config = {\n validators: validators,\n formComponent: 'VueForm',\n formTag: 'form',\n messagesComponent: 'FieldMessages',\n messagesTag: 'div',\n showMessages: '',\n validateComponent: 'Validate',\n validateTag: 'div',\n fieldComponent: 'Field',\n fieldTag: 'div',\n formClasses: {\n dirty: 'vf-form-dirty',\n pristine: 'vf-form-pristine',\n valid: 'vf-form-valid',\n invalid: 'vf-form-invalid',\n touched: 'vf-form-touched',\n untouched: 'vf-form-untouched',\n focused: 'vf-form-focused',\n submitted: 'vf-form-submitted',\n pending: 'vf-form-pending'\n },\n validateClasses: {\n dirty: 'vf-field-dirty',\n pristine: 'vf-field-pristine',\n valid: 'vf-field-valid',\n invalid: 'vf-field-invalid',\n touched: 'vf-field-touched',\n untouched: 'vf-field-untouched',\n focused: 'vf-field-focused',\n submitted: 'vf-field-submitted',\n pending: 'vf-field-pending'\n },\n inputClasses: {\n dirty: 'vf-dirty',\n pristine: 'vf-pristine',\n valid: 'vf-valid',\n invalid: 'vf-invalid',\n touched: 'vf-touched',\n untouched: 'vf-untouched',\n focused: 'vf-focused',\n submitted: 'vf-submitted',\n pending: 'vf-pending'\n },\n Promise: typeof Promise === 'function' ? Promise : null\n};\n\nvar classCallCheck = function (instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n};\n\nvar createClass = function () {\n function defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n\n return function (Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);\n if (staticProps) defineProperties(Constructor, staticProps);\n return Constructor;\n };\n}();\n\n\n\n\n\nvar defineProperty = function (obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n};\n\n\n\nvar inherits = function (subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass);\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n};\n\n\n\n\n\n\n\n\n\n\n\nvar possibleConstructorReturn = function (self, call) {\n if (!self) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self;\n};\n\nfunction getClasses(classConfig, state) {\n var _ref;\n\n return _ref = {}, defineProperty(_ref, classConfig.dirty, state.$dirty), defineProperty(_ref, classConfig.pristine, state.$pristine), defineProperty(_ref, classConfig.valid, state.$valid), defineProperty(_ref, classConfig.invalid, state.$invalid), defineProperty(_ref, classConfig.touched, state.$touched), defineProperty(_ref, classConfig.untouched, state.$untouched), defineProperty(_ref, classConfig.focused, state.$focused), defineProperty(_ref, classConfig.pending, state.$pending), defineProperty(_ref, classConfig.submitted, state.$submitted), _ref;\n}\n\nfunction addClass(el, className) {\n if (el.classList) {\n el.classList.add(className);\n } else {\n el.className += ' ' + className;\n }\n}\n\nfunction removeClass(el, className) {\n if (el.classList) {\n el.classList.remove(className);\n } else {\n el.className = el.className.replace(new RegExp('(^|\\\\b)' + className.split(' ').join('|') + '(\\\\b|$)', 'gi'), ' ');\n }\n}\n\nfunction vModelValue(data) {\n if (data.model) {\n return data.model.value;\n }\n return data.directives.filter(function (v) {\n return v.name === 'model';\n })[0].value;\n}\n\nfunction getVModelAndLabel(nodes, config) {\n var foundVnodes = {\n vModel: [],\n label: null,\n messages: null\n };\n\n if (!nodes) {\n return foundVnodes;\n }\n\n function traverse(nodes) {\n for (var i = 0; i < nodes.length; i++) {\n var node = nodes[i];\n\n if (node.componentOptions) {\n if (node.componentOptions.tag === hyphenate(config.messagesComponent)) {\n foundVnodes.messages = node;\n }\n }\n\n if (node.tag === 'label' && !foundVnodes.label) {\n foundVnodes.label = node;\n }\n\n if (node.data) {\n if (node.data.model) {\n // model check has to come first. If a component has\n // a directive and v-model, the directive will be in .directives\n // and v-modelstored in .model\n foundVnodes.vModel.push(node);\n } else if (node.data.directives) {\n var match = node.data.directives.filter(function (v) {\n return v.name === 'model';\n });\n if (match.length) {\n foundVnodes.vModel.push(node);\n }\n }\n }\n if (node.children) {\n traverse(node.children);\n } else if (node.componentOptions && node.componentOptions.children) {\n traverse(node.componentOptions.children);\n }\n }\n }\n\n traverse(nodes);\n\n return foundVnodes;\n}\n\nfunction getName(vnode) {\n if (vnode.data && vnode.data.attrs && vnode.data.attrs.name) {\n return vnode.data.attrs.name;\n } else if (vnode.componentOptions && vnode.componentOptions.propsData && vnode.componentOptions.propsData.name) {\n return vnode.componentOptions.propsData.name;\n }\n}\n\nvar hyphenateRE = /([^-])([A-Z])/g;\nfunction hyphenate(str) {\n return str.replace(hyphenateRE, '$1-$2').replace(hyphenateRE, '$1-$2').toLowerCase();\n}\n\nfunction randomId() {\n return Math.random().toString(36).substr(2, 10);\n}\n\n// https://davidwalsh.name/javascript-debounce-function\nfunction debounce(func, wait, immediate) {\n var timeout;\n return function () {\n var context = this,\n args = arguments;\n var later = function later() {\n timeout = null;\n if (!immediate) func.apply(context, args);\n };\n var callNow = immediate && !timeout;\n clearTimeout(timeout);\n timeout = setTimeout(later, wait);\n if (callNow) func.apply(context, args);\n };\n}\n\nfunction isShallowObjectDifferent(a, b) {\n var aValue = '';\n var bValue = '';\n Object.keys(a).sort().filter(function (v) {\n return typeof a[v] !== 'function';\n }).forEach(function (v) {\n return aValue += a[v];\n });\n Object.keys(b).sort().filter(function (v) {\n return typeof a[v] !== 'function';\n }).forEach(function (v) {\n return bValue += b[v];\n });\n return aValue !== bValue;\n}\n\nvar vueFormConfig = 'VueFormProviderConfig' + randomId();\nvar vueFormState = 'VueFormProviderState' + randomId();\nvar vueFormParentForm = 'VueFormProviderParentForm' + randomId();\n\nvar hasOwn = Object.prototype.hasOwnProperty;\nvar toStr = Object.prototype.toString;\nvar defineProperty$1 = Object.defineProperty;\nvar gOPD = Object.getOwnPropertyDescriptor;\n\nvar isArray = function isArray(arr) {\n\tif (typeof Array.isArray === 'function') {\n\t\treturn Array.isArray(arr);\n\t}\n\n\treturn toStr.call(arr) === '[object Array]';\n};\n\nvar isPlainObject = function isPlainObject(obj) {\n\tif (!obj || toStr.call(obj) !== '[object Object]') {\n\t\treturn false;\n\t}\n\n\tvar hasOwnConstructor = hasOwn.call(obj, 'constructor');\n\tvar hasIsPrototypeOf = obj.constructor && obj.constructor.prototype && hasOwn.call(obj.constructor.prototype, 'isPrototypeOf');\n\t// Not own constructor property must be Object\n\tif (obj.constructor && !hasOwnConstructor && !hasIsPrototypeOf) {\n\t\treturn false;\n\t}\n\n\t// Own properties are enumerated firstly, so to speed up,\n\t// if last one is own, then all properties are own.\n\tvar key;\n\tfor (key in obj) { /**/ }\n\n\treturn typeof key === 'undefined' || hasOwn.call(obj, key);\n};\n\n// If name is '__proto__', and Object.defineProperty is available, define __proto__ as an own property on target\nvar setProperty = function setProperty(target, options) {\n\tif (defineProperty$1 && options.name === '__proto__') {\n\t\tdefineProperty$1(target, options.name, {\n\t\t\tenumerable: true,\n\t\t\tconfigurable: true,\n\t\t\tvalue: options.newValue,\n\t\t\twritable: true\n\t\t});\n\t} else {\n\t\ttarget[options.name] = options.newValue;\n\t}\n};\n\n// Return undefined instead of __proto__ if '__proto__' is not an own property\nvar getProperty = function getProperty(obj, name) {\n\tif (name === '__proto__') {\n\t\tif (!hasOwn.call(obj, name)) {\n\t\t\treturn void 0;\n\t\t} else if (gOPD) {\n\t\t\t// In early versions of node, obj['__proto__'] is buggy when obj has\n\t\t\t// __proto__ as an own property. Object.getOwnPropertyDescriptor() works.\n\t\t\treturn gOPD(obj, name).value;\n\t\t}\n\t}\n\n\treturn obj[name];\n};\n\nvar extend = function extend() {\n\tvar options, name, src, copy, copyIsArray, clone;\n\tvar target = arguments[0];\n\tvar i = 1;\n\tvar length = arguments.length;\n\tvar deep = false;\n\n\t// Handle a deep copy situation\n\tif (typeof target === 'boolean') {\n\t\tdeep = target;\n\t\ttarget = arguments[1] || {};\n\t\t// skip the boolean and the target\n\t\ti = 2;\n\t}\n\tif (target == null || (typeof target !== 'object' && typeof target !== 'function')) {\n\t\ttarget = {};\n\t}\n\n\tfor (; i < length; ++i) {\n\t\toptions = arguments[i];\n\t\t// Only deal with non-null/undefined values\n\t\tif (options != null) {\n\t\t\t// Extend the base object\n\t\t\tfor (name in options) {\n\t\t\t\tsrc = getProperty(target, name);\n\t\t\t\tcopy = getProperty(options, name);\n\n\t\t\t\t// Prevent never-ending loop\n\t\t\t\tif (target !== copy) {\n\t\t\t\t\t// Recurse if we're merging plain objects or arrays\n\t\t\t\t\tif (deep && copy && (isPlainObject(copy) || (copyIsArray = isArray(copy)))) {\n\t\t\t\t\t\tif (copyIsArray) {\n\t\t\t\t\t\t\tcopyIsArray = false;\n\t\t\t\t\t\t\tclone = src && isArray(src) ? src : [];\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tclone = src && isPlainObject(src) ? src : {};\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Never move original objects, clone them\n\t\t\t\t\t\tsetProperty(target, { name: name, newValue: extend(deep, clone, copy) });\n\n\t\t\t\t\t// Don't bring in undefined values\n\t\t\t\t\t} else if (typeof copy !== 'undefined') {\n\t\t\t\t\t\tsetProperty(target, { name: name, newValue: copy });\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// Return the modified object\n\treturn target;\n};\n\nvar vueForm = {\n render: function render(h) {\n var _this = this;\n\n var attrs = {};\n\n if (typeof window !== 'undefined') {\n attrs.novalidate = '';\n }\n\n return h(this.tag || this.vueFormConfig.formTag, {\n on: {\n submit: function submit(event) {\n if (_this.state.$pending) {\n event.preventDefault();\n _this.vueFormConfig.Promise.all(_this.promises).then(function () {\n _this.state._submit();\n _this.$emit('submit', event);\n _this.promises = [];\n });\n } else {\n _this.state._submit();\n _this.$emit('submit', event);\n }\n },\n reset: function reset(event) {\n _this.state._reset();\n _this.$emit('reset', event);\n }\n },\n class: this.className,\n attrs: attrs\n }, [this.$slots.default]);\n },\n\n props: {\n state: {\n type: Object,\n required: true\n },\n tag: String,\n showMessages: String\n },\n inject: { vueFormConfig: vueFormConfig },\n provide: function provide() {\n var _ref;\n\n return _ref = {}, defineProperty(_ref, vueFormState, this.state), defineProperty(_ref, vueFormParentForm, this), _ref;\n },\n\n data: function data() {\n return {\n promises: []\n };\n },\n created: function created() {\n var _this2 = this;\n\n if (!this.state) {\n return;\n }\n var controls = {};\n var state = this.state;\n var formstate = {\n $dirty: false,\n $pristine: true,\n $valid: true,\n $invalid: false,\n $submitted: false,\n $touched: false,\n $untouched: true,\n $focused: false,\n $pending: false,\n $error: {},\n $submittedState: {},\n _id: '',\n _submit: function _submit() {\n _this2.state.$submitted = true;\n _this2.state._cloneState();\n },\n _cloneState: function _cloneState() {\n var cloned = JSON.parse(JSON.stringify(state));\n delete cloned.$submittedState;\n Object.keys(cloned).forEach(function (key) {\n _this2.$set(_this2.state.$submittedState, key, cloned[key]);\n });\n },\n _addControl: function _addControl(ctrl) {\n controls[ctrl.$name] = ctrl;\n _this2.$set(state, ctrl.$name, ctrl);\n },\n _removeControl: function _removeControl(ctrl) {\n delete controls[ctrl.$name];\n _this2.$delete(_this2.state, ctrl.$name);\n _this2.$delete(_this2.state.$error, ctrl.$name);\n },\n _validate: function _validate() {\n Object.keys(controls).forEach(function (key) {\n controls[key]._validate();\n });\n },\n _reset: function _reset() {\n state.$submitted = false;\n state.$pending = false;\n state.$submittedState = {};\n Object.keys(controls).forEach(function (key) {\n var control = controls[key];\n control._hasFocused = false;\n control._setUntouched();\n control._setPristine();\n control.$submitted = false;\n control.$pending = false;\n });\n }\n };\n\n Object.keys(formstate).forEach(function (key) {\n _this2.$set(_this2.state, key, formstate[key]);\n });\n\n this.$watch('state', function () {\n var isDirty = false;\n var isValid = true;\n var isTouched = false;\n var isFocused = false;\n var isPending = false;\n Object.keys(controls).forEach(function (key) {\n var control = controls[key];\n\n control.$submitted = state.$submitted;\n\n if (control.$dirty) {\n isDirty = true;\n }\n if (control.$touched) {\n isTouched = true;\n }\n if (control.$focused) {\n isFocused = true;\n }\n if (control.$pending) {\n isPending = true;\n }\n if (!control.$valid) {\n isValid = false;\n // add control to errors\n _this2.$set(state.$error, control.$name, control);\n } else {\n _this2.$delete(state.$error, control.$name);\n }\n });\n\n state.$dirty = isDirty;\n state.$pristine = !isDirty;\n state.$touched = isTouched;\n state.$untouched = !isTouched;\n state.$focused = isFocused;\n state.$valid = isValid;\n state.$invalid = !isValid;\n state.$pending = isPending;\n }, {\n deep: true,\n immediate: true\n });\n\n /* watch pristine? if set to true, set all children to pristine\r\n Object.keys(controls).forEach((ctrl) => {\r\n controls[ctrl].setPristine();\r\n });*/\n },\n\n computed: {\n className: function className() {\n var classes = getClasses(this.vueFormConfig.formClasses, this.state);\n return classes;\n }\n },\n methods: {\n reset: function reset() {\n this.state._reset();\n },\n validate: function validate() {\n this.state._validate();\n }\n }\n};\n\nvar commonjsGlobal = typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {};\n\n\n\n\n\nfunction createCommonjsModule(fn, module) {\n\treturn module = { exports: {} }, fn(module, module.exports), module.exports;\n}\n\nvar scope_eval = createCommonjsModule(function (module) {\n// Generated by CoffeeScript 1.10.0\n(function() {\n var hasProp = {}.hasOwnProperty,\n slice = [].slice;\n\n module.exports = function(source, scope) {\n var key, keys, value, values;\n keys = [];\n values = [];\n for (key in scope) {\n if (!hasProp.call(scope, key)) continue;\n value = scope[key];\n if (key === 'this') {\n continue;\n }\n keys.push(key);\n values.push(value);\n }\n return Function.apply(null, slice.call(keys).concat([\"return eval(\" + (JSON.stringify(source)) + \")\"])).apply(scope[\"this\"], values);\n };\n\n}).call(commonjsGlobal);\n});\n\nfunction findLabel(nodes) {\n if (!nodes) {\n return;\n }\n for (var i = 0; i < nodes.length; i++) {\n var vnode = nodes[i];\n if (vnode.tag === 'label') {\n return nodes[i];\n } else if (nodes[i].children) {\n return findLabel(nodes[i].children);\n }\n }\n}\n\nvar messages = {\n inject: { vueFormConfig: vueFormConfig, vueFormState: vueFormState, vueFormParentForm: vueFormParentForm },\n render: function render(h) {\n var _this = this;\n\n var children = [];\n var field = this.formstate[this.fieldname];\n if (field && field.$error && this.isShown) {\n Object.keys(field.$error).forEach(function (key) {\n if (_this.$slots[key] || _this.$scopedSlots[key]) {\n var out = _this.$slots[key] || _this.$scopedSlots[key](field);\n if (_this.autoLabel) {\n var label = findLabel(out);\n if (label) {\n label.data = label.data || {};\n label.data.attrs = label.data.attrs || {};\n label.data.attrs.for = field._id;\n }\n }\n children.push(out);\n }\n });\n if (!children.length && field.$valid) {\n if (this.$slots.default || this.$scopedSlots.default) {\n var out = this.$slots.default || this.$scopedSlots.default(field);\n if (this.autoLabel) {\n var label = findLabel(out);\n if (label) {\n label.data = label.data || {};\n label.data.attrs = label.data.attrs || {};\n label.data.attrs.for = field._id;\n }\n }\n children.push(out);\n }\n }\n }\n return h(this.tag || this.vueFormConfig.messagesTag, children);\n },\n\n props: {\n state: Object,\n name: String,\n show: {\n type: String,\n default: ''\n },\n tag: {\n type: String\n },\n autoLabel: Boolean\n },\n data: function data() {\n return {\n formstate: null,\n fieldname: ''\n };\n },\n created: function created() {\n this.fieldname = this.name;\n this.formstate = this.state || this.vueFormState;\n },\n\n computed: {\n isShown: function isShown() {\n var field = this.formstate[this.fieldname];\n var show = this.show || this.vueFormParentForm.showMessages || this.vueFormConfig.showMessages;\n\n if (!show || !field) {\n return true;\n }\n\n return scope_eval(show, field);\n }\n }\n};\n\nvar validate = {\n render: function render(h) {\n var _this = this;\n\n var foundVnodes = getVModelAndLabel(this.$slots.default, this.vueFormConfig);\n var vModelnodes = foundVnodes.vModel;\n var attrs = {\n for: null\n };\n if (vModelnodes.length) {\n this.name = getName(vModelnodes[0]);\n\n if (foundVnodes.messages) {\n this.$nextTick(function () {\n var messagesVm = foundVnodes.messages.componentInstance;\n if (messagesVm) {\n messagesVm.fieldname = messagesVm.fieldname || _this.name;\n }\n });\n }\n\n if (this.autoLabel) {\n var id = vModelnodes[0].data.attrs.id || this.fieldstate._id;\n this.fieldstate._id = id;\n vModelnodes[0].data.attrs.id = id;\n if (foundVnodes.label) {\n foundVnodes.label.data = foundVnodes.label.data || {};\n foundVnodes.label.data.attrs = foundVnodes.label.data.attrs || {};\n foundVnodes.label.data.attrs.for = id;\n } else if (this.tag === 'label') {\n attrs.for = id;\n }\n }\n vModelnodes.forEach(function (vnode) {\n if (!vnode.data.directives) {\n vnode.data.directives = [];\n }\n vnode.data.directives.push({ name: 'vue-form-validator', value: { fieldstate: _this.fieldstate, config: _this.vueFormConfig } });\n vnode.data.attrs['vue-form-validator'] = '';\n vnode.data.attrs['debounce'] = _this.debounce;\n });\n } else {\n //console.warn('Element with v-model not found');\n }\n return h(this.tag || this.vueFormConfig.validateTag, { 'class': this.className, attrs: attrs }, this.$slots.default);\n },\n\n props: {\n state: Object,\n custom: null,\n autoLabel: Boolean,\n tag: {\n type: String\n },\n debounce: Number\n },\n inject: { vueFormConfig: vueFormConfig, vueFormState: vueFormState, vueFormParentForm: vueFormParentForm },\n data: function data() {\n return {\n name: '',\n formstate: null,\n fieldstate: {}\n };\n },\n\n methods: {\n getClasses: function getClasses$$1(classConfig) {\n var s = this.fieldstate;\n return Object.keys(s.$error).reduce(function (classes, error) {\n classes[classConfig.invalid + '-' + hyphenate(error)] = true;\n return classes;\n }, getClasses(classConfig, s));\n }\n },\n computed: {\n className: function className() {\n return this.getClasses(this.vueFormConfig.validateClasses);\n },\n inputClassName: function inputClassName() {\n return this.getClasses(this.vueFormConfig.inputClasses);\n }\n },\n mounted: function mounted() {\n var _this2 = this;\n\n this.fieldstate.$name = this.name;\n this.formstate._addControl(this.fieldstate);\n\n var vModelEls = this.$el.querySelectorAll('[vue-form-validator]');\n\n // add classes to the input element\n this.$watch('inputClassName', function (value, oldValue) {\n var out = void 0;\n\n var _loop = function _loop(i, el) {\n if (oldValue) {\n Object.keys(oldValue).filter(function (k) {\n return oldValue[k];\n }).forEach(function (k) {\n return removeClass(el, k);\n });\n }\n out = [];\n Object.keys(value).filter(function (k) {\n return value[k];\n }).forEach(function (k) {\n out.push(k);\n addClass(el, k);\n });\n };\n\n for (var i = 0, el; el = vModelEls[i++];) {\n _loop(i, el);\n }\n _this2.fieldstate._className = out;\n }, {\n deep: true,\n immediate: true\n });\n\n this.$watch('name', function (value, oldValue) {\n _this2.formstate._removeControl(_this2.fieldstate);\n _this2.fieldstate.$name = value;\n _this2.formstate._addControl(_this2.fieldstate);\n });\n },\n created: function created() {\n var _this4 = this;\n\n this.formstate = this.state || this.vueFormState;\n var vm = this;\n var pendingValidators = [];\n var _val = void 0;\n var prevVnode = void 0;\n this.fieldstate = {\n $name: '',\n $dirty: false,\n $pristine: true,\n $valid: true,\n $invalid: false,\n $touched: false,\n $untouched: true,\n $focused: false,\n $pending: false,\n $submitted: false,\n $error: {},\n $attrs: {},\n _className: null,\n _id: 'vf' + randomId(),\n _setValidatorValidity: function _setValidatorValidity(validator, isValid) {\n if (isValid) {\n vm.$delete(this.$error, validator);\n } else {\n vm.$set(this.$error, validator, true);\n }\n },\n _setValidity: function _setValidity(isValid) {\n this.$valid = isValid;\n this.$invalid = !isValid;\n },\n _setDirty: function _setDirty() {\n this.$dirty = true;\n this.$pristine = false;\n },\n _setPristine: function _setPristine() {\n this.$dirty = false;\n this.$pristine = true;\n },\n _setTouched: function _setTouched() {\n this.$touched = true;\n this.$untouched = false;\n },\n _setUntouched: function _setUntouched() {\n this.$touched = false;\n this.$untouched = true;\n },\n _setFocused: function _setFocused(value) {\n this.$focused = typeof value === 'boolean' ? value : false;\n if (this.$focused) {\n this._setHasFocused();\n } else {\n this._setTouched();\n }\n },\n _setHasFocused: function _setHasFocused() {\n this._hasFocused = true;\n },\n\n _hasFocused: false,\n _validators: {},\n _validate: function _validate(vnode) {\n var _this3 = this;\n\n if (!vnode) {\n vnode = prevVnode;\n } else {\n prevVnode = vnode;\n }\n this.$pending = true;\n var isValid = true;\n var emptyAndRequired = false;\n var value = vModelValue(vnode.data);\n _val = value;\n\n var pending = {\n promises: [],\n names: []\n };\n\n pendingValidators.push(pending);\n\n var attrs = vnode.data.attrs || {};\n var childvm = vnode.componentInstance;\n if (childvm && childvm._vfValidationData_) {\n attrs = extend({}, attrs, childvm._vfValidationData_);\n }\n\n var propsData = vnode.componentOptions && vnode.componentOptions.propsData ? vnode.componentOptions.propsData : {};\n\n Object.keys(this._validators).forEach(function (validator) {\n // when value is empty and current validator is not the required validator, the field is valid\n if ((value === '' || value === undefined || value === null) && validator !== 'required') {\n _this3._setValidatorValidity(validator, true);\n emptyAndRequired = true;\n // return early, required validator will\n // fall through if it is present\n return;\n }\n\n var attrValue = typeof attrs[validator] !== 'undefined' ? attrs[validator] : propsData[validator];\n var isFunction = typeof _this3._validators[validator] === 'function';\n\n // match vue behaviour, ignore if attribute is null or undefined. But for type=email|url|number and custom validators, the value will be null, so allow with _allowNulls\n if (isFunction && (attrValue === null || typeof attrValue === 'undefined') && !_this3._validators[validator]._allowNulls) {\n return;\n }\n\n if (attrValue) {\n _this3.$attrs[validator] = attrValue;\n }\n\n var result = isFunction ? _this3._validators[validator](value, attrValue, vnode) : vm.custom[validator];\n\n if (typeof result === 'boolean') {\n if (result) {\n _this3._setValidatorValidity(validator, true);\n } else {\n isValid = false;\n _this3._setValidatorValidity(validator, false);\n }\n } else {\n pending.promises.push(result);\n pending.names.push(validator);\n vm.vueFormParentForm.promises.push(result);\n }\n });\n\n if (pending.promises.length) {\n vm.vueFormConfig.Promise.all(pending.promises).then(function (results) {\n\n // only concerned with the last promise results, in case\n // async responses return out of order\n if (pending !== pendingValidators[pendingValidators.length - 1]) {\n //console.log('ignoring old promise', pending.promises);\n return;\n }\n\n pendingValidators = [];\n\n results.forEach(function (result, i) {\n var name = pending.names[i];\n if (result) {\n _this3._setValidatorValidity(name, true);\n } else {\n isValid = false;\n _this3._setValidatorValidity(name, false);\n }\n });\n _this3._setValidity(isValid);\n _this3.$pending = false;\n });\n } else {\n this._setValidity(isValid);\n this.$pending = false;\n }\n }\n };\n\n // add custom validators\n if (this.custom) {\n Object.keys(this.custom).forEach(function (prop) {\n if (typeof _this4.custom[prop] === 'function') {\n _this4.custom[prop]._allowNulls = true;\n _this4.fieldstate._validators[prop] = _this4.custom[prop];\n } else {\n _this4.fieldstate._validators[prop] = _this4.custom[prop];\n }\n });\n }\n\n this.$watch('custom', function (v, oldV) {\n if (!oldV || !v) {\n return;\n }\n if (isShallowObjectDifferent(v, oldV)) {\n _this4.fieldstate._validate();\n }\n }, {\n deep: true\n });\n },\n destroyed: function destroyed() {\n this.formstate._removeControl(this.fieldstate);\n }\n};\n\nvar field = {\n inject: { vueFormConfig: vueFormConfig },\n render: function render(h) {\n var foundVnodes = getVModelAndLabel(this.$slots.default, this.vueFormConfig);\n var vModelnodes = foundVnodes.vModel;\n var attrs = {\n for: null\n };\n if (vModelnodes.length) {\n if (this.autoLabel) {\n var id = vModelnodes[0].data.attrs && vModelnodes[0].data.attrs.id || 'vf' + randomId();\n vModelnodes[0].data.attrs.id = id;\n if (foundVnodes.label) {\n foundVnodes.label.data = foundVnodes.label.data || {};\n foundVnodes.label.data.attrs = foundVnodes.label.data.attrs = {};\n foundVnodes.label.data.attrs.for = id;\n } else if (this.tag === 'label') {\n attrs.for = id;\n }\n }\n }\n return h(this.tag || this.vueFormConfig.fieldTag, { attrs: attrs }, this.$slots.default);\n },\n\n props: {\n tag: {\n type: String\n },\n autoLabel: {\n type: Boolean,\n default: true\n }\n }\n};\n\nvar debouncedValidators = {};\n\nfunction addValidators(attrs, validators, fieldValidators) {\n Object.keys(attrs).forEach(function (attr) {\n var prop = attr === 'type' ? attrs[attr].toLowerCase() : attr.toLowerCase();\n\n if (validators[prop] && !fieldValidators[prop]) {\n fieldValidators[prop] = validators[prop];\n }\n });\n}\n\nfunction compareChanges(vnode, oldvnode, validators) {\n\n var hasChanged = false;\n var attrs = vnode.data.attrs || {};\n var oldAttrs = oldvnode.data.attrs || {};\n var out = {};\n\n if (vModelValue(vnode.data) !== vModelValue(oldvnode.data)) {\n out.vModel = true;\n hasChanged = true;\n }\n\n Object.keys(validators).forEach(function (validator) {\n if (attrs[validator] !== oldAttrs[validator]) {\n out[validator] = true;\n hasChanged = true;\n }\n });\n\n // if is a component\n if (vnode.componentOptions && vnode.componentOptions.propsData) {\n var _attrs = vnode.componentOptions.propsData;\n var _oldAttrs = oldvnode.componentOptions.propsData;\n Object.keys(validators).forEach(function (validator) {\n if (_attrs[validator] !== _oldAttrs[validator]) {\n out[validator] = true;\n hasChanged = true;\n }\n });\n }\n\n if (hasChanged) {\n return out;\n }\n}\n\nvar vueFormValidator = {\n name: 'vue-form-validator',\n bind: function bind(el, binding, vnode) {\n var fieldstate = binding.value.fieldstate;\n var validators = binding.value.config.validators;\n\n var attrs = vnode.data.attrs || {};\n var inputName = getName(vnode);\n\n if (!inputName) {\n console.warn('vue-form: name attribute missing');\n return;\n }\n\n if (attrs.debounce) {\n debouncedValidators[fieldstate._id] = debounce(function (fieldstate, vnode) {\n if (fieldstate._hasFocused) {\n fieldstate._setDirty();\n }\n fieldstate._validate(vnode);\n }, attrs.debounce);\n }\n\n // add validators\n addValidators(attrs, validators, fieldstate._validators);\n\n // if is a component, a validator attribute could be a prop this component uses\n if (vnode.componentOptions && vnode.componentOptions.propsData) {\n addValidators(vnode.componentOptions.propsData, validators, fieldstate._validators);\n }\n\n fieldstate._validate(vnode);\n\n // native listeners\n el.addEventListener('blur', function () {\n fieldstate._setFocused(false);\n }, false);\n el.addEventListener('focus', function () {\n fieldstate._setFocused(true);\n }, false);\n\n // component listeners\n var vm = vnode.componentInstance;\n if (vm) {\n vm.$on('blur', function () {\n fieldstate._setFocused(false);\n });\n vm.$on('focus', function () {\n fieldstate._setFocused(true);\n });\n\n vm.$once('vf:addFocusListeners', function () {\n el.addEventListener('focusout', function () {\n fieldstate._setFocused(false);\n }, false);\n el.addEventListener('focusin', function () {\n fieldstate._setFocused(true);\n }, false);\n });\n\n vm.$on('vf:validate', function (data) {\n if (!vm._vfValidationData_) {\n addValidators(data, validators, fieldstate._validators);\n }\n vm._vfValidationData_ = data;\n fieldstate._validate(vm.$vnode);\n });\n }\n },\n update: function update(el, binding, vnode, oldVNode) {\n var validators = binding.value.config.validators;\n\n var changes = compareChanges(vnode, oldVNode, validators);\n var fieldstate = binding.value.fieldstate;\n\n\n var attrs = vnode.data.attrs || {};\n var vm = vnode.componentInstance;\n if (vm && vm._vfValidationData_) {\n attrs = extend({}, attrs, vm[vm._vfValidationData_]);\n }\n\n if (vnode.elm.className.indexOf(fieldstate._className[0]) === -1) {\n vnode.elm.className = vnode.elm.className + ' ' + fieldstate._className.join(' ');\n }\n\n if (!changes) {\n return;\n }\n\n if (changes.vModel) {\n // re-validate all\n if (attrs.debounce) {\n fieldstate.$pending = true;\n debouncedValidators[fieldstate._id](fieldstate, vnode);\n } else {\n if (fieldstate._hasFocused) {\n fieldstate._setDirty();\n }\n fieldstate._validate(vnode);\n }\n } else {\n // attributes have changed\n // to do: loop through them and re-validate changed ones\n //for(let prop in changes) {\n // fieldstate._validate(vnode, validator);\n //}\n // for now\n fieldstate._validate(vnode);\n }\n }\n};\n\nfunction VueFormBase(options) {\n var _components;\n\n var c = extend(true, {}, config, options);\n this.provide = function () {\n return defineProperty({}, vueFormConfig, c);\n };\n this.components = (_components = {}, defineProperty(_components, c.formComponent, vueForm), defineProperty(_components, c.messagesComponent, messages), defineProperty(_components, c.validateComponent, validate), defineProperty(_components, c.fieldComponent, field), _components);\n this.directives = { vueFormValidator: vueFormValidator };\n}\n\nvar VueForm = function (_VueFormBase) {\n inherits(VueForm, _VueFormBase);\n\n function VueForm() {\n classCallCheck(this, VueForm);\n return possibleConstructorReturn(this, (VueForm.__proto__ || Object.getPrototypeOf(VueForm)).apply(this, arguments));\n }\n\n createClass(VueForm, null, [{\n key: 'install',\n value: function install(Vue, options) {\n Vue.mixin(new this(options));\n }\n }, {\n key: 'installed',\n get: function get$$1() {\n return !!this.install.done;\n },\n set: function set$$1(val) {\n this.install.done = val;\n }\n }]);\n return VueForm;\n}(VueFormBase);\n\nVueFormBase.call(VueForm);\n// temp fix for vue 2.3.0\nVueForm.options = new VueForm();\n\nreturn VueForm;\n\n})));\n"],"names":["global","factory","module","this","emailRegExp","urlRegExp","email","value","attrValue","vnode","number","url","validators","length","_pattern","patternRegExp","_min","_max","config","classCallCheck","instance","Constructor","createClass","defineProperties","target","props","i","descriptor","protoProps","staticProps","defineProperty","obj","key","inherits","subClass","superClass","possibleConstructorReturn","self","call","getClasses","classConfig","state","_ref","addClass","el","className","removeClass","vModelValue","data","v","getVModelAndLabel","nodes","foundVnodes","traverse","node","hyphenate","match","getName","hyphenateRE","str","randomId","debounce","func","wait","immediate","timeout","context","args","later","isShallowObjectDifferent","a","b","aValue","bValue","vueFormConfig","vueFormState","vueFormParentForm","hasOwn","toStr","defineProperty$1","gOPD","isArray","arr","isPlainObject","hasOwnConstructor","hasIsPrototypeOf","setProperty","options","getProperty","name","extend","src","copy","copyIsArray","clone","deep","vueForm","h","_this","attrs","event","_this2","controls","formstate","cloned","ctrl","control","isDirty","isValid","isTouched","isFocused","isPending","classes","commonjsGlobal","createCommonjsModule","fn","scope_eval","hasProp","slice","source","scope","keys","values","findLabel","messages","children","field","out","label","show","validate","vModelnodes","messagesVm","id","s","error","vModelEls","oldValue","_loop","k","_this4","vm","pendingValidators","prevVnode","validator","_this3","pending","childvm","propsData","isFunction","result","results","prop","oldV","debouncedValidators","addValidators","fieldValidators","attr","compareChanges","oldvnode","hasChanged","oldAttrs","_attrs","_oldAttrs","vueFormValidator","binding","fieldstate","inputName","oldVNode","changes","VueFormBase","_components","c","VueForm","_VueFormBase","Vue","val"],"mappings":"wFAAC,SAAUA,EAAQC,EAAS,CACoCC,EAAiB,QAAAD,EAAO,CAGxF,GAAEE,EAAO,UAAY,CAErB,IAAIC,EAAc,oGACdC,EAAY,oCAEZC,EAAQ,SAAeC,EAAOC,EAAWC,EAAO,CAClD,OAAOL,EAAY,KAAKG,CAAK,CAC/B,EACAD,EAAM,YAAc,GAEpB,IAAII,EAAS,SAAgBH,EAAOC,EAAWC,EAAO,CACpD,MAAO,CAAC,MAAMF,CAAK,CACrB,EACAG,EAAO,YAAc,GAErB,IAAIC,EAAM,SAAaJ,EAAOC,EAAWC,EAAO,CAC9C,OAAOJ,EAAU,KAAKE,CAAK,CAC7B,EACAI,EAAI,YAAc,GAElB,IAAIC,EAAa,CACf,MAAON,EACP,OAAQI,EACR,IAAKC,EACL,SAAU,SAAkBJ,EAAOC,EAAWC,EAAO,CASnD,OARID,IAAc,IAIdD,IAAU,IAIVE,EAAM,KAAK,OAAS,OAAOA,EAAM,KAAK,MAAM,KAAS,KAAeA,EAAM,kBAAoBA,EAAM,iBAAiB,WAAa,OAAOA,EAAM,iBAAiB,UAAU,KAAS,MAEjLF,IAAU,GACL,GAIP,MAAM,QAAQA,CAAK,EACd,CAAC,CAACA,EAAM,OAEV,CAAC,CAACA,CACV,EACD,UAAW,SAAmBA,EAAOM,EAAQ,CAC3C,OAAON,EAAM,QAAUM,CACxB,EACD,UAAW,SAAmBN,EAAOM,EAAQ,CAC3C,OAAOA,GAAUN,EAAM,MACxB,EACD,QAAS,SAAiBA,EAAOO,EAAU,CACzC,IAAIC,EAAgB,IAAI,OAAO,IAAMD,EAAW,GAAG,EACnD,OAAOC,EAAc,KAAKR,CAAK,CAChC,EACD,IAAK,SAAaA,EAAOS,EAAMP,EAAO,CACpC,OAAKA,EAAM,KAAK,MAAM,MAAQ,IAAI,YAAa,GAAI,SAC1C,CAACF,GAAS,CAACS,EAEbT,GAASS,CACjB,EACD,IAAK,SAAaT,EAAOU,EAAMR,EAAO,CACpC,OAAKA,EAAM,KAAK,MAAM,MAAQ,IAAI,YAAa,GAAI,SAC1C,CAACQ,GAAQ,CAACV,EAEZU,GAAQV,CAChB,CACH,EAEIW,EAAS,CACX,WAAYN,EACZ,cAAe,UACf,QAAS,OACT,kBAAmB,gBACnB,YAAa,MACb,aAAc,GACd,kBAAmB,WACnB,YAAa,MACb,eAAgB,QAChB,SAAU,MACV,YAAa,CACX,MAAO,gBACP,SAAU,mBACV,MAAO,gBACP,QAAS,kBACT,QAAS,kBACT,UAAW,oBACX,QAAS,kBACT,UAAW,oBACX,QAAS,iBACV,EACD,gBAAiB,CACf,MAAO,iBACP,SAAU,oBACV,MAAO,iBACP,QAAS,mBACT,QAAS,mBACT,UAAW,qBACX,QAAS,mBACT,UAAW,qBACX,QAAS,kBACV,EACD,aAAc,CACZ,MAAO,WACP,SAAU,cACV,MAAO,WACP,QAAS,aACT,QAAS,aACT,UAAW,eACX,QAAS,aACT,UAAW,eACX,QAAS,YACV,EACD,QAAS,OAAO,SAAY,WAAa,QAAU,IACrD,EAEIO,EAAiB,SAAUC,EAAUC,EAAa,CACpD,GAAI,EAAED,aAAoBC,GACxB,MAAM,IAAI,UAAU,mCAAmC,CAE3D,EAEIC,EAAc,UAAY,CAC5B,SAASC,EAAiBC,EAAQC,EAAO,CACvC,QAASC,EAAI,EAAGA,EAAID,EAAM,OAAQC,IAAK,CACrC,IAAIC,EAAaF,EAAMC,CAAC,EACxBC,EAAW,WAAaA,EAAW,YAAc,GACjDA,EAAW,aAAe,GACtB,UAAWA,IAAYA,EAAW,SAAW,IACjD,OAAO,eAAeH,EAAQG,EAAW,IAAKA,CAAU,CACzD,CACF,CAED,OAAO,SAAUN,EAAaO,EAAYC,EAAa,CACrD,OAAID,GAAYL,EAAiBF,EAAY,UAAWO,CAAU,EAC9DC,GAAaN,EAAiBF,EAAaQ,CAAW,EACnDR,CACX,CACA,IAMIS,EAAiB,SAAUC,EAAKC,EAAKzB,EAAO,CAC9C,OAAIyB,KAAOD,EACT,OAAO,eAAeA,EAAKC,EAAK,CAC9B,MAAOzB,EACP,WAAY,GACZ,aAAc,GACd,SAAU,EAChB,CAAK,EAEDwB,EAAIC,CAAG,EAAIzB,EAGNwB,CACT,EAIIE,GAAW,SAAUC,EAAUC,EAAY,CAC7C,GAAI,OAAOA,GAAe,YAAcA,IAAe,KACrD,MAAM,IAAI,UAAU,2DAA6D,OAAOA,CAAU,EAGpGD,EAAS,UAAY,OAAO,OAAOC,GAAcA,EAAW,UAAW,CACrE,YAAa,CACX,MAAOD,EACP,WAAY,GACZ,SAAU,GACV,aAAc,EACf,CACL,CAAG,EACGC,IAAY,OAAO,eAAiB,OAAO,eAAeD,EAAUC,CAAU,EAAID,EAAS,UAAYC,EAC7G,EAYIC,GAA4B,SAAUC,EAAMC,EAAM,CACpD,GAAI,CAACD,EACH,MAAM,IAAI,eAAe,2DAA2D,EAGtF,OAAOC,IAAS,OAAOA,GAAS,UAAY,OAAOA,GAAS,YAAcA,EAAOD,CACnF,EAEA,SAASE,EAAWC,EAAaC,EAAO,CACtC,IAAIC,EAEJ,OAAOA,EAAO,CAAE,EAAEZ,EAAeY,EAAMF,EAAY,MAAOC,EAAM,MAAM,EAAGX,EAAeY,EAAMF,EAAY,SAAUC,EAAM,SAAS,EAAGX,EAAeY,EAAMF,EAAY,MAAOC,EAAM,MAAM,EAAGX,EAAeY,EAAMF,EAAY,QAASC,EAAM,QAAQ,EAAGX,EAAeY,EAAMF,EAAY,QAASC,EAAM,QAAQ,EAAGX,EAAeY,EAAMF,EAAY,UAAWC,EAAM,UAAU,EAAGX,EAAeY,EAAMF,EAAY,QAASC,EAAM,QAAQ,EAAGX,EAAeY,EAAMF,EAAY,QAASC,EAAM,QAAQ,EAAGX,EAAeY,EAAMF,EAAY,UAAWC,EAAM,UAAU,EAAGC,CACxiB,CAED,SAASC,GAASC,EAAIC,EAAW,CAC3BD,EAAG,UACLA,EAAG,UAAU,IAAIC,CAAS,EAE1BD,EAAG,WAAa,IAAMC,CAEzB,CAED,SAASC,GAAYF,EAAIC,EAAW,CAC9BD,EAAG,UACLA,EAAG,UAAU,OAAOC,CAAS,EAE7BD,EAAG,UAAYA,EAAG,UAAU,QAAQ,IAAI,OAAO,UAAYC,EAAU,MAAM,GAAG,EAAE,KAAK,GAAG,EAAI,UAAW,IAAI,EAAG,GAAG,CAEpH,CAED,SAASE,EAAYC,EAAM,CACzB,OAAIA,EAAK,MACAA,EAAK,MAAM,MAEbA,EAAK,WAAW,OAAO,SAAUC,EAAG,CACzC,OAAOA,EAAE,OAAS,OACtB,CAAG,EAAE,CAAC,EAAE,KACP,CAED,SAASC,EAAkBC,EAAOjC,EAAQ,CACxC,IAAIkC,EAAc,CAChB,OAAQ,CAAE,EACV,MAAO,KACP,SAAU,IACd,EAEE,GAAI,CAACD,EACH,OAAOC,EAGT,SAASC,EAASF,EAAO,CACvB,QAASzB,EAAI,EAAGA,EAAIyB,EAAM,OAAQzB,IAAK,CACrC,IAAI4B,EAAOH,EAAMzB,CAAC,EAYlB,GAVI4B,EAAK,kBACHA,EAAK,iBAAiB,MAAQC,EAAUrC,EAAO,iBAAiB,IAClEkC,EAAY,SAAWE,GAIvBA,EAAK,MAAQ,SAAW,CAACF,EAAY,QACvCA,EAAY,MAAQE,GAGlBA,EAAK,MACP,GAAIA,EAAK,KAAK,MAIZF,EAAY,OAAO,KAAKE,CAAI,UACnBA,EAAK,KAAK,WAAY,CAC/B,IAAIE,EAAQF,EAAK,KAAK,WAAW,OAAO,SAAUL,EAAG,CACnD,OAAOA,EAAE,OAAS,OAC9B,CAAW,EACGO,EAAM,QACRJ,EAAY,OAAO,KAAKE,CAAI,CAE/B,EAECA,EAAK,SACPD,EAASC,EAAK,QAAQ,EACbA,EAAK,kBAAoBA,EAAK,iBAAiB,UACxDD,EAASC,EAAK,iBAAiB,QAAQ,CAE1C,CACF,CAED,OAAAD,EAASF,CAAK,EAEPC,CACR,CAED,SAASK,EAAQhD,EAAO,CACtB,GAAIA,EAAM,MAAQA,EAAM,KAAK,OAASA,EAAM,KAAK,MAAM,KACrD,OAAOA,EAAM,KAAK,MAAM,KACnB,GAAIA,EAAM,kBAAoBA,EAAM,iBAAiB,WAAaA,EAAM,iBAAiB,UAAU,KACxG,OAAOA,EAAM,iBAAiB,UAAU,IAE3C,CAED,IAAIiD,EAAc,iBAClB,SAASH,EAAUI,EAAK,CACtB,OAAOA,EAAI,QAAQD,EAAa,OAAO,EAAE,QAAQA,EAAa,OAAO,EAAE,aACxE,CAED,SAASE,GAAW,CAClB,OAAO,KAAK,OAAM,EAAG,SAAS,EAAE,EAAE,OAAO,EAAG,EAAE,CAC/C,CAGD,SAASC,GAASC,EAAMC,EAAMC,EAAW,CACvC,IAAIC,EACJ,OAAO,UAAY,CACjB,IAAIC,EAAU,KACVC,EAAO,UACPC,EAAQ,UAAiB,CAC3BH,EAAU,KACMH,EAAK,MAAMI,EAASC,CAAI,CAC9C,EAEI,aAAaF,CAAO,EACpBA,EAAU,WAAWG,EAAOL,CAAI,CAEpC,CACC,CAED,SAASM,GAAyBC,EAAGC,EAAG,CACtC,IAAIC,EAAS,GACTC,EAAS,GACb,cAAO,KAAKH,CAAC,EAAE,KAAI,EAAG,OAAO,SAAUrB,EAAG,CACxC,OAAO,OAAOqB,EAAErB,CAAC,GAAM,UAC3B,CAAG,EAAE,QAAQ,SAAUA,EAAG,CACtB,OAAOuB,GAAUF,EAAErB,CAAC,CACxB,CAAG,EACD,OAAO,KAAKsB,CAAC,EAAE,KAAI,EAAG,OAAO,SAAUtB,EAAG,CACxC,OAAO,OAAOqB,EAAErB,CAAC,GAAM,UAC3B,CAAG,EAAE,QAAQ,SAAUA,EAAG,CACtB,OAAOwB,GAAUF,EAAEtB,CAAC,CACxB,CAAG,EACMuB,IAAWC,CACnB,CAED,IAAIC,EAAgB,wBAA0Bd,IAC1Ce,EAAe,uBAAyBf,IACxCgB,EAAoB,4BAA8BhB,IAElDiB,EAAS,OAAO,UAAU,eAC1BC,EAAQ,OAAO,UAAU,SACzBC,EAAmB,OAAO,eAC1BC,EAAO,OAAO,yBAEdC,EAAU,SAAiBC,EAAK,CACnC,OAAI,OAAO,MAAM,SAAY,WACrB,MAAM,QAAQA,CAAG,EAGlBJ,EAAM,KAAKI,CAAG,IAAM,gBAC5B,EAEIC,EAAgB,SAAuBpD,EAAK,CAC/C,GAAI,CAACA,GAAO+C,EAAM,KAAK/C,CAAG,IAAM,kBAC/B,MAAO,GAGR,IAAIqD,EAAoBP,EAAO,KAAK9C,EAAK,aAAa,EAClDsD,EAAmBtD,EAAI,aAAeA,EAAI,YAAY,WAAa8C,EAAO,KAAK9C,EAAI,YAAY,UAAW,eAAe,EAE7H,GAAIA,EAAI,aAAe,CAACqD,GAAqB,CAACC,EAC7C,MAAO,GAKR,IAAIrD,EACJ,IAAKA,KAAOD,EAAK,CAEjB,OAAO,OAAOC,EAAQ,KAAe6C,EAAO,KAAK9C,EAAKC,CAAG,CAC1D,EAGIsD,EAAc,SAAqB9D,EAAQ+D,EAAS,CACnDR,GAAoBQ,EAAQ,OAAS,YACxCR,EAAiBvD,EAAQ+D,EAAQ,KAAM,CACtC,WAAY,GACZ,aAAc,GACd,MAAOA,EAAQ,SACf,SAAU,EACb,CAAG,EAED/D,EAAO+D,EAAQ,IAAI,EAAIA,EAAQ,QAEjC,EAGIC,EAAc,SAAqBzD,EAAK0D,EAAM,CACjD,GAAIA,IAAS,YACZ,GAAKZ,EAAO,KAAK9C,EAAK0D,CAAI,GAEnB,GAAIT,EAGV,OAAOA,EAAKjD,EAAK0D,CAAI,EAAE,UAJvB,QAQF,OAAO1D,EAAI0D,CAAI,CAChB,EAEIC,EAAS,SAASA,GAAS,CAC9B,IAAIH,EAASE,EAAME,EAAKC,EAAMC,EAAaC,EACvCtE,EAAS,UAAU,CAAC,EACpBE,EAAI,EACJb,EAAS,UAAU,OACnBkF,EAAO,GAaX,IAVI,OAAOvE,GAAW,YACrBuE,EAAOvE,EACPA,EAAS,UAAU,CAAC,GAAK,GAEzBE,EAAI,IAEDF,GAAU,MAAS,OAAOA,GAAW,UAAY,OAAOA,GAAW,cACtEA,EAAS,CAAA,GAGHE,EAAIb,EAAQ,EAAEa,EAGpB,GAFA6D,EAAU,UAAU7D,CAAC,EAEjB6D,GAAW,KAEd,IAAKE,KAAQF,EACZI,EAAMH,EAAYhE,EAAQiE,CAAI,EAC9BG,EAAOJ,EAAYD,EAASE,CAAI,EAG5BjE,IAAWoE,IAEVG,GAAQH,IAAST,EAAcS,CAAI,IAAMC,EAAcZ,EAAQW,CAAI,KAClEC,GACHA,EAAc,GACdC,EAAQH,GAAOV,EAAQU,CAAG,EAAIA,EAAM,CAAA,GAEpCG,EAAQH,GAAOR,EAAcQ,CAAG,EAAIA,EAAM,CAAA,EAI3CL,EAAY9D,EAAQ,CAAE,KAAMiE,EAAM,SAAUC,EAAOK,EAAMD,EAAOF,CAAI,CAAG,CAAA,GAG7D,OAAOA,EAAS,KAC1BN,EAAY9D,EAAQ,CAAE,KAAMiE,EAAM,SAAUG,CAAI,CAAE,GAQvD,OAAOpE,CACR,EAEIwE,GAAU,CACZ,OAAQ,SAAgBC,EAAG,CACzB,IAAIC,EAAQ,KAERC,EAAQ,CAAA,EAEZ,OAAI,OAAO,OAAW,MACpBA,EAAM,WAAa,IAGdF,EAAE,KAAK,KAAO,KAAK,cAAc,QAAS,CAC/C,GAAI,CACF,OAAQ,SAAgBG,EAAO,CACzBF,EAAM,MAAM,UACdE,EAAM,eAAc,EACpBF,EAAM,cAAc,QAAQ,IAAIA,EAAM,QAAQ,EAAE,KAAK,UAAY,CAC/DA,EAAM,MAAM,UACZA,EAAM,MAAM,SAAUE,CAAK,EAC3BF,EAAM,SAAW,EAC/B,CAAa,IAEDA,EAAM,MAAM,UACZA,EAAM,MAAM,SAAUE,CAAK,EAE9B,EACD,MAAO,SAAeA,EAAO,CAC3BF,EAAM,MAAM,SACZA,EAAM,MAAM,QAASE,CAAK,CAC3B,CACF,EACD,MAAO,KAAK,UACZ,MAAOD,CACR,EAAE,CAAC,KAAK,OAAO,OAAO,CAAC,CACzB,EAED,MAAO,CACL,MAAO,CACL,KAAM,OACN,SAAU,EACX,EACD,IAAK,OACL,aAAc,MACf,EACD,OAAQ,CAAE,cAAezB,CAAe,EACxC,QAAS,UAAmB,CAC1B,IAAIhC,EAEJ,OAAOA,EAAO,CAAE,EAAEZ,EAAeY,EAAMiC,EAAc,KAAK,KAAK,EAAG7C,EAAeY,EAAMkC,EAAmB,IAAI,EAAGlC,CAClH,EAED,KAAM,UAAgB,CACpB,MAAO,CACL,SAAU,CAAE,CAClB,CACG,EACD,QAAS,UAAmB,CAC1B,IAAI2D,EAAS,KAEb,GAAK,KAAK,MAGV,KAAIC,EAAW,CAAA,EACX7D,EAAQ,KAAK,MACb8D,EAAY,CACd,OAAQ,GACR,UAAW,GACX,OAAQ,GACR,SAAU,GACV,WAAY,GACZ,SAAU,GACV,WAAY,GACZ,SAAU,GACV,SAAU,GACV,OAAQ,CAAE,EACV,gBAAiB,CAAE,EACnB,IAAK,GACL,QAAS,UAAmB,CAC1BF,EAAO,MAAM,WAAa,GAC1BA,EAAO,MAAM,aACd,EACD,YAAa,UAAuB,CAClC,IAAIG,EAAS,KAAK,MAAM,KAAK,UAAU/D,CAAK,CAAC,EAC7C,OAAO+D,EAAO,gBACd,OAAO,KAAKA,CAAM,EAAE,QAAQ,SAAUxE,EAAK,CACzCqE,EAAO,KAAKA,EAAO,MAAM,gBAAiBrE,EAAKwE,EAAOxE,CAAG,CAAC,CACpE,CAAS,CACF,EACD,YAAa,SAAqByE,EAAM,CACtCH,EAASG,EAAK,KAAK,EAAIA,EACvBJ,EAAO,KAAK5D,EAAOgE,EAAK,MAAOA,CAAI,CACpC,EACD,eAAgB,SAAwBA,EAAM,CAC5C,OAAOH,EAASG,EAAK,KAAK,EAC1BJ,EAAO,QAAQA,EAAO,MAAOI,EAAK,KAAK,EACvCJ,EAAO,QAAQA,EAAO,MAAM,OAAQI,EAAK,KAAK,CAC/C,EACD,UAAW,UAAqB,CAC9B,OAAO,KAAKH,CAAQ,EAAE,QAAQ,SAAUtE,EAAK,CAC3CsE,EAAStE,CAAG,EAAE,WACxB,CAAS,CACF,EACD,OAAQ,UAAkB,CACxBS,EAAM,WAAa,GACnBA,EAAM,SAAW,GACjBA,EAAM,gBAAkB,GACxB,OAAO,KAAK6D,CAAQ,EAAE,QAAQ,SAAUtE,EAAK,CAC3C,IAAI0E,EAAUJ,EAAStE,CAAG,EAC1B0E,EAAQ,YAAc,GACtBA,EAAQ,cAAa,EACrBA,EAAQ,aAAY,EACpBA,EAAQ,WAAa,GACrBA,EAAQ,SAAW,EAC7B,CAAS,CACF,CACP,EAEI,OAAO,KAAKH,CAAS,EAAE,QAAQ,SAAUvE,EAAK,CAC5CqE,EAAO,KAAKA,EAAO,MAAOrE,EAAKuE,EAAUvE,CAAG,CAAC,CACnD,CAAK,EAED,KAAK,OAAO,QAAS,UAAY,CAC/B,IAAI2E,EAAU,GACVC,EAAU,GACVC,EAAY,GACZC,EAAY,GACZC,EAAY,GAChB,OAAO,KAAKT,CAAQ,EAAE,QAAQ,SAAUtE,EAAK,CAC3C,IAAI0E,EAAUJ,EAAStE,CAAG,EAE1B0E,EAAQ,WAAajE,EAAM,WAEvBiE,EAAQ,SACVC,EAAU,IAERD,EAAQ,WACVG,EAAY,IAEVH,EAAQ,WACVI,EAAY,IAEVJ,EAAQ,WACVK,EAAY,IAETL,EAAQ,OAKXL,EAAO,QAAQ5D,EAAM,OAAQiE,EAAQ,KAAK,GAJ1CE,EAAU,GAEVP,EAAO,KAAK5D,EAAM,OAAQiE,EAAQ,MAAOA,CAAO,EAI1D,CAAO,EAEDjE,EAAM,OAASkE,EACflE,EAAM,UAAY,CAACkE,EACnBlE,EAAM,SAAWoE,EACjBpE,EAAM,WAAa,CAACoE,EACpBpE,EAAM,SAAWqE,EACjBrE,EAAM,OAASmE,EACfnE,EAAM,SAAW,CAACmE,EAClBnE,EAAM,SAAWsE,CACvB,EAAO,CACD,KAAM,GACN,UAAW,EACjB,CAAK,EAMF,EAED,SAAU,CACR,UAAW,UAAqB,CAC9B,IAAIC,EAAUzE,EAAW,KAAK,cAAc,YAAa,KAAK,KAAK,EACnE,OAAOyE,CACR,CACF,EACD,QAAS,CACP,MAAO,UAAiB,CACtB,KAAK,MAAM,QACZ,EACD,SAAU,UAAoB,CAC5B,KAAK,MAAM,WACZ,CACF,CACH,EAEIC,GAAiB,OAAO,OAAW,IAAc,OAAS,OAAOjH,EAAW,IAAcA,EAAS,OAAO,KAAS,IAAc,KAAO,CAAA,EAM5I,SAASkH,GAAqBC,EAAIjH,EAAQ,CACzC,OAAOA,EAAS,CAAE,QAAS,CAAA,GAAMiH,EAAGjH,EAAQA,EAAO,OAAO,EAAGA,EAAO,OACpE,CAED,IAAIkH,GAAaF,GAAqB,SAAUhH,EAAQ,EAEvD,UAAW,CACV,IAAImH,EAAU,CAAA,EAAG,eACfC,EAAQ,CAAE,EAAC,MAEbpH,EAAO,QAAU,SAASqH,EAAQC,EAAO,CACvC,IAAIxF,EAAKyF,EAAMlH,EAAOmH,EACtBD,EAAO,CAAA,EACPC,EAAS,CAAA,EACT,IAAK1F,KAAOwF,EACLH,EAAQ,KAAKG,EAAOxF,CAAG,IAC5BzB,EAAQiH,EAAMxF,CAAG,EACbA,IAAQ,SAGZyF,EAAK,KAAKzF,CAAG,EACb0F,EAAO,KAAKnH,CAAK,IAEnB,OAAO,SAAS,MAAM,KAAM+G,EAAM,KAAKG,CAAI,EAAE,OAAO,CAAC,eAAkB,KAAK,UAAUF,CAAM,EAAK,GAAG,CAAC,CAAC,EAAE,MAAMC,EAAM,KAASE,CAAM,CACvI,CAEA,GAAG,KAAKT,EAAc,CACtB,CAAC,EAED,SAASU,EAAUxE,EAAO,CACxB,GAAKA,EAGL,QAASzB,EAAI,EAAGA,EAAIyB,EAAM,OAAQzB,IAAK,CACrC,IAAIjB,EAAQ0C,EAAMzB,CAAC,EACnB,GAAIjB,EAAM,MAAQ,QAChB,OAAO0C,EAAMzB,CAAC,EACT,GAAIyB,EAAMzB,CAAC,EAAE,SAClB,OAAOiG,EAAUxE,EAAMzB,CAAC,EAAE,QAAQ,CAErC,CACF,CAED,IAAIkG,GAAW,CACb,OAAQ,CAAE,cAAelD,EAAe,aAAcC,EAAc,kBAAmBC,CAAmB,EAC1G,OAAQ,SAAgBqB,EAAG,CACzB,IAAIC,EAAQ,KAER2B,EAAW,CAAA,EACXC,EAAQ,KAAK,UAAU,KAAK,SAAS,EACzC,GAAIA,GAASA,EAAM,QAAU,KAAK,UAChC,OAAO,KAAKA,EAAM,MAAM,EAAE,QAAQ,SAAU9F,EAAK,CAC/C,GAAIkE,EAAM,OAAOlE,CAAG,GAAKkE,EAAM,aAAalE,CAAG,EAAG,CAChD,IAAI+F,EAAM7B,EAAM,OAAOlE,CAAG,GAAKkE,EAAM,aAAalE,CAAG,EAAE8F,CAAK,EAC5D,GAAI5B,EAAM,UAAW,CACnB,IAAI8B,EAAQL,EAAUI,CAAG,EACrBC,IACFA,EAAM,KAAOA,EAAM,MAAQ,CAAA,EAC3BA,EAAM,KAAK,MAAQA,EAAM,KAAK,OAAS,GACvCA,EAAM,KAAK,MAAM,IAAMF,EAAM,IAEhC,CACDD,EAAS,KAAKE,CAAG,CAClB,CACT,CAAO,EACG,CAACF,EAAS,QAAUC,EAAM,SACxB,KAAK,OAAO,SAAW,KAAK,aAAa,UAAS,CACpD,IAAIC,EAAM,KAAK,OAAO,SAAW,KAAK,aAAa,QAAQD,CAAK,EAChE,GAAI,KAAK,UAAW,CAClB,IAAIE,EAAQL,EAAUI,CAAG,EACrBC,IACFA,EAAM,KAAOA,EAAM,MAAQ,CAAA,EAC3BA,EAAM,KAAK,MAAQA,EAAM,KAAK,OAAS,GACvCA,EAAM,KAAK,MAAM,IAAMF,EAAM,IAEhC,CACDD,EAAS,KAAKE,CAAG,CAClB,CAGL,OAAO9B,EAAE,KAAK,KAAO,KAAK,cAAc,YAAa4B,CAAQ,CAC9D,EAED,MAAO,CACL,MAAO,OACP,KAAM,OACN,KAAM,CACJ,KAAM,OACN,QAAS,EACV,EACD,IAAK,CACH,KAAM,MACP,EACD,UAAW,OACZ,EACD,KAAM,UAAgB,CACpB,MAAO,CACL,UAAW,KACX,UAAW,EACjB,CACG,EACD,QAAS,UAAmB,CAC1B,KAAK,UAAY,KAAK,KACtB,KAAK,UAAY,KAAK,OAAS,KAAK,YACrC,EAED,SAAU,CACR,QAAS,UAAmB,CAC1B,IAAIC,EAAQ,KAAK,UAAU,KAAK,SAAS,EACrCG,EAAO,KAAK,MAAQ,KAAK,kBAAkB,cAAgB,KAAK,cAAc,aAElF,MAAI,CAACA,GAAQ,CAACH,EACL,GAGFV,GAAWa,EAAMH,CAAK,CAC9B,CACF,CACH,EAEII,GAAW,CACb,OAAQ,SAAgBjC,EAAG,CACzB,IAAIC,EAAQ,KAER9C,EAAcF,EAAkB,KAAK,OAAO,QAAS,KAAK,aAAa,EACvEiF,EAAc/E,EAAY,OAC1B+C,EAAQ,CACV,IAAK,IACX,EACI,GAAIgC,EAAY,OAAQ,CAYtB,GAXA,KAAK,KAAO1E,EAAQ0E,EAAY,CAAC,CAAC,EAE9B/E,EAAY,UACd,KAAK,UAAU,UAAY,CACzB,IAAIgF,EAAahF,EAAY,SAAS,kBAClCgF,IACFA,EAAW,UAAYA,EAAW,WAAalC,EAAM,KAEjE,CAAS,EAGC,KAAK,UAAW,CAClB,IAAImC,EAAKF,EAAY,CAAC,EAAE,KAAK,MAAM,IAAM,KAAK,WAAW,IACzD,KAAK,WAAW,IAAME,EACtBF,EAAY,CAAC,EAAE,KAAK,MAAM,GAAKE,EAC3BjF,EAAY,OACdA,EAAY,MAAM,KAAOA,EAAY,MAAM,MAAQ,GACnDA,EAAY,MAAM,KAAK,MAAQA,EAAY,MAAM,KAAK,OAAS,GAC/DA,EAAY,MAAM,KAAK,MAAM,IAAMiF,GAC1B,KAAK,MAAQ,UACtBlC,EAAM,IAAMkC,EAEf,CACDF,EAAY,QAAQ,SAAU1H,EAAO,CAC9BA,EAAM,KAAK,aACdA,EAAM,KAAK,WAAa,IAE1BA,EAAM,KAAK,WAAW,KAAK,CAAE,KAAM,qBAAsB,MAAO,CAAE,WAAYyF,EAAM,WAAY,OAAQA,EAAM,aAAe,CAAA,CAAE,EAC/HzF,EAAM,KAAK,MAAM,oBAAoB,EAAI,GACzCA,EAAM,KAAK,MAAM,SAAcyF,EAAM,QAC7C,CAAO,CAGF,CACD,OAAOD,EAAE,KAAK,KAAO,KAAK,cAAc,YAAa,CAAE,MAAS,KAAK,UAAW,MAAOE,CAAK,EAAI,KAAK,OAAO,OAAO,CACpH,EAED,MAAO,CACL,MAAO,OACP,OAAQ,KACR,UAAW,QACX,IAAK,CACH,KAAM,MACP,EACD,SAAU,MACX,EACD,OAAQ,CAAE,cAAezB,EAAe,aAAcC,EAAc,kBAAmBC,CAAmB,EAC1G,KAAM,UAAgB,CACpB,MAAO,CACL,KAAM,GACN,UAAW,KACX,WAAY,CAAE,CACpB,CACG,EAED,QAAS,CACP,WAAY,SAAuBpC,EAAa,CAC9C,IAAI8F,EAAI,KAAK,WACb,OAAO,OAAO,KAAKA,EAAE,MAAM,EAAE,OAAO,SAAUtB,EAASuB,EAAO,CAC5D,OAAAvB,EAAQxE,EAAY,QAAU,IAAMe,EAAUgF,CAAK,CAAC,EAAI,GACjDvB,CACR,EAAEzE,EAAWC,EAAa8F,CAAC,CAAC,CAC9B,CACF,EACD,SAAU,CACR,UAAW,UAAqB,CAC9B,OAAO,KAAK,WAAW,KAAK,cAAc,eAAe,CAC1D,EACD,eAAgB,UAA0B,CACxC,OAAO,KAAK,WAAW,KAAK,cAAc,YAAY,CACvD,CACF,EACD,QAAS,UAAmB,CAC1B,IAAIjC,EAAS,KAEb,KAAK,WAAW,MAAQ,KAAK,KAC7B,KAAK,UAAU,YAAY,KAAK,UAAU,EAE1C,IAAImC,EAAY,KAAK,IAAI,iBAAiB,sBAAsB,EAGhE,KAAK,OAAO,iBAAkB,SAAUjI,EAAOkI,EAAU,CAoBvD,QAnBIV,EAAM,OAENW,EAAQ,SAAehH,EAAGkB,EAAI,CAC5B6F,GACF,OAAO,KAAKA,CAAQ,EAAE,OAAO,SAAUE,EAAG,CACxC,OAAOF,EAASE,CAAC,CAC7B,CAAW,EAAE,QAAQ,SAAUA,EAAG,CACtB,OAAO7F,GAAYF,EAAI+F,CAAC,CACpC,CAAW,EAEHZ,EAAM,CAAA,EACN,OAAO,KAAKxH,CAAK,EAAE,OAAO,SAAUoI,EAAG,CACrC,OAAOpI,EAAMoI,CAAC,CACxB,CAAS,EAAE,QAAQ,SAAUA,EAAG,CACtBZ,EAAI,KAAKY,CAAC,EACVhG,GAASC,EAAI+F,CAAC,CACxB,CAAS,CACT,EAEejH,EAAI,EAAGkB,EAAIA,EAAK4F,EAAU9G,GAAG,GACpCgH,EAAMhH,EAAGkB,CAAE,EAEbyD,EAAO,WAAW,WAAa0B,CACrC,EAAO,CACD,KAAM,GACN,UAAW,EACjB,CAAK,EAED,KAAK,OAAO,OAAQ,SAAUxH,EAAOkI,EAAU,CAC7CpC,EAAO,UAAU,eAAeA,EAAO,UAAU,EACjDA,EAAO,WAAW,MAAQ9F,EAC1B8F,EAAO,UAAU,YAAYA,EAAO,UAAU,CACpD,CAAK,CACF,EACD,QAAS,UAAmB,CAC1B,IAAIuC,EAAS,KAEb,KAAK,UAAY,KAAK,OAAS,KAAK,aACpC,IAAIC,EAAK,KACLC,EAAoB,CAAA,EAEpBC,EAAY,OAChB,KAAK,WAAa,CAChB,MAAO,GACP,OAAQ,GACR,UAAW,GACX,OAAQ,GACR,SAAU,GACV,SAAU,GACV,WAAY,GACZ,SAAU,GACV,SAAU,GACV,WAAY,GACZ,OAAQ,CAAE,EACV,OAAQ,CAAE,EACV,WAAY,KACZ,IAAK,KAAOnF,EAAU,EACtB,sBAAuB,SAA+BoF,EAAWpC,EAAS,CACpEA,EACFiC,EAAG,QAAQ,KAAK,OAAQG,CAAS,EAEjCH,EAAG,KAAK,KAAK,OAAQG,EAAW,EAAI,CAEvC,EACD,aAAc,SAAsBpC,EAAS,CAC3C,KAAK,OAASA,EACd,KAAK,SAAW,CAACA,CAClB,EACD,UAAW,UAAqB,CAC9B,KAAK,OAAS,GACd,KAAK,UAAY,EAClB,EACD,aAAc,UAAwB,CACpC,KAAK,OAAS,GACd,KAAK,UAAY,EAClB,EACD,YAAa,UAAuB,CAClC,KAAK,SAAW,GAChB,KAAK,WAAa,EACnB,EACD,cAAe,UAAyB,CACtC,KAAK,SAAW,GAChB,KAAK,WAAa,EACnB,EACD,YAAa,SAAqBrG,EAAO,CACvC,KAAK,SAAW,OAAOA,GAAU,UAAYA,EAAQ,GACjD,KAAK,SACP,KAAK,eAAc,EAEnB,KAAK,YAAW,CAEnB,EACD,eAAgB,UAA0B,CACxC,KAAK,YAAc,EACpB,EAED,YAAa,GACb,YAAa,CAAE,EACf,UAAW,SAAmBE,EAAO,CACnC,IAAIwI,EAAS,KAERxI,EAGHsI,EAAYtI,EAFZA,EAAQsI,EAIV,KAAK,SAAW,GAChB,IAAInC,EAAU,GAEVrG,EAAQwC,EAAYtC,EAAM,IAAI,EAG9ByI,EAAU,CACZ,SAAU,CAAE,EACZ,MAAO,CAAE,CACnB,EAEQJ,EAAkB,KAAKI,CAAO,EAE9B,IAAI/C,EAAQ1F,EAAM,KAAK,OAAS,CAAA,EAC5B0I,EAAU1I,EAAM,kBAChB0I,GAAWA,EAAQ,qBACrBhD,EAAQT,EAAO,CAAE,EAAES,EAAOgD,EAAQ,kBAAkB,GAGtD,IAAIC,GAAY3I,EAAM,kBAAoBA,EAAM,iBAAiB,UAAYA,EAAM,iBAAiB,UAAY,GAEhH,OAAO,KAAK,KAAK,WAAW,EAAE,QAAQ,SAAUuI,EAAW,CAEzD,IAAKzI,IAAU,IAAMA,IAAU,QAAaA,IAAU,OAASyI,IAAc,WAAY,CACvFC,EAAO,sBAAsBD,EAAW,EAAI,EAI5C,MACD,CAED,IAAIxI,EAAY,OAAO2F,EAAM6C,CAAS,EAAM,IAAc7C,EAAM6C,CAAS,EAAII,GAAUJ,CAAS,EAC5FK,EAAa,OAAOJ,EAAO,YAAYD,CAAS,GAAM,WAG1D,GAAI,EAAAK,IAAe7I,IAAc,MAAQ,OAAOA,EAAc,MAAgB,CAACyI,EAAO,YAAYD,CAAS,EAAE,aAI7G,CAAIxI,IACFyI,EAAO,OAAOD,CAAS,EAAIxI,GAG7B,IAAI8I,EAASD,EAAaJ,EAAO,YAAYD,CAAS,EAAEzI,EAAOC,EAAWC,CAAK,EAAIoI,EAAG,OAAOG,CAAS,EAElG,OAAOM,GAAW,UAChBA,EACFL,EAAO,sBAAsBD,EAAW,EAAI,GAE5CpC,EAAU,GACVqC,EAAO,sBAAsBD,EAAW,EAAK,IAG/CE,EAAQ,SAAS,KAAKI,CAAM,EAC5BJ,EAAQ,MAAM,KAAKF,CAAS,EAC5BH,EAAG,kBAAkB,SAAS,KAAKS,CAAM,GAErD,CAAS,EAEGJ,EAAQ,SAAS,OACnBL,EAAG,cAAc,QAAQ,IAAIK,EAAQ,QAAQ,EAAE,KAAK,SAAUK,EAAS,CAIjEL,IAAYJ,EAAkBA,EAAkB,OAAS,CAAC,IAK9DA,EAAoB,CAAA,EAEpBS,EAAQ,QAAQ,SAAUD,EAAQ5H,EAAG,CACnC,IAAI+D,EAAOyD,EAAQ,MAAMxH,CAAC,EACtB4H,EACFL,EAAO,sBAAsBxD,EAAM,EAAI,GAEvCmB,EAAU,GACVqC,EAAO,sBAAsBxD,EAAM,EAAK,EAExD,CAAa,EACDwD,EAAO,aAAarC,CAAO,EAC3BqC,EAAO,SAAW,GAC9B,CAAW,GAED,KAAK,aAAarC,CAAO,EACzB,KAAK,SAAW,GAEnB,CACP,EAGQ,KAAK,QACP,OAAO,KAAK,KAAK,MAAM,EAAE,QAAQ,SAAU4C,EAAM,CAC3C,OAAOZ,EAAO,OAAOY,CAAI,GAAM,aACjCZ,EAAO,OAAOY,CAAI,EAAE,YAAc,IAClCZ,EAAO,WAAW,YAAYY,CAAI,EAAIZ,EAAO,OAAOY,CAAI,CAIlE,CAAO,EAGH,KAAK,OAAO,SAAU,SAAUvG,EAAGwG,EAAM,CACnC,CAACA,GAAQ,CAACxG,GAGVoB,GAAyBpB,EAAGwG,CAAI,GAClCb,EAAO,WAAW,WAE1B,EAAO,CACD,KAAM,EACZ,CAAK,CACF,EACD,UAAW,UAAqB,CAC9B,KAAK,UAAU,eAAe,KAAK,UAAU,CAC9C,CACH,EAEId,GAAQ,CACV,OAAQ,CAAE,cAAepD,CAAe,EACxC,OAAQ,SAAgBuB,EAAG,CACzB,IAAI7C,EAAcF,EAAkB,KAAK,OAAO,QAAS,KAAK,aAAa,EACvEiF,EAAc/E,EAAY,OAC1B+C,EAAQ,CACV,IAAK,IACX,EACI,GAAIgC,EAAY,QACV,KAAK,UAAW,CAClB,IAAIE,EAAKF,EAAY,CAAC,EAAE,KAAK,OAASA,EAAY,CAAC,EAAE,KAAK,MAAM,IAAM,KAAOvE,EAAQ,EACrFuE,EAAY,CAAC,EAAE,KAAK,MAAM,GAAKE,EAC3BjF,EAAY,OACdA,EAAY,MAAM,KAAOA,EAAY,MAAM,MAAQ,GACnDA,EAAY,MAAM,KAAK,MAAQA,EAAY,MAAM,KAAK,MAAQ,GAC9DA,EAAY,MAAM,KAAK,MAAM,IAAMiF,GAC1B,KAAK,MAAQ,UACtBlC,EAAM,IAAMkC,EAEf,CAEH,OAAOpC,EAAE,KAAK,KAAO,KAAK,cAAc,SAAU,CAAE,MAAOE,CAAO,EAAE,KAAK,OAAO,OAAO,CACxF,EAED,MAAO,CACL,IAAK,CACH,KAAM,MACP,EACD,UAAW,CACT,KAAM,QACN,QAAS,EACV,CACF,CACH,EAEIuD,EAAsB,CAAA,EAE1B,SAASC,EAAcxD,EAAOvF,EAAYgJ,EAAiB,CACzD,OAAO,KAAKzD,CAAK,EAAE,QAAQ,SAAU0D,EAAM,CACzC,IAAIL,EAAOK,IAAS,OAAS1D,EAAM0D,CAAI,EAAE,YAAa,EAAGA,EAAK,cAE1DjJ,EAAW4I,CAAI,GAAK,CAACI,EAAgBJ,CAAI,IAC3CI,EAAgBJ,CAAI,EAAI5I,EAAW4I,CAAI,EAE7C,CAAG,CACF,CAED,SAASM,GAAerJ,EAAOsJ,EAAUnJ,EAAY,CAEnD,IAAIoJ,EAAa,GACb7D,EAAQ1F,EAAM,KAAK,OAAS,CAAA,EAC5BwJ,EAAWF,EAAS,KAAK,OAAS,CAAA,EAClChC,EAAM,CAAA,EAeV,GAbIhF,EAAYtC,EAAM,IAAI,IAAMsC,EAAYgH,EAAS,IAAI,IACvDhC,EAAI,OAAS,GACbiC,EAAa,IAGf,OAAO,KAAKpJ,CAAU,EAAE,QAAQ,SAAUoI,EAAW,CAC/C7C,EAAM6C,CAAS,IAAMiB,EAASjB,CAAS,IACzCjB,EAAIiB,CAAS,EAAI,GACjBgB,EAAa,GAEnB,CAAG,EAGGvJ,EAAM,kBAAoBA,EAAM,iBAAiB,UAAW,CAC9D,IAAIyJ,EAASzJ,EAAM,iBAAiB,UAChC0J,EAAYJ,EAAS,iBAAiB,UAC1C,OAAO,KAAKnJ,CAAU,EAAE,QAAQ,SAAUoI,EAAW,CAC/CkB,EAAOlB,CAAS,IAAMmB,EAAUnB,CAAS,IAC3CjB,EAAIiB,CAAS,EAAI,GACjBgB,EAAa,GAErB,CAAK,CACF,CAED,GAAIA,EACF,OAAOjC,CAEV,CAED,IAAIqC,GAAmB,CACrB,KAAM,qBACN,KAAM,SAAcxH,EAAIyH,EAAS5J,EAAO,CACtC,IAAI6J,EAAaD,EAAQ,MAAM,WAC3BzJ,EAAayJ,EAAQ,MAAM,OAAO,WAElClE,EAAQ1F,EAAM,KAAK,OAAS,CAAA,EAC5B8J,EAAY9G,EAAQhD,CAAK,EAE7B,GAAI,CAAC8J,EAAW,CACd,QAAQ,KAAK,kCAAkC,EAC/C,MACD,CAEGpE,EAAM,WACRuD,EAAoBY,EAAW,GAAG,EAAIzG,GAAS,SAAUyG,EAAY7J,EAAO,CACtE6J,EAAW,aACbA,EAAW,UAAS,EAEtBA,EAAW,UAAU7J,CAAK,CAClC,EAAS0F,EAAM,QAAQ,GAInBwD,EAAcxD,EAAOvF,EAAY0J,EAAW,WAAW,EAGnD7J,EAAM,kBAAoBA,EAAM,iBAAiB,WACnDkJ,EAAclJ,EAAM,iBAAiB,UAAWG,EAAY0J,EAAW,WAAW,EAGpFA,EAAW,UAAU7J,CAAK,EAG1BmC,EAAG,iBAAiB,OAAQ,UAAY,CACtC0H,EAAW,YAAY,EAAK,CAC7B,EAAE,EAAK,EACR1H,EAAG,iBAAiB,QAAS,UAAY,CACvC0H,EAAW,YAAY,EAAI,CAC5B,EAAE,EAAK,EAGR,IAAIzB,EAAKpI,EAAM,kBACXoI,IACFA,EAAG,IAAI,OAAQ,UAAY,CACzByB,EAAW,YAAY,EAAK,CACpC,CAAO,EACDzB,EAAG,IAAI,QAAS,UAAY,CAC1ByB,EAAW,YAAY,EAAI,CACnC,CAAO,EAEDzB,EAAG,MAAM,uBAAwB,UAAY,CAC3CjG,EAAG,iBAAiB,WAAY,UAAY,CAC1C0H,EAAW,YAAY,EAAK,CAC7B,EAAE,EAAK,EACR1H,EAAG,iBAAiB,UAAW,UAAY,CACzC0H,EAAW,YAAY,EAAI,CAC5B,EAAE,EAAK,CAChB,CAAO,EAEDzB,EAAG,IAAI,cAAe,SAAU7F,EAAM,CAC/B6F,EAAG,oBACNc,EAAc3G,EAAMpC,EAAY0J,EAAW,WAAW,EAExDzB,EAAG,mBAAqB7F,EACxBsH,EAAW,UAAUzB,EAAG,MAAM,CACtC,CAAO,EAEJ,EACD,OAAQ,SAAgBjG,EAAIyH,EAAS5J,EAAO+J,EAAU,CACpD,IAAI5J,EAAayJ,EAAQ,MAAM,OAAO,WAElCI,EAAUX,GAAerJ,EAAO+J,EAAU5J,CAAU,EACpD0J,EAAaD,EAAQ,MAAM,WAG3BlE,EAAQ1F,EAAM,KAAK,OAAS,CAAA,EAC5BoI,EAAKpI,EAAM,kBACXoI,GAAMA,EAAG,qBACX1C,EAAQT,EAAO,GAAIS,EAAO0C,EAAGA,EAAG,kBAAkB,CAAC,GAGjDpI,EAAM,IAAI,UAAU,QAAQ6J,EAAW,WAAW,CAAC,CAAC,IAAM,KAC5D7J,EAAM,IAAI,UAAYA,EAAM,IAAI,UAAY,IAAM6J,EAAW,WAAW,KAAK,GAAG,GAG7EG,IAIDA,EAAQ,OAENtE,EAAM,UACRmE,EAAW,SAAW,GACtBZ,EAAoBY,EAAW,GAAG,EAAEA,EAAY7J,CAAK,IAEjD6J,EAAW,aACbA,EAAW,UAAS,EAEtBA,EAAW,UAAU7J,CAAK,GAS5B6J,EAAW,UAAU7J,CAAK,EAE7B,CACH,EAEA,SAASiK,EAAYnF,EAAS,CAC5B,IAAIoF,EAEAC,EAAIlF,EAAO,GAAM,CAAA,EAAIxE,EAAQqE,CAAO,EACxC,KAAK,QAAU,UAAY,CACzB,OAAOzD,EAAe,CAAA,EAAI4C,EAAekG,CAAC,CAC9C,EACE,KAAK,YAAcD,EAAc,CAAE,EAAE7I,EAAe6I,EAAaC,EAAE,cAAe5E,EAAO,EAAGlE,EAAe6I,EAAaC,EAAE,kBAAmBhD,EAAQ,EAAG9F,EAAe6I,EAAaC,EAAE,kBAAmB1C,EAAQ,EAAGpG,EAAe6I,EAAaC,EAAE,eAAgB9C,EAAK,EAAG6C,GAC1Q,KAAK,WAAa,CAAE,iBAAkBP,EAAgB,CACvD,CAED,IAAIS,EAAU,SAAUC,EAAc,CACpC7I,GAAS4I,EAASC,CAAY,EAE9B,SAASD,GAAU,CACjB,OAAA1J,EAAe,KAAM0J,CAAO,EACrBzI,GAA0B,MAAOyI,EAAQ,WAAa,OAAO,eAAeA,CAAO,GAAG,MAAM,KAAM,SAAS,CAAC,CACpH,CAED,OAAAvJ,EAAYuJ,EAAS,KAAM,CAAC,CAC1B,IAAK,UACL,MAAO,SAAiBE,EAAKxF,EAAS,CACpCwF,EAAI,MAAM,IAAI,KAAKxF,CAAO,CAAC,CAC5B,CACL,EAAK,CACD,IAAK,YACL,IAAK,UAAkB,CACrB,MAAO,CAAC,CAAC,KAAK,QAAQ,IACvB,EACD,IAAK,SAAgByF,EAAK,CACxB,KAAK,QAAQ,KAAOA,CACrB,CACF,CAAA,CAAC,EACKH,CACR,EAACH,CAAW,EAEb,OAAAA,EAAY,KAAKG,CAAO,EAExBA,EAAQ,QAAU,IAAIA,EAEfA,CAEP","x_google_ignoreList":[0]}