@onereach/channel-transformer
Version:
Convert data model between different channels (Slack, Microsoft Teams, Generic...)
2,017 lines (1,780 loc) • 480 kB
JavaScript
var commonjsGlobal = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {};
function getDefaultExportFromCjs (x) {
return x && x.__esModule && Object.prototype.hasOwnProperty.call(x, 'default') ? x['default'] : x;
}
var nodeEmoji = {exports: {}};
/** Detect free variable `global` from Node.js. */
var freeGlobal$1 = typeof commonjsGlobal == 'object' && commonjsGlobal && commonjsGlobal.Object === Object && commonjsGlobal;
var _freeGlobal = freeGlobal$1;
var freeGlobal = _freeGlobal;
/** Detect free variable `self`. */
var freeSelf = typeof self == 'object' && self && self.Object === Object && self;
/** Used as a reference to the global object. */
var root$7 = freeGlobal || freeSelf || Function('return this')();
var _root = root$7;
var root$6 = _root;
/** Built-in value references. */
var Symbol$3 = root$6.Symbol;
var _Symbol = Symbol$3;
/**
* Copies the values of `source` to `array`.
*
* @private
* @param {Array} source The array to copy values from.
* @param {Array} [array=[]] The array to copy values to.
* @returns {Array} Returns `array`.
*/
function copyArray$1(source, array) {
var index = -1,
length = source.length;
array || (array = Array(length));
while (++index < length) {
array[index] = source[index];
}
return array;
}
var _copyArray = copyArray$1;
var Symbol$2 = _Symbol;
/** Used for built-in method references. */
var objectProto$6 = Object.prototype;
/** Used to check objects for own properties. */
var hasOwnProperty$4 = objectProto$6.hasOwnProperty;
/**
* Used to resolve the
* [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)
* of values.
*/
var nativeObjectToString$1 = objectProto$6.toString;
/** Built-in value references. */
var symToStringTag$1 = Symbol$2 ? Symbol$2.toStringTag : undefined;
/**
* A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.
*
* @private
* @param {*} value The value to query.
* @returns {string} Returns the raw `toStringTag`.
*/
function getRawTag$1(value) {
var isOwn = hasOwnProperty$4.call(value, symToStringTag$1),
tag = value[symToStringTag$1];
try {
value[symToStringTag$1] = undefined;
var unmasked = true;
} catch (e) {}
var result = nativeObjectToString$1.call(value);
if (unmasked) {
if (isOwn) {
value[symToStringTag$1] = tag;
} else {
delete value[symToStringTag$1];
}
}
return result;
}
var _getRawTag = getRawTag$1;
/** Used for built-in method references. */
var objectProto$5 = Object.prototype;
/**
* Used to resolve the
* [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)
* of values.
*/
var nativeObjectToString = objectProto$5.toString;
/**
* Converts `value` to a string using `Object.prototype.toString`.
*
* @private
* @param {*} value The value to convert.
* @returns {string} Returns the converted string.
*/
function objectToString$1(value) {
return nativeObjectToString.call(value);
}
var _objectToString = objectToString$1;
var Symbol$1 = _Symbol,
getRawTag = _getRawTag,
objectToString = _objectToString;
/** `Object#toString` result references. */
var nullTag = '[object Null]',
undefinedTag = '[object Undefined]';
/** Built-in value references. */
var symToStringTag = Symbol$1 ? Symbol$1.toStringTag : undefined;
/**
* The base implementation of `getTag` without fallbacks for buggy environments.
*
* @private
* @param {*} value The value to query.
* @returns {string} Returns the `toStringTag`.
*/
function baseGetTag$5(value) {
if (value == null) {
return value === undefined ? undefinedTag : nullTag;
}
return (symToStringTag && symToStringTag in Object(value))
? getRawTag(value)
: objectToString(value);
}
var _baseGetTag = baseGetTag$5;
/**
* Checks if `value` is the
* [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)
* of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)
*
* @static
* @memberOf _
* @since 0.1.0
* @category Lang
* @param {*} value The value to check.
* @returns {boolean} Returns `true` if `value` is an object, else `false`.
* @example
*
* _.isObject({});
* // => true
*
* _.isObject([1, 2, 3]);
* // => true
*
* _.isObject(_.noop);
* // => true
*
* _.isObject(null);
* // => false
*/
function isObject$2(value) {
var type = typeof value;
return value != null && (type == 'object' || type == 'function');
}
var isObject_1 = isObject$2;
var baseGetTag$4 = _baseGetTag,
isObject$1 = isObject_1;
/** `Object#toString` result references. */
var asyncTag = '[object AsyncFunction]',
funcTag$1 = '[object Function]',
genTag = '[object GeneratorFunction]',
proxyTag = '[object Proxy]';
/**
* Checks if `value` is classified as a `Function` object.
*
* @static
* @memberOf _
* @since 0.1.0
* @category Lang
* @param {*} value The value to check.
* @returns {boolean} Returns `true` if `value` is a function, else `false`.
* @example
*
* _.isFunction(_);
* // => true
*
* _.isFunction(/abc/);
* // => false
*/
function isFunction$2(value) {
if (!isObject$1(value)) {
return false;
}
// The use of `Object#toString` avoids issues with the `typeof` operator
// in Safari 9 which returns 'object' for typed arrays and other constructors.
var tag = baseGetTag$4(value);
return tag == funcTag$1 || tag == genTag || tag == asyncTag || tag == proxyTag;
}
var isFunction_1 = isFunction$2;
var root$5 = _root;
/** Used to detect overreaching core-js shims. */
var coreJsData$1 = root$5['__core-js_shared__'];
var _coreJsData = coreJsData$1;
var coreJsData = _coreJsData;
/** Used to detect methods masquerading as native. */
var maskSrcKey = (function() {
var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');
return uid ? ('Symbol(src)_1.' + uid) : '';
}());
/**
* Checks if `func` has its source masked.
*
* @private
* @param {Function} func The function to check.
* @returns {boolean} Returns `true` if `func` is masked, else `false`.
*/
function isMasked$1(func) {
return !!maskSrcKey && (maskSrcKey in func);
}
var _isMasked = isMasked$1;
/** Used for built-in method references. */
var funcProto$1 = Function.prototype;
/** Used to resolve the decompiled source of functions. */
var funcToString$1 = funcProto$1.toString;
/**
* Converts `func` to its source code.
*
* @private
* @param {Function} func The function to convert.
* @returns {string} Returns the source code.
*/
function toSource$2(func) {
if (func != null) {
try {
return funcToString$1.call(func);
} catch (e) {}
try {
return (func + '');
} catch (e) {}
}
return '';
}
var _toSource = toSource$2;
var isFunction$1 = isFunction_1,
isMasked = _isMasked,
isObject = isObject_1,
toSource$1 = _toSource;
/**
* Used to match `RegExp`
* [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).
*/
var reRegExpChar = /[\\^$.*+?()[\]{}|]/g;
/** Used to detect host constructors (Safari). */
var reIsHostCtor = /^\[object .+?Constructor\]$/;
/** Used for built-in method references. */
var funcProto = Function.prototype,
objectProto$4 = Object.prototype;
/** Used to resolve the decompiled source of functions. */
var funcToString = funcProto.toString;
/** Used to check objects for own properties. */
var hasOwnProperty$3 = objectProto$4.hasOwnProperty;
/** Used to detect if a method is native. */
var reIsNative = RegExp('^' +
funcToString.call(hasOwnProperty$3).replace(reRegExpChar, '\\$&')
.replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g, '$1.*?') + '$'
);
/**
* The base implementation of `_.isNative` without bad shim checks.
*
* @private
* @param {*} value The value to check.
* @returns {boolean} Returns `true` if `value` is a native function,
* else `false`.
*/
function baseIsNative$1(value) {
if (!isObject(value) || isMasked(value)) {
return false;
}
var pattern = isFunction$1(value) ? reIsNative : reIsHostCtor;
return pattern.test(toSource$1(value));
}
var _baseIsNative = baseIsNative$1;
/**
* Gets the value at `key` of `object`.
*
* @private
* @param {Object} [object] The object to query.
* @param {string} key The key of the property to get.
* @returns {*} Returns the property value.
*/
function getValue$1(object, key) {
return object == null ? undefined : object[key];
}
var _getValue = getValue$1;
var baseIsNative = _baseIsNative,
getValue = _getValue;
/**
* Gets the native function at `key` of `object`.
*
* @private
* @param {Object} object The object to query.
* @param {string} key The key of the method to get.
* @returns {*} Returns the function if it's native, else `undefined`.
*/
function getNative$5(object, key) {
var value = getValue(object, key);
return baseIsNative(value) ? value : undefined;
}
var _getNative = getNative$5;
var getNative$4 = _getNative,
root$4 = _root;
/* Built-in method references that are verified to be native. */
var DataView$1 = getNative$4(root$4, 'DataView');
var _DataView = DataView$1;
var getNative$3 = _getNative,
root$3 = _root;
/* Built-in method references that are verified to be native. */
var Map$2 = getNative$3(root$3, 'Map');
var _Map = Map$2;
var getNative$2 = _getNative,
root$2 = _root;
/* Built-in method references that are verified to be native. */
var Promise$2 = getNative$2(root$2, 'Promise');
var _Promise = Promise$2;
var getNative$1 = _getNative,
root$1 = _root;
/* Built-in method references that are verified to be native. */
var Set$1 = getNative$1(root$1, 'Set');
var _Set = Set$1;
var getNative = _getNative,
root = _root;
/* Built-in method references that are verified to be native. */
var WeakMap$1 = getNative(root, 'WeakMap');
var _WeakMap = WeakMap$1;
var DataView = _DataView,
Map$1 = _Map,
Promise$1 = _Promise,
Set = _Set,
WeakMap = _WeakMap,
baseGetTag$3 = _baseGetTag,
toSource = _toSource;
/** `Object#toString` result references. */
var mapTag$2 = '[object Map]',
objectTag$1 = '[object Object]',
promiseTag = '[object Promise]',
setTag$2 = '[object Set]',
weakMapTag$1 = '[object WeakMap]';
var dataViewTag$1 = '[object DataView]';
/** Used to detect maps, sets, and weakmaps. */
var dataViewCtorString = toSource(DataView),
mapCtorString = toSource(Map$1),
promiseCtorString = toSource(Promise$1),
setCtorString = toSource(Set),
weakMapCtorString = toSource(WeakMap);
/**
* Gets the `toStringTag` of `value`.
*
* @private
* @param {*} value The value to query.
* @returns {string} Returns the `toStringTag`.
*/
var getTag$1 = baseGetTag$3;
// Fallback for data views, maps, sets, and weak maps in IE 11 and promises in Node.js < 6.
if ((DataView && getTag$1(new DataView(new ArrayBuffer(1))) != dataViewTag$1) ||
(Map$1 && getTag$1(new Map$1) != mapTag$2) ||
(Promise$1 && getTag$1(Promise$1.resolve()) != promiseTag) ||
(Set && getTag$1(new Set) != setTag$2) ||
(WeakMap && getTag$1(new WeakMap) != weakMapTag$1)) {
getTag$1 = function(value) {
var result = baseGetTag$3(value),
Ctor = result == objectTag$1 ? value.constructor : undefined,
ctorString = Ctor ? toSource(Ctor) : '';
if (ctorString) {
switch (ctorString) {
case dataViewCtorString: return dataViewTag$1;
case mapCtorString: return mapTag$2;
case promiseCtorString: return promiseTag;
case setCtorString: return setTag$2;
case weakMapCtorString: return weakMapTag$1;
}
}
return result;
};
}
var _getTag = getTag$1;
/** Used as references for various `Number` constants. */
var MAX_SAFE_INTEGER$1 = 9007199254740991;
/**
* Checks if `value` is a valid array-like length.
*
* **Note:** This method is loosely based on
* [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).
*
* @static
* @memberOf _
* @since 4.0.0
* @category Lang
* @param {*} value The value to check.
* @returns {boolean} Returns `true` if `value` is a valid length, else `false`.
* @example
*
* _.isLength(3);
* // => true
*
* _.isLength(Number.MIN_VALUE);
* // => false
*
* _.isLength(Infinity);
* // => false
*
* _.isLength('3');
* // => false
*/
function isLength$2(value) {
return typeof value == 'number' &&
value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER$1;
}
var isLength_1 = isLength$2;
var isFunction = isFunction_1,
isLength$1 = isLength_1;
/**
* Checks if `value` is array-like. A value is considered array-like if it's
* not a function and has a `value.length` that's an integer greater than or
* equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.
*
* @static
* @memberOf _
* @since 4.0.0
* @category Lang
* @param {*} value The value to check.
* @returns {boolean} Returns `true` if `value` is array-like, else `false`.
* @example
*
* _.isArrayLike([1, 2, 3]);
* // => true
*
* _.isArrayLike(document.body.children);
* // => true
*
* _.isArrayLike('abc');
* // => true
*
* _.isArrayLike(_.noop);
* // => false
*/
function isArrayLike$2(value) {
return value != null && isLength$1(value.length) && !isFunction(value);
}
var isArrayLike_1 = isArrayLike$2;
/**
* Checks if `value` is classified as an `Array` object.
*
* @static
* @memberOf _
* @since 0.1.0
* @category Lang
* @param {*} value The value to check.
* @returns {boolean} Returns `true` if `value` is an array, else `false`.
* @example
*
* _.isArray([1, 2, 3]);
* // => true
*
* _.isArray(document.body.children);
* // => false
*
* _.isArray('abc');
* // => false
*
* _.isArray(_.noop);
* // => false
*/
var isArray$2 = Array.isArray;
var isArray_1 = isArray$2;
/**
* Checks if `value` is object-like. A value is object-like if it's not `null`
* and has a `typeof` result of "object".
*
* @static
* @memberOf _
* @since 4.0.0
* @category Lang
* @param {*} value The value to check.
* @returns {boolean} Returns `true` if `value` is object-like, else `false`.
* @example
*
* _.isObjectLike({});
* // => true
*
* _.isObjectLike([1, 2, 3]);
* // => true
*
* _.isObjectLike(_.noop);
* // => false
*
* _.isObjectLike(null);
* // => false
*/
function isObjectLike$4(value) {
return value != null && typeof value == 'object';
}
var isObjectLike_1 = isObjectLike$4;
var baseGetTag$2 = _baseGetTag,
isArray$1 = isArray_1,
isObjectLike$3 = isObjectLike_1;
/** `Object#toString` result references. */
var stringTag$1 = '[object String]';
/**
* Checks if `value` is classified as a `String` primitive or object.
*
* @static
* @since 0.1.0
* @memberOf _
* @category Lang
* @param {*} value The value to check.
* @returns {boolean} Returns `true` if `value` is a string, else `false`.
* @example
*
* _.isString('abc');
* // => true
*
* _.isString(1);
* // => false
*/
function isString$3(value) {
return typeof value == 'string' ||
(!isArray$1(value) && isObjectLike$3(value) && baseGetTag$2(value) == stringTag$1);
}
var isString_1 = isString$3;
/**
* Converts `iterator` to an array.
*
* @private
* @param {Object} iterator The iterator to convert.
* @returns {Array} Returns the converted array.
*/
function iteratorToArray$1(iterator) {
var data,
result = [];
while (!(data = iterator.next()).done) {
result.push(data.value);
}
return result;
}
var _iteratorToArray = iteratorToArray$1;
/**
* Converts `map` to its key-value pairs.
*
* @private
* @param {Object} map The map to convert.
* @returns {Array} Returns the key-value pairs.
*/
function mapToArray$1(map) {
var index = -1,
result = Array(map.size);
map.forEach(function(value, key) {
result[++index] = [key, value];
});
return result;
}
var _mapToArray = mapToArray$1;
/**
* Converts `set` to an array of its values.
*
* @private
* @param {Object} set The set to convert.
* @returns {Array} Returns the values.
*/
function setToArray$1(set) {
var index = -1,
result = Array(set.size);
set.forEach(function(value) {
result[++index] = value;
});
return result;
}
var _setToArray = setToArray$1;
/**
* Converts an ASCII `string` to an array.
*
* @private
* @param {string} string The string to convert.
* @returns {Array} Returns the converted array.
*/
function asciiToArray$1(string) {
return string.split('');
}
var _asciiToArray = asciiToArray$1;
/** Used to compose unicode character classes. */
var rsAstralRange$1 = '\\ud800-\\udfff',
rsComboMarksRange$1 = '\\u0300-\\u036f',
reComboHalfMarksRange$1 = '\\ufe20-\\ufe2f',
rsComboSymbolsRange$1 = '\\u20d0-\\u20ff',
rsComboRange$1 = rsComboMarksRange$1 + reComboHalfMarksRange$1 + rsComboSymbolsRange$1,
rsVarRange$1 = '\\ufe0e\\ufe0f';
/** Used to compose unicode capture groups. */
var rsZWJ$1 = '\\u200d';
/** Used to detect strings with [zero-width joiners or code points from the astral planes](http://eev.ee/blog/2015/09/12/dark-corners-of-unicode/). */
var reHasUnicode = RegExp('[' + rsZWJ$1 + rsAstralRange$1 + rsComboRange$1 + rsVarRange$1 + ']');
/**
* Checks if `string` contains Unicode symbols.
*
* @private
* @param {string} string The string to inspect.
* @returns {boolean} Returns `true` if a symbol is found, else `false`.
*/
function hasUnicode$1(string) {
return reHasUnicode.test(string);
}
var _hasUnicode = hasUnicode$1;
/** Used to compose unicode character classes. */
var rsAstralRange = '\\ud800-\\udfff',
rsComboMarksRange = '\\u0300-\\u036f',
reComboHalfMarksRange = '\\ufe20-\\ufe2f',
rsComboSymbolsRange = '\\u20d0-\\u20ff',
rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange,
rsVarRange = '\\ufe0e\\ufe0f';
/** Used to compose unicode capture groups. */
var rsAstral = '[' + rsAstralRange + ']',
rsCombo = '[' + rsComboRange + ']',
rsFitz = '\\ud83c[\\udffb-\\udfff]',
rsModifier = '(?:' + rsCombo + '|' + rsFitz + ')',
rsNonAstral = '[^' + rsAstralRange + ']',
rsRegional = '(?:\\ud83c[\\udde6-\\uddff]){2}',
rsSurrPair = '[\\ud800-\\udbff][\\udc00-\\udfff]',
rsZWJ = '\\u200d';
/** Used to compose unicode regexes. */
var reOptMod = rsModifier + '?',
rsOptVar = '[' + rsVarRange + ']?',
rsOptJoin = '(?:' + rsZWJ + '(?:' + [rsNonAstral, rsRegional, rsSurrPair].join('|') + ')' + rsOptVar + reOptMod + ')*',
rsSeq = rsOptVar + reOptMod + rsOptJoin,
rsSymbol = '(?:' + [rsNonAstral + rsCombo + '?', rsCombo, rsRegional, rsSurrPair, rsAstral].join('|') + ')';
/** Used to match [string symbols](https://mathiasbynens.be/notes/javascript-unicode). */
var reUnicode = RegExp(rsFitz + '(?=' + rsFitz + ')|' + rsSymbol + rsSeq, 'g');
/**
* Converts a Unicode `string` to an array.
*
* @private
* @param {string} string The string to convert.
* @returns {Array} Returns the converted array.
*/
function unicodeToArray$1(string) {
return string.match(reUnicode) || [];
}
var _unicodeToArray = unicodeToArray$1;
var asciiToArray = _asciiToArray,
hasUnicode = _hasUnicode,
unicodeToArray = _unicodeToArray;
/**
* Converts `string` to an array.
*
* @private
* @param {string} string The string to convert.
* @returns {Array} Returns the converted array.
*/
function stringToArray$1(string) {
return hasUnicode(string)
? unicodeToArray(string)
: asciiToArray(string);
}
var _stringToArray = stringToArray$1;
/**
* A specialized version of `_.map` for arrays without support for iteratee
* shorthands.
*
* @private
* @param {Array} [array] The array to iterate over.
* @param {Function} iteratee The function invoked per iteration.
* @returns {Array} Returns the new mapped array.
*/
function arrayMap$1(array, iteratee) {
var index = -1,
length = array == null ? 0 : array.length,
result = Array(length);
while (++index < length) {
result[index] = iteratee(array[index], index, array);
}
return result;
}
var _arrayMap = arrayMap$1;
var arrayMap = _arrayMap;
/**
* The base implementation of `_.values` and `_.valuesIn` which creates an
* array of `object` property values corresponding to the property names
* of `props`.
*
* @private
* @param {Object} object The object to query.
* @param {Array} props The property names to get values for.
* @returns {Object} Returns the array of property values.
*/
function baseValues$1(object, props) {
return arrayMap(props, function(key) {
return object[key];
});
}
var _baseValues = baseValues$1;
/**
* The base implementation of `_.times` without support for iteratee shorthands
* or max array length checks.
*
* @private
* @param {number} n The number of times to invoke `iteratee`.
* @param {Function} iteratee The function invoked per iteration.
* @returns {Array} Returns the array of results.
*/
function baseTimes$1(n, iteratee) {
var index = -1,
result = Array(n);
while (++index < n) {
result[index] = iteratee(index);
}
return result;
}
var _baseTimes = baseTimes$1;
var baseGetTag$1 = _baseGetTag,
isObjectLike$2 = isObjectLike_1;
/** `Object#toString` result references. */
var argsTag$1 = '[object Arguments]';
/**
* The base implementation of `_.isArguments`.
*
* @private
* @param {*} value The value to check.
* @returns {boolean} Returns `true` if `value` is an `arguments` object,
*/
function baseIsArguments$1(value) {
return isObjectLike$2(value) && baseGetTag$1(value) == argsTag$1;
}
var _baseIsArguments = baseIsArguments$1;
var baseIsArguments = _baseIsArguments,
isObjectLike$1 = isObjectLike_1;
/** Used for built-in method references. */
var objectProto$3 = Object.prototype;
/** Used to check objects for own properties. */
var hasOwnProperty$2 = objectProto$3.hasOwnProperty;
/** Built-in value references. */
var propertyIsEnumerable = objectProto$3.propertyIsEnumerable;
/**
* Checks if `value` is likely an `arguments` object.
*
* @static
* @memberOf _
* @since 0.1.0
* @category Lang
* @param {*} value The value to check.
* @returns {boolean} Returns `true` if `value` is an `arguments` object,
* else `false`.
* @example
*
* _.isArguments(function() { return arguments; }());
* // => true
*
* _.isArguments([1, 2, 3]);
* // => false
*/
var isArguments$1 = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) {
return isObjectLike$1(value) && hasOwnProperty$2.call(value, 'callee') &&
!propertyIsEnumerable.call(value, 'callee');
};
var isArguments_1 = isArguments$1;
var isBuffer$1 = {exports: {}};
/**
* This method returns `false`.
*
* @static
* @memberOf _
* @since 4.13.0
* @category Util
* @returns {boolean} Returns `false`.
* @example
*
* _.times(2, _.stubFalse);
* // => [false, false]
*/
function stubFalse() {
return false;
}
var stubFalse_1 = stubFalse;
(function (module, exports) {
var root = _root,
stubFalse = stubFalse_1;
/** Detect free variable `exports`. */
var freeExports = exports && !exports.nodeType && exports;
/** Detect free variable `module`. */
var freeModule = freeExports && 'object' == 'object' && module && !module.nodeType && module;
/** Detect the popular CommonJS extension `module.exports`. */
var moduleExports = freeModule && freeModule.exports === freeExports;
/** Built-in value references. */
var Buffer = moduleExports ? root.Buffer : undefined;
/* Built-in method references for those with the same name as other `lodash` methods. */
var nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined;
/**
* Checks if `value` is a buffer.
*
* @static
* @memberOf _
* @since 4.3.0
* @category Lang
* @param {*} value The value to check.
* @returns {boolean} Returns `true` if `value` is a buffer, else `false`.
* @example
*
* _.isBuffer(new Buffer(2));
* // => true
*
* _.isBuffer(new Uint8Array(2));
* // => false
*/
var isBuffer = nativeIsBuffer || stubFalse;
module.exports = isBuffer;
} (isBuffer$1, isBuffer$1.exports));
/** Used as references for various `Number` constants. */
var MAX_SAFE_INTEGER = 9007199254740991;
/** Used to detect unsigned integer values. */
var reIsUint = /^(?:0|[1-9]\d*)$/;
/**
* Checks if `value` is a valid array-like index.
*
* @private
* @param {*} value The value to check.
* @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.
* @returns {boolean} Returns `true` if `value` is a valid index, else `false`.
*/
function isIndex$1(value, length) {
var type = typeof value;
length = length == null ? MAX_SAFE_INTEGER : length;
return !!length &&
(type == 'number' ||
(type != 'symbol' && reIsUint.test(value))) &&
(value > -1 && value % 1 == 0 && value < length);
}
var _isIndex = isIndex$1;
var baseGetTag = _baseGetTag,
isLength = isLength_1,
isObjectLike = isObjectLike_1;
/** `Object#toString` result references. */
var argsTag = '[object Arguments]',
arrayTag = '[object Array]',
boolTag = '[object Boolean]',
dateTag = '[object Date]',
errorTag = '[object Error]',
funcTag = '[object Function]',
mapTag$1 = '[object Map]',
numberTag = '[object Number]',
objectTag = '[object Object]',
regexpTag = '[object RegExp]',
setTag$1 = '[object Set]',
stringTag = '[object String]',
weakMapTag = '[object WeakMap]';
var arrayBufferTag = '[object ArrayBuffer]',
dataViewTag = '[object DataView]',
float32Tag = '[object Float32Array]',
float64Tag = '[object Float64Array]',
int8Tag = '[object Int8Array]',
int16Tag = '[object Int16Array]',
int32Tag = '[object Int32Array]',
uint8Tag = '[object Uint8Array]',
uint8ClampedTag = '[object Uint8ClampedArray]',
uint16Tag = '[object Uint16Array]',
uint32Tag = '[object Uint32Array]';
/** Used to identify `toStringTag` values of typed arrays. */
var typedArrayTags = {};
typedArrayTags[float32Tag] = typedArrayTags[float64Tag] =
typedArrayTags[int8Tag] = typedArrayTags[int16Tag] =
typedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =
typedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =
typedArrayTags[uint32Tag] = true;
typedArrayTags[argsTag] = typedArrayTags[arrayTag] =
typedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =
typedArrayTags[dataViewTag] = typedArrayTags[dateTag] =
typedArrayTags[errorTag] = typedArrayTags[funcTag] =
typedArrayTags[mapTag$1] = typedArrayTags[numberTag] =
typedArrayTags[objectTag] = typedArrayTags[regexpTag] =
typedArrayTags[setTag$1] = typedArrayTags[stringTag] =
typedArrayTags[weakMapTag] = false;
/**
* The base implementation of `_.isTypedArray` without Node.js optimizations.
*
* @private
* @param {*} value The value to check.
* @returns {boolean} Returns `true` if `value` is a typed array, else `false`.
*/
function baseIsTypedArray$1(value) {
return isObjectLike(value) &&
isLength(value.length) && !!typedArrayTags[baseGetTag(value)];
}
var _baseIsTypedArray = baseIsTypedArray$1;
/**
* The base implementation of `_.unary` without support for storing metadata.
*
* @private
* @param {Function} func The function to cap arguments for.
* @returns {Function} Returns the new capped function.
*/
function baseUnary$1(func) {
return function(value) {
return func(value);
};
}
var _baseUnary = baseUnary$1;
var _nodeUtil = {exports: {}};
(function (module, exports) {
var freeGlobal = _freeGlobal;
/** Detect free variable `exports`. */
var freeExports = exports && !exports.nodeType && exports;
/** Detect free variable `module`. */
var freeModule = freeExports && 'object' == 'object' && module && !module.nodeType && module;
/** Detect the popular CommonJS extension `module.exports`. */
var moduleExports = freeModule && freeModule.exports === freeExports;
/** Detect free variable `process` from Node.js. */
var freeProcess = moduleExports && freeGlobal.process;
/** Used to access faster Node.js helpers. */
var nodeUtil = (function() {
try {
// Use `util.types` for Node.js 10+.
var types = freeModule && freeModule.require && freeModule.require('util').types;
if (types) {
return types;
}
// Legacy `process.binding('util')` for Node.js < 10.
return freeProcess && freeProcess.binding && freeProcess.binding('util');
} catch (e) {}
}());
module.exports = nodeUtil;
} (_nodeUtil, _nodeUtil.exports));
var baseIsTypedArray = _baseIsTypedArray,
baseUnary = _baseUnary,
nodeUtil = _nodeUtil.exports;
/* Node.js helper references. */
var nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;
/**
* Checks if `value` is classified as a typed array.
*
* @static
* @memberOf _
* @since 3.0.0
* @category Lang
* @param {*} value The value to check.
* @returns {boolean} Returns `true` if `value` is a typed array, else `false`.
* @example
*
* _.isTypedArray(new Uint8Array);
* // => true
*
* _.isTypedArray([]);
* // => false
*/
var isTypedArray$1 = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;
var isTypedArray_1 = isTypedArray$1;
var baseTimes = _baseTimes,
isArguments = isArguments_1,
isArray = isArray_1,
isBuffer = isBuffer$1.exports,
isIndex = _isIndex,
isTypedArray = isTypedArray_1;
/** Used for built-in method references. */
var objectProto$2 = Object.prototype;
/** Used to check objects for own properties. */
var hasOwnProperty$1 = objectProto$2.hasOwnProperty;
/**
* Creates an array of the enumerable property names of the array-like `value`.
*
* @private
* @param {*} value The value to query.
* @param {boolean} inherited Specify returning inherited property names.
* @returns {Array} Returns the array of property names.
*/
function arrayLikeKeys$1(value, inherited) {
var isArr = isArray(value),
isArg = !isArr && isArguments(value),
isBuff = !isArr && !isArg && isBuffer(value),
isType = !isArr && !isArg && !isBuff && isTypedArray(value),
skipIndexes = isArr || isArg || isBuff || isType,
result = skipIndexes ? baseTimes(value.length, String) : [],
length = result.length;
for (var key in value) {
if ((inherited || hasOwnProperty$1.call(value, key)) &&
!(skipIndexes && (
// Safari 9 has enumerable `arguments.length` in strict mode.
key == 'length' ||
// Node.js 0.10 has enumerable non-index properties on buffers.
(isBuff && (key == 'offset' || key == 'parent')) ||
// PhantomJS 2 has enumerable non-index properties on typed arrays.
(isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) ||
// Skip index properties.
isIndex(key, length)
))) {
result.push(key);
}
}
return result;
}
var _arrayLikeKeys = arrayLikeKeys$1;
/** Used for built-in method references. */
var objectProto$1 = Object.prototype;
/**
* Checks if `value` is likely a prototype object.
*
* @private
* @param {*} value The value to check.
* @returns {boolean} Returns `true` if `value` is a prototype, else `false`.
*/
function isPrototype$1(value) {
var Ctor = value && value.constructor,
proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto$1;
return value === proto;
}
var _isPrototype = isPrototype$1;
/**
* Creates a unary function that invokes `func` with its argument transformed.
*
* @private
* @param {Function} func The function to wrap.
* @param {Function} transform The argument transform.
* @returns {Function} Returns the new function.
*/
function overArg$1(func, transform) {
return function(arg) {
return func(transform(arg));
};
}
var _overArg = overArg$1;
var overArg = _overArg;
/* Built-in method references for those with the same name as other `lodash` methods. */
var nativeKeys$1 = overArg(Object.keys, Object);
var _nativeKeys = nativeKeys$1;
var isPrototype = _isPrototype,
nativeKeys = _nativeKeys;
/** Used for built-in method references. */
var objectProto = Object.prototype;
/** Used to check objects for own properties. */
var hasOwnProperty = objectProto.hasOwnProperty;
/**
* The base implementation of `_.keys` which doesn't treat sparse arrays as dense.
*
* @private
* @param {Object} object The object to query.
* @returns {Array} Returns the array of property names.
*/
function baseKeys$1(object) {
if (!isPrototype(object)) {
return nativeKeys(object);
}
var result = [];
for (var key in Object(object)) {
if (hasOwnProperty.call(object, key) && key != 'constructor') {
result.push(key);
}
}
return result;
}
var _baseKeys = baseKeys$1;
var arrayLikeKeys = _arrayLikeKeys,
baseKeys = _baseKeys,
isArrayLike$1 = isArrayLike_1;
/**
* Creates an array of the own enumerable property names of `object`.
*
* **Note:** Non-object values are coerced to objects. See the
* [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)
* for more details.
*
* @static
* @since 0.1.0
* @memberOf _
* @category Object
* @param {Object} object The object to query.
* @returns {Array} Returns the array of property names.
* @example
*
* function Foo() {
* this.a = 1;
* this.b = 2;
* }
*
* Foo.prototype.c = 3;
*
* _.keys(new Foo);
* // => ['a', 'b'] (iteration order is not guaranteed)
*
* _.keys('hi');
* // => ['0', '1']
*/
function keys$1(object) {
return isArrayLike$1(object) ? arrayLikeKeys(object) : baseKeys(object);
}
var keys_1 = keys$1;
var baseValues = _baseValues,
keys = keys_1;
/**
* Creates an array of the own enumerable string keyed property values of `object`.
*
* **Note:** Non-object values are coerced to objects.
*
* @static
* @since 0.1.0
* @memberOf _
* @category Object
* @param {Object} object The object to query.
* @returns {Array} Returns the array of property values.
* @example
*
* function Foo() {
* this.a = 1;
* this.b = 2;
* }
*
* Foo.prototype.c = 3;
*
* _.values(new Foo);
* // => [1, 2] (iteration order is not guaranteed)
*
* _.values('hi');
* // => ['h', 'i']
*/
function values$1(object) {
return object == null ? [] : baseValues(object, keys(object));
}
var values_1 = values$1;
var Symbol = _Symbol,
copyArray = _copyArray,
getTag = _getTag,
isArrayLike = isArrayLike_1,
isString$2 = isString_1,
iteratorToArray = _iteratorToArray,
mapToArray = _mapToArray,
setToArray = _setToArray,
stringToArray = _stringToArray,
values = values_1;
/** `Object#toString` result references. */
var mapTag = '[object Map]',
setTag = '[object Set]';
/** Built-in value references. */
var symIterator = Symbol ? Symbol.iterator : undefined;
/**
* Converts `value` to an array.
*
* @static
* @since 0.1.0
* @memberOf _
* @category Lang
* @param {*} value The value to convert.
* @returns {Array} Returns the converted array.
* @example
*
* _.toArray({ 'a': 1, 'b': 2 });
* // => [1, 2]
*
* _.toArray('abc');
* // => ['a', 'b', 'c']
*
* _.toArray(1);
* // => []
*
* _.toArray(null);
* // => []
*/
function toArray$1(value) {
if (!value) {
return [];
}
if (isArrayLike(value)) {
return isString$2(value) ? stringToArray(value) : copyArray(value);
}
if (symIterator && value[symIterator]) {
return iteratorToArray(value[symIterator]());
}
var tag = getTag(value),
func = tag == mapTag ? mapToArray : (tag == setTag ? setToArray : values);
return func(value);
}
var toArray_1 = toArray$1;
var umbrella_with_rain_drops = "☔";
var coffee = "☕";
var aries = "♈";
var taurus = "♉";
var sagittarius = "♐";
var capricorn = "♑";
var aquarius = "♒";
var pisces = "♓";
var anchor = "⚓";
var white_check_mark = "✅";
var sparkles = "✨";
var question = "❓";
var grey_question = "❔";
var grey_exclamation = "❕";
var exclamation = "❗";
var heavy_exclamation_mark = "❗";
var heavy_plus_sign = "➕";
var heavy_minus_sign = "➖";
var heavy_division_sign = "➗";
var hash = "#️⃣";
var keycap_star = "*️⃣";
var zero = "0️⃣";
var one = "1️⃣";
var two = "2️⃣";
var three = "3️⃣";
var four = "4️⃣";
var five = "5️⃣";
var six = "6️⃣";
var seven = "7️⃣";
var eight = "8️⃣";
var nine = "9️⃣";
var copyright = "©️";
var registered = "®️";
var mahjong = "🀄";
var black_joker = "🃏";
var a = "🅰️";
var b = "🅱️";
var o2 = "🅾️";
var parking = "🅿️";
var ab = "🆎";
var cl = "🆑";
var cool = "🆒";
var free = "🆓";
var id = "🆔";
var ng = "🆖";
var ok = "🆗";
var sos = "🆘";
var up = "🆙";
var vs = "🆚";
var cn = "🇨🇳";
var de = "🇩🇪";
var es = "🇪🇸";
var fr = "🇫🇷";
var gb = "🇬🇧";
var uk = "🇬🇧";
var it = "🇮🇹";
var jp = "🇯🇵";
var kr = "🇰🇷";
var ru = "🇷🇺";
var us = "🇺🇸";
var koko = "🈁";
var sa = "🈂️";
var u7121 = "🈚";
var u6307 = "🈯";
var u7981 = "🈲";
var u7a7a = "🈳";
var u5408 = "🈴";
var u6e80 = "🈵";
var u6709 = "🈶";
var u6708 = "🈷️";
var u7533 = "🈸";
var u5272 = "🈹";
var u55b6 = "🈺";
var ideograph_advantage = "🉐";
var accept = "🉑";
var cyclone = "🌀";
var foggy = "🌁";
var closed_umbrella = "🌂";
var night_with_stars = "🌃";
var sunrise_over_mountains = "🌄";
var sunrise = "🌅";
var city_sunset = "🌆";
var city_sunrise = "🌇";
var rainbow = "🌈";
var bridge_at_night = "🌉";
var ocean = "🌊";
var volcano = "🌋";
var milky_way = "🌌";
var earth_africa = "🌍";
var earth_americas = "🌎";
var earth_asia = "🌏";
var globe_with_meridians = "🌐";
var new_moon = "🌑";
var waxing_crescent_moon = "🌒";
var first_quarter_moon = "🌓";
var moon = "🌔";
var waxing_gibbous_moon = "🌔";
var full_moon = "🌕";
var waning_gibbous_moon = "🌖";
var last_quarter_moon = "🌗";
var waning_crescent_moon = "🌘";
var crescent_moon = "🌙";
var new_moon_with_face = "🌚";
var first_quarter_moon_with_face = "🌛";
var last_quarter_moon_with_face = "🌜";
var full_moon_with_face = "🌝";
var sun_with_face = "🌞";
var star2 = "🌟";
var stars = "🌠";
var thermometer = "🌡️";
var mostly_sunny = "🌤️";
var sun_small_cloud = "🌤️";
var barely_sunny = "🌥️";
var sun_behind_cloud = "🌥️";
var partly_sunny_rain = "🌦️";
var sun_behind_rain_cloud = "🌦️";
var rain_cloud = "🌧️";
var snow_cloud = "🌨️";
var lightning = "🌩️";
var lightning_cloud = "🌩️";
var tornado = "🌪️";
var tornado_cloud = "🌪️";
var fog = "🌫️";
var wind_blowing_face = "🌬️";
var hotdog = "🌭";
var taco = "🌮";
var burrito = "🌯";
var chestnut = "🌰";
var seedling = "🌱";
var evergreen_tree = "🌲";
var deciduous_tree = "🌳";
var palm_tree = "🌴";
var cactus = "🌵";
var hot_pepper = "🌶️";
var tulip = "🌷";
var cherry_blossom = "🌸";
var rose = "🌹";
var hibiscus = "🌺";
var sunflower = "🌻";
var blossom = "🌼";
var corn = "🌽";
var ear_of_rice = "🌾";
var herb = "🌿";
var four_leaf_clover = "🍀";
var maple_leaf = "🍁";
var fallen_leaf = "🍂";
var leaves = "🍃";
var mushroom = "🍄";
var tomato = "🍅";
var eggplant = "🍆";
var grapes = "🍇";
var melon = "🍈";
var watermelon = "🍉";
var tangerine = "🍊";
var lemon = "🍋";
var banana = "🍌";
var pineapple = "🍍";
var apple = "🍎";
var green_apple = "🍏";
var pear = "🍐";
var peach = "🍑";
var cherries = "🍒";
var strawberry = "🍓";
var hamburger = "🍔";
var pizza = "🍕";
var meat_on_bone = "🍖";
var poultry_leg = "🍗";
var rice_cracker = "🍘";
var rice_ball = "🍙";
var rice = "🍚";
var curry = "🍛";
var ramen = "🍜";
var spaghetti = "🍝";
var bread = "🍞";
var fries = "🍟";
var sweet_potato = "🍠";
var dango = "🍡";
var oden = "🍢";
var sushi = "🍣";
var fried_shrimp = "🍤";
var fish_cake = "🍥";
var icecream = "🍦";
var shaved_ice = "🍧";
var ice_cream = "🍨";
var doughnut = "🍩";
var cookie = "🍪";
var chocolate_bar = "🍫";
var candy = "🍬";
var lollipop = "🍭";
var custard = "🍮";
var honey_pot = "🍯";
var cake = "🍰";
var bento = "🍱";
var stew = "🍲";
var fried_egg = "🍳";
var cooking = "🍳";
var fork_and_knife = "🍴";
var tea = "🍵";
var sake = "🍶";
var wine_glass = "🍷";
var cocktail = "🍸";
var tropical_drink = "🍹";
var beer = "🍺";
var beers = "🍻";
var baby_bottle = "🍼";
var knife_fork_plate = "🍽️";
var champagne = "🍾";
var popcorn = "🍿";
var ribbon = "🎀";
var gift = "🎁";
var birthday = "🎂";
var jack_o_lantern = "🎃";
var christmas_tree = "🎄";
var santa = "🎅";
var fireworks = "🎆";
var sparkler = "🎇";
var balloon = "🎈";
var tada = "🎉";
var confetti_ball = "🎊";
var tanabata_tree = "🎋";
var crossed_flags = "🎌";
var bamboo = "🎍";
var dolls = "🎎";
var flags = "🎏";
var wind_chime = "🎐";
var rice_scene = "🎑";
var school_satchel = "🎒";
var mortar_board = "🎓";
var medal = "🎖️";
var reminder_ribbon = "🎗️";
var studio_microphone = "🎙️";
var level_slider = "🎚️";
var control_knobs = "🎛️";
var film_frames = "🎞️";
var admission_tickets = "🎟️";
var carousel_horse = "🎠";
var ferris_wheel = "🎡";
var roller_coaster = "🎢";
var fishing_pole_and_fish = "🎣";
var microphone = "🎤";
var movie_camera = "🎥";
var cinema = "🎦";
var headphones = "🎧";
var art = "🎨";
var tophat = "🎩";
var circus_tent = "🎪";
var ticket = "🎫";
var clapper = "🎬";
var performing_arts = "🎭";
var video_game = "🎮";
var dart = "🎯";
var slot_machine = "🎰";
var game_die = "🎲";
var bowling = "🎳";
var flower_playing_cards = "🎴";
var musical_note = "🎵";
var notes = "🎶";
var saxophone = "🎷";
var guitar = "🎸";
var musical_keyboard = "🎹";
var trumpet = "🎺";
var violin = "🎻";
var musical_score = "🎼";
var running_shirt_with_sash = "🎽";
var tennis = "🎾";
var ski = "🎿";
var basketball = "🏀";
var checkered_flag = "🏁";
var snowboarder = "🏂";
var runner = "🏃♂️";
var running = "🏃♂️";
var surfer = "🏄♂️";
var sports_medal = "🏅";
var trophy = "🏆";
var horse_racing = "🏇";
var football = "🏈";
var rugby_football = "🏉";
var swimmer = "🏊♂️";
var weight_lifter = "🏋️♂️";
var golfer = "🏌️♂️";
var racing_motorcycle = "🏍️";
var racing_car = "🏎️";
var cricket_bat_and_ball = "🏏";
var volleyball = "🏐";
var field_hockey_stick_and_ball = "🏑";
var ice_hockey_stick_and_puck = "🏒";
var table_tennis_paddle_and_ball = "🏓";
var snow_capped_mountain = "🏔️";
var camping = "🏕️";
var beach_with_umbrella = "🏖️";
var building_construction = "🏗️";
var house_buildings = "🏘️";
var cityscape = "🏙️";
var derelict_house_building = "🏚️";
var classical_building = "🏛️";
var desert = "🏜️";
var desert_island = "🏝️";
var national_park = "🏞️";
var stadium = "🏟️";
var house = "🏠";
var house_with_garden = "🏡";
var office = "🏢";
var post_office = "🏣";
var european_post_office = "🏤";
var hospital = "🏥";
var bank = "🏦";
var atm = "🏧";
var hotel = "🏨";
var love_hotel = "🏩";
var convenience_store = "🏪";
var school = "🏫";
var department_store = "🏬";
var factory = "🏭";
var izakaya_lantern = "🏮";
var lantern = "🏮";
var japanese_castle = "🏯";
var european_castle = "🏰";
var transgender_flag = "🏳️⚧️";
var waving_white_flag = "🏳️";
var pirate_flag = "🏴☠️";
var waving_black_flag = "🏴";
var rosette = "🏵️";
var label = "🏷️";
var badminton_racquet_and_shuttlecock = "🏸";
var bow_and_arrow = "🏹";
var amphora = "🏺";
var rat = "🐀";
var mouse2 = "🐁";
var ox = "🐂";
var water_buffalo = "🐃";
var cow2 = "🐄";
var tiger2 = "🐅";
var leopard = "🐆";
var rabbit2 = "🐇";
var black_cat = "🐈⬛";
var cat2 = "🐈";
var dragon = "🐉";
var crocodile = "🐊";
var whale2 = "🐋";
var snail = "🐌";
var snake = "🐍";
var racehorse = "🐎";
var ram = "🐏";
var goat = "🐐";
var sheep = "🐑";
var monkey = "🐒";
var rooster = "🐓";
var chicken = "🐔";
var service_dog = "🐕🦺";
var dog2 = "🐕";
var pig2 = "🐖";
var boar = "🐗";
var elephant = "🐘";
var octopus = "🐙";
var shell = "🐚";
var bug = "🐛";
var ant = "🐜";
var bee = "🐝";
var honeybee = "🐝";
var ladybug = "🐞";
var lady_beetle = "🐞";
var fish = "🐟";
var tropical_fish = "🐠";
var blowfish = "🐡";
var turtle = "🐢";
var hatching_chick = "🐣";
var baby_chick = "🐤";
var hatched_chick = "🐥";
var bird = "🐦";
var penguin = "🐧";
var koala = "🐨";
var poodle = "🐩";
var dromedary_camel = "🐪";
var camel = "🐫";
var dolphin = "🐬";
var flipper = "🐬";
var mouse = "🐭";
var cow = "🐮";
var tiger = "🐯";
var rabbit = "🐰";
var cat = "🐱";
var dragon_face = "🐲";
var whale = "🐳";
var horse = "🐴";
var monkey_face = "🐵";
var dog = "🐶";
var pig = "🐷";
var frog = "🐸";
var hamster = "🐹";
var wolf = "🐺";
var polar_bear = "🐻❄️";
var bear = "🐻";
var panda_face = "🐼";
var pig_nose = "🐽";
var feet = "🐾";
var paw_prints = "🐾";
var chipmunk = "🐿️";
var eyes = "👀";
var eye = "👁️";
var ear = "👂";
var nose = "👃";
var lips = "👄";
var tongue = "👅";
var point_up_2 = "👆";
var point_down = "👇";
var point_left = "👈";
var point_right = "👉";
var facepunch = "👊";
var punch = "👊";
var wave = "👋";
var ok_hand = "👌";
var thumbsup = "👍";
var thumbsdown = "👎";
var clap = "👏";
var open_hands = "👐";
var crown = "👑";
var womans_hat = "👒";
var eyeglasses = "👓";
var necktie = "👔";
var shirt = "👕";
var tshirt = "👕";
var jeans = "👖";
var dress = "👗";
var kimono = "👘";
var bikini = "👙";
var womans_clothes = "👚";
var purse = "👛";
var handbag = "👜";
var pouch = "👝";
var mans_shoe = "👞";
var shoe = "👞";
var athletic_shoe = "👟";
var high_heel = "👠";
var sandal = "👡";
var boot = "👢";
var footprints = "👣";
var bust_in_silhouette = "👤";
var busts_in_silhouette = "👥";
var boy = "👦";
var girl = "👧";
var man_feeding_baby = "👨🍼";
var family = "👨👩👦";
var man_with_probing_cane = "👨🦯";
var red_haired_man = "👨🦰";
var curly_haired_man = "👨🦱";
var bald_man = "👨🦲";
var white_haired_man = "👨🦳";
var man_in_motorized_wheelchair = "👨🦼";
var man_in_manual_wheelchair = "👨🦽";
var man = "👨";
var woman_feeding_baby = "👩🍼";
var woman_with_probing_cane = "👩🦯";
var red_haired_woman = "👩🦰";
var curly_haired_woman = "👩🦱";
var bald_woman = "👩🦲";
var white_haired_woman = "👩🦳";
var woman_in_motorized_wheelchair = "👩🦼";
var woman_in_manual_wheelchair = "👩🦽";
var woman = "👩";
var man_and_woman_holding_hands = "👫";
var woman_and_man_holding_hands = "👫";
var couple = "👫";
var two_men_holding_hands = "👬";
var men_holding_hands = "👬";
var two_women_holding_hands = "👭";
var women_holding_hands = "👭";
var cop = "👮♂️";
var dancers = "👯♀️";
var woman_with_veil = "👰♀️";
var man_with_veil = "👰♂️";
var bride_with_veil = "👰";
var person_with_blond_hair = "👱♂️";
var man_with_gua_pi_mao = "👲";
var man_with_turban = "👳♂️";
var older_man = "👴";
var older_woman = "👵";
var baby = "👶";
var construction_worker = "👷♂️";
var princess = "👸";
var japanese_ogre = "👹";
var japanese_goblin = "👺";
var ghost = "👻";
var angel = "👼";
var alien = "👽";
var space_invader = "👾";
var imp = "👿";
var skull = "💀";
var information_desk_person = "💁♀️";
var guardsman = "💂♂️";
var dancer = "💃";
var lipstick = "💄";
var nail_care = "💅";
var massage = "💆♀️";
var haircut = "💇♀️";
var barber = "💈";
var syringe = "💉";
var pill = "💊";
var kiss = "💋";
var love_letter = "💌";
var ring = "💍";
var gem = "💎";
var couplekiss = "💏";
var bouquet = "💐";
var couple_with_heart = "💑";
var wedding = "💒";
var heartbeat = "💓";
var broken_heart = "💔";
var two_hearts = "💕";
var sparkling_heart = "💖";
var heartpulse = "💗";
var cupid = "💘";
var blue_heart = "💙";
var green_heart = "💚";
var yellow_heart = "💛";
var purple_heart = "💜";
var gift_heart = "💝";
var revolving_hearts = "💞";
var heart_decoration = "💟";
var diamond_shape_with_a_dot_inside = "💠";
var bulb = "💡";
var anger = "💢";
var bomb = "💣";
var zzz = "💤";
var boom = "💥";
var collision = "💥";
var sweat_drops = "💦";
var droplet = "💧";
var dash = "💨";
var hankey = "💩";
var poop = "💩";
var shit = "💩";
var muscle = "💪";
var dizzy = "💫";
var speech_balloon = "💬";
var thought_balloon = "💭";
var white_flower = "💮";
var moneybag = "💰";
var currency_exchange = "💱";
var heavy_dollar_sign = "💲";
var credit_card = "💳";
var yen = "💴";
var dollar = "💵";
var euro = "💶";
var pound = "💷";
var money_with_wings = "💸";
var chart = "💹";
var seat = "💺";
var computer = "💻";
var briefcase = "💼";
var minidisc = "💽";
var floppy_disk = "💾";
var cd = "💿";
var dvd = "📀";
var file_folder = "📁";
var open_file_folder = "📂";
var page_with_curl = "📃";
var page_facing_up = "📄";
var date = "📅";
var calendar = "📆";
var card_index = "📇";
var chart_with_upwards_trend = "📈";
var chart_with_downwards_trend = "📉";
var bar_chart = "📊";
var clipboard = "📋";
var pushpin = "📌";
var round_pushpin = "📍";
var paperclip = "📎";
var straight_ruler = "📏";
var triangular_ruler = "📐";
var bookmark_tabs = "📑";
var ledger = "📒";
var notebook = "📓";
var notebook_with_decorative_cover = "📔";
var closed_book = "📕";
var book = "📖";
var open_book = "📖";
var green_book = "📗";
var blue_book = "📘";
var orange_book = "📙";
var books = "📚";
var name_badge = "📛";
var scroll = "📜";
var memo = "📝";
var pencil = "📝";
var telephone_receiver = "📞";
var pager = "📟";
var fax = "📠";
var satellite_antenna = "📡";
var loudspeaker = "📢";
var mega = "📣";
var outbox_tray = "📤";
var inbox_tray = "📥";
var incoming_envelope = "📨";
var envelope_with_arrow = "📩";
var mailbox_closed = "📪";
var mailbox = "📫";
var mailbox_with_mail = "📬";
var mailbox_with_no_mail = "📭";
var postbox = "📮";
var postal_horn = "📯";
var newspaper = "📰";
var iphone = "📱";
var calling = "📲";
var vibration_mode = "📳";
var mobile_phone_off = "📴";
var no_mobile_phones = "📵";
var signal_strength = "📶";
var camera = "📷";
var camera_with_flash = "📸";
var video_camera = "📹";
var tv = "📺";
var radio = "📻";
var vhs = "📼";
var film_projector = "📽️";
var prayer_beads = "📿";
var twisted_rightwards_arrows = "🔀";
var repeat = "🔁";
var repeat_one = "🔂";
var arrows_clockwise = "🔃";
var arrows_counterclockwise = "🔄";
var low_brightness = "🔅";
var high_brightness = "🔆";
var mute = "🔇";
var speaker = "🔈";
var sou