react-input-emoji 4.2.0 → 4.3.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -1 +1 @@
1
- {"version":3,"file":"index.es.js","sources":["../node_modules/style-inject/dist/style-inject.es.js","../src/utils/emoji-utils.js","../src/utils/input-event-utils.js","../src/hooks/use-sanitize.js","../src/hooks/use-expose.js","../src/hooks/use-emit.js","../src/text-input.js","../node_modules/@babel/runtime/helpers/esm/classCallCheck.js","../node_modules/@babel/runtime/helpers/esm/createClass.js","../node_modules/@babel/runtime/helpers/esm/typeof.js","../node_modules/emoji-mart/dist-es/utils/data.js","../node_modules/emoji-mart/dist-es/polyfills/stringFromCodePoint.js","../node_modules/emoji-mart/dist-es/utils/index.js","../node_modules/emoji-mart/dist-es/utils/store.js","../node_modules/emoji-mart/dist-es/utils/emoji-index/nimble-emoji-index.js","../node_modules/emoji-mart/dist-es/utils/emoji-index/emoji-index.js","../node_modules/emoji-mart/dist-es/utils/frequently.js","../node_modules/@babel/runtime/helpers/esm/defineProperty.js","../node_modules/@babel/runtime/helpers/esm/extends.js","../node_modules/@babel/runtime/helpers/esm/assertThisInitialized.js","../node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js","../node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js","../node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","../node_modules/@babel/runtime/helpers/esm/inherits.js","../node_modules/emoji-mart/dist-es/svgs/index.js","../node_modules/emoji-mart/dist-es/utils/shared-props.js","../node_modules/emoji-mart/dist-es/components/anchors.js","../node_modules/emoji-mart/dist-es/utils/shared-default-props.js","../node_modules/emoji-mart/dist-es/components/emoji/nimble-emoji.js","../node_modules/emoji-mart/dist-es/components/not-found.js","../node_modules/emoji-mart/dist-es/components/category.js","../node_modules/emoji-mart/dist-es/components/skins.js","../node_modules/emoji-mart/dist-es/components/skins-emoji.js","../node_modules/emoji-mart/dist-es/components/skins-dot.js","../node_modules/emoji-mart/dist-es/components/preview.js","../node_modules/emoji-mart/dist-es/components/search.js","../node_modules/emoji-mart/dist-es/components/picker/nimble-picker.js","../node_modules/emoji-mart/dist-es/components/picker/picker.js","../node_modules/emoji-mart/dist-es/components/emoji/emoji.js","../src/components/emoji-picker.js","../src/components/emoji-picker-wrapper.js","../src/utils/mention-utils.js","../src/hooks/use-mention.js","../src/components/mention-user-list.js","../src/components/mention-wrapper.js","../src/utils/observer.js","../src/hooks/use-event-listeners.js","../src/hooks/user-pollute.js","../src/index.js"],"sourcesContent":["function styleInject(css, ref) {\n if ( ref === void 0 ) ref = {};\n var insertAt = ref.insertAt;\n\n if (!css || typeof document === 'undefined') { return; }\n\n var head = document.head || document.getElementsByTagName('head')[0];\n var style = document.createElement('style');\n style.type = 'text/css';\n\n if (insertAt === 'top') {\n if (head.firstChild) {\n head.insertBefore(style, head.firstChild);\n } else {\n head.appendChild(style);\n }\n } else {\n head.appendChild(style);\n }\n\n if (style.styleSheet) {\n style.styleSheet.cssText = css;\n } else {\n style.appendChild(document.createTextNode(css));\n }\n}\n\nexport default styleInject;\n","// @ts-check\n\nexport const TRANSPARENT_GIF =\n \"data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7\";\n\n/**\n * Replace all text with emoji with an image html tag\n * @param {string} text\n * @return {string}\n */\nexport function replaceAllTextEmojis(text) {\n let allEmojis = getAllEmojisFromText(text);\n\n // TODO: get all emoji style\n const allEmojiStyle = {};\n\n if (allEmojis) {\n allEmojis = [...new Set(allEmojis)]; // remove duplicates\n\n allEmojis.forEach(emoji => {\n const style = allEmojiStyle[emoji];\n\n if (!style) return;\n\n text = replaceAll(\n text,\n emoji,\n `<img\n style=\"${style}\"\n data-emoji=\"${emoji}\"\n src=\"${TRANSPARENT_GIF}\"\n />`\n );\n });\n }\n\n return text;\n}\n\n/**\n * Replace all occurrencies in a string\n * @param {string} str\n * @param {string} find\n * @param {string} replace\n * @return {string}\n */\nfunction replaceAll(str, find, replace) {\n return str.replace(new RegExp(find, \"g\"), replace);\n}\n\n/**\n * Get all emojis from the text\n * @param {string} text\n * @return {string[]}\n */\nfunction getAllEmojisFromText(text) {\n return text.match(\n /(?:[\\u2700-\\u27bf]|(?:\\ud83c[\\udde6-\\uddff]){2}|[\\ud800-\\udbff][\\udc00-\\udfff])[\\ufe0e\\ufe0f]?(?:[\\u0300-\\u036f\\ufe20-\\ufe23\\u20d0-\\u20f0]|\\ud83c[\\udffb-\\udfff])?(?:\\u200d(?:[^\\ud800-\\udfff]|(?:\\ud83c[\\udde6-\\uddff]){2}|[\\ud800-\\udbff][\\udc00-\\udfff])[\\ufe0e\\ufe0f]?(?:[\\u0300-\\u036f\\ufe20-\\ufe23\\u20d0-\\u20f0]|\\ud83c[\\udffb-\\udfff])?)*/g\n );\n}\n\n// /**\n// * Get all emoji stlye from emoji mart\n// * @return {Object.<string, string>}\n// */\n// function getAllEmojiStyle() {\n// /** @type {NodeListOf<Element>} */\n// const allEmojiButton = Array.prototype.slice.call(\n// document.querySelectorAll(\".emoji-mart-category-list > li > button\")\n// );\n\n// /** @type {Object.<string, string>} */\n// const allEmojiStyle = {};\n\n// allEmojiButton.forEach(emojiButton => {\n// const label = emojiButton.getAttribute(\"aria-label\");\n// const [emoji] = label.split(\",\");\n\n// const emojiSpanEl = emojiButton.querySelector(\"span\");\n\n// const style = replaceAll(emojiSpanEl.style.cssText, '\"', \"'\");\n\n// allEmojiStyle[emoji] = style;\n// });\n\n// return allEmojiStyle;\n// }\n\n// eslint-disable-next-line valid-jsdoc\n/**\n *\n * @param { import(\"../types/types\").EmojiMartItem } emoji\n * @return {string}\n */\nexport function getImageEmoji(emoji) {\n let shortNames = `${emoji.short_names}`;\n\n shortNames = replaceAll(shortNames, \",\", \", \");\n\n /** @type {HTMLSpanElement} */\n const emojiSpanEl =\n document.querySelector(\n `[aria-label=\"${emoji.native}, ${shortNames}\"] > span`\n ) || document.querySelector(`[aria-label=\"${emoji.id}\"] > span`);\n\n if (!emojiSpanEl) return \"\";\n\n const style = replaceAll(emojiSpanEl.style.cssText, '\"', \"'\");\n\n let dataEmoji = emoji.native;\n\n if (!dataEmoji && emoji.emoticons && emoji.emoticons.length > 0) {\n dataEmoji = emoji.emoticons[0];\n }\n\n return `<img style=\"${style}\" data-emoji=\"${dataEmoji}\" src=\"${TRANSPARENT_GIF}\" />`;\n}\n\n/**\n *\n * @param {string} html\n * @return {string}\n */\nexport function replaceAllTextEmojiToString(html) {\n const container = document.createElement(\"div\");\n container.innerHTML = html;\n\n const images = Array.prototype.slice.call(container.querySelectorAll(\"img\"));\n\n images.forEach(image => {\n container.innerHTML = container.innerHTML.replace(\n image.outerHTML,\n image.dataset.emoji\n );\n });\n\n return container.innerHTML;\n}\n","// @ts-check\n\nimport {\n getImageEmoji,\n replaceAllTextEmojis,\n replaceAllTextEmojiToString\n} from \"./emoji-utils\";\n\n/**\n * Handle copy of current selected text\n * @param {React.ClipboardEvent} event\n */\nexport function handleCopy(event) {\n const selectedText = window.getSelection();\n\n if (selectedText === null) {\n return\n }\n\n let container = document.createElement(\"div\");\n\n for (let i = 0, len = selectedText.rangeCount; i < len; ++i) {\n container.appendChild(selectedText.getRangeAt(i).cloneContents());\n }\n\n container = replaceEmojiToString(container);\n\n event.clipboardData.setData(\"text\", container.innerText);\n event.preventDefault();\n}\n\n/**\n *\n * @param {string} html\n */\nexport function handlePasteHtmlAtCaret(html) {\n let sel;\n let range;\n if (window.getSelection) {\n // IE9 and non-IE\n sel = window.getSelection();\n\n if (sel === null) return\n\n if (sel.getRangeAt && sel.rangeCount) {\n range = sel.getRangeAt(0);\n range.deleteContents();\n\n // Range.createContextualFragment() would be useful here but is\n // non-standard and not supported in all browsers (IE9, for one)\n const el = document.createElement(\"div\");\n el.innerHTML = html;\n const frag = document.createDocumentFragment();\n let node;\n let lastNode;\n while ((node = el.firstChild)) {\n lastNode = frag.appendChild(node);\n }\n range.insertNode(frag);\n\n // Preserve the selection\n if (lastNode) {\n range = range.cloneRange();\n range.setStartAfter(lastNode);\n range.collapse(true);\n sel.removeAllRanges();\n sel.addRange(range);\n }\n }\n }\n}\n\n/**\n * Replace emoji img to its string value\n * @param {HTMLDivElement} container\n * @return {HTMLDivElement}\n */\nfunction replaceEmojiToString(container) {\n const images = Array.prototype.slice.call(container.querySelectorAll(\"img\"));\n\n images.forEach(image => {\n image.outerHTML = image.dataset.emoji;\n });\n\n return container;\n}\n\n/**\n * Handle past on input\n * @param {React.ClipboardEvent} event\n */\nexport function handlePaste(event) {\n event.preventDefault();\n let content;\n if (event.clipboardData) {\n content = event.clipboardData.getData(\"text/plain\");\n content = replaceAllTextEmojis(content);\n document.execCommand(\"insertHTML\", false, content);\n }\n}\n\n/**\n * @typedef {object} HandleKeyDownOptions\n * @property {HTMLDivElement} placeholderEl\n * @property {number} maxLength\n * @property {HTMLDivElement} inputEl\n * @property {React.MutableRefObject<string>} cleanedTextRef\n * @property {React.MutableRefObject<HTMLDivElement>} textInputRef\n * @property {boolean} cleanOnEnter\n * @property {function(): void} emitChange\n * @property {(function(string): void)=} onEnter\n * @property {(function(KeyboardEvent): void)=} onKeyDown\n * @property {(function(string): void)} updateHTML\n */\n\n// eslint-disable-next-line valid-jsdoc\n/**\n * @typedef {Object} HandleSelectEmojiProps\n * @property {import(\"../types/types\").EmojiMartItem} emoji\n * @property {React.MutableRefObject<import('../text-input').Ref>} textInputRef\n * @property {boolean} keepOpened\n * @property {() => void} toggleShowPicker\n * @property {number=} maxLength\n */\n\n/**\n *\n * @param {HandleSelectEmojiProps} props\n */\nexport function handleSelectEmoji({\n emoji,\n textInputRef,\n keepOpened,\n toggleShowPicker,\n maxLength\n}) {\n if (\n typeof maxLength !== \"undefined\" &&\n totalCharacters(textInputRef.current) >= maxLength\n ) {\n return;\n }\n\n textInputRef.current.appendContent(getImageEmoji(emoji));\n\n if (!keepOpened) {\n toggleShowPicker();\n }\n}\n\n/**\n *\n * @param {{text: string, html: string}} props\n * @return {number}\n */\nexport function totalCharacters({ text, html }) {\n const textCount = text.length;\n const emojisCount = (html.match(/<img/g) || []).length;\n\n return textCount + emojisCount;\n}\n\n// eslint-disable-next-line valid-jsdoc\n/**\n * Handle keyup event\n * @param {() => void} emitChange\n * @param {(event: KeyboardEvent) => void} onKeyDownMention\n * @param {React.MutableRefObject<string>} cleanedTextRef\n * @param {React.MutableRefObject<HTMLDivElement>} textInputRef\n * @return {(event: KeyboardEvent) => void}\n */\nexport function handleKeyup(\n emitChange,\n onKeyDownMention,\n cleanedTextRef,\n textInputRef\n) {\n return event => {\n const text = replaceAllTextEmojiToString(textInputRef.current.innerHTML);\n cleanedTextRef.current = text;\n emitChange();\n onKeyDownMention(event);\n };\n}\n\n/**\n * Handle focus event\n * @param {function(FocusEvent): void} onFocus\n * @return {function(FocusEvent): void}\n */\nexport function handleFocus(onFocus) {\n return event => {\n onFocus(event);\n };\n}\n","// @ts-check\n\nimport { useCallback, useRef } from \"react\";\n\n/**\n * @typedef {import('../types/types').SanitizeFn} SanitizeFn\n */\n\n// eslint-disable-next-line valid-jsdoc\n/** */\nexport function useSanitize() {\n /** @type {React.MutableRefObject<SanitizeFn[]>} */\n const sanitizeFnsRef = useRef([]);\n\n const sanitizedTextRef = useRef(\"\");\n\n /** @type {(fn: SanitizeFn) => void} */\n const addSanitizeFn = useCallback(fn => {\n sanitizeFnsRef.current.push(fn);\n }, []);\n\n /** @type {(html: string) => string} */\n const sanitize = useCallback(html => {\n let result = sanitizeFnsRef.current.reduce((acc, fn) => {\n return fn(acc);\n }, html);\n\n result = replaceAllHtmlToString(result);\n\n sanitizedTextRef.current = result;\n\n return result;\n }, []);\n\n return { addSanitizeFn, sanitize, sanitizedTextRef };\n}\n\n/**\n *\n * @param {string} html\n * @return {string}\n */\nexport function replaceAllHtmlToString(html) {\n const container = document.createElement(\"div\");\n container.innerHTML = html;\n\n let text = container.innerText || \"\";\n\n // remove all ↵ for safari\n text = text.replace(/\\n/gi, \"\");\n\n return text;\n}\n","// @ts-check\n\nimport { useImperativeHandle } from \"react\";\nimport { useSanitize } from \"./use-sanitize\";\n\n/**\n * @typedef {Object} Props\n * @property {React.Ref<any>} ref\n * @property {React.MutableRefObject<import('../text-input').Ref | null>} textInputRef\n * @property {(value: string) => void} setValue\n * @property {() => void} emitChange\n */\n\n/**\n *\n * @param {Props} props\n */\nexport function useExpose({ ref, textInputRef, setValue, emitChange }) {\n const { sanitize, sanitizedTextRef } = useSanitize();\n\n useImperativeHandle(ref, () => ({\n get value() {\n return sanitizedTextRef.current;\n },\n set value(value) {\n setValue(value);\n },\n focus: () => {\n if (textInputRef.current === null) return\n textInputRef.current.focus();\n },\n blur: () => {\n if (textInputRef.current !== null) {\n sanitize(textInputRef.current.html);\n\n }\n\n emitChange();\n }\n }));\n}\n","// @ts-check\n\nimport { useCallback, useEffect, useRef } from \"react\";\n\n// eslint-disable-next-line valid-jsdoc\n/**\n * useEmit\n * @param {React.MutableRefObject<import('../text-input').Ref | null>} textInputRef\n * @param {(size: {width: number, height: number}) => void} onResize\n * @param {(text: string) => void} onChange\n */\nexport function useEmit(textInputRef, onResize, onChange) {\n /** @type {React.MutableRefObject<{width: number; height: number} | null>} */\n const currentSizeRef = useRef(null);\n const onChangeFn = useRef(onChange);\n\n const checkAndEmitResize = useCallback(() => {\n if (textInputRef.current !== null) {\n const currentSize = currentSizeRef.current;\n\n const nextSize = textInputRef.current.size;\n\n if (\n (!currentSize ||\n currentSize.width !== nextSize.width ||\n currentSize.height !== nextSize.height) &&\n typeof onResize === \"function\"\n ) {\n onResize(nextSize);\n }\n\n currentSizeRef.current = nextSize;\n }\n }, [onResize, textInputRef]);\n\n const emitChange = useCallback((sanitizedText) => {\n if (typeof onChangeFn.current === \"function\") {\n onChangeFn.current(sanitizedText);\n }\n\n if (typeof onResize === \"function\") {\n checkAndEmitResize();\n }\n }, [checkAndEmitResize, onResize]);\n\n useEffect(() => {\n if (textInputRef.current) {\n checkAndEmitResize();\n }\n }, [checkAndEmitResize, textInputRef]);\n\n return emitChange;\n}\n","// @ts-check\n/* eslint-disable react/prop-types */\n// vendors\nimport React, { useImperativeHandle, forwardRef, useRef } from \"react\";\nimport { handlePasteHtmlAtCaret } from \"./utils/input-event-utils\";\n\n/**\n * @typedef {Object} Props\n * @property {(event: React.KeyboardEvent) => void} onKeyDown\n * @property {(event: React.KeyboardEvent) => void} onKeyUp\n * @property {() => void} onFocus\n * @property {() => void} onBlur\n * @property {(sanitizedText: string) => void=} onChange\n * @property {(event: React.KeyboardEvent) => void} onArrowUp\n * @property {(event: React.KeyboardEvent) => void} onArrowDown\n * @property {(event: React.KeyboardEvent) => void} onEnter\n * @property {(event: React.ClipboardEvent) => void} onCopy\n * @property {(event: React.ClipboardEvent) => void} onPaste\n * @property {string} placeholder\n * @property {React.CSSProperties} style\n * @property {number} tabIndex\n * @property {string} className\n * @property {(html: string) => void} onChange\n */\n\n/**\n * @typedef {{\n * appendContent: (html: string) => void;\n * html: string;\n * text: string;\n * size: { width: number; height: number;};\n * focus: () => void;\n * }} Ref\n */\n\n// eslint-disable-next-line valid-jsdoc\n/** @type {React.ForwardRefRenderFunction<Ref, Props>} */\nconst TextInput = (\n { placeholder, style, tabIndex, className, onChange, ...props },\n ref\n) => {\n useImperativeHandle(ref, () => ({\n appendContent: html => {\n if (textInputRef.current) {\n textInputRef.current.focus();\n }\n\n handlePasteHtmlAtCaret(html);\n\n if (textInputRef.current) {\n textInputRef.current.focus();\n }\n\n if (textInputRef.current && placeholderRef.current && textInputRef.current.innerHTML.trim() === \"\") {\n placeholderRef.current.style.visibility = \"visible\";\n } else if (placeholderRef.current) {\n placeholderRef.current.style.visibility = \"hidden\";\n }\n\n if (textInputRef.current && typeof onChange === 'function') {\n onChange(textInputRef.current.innerHTML);\n }\n },\n set html(value) {\n if (textInputRef.current) {\n textInputRef.current.innerHTML = value;\n }\n \n if (placeholderRef.current) {\n if (value.trim() === \"\") {\n placeholderRef.current.style.visibility = \"visible\";\n } else {\n placeholderRef.current.style.visibility = \"hidden\";\n }\n }\n\n if (typeof onChange === 'function' && textInputRef.current) {\n onChange(textInputRef.current.innerHTML);\n }\n },\n get html() {\n if (!textInputRef.current) return ''\n\n return textInputRef.current.innerHTML;\n },\n get text() {\n if (!textInputRef.current) return ''\n\n return textInputRef.current.innerText;\n },\n get size() {\n if (!textInputRef.current) {\n return {\n width: 0,\n height: 0\n }\n }\n\n return {\n width: textInputRef.current.offsetWidth,\n height: textInputRef.current.offsetHeight\n };\n },\n focus() {\n if (!textInputRef.current) return\n\n textInputRef.current.focus();\n }\n }));\n\n /** @type {React.MutableRefObject<HTMLDivElement | null>} */\n const placeholderRef = useRef(null);\n /** @type {React.MutableRefObject<HTMLDivElement | null>} */\n const textInputRef = useRef(null);\n\n /**\n *\n * @param {React.KeyboardEvent} event\n */\n function handleKeyDown(event) {\n if (event.key === \"Enter\") {\n props.onEnter(event);\n } else if (event.key === \"ArrowUp\") {\n props.onArrowUp(event);\n } else if (event.key === \"ArrowDown\") {\n props.onArrowDown(event);\n } else {\n if (event.key.length === 1 && placeholderRef.current) {\n placeholderRef.current.style.visibility = \"hidden\";\n }\n }\n\n props.onKeyDown(event);\n }\n\n /** */\n function handleClick() {\n props.onFocus();\n }\n\n /**\n *\n * @param {React.KeyboardEvent} event\n */\n function handleKeyUp(event) {\n props.onKeyUp(event);\n\n const input = textInputRef.current;\n\n if (placeholderRef.current) {\n if (input?.innerText?.trim() === \"\") {\n placeholderRef.current.style.visibility = \"visible\";\n } else {\n placeholderRef.current.style.visibility = \"hidden\";\n }\n }\n\n if (typeof onChange === 'function' && textInputRef.current) {\n onChange(textInputRef.current.innerHTML);\n }\n }\n\n return (\n <div className=\"react-input-emoji--container\" style={style}>\n <div className=\"react-input-emoji--wrapper\" onClick={handleClick}>\n <div ref={placeholderRef} className=\"react-input-emoji--placeholder\">\n {placeholder}\n </div>\n <div\n ref={textInputRef}\n onKeyDown={handleKeyDown}\n onKeyUp={handleKeyUp}\n tabIndex={tabIndex}\n contentEditable\n className={`react-input-emoji--input${className ? ` ${className}` : \"\"\n }`}\n onBlur={props.onBlur}\n onCopy={props.onCopy}\n onPaste={props.onPaste}\n data-testid=\"react-input-emoji--input\"\n />\n </div>\n </div>\n );\n};\n\nconst TextInputWithRef = forwardRef(TextInput);\n\nexport default TextInputWithRef;\n","export default function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}","function _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\n\nexport default function _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n Object.defineProperty(Constructor, \"prototype\", {\n writable: false\n });\n return Constructor;\n}","export default function _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) {\n return typeof obj;\n } : function (obj) {\n return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n }, _typeof(obj);\n}","var mapping = {\n name: 'a',\n unified: 'b',\n non_qualified: 'c',\n has_img_apple: 'd',\n has_img_google: 'e',\n has_img_twitter: 'f',\n has_img_facebook: 'h',\n keywords: 'j',\n sheet: 'k',\n emoticons: 'l',\n text: 'm',\n short_names: 'n',\n added_in: 'o'\n};\n\nvar buildSearch = function buildSearch(emoji) {\n var search = [];\n\n var addToSearch = function addToSearch(strings, split) {\n if (!strings) {\n return;\n }\n\n ;\n (Array.isArray(strings) ? strings : [strings]).forEach(function (string) {\n ;\n (split ? string.split(/[-|_|\\s]+/) : [string]).forEach(function (s) {\n s = s.toLowerCase();\n\n if (search.indexOf(s) == -1) {\n search.push(s);\n }\n });\n });\n };\n\n addToSearch(emoji.short_names, true);\n addToSearch(emoji.name, true);\n addToSearch(emoji.keywords, false);\n addToSearch(emoji.emoticons, false);\n return search.join(',');\n};\n\nvar compress = function compress(emoji) {\n emoji.short_names = emoji.short_names.filter(function (short_name) {\n return short_name !== emoji.short_name;\n });\n delete emoji.short_name;\n emoji.sheet = [emoji.sheet_x, emoji.sheet_y];\n delete emoji.sheet_x;\n delete emoji.sheet_y;\n emoji.added_in = parseInt(emoji.added_in);\n\n if (emoji.added_in === 6) {\n delete emoji.added_in;\n }\n\n for (var key in mapping) {\n emoji[mapping[key]] = emoji[key];\n delete emoji[key];\n }\n\n for (var _key in emoji) {\n var value = emoji[_key];\n\n if (Array.isArray(value) && !value.length) {\n delete emoji[_key];\n } else if (typeof value === 'string' && !value.length) {\n delete emoji[_key];\n } else if (value === null) {\n delete emoji[_key];\n }\n }\n};\n\nvar uncompress = function uncompress(data) {\n data.compressed = false;\n\n for (var id in data.emojis) {\n var emoji = data.emojis[id];\n\n for (var key in mapping) {\n emoji[key] = emoji[mapping[key]];\n delete emoji[mapping[key]];\n }\n\n if (!emoji.short_names) emoji.short_names = [];\n emoji.short_names.unshift(id);\n emoji.sheet_x = emoji.sheet[0];\n emoji.sheet_y = emoji.sheet[1];\n delete emoji.sheet;\n if (!emoji.text) emoji.text = '';\n if (!emoji.added_in) emoji.added_in = 6;\n emoji.added_in = emoji.added_in.toFixed(1);\n emoji.search = buildSearch(emoji);\n }\n};\n\nexport { buildSearch, compress, uncompress };","var _String = String;\nexport default _String.fromCodePoint || function stringFromCodePoint() {\n var MAX_SIZE = 0x4000;\n var codeUnits = [];\n var highSurrogate;\n var lowSurrogate;\n var index = -1;\n var length = arguments.length;\n\n if (!length) {\n return '';\n }\n\n var result = '';\n\n while (++index < length) {\n var codePoint = Number(arguments[index]);\n\n if (!isFinite(codePoint) || // `NaN`, `+Infinity`, or `-Infinity`\n codePoint < 0 || // not a valid Unicode code point\n codePoint > 0x10ffff || // not a valid Unicode code point\n Math.floor(codePoint) != codePoint // not an integer\n ) {\n throw RangeError('Invalid code point: ' + codePoint);\n }\n\n if (codePoint <= 0xffff) {\n // BMP code point\n codeUnits.push(codePoint);\n } else {\n // Astral code point; split in surrogate halves\n // http://mathiasbynens.be/notes/javascript-encoding#surrogate-formulae\n codePoint -= 0x10000;\n highSurrogate = (codePoint >> 10) + 0xd800;\n lowSurrogate = codePoint % 0x400 + 0xdc00;\n codeUnits.push(highSurrogate, lowSurrogate);\n }\n\n if (index + 1 === length || codeUnits.length > MAX_SIZE) {\n result += String.fromCharCode.apply(null, codeUnits);\n codeUnits.length = 0;\n }\n }\n\n return result;\n};","import _typeof from \"@babel/runtime/helpers/typeof\";\nimport { buildSearch } from './data';\nimport stringFromCodePoint from '../polyfills/stringFromCodePoint';\nimport { uncompress } from './data';\nvar COLONS_REGEX = /^(?:\\:([^\\:]+)\\:)(?:\\:skin-tone-(\\d)\\:)?$/;\nvar SKINS = ['1F3FA', '1F3FB', '1F3FC', '1F3FD', '1F3FE', '1F3FF'];\n\nfunction unifiedToNative(unified) {\n var unicodes = unified.split('-'),\n codePoints = unicodes.map(function (u) {\n return \"0x\".concat(u);\n });\n return stringFromCodePoint.apply(null, codePoints);\n}\n\nfunction sanitize(emoji) {\n var name = emoji.name,\n short_names = emoji.short_names,\n skin_tone = emoji.skin_tone,\n skin_variations = emoji.skin_variations,\n emoticons = emoji.emoticons,\n unified = emoji.unified,\n custom = emoji.custom,\n customCategory = emoji.customCategory,\n imageUrl = emoji.imageUrl,\n id = emoji.id || short_names[0],\n colons = \":\".concat(id, \":\");\n\n if (custom) {\n return {\n id: id,\n name: name,\n short_names: short_names,\n colons: colons,\n emoticons: emoticons,\n custom: custom,\n customCategory: customCategory,\n imageUrl: imageUrl\n };\n }\n\n if (skin_tone) {\n colons += \":skin-tone-\".concat(skin_tone, \":\");\n }\n\n return {\n id: id,\n name: name,\n short_names: short_names,\n colons: colons,\n emoticons: emoticons,\n unified: unified.toLowerCase(),\n skin: skin_tone || (skin_variations ? 1 : null),\n \"native\": unifiedToNative(unified)\n };\n}\n\nfunction getSanitizedData() {\n return sanitize(getData.apply(void 0, arguments));\n}\n\nfunction getData(emoji, skin, set, data) {\n var emojiData = {};\n\n if (typeof emoji == 'string') {\n var matches = emoji.match(COLONS_REGEX);\n\n if (matches) {\n emoji = matches[1];\n\n if (matches[2]) {\n skin = parseInt(matches[2], 10);\n }\n }\n\n if (data.aliases.hasOwnProperty(emoji)) {\n emoji = data.aliases[emoji];\n }\n\n if (data.emojis.hasOwnProperty(emoji)) {\n emojiData = data.emojis[emoji];\n } else {\n return null;\n }\n } else if (emoji.id) {\n if (data.aliases.hasOwnProperty(emoji.id)) {\n emoji.id = data.aliases[emoji.id];\n }\n\n if (data.emojis.hasOwnProperty(emoji.id)) {\n emojiData = data.emojis[emoji.id];\n skin || (skin = emoji.skin);\n }\n }\n\n if (!Object.keys(emojiData).length) {\n emojiData = emoji;\n emojiData.custom = true;\n\n if (!emojiData.search) {\n emojiData.search = buildSearch(emoji);\n }\n }\n\n emojiData.emoticons || (emojiData.emoticons = []);\n emojiData.variations || (emojiData.variations = []);\n\n if (emojiData.skin_variations && skin > 1) {\n emojiData = JSON.parse(JSON.stringify(emojiData));\n var skinKey = SKINS[skin - 1],\n variationData = emojiData.skin_variations[skinKey];\n\n if (variationData) {\n if (!variationData.variations && emojiData.variations) {\n delete emojiData.variations;\n }\n\n if (set && (variationData[\"has_img_\".concat(set)] == undefined || variationData[\"has_img_\".concat(set)]) || !set) {\n emojiData.skin_tone = skin;\n\n for (var k in variationData) {\n var v = variationData[k];\n emojiData[k] = v;\n }\n }\n }\n }\n\n if (emojiData.variations && emojiData.variations.length) {\n emojiData = JSON.parse(JSON.stringify(emojiData));\n emojiData.unified = emojiData.variations.shift();\n }\n\n return emojiData;\n}\n\nfunction getEmojiDataFromNative(nativeString, set, data) {\n if (data.compressed) {\n uncompress(data);\n }\n\n var skinTones = ['🏻', '🏼', '🏽', '🏾', '🏿'];\n var skinCodes = ['1F3FB', '1F3FC', '1F3FD', '1F3FE', '1F3FF'];\n var skin;\n var skinCode;\n var baseNativeString = nativeString;\n skinTones.forEach(function (skinTone, skinToneIndex) {\n if (nativeString.indexOf(skinTone) > 0) {\n skin = skinToneIndex + 2;\n skinCode = skinCodes[skinToneIndex];\n }\n });\n var emojiData;\n\n for (var id in data.emojis) {\n var emoji = data.emojis[id];\n var emojiUnified = emoji.unified;\n\n if (emoji.variations && emoji.variations.length) {\n emojiUnified = emoji.variations.shift();\n }\n\n if (skin && emoji.skin_variations && emoji.skin_variations[skinCode]) {\n emojiUnified = emoji.skin_variations[skinCode].unified;\n }\n\n if (unifiedToNative(emojiUnified) === baseNativeString) emojiData = emoji;\n }\n\n if (!emojiData) {\n return null;\n }\n\n emojiData.id = emojiData.short_names[0];\n return getSanitizedData(emojiData, skin, set, data);\n}\n\nfunction uniq(arr) {\n return arr.reduce(function (acc, item) {\n if (acc.indexOf(item) === -1) {\n acc.push(item);\n }\n\n return acc;\n }, []);\n}\n\nfunction intersect(a, b) {\n var uniqA = uniq(a);\n var uniqB = uniq(b);\n return uniqA.filter(function (item) {\n return uniqB.indexOf(item) >= 0;\n });\n}\n\nfunction deepMerge(a, b) {\n var o = {};\n\n for (var key in a) {\n var originalValue = a[key],\n value = originalValue;\n\n if (b.hasOwnProperty(key)) {\n value = b[key];\n }\n\n if (_typeof(value) === 'object') {\n value = deepMerge(originalValue, value);\n }\n\n o[key] = value;\n }\n\n return o;\n} // https://github.com/sonicdoe/measure-scrollbar\n\n\nfunction measureScrollbar() {\n if (typeof document == 'undefined') return 0;\n var div = document.createElement('div');\n div.style.width = '100px';\n div.style.height = '100px';\n div.style.overflow = 'scroll';\n div.style.position = 'absolute';\n div.style.top = '-9999px';\n document.body.appendChild(div);\n var scrollbarWidth = div.offsetWidth - div.clientWidth;\n document.body.removeChild(div);\n return scrollbarWidth;\n} // Use requestIdleCallback() if available, else fall back to setTimeout().\n// Throttle so as not to run too frequently.\n\n\nfunction throttleIdleTask(func) {\n var doIdleTask = typeof requestIdleCallback === 'function' ? requestIdleCallback : setTimeout;\n var running = false;\n return function throttled() {\n if (running) {\n return;\n }\n\n running = true;\n doIdleTask(function () {\n running = false;\n func();\n });\n };\n}\n\nexport { getData, getEmojiDataFromNative, getSanitizedData, uniq, intersect, deepMerge, unifiedToNative, measureScrollbar, throttleIdleTask };","var NAMESPACE = 'emoji-mart';\nvar isLocalStorageSupported = typeof window !== 'undefined' && 'localStorage' in window;\nvar getter;\nvar setter;\n\nfunction setHandlers(handlers) {\n handlers || (handlers = {});\n getter = handlers.getter;\n setter = handlers.setter;\n}\n\nfunction setNamespace(namespace) {\n NAMESPACE = namespace;\n}\n\nfunction update(state) {\n for (var key in state) {\n var value = state[key];\n set(key, value);\n }\n}\n\nfunction set(key, value) {\n if (setter) {\n setter(key, value);\n } else {\n if (!isLocalStorageSupported) return;\n\n try {\n window.localStorage[\"\".concat(NAMESPACE, \".\").concat(key)] = JSON.stringify(value);\n } catch (e) {}\n }\n}\n\nfunction get(key) {\n if (getter) {\n return getter(key);\n } else {\n if (!isLocalStorageSupported) return;\n\n try {\n var value = window.localStorage[\"\".concat(NAMESPACE, \".\").concat(key)];\n\n if (value) {\n return JSON.parse(value);\n }\n } catch (e) {\n return;\n }\n }\n}\n\nexport default {\n update: update,\n set: set,\n get: get,\n setNamespace: setNamespace,\n setHandlers: setHandlers\n};","import _classCallCheck from \"@babel/runtime/helpers/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/createClass\";\nimport { getData, getSanitizedData, intersect } from '..';\nimport { uncompress } from '../data';\nimport store from '../store';\n\nvar NimbleEmojiIndex =\n/*#__PURE__*/\nfunction () {\n function NimbleEmojiIndex(data, set) {\n _classCallCheck(this, NimbleEmojiIndex);\n\n if (data.compressed) {\n uncompress(data);\n }\n\n this.data = data || {};\n this.set = set || null;\n this.originalPool = {};\n this.index = {};\n this.emojis = {};\n this.emoticons = {};\n this.customEmojisList = [];\n this.buildIndex();\n }\n\n _createClass(NimbleEmojiIndex, [{\n key: \"buildIndex\",\n value: function buildIndex() {\n var _this = this;\n\n var _loop = function _loop(emoji) {\n var emojiData = _this.data.emojis[emoji],\n short_names = emojiData.short_names,\n emoticons = emojiData.emoticons,\n skin_variations = emojiData.skin_variations,\n id = short_names[0];\n\n if (emoticons) {\n emoticons.forEach(function (emoticon) {\n if (_this.emoticons[emoticon]) {\n return;\n }\n\n _this.emoticons[emoticon] = id;\n });\n } // If skin variations include them\n\n\n if (skin_variations) {\n _this.emojis[id] = {};\n\n for (var skinTone = 1; skinTone <= 6; skinTone++) {\n _this.emojis[id][skinTone] = getSanitizedData({\n id: id,\n skin: skinTone\n }, skinTone, _this.set, _this.data);\n }\n } else {\n _this.emojis[id] = getSanitizedData(id, null, _this.set, _this.data);\n }\n\n _this.originalPool[id] = emojiData;\n };\n\n for (var emoji in this.data.emojis) {\n _loop(emoji);\n }\n }\n }, {\n key: \"clearCustomEmojis\",\n value: function clearCustomEmojis(pool) {\n var _this2 = this;\n\n this.customEmojisList.forEach(function (emoji) {\n var emojiId = emoji.id || emoji.short_names[0];\n delete pool[emojiId];\n delete _this2.emojis[emojiId];\n });\n }\n }, {\n key: \"addCustomToPool\",\n value: function addCustomToPool(custom, pool) {\n var _this3 = this;\n\n if (this.customEmojisList.length) this.clearCustomEmojis(pool);\n custom.forEach(function (emoji) {\n var emojiId = emoji.id || emoji.short_names[0];\n\n if (emojiId && !pool[emojiId]) {\n pool[emojiId] = getData(emoji, null, null, _this3.data);\n _this3.emojis[emojiId] = getSanitizedData(emoji, null, null, _this3.data);\n }\n });\n this.customEmojisList = custom;\n this.index = {};\n }\n }, {\n key: \"search\",\n value: function search(value) {\n var _this4 = this;\n\n var _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},\n emojisToShowFilter = _ref.emojisToShowFilter,\n maxResults = _ref.maxResults,\n include = _ref.include,\n exclude = _ref.exclude,\n _ref$custom = _ref.custom,\n custom = _ref$custom === void 0 ? [] : _ref$custom;\n\n if (this.customEmojisList != custom) this.addCustomToPool(custom, this.originalPool);\n var skinTone = store.get('skin') || 1;\n maxResults || (maxResults = 75);\n include || (include = []);\n exclude || (exclude = []);\n var results = null,\n pool = this.originalPool;\n\n if (value.length) {\n if (value == '-' || value == '-1') {\n return [this.emojis['-1'][skinTone]];\n }\n\n var values = value.toLowerCase().split(/[\\s|,|\\-|_]+/),\n allResults = [];\n\n if (values.length > 2) {\n values = [values[0], values[1]];\n }\n\n if (include.length || exclude.length) {\n pool = {};\n this.data.categories.forEach(function (category) {\n var isIncluded = include && include.length ? include.indexOf(category.id) > -1 : true;\n var isExcluded = exclude && exclude.length ? exclude.indexOf(category.id) > -1 : false;\n\n if (!isIncluded || isExcluded) {\n return;\n }\n\n category.emojis.forEach(function (emojiId) {\n return pool[emojiId] = _this4.data.emojis[emojiId];\n });\n });\n\n if (custom.length) {\n var customIsIncluded = include && include.length ? include.indexOf('custom') > -1 : true;\n var customIsExcluded = exclude && exclude.length ? exclude.indexOf('custom') > -1 : false;\n\n if (customIsIncluded && !customIsExcluded) {\n this.addCustomToPool(custom, pool);\n }\n }\n }\n\n allResults = values.map(function (value) {\n var aPool = pool,\n aIndex = _this4.index,\n length = 0;\n\n for (var charIndex = 0; charIndex < value.length; charIndex++) {\n var _char = value[charIndex];\n length++;\n aIndex[_char] || (aIndex[_char] = {});\n aIndex = aIndex[_char];\n\n if (!aIndex.results) {\n (function () {\n var scores = {};\n aIndex.results = [];\n aIndex.pool = {};\n\n for (var id in aPool) {\n var emoji = aPool[id],\n search = emoji.search,\n sub = value.substr(0, length),\n subIndex = search.indexOf(sub);\n\n if (subIndex != -1) {\n var score = subIndex + 1;\n if (sub == id) score = 0;\n\n if (_this4.emojis[id] && _this4.emojis[id][skinTone]) {\n aIndex.results.push(_this4.emojis[id][skinTone]);\n } else {\n aIndex.results.push(_this4.emojis[id]);\n }\n\n aIndex.pool[id] = emoji;\n scores[id] = score;\n }\n }\n\n aIndex.results.sort(function (a, b) {\n var aScore = scores[a.id],\n bScore = scores[b.id];\n\n if (aScore == bScore) {\n return a.id.localeCompare(b.id);\n } else {\n return aScore - bScore;\n }\n });\n })();\n }\n\n aPool = aIndex.pool;\n }\n\n return aIndex.results;\n }).filter(function (a) {\n return a;\n });\n\n if (allResults.length > 1) {\n results = intersect.apply(null, allResults);\n } else if (allResults.length) {\n results = allResults[0];\n } else {\n results = [];\n }\n }\n\n if (results) {\n if (emojisToShowFilter) {\n results = results.filter(function (result) {\n return emojisToShowFilter(pool[result.id]);\n });\n }\n\n if (results && results.length > maxResults) {\n results = results.slice(0, maxResults);\n }\n }\n\n return results;\n }\n }]);\n\n return NimbleEmojiIndex;\n}();\n\nexport { NimbleEmojiIndex as default };","import data from '../../../data/all.json';\nimport NimbleEmojiIndex from './nimble-emoji-index';\nvar emojiIndex = new NimbleEmojiIndex(data);\nvar emojis = emojiIndex.emojis,\n emoticons = emojiIndex.emoticons;\n\nfunction search() {\n return emojiIndex.search.apply(emojiIndex, arguments);\n}\n\nexport default {\n search: search,\n emojis: emojis,\n emoticons: emoticons\n};","import store from './store';\nvar DEFAULTS = ['+1', 'grinning', 'kissing_heart', 'heart_eyes', 'laughing', 'stuck_out_tongue_winking_eye', 'sweat_smile', 'joy', 'scream', 'disappointed', 'unamused', 'weary', 'sob', 'sunglasses', 'heart', 'poop'];\nvar frequently, initialized;\nvar defaults = {};\n\nfunction init() {\n initialized = true;\n frequently = store.get('frequently');\n}\n\nfunction add(emoji) {\n if (!initialized) init();\n var id = emoji.id;\n frequently || (frequently = defaults);\n frequently[id] || (frequently[id] = 0);\n frequently[id] += 1;\n store.set('last', id);\n store.set('frequently', frequently);\n}\n\nfunction get(perLine) {\n if (!initialized) init();\n\n if (!frequently) {\n defaults = {};\n var result = [];\n\n for (var i = 0; i < perLine; i++) {\n defaults[DEFAULTS[i]] = perLine - i;\n result.push(DEFAULTS[i]);\n }\n\n return result;\n }\n\n var quantity = perLine * 4;\n var frequentlyKeys = [];\n\n for (var key in frequently) {\n if (frequently.hasOwnProperty(key)) {\n frequentlyKeys.push(key);\n }\n }\n\n var sorted = frequentlyKeys.sort(function (a, b) {\n return frequently[a] - frequently[b];\n }).reverse();\n var sliced = sorted.slice(0, quantity);\n var last = store.get('last');\n\n if (last && sliced.indexOf(last) == -1) {\n sliced.pop();\n sliced.push(last);\n }\n\n return sliced;\n}\n\nexport default {\n add: add,\n get: get\n};","export default function _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}","export default function _extends() {\n _extends = Object.assign ? Object.assign.bind() : function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n return _extends.apply(this, arguments);\n}","export default function _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return self;\n}","import _typeof from \"./typeof.js\";\nimport assertThisInitialized from \"./assertThisInitialized.js\";\nexport default function _possibleConstructorReturn(self, call) {\n if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) {\n return call;\n } else if (call !== void 0) {\n throw new TypeError(\"Derived constructors may only return object or undefined\");\n }\n\n return assertThisInitialized(self);\n}","export default function _getPrototypeOf(o) {\n _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n return _getPrototypeOf(o);\n}","export default function _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n return _setPrototypeOf(o, p);\n}","import setPrototypeOf from \"./setPrototypeOf.js\";\nexport default function _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n Object.defineProperty(subClass, \"prototype\", {\n writable: false\n });\n if (superClass) setPrototypeOf(subClass, superClass);\n}","import React from 'react';\nvar categories = {\n activity: function activity() {\n return React.createElement(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 24 24\",\n width: \"24\",\n height: \"24\"\n }, React.createElement(\"path\", {\n d: \"M12 0C5.373 0 0 5.372 0 12c0 6.627 5.373 12 12 12 6.628 0 12-5.373 12-12 0-6.628-5.372-12-12-12m9.949 11H17.05c.224-2.527 1.232-4.773 1.968-6.113A9.966 9.966 0 0 1 21.949 11M13 11V2.051a9.945 9.945 0 0 1 4.432 1.564c-.858 1.491-2.156 4.22-2.392 7.385H13zm-2 0H8.961c-.238-3.165-1.536-5.894-2.393-7.385A9.95 9.95 0 0 1 11 2.051V11zm0 2v8.949a9.937 9.937 0 0 1-4.432-1.564c.857-1.492 2.155-4.221 2.393-7.385H11zm4.04 0c.236 3.164 1.534 5.893 2.392 7.385A9.92 9.92 0 0 1 13 21.949V13h2.04zM4.982 4.887C5.718 6.227 6.726 8.473 6.951 11h-4.9a9.977 9.977 0 0 1 2.931-6.113M2.051 13h4.9c-.226 2.527-1.233 4.771-1.969 6.113A9.972 9.972 0 0 1 2.051 13m16.967 6.113c-.735-1.342-1.744-3.586-1.968-6.113h4.899a9.961 9.961 0 0 1-2.931 6.113\"\n }));\n },\n custom: function custom() {\n return React.createElement(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 24 24\",\n width: \"24\",\n height: \"24\"\n }, React.createElement(\"g\", {\n transform: \"translate(2.000000, 1.000000)\"\n }, React.createElement(\"rect\", {\n id: \"Rectangle\",\n x: \"8\",\n y: \"0\",\n width: \"3\",\n height: \"21\",\n rx: \"1.5\"\n }), React.createElement(\"rect\", {\n id: \"Rectangle\",\n transform: \"translate(9.843, 10.549) rotate(60) translate(-9.843, -10.549) \",\n x: \"8.343\",\n y: \"0.049\",\n width: \"3\",\n height: \"21\",\n rx: \"1.5\"\n }), React.createElement(\"rect\", {\n id: \"Rectangle\",\n transform: \"translate(9.843, 10.549) rotate(-60) translate(-9.843, -10.549) \",\n x: \"8.343\",\n y: \"0.049\",\n width: \"3\",\n height: \"21\",\n rx: \"1.5\"\n })));\n },\n flags: function flags() {\n return React.createElement(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 24 24\",\n width: \"24\",\n height: \"24\"\n }, React.createElement(\"path\", {\n d: \"M0 0l6.084 24H8L1.916 0zM21 5h-4l-1-4H4l3 12h3l1 4h13L21 5zM6.563 3h7.875l2 8H8.563l-2-8zm8.832 10l-2.856 1.904L12.063 13h3.332zM19 13l-1.5-6h1.938l2 8H16l3-2z\"\n }));\n },\n foods: function foods() {\n return React.createElement(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 24 24\",\n width: \"24\",\n height: \"24\"\n }, React.createElement(\"path\", {\n d: \"M17 4.978c-1.838 0-2.876.396-3.68.934.513-1.172 1.768-2.934 4.68-2.934a1 1 0 0 0 0-2c-2.921 0-4.629 1.365-5.547 2.512-.064.078-.119.162-.18.244C11.73 1.838 10.798.023 9.207.023 8.579.022 7.85.306 7 .978 5.027 2.54 5.329 3.902 6.492 4.999 3.609 5.222 0 7.352 0 12.969c0 4.582 4.961 11.009 9 11.009 1.975 0 2.371-.486 3-1 .629.514 1.025 1 3 1 4.039 0 9-6.418 9-11 0-5.953-4.055-8-7-8M8.242 2.546c.641-.508.943-.523.965-.523.426.169.975 1.405 1.357 3.055-1.527-.629-2.741-1.352-2.98-1.846.059-.112.241-.356.658-.686M15 21.978c-1.08 0-1.21-.109-1.559-.402l-.176-.146c-.367-.302-.816-.452-1.266-.452s-.898.15-1.266.452l-.176.146c-.347.292-.477.402-1.557.402-2.813 0-7-5.389-7-9.009 0-5.823 4.488-5.991 5-5.991 1.939 0 2.484.471 3.387 1.251l.323.276a1.995 1.995 0 0 0 2.58 0l.323-.276c.902-.78 1.447-1.251 3.387-1.251.512 0 5 .168 5 6 0 3.617-4.187 9-7 9\"\n }));\n },\n nature: function nature() {\n return React.createElement(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 24 24\",\n width: \"24\",\n height: \"24\"\n }, React.createElement(\"path\", {\n d: \"M15.5 8a1.5 1.5 0 1 0 .001 3.001A1.5 1.5 0 0 0 15.5 8M8.5 8a1.5 1.5 0 1 0 .001 3.001A1.5 1.5 0 0 0 8.5 8\"\n }), React.createElement(\"path\", {\n d: \"M18.933 0h-.027c-.97 0-2.138.787-3.018 1.497-1.274-.374-2.612-.51-3.887-.51-1.285 0-2.616.133-3.874.517C7.245.79 6.069 0 5.093 0h-.027C3.352 0 .07 2.67.002 7.026c-.039 2.479.276 4.238 1.04 5.013.254.258.882.677 1.295.882.191 3.177.922 5.238 2.536 6.38.897.637 2.187.949 3.2 1.102C8.04 20.6 8 20.795 8 21c0 1.773 2.35 3 4 3 1.648 0 4-1.227 4-3 0-.201-.038-.393-.072-.586 2.573-.385 5.435-1.877 5.925-7.587.396-.22.887-.568 1.104-.788.763-.774 1.079-2.534 1.04-5.013C23.929 2.67 20.646 0 18.933 0M3.223 9.135c-.237.281-.837 1.155-.884 1.238-.15-.41-.368-1.349-.337-3.291.051-3.281 2.478-4.972 3.091-5.031.256.015.731.27 1.265.646-1.11 1.171-2.275 2.915-2.352 5.125-.133.546-.398.858-.783 1.313M12 22c-.901 0-1.954-.693-2-1 0-.654.475-1.236 1-1.602V20a1 1 0 1 0 2 0v-.602c.524.365 1 .947 1 1.602-.046.307-1.099 1-2 1m3-3.48v.02a4.752 4.752 0 0 0-1.262-1.02c1.092-.516 2.239-1.334 2.239-2.217 0-1.842-1.781-2.195-3.977-2.195-2.196 0-3.978.354-3.978 2.195 0 .883 1.148 1.701 2.238 2.217A4.8 4.8 0 0 0 9 18.539v-.025c-1-.076-2.182-.281-2.973-.842-1.301-.92-1.838-3.045-1.853-6.478l.023-.041c.496-.826 1.49-1.45 1.804-3.102 0-2.047 1.357-3.631 2.362-4.522C9.37 3.178 10.555 3 11.948 3c1.447 0 2.685.192 3.733.57 1 .9 2.316 2.465 2.316 4.48.313 1.651 1.307 2.275 1.803 3.102.035.058.068.117.102.178-.059 5.967-1.949 7.01-4.902 7.19m6.628-8.202c-.037-.065-.074-.13-.113-.195a7.587 7.587 0 0 0-.739-.987c-.385-.455-.648-.768-.782-1.313-.076-2.209-1.241-3.954-2.353-5.124.531-.376 1.004-.63 1.261-.647.636.071 3.044 1.764 3.096 5.031.027 1.81-.347 3.218-.37 3.235\"\n }));\n },\n objects: function objects() {\n return React.createElement(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 24 24\",\n width: \"24\",\n height: \"24\"\n }, React.createElement(\"path\", {\n d: \"M12 0a9 9 0 0 0-5 16.482V21s2.035 3 5 3 5-3 5-3v-4.518A9 9 0 0 0 12 0zm0 2c3.86 0 7 3.141 7 7s-3.14 7-7 7-7-3.141-7-7 3.14-7 7-7zM9 17.477c.94.332 1.946.523 3 .523s2.06-.19 3-.523v.834c-.91.436-1.925.689-3 .689a6.924 6.924 0 0 1-3-.69v-.833zm.236 3.07A8.854 8.854 0 0 0 12 21c.965 0 1.888-.167 2.758-.451C14.155 21.173 13.153 22 12 22c-1.102 0-2.117-.789-2.764-1.453z\"\n }), React.createElement(\"path\", {\n d: \"M14.745 12.449h-.004c-.852-.024-1.188-.858-1.577-1.824-.421-1.061-.703-1.561-1.182-1.566h-.009c-.481 0-.783.497-1.235 1.537-.436.982-.801 1.811-1.636 1.791l-.276-.043c-.565-.171-.853-.691-1.284-1.794-.125-.313-.202-.632-.27-.913-.051-.213-.127-.53-.195-.634C7.067 9.004 7.039 9 6.99 9A1 1 0 0 1 7 7h.01c1.662.017 2.015 1.373 2.198 2.134.486-.981 1.304-2.058 2.797-2.075 1.531.018 2.28 1.153 2.731 2.141l.002-.008C14.944 8.424 15.327 7 16.979 7h.032A1 1 0 1 1 17 9h-.011c-.149.076-.256.474-.319.709a6.484 6.484 0 0 1-.311.951c-.429.973-.79 1.789-1.614 1.789\"\n }));\n },\n people: function people() {\n return React.createElement(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 24 24\",\n width: \"24\",\n height: \"24\"\n }, React.createElement(\"path\", {\n d: \"M12 0C5.373 0 0 5.373 0 12s5.373 12 12 12 12-5.373 12-12S18.627 0 12 0m0 22C6.486 22 2 17.514 2 12S6.486 2 12 2s10 4.486 10 10-4.486 10-10 10\"\n }), React.createElement(\"path\", {\n d: \"M8 7a2 2 0 1 0-.001 3.999A2 2 0 0 0 8 7M16 7a2 2 0 1 0-.001 3.999A2 2 0 0 0 16 7M15.232 15c-.693 1.195-1.87 2-3.349 2-1.477 0-2.655-.805-3.347-2H15m3-2H6a6 6 0 1 0 12 0\"\n }));\n },\n places: function places() {\n return React.createElement(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 24 24\",\n width: \"24\",\n height: \"24\"\n }, React.createElement(\"path\", {\n d: \"M6.5 12C5.122 12 4 13.121 4 14.5S5.122 17 6.5 17 9 15.879 9 14.5 7.878 12 6.5 12m0 3c-.275 0-.5-.225-.5-.5s.225-.5.5-.5.5.225.5.5-.225.5-.5.5M17.5 12c-1.378 0-2.5 1.121-2.5 2.5s1.122 2.5 2.5 2.5 2.5-1.121 2.5-2.5-1.122-2.5-2.5-2.5m0 3c-.275 0-.5-.225-.5-.5s.225-.5.5-.5.5.225.5.5-.225.5-.5.5\"\n }), React.createElement(\"path\", {\n d: \"M22.482 9.494l-1.039-.346L21.4 9h.6c.552 0 1-.439 1-.992 0-.006-.003-.008-.003-.008H23c0-1-.889-2-1.984-2h-.642l-.731-1.717C19.262 3.012 18.091 2 16.764 2H7.236C5.909 2 4.738 3.012 4.357 4.283L3.626 6h-.642C1.889 6 1 7 1 8h.003S1 8.002 1 8.008C1 8.561 1.448 9 2 9h.6l-.043.148-1.039.346a2.001 2.001 0 0 0-1.359 2.097l.751 7.508a1 1 0 0 0 .994.901H3v1c0 1.103.896 2 2 2h2c1.104 0 2-.897 2-2v-1h6v1c0 1.103.896 2 2 2h2c1.104 0 2-.897 2-2v-1h1.096a.999.999 0 0 0 .994-.901l.751-7.508a2.001 2.001 0 0 0-1.359-2.097M6.273 4.857C6.402 4.43 6.788 4 7.236 4h9.527c.448 0 .834.43.963.857L19.313 9H4.688l1.585-4.143zM7 21H5v-1h2v1zm12 0h-2v-1h2v1zm2.189-3H2.811l-.662-6.607L3 11h18l.852.393L21.189 18z\"\n }));\n },\n recent: function recent() {\n return React.createElement(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 24 24\",\n width: \"24\",\n height: \"24\"\n }, React.createElement(\"path\", {\n d: \"M13 4h-2l-.001 7H9v2h2v2h2v-2h4v-2h-4z\"\n }), React.createElement(\"path\", {\n d: \"M12 0C5.373 0 0 5.373 0 12s5.373 12 12 12 12-5.373 12-12S18.627 0 12 0m0 22C6.486 22 2 17.514 2 12S6.486 2 12 2s10 4.486 10 10-4.486 10-10 10\"\n }));\n },\n symbols: function symbols() {\n return React.createElement(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 24 24\",\n width: \"24\",\n height: \"24\"\n }, React.createElement(\"path\", {\n d: \"M0 0h11v2H0zM4 11h3V6h4V4H0v2h4zM15.5 17c1.381 0 2.5-1.116 2.5-2.493s-1.119-2.493-2.5-2.493S13 13.13 13 14.507 14.119 17 15.5 17m0-2.986c.276 0 .5.222.5.493 0 .272-.224.493-.5.493s-.5-.221-.5-.493.224-.493.5-.493M21.5 19.014c-1.381 0-2.5 1.116-2.5 2.493S20.119 24 21.5 24s2.5-1.116 2.5-2.493-1.119-2.493-2.5-2.493m0 2.986a.497.497 0 0 1-.5-.493c0-.271.224-.493.5-.493s.5.222.5.493a.497.497 0 0 1-.5.493M22 13l-9 9 1.513 1.5 8.99-9.009zM17 11c2.209 0 4-1.119 4-2.5V2s.985-.161 1.498.949C23.01 4.055 23 6 23 6s1-1.119 1-3.135C24-.02 21 0 21 0h-2v6.347A5.853 5.853 0 0 0 17 6c-2.209 0-4 1.119-4 2.5s1.791 2.5 4 2.5M10.297 20.482l-1.475-1.585a47.54 47.54 0 0 1-1.442 1.129c-.307-.288-.989-1.016-2.045-2.183.902-.836 1.479-1.466 1.729-1.892s.376-.871.376-1.336c0-.592-.273-1.178-.818-1.759-.546-.581-1.329-.871-2.349-.871-1.008 0-1.79.293-2.344.879-.556.587-.832 1.181-.832 1.784 0 .813.419 1.748 1.256 2.805-.847.614-1.444 1.208-1.794 1.784a3.465 3.465 0 0 0-.523 1.833c0 .857.308 1.56.924 2.107.616.549 1.423.823 2.42.823 1.173 0 2.444-.379 3.813-1.137L8.235 24h2.819l-2.09-2.383 1.333-1.135zm-6.736-6.389a1.02 1.02 0 0 1 .73-.286c.31 0 .559.085.747.254a.849.849 0 0 1 .283.659c0 .518-.419 1.112-1.257 1.784-.536-.651-.805-1.231-.805-1.742a.901.901 0 0 1 .302-.669M3.74 22c-.427 0-.778-.116-1.057-.349-.279-.232-.418-.487-.418-.766 0-.594.509-1.288 1.527-2.083.968 1.134 1.717 1.946 2.248 2.438-.921.507-1.686.76-2.3.76\"\n }));\n }\n};\nvar search = {\n search: function search() {\n return React.createElement(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n width: \"13\",\n height: \"13\",\n viewBox: \"0 0 20 20\",\n opacity: \"0.5\"\n }, React.createElement(\"path\", {\n d: \"M12.9 14.32a8 8 0 1 1 1.41-1.41l5.35 5.33-1.42 1.42-5.33-5.34zM8 14A6 6 0 1 0 8 2a6 6 0 0 0 0 12z\"\n }));\n },\n \"delete\": function _delete() {\n return React.createElement(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n width: \"13\",\n height: \"13\",\n viewBox: \"0 0 20 20\",\n opacity: \"0.5\"\n }, React.createElement(\"path\", {\n d: \"M10 8.586L2.929 1.515 1.515 2.929 8.586 10l-7.071 7.071 1.414 1.414L10 11.414l7.071 7.071 1.414-1.414L11.414 10l7.071-7.071-1.414-1.414L10 8.586z\"\n }));\n }\n};\nexport { categories, search };","import PropTypes from 'prop-types';\nvar EmojiPropTypes = {\n data: PropTypes.object.isRequired,\n onOver: PropTypes.func,\n onLeave: PropTypes.func,\n onClick: PropTypes.func,\n fallback: PropTypes.func,\n backgroundImageFn: PropTypes.func,\n \"native\": PropTypes.bool,\n forceSize: PropTypes.bool,\n tooltip: PropTypes.bool,\n useButton: PropTypes.bool,\n skin: PropTypes.oneOf([1, 2, 3, 4, 5, 6]),\n sheetSize: PropTypes.oneOf([16, 20, 32, 64]),\n sheetColumns: PropTypes.number,\n sheetRows: PropTypes.number,\n set: PropTypes.oneOf(['apple', 'google', 'twitter', 'facebook']),\n size: PropTypes.number.isRequired,\n emoji: PropTypes.oneOfType([PropTypes.string, PropTypes.object]).isRequired\n};\nvar PickerPropTypes = {\n onClick: PropTypes.func,\n onSelect: PropTypes.func,\n onSkinChange: PropTypes.func,\n perLine: PropTypes.number,\n emojiSize: PropTypes.number,\n i18n: PropTypes.object,\n style: PropTypes.object,\n title: PropTypes.string,\n emoji: PropTypes.string,\n color: PropTypes.string,\n set: EmojiPropTypes.set,\n skin: EmojiPropTypes.skin,\n \"native\": PropTypes.bool,\n backgroundImageFn: EmojiPropTypes.backgroundImageFn,\n sheetSize: EmojiPropTypes.sheetSize,\n emojisToShowFilter: PropTypes.func,\n showPreview: PropTypes.bool,\n showSkinTones: PropTypes.bool,\n emojiTooltip: EmojiPropTypes.tooltip,\n useButton: EmojiPropTypes.useButton,\n theme: PropTypes.oneOf(['auto', 'light', 'dark']),\n include: PropTypes.arrayOf(PropTypes.string),\n exclude: PropTypes.arrayOf(PropTypes.string),\n recent: PropTypes.arrayOf(PropTypes.string),\n autoFocus: PropTypes.bool,\n enableFrequentEmojiSort: PropTypes.bool,\n custom: PropTypes.arrayOf(PropTypes.shape({\n name: PropTypes.string.isRequired,\n short_names: PropTypes.arrayOf(PropTypes.string).isRequired,\n emoticons: PropTypes.arrayOf(PropTypes.string),\n keywords: PropTypes.arrayOf(PropTypes.string),\n imageUrl: PropTypes.string,\n spriteUrl: PropTypes.string,\n sheet_x: PropTypes.number,\n sheet_y: PropTypes.number,\n size: PropTypes.number,\n sheetColumns: PropTypes.number,\n sheetRows: PropTypes.number\n })),\n skinEmoji: PropTypes.string,\n notFound: PropTypes.func,\n notFoundEmoji: PropTypes.string,\n icons: PropTypes.object\n};\nexport { EmojiPropTypes, PickerPropTypes };","import _classCallCheck from \"@babel/runtime/helpers/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/createClass\";\nimport _possibleConstructorReturn from \"@babel/runtime/helpers/possibleConstructorReturn\";\nimport _getPrototypeOf from \"@babel/runtime/helpers/getPrototypeOf\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/inherits\";\nimport React from 'react';\nimport PropTypes from 'prop-types';\n\nvar Anchors =\n/*#__PURE__*/\nfunction (_React$PureComponent) {\n _inherits(Anchors, _React$PureComponent);\n\n function Anchors(props) {\n var _this;\n\n _classCallCheck(this, Anchors);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(Anchors).call(this, props));\n var defaultCategory = props.categories.filter(function (category) {\n return category.first;\n })[0];\n _this.state = {\n selected: defaultCategory.name\n };\n _this.handleClick = _this.handleClick.bind(_assertThisInitialized(_this));\n return _this;\n }\n\n _createClass(Anchors, [{\n key: \"handleClick\",\n value: function handleClick(e) {\n var index = e.currentTarget.getAttribute('data-index');\n var _this$props = this.props,\n categories = _this$props.categories,\n onAnchorClick = _this$props.onAnchorClick;\n onAnchorClick(categories[index], index);\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this2 = this;\n\n var _this$props2 = this.props,\n categories = _this$props2.categories,\n color = _this$props2.color,\n i18n = _this$props2.i18n,\n icons = _this$props2.icons,\n selected = this.state.selected;\n return React.createElement(\"nav\", {\n className: \"emoji-mart-anchors\",\n \"aria-label\": i18n.categorieslabel\n }, categories.map(function (category, i) {\n var id = category.id,\n name = category.name,\n anchor = category.anchor,\n isSelected = name == selected;\n\n if (anchor === false) {\n return null;\n }\n\n var iconId = id.startsWith('custom-') ? 'custom' : id;\n return React.createElement(\"button\", {\n key: id,\n \"aria-label\": i18n.categories[iconId],\n title: i18n.categories[iconId],\n \"data-index\": i,\n type: 'button',\n onClick: _this2.handleClick,\n className: \"emoji-mart-anchor \".concat(isSelected ? 'emoji-mart-anchor-selected' : ''),\n style: {\n color: isSelected ? color : null\n }\n }, React.createElement(\"div\", {\n className: \"emoji-mart-anchor-icon\"\n }, icons.categories[iconId]()), React.createElement(\"span\", {\n className: \"emoji-mart-anchor-bar\",\n style: {\n backgroundColor: color\n }\n }));\n }));\n }\n }]);\n\n return Anchors;\n}(React.PureComponent);\n\nexport { Anchors as default };\nAnchors.propTypes\n/* remove-proptypes */\n= {\n categories: PropTypes.array,\n onAnchorClick: PropTypes.func,\n icons: PropTypes.object\n};\nAnchors.defaultProps = {\n categories: [],\n onAnchorClick: function onAnchorClick() {},\n icons: {}\n};","var EmojiDefaultProps = {\n skin: 1,\n set: 'apple',\n sheetSize: 64,\n sheetColumns: 57,\n sheetRows: 57,\n \"native\": false,\n forceSize: false,\n tooltip: false,\n useButton: true,\n backgroundImageFn: function backgroundImageFn(set, sheetSize) {\n return \"https://unpkg.com/emoji-datasource-\".concat(set, \"@\").concat(\"5.0.1\", \"/img/\").concat(set, \"/sheets-256/\").concat(sheetSize, \".png\");\n }\n};\nvar PickerDefaultProps = {\n onClick: function onClick() {},\n onSelect: function onSelect() {},\n onSkinChange: function onSkinChange() {},\n emojiSize: 24,\n perLine: 9,\n i18n: {},\n style: {},\n title: 'Emoji Mart™',\n emoji: 'department_store',\n color: '#ae65c5',\n set: EmojiDefaultProps.set,\n theme: 'light',\n skin: null,\n defaultSkin: EmojiDefaultProps.skin,\n \"native\": EmojiDefaultProps[\"native\"],\n sheetSize: EmojiDefaultProps.sheetSize,\n backgroundImageFn: EmojiDefaultProps.backgroundImageFn,\n emojisToShowFilter: null,\n showPreview: true,\n showSkinTones: true,\n emojiTooltip: EmojiDefaultProps.tooltip,\n useButton: EmojiDefaultProps.useButton,\n autoFocus: false,\n enableFrequentEmojiSort: false,\n custom: [],\n skinEmoji: '',\n notFound: function notFound() {},\n notFoundEmoji: 'sleuth_or_spy',\n icons: {}\n};\nexport { PickerDefaultProps, EmojiDefaultProps };","import _extends from \"@babel/runtime/helpers/extends\";\nimport _defineProperty from \"@babel/runtime/helpers/defineProperty\";\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport { getData, getSanitizedData, unifiedToNative } from '../../utils';\nimport { uncompress } from '../../utils/data';\nimport { EmojiPropTypes } from '../../utils/shared-props';\nimport { EmojiDefaultProps } from '../../utils/shared-default-props';\n\nvar _getData = function _getData(props) {\n var emoji = props.emoji,\n skin = props.skin,\n set = props.set,\n data = props.data;\n return getData(emoji, skin, set, data);\n};\n\nvar _getPosition = function _getPosition(props) {\n var _getData2 = _getData(props),\n sheet_x = _getData2.sheet_x,\n sheet_y = _getData2.sheet_y,\n multiplyX = 100 / (props.sheetColumns - 1),\n multiplyY = 100 / (props.sheetRows - 1);\n\n return \"\".concat(multiplyX * sheet_x, \"% \").concat(multiplyY * sheet_y, \"%\");\n};\n\nvar _getSanitizedData = function _getSanitizedData(props) {\n var emoji = props.emoji,\n skin = props.skin,\n set = props.set,\n data = props.data;\n return getSanitizedData(emoji, skin, set, data);\n};\n\nvar _handleClick = function _handleClick(e, props) {\n if (!props.onClick) {\n return;\n }\n\n var onClick = props.onClick,\n emoji = _getSanitizedData(props);\n\n onClick(emoji, e);\n};\n\nvar _handleOver = function _handleOver(e, props) {\n if (!props.onOver) {\n return;\n }\n\n var onOver = props.onOver,\n emoji = _getSanitizedData(props);\n\n onOver(emoji, e);\n};\n\nvar _handleLeave = function _handleLeave(e, props) {\n if (!props.onLeave) {\n return;\n }\n\n var onLeave = props.onLeave,\n emoji = _getSanitizedData(props);\n\n onLeave(emoji, e);\n};\n\nvar _isNumeric = function _isNumeric(value) {\n return !isNaN(value - parseFloat(value));\n};\n\nvar _convertStyleToCSS = function _convertStyleToCSS(style) {\n var div = document.createElement('div');\n\n for (var key in style) {\n var value = style[key];\n\n if (_isNumeric(value)) {\n value += 'px';\n }\n\n div.style[key] = value;\n }\n\n return div.getAttribute('style');\n};\n\nvar NimbleEmoji = function NimbleEmoji(props) {\n if (props.data.compressed) {\n uncompress(props.data);\n }\n\n for (var k in NimbleEmoji.defaultProps) {\n if (props[k] == undefined && NimbleEmoji.defaultProps[k] != undefined) {\n props[k] = NimbleEmoji.defaultProps[k];\n }\n }\n\n var data = _getData(props);\n\n if (!data) {\n if (props.fallback) {\n return props.fallback(null, props);\n } else {\n return null;\n }\n }\n\n var unified = data.unified,\n custom = data.custom,\n short_names = data.short_names,\n imageUrl = data.imageUrl,\n style = {},\n children = props.children,\n className = 'emoji-mart-emoji',\n nativeEmoji = unified && unifiedToNative(unified),\n label = [nativeEmoji].concat(short_names).filter(Boolean).join(', '),\n title = null;\n\n if (!unified && !custom) {\n if (props.fallback) {\n return props.fallback(data, props);\n } else {\n return null;\n }\n }\n\n if (props.tooltip) {\n title = short_names[0];\n }\n\n if (props[\"native\"] && unified) {\n className += ' emoji-mart-emoji-native';\n style = {\n fontSize: props.size\n };\n children = nativeEmoji;\n\n if (props.forceSize) {\n style.display = 'inline-block';\n style.width = props.size;\n style.height = props.size;\n style.wordBreak = 'keep-all';\n }\n } else if (custom) {\n className += ' emoji-mart-emoji-custom';\n style = {\n width: props.size,\n height: props.size,\n display: 'inline-block'\n };\n\n if (data.spriteUrl) {\n style = _objectSpread({}, style, {\n backgroundImage: \"url(\".concat(data.spriteUrl, \")\"),\n backgroundSize: \"\".concat(100 * props.sheetColumns, \"% \").concat(100 * props.sheetRows, \"%\"),\n backgroundPosition: _getPosition(props)\n });\n } else {\n style = _objectSpread({}, style, {\n backgroundImage: \"url(\".concat(imageUrl, \")\"),\n backgroundSize: 'contain',\n backgroundRepeat: 'no-repeat',\n backgroundPosition: 'center'\n });\n }\n } else {\n var setHasEmoji = data[\"has_img_\".concat(props.set)] == undefined || data[\"has_img_\".concat(props.set)];\n\n if (!setHasEmoji) {\n if (props.fallback) {\n return props.fallback(data, props);\n } else {\n return null;\n }\n } else {\n style = {\n width: props.size,\n height: props.size,\n display: 'inline-block',\n backgroundImage: \"url(\".concat(props.backgroundImageFn(props.set, props.sheetSize), \")\"),\n backgroundSize: \"\".concat(100 * props.sheetColumns, \"% \").concat(100 * props.sheetRows, \"%\"),\n backgroundPosition: _getPosition(props)\n };\n }\n }\n\n var Tag = {\n name: 'span',\n props: {}\n };\n\n if (props.onClick && props.useButton) {\n Tag.name = 'button';\n Tag.props = {\n type: 'button'\n };\n }\n\n if (props.html) {\n style = _convertStyleToCSS(style);\n return \"<\".concat(Tag.name, \" style='\").concat(style, \"' aria-label='\").concat(label, \"' \").concat(title ? \"title='\".concat(title, \"'\") : '', \" class='\").concat(className, \"'>\").concat(children || '', \"</\").concat(Tag.name, \">\");\n } else {\n return React.createElement(Tag.name, _extends({\n onClick: function onClick(e) {\n return _handleClick(e, props);\n },\n onMouseEnter: function onMouseEnter(e) {\n return _handleOver(e, props);\n },\n onMouseLeave: function onMouseLeave(e) {\n return _handleLeave(e, props);\n },\n \"aria-label\": label,\n title: title,\n className: className\n }, Tag.props), React.createElement(\"span\", {\n style: style\n }, children));\n }\n};\n\nNimbleEmoji.propTypes\n/* remove-proptypes */\n= _objectSpread({}, EmojiPropTypes, {\n data: PropTypes.object.isRequired\n});\nNimbleEmoji.defaultProps = EmojiDefaultProps;\nexport default NimbleEmoji;","import _defineProperty from \"@babel/runtime/helpers/defineProperty\";\nimport _classCallCheck from \"@babel/runtime/helpers/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/createClass\";\nimport _possibleConstructorReturn from \"@babel/runtime/helpers/possibleConstructorReturn\";\nimport _getPrototypeOf from \"@babel/runtime/helpers/getPrototypeOf\";\nimport _inherits from \"@babel/runtime/helpers/inherits\";\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport NimbleEmoji from './emoji/nimble-emoji';\n\nvar NotFound =\n/*#__PURE__*/\nfunction (_React$PureComponent) {\n _inherits(NotFound, _React$PureComponent);\n\n function NotFound() {\n _classCallCheck(this, NotFound);\n\n return _possibleConstructorReturn(this, _getPrototypeOf(NotFound).apply(this, arguments));\n }\n\n _createClass(NotFound, [{\n key: \"render\",\n value: function render() {\n var _this$props = this.props,\n data = _this$props.data,\n emojiProps = _this$props.emojiProps,\n i18n = _this$props.i18n,\n notFound = _this$props.notFound,\n notFoundEmoji = _this$props.notFoundEmoji;\n var component = notFound && notFound() || React.createElement(\"div\", {\n className: \"emoji-mart-no-results\"\n }, NimbleEmoji(_objectSpread({\n data: data\n }, emojiProps, {\n size: 38,\n emoji: notFoundEmoji,\n onOver: null,\n onLeave: null,\n onClick: null\n })), React.createElement(\"div\", {\n className: \"emoji-mart-no-results-label\"\n }, i18n.notfound));\n return component;\n }\n }]);\n\n return NotFound;\n}(React.PureComponent);\n\nexport { NotFound as default };\nNotFound.propTypes\n/* remove-proptypes */\n= {\n notFound: PropTypes.func.isRequired,\n emojiProps: PropTypes.object.isRequired\n};","import _defineProperty from \"@babel/runtime/helpers/defineProperty\";\nimport _classCallCheck from \"@babel/runtime/helpers/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/createClass\";\nimport _possibleConstructorReturn from \"@babel/runtime/helpers/possibleConstructorReturn\";\nimport _getPrototypeOf from \"@babel/runtime/helpers/getPrototypeOf\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/inherits\";\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport frequently from '../utils/frequently';\nimport { getData } from '../utils';\nimport NimbleEmoji from './emoji/nimble-emoji';\nimport NotFound from './not-found';\n\nvar Category =\n/*#__PURE__*/\nfunction (_React$Component) {\n _inherits(Category, _React$Component);\n\n function Category(props) {\n var _this;\n\n _classCallCheck(this, Category);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(Category).call(this, props));\n _this.data = props.data;\n _this.setContainerRef = _this.setContainerRef.bind(_assertThisInitialized(_this));\n _this.setLabelRef = _this.setLabelRef.bind(_assertThisInitialized(_this));\n return _this;\n }\n\n _createClass(Category, [{\n key: \"componentDidMount\",\n value: function componentDidMount() {\n this.margin = 0;\n this.minMargin = 0;\n this.memoizeSize();\n }\n }, {\n key: \"shouldComponentUpdate\",\n value: function shouldComponentUpdate(nextProps, nextState) {\n var _this$props = this.props,\n name = _this$props.name,\n perLine = _this$props.perLine,\n _native = _this$props[\"native\"],\n hasStickyPosition = _this$props.hasStickyPosition,\n emojis = _this$props.emojis,\n emojiProps = _this$props.emojiProps,\n skin = emojiProps.skin,\n size = emojiProps.size,\n set = emojiProps.set,\n nextPerLine = nextProps.perLine,\n nextNative = nextProps[\"native\"],\n nextHasStickyPosition = nextProps.hasStickyPosition,\n nextEmojis = nextProps.emojis,\n nextEmojiProps = nextProps.emojiProps,\n nextSkin = nextEmojiProps.skin,\n nextSize = nextEmojiProps.size,\n nextSet = nextEmojiProps.set,\n shouldUpdate = false;\n\n if (name == 'Recent' && perLine != nextPerLine) {\n shouldUpdate = true;\n }\n\n if (name == 'Search') {\n shouldUpdate = !(emojis == nextEmojis);\n }\n\n if (skin != nextSkin || size != nextSize || _native != nextNative || set != nextSet || hasStickyPosition != nextHasStickyPosition) {\n shouldUpdate = true;\n }\n\n return shouldUpdate;\n }\n }, {\n key: \"memoizeSize\",\n value: function memoizeSize() {\n if (!this.container) {\n // probably this is a test environment, e.g. jest\n this.top = 0;\n this.maxMargin = 0;\n return;\n }\n\n var parent = this.container.parentElement;\n\n var _this$container$getBo = this.container.getBoundingClientRect(),\n top = _this$container$getBo.top,\n height = _this$container$getBo.height;\n\n var _parent$getBoundingCl = parent.getBoundingClientRect(),\n parentTop = _parent$getBoundingCl.top;\n\n var _this$label$getBoundi = this.label.getBoundingClientRect(),\n labelHeight = _this$label$getBoundi.height;\n\n this.top = top - parentTop + parent.scrollTop;\n\n if (height == 0) {\n this.maxMargin = 0;\n } else {\n this.maxMargin = height - labelHeight;\n }\n }\n }, {\n key: \"handleScroll\",\n value: function handleScroll(scrollTop) {\n var margin = scrollTop - this.top;\n margin = margin < this.minMargin ? this.minMargin : margin;\n margin = margin > this.maxMargin ? this.maxMargin : margin;\n if (margin == this.margin) return;\n\n if (!this.props.hasStickyPosition) {\n this.label.style.top = \"\".concat(margin, \"px\");\n }\n\n this.margin = margin;\n return true;\n }\n }, {\n key: \"getEmojis\",\n value: function getEmojis() {\n var _this2 = this;\n\n var _this$props2 = this.props,\n name = _this$props2.name,\n emojis = _this$props2.emojis,\n recent = _this$props2.recent,\n perLine = _this$props2.perLine;\n\n if (name == 'Recent') {\n var custom = this.props.custom;\n var frequentlyUsed = recent || frequently.get(perLine);\n\n if (frequentlyUsed.length) {\n emojis = frequentlyUsed.map(function (id) {\n var emoji = custom.filter(function (e) {\n return e.id === id;\n })[0];\n\n if (emoji) {\n return emoji;\n }\n\n return id;\n }).filter(function (id) {\n return !!getData(id, null, null, _this2.data);\n });\n }\n\n if (emojis.length === 0 && frequentlyUsed.length > 0) {\n return null;\n }\n }\n\n if (emojis) {\n emojis = emojis.slice(0);\n }\n\n return emojis;\n }\n }, {\n key: \"updateDisplay\",\n value: function updateDisplay(display) {\n var emojis = this.getEmojis();\n\n if (!emojis || !this.container) {\n return;\n }\n\n this.container.style.display = display;\n }\n }, {\n key: \"setContainerRef\",\n value: function setContainerRef(c) {\n this.container = c;\n }\n }, {\n key: \"setLabelRef\",\n value: function setLabelRef(c) {\n this.label = c;\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this3 = this;\n\n var _this$props3 = this.props,\n id = _this$props3.id,\n name = _this$props3.name,\n hasStickyPosition = _this$props3.hasStickyPosition,\n emojiProps = _this$props3.emojiProps,\n i18n = _this$props3.i18n,\n notFound = _this$props3.notFound,\n notFoundEmoji = _this$props3.notFoundEmoji,\n emojis = this.getEmojis(),\n labelStyles = {},\n labelSpanStyles = {},\n containerStyles = {};\n\n if (!emojis) {\n containerStyles = {\n display: 'none'\n };\n }\n\n if (!hasStickyPosition) {\n labelStyles = {\n height: 28\n };\n labelSpanStyles = {\n position: 'absolute'\n };\n }\n\n var label = i18n.categories[id] || name;\n return React.createElement(\"section\", {\n ref: this.setContainerRef,\n className: \"emoji-mart-category\",\n \"aria-label\": label,\n style: containerStyles\n }, React.createElement(\"div\", {\n style: labelStyles,\n \"data-name\": name,\n className: \"emoji-mart-category-label\"\n }, React.createElement(\"span\", {\n style: labelSpanStyles,\n ref: this.setLabelRef,\n \"aria-hidden\": true\n /* already labeled by the section aria-label */\n\n }, label)), React.createElement(\"ul\", {\n className: \"emoji-mart-category-list\"\n }, emojis && emojis.map(function (emoji) {\n return React.createElement(\"li\", {\n key: emoji.short_names && emoji.short_names.join('_') || emoji\n }, NimbleEmoji(_objectSpread({\n emoji: emoji,\n data: _this3.data\n }, emojiProps)));\n })), emojis && !emojis.length && React.createElement(NotFound, {\n i18n: i18n,\n notFound: notFound,\n notFoundEmoji: notFoundEmoji,\n data: this.data,\n emojiProps: emojiProps\n }));\n }\n }]);\n\n return Category;\n}(React.Component);\n\nexport { Category as default };\nCategory.propTypes\n/* remove-proptypes */\n= {\n emojis: PropTypes.array,\n hasStickyPosition: PropTypes.bool,\n name: PropTypes.string.isRequired,\n \"native\": PropTypes.bool.isRequired,\n perLine: PropTypes.number.isRequired,\n emojiProps: PropTypes.object.isRequired,\n recent: PropTypes.arrayOf(PropTypes.string),\n notFound: PropTypes.func,\n notFoundEmoji: PropTypes.string.isRequired\n};\nCategory.defaultProps = {\n emojis: [],\n hasStickyPosition: true\n};","import _classCallCheck from \"@babel/runtime/helpers/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/createClass\";\nimport _possibleConstructorReturn from \"@babel/runtime/helpers/possibleConstructorReturn\";\nimport _getPrototypeOf from \"@babel/runtime/helpers/getPrototypeOf\";\nimport _inherits from \"@babel/runtime/helpers/inherits\";\nimport React from 'react';\nimport PropTypes from 'prop-types';\n\nvar Skins =\n/*#__PURE__*/\nfunction (_React$PureComponent) {\n _inherits(Skins, _React$PureComponent);\n\n function Skins(props) {\n var _this;\n\n _classCallCheck(this, Skins);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(Skins).call(this, props));\n _this.state = {\n opened: false\n };\n return _this;\n }\n\n _createClass(Skins, [{\n key: \"handleClick\",\n value: function handleClick(e) {\n var skin = parseInt(e.currentTarget.getAttribute('data-skin'));\n var onChange = this.props.onChange;\n\n if (!this.state.opened) {\n this.setState({\n opened: true\n });\n } else {\n this.setState({\n opened: false\n });\n\n if (skin != this.props.skin) {\n onChange(skin);\n }\n }\n }\n }, {\n key: \"render\",\n value: function render() {\n return null;\n }\n }]);\n\n return Skins;\n}(React.PureComponent);\n\nexport { Skins as default };\nSkins.propTypes\n/* remove-proptypes */\n= {\n onChange: PropTypes.func,\n skin: PropTypes.number.isRequired\n};\nSkins.defaultProps = {\n onChange: function onChange() {}\n};","import _classCallCheck from \"@babel/runtime/helpers/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/createClass\";\nimport _possibleConstructorReturn from \"@babel/runtime/helpers/possibleConstructorReturn\";\nimport _getPrototypeOf from \"@babel/runtime/helpers/getPrototypeOf\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/inherits\";\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport NimbleEmoji from './emoji/nimble-emoji';\nimport Skins from './skins';\n\nvar SkinsEmoji =\n/*#__PURE__*/\nfunction (_Skins) {\n _inherits(SkinsEmoji, _Skins);\n\n function SkinsEmoji(props) {\n var _this;\n\n _classCallCheck(this, SkinsEmoji);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(SkinsEmoji).call(this, props));\n _this.handleClick = _this.handleClick.bind(_assertThisInitialized(_this));\n return _this;\n }\n\n _createClass(SkinsEmoji, [{\n key: \"render\",\n value: function render() {\n var _this$props = this.props,\n skin = _this$props.skin,\n emojiProps = _this$props.emojiProps,\n data = _this$props.data,\n skinEmoji = _this$props.skinEmoji,\n i18n = _this$props.i18n;\n var opened = this.state.opened;\n var skinToneNodes = [];\n\n for (var skinTone = 1; skinTone <= 6; skinTone++) {\n var selected = skinTone === skin;\n skinToneNodes.push(React.createElement(\"span\", {\n key: \"skin-tone-\".concat(skinTone),\n className: \"emoji-mart-skin-swatch custom\".concat(selected ? ' selected' : '')\n }, React.createElement(\"span\", {\n onClick: this.handleClick,\n \"data-skin\": skinTone,\n className: \"emoji-mart-skin-tone-\".concat(skinTone)\n }, NimbleEmoji({\n emoji: skinEmoji,\n data: data,\n skin: skinTone,\n backgroundImageFn: emojiProps.backgroundImageFn,\n \"native\": emojiProps[\"native\"],\n set: emojiProps.set,\n sheetSize: emojiProps.sheetSize,\n size: 23\n }))));\n }\n\n return React.createElement(\"div\", {\n className: \"emoji-mart-skin-swatches custom\".concat(opened ? ' opened' : '')\n }, React.createElement(\"div\", {\n className: \"emoji-mart-skin-text\".concat(opened ? ' opened' : '')\n }, i18n.skintext), skinToneNodes);\n }\n }]);\n\n return SkinsEmoji;\n}(Skins);\n\nexport { SkinsEmoji as default };\nSkinsEmoji.propTypes\n/* remove-proptypes */\n= {\n onChange: PropTypes.func,\n skin: PropTypes.number.isRequired,\n emojiProps: PropTypes.object.isRequired,\n skinTone: PropTypes.number,\n skinEmoji: PropTypes.string.isRequired,\n i18n: PropTypes.object\n};\nSkinsEmoji.defaultProps = {\n onChange: function onChange() {},\n skinTone: null\n};","import _extends from \"@babel/runtime/helpers/extends\";\nimport _classCallCheck from \"@babel/runtime/helpers/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/createClass\";\nimport _possibleConstructorReturn from \"@babel/runtime/helpers/possibleConstructorReturn\";\nimport _getPrototypeOf from \"@babel/runtime/helpers/getPrototypeOf\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/inherits\";\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport Skins from './skins';\n\nvar SkinsDot =\n/*#__PURE__*/\nfunction (_Skins) {\n _inherits(SkinsDot, _Skins);\n\n function SkinsDot(props) {\n var _this;\n\n _classCallCheck(this, SkinsDot);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(SkinsDot).call(this, props));\n _this.handleClick = _this.handleClick.bind(_assertThisInitialized(_this));\n _this.handleKeyDown = _this.handleKeyDown.bind(_assertThisInitialized(_this));\n return _this;\n }\n\n _createClass(SkinsDot, [{\n key: \"handleKeyDown\",\n value: function handleKeyDown(event) {\n // if either enter or space is pressed, then execute\n if (event.keyCode === 13 || event.keyCode === 32) {\n event.preventDefault();\n this.handleClick(event);\n }\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this$props = this.props,\n skin = _this$props.skin,\n i18n = _this$props.i18n;\n var opened = this.state.opened;\n var skinToneNodes = [];\n\n for (var skinTone = 1; skinTone <= 6; skinTone++) {\n var selected = skinTone === skin;\n var visible = opened || selected;\n skinToneNodes.push(React.createElement(\"span\", _extends({\n key: \"skin-tone-\".concat(skinTone),\n className: \"emoji-mart-skin-swatch\".concat(selected ? ' selected' : ''),\n \"aria-label\": i18n.skintones[skinTone],\n \"aria-hidden\": !visible\n }, opened ? {\n role: 'menuitem'\n } : {}), React.createElement(\"span\", _extends({\n onClick: this.handleClick,\n onKeyDown: this.handleKeyDown,\n role: \"button\"\n }, selected ? {\n 'aria-haspopup': true,\n 'aria-expanded': !!opened\n } : {}, opened ? {\n 'aria-pressed': !!selected\n } : {}, {\n tabIndex: visible ? '0' : '',\n \"aria-label\": i18n.skintones[skinTone],\n title: i18n.skintones[skinTone],\n \"data-skin\": skinTone,\n className: \"emoji-mart-skin emoji-mart-skin-tone-\".concat(skinTone)\n }))));\n }\n\n return React.createElement(\"section\", {\n className: \"emoji-mart-skin-swatches\".concat(opened ? ' opened' : ''),\n \"aria-label\": i18n.skintext\n }, React.createElement(\"div\", opened ? {\n role: 'menubar'\n } : {}, skinToneNodes));\n }\n }]);\n\n return SkinsDot;\n}(Skins);\n\nexport { SkinsDot as default };\nSkinsDot.propTypes\n/* remove-proptypes */\n= {\n onChange: PropTypes.func,\n skin: PropTypes.number.isRequired,\n i18n: PropTypes.object\n};\nSkinsDot.defaultProps = {\n onChange: function onChange() {}\n};","import _defineProperty from \"@babel/runtime/helpers/defineProperty\";\nimport _classCallCheck from \"@babel/runtime/helpers/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/createClass\";\nimport _possibleConstructorReturn from \"@babel/runtime/helpers/possibleConstructorReturn\";\nimport _getPrototypeOf from \"@babel/runtime/helpers/getPrototypeOf\";\nimport _inherits from \"@babel/runtime/helpers/inherits\";\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport { getData } from '../utils';\nimport NimbleEmoji from './emoji/nimble-emoji';\nimport SkinsEmoji from './skins-emoji';\nimport SkinsDot from './skins-dot';\n\nvar Preview =\n/*#__PURE__*/\nfunction (_React$PureComponent) {\n _inherits(Preview, _React$PureComponent);\n\n function Preview(props) {\n var _this;\n\n _classCallCheck(this, Preview);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(Preview).call(this, props));\n _this.data = props.data;\n _this.state = {\n emoji: null\n };\n return _this;\n }\n\n _createClass(Preview, [{\n key: \"render\",\n value: function render() {\n var emoji = this.state.emoji,\n _this$props = this.props,\n emojiProps = _this$props.emojiProps,\n skinsProps = _this$props.skinsProps,\n showSkinTones = _this$props.showSkinTones,\n title = _this$props.title,\n idleEmoji = _this$props.emoji,\n i18n = _this$props.i18n,\n showPreview = _this$props.showPreview;\n\n if (emoji && showPreview) {\n var emojiData = getData(emoji, null, null, this.data),\n _emojiData$emoticons = emojiData.emoticons,\n emoticons = _emojiData$emoticons === void 0 ? [] : _emojiData$emoticons,\n knownEmoticons = [],\n listedEmoticons = [];\n emoticons.forEach(function (emoticon) {\n if (knownEmoticons.indexOf(emoticon.toLowerCase()) >= 0) {\n return;\n }\n\n knownEmoticons.push(emoticon.toLowerCase());\n listedEmoticons.push(emoticon);\n });\n return React.createElement(\"div\", {\n className: \"emoji-mart-preview\"\n }, React.createElement(\"div\", {\n className: \"emoji-mart-preview-emoji\",\n \"aria-hidden\": \"true\"\n }, NimbleEmoji(_objectSpread({\n key: emoji.id,\n emoji: emoji,\n data: this.data\n }, emojiProps))), React.createElement(\"div\", {\n className: \"emoji-mart-preview-data\",\n \"aria-hidden\": \"true\"\n }, React.createElement(\"div\", {\n className: \"emoji-mart-preview-name\"\n }, emoji.name), React.createElement(\"div\", {\n className: \"emoji-mart-preview-shortnames\"\n }, emojiData.short_names.map(function (short_name) {\n return React.createElement(\"span\", {\n key: short_name,\n className: \"emoji-mart-preview-shortname\"\n }, \":\", short_name, \":\");\n })), React.createElement(\"div\", {\n className: \"emoji-mart-preview-emoticons\"\n }, listedEmoticons.map(function (emoticon) {\n return React.createElement(\"span\", {\n key: emoticon,\n className: \"emoji-mart-preview-emoticon\"\n }, emoticon);\n }))));\n } else {\n return React.createElement(\"div\", {\n className: \"emoji-mart-preview\"\n }, React.createElement(\"div\", {\n className: \"emoji-mart-preview-emoji\",\n \"aria-hidden\": \"true\"\n }, idleEmoji && idleEmoji.length && NimbleEmoji(_objectSpread({\n emoji: idleEmoji,\n data: this.data\n }, emojiProps))), React.createElement(\"div\", {\n className: \"emoji-mart-preview-data\",\n \"aria-hidden\": \"true\"\n }, React.createElement(\"span\", {\n className: \"emoji-mart-title-label\"\n }, title)), showSkinTones && React.createElement(\"div\", {\n className: \"emoji-mart-preview-skins\".concat(skinsProps.skinEmoji ? ' custom' : '')\n }, skinsProps.skinEmoji ? React.createElement(SkinsEmoji, {\n skin: skinsProps.skin,\n emojiProps: emojiProps,\n data: this.data,\n skinEmoji: skinsProps.skinEmoji,\n i18n: i18n,\n onChange: skinsProps.onChange\n }) : React.createElement(SkinsDot, {\n skin: skinsProps.skin,\n i18n: i18n,\n onChange: skinsProps.onChange\n })));\n }\n }\n }]);\n\n return Preview;\n}(React.PureComponent);\n\nexport { Preview as default };\nPreview.propTypes\n/* remove-proptypes */\n= {\n showSkinTones: PropTypes.bool,\n title: PropTypes.string.isRequired,\n emoji: PropTypes.string.isRequired,\n emojiProps: PropTypes.object.isRequired,\n skinsProps: PropTypes.object.isRequired\n};\nPreview.defaultProps = {\n showSkinTones: true,\n onChange: function onChange() {}\n};","import _classCallCheck from \"@babel/runtime/helpers/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/createClass\";\nimport _possibleConstructorReturn from \"@babel/runtime/helpers/possibleConstructorReturn\";\nimport _getPrototypeOf from \"@babel/runtime/helpers/getPrototypeOf\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/inherits\";\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport { search as icons } from '../svgs';\nimport NimbleEmojiIndex from '../utils/emoji-index/nimble-emoji-index';\nimport { throttleIdleTask } from '../utils/index';\nvar id = 0;\n\nvar Search =\n/*#__PURE__*/\nfunction (_React$PureComponent) {\n _inherits(Search, _React$PureComponent);\n\n function Search(props) {\n var _this;\n\n _classCallCheck(this, Search);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(Search).call(this, props));\n _this.state = {\n icon: icons.search,\n isSearching: false,\n id: ++id\n };\n _this.data = props.data;\n _this.emojiIndex = new NimbleEmojiIndex(_this.data);\n _this.setRef = _this.setRef.bind(_assertThisInitialized(_this));\n _this.clear = _this.clear.bind(_assertThisInitialized(_this));\n _this.handleKeyUp = _this.handleKeyUp.bind(_assertThisInitialized(_this)); // throttle keyboard input so that typing isn't delayed\n\n _this.handleChange = throttleIdleTask(_this.handleChange.bind(_assertThisInitialized(_this)));\n return _this;\n }\n\n _createClass(Search, [{\n key: \"componentDidMount\",\n value: function componentDidMount() {\n // in some cases (e.g. preact) the input may already be pre-populated\n // this.input is undefined in Jest tests\n if (this.input && this.input.value) {\n this.search(this.input.value);\n }\n }\n }, {\n key: \"search\",\n value: function search(value) {\n if (value == '') this.setState({\n icon: icons.search,\n isSearching: false\n });else this.setState({\n icon: icons[\"delete\"],\n isSearching: true\n });\n this.props.onSearch(this.emojiIndex.search(value, {\n emojisToShowFilter: this.props.emojisToShowFilter,\n maxResults: this.props.maxResults,\n include: this.props.include,\n exclude: this.props.exclude,\n custom: this.props.custom\n }));\n }\n }, {\n key: \"clear\",\n value: function clear() {\n if (this.input.value == '') return;\n this.input.value = '';\n this.input.focus();\n this.search('');\n }\n }, {\n key: \"handleChange\",\n value: function handleChange() {\n if (this.input) {\n this.search(this.input.value);\n }\n }\n }, {\n key: \"handleKeyUp\",\n value: function handleKeyUp(e) {\n if (e.keyCode === 13) {\n this.clear();\n }\n }\n }, {\n key: \"setRef\",\n value: function setRef(c) {\n this.input = c;\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this$props = this.props,\n i18n = _this$props.i18n,\n autoFocus = _this$props.autoFocus;\n var _this$state = this.state,\n icon = _this$state.icon,\n isSearching = _this$state.isSearching,\n id = _this$state.id;\n var inputId = \"emoji-mart-search-\".concat(id);\n return React.createElement(\"section\", {\n className: \"emoji-mart-search\",\n \"aria-label\": i18n.search\n }, React.createElement(\"input\", {\n id: inputId,\n ref: this.setRef,\n type: \"search\",\n onChange: this.handleChange,\n placeholder: i18n.search,\n autoFocus: autoFocus\n }), React.createElement(\"label\", {\n className: \"emoji-mart-sr-only\",\n htmlFor: inputId\n }, i18n.search), React.createElement(\"button\", {\n className: \"emoji-mart-search-icon\",\n onClick: this.clear,\n onKeyUp: this.handleKeyUp,\n \"aria-label\": i18n.clear,\n disabled: !isSearching\n }, icon()));\n }\n }]);\n\n return Search;\n}(React.PureComponent);\n\nexport { Search as default };\nSearch.propTypes\n/* remove-proptypes */\n= {\n onSearch: PropTypes.func,\n maxResults: PropTypes.number,\n emojisToShowFilter: PropTypes.func,\n autoFocus: PropTypes.bool\n};\nSearch.defaultProps = {\n onSearch: function onSearch() {},\n maxResults: 75,\n emojisToShowFilter: null,\n autoFocus: false\n};","import _defineProperty from \"@babel/runtime/helpers/defineProperty\";\nimport _classCallCheck from \"@babel/runtime/helpers/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/createClass\";\nimport _possibleConstructorReturn from \"@babel/runtime/helpers/possibleConstructorReturn\";\nimport _getPrototypeOf from \"@babel/runtime/helpers/getPrototypeOf\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/inherits\";\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport * as icons from '../../svgs';\nimport store from '../../utils/store';\nimport frequently from '../../utils/frequently';\nimport { deepMerge, measureScrollbar, getSanitizedData } from '../../utils';\nimport { uncompress } from '../../utils/data';\nimport { PickerPropTypes } from '../../utils/shared-props';\nimport Anchors from '../anchors';\nimport Category from '../category';\nimport Preview from '../preview';\nimport Search from '../search';\nimport { PickerDefaultProps } from '../../utils/shared-default-props';\nvar I18N = {\n search: 'Search',\n clear: 'Clear',\n // Accessible label on \"clear\" button\n notfound: 'No Emoji Found',\n skintext: 'Choose your default skin tone',\n categories: {\n search: 'Search Results',\n recent: 'Frequently Used',\n people: 'Smileys & People',\n nature: 'Animals & Nature',\n foods: 'Food & Drink',\n activity: 'Activity',\n places: 'Travel & Places',\n objects: 'Objects',\n symbols: 'Symbols',\n flags: 'Flags',\n custom: 'Custom'\n },\n categorieslabel: 'Emoji categories',\n // Accessible title for the list of categories\n skintones: {\n 1: 'Default Skin Tone',\n 2: 'Light Skin Tone',\n 3: 'Medium-Light Skin Tone',\n 4: 'Medium Skin Tone',\n 5: 'Medium-Dark Skin Tone',\n 6: 'Dark Skin Tone'\n }\n};\n\nvar NimblePicker =\n/*#__PURE__*/\nfunction (_React$PureComponent) {\n _inherits(NimblePicker, _React$PureComponent);\n\n function NimblePicker(props) {\n var _this;\n\n _classCallCheck(this, NimblePicker);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(NimblePicker).call(this, props));\n _this.CUSTOM = [];\n _this.RECENT_CATEGORY = {\n id: 'recent',\n name: 'Recent',\n emojis: null\n };\n _this.SEARCH_CATEGORY = {\n id: 'search',\n name: 'Search',\n emojis: null,\n anchor: false\n };\n\n if (props.data.compressed) {\n uncompress(props.data);\n }\n\n _this.data = props.data;\n _this.i18n = deepMerge(I18N, props.i18n);\n _this.icons = deepMerge(icons, props.icons);\n _this.state = {\n firstRender: true\n };\n _this.categories = [];\n var allCategories = [].concat(_this.data.categories);\n\n if (props.custom.length > 0) {\n var customCategories = {};\n var customCategoriesCreated = 0;\n props.custom.forEach(function (emoji) {\n if (!customCategories[emoji.customCategory]) {\n customCategories[emoji.customCategory] = {\n id: emoji.customCategory ? \"custom-\".concat(emoji.customCategory) : 'custom',\n name: emoji.customCategory || 'Custom',\n emojis: [],\n anchor: customCategoriesCreated === 0\n };\n customCategoriesCreated++;\n }\n\n var category = customCategories[emoji.customCategory];\n\n var customEmoji = _objectSpread({}, emoji, {\n // `<Category />` expects emoji to have an `id`.\n id: emoji.short_names[0],\n custom: true\n });\n\n category.emojis.push(customEmoji);\n\n _this.CUSTOM.push(customEmoji);\n });\n allCategories = allCategories.concat(Object.keys(customCategories).map(function (key) {\n return customCategories[key];\n }));\n }\n\n _this.hideRecent = true;\n\n if (props.include != undefined) {\n allCategories.sort(function (a, b) {\n if (props.include.indexOf(a.id) > props.include.indexOf(b.id)) {\n return 1;\n }\n\n return -1;\n });\n }\n\n for (var categoryIndex = 0; categoryIndex < allCategories.length; categoryIndex++) {\n var category = allCategories[categoryIndex];\n var isIncluded = props.include && props.include.length ? props.include.indexOf(category.id) > -1 : true;\n var isExcluded = props.exclude && props.exclude.length ? props.exclude.indexOf(category.id) > -1 : false;\n\n if (!isIncluded || isExcluded) {\n continue;\n }\n\n if (props.emojisToShowFilter) {\n var newEmojis = [];\n var emojis = category.emojis;\n\n for (var emojiIndex = 0; emojiIndex < emojis.length; emojiIndex++) {\n var emoji = emojis[emojiIndex];\n\n if (props.emojisToShowFilter(_this.data.emojis[emoji] || emoji)) {\n newEmojis.push(emoji);\n }\n }\n\n if (newEmojis.length) {\n var newCategory = {\n emojis: newEmojis,\n name: category.name,\n id: category.id\n };\n\n _this.categories.push(newCategory);\n }\n } else {\n _this.categories.push(category);\n }\n }\n\n var includeRecent = props.include && props.include.length ? props.include.indexOf(_this.RECENT_CATEGORY.id) > -1 : true;\n var excludeRecent = props.exclude && props.exclude.length ? props.exclude.indexOf(_this.RECENT_CATEGORY.id) > -1 : false;\n\n if (includeRecent && !excludeRecent) {\n _this.hideRecent = false;\n\n _this.categories.unshift(_this.RECENT_CATEGORY);\n }\n\n if (_this.categories[0]) {\n _this.categories[0].first = true;\n }\n\n _this.categories.unshift(_this.SEARCH_CATEGORY);\n\n _this.setAnchorsRef = _this.setAnchorsRef.bind(_assertThisInitialized(_this));\n _this.handleAnchorClick = _this.handleAnchorClick.bind(_assertThisInitialized(_this));\n _this.setSearchRef = _this.setSearchRef.bind(_assertThisInitialized(_this));\n _this.handleSearch = _this.handleSearch.bind(_assertThisInitialized(_this));\n _this.setScrollRef = _this.setScrollRef.bind(_assertThisInitialized(_this));\n _this.handleScroll = _this.handleScroll.bind(_assertThisInitialized(_this));\n _this.handleScrollPaint = _this.handleScrollPaint.bind(_assertThisInitialized(_this));\n _this.handleEmojiOver = _this.handleEmojiOver.bind(_assertThisInitialized(_this));\n _this.handleEmojiLeave = _this.handleEmojiLeave.bind(_assertThisInitialized(_this));\n _this.handleEmojiClick = _this.handleEmojiClick.bind(_assertThisInitialized(_this));\n _this.handleEmojiSelect = _this.handleEmojiSelect.bind(_assertThisInitialized(_this));\n _this.setPreviewRef = _this.setPreviewRef.bind(_assertThisInitialized(_this));\n _this.handleSkinChange = _this.handleSkinChange.bind(_assertThisInitialized(_this));\n _this.handleKeyDown = _this.handleKeyDown.bind(_assertThisInitialized(_this));\n _this.handleDarkMatchMediaChange = _this.handleDarkMatchMediaChange.bind(_assertThisInitialized(_this));\n return _this;\n }\n\n _createClass(NimblePicker, [{\n key: \"componentDidMount\",\n value: function componentDidMount() {\n var _this2 = this;\n\n if (this.state.firstRender) {\n this.testStickyPosition();\n this.firstRenderTimeout = setTimeout(function () {\n _this2.setState({\n firstRender: false\n });\n }, 60);\n }\n }\n }, {\n key: \"componentDidUpdate\",\n value: function componentDidUpdate() {\n this.updateCategoriesSize();\n this.handleScroll();\n }\n }, {\n key: \"componentWillUnmount\",\n value: function componentWillUnmount() {\n this.SEARCH_CATEGORY.emojis = null;\n clearTimeout(this.leaveTimeout);\n clearTimeout(this.firstRenderTimeout);\n\n if (this.darkMatchMedia) {\n this.darkMatchMedia.removeListener(this.handleDarkMatchMediaChange);\n }\n }\n }, {\n key: \"testStickyPosition\",\n value: function testStickyPosition() {\n var stickyTestElement = document.createElement('div');\n var prefixes = ['', '-webkit-', '-ms-', '-moz-', '-o-'];\n prefixes.forEach(function (prefix) {\n return stickyTestElement.style.position = \"\".concat(prefix, \"sticky\");\n });\n this.hasStickyPosition = !!stickyTestElement.style.position.length;\n }\n }, {\n key: \"getPreferredTheme\",\n value: function getPreferredTheme() {\n if (this.props.theme != 'auto') return this.props.theme;\n if (this.state.theme) return this.state.theme;\n if (typeof matchMedia !== 'function') return PickerDefaultProps.theme;\n\n if (!this.darkMatchMedia) {\n this.darkMatchMedia = matchMedia('(prefers-color-scheme: dark)');\n this.darkMatchMedia.addListener(this.handleDarkMatchMediaChange);\n }\n\n if (this.darkMatchMedia.media.match(/^not/)) return PickerDefaultProps.theme;\n return this.darkMatchMedia.matches ? 'dark' : 'light';\n }\n }, {\n key: \"handleDarkMatchMediaChange\",\n value: function handleDarkMatchMediaChange() {\n this.setState({\n theme: this.darkMatchMedia.matches ? 'dark' : 'light'\n });\n }\n }, {\n key: \"handleEmojiOver\",\n value: function handleEmojiOver(emoji) {\n var preview = this.preview;\n\n if (!preview) {\n return;\n } // Use Array.prototype.find() when it is more widely supported.\n\n\n var emojiData = this.CUSTOM.filter(function (customEmoji) {\n return customEmoji.id === emoji.id;\n })[0];\n\n for (var key in emojiData) {\n if (emojiData.hasOwnProperty(key)) {\n emoji[key] = emojiData[key];\n }\n }\n\n preview.setState({\n emoji: emoji\n });\n clearTimeout(this.leaveTimeout);\n }\n }, {\n key: \"handleEmojiLeave\",\n value: function handleEmojiLeave(emoji) {\n var preview = this.preview;\n\n if (!preview) {\n return;\n }\n\n this.leaveTimeout = setTimeout(function () {\n preview.setState({\n emoji: null\n });\n }, 16);\n }\n }, {\n key: \"handleEmojiClick\",\n value: function handleEmojiClick(emoji, e) {\n this.props.onClick(emoji, e);\n this.handleEmojiSelect(emoji);\n }\n }, {\n key: \"handleEmojiSelect\",\n value: function handleEmojiSelect(emoji) {\n var _this3 = this;\n\n this.props.onSelect(emoji);\n if (!this.hideRecent && !this.props.recent) frequently.add(emoji);\n var component = this.categoryRefs['category-1'];\n\n if (component) {\n var maxMargin = component.maxMargin;\n\n if (this.props.enableFrequentEmojiSort) {\n component.forceUpdate();\n }\n\n requestAnimationFrame(function () {\n if (!_this3.scroll) return;\n component.memoizeSize();\n if (maxMargin == component.maxMargin) return;\n\n _this3.updateCategoriesSize();\n\n _this3.handleScrollPaint();\n\n if (_this3.SEARCH_CATEGORY.emojis) {\n component.updateDisplay('none');\n }\n });\n }\n }\n }, {\n key: \"handleScroll\",\n value: function handleScroll() {\n if (!this.waitingForPaint) {\n this.waitingForPaint = true;\n requestAnimationFrame(this.handleScrollPaint);\n }\n }\n }, {\n key: \"handleScrollPaint\",\n value: function handleScrollPaint() {\n this.waitingForPaint = false;\n\n if (!this.scroll) {\n return;\n }\n\n var activeCategory = null;\n\n if (this.SEARCH_CATEGORY.emojis) {\n activeCategory = this.SEARCH_CATEGORY;\n } else {\n var target = this.scroll,\n scrollTop = target.scrollTop,\n scrollingDown = scrollTop > (this.scrollTop || 0),\n minTop = 0;\n\n for (var i = 0, l = this.categories.length; i < l; i++) {\n var ii = scrollingDown ? this.categories.length - 1 - i : i,\n category = this.categories[ii],\n component = this.categoryRefs[\"category-\".concat(ii)];\n\n if (component) {\n var active = component.handleScroll(scrollTop);\n\n if (!minTop || component.top < minTop) {\n if (component.top > 0) {\n minTop = component.top;\n }\n }\n\n if (active && !activeCategory) {\n activeCategory = category;\n }\n }\n }\n\n if (scrollTop < minTop) {\n activeCategory = this.categories.filter(function (category) {\n return !(category.anchor === false);\n })[0];\n } else if (scrollTop + this.clientHeight >= this.scrollHeight) {\n activeCategory = this.categories[this.categories.length - 1];\n }\n }\n\n if (activeCategory) {\n var anchors = this.anchors,\n _activeCategory = activeCategory,\n categoryName = _activeCategory.name;\n\n if (anchors.state.selected != categoryName) {\n anchors.setState({\n selected: categoryName\n });\n }\n }\n\n this.scrollTop = scrollTop;\n }\n }, {\n key: \"handleSearch\",\n value: function handleSearch(emojis) {\n this.SEARCH_CATEGORY.emojis = emojis;\n\n for (var i = 0, l = this.categories.length; i < l; i++) {\n var component = this.categoryRefs[\"category-\".concat(i)];\n\n if (component && component.props.name != 'Search') {\n var display = emojis ? 'none' : 'inherit';\n component.updateDisplay(display);\n }\n }\n\n this.forceUpdate();\n\n if (this.scroll) {\n this.scroll.scrollTop = 0;\n }\n\n this.handleScroll();\n }\n }, {\n key: \"handleAnchorClick\",\n value: function handleAnchorClick(category, i) {\n var component = this.categoryRefs[\"category-\".concat(i)],\n scroll = this.scroll,\n anchors = this.anchors,\n scrollToComponent = null;\n\n scrollToComponent = function scrollToComponent() {\n if (component) {\n var top = component.top;\n\n if (category.first) {\n top = 0;\n } else {\n top += 1;\n }\n\n scroll.scrollTop = top;\n }\n };\n\n if (this.SEARCH_CATEGORY.emojis) {\n this.handleSearch(null);\n this.search.clear();\n requestAnimationFrame(scrollToComponent);\n } else {\n scrollToComponent();\n }\n }\n }, {\n key: \"handleSkinChange\",\n value: function handleSkinChange(skin) {\n var newState = {\n skin: skin\n },\n onSkinChange = this.props.onSkinChange;\n this.setState(newState);\n store.update(newState);\n onSkinChange(skin);\n }\n }, {\n key: \"handleKeyDown\",\n value: function handleKeyDown(e) {\n var handled = false;\n\n switch (e.keyCode) {\n case 13:\n var emoji;\n\n if (this.SEARCH_CATEGORY.emojis && this.SEARCH_CATEGORY.emojis.length && (emoji = getSanitizedData(this.SEARCH_CATEGORY.emojis[0], this.state.skin, this.props.set, this.props.data))) {\n this.handleEmojiSelect(emoji);\n handled = true;\n }\n\n break;\n }\n\n if (handled) {\n e.preventDefault();\n }\n }\n }, {\n key: \"updateCategoriesSize\",\n value: function updateCategoriesSize() {\n for (var i = 0, l = this.categories.length; i < l; i++) {\n var component = this.categoryRefs[\"category-\".concat(i)];\n if (component) component.memoizeSize();\n }\n\n if (this.scroll) {\n var target = this.scroll;\n this.scrollHeight = target.scrollHeight;\n this.clientHeight = target.clientHeight;\n }\n }\n }, {\n key: \"getCategories\",\n value: function getCategories() {\n return this.state.firstRender ? this.categories.slice(0, 3) : this.categories;\n }\n }, {\n key: \"setAnchorsRef\",\n value: function setAnchorsRef(c) {\n this.anchors = c;\n }\n }, {\n key: \"setSearchRef\",\n value: function setSearchRef(c) {\n this.search = c;\n }\n }, {\n key: \"setPreviewRef\",\n value: function setPreviewRef(c) {\n this.preview = c;\n }\n }, {\n key: \"setScrollRef\",\n value: function setScrollRef(c) {\n this.scroll = c;\n }\n }, {\n key: \"setCategoryRef\",\n value: function setCategoryRef(name, c) {\n if (!this.categoryRefs) {\n this.categoryRefs = {};\n }\n\n this.categoryRefs[name] = c;\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this4 = this;\n\n var _this$props = this.props,\n perLine = _this$props.perLine,\n emojiSize = _this$props.emojiSize,\n set = _this$props.set,\n sheetSize = _this$props.sheetSize,\n sheetColumns = _this$props.sheetColumns,\n sheetRows = _this$props.sheetRows,\n style = _this$props.style,\n title = _this$props.title,\n emoji = _this$props.emoji,\n color = _this$props.color,\n _native = _this$props[\"native\"],\n backgroundImageFn = _this$props.backgroundImageFn,\n emojisToShowFilter = _this$props.emojisToShowFilter,\n showPreview = _this$props.showPreview,\n showSkinTones = _this$props.showSkinTones,\n emojiTooltip = _this$props.emojiTooltip,\n useButton = _this$props.useButton,\n include = _this$props.include,\n exclude = _this$props.exclude,\n recent = _this$props.recent,\n autoFocus = _this$props.autoFocus,\n skinEmoji = _this$props.skinEmoji,\n notFound = _this$props.notFound,\n notFoundEmoji = _this$props.notFoundEmoji;\n var width = perLine * (emojiSize + 12) + 12 + 2 + measureScrollbar();\n var theme = this.getPreferredTheme();\n var skin = this.props.skin || this.state.skin || store.get('skin') || this.props.defaultSkin;\n return React.createElement(\"section\", {\n style: _objectSpread({\n width: width\n }, style),\n className: \"emoji-mart emoji-mart-\".concat(theme),\n \"aria-label\": title,\n onKeyDown: this.handleKeyDown\n }, React.createElement(\"div\", {\n className: \"emoji-mart-bar\"\n }, React.createElement(Anchors, {\n ref: this.setAnchorsRef,\n data: this.data,\n i18n: this.i18n,\n color: color,\n categories: this.categories,\n onAnchorClick: this.handleAnchorClick,\n icons: this.icons\n })), React.createElement(Search, {\n ref: this.setSearchRef,\n onSearch: this.handleSearch,\n data: this.data,\n i18n: this.i18n,\n emojisToShowFilter: emojisToShowFilter,\n include: include,\n exclude: exclude,\n custom: this.CUSTOM,\n autoFocus: autoFocus\n }), React.createElement(\"div\", {\n ref: this.setScrollRef,\n className: \"emoji-mart-scroll\",\n onScroll: this.handleScroll\n }, this.getCategories().map(function (category, i) {\n return React.createElement(Category, {\n ref: _this4.setCategoryRef.bind(_this4, \"category-\".concat(i)),\n key: category.name,\n id: category.id,\n name: category.name,\n emojis: category.emojis,\n perLine: perLine,\n \"native\": _native,\n hasStickyPosition: _this4.hasStickyPosition,\n data: _this4.data,\n i18n: _this4.i18n,\n recent: category.id == _this4.RECENT_CATEGORY.id ? recent : undefined,\n custom: category.id == _this4.RECENT_CATEGORY.id ? _this4.CUSTOM : undefined,\n emojiProps: {\n \"native\": _native,\n skin: skin,\n size: emojiSize,\n set: set,\n sheetSize: sheetSize,\n sheetColumns: sheetColumns,\n sheetRows: sheetRows,\n forceSize: _native,\n tooltip: emojiTooltip,\n backgroundImageFn: backgroundImageFn,\n useButton: useButton,\n onOver: _this4.handleEmojiOver,\n onLeave: _this4.handleEmojiLeave,\n onClick: _this4.handleEmojiClick\n },\n notFound: notFound,\n notFoundEmoji: notFoundEmoji\n });\n })), (showPreview || showSkinTones) && React.createElement(\"div\", {\n className: \"emoji-mart-bar\"\n }, React.createElement(Preview, {\n ref: this.setPreviewRef,\n data: this.data,\n title: title,\n emoji: emoji,\n showSkinTones: showSkinTones,\n showPreview: showPreview,\n emojiProps: {\n \"native\": _native,\n size: 38,\n skin: skin,\n set: set,\n sheetSize: sheetSize,\n sheetColumns: sheetColumns,\n sheetRows: sheetRows,\n backgroundImageFn: backgroundImageFn\n },\n skinsProps: {\n skin: skin,\n onChange: this.handleSkinChange,\n skinEmoji: skinEmoji\n },\n i18n: this.i18n\n })));\n }\n }]);\n\n return NimblePicker;\n}(React.PureComponent);\n\nexport { NimblePicker as default };\nNimblePicker.propTypes\n/* remove-proptypes */\n= _objectSpread({}, PickerPropTypes, {\n data: PropTypes.object.isRequired\n});\nNimblePicker.defaultProps = _objectSpread({}, PickerDefaultProps);","import _defineProperty from \"@babel/runtime/helpers/defineProperty\";\nimport _extends from \"@babel/runtime/helpers/extends\";\nimport _classCallCheck from \"@babel/runtime/helpers/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/createClass\";\nimport _possibleConstructorReturn from \"@babel/runtime/helpers/possibleConstructorReturn\";\nimport _getPrototypeOf from \"@babel/runtime/helpers/getPrototypeOf\";\nimport _inherits from \"@babel/runtime/helpers/inherits\";\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nimport React from 'react';\nimport data from '../../../data/all.json';\nimport NimblePicker from './nimble-picker';\nimport { PickerPropTypes } from '../../utils/shared-props';\nimport { PickerDefaultProps } from '../../utils/shared-default-props';\n\nvar Picker =\n/*#__PURE__*/\nfunction (_React$PureComponent) {\n _inherits(Picker, _React$PureComponent);\n\n function Picker() {\n _classCallCheck(this, Picker);\n\n return _possibleConstructorReturn(this, _getPrototypeOf(Picker).apply(this, arguments));\n }\n\n _createClass(Picker, [{\n key: \"render\",\n value: function render() {\n return React.createElement(NimblePicker, _extends({}, this.props, this.state));\n }\n }]);\n\n return Picker;\n}(React.PureComponent);\n\nexport { Picker as default };\nPicker.propTypes\n/* remove-proptypes */\n= PickerPropTypes;\nPicker.defaultProps = _objectSpread({}, PickerDefaultProps, {\n data: data\n});","import _defineProperty from \"@babel/runtime/helpers/defineProperty\";\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nimport React from 'react';\nimport data from '../../../data/all.json';\nimport NimbleEmoji from './nimble-emoji';\nimport { EmojiPropTypes } from '../../utils/shared-props';\nimport { EmojiDefaultProps } from '../../utils/shared-default-props';\n\nvar Emoji = function Emoji(props) {\n for (var k in Emoji.defaultProps) {\n if (props[k] == undefined && Emoji.defaultProps[k] != undefined) {\n props[k] = Emoji.defaultProps[k];\n }\n }\n\n return NimbleEmoji(_objectSpread({}, props));\n};\n\nEmoji.propTypes\n/* remove-proptypes */\n= EmojiPropTypes;\nEmoji.defaultProps = _objectSpread({}, EmojiDefaultProps, {\n data: data\n});\nexport default Emoji;","// vendors\nimport React, { memo, useMemo } from \"react\";\nimport { Picker } from \"emoji-mart\";\nimport t from \"prop-types\";\nimport \"emoji-mart/css/emoji-mart.css\";\n\n/**\n * @typedef {object} Props\n * @property {'light' | 'dark' | 'auto'} theme\n * @property {function(import(\"../types/types\").EmojiMartItem): void} onSelectEmoji\n * @property {boolean} disableRecent\n * @property {object[]} customEmojis\n */\n\n/**\n * Emoji Picker Component\n * @param {Props} props\n * @return {React.FC}\n */\nfunction EmojiPicker(props) {\n const {\n theme,\n onSelectEmoji,\n disableRecent,\n customEmojis\n } = props;\n\n const excludePicker = useMemo(() => {\n /** @type import(\"emoji-mart\").CategoryName[] */\n const exclude = [];\n\n if (disableRecent) {\n exclude.push(\"recent\");\n }\n\n return exclude;\n }, [disableRecent]);\n\n return (\n <Picker\n theme={theme}\n set=\"apple\"\n showPreview={false}\n showSkinTones={false}\n onSelect={onSelectEmoji}\n exclude={excludePicker}\n custom={customEmojis}\n />\n );\n}\n\nEmojiPicker.propTypes = {\n theme: t.oneOf(['light', 'dark', 'auto']),\n onSelectEmoji: t.func,\n disableRecent: t.bool,\n customEmojis: t.array\n};\n\nexport default memo(EmojiPicker);\n","// @ts-check\n/* eslint-disable react/prop-types */\n// vendors\nimport React, { useEffect, useState } from \"react\";\nimport {\n getImageEmoji,\n replaceAllTextEmojis,\n replaceAllTextEmojiToString\n} from \"../utils/emoji-utils\";\n\nimport EmojiPicker from \"./emoji-picker\";\n\n/**\n * @typedef {import('../types/types').SanitizeFn} SanitizeFn\n */\n\n/**\n * @typedef {import('../types/types').PolluteFn} PolluteFn\n */\n\n/**\n * @typedef {Object} Props\n * @property {'light' | 'dark' | 'auto'} theme\n * @property {boolean} keepOpened\n * @property {boolean} disableRecent\n * @property {object[]=} customEmojis\n * @property {(fn: SanitizeFn) => void} addSanitizeFn\n * @property {(fn: PolluteFn) => void} addPolluteFn\n * @property {(html: string) => void} appendContent\n */\n\n// eslint-disable-next-line valid-jsdoc\n/** @type {React.FC<Props>} */\nconst EmojiPickerWrapper = (props) => {\n const {\n theme,\n keepOpened,\n disableRecent,\n customEmojis,\n addSanitizeFn,\n addPolluteFn,\n appendContent,\n } = props;\n\n const [showPicker, setShowPicker] = useState(false);\n\n useEffect(() => {\n addSanitizeFn(replaceAllTextEmojiToString);\n }, [addSanitizeFn]);\n\n useEffect(() => {\n addPolluteFn(replaceAllTextEmojis);\n }, [addPolluteFn]);\n\n useEffect(() => {\n /**\n *\n * @param {MouseEvent} event\n */\n function checkClickOutside(event) {\n /** @type {HTMLElement} */\n // @ts-ignore\n const element = event.target;\n\n if (\n element.classList.contains(\"react-input-emoji--button\") ||\n element.classList.contains(\"react-input-emoji--button--icon\")\n ) {\n return;\n }\n\n setShowPicker(false);\n }\n\n document.addEventListener(\"click\", checkClickOutside);\n\n return () => {\n document.removeEventListener(\"click\", checkClickOutside);\n };\n }, []);\n\n /**\n *\n * @param {React.MouseEvent} event\n */\n function toggleShowPicker(event) {\n event.stopPropagation();\n event.preventDefault();\n\n setShowPicker(currentShowPicker => !currentShowPicker);\n }\n\n // eslint-disable-next-line valid-jsdoc\n /**\n *\n * @param {import(\"../types/types\").EmojiMartItem} emoji\n */\n function handleSelectEmoji(emoji) {\n appendContent(getImageEmoji(emoji));\n\n if (!keepOpened) {\n setShowPicker(currentShowPicker => !currentShowPicker);\n }\n }\n\n return (\n <>\n <div className=\"react-emoji-picker--container\">\n {showPicker && (\n <div\n className=\"react-emoji-picker--wrapper\"\n onClick={evt => evt.stopPropagation()}\n >\n <div className=\"react-emoji-picker\">\n <EmojiPicker\n theme={theme}\n onSelectEmoji={handleSelectEmoji}\n disableRecent={disableRecent}\n customEmojis={customEmojis}\n />\n </div>\n </div>\n )}\n </div>\n <button\n type=\"button\"\n className={`react-input-emoji--button${showPicker ? \" react-input-emoji--button__show\" : \"\"\n }`}\n onClick={toggleShowPicker}\n >\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 24 24\"\n width=\"24\"\n height=\"24\"\n className=\"react-input-emoji--button--icon\"\n >\n {/* eslint-disable-next-line max-len */}\n <path d=\"M12 0C5.373 0 0 5.373 0 12s5.373 12 12 12 12-5.373 12-12S18.627 0 12 0m0 22C6.486 22 2 17.514 2 12S6.486 2 12 2s10 4.486 10 10-4.486 10-10 10\" />\n {/* eslint-disable-next-line max-len */}\n <path d=\"M8 7a2 2 0 1 0-.001 3.999A2 2 0 0 0 8 7M16 7a2 2 0 1 0-.001 3.999A2 2 0 0 0 16 7M15.232 15c-.693 1.195-1.87 2-3.349 2-1.477 0-2.655-.805-3.347-2H15m3-2H6a6 6 0 1 0 12 0\" />\n </svg>\n </button>\n </>\n );\n};\n\nexport default EmojiPickerWrapper;\n","// @ts-check\n\n/**\n *\n * @return {string | null}\n */\nexport function getTextFromAtToCaret() {\n const range = getRangeFromAtToCaret();\n\n if (!range) return null;\n\n const text = range.text.substring(range.begin, range.end);\n\n return text || null;\n}\n\n// eslint-disable-next-line valid-jsdoc\n/** */\nexport function deleteTextFromAtToCaret() {\n const range = getRangeFromAtToCaret();\n\n if (!range) return;\n\n // @ts-ignore\n range.element.deleteData(range.begin, range.end - range.begin);\n}\n\n/**\n *\n * @return {{begin: number, end: number, text: string, element: Node} | null}\n */\nfunction getRangeFromAtToCaret() {\n const elementWithFocus = getElementWithFocus();\n\n if (!elementWithFocus) {\n return null;\n }\n\n const { element, caretOffset } = elementWithFocus;\n const text = element.textContent;\n const lastAt = text.lastIndexOf(\"@\");\n\n if (\n lastAt === -1 ||\n lastAt >= caretOffset ||\n (lastAt !== 0 && text[lastAt - 1] !== \" \")\n ) {\n return null;\n }\n\n return { begin: lastAt, end: caretOffset, text, element };\n}\n\n/**\n *\n * @return {{element: Node, caretOffset: number}}\n */\nexport function getElementWithFocus() {\n const element = getSelectionStart();\n\n if (element === null) {\n return null;\n }\n\n let caretOffset = 0;\n if (typeof window.getSelection != \"undefined\") {\n const range = window.getSelection().getRangeAt(0);\n const preCaretRange = range.cloneRange();\n preCaretRange.selectNodeContents(element);\n preCaretRange.setEnd(range.endContainer, range.endOffset);\n caretOffset = preCaretRange.toString().length;\n } else if (\n // @ts-ignore\n typeof document.selection != \"undefined\" &&\n // @ts-ignore\n document.selection.type != \"Control\"\n ) {\n // @ts-ignore\n const textRange = document.selection.createRange();\n // @ts-ignore\n const preCaretTextRange = document.body.createTextRange();\n preCaretTextRange.moveToElementText(element);\n preCaretTextRange.setEndPoint(\"EndToEnd\", textRange);\n caretOffset = preCaretTextRange.text.length;\n }\n\n return { element, caretOffset };\n}\n\n/**\n *\n * @return {Node | null}\n */\nfunction getSelectionStart() {\n const node = document.getSelection().anchorNode;\n return node?.nodeType == 3 ? node : null;\n}\n","// @ts-check\nimport { useCallback, useState } from \"react\";\nimport {\n deleteTextFromAtToCaret,\n getElementWithFocus,\n getTextFromAtToCaret\n} from \"../utils/mention-utils\";\n\n/**\n * @typedef {import('../types/types').MentionUser} MentionUser\n */\n\n// eslint-disable-next-line valid-jsdoc\n/**\n *\n * @param {(text: string) => Promise<MentionUser[]>=} searchMention\n * @returns {{mentionSearchText: string | null, mentionUsers: MentionUser[], onKeyUp: (event: React.KeyboardEvent) => void, onFocus: () => void, onSelectUser: () => void, loading: boolean}}\n */\nexport function useMention(searchMention) {\n const [loading, setLoading] = useState(false);\n\n /** @type {[MentionUser[], React.Dispatch<React.SetStateAction<MentionUser[]>>]} */\n const [mentionUsers, setMentionUsers] = useState([]);\n\n /** @type {[string | null, React.Dispatch<React.SetStateAction<string | null>>]} */\n const [mentionSearchText, setMentionSearchText] = useState(null);\n\n const onSelectUser = useCallback(() => {\n deleteTextFromAtToCaret();\n setMentionUsers([]);\n }, []);\n\n /** */\n const checkMentionText = useCallback(async () => {\n const metionText = getTextFromAtToCaret();\n\n setMentionSearchText(metionText);\n\n if (metionText === null) {\n setMentionUsers([]);\n } else {\n setLoading(true);\n const users = await searchMention(metionText);\n setLoading(false);\n setMentionUsers(users);\n }\n }, [searchMention]);\n\n /** @type {(event: React.KeyboardEvent) => void} */\n const onKeyUp = useCallback(\n async event => {\n if (typeof searchMention !== \"function\") return;\n\n if (\n event.key === \"Backspace\" &&\n getElementWithFocus()?.element.parentElement.hasAttribute(\n \"data-mention-id\"\n )\n ) {\n const elementWithFocus = getElementWithFocus();\n elementWithFocus.element.parentElement.remove();\n } else if (\n ![\"ArrowUp\", \"ArrowDown\", \"Esc\", \"Escape\"].includes(event.key)\n ) {\n checkMentionText();\n }\n },\n [checkMentionText, searchMention]\n );\n\n const onFocus = useCallback(() => {\n checkMentionText();\n }, [checkMentionText]);\n\n return {\n mentionSearchText,\n mentionUsers,\n onKeyUp,\n onFocus,\n onSelectUser,\n loading\n };\n}\n","// @ts-check\n/* eslint-disable react/prop-types */\n// vendors\nimport React, {\n useImperativeHandle,\n useState,\n forwardRef,\n useMemo,\n useEffect\n} from \"react\";\nimport t from \"prop-types\";\n\n/**\n * @typedef {import('../types/types').MentionUser} MentionUser\n */\n\n/**\n * @typedef {import('../types/types').TextInputListeners} TextInputListeners\n */\n\n/**\n * @typedef {Object} Props\n * @property {MentionUser[]} users\n * @property {string | null} mentionSearchText\n * @property {(user: MentionUser) => void} onSelect\n * @property {(event: keyof TextInputListeners, fn: import('../types/types').Listerner<any>) => () => void} addEventListener\n */\n\n/**\n * @typedef {{prevUser: () => void; nextUser: () => void;}} Ref\n */\n\n// eslint-disable-next-line valid-jsdoc\n/** @type {React.ForwardRefRenderFunction<Ref, Props>} */\nconst MentionUserList = (\n { users, mentionSearchText, onSelect, addEventListener },\n ref\n) => {\n const [selectedUser, setSelectedUser] = useState(0);\n\n useImperativeHandle(ref, () => ({\n prevUser: () => {\n setSelectedUser(currentSelectedUser => {\n if (currentSelectedUser === 0) {\n return 0;\n }\n\n return currentSelectedUser - 1;\n });\n },\n nextUser: () => {\n setSelectedUser(currentSelectedUser => {\n if (currentSelectedUser === users.length - 1) {\n return users.length - 1;\n }\n\n return currentSelectedUser + 1;\n });\n }\n }));\n\n useEffect(() => {\n setSelectedUser(0);\n }, [users]);\n\n /**\n *\n * @param {string} selectedText\n * @param {string} rest\n * @return {string}\n */\n function getMentionSelectedNameEl(selectedText, rest) {\n return `<span class=\"react-input-emoji--mention--item--name__selected\" data-testid=\"metion-selected-word\">${selectedText}</span>${rest}`;\n }\n\n /** @type {(MentionUser & {nameHtml: string})[]} */\n const usersFiltered = useMemo(() => {\n const searchText = mentionSearchText\n ? mentionSearchText.substring(1).toLocaleLowerCase()\n : \"\";\n return users.map(user => {\n let nameHtml = user.name;\n\n if (mentionSearchText && mentionSearchText.length > 1) {\n if (user.name.toLowerCase().startsWith(searchText)) {\n nameHtml = getMentionSelectedNameEl(\n user.name.substring(0, searchText.length),\n user.name.substring(searchText.length)\n );\n } else {\n const names = user.name.split(\" \");\n\n nameHtml = names\n .map(name => {\n if (name.toLocaleLowerCase().startsWith(searchText)) {\n return getMentionSelectedNameEl(\n name.substring(0, searchText.length),\n name.substring(searchText.length)\n );\n }\n return name;\n })\n .join(\" \");\n }\n }\n\n return {\n ...user,\n nameHtml\n };\n });\n }, [mentionSearchText, users]);\n\n // eslint-disable-next-line valid-jsdoc\n /**\n *\n * @param {MentionUser} user\n * @returns {(event: React.MouseEvent) => void} event\n */\n function handleClick(user) {\n return event => {\n event.stopPropagation();\n event.preventDefault();\n\n onSelect(user);\n };\n }\n\n useEffect(() => {\n const unsubscribe = addEventListener(\"enter\", event => {\n event.stopPropagation();\n event.preventDefault();\n onSelect(usersFiltered[selectedUser]);\n });\n\n return () => {\n unsubscribe();\n };\n }, [addEventListener, onSelect, selectedUser, usersFiltered]);\n\n return (\n <ul\n className=\"react-input-emoji--mention--list\"\n data-testid=\"mention-user-list\"\n >\n {usersFiltered.map((user, index) => (\n <li key={user.id}>\n <button\n type=\"button\"\n onClick={handleClick(user)}\n className={`react-input-emoji--mention--item${\n selectedUser === index\n ? \" react-input-emoji--mention--item__selected\"\n : \"\"\n }`}\n onMouseOver={() => setSelectedUser(index)}\n >\n <img\n className=\"react-input-emoji--mention--item--img\"\n src={user.image}\n />\n <div\n className=\"react-input-emoji--mention--item--name\"\n dangerouslySetInnerHTML={{ __html: user.nameHtml }}\n />\n </button>\n </li>\n ))}\n </ul>\n );\n};\n\nconst MentionUserListWithRef = forwardRef(MentionUserList);\n\nMentionUserListWithRef.propTypes = {\n users: t.array.isRequired\n};\n\nexport default MentionUserListWithRef;\n","// @ts-check\n/* eslint-disable react/prop-types */\n// vendors\nimport React, { useEffect, useRef, useState } from \"react\";\n\n// hooks\nimport { useMention } from \"../hooks/use-mention\";\n\n// components\nimport MentionUserList from \"./mention-user-list\";\n\n/**\n * @typedef {import('../types/types').MentionUser} MetionUser\n */\n\n/**\n * @typedef {import('../types/types').TextInputListeners} TextInputListeners\n */\n\n/**\n * @typedef {import('../types/types').SanitizeFn} SanitizeFn\n */\n\n/**\n * @typedef {Object} Props\n * @property {(text: string) => Promise<MetionUser[]>=} searchMention\n * @property {(event: keyof TextInputListeners, fn: import('../types/types').Listerner<any>) => () => void} addEventListener\n * @property {(html: string) => void} appendContent\n * @property {(fn: SanitizeFn) => void} addSanitizeFn\n */\n\n// eslint-disable-next-line valid-jsdoc\n/** @type {React.FC<Props>} */\nconst MentionWrapper = ({\n searchMention,\n addEventListener,\n appendContent,\n addSanitizeFn\n}) => {\n /** @type {React.MutableRefObject<import('./mention-user-list').Ref | null>} */\n const metionUserListRef = useRef(null);\n const [showUserList, setShowUserList] = useState(false);\n\n const {\n mentionSearchText,\n mentionUsers,\n loading,\n onKeyUp,\n onFocus,\n onSelectUser\n } = useMention(searchMention);\n\n useEffect(() => {\n addSanitizeFn(html => {\n const container = document.createElement(\"div\");\n container.innerHTML = html;\n\n const mentionsEl = Array.prototype.slice.call(\n container.querySelectorAll(\".react-input-emoji--mention--text\")\n );\n\n mentionsEl.forEach(mentionEl => {\n container.innerHTML = container.innerHTML.replace(\n mentionEl.outerHTML,\n `@[${mentionEl.dataset.mentionName}](userId:${mentionEl.dataset.mentionId})`\n );\n });\n\n return container.innerHTML;\n });\n }, [addSanitizeFn]);\n\n useEffect(() => {\n setShowUserList(mentionUsers.length > 0);\n }, [mentionUsers]);\n\n useEffect(() => {\n /** */\n function checkClickOutside() {\n setShowUserList(false);\n }\n\n document.addEventListener(\"click\", checkClickOutside);\n\n return () => {\n document.removeEventListener(\"click\", checkClickOutside);\n };\n }, []);\n\n useEffect(() => {\n const unsubscribe = addEventListener(\"keyUp\", onKeyUp);\n\n return () => {\n unsubscribe();\n };\n }, [addEventListener, onKeyUp]);\n\n useEffect(() => {\n /**\n *\n * @param {React.KeyboardEvent} event\n */\n function handleKeyDown(event) {\n switch (event.key) {\n case \"Esc\": // IE/Edge specific value\n case \"Escape\":\n setShowUserList(false);\n break;\n default:\n break;\n }\n }\n\n const unsubscribe = addEventListener(\"keyDown\", handleKeyDown);\n\n return () => {\n unsubscribe();\n };\n }, [addEventListener]);\n\n useEffect(() => {\n const unsubscribe = addEventListener(\"focus\", onFocus);\n\n return () => {\n unsubscribe();\n };\n }, [addEventListener, onFocus]);\n\n useEffect(() => {\n if (showUserList) {\n const unsubscribeArrowUp = addEventListener(\"arrowUp\", event => {\n event.stopPropagation();\n event.preventDefault();\n metionUserListRef.current.prevUser();\n });\n\n const unsubscribeArrowDown = addEventListener(\"arrowDown\", event => {\n event.stopPropagation();\n event.preventDefault();\n metionUserListRef.current.nextUser();\n });\n\n return () => {\n unsubscribeArrowUp();\n unsubscribeArrowDown();\n };\n }\n }, [addEventListener, showUserList]);\n\n /**\n *\n * @param {MetionUser} user\n */\n function handleSelect(user) {\n onSelectUser();\n appendContent(\n `<span class=\"react-input-emoji--mention--text\" data-mention-id=\"${user.id}\" data-mention-name=\"${user.name}\">@${user.name}</span> `\n );\n }\n\n return (\n <>\n {loading ? (\n <div className=\"react-input-emoji--mention--container\">\n <div className=\"react-input-emoji--mention--loading\">\n <div className=\"react-input-emoji--mention--loading--spinner\">\n Loading...\n </div>\n </div>\n </div>\n ) : (\n showUserList && (\n <div\n className=\"react-input-emoji--mention--container\"\n onClick={evt => evt.stopPropagation()}\n >\n <MentionUserList\n ref={metionUserListRef}\n mentionSearchText={mentionSearchText}\n users={mentionUsers}\n onSelect={handleSelect}\n addEventListener={addEventListener}\n />\n </div>\n )\n )}\n </>\n );\n};\n\nexport default MentionWrapper;\n","// @ts-check\n\n// eslint-disable-next-line valid-jsdoc\n/**\n * @template T\n * @returns {import('../types/types').ListenerObj<T>}\n */\nexport function createObserver() {\n /** @type {import('../types/types').Listerner<T>[]} */\n let listeners = [];\n\n return {\n subscribe: listener => {\n listeners.push(listener);\n return () => {\n listeners = listeners.filter(l => l !== listener);\n };\n },\n publish: event => {\n listeners.forEach(listener => listener(event));\n },\n get currentListerners() {\n return listeners;\n }\n };\n}\n","// @ts-check\n\nimport { useCallback, useMemo } from \"react\";\nimport { createObserver } from \"../utils/observer\";\n\n/**\n * @typedef {import('../types/types').TextInputListeners} TextInputListeners\n */\n\n// eslint-disable-next-line valid-jsdoc\n/** */\nexport function useEventListeners() {\n /** @type {TextInputListeners} */\n const listeners = useMemo(\n () => ({\n keyDown: createObserver(),\n keyUp: createObserver(),\n arrowUp: createObserver(),\n arrowDown: createObserver(),\n enter: createObserver(),\n focus: createObserver(),\n blur: createObserver()\n }),\n []\n );\n\n /**\n * @template {keyof TextInputListeners} T, K\n * @type {(event: keyof TextInputListeners, fn: import('../types/types').Listerner<any>) => () => void}\n */\n const addEventListener = useCallback(\n (event, fn) => {\n return listeners[event].subscribe(fn);\n },\n [listeners]\n );\n\n return { addEventListener, listeners };\n}\n","// @ts-check\n\nimport { useCallback, useRef } from \"react\";\n\n/**\n * @typedef {import('../types/types').PolluteFn} PolluteFn\n */\n\n// eslint-disable-next-line valid-jsdoc\n/** */\nexport function usePollute() {\n /** @type {React.MutableRefObject<PolluteFn[]>} */\n const polluteFnsRef = useRef([]);\n\n /** @type {(fn: PolluteFn) => void} */\n const addPolluteFn = useCallback(fn => {\n polluteFnsRef.current.push(fn);\n }, []);\n\n /** @type {(html: string) => string} */\n const pollute = useCallback(text => {\n const result = polluteFnsRef.current.reduce((acc, fn) => {\n return fn(acc);\n }, text);\n\n return result;\n }, []);\n\n return { addPolluteFn, pollute };\n}\n","// @ts-check\n/* eslint-disable react/prop-types */\n// vendors\nimport React, { useEffect, useRef, forwardRef, useCallback } from \"react\";\n\n// css\nimport \"./styles.css\";\n\n// utils\nimport { replaceAllTextEmojis } from \"./utils/emoji-utils\";\nimport {\n totalCharacters\n} from \"./utils/input-event-utils\";\n\n// hooks\nimport { useExpose } from \"./hooks/use-expose\";\nimport { useEmit } from \"./hooks/use-emit\";\n\n// components\nimport TextInput from \"./text-input\";\nimport EmojiPickerWrapper from \"./components/emoji-picker-wrapper\";\nimport MentionWrapper from \"./components/mention-wrapper\";\nimport { useEventListeners } from \"./hooks/use-event-listeners\";\nimport { useSanitize } from \"./hooks/use-sanitize\";\nimport { usePollute } from \"./hooks/user-pollute\";\n\n/**\n * @typedef {import('./types/types').MentionUser} MetionUser\n */\n\n/**\n * @typedef {import('./types/types').ListenerObj<any>} ListenerObj\n */\n\n/**\n * @typedef {object} Props\n * @property {string} value\n * @property {(value: string) => void} onChange\n * @property {\"light\" | \"dark\" | \"auto\"} theme\n * @property {boolean} cleanOnEnter\n * @property {(text: string) => void} onEnter\n * @property {string} placeholder\n * @property {(size: {width: number, height: number}) => void} onResize\n * @property {() => void} onClick\n * @property {() => void} onFocus\n * @property {() => void=} onBlur\n * @property {number} maxLength\n * @property {boolean} keepOpened\n * @property {(event: KeyboardEvent) => void} onKeyDown\n * @property {string} inputClass\n * @property {boolean} disableRecent\n * @property {number} tabIndex\n * @property {number} height\n * @property {number} borderRadius\n * @property {string} borderColor\n * @property {number} fontSize\n * @property {string} fontFamily\n * @property {object[]=} customEmojis\n * @property {(text: string) => Promise<MetionUser[]>=} searchMention\n */\n\n/**\n * Input Emoji Component\n * @param {Props} props\n * @param {React.Ref<any>} ref\n * @return {JSX.Element}\n */\nfunction InputEmoji(props, ref) {\n const {\n onChange,\n onEnter,\n onResize,\n onClick,\n onFocus,\n onBlur,\n onKeyDown,\n theme,\n cleanOnEnter,\n placeholder,\n maxLength,\n keepOpened,\n inputClass,\n disableRecent,\n tabIndex,\n value,\n customEmojis,\n searchMention,\n // style\n borderRadius,\n borderColor,\n fontSize,\n fontFamily\n } = props;\n\n /** @type {React.MutableRefObject<import('./text-input').Ref | null>} */\n const textInputRef = useRef(null);\n\n const { addEventListener, listeners } = useEventListeners();\n\n const { addSanitizeFn, sanitize, sanitizedTextRef } = useSanitize();\n\n const { addPolluteFn, pollute } = usePollute();\n\n const updateHTML = useCallback(\n (nextValue = \"\") => {\n if (textInputRef.current === null) return\n\n textInputRef.current.html = replaceAllTextEmojis(nextValue);\n sanitizedTextRef.current = nextValue;\n },\n [sanitizedTextRef]\n );\n\n const setValue = useCallback(\n value => {\n updateHTML(value);\n },\n [updateHTML]\n );\n\n const emitChange = useEmit(textInputRef, onResize, onChange);\n\n useExpose({\n ref,\n setValue,\n textInputRef,\n emitChange\n });\n\n useEffect(() => {\n if (sanitizedTextRef.current !== value) {\n setValue(value);\n }\n }, [sanitizedTextRef, setValue, value]);\n\n useEffect(() => {\n updateHTML();\n }, [updateHTML]);\n\n useEffect(() => {\n /**\n * Handle keydown event\n * @param {React.KeyboardEvent} event\n * @return {boolean}\n */\n function handleKeydown(event) {\n if (\n typeof maxLength !== \"undefined\" &&\n event.key !== \"Backspace\" &&\n textInputRef.current !== null &&\n totalCharacters(textInputRef.current) >= maxLength\n ) {\n event.preventDefault();\n }\n\n if (event.key === \"Enter\" && textInputRef.current) {\n event.preventDefault();\n\n const text = sanitize(textInputRef.current.html);\n\n emitChange(sanitizedTextRef.current);\n\n if (\n typeof onEnter === \"function\" &&\n listeners.enter.currentListerners.length === 0\n ) {\n onEnter(text);\n }\n\n if (cleanOnEnter && listeners.enter.currentListerners.length === 0) {\n updateHTML(\"\");\n }\n\n if (typeof onKeyDown === \"function\") {\n onKeyDown(event.nativeEvent);\n }\n\n return false;\n }\n\n if (typeof onKeyDown === \"function\") {\n onKeyDown(event.nativeEvent);\n }\n\n return true;\n }\n\n const unsubscribe = addEventListener(\"keyDown\", handleKeydown);\n\n return () => {\n unsubscribe();\n };\n }, [addEventListener, cleanOnEnter, emitChange, listeners.enter.currentListerners.length, maxLength, onEnter, onKeyDown, sanitize, sanitizedTextRef, updateHTML]);\n\n useEffect(() => {\n /** */\n function handleFocus() {\n if (typeof onClick === \"function\") {\n onClick();\n }\n\n if (typeof onFocus === \"function\") {\n onFocus();\n }\n }\n\n const unsubscribe = addEventListener(\"focus\", handleFocus);\n\n return () => {\n unsubscribe();\n };\n }, [addEventListener, onClick, onFocus]);\n\n useEffect(() => {\n /** */\n function handleBlur() {\n if (typeof onBlur === 'function') {\n onBlur()\n }\n }\n\n const unsubscribe = addEventListener('blur', handleBlur);\n\n return () => {\n unsubscribe()\n }\n }, [addEventListener, onBlur])\n\n /**\n *\n * @param {string} html\n */\n function handleTextInputChange(html) {\n sanitize(html);\n emitChange(sanitizedTextRef.current);\n }\n\n /**\n *\n * @param {string} html\n */\n function appendContent(html) {\n if (\n typeof maxLength !== \"undefined\" &&\n textInputRef.current !== null &&\n totalCharacters(textInputRef.current) >= maxLength\n ) {\n return;\n }\n\n if (textInputRef.current !== null) {\n textInputRef.current.appendContent(html);\n }\n }\n\n /**\n * Handle copy of current selected text\n * @param {React.ClipboardEvent} event\n */\n function handleCopy(event) {\n event.clipboardData.setData(\"text\", sanitizedTextRef.current);\n event.preventDefault();\n }\n\n /**\n * Handle past on input\n * @param {React.ClipboardEvent} event\n */\n function handlePaste(event) {\n event.preventDefault();\n let content;\n if (event.clipboardData) {\n content = event.clipboardData.getData(\"text/plain\");\n content = pollute(content);\n document.execCommand(\"insertHTML\", false, content);\n }\n }\n\n return (\n <div className=\"react-emoji\">\n <MentionWrapper\n searchMention={searchMention}\n addEventListener={addEventListener}\n appendContent={appendContent}\n addSanitizeFn={addSanitizeFn}\n />\n <TextInput\n ref={textInputRef}\n onCopy={handleCopy}\n onPaste={handlePaste}\n onBlur={listeners.blur.publish}\n onFocus={listeners.focus.publish}\n onArrowUp={listeners.arrowUp.publish}\n onArrowDown={listeners.arrowDown.publish}\n onKeyUp={listeners.keyUp.publish}\n onKeyDown={listeners.keyDown.publish}\n onEnter={listeners.enter.publish}\n placeholder={placeholder}\n style={{\n borderRadius,\n borderColor,\n fontSize,\n fontFamily\n }}\n tabIndex={tabIndex}\n className={inputClass}\n onChange={handleTextInputChange}\n />\n <EmojiPickerWrapper\n theme={theme}\n keepOpened={keepOpened}\n disableRecent={disableRecent}\n customEmojis={customEmojis}\n addSanitizeFn={addSanitizeFn}\n addPolluteFn={addPolluteFn}\n appendContent={appendContent}\n />\n </div>\n );\n}\n\nconst InputEmojiWithRef = forwardRef(InputEmoji);\n\nInputEmojiWithRef.defaultProps = {\n theme: /** @type {const} */ (\"auto\"),\n height: 30,\n placeholder: \"Type a message\",\n borderRadius: 21,\n borderColor: \"#EAEAEA\",\n fontSize: 15,\n fontFamily: \"sans-serif\",\n tabIndex: 0,\n customEmojis: []\n};\n\nexport default InputEmojiWithRef;\n"],"names":["styleInject","css","ref","insertAt","document","head","getElementsByTagName","style","createElement","type","firstChild","insertBefore","appendChild","styleSheet","cssText","createTextNode","TRANSPARENT_GIF","replaceAllTextEmojis","text","allEmojis","getAllEmojisFromText","allEmojiStyle","Set","forEach","emoji","replaceAll","str","find","replace","RegExp","match","getImageEmoji","shortNames","short_names","emojiSpanEl","querySelector","native","id","dataEmoji","emoticons","length","replaceAllTextEmojiToString","html","container","innerHTML","images","Array","prototype","slice","call","querySelectorAll","image","outerHTML","dataset","handlePasteHtmlAtCaret","sel","range","window","getSelection","getRangeAt","rangeCount","deleteContents","el","frag","createDocumentFragment","node","lastNode","insertNode","cloneRange","setStartAfter","collapse","removeAllRanges","addRange","totalCharacters","textCount","emojisCount","useSanitize","sanitizeFnsRef","useRef","sanitizedTextRef","addSanitizeFn","useCallback","fn","current","push","sanitize","result","reduce","acc","replaceAllHtmlToString","innerText","useExpose","textInputRef","setValue","emitChange","useImperativeHandle","value","focus","blur","useEmit","onResize","onChange","currentSizeRef","onChangeFn","checkAndEmitResize","currentSize","nextSize","size","width","height","sanitizedText","useEffect","TextInput","placeholder","tabIndex","className","props","appendContent","placeholderRef","trim","visibility","offsetWidth","offsetHeight","handleKeyDown","event","key","onEnter","onArrowUp","onArrowDown","onKeyDown","handleClick","onFocus","handleKeyUp","onKeyUp","input","onBlur","onCopy","onPaste","TextInputWithRef","forwardRef","_classCallCheck","instance","Constructor","TypeError","_defineProperties","target","i","descriptor","enumerable","configurable","writable","Object","defineProperty","_createClass","protoProps","staticProps","_typeof","obj","Symbol","iterator","constructor","mapping","name","unified","non_qualified","has_img_apple","has_img_google","has_img_twitter","has_img_facebook","keywords","sheet","added_in","buildSearch","search","addToSearch","strings","split","isArray","string","s","toLowerCase","indexOf","join","uncompress","data","compressed","emojis","unshift","sheet_x","sheet_y","toFixed","_String","String","fromCodePoint","stringFromCodePoint","MAX_SIZE","codeUnits","highSurrogate","lowSurrogate","index","arguments","codePoint","Number","isFinite","Math","floor","RangeError","fromCharCode","apply","COLONS_REGEX","SKINS","unifiedToNative","unicodes","codePoints","map","u","concat","skin_tone","skin_variations","custom","customCategory","imageUrl","colons","skin","getSanitizedData","getData","set","emojiData","matches","parseInt","aliases","hasOwnProperty","keys","variations","JSON","parse","stringify","skinKey","variationData","undefined","k","v","shift","uniq","arr","item","intersect","a","b","uniqA","uniqB","filter","deepMerge","o","originalValue","measureScrollbar","div","overflow","position","top","body","scrollbarWidth","clientWidth","removeChild","throttleIdleTask","func","doIdleTask","requestIdleCallback","setTimeout","running","throttled","NAMESPACE","isLocalStorageSupported","getter","setter","setHandlers","handlers","setNamespace","namespace","update","state","localStorage","e","get","NimbleEmojiIndex","originalPool","customEmojisList","buildIndex","_this","_loop","emoticon","skinTone","clearCustomEmojis","pool","_this2","emojiId","addCustomToPool","_this3","_this4","_ref","emojisToShowFilter","maxResults","include","exclude","_ref$custom","store","results","values","allResults","categories","category","isIncluded","isExcluded","customIsIncluded","customIsExcluded","aPool","aIndex","charIndex","_char","scores","sub","substr","subIndex","score","sort","aScore","bScore","localeCompare","emojiIndex","DEFAULTS","frequently","initialized","defaults","init","add","perLine","quantity","frequentlyKeys","sorted","reverse","sliced","last","pop","_defineProperty","_extends","assign","bind","source","_assertThisInitialized","self","ReferenceError","_possibleConstructorReturn","assertThisInitialized","_getPrototypeOf","setPrototypeOf","getPrototypeOf","__proto__","_setPrototypeOf","p","_inherits","subClass","superClass","create","activity","React","xmlns","viewBox","d","transform","x","y","rx","flags","foods","nature","objects","people","places","recent","symbols","opacity","_delete","EmojiPropTypes","PropTypes","object","isRequired","onOver","onLeave","onClick","fallback","backgroundImageFn","bool","forceSize","tooltip","useButton","oneOf","sheetSize","sheetColumns","number","sheetRows","oneOfType","PickerPropTypes","onSelect","onSkinChange","emojiSize","i18n","title","color","showPreview","showSkinTones","emojiTooltip","theme","arrayOf","autoFocus","enableFrequentEmojiSort","shape","spriteUrl","skinEmoji","notFound","notFoundEmoji","icons","Anchors","_React$PureComponent","defaultCategory","first","selected","currentTarget","getAttribute","_this$props","onAnchorClick","render","_this$props2","categorieslabel","anchor","isSelected","iconId","startsWith","backgroundColor","PureComponent","propTypes","array","defaultProps","EmojiDefaultProps","PickerDefaultProps","defaultSkin","ownKeys","enumerableOnly","getOwnPropertySymbols","sym","getOwnPropertyDescriptor","_objectSpread","getOwnPropertyDescriptors","defineProperties","_getData","_getPosition","_getData2","multiplyX","multiplyY","_getSanitizedData","_handleClick","_handleOver","_handleLeave","_isNumeric","isNaN","parseFloat","_convertStyleToCSS","NimbleEmoji","children","nativeEmoji","label","Boolean","fontSize","display","wordBreak","backgroundImage","backgroundSize","backgroundPosition","backgroundRepeat","setHasEmoji","Tag","onMouseEnter","onMouseLeave","NotFound","emojiProps","component","notfound","Category","_React$Component","setContainerRef","setLabelRef","componentDidMount","margin","minMargin","memoizeSize","shouldComponentUpdate","nextProps","nextState","_native","hasStickyPosition","nextPerLine","nextNative","nextHasStickyPosition","nextEmojis","nextEmojiProps","nextSkin","nextSet","shouldUpdate","maxMargin","parent","parentElement","_this$container$getBo","getBoundingClientRect","_parent$getBoundingCl","parentTop","_this$label$getBoundi","labelHeight","scrollTop","handleScroll","getEmojis","frequentlyUsed","updateDisplay","c","_this$props3","labelStyles","labelSpanStyles","containerStyles","Component","Skins","opened","setState","SkinsEmoji","_Skins","skinToneNodes","skintext","SkinsDot","keyCode","preventDefault","visible","skintones","role","Preview","skinsProps","idleEmoji","_emojiData$emoticons","knownEmoticons","listedEmoticons","short_name","Search","icon","isSearching","setRef","clear","handleChange","onSearch","_this$state","inputId","htmlFor","disabled","I18N","NimblePicker","CUSTOM","RECENT_CATEGORY","SEARCH_CATEGORY","firstRender","allCategories","customCategories","customCategoriesCreated","customEmoji","hideRecent","categoryIndex","newEmojis","newCategory","includeRecent","excludeRecent","setAnchorsRef","handleAnchorClick","setSearchRef","handleSearch","setScrollRef","handleScrollPaint","handleEmojiOver","handleEmojiLeave","handleEmojiClick","handleEmojiSelect","setPreviewRef","handleSkinChange","handleDarkMatchMediaChange","testStickyPosition","firstRenderTimeout","componentDidUpdate","updateCategoriesSize","componentWillUnmount","clearTimeout","leaveTimeout","darkMatchMedia","removeListener","stickyTestElement","prefixes","prefix","getPreferredTheme","matchMedia","addListener","media","preview","categoryRefs","forceUpdate","requestAnimationFrame","scroll","waitingForPaint","activeCategory","scrollingDown","minTop","l","ii","active","clientHeight","scrollHeight","anchors","_activeCategory","categoryName","scrollToComponent","newState","handled","getCategories","setCategoryRef","onScroll","Picker","EmojiPicker","onSelectEmoji","disableRecent","customEmojis","excludePicker","useMemo","t","memo","EmojiPickerWrapper","keepOpened","addPolluteFn","showPicker","setShowPicker","useState","checkClickOutside","element","classList","contains","addEventListener","removeEventListener","toggleShowPicker","stopPropagation","currentShowPicker","handleSelectEmoji","evt","getTextFromAtToCaret","getRangeFromAtToCaret","substring","begin","end","deleteTextFromAtToCaret","deleteData","elementWithFocus","getElementWithFocus","caretOffset","textContent","lastAt","lastIndexOf","getSelectionStart","preCaretRange","selectNodeContents","setEnd","endContainer","endOffset","toString","selection","textRange","createRange","preCaretTextRange","createTextRange","moveToElementText","setEndPoint","anchorNode","nodeType","useMention","searchMention","loading","setLoading","mentionUsers","setMentionUsers","mentionSearchText","setMentionSearchText","onSelectUser","checkMentionText","metionText","users","hasAttribute","remove","includes","MentionUserList","selectedUser","setSelectedUser","prevUser","currentSelectedUser","nextUser","getMentionSelectedNameEl","selectedText","rest","usersFiltered","searchText","toLocaleLowerCase","user","nameHtml","names","unsubscribe","__html","MentionUserListWithRef","MentionWrapper","metionUserListRef","showUserList","setShowUserList","mentionsEl","mentionEl","mentionName","mentionId","unsubscribeArrowUp","unsubscribeArrowDown","handleSelect","createObserver","listeners","subscribe","listener","publish","currentListerners","useEventListeners","keyDown","keyUp","arrowUp","arrowDown","enter","usePollute","polluteFnsRef","pollute","InputEmoji","cleanOnEnter","maxLength","inputClass","borderRadius","borderColor","fontFamily","updateHTML","nextValue","handleKeydown","nativeEvent","handleFocus","handleBlur","handleTextInputChange","handleCopy","clipboardData","setData","handlePaste","content","execCommand","InputEmojiWithRef"],"mappings":"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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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"}
1
+ {"version":3,"file":"index.es.js","sources":["../node_modules/style-inject/dist/style-inject.es.js","../src/utils/emoji-utils.js","../src/utils/input-event-utils.js","../src/hooks/use-sanitize.js","../src/hooks/use-expose.js","../src/hooks/use-emit.js","../src/text-input.js","../src/components/emoji-picker-button.js","../node_modules/@babel/runtime/helpers/esm/classCallCheck.js","../node_modules/@babel/runtime/helpers/esm/createClass.js","../node_modules/@babel/runtime/helpers/esm/typeof.js","../node_modules/emoji-mart/dist-es/utils/data.js","../node_modules/emoji-mart/dist-es/polyfills/stringFromCodePoint.js","../node_modules/emoji-mart/dist-es/utils/index.js","../node_modules/emoji-mart/dist-es/utils/store.js","../node_modules/emoji-mart/dist-es/utils/emoji-index/nimble-emoji-index.js","../node_modules/emoji-mart/dist-es/utils/emoji-index/emoji-index.js","../node_modules/emoji-mart/dist-es/utils/frequently.js","../node_modules/@babel/runtime/helpers/esm/defineProperty.js","../node_modules/@babel/runtime/helpers/esm/extends.js","../node_modules/@babel/runtime/helpers/esm/assertThisInitialized.js","../node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js","../node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js","../node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","../node_modules/@babel/runtime/helpers/esm/inherits.js","../node_modules/emoji-mart/dist-es/svgs/index.js","../node_modules/emoji-mart/dist-es/utils/shared-props.js","../node_modules/emoji-mart/dist-es/components/anchors.js","../node_modules/emoji-mart/dist-es/utils/shared-default-props.js","../node_modules/emoji-mart/dist-es/components/emoji/nimble-emoji.js","../node_modules/emoji-mart/dist-es/components/not-found.js","../node_modules/emoji-mart/dist-es/components/category.js","../node_modules/emoji-mart/dist-es/components/skins.js","../node_modules/emoji-mart/dist-es/components/skins-emoji.js","../node_modules/emoji-mart/dist-es/components/skins-dot.js","../node_modules/emoji-mart/dist-es/components/preview.js","../node_modules/emoji-mart/dist-es/components/search.js","../node_modules/emoji-mart/dist-es/components/picker/nimble-picker.js","../node_modules/emoji-mart/dist-es/components/picker/picker.js","../node_modules/emoji-mart/dist-es/components/emoji/emoji.js","../src/components/emoji-picker.js","../src/components/emoji-picker-container.js","../src/components/emoji-picker-wrapper.js","../src/utils/mention-utils.js","../src/hooks/use-mention.js","../src/components/mention-user-list.js","../src/components/mention-wrapper.js","../src/utils/observer.js","../src/hooks/use-event-listeners.js","../src/hooks/user-pollute.js","../src/index.js"],"sourcesContent":["function styleInject(css, ref) {\n if ( ref === void 0 ) ref = {};\n var insertAt = ref.insertAt;\n\n if (!css || typeof document === 'undefined') { return; }\n\n var head = document.head || document.getElementsByTagName('head')[0];\n var style = document.createElement('style');\n style.type = 'text/css';\n\n if (insertAt === 'top') {\n if (head.firstChild) {\n head.insertBefore(style, head.firstChild);\n } else {\n head.appendChild(style);\n }\n } else {\n head.appendChild(style);\n }\n\n if (style.styleSheet) {\n style.styleSheet.cssText = css;\n } else {\n style.appendChild(document.createTextNode(css));\n }\n}\n\nexport default styleInject;\n","// @ts-check\n\nexport const TRANSPARENT_GIF =\n \"data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7\";\n\n/**\n * Replace all text with emoji with an image html tag\n * @param {string} text\n * @return {string}\n */\nexport function replaceAllTextEmojis(text) {\n let allEmojis = getAllEmojisFromText(text);\n\n // TODO: get all emoji style\n const allEmojiStyle = {};\n\n if (allEmojis) {\n allEmojis = [...new Set(allEmojis)]; // remove duplicates\n\n allEmojis.forEach(emoji => {\n const style = allEmojiStyle[emoji];\n\n if (!style) return;\n\n text = replaceAll(\n text,\n emoji,\n `<img\n style=\"${style}\"\n data-emoji=\"${emoji}\"\n src=\"${TRANSPARENT_GIF}\"\n />`\n );\n });\n }\n\n return text;\n}\n\n/**\n * Replace all occurrencies in a string\n * @param {string} str\n * @param {string} find\n * @param {string} replace\n * @return {string}\n */\nfunction replaceAll(str, find, replace) {\n return str.replace(new RegExp(find, \"g\"), replace);\n}\n\n/**\n * Get all emojis from the text\n * @param {string} text\n * @return {string[]}\n */\nfunction getAllEmojisFromText(text) {\n return text.match(\n /(?:[\\u2700-\\u27bf]|(?:\\ud83c[\\udde6-\\uddff]){2}|[\\ud800-\\udbff][\\udc00-\\udfff])[\\ufe0e\\ufe0f]?(?:[\\u0300-\\u036f\\ufe20-\\ufe23\\u20d0-\\u20f0]|\\ud83c[\\udffb-\\udfff])?(?:\\u200d(?:[^\\ud800-\\udfff]|(?:\\ud83c[\\udde6-\\uddff]){2}|[\\ud800-\\udbff][\\udc00-\\udfff])[\\ufe0e\\ufe0f]?(?:[\\u0300-\\u036f\\ufe20-\\ufe23\\u20d0-\\u20f0]|\\ud83c[\\udffb-\\udfff])?)*/g\n );\n}\n\n// /**\n// * Get all emoji stlye from emoji mart\n// * @return {Object.<string, string>}\n// */\n// function getAllEmojiStyle() {\n// /** @type {NodeListOf<Element>} */\n// const allEmojiButton = Array.prototype.slice.call(\n// document.querySelectorAll(\".emoji-mart-category-list > li > button\")\n// );\n\n// /** @type {Object.<string, string>} */\n// const allEmojiStyle = {};\n\n// allEmojiButton.forEach(emojiButton => {\n// const label = emojiButton.getAttribute(\"aria-label\");\n// const [emoji] = label.split(\",\");\n\n// const emojiSpanEl = emojiButton.querySelector(\"span\");\n\n// const style = replaceAll(emojiSpanEl.style.cssText, '\"', \"'\");\n\n// allEmojiStyle[emoji] = style;\n// });\n\n// return allEmojiStyle;\n// }\n\n// eslint-disable-next-line valid-jsdoc\n/**\n *\n * @param { import(\"../types/types\").EmojiMartItem } emoji\n * @return {string}\n */\nexport function getImageEmoji(emoji) {\n let shortNames = `${emoji.short_names}`;\n\n shortNames = replaceAll(shortNames, \",\", \", \");\n\n /** @type {HTMLSpanElement} */\n const emojiSpanEl =\n document.querySelector(\n `[aria-label=\"${emoji.native}, ${shortNames}\"] > span`\n ) || document.querySelector(`[aria-label=\"${emoji.id}\"] > span`);\n\n if (!emojiSpanEl) return \"\";\n\n const style = replaceAll(emojiSpanEl.style.cssText, '\"', \"'\");\n\n let dataEmoji = emoji.native;\n\n if (!dataEmoji && emoji.emoticons && emoji.emoticons.length > 0) {\n dataEmoji = emoji.emoticons[0];\n }\n\n return `<img style=\"${style}\" data-emoji=\"${dataEmoji}\" src=\"${TRANSPARENT_GIF}\" />`;\n}\n\n/**\n *\n * @param {string} html\n * @return {string}\n */\nexport function replaceAllTextEmojiToString(html) {\n const container = document.createElement(\"div\");\n container.innerHTML = html;\n\n const images = Array.prototype.slice.call(container.querySelectorAll(\"img\"));\n\n images.forEach(image => {\n container.innerHTML = container.innerHTML.replace(\n image.outerHTML,\n image.dataset.emoji\n );\n });\n\n return container.innerHTML;\n}\n","// @ts-check\n\nimport {\n getImageEmoji,\n replaceAllTextEmojis,\n replaceAllTextEmojiToString\n} from \"./emoji-utils\";\n\n/**\n * Handle copy of current selected text\n * @param {React.ClipboardEvent} event\n */\nexport function handleCopy(event) {\n const selectedText = window.getSelection();\n\n if (selectedText === null) {\n return\n }\n\n let container = document.createElement(\"div\");\n\n for (let i = 0, len = selectedText.rangeCount; i < len; ++i) {\n container.appendChild(selectedText.getRangeAt(i).cloneContents());\n }\n\n container = replaceEmojiToString(container);\n\n event.clipboardData.setData(\"text\", container.innerText);\n event.preventDefault();\n}\n\n/**\n *\n * @param {string} html\n */\nexport function handlePasteHtmlAtCaret(html) {\n let sel;\n let range;\n if (window.getSelection) {\n // IE9 and non-IE\n sel = window.getSelection();\n\n if (sel === null) return\n\n if (sel.getRangeAt && sel.rangeCount) {\n range = sel.getRangeAt(0);\n range.deleteContents();\n\n // Range.createContextualFragment() would be useful here but is\n // non-standard and not supported in all browsers (IE9, for one)\n const el = document.createElement(\"div\");\n el.innerHTML = html;\n const frag = document.createDocumentFragment();\n let node;\n let lastNode;\n while ((node = el.firstChild)) {\n lastNode = frag.appendChild(node);\n }\n range.insertNode(frag);\n\n // Preserve the selection\n if (lastNode) {\n range = range.cloneRange();\n range.setStartAfter(lastNode);\n range.collapse(true);\n sel.removeAllRanges();\n sel.addRange(range);\n }\n }\n }\n}\n\n/**\n * Replace emoji img to its string value\n * @param {HTMLDivElement} container\n * @return {HTMLDivElement}\n */\nfunction replaceEmojiToString(container) {\n const images = Array.prototype.slice.call(container.querySelectorAll(\"img\"));\n\n images.forEach(image => {\n image.outerHTML = image.dataset.emoji;\n });\n\n return container;\n}\n\n/**\n * Handle past on input\n * @param {React.ClipboardEvent} event\n */\nexport function handlePaste(event) {\n event.preventDefault();\n let content;\n if (event.clipboardData) {\n content = event.clipboardData.getData(\"text/plain\");\n content = replaceAllTextEmojis(content);\n document.execCommand(\"insertHTML\", false, content);\n }\n}\n\n/**\n * @typedef {object} HandleKeyDownOptions\n * @property {HTMLDivElement} placeholderEl\n * @property {number} maxLength\n * @property {HTMLDivElement} inputEl\n * @property {React.MutableRefObject<string>} cleanedTextRef\n * @property {React.MutableRefObject<HTMLDivElement>} textInputRef\n * @property {boolean} cleanOnEnter\n * @property {function(): void} emitChange\n * @property {(function(string): void)=} onEnter\n * @property {(function(KeyboardEvent): void)=} onKeyDown\n * @property {(function(string): void)} updateHTML\n */\n\n// eslint-disable-next-line valid-jsdoc\n/**\n * @typedef {Object} HandleSelectEmojiProps\n * @property {import(\"../types/types\").EmojiMartItem} emoji\n * @property {React.MutableRefObject<import('../text-input').Ref>} textInputRef\n * @property {boolean} keepOpened\n * @property {() => void} toggleShowPicker\n * @property {number=} maxLength\n */\n\n/**\n *\n * @param {HandleSelectEmojiProps} props\n */\nexport function handleSelectEmoji({\n emoji,\n textInputRef,\n keepOpened,\n toggleShowPicker,\n maxLength\n}) {\n if (\n typeof maxLength !== \"undefined\" &&\n totalCharacters(textInputRef.current) >= maxLength\n ) {\n return;\n }\n\n textInputRef.current.appendContent(getImageEmoji(emoji));\n\n if (!keepOpened) {\n toggleShowPicker();\n }\n}\n\n/**\n *\n * @param {{text: string, html: string}} props\n * @return {number}\n */\nexport function totalCharacters({ text, html }) {\n const textCount = text.length;\n const emojisCount = (html.match(/<img/g) || []).length;\n\n return textCount + emojisCount;\n}\n\n// eslint-disable-next-line valid-jsdoc\n/**\n * Handle keyup event\n * @param {() => void} emitChange\n * @param {(event: KeyboardEvent) => void} onKeyDownMention\n * @param {React.MutableRefObject<string>} cleanedTextRef\n * @param {React.MutableRefObject<HTMLDivElement>} textInputRef\n * @return {(event: KeyboardEvent) => void}\n */\nexport function handleKeyup(\n emitChange,\n onKeyDownMention,\n cleanedTextRef,\n textInputRef\n) {\n return event => {\n const text = replaceAllTextEmojiToString(textInputRef.current.innerHTML);\n cleanedTextRef.current = text;\n emitChange();\n onKeyDownMention(event);\n };\n}\n\n/**\n * Handle focus event\n * @param {function(FocusEvent): void} onFocus\n * @return {function(FocusEvent): void}\n */\nexport function handleFocus(onFocus) {\n return event => {\n onFocus(event);\n };\n}\n","// @ts-check\n\nimport { useCallback, useRef } from \"react\";\n\n/**\n * @typedef {import('../types/types').SanitizeFn} SanitizeFn\n */\n\n// eslint-disable-next-line valid-jsdoc\n/** */\nexport function useSanitize() {\n /** @type {React.MutableRefObject<SanitizeFn[]>} */\n const sanitizeFnsRef = useRef([]);\n\n const sanitizedTextRef = useRef(\"\");\n\n /** @type {(fn: SanitizeFn) => void} */\n const addSanitizeFn = useCallback(fn => {\n sanitizeFnsRef.current.push(fn);\n }, []);\n\n /** @type {(html: string) => string} */\n const sanitize = useCallback(html => {\n let result = sanitizeFnsRef.current.reduce((acc, fn) => {\n return fn(acc);\n }, html);\n\n result = replaceAllHtmlToString(result);\n\n sanitizedTextRef.current = result;\n\n return result;\n }, []);\n\n return { addSanitizeFn, sanitize, sanitizedTextRef };\n}\n\n/**\n *\n * @param {string} html\n * @return {string}\n */\nexport function replaceAllHtmlToString(html) {\n const container = document.createElement(\"div\");\n container.innerHTML = html;\n\n let text = container.innerText || \"\";\n\n // remove all ↵ for safari\n text = text.replace(/\\n/gi, \"\");\n\n return text;\n}\n","// @ts-check\n\nimport { useImperativeHandle } from \"react\";\nimport { useSanitize } from \"./use-sanitize\";\n\n/**\n * @typedef {Object} Props\n * @property {React.Ref<any>} ref\n * @property {React.MutableRefObject<import('../text-input').Ref | null>} textInputRef\n * @property {(value: string) => void} setValue\n * @property {() => void} emitChange\n */\n\n/**\n *\n * @param {Props} props\n */\nexport function useExpose({ ref, textInputRef, setValue, emitChange }) {\n const { sanitize, sanitizedTextRef } = useSanitize();\n\n useImperativeHandle(ref, () => ({\n get value() {\n return sanitizedTextRef.current;\n },\n set value(value) {\n setValue(value);\n },\n focus: () => {\n if (textInputRef.current === null) return\n textInputRef.current.focus();\n },\n blur: () => {\n if (textInputRef.current !== null) {\n sanitize(textInputRef.current.html);\n\n }\n\n emitChange();\n }\n }));\n}\n","// @ts-check\n\nimport { useCallback, useEffect, useRef } from \"react\";\n\n// eslint-disable-next-line valid-jsdoc\n/**\n * useEmit\n * @param {React.MutableRefObject<import('../text-input').Ref | null>} textInputRef\n * @param {(size: {width: number, height: number}) => void} onResize\n * @param {(text: string) => void} onChange\n */\nexport function useEmit(textInputRef, onResize, onChange) {\n /** @type {React.MutableRefObject<{width: number; height: number} | null>} */\n const currentSizeRef = useRef(null);\n const onChangeFn = useRef(onChange);\n\n const checkAndEmitResize = useCallback(() => {\n if (textInputRef.current !== null) {\n const currentSize = currentSizeRef.current;\n\n const nextSize = textInputRef.current.size;\n\n if (\n (!currentSize ||\n currentSize.width !== nextSize.width ||\n currentSize.height !== nextSize.height) &&\n typeof onResize === \"function\"\n ) {\n onResize(nextSize);\n }\n\n currentSizeRef.current = nextSize;\n }\n }, [onResize, textInputRef]);\n\n const emitChange = useCallback((sanitizedText) => {\n if (typeof onChangeFn.current === \"function\") {\n onChangeFn.current(sanitizedText);\n }\n\n if (typeof onResize === \"function\") {\n checkAndEmitResize();\n }\n }, [checkAndEmitResize, onResize]);\n\n useEffect(() => {\n if (textInputRef.current) {\n checkAndEmitResize();\n }\n }, [checkAndEmitResize, textInputRef]);\n\n return emitChange;\n}\n","// @ts-check\n/* eslint-disable react/prop-types */\n// vendors\nimport React, { useImperativeHandle, forwardRef, useRef } from \"react\";\nimport { handlePasteHtmlAtCaret } from \"./utils/input-event-utils\";\n\n/**\n * @typedef {Object} Props\n * @property {(event: React.KeyboardEvent) => void} onKeyDown\n * @property {(event: React.KeyboardEvent) => void} onKeyUp\n * @property {() => void} onFocus\n * @property {() => void} onBlur\n * @property {(sanitizedText: string) => void=} onChange\n * @property {(event: React.KeyboardEvent) => void} onArrowUp\n * @property {(event: React.KeyboardEvent) => void} onArrowDown\n * @property {(event: React.KeyboardEvent) => void} onEnter\n * @property {(event: React.ClipboardEvent) => void} onCopy\n * @property {(event: React.ClipboardEvent) => void} onPaste\n * @property {string} placeholder\n * @property {React.CSSProperties} style\n * @property {number} tabIndex\n * @property {string} className\n * @property {(html: string) => void} onChange\n */\n\n/**\n * @typedef {{\n * appendContent: (html: string) => void;\n * html: string;\n * text: string;\n * size: { width: number; height: number;};\n * focus: () => void;\n * }} Ref\n */\n\n// eslint-disable-next-line valid-jsdoc\n/** @type {React.ForwardRefRenderFunction<Ref, Props>} */\nconst TextInput = (\n { placeholder, style, tabIndex, className, onChange, ...props },\n ref\n) => {\n useImperativeHandle(ref, () => ({\n appendContent: html => {\n if (textInputRef.current) {\n textInputRef.current.focus();\n }\n\n handlePasteHtmlAtCaret(html);\n\n if (textInputRef.current) {\n textInputRef.current.focus();\n }\n\n if (textInputRef.current && placeholderRef.current && textInputRef.current.innerHTML.trim() === \"\") {\n placeholderRef.current.style.visibility = \"visible\";\n } else if (placeholderRef.current) {\n placeholderRef.current.style.visibility = \"hidden\";\n }\n\n if (textInputRef.current && typeof onChange === 'function') {\n onChange(textInputRef.current.innerHTML);\n }\n },\n set html(value) {\n if (textInputRef.current) {\n textInputRef.current.innerHTML = value;\n }\n \n if (placeholderRef.current) {\n if (value.trim() === \"\") {\n placeholderRef.current.style.visibility = \"visible\";\n } else {\n placeholderRef.current.style.visibility = \"hidden\";\n }\n }\n\n if (typeof onChange === 'function' && textInputRef.current) {\n onChange(textInputRef.current.innerHTML);\n }\n },\n get html() {\n if (!textInputRef.current) return ''\n\n return textInputRef.current.innerHTML;\n },\n get text() {\n if (!textInputRef.current) return ''\n\n return textInputRef.current.innerText;\n },\n get size() {\n if (!textInputRef.current) {\n return {\n width: 0,\n height: 0\n }\n }\n\n return {\n width: textInputRef.current.offsetWidth,\n height: textInputRef.current.offsetHeight\n };\n },\n focus() {\n if (!textInputRef.current) return\n\n textInputRef.current.focus();\n }\n }));\n\n /** @type {React.MutableRefObject<HTMLDivElement | null>} */\n const placeholderRef = useRef(null);\n /** @type {React.MutableRefObject<HTMLDivElement | null>} */\n const textInputRef = useRef(null);\n\n /**\n *\n * @param {React.KeyboardEvent} event\n */\n function handleKeyDown(event) {\n if (event.key === \"Enter\") {\n props.onEnter(event);\n } else if (event.key === \"ArrowUp\") {\n props.onArrowUp(event);\n } else if (event.key === \"ArrowDown\") {\n props.onArrowDown(event);\n } else {\n if (event.key.length === 1 && placeholderRef.current) {\n placeholderRef.current.style.visibility = \"hidden\";\n }\n }\n\n props.onKeyDown(event);\n }\n\n /** */\n function handleClick() {\n props.onFocus();\n }\n\n /**\n *\n * @param {React.KeyboardEvent} event\n */\n function handleKeyUp(event) {\n props.onKeyUp(event);\n\n const input = textInputRef.current;\n\n if (placeholderRef.current) {\n if (input?.innerText?.trim() === \"\") {\n placeholderRef.current.style.visibility = \"visible\";\n } else {\n placeholderRef.current.style.visibility = \"hidden\";\n }\n }\n\n if (typeof onChange === 'function' && textInputRef.current) {\n onChange(textInputRef.current.innerHTML);\n }\n }\n\n return (\n <div className=\"react-input-emoji--container\" style={style}>\n <div className=\"react-input-emoji--wrapper\" onClick={handleClick}>\n <div ref={placeholderRef} className=\"react-input-emoji--placeholder\">\n {placeholder}\n </div>\n <div\n ref={textInputRef}\n onKeyDown={handleKeyDown}\n onKeyUp={handleKeyUp}\n tabIndex={tabIndex}\n contentEditable\n className={`react-input-emoji--input${className ? ` ${className}` : \"\"\n }`}\n onBlur={props.onBlur}\n onCopy={props.onCopy}\n onPaste={props.onPaste}\n data-testid=\"react-input-emoji--input\"\n />\n </div>\n </div>\n );\n};\n\nconst TextInputWithRef = forwardRef(TextInput);\n\nexport default TextInputWithRef;\n","/* eslint-disable react/prop-types */\n// vendors\nimport React, { useEffect, useRef, useState } from \"react\";\n\n/**\n * @typedef {object} Props\n * @property {boolean} showPicker\n * @property {(event: React.MouseEvent) => void} toggleShowPicker\n * @property {HTMLDivElement=} buttonElement\n */\n\n/**\n * Emoji Picker Button Component\n * @param {Props} props\n * @return {JSX.Element}\n */\nfunction EmojiPickerButton({ showPicker, toggleShowPicker, buttonElement }) {\n const buttonRef = useRef(null);\n const [showCustomButtonContent, setShowCustomButtonContent] = useState(false);\n\n useEffect(() => {\n if ((buttonElement?.childNodes?.length ?? 0) > 2) {\n buttonRef.current.appendChild(buttonElement?.childNodes[0]);\n setShowCustomButtonContent(true);\n }\n }, [buttonElement?.childNodes]);\n\n return (\n <button\n ref={buttonRef}\n type=\"button\"\n className={`react-input-emoji--button${\n showPicker ? \" react-input-emoji--button__show\" : \"\"\n }`}\n onClick={toggleShowPicker}\n >\n {!showCustomButtonContent && (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 24 24\"\n width=\"24\"\n height=\"24\"\n className=\"react-input-emoji--button--icon\"\n >\n {/* eslint-disable-next-line max-len */}\n <path d=\"M12 0C5.373 0 0 5.373 0 12s5.373 12 12 12 12-5.373 12-12S18.627 0 12 0m0 22C6.486 22 2 17.514 2 12S6.486 2 12 2s10 4.486 10 10-4.486 10-10 10\" />\n {/* eslint-disable-next-line max-len */}\n <path d=\"M8 7a2 2 0 1 0-.001 3.999A2 2 0 0 0 8 7M16 7a2 2 0 1 0-.001 3.999A2 2 0 0 0 16 7M15.232 15c-.693 1.195-1.87 2-3.349 2-1.477 0-2.655-.805-3.347-2H15m3-2H6a6 6 0 1 0 12 0\" />\n </svg>\n )}\n </button>\n );\n}\n\nexport default EmojiPickerButton;\n","export default function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}","function _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\n\nexport default function _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n Object.defineProperty(Constructor, \"prototype\", {\n writable: false\n });\n return Constructor;\n}","export default function _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) {\n return typeof obj;\n } : function (obj) {\n return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n }, _typeof(obj);\n}","var mapping = {\n name: 'a',\n unified: 'b',\n non_qualified: 'c',\n has_img_apple: 'd',\n has_img_google: 'e',\n has_img_twitter: 'f',\n has_img_facebook: 'h',\n keywords: 'j',\n sheet: 'k',\n emoticons: 'l',\n text: 'm',\n short_names: 'n',\n added_in: 'o'\n};\n\nvar buildSearch = function buildSearch(emoji) {\n var search = [];\n\n var addToSearch = function addToSearch(strings, split) {\n if (!strings) {\n return;\n }\n\n ;\n (Array.isArray(strings) ? strings : [strings]).forEach(function (string) {\n ;\n (split ? string.split(/[-|_|\\s]+/) : [string]).forEach(function (s) {\n s = s.toLowerCase();\n\n if (search.indexOf(s) == -1) {\n search.push(s);\n }\n });\n });\n };\n\n addToSearch(emoji.short_names, true);\n addToSearch(emoji.name, true);\n addToSearch(emoji.keywords, false);\n addToSearch(emoji.emoticons, false);\n return search.join(',');\n};\n\nvar compress = function compress(emoji) {\n emoji.short_names = emoji.short_names.filter(function (short_name) {\n return short_name !== emoji.short_name;\n });\n delete emoji.short_name;\n emoji.sheet = [emoji.sheet_x, emoji.sheet_y];\n delete emoji.sheet_x;\n delete emoji.sheet_y;\n emoji.added_in = parseInt(emoji.added_in);\n\n if (emoji.added_in === 6) {\n delete emoji.added_in;\n }\n\n for (var key in mapping) {\n emoji[mapping[key]] = emoji[key];\n delete emoji[key];\n }\n\n for (var _key in emoji) {\n var value = emoji[_key];\n\n if (Array.isArray(value) && !value.length) {\n delete emoji[_key];\n } else if (typeof value === 'string' && !value.length) {\n delete emoji[_key];\n } else if (value === null) {\n delete emoji[_key];\n }\n }\n};\n\nvar uncompress = function uncompress(data) {\n data.compressed = false;\n\n for (var id in data.emojis) {\n var emoji = data.emojis[id];\n\n for (var key in mapping) {\n emoji[key] = emoji[mapping[key]];\n delete emoji[mapping[key]];\n }\n\n if (!emoji.short_names) emoji.short_names = [];\n emoji.short_names.unshift(id);\n emoji.sheet_x = emoji.sheet[0];\n emoji.sheet_y = emoji.sheet[1];\n delete emoji.sheet;\n if (!emoji.text) emoji.text = '';\n if (!emoji.added_in) emoji.added_in = 6;\n emoji.added_in = emoji.added_in.toFixed(1);\n emoji.search = buildSearch(emoji);\n }\n};\n\nexport { buildSearch, compress, uncompress };","var _String = String;\nexport default _String.fromCodePoint || function stringFromCodePoint() {\n var MAX_SIZE = 0x4000;\n var codeUnits = [];\n var highSurrogate;\n var lowSurrogate;\n var index = -1;\n var length = arguments.length;\n\n if (!length) {\n return '';\n }\n\n var result = '';\n\n while (++index < length) {\n var codePoint = Number(arguments[index]);\n\n if (!isFinite(codePoint) || // `NaN`, `+Infinity`, or `-Infinity`\n codePoint < 0 || // not a valid Unicode code point\n codePoint > 0x10ffff || // not a valid Unicode code point\n Math.floor(codePoint) != codePoint // not an integer\n ) {\n throw RangeError('Invalid code point: ' + codePoint);\n }\n\n if (codePoint <= 0xffff) {\n // BMP code point\n codeUnits.push(codePoint);\n } else {\n // Astral code point; split in surrogate halves\n // http://mathiasbynens.be/notes/javascript-encoding#surrogate-formulae\n codePoint -= 0x10000;\n highSurrogate = (codePoint >> 10) + 0xd800;\n lowSurrogate = codePoint % 0x400 + 0xdc00;\n codeUnits.push(highSurrogate, lowSurrogate);\n }\n\n if (index + 1 === length || codeUnits.length > MAX_SIZE) {\n result += String.fromCharCode.apply(null, codeUnits);\n codeUnits.length = 0;\n }\n }\n\n return result;\n};","import _typeof from \"@babel/runtime/helpers/typeof\";\nimport { buildSearch } from './data';\nimport stringFromCodePoint from '../polyfills/stringFromCodePoint';\nimport { uncompress } from './data';\nvar COLONS_REGEX = /^(?:\\:([^\\:]+)\\:)(?:\\:skin-tone-(\\d)\\:)?$/;\nvar SKINS = ['1F3FA', '1F3FB', '1F3FC', '1F3FD', '1F3FE', '1F3FF'];\n\nfunction unifiedToNative(unified) {\n var unicodes = unified.split('-'),\n codePoints = unicodes.map(function (u) {\n return \"0x\".concat(u);\n });\n return stringFromCodePoint.apply(null, codePoints);\n}\n\nfunction sanitize(emoji) {\n var name = emoji.name,\n short_names = emoji.short_names,\n skin_tone = emoji.skin_tone,\n skin_variations = emoji.skin_variations,\n emoticons = emoji.emoticons,\n unified = emoji.unified,\n custom = emoji.custom,\n customCategory = emoji.customCategory,\n imageUrl = emoji.imageUrl,\n id = emoji.id || short_names[0],\n colons = \":\".concat(id, \":\");\n\n if (custom) {\n return {\n id: id,\n name: name,\n short_names: short_names,\n colons: colons,\n emoticons: emoticons,\n custom: custom,\n customCategory: customCategory,\n imageUrl: imageUrl\n };\n }\n\n if (skin_tone) {\n colons += \":skin-tone-\".concat(skin_tone, \":\");\n }\n\n return {\n id: id,\n name: name,\n short_names: short_names,\n colons: colons,\n emoticons: emoticons,\n unified: unified.toLowerCase(),\n skin: skin_tone || (skin_variations ? 1 : null),\n \"native\": unifiedToNative(unified)\n };\n}\n\nfunction getSanitizedData() {\n return sanitize(getData.apply(void 0, arguments));\n}\n\nfunction getData(emoji, skin, set, data) {\n var emojiData = {};\n\n if (typeof emoji == 'string') {\n var matches = emoji.match(COLONS_REGEX);\n\n if (matches) {\n emoji = matches[1];\n\n if (matches[2]) {\n skin = parseInt(matches[2], 10);\n }\n }\n\n if (data.aliases.hasOwnProperty(emoji)) {\n emoji = data.aliases[emoji];\n }\n\n if (data.emojis.hasOwnProperty(emoji)) {\n emojiData = data.emojis[emoji];\n } else {\n return null;\n }\n } else if (emoji.id) {\n if (data.aliases.hasOwnProperty(emoji.id)) {\n emoji.id = data.aliases[emoji.id];\n }\n\n if (data.emojis.hasOwnProperty(emoji.id)) {\n emojiData = data.emojis[emoji.id];\n skin || (skin = emoji.skin);\n }\n }\n\n if (!Object.keys(emojiData).length) {\n emojiData = emoji;\n emojiData.custom = true;\n\n if (!emojiData.search) {\n emojiData.search = buildSearch(emoji);\n }\n }\n\n emojiData.emoticons || (emojiData.emoticons = []);\n emojiData.variations || (emojiData.variations = []);\n\n if (emojiData.skin_variations && skin > 1) {\n emojiData = JSON.parse(JSON.stringify(emojiData));\n var skinKey = SKINS[skin - 1],\n variationData = emojiData.skin_variations[skinKey];\n\n if (variationData) {\n if (!variationData.variations && emojiData.variations) {\n delete emojiData.variations;\n }\n\n if (set && (variationData[\"has_img_\".concat(set)] == undefined || variationData[\"has_img_\".concat(set)]) || !set) {\n emojiData.skin_tone = skin;\n\n for (var k in variationData) {\n var v = variationData[k];\n emojiData[k] = v;\n }\n }\n }\n }\n\n if (emojiData.variations && emojiData.variations.length) {\n emojiData = JSON.parse(JSON.stringify(emojiData));\n emojiData.unified = emojiData.variations.shift();\n }\n\n return emojiData;\n}\n\nfunction getEmojiDataFromNative(nativeString, set, data) {\n if (data.compressed) {\n uncompress(data);\n }\n\n var skinTones = ['🏻', '🏼', '🏽', '🏾', '🏿'];\n var skinCodes = ['1F3FB', '1F3FC', '1F3FD', '1F3FE', '1F3FF'];\n var skin;\n var skinCode;\n var baseNativeString = nativeString;\n skinTones.forEach(function (skinTone, skinToneIndex) {\n if (nativeString.indexOf(skinTone) > 0) {\n skin = skinToneIndex + 2;\n skinCode = skinCodes[skinToneIndex];\n }\n });\n var emojiData;\n\n for (var id in data.emojis) {\n var emoji = data.emojis[id];\n var emojiUnified = emoji.unified;\n\n if (emoji.variations && emoji.variations.length) {\n emojiUnified = emoji.variations.shift();\n }\n\n if (skin && emoji.skin_variations && emoji.skin_variations[skinCode]) {\n emojiUnified = emoji.skin_variations[skinCode].unified;\n }\n\n if (unifiedToNative(emojiUnified) === baseNativeString) emojiData = emoji;\n }\n\n if (!emojiData) {\n return null;\n }\n\n emojiData.id = emojiData.short_names[0];\n return getSanitizedData(emojiData, skin, set, data);\n}\n\nfunction uniq(arr) {\n return arr.reduce(function (acc, item) {\n if (acc.indexOf(item) === -1) {\n acc.push(item);\n }\n\n return acc;\n }, []);\n}\n\nfunction intersect(a, b) {\n var uniqA = uniq(a);\n var uniqB = uniq(b);\n return uniqA.filter(function (item) {\n return uniqB.indexOf(item) >= 0;\n });\n}\n\nfunction deepMerge(a, b) {\n var o = {};\n\n for (var key in a) {\n var originalValue = a[key],\n value = originalValue;\n\n if (b.hasOwnProperty(key)) {\n value = b[key];\n }\n\n if (_typeof(value) === 'object') {\n value = deepMerge(originalValue, value);\n }\n\n o[key] = value;\n }\n\n return o;\n} // https://github.com/sonicdoe/measure-scrollbar\n\n\nfunction measureScrollbar() {\n if (typeof document == 'undefined') return 0;\n var div = document.createElement('div');\n div.style.width = '100px';\n div.style.height = '100px';\n div.style.overflow = 'scroll';\n div.style.position = 'absolute';\n div.style.top = '-9999px';\n document.body.appendChild(div);\n var scrollbarWidth = div.offsetWidth - div.clientWidth;\n document.body.removeChild(div);\n return scrollbarWidth;\n} // Use requestIdleCallback() if available, else fall back to setTimeout().\n// Throttle so as not to run too frequently.\n\n\nfunction throttleIdleTask(func) {\n var doIdleTask = typeof requestIdleCallback === 'function' ? requestIdleCallback : setTimeout;\n var running = false;\n return function throttled() {\n if (running) {\n return;\n }\n\n running = true;\n doIdleTask(function () {\n running = false;\n func();\n });\n };\n}\n\nexport { getData, getEmojiDataFromNative, getSanitizedData, uniq, intersect, deepMerge, unifiedToNative, measureScrollbar, throttleIdleTask };","var NAMESPACE = 'emoji-mart';\nvar isLocalStorageSupported = typeof window !== 'undefined' && 'localStorage' in window;\nvar getter;\nvar setter;\n\nfunction setHandlers(handlers) {\n handlers || (handlers = {});\n getter = handlers.getter;\n setter = handlers.setter;\n}\n\nfunction setNamespace(namespace) {\n NAMESPACE = namespace;\n}\n\nfunction update(state) {\n for (var key in state) {\n var value = state[key];\n set(key, value);\n }\n}\n\nfunction set(key, value) {\n if (setter) {\n setter(key, value);\n } else {\n if (!isLocalStorageSupported) return;\n\n try {\n window.localStorage[\"\".concat(NAMESPACE, \".\").concat(key)] = JSON.stringify(value);\n } catch (e) {}\n }\n}\n\nfunction get(key) {\n if (getter) {\n return getter(key);\n } else {\n if (!isLocalStorageSupported) return;\n\n try {\n var value = window.localStorage[\"\".concat(NAMESPACE, \".\").concat(key)];\n\n if (value) {\n return JSON.parse(value);\n }\n } catch (e) {\n return;\n }\n }\n}\n\nexport default {\n update: update,\n set: set,\n get: get,\n setNamespace: setNamespace,\n setHandlers: setHandlers\n};","import _classCallCheck from \"@babel/runtime/helpers/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/createClass\";\nimport { getData, getSanitizedData, intersect } from '..';\nimport { uncompress } from '../data';\nimport store from '../store';\n\nvar NimbleEmojiIndex =\n/*#__PURE__*/\nfunction () {\n function NimbleEmojiIndex(data, set) {\n _classCallCheck(this, NimbleEmojiIndex);\n\n if (data.compressed) {\n uncompress(data);\n }\n\n this.data = data || {};\n this.set = set || null;\n this.originalPool = {};\n this.index = {};\n this.emojis = {};\n this.emoticons = {};\n this.customEmojisList = [];\n this.buildIndex();\n }\n\n _createClass(NimbleEmojiIndex, [{\n key: \"buildIndex\",\n value: function buildIndex() {\n var _this = this;\n\n var _loop = function _loop(emoji) {\n var emojiData = _this.data.emojis[emoji],\n short_names = emojiData.short_names,\n emoticons = emojiData.emoticons,\n skin_variations = emojiData.skin_variations,\n id = short_names[0];\n\n if (emoticons) {\n emoticons.forEach(function (emoticon) {\n if (_this.emoticons[emoticon]) {\n return;\n }\n\n _this.emoticons[emoticon] = id;\n });\n } // If skin variations include them\n\n\n if (skin_variations) {\n _this.emojis[id] = {};\n\n for (var skinTone = 1; skinTone <= 6; skinTone++) {\n _this.emojis[id][skinTone] = getSanitizedData({\n id: id,\n skin: skinTone\n }, skinTone, _this.set, _this.data);\n }\n } else {\n _this.emojis[id] = getSanitizedData(id, null, _this.set, _this.data);\n }\n\n _this.originalPool[id] = emojiData;\n };\n\n for (var emoji in this.data.emojis) {\n _loop(emoji);\n }\n }\n }, {\n key: \"clearCustomEmojis\",\n value: function clearCustomEmojis(pool) {\n var _this2 = this;\n\n this.customEmojisList.forEach(function (emoji) {\n var emojiId = emoji.id || emoji.short_names[0];\n delete pool[emojiId];\n delete _this2.emojis[emojiId];\n });\n }\n }, {\n key: \"addCustomToPool\",\n value: function addCustomToPool(custom, pool) {\n var _this3 = this;\n\n if (this.customEmojisList.length) this.clearCustomEmojis(pool);\n custom.forEach(function (emoji) {\n var emojiId = emoji.id || emoji.short_names[0];\n\n if (emojiId && !pool[emojiId]) {\n pool[emojiId] = getData(emoji, null, null, _this3.data);\n _this3.emojis[emojiId] = getSanitizedData(emoji, null, null, _this3.data);\n }\n });\n this.customEmojisList = custom;\n this.index = {};\n }\n }, {\n key: \"search\",\n value: function search(value) {\n var _this4 = this;\n\n var _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},\n emojisToShowFilter = _ref.emojisToShowFilter,\n maxResults = _ref.maxResults,\n include = _ref.include,\n exclude = _ref.exclude,\n _ref$custom = _ref.custom,\n custom = _ref$custom === void 0 ? [] : _ref$custom;\n\n if (this.customEmojisList != custom) this.addCustomToPool(custom, this.originalPool);\n var skinTone = store.get('skin') || 1;\n maxResults || (maxResults = 75);\n include || (include = []);\n exclude || (exclude = []);\n var results = null,\n pool = this.originalPool;\n\n if (value.length) {\n if (value == '-' || value == '-1') {\n return [this.emojis['-1'][skinTone]];\n }\n\n var values = value.toLowerCase().split(/[\\s|,|\\-|_]+/),\n allResults = [];\n\n if (values.length > 2) {\n values = [values[0], values[1]];\n }\n\n if (include.length || exclude.length) {\n pool = {};\n this.data.categories.forEach(function (category) {\n var isIncluded = include && include.length ? include.indexOf(category.id) > -1 : true;\n var isExcluded = exclude && exclude.length ? exclude.indexOf(category.id) > -1 : false;\n\n if (!isIncluded || isExcluded) {\n return;\n }\n\n category.emojis.forEach(function (emojiId) {\n return pool[emojiId] = _this4.data.emojis[emojiId];\n });\n });\n\n if (custom.length) {\n var customIsIncluded = include && include.length ? include.indexOf('custom') > -1 : true;\n var customIsExcluded = exclude && exclude.length ? exclude.indexOf('custom') > -1 : false;\n\n if (customIsIncluded && !customIsExcluded) {\n this.addCustomToPool(custom, pool);\n }\n }\n }\n\n allResults = values.map(function (value) {\n var aPool = pool,\n aIndex = _this4.index,\n length = 0;\n\n for (var charIndex = 0; charIndex < value.length; charIndex++) {\n var _char = value[charIndex];\n length++;\n aIndex[_char] || (aIndex[_char] = {});\n aIndex = aIndex[_char];\n\n if (!aIndex.results) {\n (function () {\n var scores = {};\n aIndex.results = [];\n aIndex.pool = {};\n\n for (var id in aPool) {\n var emoji = aPool[id],\n search = emoji.search,\n sub = value.substr(0, length),\n subIndex = search.indexOf(sub);\n\n if (subIndex != -1) {\n var score = subIndex + 1;\n if (sub == id) score = 0;\n\n if (_this4.emojis[id] && _this4.emojis[id][skinTone]) {\n aIndex.results.push(_this4.emojis[id][skinTone]);\n } else {\n aIndex.results.push(_this4.emojis[id]);\n }\n\n aIndex.pool[id] = emoji;\n scores[id] = score;\n }\n }\n\n aIndex.results.sort(function (a, b) {\n var aScore = scores[a.id],\n bScore = scores[b.id];\n\n if (aScore == bScore) {\n return a.id.localeCompare(b.id);\n } else {\n return aScore - bScore;\n }\n });\n })();\n }\n\n aPool = aIndex.pool;\n }\n\n return aIndex.results;\n }).filter(function (a) {\n return a;\n });\n\n if (allResults.length > 1) {\n results = intersect.apply(null, allResults);\n } else if (allResults.length) {\n results = allResults[0];\n } else {\n results = [];\n }\n }\n\n if (results) {\n if (emojisToShowFilter) {\n results = results.filter(function (result) {\n return emojisToShowFilter(pool[result.id]);\n });\n }\n\n if (results && results.length > maxResults) {\n results = results.slice(0, maxResults);\n }\n }\n\n return results;\n }\n }]);\n\n return NimbleEmojiIndex;\n}();\n\nexport { NimbleEmojiIndex as default };","import data from '../../../data/all.json';\nimport NimbleEmojiIndex from './nimble-emoji-index';\nvar emojiIndex = new NimbleEmojiIndex(data);\nvar emojis = emojiIndex.emojis,\n emoticons = emojiIndex.emoticons;\n\nfunction search() {\n return emojiIndex.search.apply(emojiIndex, arguments);\n}\n\nexport default {\n search: search,\n emojis: emojis,\n emoticons: emoticons\n};","import store from './store';\nvar DEFAULTS = ['+1', 'grinning', 'kissing_heart', 'heart_eyes', 'laughing', 'stuck_out_tongue_winking_eye', 'sweat_smile', 'joy', 'scream', 'disappointed', 'unamused', 'weary', 'sob', 'sunglasses', 'heart', 'poop'];\nvar frequently, initialized;\nvar defaults = {};\n\nfunction init() {\n initialized = true;\n frequently = store.get('frequently');\n}\n\nfunction add(emoji) {\n if (!initialized) init();\n var id = emoji.id;\n frequently || (frequently = defaults);\n frequently[id] || (frequently[id] = 0);\n frequently[id] += 1;\n store.set('last', id);\n store.set('frequently', frequently);\n}\n\nfunction get(perLine) {\n if (!initialized) init();\n\n if (!frequently) {\n defaults = {};\n var result = [];\n\n for (var i = 0; i < perLine; i++) {\n defaults[DEFAULTS[i]] = perLine - i;\n result.push(DEFAULTS[i]);\n }\n\n return result;\n }\n\n var quantity = perLine * 4;\n var frequentlyKeys = [];\n\n for (var key in frequently) {\n if (frequently.hasOwnProperty(key)) {\n frequentlyKeys.push(key);\n }\n }\n\n var sorted = frequentlyKeys.sort(function (a, b) {\n return frequently[a] - frequently[b];\n }).reverse();\n var sliced = sorted.slice(0, quantity);\n var last = store.get('last');\n\n if (last && sliced.indexOf(last) == -1) {\n sliced.pop();\n sliced.push(last);\n }\n\n return sliced;\n}\n\nexport default {\n add: add,\n get: get\n};","export default function _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}","export default function _extends() {\n _extends = Object.assign ? Object.assign.bind() : function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n return _extends.apply(this, arguments);\n}","export default function _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return self;\n}","import _typeof from \"./typeof.js\";\nimport assertThisInitialized from \"./assertThisInitialized.js\";\nexport default function _possibleConstructorReturn(self, call) {\n if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) {\n return call;\n } else if (call !== void 0) {\n throw new TypeError(\"Derived constructors may only return object or undefined\");\n }\n\n return assertThisInitialized(self);\n}","export default function _getPrototypeOf(o) {\n _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n return _getPrototypeOf(o);\n}","export default function _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n return _setPrototypeOf(o, p);\n}","import setPrototypeOf from \"./setPrototypeOf.js\";\nexport default function _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n Object.defineProperty(subClass, \"prototype\", {\n writable: false\n });\n if (superClass) setPrototypeOf(subClass, superClass);\n}","import React from 'react';\nvar categories = {\n activity: function activity() {\n return React.createElement(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 24 24\",\n width: \"24\",\n height: \"24\"\n }, React.createElement(\"path\", {\n d: \"M12 0C5.373 0 0 5.372 0 12c0 6.627 5.373 12 12 12 6.628 0 12-5.373 12-12 0-6.628-5.372-12-12-12m9.949 11H17.05c.224-2.527 1.232-4.773 1.968-6.113A9.966 9.966 0 0 1 21.949 11M13 11V2.051a9.945 9.945 0 0 1 4.432 1.564c-.858 1.491-2.156 4.22-2.392 7.385H13zm-2 0H8.961c-.238-3.165-1.536-5.894-2.393-7.385A9.95 9.95 0 0 1 11 2.051V11zm0 2v8.949a9.937 9.937 0 0 1-4.432-1.564c.857-1.492 2.155-4.221 2.393-7.385H11zm4.04 0c.236 3.164 1.534 5.893 2.392 7.385A9.92 9.92 0 0 1 13 21.949V13h2.04zM4.982 4.887C5.718 6.227 6.726 8.473 6.951 11h-4.9a9.977 9.977 0 0 1 2.931-6.113M2.051 13h4.9c-.226 2.527-1.233 4.771-1.969 6.113A9.972 9.972 0 0 1 2.051 13m16.967 6.113c-.735-1.342-1.744-3.586-1.968-6.113h4.899a9.961 9.961 0 0 1-2.931 6.113\"\n }));\n },\n custom: function custom() {\n return React.createElement(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 24 24\",\n width: \"24\",\n height: \"24\"\n }, React.createElement(\"g\", {\n transform: \"translate(2.000000, 1.000000)\"\n }, React.createElement(\"rect\", {\n id: \"Rectangle\",\n x: \"8\",\n y: \"0\",\n width: \"3\",\n height: \"21\",\n rx: \"1.5\"\n }), React.createElement(\"rect\", {\n id: \"Rectangle\",\n transform: \"translate(9.843, 10.549) rotate(60) translate(-9.843, -10.549) \",\n x: \"8.343\",\n y: \"0.049\",\n width: \"3\",\n height: \"21\",\n rx: \"1.5\"\n }), React.createElement(\"rect\", {\n id: \"Rectangle\",\n transform: \"translate(9.843, 10.549) rotate(-60) translate(-9.843, -10.549) \",\n x: \"8.343\",\n y: \"0.049\",\n width: \"3\",\n height: \"21\",\n rx: \"1.5\"\n })));\n },\n flags: function flags() {\n return React.createElement(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 24 24\",\n width: \"24\",\n height: \"24\"\n }, React.createElement(\"path\", {\n d: \"M0 0l6.084 24H8L1.916 0zM21 5h-4l-1-4H4l3 12h3l1 4h13L21 5zM6.563 3h7.875l2 8H8.563l-2-8zm8.832 10l-2.856 1.904L12.063 13h3.332zM19 13l-1.5-6h1.938l2 8H16l3-2z\"\n }));\n },\n foods: function foods() {\n return React.createElement(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 24 24\",\n width: \"24\",\n height: \"24\"\n }, React.createElement(\"path\", {\n d: \"M17 4.978c-1.838 0-2.876.396-3.68.934.513-1.172 1.768-2.934 4.68-2.934a1 1 0 0 0 0-2c-2.921 0-4.629 1.365-5.547 2.512-.064.078-.119.162-.18.244C11.73 1.838 10.798.023 9.207.023 8.579.022 7.85.306 7 .978 5.027 2.54 5.329 3.902 6.492 4.999 3.609 5.222 0 7.352 0 12.969c0 4.582 4.961 11.009 9 11.009 1.975 0 2.371-.486 3-1 .629.514 1.025 1 3 1 4.039 0 9-6.418 9-11 0-5.953-4.055-8-7-8M8.242 2.546c.641-.508.943-.523.965-.523.426.169.975 1.405 1.357 3.055-1.527-.629-2.741-1.352-2.98-1.846.059-.112.241-.356.658-.686M15 21.978c-1.08 0-1.21-.109-1.559-.402l-.176-.146c-.367-.302-.816-.452-1.266-.452s-.898.15-1.266.452l-.176.146c-.347.292-.477.402-1.557.402-2.813 0-7-5.389-7-9.009 0-5.823 4.488-5.991 5-5.991 1.939 0 2.484.471 3.387 1.251l.323.276a1.995 1.995 0 0 0 2.58 0l.323-.276c.902-.78 1.447-1.251 3.387-1.251.512 0 5 .168 5 6 0 3.617-4.187 9-7 9\"\n }));\n },\n nature: function nature() {\n return React.createElement(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 24 24\",\n width: \"24\",\n height: \"24\"\n }, React.createElement(\"path\", {\n d: \"M15.5 8a1.5 1.5 0 1 0 .001 3.001A1.5 1.5 0 0 0 15.5 8M8.5 8a1.5 1.5 0 1 0 .001 3.001A1.5 1.5 0 0 0 8.5 8\"\n }), React.createElement(\"path\", {\n d: \"M18.933 0h-.027c-.97 0-2.138.787-3.018 1.497-1.274-.374-2.612-.51-3.887-.51-1.285 0-2.616.133-3.874.517C7.245.79 6.069 0 5.093 0h-.027C3.352 0 .07 2.67.002 7.026c-.039 2.479.276 4.238 1.04 5.013.254.258.882.677 1.295.882.191 3.177.922 5.238 2.536 6.38.897.637 2.187.949 3.2 1.102C8.04 20.6 8 20.795 8 21c0 1.773 2.35 3 4 3 1.648 0 4-1.227 4-3 0-.201-.038-.393-.072-.586 2.573-.385 5.435-1.877 5.925-7.587.396-.22.887-.568 1.104-.788.763-.774 1.079-2.534 1.04-5.013C23.929 2.67 20.646 0 18.933 0M3.223 9.135c-.237.281-.837 1.155-.884 1.238-.15-.41-.368-1.349-.337-3.291.051-3.281 2.478-4.972 3.091-5.031.256.015.731.27 1.265.646-1.11 1.171-2.275 2.915-2.352 5.125-.133.546-.398.858-.783 1.313M12 22c-.901 0-1.954-.693-2-1 0-.654.475-1.236 1-1.602V20a1 1 0 1 0 2 0v-.602c.524.365 1 .947 1 1.602-.046.307-1.099 1-2 1m3-3.48v.02a4.752 4.752 0 0 0-1.262-1.02c1.092-.516 2.239-1.334 2.239-2.217 0-1.842-1.781-2.195-3.977-2.195-2.196 0-3.978.354-3.978 2.195 0 .883 1.148 1.701 2.238 2.217A4.8 4.8 0 0 0 9 18.539v-.025c-1-.076-2.182-.281-2.973-.842-1.301-.92-1.838-3.045-1.853-6.478l.023-.041c.496-.826 1.49-1.45 1.804-3.102 0-2.047 1.357-3.631 2.362-4.522C9.37 3.178 10.555 3 11.948 3c1.447 0 2.685.192 3.733.57 1 .9 2.316 2.465 2.316 4.48.313 1.651 1.307 2.275 1.803 3.102.035.058.068.117.102.178-.059 5.967-1.949 7.01-4.902 7.19m6.628-8.202c-.037-.065-.074-.13-.113-.195a7.587 7.587 0 0 0-.739-.987c-.385-.455-.648-.768-.782-1.313-.076-2.209-1.241-3.954-2.353-5.124.531-.376 1.004-.63 1.261-.647.636.071 3.044 1.764 3.096 5.031.027 1.81-.347 3.218-.37 3.235\"\n }));\n },\n objects: function objects() {\n return React.createElement(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 24 24\",\n width: \"24\",\n height: \"24\"\n }, React.createElement(\"path\", {\n d: \"M12 0a9 9 0 0 0-5 16.482V21s2.035 3 5 3 5-3 5-3v-4.518A9 9 0 0 0 12 0zm0 2c3.86 0 7 3.141 7 7s-3.14 7-7 7-7-3.141-7-7 3.14-7 7-7zM9 17.477c.94.332 1.946.523 3 .523s2.06-.19 3-.523v.834c-.91.436-1.925.689-3 .689a6.924 6.924 0 0 1-3-.69v-.833zm.236 3.07A8.854 8.854 0 0 0 12 21c.965 0 1.888-.167 2.758-.451C14.155 21.173 13.153 22 12 22c-1.102 0-2.117-.789-2.764-1.453z\"\n }), React.createElement(\"path\", {\n d: \"M14.745 12.449h-.004c-.852-.024-1.188-.858-1.577-1.824-.421-1.061-.703-1.561-1.182-1.566h-.009c-.481 0-.783.497-1.235 1.537-.436.982-.801 1.811-1.636 1.791l-.276-.043c-.565-.171-.853-.691-1.284-1.794-.125-.313-.202-.632-.27-.913-.051-.213-.127-.53-.195-.634C7.067 9.004 7.039 9 6.99 9A1 1 0 0 1 7 7h.01c1.662.017 2.015 1.373 2.198 2.134.486-.981 1.304-2.058 2.797-2.075 1.531.018 2.28 1.153 2.731 2.141l.002-.008C14.944 8.424 15.327 7 16.979 7h.032A1 1 0 1 1 17 9h-.011c-.149.076-.256.474-.319.709a6.484 6.484 0 0 1-.311.951c-.429.973-.79 1.789-1.614 1.789\"\n }));\n },\n people: function people() {\n return React.createElement(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 24 24\",\n width: \"24\",\n height: \"24\"\n }, React.createElement(\"path\", {\n d: \"M12 0C5.373 0 0 5.373 0 12s5.373 12 12 12 12-5.373 12-12S18.627 0 12 0m0 22C6.486 22 2 17.514 2 12S6.486 2 12 2s10 4.486 10 10-4.486 10-10 10\"\n }), React.createElement(\"path\", {\n d: \"M8 7a2 2 0 1 0-.001 3.999A2 2 0 0 0 8 7M16 7a2 2 0 1 0-.001 3.999A2 2 0 0 0 16 7M15.232 15c-.693 1.195-1.87 2-3.349 2-1.477 0-2.655-.805-3.347-2H15m3-2H6a6 6 0 1 0 12 0\"\n }));\n },\n places: function places() {\n return React.createElement(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 24 24\",\n width: \"24\",\n height: \"24\"\n }, React.createElement(\"path\", {\n d: \"M6.5 12C5.122 12 4 13.121 4 14.5S5.122 17 6.5 17 9 15.879 9 14.5 7.878 12 6.5 12m0 3c-.275 0-.5-.225-.5-.5s.225-.5.5-.5.5.225.5.5-.225.5-.5.5M17.5 12c-1.378 0-2.5 1.121-2.5 2.5s1.122 2.5 2.5 2.5 2.5-1.121 2.5-2.5-1.122-2.5-2.5-2.5m0 3c-.275 0-.5-.225-.5-.5s.225-.5.5-.5.5.225.5.5-.225.5-.5.5\"\n }), React.createElement(\"path\", {\n d: \"M22.482 9.494l-1.039-.346L21.4 9h.6c.552 0 1-.439 1-.992 0-.006-.003-.008-.003-.008H23c0-1-.889-2-1.984-2h-.642l-.731-1.717C19.262 3.012 18.091 2 16.764 2H7.236C5.909 2 4.738 3.012 4.357 4.283L3.626 6h-.642C1.889 6 1 7 1 8h.003S1 8.002 1 8.008C1 8.561 1.448 9 2 9h.6l-.043.148-1.039.346a2.001 2.001 0 0 0-1.359 2.097l.751 7.508a1 1 0 0 0 .994.901H3v1c0 1.103.896 2 2 2h2c1.104 0 2-.897 2-2v-1h6v1c0 1.103.896 2 2 2h2c1.104 0 2-.897 2-2v-1h1.096a.999.999 0 0 0 .994-.901l.751-7.508a2.001 2.001 0 0 0-1.359-2.097M6.273 4.857C6.402 4.43 6.788 4 7.236 4h9.527c.448 0 .834.43.963.857L19.313 9H4.688l1.585-4.143zM7 21H5v-1h2v1zm12 0h-2v-1h2v1zm2.189-3H2.811l-.662-6.607L3 11h18l.852.393L21.189 18z\"\n }));\n },\n recent: function recent() {\n return React.createElement(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 24 24\",\n width: \"24\",\n height: \"24\"\n }, React.createElement(\"path\", {\n d: \"M13 4h-2l-.001 7H9v2h2v2h2v-2h4v-2h-4z\"\n }), React.createElement(\"path\", {\n d: \"M12 0C5.373 0 0 5.373 0 12s5.373 12 12 12 12-5.373 12-12S18.627 0 12 0m0 22C6.486 22 2 17.514 2 12S6.486 2 12 2s10 4.486 10 10-4.486 10-10 10\"\n }));\n },\n symbols: function symbols() {\n return React.createElement(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 24 24\",\n width: \"24\",\n height: \"24\"\n }, React.createElement(\"path\", {\n d: \"M0 0h11v2H0zM4 11h3V6h4V4H0v2h4zM15.5 17c1.381 0 2.5-1.116 2.5-2.493s-1.119-2.493-2.5-2.493S13 13.13 13 14.507 14.119 17 15.5 17m0-2.986c.276 0 .5.222.5.493 0 .272-.224.493-.5.493s-.5-.221-.5-.493.224-.493.5-.493M21.5 19.014c-1.381 0-2.5 1.116-2.5 2.493S20.119 24 21.5 24s2.5-1.116 2.5-2.493-1.119-2.493-2.5-2.493m0 2.986a.497.497 0 0 1-.5-.493c0-.271.224-.493.5-.493s.5.222.5.493a.497.497 0 0 1-.5.493M22 13l-9 9 1.513 1.5 8.99-9.009zM17 11c2.209 0 4-1.119 4-2.5V2s.985-.161 1.498.949C23.01 4.055 23 6 23 6s1-1.119 1-3.135C24-.02 21 0 21 0h-2v6.347A5.853 5.853 0 0 0 17 6c-2.209 0-4 1.119-4 2.5s1.791 2.5 4 2.5M10.297 20.482l-1.475-1.585a47.54 47.54 0 0 1-1.442 1.129c-.307-.288-.989-1.016-2.045-2.183.902-.836 1.479-1.466 1.729-1.892s.376-.871.376-1.336c0-.592-.273-1.178-.818-1.759-.546-.581-1.329-.871-2.349-.871-1.008 0-1.79.293-2.344.879-.556.587-.832 1.181-.832 1.784 0 .813.419 1.748 1.256 2.805-.847.614-1.444 1.208-1.794 1.784a3.465 3.465 0 0 0-.523 1.833c0 .857.308 1.56.924 2.107.616.549 1.423.823 2.42.823 1.173 0 2.444-.379 3.813-1.137L8.235 24h2.819l-2.09-2.383 1.333-1.135zm-6.736-6.389a1.02 1.02 0 0 1 .73-.286c.31 0 .559.085.747.254a.849.849 0 0 1 .283.659c0 .518-.419 1.112-1.257 1.784-.536-.651-.805-1.231-.805-1.742a.901.901 0 0 1 .302-.669M3.74 22c-.427 0-.778-.116-1.057-.349-.279-.232-.418-.487-.418-.766 0-.594.509-1.288 1.527-2.083.968 1.134 1.717 1.946 2.248 2.438-.921.507-1.686.76-2.3.76\"\n }));\n }\n};\nvar search = {\n search: function search() {\n return React.createElement(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n width: \"13\",\n height: \"13\",\n viewBox: \"0 0 20 20\",\n opacity: \"0.5\"\n }, React.createElement(\"path\", {\n d: \"M12.9 14.32a8 8 0 1 1 1.41-1.41l5.35 5.33-1.42 1.42-5.33-5.34zM8 14A6 6 0 1 0 8 2a6 6 0 0 0 0 12z\"\n }));\n },\n \"delete\": function _delete() {\n return React.createElement(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n width: \"13\",\n height: \"13\",\n viewBox: \"0 0 20 20\",\n opacity: \"0.5\"\n }, React.createElement(\"path\", {\n d: \"M10 8.586L2.929 1.515 1.515 2.929 8.586 10l-7.071 7.071 1.414 1.414L10 11.414l7.071 7.071 1.414-1.414L11.414 10l7.071-7.071-1.414-1.414L10 8.586z\"\n }));\n }\n};\nexport { categories, search };","import PropTypes from 'prop-types';\nvar EmojiPropTypes = {\n data: PropTypes.object.isRequired,\n onOver: PropTypes.func,\n onLeave: PropTypes.func,\n onClick: PropTypes.func,\n fallback: PropTypes.func,\n backgroundImageFn: PropTypes.func,\n \"native\": PropTypes.bool,\n forceSize: PropTypes.bool,\n tooltip: PropTypes.bool,\n useButton: PropTypes.bool,\n skin: PropTypes.oneOf([1, 2, 3, 4, 5, 6]),\n sheetSize: PropTypes.oneOf([16, 20, 32, 64]),\n sheetColumns: PropTypes.number,\n sheetRows: PropTypes.number,\n set: PropTypes.oneOf(['apple', 'google', 'twitter', 'facebook']),\n size: PropTypes.number.isRequired,\n emoji: PropTypes.oneOfType([PropTypes.string, PropTypes.object]).isRequired\n};\nvar PickerPropTypes = {\n onClick: PropTypes.func,\n onSelect: PropTypes.func,\n onSkinChange: PropTypes.func,\n perLine: PropTypes.number,\n emojiSize: PropTypes.number,\n i18n: PropTypes.object,\n style: PropTypes.object,\n title: PropTypes.string,\n emoji: PropTypes.string,\n color: PropTypes.string,\n set: EmojiPropTypes.set,\n skin: EmojiPropTypes.skin,\n \"native\": PropTypes.bool,\n backgroundImageFn: EmojiPropTypes.backgroundImageFn,\n sheetSize: EmojiPropTypes.sheetSize,\n emojisToShowFilter: PropTypes.func,\n showPreview: PropTypes.bool,\n showSkinTones: PropTypes.bool,\n emojiTooltip: EmojiPropTypes.tooltip,\n useButton: EmojiPropTypes.useButton,\n theme: PropTypes.oneOf(['auto', 'light', 'dark']),\n include: PropTypes.arrayOf(PropTypes.string),\n exclude: PropTypes.arrayOf(PropTypes.string),\n recent: PropTypes.arrayOf(PropTypes.string),\n autoFocus: PropTypes.bool,\n enableFrequentEmojiSort: PropTypes.bool,\n custom: PropTypes.arrayOf(PropTypes.shape({\n name: PropTypes.string.isRequired,\n short_names: PropTypes.arrayOf(PropTypes.string).isRequired,\n emoticons: PropTypes.arrayOf(PropTypes.string),\n keywords: PropTypes.arrayOf(PropTypes.string),\n imageUrl: PropTypes.string,\n spriteUrl: PropTypes.string,\n sheet_x: PropTypes.number,\n sheet_y: PropTypes.number,\n size: PropTypes.number,\n sheetColumns: PropTypes.number,\n sheetRows: PropTypes.number\n })),\n skinEmoji: PropTypes.string,\n notFound: PropTypes.func,\n notFoundEmoji: PropTypes.string,\n icons: PropTypes.object\n};\nexport { EmojiPropTypes, PickerPropTypes };","import _classCallCheck from \"@babel/runtime/helpers/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/createClass\";\nimport _possibleConstructorReturn from \"@babel/runtime/helpers/possibleConstructorReturn\";\nimport _getPrototypeOf from \"@babel/runtime/helpers/getPrototypeOf\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/inherits\";\nimport React from 'react';\nimport PropTypes from 'prop-types';\n\nvar Anchors =\n/*#__PURE__*/\nfunction (_React$PureComponent) {\n _inherits(Anchors, _React$PureComponent);\n\n function Anchors(props) {\n var _this;\n\n _classCallCheck(this, Anchors);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(Anchors).call(this, props));\n var defaultCategory = props.categories.filter(function (category) {\n return category.first;\n })[0];\n _this.state = {\n selected: defaultCategory.name\n };\n _this.handleClick = _this.handleClick.bind(_assertThisInitialized(_this));\n return _this;\n }\n\n _createClass(Anchors, [{\n key: \"handleClick\",\n value: function handleClick(e) {\n var index = e.currentTarget.getAttribute('data-index');\n var _this$props = this.props,\n categories = _this$props.categories,\n onAnchorClick = _this$props.onAnchorClick;\n onAnchorClick(categories[index], index);\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this2 = this;\n\n var _this$props2 = this.props,\n categories = _this$props2.categories,\n color = _this$props2.color,\n i18n = _this$props2.i18n,\n icons = _this$props2.icons,\n selected = this.state.selected;\n return React.createElement(\"nav\", {\n className: \"emoji-mart-anchors\",\n \"aria-label\": i18n.categorieslabel\n }, categories.map(function (category, i) {\n var id = category.id,\n name = category.name,\n anchor = category.anchor,\n isSelected = name == selected;\n\n if (anchor === false) {\n return null;\n }\n\n var iconId = id.startsWith('custom-') ? 'custom' : id;\n return React.createElement(\"button\", {\n key: id,\n \"aria-label\": i18n.categories[iconId],\n title: i18n.categories[iconId],\n \"data-index\": i,\n type: 'button',\n onClick: _this2.handleClick,\n className: \"emoji-mart-anchor \".concat(isSelected ? 'emoji-mart-anchor-selected' : ''),\n style: {\n color: isSelected ? color : null\n }\n }, React.createElement(\"div\", {\n className: \"emoji-mart-anchor-icon\"\n }, icons.categories[iconId]()), React.createElement(\"span\", {\n className: \"emoji-mart-anchor-bar\",\n style: {\n backgroundColor: color\n }\n }));\n }));\n }\n }]);\n\n return Anchors;\n}(React.PureComponent);\n\nexport { Anchors as default };\nAnchors.propTypes\n/* remove-proptypes */\n= {\n categories: PropTypes.array,\n onAnchorClick: PropTypes.func,\n icons: PropTypes.object\n};\nAnchors.defaultProps = {\n categories: [],\n onAnchorClick: function onAnchorClick() {},\n icons: {}\n};","var EmojiDefaultProps = {\n skin: 1,\n set: 'apple',\n sheetSize: 64,\n sheetColumns: 57,\n sheetRows: 57,\n \"native\": false,\n forceSize: false,\n tooltip: false,\n useButton: true,\n backgroundImageFn: function backgroundImageFn(set, sheetSize) {\n return \"https://unpkg.com/emoji-datasource-\".concat(set, \"@\").concat(\"5.0.1\", \"/img/\").concat(set, \"/sheets-256/\").concat(sheetSize, \".png\");\n }\n};\nvar PickerDefaultProps = {\n onClick: function onClick() {},\n onSelect: function onSelect() {},\n onSkinChange: function onSkinChange() {},\n emojiSize: 24,\n perLine: 9,\n i18n: {},\n style: {},\n title: 'Emoji Mart™',\n emoji: 'department_store',\n color: '#ae65c5',\n set: EmojiDefaultProps.set,\n theme: 'light',\n skin: null,\n defaultSkin: EmojiDefaultProps.skin,\n \"native\": EmojiDefaultProps[\"native\"],\n sheetSize: EmojiDefaultProps.sheetSize,\n backgroundImageFn: EmojiDefaultProps.backgroundImageFn,\n emojisToShowFilter: null,\n showPreview: true,\n showSkinTones: true,\n emojiTooltip: EmojiDefaultProps.tooltip,\n useButton: EmojiDefaultProps.useButton,\n autoFocus: false,\n enableFrequentEmojiSort: false,\n custom: [],\n skinEmoji: '',\n notFound: function notFound() {},\n notFoundEmoji: 'sleuth_or_spy',\n icons: {}\n};\nexport { PickerDefaultProps, EmojiDefaultProps };","import _extends from \"@babel/runtime/helpers/extends\";\nimport _defineProperty from \"@babel/runtime/helpers/defineProperty\";\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport { getData, getSanitizedData, unifiedToNative } from '../../utils';\nimport { uncompress } from '../../utils/data';\nimport { EmojiPropTypes } from '../../utils/shared-props';\nimport { EmojiDefaultProps } from '../../utils/shared-default-props';\n\nvar _getData = function _getData(props) {\n var emoji = props.emoji,\n skin = props.skin,\n set = props.set,\n data = props.data;\n return getData(emoji, skin, set, data);\n};\n\nvar _getPosition = function _getPosition(props) {\n var _getData2 = _getData(props),\n sheet_x = _getData2.sheet_x,\n sheet_y = _getData2.sheet_y,\n multiplyX = 100 / (props.sheetColumns - 1),\n multiplyY = 100 / (props.sheetRows - 1);\n\n return \"\".concat(multiplyX * sheet_x, \"% \").concat(multiplyY * sheet_y, \"%\");\n};\n\nvar _getSanitizedData = function _getSanitizedData(props) {\n var emoji = props.emoji,\n skin = props.skin,\n set = props.set,\n data = props.data;\n return getSanitizedData(emoji, skin, set, data);\n};\n\nvar _handleClick = function _handleClick(e, props) {\n if (!props.onClick) {\n return;\n }\n\n var onClick = props.onClick,\n emoji = _getSanitizedData(props);\n\n onClick(emoji, e);\n};\n\nvar _handleOver = function _handleOver(e, props) {\n if (!props.onOver) {\n return;\n }\n\n var onOver = props.onOver,\n emoji = _getSanitizedData(props);\n\n onOver(emoji, e);\n};\n\nvar _handleLeave = function _handleLeave(e, props) {\n if (!props.onLeave) {\n return;\n }\n\n var onLeave = props.onLeave,\n emoji = _getSanitizedData(props);\n\n onLeave(emoji, e);\n};\n\nvar _isNumeric = function _isNumeric(value) {\n return !isNaN(value - parseFloat(value));\n};\n\nvar _convertStyleToCSS = function _convertStyleToCSS(style) {\n var div = document.createElement('div');\n\n for (var key in style) {\n var value = style[key];\n\n if (_isNumeric(value)) {\n value += 'px';\n }\n\n div.style[key] = value;\n }\n\n return div.getAttribute('style');\n};\n\nvar NimbleEmoji = function NimbleEmoji(props) {\n if (props.data.compressed) {\n uncompress(props.data);\n }\n\n for (var k in NimbleEmoji.defaultProps) {\n if (props[k] == undefined && NimbleEmoji.defaultProps[k] != undefined) {\n props[k] = NimbleEmoji.defaultProps[k];\n }\n }\n\n var data = _getData(props);\n\n if (!data) {\n if (props.fallback) {\n return props.fallback(null, props);\n } else {\n return null;\n }\n }\n\n var unified = data.unified,\n custom = data.custom,\n short_names = data.short_names,\n imageUrl = data.imageUrl,\n style = {},\n children = props.children,\n className = 'emoji-mart-emoji',\n nativeEmoji = unified && unifiedToNative(unified),\n label = [nativeEmoji].concat(short_names).filter(Boolean).join(', '),\n title = null;\n\n if (!unified && !custom) {\n if (props.fallback) {\n return props.fallback(data, props);\n } else {\n return null;\n }\n }\n\n if (props.tooltip) {\n title = short_names[0];\n }\n\n if (props[\"native\"] && unified) {\n className += ' emoji-mart-emoji-native';\n style = {\n fontSize: props.size\n };\n children = nativeEmoji;\n\n if (props.forceSize) {\n style.display = 'inline-block';\n style.width = props.size;\n style.height = props.size;\n style.wordBreak = 'keep-all';\n }\n } else if (custom) {\n className += ' emoji-mart-emoji-custom';\n style = {\n width: props.size,\n height: props.size,\n display: 'inline-block'\n };\n\n if (data.spriteUrl) {\n style = _objectSpread({}, style, {\n backgroundImage: \"url(\".concat(data.spriteUrl, \")\"),\n backgroundSize: \"\".concat(100 * props.sheetColumns, \"% \").concat(100 * props.sheetRows, \"%\"),\n backgroundPosition: _getPosition(props)\n });\n } else {\n style = _objectSpread({}, style, {\n backgroundImage: \"url(\".concat(imageUrl, \")\"),\n backgroundSize: 'contain',\n backgroundRepeat: 'no-repeat',\n backgroundPosition: 'center'\n });\n }\n } else {\n var setHasEmoji = data[\"has_img_\".concat(props.set)] == undefined || data[\"has_img_\".concat(props.set)];\n\n if (!setHasEmoji) {\n if (props.fallback) {\n return props.fallback(data, props);\n } else {\n return null;\n }\n } else {\n style = {\n width: props.size,\n height: props.size,\n display: 'inline-block',\n backgroundImage: \"url(\".concat(props.backgroundImageFn(props.set, props.sheetSize), \")\"),\n backgroundSize: \"\".concat(100 * props.sheetColumns, \"% \").concat(100 * props.sheetRows, \"%\"),\n backgroundPosition: _getPosition(props)\n };\n }\n }\n\n var Tag = {\n name: 'span',\n props: {}\n };\n\n if (props.onClick && props.useButton) {\n Tag.name = 'button';\n Tag.props = {\n type: 'button'\n };\n }\n\n if (props.html) {\n style = _convertStyleToCSS(style);\n return \"<\".concat(Tag.name, \" style='\").concat(style, \"' aria-label='\").concat(label, \"' \").concat(title ? \"title='\".concat(title, \"'\") : '', \" class='\").concat(className, \"'>\").concat(children || '', \"</\").concat(Tag.name, \">\");\n } else {\n return React.createElement(Tag.name, _extends({\n onClick: function onClick(e) {\n return _handleClick(e, props);\n },\n onMouseEnter: function onMouseEnter(e) {\n return _handleOver(e, props);\n },\n onMouseLeave: function onMouseLeave(e) {\n return _handleLeave(e, props);\n },\n \"aria-label\": label,\n title: title,\n className: className\n }, Tag.props), React.createElement(\"span\", {\n style: style\n }, children));\n }\n};\n\nNimbleEmoji.propTypes\n/* remove-proptypes */\n= _objectSpread({}, EmojiPropTypes, {\n data: PropTypes.object.isRequired\n});\nNimbleEmoji.defaultProps = EmojiDefaultProps;\nexport default NimbleEmoji;","import _defineProperty from \"@babel/runtime/helpers/defineProperty\";\nimport _classCallCheck from \"@babel/runtime/helpers/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/createClass\";\nimport _possibleConstructorReturn from \"@babel/runtime/helpers/possibleConstructorReturn\";\nimport _getPrototypeOf from \"@babel/runtime/helpers/getPrototypeOf\";\nimport _inherits from \"@babel/runtime/helpers/inherits\";\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport NimbleEmoji from './emoji/nimble-emoji';\n\nvar NotFound =\n/*#__PURE__*/\nfunction (_React$PureComponent) {\n _inherits(NotFound, _React$PureComponent);\n\n function NotFound() {\n _classCallCheck(this, NotFound);\n\n return _possibleConstructorReturn(this, _getPrototypeOf(NotFound).apply(this, arguments));\n }\n\n _createClass(NotFound, [{\n key: \"render\",\n value: function render() {\n var _this$props = this.props,\n data = _this$props.data,\n emojiProps = _this$props.emojiProps,\n i18n = _this$props.i18n,\n notFound = _this$props.notFound,\n notFoundEmoji = _this$props.notFoundEmoji;\n var component = notFound && notFound() || React.createElement(\"div\", {\n className: \"emoji-mart-no-results\"\n }, NimbleEmoji(_objectSpread({\n data: data\n }, emojiProps, {\n size: 38,\n emoji: notFoundEmoji,\n onOver: null,\n onLeave: null,\n onClick: null\n })), React.createElement(\"div\", {\n className: \"emoji-mart-no-results-label\"\n }, i18n.notfound));\n return component;\n }\n }]);\n\n return NotFound;\n}(React.PureComponent);\n\nexport { NotFound as default };\nNotFound.propTypes\n/* remove-proptypes */\n= {\n notFound: PropTypes.func.isRequired,\n emojiProps: PropTypes.object.isRequired\n};","import _defineProperty from \"@babel/runtime/helpers/defineProperty\";\nimport _classCallCheck from \"@babel/runtime/helpers/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/createClass\";\nimport _possibleConstructorReturn from \"@babel/runtime/helpers/possibleConstructorReturn\";\nimport _getPrototypeOf from \"@babel/runtime/helpers/getPrototypeOf\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/inherits\";\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport frequently from '../utils/frequently';\nimport { getData } from '../utils';\nimport NimbleEmoji from './emoji/nimble-emoji';\nimport NotFound from './not-found';\n\nvar Category =\n/*#__PURE__*/\nfunction (_React$Component) {\n _inherits(Category, _React$Component);\n\n function Category(props) {\n var _this;\n\n _classCallCheck(this, Category);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(Category).call(this, props));\n _this.data = props.data;\n _this.setContainerRef = _this.setContainerRef.bind(_assertThisInitialized(_this));\n _this.setLabelRef = _this.setLabelRef.bind(_assertThisInitialized(_this));\n return _this;\n }\n\n _createClass(Category, [{\n key: \"componentDidMount\",\n value: function componentDidMount() {\n this.margin = 0;\n this.minMargin = 0;\n this.memoizeSize();\n }\n }, {\n key: \"shouldComponentUpdate\",\n value: function shouldComponentUpdate(nextProps, nextState) {\n var _this$props = this.props,\n name = _this$props.name,\n perLine = _this$props.perLine,\n _native = _this$props[\"native\"],\n hasStickyPosition = _this$props.hasStickyPosition,\n emojis = _this$props.emojis,\n emojiProps = _this$props.emojiProps,\n skin = emojiProps.skin,\n size = emojiProps.size,\n set = emojiProps.set,\n nextPerLine = nextProps.perLine,\n nextNative = nextProps[\"native\"],\n nextHasStickyPosition = nextProps.hasStickyPosition,\n nextEmojis = nextProps.emojis,\n nextEmojiProps = nextProps.emojiProps,\n nextSkin = nextEmojiProps.skin,\n nextSize = nextEmojiProps.size,\n nextSet = nextEmojiProps.set,\n shouldUpdate = false;\n\n if (name == 'Recent' && perLine != nextPerLine) {\n shouldUpdate = true;\n }\n\n if (name == 'Search') {\n shouldUpdate = !(emojis == nextEmojis);\n }\n\n if (skin != nextSkin || size != nextSize || _native != nextNative || set != nextSet || hasStickyPosition != nextHasStickyPosition) {\n shouldUpdate = true;\n }\n\n return shouldUpdate;\n }\n }, {\n key: \"memoizeSize\",\n value: function memoizeSize() {\n if (!this.container) {\n // probably this is a test environment, e.g. jest\n this.top = 0;\n this.maxMargin = 0;\n return;\n }\n\n var parent = this.container.parentElement;\n\n var _this$container$getBo = this.container.getBoundingClientRect(),\n top = _this$container$getBo.top,\n height = _this$container$getBo.height;\n\n var _parent$getBoundingCl = parent.getBoundingClientRect(),\n parentTop = _parent$getBoundingCl.top;\n\n var _this$label$getBoundi = this.label.getBoundingClientRect(),\n labelHeight = _this$label$getBoundi.height;\n\n this.top = top - parentTop + parent.scrollTop;\n\n if (height == 0) {\n this.maxMargin = 0;\n } else {\n this.maxMargin = height - labelHeight;\n }\n }\n }, {\n key: \"handleScroll\",\n value: function handleScroll(scrollTop) {\n var margin = scrollTop - this.top;\n margin = margin < this.minMargin ? this.minMargin : margin;\n margin = margin > this.maxMargin ? this.maxMargin : margin;\n if (margin == this.margin) return;\n\n if (!this.props.hasStickyPosition) {\n this.label.style.top = \"\".concat(margin, \"px\");\n }\n\n this.margin = margin;\n return true;\n }\n }, {\n key: \"getEmojis\",\n value: function getEmojis() {\n var _this2 = this;\n\n var _this$props2 = this.props,\n name = _this$props2.name,\n emojis = _this$props2.emojis,\n recent = _this$props2.recent,\n perLine = _this$props2.perLine;\n\n if (name == 'Recent') {\n var custom = this.props.custom;\n var frequentlyUsed = recent || frequently.get(perLine);\n\n if (frequentlyUsed.length) {\n emojis = frequentlyUsed.map(function (id) {\n var emoji = custom.filter(function (e) {\n return e.id === id;\n })[0];\n\n if (emoji) {\n return emoji;\n }\n\n return id;\n }).filter(function (id) {\n return !!getData(id, null, null, _this2.data);\n });\n }\n\n if (emojis.length === 0 && frequentlyUsed.length > 0) {\n return null;\n }\n }\n\n if (emojis) {\n emojis = emojis.slice(0);\n }\n\n return emojis;\n }\n }, {\n key: \"updateDisplay\",\n value: function updateDisplay(display) {\n var emojis = this.getEmojis();\n\n if (!emojis || !this.container) {\n return;\n }\n\n this.container.style.display = display;\n }\n }, {\n key: \"setContainerRef\",\n value: function setContainerRef(c) {\n this.container = c;\n }\n }, {\n key: \"setLabelRef\",\n value: function setLabelRef(c) {\n this.label = c;\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this3 = this;\n\n var _this$props3 = this.props,\n id = _this$props3.id,\n name = _this$props3.name,\n hasStickyPosition = _this$props3.hasStickyPosition,\n emojiProps = _this$props3.emojiProps,\n i18n = _this$props3.i18n,\n notFound = _this$props3.notFound,\n notFoundEmoji = _this$props3.notFoundEmoji,\n emojis = this.getEmojis(),\n labelStyles = {},\n labelSpanStyles = {},\n containerStyles = {};\n\n if (!emojis) {\n containerStyles = {\n display: 'none'\n };\n }\n\n if (!hasStickyPosition) {\n labelStyles = {\n height: 28\n };\n labelSpanStyles = {\n position: 'absolute'\n };\n }\n\n var label = i18n.categories[id] || name;\n return React.createElement(\"section\", {\n ref: this.setContainerRef,\n className: \"emoji-mart-category\",\n \"aria-label\": label,\n style: containerStyles\n }, React.createElement(\"div\", {\n style: labelStyles,\n \"data-name\": name,\n className: \"emoji-mart-category-label\"\n }, React.createElement(\"span\", {\n style: labelSpanStyles,\n ref: this.setLabelRef,\n \"aria-hidden\": true\n /* already labeled by the section aria-label */\n\n }, label)), React.createElement(\"ul\", {\n className: \"emoji-mart-category-list\"\n }, emojis && emojis.map(function (emoji) {\n return React.createElement(\"li\", {\n key: emoji.short_names && emoji.short_names.join('_') || emoji\n }, NimbleEmoji(_objectSpread({\n emoji: emoji,\n data: _this3.data\n }, emojiProps)));\n })), emojis && !emojis.length && React.createElement(NotFound, {\n i18n: i18n,\n notFound: notFound,\n notFoundEmoji: notFoundEmoji,\n data: this.data,\n emojiProps: emojiProps\n }));\n }\n }]);\n\n return Category;\n}(React.Component);\n\nexport { Category as default };\nCategory.propTypes\n/* remove-proptypes */\n= {\n emojis: PropTypes.array,\n hasStickyPosition: PropTypes.bool,\n name: PropTypes.string.isRequired,\n \"native\": PropTypes.bool.isRequired,\n perLine: PropTypes.number.isRequired,\n emojiProps: PropTypes.object.isRequired,\n recent: PropTypes.arrayOf(PropTypes.string),\n notFound: PropTypes.func,\n notFoundEmoji: PropTypes.string.isRequired\n};\nCategory.defaultProps = {\n emojis: [],\n hasStickyPosition: true\n};","import _classCallCheck from \"@babel/runtime/helpers/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/createClass\";\nimport _possibleConstructorReturn from \"@babel/runtime/helpers/possibleConstructorReturn\";\nimport _getPrototypeOf from \"@babel/runtime/helpers/getPrototypeOf\";\nimport _inherits from \"@babel/runtime/helpers/inherits\";\nimport React from 'react';\nimport PropTypes from 'prop-types';\n\nvar Skins =\n/*#__PURE__*/\nfunction (_React$PureComponent) {\n _inherits(Skins, _React$PureComponent);\n\n function Skins(props) {\n var _this;\n\n _classCallCheck(this, Skins);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(Skins).call(this, props));\n _this.state = {\n opened: false\n };\n return _this;\n }\n\n _createClass(Skins, [{\n key: \"handleClick\",\n value: function handleClick(e) {\n var skin = parseInt(e.currentTarget.getAttribute('data-skin'));\n var onChange = this.props.onChange;\n\n if (!this.state.opened) {\n this.setState({\n opened: true\n });\n } else {\n this.setState({\n opened: false\n });\n\n if (skin != this.props.skin) {\n onChange(skin);\n }\n }\n }\n }, {\n key: \"render\",\n value: function render() {\n return null;\n }\n }]);\n\n return Skins;\n}(React.PureComponent);\n\nexport { Skins as default };\nSkins.propTypes\n/* remove-proptypes */\n= {\n onChange: PropTypes.func,\n skin: PropTypes.number.isRequired\n};\nSkins.defaultProps = {\n onChange: function onChange() {}\n};","import _classCallCheck from \"@babel/runtime/helpers/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/createClass\";\nimport _possibleConstructorReturn from \"@babel/runtime/helpers/possibleConstructorReturn\";\nimport _getPrototypeOf from \"@babel/runtime/helpers/getPrototypeOf\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/inherits\";\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport NimbleEmoji from './emoji/nimble-emoji';\nimport Skins from './skins';\n\nvar SkinsEmoji =\n/*#__PURE__*/\nfunction (_Skins) {\n _inherits(SkinsEmoji, _Skins);\n\n function SkinsEmoji(props) {\n var _this;\n\n _classCallCheck(this, SkinsEmoji);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(SkinsEmoji).call(this, props));\n _this.handleClick = _this.handleClick.bind(_assertThisInitialized(_this));\n return _this;\n }\n\n _createClass(SkinsEmoji, [{\n key: \"render\",\n value: function render() {\n var _this$props = this.props,\n skin = _this$props.skin,\n emojiProps = _this$props.emojiProps,\n data = _this$props.data,\n skinEmoji = _this$props.skinEmoji,\n i18n = _this$props.i18n;\n var opened = this.state.opened;\n var skinToneNodes = [];\n\n for (var skinTone = 1; skinTone <= 6; skinTone++) {\n var selected = skinTone === skin;\n skinToneNodes.push(React.createElement(\"span\", {\n key: \"skin-tone-\".concat(skinTone),\n className: \"emoji-mart-skin-swatch custom\".concat(selected ? ' selected' : '')\n }, React.createElement(\"span\", {\n onClick: this.handleClick,\n \"data-skin\": skinTone,\n className: \"emoji-mart-skin-tone-\".concat(skinTone)\n }, NimbleEmoji({\n emoji: skinEmoji,\n data: data,\n skin: skinTone,\n backgroundImageFn: emojiProps.backgroundImageFn,\n \"native\": emojiProps[\"native\"],\n set: emojiProps.set,\n sheetSize: emojiProps.sheetSize,\n size: 23\n }))));\n }\n\n return React.createElement(\"div\", {\n className: \"emoji-mart-skin-swatches custom\".concat(opened ? ' opened' : '')\n }, React.createElement(\"div\", {\n className: \"emoji-mart-skin-text\".concat(opened ? ' opened' : '')\n }, i18n.skintext), skinToneNodes);\n }\n }]);\n\n return SkinsEmoji;\n}(Skins);\n\nexport { SkinsEmoji as default };\nSkinsEmoji.propTypes\n/* remove-proptypes */\n= {\n onChange: PropTypes.func,\n skin: PropTypes.number.isRequired,\n emojiProps: PropTypes.object.isRequired,\n skinTone: PropTypes.number,\n skinEmoji: PropTypes.string.isRequired,\n i18n: PropTypes.object\n};\nSkinsEmoji.defaultProps = {\n onChange: function onChange() {},\n skinTone: null\n};","import _extends from \"@babel/runtime/helpers/extends\";\nimport _classCallCheck from \"@babel/runtime/helpers/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/createClass\";\nimport _possibleConstructorReturn from \"@babel/runtime/helpers/possibleConstructorReturn\";\nimport _getPrototypeOf from \"@babel/runtime/helpers/getPrototypeOf\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/inherits\";\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport Skins from './skins';\n\nvar SkinsDot =\n/*#__PURE__*/\nfunction (_Skins) {\n _inherits(SkinsDot, _Skins);\n\n function SkinsDot(props) {\n var _this;\n\n _classCallCheck(this, SkinsDot);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(SkinsDot).call(this, props));\n _this.handleClick = _this.handleClick.bind(_assertThisInitialized(_this));\n _this.handleKeyDown = _this.handleKeyDown.bind(_assertThisInitialized(_this));\n return _this;\n }\n\n _createClass(SkinsDot, [{\n key: \"handleKeyDown\",\n value: function handleKeyDown(event) {\n // if either enter or space is pressed, then execute\n if (event.keyCode === 13 || event.keyCode === 32) {\n event.preventDefault();\n this.handleClick(event);\n }\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this$props = this.props,\n skin = _this$props.skin,\n i18n = _this$props.i18n;\n var opened = this.state.opened;\n var skinToneNodes = [];\n\n for (var skinTone = 1; skinTone <= 6; skinTone++) {\n var selected = skinTone === skin;\n var visible = opened || selected;\n skinToneNodes.push(React.createElement(\"span\", _extends({\n key: \"skin-tone-\".concat(skinTone),\n className: \"emoji-mart-skin-swatch\".concat(selected ? ' selected' : ''),\n \"aria-label\": i18n.skintones[skinTone],\n \"aria-hidden\": !visible\n }, opened ? {\n role: 'menuitem'\n } : {}), React.createElement(\"span\", _extends({\n onClick: this.handleClick,\n onKeyDown: this.handleKeyDown,\n role: \"button\"\n }, selected ? {\n 'aria-haspopup': true,\n 'aria-expanded': !!opened\n } : {}, opened ? {\n 'aria-pressed': !!selected\n } : {}, {\n tabIndex: visible ? '0' : '',\n \"aria-label\": i18n.skintones[skinTone],\n title: i18n.skintones[skinTone],\n \"data-skin\": skinTone,\n className: \"emoji-mart-skin emoji-mart-skin-tone-\".concat(skinTone)\n }))));\n }\n\n return React.createElement(\"section\", {\n className: \"emoji-mart-skin-swatches\".concat(opened ? ' opened' : ''),\n \"aria-label\": i18n.skintext\n }, React.createElement(\"div\", opened ? {\n role: 'menubar'\n } : {}, skinToneNodes));\n }\n }]);\n\n return SkinsDot;\n}(Skins);\n\nexport { SkinsDot as default };\nSkinsDot.propTypes\n/* remove-proptypes */\n= {\n onChange: PropTypes.func,\n skin: PropTypes.number.isRequired,\n i18n: PropTypes.object\n};\nSkinsDot.defaultProps = {\n onChange: function onChange() {}\n};","import _defineProperty from \"@babel/runtime/helpers/defineProperty\";\nimport _classCallCheck from \"@babel/runtime/helpers/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/createClass\";\nimport _possibleConstructorReturn from \"@babel/runtime/helpers/possibleConstructorReturn\";\nimport _getPrototypeOf from \"@babel/runtime/helpers/getPrototypeOf\";\nimport _inherits from \"@babel/runtime/helpers/inherits\";\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport { getData } from '../utils';\nimport NimbleEmoji from './emoji/nimble-emoji';\nimport SkinsEmoji from './skins-emoji';\nimport SkinsDot from './skins-dot';\n\nvar Preview =\n/*#__PURE__*/\nfunction (_React$PureComponent) {\n _inherits(Preview, _React$PureComponent);\n\n function Preview(props) {\n var _this;\n\n _classCallCheck(this, Preview);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(Preview).call(this, props));\n _this.data = props.data;\n _this.state = {\n emoji: null\n };\n return _this;\n }\n\n _createClass(Preview, [{\n key: \"render\",\n value: function render() {\n var emoji = this.state.emoji,\n _this$props = this.props,\n emojiProps = _this$props.emojiProps,\n skinsProps = _this$props.skinsProps,\n showSkinTones = _this$props.showSkinTones,\n title = _this$props.title,\n idleEmoji = _this$props.emoji,\n i18n = _this$props.i18n,\n showPreview = _this$props.showPreview;\n\n if (emoji && showPreview) {\n var emojiData = getData(emoji, null, null, this.data),\n _emojiData$emoticons = emojiData.emoticons,\n emoticons = _emojiData$emoticons === void 0 ? [] : _emojiData$emoticons,\n knownEmoticons = [],\n listedEmoticons = [];\n emoticons.forEach(function (emoticon) {\n if (knownEmoticons.indexOf(emoticon.toLowerCase()) >= 0) {\n return;\n }\n\n knownEmoticons.push(emoticon.toLowerCase());\n listedEmoticons.push(emoticon);\n });\n return React.createElement(\"div\", {\n className: \"emoji-mart-preview\"\n }, React.createElement(\"div\", {\n className: \"emoji-mart-preview-emoji\",\n \"aria-hidden\": \"true\"\n }, NimbleEmoji(_objectSpread({\n key: emoji.id,\n emoji: emoji,\n data: this.data\n }, emojiProps))), React.createElement(\"div\", {\n className: \"emoji-mart-preview-data\",\n \"aria-hidden\": \"true\"\n }, React.createElement(\"div\", {\n className: \"emoji-mart-preview-name\"\n }, emoji.name), React.createElement(\"div\", {\n className: \"emoji-mart-preview-shortnames\"\n }, emojiData.short_names.map(function (short_name) {\n return React.createElement(\"span\", {\n key: short_name,\n className: \"emoji-mart-preview-shortname\"\n }, \":\", short_name, \":\");\n })), React.createElement(\"div\", {\n className: \"emoji-mart-preview-emoticons\"\n }, listedEmoticons.map(function (emoticon) {\n return React.createElement(\"span\", {\n key: emoticon,\n className: \"emoji-mart-preview-emoticon\"\n }, emoticon);\n }))));\n } else {\n return React.createElement(\"div\", {\n className: \"emoji-mart-preview\"\n }, React.createElement(\"div\", {\n className: \"emoji-mart-preview-emoji\",\n \"aria-hidden\": \"true\"\n }, idleEmoji && idleEmoji.length && NimbleEmoji(_objectSpread({\n emoji: idleEmoji,\n data: this.data\n }, emojiProps))), React.createElement(\"div\", {\n className: \"emoji-mart-preview-data\",\n \"aria-hidden\": \"true\"\n }, React.createElement(\"span\", {\n className: \"emoji-mart-title-label\"\n }, title)), showSkinTones && React.createElement(\"div\", {\n className: \"emoji-mart-preview-skins\".concat(skinsProps.skinEmoji ? ' custom' : '')\n }, skinsProps.skinEmoji ? React.createElement(SkinsEmoji, {\n skin: skinsProps.skin,\n emojiProps: emojiProps,\n data: this.data,\n skinEmoji: skinsProps.skinEmoji,\n i18n: i18n,\n onChange: skinsProps.onChange\n }) : React.createElement(SkinsDot, {\n skin: skinsProps.skin,\n i18n: i18n,\n onChange: skinsProps.onChange\n })));\n }\n }\n }]);\n\n return Preview;\n}(React.PureComponent);\n\nexport { Preview as default };\nPreview.propTypes\n/* remove-proptypes */\n= {\n showSkinTones: PropTypes.bool,\n title: PropTypes.string.isRequired,\n emoji: PropTypes.string.isRequired,\n emojiProps: PropTypes.object.isRequired,\n skinsProps: PropTypes.object.isRequired\n};\nPreview.defaultProps = {\n showSkinTones: true,\n onChange: function onChange() {}\n};","import _classCallCheck from \"@babel/runtime/helpers/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/createClass\";\nimport _possibleConstructorReturn from \"@babel/runtime/helpers/possibleConstructorReturn\";\nimport _getPrototypeOf from \"@babel/runtime/helpers/getPrototypeOf\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/inherits\";\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport { search as icons } from '../svgs';\nimport NimbleEmojiIndex from '../utils/emoji-index/nimble-emoji-index';\nimport { throttleIdleTask } from '../utils/index';\nvar id = 0;\n\nvar Search =\n/*#__PURE__*/\nfunction (_React$PureComponent) {\n _inherits(Search, _React$PureComponent);\n\n function Search(props) {\n var _this;\n\n _classCallCheck(this, Search);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(Search).call(this, props));\n _this.state = {\n icon: icons.search,\n isSearching: false,\n id: ++id\n };\n _this.data = props.data;\n _this.emojiIndex = new NimbleEmojiIndex(_this.data);\n _this.setRef = _this.setRef.bind(_assertThisInitialized(_this));\n _this.clear = _this.clear.bind(_assertThisInitialized(_this));\n _this.handleKeyUp = _this.handleKeyUp.bind(_assertThisInitialized(_this)); // throttle keyboard input so that typing isn't delayed\n\n _this.handleChange = throttleIdleTask(_this.handleChange.bind(_assertThisInitialized(_this)));\n return _this;\n }\n\n _createClass(Search, [{\n key: \"componentDidMount\",\n value: function componentDidMount() {\n // in some cases (e.g. preact) the input may already be pre-populated\n // this.input is undefined in Jest tests\n if (this.input && this.input.value) {\n this.search(this.input.value);\n }\n }\n }, {\n key: \"search\",\n value: function search(value) {\n if (value == '') this.setState({\n icon: icons.search,\n isSearching: false\n });else this.setState({\n icon: icons[\"delete\"],\n isSearching: true\n });\n this.props.onSearch(this.emojiIndex.search(value, {\n emojisToShowFilter: this.props.emojisToShowFilter,\n maxResults: this.props.maxResults,\n include: this.props.include,\n exclude: this.props.exclude,\n custom: this.props.custom\n }));\n }\n }, {\n key: \"clear\",\n value: function clear() {\n if (this.input.value == '') return;\n this.input.value = '';\n this.input.focus();\n this.search('');\n }\n }, {\n key: \"handleChange\",\n value: function handleChange() {\n if (this.input) {\n this.search(this.input.value);\n }\n }\n }, {\n key: \"handleKeyUp\",\n value: function handleKeyUp(e) {\n if (e.keyCode === 13) {\n this.clear();\n }\n }\n }, {\n key: \"setRef\",\n value: function setRef(c) {\n this.input = c;\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this$props = this.props,\n i18n = _this$props.i18n,\n autoFocus = _this$props.autoFocus;\n var _this$state = this.state,\n icon = _this$state.icon,\n isSearching = _this$state.isSearching,\n id = _this$state.id;\n var inputId = \"emoji-mart-search-\".concat(id);\n return React.createElement(\"section\", {\n className: \"emoji-mart-search\",\n \"aria-label\": i18n.search\n }, React.createElement(\"input\", {\n id: inputId,\n ref: this.setRef,\n type: \"search\",\n onChange: this.handleChange,\n placeholder: i18n.search,\n autoFocus: autoFocus\n }), React.createElement(\"label\", {\n className: \"emoji-mart-sr-only\",\n htmlFor: inputId\n }, i18n.search), React.createElement(\"button\", {\n className: \"emoji-mart-search-icon\",\n onClick: this.clear,\n onKeyUp: this.handleKeyUp,\n \"aria-label\": i18n.clear,\n disabled: !isSearching\n }, icon()));\n }\n }]);\n\n return Search;\n}(React.PureComponent);\n\nexport { Search as default };\nSearch.propTypes\n/* remove-proptypes */\n= {\n onSearch: PropTypes.func,\n maxResults: PropTypes.number,\n emojisToShowFilter: PropTypes.func,\n autoFocus: PropTypes.bool\n};\nSearch.defaultProps = {\n onSearch: function onSearch() {},\n maxResults: 75,\n emojisToShowFilter: null,\n autoFocus: false\n};","import _defineProperty from \"@babel/runtime/helpers/defineProperty\";\nimport _classCallCheck from \"@babel/runtime/helpers/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/createClass\";\nimport _possibleConstructorReturn from \"@babel/runtime/helpers/possibleConstructorReturn\";\nimport _getPrototypeOf from \"@babel/runtime/helpers/getPrototypeOf\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/inherits\";\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport * as icons from '../../svgs';\nimport store from '../../utils/store';\nimport frequently from '../../utils/frequently';\nimport { deepMerge, measureScrollbar, getSanitizedData } from '../../utils';\nimport { uncompress } from '../../utils/data';\nimport { PickerPropTypes } from '../../utils/shared-props';\nimport Anchors from '../anchors';\nimport Category from '../category';\nimport Preview from '../preview';\nimport Search from '../search';\nimport { PickerDefaultProps } from '../../utils/shared-default-props';\nvar I18N = {\n search: 'Search',\n clear: 'Clear',\n // Accessible label on \"clear\" button\n notfound: 'No Emoji Found',\n skintext: 'Choose your default skin tone',\n categories: {\n search: 'Search Results',\n recent: 'Frequently Used',\n people: 'Smileys & People',\n nature: 'Animals & Nature',\n foods: 'Food & Drink',\n activity: 'Activity',\n places: 'Travel & Places',\n objects: 'Objects',\n symbols: 'Symbols',\n flags: 'Flags',\n custom: 'Custom'\n },\n categorieslabel: 'Emoji categories',\n // Accessible title for the list of categories\n skintones: {\n 1: 'Default Skin Tone',\n 2: 'Light Skin Tone',\n 3: 'Medium-Light Skin Tone',\n 4: 'Medium Skin Tone',\n 5: 'Medium-Dark Skin Tone',\n 6: 'Dark Skin Tone'\n }\n};\n\nvar NimblePicker =\n/*#__PURE__*/\nfunction (_React$PureComponent) {\n _inherits(NimblePicker, _React$PureComponent);\n\n function NimblePicker(props) {\n var _this;\n\n _classCallCheck(this, NimblePicker);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(NimblePicker).call(this, props));\n _this.CUSTOM = [];\n _this.RECENT_CATEGORY = {\n id: 'recent',\n name: 'Recent',\n emojis: null\n };\n _this.SEARCH_CATEGORY = {\n id: 'search',\n name: 'Search',\n emojis: null,\n anchor: false\n };\n\n if (props.data.compressed) {\n uncompress(props.data);\n }\n\n _this.data = props.data;\n _this.i18n = deepMerge(I18N, props.i18n);\n _this.icons = deepMerge(icons, props.icons);\n _this.state = {\n firstRender: true\n };\n _this.categories = [];\n var allCategories = [].concat(_this.data.categories);\n\n if (props.custom.length > 0) {\n var customCategories = {};\n var customCategoriesCreated = 0;\n props.custom.forEach(function (emoji) {\n if (!customCategories[emoji.customCategory]) {\n customCategories[emoji.customCategory] = {\n id: emoji.customCategory ? \"custom-\".concat(emoji.customCategory) : 'custom',\n name: emoji.customCategory || 'Custom',\n emojis: [],\n anchor: customCategoriesCreated === 0\n };\n customCategoriesCreated++;\n }\n\n var category = customCategories[emoji.customCategory];\n\n var customEmoji = _objectSpread({}, emoji, {\n // `<Category />` expects emoji to have an `id`.\n id: emoji.short_names[0],\n custom: true\n });\n\n category.emojis.push(customEmoji);\n\n _this.CUSTOM.push(customEmoji);\n });\n allCategories = allCategories.concat(Object.keys(customCategories).map(function (key) {\n return customCategories[key];\n }));\n }\n\n _this.hideRecent = true;\n\n if (props.include != undefined) {\n allCategories.sort(function (a, b) {\n if (props.include.indexOf(a.id) > props.include.indexOf(b.id)) {\n return 1;\n }\n\n return -1;\n });\n }\n\n for (var categoryIndex = 0; categoryIndex < allCategories.length; categoryIndex++) {\n var category = allCategories[categoryIndex];\n var isIncluded = props.include && props.include.length ? props.include.indexOf(category.id) > -1 : true;\n var isExcluded = props.exclude && props.exclude.length ? props.exclude.indexOf(category.id) > -1 : false;\n\n if (!isIncluded || isExcluded) {\n continue;\n }\n\n if (props.emojisToShowFilter) {\n var newEmojis = [];\n var emojis = category.emojis;\n\n for (var emojiIndex = 0; emojiIndex < emojis.length; emojiIndex++) {\n var emoji = emojis[emojiIndex];\n\n if (props.emojisToShowFilter(_this.data.emojis[emoji] || emoji)) {\n newEmojis.push(emoji);\n }\n }\n\n if (newEmojis.length) {\n var newCategory = {\n emojis: newEmojis,\n name: category.name,\n id: category.id\n };\n\n _this.categories.push(newCategory);\n }\n } else {\n _this.categories.push(category);\n }\n }\n\n var includeRecent = props.include && props.include.length ? props.include.indexOf(_this.RECENT_CATEGORY.id) > -1 : true;\n var excludeRecent = props.exclude && props.exclude.length ? props.exclude.indexOf(_this.RECENT_CATEGORY.id) > -1 : false;\n\n if (includeRecent && !excludeRecent) {\n _this.hideRecent = false;\n\n _this.categories.unshift(_this.RECENT_CATEGORY);\n }\n\n if (_this.categories[0]) {\n _this.categories[0].first = true;\n }\n\n _this.categories.unshift(_this.SEARCH_CATEGORY);\n\n _this.setAnchorsRef = _this.setAnchorsRef.bind(_assertThisInitialized(_this));\n _this.handleAnchorClick = _this.handleAnchorClick.bind(_assertThisInitialized(_this));\n _this.setSearchRef = _this.setSearchRef.bind(_assertThisInitialized(_this));\n _this.handleSearch = _this.handleSearch.bind(_assertThisInitialized(_this));\n _this.setScrollRef = _this.setScrollRef.bind(_assertThisInitialized(_this));\n _this.handleScroll = _this.handleScroll.bind(_assertThisInitialized(_this));\n _this.handleScrollPaint = _this.handleScrollPaint.bind(_assertThisInitialized(_this));\n _this.handleEmojiOver = _this.handleEmojiOver.bind(_assertThisInitialized(_this));\n _this.handleEmojiLeave = _this.handleEmojiLeave.bind(_assertThisInitialized(_this));\n _this.handleEmojiClick = _this.handleEmojiClick.bind(_assertThisInitialized(_this));\n _this.handleEmojiSelect = _this.handleEmojiSelect.bind(_assertThisInitialized(_this));\n _this.setPreviewRef = _this.setPreviewRef.bind(_assertThisInitialized(_this));\n _this.handleSkinChange = _this.handleSkinChange.bind(_assertThisInitialized(_this));\n _this.handleKeyDown = _this.handleKeyDown.bind(_assertThisInitialized(_this));\n _this.handleDarkMatchMediaChange = _this.handleDarkMatchMediaChange.bind(_assertThisInitialized(_this));\n return _this;\n }\n\n _createClass(NimblePicker, [{\n key: \"componentDidMount\",\n value: function componentDidMount() {\n var _this2 = this;\n\n if (this.state.firstRender) {\n this.testStickyPosition();\n this.firstRenderTimeout = setTimeout(function () {\n _this2.setState({\n firstRender: false\n });\n }, 60);\n }\n }\n }, {\n key: \"componentDidUpdate\",\n value: function componentDidUpdate() {\n this.updateCategoriesSize();\n this.handleScroll();\n }\n }, {\n key: \"componentWillUnmount\",\n value: function componentWillUnmount() {\n this.SEARCH_CATEGORY.emojis = null;\n clearTimeout(this.leaveTimeout);\n clearTimeout(this.firstRenderTimeout);\n\n if (this.darkMatchMedia) {\n this.darkMatchMedia.removeListener(this.handleDarkMatchMediaChange);\n }\n }\n }, {\n key: \"testStickyPosition\",\n value: function testStickyPosition() {\n var stickyTestElement = document.createElement('div');\n var prefixes = ['', '-webkit-', '-ms-', '-moz-', '-o-'];\n prefixes.forEach(function (prefix) {\n return stickyTestElement.style.position = \"\".concat(prefix, \"sticky\");\n });\n this.hasStickyPosition = !!stickyTestElement.style.position.length;\n }\n }, {\n key: \"getPreferredTheme\",\n value: function getPreferredTheme() {\n if (this.props.theme != 'auto') return this.props.theme;\n if (this.state.theme) return this.state.theme;\n if (typeof matchMedia !== 'function') return PickerDefaultProps.theme;\n\n if (!this.darkMatchMedia) {\n this.darkMatchMedia = matchMedia('(prefers-color-scheme: dark)');\n this.darkMatchMedia.addListener(this.handleDarkMatchMediaChange);\n }\n\n if (this.darkMatchMedia.media.match(/^not/)) return PickerDefaultProps.theme;\n return this.darkMatchMedia.matches ? 'dark' : 'light';\n }\n }, {\n key: \"handleDarkMatchMediaChange\",\n value: function handleDarkMatchMediaChange() {\n this.setState({\n theme: this.darkMatchMedia.matches ? 'dark' : 'light'\n });\n }\n }, {\n key: \"handleEmojiOver\",\n value: function handleEmojiOver(emoji) {\n var preview = this.preview;\n\n if (!preview) {\n return;\n } // Use Array.prototype.find() when it is more widely supported.\n\n\n var emojiData = this.CUSTOM.filter(function (customEmoji) {\n return customEmoji.id === emoji.id;\n })[0];\n\n for (var key in emojiData) {\n if (emojiData.hasOwnProperty(key)) {\n emoji[key] = emojiData[key];\n }\n }\n\n preview.setState({\n emoji: emoji\n });\n clearTimeout(this.leaveTimeout);\n }\n }, {\n key: \"handleEmojiLeave\",\n value: function handleEmojiLeave(emoji) {\n var preview = this.preview;\n\n if (!preview) {\n return;\n }\n\n this.leaveTimeout = setTimeout(function () {\n preview.setState({\n emoji: null\n });\n }, 16);\n }\n }, {\n key: \"handleEmojiClick\",\n value: function handleEmojiClick(emoji, e) {\n this.props.onClick(emoji, e);\n this.handleEmojiSelect(emoji);\n }\n }, {\n key: \"handleEmojiSelect\",\n value: function handleEmojiSelect(emoji) {\n var _this3 = this;\n\n this.props.onSelect(emoji);\n if (!this.hideRecent && !this.props.recent) frequently.add(emoji);\n var component = this.categoryRefs['category-1'];\n\n if (component) {\n var maxMargin = component.maxMargin;\n\n if (this.props.enableFrequentEmojiSort) {\n component.forceUpdate();\n }\n\n requestAnimationFrame(function () {\n if (!_this3.scroll) return;\n component.memoizeSize();\n if (maxMargin == component.maxMargin) return;\n\n _this3.updateCategoriesSize();\n\n _this3.handleScrollPaint();\n\n if (_this3.SEARCH_CATEGORY.emojis) {\n component.updateDisplay('none');\n }\n });\n }\n }\n }, {\n key: \"handleScroll\",\n value: function handleScroll() {\n if (!this.waitingForPaint) {\n this.waitingForPaint = true;\n requestAnimationFrame(this.handleScrollPaint);\n }\n }\n }, {\n key: \"handleScrollPaint\",\n value: function handleScrollPaint() {\n this.waitingForPaint = false;\n\n if (!this.scroll) {\n return;\n }\n\n var activeCategory = null;\n\n if (this.SEARCH_CATEGORY.emojis) {\n activeCategory = this.SEARCH_CATEGORY;\n } else {\n var target = this.scroll,\n scrollTop = target.scrollTop,\n scrollingDown = scrollTop > (this.scrollTop || 0),\n minTop = 0;\n\n for (var i = 0, l = this.categories.length; i < l; i++) {\n var ii = scrollingDown ? this.categories.length - 1 - i : i,\n category = this.categories[ii],\n component = this.categoryRefs[\"category-\".concat(ii)];\n\n if (component) {\n var active = component.handleScroll(scrollTop);\n\n if (!minTop || component.top < minTop) {\n if (component.top > 0) {\n minTop = component.top;\n }\n }\n\n if (active && !activeCategory) {\n activeCategory = category;\n }\n }\n }\n\n if (scrollTop < minTop) {\n activeCategory = this.categories.filter(function (category) {\n return !(category.anchor === false);\n })[0];\n } else if (scrollTop + this.clientHeight >= this.scrollHeight) {\n activeCategory = this.categories[this.categories.length - 1];\n }\n }\n\n if (activeCategory) {\n var anchors = this.anchors,\n _activeCategory = activeCategory,\n categoryName = _activeCategory.name;\n\n if (anchors.state.selected != categoryName) {\n anchors.setState({\n selected: categoryName\n });\n }\n }\n\n this.scrollTop = scrollTop;\n }\n }, {\n key: \"handleSearch\",\n value: function handleSearch(emojis) {\n this.SEARCH_CATEGORY.emojis = emojis;\n\n for (var i = 0, l = this.categories.length; i < l; i++) {\n var component = this.categoryRefs[\"category-\".concat(i)];\n\n if (component && component.props.name != 'Search') {\n var display = emojis ? 'none' : 'inherit';\n component.updateDisplay(display);\n }\n }\n\n this.forceUpdate();\n\n if (this.scroll) {\n this.scroll.scrollTop = 0;\n }\n\n this.handleScroll();\n }\n }, {\n key: \"handleAnchorClick\",\n value: function handleAnchorClick(category, i) {\n var component = this.categoryRefs[\"category-\".concat(i)],\n scroll = this.scroll,\n anchors = this.anchors,\n scrollToComponent = null;\n\n scrollToComponent = function scrollToComponent() {\n if (component) {\n var top = component.top;\n\n if (category.first) {\n top = 0;\n } else {\n top += 1;\n }\n\n scroll.scrollTop = top;\n }\n };\n\n if (this.SEARCH_CATEGORY.emojis) {\n this.handleSearch(null);\n this.search.clear();\n requestAnimationFrame(scrollToComponent);\n } else {\n scrollToComponent();\n }\n }\n }, {\n key: \"handleSkinChange\",\n value: function handleSkinChange(skin) {\n var newState = {\n skin: skin\n },\n onSkinChange = this.props.onSkinChange;\n this.setState(newState);\n store.update(newState);\n onSkinChange(skin);\n }\n }, {\n key: \"handleKeyDown\",\n value: function handleKeyDown(e) {\n var handled = false;\n\n switch (e.keyCode) {\n case 13:\n var emoji;\n\n if (this.SEARCH_CATEGORY.emojis && this.SEARCH_CATEGORY.emojis.length && (emoji = getSanitizedData(this.SEARCH_CATEGORY.emojis[0], this.state.skin, this.props.set, this.props.data))) {\n this.handleEmojiSelect(emoji);\n handled = true;\n }\n\n break;\n }\n\n if (handled) {\n e.preventDefault();\n }\n }\n }, {\n key: \"updateCategoriesSize\",\n value: function updateCategoriesSize() {\n for (var i = 0, l = this.categories.length; i < l; i++) {\n var component = this.categoryRefs[\"category-\".concat(i)];\n if (component) component.memoizeSize();\n }\n\n if (this.scroll) {\n var target = this.scroll;\n this.scrollHeight = target.scrollHeight;\n this.clientHeight = target.clientHeight;\n }\n }\n }, {\n key: \"getCategories\",\n value: function getCategories() {\n return this.state.firstRender ? this.categories.slice(0, 3) : this.categories;\n }\n }, {\n key: \"setAnchorsRef\",\n value: function setAnchorsRef(c) {\n this.anchors = c;\n }\n }, {\n key: \"setSearchRef\",\n value: function setSearchRef(c) {\n this.search = c;\n }\n }, {\n key: \"setPreviewRef\",\n value: function setPreviewRef(c) {\n this.preview = c;\n }\n }, {\n key: \"setScrollRef\",\n value: function setScrollRef(c) {\n this.scroll = c;\n }\n }, {\n key: \"setCategoryRef\",\n value: function setCategoryRef(name, c) {\n if (!this.categoryRefs) {\n this.categoryRefs = {};\n }\n\n this.categoryRefs[name] = c;\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this4 = this;\n\n var _this$props = this.props,\n perLine = _this$props.perLine,\n emojiSize = _this$props.emojiSize,\n set = _this$props.set,\n sheetSize = _this$props.sheetSize,\n sheetColumns = _this$props.sheetColumns,\n sheetRows = _this$props.sheetRows,\n style = _this$props.style,\n title = _this$props.title,\n emoji = _this$props.emoji,\n color = _this$props.color,\n _native = _this$props[\"native\"],\n backgroundImageFn = _this$props.backgroundImageFn,\n emojisToShowFilter = _this$props.emojisToShowFilter,\n showPreview = _this$props.showPreview,\n showSkinTones = _this$props.showSkinTones,\n emojiTooltip = _this$props.emojiTooltip,\n useButton = _this$props.useButton,\n include = _this$props.include,\n exclude = _this$props.exclude,\n recent = _this$props.recent,\n autoFocus = _this$props.autoFocus,\n skinEmoji = _this$props.skinEmoji,\n notFound = _this$props.notFound,\n notFoundEmoji = _this$props.notFoundEmoji;\n var width = perLine * (emojiSize + 12) + 12 + 2 + measureScrollbar();\n var theme = this.getPreferredTheme();\n var skin = this.props.skin || this.state.skin || store.get('skin') || this.props.defaultSkin;\n return React.createElement(\"section\", {\n style: _objectSpread({\n width: width\n }, style),\n className: \"emoji-mart emoji-mart-\".concat(theme),\n \"aria-label\": title,\n onKeyDown: this.handleKeyDown\n }, React.createElement(\"div\", {\n className: \"emoji-mart-bar\"\n }, React.createElement(Anchors, {\n ref: this.setAnchorsRef,\n data: this.data,\n i18n: this.i18n,\n color: color,\n categories: this.categories,\n onAnchorClick: this.handleAnchorClick,\n icons: this.icons\n })), React.createElement(Search, {\n ref: this.setSearchRef,\n onSearch: this.handleSearch,\n data: this.data,\n i18n: this.i18n,\n emojisToShowFilter: emojisToShowFilter,\n include: include,\n exclude: exclude,\n custom: this.CUSTOM,\n autoFocus: autoFocus\n }), React.createElement(\"div\", {\n ref: this.setScrollRef,\n className: \"emoji-mart-scroll\",\n onScroll: this.handleScroll\n }, this.getCategories().map(function (category, i) {\n return React.createElement(Category, {\n ref: _this4.setCategoryRef.bind(_this4, \"category-\".concat(i)),\n key: category.name,\n id: category.id,\n name: category.name,\n emojis: category.emojis,\n perLine: perLine,\n \"native\": _native,\n hasStickyPosition: _this4.hasStickyPosition,\n data: _this4.data,\n i18n: _this4.i18n,\n recent: category.id == _this4.RECENT_CATEGORY.id ? recent : undefined,\n custom: category.id == _this4.RECENT_CATEGORY.id ? _this4.CUSTOM : undefined,\n emojiProps: {\n \"native\": _native,\n skin: skin,\n size: emojiSize,\n set: set,\n sheetSize: sheetSize,\n sheetColumns: sheetColumns,\n sheetRows: sheetRows,\n forceSize: _native,\n tooltip: emojiTooltip,\n backgroundImageFn: backgroundImageFn,\n useButton: useButton,\n onOver: _this4.handleEmojiOver,\n onLeave: _this4.handleEmojiLeave,\n onClick: _this4.handleEmojiClick\n },\n notFound: notFound,\n notFoundEmoji: notFoundEmoji\n });\n })), (showPreview || showSkinTones) && React.createElement(\"div\", {\n className: \"emoji-mart-bar\"\n }, React.createElement(Preview, {\n ref: this.setPreviewRef,\n data: this.data,\n title: title,\n emoji: emoji,\n showSkinTones: showSkinTones,\n showPreview: showPreview,\n emojiProps: {\n \"native\": _native,\n size: 38,\n skin: skin,\n set: set,\n sheetSize: sheetSize,\n sheetColumns: sheetColumns,\n sheetRows: sheetRows,\n backgroundImageFn: backgroundImageFn\n },\n skinsProps: {\n skin: skin,\n onChange: this.handleSkinChange,\n skinEmoji: skinEmoji\n },\n i18n: this.i18n\n })));\n }\n }]);\n\n return NimblePicker;\n}(React.PureComponent);\n\nexport { NimblePicker as default };\nNimblePicker.propTypes\n/* remove-proptypes */\n= _objectSpread({}, PickerPropTypes, {\n data: PropTypes.object.isRequired\n});\nNimblePicker.defaultProps = _objectSpread({}, PickerDefaultProps);","import _defineProperty from \"@babel/runtime/helpers/defineProperty\";\nimport _extends from \"@babel/runtime/helpers/extends\";\nimport _classCallCheck from \"@babel/runtime/helpers/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/createClass\";\nimport _possibleConstructorReturn from \"@babel/runtime/helpers/possibleConstructorReturn\";\nimport _getPrototypeOf from \"@babel/runtime/helpers/getPrototypeOf\";\nimport _inherits from \"@babel/runtime/helpers/inherits\";\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nimport React from 'react';\nimport data from '../../../data/all.json';\nimport NimblePicker from './nimble-picker';\nimport { PickerPropTypes } from '../../utils/shared-props';\nimport { PickerDefaultProps } from '../../utils/shared-default-props';\n\nvar Picker =\n/*#__PURE__*/\nfunction (_React$PureComponent) {\n _inherits(Picker, _React$PureComponent);\n\n function Picker() {\n _classCallCheck(this, Picker);\n\n return _possibleConstructorReturn(this, _getPrototypeOf(Picker).apply(this, arguments));\n }\n\n _createClass(Picker, [{\n key: \"render\",\n value: function render() {\n return React.createElement(NimblePicker, _extends({}, this.props, this.state));\n }\n }]);\n\n return Picker;\n}(React.PureComponent);\n\nexport { Picker as default };\nPicker.propTypes\n/* remove-proptypes */\n= PickerPropTypes;\nPicker.defaultProps = _objectSpread({}, PickerDefaultProps, {\n data: data\n});","import _defineProperty from \"@babel/runtime/helpers/defineProperty\";\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nimport React from 'react';\nimport data from '../../../data/all.json';\nimport NimbleEmoji from './nimble-emoji';\nimport { EmojiPropTypes } from '../../utils/shared-props';\nimport { EmojiDefaultProps } from '../../utils/shared-default-props';\n\nvar Emoji = function Emoji(props) {\n for (var k in Emoji.defaultProps) {\n if (props[k] == undefined && Emoji.defaultProps[k] != undefined) {\n props[k] = Emoji.defaultProps[k];\n }\n }\n\n return NimbleEmoji(_objectSpread({}, props));\n};\n\nEmoji.propTypes\n/* remove-proptypes */\n= EmojiPropTypes;\nEmoji.defaultProps = _objectSpread({}, EmojiDefaultProps, {\n data: data\n});\nexport default Emoji;","// vendors\nimport React, { memo, useMemo } from \"react\";\nimport { Picker } from \"emoji-mart\";\nimport t from \"prop-types\";\nimport \"emoji-mart/css/emoji-mart.css\";\n\n/**\n * @typedef {object} Props\n * @property {'light' | 'dark' | 'auto'} theme\n * @property {function(import(\"../types/types\").EmojiMartItem): void} onSelectEmoji\n * @property {boolean} disableRecent\n * @property {import(\"emoji-mart\").CustomEmoji[]=} customEmojis\n */\n\n/**\n * Emoji Picker Component\n * @param {Props} props\n * @return {React.FC}\n */\nfunction EmojiPicker(props) {\n const {\n theme,\n onSelectEmoji,\n disableRecent,\n customEmojis\n } = props;\n\n const excludePicker = useMemo(() => {\n /** @type import(\"emoji-mart\").CategoryName[] */\n const exclude = [];\n\n if (disableRecent) {\n exclude.push(\"recent\");\n }\n\n return exclude;\n }, [disableRecent]);\n\n return (\n <Picker\n theme={theme}\n set=\"apple\"\n showPreview={false}\n showSkinTones={false}\n onSelect={onSelectEmoji}\n exclude={excludePicker}\n custom={customEmojis}\n />\n );\n}\n\nEmojiPicker.propTypes = {\n theme: t.oneOf(['light', 'dark', 'auto']),\n onSelectEmoji: t.func,\n disableRecent: t.bool,\n customEmojis: t.array\n};\n\nexport default memo(EmojiPicker);\n","import React from \"react\";\nimport EmojiPicker from \"./emoji-picker\";\n\n/**\n * @typedef {object} Props\n * @property {boolean} showPicker\n * @property {'light' | 'dark' | 'auto'} theme\n * @property {(emoji: import(\"../types/types\").EmojiMartItem) => void} handleSelectEmoji\n * @property {boolean} disableRecent\n * @property {import(\"emoji-mart\").CustomEmoji[]=} customEmojis\n */\n\n/**\n * Emoji Picker Button Component\n * @param {Props} props\n * @return {JSX.Element}\n */\nfunction EmojiPickerContainer({\n showPicker,\n theme,\n handleSelectEmoji,\n disableRecent,\n customEmojis\n}) {\n return (\n <div className=\"react-emoji-picker--container\">\n {showPicker && (\n <div\n className=\"react-emoji-picker--wrapper\"\n onClick={evt => evt.stopPropagation()}\n >\n <div className=\"react-emoji-picker\">\n <EmojiPicker\n theme={theme}\n onSelectEmoji={handleSelectEmoji}\n disableRecent={disableRecent}\n customEmojis={customEmojis}\n />\n </div>\n </div>\n )}\n </div>\n );\n}\n\nexport default EmojiPickerContainer;\n","// @ts-check\n/* eslint-disable react/prop-types */\n// vendors\nimport React, { useEffect, useState } from \"react\";\nimport ReactDOM from \"react-dom\";\nimport {\n getImageEmoji,\n replaceAllTextEmojis,\n replaceAllTextEmojiToString\n} from \"../utils/emoji-utils\";\n\nimport EmojiPickerButton from \"./emoji-picker-button\";\nimport EmojiPickerContainer from \"./emoji-picker-container\";\n\n/**\n * @typedef {import('../types/types').SanitizeFn} SanitizeFn\n */\n\n/**\n * @typedef {import('../types/types').PolluteFn} PolluteFn\n */\n\n/**\n * @typedef {Object} Props\n * @property {'light' | 'dark' | 'auto'} theme\n * @property {boolean} keepOpened\n * @property {boolean} disableRecent\n * @property {import(\"emoji-mart\").CustomEmoji[]=} customEmojis\n * @property {(fn: SanitizeFn) => void} addSanitizeFn\n * @property {(fn: PolluteFn) => void} addPolluteFn\n * @property {(html: string) => void} appendContent\n * @property {HTMLDivElement=} buttonElement\n */\n\n// eslint-disable-next-line valid-jsdoc\n/** @type {React.FC<Props>} */\nconst EmojiPickerWrapper = props => {\n const {\n theme,\n keepOpened,\n disableRecent,\n customEmojis,\n addSanitizeFn,\n addPolluteFn,\n appendContent,\n buttonElement\n } = props;\n\n const [showPicker, setShowPicker] = useState(false);\n /** @type {[HTMLDivElement | undefined, React.Dispatch<React.SetStateAction<HTMLDivElement | undefined>>]} */\n const [customButton, setCustomButton] = useState();\n\n useEffect(() => {\n addSanitizeFn(replaceAllTextEmojiToString);\n }, [addSanitizeFn]);\n\n useEffect(() => {\n addPolluteFn(replaceAllTextEmojis);\n }, [addPolluteFn]);\n\n useEffect(() => {\n /**\n *\n * @param {MouseEvent} event\n */\n function checkClickOutside(event) {\n /** @type {HTMLElement} */\n // @ts-ignore\n const element = event.target;\n\n if (\n element.classList.contains(\"react-input-emoji--button\") ||\n element.classList.contains(\"react-input-emoji--button--icon\")\n ) {\n return;\n }\n\n setShowPicker(false);\n }\n\n document.addEventListener(\"click\", checkClickOutside);\n\n return () => {\n document.removeEventListener(\"click\", checkClickOutside);\n };\n }, []);\n\n /**\n *\n * @param {React.MouseEvent} event\n */\n function toggleShowPicker(event) {\n event.stopPropagation();\n event.preventDefault();\n\n setShowPicker(currentShowPicker => !currentShowPicker);\n }\n\n // eslint-disable-next-line valid-jsdoc\n /**\n *\n * @param {import(\"../types/types\").EmojiMartItem} emoji\n */\n function handleSelectEmoji(emoji) {\n appendContent(getImageEmoji(emoji));\n\n if (!keepOpened) {\n setShowPicker(currentShowPicker => !currentShowPicker);\n }\n }\n\n useEffect(() => {\n if (buttonElement?.style) {\n buttonElement.style.position = \"relative\";\n setCustomButton(buttonElement);\n }\n }, [buttonElement]);\n\n return customButton ? (\n (ReactDOM.createPortal(\n <>\n <EmojiPickerContainer\n showPicker={showPicker}\n theme={theme}\n handleSelectEmoji={handleSelectEmoji}\n disableRecent={disableRecent}\n customEmojis={customEmojis}\n />\n <EmojiPickerButton\n showPicker={showPicker}\n toggleShowPicker={toggleShowPicker}\n buttonElement={customButton}\n />\n </>,\n customButton\n ))\n ) : (\n (<>\n <EmojiPickerContainer\n showPicker={showPicker}\n theme={theme}\n handleSelectEmoji={handleSelectEmoji}\n disableRecent={disableRecent}\n customEmojis={customEmojis}\n />\n <EmojiPickerButton\n showPicker={showPicker}\n toggleShowPicker={toggleShowPicker}\n />\n </>)\n );\n};\n\nexport default EmojiPickerWrapper;\n","// @ts-check\n\n/**\n *\n * @return {string | null}\n */\nexport function getTextFromAtToCaret() {\n const range = getRangeFromAtToCaret();\n\n if (!range) return null;\n\n const text = range.text.substring(range.begin, range.end);\n\n return text || null;\n}\n\n// eslint-disable-next-line valid-jsdoc\n/** */\nexport function deleteTextFromAtToCaret() {\n const range = getRangeFromAtToCaret();\n\n if (!range) return;\n\n // @ts-ignore\n range.element.deleteData(range.begin, range.end - range.begin);\n}\n\n/**\n *\n * @return {{begin: number, end: number, text: string, element: Node} | null}\n */\nfunction getRangeFromAtToCaret() {\n const elementWithFocus = getElementWithFocus();\n\n if (!elementWithFocus) {\n return null;\n }\n\n const { element, caretOffset } = elementWithFocus;\n const text = element.textContent;\n const lastAt = text.lastIndexOf(\"@\");\n\n if (\n lastAt === -1 ||\n lastAt >= caretOffset ||\n (lastAt !== 0 && text[lastAt - 1] !== \" \")\n ) {\n return null;\n }\n\n return { begin: lastAt, end: caretOffset, text, element };\n}\n\n/**\n *\n * @return {{element: Node, caretOffset: number}}\n */\nexport function getElementWithFocus() {\n const element = getSelectionStart();\n\n if (element === null) {\n return null;\n }\n\n let caretOffset = 0;\n if (typeof window.getSelection != \"undefined\") {\n const range = window.getSelection().getRangeAt(0);\n const preCaretRange = range.cloneRange();\n preCaretRange.selectNodeContents(element);\n preCaretRange.setEnd(range.endContainer, range.endOffset);\n caretOffset = preCaretRange.toString().length;\n } else if (\n // @ts-ignore\n typeof document.selection != \"undefined\" &&\n // @ts-ignore\n document.selection.type != \"Control\"\n ) {\n // @ts-ignore\n const textRange = document.selection.createRange();\n // @ts-ignore\n const preCaretTextRange = document.body.createTextRange();\n preCaretTextRange.moveToElementText(element);\n preCaretTextRange.setEndPoint(\"EndToEnd\", textRange);\n caretOffset = preCaretTextRange.text.length;\n }\n\n return { element, caretOffset };\n}\n\n/**\n *\n * @return {Node | null}\n */\nfunction getSelectionStart() {\n const node = document.getSelection().anchorNode;\n return node?.nodeType == 3 ? node : null;\n}\n","// @ts-check\nimport { useCallback, useState } from \"react\";\nimport {\n deleteTextFromAtToCaret,\n getElementWithFocus,\n getTextFromAtToCaret\n} from \"../utils/mention-utils\";\n\n/**\n * @typedef {import('../types/types').MentionUser} MentionUser\n */\n\n// eslint-disable-next-line valid-jsdoc\n/**\n *\n * @param {(text: string) => Promise<MentionUser[]>=} searchMention\n * @returns {{mentionSearchText: string | null, mentionUsers: MentionUser[], onKeyUp: (event: React.KeyboardEvent) => void, onFocus: () => void, onSelectUser: () => void, loading: boolean}}\n */\nexport function useMention(searchMention) {\n const [loading, setLoading] = useState(false);\n\n /** @type {[MentionUser[], React.Dispatch<React.SetStateAction<MentionUser[]>>]} */\n const [mentionUsers, setMentionUsers] = useState([]);\n\n /** @type {[string | null, React.Dispatch<React.SetStateAction<string | null>>]} */\n const [mentionSearchText, setMentionSearchText] = useState(null);\n\n const onSelectUser = useCallback(() => {\n deleteTextFromAtToCaret();\n setMentionUsers([]);\n }, []);\n\n /** */\n const checkMentionText = useCallback(async () => {\n const metionText = getTextFromAtToCaret();\n\n setMentionSearchText(metionText);\n\n if (metionText === null) {\n setMentionUsers([]);\n } else {\n setLoading(true);\n const users = await searchMention(metionText);\n setLoading(false);\n setMentionUsers(users);\n }\n }, [searchMention]);\n\n /** @type {(event: React.KeyboardEvent) => void} */\n const onKeyUp = useCallback(\n async event => {\n if (typeof searchMention !== \"function\") return;\n\n if (\n event.key === \"Backspace\" &&\n getElementWithFocus()?.element.parentElement.hasAttribute(\n \"data-mention-id\"\n )\n ) {\n const elementWithFocus = getElementWithFocus();\n elementWithFocus.element.parentElement.remove();\n } else if (\n ![\"ArrowUp\", \"ArrowDown\", \"Esc\", \"Escape\"].includes(event.key)\n ) {\n checkMentionText();\n }\n },\n [checkMentionText, searchMention]\n );\n\n const onFocus = useCallback(() => {\n checkMentionText();\n }, [checkMentionText]);\n\n return {\n mentionSearchText,\n mentionUsers,\n onKeyUp,\n onFocus,\n onSelectUser,\n loading\n };\n}\n","// @ts-check\n/* eslint-disable react/prop-types */\n// vendors\nimport React, {\n useImperativeHandle,\n useState,\n forwardRef,\n useMemo,\n useEffect\n} from \"react\";\nimport t from \"prop-types\";\n\n/**\n * @typedef {import('../types/types').MentionUser} MentionUser\n */\n\n/**\n * @typedef {import('../types/types').TextInputListeners} TextInputListeners\n */\n\n/**\n * @typedef {Object} Props\n * @property {MentionUser[]} users\n * @property {string | null} mentionSearchText\n * @property {(user: MentionUser) => void} onSelect\n * @property {(event: keyof TextInputListeners, fn: import('../types/types').Listerner<any>) => () => void} addEventListener\n */\n\n/**\n * @typedef {{prevUser: () => void; nextUser: () => void;}} Ref\n */\n\n// eslint-disable-next-line valid-jsdoc\n/** @type {React.ForwardRefRenderFunction<Ref, Props>} */\nconst MentionUserList = (\n { users, mentionSearchText, onSelect, addEventListener },\n ref\n) => {\n const [selectedUser, setSelectedUser] = useState(0);\n\n useImperativeHandle(ref, () => ({\n prevUser: () => {\n setSelectedUser(currentSelectedUser => {\n if (currentSelectedUser === 0) {\n return 0;\n }\n\n return currentSelectedUser - 1;\n });\n },\n nextUser: () => {\n setSelectedUser(currentSelectedUser => {\n if (currentSelectedUser === users.length - 1) {\n return users.length - 1;\n }\n\n return currentSelectedUser + 1;\n });\n }\n }));\n\n useEffect(() => {\n setSelectedUser(0);\n }, [users]);\n\n /**\n *\n * @param {string} selectedText\n * @param {string} rest\n * @return {string}\n */\n function getMentionSelectedNameEl(selectedText, rest) {\n return `<span class=\"react-input-emoji--mention--item--name__selected\" data-testid=\"metion-selected-word\">${selectedText}</span>${rest}`;\n }\n\n /** @type {(MentionUser & {nameHtml: string})[]} */\n const usersFiltered = useMemo(() => {\n const searchText = mentionSearchText\n ? mentionSearchText.substring(1).toLocaleLowerCase()\n : \"\";\n return users.map(user => {\n let nameHtml = user.name;\n\n if (mentionSearchText && mentionSearchText.length > 1) {\n if (user.name.toLowerCase().startsWith(searchText)) {\n nameHtml = getMentionSelectedNameEl(\n user.name.substring(0, searchText.length),\n user.name.substring(searchText.length)\n );\n } else {\n const names = user.name.split(\" \");\n\n nameHtml = names\n .map(name => {\n if (name.toLocaleLowerCase().startsWith(searchText)) {\n return getMentionSelectedNameEl(\n name.substring(0, searchText.length),\n name.substring(searchText.length)\n );\n }\n return name;\n })\n .join(\" \");\n }\n }\n\n return {\n ...user,\n nameHtml\n };\n });\n }, [mentionSearchText, users]);\n\n // eslint-disable-next-line valid-jsdoc\n /**\n *\n * @param {MentionUser} user\n * @returns {(event: React.MouseEvent) => void} event\n */\n function handleClick(user) {\n return event => {\n event.stopPropagation();\n event.preventDefault();\n\n onSelect(user);\n };\n }\n\n useEffect(() => {\n const unsubscribe = addEventListener(\"enter\", event => {\n event.stopPropagation();\n event.preventDefault();\n onSelect(usersFiltered[selectedUser]);\n });\n\n return () => {\n unsubscribe();\n };\n }, [addEventListener, onSelect, selectedUser, usersFiltered]);\n\n return (\n <ul\n className=\"react-input-emoji--mention--list\"\n data-testid=\"mention-user-list\"\n >\n {usersFiltered.map((user, index) => (\n <li key={user.id}>\n <button\n type=\"button\"\n onClick={handleClick(user)}\n className={`react-input-emoji--mention--item${\n selectedUser === index\n ? \" react-input-emoji--mention--item__selected\"\n : \"\"\n }`}\n onMouseOver={() => setSelectedUser(index)}\n >\n <img\n className=\"react-input-emoji--mention--item--img\"\n src={user.image}\n />\n <div\n className=\"react-input-emoji--mention--item--name\"\n dangerouslySetInnerHTML={{ __html: user.nameHtml }}\n />\n </button>\n </li>\n ))}\n </ul>\n );\n};\n\nconst MentionUserListWithRef = forwardRef(MentionUserList);\n\nMentionUserListWithRef.propTypes = {\n users: t.array.isRequired\n};\n\nexport default MentionUserListWithRef;\n","// @ts-check\n/* eslint-disable react/prop-types */\n// vendors\nimport React, { useEffect, useRef, useState } from \"react\";\n\n// hooks\nimport { useMention } from \"../hooks/use-mention\";\n\n// components\nimport MentionUserList from \"./mention-user-list\";\n\n/**\n * @typedef {import('../types/types').MentionUser} MetionUser\n */\n\n/**\n * @typedef {import('../types/types').TextInputListeners} TextInputListeners\n */\n\n/**\n * @typedef {import('../types/types').SanitizeFn} SanitizeFn\n */\n\n/**\n * @typedef {Object} Props\n * @property {(text: string) => Promise<MetionUser[]>=} searchMention\n * @property {(event: keyof TextInputListeners, fn: import('../types/types').Listerner<any>) => () => void} addEventListener\n * @property {(html: string) => void} appendContent\n * @property {(fn: SanitizeFn) => void} addSanitizeFn\n */\n\n// eslint-disable-next-line valid-jsdoc\n/** @type {React.FC<Props>} */\nconst MentionWrapper = ({\n searchMention,\n addEventListener,\n appendContent,\n addSanitizeFn\n}) => {\n /** @type {React.MutableRefObject<import('./mention-user-list').Ref | null>} */\n const metionUserListRef = useRef(null);\n const [showUserList, setShowUserList] = useState(false);\n\n const {\n mentionSearchText,\n mentionUsers,\n loading,\n onKeyUp,\n onFocus,\n onSelectUser\n } = useMention(searchMention);\n\n useEffect(() => {\n addSanitizeFn(html => {\n const container = document.createElement(\"div\");\n container.innerHTML = html;\n\n const mentionsEl = Array.prototype.slice.call(\n container.querySelectorAll(\".react-input-emoji--mention--text\")\n );\n\n mentionsEl.forEach(mentionEl => {\n container.innerHTML = container.innerHTML.replace(\n mentionEl.outerHTML,\n `@[${mentionEl.dataset.mentionName}](userId:${mentionEl.dataset.mentionId})`\n );\n });\n\n return container.innerHTML;\n });\n }, [addSanitizeFn]);\n\n useEffect(() => {\n setShowUserList(mentionUsers.length > 0);\n }, [mentionUsers]);\n\n useEffect(() => {\n /** */\n function checkClickOutside() {\n setShowUserList(false);\n }\n\n document.addEventListener(\"click\", checkClickOutside);\n\n return () => {\n document.removeEventListener(\"click\", checkClickOutside);\n };\n }, []);\n\n useEffect(() => {\n const unsubscribe = addEventListener(\"keyUp\", onKeyUp);\n\n return () => {\n unsubscribe();\n };\n }, [addEventListener, onKeyUp]);\n\n useEffect(() => {\n /**\n *\n * @param {React.KeyboardEvent} event\n */\n function handleKeyDown(event) {\n switch (event.key) {\n case \"Esc\": // IE/Edge specific value\n case \"Escape\":\n setShowUserList(false);\n break;\n default:\n break;\n }\n }\n\n const unsubscribe = addEventListener(\"keyDown\", handleKeyDown);\n\n return () => {\n unsubscribe();\n };\n }, [addEventListener]);\n\n useEffect(() => {\n const unsubscribe = addEventListener(\"focus\", onFocus);\n\n return () => {\n unsubscribe();\n };\n }, [addEventListener, onFocus]);\n\n useEffect(() => {\n if (showUserList) {\n const unsubscribeArrowUp = addEventListener(\"arrowUp\", event => {\n event.stopPropagation();\n event.preventDefault();\n metionUserListRef.current.prevUser();\n });\n\n const unsubscribeArrowDown = addEventListener(\"arrowDown\", event => {\n event.stopPropagation();\n event.preventDefault();\n metionUserListRef.current.nextUser();\n });\n\n return () => {\n unsubscribeArrowUp();\n unsubscribeArrowDown();\n };\n }\n }, [addEventListener, showUserList]);\n\n /**\n *\n * @param {MetionUser} user\n */\n function handleSelect(user) {\n onSelectUser();\n appendContent(\n `<span class=\"react-input-emoji--mention--text\" data-mention-id=\"${user.id}\" data-mention-name=\"${user.name}\">@${user.name}</span> `\n );\n }\n\n return (\n <>\n {loading ? (\n <div className=\"react-input-emoji--mention--container\">\n <div className=\"react-input-emoji--mention--loading\">\n <div className=\"react-input-emoji--mention--loading--spinner\">\n Loading...\n </div>\n </div>\n </div>\n ) : (\n showUserList && (\n <div\n className=\"react-input-emoji--mention--container\"\n onClick={evt => evt.stopPropagation()}\n >\n <MentionUserList\n ref={metionUserListRef}\n mentionSearchText={mentionSearchText}\n users={mentionUsers}\n onSelect={handleSelect}\n addEventListener={addEventListener}\n />\n </div>\n )\n )}\n </>\n );\n};\n\nexport default MentionWrapper;\n","// @ts-check\n\n// eslint-disable-next-line valid-jsdoc\n/**\n * @template T\n * @returns {import('../types/types').ListenerObj<T>}\n */\nexport function createObserver() {\n /** @type {import('../types/types').Listerner<T>[]} */\n let listeners = [];\n\n return {\n subscribe: listener => {\n listeners.push(listener);\n return () => {\n listeners = listeners.filter(l => l !== listener);\n };\n },\n publish: event => {\n listeners.forEach(listener => listener(event));\n },\n get currentListerners() {\n return listeners;\n }\n };\n}\n","// @ts-check\n\nimport { useCallback, useMemo } from \"react\";\nimport { createObserver } from \"../utils/observer\";\n\n/**\n * @typedef {import('../types/types').TextInputListeners} TextInputListeners\n */\n\n// eslint-disable-next-line valid-jsdoc\n/** */\nexport function useEventListeners() {\n /** @type {TextInputListeners} */\n const listeners = useMemo(\n () => ({\n keyDown: createObserver(),\n keyUp: createObserver(),\n arrowUp: createObserver(),\n arrowDown: createObserver(),\n enter: createObserver(),\n focus: createObserver(),\n blur: createObserver()\n }),\n []\n );\n\n /**\n * @template {keyof TextInputListeners} T, K\n * @type {(event: keyof TextInputListeners, fn: import('../types/types').Listerner<any>) => () => void}\n */\n const addEventListener = useCallback(\n (event, fn) => {\n return listeners[event].subscribe(fn);\n },\n [listeners]\n );\n\n return { addEventListener, listeners };\n}\n","// @ts-check\n\nimport { useCallback, useRef } from \"react\";\n\n/**\n * @typedef {import('../types/types').PolluteFn} PolluteFn\n */\n\n// eslint-disable-next-line valid-jsdoc\n/** */\nexport function usePollute() {\n /** @type {React.MutableRefObject<PolluteFn[]>} */\n const polluteFnsRef = useRef([]);\n\n /** @type {(fn: PolluteFn) => void} */\n const addPolluteFn = useCallback(fn => {\n polluteFnsRef.current.push(fn);\n }, []);\n\n /** @type {(html: string) => string} */\n const pollute = useCallback(text => {\n const result = polluteFnsRef.current.reduce((acc, fn) => {\n return fn(acc);\n }, text);\n\n return result;\n }, []);\n\n return { addPolluteFn, pollute };\n}\n","// @ts-check\n/* eslint-disable react/prop-types */\n// vendors\nimport React, { useEffect, useRef, forwardRef, useCallback } from \"react\";\n\n// css\nimport \"./styles.css\";\n\n// utils\nimport { replaceAllTextEmojis } from \"./utils/emoji-utils\";\nimport { totalCharacters } from \"./utils/input-event-utils\";\n\n// hooks\nimport { useExpose } from \"./hooks/use-expose\";\nimport { useEmit } from \"./hooks/use-emit\";\n\n// components\nimport TextInput from \"./text-input\";\nimport EmojiPickerWrapper from \"./components/emoji-picker-wrapper\";\nimport MentionWrapper from \"./components/mention-wrapper\";\nimport { useEventListeners } from \"./hooks/use-event-listeners\";\nimport { useSanitize } from \"./hooks/use-sanitize\";\nimport { usePollute } from \"./hooks/user-pollute\";\n\n/**\n * @typedef {import('./types/types').MentionUser} MetionUser\n */\n\n/**\n * @typedef {import('./types/types').ListenerObj<any>} ListenerObj\n */\n\n/**\n * @typedef {object} Props\n * @property {string} value\n * @property {(value: string) => void} onChange\n * @property {\"light\" | \"dark\" | \"auto\"} theme\n * @property {boolean} cleanOnEnter\n * @property {(text: string) => void} onEnter\n * @property {string} placeholder\n * @property {(size: {width: number, height: number}) => void} onResize\n * @property {() => void} onClick\n * @property {() => void} onFocus\n * @property {() => void=} onBlur\n * @property {number} maxLength\n * @property {boolean} keepOpened\n * @property {(event: KeyboardEvent) => void} onKeyDown\n * @property {string} inputClass\n * @property {boolean} disableRecent\n * @property {number} tabIndex\n * @property {number} height\n * @property {number} borderRadius\n * @property {string} borderColor\n * @property {number} fontSize\n * @property {string} fontFamily\n * @property {object[]=} customEmojis\n * @property {(text: string) => Promise<MetionUser[]>=} searchMention\n * @property {HTMLDivElement=} buttonElement\n */\n\n/**\n * Input Emoji Component\n * @param {Props} props\n * @param {React.Ref<any>} ref\n * @return {JSX.Element}\n */\nfunction InputEmoji(props, ref) {\n const {\n onChange,\n onEnter,\n onResize,\n onClick,\n onFocus,\n onBlur,\n onKeyDown,\n theme,\n cleanOnEnter,\n placeholder,\n maxLength,\n keepOpened,\n inputClass,\n disableRecent,\n tabIndex,\n value,\n customEmojis,\n searchMention,\n buttonElement,\n // style\n borderRadius,\n borderColor,\n fontSize,\n fontFamily\n } = props;\n\n /** @type {React.MutableRefObject<import('./text-input').Ref | null>} */\n const textInputRef = useRef(null);\n\n const { addEventListener, listeners } = useEventListeners();\n\n const { addSanitizeFn, sanitize, sanitizedTextRef } = useSanitize();\n\n const { addPolluteFn, pollute } = usePollute();\n\n const updateHTML = useCallback(\n (nextValue = \"\") => {\n if (textInputRef.current === null) return;\n\n textInputRef.current.html = replaceAllTextEmojis(nextValue);\n sanitizedTextRef.current = nextValue;\n },\n [sanitizedTextRef]\n );\n\n const setValue = useCallback(\n value => {\n updateHTML(value);\n },\n [updateHTML]\n );\n\n const emitChange = useEmit(textInputRef, onResize, onChange);\n\n useExpose({\n ref,\n setValue,\n textInputRef,\n emitChange\n });\n\n useEffect(() => {\n if (sanitizedTextRef.current !== value) {\n setValue(value);\n }\n }, [sanitizedTextRef, setValue, value]);\n\n useEffect(() => {\n updateHTML();\n }, [updateHTML]);\n\n useEffect(() => {\n /**\n * Handle keydown event\n * @param {React.KeyboardEvent} event\n * @return {boolean}\n */\n function handleKeydown(event) {\n if (\n typeof maxLength !== \"undefined\" &&\n event.key !== \"Backspace\" &&\n textInputRef.current !== null &&\n totalCharacters(textInputRef.current) >= maxLength\n ) {\n event.preventDefault();\n }\n\n if (event.key === \"Enter\" && textInputRef.current) {\n event.preventDefault();\n\n const text = sanitize(textInputRef.current.html);\n\n emitChange(sanitizedTextRef.current);\n\n if (\n typeof onEnter === \"function\" &&\n listeners.enter.currentListerners.length === 0\n ) {\n onEnter(text);\n }\n\n if (cleanOnEnter && listeners.enter.currentListerners.length === 0) {\n updateHTML(\"\");\n }\n\n if (typeof onKeyDown === \"function\") {\n onKeyDown(event.nativeEvent);\n }\n\n return false;\n }\n\n if (typeof onKeyDown === \"function\") {\n onKeyDown(event.nativeEvent);\n }\n\n return true;\n }\n\n const unsubscribe = addEventListener(\"keyDown\", handleKeydown);\n\n return () => {\n unsubscribe();\n };\n }, [\n addEventListener,\n cleanOnEnter,\n emitChange,\n listeners.enter.currentListerners.length,\n maxLength,\n onEnter,\n onKeyDown,\n sanitize,\n sanitizedTextRef,\n updateHTML\n ]);\n\n useEffect(() => {\n /** */\n function handleFocus() {\n if (typeof onClick === \"function\") {\n onClick();\n }\n\n if (typeof onFocus === \"function\") {\n onFocus();\n }\n }\n\n const unsubscribe = addEventListener(\"focus\", handleFocus);\n\n return () => {\n unsubscribe();\n };\n }, [addEventListener, onClick, onFocus]);\n\n useEffect(() => {\n /** */\n function handleBlur() {\n if (typeof onBlur === \"function\") {\n onBlur();\n }\n }\n\n const unsubscribe = addEventListener(\"blur\", handleBlur);\n\n return () => {\n unsubscribe();\n };\n }, [addEventListener, onBlur]);\n\n /**\n *\n * @param {string} html\n */\n function handleTextInputChange(html) {\n sanitize(html);\n emitChange(sanitizedTextRef.current);\n }\n\n /**\n *\n * @param {string} html\n */\n function appendContent(html) {\n if (\n typeof maxLength !== \"undefined\" &&\n textInputRef.current !== null &&\n totalCharacters(textInputRef.current) >= maxLength\n ) {\n return;\n }\n\n if (textInputRef.current !== null) {\n textInputRef.current.appendContent(html);\n }\n }\n\n /**\n * Handle copy of current selected text\n * @param {React.ClipboardEvent} event\n */\n function handleCopy(event) {\n event.clipboardData.setData(\"text\", sanitizedTextRef.current);\n event.preventDefault();\n }\n\n /**\n * Handle past on input\n * @param {React.ClipboardEvent} event\n */\n function handlePaste(event) {\n event.preventDefault();\n let content;\n if (event.clipboardData) {\n content = event.clipboardData.getData(\"text/plain\");\n content = pollute(content);\n document.execCommand(\"insertHTML\", false, content);\n }\n }\n\n return (\n <div className=\"react-emoji\">\n <MentionWrapper\n searchMention={searchMention}\n addEventListener={addEventListener}\n appendContent={appendContent}\n addSanitizeFn={addSanitizeFn}\n />\n <TextInput\n ref={textInputRef}\n onCopy={handleCopy}\n onPaste={handlePaste}\n onBlur={listeners.blur.publish}\n onFocus={listeners.focus.publish}\n onArrowUp={listeners.arrowUp.publish}\n onArrowDown={listeners.arrowDown.publish}\n onKeyUp={listeners.keyUp.publish}\n onKeyDown={listeners.keyDown.publish}\n onEnter={listeners.enter.publish}\n placeholder={placeholder}\n style={{\n borderRadius,\n borderColor,\n fontSize,\n fontFamily\n }}\n tabIndex={tabIndex}\n className={inputClass}\n onChange={handleTextInputChange}\n />\n <EmojiPickerWrapper\n theme={theme}\n keepOpened={keepOpened}\n disableRecent={disableRecent}\n customEmojis={customEmojis}\n addSanitizeFn={addSanitizeFn}\n addPolluteFn={addPolluteFn}\n appendContent={appendContent}\n buttonElement={buttonElement}\n />\n </div>\n );\n}\n\nconst InputEmojiWithRef = forwardRef(InputEmoji);\n\nInputEmojiWithRef.defaultProps = {\n theme: /** @type {const} */ (\"auto\"),\n height: 30,\n placeholder: \"Type a message\",\n borderRadius: 21,\n borderColor: \"#EAEAEA\",\n fontSize: 15,\n fontFamily: \"sans-serif\",\n tabIndex: 0,\n customEmojis: []\n};\n\nexport default InputEmojiWithRef;\n"],"names":["styleInject","css","ref","insertAt","document","head","getElementsByTagName","style","createElement","type","firstChild","insertBefore","appendChild","styleSheet","cssText","createTextNode","TRANSPARENT_GIF","replaceAllTextEmojis","text","allEmojis","getAllEmojisFromText","allEmojiStyle","Set","forEach","emoji","replaceAll","str","find","replace","RegExp","match","getImageEmoji","shortNames","short_names","emojiSpanEl","querySelector","native","id","dataEmoji","emoticons","length","replaceAllTextEmojiToString","html","container","innerHTML","images","Array","prototype","slice","call","querySelectorAll","image","outerHTML","dataset","handlePasteHtmlAtCaret","sel","range","window","getSelection","getRangeAt","rangeCount","deleteContents","el","frag","createDocumentFragment","node","lastNode","insertNode","cloneRange","setStartAfter","collapse","removeAllRanges","addRange","totalCharacters","textCount","emojisCount","useSanitize","sanitizeFnsRef","useRef","sanitizedTextRef","addSanitizeFn","useCallback","fn","current","push","sanitize","result","reduce","acc","replaceAllHtmlToString","innerText","useExpose","textInputRef","setValue","emitChange","useImperativeHandle","value","focus","blur","useEmit","onResize","onChange","currentSizeRef","onChangeFn","checkAndEmitResize","currentSize","nextSize","size","width","height","sanitizedText","useEffect","TextInput","placeholder","tabIndex","className","props","appendContent","placeholderRef","trim","visibility","offsetWidth","offsetHeight","handleKeyDown","event","key","onEnter","onArrowUp","onArrowDown","onKeyDown","handleClick","onFocus","handleKeyUp","onKeyUp","input","onBlur","onCopy","onPaste","TextInputWithRef","forwardRef","EmojiPickerButton","showPicker","toggleShowPicker","buttonElement","buttonRef","showCustomButtonContent","setShowCustomButtonContent","useState","childNodes","_classCallCheck","instance","Constructor","TypeError","_defineProperties","target","i","descriptor","enumerable","configurable","writable","Object","defineProperty","_createClass","protoProps","staticProps","_typeof","obj","Symbol","iterator","constructor","mapping","name","unified","non_qualified","has_img_apple","has_img_google","has_img_twitter","has_img_facebook","keywords","sheet","added_in","buildSearch","search","addToSearch","strings","split","isArray","string","s","toLowerCase","indexOf","join","uncompress","data","compressed","emojis","unshift","sheet_x","sheet_y","toFixed","_String","String","fromCodePoint","stringFromCodePoint","MAX_SIZE","codeUnits","highSurrogate","lowSurrogate","index","arguments","codePoint","Number","isFinite","Math","floor","RangeError","fromCharCode","apply","COLONS_REGEX","SKINS","unifiedToNative","unicodes","codePoints","map","u","concat","skin_tone","skin_variations","custom","customCategory","imageUrl","colons","skin","getSanitizedData","getData","set","emojiData","matches","parseInt","aliases","hasOwnProperty","keys","variations","JSON","parse","stringify","skinKey","variationData","undefined","k","v","shift","uniq","arr","item","intersect","a","b","uniqA","uniqB","filter","deepMerge","o","originalValue","measureScrollbar","div","overflow","position","top","body","scrollbarWidth","clientWidth","removeChild","throttleIdleTask","func","doIdleTask","requestIdleCallback","setTimeout","running","throttled","NAMESPACE","isLocalStorageSupported","getter","setter","setHandlers","handlers","setNamespace","namespace","update","state","localStorage","e","get","NimbleEmojiIndex","originalPool","customEmojisList","buildIndex","_this","_loop","emoticon","skinTone","clearCustomEmojis","pool","_this2","emojiId","addCustomToPool","_this3","_this4","_ref","emojisToShowFilter","maxResults","include","exclude","_ref$custom","store","results","values","allResults","categories","category","isIncluded","isExcluded","customIsIncluded","customIsExcluded","aPool","aIndex","charIndex","_char","scores","sub","substr","subIndex","score","sort","aScore","bScore","localeCompare","emojiIndex","DEFAULTS","frequently","initialized","defaults","init","add","perLine","quantity","frequentlyKeys","sorted","reverse","sliced","last","pop","_defineProperty","_extends","assign","bind","source","_assertThisInitialized","self","ReferenceError","_possibleConstructorReturn","assertThisInitialized","_getPrototypeOf","setPrototypeOf","getPrototypeOf","__proto__","_setPrototypeOf","p","_inherits","subClass","superClass","create","activity","React","xmlns","viewBox","d","transform","x","y","rx","flags","foods","nature","objects","people","places","recent","symbols","opacity","_delete","EmojiPropTypes","PropTypes","object","isRequired","onOver","onLeave","onClick","fallback","backgroundImageFn","bool","forceSize","tooltip","useButton","oneOf","sheetSize","sheetColumns","number","sheetRows","oneOfType","PickerPropTypes","onSelect","onSkinChange","emojiSize","i18n","title","color","showPreview","showSkinTones","emojiTooltip","theme","arrayOf","autoFocus","enableFrequentEmojiSort","shape","spriteUrl","skinEmoji","notFound","notFoundEmoji","icons","Anchors","_React$PureComponent","defaultCategory","first","selected","currentTarget","getAttribute","_this$props","onAnchorClick","render","_this$props2","categorieslabel","anchor","isSelected","iconId","startsWith","backgroundColor","PureComponent","propTypes","array","defaultProps","EmojiDefaultProps","PickerDefaultProps","defaultSkin","ownKeys","enumerableOnly","getOwnPropertySymbols","sym","getOwnPropertyDescriptor","_objectSpread","getOwnPropertyDescriptors","defineProperties","_getData","_getPosition","_getData2","multiplyX","multiplyY","_getSanitizedData","_handleClick","_handleOver","_handleLeave","_isNumeric","isNaN","parseFloat","_convertStyleToCSS","NimbleEmoji","children","nativeEmoji","label","Boolean","fontSize","display","wordBreak","backgroundImage","backgroundSize","backgroundPosition","backgroundRepeat","setHasEmoji","Tag","onMouseEnter","onMouseLeave","NotFound","emojiProps","component","notfound","Category","_React$Component","setContainerRef","setLabelRef","componentDidMount","margin","minMargin","memoizeSize","shouldComponentUpdate","nextProps","nextState","_native","hasStickyPosition","nextPerLine","nextNative","nextHasStickyPosition","nextEmojis","nextEmojiProps","nextSkin","nextSet","shouldUpdate","maxMargin","parent","parentElement","_this$container$getBo","getBoundingClientRect","_parent$getBoundingCl","parentTop","_this$label$getBoundi","labelHeight","scrollTop","handleScroll","getEmojis","frequentlyUsed","updateDisplay","c","_this$props3","labelStyles","labelSpanStyles","containerStyles","Component","Skins","opened","setState","SkinsEmoji","_Skins","skinToneNodes","skintext","SkinsDot","keyCode","preventDefault","visible","skintones","role","Preview","skinsProps","idleEmoji","_emojiData$emoticons","knownEmoticons","listedEmoticons","short_name","Search","icon","isSearching","setRef","clear","handleChange","onSearch","_this$state","inputId","htmlFor","disabled","I18N","NimblePicker","CUSTOM","RECENT_CATEGORY","SEARCH_CATEGORY","firstRender","allCategories","customCategories","customCategoriesCreated","customEmoji","hideRecent","categoryIndex","newEmojis","newCategory","includeRecent","excludeRecent","setAnchorsRef","handleAnchorClick","setSearchRef","handleSearch","setScrollRef","handleScrollPaint","handleEmojiOver","handleEmojiLeave","handleEmojiClick","handleEmojiSelect","setPreviewRef","handleSkinChange","handleDarkMatchMediaChange","testStickyPosition","firstRenderTimeout","componentDidUpdate","updateCategoriesSize","componentWillUnmount","clearTimeout","leaveTimeout","darkMatchMedia","removeListener","stickyTestElement","prefixes","prefix","getPreferredTheme","matchMedia","addListener","media","preview","categoryRefs","forceUpdate","requestAnimationFrame","scroll","waitingForPaint","activeCategory","scrollingDown","minTop","l","ii","active","clientHeight","scrollHeight","anchors","_activeCategory","categoryName","scrollToComponent","newState","handled","getCategories","setCategoryRef","onScroll","Picker","EmojiPicker","onSelectEmoji","disableRecent","customEmojis","excludePicker","useMemo","t","memo","EmojiPickerContainer","handleSelectEmoji","evt","stopPropagation","EmojiPickerWrapper","keepOpened","addPolluteFn","setShowPicker","customButton","setCustomButton","checkClickOutside","element","classList","contains","addEventListener","removeEventListener","currentShowPicker","ReactDOM","createPortal","getTextFromAtToCaret","getRangeFromAtToCaret","substring","begin","end","deleteTextFromAtToCaret","deleteData","elementWithFocus","getElementWithFocus","caretOffset","textContent","lastAt","lastIndexOf","getSelectionStart","preCaretRange","selectNodeContents","setEnd","endContainer","endOffset","toString","selection","textRange","createRange","preCaretTextRange","createTextRange","moveToElementText","setEndPoint","anchorNode","nodeType","useMention","searchMention","loading","setLoading","mentionUsers","setMentionUsers","mentionSearchText","setMentionSearchText","onSelectUser","checkMentionText","metionText","users","hasAttribute","remove","includes","MentionUserList","selectedUser","setSelectedUser","prevUser","currentSelectedUser","nextUser","getMentionSelectedNameEl","selectedText","rest","usersFiltered","searchText","toLocaleLowerCase","user","nameHtml","names","unsubscribe","__html","MentionUserListWithRef","MentionWrapper","metionUserListRef","showUserList","setShowUserList","mentionsEl","mentionEl","mentionName","mentionId","unsubscribeArrowUp","unsubscribeArrowDown","handleSelect","createObserver","listeners","subscribe","listener","publish","currentListerners","useEventListeners","keyDown","keyUp","arrowUp","arrowDown","enter","usePollute","polluteFnsRef","pollute","InputEmoji","cleanOnEnter","maxLength","inputClass","borderRadius","borderColor","fontFamily","updateHTML","nextValue","handleKeydown","nativeEvent","handleFocus","handleBlur","handleTextInputChange","handleCopy","clipboardData","setData","handlePaste","content","execCommand","InputEmojiWithRef"],"mappings":"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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACpDc,SAASI,eAAT,CAAyBC,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"}