{"version":3,"file":"preact.mjs","sources":["../src/vnode.js","../src/options.js","../src/h.js","../src/util.js","../src/clone-element.js","../src/constants.js","../src/render-queue.js","../src/vdom/index.js","../src/dom/index.js","../src/vdom/diff.js","../src/vdom/component-recycler.js","../src/vdom/component.js","../src/component.js","../src/render.js","../src/preact.js"],"sourcesContent":["/**\n * Virtual DOM Node\n * @typedef VNode\n * @property {string | function} nodeName The string of the DOM node to create or Component constructor to render\n * @property {Array} children The children of node\n * @property {string | number | undefined} key The key used to identify this VNode in a list\n * @property {object} attributes The properties of this VNode\n */\nexport const VNode = function VNode() {};\n","/**\n * @typedef {import('./component').Component} Component\n * @typedef {import('./vnode').VNode} VNode\n */\n\n/**\n * Global options\n * @public\n * @typedef Options\n * @property {boolean} [syncComponentUpdates] If `true`, `prop` changes trigger synchronous component updates. Defaults to true.\n * @property {(vnode: VNode) => void} [vnode] Processes all created VNodes.\n * @property {(component: Component) => void} [afterMount] Hook invoked after a component is mounted.\n * @property {(component: Component) => void} [afterUpdate] Hook invoked after the DOM is updated with a component's latest render.\n * @property {(component: Component) => void} [beforeUnmount] Hook invoked immediately before a component is unmounted.\n * @property {(rerender: function) => void} [debounceRendering] Hook invoked whenever a rerender is requested. Can be used to debounce rerenders.\n * @property {(event: Event) => Event | void} [event] Hook invoked before any Preact event listeners. The return value (if any) replaces the native browser event given to event listeners\n */\n\n/** @type {Options} */\nconst options = {};\n\nexport default options;\n","import { VNode } from './vnode';\nimport options from './options';\n\n\nconst stack = [];\n\nconst EMPTY_CHILDREN = [];\n\n/**\n * JSX/hyperscript reviver.\n * @see http://jasonformat.com/wtf-is-jsx\n * Benchmarks: https://esbench.com/bench/57ee8f8e330ab09900a1a1a0\n *\n * Note: this is exported as both `h()` and `createElement()` for compatibility\n * reasons.\n *\n * Creates a VNode (virtual DOM element). A tree of VNodes can be used as a\n * lightweight representation of the structure of a DOM tree. This structure can\n * be realized by recursively comparing it against the current _actual_ DOM\n * structure, and applying only the differences.\n *\n * `h()`/`createElement()` accepts an element name, a list of attributes/props,\n * and optionally children to append to the element.\n *\n * @example The following DOM tree\n *\n * `
Hello!
`\n *\n * can be constructed using this function as:\n *\n * `h('div', { id: 'foo', name : 'bar' }, 'Hello!');`\n *\n * @param {string | function} nodeName An element name. Ex: `div`, `a`, `span`, etc.\n * @param {object | null} attributes Any attributes/props to set on the created element.\n * @param {VNode[]} [rest] Additional arguments are taken to be children to\n * append. Can be infinitely nested Arrays.\n *\n * @public\n */\nexport function h(nodeName, attributes) {\n\tlet children=EMPTY_CHILDREN, lastSimple, child, simple, i;\n\tfor (i=arguments.length; i-- > 2; ) {\n\t\tstack.push(arguments[i]);\n\t}\n\tif (attributes && attributes.children!=null) {\n\t\tif (!stack.length) stack.push(attributes.children);\n\t\tdelete attributes.children;\n\t}\n\twhile (stack.length) {\n\t\tif ((child = stack.pop()) && child.pop!==undefined) {\n\t\t\tfor (i=child.length; i--; ) stack.push(child[i]);\n\t\t}\n\t\telse {\n\t\t\tif (typeof child==='boolean') child = null;\n\n\t\t\tif ((simple = typeof nodeName!=='function')) {\n\t\t\t\tif (child==null) child = '';\n\t\t\t\telse if (typeof child==='number') child = String(child);\n\t\t\t\telse if (typeof child!=='string') simple = false;\n\t\t\t}\n\n\t\t\tif (simple && lastSimple) {\n\t\t\t\tchildren[children.length-1] += child;\n\t\t\t}\n\t\t\telse if (children===EMPTY_CHILDREN) {\n\t\t\t\tchildren = [child];\n\t\t\t}\n\t\t\telse {\n\t\t\t\tchildren.push(child);\n\t\t\t}\n\n\t\t\tlastSimple = simple;\n\t\t}\n\t}\n\n\tlet p = new VNode();\n\tp.nodeName = nodeName;\n\tp.children = children;\n\tp.attributes = attributes==null ? undefined : attributes;\n\tp.key = attributes==null ? undefined : attributes.key;\n\n\t// if a \"vnode hook\" is defined, pass every created VNode to it\n\tif (options.vnode!==undefined) options.vnode(p);\n\n\treturn p;\n}\n","/**\n * Copy all properties from `props` onto `obj`.\n * @param {object} obj Object onto which properties should be copied.\n * @param {object} props Object from which to copy properties.\n * @returns {object}\n * @private\n */\nexport function extend(obj, props) {\n\tfor (let i in props) obj[i] = props[i];\n\treturn obj;\n}\n\n/** Invoke or update a ref, depending on whether it is a function or object ref.\n * @param {object|function} [ref=null]\n * @param {any} [value]\n */\nexport function applyRef(ref, value) {\n\tif (ref!=null) {\n\t\tif (typeof ref=='function') ref(value);\n\t\telse ref.current = value;\n\t}\n}\n\n/**\n * Call a function asynchronously, as soon as possible. Makes\n * use of HTML Promise to schedule the callback if available,\n * otherwise falling back to `setTimeout` (mainly for IE<11).\n * @type {(callback: function) => void}\n */\nexport const defer = typeof Promise=='function' ? Promise.resolve().then.bind(Promise.resolve()) : setTimeout;\n","import { extend } from './util';\nimport { h } from './h';\n\n/**\n * Clones the given VNode, optionally adding attributes/props and replacing its\n * children.\n * @param {import('./vnode').VNode} vnode The virtual DOM element to clone\n * @param {object} props Attributes/props to add when cloning\n * @param {Array} [rest] Any additional arguments will be used as replacement\n * children.\n */\nexport function cloneElement(vnode, props) {\n\treturn h(\n\t\tvnode.nodeName,\n\t\textend(extend({}, vnode.attributes), props),\n\t\targuments.length>2 ? [].slice.call(arguments, 2) : vnode.children\n\t);\n}\n","// render modes\n\n/** Do not re-render a component */\nexport const NO_RENDER = 0;\n/** Synchronously re-render a component and its children */\nexport const SYNC_RENDER = 1;\n/** Synchronously re-render a component, even if its lifecycle methods attempt to prevent it. */\nexport const FORCE_RENDER = 2;\n/** Queue asynchronous re-render of a component and it's children */\nexport const ASYNC_RENDER = 3;\n\n\nexport const ATTR_KEY = '__preactattr_';\n\n/** DOM properties that should NOT have \"px\" added when numeric */\nexport const IS_NON_DIMENSIONAL = /acit|ex(?:s|g|n|p|$)|rph|ows|mnc|ntw|ine[ch]|zoo|^ord/i;\n\n","import options from './options';\nimport { defer } from './util';\nimport { renderComponent } from './vdom/component';\n\n/**\n * Managed queue of dirty components to be re-rendered\n * @type {Array}\n */\nlet items = [];\n\n/**\n * Enqueue a rerender of a component\n * @param {import('./component').Component} component The component to rerender\n */\nexport function enqueueRender(component) {\n\tif (!component._dirty && (component._dirty = true) && items.push(component)==1) {\n\t\t(options.debounceRendering || defer)(rerender);\n\t}\n}\n\n/** Rerender all enqueued dirty components */\nexport function rerender() {\n\tlet p;\n\twhile ( (p = items.pop()) ) {\n\t\tif (p._dirty) renderComponent(p);\n\t}\n}\n","import { extend } from '../util';\n\n\n/**\n * Check if two nodes are equivalent.\n * @param {import('../dom').PreactElement} node DOM Node to compare\n * @param {import('../vnode').VNode} vnode Virtual DOM node to compare\n * @param {boolean} [hydrating=false] If true, ignores component constructors\n * when comparing.\n * @private\n */\nexport function isSameNodeType(node, vnode, hydrating) {\n\tif (typeof vnode==='string' || typeof vnode==='number') {\n\t\treturn node.splitText!==undefined;\n\t}\n\tif (typeof vnode.nodeName==='string') {\n\t\treturn !node._componentConstructor && isNamedNode(node, vnode.nodeName);\n\t}\n\treturn hydrating || node._componentConstructor===vnode.nodeName;\n}\n\n\n/**\n * Check if an Element has a given nodeName, case-insensitively.\n * @param {import('../dom').PreactElement} node A DOM Element to inspect the name of.\n * @param {string} nodeName Unnormalized name to compare against.\n */\nexport function isNamedNode(node, nodeName) {\n\treturn node.normalizedNodeName===nodeName || node.nodeName.toLowerCase()===nodeName.toLowerCase();\n}\n\n\n/**\n * Reconstruct Component-style `props` from a VNode.\n * Ensures default/fallback values from `defaultProps`:\n * Own-properties of `defaultProps` not present in `vnode.attributes` are added.\n * @param {import('../vnode').VNode} vnode The VNode to get props for\n * @returns {object} The props to use for this VNode\n */\nexport function getNodeProps(vnode) {\n\tlet props = extend({}, vnode.attributes);\n\tprops.children = vnode.children;\n\n\tlet defaultProps = vnode.nodeName.defaultProps;\n\tif (defaultProps!==undefined) {\n\t\tfor (let i in defaultProps) {\n\t\t\tif (props[i]===undefined) {\n\t\t\t\tprops[i] = defaultProps[i];\n\t\t\t}\n\t\t}\n\t}\n\n\treturn props;\n}\n","import { IS_NON_DIMENSIONAL } from '../constants';\nimport { applyRef } from '../util';\nimport options from '../options';\n\n/**\n * A DOM event listener\n * @typedef {(e: Event) => void} EventListner\n */\n\n/**\n * A mapping of event types to event listeners\n * @typedef {Object.} EventListenerMap\n */\n\n/**\n * Properties Preact adds to elements it creates\n * @typedef PreactElementExtensions\n * @property {string} [normalizedNodeName] A normalized node name to use in diffing\n * @property {EventListenerMap} [_listeners] A map of event listeners added by components to this DOM node\n * @property {import('../component').Component} [_component] The component that rendered this DOM node\n * @property {function} [_componentConstructor] The constructor of the component that rendered this DOM node\n */\n\n/**\n * A DOM element that has been extended with Preact properties\n * @typedef {Element & ElementCSSInlineStyle & PreactElementExtensions} PreactElement\n */\n\n/**\n * Create an element with the given nodeName.\n * @param {string} nodeName The DOM node to create\n * @param {boolean} [isSvg=false] If `true`, creates an element within the SVG\n * namespace.\n * @returns {PreactElement} The created DOM node\n */\nexport function createNode(nodeName, isSvg) {\n\t/** @type {PreactElement} */\n\tlet node = isSvg ? document.createElementNS('http://www.w3.org/2000/svg', nodeName) : document.createElement(nodeName);\n\tnode.normalizedNodeName = nodeName;\n\treturn node;\n}\n\n\n/**\n * Remove a child node from its parent if attached.\n * @param {Node} node The node to remove\n */\nexport function removeNode(node) {\n\tlet parentNode = node.parentNode;\n\tif (parentNode) parentNode.removeChild(node);\n}\n\n\n/**\n * Set a named attribute on the given Node, with special behavior for some names\n * and event handlers. If `value` is `null`, the attribute/handler will be\n * removed.\n * @param {PreactElement} node An element to mutate\n * @param {string} name The name/key to set, such as an event or attribute name\n * @param {*} old The last value that was set for this name/node pair\n * @param {*} value An attribute value, such as a function to be used as an\n * event handler\n * @param {boolean} isSvg Are we currently diffing inside an svg?\n * @private\n */\nexport function setAccessor(node, name, old, value, isSvg) {\n\tif (name==='className') name = 'class';\n\n\n\tif (name==='key') {\n\t\t// ignore\n\t}\n\telse if (name==='ref') {\n\t\tapplyRef(old, null);\n\t\tapplyRef(value, node);\n\t}\n\telse if (name==='class' && !isSvg) {\n\t\tnode.className = value || '';\n\t}\n\telse if (name==='style') {\n\t\tif (!value || typeof value==='string' || typeof old==='string') {\n\t\t\tnode.style.cssText = value || '';\n\t\t}\n\t\tif (value && typeof value==='object') {\n\t\t\tif (typeof old!=='string') {\n\t\t\t\tfor (let i in old) if (!(i in value)) node.style[i] = '';\n\t\t\t}\n\t\t\tfor (let i in value) {\n\t\t\t\tnode.style[i] = typeof value[i]==='number' && IS_NON_DIMENSIONAL.test(i)===false ? (value[i]+'px') : value[i];\n\t\t\t}\n\t\t}\n\t}\n\telse if (name==='dangerouslySetInnerHTML') {\n\t\tif (value) node.innerHTML = value.__html || '';\n\t}\n\telse if (name[0]=='o' && name[1]=='n') {\n\t\tlet useCapture = name !== (name=name.replace(/Capture$/, ''));\n\t\tname = name.toLowerCase().substring(2);\n\t\tif (value) {\n\t\t\tif (!old) node.addEventListener(name, eventProxy, useCapture);\n\t\t}\n\t\telse {\n\t\t\tnode.removeEventListener(name, eventProxy, useCapture);\n\t\t}\n\t\t(node._listeners || (node._listeners = {}))[name] = value;\n\t}\n\telse if (name!=='list' && name!=='type' && !isSvg && name in node) {\n\t\t// Attempt to set a DOM property to the given value.\n\t\t// IE & FF throw for certain property-value combinations.\n\t\ttry {\n\t\t\tnode[name] = value==null ? '' : value;\n\t\t} catch (e) { }\n\t\tif ((value==null || value===false) && name!='spellcheck') node.removeAttribute(name);\n\t}\n\telse {\n\t\tlet ns = isSvg && (name !== (name = name.replace(/^xlink:?/, '')));\n\t\t// spellcheck is treated differently than all other boolean values and\n\t\t// should not be removed when the value is `false`. See:\n\t\t// https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input#attr-spellcheck\n\t\tif (value==null || value===false) {\n\t\t\tif (ns) node.removeAttributeNS('http://www.w3.org/1999/xlink', name.toLowerCase());\n\t\t\telse node.removeAttribute(name);\n\t\t}\n\t\telse if (typeof value!=='function') {\n\t\t\tif (ns) node.setAttributeNS('http://www.w3.org/1999/xlink', name.toLowerCase(), value);\n\t\t\telse node.setAttribute(name, value);\n\t\t}\n\t}\n}\n\n\n/**\n * Proxy an event to hooked event handlers\n * @param {Event} e The event object from the browser\n * @private\n */\nfunction eventProxy(e) {\n\treturn this._listeners[e.type](options.event && options.event(e) || e);\n}\n","import { ATTR_KEY } from '../constants';\nimport { isSameNodeType, isNamedNode } from './index';\nimport { buildComponentFromVNode } from './component';\nimport { createNode, setAccessor } from '../dom/index';\nimport { unmountComponent } from './component';\nimport options from '../options';\nimport { applyRef } from '../util';\nimport { removeNode } from '../dom/index';\n\n/**\n * Queue of components that have been mounted and are awaiting componentDidMount\n * @type {Array}\n */\nexport const mounts = [];\n\n/** Diff recursion count, used to track the end of the diff cycle. */\nexport let diffLevel = 0;\n\n/** Global flag indicating if the diff is currently within an SVG */\nlet isSvgMode = false;\n\n/** Global flag indicating if the diff is performing hydration */\nlet hydrating = false;\n\n/** Invoke queued componentDidMount lifecycle methods */\nexport function flushMounts() {\n\tlet c;\n\twhile ((c = mounts.shift())) {\n\t\tif (options.afterMount) options.afterMount(c);\n\t\tif (c.componentDidMount) c.componentDidMount();\n\t}\n}\n\n\n/**\n * Apply differences in a given vnode (and it's deep children) to a real DOM Node.\n * @param {import('../dom').PreactElement} dom A DOM node to mutate into the shape of a `vnode`\n * @param {import('../vnode').VNode} vnode A VNode (with descendants forming a tree) representing\n * the desired DOM structure\n * @param {object} context The current context\n * @param {boolean} mountAll Whether or not to immediately mount all components\n * @param {Element} parent ?\n * @param {boolean} componentRoot ?\n * @returns {import('../dom').PreactElement} The created/mutated element\n * @private\n */\nexport function diff(dom, vnode, context, mountAll, parent, componentRoot) {\n\t// diffLevel having been 0 here indicates initial entry into the diff (not a subdiff)\n\tif (!diffLevel++) {\n\t\t// when first starting the diff, check if we're diffing an SVG or within an SVG\n\t\tisSvgMode = parent!=null && parent.ownerSVGElement!==undefined;\n\n\t\t// hydration is indicated by the existing element to be diffed not having a prop cache\n\t\thydrating = dom!=null && !(ATTR_KEY in dom);\n\t}\n\n\tlet ret = idiff(dom, vnode, context, mountAll, componentRoot);\n\n\t// append the element if its a new parent\n\tif (parent && ret.parentNode!==parent) parent.appendChild(ret);\n\n\t// diffLevel being reduced to 0 means we're exiting the diff\n\tif (!--diffLevel) {\n\t\thydrating = false;\n\t\t// invoke queued componentDidMount lifecycle methods\n\t\tif (!componentRoot) flushMounts();\n\t}\n\n\treturn ret;\n}\n\n\n/**\n * Internals of `diff()`, separated to allow bypassing diffLevel / mount flushing.\n * @param {import('../dom').PreactElement} dom A DOM node to mutate into the shape of a `vnode`\n * @param {import('../vnode').VNode} vnode A VNode (with descendants forming a tree) representing the desired DOM structure\n * @param {object} context The current context\n * @param {boolean} mountAll Whether or not to immediately mount all components\n * @param {boolean} [componentRoot] ?\n * @private\n */\nfunction idiff(dom, vnode, context, mountAll, componentRoot) {\n\tlet out = dom,\n\t\tprevSvgMode = isSvgMode;\n\n\t// empty values (null, undefined, booleans) render as empty Text nodes\n\tif (vnode==null || typeof vnode==='boolean') vnode = '';\n\n\n\t// Fast case: Strings & Numbers create/update Text nodes.\n\tif (typeof vnode==='string' || typeof vnode==='number') {\n\n\t\t// update if it's already a Text node:\n\t\tif (dom && dom.splitText!==undefined && dom.parentNode && (!dom._component || componentRoot)) {\n\t\t\t/* istanbul ignore if */ /* Browser quirk that can't be covered: https://github.com/developit/preact/commit/fd4f21f5c45dfd75151bd27b4c217d8003aa5eb9 */\n\t\t\tif (dom.nodeValue!=vnode) {\n\t\t\t\tdom.nodeValue = vnode;\n\t\t\t}\n\t\t}\n\t\telse {\n\t\t\t// it wasn't a Text node: replace it with one and recycle the old Element\n\t\t\tout = document.createTextNode(vnode);\n\t\t\tif (dom) {\n\t\t\t\tif (dom.parentNode) dom.parentNode.replaceChild(out, dom);\n\t\t\t\trecollectNodeTree(dom, true);\n\t\t\t}\n\t\t}\n\n\t\tout[ATTR_KEY] = true;\n\n\t\treturn out;\n\t}\n\n\n\t// If the VNode represents a Component, perform a component diff:\n\tlet vnodeName = vnode.nodeName;\n\tif (typeof vnodeName==='function') {\n\t\treturn buildComponentFromVNode(dom, vnode, context, mountAll);\n\t}\n\n\n\t// Tracks entering and exiting SVG namespace when descending through the tree.\n\tisSvgMode = vnodeName==='svg' ? true : vnodeName==='foreignObject' ? false : isSvgMode;\n\n\n\t// If there's no existing element or it's the wrong type, create a new one:\n\tvnodeName = String(vnodeName);\n\tif (!dom || !isNamedNode(dom, vnodeName)) {\n\t\tout = createNode(vnodeName, isSvgMode);\n\n\t\tif (dom) {\n\t\t\t// move children into the replacement node\n\t\t\twhile (dom.firstChild) out.appendChild(dom.firstChild);\n\n\t\t\t// if the previous Element was mounted into the DOM, replace it inline\n\t\t\tif (dom.parentNode) dom.parentNode.replaceChild(out, dom);\n\n\t\t\t// recycle the old element (skips non-Element node types)\n\t\t\trecollectNodeTree(dom, true);\n\t\t}\n\t}\n\n\n\tlet fc = out.firstChild,\n\t\tprops = out[ATTR_KEY],\n\t\tvchildren = vnode.children;\n\n\tif (props==null) {\n\t\tprops = out[ATTR_KEY] = {};\n\t\tfor (let a=out.attributes, i=a.length; i--; ) props[a[i].name] = a[i].value;\n\t}\n\n\t// Optimization: fast-path for elements containing a single TextNode:\n\tif (!hydrating && vchildren && vchildren.length===1 && typeof vchildren[0]==='string' && fc!=null && fc.splitText!==undefined && fc.nextSibling==null) {\n\t\tif (fc.nodeValue!=vchildren[0]) {\n\t\t\tfc.nodeValue = vchildren[0];\n\t\t}\n\t}\n\t// otherwise, if there are existing or new children, diff them:\n\telse if (vchildren && vchildren.length || fc!=null) {\n\t\tinnerDiffNode(out, vchildren, context, mountAll, hydrating || props.dangerouslySetInnerHTML!=null);\n\t}\n\n\n\t// Apply attributes/props from VNode to the DOM Element:\n\tdiffAttributes(out, vnode.attributes, props);\n\n\n\t// restore previous SVG mode: (in case we're exiting an SVG namespace)\n\tisSvgMode = prevSvgMode;\n\n\treturn out;\n}\n\n\n/**\n * Apply child and attribute changes between a VNode and a DOM Node to the DOM.\n * @param {import('../dom').PreactElement} dom Element whose children should be compared & mutated\n * @param {Array} vchildren Array of VNodes to compare to `dom.childNodes`\n * @param {object} context Implicitly descendant context object (from most\n * recent `getChildContext()`)\n * @param {boolean} mountAll Whether or not to immediately mount all components\n * @param {boolean} isHydrating if `true`, consumes externally created elements\n * similar to hydration\n */\nfunction innerDiffNode(dom, vchildren, context, mountAll, isHydrating) {\n\tlet originalChildren = dom.childNodes,\n\t\tchildren = [],\n\t\tkeyed = {},\n\t\tkeyedLen = 0,\n\t\tmin = 0,\n\t\tlen = originalChildren.length,\n\t\tchildrenLen = 0,\n\t\tvlen = vchildren ? vchildren.length : 0,\n\t\tj, c, f, vchild, child;\n\n\t// Build up a map of keyed children and an Array of unkeyed children:\n\tif (len!==0) {\n\t\tfor (let i=0; i;\n * }\n * }\n */\nexport function Component(props, context) {\n\tthis._dirty = true;\n\n\t/**\n\t * @public\n\t * @type {object}\n\t */\n\tthis.context = context;\n\n\t/**\n\t * @public\n\t * @type {object}\n\t */\n\tthis.props = props;\n\n\t/**\n\t * @public\n\t * @type {object}\n\t */\n\tthis.state = this.state || {};\n\n\tthis._renderCallbacks = [];\n}\n\n\nextend(Component.prototype, {\n\n\t/**\n\t * Update component state and schedule a re-render.\n\t * @param {object} state A dict of state properties to be shallowly merged\n\t * \tinto the current state, or a function that will produce such a dict. The\n\t * \tfunction is called with the current state and props.\n\t * @param {() => void} callback A function to be called once component state is\n\t * \tupdated\n\t */\n\tsetState(state, callback) {\n\t\tif (!this.prevState) this.prevState = this.state;\n\t\tthis.state = extend(\n\t\t\textend({}, this.state),\n\t\t\ttypeof state === 'function' ? state(this.state, this.props) : state\n\t\t);\n\t\tif (callback) this._renderCallbacks.push(callback);\n\t\tenqueueRender(this);\n\t},\n\n\n\t/**\n\t * Immediately perform a synchronous re-render of the component.\n\t * @param {() => void} callback A function to be called after component is\n\t * \tre-rendered.\n\t * @private\n\t */\n\tforceUpdate(callback) {\n\t\tif (callback) this._renderCallbacks.push(callback);\n\t\trenderComponent(this, FORCE_RENDER);\n\t},\n\n\n\t/**\n\t * Accepts `props` and `state`, and returns a new Virtual DOM tree to build.\n\t * Virtual DOM is generally constructed via [JSX](http://jasonformat.com/wtf-is-jsx).\n\t * @param {object} props Props (eg: JSX attributes) received from parent\n\t * \telement/component\n\t * @param {object} state The component's current state\n\t * @param {object} context Context object, as returned by the nearest\n\t * ancestor's `getChildContext()`\n\t * @returns {import('./vnode').VNode | void}\n\t */\n\trender() {}\n\n});\n","import { diff } from './vdom/diff';\n\n/**\n * Render JSX into a `parent` Element.\n * @param {import('./vnode').VNode} vnode A (JSX) VNode to render\n * @param {import('./dom').PreactElement} parent DOM element to render into\n * @param {import('./dom').PreactElement} [merge] Attempt to re-use an existing DOM tree rooted at\n * `merge`\n * @public\n *\n * @example\n * // render a div into :\n * render(
hello!
, document.body);\n *\n * @example\n * // render a \"Thing\" component into #foo:\n * const Thing = ({ name }) => { name };\n * render(, document.querySelector('#foo'));\n */\nexport function render(vnode, parent, merge) {\n\treturn diff(merge, vnode, {}, false, parent, false);\n}\n","import { h, h as createElement } from './h';\nimport { cloneElement } from './clone-element';\nimport { Component } from './component';\nimport { render } from './render';\nimport { rerender } from './render-queue';\nimport options from './options';\n\nfunction createRef() {\n\treturn {};\n}\n\nexport default {\n\th,\n\tcreateElement,\n\tcloneElement,\n\tcreateRef,\n\tComponent,\n\trender,\n\trerender,\n\toptions\n};\n\nexport {\n\th,\n\tcreateElement,\n\tcloneElement,\n\tcreateRef,\n\tComponent,\n\trender,\n\trerender,\n\toptions\n};\n"],"names":["VNode","options","stack","EMPTY_CHILDREN","h","nodeName","attributes","children","lastSimple","child","simple","i","arguments","length","push","pop","undefined","String","p","key","vnode","extend","obj","props","applyRef","ref","value","current","defer","Promise","resolve","then","bind","setTimeout","cloneElement","slice","call","NO_RENDER","SYNC_RENDER","FORCE_RENDER","ASYNC_RENDER","ATTR_KEY","IS_NON_DIMENSIONAL","items","enqueueRender","component","_dirty","debounceRendering","rerender","renderComponent","isSameNodeType","node","hydrating","splitText","_componentConstructor","isNamedNode","normalizedNodeName","toLowerCase","getNodeProps","defaultProps","createNode","isSvg","document","createElementNS","createElement","removeNode","parentNode","removeChild","setAccessor","name","old","className","style","cssText","test","innerHTML","__html","useCapture","replace","substring","addEventListener","eventProxy","removeEventListener","_listeners","e","removeAttribute","ns","removeAttributeNS","setAttributeNS","setAttribute","type","event","mounts","diffLevel","isSvgMode","flushMounts","c","shift","afterMount","componentDidMount","diff","dom","context","mountAll","parent","componentRoot","ownerSVGElement","ret","idiff","appendChild","out","prevSvgMode","_component","nodeValue","createTextNode","replaceChild","vnodeName","buildComponentFromVNode","firstChild","fc","vchildren","a","nextSibling","dangerouslySetInnerHTML","innerDiffNode","isHydrating","originalChildren","childNodes","keyed","keyedLen","min","len","childrenLen","vlen","j","f","vchild","__key","trim","insertBefore","recollectNodeTree","unmountOnly","removeChildren","lastChild","next","previousSibling","diffAttributes","attrs","recyclerComponents","createComponent","Ctor","inst","prototype","render","Component","constructor","doRender","nextBase","splice","state","setComponentProps","renderMode","_disable","__ref","getDerivedStateFromProps","base","componentWillMount","componentWillReceiveProps","prevContext","prevProps","syncComponentUpdates","isChild","previousProps","previousState","prevState","previousContext","isUpdate","initialBase","initialChildComponent","skip","snapshot","rendered","cbase","shouldComponentUpdate","componentWillUpdate","getChildContext","getSnapshotBeforeUpdate","childComponent","toUnmount","childProps","_parentComponent","baseParent","componentRef","t","componentDidUpdate","afterUpdate","_renderCallbacks","originalComponent","oldDom","isDirectOwner","isOwner","unmountComponent","beforeUnmount","componentWillUnmount","inner","callback","merge","createRef"],"mappings":"AAQO,IAAMA,QAAQ,SAASA,KAAT,GAAiB,EAA/B;;ACWP,IAAMC,UAAU,EAAhB;;ACfA,IAAMC,QAAQ,EAAd;;AAEA,IAAMC,iBAAiB,EAAvB;;AAiCA,AAAO,SAASC,CAAT,CAAWC,QAAX,EAAqBC,UAArB,EAAiC;KACnCC,WAASJ,cAAb;KAA6BK,mBAA7B;KAAyCC,cAAzC;KAAgDC,eAAhD;KAAwDC,UAAxD;MACKA,IAAEC,UAAUC,MAAjB,EAAyBF,MAAM,CAA/B,GAAoC;QAC7BG,IAAN,CAAWF,UAAUD,CAAV,CAAX;;KAEGL,cAAcA,WAAWC,QAAX,IAAqB,IAAvC,EAA6C;MACxC,CAACL,MAAMW,MAAX,EAAmBX,MAAMY,IAAN,CAAWR,WAAWC,QAAtB;SACZD,WAAWC,QAAlB;;QAEML,MAAMW,MAAb,EAAqB;MAChB,CAACJ,QAAQP,MAAMa,GAAN,EAAT,KAAyBN,MAAMM,GAAN,KAAYC,SAAzC,EAAoD;QAC9CL,IAAEF,MAAMI,MAAb,EAAqBF,GAArB;UAAkCG,IAAN,CAAWL,MAAME,CAAN,CAAX;;GAD7B,MAGK;OACA,OAAOF,KAAP,KAAe,SAAnB,EAA8BA,QAAQ,IAAR;;OAEzBC,SAAS,OAAOL,QAAP,KAAkB,UAAhC,EAA6C;QACxCI,SAAO,IAAX,EAAiBA,QAAQ,EAAR,CAAjB,KACK,IAAI,OAAOA,KAAP,KAAe,QAAnB,EAA6BA,QAAQQ,OAAOR,KAAP,CAAR,CAA7B,KACA,IAAI,OAAOA,KAAP,KAAe,QAAnB,EAA6BC,SAAS,KAAT;;;OAG/BA,UAAUF,UAAd,EAA0B;aAChBD,SAASM,MAAT,GAAgB,CAAzB,KAA+BJ,KAA/B;IADD,MAGK,IAAIF,aAAWJ,cAAf,EAA+B;eACxB,CAACM,KAAD,CAAX;IADI,MAGA;aACKK,IAAT,CAAcL,KAAd;;;gBAGYC,MAAb;;;;KAIEQ,IAAI,IAAIlB,KAAJ,EAAR;GACEK,QAAF,GAAaA,QAAb;GACEE,QAAF,GAAaA,QAAb;GACED,UAAF,GAAeA,cAAY,IAAZ,GAAmBU,SAAnB,GAA+BV,UAA9C;GACEa,GAAF,GAAQb,cAAY,IAAZ,GAAmBU,SAAnB,GAA+BV,WAAWa,GAAlD;;KAGIlB,QAAQmB,KAAR,KAAgBJ,SAApB,EAA+Bf,QAAQmB,KAAR,CAAcF,CAAd;;QAExBA,CAAP;;;AC7EM,SAASG,MAAT,CAAgBC,GAAhB,EAAqBC,KAArB,EAA4B;OAC7B,IAAIZ,CAAT,IAAcY,KAAd;QAAyBZ,CAAJ,IAASY,MAAMZ,CAAN,CAAT;GACrB,OAAOW,GAAP;;;AAOD,AAAO,SAASE,QAAT,CAAkBC,GAAlB,EAAuBC,KAAvB,EAA8B;MAChCD,OAAK,IAAT,EAAe;QACV,OAAOA,GAAP,IAAY,UAAhB,EAA4BA,IAAIC,KAAJ,EAA5B,KACKD,IAAIE,OAAJ,GAAcD,KAAd;;;;AAUP,AAAO,IAAME,QAAQ,OAAOC,OAAP,IAAgB,UAAhB,GAA6BA,QAAQC,OAAR,GAAkBC,IAAlB,CAAuBC,IAAvB,CAA4BH,QAAQC,OAAR,EAA5B,CAA7B,GAA8EG,UAA5F;;AClBA,SAASC,YAAT,CAAsBd,KAAtB,EAA6BG,KAA7B,EAAoC;SACnCnB,EACNgB,MAAMf,QADA,EAENgB,OAAOA,OAAO,EAAP,EAAWD,MAAMd,UAAjB,CAAP,EAAqCiB,KAArC,CAFM,EAGNX,UAAUC,MAAV,GAAiB,CAAjB,GAAqB,GAAGsB,KAAH,CAASC,IAAT,CAAcxB,SAAd,EAAyB,CAAzB,CAArB,GAAmDQ,MAAMb,QAHnD,CAAP;;;ACTM,IAAM8B,YAAY,CAAlB;;AAEP,AAAO,IAAMC,cAAc,CAApB;;AAEP,AAAO,IAAMC,eAAe,CAArB;;AAEP,AAAO,IAAMC,eAAe,CAArB;;AAGP,AAAO,IAAMC,WAAW,eAAjB;;AAGP,AAAO,IAAMC,qBAAqB,wDAA3B;;ACPP,IAAIC,QAAQ,EAAZ;;AAMA,AAAO,SAASC,aAAT,CAAuBC,SAAvB,EAAkC;KACpC,CAACA,UAAUC,MAAX,KAAsBD,UAAUC,MAAV,GAAmB,IAAzC,KAAkDH,MAAM7B,IAAN,CAAW+B,SAAX,KAAuB,CAA7E,EAAgF;GAC9E5C,QAAQ8C,iBAAR,IAA6BnB,KAA9B,EAAqCoB,QAArC;;;;AAKF,AAAO,SAASA,QAAT,GAAoB;KACtB9B,UAAJ;QACSA,IAAIyB,MAAM5B,GAAN,EAAb,EAA4B;MACvBG,EAAE4B,MAAN,EAAcG,gBAAgB/B,CAAhB;;;;ACbT,SAASgC,cAAT,CAAwBC,IAAxB,EAA8B/B,KAA9B,EAAqCgC,SAArC,EAAgD;KAClD,OAAOhC,KAAP,KAAe,QAAf,IAA2B,OAAOA,KAAP,KAAe,QAA9C,EAAwD;SAChD+B,KAAKE,SAAL,KAAiBrC,SAAxB;;KAEG,OAAOI,MAAMf,QAAb,KAAwB,QAA5B,EAAsC;SAC9B,CAAC8C,KAAKG,qBAAN,IAA+BC,YAAYJ,IAAZ,EAAkB/B,MAAMf,QAAxB,CAAtC;;QAEM+C,aAAaD,KAAKG,qBAAL,KAA6BlC,MAAMf,QAAvD;;;AASD,AAAO,SAASkD,WAAT,CAAqBJ,IAArB,EAA2B9C,QAA3B,EAAqC;QACpC8C,KAAKK,kBAAL,KAA0BnD,QAA1B,IAAsC8C,KAAK9C,QAAL,CAAcoD,WAAd,OAA8BpD,SAASoD,WAAT,EAA3E;;;AAWD,AAAO,SAASC,YAAT,CAAsBtC,KAAtB,EAA6B;KAC/BG,QAAQF,OAAO,EAAP,EAAWD,MAAMd,UAAjB,CAAZ;OACMC,QAAN,GAAiBa,MAAMb,QAAvB;;KAEIoD,eAAevC,MAAMf,QAAN,CAAesD,YAAlC;KACIA,iBAAe3C,SAAnB,EAA8B;OACxB,IAAIL,CAAT,IAAcgD,YAAd,EAA4B;OACvBpC,MAAMZ,CAAN,MAAWK,SAAf,EAA0B;UACnBL,CAAN,IAAWgD,aAAahD,CAAb,CAAX;;;;;QAKIY,KAAP;;;ACjBM,SAASqC,UAAT,CAAoBvD,QAApB,EAA8BwD,KAA9B,EAAqC;KAEvCV,OAAOU,QAAQC,SAASC,eAAT,CAAyB,4BAAzB,EAAuD1D,QAAvD,CAAR,GAA2EyD,SAASE,aAAT,CAAuB3D,QAAvB,CAAtF;MACKmD,kBAAL,GAA0BnD,QAA1B;QACO8C,IAAP;;;AAQD,AAAO,SAASc,UAAT,CAAoBd,IAApB,EAA0B;KAC5Be,aAAaf,KAAKe,UAAtB;KACIA,UAAJ,EAAgBA,WAAWC,WAAX,CAAuBhB,IAAvB;;;AAgBjB,AAAO,SAASiB,WAAT,CAAqBjB,IAArB,EAA2BkB,IAA3B,EAAiCC,GAAjC,EAAsC5C,KAAtC,EAA6CmC,KAA7C,EAAoD;KACtDQ,SAAO,WAAX,EAAwBA,OAAO,OAAP;;KAGpBA,SAAO,KAAX,EAAkB,EAAlB,MAGK,IAAIA,SAAO,KAAX,EAAkB;WACbC,GAAT,EAAc,IAAd;WACS5C,KAAT,EAAgByB,IAAhB;EAFI,MAIA,IAAIkB,SAAO,OAAP,IAAkB,CAACR,KAAvB,EAA8B;OAC7BU,SAAL,GAAiB7C,SAAS,EAA1B;EADI,MAGA,IAAI2C,SAAO,OAAX,EAAoB;MACpB,CAAC3C,KAAD,IAAU,OAAOA,KAAP,KAAe,QAAzB,IAAqC,OAAO4C,GAAP,KAAa,QAAtD,EAAgE;QAC1DE,KAAL,CAAWC,OAAX,GAAqB/C,SAAS,EAA9B;;MAEGA,SAAS,OAAOA,KAAP,KAAe,QAA5B,EAAsC;OACjC,OAAO4C,GAAP,KAAa,QAAjB,EAA2B;SACrB,IAAI3D,CAAT,IAAc2D,GAAd;SAAuB,EAAE3D,KAAKe,KAAP,CAAJ,EAAmByB,KAAKqB,KAAL,CAAW7D,CAAX,IAAgB,EAAhB;;;QAElC,IAAIA,EAAT,IAAce,KAAd,EAAqB;SACf8C,KAAL,CAAW7D,EAAX,IAAgB,OAAOe,MAAMf,EAAN,CAAP,KAAkB,QAAlB,IAA8B+B,mBAAmBgC,IAAnB,CAAwB/D,EAAxB,MAA6B,KAA3D,GAAoEe,MAAMf,EAAN,IAAS,IAA7E,GAAqFe,MAAMf,EAAN,CAArG;;;EATE,MAaA,IAAI0D,SAAO,yBAAX,EAAsC;MACtC3C,KAAJ,EAAWyB,KAAKwB,SAAL,GAAiBjD,MAAMkD,MAAN,IAAgB,EAAjC;EADP,MAGA,IAAIP,KAAK,CAAL,KAAS,GAAT,IAAgBA,KAAK,CAAL,KAAS,GAA7B,EAAkC;MAClCQ,aAAaR,UAAUA,OAAKA,KAAKS,OAAL,CAAa,UAAb,EAAyB,EAAzB,CAAf,CAAjB;SACOT,KAAKZ,WAAL,GAAmBsB,SAAnB,CAA6B,CAA7B,CAAP;MACIrD,KAAJ,EAAW;OACN,CAAC4C,GAAL,EAAUnB,KAAK6B,gBAAL,CAAsBX,IAAtB,EAA4BY,UAA5B,EAAwCJ,UAAxC;GADX,MAGK;QACCK,mBAAL,CAAyBb,IAAzB,EAA+BY,UAA/B,EAA2CJ,UAA3C;;GAEA1B,KAAKgC,UAAL,KAAoBhC,KAAKgC,UAAL,GAAkB,EAAtC,CAAD,EAA4Cd,IAA5C,IAAoD3C,KAApD;EATI,MAWA,IAAI2C,SAAO,MAAP,IAAiBA,SAAO,MAAxB,IAAkC,CAACR,KAAnC,IAA4CQ,QAAQlB,IAAxD,EAA8D;MAG9D;QACEkB,IAAL,IAAa3C,SAAO,IAAP,GAAc,EAAd,GAAmBA,KAAhC;GADD,CAEE,OAAO0D,CAAP,EAAU;MACR,CAAC1D,SAAO,IAAP,IAAeA,UAAQ,KAAxB,KAAkC2C,QAAM,YAA5C,EAA0DlB,KAAKkC,eAAL,CAAqBhB,IAArB;EANtD,MAQA;MACAiB,KAAKzB,SAAUQ,UAAUA,OAAOA,KAAKS,OAAL,CAAa,UAAb,EAAyB,EAAzB,CAAjB,CAAnB;;MAIIpD,SAAO,IAAP,IAAeA,UAAQ,KAA3B,EAAkC;OAC7B4D,EAAJ,EAAQnC,KAAKoC,iBAAL,CAAuB,8BAAvB,EAAuDlB,KAAKZ,WAAL,EAAvD,EAAR,KACKN,KAAKkC,eAAL,CAAqBhB,IAArB;GAFN,MAIK,IAAI,OAAO3C,KAAP,KAAe,UAAnB,EAA+B;OAC/B4D,EAAJ,EAAQnC,KAAKqC,cAAL,CAAoB,8BAApB,EAAoDnB,KAAKZ,WAAL,EAApD,EAAwE/B,KAAxE,EAAR,KACKyB,KAAKsC,YAAL,CAAkBpB,IAAlB,EAAwB3C,KAAxB;;;;;AAWR,SAASuD,UAAT,CAAoBG,CAApB,EAAuB;QACf,KAAKD,UAAL,CAAgBC,EAAEM,IAAlB,EAAwBzF,QAAQ0F,KAAR,IAAiB1F,QAAQ0F,KAAR,CAAcP,CAAd,CAAjB,IAAqCA,CAA7D,CAAP;;;AC5HM,IAAMQ,SAAS,EAAf;;AAGP,AAAO,IAAIC,YAAY,CAAhB;;AAGP,IAAIC,YAAY,KAAhB;;AAGA,IAAI1C,YAAY,KAAhB;;AAGA,AAAO,SAAS2C,WAAT,GAAuB;KACzBC,UAAJ;QACQA,IAAIJ,OAAOK,KAAP,EAAZ,EAA6B;MACxBhG,QAAQiG,UAAZ,EAAwBjG,QAAQiG,UAAR,CAAmBF,CAAnB;MACpBA,EAAEG,iBAAN,EAAyBH,EAAEG,iBAAF;;;;AAiB3B,AAAO,SAASC,IAAT,CAAcC,GAAd,EAAmBjF,KAAnB,EAA0BkF,OAA1B,EAAmCC,QAAnC,EAA6CC,MAA7C,EAAqDC,aAArD,EAAoE;KAEtE,CAACZ,WAAL,EAAkB;cAELW,UAAQ,IAAR,IAAgBA,OAAOE,eAAP,KAAyB1F,SAArD;;cAGYqF,OAAK,IAAL,IAAa,EAAE5D,YAAY4D,GAAd,CAAzB;;;KAGGM,MAAMC,MAAMP,GAAN,EAAWjF,KAAX,EAAkBkF,OAAlB,EAA2BC,QAA3B,EAAqCE,aAArC,CAAV;;KAGID,UAAUG,IAAIzC,UAAJ,KAAiBsC,MAA/B,EAAuCA,OAAOK,WAAP,CAAmBF,GAAnB;;KAGnC,IAAGd,SAAP,EAAkB;cACL,KAAZ;;MAEI,CAACY,aAAL,EAAoBV;;;QAGdY,GAAP;;;AAaD,SAASC,KAAT,CAAeP,GAAf,EAAoBjF,KAApB,EAA2BkF,OAA3B,EAAoCC,QAApC,EAA8CE,aAA9C,EAA6D;KACxDK,MAAMT,GAAV;KACCU,cAAcjB,SADf;;KAII1E,SAAO,IAAP,IAAe,OAAOA,KAAP,KAAe,SAAlC,EAA6CA,QAAQ,EAAR;;KAIzC,OAAOA,KAAP,KAAe,QAAf,IAA2B,OAAOA,KAAP,KAAe,QAA9C,EAAwD;MAGnDiF,OAAOA,IAAIhD,SAAJ,KAAgBrC,SAAvB,IAAoCqF,IAAInC,UAAxC,KAAuD,CAACmC,IAAIW,UAAL,IAAmBP,aAA1E,CAAJ,EAA8F;OAEzFJ,IAAIY,SAAJ,IAAe7F,KAAnB,EAA0B;QACrB6F,SAAJ,GAAgB7F,KAAhB;;GAHF,MAMK;SAEE0C,SAASoD,cAAT,CAAwB9F,KAAxB,CAAN;OACIiF,GAAJ,EAAS;QACJA,IAAInC,UAAR,EAAoBmC,IAAInC,UAAJ,CAAeiD,YAAf,CAA4BL,GAA5B,EAAiCT,GAAjC;sBACFA,GAAlB,EAAuB,IAAvB;;;;MAIE5D,QAAJ,IAAgB,IAAhB;;SAEOqE,GAAP;;;KAKGM,YAAYhG,MAAMf,QAAtB;KACI,OAAO+G,SAAP,KAAmB,UAAvB,EAAmC;SAC3BC,wBAAwBhB,GAAxB,EAA6BjF,KAA7B,EAAoCkF,OAApC,EAA6CC,QAA7C,CAAP;;;aAKWa,cAAY,KAAZ,GAAoB,IAApB,GAA2BA,cAAY,eAAZ,GAA8B,KAA9B,GAAsCtB,SAA7E;;aAIY7E,OAAOmG,SAAP,CAAZ;KACI,CAACf,GAAD,IAAQ,CAAC9C,YAAY8C,GAAZ,EAAiBe,SAAjB,CAAb,EAA0C;QACnCxD,WAAWwD,SAAX,EAAsBtB,SAAtB,CAAN;;MAEIO,GAAJ,EAAS;UAEDA,IAAIiB,UAAX;QAA2BT,WAAJ,CAAgBR,IAAIiB,UAApB;;OAGnBjB,IAAInC,UAAR,EAAoBmC,IAAInC,UAAJ,CAAeiD,YAAf,CAA4BL,GAA5B,EAAiCT,GAAjC;;qBAGFA,GAAlB,EAAuB,IAAvB;;;;KAKEkB,KAAKT,IAAIQ,UAAb;KACC/F,QAAQuF,IAAIrE,QAAJ,CADT;KAEC+E,YAAYpG,MAAMb,QAFnB;;KAIIgB,SAAO,IAAX,EAAiB;UACRuF,IAAIrE,QAAJ,IAAgB,EAAxB;OACK,IAAIgF,IAAEX,IAAIxG,UAAV,EAAsBK,IAAE8G,EAAE5G,MAA/B,EAAuCF,GAAvC;SAAoD8G,EAAE9G,CAAF,EAAK0D,IAAX,IAAmBoD,EAAE9G,CAAF,EAAKe,KAAxB;;;;KAI3C,CAAC0B,SAAD,IAAcoE,SAAd,IAA2BA,UAAU3G,MAAV,KAAmB,CAA9C,IAAmD,OAAO2G,UAAU,CAAV,CAAP,KAAsB,QAAzE,IAAqFD,MAAI,IAAzF,IAAiGA,GAAGlE,SAAH,KAAerC,SAAhH,IAA6HuG,GAAGG,WAAH,IAAgB,IAAjJ,EAAuJ;MAClJH,GAAGN,SAAH,IAAcO,UAAU,CAAV,CAAlB,EAAgC;MAC5BP,SAAH,GAAeO,UAAU,CAAV,CAAf;;EAFF,MAMK,IAAIA,aAAaA,UAAU3G,MAAvB,IAAiC0G,MAAI,IAAzC,EAA+C;iBACrCT,GAAd,EAAmBU,SAAnB,EAA8BlB,OAA9B,EAAuCC,QAAvC,EAAiDnD,aAAa7B,MAAMoG,uBAAN,IAA+B,IAA7F;;;gBAKcb,GAAf,EAAoB1F,MAAMd,UAA1B,EAAsCiB,KAAtC;;aAIYwF,WAAZ;;QAEOD,GAAP;;;AAcD,SAASc,aAAT,CAAuBvB,GAAvB,EAA4BmB,SAA5B,EAAuClB,OAAvC,EAAgDC,QAAhD,EAA0DsB,WAA1D,EAAuE;KAClEC,mBAAmBzB,IAAI0B,UAA3B;KACCxH,WAAW,EADZ;KAECyH,QAAQ,EAFT;KAGCC,WAAW,CAHZ;KAICC,MAAM,CAJP;KAKCC,MAAML,iBAAiBjH,MALxB;KAMCuH,cAAc,CANf;KAOCC,OAAOb,YAAYA,UAAU3G,MAAtB,GAA+B,CAPvC;KAQCyH,UARD;KAQItC,UARJ;KAQOuC,UARP;KAQUC,eARV;KAQkB/H,cARlB;;KAWI0H,QAAM,CAAV,EAAa;OACP,IAAIxH,IAAE,CAAX,EAAcA,IAAEwH,GAAhB,EAAqBxH,GAArB,EAA0B;OACrBF,SAAQqH,iBAAiBnH,CAAjB,CAAZ;OACCY,QAAQd,OAAMgC,QAAN,CADT;OAECtB,MAAMkH,QAAQ9G,KAAR,GAAgBd,OAAMuG,UAAN,GAAmBvG,OAAMuG,UAAN,CAAiByB,KAApC,GAA4ClH,MAAMJ,GAAlE,GAAwE,IAF/E;OAGIA,OAAK,IAAT,EAAe;;UAERA,GAAN,IAAaV,MAAb;IAFD,MAIK,IAAIc,UAAUd,OAAM4C,SAAN,KAAkBrC,SAAlB,GAA+B6G,cAAcpH,OAAMwG,SAAN,CAAgByB,IAAhB,EAAd,GAAuC,IAAtE,GAA8Eb,WAAxF,CAAJ,EAA0G;aACrGO,aAAT,IAA0B3H,MAA1B;;;;;KAKC4H,SAAO,CAAX,EAAc;OACR,IAAI1H,KAAE,CAAX,EAAcA,KAAE0H,IAAhB,EAAsB1H,IAAtB,EAA2B;YACjB6G,UAAU7G,EAAV,CAAT;WACQ,IAAR;;OAGIQ,OAAMqH,OAAOrH,GAAjB;OACIA,QAAK,IAAT,EAAe;QACV8G,YAAYD,MAAM7G,IAAN,MAAaH,SAA7B,EAAwC;aAC/BgH,MAAM7G,IAAN,CAAR;WACMA,IAAN,IAAaH,SAAb;;;IAHF,MAQK,IAAIkH,MAAIE,WAAR,EAAqB;UACpBE,IAAEJ,GAAP,EAAYI,IAAEF,WAAd,EAA2BE,GAA3B,EAAgC;UAC3B/H,SAAS+H,CAAT,MAActH,SAAd,IAA2BkC,eAAe8C,IAAIzF,SAAS+H,CAAT,CAAnB,EAAgCE,MAAhC,EAAwCX,WAAxC,CAA/B,EAAqF;eAC5E7B,CAAR;gBACSsC,CAAT,IAActH,SAAd;WACIsH,MAAIF,cAAY,CAApB,EAAuBA;WACnBE,MAAIJ,GAAR,EAAaA;;;;;;WAORtB,MAAMnG,KAAN,EAAa+H,MAAb,EAAqBlC,OAArB,EAA8BC,QAA9B,CAAR;;OAEIuB,iBAAiBnH,EAAjB,CAAJ;OACIF,SAASA,UAAQ4F,GAAjB,IAAwB5F,UAAQ8H,CAApC,EAAuC;QAClCA,KAAG,IAAP,EAAa;SACR1B,WAAJ,CAAgBpG,KAAhB;KADD,MAGK,IAAIA,UAAQ8H,EAAEb,WAAd,EAA2B;gBACpBa,CAAX;KADI,MAGA;SACAI,YAAJ,CAAiBlI,KAAjB,EAAwB8H,CAAxB;;;;;;KAQAN,QAAJ,EAAc;OACR,IAAItH,GAAT,IAAcqH,KAAd;OAAyBA,MAAMrH,GAAN,MAAWK,SAAf,EAA0B4H,kBAAkBZ,MAAMrH,GAAN,CAAlB,EAA4B,KAA5B;;;;QAIzCuH,OAAKE,WAAZ,EAAyB;MACpB,CAAC3H,QAAQF,SAAS6H,aAAT,CAAT,MAAoCpH,SAAxC,EAAmD4H,kBAAkBnI,KAAlB,EAAyB,KAAzB;;;;AAarD,AAAO,SAASmI,iBAAT,CAA2BzF,IAA3B,EAAiC0F,WAAjC,EAA8C;KAChDhG,YAAYM,KAAK6D,UAArB;KACInE,SAAJ,EAAe;mBAEGA,SAAjB;EAFD,MAIK;MAGAM,KAAKV,QAAL,KAAgB,IAApB,EAA0BjB,SAAS2B,KAAKV,QAAL,EAAehB,GAAxB,EAA6B,IAA7B;;MAEtBoH,gBAAc,KAAd,IAAuB1F,KAAKV,QAAL,KAAgB,IAA3C,EAAiD;cACrCU,IAAX;;;iBAGcA,IAAf;;;;AAUF,AAAO,SAAS2F,cAAT,CAAwB3F,IAAxB,EAA8B;QAC7BA,KAAK4F,SAAZ;QACO5F,IAAP,EAAa;MACR6F,OAAO7F,KAAK8F,eAAhB;oBACkB9F,IAAlB,EAAwB,IAAxB;SACO6F,IAAP;;;;AAYF,SAASE,cAAT,CAAwB7C,GAAxB,EAA6B8C,KAA7B,EAAoC7E,GAApC,EAAyC;KACpCD,aAAJ;;MAGKA,IAAL,IAAaC,GAAb,EAAkB;MACb,EAAE6E,SAASA,MAAM9E,IAAN,KAAa,IAAxB,KAAiCC,IAAID,IAAJ,KAAW,IAAhD,EAAsD;eACzCgC,GAAZ,EAAiBhC,IAAjB,EAAuBC,IAAID,IAAJ,CAAvB,EAAkCC,IAAID,IAAJ,IAAYrD,SAA9C,EAAyD8E,SAAzD;;;;MAKGzB,IAAL,IAAa8E,KAAb,EAAoB;MACf9E,SAAO,UAAP,IAAqBA,SAAO,WAA5B,KAA4C,EAAEA,QAAQC,GAAV,KAAkB6E,MAAM9E,IAAN,OAAeA,SAAO,OAAP,IAAkBA,SAAO,SAAzB,GAAqCgC,IAAIhC,IAAJ,CAArC,GAAiDC,IAAID,IAAJ,CAAhE,CAA9D,CAAJ,EAA+I;eAClIgC,GAAZ,EAAiBhC,IAAjB,EAAuBC,IAAID,IAAJ,CAAvB,EAAkCC,IAAID,IAAJ,IAAY8E,MAAM9E,IAAN,CAA9C,EAA2DyB,SAA3D;;;;;ACtUI,IAAMsD,qBAAqB,EAA3B;;AAWP,AAAO,SAASC,eAAT,CAAyBC,IAAzB,EAA+B/H,KAA/B,EAAsC+E,OAAtC,EAA+C;KACjDiD,aAAJ;KAAU5I,IAAIyI,mBAAmBvI,MAAjC;;KAEIyI,KAAKE,SAAL,IAAkBF,KAAKE,SAAL,CAAeC,MAArC,EAA6C;SACrC,IAAIH,IAAJ,CAAS/H,KAAT,EAAgB+E,OAAhB,CAAP;YACUlE,IAAV,CAAemH,IAAf,EAAqBhI,KAArB,EAA4B+E,OAA5B;EAFD,MAIK;SACG,IAAIoD,SAAJ,CAAcnI,KAAd,EAAqB+E,OAArB,CAAP;OACKqD,WAAL,GAAmBL,IAAnB;OACKG,MAAL,GAAcG,QAAd;;;QAIMjJ,GAAP,EAAY;MACPyI,mBAAmBzI,CAAnB,EAAsBgJ,WAAtB,KAAoCL,IAAxC,EAA8C;QACxCO,QAAL,GAAgBT,mBAAmBzI,CAAnB,EAAsBkJ,QAAtC;sBACmBC,MAAnB,CAA0BnJ,CAA1B,EAA6B,CAA7B;UACO4I,IAAP;;;;QAIKA,IAAP;;;AAKD,SAASK,QAAT,CAAkBrI,KAAlB,EAAyBwI,KAAzB,EAAgCzD,OAAhC,EAAyC;QACjC,KAAKqD,WAAL,CAAiBpI,KAAjB,EAAwB+E,OAAxB,CAAP;;;AC7BM,SAAS0D,iBAAT,CAA2BnH,SAA3B,EAAsCtB,KAAtC,EAA6C0I,UAA7C,EAAyD3D,OAAzD,EAAkEC,QAAlE,EAA4E;KAC9E1D,UAAUqH,QAAd,EAAwB;WACdA,QAAV,GAAqB,IAArB;;WAEUC,KAAV,GAAkB5I,MAAME,GAAxB;WACUgH,KAAV,GAAkBlH,MAAMJ,GAAxB;QACOI,MAAME,GAAb;QACOF,MAAMJ,GAAb;;KAEI,OAAO0B,UAAU8G,WAAV,CAAsBS,wBAA7B,KAA0D,WAA9D,EAA2E;MACtE,CAACvH,UAAUwH,IAAX,IAAmB9D,QAAvB,EAAiC;OAC5B1D,UAAUyH,kBAAd,EAAkCzH,UAAUyH,kBAAV;GADnC,MAGK,IAAIzH,UAAU0H,yBAAd,EAAyC;aACnCA,yBAAV,CAAoChJ,KAApC,EAA2C+E,OAA3C;;;;KAIEA,WAAWA,YAAUzD,UAAUyD,OAAnC,EAA4C;MACvC,CAACzD,UAAU2H,WAAf,EAA4B3H,UAAU2H,WAAV,GAAwB3H,UAAUyD,OAAlC;YAClBA,OAAV,GAAoBA,OAApB;;;KAGG,CAACzD,UAAU4H,SAAf,EAA0B5H,UAAU4H,SAAV,GAAsB5H,UAAUtB,KAAhC;WAChBA,KAAV,GAAkBA,KAAlB;;WAEU2I,QAAV,GAAqB,KAArB;;KAEID,eAAa5H,SAAjB,EAA4B;MACvB4H,eAAa3H,WAAb,IAA4BrC,QAAQyK,oBAAR,KAA+B,KAA3D,IAAoE,CAAC7H,UAAUwH,IAAnF,EAAyF;mBACxExH,SAAhB,EAA2BP,WAA3B,EAAwCiE,QAAxC;GADD,MAGK;iBACU1D,SAAd;;;;UAIOA,UAAUsH,KAAnB,EAA0BtH,SAA1B;;;AAcD,AAAO,SAASI,eAAT,CAAyBJ,SAAzB,EAAoCoH,UAApC,EAAgD1D,QAAhD,EAA0DoE,OAA1D,EAAmE;KACrE9H,UAAUqH,QAAd,EAAwB;;KAEpB3I,QAAQsB,UAAUtB,KAAtB;KACCwI,QAAQlH,UAAUkH,KADnB;KAECzD,UAAUzD,UAAUyD,OAFrB;KAGCsE,gBAAgB/H,UAAU4H,SAAV,IAAuBlJ,KAHxC;KAICsJ,gBAAgBhI,UAAUiI,SAAV,IAAuBf,KAJxC;KAKCgB,kBAAkBlI,UAAU2H,WAAV,IAAyBlE,OAL5C;KAMC0E,WAAWnI,UAAUwH,IANtB;KAOCR,WAAWhH,UAAUgH,QAPtB;KAQCoB,cAAcD,YAAYnB,QAR3B;KASCqB,wBAAwBrI,UAAUmE,UATnC;KAUCmE,OAAO,KAVR;KAWCC,WAAWL,eAXZ;KAYCM,iBAZD;KAYW9B,aAZX;KAYiB+B,cAZjB;;KAcIzI,UAAU8G,WAAV,CAAsBS,wBAA1B,EAAoD;UAC3C/I,OAAOA,OAAO,EAAP,EAAW0I,KAAX,CAAP,EAA0BlH,UAAU8G,WAAV,CAAsBS,wBAAtB,CAA+C7I,KAA/C,EAAsDwI,KAAtD,CAA1B,CAAR;YACUA,KAAV,GAAkBA,KAAlB;;;KAIGiB,QAAJ,EAAc;YACHzJ,KAAV,GAAkBqJ,aAAlB;YACUb,KAAV,GAAkBc,aAAlB;YACUvE,OAAV,GAAoByE,eAApB;MACId,eAAa1H,YAAb,IACAM,UAAU0I,qBADV,IAEA1I,UAAU0I,qBAAV,CAAgChK,KAAhC,EAAuCwI,KAAvC,EAA8CzD,OAA9C,MAA2D,KAF/D,EAEsE;UAC9D,IAAP;GAHD,MAKK,IAAIzD,UAAU2I,mBAAd,EAAmC;aAC7BA,mBAAV,CAA8BjK,KAA9B,EAAqCwI,KAArC,EAA4CzD,OAA5C;;YAES/E,KAAV,GAAkBA,KAAlB;YACUwI,KAAV,GAAkBA,KAAlB;YACUzD,OAAV,GAAoBA,OAApB;;;WAGSmE,SAAV,GAAsB5H,UAAUiI,SAAV,GAAsBjI,UAAU2H,WAAV,GAAwB3H,UAAUgH,QAAV,GAAqB,IAAzF;WACU/G,MAAV,GAAmB,KAAnB;;KAEI,CAACqI,IAAL,EAAW;aACCtI,UAAU4G,MAAV,CAAiBlI,KAAjB,EAAwBwI,KAAxB,EAA+BzD,OAA/B,CAAX;;MAGIzD,UAAU4I,eAAd,EAA+B;aACpBpK,OAAOA,OAAO,EAAP,EAAWiF,OAAX,CAAP,EAA4BzD,UAAU4I,eAAV,EAA5B,CAAV;;;MAGGT,YAAYnI,UAAU6I,uBAA1B,EAAmD;cACvC7I,UAAU6I,uBAAV,CAAkCd,aAAlC,EAAiDC,aAAjD,CAAX;;;MAGGc,iBAAiBN,YAAYA,SAAShL,QAA1C;MACCuL,kBADD;MACYvB,aADZ;;MAGI,OAAOsB,cAAP,KAAwB,UAA5B,EAAwC;;OAGnCE,aAAanI,aAAa2H,QAAb,CAAjB;UACOH,qBAAP;;OAEI3B,QAAQA,KAAKI,WAAL,KAAmBgC,cAA3B,IAA6CE,WAAW1K,GAAX,IAAgBoI,KAAKd,KAAtE,EAA6E;sBAC1Dc,IAAlB,EAAwBsC,UAAxB,EAAoCvJ,WAApC,EAAiDgE,OAAjD,EAA0D,KAA1D;IADD,MAGK;gBACQiD,IAAZ;;cAEUvC,UAAV,GAAuBuC,OAAOF,gBAAgBsC,cAAhB,EAAgCE,UAAhC,EAA4CvF,OAA5C,CAA9B;SACKuD,QAAL,GAAgBN,KAAKM,QAAL,IAAiBA,QAAjC;SACKiC,gBAAL,GAAwBjJ,SAAxB;sBACkB0G,IAAlB,EAAwBsC,UAAxB,EAAoCxJ,SAApC,EAA+CiE,OAA/C,EAAwD,KAAxD;oBACgBiD,IAAhB,EAAsBjH,WAAtB,EAAmCiE,QAAnC,EAA6C,IAA7C;;;UAGMgD,KAAKc,IAAZ;GAnBD,MAqBK;WACIY,WAAR;;eAGYC,qBAAZ;OACIU,SAAJ,EAAe;YACN/I,UAAUmE,UAAV,GAAuB,IAA/B;;;OAGGiE,eAAehB,eAAa3H,WAAhC,EAA6C;QACxCgJ,KAAJ,EAAWA,MAAMtE,UAAN,GAAmB,IAAnB;WACJZ,KAAKkF,KAAL,EAAYD,QAAZ,EAAsB/E,OAAtB,EAA+BC,YAAY,CAACyE,QAA5C,EAAsDC,eAAeA,YAAY/G,UAAjF,EAA6F,IAA7F,CAAP;;;;MAIE+G,eAAeZ,SAAOY,WAAtB,IAAqC1B,SAAO2B,qBAAhD,EAAuE;OAClEa,aAAad,YAAY/G,UAA7B;OACI6H,cAAc1B,SAAO0B,UAAzB,EAAqC;eACzB5E,YAAX,CAAwBkD,IAAxB,EAA8BY,WAA9B;;QAEI,CAACW,SAAL,EAAgB;iBACH5E,UAAZ,GAAyB,IAAzB;uBACkBiE,WAAlB,EAA+B,KAA/B;;;;;MAKCW,SAAJ,EAAe;oBACGA,SAAjB;;;YAGSvB,IAAV,GAAiBA,IAAjB;MACIA,QAAQ,CAACM,OAAb,EAAsB;OACjBqB,eAAenJ,SAAnB;OACCoJ,IAAIpJ,SADL;UAEQoJ,IAAEA,EAAEH,gBAAZ,EAA+B;KAC7BE,eAAeC,CAAhB,EAAmB5B,IAAnB,GAA0BA,IAA1B;;QAEIrD,UAAL,GAAkBgF,YAAlB;QACK1I,qBAAL,GAA6B0I,aAAarC,WAA1C;;;;KAIE,CAACqB,QAAD,IAAazE,QAAjB,EAA2B;SACnBzF,IAAP,CAAY+B,SAAZ;EADD,MAGK,IAAI,CAACsI,IAAL,EAAW;;MAMXtI,UAAUqJ,kBAAd,EAAkC;aACvBA,kBAAV,CAA6BtB,aAA7B,EAA4CC,aAA5C,EAA2DO,QAA3D;;MAEGnL,QAAQkM,WAAZ,EAAyBlM,QAAQkM,WAAR,CAAoBtJ,SAApB;;;QAGnBA,UAAUuJ,gBAAV,CAA2BvL,MAAlC;YAAoDuL,gBAAV,CAA2BrL,GAA3B,GAAiCqB,IAAjC,CAAsCS,SAAtC;EAE1C,IAAI,CAACgD,SAAD,IAAc,CAAC8E,OAAnB,EAA4B5E;;;AAc7B,AAAO,SAASsB,uBAAT,CAAiChB,GAAjC,EAAsCjF,KAAtC,EAA6CkF,OAA7C,EAAsDC,QAAtD,EAAgE;KAClEP,IAAIK,OAAOA,IAAIW,UAAnB;KACCqF,oBAAoBrG,CADrB;KAECsG,SAASjG,GAFV;KAGCkG,gBAAgBvG,KAAKK,IAAI/C,qBAAJ,KAA4BlC,MAAMf,QAHxD;KAICmM,UAAUD,aAJX;KAKChL,QAAQmC,aAAatC,KAAb,CALT;QAMO4E,KAAK,CAACwG,OAAN,KAAkBxG,IAAEA,EAAE8F,gBAAtB,CAAP,EAAgD;YACrC9F,EAAE2D,WAAF,KAAgBvI,MAAMf,QAAhC;;;KAGG2F,KAAKwG,OAAL,KAAiB,CAACjG,QAAD,IAAaP,EAAEgB,UAAhC,CAAJ,EAAiD;oBAC9BhB,CAAlB,EAAqBzE,KAArB,EAA4BiB,YAA5B,EAA0C8D,OAA1C,EAAmDC,QAAnD;QACMP,EAAEqE,IAAR;EAFD,MAIK;MACAgC,qBAAqB,CAACE,aAA1B,EAAyC;oBACvBF,iBAAjB;SACMC,SAAS,IAAf;;;MAGGjD,gBAAgBjI,MAAMf,QAAtB,EAAgCkB,KAAhC,EAAuC+E,OAAvC,CAAJ;MACID,OAAO,CAACL,EAAE6D,QAAd,EAAwB;KACrBA,QAAF,GAAaxD,GAAb;;YAES,IAAT;;oBAEiBL,CAAlB,EAAqBzE,KAArB,EAA4Be,WAA5B,EAAyCgE,OAAzC,EAAkDC,QAAlD;QACMP,EAAEqE,IAAR;;MAEIiC,UAAUjG,QAAMiG,MAApB,EAA4B;UACpBtF,UAAP,GAAoB,IAApB;qBACkBsF,MAAlB,EAA0B,KAA1B;;;;QAIKjG,GAAP;;;AAUD,AAAO,SAASoG,gBAAT,CAA0B5J,SAA1B,EAAqC;KACvC5C,QAAQyM,aAAZ,EAA2BzM,QAAQyM,aAAR,CAAsB7J,SAAtB;;KAEvBwH,OAAOxH,UAAUwH,IAArB;;WAEUH,QAAV,GAAqB,IAArB;;KAEIrH,UAAU8J,oBAAd,EAAoC9J,UAAU8J,oBAAV;;WAE1BtC,IAAV,GAAiB,IAAjB;;KAGIuC,QAAQ/J,UAAUmE,UAAtB;KACI4F,KAAJ,EAAW;mBACOA,KAAjB;EADD,MAGK,IAAIvC,IAAJ,EAAU;MACVA,KAAK5H,QAAL,KAAgB,IAApB,EAA0BjB,SAAS6I,KAAK5H,QAAL,EAAehB,GAAxB,EAA6B,IAA7B;;YAEhBoI,QAAV,GAAqBQ,IAArB;;aAEWA,IAAX;qBACmBvJ,IAAnB,CAAwB+B,SAAxB;;iBAEewH,IAAf;;;UAGQxH,UAAUsH,KAAnB,EAA0B,IAA1B;;;ACnRM,SAAST,SAAT,CAAmBnI,KAAnB,EAA0B+E,OAA1B,EAAmC;MACpCxD,MAAL,GAAc,IAAd;;MAMKwD,OAAL,GAAeA,OAAf;;MAMK/E,KAAL,GAAaA,KAAb;;MAMKwI,KAAL,GAAa,KAAKA,KAAL,IAAc,EAA3B;;MAEKqC,gBAAL,GAAwB,EAAxB;;;AAID/K,OAAOqI,UAAUF,SAAjB,EAA4B;SAAA,oBAUlBO,KAVkB,EAUX8C,QAVW,EAUD;MACrB,CAAC,KAAK/B,SAAV,EAAqB,KAAKA,SAAL,GAAiB,KAAKf,KAAtB;OAChBA,KAAL,GAAa1I,OACZA,OAAO,EAAP,EAAW,KAAK0I,KAAhB,CADY,EAEZ,OAAOA,KAAP,KAAiB,UAAjB,GAA8BA,MAAM,KAAKA,KAAX,EAAkB,KAAKxI,KAAvB,CAA9B,GAA8DwI,KAFlD,CAAb;MAII8C,QAAJ,EAAc,KAAKT,gBAAL,CAAsBtL,IAAtB,CAA2B+L,QAA3B;gBACA,IAAd;EAjB0B;YAAA,uBA2BfA,QA3Be,EA2BL;MACjBA,QAAJ,EAAc,KAAKT,gBAAL,CAAsBtL,IAAtB,CAA2B+L,QAA3B;kBACE,IAAhB,EAAsBtK,YAAtB;EA7B0B;OAAA,oBA2ClB;CA3CV;;ACzBO,SAASkH,MAAT,CAAgBrI,KAAhB,EAAuBoF,MAAvB,EAA+BsG,KAA/B,EAAsC;SACrC1G,KAAK0G,KAAL,EAAY1L,KAAZ,EAAmB,EAAnB,EAAuB,KAAvB,EAA8BoF,MAA9B,EAAsC,KAAtC,CAAP;;;ACbD,SAASuG,SAAT,GAAqB;QACb,EAAP;;;AAGD,aAAe;KAAA;iBAAA;2BAAA;qBAAA;qBAAA;eAAA;mBAAA;;CAAf;;;;;"}