>';\n\n // Important!\n // Keep this list in sync with production version in `./factoryWithThrowingShims.js`.\n var ReactPropTypes = {\n array: createPrimitiveTypeChecker('array'),\n bool: createPrimitiveTypeChecker('boolean'),\n func: createPrimitiveTypeChecker('function'),\n number: createPrimitiveTypeChecker('number'),\n object: createPrimitiveTypeChecker('object'),\n string: createPrimitiveTypeChecker('string'),\n symbol: createPrimitiveTypeChecker('symbol'),\n\n any: createAnyTypeChecker(),\n arrayOf: createArrayOfTypeChecker,\n element: createElementTypeChecker(),\n instanceOf: createInstanceTypeChecker,\n node: createNodeChecker(),\n objectOf: createObjectOfTypeChecker,\n oneOf: createEnumTypeChecker,\n oneOfType: createUnionTypeChecker,\n shape: createShapeTypeChecker,\n exact: createStrictShapeTypeChecker,\n };\n\n /**\n * inlined Object.is polyfill to avoid requiring consumers ship their own\n * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is\n */\n /*eslint-disable no-self-compare*/\n function is(x, y) {\n // SameValue algorithm\n if (x === y) {\n // Steps 1-5, 7-10\n // Steps 6.b-6.e: +0 != -0\n return x !== 0 || 1 / x === 1 / y;\n } else {\n // Step 6.a: NaN == NaN\n return x !== x && y !== y;\n }\n }\n /*eslint-enable no-self-compare*/\n\n /**\n * We use an Error-like object for backward compatibility as people may call\n * PropTypes directly and inspect their output. However, we don't use real\n * Errors anymore. We don't inspect their stack anyway, and creating them\n * is prohibitively expensive if they are created too often, such as what\n * happens in oneOfType() for any type before the one that matched.\n */\n function PropTypeError(message) {\n this.message = message;\n this.stack = '';\n }\n // Make `instanceof Error` still work for returned errors.\n PropTypeError.prototype = Error.prototype;\n\n function createChainableTypeChecker(validate) {\n if (process.env.NODE_ENV !== 'production') {\n var manualPropTypeCallCache = {};\n var manualPropTypeWarningCount = 0;\n }\n function checkType(isRequired, props, propName, componentName, location, propFullName, secret) {\n componentName = componentName || ANONYMOUS;\n propFullName = propFullName || propName;\n\n if (secret !== ReactPropTypesSecret) {\n if (throwOnDirectAccess) {\n // New behavior only for users of `prop-types` package\n invariant(\n false,\n 'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +\n 'Use `PropTypes.checkPropTypes()` to call them. ' +\n 'Read more at http://fb.me/use-check-prop-types'\n );\n } else if (process.env.NODE_ENV !== 'production' && typeof console !== 'undefined') {\n // Old behavior for people using React.PropTypes\n var cacheKey = componentName + ':' + propName;\n if (\n !manualPropTypeCallCache[cacheKey] &&\n // Avoid spamming the console because they are often not actionable except for lib authors\n manualPropTypeWarningCount < 3\n ) {\n warning(\n false,\n 'You are manually calling a React.PropTypes validation ' +\n 'function for the `%s` prop on `%s`. This is deprecated ' +\n 'and will throw in the standalone `prop-types` package. ' +\n 'You may be seeing this warning due to a third-party PropTypes ' +\n 'library. See https://fb.me/react-warning-dont-call-proptypes ' + 'for details.',\n propFullName,\n componentName\n );\n manualPropTypeCallCache[cacheKey] = true;\n manualPropTypeWarningCount++;\n }\n }\n }\n if (props[propName] == null) {\n if (isRequired) {\n if (props[propName] === null) {\n return new PropTypeError('The ' + location + ' `' + propFullName + '` is marked as required ' + ('in `' + componentName + '`, but its value is `null`.'));\n }\n return new PropTypeError('The ' + location + ' `' + propFullName + '` is marked as required in ' + ('`' + componentName + '`, but its value is `undefined`.'));\n }\n return null;\n } else {\n return validate(props, propName, componentName, location, propFullName);\n }\n }\n\n var chainedCheckType = checkType.bind(null, false);\n chainedCheckType.isRequired = checkType.bind(null, true);\n\n return chainedCheckType;\n }\n\n function createPrimitiveTypeChecker(expectedType) {\n function validate(props, propName, componentName, location, propFullName, secret) {\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== expectedType) {\n // `propValue` being instance of, say, date/regexp, pass the 'object'\n // check, but we can offer a more precise error message here rather than\n // 'of type `object`'.\n var preciseType = getPreciseType(propValue);\n\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + preciseType + '` supplied to `' + componentName + '`, expected ') + ('`' + expectedType + '`.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createAnyTypeChecker() {\n return createChainableTypeChecker(emptyFunction.thatReturnsNull);\n }\n\n function createArrayOfTypeChecker(typeChecker) {\n function validate(props, propName, componentName, location, propFullName) {\n if (typeof typeChecker !== 'function') {\n return new PropTypeError('Property `' + propFullName + '` of component `' + componentName + '` has invalid PropType notation inside arrayOf.');\n }\n var propValue = props[propName];\n if (!Array.isArray(propValue)) {\n var propType = getPropType(propValue);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected an array.'));\n }\n for (var i = 0; i < propValue.length; i++) {\n var error = typeChecker(propValue, i, componentName, location, propFullName + '[' + i + ']', ReactPropTypesSecret);\n if (error instanceof Error) {\n return error;\n }\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createElementTypeChecker() {\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n if (!isValidElement(propValue)) {\n var propType = getPropType(propValue);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected a single ReactElement.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createInstanceTypeChecker(expectedClass) {\n function validate(props, propName, componentName, location, propFullName) {\n if (!(props[propName] instanceof expectedClass)) {\n var expectedClassName = expectedClass.name || ANONYMOUS;\n var actualClassName = getClassName(props[propName]);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + actualClassName + '` supplied to `' + componentName + '`, expected ') + ('instance of `' + expectedClassName + '`.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createEnumTypeChecker(expectedValues) {\n if (!Array.isArray(expectedValues)) {\n process.env.NODE_ENV !== 'production' ? warning(false, 'Invalid argument supplied to oneOf, expected an instance of array.') : void 0;\n return emptyFunction.thatReturnsNull;\n }\n\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n for (var i = 0; i < expectedValues.length; i++) {\n if (is(propValue, expectedValues[i])) {\n return null;\n }\n }\n\n var valuesString = JSON.stringify(expectedValues);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of value `' + propValue + '` ' + ('supplied to `' + componentName + '`, expected one of ' + valuesString + '.'));\n }\n return createChainableTypeChecker(validate);\n }\n\n function createObjectOfTypeChecker(typeChecker) {\n function validate(props, propName, componentName, location, propFullName) {\n if (typeof typeChecker !== 'function') {\n return new PropTypeError('Property `' + propFullName + '` of component `' + componentName + '` has invalid PropType notation inside objectOf.');\n }\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== 'object') {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected an object.'));\n }\n for (var key in propValue) {\n if (propValue.hasOwnProperty(key)) {\n var error = typeChecker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret);\n if (error instanceof Error) {\n return error;\n }\n }\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createUnionTypeChecker(arrayOfTypeCheckers) {\n if (!Array.isArray(arrayOfTypeCheckers)) {\n process.env.NODE_ENV !== 'production' ? warning(false, 'Invalid argument supplied to oneOfType, expected an instance of array.') : void 0;\n return emptyFunction.thatReturnsNull;\n }\n\n for (var i = 0; i < arrayOfTypeCheckers.length; i++) {\n var checker = arrayOfTypeCheckers[i];\n if (typeof checker !== 'function') {\n warning(\n false,\n 'Invalid argument supplied to oneOfType. Expected an array of check functions, but ' +\n 'received %s at index %s.',\n getPostfixForTypeWarning(checker),\n i\n );\n return emptyFunction.thatReturnsNull;\n }\n }\n\n function validate(props, propName, componentName, location, propFullName) {\n for (var i = 0; i < arrayOfTypeCheckers.length; i++) {\n var checker = arrayOfTypeCheckers[i];\n if (checker(props, propName, componentName, location, propFullName, ReactPropTypesSecret) == null) {\n return null;\n }\n }\n\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` supplied to ' + ('`' + componentName + '`.'));\n }\n return createChainableTypeChecker(validate);\n }\n\n function createNodeChecker() {\n function validate(props, propName, componentName, location, propFullName) {\n if (!isNode(props[propName])) {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` supplied to ' + ('`' + componentName + '`, expected a ReactNode.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createShapeTypeChecker(shapeTypes) {\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== 'object') {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type `' + propType + '` ' + ('supplied to `' + componentName + '`, expected `object`.'));\n }\n for (var key in shapeTypes) {\n var checker = shapeTypes[key];\n if (!checker) {\n continue;\n }\n var error = checker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret);\n if (error) {\n return error;\n }\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createStrictShapeTypeChecker(shapeTypes) {\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== 'object') {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type `' + propType + '` ' + ('supplied to `' + componentName + '`, expected `object`.'));\n }\n // We need to check all keys in case some are required but missing from\n // props.\n var allKeys = assign({}, props[propName], shapeTypes);\n for (var key in allKeys) {\n var checker = shapeTypes[key];\n if (!checker) {\n return new PropTypeError(\n 'Invalid ' + location + ' `' + propFullName + '` key `' + key + '` supplied to `' + componentName + '`.' +\n '\\nBad object: ' + JSON.stringify(props[propName], null, ' ') +\n '\\nValid keys: ' + JSON.stringify(Object.keys(shapeTypes), null, ' ')\n );\n }\n var error = checker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret);\n if (error) {\n return error;\n }\n }\n return null;\n }\n\n return createChainableTypeChecker(validate);\n }\n\n function isNode(propValue) {\n switch (typeof propValue) {\n case 'number':\n case 'string':\n case 'undefined':\n return true;\n case 'boolean':\n return !propValue;\n case 'object':\n if (Array.isArray(propValue)) {\n return propValue.every(isNode);\n }\n if (propValue === null || isValidElement(propValue)) {\n return true;\n }\n\n var iteratorFn = getIteratorFn(propValue);\n if (iteratorFn) {\n var iterator = iteratorFn.call(propValue);\n var step;\n if (iteratorFn !== propValue.entries) {\n while (!(step = iterator.next()).done) {\n if (!isNode(step.value)) {\n return false;\n }\n }\n } else {\n // Iterator will provide entry [k,v] tuples rather than values.\n while (!(step = iterator.next()).done) {\n var entry = step.value;\n if (entry) {\n if (!isNode(entry[1])) {\n return false;\n }\n }\n }\n }\n } else {\n return false;\n }\n\n return true;\n default:\n return false;\n }\n }\n\n function isSymbol(propType, propValue) {\n // Native Symbol.\n if (propType === 'symbol') {\n return true;\n }\n\n // 19.4.3.5 Symbol.prototype[@@toStringTag] === 'Symbol'\n if (propValue['@@toStringTag'] === 'Symbol') {\n return true;\n }\n\n // Fallback for non-spec compliant Symbols which are polyfilled.\n if (typeof Symbol === 'function' && propValue instanceof Symbol) {\n return true;\n }\n\n return false;\n }\n\n // Equivalent of `typeof` but with special handling for array and regexp.\n function getPropType(propValue) {\n var propType = typeof propValue;\n if (Array.isArray(propValue)) {\n return 'array';\n }\n if (propValue instanceof RegExp) {\n // Old webkits (at least until Android 4.0) return 'function' rather than\n // 'object' for typeof a RegExp. We'll normalize this here so that /bla/\n // passes PropTypes.object.\n return 'object';\n }\n if (isSymbol(propType, propValue)) {\n return 'symbol';\n }\n return propType;\n }\n\n // This handles more types than `getPropType`. Only used for error messages.\n // See `createPrimitiveTypeChecker`.\n function getPreciseType(propValue) {\n if (typeof propValue === 'undefined' || propValue === null) {\n return '' + propValue;\n }\n var propType = getPropType(propValue);\n if (propType === 'object') {\n if (propValue instanceof Date) {\n return 'date';\n } else if (propValue instanceof RegExp) {\n return 'regexp';\n }\n }\n return propType;\n }\n\n // Returns a string that is postfixed to a warning about an invalid type.\n // For example, \"undefined\" or \"of type array\"\n function getPostfixForTypeWarning(value) {\n var type = getPreciseType(value);\n switch (type) {\n case 'array':\n case 'object':\n return 'an ' + type;\n case 'boolean':\n case 'date':\n case 'regexp':\n return 'a ' + type;\n default:\n return type;\n }\n }\n\n // Returns class name of the object, if any.\n function getClassName(propValue) {\n if (!propValue.constructor || !propValue.constructor.name) {\n return ANONYMOUS;\n }\n return propValue.constructor.name;\n }\n\n ReactPropTypes.checkPropTypes = checkPropTypes;\n ReactPropTypes.PropTypes = ReactPropTypes;\n\n return ReactPropTypes;\n};\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nif (process.env.NODE_ENV !== 'production') {\n var REACT_ELEMENT_TYPE = (typeof Symbol === 'function' &&\n Symbol.for &&\n Symbol.for('react.element')) ||\n 0xeac7;\n\n var isValidElement = function(object) {\n return typeof object === 'object' &&\n object !== null &&\n object.$$typeof === REACT_ELEMENT_TYPE;\n };\n\n // By explicitly using `prop-types` you are opting into new development behavior.\n // http://fb.me/prop-types-in-prod\n var throwOnDirectAccess = true;\n module.exports = require('./factoryWithTypeCheckers')(isValidElement, throwOnDirectAccess);\n} else {\n // By explicitly using `prop-types` you are opting into new production behavior.\n // http://fb.me/prop-types-in-prod\n module.exports = require('./factoryWithThrowingShims')();\n}\n","/*!\n Copyright (c) 2016 Jed Watson.\n Licensed under the MIT License (MIT), see\n http://jedwatson.github.io/classnames\n*/\n/* global define */\n\n(function () {\n\t'use strict';\n\n\tvar hasOwn = {}.hasOwnProperty;\n\n\tfunction classNames () {\n\t\tvar classes = [];\n\n\t\tfor (var i = 0; i < arguments.length; i++) {\n\t\t\tvar arg = arguments[i];\n\t\t\tif (!arg) continue;\n\n\t\t\tvar argType = typeof arg;\n\n\t\t\tif (argType === 'string' || argType === 'number') {\n\t\t\t\tclasses.push(arg);\n\t\t\t} else if (Array.isArray(arg)) {\n\t\t\t\tclasses.push(classNames.apply(null, arg));\n\t\t\t} else if (argType === 'object') {\n\t\t\t\tfor (var key in arg) {\n\t\t\t\t\tif (hasOwn.call(arg, key) && arg[key]) {\n\t\t\t\t\t\tclasses.push(key);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn classes.join(' ');\n\t}\n\n\tif (typeof module !== 'undefined' && module.exports) {\n\t\tmodule.exports = classNames;\n\t} else if (typeof define === 'function' && typeof define.amd === 'object' && define.amd) {\n\t\t// register as 'classnames', consistent with npm package name\n\t\tdefine('classnames', [], function () {\n\t\t\treturn classNames;\n\t\t});\n\t} else {\n\t\twindow.classNames = classNames;\n\t}\n}());\n","var clone = (function() {\n'use strict';\n\nfunction _instanceof(obj, type) {\n return type != null && obj instanceof type;\n}\n\nvar nativeMap;\ntry {\n nativeMap = Map;\n} catch(_) {\n // maybe a reference error because no `Map`. Give it a dummy value that no\n // value will ever be an instanceof.\n nativeMap = function() {};\n}\n\nvar nativeSet;\ntry {\n nativeSet = Set;\n} catch(_) {\n nativeSet = function() {};\n}\n\nvar nativePromise;\ntry {\n nativePromise = Promise;\n} catch(_) {\n nativePromise = function() {};\n}\n\n/**\n * Clones (copies) an Object using deep copying.\n *\n * This function supports circular references by default, but if you are certain\n * there are no circular references in your object, you can save some CPU time\n * by calling clone(obj, false).\n *\n * Caution: if `circular` is false and `parent` contains circular references,\n * your program may enter an infinite loop and crash.\n *\n * @param `parent` - the object to be cloned\n * @param `circular` - set to true if the object to be cloned may contain\n * circular references. (optional - true by default)\n * @param `depth` - set to a number if the object is only to be cloned to\n * a particular depth. (optional - defaults to Infinity)\n * @param `prototype` - sets the prototype to be used when cloning an object.\n * (optional - defaults to parent prototype).\n * @param `includeNonEnumerable` - set to true if the non-enumerable properties\n * should be cloned as well. Non-enumerable properties on the prototype\n * chain will be ignored. (optional - false by default)\n*/\nfunction clone(parent, circular, depth, prototype, includeNonEnumerable) {\n if (typeof circular === 'object') {\n depth = circular.depth;\n prototype = circular.prototype;\n includeNonEnumerable = circular.includeNonEnumerable;\n circular = circular.circular;\n }\n // maintain two arrays for circular references, where corresponding parents\n // and children have the same index\n var allParents = [];\n var allChildren = [];\n\n var useBuffer = typeof Buffer != 'undefined';\n\n if (typeof circular == 'undefined')\n circular = true;\n\n if (typeof depth == 'undefined')\n depth = Infinity;\n\n // recurse this function so we don't reset allParents and allChildren\n function _clone(parent, depth) {\n // cloning null always returns null\n if (parent === null)\n return null;\n\n if (depth === 0)\n return parent;\n\n var child;\n var proto;\n if (typeof parent != 'object') {\n return parent;\n }\n\n if (_instanceof(parent, nativeMap)) {\n child = new nativeMap();\n } else if (_instanceof(parent, nativeSet)) {\n child = new nativeSet();\n } else if (_instanceof(parent, nativePromise)) {\n child = new nativePromise(function (resolve, reject) {\n parent.then(function(value) {\n resolve(_clone(value, depth - 1));\n }, function(err) {\n reject(_clone(err, depth - 1));\n });\n });\n } else if (clone.__isArray(parent)) {\n child = [];\n } else if (clone.__isRegExp(parent)) {\n child = new RegExp(parent.source, __getRegExpFlags(parent));\n if (parent.lastIndex) child.lastIndex = parent.lastIndex;\n } else if (clone.__isDate(parent)) {\n child = new Date(parent.getTime());\n } else if (useBuffer && Buffer.isBuffer(parent)) {\n child = new Buffer(parent.length);\n parent.copy(child);\n return child;\n } else if (_instanceof(parent, Error)) {\n child = Object.create(parent);\n } else {\n if (typeof prototype == 'undefined') {\n proto = Object.getPrototypeOf(parent);\n child = Object.create(proto);\n }\n else {\n child = Object.create(prototype);\n proto = prototype;\n }\n }\n\n if (circular) {\n var index = allParents.indexOf(parent);\n\n if (index != -1) {\n return allChildren[index];\n }\n allParents.push(parent);\n allChildren.push(child);\n }\n\n if (_instanceof(parent, nativeMap)) {\n parent.forEach(function(value, key) {\n var keyChild = _clone(key, depth - 1);\n var valueChild = _clone(value, depth - 1);\n child.set(keyChild, valueChild);\n });\n }\n if (_instanceof(parent, nativeSet)) {\n parent.forEach(function(value) {\n var entryChild = _clone(value, depth - 1);\n child.add(entryChild);\n });\n }\n\n for (var i in parent) {\n var attrs;\n if (proto) {\n attrs = Object.getOwnPropertyDescriptor(proto, i);\n }\n\n if (attrs && attrs.set == null) {\n continue;\n }\n child[i] = _clone(parent[i], depth - 1);\n }\n\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(parent);\n for (var i = 0; i < symbols.length; i++) {\n // Don't need to worry about cloning a symbol because it is a primitive,\n // like a number or string.\n var symbol = symbols[i];\n var descriptor = Object.getOwnPropertyDescriptor(parent, symbol);\n if (descriptor && !descriptor.enumerable && !includeNonEnumerable) {\n continue;\n }\n child[symbol] = _clone(parent[symbol], depth - 1);\n if (!descriptor.enumerable) {\n Object.defineProperty(child, symbol, {\n enumerable: false\n });\n }\n }\n }\n\n if (includeNonEnumerable) {\n var allPropertyNames = Object.getOwnPropertyNames(parent);\n for (var i = 0; i < allPropertyNames.length; i++) {\n var propertyName = allPropertyNames[i];\n var descriptor = Object.getOwnPropertyDescriptor(parent, propertyName);\n if (descriptor && descriptor.enumerable) {\n continue;\n }\n child[propertyName] = _clone(parent[propertyName], depth - 1);\n Object.defineProperty(child, propertyName, {\n enumerable: false\n });\n }\n }\n\n return child;\n }\n\n return _clone(parent, depth);\n}\n\n/**\n * Simple flat clone using prototype, accepts only objects, usefull for property\n * override on FLAT configuration object (no nested props).\n *\n * USE WITH CAUTION! This may not behave as you wish if you do not know how this\n * works.\n */\nclone.clonePrototype = function clonePrototype(parent) {\n if (parent === null)\n return null;\n\n var c = function () {};\n c.prototype = parent;\n return new c();\n};\n\n// private utility functions\n\nfunction __objToStr(o) {\n return Object.prototype.toString.call(o);\n}\nclone.__objToStr = __objToStr;\n\nfunction __isDate(o) {\n return typeof o === 'object' && __objToStr(o) === '[object Date]';\n}\nclone.__isDate = __isDate;\n\nfunction __isArray(o) {\n return typeof o === 'object' && __objToStr(o) === '[object Array]';\n}\nclone.__isArray = __isArray;\n\nfunction __isRegExp(o) {\n return typeof o === 'object' && __objToStr(o) === '[object RegExp]';\n}\nclone.__isRegExp = __isRegExp;\n\nfunction __getRegExpFlags(re) {\n var flags = '';\n if (re.global) flags += 'g';\n if (re.ignoreCase) flags += 'i';\n if (re.multiline) flags += 'm';\n return flags;\n}\nclone.__getRegExpFlags = __getRegExpFlags;\n\nreturn clone;\n})();\n\nif (typeof module === 'object' && module.exports) {\n module.exports = clone;\n}\n","import React, {Component} from 'react';\nimport PropTypes from 'prop-types';\nimport cx from 'classnames';\nimport clone from 'clone';\n\nimport style from './PopupMenu.scss';\n\nexport class PopupMenu extends Component {\n static defaultProps = {\n width: 200,\n height: 'auto'\n };\n\n state = {\n hovered: false,\n displayable: false\n };\n\n static childContextTypes = {\n popupWidth: PropTypes.number\n };\n\n getChildContext() {\n return {\n popupWidth: this.props.width\n };\n }\n\n constructor(props) {\n super(props);\n }\n\n hover = () => {\n clearTimeout(this._diplayTimeout);\n this.setState({hovered: true, displayable: true});\n };\n\n unhover = () => {\n this.setState({hovered: false});\n this._diplayTimeout = setTimeout(() => this.setState({displayable: false}), 500);\n };\n\n configureStyles(props) {\n return {\n popover: {\n width: `calc(${props.width}px - 10px)`,\n height: props.height === 'auto' ? 'auto' : `calc(${props.height}px - 10px)`,\n left: `calc(${-props.width / 2}px + 50%)`,\n ...(props.direction === 'left' || props.direction === 'right' ? {\n top: `calc(${-props.height / 2}px + 50%)`\n } : {})\n }\n };\n }\n\n render() {\n const {hovered, displayable} = this.state;\n const {direction} = this.props;\n\n const styles = this.configureStyles(this.props);\n\n return (\n \n
\n {this.props.button}\n
\n
\n {this.props.children}\n
\n
\n )\n }\n}\n","import React, {Component} from 'react';\nimport {render} from 'react-dom';\nimport PropTypes from 'prop-types';\n\nimport style from './PopupTable.scss';\n\nconst container = document.createElement('div');\ncontainer.style.position = 'absolute';\ncontainer.style.left = '-999999px';\ndocument.body.appendChild(container);\n\nconst getSize = (element) => {\n const elementParent = document.createElement('div');\n container.appendChild(elementParent);\n\n return new Promise(resolve => {\n render(element, elementParent, () => {\n resolve({\n width: elementParent.firstChild.offsetWidth,\n height: elementParent.firstChild.offsetHeight\n });\n })\n });\n}\n\nexport class PopupTable extends Component {\n constructor(props, context) {\n super(props, context);\n\n this.sizes = [];\n this.wait = [];\n\n this.updateLayout();\n }\n\n updateLayout() {\n this.items = this.props.children.length % this.props.rowItems;\n\n this.children = this.props.children.map((component) => {\n this.wait.push(getSize(component));\n return React.cloneElement(component);\n });\n\n Promise.all(this.wait).then((sizes) => {\n this.sizes = sizes;\n this.forceUpdate();\n });\n }\n\n static defaultProps = {\n rowItems: 1\n };\n\n static contextTypes = {\n popupWidth: PropTypes.number\n };\n\n render() {\n const {rowItems} = this.props;\n const {children, sizes, items} = this;\n\n if (sizes.length < 1) return null;\n\n const width = this.context.popupWidth || 200;\n\n if (children.length % rowItems !== 0) {\n const contentSize = sizes\n .slice(-items)\n .reduce((size, {width}) => size + width + 10, 0);\n\n const margin = (width - rowItems * (contentSize / items)) / (rowItems);\n\n children.push(\n \n );\n }\n\n return (\n \n {children.map((child, i) => (\n
0 ? style.placeholder : style.item}>\n {child}\n
\n ))}\n
\n );\n }\n}\n","import React, {Component} from 'react';\n\nexport class PopupText extends Component {\n render() {\n return (\n \n {this.props.children}\n
\n )\n }\n}\n"],"names":["emptyFunction","invariant","require$$0","warning","require$$1","ReactPropTypesSecret","require$$2","assign","checkPropTypes","define","PopupMenu","props","width","state","hover","_diplayTimeout","setState","hovered","displayable","unhover","setTimeout","height","direction","styles","configureStyles","cx","style","button","popover","children","Component","defaultProps","childContextTypes","PropTypes","number","container","document","createElement","position","left","body","appendChild","getSize","element","elementParent","Promise","firstChild","offsetWidth","offsetHeight","PopupTable","context","sizes","wait","updateLayout","items","length","rowItems","map","component","push","React","cloneElement","all","then","forceUpdate","popupWidth","contentSize","slice","reduce","size","margin","child","i","placeholder","item","contextTypes","PopupText","padding"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAWA,SAAS,iBAAiB,CAAC,GAAG,EAAE;EAC9B,OAAO,YAAY;IACjB,OAAO,GAAG,CAAC;GACZ,CAAC;CACH;;;;;;;AAOD,IAAI,aAAa,GAAG,SAAS,aAAa,GAAG,EAAE,CAAC;;AAEhD,aAAa,CAAC,WAAW,GAAG,iBAAiB,CAAC;AAC9C,aAAa,CAAC,gBAAgB,GAAG,iBAAiB,CAAC,KAAK,CAAC,CAAC;AAC1D,aAAa,CAAC,eAAe,GAAG,iBAAiB,CAAC,IAAI,CAAC,CAAC;AACxD,aAAa,CAAC,eAAe,GAAG,iBAAiB,CAAC,IAAI,CAAC,CAAC;AACxD,aAAa,CAAC,eAAe,GAAG,YAAY;EAC1C,OAAO,IAAI,CAAC;CACb,CAAC;AACF,aAAa,CAAC,mBAAmB,GAAG,UAAU,GAAG,EAAE;EACjD,OAAO,GAAG,CAAC;CACZ,CAAC;;AAEF,mBAAc,GAAG,aAAa;;ACnC9B;;;;;;;;;;;;;;;;;;;AAqBA,IAAI,cAAc,GAAG,SAAS,cAAc,CAAC,MAAM,EAAE,EAAE,CAAC;;AAExD,AAA2C;EACzC,cAAc,GAAG,SAAS,cAAc,CAAC,MAAM,EAAE;IAC/C,IAAI,MAAM,KAAK,SAAS,EAAE;MACxB,MAAM,IAAI,KAAK,CAAC,8CAA8C,CAAC,CAAC;KACjE;GACF,CAAC;CACH;;AAED,SAAS,SAAS,CAAC,SAAS,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE;EACtD,cAAc,CAAC,MAAM,CAAC,CAAC;;EAEvB,IAAI,CAAC,SAAS,EAAE;IACd,IAAI,KAAK,CAAC;IACV,IAAI,MAAM,KAAK,SAAS,EAAE;MACxB,KAAK,GAAG,IAAI,KAAK,CAAC,oEAAoE,GAAG,6DAA6D,CAAC,CAAC;KACzJ,MAAM;MACL,IAAI,IAAI,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;MAC9B,IAAI,QAAQ,GAAG,CAAC,CAAC;MACjB,KAAK,GAAG,IAAI,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE,YAAY;QAClD,OAAO,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;OACzB,CAAC,CAAC,CAAC;MACJ,KAAK,CAAC,IAAI,GAAG,qBAAqB,CAAC;KACpC;;IAED,KAAK,CAAC,WAAW,GAAG,CAAC,CAAC;IACtB,MAAM,KAAK,CAAC;GACb;CACF;;AAED,eAAc,GAAG,SAAS;;;;;;;;;ACjC1B,IAAI,OAAO,GAAGA,eAAa,CAAC;;AAE5B,AAA2C;EACzC,IAAI,YAAY,GAAG,SAAS,YAAY,CAAC,MAAM,EAAE;IAC/C,KAAK,IAAI,IAAI,GAAG,SAAS,CAAC,MAAM,EAAE,IAAI,GAAG,KAAK,CAAC,IAAI,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,IAAI,EAAE,IAAI,EAAE,EAAE;MACtG,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;KAClC;;IAED,IAAI,QAAQ,GAAG,CAAC,CAAC;IACjB,IAAI,OAAO,GAAG,WAAW,GAAG,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE,YAAY;MAC5D,OAAO,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;KACzB,CAAC,CAAC;IACH,IAAI,OAAO,OAAO,KAAK,WAAW,EAAE;MAClC,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;KACxB;IACD,IAAI;;;;MAIF,MAAM,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC;KAC1B,CAAC,OAAO,CAAC,EAAE,EAAE;GACf,CAAC;;EAEF,OAAO,GAAG,SAAS,OAAO,CAAC,SAAS,EAAE,MAAM,EAAE;IAC5C,IAAI,MAAM,KAAK,SAAS,EAAE;MACxB,MAAM,IAAI,KAAK,CAAC,2DAA2D,GAAG,kBAAkB,CAAC,CAAC;KACnG;;IAED,IAAI,MAAM,CAAC,OAAO,CAAC,6BAA6B,CAAC,KAAK,CAAC,EAAE;MACvD,OAAO;KACR;;IAED,IAAI,CAAC,SAAS,EAAE;MACd,KAAK,IAAI,KAAK,GAAG,SAAS,CAAC,MAAM,EAAE,IAAI,GAAG,KAAK,CAAC,KAAK,GAAG,CAAC,GAAG,KAAK,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,KAAK,EAAE,KAAK,EAAE,EAAE;QAC7G,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC;OACpC;;MAED,YAAY,CAAC,KAAK,CAAC,SAAS,EAAE,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;KACtD;GACF,CAAC;CACH;;AAED,aAAc,GAAG,OAAO;;AC7DxB;;;;;;AAQA,IAAI,qBAAqB,GAAG,MAAM,CAAC,qBAAqB,CAAC;AACzD,IAAI,cAAc,GAAG,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC;AACrD,IAAI,gBAAgB,GAAG,MAAM,CAAC,SAAS,CAAC,oBAAoB,CAAC;;AAE7D,SAAS,QAAQ,CAAC,GAAG,EAAE;CACtB,IAAI,GAAG,KAAK,IAAI,IAAI,GAAG,KAAK,SAAS,EAAE;EACtC,MAAM,IAAI,SAAS,CAAC,uDAAuD,CAAC,CAAC;EAC7E;;CAED,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC;CACnB;;AAED,SAAS,eAAe,GAAG;CAC1B,IAAI;EACH,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE;GACnB,OAAO,KAAK,CAAC;GACb;;;;;EAKD,IAAI,KAAK,GAAG,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC;EAC9B,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;EAChB,IAAI,MAAM,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE;GACjD,OAAO,KAAK,CAAC;GACb;;;EAGD,IAAI,KAAK,GAAG,EAAE,CAAC;EACf,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE;GAC5B,KAAK,CAAC,GAAG,GAAG,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;GACxC;EACD,IAAI,MAAM,GAAG,MAAM,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE;GAC/D,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC;GAChB,CAAC,CAAC;EACH,IAAI,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,YAAY,EAAE;GACrC,OAAO,KAAK,CAAC;GACb;;;EAGD,IAAI,KAAK,GAAG,EAAE,CAAC;EACf,sBAAsB,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,UAAU,MAAM,EAAE;GAC1D,KAAK,CAAC,MAAM,CAAC,GAAG,MAAM,CAAC;GACvB,CAAC,CAAC;EACH,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC;IAChD,sBAAsB,EAAE;GACzB,OAAO,KAAK,CAAC;GACb;;EAED,OAAO,IAAI,CAAC;EACZ,CAAC,OAAO,GAAG,EAAE;;EAEb,OAAO,KAAK,CAAC;EACb;CACD;;AAED,gBAAc,GAAG,eAAe,EAAE,GAAG,MAAM,CAAC,MAAM,GAAG,UAAU,MAAM,EAAE,MAAM,EAAE;CAC9E,IAAI,IAAI,CAAC;CACT,IAAI,EAAE,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC;CAC1B,IAAI,OAAO,CAAC;;CAEZ,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;EAC1C,IAAI,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;;EAE5B,KAAK,IAAI,GAAG,IAAI,IAAI,EAAE;GACrB,IAAI,cAAc,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC,EAAE;IACnC,EAAE,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;IACpB;GACD;;EAED,IAAI,qBAAqB,EAAE;GAC1B,OAAO,GAAG,qBAAqB,CAAC,IAAI,CAAC,CAAC;GACtC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;IACxC,IAAI,gBAAgB,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE;KAC5C,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;KAClC;IACD;GACD;EACD;;CAED,OAAO,EAAE,CAAC;CACV,CAAC;;ACzFF;;;;;;;AASA,IAAI,oBAAoB,GAAG,8CAA8C,CAAC;;AAE1E,0BAAc,GAAG,oBAAoB,CAAC;;ACFK;EACzC,IAAIC,WAAS,GAAGC,WAA6B,CAAC;EAC9C,IAAIC,SAAO,GAAGC,SAA2B,CAAC;EAC1C,IAAIC,sBAAoB,GAAGC,sBAAqC,CAAC;EACjE,IAAI,kBAAkB,GAAG,EAAE,CAAC;CAC7B;;;;;;;;;;;;;AAaD,SAAS,cAAc,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,aAAa,EAAE,QAAQ,EAAE;EAC5E,AAA2C;IACzC,KAAK,IAAI,YAAY,IAAI,SAAS,EAAE;MAClC,IAAI,SAAS,CAAC,cAAc,CAAC,YAAY,CAAC,EAAE;QAC1C,IAAI,KAAK,CAAC;;;;QAIV,IAAI;;;UAGFL,WAAS,CAAC,OAAO,SAAS,CAAC,YAAY,CAAC,KAAK,UAAU,EAAE,mEAAmE,GAAG,8CAA8C,EAAE,aAAa,IAAI,aAAa,EAAE,QAAQ,EAAE,YAAY,EAAE,OAAO,SAAS,CAAC,YAAY,CAAC,CAAC,CAAC;UACvQ,KAAK,GAAG,SAAS,CAAC,YAAY,CAAC,CAAC,MAAM,EAAE,YAAY,EAAE,aAAa,EAAE,QAAQ,EAAE,IAAI,EAAEI,sBAAoB,CAAC,CAAC;SAC5G,CAAC,OAAO,EAAE,EAAE;UACX,KAAK,GAAG,EAAE,CAAC;SACZ;QACDF,SAAO,CAAC,CAAC,KAAK,IAAI,KAAK,YAAY,KAAK,EAAE,iEAAiE,GAAG,+DAA+D,GAAG,iEAAiE,GAAG,gEAAgE,GAAG,iCAAiC,EAAE,aAAa,IAAI,aAAa,EAAE,QAAQ,EAAE,YAAY,EAAE,OAAO,KAAK,CAAC,CAAC;QACha,IAAI,KAAK,YAAY,KAAK,IAAI,EAAE,KAAK,CAAC,OAAO,IAAI,kBAAkB,CAAC,EAAE;;;UAGpE,kBAAkB,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC;;UAEzC,IAAI,KAAK,GAAG,QAAQ,GAAG,QAAQ,EAAE,GAAG,EAAE,CAAC;;UAEvCA,SAAO,CAAC,KAAK,EAAE,sBAAsB,EAAE,QAAQ,EAAE,KAAK,CAAC,OAAO,EAAE,KAAK,IAAI,IAAI,GAAG,KAAK,GAAG,EAAE,CAAC,CAAC;SAC7F;OACF;KACF;GACF;CACF;;AAED,oBAAc,GAAG,cAAc,CAAC;;ACzChC,2BAAc,GAAG,SAAS,cAAc,EAAE,mBAAmB,EAAE;;EAE7D,IAAI,eAAe,GAAG,OAAO,MAAM,KAAK,UAAU,IAAI,MAAM,CAAC,QAAQ,CAAC;EACtE,IAAI,oBAAoB,GAAG,YAAY,CAAC;;;;;;;;;;;;;;;;EAgBxC,SAAS,aAAa,CAAC,aAAa,EAAE;IACpC,IAAI,UAAU,GAAG,aAAa,KAAK,eAAe,IAAI,aAAa,CAAC,eAAe,CAAC,IAAI,aAAa,CAAC,oBAAoB,CAAC,CAAC,CAAC;IAC7H,IAAI,OAAO,UAAU,KAAK,UAAU,EAAE;MACpC,OAAO,UAAU,CAAC;KACnB;GACF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAiDD,IAAI,SAAS,GAAG,eAAe,CAAC;;;;EAIhC,IAAI,cAAc,GAAG;IACnB,KAAK,EAAE,0BAA0B,CAAC,OAAO,CAAC;IAC1C,IAAI,EAAE,0BAA0B,CAAC,SAAS,CAAC;IAC3C,IAAI,EAAE,0BAA0B,CAAC,UAAU,CAAC;IAC5C,MAAM,EAAE,0BAA0B,CAAC,QAAQ,CAAC;IAC5C,MAAM,EAAE,0BAA0B,CAAC,QAAQ,CAAC;IAC5C,MAAM,EAAE,0BAA0B,CAAC,QAAQ,CAAC;IAC5C,MAAM,EAAE,0BAA0B,CAAC,QAAQ,CAAC;;IAE5C,GAAG,EAAE,oBAAoB,EAAE;IAC3B,OAAO,EAAE,wBAAwB;IACjC,OAAO,EAAE,wBAAwB,EAAE;IACnC,UAAU,EAAE,yBAAyB;IACrC,IAAI,EAAE,iBAAiB,EAAE;IACzB,QAAQ,EAAE,yBAAyB;IACnC,KAAK,EAAE,qBAAqB;IAC5B,SAAS,EAAE,sBAAsB;IACjC,KAAK,EAAE,sBAAsB;IAC7B,KAAK,EAAE,4BAA4B;GACpC,CAAC;;;;;;;EAOF,SAAS,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE;;IAEhB,IAAI,CAAC,KAAK,CAAC,EAAE;;;MAGX,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;KACnC,MAAM;;MAEL,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;KAC3B;GACF;;;;;;;;;;EAUD,SAAS,aAAa,CAAC,OAAO,EAAE;IAC9B,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;IACvB,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC;GACjB;;EAED,aAAa,CAAC,SAAS,GAAG,KAAK,CAAC,SAAS,CAAC;;EAE1C,SAAS,0BAA0B,CAAC,QAAQ,EAAE;IAC5C,AAA2C;MACzC,IAAI,uBAAuB,GAAG,EAAE,CAAC;MACjC,IAAI,0BAA0B,GAAG,CAAC,CAAC;KACpC;IACD,SAAS,SAAS,CAAC,UAAU,EAAE,KAAK,EAAE,QAAQ,EAAE,aAAa,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,EAAE;MAC7F,aAAa,GAAG,aAAa,IAAI,SAAS,CAAC;MAC3C,YAAY,GAAG,YAAY,IAAI,QAAQ,CAAC;;MAExC,IAAI,MAAM,KAAKE,sBAAoB,EAAE;QACnC,IAAI,mBAAmB,EAAE;;UAEvBJ,WAAS;YACP,KAAK;YACL,sFAAsF;YACtF,iDAAiD;YACjD,gDAAgD;WACjD,CAAC;SACH,MAAM,IAAI,aAAoB,KAAK,YAAY,IAAI,OAAO,OAAO,KAAK,WAAW,EAAE;;UAElF,IAAI,QAAQ,GAAG,aAAa,GAAG,GAAG,GAAG,QAAQ,CAAC;UAC9C;YACE,CAAC,uBAAuB,CAAC,QAAQ,CAAC;;YAElC,0BAA0B,GAAG,CAAC;YAC9B;YACAE,SAAO;cACL,KAAK;cACL,wDAAwD;cACxD,yDAAyD;cACzD,yDAAyD;cACzD,gEAAgE;cAChE,+DAA+D,GAAG,cAAc;cAChF,YAAY;cACZ,aAAa;aACd,CAAC;YACF,uBAAuB,CAAC,QAAQ,CAAC,GAAG,IAAI,CAAC;YACzC,0BAA0B,EAAE,CAAC;WAC9B;SACF;OACF;MACD,IAAI,KAAK,CAAC,QAAQ,CAAC,IAAI,IAAI,EAAE;QAC3B,IAAI,UAAU,EAAE;UACd,IAAI,KAAK,CAAC,QAAQ,CAAC,KAAK,IAAI,EAAE;YAC5B,OAAO,IAAI,aAAa,CAAC,MAAM,GAAG,QAAQ,GAAG,IAAI,GAAG,YAAY,GAAG,0BAA0B,IAAI,MAAM,GAAG,aAAa,GAAG,6BAA6B,CAAC,CAAC,CAAC;WAC3J;UACD,OAAO,IAAI,aAAa,CAAC,MAAM,GAAG,QAAQ,GAAG,IAAI,GAAG,YAAY,GAAG,6BAA6B,IAAI,GAAG,GAAG,aAAa,GAAG,kCAAkC,CAAC,CAAC,CAAC;SAChK;QACD,OAAO,IAAI,CAAC;OACb,MAAM;QACL,OAAO,QAAQ,CAAC,KAAK,EAAE,QAAQ,EAAE,aAAa,EAAE,QAAQ,EAAE,YAAY,CAAC,CAAC;OACzE;KACF;;IAED,IAAI,gBAAgB,GAAG,SAAS,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IACnD,gBAAgB,CAAC,UAAU,GAAG,SAAS,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;;IAEzD,OAAO,gBAAgB,CAAC;GACzB;;EAED,SAAS,0BAA0B,CAAC,YAAY,EAAE;IAChD,SAAS,QAAQ,CAAC,KAAK,EAAE,QAAQ,EAAE,aAAa,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,EAAE;MAChF,IAAI,SAAS,GAAG,KAAK,CAAC,QAAQ,CAAC,CAAC;MAChC,IAAI,QAAQ,GAAG,WAAW,CAAC,SAAS,CAAC,CAAC;MACtC,IAAI,QAAQ,KAAK,YAAY,EAAE;;;;QAI7B,IAAI,WAAW,GAAG,cAAc,CAAC,SAAS,CAAC,CAAC;;QAE5C,OAAO,IAAI,aAAa,CAAC,UAAU,GAAG,QAAQ,GAAG,IAAI,GAAG,YAAY,GAAG,YAAY,IAAI,GAAG,GAAG,WAAW,GAAG,iBAAiB,GAAG,aAAa,GAAG,cAAc,CAAC,IAAI,GAAG,GAAG,YAAY,GAAG,IAAI,CAAC,CAAC,CAAC;OAC/L;MACD,OAAO,IAAI,CAAC;KACb;IACD,OAAO,0BAA0B,CAAC,QAAQ,CAAC,CAAC;GAC7C;;EAED,SAAS,oBAAoB,GAAG;IAC9B,OAAO,0BAA0B,CAACH,eAAa,CAAC,eAAe,CAAC,CAAC;GAClE;;EAED,SAAS,wBAAwB,CAAC,WAAW,EAAE;IAC7C,SAAS,QAAQ,CAAC,KAAK,EAAE,QAAQ,EAAE,aAAa,EAAE,QAAQ,EAAE,YAAY,EAAE;MACxE,IAAI,OAAO,WAAW,KAAK,UAAU,EAAE;QACrC,OAAO,IAAI,aAAa,CAAC,YAAY,GAAG,YAAY,GAAG,kBAAkB,GAAG,aAAa,GAAG,iDAAiD,CAAC,CAAC;OAChJ;MACD,IAAI,SAAS,GAAG,KAAK,CAAC,QAAQ,CAAC,CAAC;MAChC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE;QAC7B,IAAI,QAAQ,GAAG,WAAW,CAAC,SAAS,CAAC,CAAC;QACtC,OAAO,IAAI,aAAa,CAAC,UAAU,GAAG,QAAQ,GAAG,IAAI,GAAG,YAAY,GAAG,YAAY,IAAI,GAAG,GAAG,QAAQ,GAAG,iBAAiB,GAAG,aAAa,GAAG,uBAAuB,CAAC,CAAC,CAAC;OACvK;MACD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;QACzC,IAAI,KAAK,GAAG,WAAW,CAAC,SAAS,EAAE,CAAC,EAAE,aAAa,EAAE,QAAQ,EAAE,YAAY,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,EAAEK,sBAAoB,CAAC,CAAC;QACnH,IAAI,KAAK,YAAY,KAAK,EAAE;UAC1B,OAAO,KAAK,CAAC;SACd;OACF;MACD,OAAO,IAAI,CAAC;KACb;IACD,OAAO,0BAA0B,CAAC,QAAQ,CAAC,CAAC;GAC7C;;EAED,SAAS,wBAAwB,GAAG;IAClC,SAAS,QAAQ,CAAC,KAAK,EAAE,QAAQ,EAAE,aAAa,EAAE,QAAQ,EAAE,YAAY,EAAE;MACxE,IAAI,SAAS,GAAG,KAAK,CAAC,QAAQ,CAAC,CAAC;MAChC,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,EAAE;QAC9B,IAAI,QAAQ,GAAG,WAAW,CAAC,SAAS,CAAC,CAAC;QACtC,OAAO,IAAI,aAAa,CAAC,UAAU,GAAG,QAAQ,GAAG,IAAI,GAAG,YAAY,GAAG,YAAY,IAAI,GAAG,GAAG,QAAQ,GAAG,iBAAiB,GAAG,aAAa,GAAG,oCAAoC,CAAC,CAAC,CAAC;OACpL;MACD,OAAO,IAAI,CAAC;KACb;IACD,OAAO,0BAA0B,CAAC,QAAQ,CAAC,CAAC;GAC7C;;EAED,SAAS,yBAAyB,CAAC,aAAa,EAAE;IAChD,SAAS,QAAQ,CAAC,KAAK,EAAE,QAAQ,EAAE,aAAa,EAAE,QAAQ,EAAE,YAAY,EAAE;MACxE,IAAI,EAAE,KAAK,CAAC,QAAQ,CAAC,YAAY,aAAa,CAAC,EAAE;QAC/C,IAAI,iBAAiB,GAAG,aAAa,CAAC,IAAI,IAAI,SAAS,CAAC;QACxD,IAAI,eAAe,GAAG,YAAY,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC;QACpD,OAAO,IAAI,aAAa,CAAC,UAAU,GAAG,QAAQ,GAAG,IAAI,GAAG,YAAY,GAAG,YAAY,IAAI,GAAG,GAAG,eAAe,GAAG,iBAAiB,GAAG,aAAa,GAAG,cAAc,CAAC,IAAI,eAAe,GAAG,iBAAiB,GAAG,IAAI,CAAC,CAAC,CAAC;OACpN;MACD,OAAO,IAAI,CAAC;KACb;IACD,OAAO,0BAA0B,CAAC,QAAQ,CAAC,CAAC;GAC7C;;EAED,SAAS,qBAAqB,CAAC,cAAc,EAAE;IAC7C,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,cAAc,CAAC,EAAE;MAClC,AAAwCF,SAAO,CAAC,KAAK,EAAE,oEAAoE,CAAC,AAAS,CAAC;MACtI,OAAOH,eAAa,CAAC,eAAe,CAAC;KACtC;;IAED,SAAS,QAAQ,CAAC,KAAK,EAAE,QAAQ,EAAE,aAAa,EAAE,QAAQ,EAAE,YAAY,EAAE;MACxE,IAAI,SAAS,GAAG,KAAK,CAAC,QAAQ,CAAC,CAAC;MAChC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,cAAc,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;QAC9C,IAAI,EAAE,CAAC,SAAS,EAAE,cAAc,CAAC,CAAC,CAAC,CAAC,EAAE;UACpC,OAAO,IAAI,CAAC;SACb;OACF;;MAED,IAAI,YAAY,GAAG,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC;MAClD,OAAO,IAAI,aAAa,CAAC,UAAU,GAAG,QAAQ,GAAG,IAAI,GAAG,YAAY,GAAG,cAAc,GAAG,SAAS,GAAG,IAAI,IAAI,eAAe,GAAG,aAAa,GAAG,qBAAqB,GAAG,YAAY,GAAG,GAAG,CAAC,CAAC,CAAC;KAC5L;IACD,OAAO,0BAA0B,CAAC,QAAQ,CAAC,CAAC;GAC7C;;EAED,SAAS,yBAAyB,CAAC,WAAW,EAAE;IAC9C,SAAS,QAAQ,CAAC,KAAK,EAAE,QAAQ,EAAE,aAAa,EAAE,QAAQ,EAAE,YAAY,EAAE;MACxE,IAAI,OAAO,WAAW,KAAK,UAAU,EAAE;QACrC,OAAO,IAAI,aAAa,CAAC,YAAY,GAAG,YAAY,GAAG,kBAAkB,GAAG,aAAa,GAAG,kDAAkD,CAAC,CAAC;OACjJ;MACD,IAAI,SAAS,GAAG,KAAK,CAAC,QAAQ,CAAC,CAAC;MAChC,IAAI,QAAQ,GAAG,WAAW,CAAC,SAAS,CAAC,CAAC;MACtC,IAAI,QAAQ,KAAK,QAAQ,EAAE;QACzB,OAAO,IAAI,aAAa,CAAC,UAAU,GAAG,QAAQ,GAAG,IAAI,GAAG,YAAY,GAAG,YAAY,IAAI,GAAG,GAAG,QAAQ,GAAG,iBAAiB,GAAG,aAAa,GAAG,wBAAwB,CAAC,CAAC,CAAC;OACxK;MACD,KAAK,IAAI,GAAG,IAAI,SAAS,EAAE;QACzB,IAAI,SAAS,CAAC,cAAc,CAAC,GAAG,CAAC,EAAE;UACjC,IAAI,KAAK,GAAG,WAAW,CAAC,SAAS,EAAE,GAAG,EAAE,aAAa,EAAE,QAAQ,EAAE,YAAY,GAAG,GAAG,GAAG,GAAG,EAAEK,sBAAoB,CAAC,CAAC;UACjH,IAAI,KAAK,YAAY,KAAK,EAAE;YAC1B,OAAO,KAAK,CAAC;WACd;SACF;OACF;MACD,OAAO,IAAI,CAAC;KACb;IACD,OAAO,0BAA0B,CAAC,QAAQ,CAAC,CAAC;GAC7C;;EAED,SAAS,sBAAsB,CAAC,mBAAmB,EAAE;IACnD,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,mBAAmB,CAAC,EAAE;MACvC,AAAwCF,SAAO,CAAC,KAAK,EAAE,wEAAwE,CAAC,AAAS,CAAC;MAC1I,OAAOH,eAAa,CAAC,eAAe,CAAC;KACtC;;IAED,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,mBAAmB,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;MACnD,IAAI,OAAO,GAAG,mBAAmB,CAAC,CAAC,CAAC,CAAC;MACrC,IAAI,OAAO,OAAO,KAAK,UAAU,EAAE;QACjCG,SAAO;UACL,KAAK;UACL,oFAAoF;UACpF,0BAA0B;UAC1B,wBAAwB,CAAC,OAAO,CAAC;UACjC,CAAC;SACF,CAAC;QACF,OAAOH,eAAa,CAAC,eAAe,CAAC;OACtC;KACF;;IAED,SAAS,QAAQ,CAAC,KAAK,EAAE,QAAQ,EAAE,aAAa,EAAE,QAAQ,EAAE,YAAY,EAAE;MACxE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,mBAAmB,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;QACnD,IAAI,OAAO,GAAG,mBAAmB,CAAC,CAAC,CAAC,CAAC;QACrC,IAAI,OAAO,CAAC,KAAK,EAAE,QAAQ,EAAE,aAAa,EAAE,QAAQ,EAAE,YAAY,EAAEK,sBAAoB,CAAC,IAAI,IAAI,EAAE;UACjG,OAAO,IAAI,CAAC;SACb;OACF;;MAED,OAAO,IAAI,aAAa,CAAC,UAAU,GAAG,QAAQ,GAAG,IAAI,GAAG,YAAY,GAAG,gBAAgB,IAAI,GAAG,GAAG,aAAa,GAAG,IAAI,CAAC,CAAC,CAAC;KACzH;IACD,OAAO,0BAA0B,CAAC,QAAQ,CAAC,CAAC;GAC7C;;EAED,SAAS,iBAAiB,GAAG;IAC3B,SAAS,QAAQ,CAAC,KAAK,EAAE,QAAQ,EAAE,aAAa,EAAE,QAAQ,EAAE,YAAY,EAAE;MACxE,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,EAAE;QAC5B,OAAO,IAAI,aAAa,CAAC,UAAU,GAAG,QAAQ,GAAG,IAAI,GAAG,YAAY,GAAG,gBAAgB,IAAI,GAAG,GAAG,aAAa,GAAG,0BAA0B,CAAC,CAAC,CAAC;OAC/I;MACD,OAAO,IAAI,CAAC;KACb;IACD,OAAO,0BAA0B,CAAC,QAAQ,CAAC,CAAC;GAC7C;;EAED,SAAS,sBAAsB,CAAC,UAAU,EAAE;IAC1C,SAAS,QAAQ,CAAC,KAAK,EAAE,QAAQ,EAAE,aAAa,EAAE,QAAQ,EAAE,YAAY,EAAE;MACxE,IAAI,SAAS,GAAG,KAAK,CAAC,QAAQ,CAAC,CAAC;MAChC,IAAI,QAAQ,GAAG,WAAW,CAAC,SAAS,CAAC,CAAC;MACtC,IAAI,QAAQ,KAAK,QAAQ,EAAE;QACzB,OAAO,IAAI,aAAa,CAAC,UAAU,GAAG,QAAQ,GAAG,IAAI,GAAG,YAAY,GAAG,aAAa,GAAG,QAAQ,GAAG,IAAI,IAAI,eAAe,GAAG,aAAa,GAAG,uBAAuB,CAAC,CAAC,CAAC;OACvK;MACD,KAAK,IAAI,GAAG,IAAI,UAAU,EAAE;QAC1B,IAAI,OAAO,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC;QAC9B,IAAI,CAAC,OAAO,EAAE;UACZ,SAAS;SACV;QACD,IAAI,KAAK,GAAG,OAAO,CAAC,SAAS,EAAE,GAAG,EAAE,aAAa,EAAE,QAAQ,EAAE,YAAY,GAAG,GAAG,GAAG,GAAG,EAAEA,sBAAoB,CAAC,CAAC;QAC7G,IAAI,KAAK,EAAE;UACT,OAAO,KAAK,CAAC;SACd;OACF;MACD,OAAO,IAAI,CAAC;KACb;IACD,OAAO,0BAA0B,CAAC,QAAQ,CAAC,CAAC;GAC7C;;EAED,SAAS,4BAA4B,CAAC,UAAU,EAAE;IAChD,SAAS,QAAQ,CAAC,KAAK,EAAE,QAAQ,EAAE,aAAa,EAAE,QAAQ,EAAE,YAAY,EAAE;MACxE,IAAI,SAAS,GAAG,KAAK,CAAC,QAAQ,CAAC,CAAC;MAChC,IAAI,QAAQ,GAAG,WAAW,CAAC,SAAS,CAAC,CAAC;MACtC,IAAI,QAAQ,KAAK,QAAQ,EAAE;QACzB,OAAO,IAAI,aAAa,CAAC,UAAU,GAAG,QAAQ,GAAG,IAAI,GAAG,YAAY,GAAG,aAAa,GAAG,QAAQ,GAAG,IAAI,IAAI,eAAe,GAAG,aAAa,GAAG,uBAAuB,CAAC,CAAC,CAAC;OACvK;;;MAGD,IAAI,OAAO,GAAGE,YAAM,CAAC,EAAE,EAAE,KAAK,CAAC,QAAQ,CAAC,EAAE,UAAU,CAAC,CAAC;MACtD,KAAK,IAAI,GAAG,IAAI,OAAO,EAAE;QACvB,IAAI,OAAO,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC;QAC9B,IAAI,CAAC,OAAO,EAAE;UACZ,OAAO,IAAI,aAAa;YACtB,UAAU,GAAG,QAAQ,GAAG,IAAI,GAAG,YAAY,GAAG,SAAS,GAAG,GAAG,GAAG,iBAAiB,GAAG,aAAa,GAAG,IAAI;YACxG,gBAAgB,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC;YAC9D,gBAAgB,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC;WACxE,CAAC;SACH;QACD,IAAI,KAAK,GAAG,OAAO,CAAC,SAAS,EAAE,GAAG,EAAE,aAAa,EAAE,QAAQ,EAAE,YAAY,GAAG,GAAG,GAAG,GAAG,EAAEF,sBAAoB,CAAC,CAAC;QAC7G,IAAI,KAAK,EAAE;UACT,OAAO,KAAK,CAAC;SACd;OACF;MACD,OAAO,IAAI,CAAC;KACb;;IAED,OAAO,0BAA0B,CAAC,QAAQ,CAAC,CAAC;GAC7C;;EAED,SAAS,MAAM,CAAC,SAAS,EAAE;IACzB,QAAQ,OAAO,SAAS;MACtB,KAAK,QAAQ,CAAC;MACd,KAAK,QAAQ,CAAC;MACd,KAAK,WAAW;QACd,OAAO,IAAI,CAAC;MACd,KAAK,SAAS;QACZ,OAAO,CAAC,SAAS,CAAC;MACpB,KAAK,QAAQ;QACX,IAAI,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE;UAC5B,OAAO,SAAS,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;SAChC;QACD,IAAI,SAAS,KAAK,IAAI,IAAI,cAAc,CAAC,SAAS,CAAC,EAAE;UACnD,OAAO,IAAI,CAAC;SACb;;QAED,IAAI,UAAU,GAAG,aAAa,CAAC,SAAS,CAAC,CAAC;QAC1C,IAAI,UAAU,EAAE;UACd,IAAI,QAAQ,GAAG,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;UAC1C,IAAI,IAAI,CAAC;UACT,IAAI,UAAU,KAAK,SAAS,CAAC,OAAO,EAAE;YACpC,OAAO,CAAC,CAAC,IAAI,GAAG,QAAQ,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE;cACrC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;gBACvB,OAAO,KAAK,CAAC;eACd;aACF;WACF,MAAM;;YAEL,OAAO,CAAC,CAAC,IAAI,GAAG,QAAQ,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE;cACrC,IAAI,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;cACvB,IAAI,KAAK,EAAE;gBACT,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE;kBACrB,OAAO,KAAK,CAAC;iBACd;eACF;aACF;WACF;SACF,MAAM;UACL,OAAO,KAAK,CAAC;SACd;;QAED,OAAO,IAAI,CAAC;MACd;QACE,OAAO,KAAK,CAAC;KAChB;GACF;;EAED,SAAS,QAAQ,CAAC,QAAQ,EAAE,SAAS,EAAE;;IAErC,IAAI,QAAQ,KAAK,QAAQ,EAAE;MACzB,OAAO,IAAI,CAAC;KACb;;;IAGD,IAAI,SAAS,CAAC,eAAe,CAAC,KAAK,QAAQ,EAAE;MAC3C,OAAO,IAAI,CAAC;KACb;;;IAGD,IAAI,OAAO,MAAM,KAAK,UAAU,IAAI,SAAS,YAAY,MAAM,EAAE;MAC/D,OAAO,IAAI,CAAC;KACb;;IAED,OAAO,KAAK,CAAC;GACd;;;EAGD,SAAS,WAAW,CAAC,SAAS,EAAE;IAC9B,IAAI,QAAQ,GAAG,OAAO,SAAS,CAAC;IAChC,IAAI,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE;MAC5B,OAAO,OAAO,CAAC;KAChB;IACD,IAAI,SAAS,YAAY,MAAM,EAAE;;;;MAI/B,OAAO,QAAQ,CAAC;KACjB;IACD,IAAI,QAAQ,CAAC,QAAQ,EAAE,SAAS,CAAC,EAAE;MACjC,OAAO,QAAQ,CAAC;KACjB;IACD,OAAO,QAAQ,CAAC;GACjB;;;;EAID,SAAS,cAAc,CAAC,SAAS,EAAE;IACjC,IAAI,OAAO,SAAS,KAAK,WAAW,IAAI,SAAS,KAAK,IAAI,EAAE;MAC1D,OAAO,EAAE,GAAG,SAAS,CAAC;KACvB;IACD,IAAI,QAAQ,GAAG,WAAW,CAAC,SAAS,CAAC,CAAC;IACtC,IAAI,QAAQ,KAAK,QAAQ,EAAE;MACzB,IAAI,SAAS,YAAY,IAAI,EAAE;QAC7B,OAAO,MAAM,CAAC;OACf,MAAM,IAAI,SAAS,YAAY,MAAM,EAAE;QACtC,OAAO,QAAQ,CAAC;OACjB;KACF;IACD,OAAO,QAAQ,CAAC;GACjB;;;;EAID,SAAS,wBAAwB,CAAC,KAAK,EAAE;IACvC,IAAI,IAAI,GAAG,cAAc,CAAC,KAAK,CAAC,CAAC;IACjC,QAAQ,IAAI;MACV,KAAK,OAAO,CAAC;MACb,KAAK,QAAQ;QACX,OAAO,KAAK,GAAG,IAAI,CAAC;MACtB,KAAK,SAAS,CAAC;MACf,KAAK,MAAM,CAAC;MACZ,KAAK,QAAQ;QACX,OAAO,IAAI,GAAG,IAAI,CAAC;MACrB;QACE,OAAO,IAAI,CAAC;KACf;GACF;;;EAGD,SAAS,YAAY,CAAC,SAAS,EAAE;IAC/B,IAAI,CAAC,SAAS,CAAC,WAAW,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,IAAI,EAAE;MACzD,OAAO,SAAS,CAAC;KAClB;IACD,OAAO,SAAS,CAAC,WAAW,CAAC,IAAI,CAAC;GACnC;;EAED,cAAc,CAAC,cAAc,GAAGG,gBAAc,CAAC;EAC/C,cAAc,CAAC,SAAS,GAAG,cAAc,CAAC;;EAE1C,OAAO,cAAc,CAAC;CACvB,CAAC;;;;;;;;;;ACthBF,AAA2C;EACzC,IAAI,kBAAkB,GAAG,CAAC,OAAO,MAAM,KAAK,UAAU;IACpD,MAAM,CAAC,GAAG;IACV,MAAM,CAAC,GAAG,CAAC,eAAe,CAAC;IAC3B,MAAM,CAAC;;EAET,IAAI,cAAc,GAAG,SAAS,MAAM,EAAE;IACpC,OAAO,OAAO,MAAM,KAAK,QAAQ;MAC/B,MAAM,KAAK,IAAI;MACf,MAAM,CAAC,QAAQ,KAAK,kBAAkB,CAAC;GAC1C,CAAC;;;;EAIF,IAAI,mBAAmB,GAAG,IAAI,CAAC;EAC/B,cAAc,GAAGN,uBAAoC,CAAC,cAAc,EAAE,mBAAmB,CAAC,CAAC;CAC5F,AAIA;;;;;;;;;;;ACpBD,CAAC,YAAY;;CAGZ,IAAI,MAAM,GAAG,EAAE,CAAC,cAAc,CAAC;;CAE/B,SAAS,UAAU,IAAI;EACtB,IAAI,OAAO,GAAG,EAAE,CAAC;;EAEjB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;GAC1C,IAAI,GAAG,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;GACvB,IAAI,CAAC,GAAG,EAAE,SAAS;;GAEnB,IAAI,OAAO,GAAG,OAAO,GAAG,CAAC;;GAEzB,IAAI,OAAO,KAAK,QAAQ,IAAI,OAAO,KAAK,QAAQ,EAAE;IACjD,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAClB,MAAM,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;IAC9B,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC;IAC1C,MAAM,IAAI,OAAO,KAAK,QAAQ,EAAE;IAChC,KAAK,IAAI,GAAG,IAAI,GAAG,EAAE;KACpB,IAAI,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,GAAG,CAAC,GAAG,CAAC,EAAE;MACtC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;MAClB;KACD;IACD;GACD;;EAED,OAAO,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;EACzB;;CAED,IAAI,QAAa,KAAK,WAAW,IAAI,MAAM,CAAC,OAAO,EAAE;EACpD,cAAc,GAAG,UAAU,CAAC;EAC5B,MAAM,IAAI,OAAOO,SAAM,KAAK,UAAU,IAAI,OAAOA,SAAM,CAAC,GAAG,KAAK,QAAQ,IAAIA,SAAM,CAAC,GAAG,EAAE;;EAExFA,SAAM,CAAC,YAAY,EAAE,EAAE,EAAE,YAAY;GACpC,OAAO,UAAU,CAAC;GAClB,CAAC,CAAC;EACH,MAAM;EACN,MAAM,CAAC,UAAU,GAAG,UAAU,CAAC;EAC/B;CACD,EAAE,EAAE;;;;AC/CL,IAAI,KAAK,GAAG,CAAC,WAAW;AACxB;AAEA,SAAS,WAAW,CAAC,GAAG,EAAE,IAAI,EAAE;EAC9B,OAAO,IAAI,IAAI,IAAI,IAAI,GAAG,YAAY,IAAI,CAAC;CAC5C;;AAED,IAAI,SAAS,CAAC;AACd,IAAI;EACF,SAAS,GAAG,GAAG,CAAC;CACjB,CAAC,MAAM,CAAC,EAAE;;;EAGT,SAAS,GAAG,WAAW,EAAE,CAAC;CAC3B;;AAED,IAAI,SAAS,CAAC;AACd,IAAI;EACF,SAAS,GAAG,GAAG,CAAC;CACjB,CAAC,MAAM,CAAC,EAAE;EACT,SAAS,GAAG,WAAW,EAAE,CAAC;CAC3B;;AAED,IAAI,aAAa,CAAC;AAClB,IAAI;EACF,aAAa,GAAG,OAAO,CAAC;CACzB,CAAC,MAAM,CAAC,EAAE;EACT,aAAa,GAAG,WAAW,EAAE,CAAC;CAC/B;;;;;;;;;;;;;;;;;;;;;;;AAuBD,SAAS,KAAK,CAAC,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,SAAS,EAAE,oBAAoB,EAAE;EACvE,IAAI,OAAO,QAAQ,KAAK,QAAQ,EAAE;IAChC,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC;IACvB,SAAS,GAAG,QAAQ,CAAC,SAAS,CAAC;IAC/B,oBAAoB,GAAG,QAAQ,CAAC,oBAAoB,CAAC;IACrD,QAAQ,GAAG,QAAQ,CAAC,QAAQ,CAAC;GAC9B;;;EAGD,IAAI,UAAU,GAAG,EAAE,CAAC;EACpB,IAAI,WAAW,GAAG,EAAE,CAAC;;EAErB,IAAI,SAAS,GAAG,OAAO,MAAM,IAAI,WAAW,CAAC;;EAE7C,IAAI,OAAO,QAAQ,IAAI,WAAW;IAChC,QAAQ,GAAG,IAAI,CAAC;;EAElB,IAAI,OAAO,KAAK,IAAI,WAAW;IAC7B,KAAK,GAAG,QAAQ,CAAC;;;EAGnB,SAAS,MAAM,CAAC,MAAM,EAAE,KAAK,EAAE;;IAE7B,IAAI,MAAM,KAAK,IAAI;MACjB,OAAO,IAAI,CAAC;;IAEd,IAAI,KAAK,KAAK,CAAC;MACb,OAAO,MAAM,CAAC;;IAEhB,IAAI,KAAK,CAAC;IACV,IAAI,KAAK,CAAC;IACV,IAAI,OAAO,MAAM,IAAI,QAAQ,EAAE;MAC7B,OAAO,MAAM,CAAC;KACf;;IAED,IAAI,WAAW,CAAC,MAAM,EAAE,SAAS,CAAC,EAAE;MAClC,KAAK,GAAG,IAAI,SAAS,EAAE,CAAC;KACzB,MAAM,IAAI,WAAW,CAAC,MAAM,EAAE,SAAS,CAAC,EAAE;MACzC,KAAK,GAAG,IAAI,SAAS,EAAE,CAAC;KACzB,MAAM,IAAI,WAAW,CAAC,MAAM,EAAE,aAAa,CAAC,EAAE;MAC7C,KAAK,GAAG,IAAI,aAAa,CAAC,UAAU,OAAO,EAAE,MAAM,EAAE;QACnD,MAAM,CAAC,IAAI,CAAC,SAAS,KAAK,EAAE;UAC1B,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC;SACnC,EAAE,SAAS,GAAG,EAAE;UACf,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC;SAChC,CAAC,CAAC;OACJ,CAAC,CAAC;KACJ,MAAM,IAAI,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE;MAClC,KAAK,GAAG,EAAE,CAAC;KACZ,MAAM,IAAI,KAAK,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE;MACnC,KAAK,GAAG,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAAC,MAAM,CAAC,CAAC,CAAC;MAC5D,IAAI,MAAM,CAAC,SAAS,EAAE,KAAK,CAAC,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC;KAC1D,MAAM,IAAI,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE;MACjC,KAAK,GAAG,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC;KACpC,MAAM,IAAI,SAAS,IAAI,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE;MAC/C,KAAK,GAAG,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;MAClC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;MACnB,OAAO,KAAK,CAAC;KACd,MAAM,IAAI,WAAW,CAAC,MAAM,EAAE,KAAK,CAAC,EAAE;MACrC,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;KAC/B,MAAM;MACL,IAAI,OAAO,SAAS,IAAI,WAAW,EAAE;QACnC,KAAK,GAAG,MAAM,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;QACtC,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;OAC9B;WACI;QACH,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;QACjC,KAAK,GAAG,SAAS,CAAC;OACnB;KACF;;IAED,IAAI,QAAQ,EAAE;MACZ,IAAI,KAAK,GAAG,UAAU,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;;MAEvC,IAAI,KAAK,IAAI,CAAC,CAAC,EAAE;QACf,OAAO,WAAW,CAAC,KAAK,CAAC,CAAC;OAC3B;MACD,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;MACxB,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;KACzB;;IAED,IAAI,WAAW,CAAC,MAAM,EAAE,SAAS,CAAC,EAAE;MAClC,MAAM,CAAC,OAAO,CAAC,SAAS,KAAK,EAAE,GAAG,EAAE;QAClC,IAAI,QAAQ,GAAG,MAAM,CAAC,GAAG,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC;QACtC,IAAI,UAAU,GAAG,MAAM,CAAC,KAAK,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC;QAC1C,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;OACjC,CAAC,CAAC;KACJ;IACD,IAAI,WAAW,CAAC,MAAM,EAAE,SAAS,CAAC,EAAE;MAClC,MAAM,CAAC,OAAO,CAAC,SAAS,KAAK,EAAE;QAC7B,IAAI,UAAU,GAAG,MAAM,CAAC,KAAK,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC;QAC1C,KAAK,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;OACvB,CAAC,CAAC;KACJ;;IAED,KAAK,IAAI,CAAC,IAAI,MAAM,EAAE;MACpB,IAAI,KAAK,CAAC;MACV,IAAI,KAAK,EAAE;QACT,KAAK,GAAG,MAAM,CAAC,wBAAwB,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;OACnD;;MAED,IAAI,KAAK,IAAI,KAAK,CAAC,GAAG,IAAI,IAAI,EAAE;QAC9B,SAAS;OACV;MACD,KAAK,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC;KACzC;;IAED,IAAI,MAAM,CAAC,qBAAqB,EAAE;MAChC,IAAI,OAAO,GAAG,MAAM,CAAC,qBAAqB,CAAC,MAAM,CAAC,CAAC;MACnD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;;;QAGvC,IAAI,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;QACxB,IAAI,UAAU,GAAG,MAAM,CAAC,wBAAwB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QACjE,IAAI,UAAU,IAAI,CAAC,UAAU,CAAC,UAAU,IAAI,CAAC,oBAAoB,EAAE;UACjE,SAAS;SACV;QACD,KAAK,CAAC,MAAM,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC;QAClD,IAAI,CAAC,UAAU,CAAC,UAAU,EAAE;UAC1B,MAAM,CAAC,cAAc,CAAC,KAAK,EAAE,MAAM,EAAE;YACnC,UAAU,EAAE,KAAK;WAClB,CAAC,CAAC;SACJ;OACF;KACF;;IAED,IAAI,oBAAoB,EAAE;MACxB,IAAI,gBAAgB,GAAG,MAAM,CAAC,mBAAmB,CAAC,MAAM,CAAC,CAAC;MAC1D,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,gBAAgB,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;QAChD,IAAI,YAAY,GAAG,gBAAgB,CAAC,CAAC,CAAC,CAAC;QACvC,IAAI,UAAU,GAAG,MAAM,CAAC,wBAAwB,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;QACvE,IAAI,UAAU,IAAI,UAAU,CAAC,UAAU,EAAE;UACvC,SAAS;SACV;QACD,KAAK,CAAC,YAAY,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC;QAC9D,MAAM,CAAC,cAAc,CAAC,KAAK,EAAE,YAAY,EAAE;UACzC,UAAU,EAAE,KAAK;SAClB,CAAC,CAAC;OACJ;KACF;;IAED,OAAO,KAAK,CAAC;GACd;;EAED,OAAO,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;CAC9B;;;;;;;;;AASD,KAAK,CAAC,cAAc,GAAG,SAAS,cAAc,CAAC,MAAM,EAAE;EACrD,IAAI,MAAM,KAAK,IAAI;IACjB,OAAO,IAAI,CAAC;;EAEd,IAAI,CAAC,GAAG,YAAY,EAAE,CAAC;EACvB,CAAC,CAAC,SAAS,GAAG,MAAM,CAAC;EACrB,OAAO,IAAI,CAAC,EAAE,CAAC;CAChB,CAAC;;;;AAIF,SAAS,UAAU,CAAC,CAAC,EAAE;EACrB,OAAO,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;CAC1C;AACD,KAAK,CAAC,UAAU,GAAG,UAAU,CAAC;;AAE9B,SAAS,QAAQ,CAAC,CAAC,EAAE;EACnB,OAAO,OAAO,CAAC,KAAK,QAAQ,IAAI,UAAU,CAAC,CAAC,CAAC,KAAK,eAAe,CAAC;CACnE;AACD,KAAK,CAAC,QAAQ,GAAG,QAAQ,CAAC;;AAE1B,SAAS,SAAS,CAAC,CAAC,EAAE;EACpB,OAAO,OAAO,CAAC,KAAK,QAAQ,IAAI,UAAU,CAAC,CAAC,CAAC,KAAK,gBAAgB,CAAC;CACpE;AACD,KAAK,CAAC,SAAS,GAAG,SAAS,CAAC;;AAE5B,SAAS,UAAU,CAAC,CAAC,EAAE;EACrB,OAAO,OAAO,CAAC,KAAK,QAAQ,IAAI,UAAU,CAAC,CAAC,CAAC,KAAK,iBAAiB,CAAC;CACrE;AACD,KAAK,CAAC,UAAU,GAAG,UAAU,CAAC;;AAE9B,SAAS,gBAAgB,CAAC,EAAE,EAAE;EAC5B,IAAI,KAAK,GAAG,EAAE,CAAC;EACf,IAAI,EAAE,CAAC,MAAM,EAAE,KAAK,IAAI,GAAG,CAAC;EAC5B,IAAI,EAAE,CAAC,UAAU,EAAE,KAAK,IAAI,GAAG,CAAC;EAChC,IAAI,EAAE,CAAC,SAAS,EAAE,KAAK,IAAI,GAAG,CAAC;EAC/B,OAAO,KAAK,CAAC;CACd;AACD,KAAK,CAAC,gBAAgB,GAAG,gBAAgB,CAAC;;AAE1C,OAAO,KAAK,CAAC;CACZ,GAAG,CAAC;;AAEL,IAAI,QAAa,KAAK,QAAQ,IAAI,MAAM,CAAC,OAAO,EAAE;EAChD,cAAc,GAAG,KAAK,CAAC;CACxB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ICnPYC,SAAb;;;;sCAeoB;aACT;oBACO,KAAKC,KAAL,CAAWC;OADzB;;;;qBAKUD,KAAZ,EAAmB;;;qHACXA,KADW;;UAfnBE,KAemB,GAfX;eACG,KADH;mBAEO;KAaI;;UAInBC,KAJmB,GAIX,YAAM;mBACC,MAAKC,cAAlB;YACKC,QAAL,CAAc,EAACC,SAAS,IAAV,EAAgBC,aAAa,IAA7B,EAAd;KANiB;;UASnBC,OATmB,GAST,YAAM;YACTH,QAAL,CAAc,EAACC,SAAS,KAAV,EAAd;YACKF,cAAL,GAAsBK,WAAW;eAAM,MAAKJ,QAAL,CAAc,EAACE,aAAa,KAAd,EAAd,CAAN;OAAX,EAAsD,GAAtD,CAAtB;KAXiB;;;;;;;oCAcHP,KAnClB,EAmCyB;aACd;;2BAEYA,MAAMC,KAArB,eADF;kBAEUD,MAAMU,MAAN,KAAiB,MAAjB,GAA0B,MAA1B,aAA2CV,MAAMU,MAAjD,eAFV;0BAGgB,CAACV,MAAMC,KAAP,GAAe,CAA7B;WACID,MAAMW,SAAN,KAAoB,MAApB,IAA8BX,MAAMW,SAAN,KAAoB,OAAlD,GAA4D;yBACjD,CAACX,MAAMU,MAAP,GAAgB,CAA7B;SADE,GAEA,EANN;OADF;;;;gCAYO;mBACwB,KAAKR,KAD7B;UACAI,OADA,UACAA,OADA;UACSC,WADT,UACSA,WADT;UAEAI,SAFA,GAEa,KAAKX,KAFlB,CAEAW,SAFA;;;UAIDC,SAAS,KAAKC,eAAL,CAAqB,KAAKb,KAA1B,CAAf;;aAGE;;;qBACac,WAAGC,MAAMhB,SAAT,EAAoBgB,qBAAmBJ,SAAnB,CAApB;;;;;yBAGI,KAAKR,KADpB;wBAEc,KAAKK,OAFnB;uBAIIM,WAAGC,MAAMC,MAAT,EAAiB;sBACPV;aADV;;eAKIN,KAAL,CAAWgB;SAZhB;;;;yBAeiB,KAAKb,KADpB;wBAEc,KAAKK,OAFnB;uBAIIM,WAAGC,MAAME,OAAT,EAAkB;sBACRX;aADV,CAJJ;;gCAUOM,OAAOK,OADZ;0BAEcV,cAAc,EAAd,GAAmB;;;eAG3BP,KAAL,CAAWkB;;OA7BlB;;;;EAtD2BC,SAA/B;AAAapB,UACJqB,eAAe;SACb,GADa;UAEZ;;AAHCrB,UAWJsB,oBAAoB;cACbC,UAAUC;;;;;;;ACb1B,IAAMC,YAAYC,SAASC,aAAT,CAAuB,KAAvB,CAAlB;AACAF,UAAUT,KAAV,CAAgBY,QAAhB,GAA2B,UAA3B;AACAH,UAAUT,KAAV,CAAgBa,IAAhB,GAAuB,WAAvB;AACAH,SAASI,IAAT,CAAcC,WAAd,CAA0BN,SAA1B;;AAEA,IAAMO,UAAU,SAAVA,OAAU,CAACC,OAAD,EAAa;MACrBC,gBAAgBR,SAASC,aAAT,CAAuB,KAAvB,CAAtB;YACUI,WAAV,CAAsBG,aAAtB;;SAEO,IAAIC,OAAJ,CAAY,mBAAW;WACrBF,OAAP,EAAgBC,aAAhB,EAA+B,YAAM;cAC3B;eACCA,cAAcE,UAAd,CAAyBC,WAD1B;gBAEEH,cAAcE,UAAd,CAAyBE;OAFnC;KADF;GADK,CAAP;CAJF;;AAcA,IAAaC,UAAb;;;sBACctC,KAAZ,EAAmBuC,OAAnB,EAA4B;;;uHACpBvC,KADoB,EACbuC,OADa;;UAGrBC,KAAL,GAAa,EAAb;UACKC,IAAL,GAAY,EAAZ;;UAEKC,YAAL;;;;;;mCAGa;;;WACRC,KAAL,GAAa,KAAK3C,KAAL,CAAWkB,QAAX,CAAoB0B,MAApB,GAA6B,KAAK5C,KAAL,CAAW6C,QAArD;;WAEK3B,QAAL,GAAgB,KAAKlB,KAAL,CAAWkB,QAAX,CAAoB4B,GAApB,CAAwB,UAACC,SAAD,EAAe;eAChDN,IAAL,CAAUO,IAAV,CAAejB,QAAQgB,SAAR,CAAf;eACOE,MAAMC,YAAN,CAAmBH,SAAnB,CAAP;OAFc,CAAhB;;cAKQI,GAAR,CAAY,KAAKV,IAAjB,EAAuBW,IAAvB,CAA4B,UAACZ,KAAD,EAAW;eAChCA,KAAL,GAAaA,KAAb;eACKa,WAAL;OAFF;;;;gCAcO;UACAR,QADA,GACY,KAAK7C,KADjB,CACA6C,QADA;UAEA3B,QAFA,GAE0B,IAF1B,CAEAA,QAFA;UAEUsB,KAFV,GAE0B,IAF1B,CAEUA,KAFV;UAEiBG,KAFjB,GAE0B,IAF1B,CAEiBA,KAFjB;;;UAIHH,MAAMI,MAAN,GAAe,CAAnB,EAAsB,OAAO,IAAP;;UAEhB3C,QAAQ,KAAKsC,OAAL,CAAae,UAAb,IAA2B,GAAzC;;UAEIpC,SAAS0B,MAAT,GAAkBC,QAAlB,KAA+B,CAAnC,EAAsC;YAC9BU,cAAcf,MACjBgB,KADiB,CACX,CAACb,KADU,EAEjBc,MAFiB,CAEV,UAACC,IAAD;cAAQzD,KAAR,QAAQA,KAAR;iBAAmByD,OAAOzD,KAAP,GAAe,EAAlC;SAFU,EAE4B,CAF5B,CAApB;;YAIM0D,SAAS,CAAC1D,QAAQ4C,YAAYU,cAAcZ,KAA1B,CAAT,IAA8CE,QAA7D;;iBAESG,IAAT,CACE;iBACS;mBACG/C,QAAQsD,WAAT,GAAwBI,SAASd;;UAH9C;;;aAUA;;;qBACa9B,QAAMuB,UADnB;iBAES,EAACrC,iBAAeA,KAAf,eAAD;;iBAEG6C,GAAT,CAAa,UAACc,KAAD,EAAQC,CAAR;iBACZ;;cAAK,KAAKA,CAAV,EAAa,WAAWA,MAAM3C,SAAS0B,MAAT,GAAkB,CAAxB,IAA6BD,QAAQ,CAArC,GAAyC5B,QAAM+C,WAA/C,GAA6D/C,QAAMgD,IAA3F;;WADY;SAAb;OALL;;;;EAxD4B5C,SAAhC;AAAamB,WAwBJlB,eAAe;YACV;;AAzBDkB,WA4BJ0B,eAAe;cACR1C,UAAUC;;;ICpDb0C,SAAb;;;;;;;;;;gCACW;aAEL;;UAAK,OAAO,EAACC,SAAS,SAAV,EAAZ;;;;eACclE,KAAL,CAAWkB;;OAFtB;;;;EAF2BC,SAA/B;;;;"}
--------------------------------------------------------------------------------
/examples/.babelrc:
--------------------------------------------------------------------------------
1 | {
2 | "presets": [
3 | ["es2015"]
4 | ]
5 | }
6 |
--------------------------------------------------------------------------------
/examples/css/style.css:
--------------------------------------------------------------------------------
1 | @import url('https://fonts.googleapis.com/css?family=Oxygen');
2 |
3 | body {
4 | background: #F0CA4D;
5 | margin: 0;
6 | padding: 0;
7 | }
8 |
9 | .centered {
10 | position: absolute;
11 | left: calc(50% - 15px);
12 | top: 30%;
13 | }
14 |
15 | #sidebar {
16 | background: transparent;
17 | position: fixed;
18 | width: 100%;
19 | height: 120px;
20 | left: 0;
21 | padding: 50px 60px;
22 | /* border-top: 6px solid #3e3e3e0d; */
23 | z-index: 1;
24 | bottom: 0;
25 | }
26 |
27 | #sidebar ul {
28 | padding: 0;
29 | list-style: none;
30 | width: 230px;
31 | }
32 |
33 | #sidebar li {
34 | background: #F0CA4D;
35 | padding: 5px 10px;
36 | border-radius: 5px;
37 | transition: all 0.3s linear;
38 | }
39 |
40 | #sidebar li:hover {
41 | background: #f0b64d;
42 | }
43 |
44 | #sidebar a {
45 | color: white;
46 | text-decoration: none;
47 | font-family: 'Oxygen', sans-serif;
48 | font-size: 16pt;
49 | line-height: 2;
50 | letter-spacing: 0.3px;
51 | }
52 |
53 | #sidebar a:before {
54 | content: "[/]";
55 | text-shadow: 1px 1px rgba(0,0,0,0.2);
56 | vertical-align: text-bottom;
57 | display: inline;
58 | color: #eee;
59 | font-size: 10pt;
60 | padding-right: 10px;
61 | }
62 |
63 | #sidebar a:after {
64 | content: " (class)";
65 | text-shadow: 0.5px 0.5px #aaa;
66 | color: #333333;
67 | font-size: 12pt;
68 | padding-left: 10px;
69 | }
70 |
71 | iframe {
72 | border: none;
73 | position: fixed;
74 | top: 0;
75 | right: 0;
76 | left: 0;
77 | height: calc(100% - 220px);
78 | width: 100%;
79 | }
80 |
--------------------------------------------------------------------------------
/examples/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
--------------------------------------------------------------------------------
/examples/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "examples",
3 | "version": "1.0.0",
4 | "description": "",
5 | "main": "index.js",
6 | "scripts": {
7 | "test": "echo \"Error: no test specified\" && exit 1"
8 | },
9 | "author": "",
10 | "license": "ISC",
11 | "devDependencies": {
12 | "babel-loader": "^7.1.2",
13 | "babel-preset-react": "^6.24.1",
14 | "babel-register": "^6.26.0",
15 | "express": "^4.16.2",
16 | "webpack": "^3.11.0",
17 | "webpack-dev-server": "^2.11.1"
18 | },
19 | "dependencies": {
20 | "font-awesome": "^4.7.0"
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/examples/popup_table.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
--------------------------------------------------------------------------------
/examples/popup_text.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
--------------------------------------------------------------------------------
/examples/src/.babelrc:
--------------------------------------------------------------------------------
1 | {
2 | "presets": [
3 | ["es2015", {"modules": false}],
4 | "react"
5 | ],
6 | "plugins": [
7 | "transform-class-properties",
8 | "transform-object-rest-spread"
9 | ]
10 | }
11 |
--------------------------------------------------------------------------------
/examples/src/index.js:
--------------------------------------------------------------------------------
1 | import React, {Fragment} from 'react';
2 | import ReactDOM from 'react-dom';
3 | import FontAwesome from 'react-fontawesome';
4 | import {PopupMenu, PopupTable} from 'react-rectangle-popup-menu';
5 |
6 | import 'font-awesome/css/font-awesome.css';
7 |
8 | const button = ();
9 |
10 | const Application = () => (
11 |
12 |
18 |
19 |
20 | );
21 |
22 | window.addEventListener('load', () => {
23 | const iframe = document.querySelector('iframe');
24 |
25 | for (let link of document.querySelectorAll('a.link')) {
26 | link.addEventListener('click', (e) => {
27 | iframe.src = e.target.href.replace('#', '') + '.html';
28 | })
29 | }
30 | })
31 |
32 | ReactDOM.render(
33 | ,
34 | document.getElementById('app')
35 | )
36 |
--------------------------------------------------------------------------------
/examples/src/popup_table.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import ReactDOM from 'react-dom';
3 | import FontAwesome from 'react-fontawesome';
4 | import {PopupMenu, PopupTable} from 'react-rectangle-popup-menu';
5 |
6 | import 'font-awesome/css/font-awesome.css';
7 |
8 | const button = ();
9 |
10 | const Application = () => (
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 | );
31 |
32 | ReactDOM.render(
33 | ,
34 | document.getElementById('app')
35 | )
36 |
--------------------------------------------------------------------------------
/examples/src/popup_text.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import ReactDOM from 'react-dom';
3 | import FontAwesome from 'react-fontawesome';
4 | import {PopupMenu, PopupText} from 'react-rectangle-popup-menu';
5 |
6 | import 'font-awesome/css/font-awesome.css';
7 |
8 | const button = ();
9 |
10 | const Application = () => (
11 |
12 |
13 | Some text
14 |
15 |
16 | );
17 |
18 | ReactDOM.render(
19 | ,
20 | document.getElementById('app')
21 | )
22 |
--------------------------------------------------------------------------------
/examples/webpack.config.babel.js:
--------------------------------------------------------------------------------
1 | import path from 'path';
2 | import express from 'express';
3 | import webpack from 'webpack';
4 |
5 | export default {
6 | entry: {
7 | index: './src/index.js',
8 | popup_table: './src/popup_table.js',
9 | popup_text: './src/popup_text.js'
10 | },
11 |
12 | output: {
13 | filename: '[name].bundle.js',
14 | path: path.resolve(__dirname, './bundle/')
15 | },
16 |
17 | module: {
18 | rules: [
19 | {
20 | test: /\.js$/,
21 | exclude: /(node_modules|bower_components)/,
22 | use: {
23 | loader: 'babel-loader'
24 | }
25 | },
26 | {
27 | test: /\.css$/,
28 | use: [ 'style-loader', 'css-loader' ]
29 | },
30 | {
31 | test: /\.(eot|svg|ttf|woff|woff2)$/,
32 | use: [ 'url-loader' ]
33 | }
34 | ]
35 | },
36 |
37 | externals: {
38 | 'react-rectangle-popup-menu': 'window.ReactRectanglePopupMenu',
39 | react: 'window.React',
40 | 'react-dom': 'window.ReactDOM'
41 | },
42 |
43 | plugins: [
44 | new webpack.DefinePlugin({
45 | 'process.env.NODE_ENV': JSON.stringify('development')
46 | })
47 | ],
48 |
49 | devServer: {
50 | contentBase: './',
51 | publicPath: '/build',
52 | port: 8080,
53 | before(app, server) {
54 | app.use('/build', express.static(path.resolve(__dirname, '../build/')))
55 | }
56 | }
57 | };
58 |
--------------------------------------------------------------------------------
/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "react-rectangle-popup-menu",
3 | "version": "0.0.1",
4 | "description": "React rectangle popup menu component library",
5 | "main": "build/rrpm.js",
6 | "module": "build/rrpm.module.js",
7 | "scripts": {
8 | "build": "rollup -c rollup.config.babel.js",
9 | "watch": "rollup -c rollup.config.babel.js -w",
10 | "examples:build": "cd \"./examples\" && \"./node_modules/.bin/webpack\"",
11 | "examples:watch": "cd \"./examples\" && \"./node_modules/.bin/webpack-dev-server\"",
12 | "start": "(npm run watch & npm run examples:watch)",
13 | "test": "jest --no-cache"
14 | },
15 | "repository": {
16 | "type": "git",
17 | "url": "git+https://github.com/sasha240100/react-rectangle-popup-menu.git"
18 | },
19 | "keywords": [
20 | "react",
21 | "component",
22 | "library",
23 | "popup",
24 | "menu"
25 | ],
26 | "author": "Alexander Buzin",
27 | "license": "MIT",
28 | "bugs": {
29 | "url": "https://github.com/sasha240100/react-rectangle-popup-menu/issues"
30 | },
31 | "homepage": "https://github.com/sasha240100/react-rectangle-popup-menu#readme",
32 | "dependencies": {
33 | "clone": "^2.1.1",
34 | "prop-types": "^15.6.0",
35 | "react": "^16.2.0",
36 | "react-dom": "^16.2.0",
37 | "react-fontawesome": "^1.6.1"
38 | },
39 | "devDependencies": {
40 | "babel-cli": "^6.26.0",
41 | "babel-jest": "^22.4.0",
42 | "babel-plugin-external-helpers": "^6.22.0",
43 | "babel-plugin-transform-class-properties": "^6.24.1",
44 | "babel-plugin-transform-object-rest-spread": "^6.26.0",
45 | "babel-preset-es2015": "^6.24.1",
46 | "babel-preset-react": "^6.24.1",
47 | "babel-register": "^6.26.0",
48 | "classnames": "^2.2.5",
49 | "css-loader": "^0.28.9",
50 | "jest": "^22.4.0",
51 | "node-sass": "^4.7.2",
52 | "postcss-scss": "^1.0.3",
53 | "react-test-renderer": "^16.2.0",
54 | "rollup": "^0.56.2",
55 | "rollup-plugin-babel": "^3.0.3",
56 | "rollup-plugin-commonjs": "^8.3.0",
57 | "rollup-plugin-node-resolve": "^3.0.3",
58 | "rollup-plugin-postcss": "^1.2.8",
59 | "rollup-plugin-replace": "^2.0.0",
60 | "rollup-plugin-serve": "^0.4.2",
61 | "rollup-watch": "^4.3.1",
62 | "style-loader": "^0.20.2",
63 | "url-loader": "^0.6.2"
64 | }
65 | }
66 |
--------------------------------------------------------------------------------
/rollup.config.babel.js:
--------------------------------------------------------------------------------
1 | import path from 'path';
2 | import babel from 'rollup-plugin-babel';
3 | import resolve from 'rollup-plugin-node-resolve';
4 | import commonjs from 'rollup-plugin-commonjs';
5 | import replace from 'rollup-plugin-replace';
6 | import postcss from 'rollup-plugin-postcss';
7 |
8 |
9 | export default {
10 | input: './src/index.js',
11 | moduleName: 'ReactRectanglePopupMenu',
12 | sourcemap: true,
13 |
14 | // output: {
15 | // file: './build/rrpm.js',
16 | // format: 'umd',
17 | // name: 'ReactRectanglePopupMenu',
18 | // sourcemap: true
19 | // },
20 |
21 | targets: [
22 | {
23 | dest: './build/rrpm.js',
24 | format: 'umd'
25 | },
26 | {
27 | dest: 'build/rrpm.module.js',
28 | format: 'es'
29 | }
30 | ],
31 |
32 | plugins: [
33 | postcss({
34 | modules: true
35 | }),
36 | babel({
37 | exclude: 'node_modules/**'
38 | }),
39 | replace({
40 | 'process.env.NODE_ENV': JSON.stringify('development')
41 | }),
42 | resolve(),
43 | commonjs()
44 | ],
45 |
46 | external: ['react', 'react-dom'],
47 |
48 | globals: {
49 | react: 'React',
50 | 'react-dom': 'ReactDOM'
51 | }
52 | };
53 |
--------------------------------------------------------------------------------
/src/.babelrc:
--------------------------------------------------------------------------------
1 | {
2 | "presets": [
3 | ["es2015", {"modules": false}],
4 | "react"
5 | ],
6 | "plugins": [
7 | "transform-class-properties",
8 | "transform-object-rest-spread",
9 | "external-helpers"
10 | ]
11 | }
12 |
--------------------------------------------------------------------------------
/src/PopupMenu.js:
--------------------------------------------------------------------------------
1 | import React, {Component} from 'react';
2 | import PropTypes from 'prop-types';
3 | import cx from 'classnames';
4 | import clone from 'clone';
5 |
6 | import style from './PopupMenu.scss';
7 |
8 | export class PopupMenu extends Component {
9 | static defaultProps = {
10 | width: 200,
11 | height: 'auto'
12 | };
13 |
14 | state = {
15 | hovered: false,
16 | displayable: false
17 | };
18 |
19 | static childContextTypes = {
20 | popupWidth: PropTypes.number
21 | };
22 |
23 | getChildContext() {
24 | return {
25 | popupWidth: this.props.width
26 | };
27 | }
28 |
29 | constructor(props) {
30 | super(props);
31 | }
32 |
33 | hover = () => {
34 | clearTimeout(this._diplayTimeout);
35 | this.setState({hovered: true, displayable: true});
36 | };
37 |
38 | unhover = () => {
39 | this.setState({hovered: false});
40 | this._diplayTimeout = setTimeout(() => this.setState({displayable: false}), 500);
41 | };
42 |
43 | configureStyles(props) {
44 | return {
45 | popover: {
46 | width: `calc(${props.width}px - 10px)`,
47 | height: props.height === 'auto' ? 'auto' : `calc(${props.height}px - 10px)`,
48 | left: `calc(${-props.width / 2}px + 50%)`,
49 | ...(props.direction === 'left' || props.direction === 'right' ? {
50 | top: `calc(${-props.height / 2}px + 50%)`
51 | } : {})
52 | }
53 | };
54 | }
55 |
56 | render() {
57 | const {hovered, displayable} = this.state;
58 | const {direction} = this.props;
59 |
60 | const styles = this.configureStyles(this.props);
61 |
62 | return (
63 |
66 |
75 | {this.props.button}
76 |
77 |
91 | {this.props.children}
92 |
93 |
94 | )
95 | }
96 | }
97 |
--------------------------------------------------------------------------------
/src/PopupMenu.scss:
--------------------------------------------------------------------------------
1 | .PopupMenu {
2 | position: relative;
3 | }
4 |
5 | .button {
6 | padding: 5px;
7 | border-radius: 2px;
8 | width: 30px;
9 | height: 30px;
10 | transition: background 0.25s ease-in-out;
11 |
12 | &:hover, &:global(.active) {
13 | background: rgba(0,0,0,0.1);
14 | }
15 | }
16 |
17 | .popover {
18 | background: white;
19 | position: absolute;
20 | width: calc(200px - 10px);
21 | height: calc(200px - 10px);
22 | left: calc(-100px + 50%);
23 | top: 60px;
24 | border-radius: 5px;
25 | box-shadow: 0 5px 10px rgba(0, 0, 0, 0.1);
26 | transition: opacity 0.5s ease-in-out;
27 | opacity: 0;
28 | padding: 5px;
29 | z-index: 1;
30 |
31 | &:global(.active) {
32 | opacity: 1;
33 | }
34 |
35 | &:hover + .button {
36 | background: rgba(0,0,0,0.1);
37 | }
38 |
39 | &:before {
40 | content: "";
41 | position: absolute;
42 | display: block;
43 | top: -20px;
44 | left: calc(50% - 10px);
45 | border: 10px solid white;
46 | border-color: transparent transparent white transparent;
47 | }
48 | }
49 |
50 | .direction-top {
51 | .popover {
52 | top: auto;
53 | bottom: 60px;
54 |
55 | &:before {
56 | top: auto;
57 | bottom: -20px;
58 | border-color: white transparent transparent transparent;
59 | }
60 | }
61 | }
62 |
63 | .direction-left {
64 | .popover {
65 | top: -100px;
66 | left: auto !important;
67 | right: 60px;
68 |
69 | &:before {
70 | left: auto;
71 | right: -20px;
72 | top: calc(50% - 10px);
73 | border-color: transparent transparent transparent white;
74 | }
75 | }
76 | }
77 |
78 | .direction-right {
79 | .popover {
80 | top: -100px;
81 | right: auto !important;
82 | left: 60px !important;
83 |
84 | &:before {
85 | right: auto;
86 | left: -20px;
87 | top: calc(50% - 10px);
88 | border-color: transparent white transparent transparent;
89 | }
90 | }
91 | }
92 |
--------------------------------------------------------------------------------
/src/PopupTable.js:
--------------------------------------------------------------------------------
1 | import React, {Component} from 'react';
2 | import {render} from 'react-dom';
3 | import PropTypes from 'prop-types';
4 |
5 | import style from './PopupTable.scss';
6 |
7 | const container = document.createElement('div');
8 | container.style.position = 'absolute';
9 | container.style.left = '-999999px';
10 | document.body.appendChild(container);
11 |
12 | const getSize = (element) => {
13 | const elementParent = document.createElement('div');
14 | container.appendChild(elementParent);
15 |
16 | return new Promise(resolve => {
17 | render(element, elementParent, () => {
18 | resolve({
19 | width: elementParent.firstChild.offsetWidth,
20 | height: elementParent.firstChild.offsetHeight
21 | });
22 | })
23 | });
24 | }
25 |
26 | export class PopupTable extends Component {
27 | constructor(props, context) {
28 | super(props, context);
29 |
30 | this.sizes = [];
31 | this.wait = [];
32 |
33 | this.updateLayout();
34 | }
35 |
36 | updateLayout() {
37 | this.items = this.props.children.length % this.props.rowItems;
38 |
39 | this.children = this.props.children.map((component) => {
40 | this.wait.push(getSize(component));
41 | return React.cloneElement(component);
42 | });
43 |
44 | Promise.all(this.wait).then((sizes) => {
45 | this.sizes = sizes;
46 | this.forceUpdate();
47 | });
48 | }
49 |
50 | static defaultProps = {
51 | rowItems: 1
52 | };
53 |
54 | static contextTypes = {
55 | popupWidth: PropTypes.number
56 | };
57 |
58 | render() {
59 | const {rowItems} = this.props;
60 | const {children, sizes, items} = this;
61 |
62 | if (sizes.length < 1) return null;
63 |
64 | const width = this.context.popupWidth || 200;
65 |
66 | if (children.length % rowItems !== 0) {
67 | const contentSize = sizes
68 | .slice(-items)
69 | .reduce((size, {width}) => size + width + 10, 0);
70 |
71 | const margin = (width - rowItems * (contentSize / items)) / (rowItems);
72 |
73 | children.push(
74 |
79 | );
80 | }
81 |
82 | return (
83 |
87 | {children.map((child, i) => (
88 |
0 ? style.placeholder : style.item}>
89 | {child}
90 |
91 | ))}
92 |
93 | );
94 | }
95 | }
96 |
--------------------------------------------------------------------------------
/src/PopupTable.scss:
--------------------------------------------------------------------------------
1 | .PopupTable {
2 | display: flex;
3 | flex-direction: row;
4 | justify-content: space-around;
5 | width: calc(200px - 10px);
6 | flex-flow: row wrap;
7 | // align-content: flex-start;
8 | }
9 |
10 | .item {
11 | padding: 5px;
12 | border-radius: 2px;
13 | transition: background 0.15s ease-in-out;
14 |
15 | &:hover {
16 | background: rgba(0,0,0,0.1);
17 | }
18 | }
19 |
20 | .placeholder {
21 | padding: 0px;
22 | height: 10px;
23 | display: block;
24 | border-radius: 2px;
25 | visibility: hidden;
26 | }
27 |
--------------------------------------------------------------------------------
/src/PopupText.js:
--------------------------------------------------------------------------------
1 | import React, {Component} from 'react';
2 |
3 | export class PopupText extends Component {
4 | render() {
5 | return (
6 |
7 | {this.props.children}
8 |
9 | )
10 | }
11 | }
12 |
--------------------------------------------------------------------------------
/src/index.js:
--------------------------------------------------------------------------------
1 | export * from './PopupMenu';
2 | export * from './PopupTable';
3 | export * from './PopupText';
4 |
--------------------------------------------------------------------------------
/test/.babelrc:
--------------------------------------------------------------------------------
1 | {
2 | "presets": ["es2015", "react"],
3 | "plugins": [
4 | "transform-class-properties",
5 | "transform-object-rest-spread"
6 | ]
7 | }
8 |
--------------------------------------------------------------------------------
/test/PopupMenu.test.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import {PopupMenu} from '../build/rrpm.module';
3 | import renderer from 'react-test-renderer';
4 |
5 | describe('PopupMenu', () => {
6 | const component = renderer.create(
7 |
8 | );
9 |
10 | let tree;
11 |
12 | it('should render correctly', () => {
13 | tree = component.toJSON();
14 | expect(tree).toMatchSnapshot();
15 | });
16 |
17 | // Hover button
18 | it('should respond to mouse hover', () => {
19 | tree.children[0].props.onMouseOver();
20 | tree = component.toJSON();
21 | expect(tree).toMatchSnapshot();
22 | });
23 |
24 | // Unhover button
25 | it('should respond to mouse unhover', () => {
26 | tree.children[0].props.onMouseOut();
27 | tree = component.toJSON();
28 | expect(tree).toMatchSnapshot();
29 | });
30 | });
31 |
--------------------------------------------------------------------------------
/test/PopupTable.test.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import {PopupMenu, PopupTable} from '../build/rrpm.module';
3 | import renderer from 'react-test-renderer';
4 |
5 | test('PopupTable', () => {
6 | const component = renderer.create(
7 |
8 |
9 | 1
10 | 2
11 | 3
12 | 4
13 |
14 |
15 | );
16 |
17 | let tree = component.toJSON();
18 | expect(tree).toMatchSnapshot();
19 | });
20 |
--------------------------------------------------------------------------------
/test/PopupText.test.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import {PopupMenu, PopupText} from '../build/rrpm.module';
3 | import renderer from 'react-test-renderer';
4 |
5 | test('PopupTable', () => {
6 | const component = renderer.create(
7 |
8 | Test
9 |
10 | );
11 |
12 | let tree = component.toJSON();
13 | expect(tree).toMatchSnapshot();
14 | });
15 |
--------------------------------------------------------------------------------
/test/__snapshots__/PopupMenu.test.js.snap:
--------------------------------------------------------------------------------
1 | // Jest Snapshot v1, https://goo.gl/fbAQLP
2 |
3 | exports[`PopupMenu should render correctly 1`] = `
4 |
26 | `;
27 |
28 | exports[`PopupMenu should respond to mouse hover 1`] = `
29 |
51 | `;
52 |
53 | exports[`PopupMenu should respond to mouse unhover 1`] = `
54 |
76 | `;
77 |
--------------------------------------------------------------------------------
/test/__snapshots__/PopupTable.test.js.snap:
--------------------------------------------------------------------------------
1 | // Jest Snapshot v1, https://goo.gl/fbAQLP
2 |
3 | exports[`PopupTable 1`] = `
4 |
7 |
12 |
25 |
33 |
36 |
37 | 1
38 |
39 |
40 |
43 |
44 | 2
45 |
46 |
47 |
50 |
51 | 3
52 |
53 |
54 |
57 |
58 | 4
59 |
60 |
61 |
62 |
63 |
64 | `;
65 |
--------------------------------------------------------------------------------
/test/__snapshots__/PopupText.test.js.snap:
--------------------------------------------------------------------------------
1 | // Jest Snapshot v1, https://goo.gl/fbAQLP
2 |
3 | exports[`PopupTable 1`] = `
4 |
7 |
12 |
25 |
32 |
33 | Test
34 |
35 |
36 |
37 |
38 | `;
39 |
--------------------------------------------------------------------------------