{"version":3,"sources":["jsdelivr-header.js","/npm/react-lite@0.15.40/dist/react-lite.common.js"],"names":[],"mappings":"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","file":"/npm/react-lite@0.15.40/dist/react-lite.common.js","sourceRoot":"","sourcesContent":["/**\n * Minified by jsDelivr using Terser v5.37.0.\n * Original file: /npm/react-lite@0.15.40/dist/react-lite.common.js\n *\n * Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files\n */\n","/*!\n * react-lite.js v0.15.40\n * (c) 2019 Jade Gu\n * Released under the MIT License.\n */\n'use strict';\n\nvar HTML_KEY = 'dangerouslySetInnerHTML';\nvar SVGNamespaceURI = 'http://www.w3.org/2000/svg';\nvar COMPONENT_ID = 'liteid';\nvar VELEMENT = 2;\nvar VSTATELESS = 3;\nvar VCOMPONENT = 4;\nvar VCOMMENT = 5;\nvar ELEMENT_NODE_TYPE = 1;\nvar DOC_NODE_TYPE = 9;\nvar DOCUMENT_FRAGMENT_NODE_TYPE = 11;\n\n/**\r\n * current stateful component's refs property\r\n * will attach to every vnode created by calling component.render method\r\n */\nvar refs = null;\n\nfunction createVnode(vtype, type, props, key, ref) {\n    var vnode = {\n        vtype: vtype,\n        type: type,\n        props: props,\n        refs: refs,\n        key: key,\n        ref: ref\n    };\n    if (vtype === VSTATELESS || vtype === VCOMPONENT) {\n        vnode.uid = getUid();\n    }\n    return vnode;\n}\n\nfunction initVnode(vnode, parentContext, namespaceURI) {\n    var vtype = vnode.vtype;\n\n    var node = null;\n    if (!vtype) {\n        // init text\n        node = document.createTextNode(vnode);\n    } else if (vtype === VELEMENT) {\n        // init element\n        node = initVelem(vnode, parentContext, namespaceURI);\n    } else if (vtype === VCOMPONENT) {\n        // init stateful component\n        node = initVcomponent(vnode, parentContext, namespaceURI);\n    } else if (vtype === VSTATELESS) {\n        // init stateless component\n        node = initVstateless(vnode, parentContext, namespaceURI);\n    } else if (vtype === VCOMMENT) {\n        // init comment\n        node = document.createComment('react-text: ' + (vnode.uid || getUid()));\n    }\n    return node;\n}\n\nfunction updateVnode(vnode, newVnode, node, parentContext) {\n    var vtype = vnode.vtype;\n\n    if (vtype === VCOMPONENT) {\n        return updateVcomponent(vnode, newVnode, node, parentContext);\n    }\n\n    if (vtype === VSTATELESS) {\n        return updateVstateless(vnode, newVnode, node, parentContext);\n    }\n\n    // ignore VCOMMENT and other vtypes\n    if (vtype !== VELEMENT) {\n        return node;\n    }\n\n    var oldHtml = vnode.props[HTML_KEY] && vnode.props[HTML_KEY].__html;\n    if (oldHtml != null) {\n        updateVelem(vnode, newVnode, node, parentContext);\n        initVchildren(newVnode, node, parentContext);\n    } else {\n        updateVChildren(vnode, newVnode, node, parentContext);\n        updateVelem(vnode, newVnode, node, parentContext);\n    }\n    return node;\n}\n\nfunction updateVChildren(vnode, newVnode, node, parentContext) {\n    var patches = {\n        removes: [],\n        updates: [],\n        creates: []\n    };\n    diffVchildren(patches, vnode, newVnode, node, parentContext);\n    flatEach(patches.removes, applyDestroy);\n    flatEach(patches.updates, applyUpdate);\n    flatEach(patches.creates, applyCreate);\n}\n\nfunction applyUpdate(data) {\n    if (!data) {\n        return;\n    }\n    var vnode = data.vnode;\n    var newNode = data.node;\n\n    // update\n    if (!data.shouldIgnore) {\n        if (!vnode.vtype) {\n            newNode.replaceData(0, newNode.length, data.newVnode);\n        } else if (vnode.vtype === VELEMENT) {\n            updateVelem(vnode, data.newVnode, newNode, data.parentContext);\n        } else if (vnode.vtype === VSTATELESS) {\n            newNode = updateVstateless(vnode, data.newVnode, newNode, data.parentContext);\n        } else if (vnode.vtype === VCOMPONENT) {\n            newNode = updateVcomponent(vnode, data.newVnode, newNode, data.parentContext);\n        }\n    }\n\n    // re-order\n    var currentNode = newNode.parentNode.childNodes[data.index];\n    if (currentNode !== newNode) {\n        newNode.parentNode.insertBefore(newNode, currentNode);\n    }\n    return newNode;\n}\n\nfunction applyDestroy(data) {\n    destroyVnode(data.vnode, data.node);\n    data.node.parentNode.removeChild(data.node);\n}\n\nfunction applyCreate(data) {\n    var node = initVnode(data.vnode, data.parentContext, data.parentNode.namespaceURI);\n    data.parentNode.insertBefore(node, data.parentNode.childNodes[data.index]);\n}\n\n/**\r\n * Only vnode which has props.children need to call destroy function\r\n * to check whether subTree has component that need to call lify-cycle method and release cache.\r\n */\n\nfunction destroyVnode(vnode, node) {\n    var vtype = vnode.vtype;\n\n    if (vtype === VELEMENT) {\n        // destroy element\n        destroyVelem(vnode, node);\n    } else if (vtype === VCOMPONENT) {\n        // destroy state component\n        destroyVcomponent(vnode, node);\n    } else if (vtype === VSTATELESS) {\n        // destroy stateless component\n        destroyVstateless(vnode, node);\n    }\n}\n\nfunction initVelem(velem, parentContext, namespaceURI) {\n    var type = velem.type;\n    var props = velem.props;\n\n    var node = null;\n\n    if (type === 'svg' || namespaceURI === SVGNamespaceURI) {\n        node = document.createElementNS(SVGNamespaceURI, type);\n        namespaceURI = SVGNamespaceURI;\n    } else {\n        node = document.createElement(type);\n    }\n\n    initVchildren(velem, node, parentContext);\n\n    var isCustomComponent = type.indexOf('-') >= 0 || props.is != null;\n    setProps(node, props, isCustomComponent);\n\n    if (velem.ref != null) {\n        addItem(pendingRefs, velem);\n        addItem(pendingRefs, node);\n    }\n\n    return node;\n}\n\nfunction initVchildren(velem, node, parentContext) {\n    var vchildren = node.vchildren = getFlattenChildren(velem);\n    var namespaceURI = node.namespaceURI;\n    for (var i = 0, len = vchildren.length; i < len; i++) {\n        node.appendChild(initVnode(vchildren[i], parentContext, namespaceURI));\n    }\n}\n\nfunction getFlattenChildren(vnode) {\n    var children = vnode.props.children;\n\n    var vchildren = [];\n    if (isArr(children)) {\n        flatEach(children, collectChild, vchildren);\n    } else {\n        collectChild(children, vchildren);\n    }\n    return vchildren;\n}\n\nfunction collectChild(child, children) {\n    if (child != null && typeof child !== 'boolean') {\n        if (!child.vtype) {\n            // convert immutablejs data\n            if (child.toJS) {\n                child = child.toJS();\n                if (isArr(child)) {\n                    flatEach(child, collectChild, children);\n                } else {\n                    collectChild(child, children);\n                }\n                return;\n            }\n            child = '' + child;\n        }\n        children[children.length] = child;\n    }\n}\n\nfunction diffVchildren(patches, vnode, newVnode, node, parentContext) {\n    if (!node.vchildren) return; // react-lite hasn't seen this DOM node before\n\n    var childNodes = node.childNodes;\n    var vchildren = node.vchildren;\n\n    var newVchildren = node.vchildren = getFlattenChildren(newVnode);\n    var vchildrenLen = vchildren.length;\n    var newVchildrenLen = newVchildren.length;\n\n    if (vchildrenLen === 0) {\n        if (newVchildrenLen > 0) {\n            for (var i = 0; i < newVchildrenLen; i++) {\n                addItem(patches.creates, {\n                    vnode: newVchildren[i],\n                    parentNode: node,\n                    parentContext: parentContext,\n                    index: i\n                });\n            }\n        }\n        return;\n    } else if (newVchildrenLen === 0) {\n        for (var i = 0; i < vchildrenLen; i++) {\n            addItem(patches.removes, {\n                vnode: vchildren[i],\n                node: childNodes[i]\n            });\n        }\n        return;\n    }\n\n    var updates = Array(newVchildrenLen);\n    var removes = null;\n    var creates = null;\n\n    // isEqual\n    for (var i = 0; i < vchildrenLen; i++) {\n        var _vnode = vchildren[i];\n        for (var j = 0; j < newVchildrenLen; j++) {\n            if (updates[j]) {\n                continue;\n            }\n            var _newVnode = newVchildren[j];\n            if (_vnode === _newVnode) {\n                updates[j] = {\n                    shouldIgnore: shouldIgnoreUpdate(node),\n                    vnode: _vnode,\n                    newVnode: _newVnode,\n                    node: childNodes[i],\n                    parentContext: parentContext,\n                    index: j\n                };\n                vchildren[i] = null;\n                break;\n            }\n        }\n    }\n\n    // isSimilar\n    for (var i = 0; i < vchildrenLen; i++) {\n        var _vnode2 = vchildren[i];\n        if (_vnode2 === null) {\n            continue;\n        }\n        var shouldRemove = true;\n        for (var j = 0; j < newVchildrenLen; j++) {\n            if (updates[j]) {\n                continue;\n            }\n            var _newVnode2 = newVchildren[j];\n            if (_newVnode2.type === _vnode2.type && _newVnode2.key === _vnode2.key && _newVnode2.refs === _vnode2.refs) {\n                updates[j] = {\n                    vnode: _vnode2,\n                    newVnode: _newVnode2,\n                    node: childNodes[i],\n                    parentContext: parentContext,\n                    index: j\n                };\n                shouldRemove = false;\n                break;\n            }\n        }\n        if (shouldRemove) {\n            if (!removes) {\n                removes = [];\n            }\n            addItem(removes, {\n                vnode: _vnode2,\n                node: childNodes[i]\n            });\n        }\n    }\n\n    for (var i = 0; i < newVchildrenLen; i++) {\n        var item = updates[i];\n        if (!item) {\n            if (!creates) {\n                creates = [];\n            }\n            addItem(creates, {\n                vnode: newVchildren[i],\n                parentNode: node,\n                parentContext: parentContext,\n                index: i\n            });\n        } else if (item.vnode.vtype === VELEMENT) {\n            diffVchildren(patches, item.vnode, item.newVnode, item.node, item.parentContext);\n        }\n    }\n\n    if (removes) {\n        addItem(patches.removes, removes);\n    }\n    if (creates) {\n        addItem(patches.creates, creates);\n    }\n    addItem(patches.updates, updates);\n}\n\nfunction updateVelem(velem, newVelem, node) {\n    var isCustomComponent = velem.type.indexOf('-') >= 0 || velem.props.is != null;\n    patchProps(node, velem.props, newVelem.props, isCustomComponent);\n    if (velem.ref !== newVelem.ref) {\n        detachRef(velem.refs, velem.ref, node);\n        attachRef(newVelem.refs, newVelem.ref, node);\n    }\n    return node;\n}\n\nfunction destroyVelem(velem, node) {\n    var props = velem.props;\n    var vchildren = node.vchildren;\n    var childNodes = node.childNodes;\n\n    if (vchildren) {\n        for (var i = 0, len = vchildren.length; i < len; i++) {\n            destroyVnode(vchildren[i], childNodes[i]);\n        }\n    }\n    detachRef(velem.refs, velem.ref, node);\n    node.eventStore = node.vchildren = null;\n}\n\nfunction initVstateless(vstateless, parentContext, namespaceURI) {\n    var vnode = renderVstateless(vstateless, parentContext);\n    var node = initVnode(vnode, parentContext, namespaceURI);\n    node.cache = node.cache || {};\n    node.cache[vstateless.uid] = vnode;\n    return node;\n}\n\nfunction updateVstateless(vstateless, newVstateless, node, parentContext) {\n    var uid = vstateless.uid;\n    var vnode = node.cache[uid];\n    delete node.cache[uid];\n    var newVnode = renderVstateless(newVstateless, parentContext);\n    var newNode = compareTwoVnodes(vnode, newVnode, node, parentContext);\n    newNode.cache = newNode.cache || {};\n    newNode.cache[newVstateless.uid] = newVnode;\n    if (newNode !== node) {\n        syncCache(newNode.cache, node.cache, newNode);\n    }\n    return newNode;\n}\n\nfunction destroyVstateless(vstateless, node) {\n    var uid = vstateless.uid;\n    var vnode = node.cache[uid];\n    delete node.cache[uid];\n    destroyVnode(vnode, node);\n}\n\nfunction renderVstateless(vstateless, parentContext) {\n    var factory = vstateless.type;\n    var props = vstateless.props;\n\n    var componentContext = getContextByTypes(parentContext, factory.contextTypes);\n    var vnode = factory(props, componentContext);\n    if (vnode && vnode.render) {\n        vnode = vnode.render();\n    }\n    if (vnode === null || vnode === false) {\n        vnode = createVnode(VCOMMENT);\n    } else if (!vnode || !vnode.vtype) {\n        throw new Error('@' + factory.name + '#render:You may have returned undefined, an array or some other invalid object');\n    }\n    return vnode;\n}\n\nfunction initVcomponent(vcomponent, parentContext, namespaceURI) {\n    var Component = vcomponent.type;\n    var props = vcomponent.props;\n    var uid = vcomponent.uid;\n\n    var componentContext = getContextByTypes(parentContext, Component.contextTypes);\n    var component = new Component(props, componentContext);\n    var updater = component.$updater;\n    var cache = component.$cache;\n\n    cache.parentContext = parentContext;\n    updater.isPending = true;\n    component.props = component.props || props;\n    component.context = component.context || componentContext;\n    if (component.componentWillMount) {\n        component.componentWillMount();\n        component.state = updater.getState();\n    }\n    var vnode = renderComponent(component);\n    var node = initVnode(vnode, getChildContext(component, parentContext), namespaceURI);\n    node.cache = node.cache || {};\n    node.cache[uid] = component;\n    cache.vnode = vnode;\n    cache.node = node;\n    cache.isMounted = true;\n    addItem(pendingComponents, component);\n\n    if (vcomponent.ref != null) {\n        addItem(pendingRefs, vcomponent);\n        addItem(pendingRefs, component);\n    }\n\n    return node;\n}\n\nfunction updateVcomponent(vcomponent, newVcomponent, node, parentContext) {\n    var uid = vcomponent.uid;\n    var component = node.cache[uid];\n    var updater = component.$updater;\n    var cache = component.$cache;\n    var Component = newVcomponent.type;\n    var nextProps = newVcomponent.props;\n\n    var componentContext = getContextByTypes(parentContext, Component.contextTypes);\n    delete node.cache[uid];\n    node.cache[newVcomponent.uid] = component;\n    cache.parentContext = parentContext;\n    if (component.componentWillReceiveProps) {\n        var needToggleIsPending = !updater.isPending;\n        if (needToggleIsPending) updater.isPending = true;\n        component.componentWillReceiveProps(nextProps, componentContext);\n        if (needToggleIsPending) updater.isPending = false;\n    }\n\n    if (vcomponent.ref !== newVcomponent.ref) {\n        detachRef(vcomponent.refs, vcomponent.ref, component);\n        attachRef(newVcomponent.refs, newVcomponent.ref, component);\n    }\n\n    updater.emitUpdate(nextProps, componentContext);\n\n    return cache.node;\n}\n\nfunction destroyVcomponent(vcomponent, node) {\n    var uid = vcomponent.uid;\n    var component = node.cache[uid];\n    var cache = component.$cache;\n    delete node.cache[uid];\n    detachRef(vcomponent.refs, vcomponent.ref, component);\n    component.setState = component.forceUpdate = noop;\n    if (component.componentWillUnmount) {\n        component.componentWillUnmount();\n    }\n    destroyVnode(cache.vnode, node);\n    delete component.setState;\n    cache.isMounted = false;\n    cache.node = cache.parentContext = cache.vnode = component.refs = component.context = null;\n}\n\nfunction getContextByTypes(curContext, contextTypes) {\n    var context = {};\n    if (!contextTypes || !curContext) {\n        return context;\n    }\n    for (var key in contextTypes) {\n        if (contextTypes.hasOwnProperty(key)) {\n            context[key] = curContext[key];\n        }\n    }\n    return context;\n}\n\nfunction renderComponent(component, parentContext) {\n    refs = component.refs;\n    var vnode = component.render();\n    if (vnode === null || vnode === false) {\n        vnode = createVnode(VCOMMENT);\n    } else if (!vnode || !vnode.vtype) {\n        throw new Error('@' + component.constructor.name + '#render:You may have returned undefined, an array or some other invalid object');\n    }\n    refs = null;\n    return vnode;\n}\n\nfunction getChildContext(component, parentContext) {\n    if (component.getChildContext) {\n        var curContext = component.getChildContext();\n        if (curContext) {\n            parentContext = extend(extend({}, parentContext), curContext);\n        }\n    }\n    return parentContext;\n}\n\nvar pendingComponents = [];\nfunction clearPendingComponents() {\n    var len = pendingComponents.length;\n    if (!len) {\n        return;\n    }\n    var components = pendingComponents;\n    pendingComponents = [];\n    var i = -1;\n    while (len--) {\n        var component = components[++i];\n        var updater = component.$updater;\n        if (component.componentDidMount) {\n            component.componentDidMount();\n        }\n        updater.isPending = false;\n        updater.emitUpdate();\n    }\n}\n\nvar pendingRefs = [];\nfunction clearPendingRefs() {\n    var len = pendingRefs.length;\n    if (!len) {\n        return;\n    }\n    var list = pendingRefs;\n    pendingRefs = [];\n    for (var i = 0; i < len; i += 2) {\n        var vnode = list[i];\n        var refValue = list[i + 1];\n        attachRef(vnode.refs, vnode.ref, refValue);\n    }\n}\n\nfunction clearPending() {\n    clearPendingRefs();\n    clearPendingComponents();\n}\n\nfunction compareTwoVnodes(vnode, newVnode, node, parentContext) {\n    var newNode = node;\n    if (newVnode == null) {\n        // remove\n        destroyVnode(vnode, node);\n        node.parentNode.removeChild(node);\n    } else if (vnode.type !== newVnode.type || vnode.key !== newVnode.key) {\n        // replace\n        destroyVnode(vnode, node);\n        newNode = initVnode(newVnode, parentContext, node.namespaceURI);\n        node.parentNode.replaceChild(newNode, node);\n    } else if (vnode !== newVnode || parentContext) {\n        // same type and same key -> update\n        newNode = updateVnode(vnode, newVnode, node, parentContext);\n    }\n    return newNode;\n}\n\nfunction getDOMNode() {\n    return this;\n}\n\nfunction attachRef(refs, refKey, refValue) {\n    if (refKey == null || !refValue) {\n        return;\n    }\n    if (refValue.nodeName && !refValue.getDOMNode) {\n        // support react v0.13 style: this.refs.myInput.getDOMNode()\n        refValue.getDOMNode = getDOMNode;\n    }\n    if (isFn(refKey)) {\n        refKey(refValue);\n    } else if (refs) {\n        refs[refKey] = refValue;\n    }\n}\n\nfunction detachRef(refs, refKey, refValue) {\n    if (refKey == null) {\n        return;\n    }\n    if (isFn(refKey)) {\n        refKey(null);\n    } else if (refs && refs[refKey] === refValue) {\n        delete refs[refKey];\n    }\n}\n\nfunction syncCache(cache, oldCache, node) {\n    for (var key in oldCache) {\n        if (!oldCache.hasOwnProperty(key)) {\n            continue;\n        }\n        var value = oldCache[key];\n        cache[key] = value;\n\n        // is component, update component.$cache.node\n        if (value.forceUpdate) {\n            value.$cache.node = node;\n        }\n    }\n}\n\nfunction shouldIgnoreUpdate(node) {\n    var vchildren = node.vchildren;\n    var children = node.children;\n\n    if (vchildren) {\n        for (var i = 0; i < vchildren.length; i++) {\n            var vchild = vchildren[i];\n            if (vchild.vtype === VCOMPONENT || vchild.vtype === VSTATELESS) {\n                if (vchild.type.contextTypes) {\n                    return false;\n                }\n            }\n        }\n    }\n\n    if (children) {\n        for (var i = 0; i < children.length; i++) {\n            if (!shouldIgnoreUpdate(children[i])) {\n                return false;\n            }\n        }\n    }\n\n    return true;\n}\n\nvar updateQueue = {\n\tupdaters: [],\n\tisPending: false,\n\tadd: function add(updater) {\n\t\taddItem(this.updaters, updater);\n\t},\n\tbatchUpdate: function batchUpdate() {\n\t\tif (this.isPending) {\n\t\t\treturn;\n\t\t}\n\t\tthis.isPending = true;\n\t\t/*\r\n   each updater.update may add new updater to updateQueue\r\n   clear them with a loop\r\n   event bubbles from bottom-level to top-level\r\n   reverse the updater order can merge some props and state and reduce the refresh times\r\n   see Updater.update method below to know why\r\n  */\n\t\tvar updaters = this.updaters;\n\n\t\tvar updater = undefined;\n\t\twhile (updater = updaters.pop()) {\n\t\t\tupdater.updateComponent();\n\t\t}\n\t\tthis.isPending = false;\n\t}\n};\n\nfunction Updater(instance) {\n\tthis.instance = instance;\n\tthis.pendingStates = [];\n\tthis.pendingCallbacks = [];\n\tthis.isPending = false;\n\tthis.nextProps = this.nextContext = null;\n\tthis.clearCallbacks = this.clearCallbacks.bind(this);\n}\n\nUpdater.prototype = {\n\temitUpdate: function emitUpdate(nextProps, nextContext) {\n\t\tthis.nextProps = nextProps;\n\t\tthis.nextContext = nextContext;\n\t\t// receive nextProps!! should update immediately\n\t\tnextProps || !updateQueue.isPending ? this.updateComponent() : updateQueue.add(this);\n\t},\n\tupdateComponent: function updateComponent() {\n\t\tvar instance = this.instance;\n\t\tvar pendingStates = this.pendingStates;\n\t\tvar nextProps = this.nextProps;\n\t\tvar nextContext = this.nextContext;\n\n\t\tif (nextProps || pendingStates.length > 0) {\n\t\t\tnextProps = nextProps || instance.props;\n\t\t\tnextContext = nextContext || instance.context;\n\t\t\tthis.nextProps = this.nextContext = null;\n\t\t\t// merge the nextProps and nextState and update by one time\n\t\t\tshouldUpdate(instance, nextProps, this.getState(), nextContext, this.clearCallbacks);\n\t\t}\n\t},\n\taddState: function addState(nextState) {\n\t\tif (nextState) {\n\t\t\taddItem(this.pendingStates, nextState);\n\t\t\tif (!this.isPending) {\n\t\t\t\tthis.emitUpdate();\n\t\t\t}\n\t\t}\n\t},\n\treplaceState: function replaceState(nextState) {\n\t\tvar pendingStates = this.pendingStates;\n\n\t\tpendingStates.pop();\n\t\t// push special params to point out should replace state\n\t\taddItem(pendingStates, [nextState]);\n\t},\n\tgetState: function getState() {\n\t\tvar instance = this.instance;\n\t\tvar pendingStates = this.pendingStates;\n\t\tvar state = instance.state;\n\t\tvar props = instance.props;\n\n\t\tif (pendingStates.length) {\n\t\t\tstate = extend({}, state);\n\t\t\tpendingStates.forEach(function (nextState) {\n\t\t\t\tvar isReplace = isArr(nextState);\n\t\t\t\tif (isReplace) {\n\t\t\t\t\tnextState = nextState[0];\n\t\t\t\t}\n\t\t\t\tif (isFn(nextState)) {\n\t\t\t\t\tnextState = nextState.call(instance, state, props);\n\t\t\t\t}\n\t\t\t\t// replace state\n\t\t\t\tif (isReplace) {\n\t\t\t\t\tstate = extend({}, nextState);\n\t\t\t\t} else {\n\t\t\t\t\textend(state, nextState);\n\t\t\t\t}\n\t\t\t});\n\t\t\tpendingStates.length = 0;\n\t\t}\n\t\treturn state;\n\t},\n\tclearCallbacks: function clearCallbacks() {\n\t\tvar pendingCallbacks = this.pendingCallbacks;\n\t\tvar instance = this.instance;\n\n\t\tif (pendingCallbacks.length > 0) {\n\t\t\tthis.pendingCallbacks = [];\n\t\t\tpendingCallbacks.forEach(function (callback) {\n\t\t\t\treturn callback.call(instance);\n\t\t\t});\n\t\t}\n\t},\n\taddCallback: function addCallback(callback) {\n\t\tif (isFn(callback)) {\n\t\t\taddItem(this.pendingCallbacks, callback);\n\t\t}\n\t}\n};\nfunction Component(props, context) {\n\tthis.$updater = new Updater(this);\n\tthis.$cache = { isMounted: false };\n\tthis.props = props;\n\tthis.state = {};\n\tthis.refs = {};\n\tthis.context = context;\n}\n\nvar ReactComponentSymbol = {};\n\nComponent.prototype = {\n\tconstructor: Component,\n\tisReactComponent: ReactComponentSymbol,\n\t// getChildContext: _.noop,\n\t// componentWillUpdate: _.noop,\n\t// componentDidUpdate: _.noop,\n\t// componentWillReceiveProps: _.noop,\n\t// componentWillMount: _.noop,\n\t// componentDidMount: _.noop,\n\t// componentWillUnmount: _.noop,\n\t// shouldComponentUpdate(nextProps, nextState) {\n\t// \treturn true\n\t// },\n\tforceUpdate: function forceUpdate(callback) {\n\t\tvar $updater = this.$updater;\n\t\tvar $cache = this.$cache;\n\t\tvar props = this.props;\n\t\tvar state = this.state;\n\t\tvar context = this.context;\n\n\t\tif (!$cache.isMounted) {\n\t\t\treturn;\n\t\t}\n\t\t// if updater is pending, add state to trigger nexttick update\n\t\tif ($updater.isPending) {\n\t\t\t$updater.addState(state);\n\t\t\treturn;\n\t\t}\n\t\tvar nextProps = $cache.props || props;\n\t\tvar nextState = $cache.state || state;\n\t\tvar nextContext = $cache.context || context;\n\t\tvar parentContext = $cache.parentContext;\n\t\tvar node = $cache.node;\n\t\tvar vnode = $cache.vnode;\n\t\t$cache.props = $cache.state = $cache.context = null;\n\t\t$updater.isPending = true;\n\t\tif (this.componentWillUpdate) {\n\t\t\tthis.componentWillUpdate(nextProps, nextState, nextContext);\n\t\t}\n\t\tthis.state = nextState;\n\t\tthis.props = nextProps;\n\t\tthis.context = nextContext;\n\t\tvar newVnode = renderComponent(this);\n\t\tvar newNode = compareTwoVnodes(vnode, newVnode, node, getChildContext(this, parentContext));\n\t\tif (newNode !== node) {\n\t\t\tnewNode.cache = newNode.cache || {};\n\t\t\tsyncCache(newNode.cache, node.cache, newNode);\n\t\t}\n\t\t$cache.vnode = newVnode;\n\t\t$cache.node = newNode;\n\t\tclearPending();\n\t\tif (this.componentDidUpdate) {\n\t\t\tthis.componentDidUpdate(props, state, context);\n\t\t}\n\t\tif (callback) {\n\t\t\tcallback.call(this);\n\t\t}\n\t\t$updater.isPending = false;\n\t\t$updater.emitUpdate();\n\t},\n\tsetState: function setState(nextState, callback) {\n\t\tvar $updater = this.$updater;\n\n\t\t$updater.addCallback(callback);\n\t\t$updater.addState(nextState);\n\t},\n\treplaceState: function replaceState(nextState, callback) {\n\t\tvar $updater = this.$updater;\n\n\t\t$updater.addCallback(callback);\n\t\t$updater.replaceState(nextState);\n\t},\n\tgetDOMNode: function getDOMNode() {\n\t\tvar node = this.$cache.node;\n\t\treturn node && node.nodeName === '#comment' ? null : node;\n\t},\n\tisMounted: function isMounted() {\n\t\treturn this.$cache.isMounted;\n\t}\n};\n\nfunction shouldUpdate(component, nextProps, nextState, nextContext, callback) {\n\tvar shouldComponentUpdate = true;\n\tif (component.shouldComponentUpdate) {\n\t\tshouldComponentUpdate = component.shouldComponentUpdate(nextProps, nextState, nextContext);\n\t}\n\tif (shouldComponentUpdate === false) {\n\t\tcomponent.props = nextProps;\n\t\tcomponent.state = nextState;\n\t\tcomponent.context = nextContext || {};\n\t\tif (callback) {\n\t\t\tcallback.call(component);\n\t\t}\n\t\treturn;\n\t}\n\tvar cache = component.$cache;\n\tcache.props = nextProps;\n\tcache.state = nextState;\n\tcache.context = nextContext || {};\n\tcomponent.forceUpdate(callback);\n}\n\n// event config\nvar unbubbleEvents = {\n    /**\r\n     * should not bind mousemove in document scope\r\n     * even though mousemove event can bubble\r\n     */\n    onmousemove: 1,\n    ontouchmove: 1,\n    onmouseleave: 1,\n    onmouseenter: 1,\n    onload: 1,\n    onunload: 1,\n    onscroll: 1,\n    onfocus: 1,\n    onblur: 1,\n    onrowexit: 1,\n    onbeforeunload: 1,\n    onstop: 1,\n    ondragdrop: 1,\n    ondragenter: 1,\n    ondragexit: 1,\n    ondraggesture: 1,\n    ondragover: 1,\n    oncontextmenu: 1,\n    onerror: 1,\n\n    // media event\n    onabort: 1,\n    oncanplay: 1,\n    oncanplaythrough: 1,\n    ondurationchange: 1,\n    onemptied: 1,\n    onended: 1,\n    onloadeddata: 1,\n    onloadedmetadata: 1,\n    onloadstart: 1,\n    onencrypted: 1,\n    onpause: 1,\n    onplay: 1,\n    onplaying: 1,\n    onprogress: 1,\n    onratechange: 1,\n    onseeking: 1,\n    onseeked: 1,\n    onstalled: 1,\n    onsuspend: 1,\n    ontimeupdate: 1,\n    onvolumechange: 1,\n    onwaiting: 1\n};\n\nfunction getEventName(key) {\n    if (key === 'onDoubleClick') {\n        key = 'ondblclick';\n    } else if (key === 'onTouchTap') {\n        key = 'onclick';\n    }\n\n    return key.toLowerCase();\n}\n\n// Mobile Safari does not fire properly bubble click events on\n// non-interactive elements, which means delegated click listeners do not\n// fire. The workaround for this bug involves attaching an empty click\n// listener on the target node.\nvar inMobile = ('ontouchstart' in document);\nvar emptyFunction = function emptyFunction() {};\nvar ON_CLICK_KEY = 'onclick';\n\nvar eventTypes = {};\n\nfunction addEvent(elem, eventType, listener) {\n    eventType = getEventName(eventType);\n\n    var eventStore = elem.eventStore || (elem.eventStore = {});\n    eventStore[eventType] = listener;\n\n    if (unbubbleEvents[eventType] === 1) {\n        elem[eventType] = dispatchUnbubbleEvent;\n        return;\n    } else if (!eventTypes[eventType]) {\n        // onclick -> click\n        document.addEventListener(eventType.substr(2), dispatchEvent, false);\n        eventTypes[eventType] = true;\n    }\n\n    if (inMobile && eventType === ON_CLICK_KEY) {\n        elem.addEventListener('click', emptyFunction, false);\n        return;\n    }\n\n    var nodeName = elem.nodeName;\n\n    if (eventType === 'onchange' && supportInputEvent(elem)) {\n        addEvent(elem, 'oninput', listener);\n    }\n}\n\nfunction removeEvent(elem, eventType) {\n    eventType = getEventName(eventType);\n\n    var eventStore = elem.eventStore || (elem.eventStore = {});\n    delete eventStore[eventType];\n\n    if (unbubbleEvents[eventType] === 1) {\n        elem[eventType] = null;\n        return;\n    } else if (inMobile && eventType === ON_CLICK_KEY) {\n        elem.removeEventListener('click', emptyFunction, false);\n        return;\n    }\n\n    var nodeName = elem.nodeName;\n\n    if (eventType === 'onchange' && supportInputEvent(elem)) {\n        delete eventStore['oninput'];\n    }\n}\n\nfunction dispatchEvent(event) {\n    var target = event.target;\n    var type = event.type;\n\n    var eventType = 'on' + type;\n    var syntheticEvent = undefined;\n\n    updateQueue.isPending = true;\n    while (target) {\n        var _target = target;\n        var eventStore = _target.eventStore;\n\n        var listener = eventStore && eventStore[eventType];\n        if (!listener) {\n            target = target.parentNode;\n            continue;\n        }\n        if (!syntheticEvent) {\n            syntheticEvent = createSyntheticEvent(event);\n        }\n        syntheticEvent.currentTarget = target;\n        listener.call(target, syntheticEvent);\n        if (syntheticEvent.$cancelBubble) {\n            break;\n        }\n        target = target.parentNode;\n    }\n    updateQueue.isPending = false;\n    updateQueue.batchUpdate();\n}\n\nfunction dispatchUnbubbleEvent(event) {\n    var target = event.currentTarget || event.target;\n    var eventType = 'on' + event.type;\n    var syntheticEvent = createSyntheticEvent(event);\n\n    syntheticEvent.currentTarget = target;\n    updateQueue.isPending = true;\n\n    var eventStore = target.eventStore;\n\n    var listener = eventStore && eventStore[eventType];\n    if (listener) {\n        listener.call(target, syntheticEvent);\n    }\n\n    updateQueue.isPending = false;\n    updateQueue.batchUpdate();\n}\n\nfunction createSyntheticEvent(nativeEvent) {\n    var syntheticEvent = {};\n    var cancelBubble = function cancelBubble() {\n        return syntheticEvent.$cancelBubble = true;\n    };\n    syntheticEvent.nativeEvent = nativeEvent;\n    syntheticEvent.persist = noop;\n    for (var key in nativeEvent) {\n        if (typeof nativeEvent[key] !== 'function') {\n            syntheticEvent[key] = nativeEvent[key];\n        } else if (key === 'stopPropagation' || key === 'stopImmediatePropagation') {\n            syntheticEvent[key] = cancelBubble;\n        } else {\n            syntheticEvent[key] = nativeEvent[key].bind(nativeEvent);\n        }\n    }\n    return syntheticEvent;\n}\n\nfunction supportInputEvent(elem) {\n    var nodeName = elem.nodeName && elem.nodeName.toLowerCase();\n    return nodeName !== 'select' && !(nodeName === 'input' && elem.type === 'file');\n}\n\nfunction setStyle(elemStyle, styles) {\n    for (var styleName in styles) {\n        if (styles.hasOwnProperty(styleName)) {\n            setStyleValue(elemStyle, styleName, styles[styleName]);\n        }\n    }\n}\n\nfunction removeStyle(elemStyle, styles) {\n    for (var styleName in styles) {\n        if (styles.hasOwnProperty(styleName)) {\n            elemStyle[styleName] = '';\n        }\n    }\n}\n\nfunction patchStyle(elemStyle, style, newStyle) {\n    if (style === newStyle) {\n        return;\n    }\n    if (!newStyle && style) {\n        removeStyle(elemStyle, style);\n        return;\n    } else if (newStyle && !style) {\n        setStyle(elemStyle, newStyle);\n        return;\n    }\n\n    for (var key in style) {\n        if (newStyle.hasOwnProperty(key)) {\n            if (newStyle[key] !== style[key]) {\n                setStyleValue(elemStyle, key, newStyle[key]);\n            }\n        } else {\n            elemStyle[key] = '';\n        }\n    }\n    for (var key in newStyle) {\n        if (!style.hasOwnProperty(key)) {\n            setStyleValue(elemStyle, key, newStyle[key]);\n        }\n    }\n}\n\n/**\r\n * CSS properties which accept numbers but are not in units of \"px\".\r\n */\nvar isUnitlessNumber = {\n    animationIterationCount: 1,\n    borderImageOutset: 1,\n    borderImageSlice: 1,\n    borderImageWidth: 1,\n    boxFlex: 1,\n    boxFlexGroup: 1,\n    boxOrdinalGroup: 1,\n    columnCount: 1,\n    flex: 1,\n    flexGrow: 1,\n    flexPositive: 1,\n    flexShrink: 1,\n    flexNegative: 1,\n    flexOrder: 1,\n    gridRow: 1,\n    gridColumn: 1,\n    fontWeight: 1,\n    lineClamp: 1,\n    lineHeight: 1,\n    opacity: 1,\n    order: 1,\n    orphans: 1,\n    tabSize: 1,\n    widows: 1,\n    zIndex: 1,\n    zoom: 1,\n\n    // SVG-related properties\n    fillOpacity: 1,\n    floodOpacity: 1,\n    stopOpacity: 1,\n    strokeDasharray: 1,\n    strokeDashoffset: 1,\n    strokeMiterlimit: 1,\n    strokeOpacity: 1,\n    strokeWidth: 1\n};\n\nfunction prefixKey(prefix, key) {\n    return prefix + key.charAt(0).toUpperCase() + key.substring(1);\n}\n\nvar prefixes = ['Webkit', 'ms', 'Moz', 'O'];\n\nObject.keys(isUnitlessNumber).forEach(function (prop) {\n    prefixes.forEach(function (prefix) {\n        isUnitlessNumber[prefixKey(prefix, prop)] = 1;\n    });\n});\n\nvar RE_NUMBER = /^-?\\d+(\\.\\d+)?$/;\nfunction setStyleValue(elemStyle, styleName, styleValue) {\n\n    if (!isUnitlessNumber[styleName] && RE_NUMBER.test(styleValue)) {\n        elemStyle[styleName] = styleValue + 'px';\n        return;\n    }\n\n    if (styleName === 'float') {\n        styleName = 'cssFloat';\n    }\n\n    if (styleValue == null || typeof styleValue === 'boolean') {\n        styleValue = '';\n    }\n\n    elemStyle[styleName] = styleValue;\n}\n\nvar ATTRIBUTE_NAME_START_CHAR = ':A-Z_a-z\\\\u00C0-\\\\u00D6\\\\u00D8-\\\\u00F6\\\\u00F8-\\\\u02FF\\\\u0370-\\\\u037D\\\\u037F-\\\\u1FFF\\\\u200C-\\\\u200D\\\\u2070-\\\\u218F\\\\u2C00-\\\\u2FEF\\\\u3001-\\\\uD7FF\\\\uF900-\\\\uFDCF\\\\uFDF0-\\\\uFFFD';\nvar ATTRIBUTE_NAME_CHAR = ATTRIBUTE_NAME_START_CHAR + '\\\\-.0-9\\\\uB7\\\\u0300-\\\\u036F\\\\u203F-\\\\u2040';\n\nvar VALID_ATTRIBUTE_NAME_REGEX = new RegExp('^[' + ATTRIBUTE_NAME_START_CHAR + '][' + ATTRIBUTE_NAME_CHAR + ']*$');\n\nvar isCustomAttribute = RegExp.prototype.test.bind(new RegExp('^(data|aria)-[' + ATTRIBUTE_NAME_CHAR + ']*$'));\n// will merge some data in properties below\nvar properties = {};\n\n/**\r\n * Mapping from normalized, camelcased property names to a configuration that\r\n * specifies how the associated DOM property should be accessed or rendered.\r\n */\nvar MUST_USE_PROPERTY = 0x1;\nvar HAS_BOOLEAN_VALUE = 0x4;\nvar HAS_NUMERIC_VALUE = 0x8;\nvar HAS_POSITIVE_NUMERIC_VALUE = 0x10 | 0x8;\nvar HAS_OVERLOADED_BOOLEAN_VALUE = 0x20;\n\n// html config\nvar HTMLDOMPropertyConfig = {\n    props: {\n        /**\r\n         * Standard Properties\r\n         */\n        accept: 0,\n        acceptCharset: 0,\n        accessKey: 0,\n        action: 0,\n        allowFullScreen: HAS_BOOLEAN_VALUE,\n        allowTransparency: 0,\n        alt: 0,\n        async: HAS_BOOLEAN_VALUE,\n        autoComplete: 0,\n        autoFocus: HAS_BOOLEAN_VALUE,\n        autoPlay: HAS_BOOLEAN_VALUE,\n        capture: HAS_BOOLEAN_VALUE,\n        cellPadding: 0,\n        cellSpacing: 0,\n        charSet: 0,\n        challenge: 0,\n        checked: MUST_USE_PROPERTY | HAS_BOOLEAN_VALUE,\n        cite: 0,\n        classID: 0,\n        className: 0,\n        cols: HAS_POSITIVE_NUMERIC_VALUE,\n        colSpan: 0,\n        content: 0,\n        contentEditable: 0,\n        contextMenu: 0,\n        controls: HAS_BOOLEAN_VALUE,\n        coords: 0,\n        crossOrigin: 0,\n        data: 0, // For `<object />` acts as `src`.\n        dateTime: 0,\n        'default': HAS_BOOLEAN_VALUE,\n        // not in regular react, they did it in other way\n        defaultValue: MUST_USE_PROPERTY,\n        // not in regular react, they did it in other way\n        defaultChecked: MUST_USE_PROPERTY | HAS_BOOLEAN_VALUE,\n        defer: HAS_BOOLEAN_VALUE,\n        dir: 0,\n        disabled: HAS_BOOLEAN_VALUE,\n        download: HAS_OVERLOADED_BOOLEAN_VALUE,\n        draggable: 0,\n        encType: 0,\n        form: 0,\n        formAction: 0,\n        formEncType: 0,\n        formMethod: 0,\n        formNoValidate: HAS_BOOLEAN_VALUE,\n        formTarget: 0,\n        frameBorder: 0,\n        headers: 0,\n        height: 0,\n        hidden: HAS_BOOLEAN_VALUE,\n        high: 0,\n        href: 0,\n        hrefLang: 0,\n        htmlFor: 0,\n        httpEquiv: 0,\n        icon: 0,\n        id: 0,\n        inputMode: 0,\n        integrity: 0,\n        is: 0,\n        keyParams: 0,\n        keyType: 0,\n        kind: 0,\n        label: 0,\n        lang: 0,\n        list: 0,\n        loop: HAS_BOOLEAN_VALUE,\n        low: 0,\n        manifest: 0,\n        marginHeight: 0,\n        marginWidth: 0,\n        max: 0,\n        maxLength: 0,\n        media: 0,\n        mediaGroup: 0,\n        method: 0,\n        min: 0,\n        minLength: 0,\n        // Caution; `option.selected` is not updated if `select.multiple` is\n        // disabled with `removeAttribute`.\n        multiple: MUST_USE_PROPERTY | HAS_BOOLEAN_VALUE,\n        muted: MUST_USE_PROPERTY | HAS_BOOLEAN_VALUE,\n        name: 0,\n        nonce: 0,\n        noValidate: HAS_BOOLEAN_VALUE,\n        open: HAS_BOOLEAN_VALUE,\n        optimum: 0,\n        pattern: 0,\n        placeholder: 0,\n        poster: 0,\n        preload: 0,\n        profile: 0,\n        radioGroup: 0,\n        readOnly: HAS_BOOLEAN_VALUE,\n        referrerPolicy: 0,\n        rel: 0,\n        required: HAS_BOOLEAN_VALUE,\n        reversed: HAS_BOOLEAN_VALUE,\n        role: 0,\n        rows: HAS_POSITIVE_NUMERIC_VALUE,\n        rowSpan: HAS_NUMERIC_VALUE,\n        sandbox: 0,\n        scope: 0,\n        scoped: HAS_BOOLEAN_VALUE,\n        scrolling: 0,\n        seamless: HAS_BOOLEAN_VALUE,\n        selected: MUST_USE_PROPERTY | HAS_BOOLEAN_VALUE,\n        shape: 0,\n        size: HAS_POSITIVE_NUMERIC_VALUE,\n        sizes: 0,\n        span: HAS_POSITIVE_NUMERIC_VALUE,\n        spellCheck: 0,\n        src: 0,\n        srcDoc: 0,\n        srcLang: 0,\n        srcSet: 0,\n        start: HAS_NUMERIC_VALUE,\n        step: 0,\n        style: 0,\n        summary: 0,\n        tabIndex: 0,\n        target: 0,\n        title: 0,\n        // Setting .type throws on non-<input> tags\n        type: 0,\n        useMap: 0,\n        value: MUST_USE_PROPERTY,\n        width: 0,\n        wmode: 0,\n        wrap: 0,\n\n        /**\r\n         * RDFa Properties\r\n         */\n        about: 0,\n        datatype: 0,\n        inlist: 0,\n        prefix: 0,\n        // property is also supported for OpenGraph in meta tags.\n        property: 0,\n        playsInline: HAS_BOOLEAN_VALUE,\n        resource: 0,\n        'typeof': 0,\n        vocab: 0,\n\n        /**\r\n         * Non-standard Properties\r\n         */\n        // autoCapitalize and autoCorrect are supported in Mobile Safari for\n        // keyboard hints.\n        autoCapitalize: 0,\n        autoCorrect: 0,\n        // autoSave allows WebKit/Blink to persist values of input fields on page reloads\n        autoSave: 0,\n        // color is for Safari mask-icon link\n        color: 0,\n        // itemProp, itemScope, itemType are for\n        // Microdata support. See http://schema.org/docs/gs.html\n        itemProp: 0,\n        itemScope: HAS_BOOLEAN_VALUE,\n        itemType: 0,\n        // itemID and itemRef are for Microdata support as well but\n        // only specified in the WHATWG spec document. See\n        // https://html.spec.whatwg.org/multipage/microdata.html#microdata-dom-api\n        itemID: 0,\n        itemRef: 0,\n        // results show looking glass icon and recent searches on input\n        // search fields in WebKit/Blink\n        results: 0,\n        // IE-only attribute that specifies security restrictions on an iframe\n        // as an alternative to the sandbox attribute on IE<10\n        security: 0,\n        // IE-only attribute that controls focus behavior\n        unselectable: 0\n    },\n    attrNS: {},\n    domAttrs: {\n        acceptCharset: 'accept-charset',\n        className: 'class',\n        htmlFor: 'for',\n        httpEquiv: 'http-equiv'\n    },\n    domProps: {}\n};\n\n// svg config\nvar xlink = 'http://www.w3.org/1999/xlink';\nvar xml = 'http://www.w3.org/XML/1998/namespace';\n\n// We use attributes for everything SVG so let's avoid some duplication and run\n// code instead.\n// The following are all specified in the HTML config already so we exclude here.\n// - class (as className)\n// - color\n// - height\n// - id\n// - lang\n// - max\n// - media\n// - method\n// - min\n// - name\n// - style\n// - target\n// - type\n// - width\nvar ATTRS = {\n    accentHeight: 'accent-height',\n    accumulate: 0,\n    additive: 0,\n    alignmentBaseline: 'alignment-baseline',\n    allowReorder: 'allowReorder',\n    alphabetic: 0,\n    amplitude: 0,\n    arabicForm: 'arabic-form',\n    ascent: 0,\n    attributeName: 'attributeName',\n    attributeType: 'attributeType',\n    autoReverse: 'autoReverse',\n    azimuth: 0,\n    baseFrequency: 'baseFrequency',\n    baseProfile: 'baseProfile',\n    baselineShift: 'baseline-shift',\n    bbox: 0,\n    begin: 0,\n    bias: 0,\n    by: 0,\n    calcMode: 'calcMode',\n    capHeight: 'cap-height',\n    clip: 0,\n    clipPath: 'clip-path',\n    clipRule: 'clip-rule',\n    clipPathUnits: 'clipPathUnits',\n    colorInterpolation: 'color-interpolation',\n    colorInterpolationFilters: 'color-interpolation-filters',\n    colorProfile: 'color-profile',\n    colorRendering: 'color-rendering',\n    contentScriptType: 'contentScriptType',\n    contentStyleType: 'contentStyleType',\n    cursor: 0,\n    cx: 0,\n    cy: 0,\n    d: 0,\n    decelerate: 0,\n    descent: 0,\n    diffuseConstant: 'diffuseConstant',\n    direction: 0,\n    display: 0,\n    divisor: 0,\n    dominantBaseline: 'dominant-baseline',\n    dur: 0,\n    dx: 0,\n    dy: 0,\n    edgeMode: 'edgeMode',\n    elevation: 0,\n    enableBackground: 'enable-background',\n    end: 0,\n    exponent: 0,\n    externalResourcesRequired: 'externalResourcesRequired',\n    fill: 0,\n    fillOpacity: 'fill-opacity',\n    fillRule: 'fill-rule',\n    filter: 0,\n    filterRes: 'filterRes',\n    filterUnits: 'filterUnits',\n    floodColor: 'flood-color',\n    floodOpacity: 'flood-opacity',\n    focusable: 0,\n    fontFamily: 'font-family',\n    fontSize: 'font-size',\n    fontSizeAdjust: 'font-size-adjust',\n    fontStretch: 'font-stretch',\n    fontStyle: 'font-style',\n    fontVariant: 'font-variant',\n    fontWeight: 'font-weight',\n    format: 0,\n    from: 0,\n    fx: 0,\n    fy: 0,\n    g1: 0,\n    g2: 0,\n    glyphName: 'glyph-name',\n    glyphOrientationHorizontal: 'glyph-orientation-horizontal',\n    glyphOrientationVertical: 'glyph-orientation-vertical',\n    glyphRef: 'glyphRef',\n    gradientTransform: 'gradientTransform',\n    gradientUnits: 'gradientUnits',\n    hanging: 0,\n    horizAdvX: 'horiz-adv-x',\n    horizOriginX: 'horiz-origin-x',\n    ideographic: 0,\n    imageRendering: 'image-rendering',\n    'in': 0,\n    in2: 0,\n    intercept: 0,\n    k: 0,\n    k1: 0,\n    k2: 0,\n    k3: 0,\n    k4: 0,\n    kernelMatrix: 'kernelMatrix',\n    kernelUnitLength: 'kernelUnitLength',\n    kerning: 0,\n    keyPoints: 'keyPoints',\n    keySplines: 'keySplines',\n    keyTimes: 'keyTimes',\n    lengthAdjust: 'lengthAdjust',\n    letterSpacing: 'letter-spacing',\n    lightingColor: 'lighting-color',\n    limitingConeAngle: 'limitingConeAngle',\n    local: 0,\n    markerEnd: 'marker-end',\n    markerMid: 'marker-mid',\n    markerStart: 'marker-start',\n    markerHeight: 'markerHeight',\n    markerUnits: 'markerUnits',\n    markerWidth: 'markerWidth',\n    mask: 0,\n    maskContentUnits: 'maskContentUnits',\n    maskUnits: 'maskUnits',\n    mathematical: 0,\n    mode: 0,\n    numOctaves: 'numOctaves',\n    offset: 0,\n    opacity: 0,\n    operator: 0,\n    order: 0,\n    orient: 0,\n    orientation: 0,\n    origin: 0,\n    overflow: 0,\n    overlinePosition: 'overline-position',\n    overlineThickness: 'overline-thickness',\n    paintOrder: 'paint-order',\n    panose1: 'panose-1',\n    pathLength: 'pathLength',\n    patternContentUnits: 'patternContentUnits',\n    patternTransform: 'patternTransform',\n    patternUnits: 'patternUnits',\n    pointerEvents: 'pointer-events',\n    points: 0,\n    pointsAtX: 'pointsAtX',\n    pointsAtY: 'pointsAtY',\n    pointsAtZ: 'pointsAtZ',\n    preserveAlpha: 'preserveAlpha',\n    preserveAspectRatio: 'preserveAspectRatio',\n    primitiveUnits: 'primitiveUnits',\n    r: 0,\n    radius: 0,\n    refX: 'refX',\n    refY: 'refY',\n    renderingIntent: 'rendering-intent',\n    repeatCount: 'repeatCount',\n    repeatDur: 'repeatDur',\n    requiredExtensions: 'requiredExtensions',\n    requiredFeatures: 'requiredFeatures',\n    restart: 0,\n    result: 0,\n    rotate: 0,\n    rx: 0,\n    ry: 0,\n    scale: 0,\n    seed: 0,\n    shapeRendering: 'shape-rendering',\n    slope: 0,\n    spacing: 0,\n    specularConstant: 'specularConstant',\n    specularExponent: 'specularExponent',\n    speed: 0,\n    spreadMethod: 'spreadMethod',\n    startOffset: 'startOffset',\n    stdDeviation: 'stdDeviation',\n    stemh: 0,\n    stemv: 0,\n    stitchTiles: 'stitchTiles',\n    stopColor: 'stop-color',\n    stopOpacity: 'stop-opacity',\n    strikethroughPosition: 'strikethrough-position',\n    strikethroughThickness: 'strikethrough-thickness',\n    string: 0,\n    stroke: 0,\n    strokeDasharray: 'stroke-dasharray',\n    strokeDashoffset: 'stroke-dashoffset',\n    strokeLinecap: 'stroke-linecap',\n    strokeLinejoin: 'stroke-linejoin',\n    strokeMiterlimit: 'stroke-miterlimit',\n    strokeOpacity: 'stroke-opacity',\n    strokeWidth: 'stroke-width',\n    surfaceScale: 'surfaceScale',\n    systemLanguage: 'systemLanguage',\n    tableValues: 'tableValues',\n    targetX: 'targetX',\n    targetY: 'targetY',\n    textAnchor: 'text-anchor',\n    textDecoration: 'text-decoration',\n    textRendering: 'text-rendering',\n    textLength: 'textLength',\n    to: 0,\n    transform: 0,\n    u1: 0,\n    u2: 0,\n    underlinePosition: 'underline-position',\n    underlineThickness: 'underline-thickness',\n    unicode: 0,\n    unicodeBidi: 'unicode-bidi',\n    unicodeRange: 'unicode-range',\n    unitsPerEm: 'units-per-em',\n    vAlphabetic: 'v-alphabetic',\n    vHanging: 'v-hanging',\n    vIdeographic: 'v-ideographic',\n    vMathematical: 'v-mathematical',\n    values: 0,\n    vectorEffect: 'vector-effect',\n    version: 0,\n    vertAdvY: 'vert-adv-y',\n    vertOriginX: 'vert-origin-x',\n    vertOriginY: 'vert-origin-y',\n    viewBox: 'viewBox',\n    viewTarget: 'viewTarget',\n    visibility: 0,\n    widths: 0,\n    wordSpacing: 'word-spacing',\n    writingMode: 'writing-mode',\n    x: 0,\n    xHeight: 'x-height',\n    x1: 0,\n    x2: 0,\n    xChannelSelector: 'xChannelSelector',\n    xlinkActuate: 'xlink:actuate',\n    xlinkArcrole: 'xlink:arcrole',\n    xlinkHref: 'xlink:href',\n    xlinkRole: 'xlink:role',\n    xlinkShow: 'xlink:show',\n    xlinkTitle: 'xlink:title',\n    xlinkType: 'xlink:type',\n    xmlBase: 'xml:base',\n    xmlns: 0,\n    xmlnsXlink: 'xmlns:xlink',\n    xmlLang: 'xml:lang',\n    xmlSpace: 'xml:space',\n    y: 0,\n    y1: 0,\n    y2: 0,\n    yChannelSelector: 'yChannelSelector',\n    z: 0,\n    zoomAndPan: 'zoomAndPan'\n};\n\nvar SVGDOMPropertyConfig = {\n    props: {},\n    attrNS: {\n        xlinkActuate: xlink,\n        xlinkArcrole: xlink,\n        xlinkHref: xlink,\n        xlinkRole: xlink,\n        xlinkShow: xlink,\n        xlinkTitle: xlink,\n        xlinkType: xlink,\n        xmlBase: xml,\n        xmlLang: xml,\n        xmlSpace: xml\n    },\n    domAttrs: {},\n    domProps: {}\n};\n\nObject.keys(ATTRS).map(function (key) {\n    SVGDOMPropertyConfig.props[key] = 0;\n    if (ATTRS[key]) {\n        SVGDOMPropertyConfig.domAttrs[key] = ATTRS[key];\n    }\n});\n\n// merge html and svg config into properties\nmergeConfigToProperties(HTMLDOMPropertyConfig);\nmergeConfigToProperties(SVGDOMPropertyConfig);\n\nfunction mergeConfigToProperties(config) {\n    var\n    // all react/react-lite supporting property names in here\n    props = config.props;\n    var\n    // attributes namespace in here\n    attrNS = config.attrNS;\n    var\n    // propName in props which should use to be dom-attribute in here\n    domAttrs = config.domAttrs;\n    var\n    // propName in props which should use to be dom-property in here\n    domProps = config.domProps;\n\n    for (var propName in props) {\n        if (!props.hasOwnProperty(propName)) {\n            continue;\n        }\n        var propConfig = props[propName];\n        properties[propName] = {\n            attributeName: domAttrs.hasOwnProperty(propName) ? domAttrs[propName] : propName.toLowerCase(),\n            propertyName: domProps.hasOwnProperty(propName) ? domProps[propName] : propName,\n            attributeNamespace: attrNS.hasOwnProperty(propName) ? attrNS[propName] : null,\n            mustUseProperty: checkMask(propConfig, MUST_USE_PROPERTY),\n            hasBooleanValue: checkMask(propConfig, HAS_BOOLEAN_VALUE),\n            hasNumericValue: checkMask(propConfig, HAS_NUMERIC_VALUE),\n            hasPositiveNumericValue: checkMask(propConfig, HAS_POSITIVE_NUMERIC_VALUE),\n            hasOverloadedBooleanValue: checkMask(propConfig, HAS_OVERLOADED_BOOLEAN_VALUE)\n        };\n    }\n}\n\nfunction checkMask(value, bitmask) {\n    return (value & bitmask) === bitmask;\n}\n\n/**\r\n * Sets the value for a property on a node.\r\n *\r\n * @param {DOMElement} node\r\n * @param {string} name\r\n * @param {*} value\r\n */\n\nfunction setPropValue(node, name, value) {\n    var propInfo = properties.hasOwnProperty(name) && properties[name];\n    if (propInfo) {\n        // should delete value from dom\n        if (value == null || propInfo.hasBooleanValue && !value || propInfo.hasNumericValue && isNaN(value) || propInfo.hasPositiveNumericValue && value < 1 || propInfo.hasOverloadedBooleanValue && value === false) {\n            removePropValue(node, name);\n        } else if (propInfo.mustUseProperty) {\n            node[propInfo.propertyName] = value;\n        } else {\n            var attributeName = propInfo.attributeName;\n            var namespace = propInfo.attributeNamespace;\n\n            // `setAttribute` with objects becomes only `[object]` in IE8/9,\n            // ('' + value) makes it output the correct toString()-value.\n            if (namespace) {\n                node.setAttributeNS(namespace, attributeName, '' + value);\n            } else if (propInfo.hasBooleanValue || propInfo.hasOverloadedBooleanValue && value === true) {\n                node.setAttribute(attributeName, '');\n            } else {\n                node.setAttribute(attributeName, '' + value);\n            }\n        }\n    } else if (isCustomAttribute(name) && VALID_ATTRIBUTE_NAME_REGEX.test(name)) {\n        if (value == null) {\n            node.removeAttribute(name);\n        } else {\n            node.setAttribute(name, '' + value);\n        }\n    }\n}\n\n/**\r\n * Deletes the value for a property on a node.\r\n *\r\n * @param {DOMElement} node\r\n * @param {string} name\r\n */\n\nfunction removePropValue(node, name) {\n    var propInfo = properties.hasOwnProperty(name) && properties[name];\n    if (propInfo) {\n        if (propInfo.mustUseProperty) {\n            var propName = propInfo.propertyName;\n            if (propInfo.hasBooleanValue) {\n                node[propName] = false;\n            } else {\n                node[propName] = '';\n            }\n        } else {\n            node.removeAttribute(propInfo.attributeName);\n        }\n    } else if (isCustomAttribute(name)) {\n        node.removeAttribute(name);\n    }\n}\n\nfunction updateSelectOptions(select, multiple, propValue) {\n    var selectedValue, i;\n    var options = select.options;\n\n    if (multiple) {\n        select.multiple = true;\n        if (!Array.isArray(propValue)) {\n            throw new Error('The value prop supplied to <select> must be an array if `multiple` is true');\n        }\n        selectedValue = {};\n        for (i = 0; i < propValue.length; i++) {\n            selectedValue['' + propValue[i]] = true;\n        }\n        for (i = 0; i < options.length; i++) {\n            var selected = selectedValue.hasOwnProperty(options[i].value);\n            if (options[i].selected !== selected) {\n                options[i].selected = selected;\n            }\n        }\n    } else {\n        select.multiple = false;\n        if (Array.isArray(propValue)) {\n            throw new Error('The value prop supplied to <select> must be a scalar value if `multiple` is false.');\n        }\n        // Do not set `select.value` as exact behavior isn't consistent across all\n        // browsers for all cases.\n        selectedValue = '' + propValue;\n        for (i = 0; i < options.length; i++) {\n            var option = options[i];\n            if (option.value === selectedValue) {\n                if (!option.selected) {\n                    option.selected = true;\n                }\n            } else {\n                if (option.selected) {\n                    option.selected = false;\n                }\n            }\n        }\n\n        if (options.selectedIndex < 0 && options.length) {\n            options[0].selected = true;\n        }\n    }\n}\n\nfunction isFn(obj) {\n    return typeof obj === 'function';\n}\n\nvar isArr = Array.isArray;\n\nfunction noop() {}\n\nfunction identity(obj) {\n    return obj;\n}\n\nfunction pipe(fn1, fn2) {\n    return function () {\n        fn1.apply(this, arguments);\n        return fn2.apply(this, arguments);\n    };\n}\n\nfunction addItem(list, item) {\n    list[list.length] = item;\n}\n\nfunction flatEach(list, iteratee, a) {\n    var len = list.length;\n    var i = -1;\n\n    while (len--) {\n        var item = list[++i];\n        if (isArr(item)) {\n            flatEach(item, iteratee, a);\n        } else {\n            iteratee(item, a);\n        }\n    }\n}\n\nfunction extend(to, from) {\n    if (!from) {\n        return to;\n    }\n    var keys = Object.keys(from);\n    var i = keys.length;\n    while (i--) {\n        to[keys[i]] = from[keys[i]];\n    }\n    return to;\n}\n\nvar uid = 0;\n\nfunction getUid() {\n    return ++uid;\n}\n\nvar EVENT_KEYS = /^on/i;\n\nfunction setProp(elem, key, value, isCustomComponent) {\n    if (EVENT_KEYS.test(key)) {\n        addEvent(elem, key, value);\n    } else if (key === 'style') {\n        setStyle(elem.style, value);\n    } else if (key === HTML_KEY) {\n        if (value && value.__html != null) {\n            elem.innerHTML = value.__html;\n        }\n    } else if (isCustomComponent) {\n        if (value == null) {\n            elem.removeAttribute(key);\n        } else {\n            elem.setAttribute(key, '' + value);\n        }\n    } else {\n        setPropValue(elem, key, value);\n    }\n}\n\nfunction removeProp(elem, key, oldValue, isCustomComponent) {\n    if (EVENT_KEYS.test(key)) {\n        removeEvent(elem, key);\n    } else if (key === 'style') {\n        removeStyle(elem.style, oldValue);\n    } else if (key === HTML_KEY) {\n        elem.innerHTML = '';\n    } else if (isCustomComponent) {\n        elem.removeAttribute(key);\n    } else {\n        removePropValue(elem, key);\n    }\n}\n\nfunction patchProp(elem, key, value, oldValue, isCustomComponent) {\n    if (key === 'value' || key === 'checked') {\n        oldValue = elem[key];\n    }\n    if (value === oldValue) {\n        return;\n    }\n    if (value === undefined) {\n        removeProp(elem, key, oldValue, isCustomComponent);\n        return;\n    }\n    if (key === 'style') {\n        patchStyle(elem.style, oldValue, value);\n    } else {\n        setProp(elem, key, value, isCustomComponent);\n    }\n}\n\nfunction setProps(elem, props, isCustomComponent) {\n    var isSelect = elem.nodeName === 'SELECT';\n    for (var key in props) {\n        if (key !== 'children') {\n            if (isSelect && (key === 'value' || key === 'defaultValue')) {\n                updateSelectOptions(elem, props.multiple, props[key]);\n            } else {\n                setProp(elem, key, props[key], isCustomComponent);\n            }\n        }\n    }\n}\n\nfunction patchProps(elem, props, newProps, isCustomComponent) {\n    var isSelect = elem.nodeName === 'SELECT';\n    for (var key in props) {\n        if (key !== 'children') {\n            if (newProps.hasOwnProperty(key)) {\n                if (isSelect && (key === 'value' || key === 'defaultValue')) {\n                    updateSelectOptions(elem, newProps.multiple, newProps[key]);\n                } else {\n                    patchProp(elem, key, newProps[key], props[key], isCustomComponent);\n                }\n            } else {\n                removeProp(elem, key, props[key], isCustomComponent);\n            }\n        }\n    }\n    for (var key in newProps) {\n        if (key !== 'children' && !props.hasOwnProperty(key)) {\n            if (isSelect && (key === 'value' || key === 'defaultValue')) {\n                updateSelectOptions(elem, newProps.multiple, newProps[key]);\n            } else {\n                setProp(elem, key, newProps[key], isCustomComponent);\n            }\n        }\n    }\n}\n\nif (!Object.freeze) {\n    Object.freeze = identity;\n}\n\nfunction isValidContainer(node) {\n\treturn !!(node && (node.nodeType === ELEMENT_NODE_TYPE || node.nodeType === DOC_NODE_TYPE || node.nodeType === DOCUMENT_FRAGMENT_NODE_TYPE));\n}\n\nvar pendingRendering = {};\nvar vnodeStore = {};\nfunction renderTreeIntoContainer(vnode, container, callback, parentContext) {\n\tif (!vnode.vtype) {\n\t\tthrow new Error('cannot render ' + vnode + ' to container');\n\t}\n\tif (!isValidContainer(container)) {\n\t\tthrow new Error('container ' + container + ' is not a DOM element');\n\t}\n\tvar id = container[COMPONENT_ID] || (container[COMPONENT_ID] = getUid());\n\tvar argsCache = pendingRendering[id];\n\n\t// component lify cycle method maybe call root rendering\n\t// should bundle them and render by only one time\n\tif (argsCache) {\n\t\tif (argsCache === true) {\n\t\t\tpendingRendering[id] = argsCache = { vnode: vnode, callback: callback, parentContext: parentContext };\n\t\t} else {\n\t\t\targsCache.vnode = vnode;\n\t\t\targsCache.parentContext = parentContext;\n\t\t\targsCache.callback = argsCache.callback ? pipe(argsCache.callback, callback) : callback;\n\t\t}\n\t\treturn;\n\t}\n\n\tpendingRendering[id] = true;\n\tvar oldVnode = null;\n\tvar rootNode = null;\n\tif (oldVnode = vnodeStore[id]) {\n\t\trootNode = compareTwoVnodes(oldVnode, vnode, container.firstChild, parentContext);\n\t} else {\n\t\trootNode = initVnode(vnode, parentContext, container.namespaceURI);\n\t\tvar childNode = null;\n\t\twhile (childNode = container.lastChild) {\n\t\t\tcontainer.removeChild(childNode);\n\t\t}\n\t\tcontainer.appendChild(rootNode);\n\t}\n\tvnodeStore[id] = vnode;\n\tvar isPending = updateQueue.isPending;\n\tupdateQueue.isPending = true;\n\tclearPending();\n\targsCache = pendingRendering[id];\n\tdelete pendingRendering[id];\n\n\tvar result = null;\n\tif (typeof argsCache === 'object') {\n\t\tresult = renderTreeIntoContainer(argsCache.vnode, container, argsCache.callback, argsCache.parentContext);\n\t} else if (vnode.vtype === VELEMENT) {\n\t\tresult = rootNode;\n\t} else if (vnode.vtype === VCOMPONENT) {\n\t\tresult = rootNode.cache[vnode.uid];\n\t}\n\n\tif (!isPending) {\n\t\tupdateQueue.isPending = false;\n\t\tupdateQueue.batchUpdate();\n\t}\n\n\tif (callback) {\n\t\tcallback.call(result);\n\t}\n\n\treturn result;\n}\n\nfunction render(vnode, container, callback) {\n\treturn renderTreeIntoContainer(vnode, container, callback);\n}\n\nfunction unstable_renderSubtreeIntoContainer(parentComponent, subVnode, container, callback) {\n\tvar context = parentComponent.$cache.parentContext;\n\treturn renderTreeIntoContainer(subVnode, container, callback, context);\n}\n\nfunction unmountComponentAtNode(container) {\n\tif (!container.nodeName) {\n\t\tthrow new Error('expect node');\n\t}\n\tvar id = container[COMPONENT_ID];\n\tvar vnode = null;\n\tif (vnode = vnodeStore[id]) {\n\t\tdestroyVnode(vnode, container.firstChild);\n\t\tcontainer.removeChild(container.firstChild);\n\t\tdelete vnodeStore[id];\n\t\treturn true;\n\t}\n\treturn false;\n}\n\nfunction findDOMNode(node) {\n\tif (node == null) {\n\t\treturn null;\n\t}\n\tif (node.nodeName) {\n\t\treturn node;\n\t}\n\tvar component = node;\n\t// if component.node equal to false, component must be unmounted\n\tif (component.getDOMNode && component.$cache.isMounted) {\n\t\treturn component.getDOMNode();\n\t}\n\tthrow new Error('findDOMNode can not find Node');\n}\n\nvar ReactDOM = Object.freeze({\n\trender: render,\n\tunstable_renderSubtreeIntoContainer: unstable_renderSubtreeIntoContainer,\n\tunmountComponentAtNode: unmountComponentAtNode,\n\tfindDOMNode: findDOMNode\n});\n\nfunction createElement(type, props, children) {\n\tvar vtype = null;\n\tif (typeof type === 'string') {\n\t\tvtype = VELEMENT;\n\t} else if (typeof type === 'function') {\n\t\tif (type.prototype && type.prototype.isReactComponent) {\n\t\t\tvtype = VCOMPONENT;\n\t\t} else {\n\t\t\tvtype = VSTATELESS;\n\t\t}\n\t} else {\n\t\tthrow new Error('React.createElement: unexpect type [ ' + type + ' ]');\n\t}\n\n\tvar key = null;\n\tvar ref = null;\n\tvar finalProps = {};\n\tif (props != null) {\n\t\tfor (var propKey in props) {\n\t\t\tif (!props.hasOwnProperty(propKey)) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tif (propKey === 'key') {\n\t\t\t\tif (props.key !== undefined) {\n\t\t\t\t\tkey = '' + props.key;\n\t\t\t\t}\n\t\t\t} else if (propKey === 'ref') {\n\t\t\t\tif (props.ref !== undefined) {\n\t\t\t\t\tref = props.ref;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tfinalProps[propKey] = props[propKey];\n\t\t\t}\n\t\t}\n\t}\n\n\tvar defaultProps = type.defaultProps;\n\n\tif (defaultProps) {\n\t\tfor (var propKey in defaultProps) {\n\t\t\tif (finalProps[propKey] === undefined) {\n\t\t\t\tfinalProps[propKey] = defaultProps[propKey];\n\t\t\t}\n\t\t}\n\t}\n\n\tvar argsLen = arguments.length;\n\tvar finalChildren = children;\n\n\tif (argsLen > 3) {\n\t\tfinalChildren = Array(argsLen - 2);\n\t\tfor (var i = 2; i < argsLen; i++) {\n\t\t\tfinalChildren[i - 2] = arguments[i];\n\t\t}\n\t}\n\n\tif (finalChildren !== undefined) {\n\t\tfinalProps.children = finalChildren;\n\t}\n\n\treturn createVnode(vtype, type, finalProps, key, ref);\n}\n\nfunction isValidElement(obj) {\n\treturn obj != null && !!obj.vtype;\n}\n\nfunction cloneElement(originElem, props) {\n\tvar type = originElem.type;\n\tvar key = originElem.key;\n\tvar ref = originElem.ref;\n\n\tvar newProps = extend(extend({ key: key, ref: ref }, originElem.props), props);\n\n\tfor (var _len = arguments.length, children = Array(_len > 2 ? _len - 2 : 0), _key = 2; _key < _len; _key++) {\n\t\tchildren[_key - 2] = arguments[_key];\n\t}\n\n\tvar vnode = createElement.apply(undefined, [type, newProps].concat(children));\n\tif (vnode.ref === originElem.ref) {\n\t\tvnode.refs = originElem.refs;\n\t}\n\treturn vnode;\n}\n\nfunction createFactory(type) {\n\tvar factory = function factory() {\n\t\tfor (var _len2 = arguments.length, args = Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n\t\t\targs[_key2] = arguments[_key2];\n\t\t}\n\n\t\treturn createElement.apply(undefined, [type].concat(args));\n\t};\n\tfactory.type = type;\n\treturn factory;\n}\n\nvar tagNames = 'a|abbr|address|area|article|aside|audio|b|base|bdi|bdo|big|blockquote|body|br|button|canvas|caption|cite|code|col|colgroup|data|datalist|dd|del|details|dfn|dialog|div|dl|dt|em|embed|fieldset|figcaption|figure|footer|form|h1|h2|h3|h4|h5|h6|head|header|hgroup|hr|html|i|iframe|img|input|ins|kbd|keygen|label|legend|li|link|main|map|mark|menu|menuitem|meta|meter|nav|noscript|object|ol|optgroup|option|output|p|param|picture|pre|progress|q|rp|rt|ruby|s|samp|script|section|select|small|source|span|strong|style|sub|summary|sup|table|tbody|td|textarea|tfoot|th|thead|time|title|tr|track|u|ul|var|video|wbr|circle|clipPath|defs|ellipse|g|image|line|linearGradient|mask|path|pattern|polygon|polyline|radialGradient|rect|stop|svg|text|tspan';\nvar DOM = {};\ntagNames.split('|').forEach(function (tagName) {\n\tDOM[tagName] = createFactory(tagName);\n});\n\nvar check = function check() {\n    return check;\n};\ncheck.isRequired = check;\nvar PropTypes = {\n    \"array\": check,\n    \"bool\": check,\n    \"func\": check,\n    \"number\": check,\n    \"object\": check,\n    \"string\": check,\n    \"any\": check,\n    \"arrayOf\": check,\n    \"element\": check,\n    \"instanceOf\": check,\n    \"node\": check,\n    \"objectOf\": check,\n    \"oneOf\": check,\n    \"oneOfType\": check,\n    \"shape\": check\n};\n\nfunction only(children) {\n\tif (isValidElement(children)) {\n\t\treturn children;\n\t}\n\tthrow new Error('expect only one child');\n}\n\nfunction forEach(children, iteratee, context) {\n\tif (children == null) {\n\t\treturn children;\n\t}\n\tvar index = 0;\n\tif (isArr(children)) {\n\t\tflatEach(children, function (child) {\n\t\t\t// from traverseAllChildrenImpl in react\n\t\t\tvar type = typeof child;\n\t\t\tif (type === 'undefined' || type === 'boolean') {\n\t\t\t\t// All of the above are perceived as null.\n\t\t\t\tchild = null;\n\t\t\t}\n\n\t\t\titeratee.call(context, child, index++);\n\t\t});\n\t} else {\n\t\t// from traverseAllChildrenImpl in react\n\t\tvar type = typeof children;\n\t\tif (type === 'undefined' || type === 'boolean') {\n\t\t\t// All of the above are perceived as null.\n\t\t\tchildren = null;\n\t\t}\n\t\titeratee.call(context, children, index);\n\t}\n}\n\nfunction map(children, iteratee, context) {\n\tif (children == null) {\n\t\treturn children;\n\t}\n\tvar store = [];\n\tvar keyMap = {};\n\tforEach(children, function (child, index) {\n\t\tvar data = {};\n\t\tdata.child = iteratee.call(context, child, index) || child;\n\t\tdata.isEqual = data.child === child;\n\t\tvar key = data.key = getKey(child, index);\n\t\tif (keyMap.hasOwnProperty(key)) {\n\t\t\tkeyMap[key] += 1;\n\t\t} else {\n\t\t\tkeyMap[key] = 0;\n\t\t}\n\t\tdata.index = keyMap[key];\n\t\taddItem(store, data);\n\t});\n\tvar result = [];\n\tstore.forEach(function (_ref) {\n\t\tvar child = _ref.child;\n\t\tvar key = _ref.key;\n\t\tvar index = _ref.index;\n\t\tvar isEqual = _ref.isEqual;\n\n\t\tif (child == null || typeof child === 'boolean') {\n\t\t\treturn;\n\t\t}\n\t\tif (!isValidElement(child) || key == null) {\n\t\t\taddItem(result, child);\n\t\t\treturn;\n\t\t}\n\t\tif (keyMap[key] !== 0) {\n\t\t\tkey += ':' + index;\n\t\t}\n\t\tif (!isEqual) {\n\t\t\tkey = escapeUserProvidedKey(child.key || '') + '/' + key;\n\t\t}\n\t\tchild = cloneElement(child, { key: key });\n\t\taddItem(result, child);\n\t});\n\treturn result;\n}\n\nfunction count(children) {\n\tvar count = 0;\n\tforEach(children, function () {\n\t\tcount++;\n\t});\n\treturn count;\n}\n\nfunction toArray(children) {\n\treturn map(children, identity) || [];\n}\n\nfunction getKey(child, index) {\n\tvar key = undefined;\n\tif (isValidElement(child) && typeof child.key === 'string') {\n\t\tkey = '.$' + child.key;\n\t} else {\n\t\tkey = '.' + index.toString(36);\n\t}\n\treturn key;\n}\n\nvar userProvidedKeyEscapeRegex = /\\/(?!\\/)/g;\nfunction escapeUserProvidedKey(text) {\n\treturn ('' + text).replace(userProvidedKeyEscapeRegex, '//');\n}\n\nvar Children = Object.freeze({\n\tonly: only,\n\tforEach: forEach,\n\tmap: map,\n\tcount: count,\n\ttoArray: toArray\n});\n\nfunction eachMixin(mixins, iteratee) {\n\tmixins.forEach(function (mixin) {\n\t\tif (mixin) {\n\t\t\tif (isArr(mixin.mixins)) {\n\t\t\t\teachMixin(mixin.mixins, iteratee);\n\t\t\t}\n\t\t\titeratee(mixin);\n\t\t}\n\t});\n}\n\nfunction combineMixinToProto(proto, mixin) {\n\tfor (var key in mixin) {\n\t\tif (!mixin.hasOwnProperty(key)) {\n\t\t\tcontinue;\n\t\t}\n\t\tvar value = mixin[key];\n\t\tif (key === 'getInitialState') {\n\t\t\taddItem(proto.$getInitialStates, value);\n\t\t\tcontinue;\n\t\t}\n\t\tvar curValue = proto[key];\n\t\tif (isFn(curValue) && isFn(value)) {\n\t\t\tproto[key] = pipe(curValue, value);\n\t\t} else {\n\t\t\tproto[key] = value;\n\t\t}\n\t}\n}\n\nfunction combineMixinToClass(Component, mixin) {\n\tif (mixin.propTypes) {\n\t\tComponent.propTypes = Component.propTypes || {};\n\t\textend(Component.propTypes, mixin.propTypes);\n\t}\n\tif (mixin.contextTypes) {\n\t\tComponent.contextTypes = Component.contextTypes || {};\n\t\textend(Component.contextTypes, mixin.contextTypes);\n\t}\n\textend(Component, mixin.statics);\n\tif (isFn(mixin.getDefaultProps)) {\n\t\tComponent.defaultProps = Component.defaultProps || {};\n\t\textend(Component.defaultProps, mixin.getDefaultProps());\n\t}\n}\n\nfunction bindContext(obj, source) {\n\tfor (var key in source) {\n\t\tif (source.hasOwnProperty(key)) {\n\t\t\tif (isFn(source[key])) {\n\t\t\t\tobj[key] = source[key].bind(obj);\n\t\t\t}\n\t\t}\n\t}\n}\n\nvar Facade = function Facade() {};\nFacade.prototype = Component.prototype;\n\nfunction getInitialState() {\n\tvar _this = this;\n\n\tvar state = {};\n\tvar setState = this.setState;\n\tthis.setState = Facade;\n\tthis.$getInitialStates.forEach(function (getInitialState) {\n\t\tif (isFn(getInitialState)) {\n\t\t\textend(state, getInitialState.call(_this));\n\t\t}\n\t});\n\tthis.setState = setState;\n\treturn state;\n}\nfunction createClass(spec) {\n\tif (!isFn(spec.render)) {\n\t\tthrow new Error('createClass: spec.render is not function');\n\t}\n\tvar specMixins = spec.mixins || [];\n\tvar mixins = specMixins.concat(spec);\n\tspec.mixins = null;\n\tfunction Klass(props, context) {\n\t\tComponent.call(this, props, context);\n\t\tthis.constructor = Klass;\n\t\tspec.autobind !== false && bindContext(this, Klass.prototype);\n\t\tthis.state = this.getInitialState() || this.state;\n\t}\n\tKlass.displayName = spec.displayName;\n\tvar proto = Klass.prototype = new Facade();\n\tproto.$getInitialStates = [];\n\teachMixin(mixins, function (mixin) {\n\t\tcombineMixinToProto(proto, mixin);\n\t\tcombineMixinToClass(Klass, mixin);\n\t});\n\tproto.getInitialState = getInitialState;\n\tspec.mixins = specMixins;\n\treturn Klass;\n}\n\nfunction shallowEqual(objA, objB) {\n    if (objA === objB) {\n        return true;\n    }\n\n    if (typeof objA !== 'object' || objA === null || typeof objB !== 'object' || objB === null) {\n        return false;\n    }\n\n    var keysA = Object.keys(objA);\n    var keysB = Object.keys(objB);\n\n    if (keysA.length !== keysB.length) {\n        return false;\n    }\n\n    // Test for A's keys different from B.\n    for (var i = 0; i < keysA.length; i++) {\n        if (!objB.hasOwnProperty(keysA[i]) || objA[keysA[i]] !== objB[keysA[i]]) {\n            return false;\n        }\n    }\n\n    return true;\n}\n\nfunction PureComponent(props, context) {\n\tComponent.call(this, props, context);\n}\n\nPureComponent.prototype = Object.create(Component.prototype);\nPureComponent.prototype.constructor = PureComponent;\nPureComponent.prototype.isPureReactComponent = true;\nPureComponent.prototype.shouldComponentUpdate = shallowCompare;\n\nfunction shallowCompare(nextProps, nextState) {\n\treturn !shallowEqual(this.props, nextProps) || !shallowEqual(this.state, nextState);\n}\n\nvar React = extend({\n    version: '0.15.1',\n    cloneElement: cloneElement,\n    isValidElement: isValidElement,\n    createElement: createElement,\n    createFactory: createFactory,\n    Component: Component,\n    PureComponent: PureComponent,\n    createClass: createClass,\n    Children: Children,\n    PropTypes: PropTypes,\n    DOM: DOM\n}, ReactDOM);\n\nReact.__SECRET_DOM_DO_NOT_USE_OR_YOU_WILL_BE_FIRED = ReactDOM;\n\nmodule.exports = React;"]}