Best JavaScript code snippet using playwright-internal
sparse.py
Source:sparse.py
...300 return self.subtype301# ----------------------------------------------------------------------------302# Array303_sparray_doc_kwargs = dict(klass='SparseArray')304def _get_fill(arr):305 # type: (SparseArray) -> ndarray306 """307 Create a 0-dim ndarray containing the fill value308 Parameters309 ----------310 arr : SparseArray311 Returns312 -------313 fill_value : ndarray314 0-dim ndarray with just the fill value.315 Notes316 -----317 coerce fill_value to arr dtype if possible318 int64 SparseArray can have NaN as fill_value if there is no missing319 """320 try:321 return np.asarray(arr.fill_value, dtype=arr.dtype.subtype)322 except ValueError:323 return np.asarray(arr.fill_value)324def _sparse_array_op(left, right, op, name):325 """326 Perform a binary operation between two arrays.327 Parameters328 ----------329 left : Union[SparseArray, ndarray]330 right : Union[SparseArray, ndarray]331 op : Callable332 The binary operation to perform333 name str334 Name of the callable.335 Returns336 -------337 SparseArray338 """339 # type: (SparseArray, SparseArray, Callable, str) -> Any340 if name.startswith('__'):341 # For lookups in _libs.sparse we need non-dunder op name342 name = name[2:-2]343 # dtype used to find corresponding sparse method344 ltype = left.dtype.subtype345 rtype = right.dtype.subtype346 if not is_dtype_equal(ltype, rtype):347 subtype = find_common_type([ltype, rtype])348 ltype = SparseDtype(subtype, left.fill_value)349 rtype = SparseDtype(subtype, right.fill_value)350 # TODO(GH-23092): pass copy=False. Need to fix astype_nansafe351 left = left.astype(ltype)352 right = right.astype(rtype)353 dtype = ltype.subtype354 else:355 dtype = ltype356 # dtype the result must have357 result_dtype = None358 if left.sp_index.ngaps == 0 or right.sp_index.ngaps == 0:359 with np.errstate(all='ignore'):360 result = op(left.get_values(), right.get_values())361 fill = op(_get_fill(left), _get_fill(right))362 if left.sp_index.ngaps == 0:363 index = left.sp_index364 else:365 index = right.sp_index366 elif left.sp_index.equals(right.sp_index):367 with np.errstate(all='ignore'):368 result = op(left.sp_values, right.sp_values)369 fill = op(_get_fill(left), _get_fill(right))370 index = left.sp_index371 else:372 if name[0] == 'r':373 left, right = right, left374 name = name[1:]375 if name in ('and', 'or') and dtype == 'bool':376 opname = 'sparse_{name}_uint8'.format(name=name)377 # to make template simple, cast here378 left_sp_values = left.sp_values.view(np.uint8)379 right_sp_values = right.sp_values.view(np.uint8)380 result_dtype = np.bool381 else:382 opname = 'sparse_{name}_{dtype}'.format(name=name, dtype=dtype)383 left_sp_values = left.sp_values384 right_sp_values = right.sp_values385 sparse_op = getattr(splib, opname)386 with np.errstate(all='ignore'):387 result, index, fill = sparse_op(388 left_sp_values, left.sp_index, left.fill_value,389 right_sp_values, right.sp_index, right.fill_value)390 if result_dtype is None:391 result_dtype = result.dtype392 return _wrap_result(name, result, index, fill, dtype=result_dtype)393def _wrap_result(name, data, sparse_index, fill_value, dtype=None):394 """395 wrap op result to have correct dtype396 """397 if name.startswith('__'):398 # e.g. __eq__ --> eq399 name = name[2:-2]400 if name in ('eq', 'ne', 'lt', 'gt', 'le', 'ge'):401 dtype = np.bool402 fill_value = lib.item_from_zerodim(fill_value)403 if is_bool_dtype(dtype):404 # fill_value may be np.bool_405 fill_value = bool(fill_value)406 return SparseArray(data,407 sparse_index=sparse_index,408 fill_value=fill_value,409 dtype=dtype)410class SparseArray(PandasObject, ExtensionArray, ExtensionOpsMixin):411 """412 An ExtensionArray for storing sparse data.413 .. versionchanged:: 0.24.0414 Implements the ExtensionArray interface.415 Parameters416 ----------417 data : array-like418 A dense array of values to store in the SparseArray. This may contain419 `fill_value`.420 sparse_index : SparseIndex, optional421 index : Index422 fill_value : scalar, optional423 Elements in `data` that are `fill_value` are not stored in the424 SparseArray. For memory savings, this should be the most common value425 in `data`. By default, `fill_value` depends on the dtype of `data`:426 =========== ==========427 data.dtype na_value428 =========== ==========429 float ``np.nan``430 int ``0``431 bool False432 datetime64 ``pd.NaT``433 timedelta64 ``pd.NaT``434 =========== ==========435 The fill value is potentiall specified in three ways. In order of436 precedence, these are437 1. The `fill_value` argument438 2. ``dtype.fill_value`` if `fill_value` is None and `dtype` is439 a ``SparseDtype``440 3. ``data.dtype.fill_value`` if `fill_value` is None and `dtype`441 is not a ``SparseDtype`` and `data` is a ``SparseArray``.442 kind : {'integer', 'block'}, default 'integer'443 The type of storage for sparse locations.444 * 'block': Stores a `block` and `block_length` for each445 contiguous *span* of sparse values. This is best when446 sparse data tends to be clumped together, with large447 regsions of ``fill-value`` values between sparse values.448 * 'integer': uses an integer to store the location of449 each sparse value.450 dtype : np.dtype or SparseDtype, optional451 The dtype to use for the SparseArray. For numpy dtypes, this452 determines the dtype of ``self.sp_values``. For SparseDtype,453 this determines ``self.sp_values`` and ``self.fill_value``.454 copy : bool, default False455 Whether to explicitly copy the incoming `data` array.456 """457 __array_priority__ = 15458 _pandas_ftype = 'sparse'459 _subtyp = 'sparse_array' # register ABCSparseArray460 def __init__(self, data, sparse_index=None, index=None, fill_value=None,461 kind='integer', dtype=None, copy=False):462 from pandas.core.internals import SingleBlockManager463 if isinstance(data, SingleBlockManager):464 data = data.internal_values()465 if fill_value is None and isinstance(dtype, SparseDtype):466 fill_value = dtype.fill_value467 if isinstance(data, (type(self), ABCSparseSeries)):468 # disable normal inference on dtype, sparse_index, & fill_value469 if sparse_index is None:470 sparse_index = data.sp_index471 if fill_value is None:472 fill_value = data.fill_value473 if dtype is None:474 dtype = data.dtype475 # TODO: make kind=None, and use data.kind?476 data = data.sp_values477 # Handle use-provided dtype478 if isinstance(dtype, compat.string_types):479 # Two options: dtype='int', regular numpy dtype480 # or dtype='Sparse[int]', a sparse dtype481 try:482 dtype = SparseDtype.construct_from_string(dtype)483 except TypeError:484 dtype = pandas_dtype(dtype)485 if isinstance(dtype, SparseDtype):486 if fill_value is None:487 fill_value = dtype.fill_value488 dtype = dtype.subtype489 if index is not None and not is_scalar(data):490 raise Exception("must only pass scalars with an index ")491 if is_scalar(data):492 if index is not None:493 if data is None:494 data = np.nan495 if index is not None:496 npoints = len(index)497 elif sparse_index is None:498 npoints = 1499 else:500 npoints = sparse_index.length501 dtype = infer_dtype_from_scalar(data)[0]502 data = construct_1d_arraylike_from_scalar(503 data, npoints, dtype504 )505 if dtype is not None:506 dtype = pandas_dtype(dtype)507 # TODO: disentangle the fill_value dtype inference from508 # dtype inference509 if data is None:510 # XXX: What should the empty dtype be? Object or float?511 data = np.array([], dtype=dtype)512 if not is_array_like(data):513 try:514 # probably shared code in sanitize_series515 from pandas.core.internals.construction import sanitize_array516 data = sanitize_array(data, index=None)517 except ValueError:518 # NumPy may raise a ValueError on data like [1, []]519 # we retry with object dtype here.520 if dtype is None:521 dtype = object522 data = np.atleast_1d(np.asarray(data, dtype=dtype))523 else:524 raise525 if copy:526 # TODO: avoid double copy when dtype forces cast.527 data = data.copy()528 if fill_value is None:529 fill_value_dtype = data.dtype if dtype is None else dtype530 if fill_value_dtype is None:531 fill_value = np.nan532 else:533 fill_value = na_value_for_dtype(fill_value_dtype)534 if isinstance(data, type(self)) and sparse_index is None:535 sparse_index = data._sparse_index536 sparse_values = np.asarray(data.sp_values, dtype=dtype)537 elif sparse_index is None:538 sparse_values, sparse_index, fill_value = make_sparse(539 data, kind=kind, fill_value=fill_value, dtype=dtype540 )541 else:542 sparse_values = np.asarray(data, dtype=dtype)543 if len(sparse_values) != sparse_index.npoints:544 raise AssertionError("Non array-like type {type} must "545 "have the same length as the index"546 .format(type=type(sparse_values)))547 self._sparse_index = sparse_index548 self._sparse_values = sparse_values549 self._dtype = SparseDtype(sparse_values.dtype, fill_value)550 @classmethod551 def _simple_new(cls, sparse_array, sparse_index, dtype):552 # type: (np.ndarray, SparseIndex, SparseDtype) -> 'SparseArray'553 new = cls([])554 new._sparse_index = sparse_index555 new._sparse_values = sparse_array556 new._dtype = dtype557 return new558 def __array__(self, dtype=None, copy=True):559 fill_value = self.fill_value560 if self.sp_index.ngaps == 0:561 # Compat for na dtype and int values.562 return self.sp_values563 if dtype is None:564 # Can NumPy represent this type?565 # If not, `np.result_type` will raise. We catch that566 # and return object.567 if is_datetime64_any_dtype(self.sp_values.dtype):568 # However, we *do* special-case the common case of569 # a datetime64 with pandas NaT.570 if fill_value is NaT:571 # Can't put pd.NaT in a datetime64[ns]572 fill_value = np.datetime64('NaT')573 try:574 dtype = np.result_type(self.sp_values.dtype, type(fill_value))575 except TypeError:576 dtype = object577 out = np.full(self.shape, fill_value, dtype=dtype)578 out[self.sp_index.to_int_index().indices] = self.sp_values579 return out580 def __setitem__(self, key, value):581 # I suppose we could allow setting of non-fill_value elements.582 # TODO(SparseArray.__setitem__): remove special cases in583 # ExtensionBlock.where584 msg = "SparseArray does not support item assignment via setitem"585 raise TypeError(msg)586 @classmethod587 def _from_sequence(cls, scalars, dtype=None, copy=False):588 return cls(scalars, dtype=dtype)589 @classmethod590 def _from_factorized(cls, values, original):591 return cls(values, dtype=original.dtype)592 # ------------------------------------------------------------------------593 # Data594 # ------------------------------------------------------------------------595 @property596 def sp_index(self):597 """598 The SparseIndex containing the location of non- ``fill_value`` points.599 """600 return self._sparse_index601 @property602 def sp_values(self):603 """604 An ndarray containing the non- ``fill_value`` values.605 Examples606 --------607 >>> s = SparseArray([0, 0, 1, 0, 2], fill_value=0)608 >>> s.sp_values609 array([1, 2])610 """611 return self._sparse_values612 @property613 def dtype(self):614 return self._dtype615 @property616 def fill_value(self):617 """618 Elements in `data` that are `fill_value` are not stored.619 For memory savings, this should be the most common value in the array.620 """621 return self.dtype.fill_value622 @fill_value.setter623 def fill_value(self, value):624 self._dtype = SparseDtype(self.dtype.subtype, value)625 @property626 def kind(self):627 """628 The kind of sparse index for this array. One of {'integer', 'block'}.629 """630 if isinstance(self.sp_index, IntIndex):631 return 'integer'632 else:633 return 'block'634 @property635 def _valid_sp_values(self):636 sp_vals = self.sp_values637 mask = notna(sp_vals)638 return sp_vals[mask]639 def __len__(self):640 return self.sp_index.length641 @property642 def _null_fill_value(self):643 return self._dtype._is_na_fill_value644 def _fill_value_matches(self, fill_value):645 if self._null_fill_value:646 return isna(fill_value)647 else:648 return self.fill_value == fill_value649 @property650 def nbytes(self):651 return self.sp_values.nbytes + self.sp_index.nbytes652 @property653 def density(self):654 """655 The percent of non- ``fill_value`` points, as decimal.656 Examples657 --------658 >>> s = SparseArray([0, 0, 1, 1, 1], fill_value=0)659 >>> s.density660 0.6661 """662 r = float(self.sp_index.npoints) / float(self.sp_index.length)663 return r664 @property665 def npoints(self):666 """667 The number of non- ``fill_value`` points.668 Examples669 --------670 >>> s = SparseArray([0, 0, 1, 1, 1], fill_value=0)671 >>> s.npoints672 3673 """674 return self.sp_index.npoints675 @property676 def values(self):677 """678 Dense values679 """680 return self.to_dense()681 def isna(self):682 from pandas import isna683 # If null fill value, we want SparseDtype[bool, true]684 # to preserve the same memory usage.685 dtype = SparseDtype(bool, self._null_fill_value)686 return type(self)._simple_new(isna(self.sp_values),687 self.sp_index, dtype)688 def fillna(self, value=None, method=None, limit=None):689 """690 Fill missing values with `value`.691 Parameters692 ----------693 value : scalar, optional694 method : str, optional695 .. warning::696 Using 'method' will result in high memory use,697 as all `fill_value` methods will be converted to698 an in-memory ndarray699 limit : int, optional700 Returns701 -------702 SparseArray703 Notes704 -----705 When `value` is specified, the result's ``fill_value`` depends on706 ``self.fill_value``. The goal is to maintain low-memory use.707 If ``self.fill_value`` is NA, the result dtype will be708 ``SparseDtype(self.dtype, fill_value=value)``. This will preserve709 amount of memory used before and after filling.710 When ``self.fill_value`` is not NA, the result dtype will be711 ``self.dtype``. Again, this preserves the amount of memory used.712 """713 if ((method is None and value is None) or714 (method is not None and value is not None)):715 raise ValueError("Must specify one of 'method' or 'value'.")716 elif method is not None:717 msg = "fillna with 'method' requires high memory usage."718 warnings.warn(msg, PerformanceWarning)719 filled = interpolate_2d(np.asarray(self), method=method,720 limit=limit)721 return type(self)(filled, fill_value=self.fill_value)722 else:723 new_values = np.where(isna(self.sp_values), value, self.sp_values)724 if self._null_fill_value:725 # This is essentially just updating the dtype.726 new_dtype = SparseDtype(self.dtype.subtype, fill_value=value)727 else:728 new_dtype = self.dtype729 return self._simple_new(new_values, self._sparse_index, new_dtype)730 def shift(self, periods=1, fill_value=None):731 if not len(self) or periods == 0:732 return self.copy()733 if isna(fill_value):734 fill_value = self.dtype.na_value735 subtype = np.result_type(fill_value, self.dtype.subtype)736 if subtype != self.dtype.subtype:737 # just coerce up front738 arr = self.astype(SparseDtype(subtype, self.fill_value))739 else:740 arr = self741 empty = self._from_sequence(742 [fill_value] * min(abs(periods), len(self)),743 dtype=arr.dtype744 )745 if periods > 0:746 a = empty747 b = arr[:-periods]748 else:749 a = arr[abs(periods):]750 b = empty751 return arr._concat_same_type([a, b])752 def _first_fill_value_loc(self):753 """754 Get the location of the first missing value.755 Returns756 -------757 int758 """759 if len(self) == 0 or self.sp_index.npoints == len(self):760 return -1761 indices = self.sp_index.to_int_index().indices762 if not len(indices) or indices[0] > 0:763 return 0764 diff = indices[1:] - indices[:-1]765 return np.searchsorted(diff, 2) + 1766 def unique(self):767 uniques = list(algos.unique(self.sp_values))768 fill_loc = self._first_fill_value_loc()769 if fill_loc >= 0:770 uniques.insert(fill_loc, self.fill_value)771 return type(self)._from_sequence(uniques, dtype=self.dtype)772 def _values_for_factorize(self):773 # Still override this for hash_pandas_object774 return np.asarray(self), self.fill_value775 def factorize(self, na_sentinel=-1):776 # Currently, ExtensionArray.factorize -> Tuple[ndarray, EA]777 # The sparsity on this is backwards from what Sparse would want. Want778 # ExtensionArray.factorize -> Tuple[EA, EA]779 # Given that we have to return a dense array of labels, why bother780 # implementing an efficient factorize?781 labels, uniques = algos.factorize(np.asarray(self),782 na_sentinel=na_sentinel)783 uniques = SparseArray(uniques, dtype=self.dtype)784 return labels, uniques785 def value_counts(self, dropna=True):786 """787 Returns a Series containing counts of unique values.788 Parameters789 ----------790 dropna : boolean, default True791 Don't include counts of NaN, even if NaN is in sp_values.792 Returns793 -------794 counts : Series795 """796 from pandas import Index, Series797 keys, counts = algos._value_counts_arraylike(self.sp_values,798 dropna=dropna)799 fcounts = self.sp_index.ngaps800 if fcounts > 0:801 if self._null_fill_value and dropna:802 pass803 else:804 if self._null_fill_value:805 mask = isna(keys)806 else:807 mask = keys == self.fill_value808 if mask.any():809 counts[mask] += fcounts810 else:811 keys = np.insert(keys, 0, self.fill_value)812 counts = np.insert(counts, 0, fcounts)813 if not isinstance(keys, ABCIndexClass):814 keys = Index(keys)815 result = Series(counts, index=keys)816 return result817 # --------818 # Indexing819 # --------820 def __getitem__(self, key):821 if isinstance(key, tuple):822 if len(key) > 1:823 raise IndexError("too many indices for array.")824 key = key[0]825 if is_integer(key):826 return self._get_val_at(key)827 elif isinstance(key, tuple):828 data_slice = self.values[key]829 elif isinstance(key, slice):830 # special case to preserve dtypes831 if key == slice(None):832 return self.copy()833 # TODO: this logic is surely elsewhere834 # TODO: this could be more efficient835 indices = np.arange(len(self), dtype=np.int32)[key]836 return self.take(indices)837 else:838 # TODO: I think we can avoid densifying when masking a839 # boolean SparseArray with another. Need to look at the840 # key's fill_value for True / False, and then do an intersection841 # on the indicies of the sp_values.842 if isinstance(key, SparseArray):843 if is_bool_dtype(key):844 key = key.to_dense()845 else:846 key = np.asarray(key)847 if com.is_bool_indexer(key) and len(self) == len(key):848 return self.take(np.arange(len(key), dtype=np.int32)[key])849 elif hasattr(key, '__len__'):850 return self.take(key)851 else:852 raise ValueError("Cannot slice with '{}'".format(key))853 return type(self)(data_slice, kind=self.kind)854 def _get_val_at(self, loc):855 n = len(self)856 if loc < 0:857 loc += n858 if loc >= n or loc < 0:859 raise IndexError('Out of bounds access')860 sp_loc = self.sp_index.lookup(loc)861 if sp_loc == -1:862 return self.fill_value863 else:864 return libindex.get_value_at(self.sp_values, sp_loc)865 def take(self, indices, allow_fill=False, fill_value=None):866 if is_scalar(indices):867 raise ValueError("'indices' must be an array, not a "868 "scalar '{}'.".format(indices))869 indices = np.asarray(indices, dtype=np.int32)870 if indices.size == 0:871 result = []872 kwargs = {'dtype': self.dtype}873 elif allow_fill:874 result = self._take_with_fill(indices, fill_value=fill_value)875 kwargs = {}876 else:877 result = self._take_without_fill(indices)878 kwargs = {'dtype': self.dtype}879 return type(self)(result, fill_value=self.fill_value, kind=self.kind,880 **kwargs)881 def _take_with_fill(self, indices, fill_value=None):882 if fill_value is None:883 fill_value = self.dtype.na_value884 if indices.min() < -1:885 raise ValueError("Invalid value in 'indices'. Must be between -1 "886 "and the length of the array.")887 if indices.max() >= len(self):888 raise IndexError("out of bounds value in 'indices'.")889 if len(self) == 0:890 # Empty... Allow taking only if all empty891 if (indices == -1).all():892 dtype = np.result_type(self.sp_values, type(fill_value))893 taken = np.empty_like(indices, dtype=dtype)894 taken.fill(fill_value)895 return taken896 else:897 raise IndexError('cannot do a non-empty take from an empty '898 'axes.')899 sp_indexer = self.sp_index.lookup_array(indices)900 if self.sp_index.npoints == 0:901 # Avoid taking from the empty self.sp_values902 taken = np.full(sp_indexer.shape, fill_value=fill_value,903 dtype=np.result_type(type(fill_value)))904 else:905 taken = self.sp_values.take(sp_indexer)906 # sp_indexer may be -1 for two reasons907 # 1.) we took for an index of -1 (new)908 # 2.) we took a value that was self.fill_value (old)909 new_fill_indices = indices == -1910 old_fill_indices = (sp_indexer == -1) & ~new_fill_indices911 # Fill in two steps.912 # Old fill values913 # New fill values914 # potentially coercing to a new dtype at each stage.915 m0 = sp_indexer[old_fill_indices] < 0916 m1 = sp_indexer[new_fill_indices] < 0917 result_type = taken.dtype918 if m0.any():919 result_type = np.result_type(result_type,920 type(self.fill_value))921 taken = taken.astype(result_type)922 taken[old_fill_indices] = self.fill_value923 if m1.any():924 result_type = np.result_type(result_type, type(fill_value))925 taken = taken.astype(result_type)926 taken[new_fill_indices] = fill_value927 return taken928 def _take_without_fill(self, indices):929 to_shift = indices < 0930 indices = indices.copy()931 n = len(self)932 if (indices.max() >= n) or (indices.min() < -n):933 if n == 0:934 raise IndexError("cannot do a non-empty take from an "935 "empty axes.")936 else:937 raise IndexError("out of bounds value in 'indices'.")938 if to_shift.any():939 indices[to_shift] += n940 if self.sp_index.npoints == 0:941 # edge case in take...942 # I think just return943 out = np.full(indices.shape, self.fill_value,944 dtype=np.result_type(type(self.fill_value)))945 arr, sp_index, fill_value = make_sparse(out,946 fill_value=self.fill_value)947 return type(self)(arr, sparse_index=sp_index,948 fill_value=fill_value)949 sp_indexer = self.sp_index.lookup_array(indices)950 taken = self.sp_values.take(sp_indexer)951 fillable = (sp_indexer < 0)952 if fillable.any():953 # TODO: may need to coerce array to fill value954 result_type = np.result_type(taken, type(self.fill_value))955 taken = taken.astype(result_type)956 taken[fillable] = self.fill_value957 return taken958 def searchsorted(self, v, side="left", sorter=None):959 msg = "searchsorted requires high memory usage."960 warnings.warn(msg, PerformanceWarning, stacklevel=2)961 if not is_scalar(v):962 v = np.asarray(v)963 v = np.asarray(v)964 return np.asarray(self, dtype=self.dtype.subtype).searchsorted(965 v, side, sorter966 )967 def copy(self, deep=False):968 if deep:969 values = self.sp_values.copy()970 else:971 values = self.sp_values972 return self._simple_new(values, self.sp_index, self.dtype)973 @classmethod974 def _concat_same_type(cls, to_concat):975 fill_values = [x.fill_value for x in to_concat]976 fill_value = fill_values[0]977 # np.nan isn't a singleton, so we may end up with multiple978 # NaNs here, so we ignore tha all NA case too.979 if not (len(set(fill_values)) == 1 or isna(fill_values).all()):980 warnings.warn("Concatenating sparse arrays with multiple fill "981 "values: '{}'. Picking the first and "982 "converting the rest.".format(fill_values),983 PerformanceWarning,984 stacklevel=6)985 keep = to_concat[0]986 to_concat2 = [keep]987 for arr in to_concat[1:]:988 to_concat2.append(cls(np.asarray(arr), fill_value=fill_value))989 to_concat = to_concat2990 values = []991 length = 0992 if to_concat:993 sp_kind = to_concat[0].kind994 else:995 sp_kind = 'integer'996 if sp_kind == 'integer':997 indices = []998 for arr in to_concat:999 idx = arr.sp_index.to_int_index().indices.copy()1000 idx += length # TODO: wraparound1001 length += arr.sp_index.length1002 values.append(arr.sp_values)1003 indices.append(idx)1004 data = np.concatenate(values)1005 indices = np.concatenate(indices)1006 sp_index = IntIndex(length, indices)1007 else:1008 # when concatentating block indices, we don't claim that you'll1009 # get an identical index as concating the values and then1010 # creating a new index. We don't want to spend the time trying1011 # to merge blocks across arrays in `to_concat`, so the resulting1012 # BlockIndex may have more blocs.1013 blengths = []1014 blocs = []1015 for arr in to_concat:1016 idx = arr.sp_index.to_block_index()1017 values.append(arr.sp_values)1018 blocs.append(idx.blocs.copy() + length)1019 blengths.append(idx.blengths)1020 length += arr.sp_index.length1021 data = np.concatenate(values)1022 blocs = np.concatenate(blocs)1023 blengths = np.concatenate(blengths)1024 sp_index = BlockIndex(length, blocs, blengths)1025 return cls(data, sparse_index=sp_index, fill_value=fill_value)1026 def astype(self, dtype=None, copy=True):1027 """1028 Change the dtype of a SparseArray.1029 The output will always be a SparseArray. To convert to a dense1030 ndarray with a certain dtype, use :meth:`numpy.asarray`.1031 Parameters1032 ----------1033 dtype : np.dtype or ExtensionDtype1034 For SparseDtype, this changes the dtype of1035 ``self.sp_values`` and the ``self.fill_value``.1036 For other dtypes, this only changes the dtype of1037 ``self.sp_values``.1038 copy : bool, default True1039 Whether to ensure a copy is made, even if not necessary.1040 Returns1041 -------1042 SparseArray1043 Examples1044 --------1045 >>> arr = SparseArray([0, 0, 1, 2])1046 >>> arr1047 [0, 0, 1, 2]1048 Fill: 01049 IntIndex1050 Indices: array([2, 3], dtype=int32)1051 >>> arr.astype(np.dtype('int32'))1052 [0, 0, 1, 2]1053 Fill: 01054 IntIndex1055 Indices: array([2, 3], dtype=int32)1056 Using a NumPy dtype with a different kind (e.g. float) will coerce1057 just ``self.sp_values``.1058 >>> arr.astype(np.dtype('float64'))1059 ... # doctest: +NORMALIZE_WHITESPACE1060 [0, 0, 1.0, 2.0]1061 Fill: 01062 IntIndex1063 Indices: array([2, 3], dtype=int32)1064 Use a SparseDtype if you wish to be change the fill value as well.1065 >>> arr.astype(SparseDtype("float64", fill_value=np.nan))1066 ... # doctest: +NORMALIZE_WHITESPACE1067 [nan, nan, 1.0, 2.0]1068 Fill: nan1069 IntIndex1070 Indices: array([2, 3], dtype=int32)1071 """1072 dtype = self.dtype.update_dtype(dtype)1073 subtype = dtype._subtype_with_str1074 sp_values = astype_nansafe(self.sp_values,1075 subtype,1076 copy=copy)1077 if sp_values is self.sp_values and copy:1078 sp_values = sp_values.copy()1079 return self._simple_new(sp_values,1080 self.sp_index,1081 dtype)1082 def map(self, mapper):1083 """1084 Map categories using input correspondence (dict, Series, or function).1085 Parameters1086 ----------1087 mapper : dict, Series, callable1088 The correspondence from old values to new.1089 Returns1090 -------1091 SparseArray1092 The output array will have the same density as the input.1093 The output fill value will be the result of applying the1094 mapping to ``self.fill_value``1095 Examples1096 --------1097 >>> arr = pd.SparseArray([0, 1, 2])1098 >>> arr.apply(lambda x: x + 10)1099 [10, 11, 12]1100 Fill: 101101 IntIndex1102 Indices: array([1, 2], dtype=int32)1103 >>> arr.apply({0: 10, 1: 11, 2: 12})1104 [10, 11, 12]1105 Fill: 101106 IntIndex1107 Indices: array([1, 2], dtype=int32)1108 >>> arr.apply(pd.Series([10, 11, 12], index=[0, 1, 2]))1109 [10, 11, 12]1110 Fill: 101111 IntIndex1112 Indices: array([1, 2], dtype=int32)1113 """1114 # this is used in apply.1115 # We get hit since we're an "is_extension_type" but regular extension1116 # types are not hit. This may be worth adding to the interface.1117 if isinstance(mapper, ABCSeries):1118 mapper = mapper.to_dict()1119 if isinstance(mapper, compat.Mapping):1120 fill_value = mapper.get(self.fill_value, self.fill_value)1121 sp_values = [mapper.get(x, None) for x in self.sp_values]1122 else:1123 fill_value = mapper(self.fill_value)1124 sp_values = [mapper(x) for x in self.sp_values]1125 return type(self)(sp_values, sparse_index=self.sp_index,1126 fill_value=fill_value)1127 def to_dense(self):1128 """1129 Convert SparseArray to a NumPy array.1130 Returns1131 -------1132 arr : NumPy array1133 """1134 return np.asarray(self, dtype=self.sp_values.dtype)1135 # TODO: Look into deprecating this in favor of `to_dense`.1136 get_values = to_dense1137 # ------------------------------------------------------------------------1138 # IO1139 # ------------------------------------------------------------------------1140 def __setstate__(self, state):1141 """Necessary for making this object picklable"""1142 if isinstance(state, tuple):1143 # Compat for pandas < 0.24.01144 nd_state, (fill_value, sp_index) = state1145 sparse_values = np.array([])1146 sparse_values.__setstate__(nd_state)1147 self._sparse_values = sparse_values1148 self._sparse_index = sp_index1149 self._dtype = SparseDtype(sparse_values.dtype, fill_value)1150 else:1151 self.__dict__.update(state)1152 def nonzero(self):1153 if self.fill_value == 0:1154 return self.sp_index.to_int_index().indices,1155 else:1156 return self.sp_index.to_int_index().indices[self.sp_values != 0],1157 # ------------------------------------------------------------------------1158 # Reductions1159 # ------------------------------------------------------------------------1160 def _reduce(self, name, skipna=True, **kwargs):1161 method = getattr(self, name, None)1162 if method is None:1163 raise TypeError("cannot perform {name} with type {dtype}".format(1164 name=name, dtype=self.dtype))1165 if skipna:1166 arr = self1167 else:1168 arr = self.dropna()1169 # we don't support these kwargs.1170 # They should only be present when called via pandas, so do it here.1171 # instead of in `any` / `all` (which will raise if they're present,1172 # thanks to nv.validate1173 kwargs.pop('filter_type', None)1174 kwargs.pop('numeric_only', None)1175 kwargs.pop('op', None)1176 return getattr(arr, name)(**kwargs)1177 def all(self, axis=None, *args, **kwargs):1178 """1179 Tests whether all elements evaluate True1180 Returns1181 -------1182 all : bool1183 See Also1184 --------1185 numpy.all1186 """1187 nv.validate_all(args, kwargs)1188 values = self.sp_values1189 if len(values) != len(self) and not np.all(self.fill_value):1190 return False1191 return values.all()1192 def any(self, axis=0, *args, **kwargs):1193 """1194 Tests whether at least one of elements evaluate True1195 Returns1196 -------1197 any : bool1198 See Also1199 --------1200 numpy.any1201 """1202 nv.validate_any(args, kwargs)1203 values = self.sp_values1204 if len(values) != len(self) and np.any(self.fill_value):1205 return True1206 return values.any().item()1207 def sum(self, axis=0, *args, **kwargs):1208 """1209 Sum of non-NA/null values1210 Returns1211 -------1212 sum : float1213 """1214 nv.validate_sum(args, kwargs)1215 valid_vals = self._valid_sp_values1216 sp_sum = valid_vals.sum()1217 if self._null_fill_value:1218 return sp_sum1219 else:1220 nsparse = self.sp_index.ngaps1221 return sp_sum + self.fill_value * nsparse1222 def cumsum(self, axis=0, *args, **kwargs):1223 """1224 Cumulative sum of non-NA/null values.1225 When performing the cumulative summation, any non-NA/null values will1226 be skipped. The resulting SparseArray will preserve the locations of1227 NaN values, but the fill value will be `np.nan` regardless.1228 Parameters1229 ----------1230 axis : int or None1231 Axis over which to perform the cumulative summation. If None,1232 perform cumulative summation over flattened array.1233 Returns1234 -------1235 cumsum : SparseArray1236 """1237 nv.validate_cumsum(args, kwargs)1238 if axis is not None and axis >= self.ndim: # Mimic ndarray behaviour.1239 raise ValueError("axis(={axis}) out of bounds".format(axis=axis))1240 if not self._null_fill_value:1241 return SparseArray(self.to_dense()).cumsum()1242 return SparseArray(self.sp_values.cumsum(), sparse_index=self.sp_index,1243 fill_value=self.fill_value)1244 def mean(self, axis=0, *args, **kwargs):1245 """1246 Mean of non-NA/null values1247 Returns1248 -------1249 mean : float1250 """1251 nv.validate_mean(args, kwargs)1252 valid_vals = self._valid_sp_values1253 sp_sum = valid_vals.sum()1254 ct = len(valid_vals)1255 if self._null_fill_value:1256 return sp_sum / ct1257 else:1258 nsparse = self.sp_index.ngaps1259 return (sp_sum + self.fill_value * nsparse) / (ct + nsparse)1260 def transpose(self, *axes):1261 """1262 Returns the SparseArray.1263 """1264 return self1265 @property1266 def T(self):1267 """1268 Returns the SparseArray.1269 """1270 return self1271 # ------------------------------------------------------------------------1272 # Ufuncs1273 # ------------------------------------------------------------------------1274 def __array_wrap__(self, array, context=None):1275 from pandas.core.dtypes.generic import ABCSparseSeries1276 ufunc, inputs, _ = context1277 inputs = tuple(x.values if isinstance(x, ABCSparseSeries) else x1278 for x in inputs)1279 return self.__array_ufunc__(ufunc, '__call__', *inputs)1280 _HANDLED_TYPES = (np.ndarray, numbers.Number)1281 def __array_ufunc__(self, ufunc, method, *inputs, **kwargs):1282 out = kwargs.get('out', ())1283 for x in inputs + out:1284 if not isinstance(x, self._HANDLED_TYPES + (SparseArray,)):1285 return NotImplemented1286 special = {'add', 'sub', 'mul', 'pow', 'mod', 'floordiv', 'truediv',1287 'divmod', 'eq', 'ne', 'lt', 'gt', 'le', 'ge', 'remainder'}1288 if compat.PY2:1289 special.add('div')1290 aliases = {1291 'subtract': 'sub',1292 'multiply': 'mul',1293 'floor_divide': 'floordiv',1294 'true_divide': 'truediv',1295 'power': 'pow',1296 'remainder': 'mod',1297 'divide': 'div',1298 'equal': 'eq',1299 'not_equal': 'ne',1300 'less': 'lt',1301 'less_equal': 'le',1302 'greater': 'gt',1303 'greater_equal': 'ge',1304 }1305 flipped = {1306 'lt': '__gt__',1307 'le': '__ge__',1308 'gt': '__lt__',1309 'ge': '__le__',1310 'eq': '__eq__',1311 'ne': '__ne__',1312 }1313 op_name = ufunc.__name__1314 op_name = aliases.get(op_name, op_name)1315 if op_name in special and kwargs.get('out') is None:1316 if isinstance(inputs[0], type(self)):1317 return getattr(self, '__{}__'.format(op_name))(inputs[1])1318 else:1319 name = flipped.get(op_name, '__r{}__'.format(op_name))1320 return getattr(self, name)(inputs[0])1321 if len(inputs) == 1:1322 # No alignment necessary.1323 sp_values = getattr(ufunc, method)(self.sp_values, **kwargs)1324 fill_value = getattr(ufunc, method)(self.fill_value, **kwargs)1325 return self._simple_new(sp_values,1326 self.sp_index,1327 SparseDtype(sp_values.dtype, fill_value))1328 result = getattr(ufunc, method)(*[np.asarray(x) for x in inputs],1329 **kwargs)1330 if out:1331 if len(out) == 1:1332 out = out[0]1333 return out1334 if type(result) is tuple:1335 return tuple(type(self)(x) for x in result)1336 elif method == 'at':1337 # no return value1338 return None1339 else:1340 return type(self)(result)1341 def __abs__(self):1342 return np.abs(self)1343 # ------------------------------------------------------------------------1344 # Ops1345 # ------------------------------------------------------------------------1346 @classmethod1347 def _create_unary_method(cls, op):1348 def sparse_unary_method(self):1349 fill_value = op(np.array(self.fill_value)).item()1350 values = op(self.sp_values)1351 dtype = SparseDtype(values.dtype, fill_value)1352 return cls._simple_new(values, self.sp_index, dtype)1353 name = '__{name}__'.format(name=op.__name__)1354 return compat.set_function_name(sparse_unary_method, name, cls)1355 @classmethod1356 def _create_arithmetic_method(cls, op):1357 def sparse_arithmetic_method(self, other):1358 op_name = op.__name__1359 if isinstance(other, (ABCSeries, ABCIndexClass)):1360 # Rely on pandas to dispatch to us.1361 return NotImplemented1362 if isinstance(other, SparseArray):1363 return _sparse_array_op(self, other, op, op_name)1364 elif is_scalar(other):1365 with np.errstate(all='ignore'):1366 fill = op(_get_fill(self), np.asarray(other))1367 result = op(self.sp_values, other)1368 if op_name == 'divmod':1369 left, right = result1370 lfill, rfill = fill1371 return (_wrap_result(op_name, left, self.sp_index, lfill),1372 _wrap_result(op_name, right, self.sp_index, rfill))1373 return _wrap_result(op_name, result, self.sp_index, fill)1374 else:1375 other = np.asarray(other)1376 with np.errstate(all='ignore'):1377 # TODO: delete sparse stuff in core/ops.py1378 # TODO: look into _wrap_result1379 if len(self) != len(other):1380 raise AssertionError(...
0002_auto_20210108_1807.py
Source:0002_auto_20210108_1807.py
1# Generated by Django 3.1.4 on 2021-01-08 18:072from django.db import migrations, models3class Migration(migrations.Migration):4 dependencies = [5 ('module', '0001_initial'),6 ]7 operations = [8 migrations.RemoveField(9 model_name='module',10 name='icon',11 ),12 migrations.AddField(13 model_name='module',14 name='icon_name',15 field=models.CharField(blank=True, choices=[('house-door.svg', 'house-door.svg'), ('graph-up.svg', 'graph-up.svg'), ('sort-alpha-up-alt.svg', 'sort-alpha-up-alt.svg'), ('eye-slash-fill.svg', 'eye-slash-fill.svg'), ('arrows-angle-expand.svg', 'arrows-angle-expand.svg'), ('layout-text-window.svg', 'layout-text-window.svg'), ('textarea.svg', 'textarea.svg'), ('slack.svg', 'slack.svg'), ('tv-fill.svg', 'tv-fill.svg'), ('hash.svg', 'hash.svg'), ('file-medical-fill.svg', 'file-medical-fill.svg'), ('calculator-fill.svg', 'calculator-fill.svg'), ('twitter.svg', 'twitter.svg'), ('bookmark-heart.svg', 'bookmark-heart.svg'), ('star.svg', 'star.svg'), ('at.svg', 'at.svg'), ('type-italic.svg', 'type-italic.svg'), ('hand-index.svg', 'hand-index.svg'), ('volume-off.svg', 'volume-off.svg'), ('telephone-plus-fill.svg', 'telephone-plus-fill.svg'), ('arrow-down-left.svg', 'arrow-down-left.svg'), ('hand-index-thumb.svg', 'hand-index-thumb.svg'), ('calendar2-range.svg', 'calendar2-range.svg'), ('dice-4.svg', 'dice-4.svg'), ('inboxes-fill.svg', 'inboxes-fill.svg'), ('bag-x-fill.svg', 'bag-x-fill.svg'), ('caret-down-square-fill.svg', 'caret-down-square-fill.svg'), ('thermometer-half.svg', 'thermometer-half.svg'), ('calendar2-day-fill.svg', 'calendar2-day-fill.svg'), ('alt.svg', 'alt.svg'), ('heart-half.svg', 'heart-half.svg'), ('pause-btn.svg', 'pause-btn.svg'), ('plus-circle-fill.svg', 'plus-circle-fill.svg'), ('mic.svg', 'mic.svg'), ('person-lines-fill.svg', 'person-lines-fill.svg'), ('markdown.svg', 'markdown.svg'), ('shield-minus.svg', 'shield-minus.svg'), ('file-earmark-richtext-fill.svg', 'file-earmark-richtext-fill.svg'), ('trophy-fill.svg', 'trophy-fill.svg'), ('hdd.svg', 'hdd.svg'), ('shop.svg', 'shop.svg'), ('skip-backward-circle.svg', 'skip-backward-circle.svg'), ('bar-chart.svg', 'bar-chart.svg'), ('phone-landscape.svg', 'phone-landscape.svg'), ('suit-spade.svg', 'suit-spade.svg'), ('wrench.svg', 'wrench.svg'), ('badge-vo.svg', 'badge-vo.svg'), ('house-door-fill.svg', 'house-door-fill.svg'), ('sort-down.svg', 'sort-down.svg'), ('plus-circle.svg', 'plus-circle.svg'), ('skip-end-circle.svg', 'skip-end-circle.svg'), ('inboxes.svg', 'inboxes.svg'), ('envelope-open-fill.svg', 'envelope-open-fill.svg'), ('file-arrow-down.svg', 'file-arrow-down.svg'), ('file-x.svg', 'file-x.svg'), ('record-btn.svg', 'record-btn.svg'), ('basket.svg', 'basket.svg'), ('award-fill.svg', 'award-fill.svg'), ('badge-8k.svg', 'badge-8k.svg'), ('flower3.svg', 'flower3.svg'), ('skip-start-circle-fill.svg', 'skip-start-circle-fill.svg'), ('voicemail.svg', 'voicemail.svg'), ('arrow-up-down.svg', 'arrow-up-down.svg'), ('ui-checks-grid.svg', 'ui-checks-grid.svg'), ('upc.svg', 'upc.svg'), ('tablet.svg', 'tablet.svg'), ('bag-plus.svg', 'bag-plus.svg'), ('calendar3.svg', 'calendar3.svg'), ('calendar2-x-fill.svg', 'calendar2-x-fill.svg'), ('arrow-up-left-circle.svg', 'arrow-up-left-circle.svg'), ('chat-square-text.svg', 'chat-square-text.svg'), ('toggle-on.svg', 'toggle-on.svg'), ('patch-plus.svg', 'patch-plus.svg'), ('peace.svg', 'peace.svg'), ('file-word.svg', 'file-word.svg'), ('chat-right-quote.svg', 'chat-right-quote.svg'), ('file-earmark-person.svg', 'file-earmark-person.svg'), ('bell.svg', 'bell.svg'), ('share.svg', 'share.svg'), ('easel.svg', 'easel.svg'), ('layout-text-window-reverse.svg', 'layout-text-window-reverse.svg'), ('file-bar-graph-fill.svg', 'file-bar-graph-fill.svg'), ('pentagon.svg', 'pentagon.svg'), ('table.svg', 'table.svg'), ('patch-question.svg', 'patch-question.svg'), ('gem.svg', 'gem.svg'), ('person-fill.svg', 'person-fill.svg'), ('file-earmark-excel-fill.svg', 'file-earmark-excel-fill.svg'), ('bookmark-star-fill.svg', 'bookmark-star-fill.svg'), ('option.svg', 'option.svg'), ('stop-circle.svg', 'stop-circle.svg'), ('layout-sidebar-inset-reverse.svg', 'layout-sidebar-inset-reverse.svg'), ('bag-check.svg', 'bag-check.svg'), ('badge-cc.svg', 'badge-cc.svg'), ('octagon-fill.svg', 'octagon-fill.svg'), ('pause-circle.svg', 'pause-circle.svg'), ('arrow-down-square.svg', 'arrow-down-square.svg'), ('hdd-network-fill.svg', 'hdd-network-fill.svg'), ('chevron-right.svg', 'chevron-right.svg'), ('peace-fill.svg', 'peace-fill.svg'), ('journal-bookmark-fill.svg', 'journal-bookmark-fill.svg'), ('collection.svg', 'collection.svg'), ('headphones.svg', 'headphones.svg'), ('chat-square.svg', 'chat-square.svg'), ('filter-square.svg', 'filter-square.svg'), ('blockquote-left.svg', 'blockquote-left.svg'), ('folder-fill.svg', 'folder-fill.svg'), ('crop.svg', 'crop.svg'), ('play-circle.svg', 'play-circle.svg'), ('record-circle-fill.svg', 'record-circle-fill.svg'), ('calendar-week.svg', 'calendar-week.svg'), ('cloud.svg', 'cloud.svg'), ('egg.svg', 'egg.svg'), ('ui-radios-grid.svg', 'ui-radios-grid.svg'), ('check2-circle.svg', 'check2-circle.svg'), ('badge-4k-fill.svg', 'badge-4k-fill.svg'), ('arrow-left-square.svg', 'arrow-left-square.svg'), ('bag-plus-fill.svg', 'bag-plus-fill.svg'), ('binoculars-fill.svg', 'binoculars-fill.svg'), ('droplet-half.svg', 'droplet-half.svg'), ('calendar-event.svg', 'calendar-event.svg'), ('emoji-expressionless.svg', 'emoji-expressionless.svg'), ('input-cursor.svg', 'input-cursor.svg'), ('check-square-fill.svg', 'check-square-fill.svg'), ('reply.svg', 'reply.svg'), ('door-open.svg', 'door-open.svg'), ('arrow-up-right-square.svg', 'arrow-up-right-square.svg'), ('intersect.svg', 'intersect.svg'), ('basket3.svg', 'basket3.svg'), ('pentagon-half.svg', 'pentagon-half.svg'), ('arrow-down-right-square-fill.svg', 'arrow-down-right-square-fill.svg'), ('check-box.svg', 'check-box.svg'), ('kanban-fill.svg', 'kanban-fill.svg'), ('camera-fill.svg', 'camera-fill.svg'), ('badge-hd.svg', 'badge-hd.svg'), ('stickies.svg', 'stickies.svg'), ('vector-pen.svg', 'vector-pen.svg'), ('map.svg', 'map.svg'), ('layers-half.svg', 'layers-half.svg'), ('pencil-square.svg', 'pencil-square.svg'), ('file-earmark-zip-fill.svg', 'file-earmark-zip-fill.svg'), ('pause-fill.svg', 'pause-fill.svg'), ('reply-fill.svg', 'reply-fill.svg'), ('toggles2.svg', 'toggles2.svg'), ('fullscreen.svg', 'fullscreen.svg'), ('music-note.svg', 'music-note.svg'), ('journal-text.svg', 'journal-text.svg'), ('x-diamond.svg', 'x-diamond.svg'), ('node-minus-fill.svg', 'node-minus-fill.svg'), ('file-arrow-down-fill.svg', 'file-arrow-down-fill.svg'), ('laptop-fill.svg', 'laptop-fill.svg'), ('chevron-double-down.svg', 'chevron-double-down.svg'), ('heart-fill.svg', 'heart-fill.svg'), ('skip-end-btn-fill.svg', 'skip-end-btn-fill.svg'), ('record2.svg', 'record2.svg'), ('chevron-double-left.svg', 'chevron-double-left.svg'), ('bookmark-check-fill.svg', 'bookmark-check-fill.svg'), ('file-lock2.svg', 'file-lock2.svg'), ('stop-fill.svg', 'stop-fill.svg'), ('emoji-heart-eyes.svg', 'emoji-heart-eyes.svg'), ('arrow-down-left-circle-fill.svg', 'arrow-down-left-circle-fill.svg'), ('skip-forward-fill.svg', 'skip-forward-fill.svg'), ('pencil-fill.svg', 'pencil-fill.svg'), ('clock.svg', 'clock.svg'), ('clipboard-data.svg', 'clipboard-data.svg'), ('cart2.svg', 'cart2.svg'), ('volume-up-fill.svg', 'volume-up-fill.svg'), ('arrow-down-right.svg', 'arrow-down-right.svg'), ('calendar3-week.svg', 'calendar3-week.svg'), ('slash-square-fill.svg', 'slash-square-fill.svg'), ('reception-0.svg', 'reception-0.svg'), ('file-play.svg', 'file-play.svg'), ('collection-fill.svg', 'collection-fill.svg'), ('check-all.svg', 'check-all.svg'), ('wallet2.svg', 'wallet2.svg'), ('text-indent-left.svg', 'text-indent-left.svg'), ('building.svg', 'building.svg'), ('dice-2.svg', 'dice-2.svg'), ('door-closed-fill.svg', 'door-closed-fill.svg'), ('arrow-up-square.svg', 'arrow-up-square.svg'), ('emoji-expressionless-fill.svg', 'emoji-expressionless-fill.svg'), ('file-earmark-plus-fill.svg', 'file-earmark-plus-fill.svg'), ('minecart.svg', 'minecart.svg'), ('chat-left-dots-fill.svg', 'chat-left-dots-fill.svg'), ('record2-fill.svg', 'record2-fill.svg'), ('search.svg', 'search.svg'), ('watch.svg', 'watch.svg'), ('calendar3-event-fill.svg', 'calendar3-event-fill.svg'), ('journal-x.svg', 'journal-x.svg'), ('check.svg', 'check.svg'), ('file-earmark-binary-fill.svg', 'file-earmark-binary-fill.svg'), ('arrow-right-short.svg', 'arrow-right-short.svg'), ('file-earmark-minus-fill.svg', 'file-earmark-minus-fill.svg'), ('chevron-compact-left.svg', 'chevron-compact-left.svg'), ('arrow-up-circle-fill.svg', 'arrow-up-circle-fill.svg'), ('cart-plus.svg', 'cart-plus.svg'), ('chevron-left.svg', 'chevron-left.svg'), ('diamond.svg', 'diamond.svg'), ('arrow-left-square-fill.svg', 'arrow-left-square-fill.svg'), ('bell-fill.svg', 'bell-fill.svg'), ('cloud-minus-fill.svg', 'cloud-minus-fill.svg'), ('record-circle.svg', 'record-circle.svg'), ('exclamation-square-fill.svg', 'exclamation-square-fill.svg'), ('emoji-laughing-fill.svg', 'emoji-laughing-fill.svg'), ('emoji-dizzy-fill.svg', 'emoji-dizzy-fill.svg'), ('layout-wtf.svg', 'layout-wtf.svg'), ('file-post.svg', 'file-post.svg'), ('file.svg', 'file.svg'), ('check-circle-fill.svg', 'check-circle-fill.svg'), ('folder-check.svg', 'folder-check.svg'), ('question-diamond-fill.svg', 'question-diamond-fill.svg'), ('toggles.svg', 'toggles.svg'), ('columns.svg', 'columns.svg'), ('rss-fill.svg', 'rss-fill.svg'), ('arrows-collapse.svg', 'arrows-collapse.svg'), ('cloud-check-fill.svg', 'cloud-check-fill.svg'), ('box-arrow-in-up-left.svg', 'box-arrow-in-up-left.svg'), ('triangle.svg', 'triangle.svg'), ('plus-square-fill.svg', 'plus-square-fill.svg'), ('person-badge-fill.svg', 'person-badge-fill.svg'), ('person-bounding-box.svg', 'person-bounding-box.svg'), ('life-preserver.svg', 'life-preserver.svg'), ('input-cursor-text.svg', 'input-cursor-text.svg'), ('calendar2-month-fill.svg', 'calendar2-month-fill.svg'), ('columns-gap.svg', 'columns-gap.svg'), ('slash-circle-fill.svg', 'slash-circle-fill.svg'), ('people-fill.svg', 'people-fill.svg'), ('shield-lock.svg', 'shield-lock.svg'), ('file-arrow-up-fill.svg', 'file-arrow-up-fill.svg'), ('book.svg', 'book.svg'), ('cloud-plus.svg', 'cloud-plus.svg'), ('calendar-check-fill.svg', 'calendar-check-fill.svg'), ('calendar-x.svg', 'calendar-x.svg'), ('image-fill.svg', 'image-fill.svg'), ('emoji-frown-fill.svg', 'emoji-frown-fill.svg'), ('calendar-date-fill.svg', 'calendar-date-fill.svg'), ('broadcast.svg', 'broadcast.svg'), ('arrow-down-left-circle.svg', 'arrow-down-left-circle.svg'), ('calendar4-week.svg', 'calendar4-week.svg'), ('headset.svg', 'headset.svg'), ('flag.svg', 'flag.svg'), ('wifi-2.svg', 'wifi-2.svg'), ('emoji-smile-upside-down.svg', 'emoji-smile-upside-down.svg'), ('patch-question-fll.svg', 'patch-question-fll.svg'), ('emoji-sunglasses-fill.svg', 'emoji-sunglasses-fill.svg'), ('minecart-loaded.svg', 'minecart-loaded.svg'), ('shuffle.svg', 'shuffle.svg'), ('hand-thumbs-down.svg', 'hand-thumbs-down.svg'), ('file-medical.svg', 'file-medical.svg'), ('file-check.svg', 'file-check.svg'), ('triangle-fill.svg', 'triangle-fill.svg'), ('person-plus-fill.svg', 'person-plus-fill.svg'), ('bricks.svg', 'bricks.svg'), ('type-h1.svg', 'type-h1.svg'), ('text-center.svg', 'text-center.svg'), ('calendar-range.svg', 'calendar-range.svg'), ('funnel.svg', 'funnel.svg'), ('lamp-fill.svg', 'lamp-fill.svg'), ('distribute-horizontal.svg', 'distribute-horizontal.svg'), ('gift-fill.svg', 'gift-fill.svg'), ('diagram-2.svg', 'diagram-2.svg'), ('key.svg', 'key.svg'), ('shield-x.svg', 'shield-x.svg'), ('brightness-low-fill.svg', 'brightness-low-fill.svg'), ('calendar2-week-fill.svg', 'calendar2-week-fill.svg'), ('file-earmark-ruled-fill.svg', 'file-earmark-ruled-fill.svg'), ('envelope.svg', 'envelope.svg'), ('cloud-download.svg', 'cloud-download.svg'), ('file-image.svg', 'file-image.svg'), ('chevron-expand.svg', 'chevron-expand.svg'), ('border-style.svg', 'border-style.svg'), ('compass-fill.svg', 'compass-fill.svg'), ('box-seam.svg', 'box-seam.svg'), ('credit-card-2-front.svg', 'credit-card-2-front.svg'), ('bookmark-fill.svg', 'bookmark-fill.svg'), ('file-person-fill.svg', 'file-person-fill.svg'), ('bounding-box.svg', 'bounding-box.svg'), ('type-strikethrough.svg', 'type-strikethrough.svg'), ('rss.svg', 'rss.svg'), ('laptop.svg', 'laptop.svg'), ('align-bottom.svg', 'align-bottom.svg'), ('chevron-bar-up.svg', 'chevron-bar-up.svg'), ('list-stars.svg', 'list-stars.svg'), ('heptagon.svg', 'heptagon.svg'), ('vinyl.svg', 'vinyl.svg'), ('file-excel-fill.svg', 'file-excel-fill.svg'), ('file-slides.svg', 'file-slides.svg'), ('controller.svg', 'controller.svg'), ('hexagon-fill.svg', 'hexagon-fill.svg'), ('chevron-double-up.svg', 'chevron-double-up.svg'), ('caret-left-fill.svg', 'caret-left-fill.svg'), ('box-arrow-up-left.svg', 'box-arrow-up-left.svg'), ('trash2.svg', 'trash2.svg'), ('hexagon.svg', 'hexagon.svg'), ('cloud-arrow-down-fill.svg', 'cloud-arrow-down-fill.svg'), ('file-earmark-arrow-up-fill.svg', 'file-earmark-arrow-up-fill.svg'), ('grid-3x3-gap.svg', 'grid-3x3-gap.svg'), ('flower1.svg', 'flower1.svg'), ('file-earmark-medical.svg', 'file-earmark-medical.svg'), ('file-earmark-easel-fill.svg', 'file-earmark-easel-fill.svg'), ('stop.svg', 'stop.svg'), ('slash-square.svg', 'slash-square.svg'), ('question-circle.svg', 'question-circle.svg'), ('align-start.svg', 'align-start.svg'), ('chat-square-text-fill.svg', 'chat-square-text-fill.svg'), ('calendar3-week-fill.svg', 'calendar3-week-fill.svg'), ('file-code-fill.svg', 'file-code-fill.svg'), ('record.svg', 'record.svg'), ('cloud-slash.svg', 'cloud-slash.svg'), ('newspaper.svg', 'newspaper.svg'), ('cursor.svg', 'cursor.svg'), ('arrow-right.svg', 'arrow-right.svg'), ('file-text-fill.svg', 'file-text-fill.svg'), ('file-earmark-richtext.svg', 'file-earmark-richtext.svg'), ('sim-fill.svg', 'sim-fill.svg'), ('file-easel-fill.svg', 'file-easel-fill.svg'), ('file-earmark-spreadsheet.svg', 'file-earmark-spreadsheet.svg'), ('clock-fill.svg', 'clock-fill.svg'), ('reception-3.svg', 'reception-3.svg'), ('disc-fill.svg', 'disc-fill.svg'), ('file-earmark-music-fill.svg', 'file-earmark-music-fill.svg'), ('layout-sidebar.svg', 'layout-sidebar.svg'), ('menu-button-wide.svg', 'menu-button-wide.svg'), ('back.svg', 'back.svg'), ('node-plus-fill.svg', 'node-plus-fill.svg'), ('file-arrow-up.svg', 'file-arrow-up.svg'), ('caret-left.svg', 'caret-left.svg'), ('skip-start-btn.svg', 'skip-start-btn.svg'), ('file-text.svg', 'file-text.svg'), ('chat-right.svg', 'chat-right.svg'), ('file-earmark-image-fill.svg', 'file-earmark-image-fill.svg'), ('cart-check.svg', 'cart-check.svg'), ('key-fill.svg', 'key-fill.svg'), ('circle-fill.svg', 'circle-fill.svg'), ('cloud-minus.svg', 'cloud-minus.svg'), ('volume-mute.svg', 'volume-mute.svg'), ('reply-all-fill.svg', 'reply-all-fill.svg'), ('chat-left-quote-fill.svg', 'chat-left-quote-fill.svg'), ('file-image-fill.svg', 'file-image-fill.svg'), ('box-arrow-down-right.svg', 'box-arrow-down-right.svg'), ('file-earmark-text.svg', 'file-earmark-text.svg'), ('asterisk.svg', 'asterisk.svg'), ('align-end.svg', 'align-end.svg'), ('shift-fill.svg', 'shift-fill.svg'), ('file-earmark-x-fill.svg', 'file-earmark-x-fill.svg'), ('telephone-minus.svg', 'telephone-minus.svg'), ('arrow-bar-right.svg', 'arrow-bar-right.svg'), ('file-earmark-arrow-down.svg', 'file-earmark-arrow-down.svg'), ('arrow-bar-left.svg', 'arrow-bar-left.svg'), ('box-arrow-up.svg', 'box-arrow-up.svg'), ('emoji-smile-upside-down-fill.svg', 'emoji-smile-upside-down-fill.svg'), ('calendar2-range-fill.svg', 'calendar2-range-fill.svg'), ('receipt.svg', 'receipt.svg'), ('calendar-day.svg', 'calendar-day.svg'), ('play-btn.svg', 'play-btn.svg'), ('toggle2-on.svg', 'toggle2-on.svg'), ('brightness-high.svg', 'brightness-high.svg'), ('battery-half.svg', 'battery-half.svg'), ('arrow-up-right-circle.svg', 'arrow-up-right-circle.svg'), ('square.svg', 'square.svg'), ('file-earmark-ruled.svg', 'file-earmark-ruled.svg'), ('chat-left-quote.svg', 'chat-left-quote.svg'), ('circle-square.svg', 'circle-square.svg'), ('calculator.svg', 'calculator.svg'), ('aspect-ratio-fill.svg', 'aspect-ratio-fill.svg'), ('emoji-dizzy.svg', 'emoji-dizzy.svg'), ('sort-numeric-up.svg', 'sort-numeric-up.svg'), ('star-half.svg', 'star-half.svg'), ('card-heading.svg', 'card-heading.svg'), ('exclamation-triangle-fill.svg', 'exclamation-triangle-fill.svg'), ('caret-up.svg', 'caret-up.svg'), ('chat-square-dots-fill.svg', 'chat-square-dots-fill.svg'), ('calendar-check.svg', 'calendar-check.svg'), ('stop-btn.svg', 'stop-btn.svg'), ('justify.svg', 'justify.svg'), ('brightness-alt-low-fill.svg', 'brightness-alt-low-fill.svg'), ('sort-numeric-down-alt.svg', 'sort-numeric-down-alt.svg'), ('unlock-fill.svg', 'unlock-fill.svg'), ('cup.svg', 'cup.svg'), ('patch-minus-fll.svg', 'patch-minus-fll.svg'), ('people-circle.svg', 'people-circle.svg'), ('suit-diamond-fill.svg', 'suit-diamond-fill.svg'), ('badge-tm.svg', 'badge-tm.svg'), ('outlet.svg', 'outlet.svg'), ('calendar-month-fill.svg', 'calendar-month-fill.svg'), ('dash-square.svg', 'dash-square.svg'), ('capslock-fill.svg', 'capslock-fill.svg'), ('folder.svg', 'folder.svg'), ('person-check.svg', 'person-check.svg'), ('ui-checks.svg', 'ui-checks.svg'), ('arrow-up-left.svg', 'arrow-up-left.svg'), ('mailbox2.svg', 'mailbox2.svg'), ('flag-fill.svg', 'flag-fill.svg'), ('x-octagon.svg', 'x-octagon.svg'), ('filter-right.svg', 'filter-right.svg'), ('braces.svg', 'braces.svg'), ('soundwave.svg', 'soundwave.svg'), ('signpost-split-fill.svg', 'signpost-split-fill.svg'), ('music-player.svg', 'music-player.svg'), ('file-spreadsheet-fill.svg', 'file-spreadsheet-fill.svg'), ('three-dots.svg', 'three-dots.svg'), ('phone-fill.svg', 'phone-fill.svg'), ('chat-square-dots.svg', 'chat-square-dots.svg'), ('suit-spade-fill.svg', 'suit-spade-fill.svg'), ('camera-video.svg', 'camera-video.svg'), ('bookmarks-fill.svg', 'bookmarks-fill.svg'), ('heart.svg', 'heart.svg'), ('credit-card-2-back.svg', 'credit-card-2-back.svg'), ('question-diamond.svg', 'question-diamond.svg'), ('graph-down.svg', 'graph-down.svg'), ('menu-button-wide-fill.svg', 'menu-button-wide-fill.svg'), ('upload.svg', 'upload.svg'), ('badge-tm-fill.svg', 'badge-tm-fill.svg'), ('lock-fill.svg', 'lock-fill.svg'), ('calendar3-fill.svg', 'calendar3-fill.svg'), ('tree-fill.svg', 'tree-fill.svg'), ('mouse3.svg', 'mouse3.svg'), ('chat-left-dots.svg', 'chat-left-dots.svg'), ('calendar-x-fill.svg', 'calendar-x-fill.svg'), ('type.svg', 'type.svg'), ('people.svg', 'people.svg'), ('reception-2.svg', 'reception-2.svg'), ('layers.svg', 'layers.svg'), ('signpost-fill.svg', 'signpost-fill.svg'), ('skip-forward-circle-fill.svg', 'skip-forward-circle-fill.svg'), ('printer.svg', 'printer.svg'), ('phone.svg', 'phone.svg'), ('square-half.svg', 'square-half.svg'), ('emoji-wink-fill.svg', 'emoji-wink-fill.svg'), ('code-slash.svg', 'code-slash.svg'), ('chat-right-dots-fill.svg', 'chat-right-dots-fill.svg'), ('hourglass.svg', 'hourglass.svg'), ('bicycle.svg', 'bicycle.svg'), ('calendar2-date-fill.svg', 'calendar2-date-fill.svg'), ('text-right.svg', 'text-right.svg'), ('layout-text-sidebar-reverse.svg', 'layout-text-sidebar-reverse.svg'), ('mouse.svg', 'mouse.svg'), ('tags-fill.svg', 'tags-fill.svg'), ('bookmark-plus-fill.svg', 'bookmark-plus-fill.svg'), ('bookmark-x.svg', 'bookmark-x.svg'), ('forward-fill.svg', 'forward-fill.svg'), ('play.svg', 'play.svg'), ('thermometer.svg', 'thermometer.svg'), ('geo-alt-fill.svg', 'geo-alt-fill.svg'), ('puzzle.svg', 'puzzle.svg'), ('chevron-bar-expand.svg', 'chevron-bar-expand.svg'), ('tree.svg', 'tree.svg'), ('arrow-down-up.svg', 'arrow-down-up.svg'), ('tablet-landscape.svg', 'tablet-landscape.svg'), ('nut.svg', 'nut.svg'), ('zoom-in.svg', 'zoom-in.svg'), ('bar-chart-steps.svg', 'bar-chart-steps.svg'), ('backspace-reverse.svg', 'backspace-reverse.svg'), ('grid-fill.svg', 'grid-fill.svg'), ('file-richtext-fill.svg', 'file-richtext-fill.svg'), ('arrow-up-left-square.svg', 'arrow-up-left-square.svg'), ('file-earmark-play.svg', 'file-earmark-play.svg'), ('link-45deg.svg', 'link-45deg.svg'), ('terminal.svg', 'terminal.svg'), ('handbag-fill.svg', 'handbag-fill.svg'), ('calendar4-range.svg', 'calendar4-range.svg'), ('file-diff.svg', 'file-diff.svg'), ('calendar2-day.svg', 'calendar2-day.svg'), ('info-square.svg', 'info-square.svg'), ('file-word-fill.svg', 'file-word-fill.svg'), ('x-circle.svg', 'x-circle.svg'), ('twitch.svg', 'twitch.svg'), ('person-circle.svg', 'person-circle.svg'), ('file-zip.svg', 'file-zip.svg'), ('geo-alt.svg', 'geo-alt.svg'), ('file-earmark-word.svg', 'file-earmark-word.svg'), ('patch-minus.svg', 'patch-minus.svg'), ('spellcheck.svg', 'spellcheck.svg'), ('hourglass-bottom.svg', 'hourglass-bottom.svg'), ('disc.svg', 'disc.svg'), ('chat-square-quote-fill.svg', 'chat-square-quote-fill.svg'), ('file-earmark-diff-fill.svg', 'file-earmark-diff-fill.svg'), ('box-arrow-in-right.svg', 'box-arrow-in-right.svg'), ('shield-fill-minus.svg', 'shield-fill-minus.svg'), ('pie-chart.svg', 'pie-chart.svg'), ('info.svg', 'info.svg'), ('files.svg', 'files.svg'), ('x-square-fill.svg', 'x-square-fill.svg'), ('file-lock2-fill.svg', 'file-lock2-fill.svg'), ('chat-square-fill.svg', 'chat-square-fill.svg'), ('skip-start-fill.svg', 'skip-start-fill.svg'), ('bezier.svg', 'bezier.svg'), ('phone-vibrate.svg', 'phone-vibrate.svg'), ('calendar.svg', 'calendar.svg'), ('shield-lock-fill.svg', 'shield-lock-fill.svg'), ('patch-check-fll.svg', 'patch-check-fll.svg'), ('reception-1.svg', 'reception-1.svg'), ('bar-chart-line-fill.svg', 'bar-chart-line-fill.svg'), ('arrow-down-circle-fill.svg', 'arrow-down-circle-fill.svg'), ('lock.svg', 'lock.svg'), ('arrow-left-right.svg', 'arrow-left-right.svg'), ('arrow-up-circle.svg', 'arrow-up-circle.svg'), ('mic-mute.svg', 'mic-mute.svg'), ('lamp.svg', 'lamp.svg'), ('skip-backward-circle-fill.svg', 'skip-backward-circle-fill.svg'), ('emoji-sunglasses.svg', 'emoji-sunglasses.svg'), ('list.svg', 'list.svg'), ('instagram.svg', 'instagram.svg'), ('bootstrap-icons.svg', 'bootstrap-icons.svg'), ('dice-6-fill.svg', 'dice-6-fill.svg'), ('file-check-fill.svg', 'file-check-fill.svg'), ('arrow-bar-up.svg', 'arrow-bar-up.svg'), ('grid-1x2-fill.svg', 'grid-1x2-fill.svg'), ('dice-5.svg', 'dice-5.svg'), ('cloud-plus-fill.svg', 'cloud-plus-fill.svg'), ('file-earmark-check.svg', 'file-earmark-check.svg'), ('box-arrow-up-right.svg', 'box-arrow-up-right.svg'), ('journal-code.svg', 'journal-code.svg'), ('bookmarks.svg', 'bookmarks.svg'), ('pie-chart-fill.svg', 'pie-chart-fill.svg'), ('folder-symlink-fill.svg', 'folder-symlink-fill.svg'), ('stopwatch.svg', 'stopwatch.svg'), ('sort-alpha-down-alt.svg', 'sort-alpha-down-alt.svg'), ('shield-fill-check.svg', 'shield-fill-check.svg'), ('exclamation-square.svg', 'exclamation-square.svg'), ('door-closed.svg', 'door-closed.svg'), ('filter-left.svg', 'filter-left.svg'), ('calendar-plus.svg', 'calendar-plus.svg'), ('wifi-1.svg', 'wifi-1.svg'), ('book-half.svg', 'book-half.svg'), ('discord.svg', 'discord.svg'), ('box.svg', 'box.svg'), ('skip-backward-fill.svg', 'skip-backward-fill.svg'), ('file-earmark-image.svg', 'file-earmark-image.svg'), ('battery-full.svg', 'battery-full.svg'), ('file-earmark-code-fill.svg', 'file-earmark-code-fill.svg'), ('question.svg', 'question.svg'), ('journal-medical.svg', 'journal-medical.svg'), ('forward.svg', 'forward.svg'), ('shield-check.svg', 'shield-check.svg'), ('calendar2-event-fill.svg', 'calendar2-event-fill.svg'), ('folder-symlink.svg', 'folder-symlink.svg'), ('pen.svg', 'pen.svg'), ('box-arrow-left.svg', 'box-arrow-left.svg'), ('easel-fill.svg', 'easel-fill.svg'), ('hdd-rack-fill.svg', 'hdd-rack-fill.svg'), ('info-square-fill.svg', 'info-square-fill.svg'), ('chevron-bar-down.svg', 'chevron-bar-down.svg'), ('blockquote-right.svg', 'blockquote-right.svg'), ('toggle-off.svg', 'toggle-off.svg'), ('view-stacked.svg', 'view-stacked.svg'), ('display-fill.svg', 'display-fill.svg'), ('telephone-x.svg', 'telephone-x.svg'), ('file-richtext.svg', 'file-richtext.svg'), ('circle-half.svg', 'circle-half.svg'), ('archive.svg', 'archive.svg'), ('exclamation-diamond-fill.svg', 'exclamation-diamond-fill.svg'), ('chat-square-quote.svg', 'chat-square-quote.svg'), ('caret-up-square-fill.svg', 'caret-up-square-fill.svg'), ('dice-3-fill.svg', 'dice-3-fill.svg'), ('chat-right-dots.svg', 'chat-right-dots.svg'), ('journal-check.svg', 'journal-check.svg'), ('envelope-fill.svg', 'envelope-fill.svg'), ('sort-down-alt.svg', 'sort-down-alt.svg'), ('list-ul.svg', 'list-ul.svg'), ('calendar-plus-fill.svg', 'calendar-plus-fill.svg'), ('subtract.svg', 'subtract.svg'), ('chat-quote-fill.svg', 'chat-quote-fill.svg'), ('person-badge.svg', 'person-badge.svg'), ('arrow-up.svg', 'arrow-up.svg'), ('cart3.svg', 'cart3.svg'), ('card-text.svg', 'card-text.svg'), ('cursor-fill.svg', 'cursor-fill.svg'), ('calendar2-check-fill.svg', 'calendar2-check-fill.svg'), ('square-fill.svg', 'square-fill.svg'), ('fullscreen-exit.svg', 'fullscreen-exit.svg'), ('bucket-fill.svg', 'bucket-fill.svg'), ('suit-heart-fill.svg', 'suit-heart-fill.svg'), ('file-bar-graph.svg', 'file-bar-graph.svg'), ('caret-left-square.svg', 'caret-left-square.svg'), ('bookshelf.svg', 'bookshelf.svg'), ('flower2.svg', 'flower2.svg'), ('cone.svg', 'cone.svg'), ('arrow-up-right.svg', 'arrow-up-right.svg'), ('diamond-fill.svg', 'diamond-fill.svg'), ('command.svg', 'command.svg'), ('chat-dots.svg', 'chat-dots.svg'), ('shield-plus.svg', 'shield-plus.svg'), ('bookmark-plus.svg', 'bookmark-plus.svg'), ('calendar3-event.svg', 'calendar3-event.svg'), ('chat-right-fill.svg', 'chat-right-fill.svg'), ('badge-hd-fill.svg', 'badge-hd-fill.svg'), ('trophy.svg', 'trophy.svg'), ('envelope-open.svg', 'envelope-open.svg'), ('clipboard-plus.svg', 'clipboard-plus.svg'), ('file-plus.svg', 'file-plus.svg'), ('gear.svg', 'gear.svg'), ('calendar-date.svg', 'calendar-date.svg'), ('suit-club.svg', 'suit-club.svg'), ('calendar2-date.svg', 'calendar2-date.svg'), ('hexagon-half.svg', 'hexagon-half.svg'), ('emoji-neutral-fill.svg', 'emoji-neutral-fill.svg'), ('ui-radios.svg', 'ui-radios.svg'), ('menu-app-fill.svg', 'menu-app-fill.svg'), ('telephone-forward-fill.svg', 'telephone-forward-fill.svg'), ('justify-left.svg', 'justify-left.svg'), ('chevron-compact-up.svg', 'chevron-compact-up.svg'), ('triangle-half.svg', 'triangle-half.svg'), ('cash.svg', 'cash.svg'), ('cloud-slash-fill.svg', 'cloud-slash-fill.svg'), ('arrow-down-right-square.svg', 'arrow-down-right-square.svg'), ('arrow-up-right-square-fill.svg', 'arrow-up-right-square-fill.svg'), ('person-square.svg', 'person-square.svg'), ('file-earmark-text-fill.svg', 'file-earmark-text-fill.svg'), ('camera2.svg', 'camera2.svg'), ('arrow-down-left-square-fill.svg', 'arrow-down-left-square-fill.svg'), ('files-alt.svg', 'files-alt.svg'), ('egg-fill.svg', 'egg-fill.svg'), ('box-arrow-right.svg', 'box-arrow-right.svg'), ('file-break-fill.svg', 'file-break-fill.svg'), ('caret-up-fill.svg', 'caret-up-fill.svg'), ('badge-4k.svg', 'badge-4k.svg'), ('dice-6.svg', 'dice-6.svg'), ('smartwatch.svg', 'smartwatch.svg'), ('cart-plus-fill.svg', 'cart-plus-fill.svg'), ('file-play-fill.svg', 'file-play-fill.svg'), ('eye-fill.svg', 'eye-fill.svg'), ('volume-off-fill.svg', 'volume-off-fill.svg'), ('basket2.svg', 'basket2.svg'), ('clipboard-check.svg', 'clipboard-check.svg'), ('align-center.svg', 'align-center.svg'), ('reply-all.svg', 'reply-all.svg'), ('chat.svg', 'chat.svg'), ('skip-backward-btn.svg', 'skip-backward-btn.svg'), ('person-plus.svg', 'person-plus.svg'), ('box-arrow-down.svg', 'box-arrow-down.svg'), ('text-left.svg', 'text-left.svg'), ('shift.svg', 'shift.svg'), ('cpu-fill.svg', 'cpu-fill.svg'), ('slash.svg', 'slash.svg'), ('file-earmark-slides.svg', 'file-earmark-slides.svg'), ('signpost-split.svg', 'signpost-split.svg'), ('server.svg', 'server.svg'), ('cloud-upload.svg', 'cloud-upload.svg'), ('box-arrow-in-left.svg', 'box-arrow-in-left.svg'), ('broadcast-pin.svg', 'broadcast-pin.svg'), ('briefcase.svg', 'briefcase.svg'), ('file-font-fill.svg', 'file-font-fill.svg'), ('phone-landscape-fill.svg', 'phone-landscape-fill.svg'), ('link.svg', 'link.svg'), ('three-dots-vertical.svg', 'three-dots-vertical.svg'), ('x-circle-fill.svg', 'x-circle-fill.svg'), ('chat-text-fill.svg', 'chat-text-fill.svg'), ('sort-up-alt.svg', 'sort-up-alt.svg'), ('bar-chart-line.svg', 'bar-chart-line.svg'), ('box-arrow-in-up-right.svg', 'box-arrow-in-up-right.svg'), ('file-earmark-lock-fill.svg', 'file-earmark-lock-fill.svg'), ('handbag.svg', 'handbag.svg'), ('credit-card-2-front-fill.svg', 'credit-card-2-front-fill.svg'), ('calendar-week-fill.svg', 'calendar-week-fill.svg'), ('exclamation-triangle.svg', 'exclamation-triangle.svg'), ('textarea-resize.svg', 'textarea-resize.svg'), ('calendar-fill.svg', 'calendar-fill.svg'), ('calendar2-minus.svg', 'calendar2-minus.svg'), ('compass.svg', 'compass.svg'), ('cart-x.svg', 'cart-x.svg'), ('chevron-double-right.svg', 'chevron-double-right.svg'), ('check2-all.svg', 'check2-all.svg'), ('bookmark.svg', 'bookmark.svg'), ('file-earmark-easel.svg', 'file-earmark-easel.svg'), ('images.svg', 'images.svg'), ('hourglass-split.svg', 'hourglass-split.svg'), ('eyeglasses.svg', 'eyeglasses.svg'), ('layers-fill.svg', 'layers-fill.svg'), ('emoji-heart-eyes-fill.svg', 'emoji-heart-eyes-fill.svg'), ('mouse2.svg', 'mouse2.svg'), ('hdd-stack.svg', 'hdd-stack.svg'), ('code.svg', 'code.svg'), ('chat-left.svg', 'chat-left.svg'), ('cup-straw.svg', 'cup-straw.svg'), ('file-earmark-arrow-down-fill.svg', 'file-earmark-arrow-down-fill.svg'), ('bag-x.svg', 'bag-x.svg'), ('suit-club-fill.svg', 'suit-club-fill.svg'), ('stop-btn-fill.svg', 'stop-btn-fill.svg'), ('stoplights-fill.svg', 'stoplights-fill.svg'), ('grid-3x2-gap-fill.svg', 'grid-3x2-gap-fill.svg'), ('cone-striped.svg', 'cone-striped.svg'), ('bullseye.svg', 'bullseye.svg'), ('calendar2-fill.svg', 'calendar2-fill.svg'), ('music-player-fill.svg', 'music-player-fill.svg'), ('hammer.svg', 'hammer.svg'), ('reception-4.svg', 'reception-4.svg'), ('percent.svg', 'percent.svg'), ('briefcase-fill.svg', 'briefcase-fill.svg'), ('bootstrap-reboot.svg', 'bootstrap-reboot.svg'), ('person-dash.svg', 'person-dash.svg'), ('bucket.svg', 'bucket.svg'), ('alarm-fill.svg', 'alarm-fill.svg'), ('grid-3x2-gap.svg', 'grid-3x2-gap.svg'), ('card-list.svg', 'card-list.svg'), ('arrow-90deg-down.svg', 'arrow-90deg-down.svg'), ('x.svg', 'x.svg'), ('chevron-down.svg', 'chevron-down.svg'), ('sort-alpha-up.svg', 'sort-alpha-up.svg'), ('caret-right-square-fill.svg', 'caret-right-square-fill.svg'), ('calendar3-range-fill.svg', 'calendar3-range-fill.svg'), ('app.svg', 'app.svg'), ('truck.svg', 'truck.svg'), ('file-earmark-medical-fill.svg', 'file-earmark-medical-fill.svg'), ('house.svg', 'house.svg'), ('calendar-minus-fill.svg', 'calendar-minus-fill.svg'), ('arrow-up-square-fill.svg', 'arrow-up-square-fill.svg'), ('grid-1x2.svg', 'grid-1x2.svg'), ('vr.svg', 'vr.svg'), ('calendar-range-fill.svg', 'calendar-range-fill.svg'), ('telephone-plus.svg', 'telephone-plus.svg'), ('wallet-fill.svg', 'wallet-fill.svg'), ('telephone-inbound-fill.svg', 'telephone-inbound-fill.svg'), ('arrow-90deg-left.svg', 'arrow-90deg-left.svg'), ('person-x.svg', 'person-x.svg'), ('front.svg', 'front.svg'), ('arrow-right-circle.svg', 'arrow-right-circle.svg'), ('pip.svg', 'pip.svg'), ('chat-quote.svg', 'chat-quote.svg'), ('layout-three-columns.svg', 'layout-three-columns.svg'), ('keyboard.svg', 'keyboard.svg'), ('dice-1.svg', 'dice-1.svg'), ('receipt-cutoff.svg', 'receipt-cutoff.svg'), ('kanban.svg', 'kanban.svg'), ('tablet-landscape-fill.svg', 'tablet-landscape-fill.svg'), ('code-square.svg', 'code-square.svg'), ('file-earmark-font.svg', 'file-earmark-font.svg'), ('tablet-fill.svg', 'tablet-fill.svg'), ('text-paragraph.svg', 'text-paragraph.svg'), ('inbox-fill.svg', 'inbox-fill.svg'), ('hdd-stack-fill.svg', 'hdd-stack-fill.svg'), ('sticky-fill.svg', 'sticky-fill.svg'), ('arrows-move.svg', 'arrows-move.svg'), ('arrows-angle-contract.svg', 'arrows-angle-contract.svg'), ('exclamation-octagon.svg', 'exclamation-octagon.svg'), ('hdd-rack.svg', 'hdd-rack.svg'), ('view-list.svg', 'view-list.svg'), ('youtube.svg', 'youtube.svg'), ('arrow-down-circle.svg', 'arrow-down-circle.svg'), ('file-earmark-minus.svg', 'file-earmark-minus.svg'), ('x-diamond-fill.svg', 'x-diamond-fill.svg'), ('cast.svg', 'cast.svg'), ('layout-text-sidebar.svg', 'layout-text-sidebar.svg'), ('sort-numeric-up-alt.svg', 'sort-numeric-up-alt.svg'), ('arrow-right-circle-fill.svg', 'arrow-right-circle-fill.svg'), ('badge-ad.svg', 'badge-ad.svg'), ('arrow-left-short.svg', 'arrow-left-short.svg'), ('clipboard-x.svg', 'clipboard-x.svg'), ('lightning.svg', 'lightning.svg'), ('plus.svg', 'plus.svg'), ('type-h2.svg', 'type-h2.svg'), ('caret-right-square.svg', 'caret-right-square.svg'), ('calendar3-range.svg', 'calendar3-range.svg'), ('person.svg', 'person.svg'), ('chat-left-text.svg', 'chat-left-text.svg'), ('menu-app.svg', 'menu-app.svg'), ('volume-down.svg', 'volume-down.svg'), ('circle.svg', 'circle.svg'), ('grid-3x3.svg', 'grid-3x3.svg'), ('cart-x-fill.svg', 'cart-x-fill.svg'), ('bag-fill.svg', 'bag-fill.svg'), ('emoji-smile.svg', 'emoji-smile.svg'), ('folder-plus.svg', 'folder-plus.svg'), ('tools.svg', 'tools.svg'), ('calendar4.svg', 'calendar4.svg'), ('sort-alpha-down.svg', 'sort-alpha-down.svg'), ('backspace-fill.svg', 'backspace-fill.svg'), ('plug.svg', 'plug.svg'), ('bar-chart-fill.svg', 'bar-chart-fill.svg'), ('list-check.svg', 'list-check.svg'), ('window.svg', 'window.svg'), ('aspect-ratio.svg', 'aspect-ratio.svg'), ('markdown-fill.svg', 'markdown-fill.svg'), ('journal-arrow-up.svg', 'journal-arrow-up.svg'), ('file-diff-fill.svg', 'file-diff-fill.svg'), ('clock-history.svg', 'clock-history.svg'), ('bookmark-star.svg', 'bookmark-star.svg'), ('cloud-fill.svg', 'cloud-fill.svg'), ('shield-fill-x.svg', 'shield-fill-x.svg'), ('eye.svg', 'eye.svg'), ('person-check-fill.svg', 'person-check-fill.svg'), ('skip-start.svg', 'skip-start.svg'), ('file-earmark-zip.svg', 'file-earmark-zip.svg'), ('chevron-compact-right.svg', 'chevron-compact-right.svg'), ('person-dash-fill.svg', 'person-dash-fill.svg'), ('sun.svg', 'sun.svg'), ('filter-circle-fill.svg', 'filter-circle-fill.svg'), ('pause-btn-fill.svg', 'pause-btn-fill.svg'), ('bag-check-fill.svg', 'bag-check-fill.svg'), ('arrow-counterclockwise.svg', 'arrow-counterclockwise.svg'), ('chevron-bar-contract.svg', 'chevron-bar-contract.svg'), ('hdd-fill.svg', 'hdd-fill.svg'), ('list-nested.svg', 'list-nested.svg'), ('chevron-bar-right.svg', 'chevron-bar-right.svg'), ('arrow-return-left.svg', 'arrow-return-left.svg'), ('file-music-fill.svg', 'file-music-fill.svg'), ('shop-window.svg', 'shop-window.svg'), ('justify-right.svg', 'justify-right.svg'), ('exclude.svg', 'exclude.svg'), ('shield-exclamation.svg', 'shield-exclamation.svg'), ('arrow-right-square-fill.svg', 'arrow-right-square-fill.svg'), ('check-square.svg', 'check-square.svg'), ('question-circle-fill.svg', 'question-circle-fill.svg'), ('geo-fill.svg', 'geo-fill.svg'), ('credit-card-fill.svg', 'credit-card-fill.svg'), ('grid-3x2.svg', 'grid-3x2.svg'), ('share-fill.svg', 'share-fill.svg'), ('brush.svg', 'brush.svg'), ('diagram-2-fill.svg', 'diagram-2-fill.svg'), ('ladder.svg', 'ladder.svg'), ('grip-vertical.svg', 'grip-vertical.svg'), ('speaker.svg', 'speaker.svg'), ('arrow-left-circle-fill.svg', 'arrow-left-circle-fill.svg'), ('speaker-fill.svg', 'speaker-fill.svg'), ('filter-circle.svg', 'filter-circle.svg'), ('brightness-alt-high.svg', 'brightness-alt-high.svg'), ('earbuds.svg', 'earbuds.svg'), ('shield-fill.svg', 'shield-fill.svg'), ('shield-fill-plus.svg', 'shield-fill-plus.svg'), ('list-ol.svg', 'list-ol.svg'), ('gear-wide-connected.svg', 'gear-wide-connected.svg'), ('dice-2-fill.svg', 'dice-2-fill.svg'), ('display.svg', 'display.svg'), ('exclamation-diamond.svg', 'exclamation-diamond.svg'), ('eye-slash.svg', 'eye-slash.svg'), ('journals.svg', 'journals.svg'), ('arrow-up-left-square-fill.svg', 'arrow-up-left-square-fill.svg'), ('arrow-left.svg', 'arrow-left.svg'), ('skip-backward.svg', 'skip-backward.svg'), ('bootstrap-fill.svg', 'bootstrap-fill.svg'), ('file-zip-fill.svg', 'file-zip-fill.svg'), ('diamond-half.svg', 'diamond-half.svg'), ('telephone-inbound.svg', 'telephone-inbound.svg'), ('file-earmark-break.svg', 'file-earmark-break.svg'), ('file-post-fill.svg', 'file-post-fill.svg'), ('shield.svg', 'shield.svg'), ('linkedin.svg', 'linkedin.svg'), ('dice-4-fill.svg', 'dice-4-fill.svg'), ('arrow-return-right.svg', 'arrow-return-right.svg'), ('backspace-reverse-fill.svg', 'backspace-reverse-fill.svg'), ('gift.svg', 'gift.svg'), ('trash2-fill.svg', 'trash2-fill.svg'), ('brightness-high-fill.svg', 'brightness-high-fill.svg'), ('arrow-left-circle.svg', 'arrow-left-circle.svg'), ('exclamation.svg', 'exclamation.svg'), ('star-fill.svg', 'star-fill.svg'), ('question-square-fill.svg', 'question-square-fill.svg'), ('emoji-smile-fill.svg', 'emoji-smile-fill.svg'), ('chat-left-text-fill.svg', 'chat-left-text-fill.svg'), ('wallet.svg', 'wallet.svg'), ('menu-button-fill.svg', 'menu-button-fill.svg'), ('map-fill.svg', 'map-fill.svg'), ('dice-1-fill.svg', 'dice-1-fill.svg'), ('emoji-angry.svg', 'emoji-angry.svg'), ('journal-minus.svg', 'journal-minus.svg'), ('card-image.svg', 'card-image.svg'), ('arrow-90deg-right.svg', 'arrow-90deg-right.svg'), ('sliders.svg', 'sliders.svg'), ('box-arrow-in-down-right.svg', 'box-arrow-in-down-right.svg'), ('fonts.svg', 'fonts.svg'), ('exclamation-circle.svg', 'exclamation-circle.svg'), ('file-earmark-play-fill.svg', 'file-earmark-play-fill.svg'), ('cloud-arrow-down.svg', 'cloud-arrow-down.svg'), ('file-ppt-fill.svg', 'file-ppt-fill.svg'), ('emoji-wink.svg', 'emoji-wink.svg'), ('calendar4-event.svg', 'calendar4-event.svg'), ('collection-play.svg', 'collection-play.svg'), ('pentagon-fill.svg', 'pentagon-fill.svg'), ('file-earmark-plus.svg', 'file-earmark-plus.svg'), ('journal-album.svg', 'journal-album.svg'), ('paperclip.svg', 'paperclip.svg'), ('sort-up.svg', 'sort-up.svg'), ('file-lock.svg', 'file-lock.svg'), ('file-earmark-break-fill.svg', 'file-earmark-break-fill.svg'), ('patch-check.svg', 'patch-check.svg'), ('file-fill.svg', 'file-fill.svg'), ('shield-fill-exclamation.svg', 'shield-fill-exclamation.svg'), ('journal-plus.svg', 'journal-plus.svg'), ('question-square.svg', 'question-square.svg'), ('printer-fill.svg', 'printer-fill.svg'), ('file-break.svg', 'file-break.svg'), ('egg-fried.svg', 'egg-fried.svg'), ('camera-video-off.svg', 'camera-video-off.svg'), ('layout-sidebar-inset.svg', 'layout-sidebar-inset.svg'), ('stoplights.svg', 'stoplights.svg'), ('basket2-fill.svg', 'basket2-fill.svg'), ('toggle2-off.svg', 'toggle2-off.svg'), ('emoji-frown.svg', 'emoji-frown.svg'), ('grid.svg', 'grid.svg'), ('tag-fill.svg', 'tag-fill.svg'), ('folder-x.svg', 'folder-x.svg'), ('skip-end-fill.svg', 'skip-end-fill.svg'), ('heptagon-fill.svg', 'heptagon-fill.svg'), ('bug-fill.svg', 'bug-fill.svg'), ('signpost.svg', 'signpost.svg'), ('caret-left-square-fill.svg', 'caret-left-square-fill.svg'), ('sticky.svg', 'sticky.svg'), ('emoji-angry-fill.svg', 'emoji-angry-fill.svg'), ('calendar2-x.svg', 'calendar2-x.svg'), ('file-code.svg', 'file-code.svg'), ('file-earmark-code.svg', 'file-earmark-code.svg'), ('chevron-compact-down.svg', 'chevron-compact-down.svg'), ('arrow-bar-down.svg', 'arrow-bar-down.svg'), ('keyboard-fill.svg', 'keyboard-fill.svg'), ('file-earmark-font-fill.svg', 'file-earmark-font-fill.svg'), ('suit-heart.svg', 'suit-heart.svg'), ('telephone-fill.svg', 'telephone-fill.svg'), ('skip-start-btn-fill.svg', 'skip-start-btn-fill.svg'), ('inbox.svg', 'inbox.svg'), ('bag.svg', 'bag.svg'), ('skip-end.svg', 'skip-end.svg'), ('arrow-up-short.svg', 'arrow-up-short.svg'), ('filter-square-fill.svg', 'filter-square-fill.svg'), ('camera-reels-fill.svg', 'camera-reels-fill.svg'), ('hand-thumbs-up.svg', 'hand-thumbs-up.svg'), ('vinyl-fill.svg', 'vinyl-fill.svg'), ('file-earmark-lock2-fill.svg', 'file-earmark-lock2-fill.svg'), ('play-fill.svg', 'play-fill.svg'), ('truck-flatbed.svg', 'truck-flatbed.svg'), ('chat-left-fill.svg', 'chat-left-fill.svg'), ('scissors.svg', 'scissors.svg'), ('volume-mute-fill.svg', 'volume-mute-fill.svg'), ('pip-fill.svg', 'pip-fill.svg'), ('folder2.svg', 'folder2.svg'), ('telephone-outbound.svg', 'telephone-outbound.svg'), ('arrow-90deg-up.svg', 'arrow-90deg-up.svg'), ('file-earmark-post.svg', 'file-earmark-post.svg'), ('file-earmark-arrow-up.svg', 'file-earmark-arrow-up.svg'), ('arrow-down-right-circle.svg', 'arrow-down-right-circle.svg'), ('text-indent-right.svg', 'text-indent-right.svg'), ('file-easel.svg', 'file-easel.svg'), ('capslock.svg', 'capslock.svg'), ('octagon-half.svg', 'octagon-half.svg'), ('camera-video-off-fill.svg', 'camera-video-off-fill.svg'), ('caret-right.svg', 'caret-right.svg'), ('file-earmark-person-fill.svg', 'file-earmark-person-fill.svg'), ('patch-exclamation-fll.svg', 'patch-exclamation-fll.svg'), ('file-earmark-ppt.svg', 'file-earmark-ppt.svg'), ('battery.svg', 'battery.svg'), ('nut-fill.svg', 'nut-fill.svg'), ('trash.svg', 'trash.svg'), ('textarea-t.svg', 'textarea-t.svg'), ('bootstrap.svg', 'bootstrap.svg'), ('segmented-nav.svg', 'segmented-nav.svg'), ('file-earmark-spreadsheet-fill.svg', 'file-earmark-spreadsheet-fill.svg'), ('moon.svg', 'moon.svg'), ('caret-down-fill.svg', 'caret-down-fill.svg'), ('skip-forward-circle.svg', 'skip-forward-circle.svg'), ('grip-horizontal.svg', 'grip-horizontal.svg'), ('award.svg', 'award.svg'), ('signpost-2-fill.svg', 'signpost-2-fill.svg'), ('dot.svg', 'dot.svg'), ('file-slides-fill.svg', 'file-slides-fill.svg'), ('caret-down-square.svg', 'caret-down-square.svg'), ('plug-fill.svg', 'plug-fill.svg'), ('gear-wide.svg', 'gear-wide.svg'), ('music-note-list.svg', 'music-note-list.svg'), ('file-earmark-lock.svg', 'file-earmark-lock.svg'), ('file-ppt.svg', 'file-ppt.svg'), ('bookmark-heart-fill.svg', 'bookmark-heart-fill.svg'), ('basket3-fill.svg', 'basket3-fill.svg'), ('file-spreadsheet.svg', 'file-spreadsheet.svg'), ('box-arrow-in-down-left.svg', 'box-arrow-in-down-left.svg'), ('plus-square.svg', 'plus-square.svg'), ('file-earmark-binary.svg', 'file-earmark-binary.svg'), ('info-circle-fill.svg', 'info-circle-fill.svg'), ('cloud-upload-fill.svg', 'cloud-upload-fill.svg'), ('calendar2-check.svg', 'calendar2-check.svg'), ('arrow-right-square.svg', 'arrow-right-square.svg'), ('file-earmark-ppt-fill.svg', 'file-earmark-ppt-fill.svg'), ('emoji-neutral.svg', 'emoji-neutral.svg'), ('cart-fill.svg', 'cart-fill.svg'), ('info-circle.svg', 'info-circle.svg'), ('hourglass-top.svg', 'hourglass-top.svg'), ('file-excel.svg', 'file-excel.svg'), ('chevron-up.svg', 'chevron-up.svg'), ('patch-exclamation.svg', 'patch-exclamation.svg'), ('menu-up.svg', 'menu-up.svg'), ('heptagon-half.svg', 'heptagon-half.svg'), ('dash.svg', 'dash.svg'), ('dice-3.svg', 'dice-3.svg'), ('sort-numeric-down.svg', 'sort-numeric-down.svg'), ('volume-up.svg', 'volume-up.svg'), ('slash-circle.svg', 'slash-circle.svg'), ('lightning-fill.svg', 'lightning-fill.svg'), ('pause.svg', 'pause.svg'), ('calendar2-month.svg', 'calendar2-month.svg'), ('pen-fill.svg', 'pen-fill.svg'), ('hr.svg', 'hr.svg'), ('exclamation-octagon-fill.svg', 'exclamation-octagon-fill.svg'), ('file-minus.svg', 'file-minus.svg'), ('eject-fill.svg', 'eject-fill.svg'), ('file-x-fill.svg', 'file-x-fill.svg'), ('camera-video-fill.svg', 'camera-video-fill.svg'), ('border-width.svg', 'border-width.svg'), ('calendar-minus.svg', 'calendar-minus.svg'), ('mailbox.svg', 'mailbox.svg'), ('chat-dots-fill.svg', 'chat-dots-fill.svg'), ('cart-check-fill.svg', 'cart-check-fill.svg'), ('menu-down.svg', 'menu-down.svg'), ('tv.svg', 'tv.svg'), ('house-fill.svg', 'house-fill.svg'), ('calendar2-week.svg', 'calendar2-week.svg'), ('type-h3.svg', 'type-h3.svg'), ('door-open-fill.svg', 'door-open-fill.svg'), ('play-circle-fill.svg', 'play-circle-fill.svg'), ('calendar2-minus-fill.svg', 'calendar2-minus-fill.svg'), ('chevron-contract.svg', 'chevron-contract.svg'), ('file-minus-fill.svg', 'file-minus-fill.svg'), ('bookmark-check.svg', 'bookmark-check.svg'), ('zoom-out.svg', 'zoom-out.svg'), ('bookmark-x-fill.svg', 'bookmark-x-fill.svg'), ('arrow-down-short.svg', 'arrow-down-short.svg'), ('file-person.svg', 'file-person.svg'), ('file-earmark-x.svg', 'file-earmark-x.svg'), ('octagon.svg', 'octagon.svg'), ('screwdriver.svg', 'screwdriver.svg'), ('credit-card.svg', 'credit-card.svg'), ('telephone-outbound-fill.svg', 'telephone-outbound-fill.svg'), ('file-earmark-post-fill.svg', 'file-earmark-post-fill.svg'), ('chat-fill.svg', 'chat-fill.svg'), ('exclamation-circle-fill.svg', 'exclamation-circle-fill.svg'), ('calendar2-event.svg', 'calendar2-event.svg'), ('geo.svg', 'geo.svg'), ('play-btn-fill.svg', 'play-btn-fill.svg'), ('skip-forward-btn-fill.svg', 'skip-forward-btn-fill.svg'), ('dash-circle.svg', 'dash-circle.svg'), ('file-binary-fill.svg', 'file-binary-fill.svg'), ('calendar2.svg', 'calendar2.svg'), ('filter.svg', 'filter.svg'), ('wifi.svg', 'wifi.svg'), ('cloud-arrow-up.svg', 'cloud-arrow-up.svg'), ('file-earmark-bar-graph-fill.svg', 'file-earmark-bar-graph-fill.svg'), ('hdd-network.svg', 'hdd-network.svg'), ('telephone-minus-fill.svg', 'telephone-minus-fill.svg'), ('file-earmark-excel.svg', 'file-earmark-excel.svg'), ('volume-down-fill.svg', 'volume-down-fill.svg'), ('power.svg', 'power.svg'), ('droplet.svg', 'droplet.svg'), ('layout-split.svg', 'layout-split.svg'), ('arrows-fullscreen.svg', 'arrows-fullscreen.svg'), ('dice-5-fill.svg', 'dice-5-fill.svg'), ('file-font.svg', 'file-font.svg'), ('file-music.svg', 'file-music.svg'), ('cloud-download-fill.svg', 'cloud-download-fill.svg'), ('cup-fill.svg', 'cup-fill.svg'), ('cash-stack.svg', 'cash-stack.svg'), ('box-arrow-in-down.svg', 'box-arrow-in-down.svg'), ('globe2.svg', 'globe2.svg'), ('google.svg', 'google.svg'), ('skip-forward.svg', 'skip-forward.svg'), ('file-earmark-slides-fill.svg', 'file-earmark-slides-fill.svg'), ('record-fill.svg', 'record-fill.svg'), ('file-ruled-fill.svg', 'file-ruled-fill.svg'), ('facebook.svg', 'facebook.svg'), ('box-arrow-in-up.svg', 'box-arrow-in-up.svg'), ('list-task.svg', 'list-task.svg'), ('diagram-3-fill.svg', 'diagram-3-fill.svg'), ('folder2-open.svg', 'folder2-open.svg'), ('folder-minus.svg', 'folder-minus.svg'), ('journal-bookmark.svg', 'journal-bookmark.svg'), ('calendar2-plus-fill.svg', 'calendar2-plus-fill.svg'), ('calendar2-plus.svg', 'calendar2-plus.svg'), ('unlock.svg', 'unlock.svg'), ('music-note-beamed.svg', 'music-note-beamed.svg'), ('arrow-down.svg', 'arrow-down.svg'), ('calendar-day-fill.svg', 'calendar-day-fill.svg'), ('arrow-down-square-fill.svg', 'arrow-down-square-fill.svg'), ('bookmark-dash-fill.svg', 'bookmark-dash-fill.svg'), ('mic-mute-fill.svg', 'mic-mute-fill.svg'), ('sunglasses.svg', 'sunglasses.svg'), ('suit-diamond.svg', 'suit-diamond.svg'), ('gear-fill.svg', 'gear-fill.svg'), ('pencil.svg', 'pencil.svg'), ('chat-text.svg', 'chat-text.svg'), ('cart-dash-fill.svg', 'cart-dash-fill.svg'), ('stop-circle-fill.svg', 'stop-circle-fill.svg'), ('battery-charging.svg', 'battery-charging.svg'), ('wifi-off.svg', 'wifi-off.svg'), ('tag.svg', 'tag.svg'), ('credit-card-2-back-fill.svg', 'credit-card-2-back-fill.svg'), ('chat-right-text.svg', 'chat-right-text.svg'), ('file-binary.svg', 'file-binary.svg'), ('puzzle-fill.svg', 'puzzle-fill.svg'), ('chat-right-quote-fill.svg', 'chat-right-quote-fill.svg'), ('arrow-down-right-circle-fill.svg', 'arrow-down-right-circle-fill.svg'), ('x-octagon-fill.svg', 'x-octagon-fill.svg'), ('download.svg', 'download.svg'), ('layout-sidebar-reverse.svg', 'layout-sidebar-reverse.svg'), ('bezier2.svg', 'bezier2.svg'), ('camera-reels.svg', 'camera-reels.svg'), ('calendar-month.svg', 'calendar-month.svg'), ('sim.svg', 'sim.svg'), ('globe.svg', 'globe.svg'), ('dash-square-fill.svg', 'dash-square-fill.svg'), ('binoculars.svg', 'binoculars.svg'), ('telephone.svg', 'telephone.svg'), ('stopwatch-fill.svg', 'stopwatch-fill.svg'), ('telephone-x-fill.svg', 'telephone-x-fill.svg'), ('tags.svg', 'tags.svg'), ('arrows-expand.svg', 'arrows-expand.svg'), ('trash-fill.svg', 'trash-fill.svg'), ('shield-slash-fill.svg', 'shield-slash-fill.svg'), ('cpu.svg', 'cpu.svg'), ('shield-shaded.svg', 'shield-shaded.svg'), ('file-earmark-check-fill.svg', 'file-earmark-check-fill.svg'), ('image-alt.svg', 'image-alt.svg'), ('paragraph.svg', 'paragraph.svg'), ('caret-up-square.svg', 'caret-up-square.svg'), ('node-plus.svg', 'node-plus.svg'), ('badge-ad-fill.svg', 'badge-ad-fill.svg'), ('skip-start-circle.svg', 'skip-start-circle.svg'), ('skip-forward-btn.svg', 'skip-forward-btn.svg'), ('record-btn-fill.svg', 'record-btn-fill.svg'), ('cart4.svg', 'cart4.svg'), ('check2.svg', 'check2.svg'), ('droplet-fill.svg', 'droplet-fill.svg'), ('file-lock-fill.svg', 'file-lock-fill.svg'), ('bug.svg', 'bug.svg'), ('align-top.svg', 'align-top.svg'), ('check2-square.svg', 'check2-square.svg'), ('film.svg', 'film.svg'), ('distribute-vertical.svg', 'distribute-vertical.svg'), ('bag-dash-fill.svg', 'bag-dash-fill.svg'), ('arrow-repeat.svg', 'arrow-repeat.svg'), ('person-x-fill.svg', 'person-x-fill.svg'), ('app-indicator.svg', 'app-indicator.svg'), ('chat-right-text-fill.svg', 'chat-right-text-fill.svg'), ('question-octagon.svg', 'question-octagon.svg'), ('camera.svg', 'camera.svg'), ('box-arrow-down-left.svg', 'box-arrow-down-left.svg'), ('upc-scan.svg', 'upc-scan.svg'), ('alarm.svg', 'alarm.svg'), ('mic-fill.svg', 'mic-fill.svg'), ('file-earmark-word-fill.svg', 'file-earmark-word-fill.svg'), ('type-underline.svg', 'type-underline.svg'), ('github.svg', 'github.svg'), ('node-minus.svg', 'node-minus.svg'), ('telephone-forward.svg', 'telephone-forward.svg'), ('union.svg', 'union.svg'), ('stickies-fill.svg', 'stickies-fill.svg'), ('file-earmark-fill.svg', 'file-earmark-fill.svg'), ('shield-slash.svg', 'shield-slash.svg'), ('arrow-up-left-circle-fill.svg', 'arrow-up-left-circle-fill.svg'), ('brightness-low.svg', 'brightness-low.svg'), ('backspace.svg', 'backspace.svg'), ('file-earmark-lock2.svg', 'file-earmark-lock2.svg'), ('file-earmark-music.svg', 'file-earmark-music.svg'), ('eject.svg', 'eject.svg'), ('skip-end-circle-fill.svg', 'skip-end-circle-fill.svg'), ('terminal-fill.svg', 'terminal-fill.svg'), ('caret-right-fill.svg', 'caret-right-fill.svg'), ('grid-3x3-gap-fill.svg', 'grid-3x3-gap-fill.svg'), ('check-circle.svg', 'check-circle.svg'), ('dash-circle-fill.svg', 'dash-circle-fill.svg'), ('arrow-down-left-square.svg', 'arrow-down-left-square.svg'), ('signpost-2.svg', 'signpost-2.svg'), ('file-earmark-bar-graph.svg', 'file-earmark-bar-graph.svg'), ('file-earmark.svg', 'file-earmark.svg'), ('card-checklist.svg', 'card-checklist.svg'), ('clipboard.svg', 'clipboard.svg'), ('journal-richtext.svg', 'journal-richtext.svg'), ('brightness-alt-high-fill.svg', 'brightness-alt-high-fill.svg'), ('skip-end-btn.svg', 'skip-end-btn.svg'), ('brush-fill.svg', 'brush-fill.svg'), ('bag-dash.svg', 'bag-dash.svg'), ('cart-dash.svg', 'cart-dash.svg'), ('badge-8k-fill.svg', 'badge-8k-fill.svg'), ('brightness-alt-low.svg', 'brightness-alt-low.svg'), ('menu-button.svg', 'menu-button.svg'), ('cloud-check.svg', 'cloud-check.svg'), ('emoji-laughing.svg', 'emoji-laughing.svg'), ('arrow-clockwise.svg', 'arrow-clockwise.svg'), ('file-earmark-diff.svg', 'file-earmark-diff.svg'), ('cart.svg', 'cart.svg'), ('file-ruled.svg', 'file-ruled.svg'), ('cursor-text.svg', 'cursor-text.svg'), ('funnel-fill.svg', 'funnel-fill.svg'), ('patch-plus-fll.svg', 'patch-plus-fll.svg'), ('chevron-bar-left.svg', 'chevron-bar-left.svg'), ('skip-backward-btn-fill.svg', 'skip-backward-btn-fill.svg'), ('diagram-3.svg', 'diagram-3.svg'), ('basket-fill.svg', 'basket-fill.svg'), ('clipboard-minus.svg', 'clipboard-minus.svg'), ('question-octagon-fill.svg', 'question-octagon-fill.svg'), ('collection-play-fill.svg', 'collection-play-fill.svg'), ('image.svg', 'image.svg'), ('file-plus-fill.svg', 'file-plus-fill.svg'), ('pause-circle-fill.svg', 'pause-circle-fill.svg'), ('journal-arrow-down.svg', 'journal-arrow-down.svg'), ('align-middle.svg', 'align-middle.svg'), ('archive-fill.svg', 'archive-fill.svg'), ('joystick.svg', 'joystick.svg'), ('calendar-event-fill.svg', 'calendar-event-fill.svg'), ('journal.svg', 'journal.svg'), ('badge-cc-fill.svg', 'badge-cc-fill.svg'), ('caret-down.svg', 'caret-down.svg'), ('x-square.svg', 'x-square.svg'), ('bounding-box-circles.svg', 'bounding-box-circles.svg'), ('book-fill.svg', 'book-fill.svg'), ('type-bold.svg', 'type-bold.svg'), ('bookmark-dash.svg', 'bookmark-dash.svg'), ('arrow-up-right-circle-fill.svg', 'arrow-up-right-circle-fill.svg'), ('badge-vo-fill.svg', 'badge-vo-fill.svg'), ('cloud-arrow-up-fill.svg', 'cloud-arrow-up-fill.svg')], max_length=100, verbose_name='Ãcono'),16 ),17 migrations.AlterField(18 model_name='module',19 name='url_name',20 field=models.CharField(max_length=256, unique=True),21 ),...
0003_auto_20210110_1957.py
Source:0003_auto_20210110_1957.py
1# Generated by Django 3.1.4 on 2021-01-10 19:572from django.db import migrations, models3class Migration(migrations.Migration):4 dependencies = [5 ('module', '0002_auto_20210108_1807'),6 ]7 operations = [8 migrations.AlterField(9 model_name='module',10 name='icon_name',11 field=models.CharField(blank=True, choices=[('alarm-fill.svg', 'alarm-fill.svg'), ('alarm.svg', 'alarm.svg'), ('align-bottom.svg', 'align-bottom.svg'), ('align-center.svg', 'align-center.svg'), ('align-end.svg', 'align-end.svg'), ('align-middle.svg', 'align-middle.svg'), ('align-start.svg', 'align-start.svg'), ('align-top.svg', 'align-top.svg'), ('alt.svg', 'alt.svg'), ('app-indicator.svg', 'app-indicator.svg'), ('app.svg', 'app.svg'), ('archive-fill.svg', 'archive-fill.svg'), ('archive.svg', 'archive.svg'), ('arrow-90deg-down.svg', 'arrow-90deg-down.svg'), ('arrow-90deg-left.svg', 'arrow-90deg-left.svg'), ('arrow-90deg-right.svg', 'arrow-90deg-right.svg'), ('arrow-90deg-up.svg', 'arrow-90deg-up.svg'), ('arrow-bar-down.svg', 'arrow-bar-down.svg'), ('arrow-bar-left.svg', 'arrow-bar-left.svg'), ('arrow-bar-right.svg', 'arrow-bar-right.svg'), ('arrow-bar-up.svg', 'arrow-bar-up.svg'), ('arrow-clockwise.svg', 'arrow-clockwise.svg'), ('arrow-counterclockwise.svg', 'arrow-counterclockwise.svg'), ('arrow-down-circle-fill.svg', 'arrow-down-circle-fill.svg'), ('arrow-down-circle.svg', 'arrow-down-circle.svg'), ('arrow-down-left-circle-fill.svg', 'arrow-down-left-circle-fill.svg'), ('arrow-down-left-circle.svg', 'arrow-down-left-circle.svg'), ('arrow-down-left-square-fill.svg', 'arrow-down-left-square-fill.svg'), ('arrow-down-left-square.svg', 'arrow-down-left-square.svg'), ('arrow-down-left.svg', 'arrow-down-left.svg'), ('arrow-down-right-circle-fill.svg', 'arrow-down-right-circle-fill.svg'), ('arrow-down-right-circle.svg', 'arrow-down-right-circle.svg'), ('arrow-down-right-square-fill.svg', 'arrow-down-right-square-fill.svg'), ('arrow-down-right-square.svg', 'arrow-down-right-square.svg'), ('arrow-down-right.svg', 'arrow-down-right.svg'), ('arrow-down-short.svg', 'arrow-down-short.svg'), ('arrow-down-square-fill.svg', 'arrow-down-square-fill.svg'), ('arrow-down-square.svg', 'arrow-down-square.svg'), ('arrow-down-up.svg', 'arrow-down-up.svg'), ('arrow-down.svg', 'arrow-down.svg'), ('arrow-left-circle-fill.svg', 'arrow-left-circle-fill.svg'), ('arrow-left-circle.svg', 'arrow-left-circle.svg'), ('arrow-left-right.svg', 'arrow-left-right.svg'), ('arrow-left-short.svg', 'arrow-left-short.svg'), ('arrow-left-square-fill.svg', 'arrow-left-square-fill.svg'), ('arrow-left-square.svg', 'arrow-left-square.svg'), ('arrow-left.svg', 'arrow-left.svg'), ('arrow-repeat.svg', 'arrow-repeat.svg'), ('arrow-return-left.svg', 'arrow-return-left.svg'), ('arrow-return-right.svg', 'arrow-return-right.svg'), ('arrow-right-circle-fill.svg', 'arrow-right-circle-fill.svg'), ('arrow-right-circle.svg', 'arrow-right-circle.svg'), ('arrow-right-short.svg', 'arrow-right-short.svg'), ('arrow-right-square-fill.svg', 'arrow-right-square-fill.svg'), ('arrow-right-square.svg', 'arrow-right-square.svg'), ('arrow-right.svg', 'arrow-right.svg'), ('arrow-up-circle-fill.svg', 'arrow-up-circle-fill.svg'), ('arrow-up-circle.svg', 'arrow-up-circle.svg'), ('arrow-up-down.svg', 'arrow-up-down.svg'), ('arrow-up-left-circle-fill.svg', 'arrow-up-left-circle-fill.svg'), ('arrow-up-left-circle.svg', 'arrow-up-left-circle.svg'), ('arrow-up-left-square-fill.svg', 'arrow-up-left-square-fill.svg'), ('arrow-up-left-square.svg', 'arrow-up-left-square.svg'), ('arrow-up-left.svg', 'arrow-up-left.svg'), ('arrow-up-right-circle-fill.svg', 'arrow-up-right-circle-fill.svg'), ('arrow-up-right-circle.svg', 'arrow-up-right-circle.svg'), ('arrow-up-right-square-fill.svg', 'arrow-up-right-square-fill.svg'), ('arrow-up-right-square.svg', 'arrow-up-right-square.svg'), ('arrow-up-right.svg', 'arrow-up-right.svg'), ('arrow-up-short.svg', 'arrow-up-short.svg'), ('arrow-up-square-fill.svg', 'arrow-up-square-fill.svg'), ('arrow-up-square.svg', 'arrow-up-square.svg'), ('arrow-up.svg', 'arrow-up.svg'), ('arrows-angle-contract.svg', 'arrows-angle-contract.svg'), ('arrows-angle-expand.svg', 'arrows-angle-expand.svg'), ('arrows-collapse.svg', 'arrows-collapse.svg'), ('arrows-expand.svg', 'arrows-expand.svg'), ('arrows-fullscreen.svg', 'arrows-fullscreen.svg'), ('arrows-move.svg', 'arrows-move.svg'), ('aspect-ratio-fill.svg', 'aspect-ratio-fill.svg'), ('aspect-ratio.svg', 'aspect-ratio.svg'), ('asterisk.svg', 'asterisk.svg'), ('at.svg', 'at.svg'), ('award-fill.svg', 'award-fill.svg'), ('award.svg', 'award.svg'), ('back.svg', 'back.svg'), ('backspace-fill.svg', 'backspace-fill.svg'), ('backspace-reverse-fill.svg', 'backspace-reverse-fill.svg'), ('backspace-reverse.svg', 'backspace-reverse.svg'), ('backspace.svg', 'backspace.svg'), ('badge-4k-fill.svg', 'badge-4k-fill.svg'), ('badge-4k.svg', 'badge-4k.svg'), ('badge-8k-fill.svg', 'badge-8k-fill.svg'), ('badge-8k.svg', 'badge-8k.svg'), ('badge-ad-fill.svg', 'badge-ad-fill.svg'), ('badge-ad.svg', 'badge-ad.svg'), ('badge-cc-fill.svg', 'badge-cc-fill.svg'), ('badge-cc.svg', 'badge-cc.svg'), ('badge-hd-fill.svg', 'badge-hd-fill.svg'), ('badge-hd.svg', 'badge-hd.svg'), ('badge-tm-fill.svg', 'badge-tm-fill.svg'), ('badge-tm.svg', 'badge-tm.svg'), ('badge-vo-fill.svg', 'badge-vo-fill.svg'), ('badge-vo.svg', 'badge-vo.svg'), ('bag-check-fill.svg', 'bag-check-fill.svg'), ('bag-check.svg', 'bag-check.svg'), ('bag-dash-fill.svg', 'bag-dash-fill.svg'), ('bag-dash.svg', 'bag-dash.svg'), ('bag-fill.svg', 'bag-fill.svg'), ('bag-plus-fill.svg', 'bag-plus-fill.svg'), ('bag-plus.svg', 'bag-plus.svg'), ('bag-x-fill.svg', 'bag-x-fill.svg'), ('bag-x.svg', 'bag-x.svg'), ('bag.svg', 'bag.svg'), ('bar-chart-fill.svg', 'bar-chart-fill.svg'), ('bar-chart-line-fill.svg', 'bar-chart-line-fill.svg'), ('bar-chart-line.svg', 'bar-chart-line.svg'), ('bar-chart-steps.svg', 'bar-chart-steps.svg'), ('bar-chart.svg', 'bar-chart.svg'), ('basket-fill.svg', 'basket-fill.svg'), ('basket.svg', 'basket.svg'), ('basket2-fill.svg', 'basket2-fill.svg'), ('basket2.svg', 'basket2.svg'), ('basket3-fill.svg', 'basket3-fill.svg'), ('basket3.svg', 'basket3.svg'), ('battery-charging.svg', 'battery-charging.svg'), ('battery-full.svg', 'battery-full.svg'), ('battery-half.svg', 'battery-half.svg'), ('battery.svg', 'battery.svg'), ('bell-fill.svg', 'bell-fill.svg'), ('bell.svg', 'bell.svg'), ('bezier.svg', 'bezier.svg'), ('bezier2.svg', 'bezier2.svg'), ('bicycle.svg', 'bicycle.svg'), ('binoculars-fill.svg', 'binoculars-fill.svg'), ('binoculars.svg', 'binoculars.svg'), ('blockquote-left.svg', 'blockquote-left.svg'), ('blockquote-right.svg', 'blockquote-right.svg'), ('book-fill.svg', 'book-fill.svg'), ('book-half.svg', 'book-half.svg'), ('book.svg', 'book.svg'), ('bookmark-check-fill.svg', 'bookmark-check-fill.svg'), ('bookmark-check.svg', 'bookmark-check.svg'), ('bookmark-dash-fill.svg', 'bookmark-dash-fill.svg'), ('bookmark-dash.svg', 'bookmark-dash.svg'), ('bookmark-fill.svg', 'bookmark-fill.svg'), ('bookmark-heart-fill.svg', 'bookmark-heart-fill.svg'), ('bookmark-heart.svg', 'bookmark-heart.svg'), ('bookmark-plus-fill.svg', 'bookmark-plus-fill.svg'), ('bookmark-plus.svg', 'bookmark-plus.svg'), ('bookmark-star-fill.svg', 'bookmark-star-fill.svg'), ('bookmark-star.svg', 'bookmark-star.svg'), ('bookmark-x-fill.svg', 'bookmark-x-fill.svg'), ('bookmark-x.svg', 'bookmark-x.svg'), ('bookmark.svg', 'bookmark.svg'), ('bookmarks-fill.svg', 'bookmarks-fill.svg'), ('bookmarks.svg', 'bookmarks.svg'), ('bookshelf.svg', 'bookshelf.svg'), ('bootstrap-fill.svg', 'bootstrap-fill.svg'), ('bootstrap-icons.svg', 'bootstrap-icons.svg'), ('bootstrap-reboot.svg', 'bootstrap-reboot.svg'), ('bootstrap.svg', 'bootstrap.svg'), ('border-style.svg', 'border-style.svg'), ('border-width.svg', 'border-width.svg'), ('bounding-box-circles.svg', 'bounding-box-circles.svg'), ('bounding-box.svg', 'bounding-box.svg'), ('box-arrow-down-left.svg', 'box-arrow-down-left.svg'), ('box-arrow-down-right.svg', 'box-arrow-down-right.svg'), ('box-arrow-down.svg', 'box-arrow-down.svg'), ('box-arrow-in-down-left.svg', 'box-arrow-in-down-left.svg'), ('box-arrow-in-down-right.svg', 'box-arrow-in-down-right.svg'), ('box-arrow-in-down.svg', 'box-arrow-in-down.svg'), ('box-arrow-in-left.svg', 'box-arrow-in-left.svg'), ('box-arrow-in-right.svg', 'box-arrow-in-right.svg'), ('box-arrow-in-up-left.svg', 'box-arrow-in-up-left.svg'), ('box-arrow-in-up-right.svg', 'box-arrow-in-up-right.svg'), ('box-arrow-in-up.svg', 'box-arrow-in-up.svg'), ('box-arrow-left.svg', 'box-arrow-left.svg'), ('box-arrow-right.svg', 'box-arrow-right.svg'), ('box-arrow-up-left.svg', 'box-arrow-up-left.svg'), ('box-arrow-up-right.svg', 'box-arrow-up-right.svg'), ('box-arrow-up.svg', 'box-arrow-up.svg'), ('box-seam.svg', 'box-seam.svg'), ('box.svg', 'box.svg'), ('braces.svg', 'braces.svg'), ('bricks.svg', 'bricks.svg'), ('briefcase-fill.svg', 'briefcase-fill.svg'), ('briefcase.svg', 'briefcase.svg'), ('brightness-alt-high-fill.svg', 'brightness-alt-high-fill.svg'), ('brightness-alt-high.svg', 'brightness-alt-high.svg'), ('brightness-alt-low-fill.svg', 'brightness-alt-low-fill.svg'), ('brightness-alt-low.svg', 'brightness-alt-low.svg'), ('brightness-high-fill.svg', 'brightness-high-fill.svg'), ('brightness-high.svg', 'brightness-high.svg'), ('brightness-low-fill.svg', 'brightness-low-fill.svg'), ('brightness-low.svg', 'brightness-low.svg'), ('broadcast-pin.svg', 'broadcast-pin.svg'), ('broadcast.svg', 'broadcast.svg'), ('brush-fill.svg', 'brush-fill.svg'), ('brush.svg', 'brush.svg'), ('bucket-fill.svg', 'bucket-fill.svg'), ('bucket.svg', 'bucket.svg'), ('bug-fill.svg', 'bug-fill.svg'), ('bug.svg', 'bug.svg'), ('building.svg', 'building.svg'), ('bullseye.svg', 'bullseye.svg'), ('calculator-fill.svg', 'calculator-fill.svg'), ('calculator.svg', 'calculator.svg'), ('calendar-check-fill.svg', 'calendar-check-fill.svg'), ('calendar-check.svg', 'calendar-check.svg'), ('calendar-date-fill.svg', 'calendar-date-fill.svg'), ('calendar-date.svg', 'calendar-date.svg'), ('calendar-day-fill.svg', 'calendar-day-fill.svg'), ('calendar-day.svg', 'calendar-day.svg'), ('calendar-event-fill.svg', 'calendar-event-fill.svg'), ('calendar-event.svg', 'calendar-event.svg'), ('calendar-fill.svg', 'calendar-fill.svg'), ('calendar-minus-fill.svg', 'calendar-minus-fill.svg'), ('calendar-minus.svg', 'calendar-minus.svg'), ('calendar-month-fill.svg', 'calendar-month-fill.svg'), ('calendar-month.svg', 'calendar-month.svg'), ('calendar-plus-fill.svg', 'calendar-plus-fill.svg'), ('calendar-plus.svg', 'calendar-plus.svg'), ('calendar-range-fill.svg', 'calendar-range-fill.svg'), ('calendar-range.svg', 'calendar-range.svg'), ('calendar-week-fill.svg', 'calendar-week-fill.svg'), ('calendar-week.svg', 'calendar-week.svg'), ('calendar-x-fill.svg', 'calendar-x-fill.svg'), ('calendar-x.svg', 'calendar-x.svg'), ('calendar.svg', 'calendar.svg'), ('calendar2-check-fill.svg', 'calendar2-check-fill.svg'), ('calendar2-check.svg', 'calendar2-check.svg'), ('calendar2-date-fill.svg', 'calendar2-date-fill.svg'), ('calendar2-date.svg', 'calendar2-date.svg'), ('calendar2-day-fill.svg', 'calendar2-day-fill.svg'), ('calendar2-day.svg', 'calendar2-day.svg'), ('calendar2-event-fill.svg', 'calendar2-event-fill.svg'), ('calendar2-event.svg', 'calendar2-event.svg'), ('calendar2-fill.svg', 'calendar2-fill.svg'), ('calendar2-minus-fill.svg', 'calendar2-minus-fill.svg'), ('calendar2-minus.svg', 'calendar2-minus.svg'), ('calendar2-month-fill.svg', 'calendar2-month-fill.svg'), ('calendar2-month.svg', 'calendar2-month.svg'), ('calendar2-plus-fill.svg', 'calendar2-plus-fill.svg'), ('calendar2-plus.svg', 'calendar2-plus.svg'), ('calendar2-range-fill.svg', 'calendar2-range-fill.svg'), ('calendar2-range.svg', 'calendar2-range.svg'), ('calendar2-week-fill.svg', 'calendar2-week-fill.svg'), ('calendar2-week.svg', 'calendar2-week.svg'), ('calendar2-x-fill.svg', 'calendar2-x-fill.svg'), ('calendar2-x.svg', 'calendar2-x.svg'), ('calendar2.svg', 'calendar2.svg'), ('calendar3-event-fill.svg', 'calendar3-event-fill.svg'), ('calendar3-event.svg', 'calendar3-event.svg'), ('calendar3-fill.svg', 'calendar3-fill.svg'), ('calendar3-range-fill.svg', 'calendar3-range-fill.svg'), ('calendar3-range.svg', 'calendar3-range.svg'), ('calendar3-week-fill.svg', 'calendar3-week-fill.svg'), ('calendar3-week.svg', 'calendar3-week.svg'), ('calendar3.svg', 'calendar3.svg'), ('calendar4-event.svg', 'calendar4-event.svg'), ('calendar4-range.svg', 'calendar4-range.svg'), ('calendar4-week.svg', 'calendar4-week.svg'), ('calendar4.svg', 'calendar4.svg'), ('camera-fill.svg', 'camera-fill.svg'), ('camera-reels-fill.svg', 'camera-reels-fill.svg'), ('camera-reels.svg', 'camera-reels.svg'), ('camera-video-fill.svg', 'camera-video-fill.svg'), ('camera-video-off-fill.svg', 'camera-video-off-fill.svg'), ('camera-video-off.svg', 'camera-video-off.svg'), ('camera-video.svg', 'camera-video.svg'), ('camera.svg', 'camera.svg'), ('camera2.svg', 'camera2.svg'), ('capslock-fill.svg', 'capslock-fill.svg'), ('capslock.svg', 'capslock.svg'), ('card-checklist.svg', 'card-checklist.svg'), ('card-heading.svg', 'card-heading.svg'), ('card-image.svg', 'card-image.svg'), ('card-list.svg', 'card-list.svg'), ('card-text.svg', 'card-text.svg'), ('caret-down-fill.svg', 'caret-down-fill.svg'), ('caret-down-square-fill.svg', 'caret-down-square-fill.svg'), ('caret-down-square.svg', 'caret-down-square.svg'), ('caret-down.svg', 'caret-down.svg'), ('caret-left-fill.svg', 'caret-left-fill.svg'), ('caret-left-square-fill.svg', 'caret-left-square-fill.svg'), ('caret-left-square.svg', 'caret-left-square.svg'), ('caret-left.svg', 'caret-left.svg'), ('caret-right-fill.svg', 'caret-right-fill.svg'), ('caret-right-square-fill.svg', 'caret-right-square-fill.svg'), ('caret-right-square.svg', 'caret-right-square.svg'), ('caret-right.svg', 'caret-right.svg'), ('caret-up-fill.svg', 'caret-up-fill.svg'), ('caret-up-square-fill.svg', 'caret-up-square-fill.svg'), ('caret-up-square.svg', 'caret-up-square.svg'), ('caret-up.svg', 'caret-up.svg'), ('cart-check-fill.svg', 'cart-check-fill.svg'), ('cart-check.svg', 'cart-check.svg'), ('cart-dash-fill.svg', 'cart-dash-fill.svg'), ('cart-dash.svg', 'cart-dash.svg'), ('cart-fill.svg', 'cart-fill.svg'), ('cart-plus-fill.svg', 'cart-plus-fill.svg'), ('cart-plus.svg', 'cart-plus.svg'), ('cart-x-fill.svg', 'cart-x-fill.svg'), ('cart-x.svg', 'cart-x.svg'), ('cart.svg', 'cart.svg'), ('cart2.svg', 'cart2.svg'), ('cart3.svg', 'cart3.svg'), ('cart4.svg', 'cart4.svg'), ('cash-stack.svg', 'cash-stack.svg'), ('cash.svg', 'cash.svg'), ('cast.svg', 'cast.svg'), ('chat-dots-fill.svg', 'chat-dots-fill.svg'), ('chat-dots.svg', 'chat-dots.svg'), ('chat-fill.svg', 'chat-fill.svg'), ('chat-left-dots-fill.svg', 'chat-left-dots-fill.svg'), ('chat-left-dots.svg', 'chat-left-dots.svg'), ('chat-left-fill.svg', 'chat-left-fill.svg'), ('chat-left-quote-fill.svg', 'chat-left-quote-fill.svg'), ('chat-left-quote.svg', 'chat-left-quote.svg'), ('chat-left-text-fill.svg', 'chat-left-text-fill.svg'), ('chat-left-text.svg', 'chat-left-text.svg'), ('chat-left.svg', 'chat-left.svg'), ('chat-quote-fill.svg', 'chat-quote-fill.svg'), ('chat-quote.svg', 'chat-quote.svg'), ('chat-right-dots-fill.svg', 'chat-right-dots-fill.svg'), ('chat-right-dots.svg', 'chat-right-dots.svg'), ('chat-right-fill.svg', 'chat-right-fill.svg'), ('chat-right-quote-fill.svg', 'chat-right-quote-fill.svg'), ('chat-right-quote.svg', 'chat-right-quote.svg'), ('chat-right-text-fill.svg', 'chat-right-text-fill.svg'), ('chat-right-text.svg', 'chat-right-text.svg'), ('chat-right.svg', 'chat-right.svg'), ('chat-square-dots-fill.svg', 'chat-square-dots-fill.svg'), ('chat-square-dots.svg', 'chat-square-dots.svg'), ('chat-square-fill.svg', 'chat-square-fill.svg'), ('chat-square-quote-fill.svg', 'chat-square-quote-fill.svg'), ('chat-square-quote.svg', 'chat-square-quote.svg'), ('chat-square-text-fill.svg', 'chat-square-text-fill.svg'), ('chat-square-text.svg', 'chat-square-text.svg'), ('chat-square.svg', 'chat-square.svg'), ('chat-text-fill.svg', 'chat-text-fill.svg'), ('chat-text.svg', 'chat-text.svg'), ('chat.svg', 'chat.svg'), ('check-all.svg', 'check-all.svg'), ('check-box.svg', 'check-box.svg'), ('check-circle-fill.svg', 'check-circle-fill.svg'), ('check-circle.svg', 'check-circle.svg'), ('check-square-fill.svg', 'check-square-fill.svg'), ('check-square.svg', 'check-square.svg'), ('check.svg', 'check.svg'), ('check2-all.svg', 'check2-all.svg'), ('check2-circle.svg', 'check2-circle.svg'), ('check2-square.svg', 'check2-square.svg'), ('check2.svg', 'check2.svg'), ('chevron-bar-contract.svg', 'chevron-bar-contract.svg'), ('chevron-bar-down.svg', 'chevron-bar-down.svg'), ('chevron-bar-expand.svg', 'chevron-bar-expand.svg'), ('chevron-bar-left.svg', 'chevron-bar-left.svg'), ('chevron-bar-right.svg', 'chevron-bar-right.svg'), ('chevron-bar-up.svg', 'chevron-bar-up.svg'), ('chevron-compact-down.svg', 'chevron-compact-down.svg'), ('chevron-compact-left.svg', 'chevron-compact-left.svg'), ('chevron-compact-right.svg', 'chevron-compact-right.svg'), ('chevron-compact-up.svg', 'chevron-compact-up.svg'), ('chevron-contract.svg', 'chevron-contract.svg'), ('chevron-double-down.svg', 'chevron-double-down.svg'), ('chevron-double-left.svg', 'chevron-double-left.svg'), ('chevron-double-right.svg', 'chevron-double-right.svg'), ('chevron-double-up.svg', 'chevron-double-up.svg'), ('chevron-down.svg', 'chevron-down.svg'), ('chevron-expand.svg', 'chevron-expand.svg'), ('chevron-left.svg', 'chevron-left.svg'), ('chevron-right.svg', 'chevron-right.svg'), ('chevron-up.svg', 'chevron-up.svg'), ('circle-fill.svg', 'circle-fill.svg'), ('circle-half.svg', 'circle-half.svg'), ('circle-square.svg', 'circle-square.svg'), ('circle.svg', 'circle.svg'), ('clipboard-check.svg', 'clipboard-check.svg'), ('clipboard-data.svg', 'clipboard-data.svg'), ('clipboard-minus.svg', 'clipboard-minus.svg'), ('clipboard-plus.svg', 'clipboard-plus.svg'), ('clipboard-x.svg', 'clipboard-x.svg'), ('clipboard.svg', 'clipboard.svg'), ('clock-fill.svg', 'clock-fill.svg'), ('clock-history.svg', 'clock-history.svg'), ('clock.svg', 'clock.svg'), ('cloud-arrow-down-fill.svg', 'cloud-arrow-down-fill.svg'), ('cloud-arrow-down.svg', 'cloud-arrow-down.svg'), ('cloud-arrow-up-fill.svg', 'cloud-arrow-up-fill.svg'), ('cloud-arrow-up.svg', 'cloud-arrow-up.svg'), ('cloud-check-fill.svg', 'cloud-check-fill.svg'), ('cloud-check.svg', 'cloud-check.svg'), ('cloud-download-fill.svg', 'cloud-download-fill.svg'), ('cloud-download.svg', 'cloud-download.svg'), ('cloud-fill.svg', 'cloud-fill.svg'), ('cloud-minus-fill.svg', 'cloud-minus-fill.svg'), ('cloud-minus.svg', 'cloud-minus.svg'), ('cloud-plus-fill.svg', 'cloud-plus-fill.svg'), ('cloud-plus.svg', 'cloud-plus.svg'), ('cloud-slash-fill.svg', 'cloud-slash-fill.svg'), ('cloud-slash.svg', 'cloud-slash.svg'), ('cloud-upload-fill.svg', 'cloud-upload-fill.svg'), ('cloud-upload.svg', 'cloud-upload.svg'), ('cloud.svg', 'cloud.svg'), ('code-slash.svg', 'code-slash.svg'), ('code-square.svg', 'code-square.svg'), ('code.svg', 'code.svg'), ('collection-fill.svg', 'collection-fill.svg'), ('collection-play-fill.svg', 'collection-play-fill.svg'), ('collection-play.svg', 'collection-play.svg'), ('collection.svg', 'collection.svg'), ('columns-gap.svg', 'columns-gap.svg'), ('columns.svg', 'columns.svg'), ('command.svg', 'command.svg'), ('compass-fill.svg', 'compass-fill.svg'), ('compass.svg', 'compass.svg'), ('cone-striped.svg', 'cone-striped.svg'), ('cone.svg', 'cone.svg'), ('controller.svg', 'controller.svg'), ('cpu-fill.svg', 'cpu-fill.svg'), ('cpu.svg', 'cpu.svg'), ('credit-card-2-back-fill.svg', 'credit-card-2-back-fill.svg'), ('credit-card-2-back.svg', 'credit-card-2-back.svg'), ('credit-card-2-front-fill.svg', 'credit-card-2-front-fill.svg'), ('credit-card-2-front.svg', 'credit-card-2-front.svg'), ('credit-card-fill.svg', 'credit-card-fill.svg'), ('credit-card.svg', 'credit-card.svg'), ('crop.svg', 'crop.svg'), ('cup-fill.svg', 'cup-fill.svg'), ('cup-straw.svg', 'cup-straw.svg'), ('cup.svg', 'cup.svg'), ('cursor-fill.svg', 'cursor-fill.svg'), ('cursor-text.svg', 'cursor-text.svg'), ('cursor.svg', 'cursor.svg'), ('dash-circle-fill.svg', 'dash-circle-fill.svg'), ('dash-circle.svg', 'dash-circle.svg'), ('dash-square-fill.svg', 'dash-square-fill.svg'), ('dash-square.svg', 'dash-square.svg'), ('dash.svg', 'dash.svg'), ('diagram-2-fill.svg', 'diagram-2-fill.svg'), ('diagram-2.svg', 'diagram-2.svg'), ('diagram-3-fill.svg', 'diagram-3-fill.svg'), ('diagram-3.svg', 'diagram-3.svg'), ('diamond-fill.svg', 'diamond-fill.svg'), ('diamond-half.svg', 'diamond-half.svg'), ('diamond.svg', 'diamond.svg'), ('dice-1-fill.svg', 'dice-1-fill.svg'), ('dice-1.svg', 'dice-1.svg'), ('dice-2-fill.svg', 'dice-2-fill.svg'), ('dice-2.svg', 'dice-2.svg'), ('dice-3-fill.svg', 'dice-3-fill.svg'), ('dice-3.svg', 'dice-3.svg'), ('dice-4-fill.svg', 'dice-4-fill.svg'), ('dice-4.svg', 'dice-4.svg'), ('dice-5-fill.svg', 'dice-5-fill.svg'), ('dice-5.svg', 'dice-5.svg'), ('dice-6-fill.svg', 'dice-6-fill.svg'), ('dice-6.svg', 'dice-6.svg'), ('disc-fill.svg', 'disc-fill.svg'), ('disc.svg', 'disc.svg'), ('discord.svg', 'discord.svg'), ('display-fill.svg', 'display-fill.svg'), ('display.svg', 'display.svg'), ('distribute-horizontal.svg', 'distribute-horizontal.svg'), ('distribute-vertical.svg', 'distribute-vertical.svg'), ('door-closed-fill.svg', 'door-closed-fill.svg'), ('door-closed.svg', 'door-closed.svg'), ('door-open-fill.svg', 'door-open-fill.svg'), ('door-open.svg', 'door-open.svg'), ('dot.svg', 'dot.svg'), ('download.svg', 'download.svg'), ('droplet-fill.svg', 'droplet-fill.svg'), ('droplet-half.svg', 'droplet-half.svg'), ('droplet.svg', 'droplet.svg'), ('earbuds.svg', 'earbuds.svg'), ('easel-fill.svg', 'easel-fill.svg'), ('easel.svg', 'easel.svg'), ('egg-fill.svg', 'egg-fill.svg'), ('egg-fried.svg', 'egg-fried.svg'), ('egg.svg', 'egg.svg'), ('eject-fill.svg', 'eject-fill.svg'), ('eject.svg', 'eject.svg'), ('emoji-angry-fill.svg', 'emoji-angry-fill.svg'), ('emoji-angry.svg', 'emoji-angry.svg'), ('emoji-dizzy-fill.svg', 'emoji-dizzy-fill.svg'), ('emoji-dizzy.svg', 'emoji-dizzy.svg'), ('emoji-expressionless-fill.svg', 'emoji-expressionless-fill.svg'), ('emoji-expressionless.svg', 'emoji-expressionless.svg'), ('emoji-frown-fill.svg', 'emoji-frown-fill.svg'), ('emoji-frown.svg', 'emoji-frown.svg'), ('emoji-heart-eyes-fill.svg', 'emoji-heart-eyes-fill.svg'), ('emoji-heart-eyes.svg', 'emoji-heart-eyes.svg'), ('emoji-laughing-fill.svg', 'emoji-laughing-fill.svg'), ('emoji-laughing.svg', 'emoji-laughing.svg'), ('emoji-neutral-fill.svg', 'emoji-neutral-fill.svg'), ('emoji-neutral.svg', 'emoji-neutral.svg'), ('emoji-smile-fill.svg', 'emoji-smile-fill.svg'), ('emoji-smile-upside-down-fill.svg', 'emoji-smile-upside-down-fill.svg'), ('emoji-smile-upside-down.svg', 'emoji-smile-upside-down.svg'), ('emoji-smile.svg', 'emoji-smile.svg'), ('emoji-sunglasses-fill.svg', 'emoji-sunglasses-fill.svg'), ('emoji-sunglasses.svg', 'emoji-sunglasses.svg'), ('emoji-wink-fill.svg', 'emoji-wink-fill.svg'), ('emoji-wink.svg', 'emoji-wink.svg'), ('envelope-fill.svg', 'envelope-fill.svg'), ('envelope-open-fill.svg', 'envelope-open-fill.svg'), ('envelope-open.svg', 'envelope-open.svg'), ('envelope.svg', 'envelope.svg'), ('exclamation-circle-fill.svg', 'exclamation-circle-fill.svg'), ('exclamation-circle.svg', 'exclamation-circle.svg'), ('exclamation-diamond-fill.svg', 'exclamation-diamond-fill.svg'), ('exclamation-diamond.svg', 'exclamation-diamond.svg'), ('exclamation-octagon-fill.svg', 'exclamation-octagon-fill.svg'), ('exclamation-octagon.svg', 'exclamation-octagon.svg'), ('exclamation-square-fill.svg', 'exclamation-square-fill.svg'), ('exclamation-square.svg', 'exclamation-square.svg'), ('exclamation-triangle-fill.svg', 'exclamation-triangle-fill.svg'), ('exclamation-triangle.svg', 'exclamation-triangle.svg'), ('exclamation.svg', 'exclamation.svg'), ('exclude.svg', 'exclude.svg'), ('eye-fill.svg', 'eye-fill.svg'), ('eye-slash-fill.svg', 'eye-slash-fill.svg'), ('eye-slash.svg', 'eye-slash.svg'), ('eye.svg', 'eye.svg'), ('eyeglasses.svg', 'eyeglasses.svg'), ('facebook.svg', 'facebook.svg'), ('file-arrow-down-fill.svg', 'file-arrow-down-fill.svg'), ('file-arrow-down.svg', 'file-arrow-down.svg'), ('file-arrow-up-fill.svg', 'file-arrow-up-fill.svg'), ('file-arrow-up.svg', 'file-arrow-up.svg'), ('file-bar-graph-fill.svg', 'file-bar-graph-fill.svg'), ('file-bar-graph.svg', 'file-bar-graph.svg'), ('file-binary-fill.svg', 'file-binary-fill.svg'), ('file-binary.svg', 'file-binary.svg'), ('file-break-fill.svg', 'file-break-fill.svg'), ('file-break.svg', 'file-break.svg'), ('file-check-fill.svg', 'file-check-fill.svg'), ('file-check.svg', 'file-check.svg'), ('file-code-fill.svg', 'file-code-fill.svg'), ('file-code.svg', 'file-code.svg'), ('file-diff-fill.svg', 'file-diff-fill.svg'), ('file-diff.svg', 'file-diff.svg'), ('file-earmark-arrow-down-fill.svg', 'file-earmark-arrow-down-fill.svg'), ('file-earmark-arrow-down.svg', 'file-earmark-arrow-down.svg'), ('file-earmark-arrow-up-fill.svg', 'file-earmark-arrow-up-fill.svg'), ('file-earmark-arrow-up.svg', 'file-earmark-arrow-up.svg'), ('file-earmark-bar-graph-fill.svg', 'file-earmark-bar-graph-fill.svg'), ('file-earmark-bar-graph.svg', 'file-earmark-bar-graph.svg'), ('file-earmark-binary-fill.svg', 'file-earmark-binary-fill.svg'), ('file-earmark-binary.svg', 'file-earmark-binary.svg'), ('file-earmark-break-fill.svg', 'file-earmark-break-fill.svg'), ('file-earmark-break.svg', 'file-earmark-break.svg'), ('file-earmark-check-fill.svg', 'file-earmark-check-fill.svg'), ('file-earmark-check.svg', 'file-earmark-check.svg'), ('file-earmark-code-fill.svg', 'file-earmark-code-fill.svg'), ('file-earmark-code.svg', 'file-earmark-code.svg'), ('file-earmark-diff-fill.svg', 'file-earmark-diff-fill.svg'), ('file-earmark-diff.svg', 'file-earmark-diff.svg'), ('file-earmark-easel-fill.svg', 'file-earmark-easel-fill.svg'), ('file-earmark-easel.svg', 'file-earmark-easel.svg'), ('file-earmark-excel-fill.svg', 'file-earmark-excel-fill.svg'), ('file-earmark-excel.svg', 'file-earmark-excel.svg'), ('file-earmark-fill.svg', 'file-earmark-fill.svg'), ('file-earmark-font-fill.svg', 'file-earmark-font-fill.svg'), ('file-earmark-font.svg', 'file-earmark-font.svg'), ('file-earmark-image-fill.svg', 'file-earmark-image-fill.svg'), ('file-earmark-image.svg', 'file-earmark-image.svg'), ('file-earmark-lock-fill.svg', 'file-earmark-lock-fill.svg'), ('file-earmark-lock.svg', 'file-earmark-lock.svg'), ('file-earmark-lock2-fill.svg', 'file-earmark-lock2-fill.svg'), ('file-earmark-lock2.svg', 'file-earmark-lock2.svg'), ('file-earmark-medical-fill.svg', 'file-earmark-medical-fill.svg'), ('file-earmark-medical.svg', 'file-earmark-medical.svg'), ('file-earmark-minus-fill.svg', 'file-earmark-minus-fill.svg'), ('file-earmark-minus.svg', 'file-earmark-minus.svg'), ('file-earmark-music-fill.svg', 'file-earmark-music-fill.svg'), ('file-earmark-music.svg', 'file-earmark-music.svg'), ('file-earmark-person-fill.svg', 'file-earmark-person-fill.svg'), ('file-earmark-person.svg', 'file-earmark-person.svg'), ('file-earmark-play-fill.svg', 'file-earmark-play-fill.svg'), ('file-earmark-play.svg', 'file-earmark-play.svg'), ('file-earmark-plus-fill.svg', 'file-earmark-plus-fill.svg'), ('file-earmark-plus.svg', 'file-earmark-plus.svg'), ('file-earmark-post-fill.svg', 'file-earmark-post-fill.svg'), ('file-earmark-post.svg', 'file-earmark-post.svg'), ('file-earmark-ppt-fill.svg', 'file-earmark-ppt-fill.svg'), ('file-earmark-ppt.svg', 'file-earmark-ppt.svg'), ('file-earmark-richtext-fill.svg', 'file-earmark-richtext-fill.svg'), ('file-earmark-richtext.svg', 'file-earmark-richtext.svg'), ('file-earmark-ruled-fill.svg', 'file-earmark-ruled-fill.svg'), ('file-earmark-ruled.svg', 'file-earmark-ruled.svg'), ('file-earmark-slides-fill.svg', 'file-earmark-slides-fill.svg'), ('file-earmark-slides.svg', 'file-earmark-slides.svg'), ('file-earmark-spreadsheet-fill.svg', 'file-earmark-spreadsheet-fill.svg'), ('file-earmark-spreadsheet.svg', 'file-earmark-spreadsheet.svg'), ('file-earmark-text-fill.svg', 'file-earmark-text-fill.svg'), ('file-earmark-text.svg', 'file-earmark-text.svg'), ('file-earmark-word-fill.svg', 'file-earmark-word-fill.svg'), ('file-earmark-word.svg', 'file-earmark-word.svg'), ('file-earmark-x-fill.svg', 'file-earmark-x-fill.svg'), ('file-earmark-x.svg', 'file-earmark-x.svg'), ('file-earmark-zip-fill.svg', 'file-earmark-zip-fill.svg'), ('file-earmark-zip.svg', 'file-earmark-zip.svg'), ('file-earmark.svg', 'file-earmark.svg'), ('file-easel-fill.svg', 'file-easel-fill.svg'), ('file-easel.svg', 'file-easel.svg'), ('file-excel-fill.svg', 'file-excel-fill.svg'), ('file-excel.svg', 'file-excel.svg'), ('file-fill.svg', 'file-fill.svg'), ('file-font-fill.svg', 'file-font-fill.svg'), ('file-font.svg', 'file-font.svg'), ('file-image-fill.svg', 'file-image-fill.svg'), ('file-image.svg', 'file-image.svg'), ('file-lock-fill.svg', 'file-lock-fill.svg'), ('file-lock.svg', 'file-lock.svg'), ('file-lock2-fill.svg', 'file-lock2-fill.svg'), ('file-lock2.svg', 'file-lock2.svg'), ('file-medical-fill.svg', 'file-medical-fill.svg'), ('file-medical.svg', 'file-medical.svg'), ('file-minus-fill.svg', 'file-minus-fill.svg'), ('file-minus.svg', 'file-minus.svg'), ('file-music-fill.svg', 'file-music-fill.svg'), ('file-music.svg', 'file-music.svg'), ('file-person-fill.svg', 'file-person-fill.svg'), ('file-person.svg', 'file-person.svg'), ('file-play-fill.svg', 'file-play-fill.svg'), ('file-play.svg', 'file-play.svg'), ('file-plus-fill.svg', 'file-plus-fill.svg'), ('file-plus.svg', 'file-plus.svg'), ('file-post-fill.svg', 'file-post-fill.svg'), ('file-post.svg', 'file-post.svg'), ('file-ppt-fill.svg', 'file-ppt-fill.svg'), ('file-ppt.svg', 'file-ppt.svg'), ('file-richtext-fill.svg', 'file-richtext-fill.svg'), ('file-richtext.svg', 'file-richtext.svg'), ('file-ruled-fill.svg', 'file-ruled-fill.svg'), ('file-ruled.svg', 'file-ruled.svg'), ('file-slides-fill.svg', 'file-slides-fill.svg'), ('file-slides.svg', 'file-slides.svg'), ('file-spreadsheet-fill.svg', 'file-spreadsheet-fill.svg'), ('file-spreadsheet.svg', 'file-spreadsheet.svg'), ('file-text-fill.svg', 'file-text-fill.svg'), ('file-text.svg', 'file-text.svg'), ('file-word-fill.svg', 'file-word-fill.svg'), ('file-word.svg', 'file-word.svg'), ('file-x-fill.svg', 'file-x-fill.svg'), ('file-x.svg', 'file-x.svg'), ('file-zip-fill.svg', 'file-zip-fill.svg'), ('file-zip.svg', 'file-zip.svg'), ('file.svg', 'file.svg'), ('files-alt.svg', 'files-alt.svg'), ('files.svg', 'files.svg'), ('film.svg', 'film.svg'), ('filter-circle-fill.svg', 'filter-circle-fill.svg'), ('filter-circle.svg', 'filter-circle.svg'), ('filter-left.svg', 'filter-left.svg'), ('filter-right.svg', 'filter-right.svg'), ('filter-square-fill.svg', 'filter-square-fill.svg'), ('filter-square.svg', 'filter-square.svg'), ('filter.svg', 'filter.svg'), ('flag-fill.svg', 'flag-fill.svg'), ('flag.svg', 'flag.svg'), ('flower1.svg', 'flower1.svg'), ('flower2.svg', 'flower2.svg'), ('flower3.svg', 'flower3.svg'), ('folder-check.svg', 'folder-check.svg'), ('folder-fill.svg', 'folder-fill.svg'), ('folder-minus.svg', 'folder-minus.svg'), ('folder-plus.svg', 'folder-plus.svg'), ('folder-symlink-fill.svg', 'folder-symlink-fill.svg'), ('folder-symlink.svg', 'folder-symlink.svg'), ('folder-x.svg', 'folder-x.svg'), ('folder.svg', 'folder.svg'), ('folder2-open.svg', 'folder2-open.svg'), ('folder2.svg', 'folder2.svg'), ('fonts.svg', 'fonts.svg'), ('forward-fill.svg', 'forward-fill.svg'), ('forward.svg', 'forward.svg'), ('front.svg', 'front.svg'), ('fullscreen-exit.svg', 'fullscreen-exit.svg'), ('fullscreen.svg', 'fullscreen.svg'), ('funnel-fill.svg', 'funnel-fill.svg'), ('funnel.svg', 'funnel.svg'), ('gear-fill.svg', 'gear-fill.svg'), ('gear-wide-connected.svg', 'gear-wide-connected.svg'), ('gear-wide.svg', 'gear-wide.svg'), ('gear.svg', 'gear.svg'), ('gem.svg', 'gem.svg'), ('geo-alt-fill.svg', 'geo-alt-fill.svg'), ('geo-alt.svg', 'geo-alt.svg'), ('geo-fill.svg', 'geo-fill.svg'), ('geo.svg', 'geo.svg'), ('gift-fill.svg', 'gift-fill.svg'), ('gift.svg', 'gift.svg'), ('github.svg', 'github.svg'), ('globe.svg', 'globe.svg'), ('globe2.svg', 'globe2.svg'), ('google.svg', 'google.svg'), ('graph-down.svg', 'graph-down.svg'), ('graph-up.svg', 'graph-up.svg'), ('grid-1x2-fill.svg', 'grid-1x2-fill.svg'), ('grid-1x2.svg', 'grid-1x2.svg'), ('grid-3x2-gap-fill.svg', 'grid-3x2-gap-fill.svg'), ('grid-3x2-gap.svg', 'grid-3x2-gap.svg'), ('grid-3x2.svg', 'grid-3x2.svg'), ('grid-3x3-gap-fill.svg', 'grid-3x3-gap-fill.svg'), ('grid-3x3-gap.svg', 'grid-3x3-gap.svg'), ('grid-3x3.svg', 'grid-3x3.svg'), ('grid-fill.svg', 'grid-fill.svg'), ('grid.svg', 'grid.svg'), ('grip-horizontal.svg', 'grip-horizontal.svg'), ('grip-vertical.svg', 'grip-vertical.svg'), ('hammer.svg', 'hammer.svg'), ('hand-index-thumb.svg', 'hand-index-thumb.svg'), ('hand-index.svg', 'hand-index.svg'), ('hand-thumbs-down.svg', 'hand-thumbs-down.svg'), ('hand-thumbs-up.svg', 'hand-thumbs-up.svg'), ('handbag-fill.svg', 'handbag-fill.svg'), ('handbag.svg', 'handbag.svg'), ('hash.svg', 'hash.svg'), ('hdd-fill.svg', 'hdd-fill.svg'), ('hdd-network-fill.svg', 'hdd-network-fill.svg'), ('hdd-network.svg', 'hdd-network.svg'), ('hdd-rack-fill.svg', 'hdd-rack-fill.svg'), ('hdd-rack.svg', 'hdd-rack.svg'), ('hdd-stack-fill.svg', 'hdd-stack-fill.svg'), ('hdd-stack.svg', 'hdd-stack.svg'), ('hdd.svg', 'hdd.svg'), ('headphones.svg', 'headphones.svg'), ('headset.svg', 'headset.svg'), ('heart-fill.svg', 'heart-fill.svg'), ('heart-half.svg', 'heart-half.svg'), ('heart.svg', 'heart.svg'), ('heptagon-fill.svg', 'heptagon-fill.svg'), ('heptagon-half.svg', 'heptagon-half.svg'), ('heptagon.svg', 'heptagon.svg'), ('hexagon-fill.svg', 'hexagon-fill.svg'), ('hexagon-half.svg', 'hexagon-half.svg'), ('hexagon.svg', 'hexagon.svg'), ('hourglass-bottom.svg', 'hourglass-bottom.svg'), ('hourglass-split.svg', 'hourglass-split.svg'), ('hourglass-top.svg', 'hourglass-top.svg'), ('hourglass.svg', 'hourglass.svg'), ('house-door-fill.svg', 'house-door-fill.svg'), ('house-door.svg', 'house-door.svg'), ('house-fill.svg', 'house-fill.svg'), ('house.svg', 'house.svg'), ('hr.svg', 'hr.svg'), ('image-alt.svg', 'image-alt.svg'), ('image-fill.svg', 'image-fill.svg'), ('image.svg', 'image.svg'), ('images.svg', 'images.svg'), ('inbox-fill.svg', 'inbox-fill.svg'), ('inbox.svg', 'inbox.svg'), ('inboxes-fill.svg', 'inboxes-fill.svg'), ('inboxes.svg', 'inboxes.svg'), ('info-circle-fill.svg', 'info-circle-fill.svg'), ('info-circle.svg', 'info-circle.svg'), ('info-square-fill.svg', 'info-square-fill.svg'), ('info-square.svg', 'info-square.svg'), ('info.svg', 'info.svg'), ('input-cursor-text.svg', 'input-cursor-text.svg'), ('input-cursor.svg', 'input-cursor.svg'), ('instagram.svg', 'instagram.svg'), ('intersect.svg', 'intersect.svg'), ('journal-album.svg', 'journal-album.svg'), ('journal-arrow-down.svg', 'journal-arrow-down.svg'), ('journal-arrow-up.svg', 'journal-arrow-up.svg'), ('journal-bookmark-fill.svg', 'journal-bookmark-fill.svg'), ('journal-bookmark.svg', 'journal-bookmark.svg'), ('journal-check.svg', 'journal-check.svg'), ('journal-code.svg', 'journal-code.svg'), ('journal-medical.svg', 'journal-medical.svg'), ('journal-minus.svg', 'journal-minus.svg'), ('journal-plus.svg', 'journal-plus.svg'), ('journal-richtext.svg', 'journal-richtext.svg'), ('journal-text.svg', 'journal-text.svg'), ('journal-x.svg', 'journal-x.svg'), ('journal.svg', 'journal.svg'), ('journals.svg', 'journals.svg'), ('joystick.svg', 'joystick.svg'), ('justify-left.svg', 'justify-left.svg'), ('justify-right.svg', 'justify-right.svg'), ('justify.svg', 'justify.svg'), ('kanban-fill.svg', 'kanban-fill.svg'), ('kanban.svg', 'kanban.svg'), ('key-fill.svg', 'key-fill.svg'), ('key.svg', 'key.svg'), ('keyboard-fill.svg', 'keyboard-fill.svg'), ('keyboard.svg', 'keyboard.svg'), ('ladder.svg', 'ladder.svg'), ('lamp-fill.svg', 'lamp-fill.svg'), ('lamp.svg', 'lamp.svg'), ('laptop-fill.svg', 'laptop-fill.svg'), ('laptop.svg', 'laptop.svg'), ('layers-fill.svg', 'layers-fill.svg'), ('layers-half.svg', 'layers-half.svg'), ('layers.svg', 'layers.svg'), ('layout-sidebar-inset-reverse.svg', 'layout-sidebar-inset-reverse.svg'), ('layout-sidebar-inset.svg', 'layout-sidebar-inset.svg'), ('layout-sidebar-reverse.svg', 'layout-sidebar-reverse.svg'), ('layout-sidebar.svg', 'layout-sidebar.svg'), ('layout-split.svg', 'layout-split.svg'), ('layout-text-sidebar-reverse.svg', 'layout-text-sidebar-reverse.svg'), ('layout-text-sidebar.svg', 'layout-text-sidebar.svg'), ('layout-text-window-reverse.svg', 'layout-text-window-reverse.svg'), ('layout-text-window.svg', 'layout-text-window.svg'), ('layout-three-columns.svg', 'layout-three-columns.svg'), ('layout-wtf.svg', 'layout-wtf.svg'), ('life-preserver.svg', 'life-preserver.svg'), ('lightning-fill.svg', 'lightning-fill.svg'), ('lightning.svg', 'lightning.svg'), ('link-45deg.svg', 'link-45deg.svg'), ('link.svg', 'link.svg'), ('linkedin.svg', 'linkedin.svg'), ('list-check.svg', 'list-check.svg'), ('list-nested.svg', 'list-nested.svg'), ('list-ol.svg', 'list-ol.svg'), ('list-stars.svg', 'list-stars.svg'), ('list-task.svg', 'list-task.svg'), ('list-ul.svg', 'list-ul.svg'), ('list.svg', 'list.svg'), ('lock-fill.svg', 'lock-fill.svg'), ('lock.svg', 'lock.svg'), ('mailbox.svg', 'mailbox.svg'), ('mailbox2.svg', 'mailbox2.svg'), ('map-fill.svg', 'map-fill.svg'), ('map.svg', 'map.svg'), ('markdown-fill.svg', 'markdown-fill.svg'), ('markdown.svg', 'markdown.svg'), ('menu-app-fill.svg', 'menu-app-fill.svg'), ('menu-app.svg', 'menu-app.svg'), ('menu-button-fill.svg', 'menu-button-fill.svg'), ('menu-button-wide-fill.svg', 'menu-button-wide-fill.svg'), ('menu-button-wide.svg', 'menu-button-wide.svg'), ('menu-button.svg', 'menu-button.svg'), ('menu-down.svg', 'menu-down.svg'), ('menu-up.svg', 'menu-up.svg'), ('mic-fill.svg', 'mic-fill.svg'), ('mic-mute-fill.svg', 'mic-mute-fill.svg'), ('mic-mute.svg', 'mic-mute.svg'), ('mic.svg', 'mic.svg'), ('minecart-loaded.svg', 'minecart-loaded.svg'), ('minecart.svg', 'minecart.svg'), ('moon.svg', 'moon.svg'), ('mouse.svg', 'mouse.svg'), ('mouse2.svg', 'mouse2.svg'), ('mouse3.svg', 'mouse3.svg'), ('music-note-beamed.svg', 'music-note-beamed.svg'), ('music-note-list.svg', 'music-note-list.svg'), ('music-note.svg', 'music-note.svg'), ('music-player-fill.svg', 'music-player-fill.svg'), ('music-player.svg', 'music-player.svg'), ('newspaper.svg', 'newspaper.svg'), ('node-minus-fill.svg', 'node-minus-fill.svg'), ('node-minus.svg', 'node-minus.svg'), ('node-plus-fill.svg', 'node-plus-fill.svg'), ('node-plus.svg', 'node-plus.svg'), ('nut-fill.svg', 'nut-fill.svg'), ('nut.svg', 'nut.svg'), ('octagon-fill.svg', 'octagon-fill.svg'), ('octagon-half.svg', 'octagon-half.svg'), ('octagon.svg', 'octagon.svg'), ('option.svg', 'option.svg'), ('outlet.svg', 'outlet.svg'), ('paperclip.svg', 'paperclip.svg'), ('paragraph.svg', 'paragraph.svg'), ('patch-check-fll.svg', 'patch-check-fll.svg'), ('patch-check.svg', 'patch-check.svg'), ('patch-exclamation-fll.svg', 'patch-exclamation-fll.svg'), ('patch-exclamation.svg', 'patch-exclamation.svg'), ('patch-minus-fll.svg', 'patch-minus-fll.svg'), ('patch-minus.svg', 'patch-minus.svg'), ('patch-plus-fll.svg', 'patch-plus-fll.svg'), ('patch-plus.svg', 'patch-plus.svg'), ('patch-question-fll.svg', 'patch-question-fll.svg'), ('patch-question.svg', 'patch-question.svg'), ('pause-btn-fill.svg', 'pause-btn-fill.svg'), ('pause-btn.svg', 'pause-btn.svg'), ('pause-circle-fill.svg', 'pause-circle-fill.svg'), ('pause-circle.svg', 'pause-circle.svg'), ('pause-fill.svg', 'pause-fill.svg'), ('pause.svg', 'pause.svg'), ('peace-fill.svg', 'peace-fill.svg'), ('peace.svg', 'peace.svg'), ('pen-fill.svg', 'pen-fill.svg'), ('pen.svg', 'pen.svg'), ('pencil-fill.svg', 'pencil-fill.svg'), ('pencil-square.svg', 'pencil-square.svg'), ('pencil.svg', 'pencil.svg'), ('pentagon-fill.svg', 'pentagon-fill.svg'), ('pentagon-half.svg', 'pentagon-half.svg'), ('pentagon.svg', 'pentagon.svg'), ('people-circle.svg', 'people-circle.svg'), ('people-fill.svg', 'people-fill.svg'), ('people.svg', 'people.svg'), ('percent.svg', 'percent.svg'), ('person-badge-fill.svg', 'person-badge-fill.svg'), ('person-badge.svg', 'person-badge.svg'), ('person-bounding-box.svg', 'person-bounding-box.svg'), ('person-check-fill.svg', 'person-check-fill.svg'), ('person-check.svg', 'person-check.svg'), ('person-circle.svg', 'person-circle.svg'), ('person-dash-fill.svg', 'person-dash-fill.svg'), ('person-dash.svg', 'person-dash.svg'), ('person-fill.svg', 'person-fill.svg'), ('person-lines-fill.svg', 'person-lines-fill.svg'), ('person-plus-fill.svg', 'person-plus-fill.svg'), ('person-plus.svg', 'person-plus.svg'), ('person-square.svg', 'person-square.svg'), ('person-x-fill.svg', 'person-x-fill.svg'), ('person-x.svg', 'person-x.svg'), ('person.svg', 'person.svg'), ('phone-fill.svg', 'phone-fill.svg'), ('phone-landscape-fill.svg', 'phone-landscape-fill.svg'), ('phone-landscape.svg', 'phone-landscape.svg'), ('phone-vibrate.svg', 'phone-vibrate.svg'), ('phone.svg', 'phone.svg'), ('pie-chart-fill.svg', 'pie-chart-fill.svg'), ('pie-chart.svg', 'pie-chart.svg'), ('pip-fill.svg', 'pip-fill.svg'), ('pip.svg', 'pip.svg'), ('play-btn-fill.svg', 'play-btn-fill.svg'), ('play-btn.svg', 'play-btn.svg'), ('play-circle-fill.svg', 'play-circle-fill.svg'), ('play-circle.svg', 'play-circle.svg'), ('play-fill.svg', 'play-fill.svg'), ('play.svg', 'play.svg'), ('plug-fill.svg', 'plug-fill.svg'), ('plug.svg', 'plug.svg'), ('plus-circle-fill.svg', 'plus-circle-fill.svg'), ('plus-circle.svg', 'plus-circle.svg'), ('plus-square-fill.svg', 'plus-square-fill.svg'), ('plus-square.svg', 'plus-square.svg'), ('plus.svg', 'plus.svg'), ('power.svg', 'power.svg'), ('printer-fill.svg', 'printer-fill.svg'), ('printer.svg', 'printer.svg'), ('puzzle-fill.svg', 'puzzle-fill.svg'), ('puzzle.svg', 'puzzle.svg'), ('question-circle-fill.svg', 'question-circle-fill.svg'), ('question-circle.svg', 'question-circle.svg'), ('question-diamond-fill.svg', 'question-diamond-fill.svg'), ('question-diamond.svg', 'question-diamond.svg'), ('question-octagon-fill.svg', 'question-octagon-fill.svg'), ('question-octagon.svg', 'question-octagon.svg'), ('question-square-fill.svg', 'question-square-fill.svg'), ('question-square.svg', 'question-square.svg'), ('question.svg', 'question.svg'), ('receipt-cutoff.svg', 'receipt-cutoff.svg'), ('receipt.svg', 'receipt.svg'), ('reception-0.svg', 'reception-0.svg'), ('reception-1.svg', 'reception-1.svg'), ('reception-2.svg', 'reception-2.svg'), ('reception-3.svg', 'reception-3.svg'), ('reception-4.svg', 'reception-4.svg'), ('record-btn-fill.svg', 'record-btn-fill.svg'), ('record-btn.svg', 'record-btn.svg'), ('record-circle-fill.svg', 'record-circle-fill.svg'), ('record-circle.svg', 'record-circle.svg'), ('record-fill.svg', 'record-fill.svg'), ('record.svg', 'record.svg'), ('record2-fill.svg', 'record2-fill.svg'), ('record2.svg', 'record2.svg'), ('reply-all-fill.svg', 'reply-all-fill.svg'), ('reply-all.svg', 'reply-all.svg'), ('reply-fill.svg', 'reply-fill.svg'), ('reply.svg', 'reply.svg'), ('rss-fill.svg', 'rss-fill.svg'), ('rss.svg', 'rss.svg'), ('scissors.svg', 'scissors.svg'), ('screwdriver.svg', 'screwdriver.svg'), ('search.svg', 'search.svg'), ('segmented-nav.svg', 'segmented-nav.svg'), ('server.svg', 'server.svg'), ('share-fill.svg', 'share-fill.svg'), ('share.svg', 'share.svg'), ('shield-check.svg', 'shield-check.svg'), ('shield-exclamation.svg', 'shield-exclamation.svg'), ('shield-fill-check.svg', 'shield-fill-check.svg'), ('shield-fill-exclamation.svg', 'shield-fill-exclamation.svg'), ('shield-fill-minus.svg', 'shield-fill-minus.svg'), ('shield-fill-plus.svg', 'shield-fill-plus.svg'), ('shield-fill-x.svg', 'shield-fill-x.svg'), ('shield-fill.svg', 'shield-fill.svg'), ('shield-lock-fill.svg', 'shield-lock-fill.svg'), ('shield-lock.svg', 'shield-lock.svg'), ('shield-minus.svg', 'shield-minus.svg'), ('shield-plus.svg', 'shield-plus.svg'), ('shield-shaded.svg', 'shield-shaded.svg'), ('shield-slash-fill.svg', 'shield-slash-fill.svg'), ('shield-slash.svg', 'shield-slash.svg'), ('shield-x.svg', 'shield-x.svg'), ('shield.svg', 'shield.svg'), ('shift-fill.svg', 'shift-fill.svg'), ('shift.svg', 'shift.svg'), ('shop-window.svg', 'shop-window.svg'), ('shop.svg', 'shop.svg'), ('shuffle.svg', 'shuffle.svg'), ('signpost-2-fill.svg', 'signpost-2-fill.svg'), ('signpost-2.svg', 'signpost-2.svg'), ('signpost-fill.svg', 'signpost-fill.svg'), ('signpost-split-fill.svg', 'signpost-split-fill.svg'), ('signpost-split.svg', 'signpost-split.svg'), ('signpost.svg', 'signpost.svg'), ('sim-fill.svg', 'sim-fill.svg'), ('sim.svg', 'sim.svg'), ('skip-backward-btn-fill.svg', 'skip-backward-btn-fill.svg'), ('skip-backward-btn.svg', 'skip-backward-btn.svg'), ('skip-backward-circle-fill.svg', 'skip-backward-circle-fill.svg'), ('skip-backward-circle.svg', 'skip-backward-circle.svg'), ('skip-backward-fill.svg', 'skip-backward-fill.svg'), ('skip-backward.svg', 'skip-backward.svg'), ('skip-end-btn-fill.svg', 'skip-end-btn-fill.svg'), ('skip-end-btn.svg', 'skip-end-btn.svg'), ('skip-end-circle-fill.svg', 'skip-end-circle-fill.svg'), ('skip-end-circle.svg', 'skip-end-circle.svg'), ('skip-end-fill.svg', 'skip-end-fill.svg'), ('skip-end.svg', 'skip-end.svg'), ('skip-forward-btn-fill.svg', 'skip-forward-btn-fill.svg'), ('skip-forward-btn.svg', 'skip-forward-btn.svg'), ('skip-forward-circle-fill.svg', 'skip-forward-circle-fill.svg'), ('skip-forward-circle.svg', 'skip-forward-circle.svg'), ('skip-forward-fill.svg', 'skip-forward-fill.svg'), ('skip-forward.svg', 'skip-forward.svg'), ('skip-start-btn-fill.svg', 'skip-start-btn-fill.svg'), ('skip-start-btn.svg', 'skip-start-btn.svg'), ('skip-start-circle-fill.svg', 'skip-start-circle-fill.svg'), ('skip-start-circle.svg', 'skip-start-circle.svg'), ('skip-start-fill.svg', 'skip-start-fill.svg'), ('skip-start.svg', 'skip-start.svg'), ('slack.svg', 'slack.svg'), ('slash-circle-fill.svg', 'slash-circle-fill.svg'), ('slash-circle.svg', 'slash-circle.svg'), ('slash-square-fill.svg', 'slash-square-fill.svg'), ('slash-square.svg', 'slash-square.svg'), ('slash.svg', 'slash.svg'), ('sliders.svg', 'sliders.svg'), ('smartwatch.svg', 'smartwatch.svg'), ('sort-alpha-down-alt.svg', 'sort-alpha-down-alt.svg'), ('sort-alpha-down.svg', 'sort-alpha-down.svg'), ('sort-alpha-up-alt.svg', 'sort-alpha-up-alt.svg'), ('sort-alpha-up.svg', 'sort-alpha-up.svg'), ('sort-down-alt.svg', 'sort-down-alt.svg'), ('sort-down.svg', 'sort-down.svg'), ('sort-numeric-down-alt.svg', 'sort-numeric-down-alt.svg'), ('sort-numeric-down.svg', 'sort-numeric-down.svg'), ('sort-numeric-up-alt.svg', 'sort-numeric-up-alt.svg'), ('sort-numeric-up.svg', 'sort-numeric-up.svg'), ('sort-up-alt.svg', 'sort-up-alt.svg'), ('sort-up.svg', 'sort-up.svg'), ('soundwave.svg', 'soundwave.svg'), ('speaker-fill.svg', 'speaker-fill.svg'), ('speaker.svg', 'speaker.svg'), ('spellcheck.svg', 'spellcheck.svg'), ('square-fill.svg', 'square-fill.svg'), ('square-half.svg', 'square-half.svg'), ('square.svg', 'square.svg'), ('star-fill.svg', 'star-fill.svg'), ('star-half.svg', 'star-half.svg'), ('star.svg', 'star.svg'), ('stickies-fill.svg', 'stickies-fill.svg'), ('stickies.svg', 'stickies.svg'), ('sticky-fill.svg', 'sticky-fill.svg'), ('sticky.svg', 'sticky.svg'), ('stop-btn-fill.svg', 'stop-btn-fill.svg'), ('stop-btn.svg', 'stop-btn.svg'), ('stop-circle-fill.svg', 'stop-circle-fill.svg'), ('stop-circle.svg', 'stop-circle.svg'), ('stop-fill.svg', 'stop-fill.svg'), ('stop.svg', 'stop.svg'), ('stoplights-fill.svg', 'stoplights-fill.svg'), ('stoplights.svg', 'stoplights.svg'), ('stopwatch-fill.svg', 'stopwatch-fill.svg'), ('stopwatch.svg', 'stopwatch.svg'), ('subtract.svg', 'subtract.svg'), ('suit-club-fill.svg', 'suit-club-fill.svg'), ('suit-club.svg', 'suit-club.svg'), ('suit-diamond-fill.svg', 'suit-diamond-fill.svg'), ('suit-diamond.svg', 'suit-diamond.svg'), ('suit-heart-fill.svg', 'suit-heart-fill.svg'), ('suit-heart.svg', 'suit-heart.svg'), ('suit-spade-fill.svg', 'suit-spade-fill.svg'), ('suit-spade.svg', 'suit-spade.svg'), ('sun.svg', 'sun.svg'), ('sunglasses.svg', 'sunglasses.svg'), ('table.svg', 'table.svg'), ('tablet-fill.svg', 'tablet-fill.svg'), ('tablet-landscape-fill.svg', 'tablet-landscape-fill.svg'), ('tablet-landscape.svg', 'tablet-landscape.svg'), ('tablet.svg', 'tablet.svg'), ('tag-fill.svg', 'tag-fill.svg'), ('tag.svg', 'tag.svg'), ('tags-fill.svg', 'tags-fill.svg'), ('tags.svg', 'tags.svg'), ('telephone-fill.svg', 'telephone-fill.svg'), ('telephone-forward-fill.svg', 'telephone-forward-fill.svg'), ('telephone-forward.svg', 'telephone-forward.svg'), ('telephone-inbound-fill.svg', 'telephone-inbound-fill.svg'), ('telephone-inbound.svg', 'telephone-inbound.svg'), ('telephone-minus-fill.svg', 'telephone-minus-fill.svg'), ('telephone-minus.svg', 'telephone-minus.svg'), ('telephone-outbound-fill.svg', 'telephone-outbound-fill.svg'), ('telephone-outbound.svg', 'telephone-outbound.svg'), ('telephone-plus-fill.svg', 'telephone-plus-fill.svg'), ('telephone-plus.svg', 'telephone-plus.svg'), ('telephone-x-fill.svg', 'telephone-x-fill.svg'), ('telephone-x.svg', 'telephone-x.svg'), ('telephone.svg', 'telephone.svg'), ('terminal-fill.svg', 'terminal-fill.svg'), ('terminal.svg', 'terminal.svg'), ('text-center.svg', 'text-center.svg'), ('text-indent-left.svg', 'text-indent-left.svg'), ('text-indent-right.svg', 'text-indent-right.svg'), ('text-left.svg', 'text-left.svg'), ('text-paragraph.svg', 'text-paragraph.svg'), ('text-right.svg', 'text-right.svg'), ('textarea-resize.svg', 'textarea-resize.svg'), ('textarea-t.svg', 'textarea-t.svg'), ('textarea.svg', 'textarea.svg'), ('thermometer-half.svg', 'thermometer-half.svg'), ('thermometer.svg', 'thermometer.svg'), ('three-dots-vertical.svg', 'three-dots-vertical.svg'), ('three-dots.svg', 'three-dots.svg'), ('toggle-off.svg', 'toggle-off.svg'), ('toggle-on.svg', 'toggle-on.svg'), ('toggle2-off.svg', 'toggle2-off.svg'), ('toggle2-on.svg', 'toggle2-on.svg'), ('toggles.svg', 'toggles.svg'), ('toggles2.svg', 'toggles2.svg'), ('tools.svg', 'tools.svg'), ('trash-fill.svg', 'trash-fill.svg'), ('trash.svg', 'trash.svg'), ('trash2-fill.svg', 'trash2-fill.svg'), ('trash2.svg', 'trash2.svg'), ('tree-fill.svg', 'tree-fill.svg'), ('tree.svg', 'tree.svg'), ('triangle-fill.svg', 'triangle-fill.svg'), ('triangle-half.svg', 'triangle-half.svg'), ('triangle.svg', 'triangle.svg'), ('trophy-fill.svg', 'trophy-fill.svg'), ('trophy.svg', 'trophy.svg'), ('truck-flatbed.svg', 'truck-flatbed.svg'), ('truck.svg', 'truck.svg'), ('tv-fill.svg', 'tv-fill.svg'), ('tv.svg', 'tv.svg'), ('twitch.svg', 'twitch.svg'), ('twitter.svg', 'twitter.svg'), ('type-bold.svg', 'type-bold.svg'), ('type-h1.svg', 'type-h1.svg'), ('type-h2.svg', 'type-h2.svg'), ('type-h3.svg', 'type-h3.svg'), ('type-italic.svg', 'type-italic.svg'), ('type-strikethrough.svg', 'type-strikethrough.svg'), ('type-underline.svg', 'type-underline.svg'), ('type.svg', 'type.svg'), ('ui-checks-grid.svg', 'ui-checks-grid.svg'), ('ui-checks.svg', 'ui-checks.svg'), ('ui-radios-grid.svg', 'ui-radios-grid.svg'), ('ui-radios.svg', 'ui-radios.svg'), ('union.svg', 'union.svg'), ('unlock-fill.svg', 'unlock-fill.svg'), ('unlock.svg', 'unlock.svg'), ('upc-scan.svg', 'upc-scan.svg'), ('upc.svg', 'upc.svg'), ('upload.svg', 'upload.svg'), ('vector-pen.svg', 'vector-pen.svg'), ('view-list.svg', 'view-list.svg'), ('view-stacked.svg', 'view-stacked.svg'), ('vinyl-fill.svg', 'vinyl-fill.svg'), ('vinyl.svg', 'vinyl.svg'), ('voicemail.svg', 'voicemail.svg'), ('volume-down-fill.svg', 'volume-down-fill.svg'), ('volume-down.svg', 'volume-down.svg'), ('volume-mute-fill.svg', 'volume-mute-fill.svg'), ('volume-mute.svg', 'volume-mute.svg'), ('volume-off-fill.svg', 'volume-off-fill.svg'), ('volume-off.svg', 'volume-off.svg'), ('volume-up-fill.svg', 'volume-up-fill.svg'), ('volume-up.svg', 'volume-up.svg'), ('vr.svg', 'vr.svg'), ('wallet-fill.svg', 'wallet-fill.svg'), ('wallet.svg', 'wallet.svg'), ('wallet2.svg', 'wallet2.svg'), ('watch.svg', 'watch.svg'), ('wifi-1.svg', 'wifi-1.svg'), ('wifi-2.svg', 'wifi-2.svg'), ('wifi-off.svg', 'wifi-off.svg'), ('wifi.svg', 'wifi.svg'), ('window.svg', 'window.svg'), ('wrench.svg', 'wrench.svg'), ('x-circle-fill.svg', 'x-circle-fill.svg'), ('x-circle.svg', 'x-circle.svg'), ('x-diamond-fill.svg', 'x-diamond-fill.svg'), ('x-diamond.svg', 'x-diamond.svg'), ('x-octagon-fill.svg', 'x-octagon-fill.svg'), ('x-octagon.svg', 'x-octagon.svg'), ('x-square-fill.svg', 'x-square-fill.svg'), ('x-square.svg', 'x-square.svg'), ('x.svg', 'x.svg'), ('youtube.svg', 'youtube.svg'), ('zoom-in.svg', 'zoom-in.svg'), ('zoom-out.svg', 'zoom-out.svg')], max_length=100, verbose_name='Ãcono'),12 ),...
test_array.py
Source:test_array.py
...937])938@pytest.mark.parametrize("fill_value", [939 np.nan, 0, 1940])941def test_unique_na_fill(arr, fill_value):942 a = pd.SparseArray(arr, fill_value=fill_value).unique()943 b = pd.Series(arr).unique()944 assert isinstance(a, SparseArray)945 a = np.asarray(a)946 tm.assert_numpy_array_equal(a, b)947def test_unique_all_sparse():948 # https://github.com/pandas-dev/pandas/issues/23168949 arr = SparseArray([0, 0])950 result = arr.unique()951 expected = SparseArray([0])952 tm.assert_sp_array_equal(result, expected)953def test_map():954 arr = SparseArray([0, 1, 2])955 expected = SparseArray([10, 11, 12], fill_value=10)...
test_arithmetics.py
Source:test_arithmetics.py
1import operator2import numpy as np3import pytest4import pandas as pd5from pandas.core.sparse.api import SparseDtype6import pandas.util.testing as tm7class TestSparseArrayArithmetics(object):8 _base = np.array9 _klass = pd.SparseArray10 def _assert(self, a, b):11 tm.assert_numpy_array_equal(a, b)12 def _check_numeric_ops(self, a, b, a_dense, b_dense):13 with np.errstate(invalid='ignore', divide='ignore'):14 # Unfortunately, trying to wrap the computation of each expected15 # value is with np.errstate() is too tedious.16 # sparse & sparse17 self._assert((a + b).to_dense(), a_dense + b_dense)18 self._assert((b + a).to_dense(), b_dense + a_dense)19 self._assert((a - b).to_dense(), a_dense - b_dense)20 self._assert((b - a).to_dense(), b_dense - a_dense)21 self._assert((a * b).to_dense(), a_dense * b_dense)22 self._assert((b * a).to_dense(), b_dense * a_dense)23 # pandas uses future division24 self._assert((a / b).to_dense(), a_dense * 1.0 / b_dense)25 self._assert((b / a).to_dense(), b_dense * 1.0 / a_dense)26 # ToDo: FIXME in GH 1384327 if not (self._base == pd.Series and28 a.dtype.subtype == np.dtype('int64')):29 self._assert((a // b).to_dense(), a_dense // b_dense)30 self._assert((b // a).to_dense(), b_dense // a_dense)31 self._assert((a % b).to_dense(), a_dense % b_dense)32 self._assert((b % a).to_dense(), b_dense % a_dense)33 self._assert((a ** b).to_dense(), a_dense ** b_dense)34 self._assert((b ** a).to_dense(), b_dense ** a_dense)35 # sparse & dense36 self._assert((a + b_dense).to_dense(), a_dense + b_dense)37 self._assert((b_dense + a).to_dense(), b_dense + a_dense)38 self._assert((a - b_dense).to_dense(), a_dense - b_dense)39 self._assert((b_dense - a).to_dense(), b_dense - a_dense)40 self._assert((a * b_dense).to_dense(), a_dense * b_dense)41 self._assert((b_dense * a).to_dense(), b_dense * a_dense)42 # pandas uses future division43 self._assert((a / b_dense).to_dense(), a_dense * 1.0 / b_dense)44 self._assert((b_dense / a).to_dense(), b_dense * 1.0 / a_dense)45 # ToDo: FIXME in GH 1384346 if not (self._base == pd.Series and47 a.dtype.subtype == np.dtype('int64')):48 self._assert((a // b_dense).to_dense(), a_dense // b_dense)49 self._assert((b_dense // a).to_dense(), b_dense // a_dense)50 self._assert((a % b_dense).to_dense(), a_dense % b_dense)51 self._assert((b_dense % a).to_dense(), b_dense % a_dense)52 self._assert((a ** b_dense).to_dense(), a_dense ** b_dense)53 self._assert((b_dense ** a).to_dense(), b_dense ** a_dense)54 def _check_bool_result(self, res):55 assert isinstance(res, self._klass)56 assert isinstance(res.dtype, SparseDtype)57 assert res.dtype.subtype == np.bool58 assert isinstance(res.fill_value, bool)59 def _check_comparison_ops(self, a, b, a_dense, b_dense):60 with np.errstate(invalid='ignore'):61 # Unfortunately, trying to wrap the computation of each expected62 # value is with np.errstate() is too tedious.63 #64 # sparse & sparse65 self._check_bool_result(a == b)66 self._assert((a == b).to_dense(), a_dense == b_dense)67 self._check_bool_result(a != b)68 self._assert((a != b).to_dense(), a_dense != b_dense)69 self._check_bool_result(a >= b)70 self._assert((a >= b).to_dense(), a_dense >= b_dense)71 self._check_bool_result(a <= b)72 self._assert((a <= b).to_dense(), a_dense <= b_dense)73 self._check_bool_result(a > b)74 self._assert((a > b).to_dense(), a_dense > b_dense)75 self._check_bool_result(a < b)76 self._assert((a < b).to_dense(), a_dense < b_dense)77 # sparse & dense78 self._check_bool_result(a == b_dense)79 self._assert((a == b_dense).to_dense(), a_dense == b_dense)80 self._check_bool_result(a != b_dense)81 self._assert((a != b_dense).to_dense(), a_dense != b_dense)82 self._check_bool_result(a >= b_dense)83 self._assert((a >= b_dense).to_dense(), a_dense >= b_dense)84 self._check_bool_result(a <= b_dense)85 self._assert((a <= b_dense).to_dense(), a_dense <= b_dense)86 self._check_bool_result(a > b_dense)87 self._assert((a > b_dense).to_dense(), a_dense > b_dense)88 self._check_bool_result(a < b_dense)89 self._assert((a < b_dense).to_dense(), a_dense < b_dense)90 def _check_logical_ops(self, a, b, a_dense, b_dense):91 # sparse & sparse92 self._check_bool_result(a & b)93 self._assert((a & b).to_dense(), a_dense & b_dense)94 self._check_bool_result(a | b)95 self._assert((a | b).to_dense(), a_dense | b_dense)96 # sparse & dense97 self._check_bool_result(a & b_dense)98 self._assert((a & b_dense).to_dense(), a_dense & b_dense)99 self._check_bool_result(a | b_dense)100 self._assert((a | b_dense).to_dense(), a_dense | b_dense)101 def test_float_scalar(self):102 values = self._base([np.nan, 1, 2, 0, np.nan, 0, 1, 2, 1, np.nan])103 for kind in ['integer', 'block']:104 a = self._klass(values, kind=kind)105 self._check_numeric_ops(a, 1, values, 1)106 self._check_numeric_ops(a, 0, values, 0)107 self._check_numeric_ops(a, 3, values, 3)108 a = self._klass(values, kind=kind, fill_value=0)109 self._check_numeric_ops(a, 1, values, 1)110 self._check_numeric_ops(a, 0, values, 0)111 self._check_numeric_ops(a, 3, values, 3)112 a = self._klass(values, kind=kind, fill_value=2)113 self._check_numeric_ops(a, 1, values, 1)114 self._check_numeric_ops(a, 0, values, 0)115 self._check_numeric_ops(a, 3, values, 3)116 def test_float_scalar_comparison(self):117 values = self._base([np.nan, 1, 2, 0, np.nan, 0, 1, 2, 1, np.nan])118 for kind in ['integer', 'block']:119 a = self._klass(values, kind=kind)120 self._check_comparison_ops(a, 1, values, 1)121 self._check_comparison_ops(a, 0, values, 0)122 self._check_comparison_ops(a, 3, values, 3)123 a = self._klass(values, kind=kind, fill_value=0)124 self._check_comparison_ops(a, 1, values, 1)125 self._check_comparison_ops(a, 0, values, 0)126 self._check_comparison_ops(a, 3, values, 3)127 a = self._klass(values, kind=kind, fill_value=2)128 self._check_comparison_ops(a, 1, values, 1)129 self._check_comparison_ops(a, 0, values, 0)130 self._check_comparison_ops(a, 3, values, 3)131 def test_float_same_index(self):132 # when sp_index are the same133 for kind in ['integer', 'block']:134 values = self._base([np.nan, 1, 2, 0, np.nan, 0, 1, 2, 1, np.nan])135 rvalues = self._base([np.nan, 2, 3, 4, np.nan, 0, 1, 3, 2, np.nan])136 a = self._klass(values, kind=kind)137 b = self._klass(rvalues, kind=kind)138 self._check_numeric_ops(a, b, values, rvalues)139 values = self._base([0., 1., 2., 6., 0., 0., 1., 2., 1., 0.])140 rvalues = self._base([0., 2., 3., 4., 0., 0., 1., 3., 2., 0.])141 a = self._klass(values, kind=kind, fill_value=0)142 b = self._klass(rvalues, kind=kind, fill_value=0)143 self._check_numeric_ops(a, b, values, rvalues)144 def test_float_same_index_comparison(self):145 # when sp_index are the same146 for kind in ['integer', 'block']:147 values = self._base([np.nan, 1, 2, 0, np.nan, 0, 1, 2, 1, np.nan])148 rvalues = self._base([np.nan, 2, 3, 4, np.nan, 0, 1, 3, 2, np.nan])149 a = self._klass(values, kind=kind)150 b = self._klass(rvalues, kind=kind)151 self._check_comparison_ops(a, b, values, rvalues)152 values = self._base([0., 1., 2., 6., 0., 0., 1., 2., 1., 0.])153 rvalues = self._base([0., 2., 3., 4., 0., 0., 1., 3., 2., 0.])154 a = self._klass(values, kind=kind, fill_value=0)155 b = self._klass(rvalues, kind=kind, fill_value=0)156 self._check_comparison_ops(a, b, values, rvalues)157 def test_float_array(self):158 values = self._base([np.nan, 1, 2, 0, np.nan, 0, 1, 2, 1, np.nan])159 rvalues = self._base([2, np.nan, 2, 3, np.nan, 0, 1, 5, 2, np.nan])160 for kind in ['integer', 'block']:161 a = self._klass(values, kind=kind)162 b = self._klass(rvalues, kind=kind)163 self._check_numeric_ops(a, b, values, rvalues)164 self._check_numeric_ops(a, b * 0, values, rvalues * 0)165 a = self._klass(values, kind=kind, fill_value=0)166 b = self._klass(rvalues, kind=kind)167 self._check_numeric_ops(a, b, values, rvalues)168 a = self._klass(values, kind=kind, fill_value=0)169 b = self._klass(rvalues, kind=kind, fill_value=0)170 self._check_numeric_ops(a, b, values, rvalues)171 a = self._klass(values, kind=kind, fill_value=1)172 b = self._klass(rvalues, kind=kind, fill_value=2)173 self._check_numeric_ops(a, b, values, rvalues)174 def test_float_array_different_kind(self):175 values = self._base([np.nan, 1, 2, 0, np.nan, 0, 1, 2, 1, np.nan])176 rvalues = self._base([2, np.nan, 2, 3, np.nan, 0, 1, 5, 2, np.nan])177 a = self._klass(values, kind='integer')178 b = self._klass(rvalues, kind='block')179 self._check_numeric_ops(a, b, values, rvalues)180 self._check_numeric_ops(a, b * 0, values, rvalues * 0)181 a = self._klass(values, kind='integer', fill_value=0)182 b = self._klass(rvalues, kind='block')183 self._check_numeric_ops(a, b, values, rvalues)184 a = self._klass(values, kind='integer', fill_value=0)185 b = self._klass(rvalues, kind='block', fill_value=0)186 self._check_numeric_ops(a, b, values, rvalues)187 a = self._klass(values, kind='integer', fill_value=1)188 b = self._klass(rvalues, kind='block', fill_value=2)189 self._check_numeric_ops(a, b, values, rvalues)190 def test_float_array_comparison(self):191 values = self._base([np.nan, 1, 2, 0, np.nan, 0, 1, 2, 1, np.nan])192 rvalues = self._base([2, np.nan, 2, 3, np.nan, 0, 1, 5, 2, np.nan])193 for kind in ['integer', 'block']:194 a = self._klass(values, kind=kind)195 b = self._klass(rvalues, kind=kind)196 self._check_comparison_ops(a, b, values, rvalues)197 self._check_comparison_ops(a, b * 0, values, rvalues * 0)198 a = self._klass(values, kind=kind, fill_value=0)199 b = self._klass(rvalues, kind=kind)200 self._check_comparison_ops(a, b, values, rvalues)201 a = self._klass(values, kind=kind, fill_value=0)202 b = self._klass(rvalues, kind=kind, fill_value=0)203 self._check_comparison_ops(a, b, values, rvalues)204 a = self._klass(values, kind=kind, fill_value=1)205 b = self._klass(rvalues, kind=kind, fill_value=2)206 self._check_comparison_ops(a, b, values, rvalues)207 def test_int_array(self):208 # have to specify dtype explicitly until fixing GH 667209 dtype = np.int64210 values = self._base([0, 1, 2, 0, 0, 0, 1, 2, 1, 0], dtype=dtype)211 rvalues = self._base([2, 0, 2, 3, 0, 0, 1, 5, 2, 0], dtype=dtype)212 for kind in ['integer', 'block']:213 a = self._klass(values, dtype=dtype, kind=kind)214 assert a.dtype == SparseDtype(dtype)215 b = self._klass(rvalues, dtype=dtype, kind=kind)216 assert b.dtype == SparseDtype(dtype)217 self._check_numeric_ops(a, b, values, rvalues)218 self._check_numeric_ops(a, b * 0, values, rvalues * 0)219 a = self._klass(values, fill_value=0, dtype=dtype, kind=kind)220 assert a.dtype == SparseDtype(dtype)221 b = self._klass(rvalues, dtype=dtype, kind=kind)222 assert b.dtype == SparseDtype(dtype)223 self._check_numeric_ops(a, b, values, rvalues)224 a = self._klass(values, fill_value=0, dtype=dtype, kind=kind)225 assert a.dtype == SparseDtype(dtype)226 b = self._klass(rvalues, fill_value=0, dtype=dtype, kind=kind)227 assert b.dtype == SparseDtype(dtype)228 self._check_numeric_ops(a, b, values, rvalues)229 a = self._klass(values, fill_value=1, dtype=dtype, kind=kind)230 assert a.dtype == SparseDtype(dtype, fill_value=1)231 b = self._klass(rvalues, fill_value=2, dtype=dtype, kind=kind)232 assert b.dtype == SparseDtype(dtype, fill_value=2)233 self._check_numeric_ops(a, b, values, rvalues)234 def test_int_array_comparison(self):235 # int32 NI ATM236 for dtype in ['int64']:237 values = self._base([0, 1, 2, 0, 0, 0, 1, 2, 1, 0], dtype=dtype)238 rvalues = self._base([2, 0, 2, 3, 0, 0, 1, 5, 2, 0], dtype=dtype)239 for kind in ['integer', 'block']:240 a = self._klass(values, dtype=dtype, kind=kind)241 b = self._klass(rvalues, dtype=dtype, kind=kind)242 self._check_comparison_ops(a, b, values, rvalues)243 self._check_comparison_ops(a, b * 0, values, rvalues * 0)244 a = self._klass(values, dtype=dtype, kind=kind, fill_value=0)245 b = self._klass(rvalues, dtype=dtype, kind=kind)246 self._check_comparison_ops(a, b, values, rvalues)247 a = self._klass(values, dtype=dtype, kind=kind, fill_value=0)248 b = self._klass(rvalues, dtype=dtype, kind=kind, fill_value=0)249 self._check_comparison_ops(a, b, values, rvalues)250 a = self._klass(values, dtype=dtype, kind=kind, fill_value=1)251 b = self._klass(rvalues, dtype=dtype, kind=kind, fill_value=2)252 self._check_comparison_ops(a, b, values, rvalues)253 def test_bool_same_index(self):254 # GH 14000255 # when sp_index are the same256 for kind in ['integer', 'block']:257 values = self._base([True, False, True, True], dtype=np.bool)258 rvalues = self._base([True, False, True, True], dtype=np.bool)259 for fill_value in [True, False, np.nan]:260 a = self._klass(values, kind=kind, dtype=np.bool,261 fill_value=fill_value)262 b = self._klass(rvalues, kind=kind, dtype=np.bool,263 fill_value=fill_value)264 self._check_logical_ops(a, b, values, rvalues)265 def test_bool_array_logical(self):266 # GH 14000267 # when sp_index are the same268 for kind in ['integer', 'block']:269 values = self._base([True, False, True, False, True, True],270 dtype=np.bool)271 rvalues = self._base([True, False, False, True, False, True],272 dtype=np.bool)273 for fill_value in [True, False, np.nan]:274 a = self._klass(values, kind=kind, dtype=np.bool,275 fill_value=fill_value)276 b = self._klass(rvalues, kind=kind, dtype=np.bool,277 fill_value=fill_value)278 self._check_logical_ops(a, b, values, rvalues)279 def test_mixed_array_float_int(self):280 for rdtype in ['int64']:281 values = self._base([np.nan, 1, 2, 0, np.nan, 0, 1, 2, 1, np.nan])282 rvalues = self._base([2, 0, 2, 3, 0, 0, 1, 5, 2, 0], dtype=rdtype)283 for kind in ['integer', 'block']:284 a = self._klass(values, kind=kind)285 b = self._klass(rvalues, kind=kind)286 assert b.dtype == SparseDtype(rdtype)287 self._check_numeric_ops(a, b, values, rvalues)288 self._check_numeric_ops(a, b * 0, values, rvalues * 0)289 a = self._klass(values, kind=kind, fill_value=0)290 b = self._klass(rvalues, kind=kind)291 assert b.dtype == SparseDtype(rdtype)292 self._check_numeric_ops(a, b, values, rvalues)293 a = self._klass(values, kind=kind, fill_value=0)294 b = self._klass(rvalues, kind=kind, fill_value=0)295 assert b.dtype == SparseDtype(rdtype)296 self._check_numeric_ops(a, b, values, rvalues)297 a = self._klass(values, kind=kind, fill_value=1)298 b = self._klass(rvalues, kind=kind, fill_value=2)299 assert b.dtype == SparseDtype(rdtype, fill_value=2)300 self._check_numeric_ops(a, b, values, rvalues)301 def test_mixed_array_comparison(self):302 # int32 NI ATM303 for rdtype in ['int64']:304 values = self._base([np.nan, 1, 2, 0, np.nan, 0, 1, 2, 1, np.nan])305 rvalues = self._base([2, 0, 2, 3, 0, 0, 1, 5, 2, 0], dtype=rdtype)306 for kind in ['integer', 'block']:307 a = self._klass(values, kind=kind)308 b = self._klass(rvalues, kind=kind)309 assert b.dtype == SparseDtype(rdtype)310 self._check_comparison_ops(a, b, values, rvalues)311 self._check_comparison_ops(a, b * 0, values, rvalues * 0)312 a = self._klass(values, kind=kind, fill_value=0)313 b = self._klass(rvalues, kind=kind)314 assert b.dtype == SparseDtype(rdtype)315 self._check_comparison_ops(a, b, values, rvalues)316 a = self._klass(values, kind=kind, fill_value=0)317 b = self._klass(rvalues, kind=kind, fill_value=0)318 assert b.dtype == SparseDtype(rdtype)319 self._check_comparison_ops(a, b, values, rvalues)320 a = self._klass(values, kind=kind, fill_value=1)321 b = self._klass(rvalues, kind=kind, fill_value=2)322 assert b.dtype == SparseDtype(rdtype, fill_value=2)323 self._check_comparison_ops(a, b, values, rvalues)324class TestSparseSeriesArithmetic(TestSparseArrayArithmetics):325 _base = pd.Series326 _klass = pd.SparseSeries327 def _assert(self, a, b):328 tm.assert_series_equal(a, b)329 def test_alignment(self):330 da = pd.Series(np.arange(4))331 db = pd.Series(np.arange(4), index=[1, 2, 3, 4])332 sa = pd.SparseSeries(np.arange(4), dtype=np.int64, fill_value=0)333 sb = pd.SparseSeries(np.arange(4), index=[1, 2, 3, 4],334 dtype=np.int64, fill_value=0)335 self._check_numeric_ops(sa, sb, da, db)336 sa = pd.SparseSeries(np.arange(4), dtype=np.int64, fill_value=np.nan)337 sb = pd.SparseSeries(np.arange(4), index=[1, 2, 3, 4],338 dtype=np.int64, fill_value=np.nan)339 self._check_numeric_ops(sa, sb, da, db)340 da = pd.Series(np.arange(4))341 db = pd.Series(np.arange(4), index=[10, 11, 12, 13])342 sa = pd.SparseSeries(np.arange(4), dtype=np.int64, fill_value=0)343 sb = pd.SparseSeries(np.arange(4), index=[10, 11, 12, 13],344 dtype=np.int64, fill_value=0)345 self._check_numeric_ops(sa, sb, da, db)346 sa = pd.SparseSeries(np.arange(4), dtype=np.int64, fill_value=np.nan)347 sb = pd.SparseSeries(np.arange(4), index=[10, 11, 12, 13],348 dtype=np.int64, fill_value=np.nan)349 self._check_numeric_ops(sa, sb, da, db)350@pytest.mark.parametrize("op", [351 operator.eq,352 operator.add,353])354def test_with_list(op):355 arr = pd.SparseArray([0, 1], fill_value=0)356 result = op(arr, [0, 1])357 expected = op(arr, pd.SparseArray([0, 1]))358 tm.assert_sp_array_equal(result, expected)359@pytest.mark.parametrize('ufunc', [360 np.abs, np.exp,361])362@pytest.mark.parametrize('arr', [363 pd.SparseArray([0, 0, -1, 1]),364 pd.SparseArray([None, None, -1, 1]),365])366def test_ufuncs(ufunc, arr):367 result = ufunc(arr)368 fill_value = ufunc(arr.fill_value)369 expected = pd.SparseArray(ufunc(np.asarray(arr)), fill_value=fill_value)370 tm.assert_sp_array_equal(result, expected)371@pytest.mark.parametrize("a, b", [372 (pd.SparseArray([0, 0, 0]), np.array([0, 1, 2])),373 (pd.SparseArray([0, 0, 0], fill_value=1), np.array([0, 1, 2])),374 (pd.SparseArray([0, 0, 0], fill_value=1), np.array([0, 1, 2])),375 (pd.SparseArray([0, 0, 0], fill_value=1), np.array([0, 1, 2])),376 (pd.SparseArray([0, 0, 0], fill_value=1), np.array([0, 1, 2])),377])378@pytest.mark.parametrize("ufunc", [379 np.add,380 np.greater,381])382def test_binary_ufuncs(ufunc, a, b):383 # can't say anything about fill value here.384 result = ufunc(a, b)385 expected = ufunc(np.asarray(a), np.asarray(b))386 assert isinstance(result, pd.SparseArray)387 tm.assert_numpy_array_equal(np.asarray(result), expected)388def test_ndarray_inplace():389 sparray = pd.SparseArray([0, 2, 0, 0])390 ndarray = np.array([0, 1, 2, 3])391 ndarray += sparray392 expected = np.array([0, 3, 2, 3])393 tm.assert_numpy_array_equal(ndarray, expected)394def test_sparray_inplace():395 sparray = pd.SparseArray([0, 2, 0, 0])396 ndarray = np.array([0, 1, 2, 3])397 sparray += ndarray398 expected = pd.SparseArray([0, 3, 2, 3], fill_value=0)399 tm.assert_sp_array_equal(sparray, expected)400@pytest.mark.parametrize("fill_value", [True, False])401def test_invert(fill_value):402 arr = np.array([True, False, False, True])403 sparray = pd.SparseArray(arr, fill_value=fill_value)404 result = ~sparray405 expected = pd.SparseArray(~arr, fill_value=not fill_value)406 tm.assert_sp_array_equal(result, expected)407@pytest.mark.parametrize("fill_value", [0, np.nan])408@pytest.mark.parametrize("op", [operator.pos, operator.neg])409def test_unary_op(op, fill_value):410 arr = np.array([0, 1, np.nan, 2])411 sparray = pd.SparseArray(arr, fill_value=fill_value)412 result = op(sparray)413 expected = pd.SparseArray(op(arr), fill_value=op(fill_value))...
ImageDraw.py
Source:ImageDraw.py
...340 from . import ImageDraw2 as handler341 if im:342 im = handler.Draw(im)343 return im, handler344def floodfill(image, xy, value, border=None, thresh=0):345 """346 (experimental) Fills a bounded region with a given color.347 :param image: Target image.348 :param xy: Seed position (a 2-item coordinate tuple). See349 :ref:`coordinate-system`.350 :param value: Fill color.351 :param border: Optional border value. If given, the region consists of352 pixels with a color different from the border color. If not given,353 the region consists of pixels having the same color as the seed354 pixel.355 :param thresh: Optional threshold value which specifies a maximum356 tolerable difference of a pixel value from the 'background' in357 order for it to be replaced. Useful for filling regions of358 non-homogeneous, but similar, colors....
test_take.py
Source:test_take.py
1# -*- coding: utf-8 -*-2from datetime import datetime3import re4import numpy as np5import pytest6from pandas._libs.tslib import iNaT7from pandas.compat import long8import pandas.core.algorithms as algos9import pandas.util.testing as tm10@pytest.fixture(params=[True, False])11def writeable(request):12 return request.param13# Check that take_nd works both with writeable arrays14# (in which case fast typed memory-views implementation)15# and read-only arrays alike.16@pytest.fixture(params=[17 (np.float64, True),18 (np.float32, True),19 (np.uint64, False),20 (np.uint32, False),21 (np.uint16, False),22 (np.uint8, False),23 (np.int64, False),24 (np.int32, False),25 (np.int16, False),26 (np.int8, False),27 (np.object_, True),28 (np.bool, False),29])30def dtype_can_hold_na(request):31 return request.param32@pytest.fixture(params=[33 (np.int8, np.int16(127), np.int8),34 (np.int8, np.int16(128), np.int16),35 (np.int32, 1, np.int32),36 (np.int32, 2.0, np.float64),37 (np.int32, 3.0 + 4.0j, np.complex128),38 (np.int32, True, np.object_),39 (np.int32, "", np.object_),40 (np.float64, 1, np.float64),41 (np.float64, 2.0, np.float64),42 (np.float64, 3.0 + 4.0j, np.complex128),43 (np.float64, True, np.object_),44 (np.float64, "", np.object_),45 (np.complex128, 1, np.complex128),46 (np.complex128, 2.0, np.complex128),47 (np.complex128, 3.0 + 4.0j, np.complex128),48 (np.complex128, True, np.object_),49 (np.complex128, "", np.object_),50 (np.bool_, 1, np.object_),51 (np.bool_, 2.0, np.object_),52 (np.bool_, 3.0 + 4.0j, np.object_),53 (np.bool_, True, np.bool_),54 (np.bool_, '', np.object_),55])56def dtype_fill_out_dtype(request):57 return request.param58class TestTake(object):59 # Standard incompatible fill error.60 fill_error = re.compile("Incompatible type for fill_value")61 def test_1d_with_out(self, dtype_can_hold_na, writeable):62 dtype, can_hold_na = dtype_can_hold_na63 data = np.random.randint(0, 2, 4).astype(dtype)64 data.flags.writeable = writeable65 indexer = [2, 1, 0, 1]66 out = np.empty(4, dtype=dtype)67 algos.take_1d(data, indexer, out=out)68 expected = data.take(indexer)69 tm.assert_almost_equal(out, expected)70 indexer = [2, 1, 0, -1]71 out = np.empty(4, dtype=dtype)72 if can_hold_na:73 algos.take_1d(data, indexer, out=out)74 expected = data.take(indexer)75 expected[3] = np.nan76 tm.assert_almost_equal(out, expected)77 else:78 with pytest.raises(TypeError, match=self.fill_error):79 algos.take_1d(data, indexer, out=out)80 # No Exception otherwise.81 data.take(indexer, out=out)82 def test_1d_fill_nonna(self, dtype_fill_out_dtype):83 dtype, fill_value, out_dtype = dtype_fill_out_dtype84 data = np.random.randint(0, 2, 4).astype(dtype)85 indexer = [2, 1, 0, -1]86 result = algos.take_1d(data, indexer, fill_value=fill_value)87 assert ((result[[0, 1, 2]] == data[[2, 1, 0]]).all())88 assert (result[3] == fill_value)89 assert (result.dtype == out_dtype)90 indexer = [2, 1, 0, 1]91 result = algos.take_1d(data, indexer, fill_value=fill_value)92 assert ((result[[0, 1, 2, 3]] == data[indexer]).all())93 assert (result.dtype == dtype)94 def test_2d_with_out(self, dtype_can_hold_na, writeable):95 dtype, can_hold_na = dtype_can_hold_na96 data = np.random.randint(0, 2, (5, 3)).astype(dtype)97 data.flags.writeable = writeable98 indexer = [2, 1, 0, 1]99 out0 = np.empty((4, 3), dtype=dtype)100 out1 = np.empty((5, 4), dtype=dtype)101 algos.take_nd(data, indexer, out=out0, axis=0)102 algos.take_nd(data, indexer, out=out1, axis=1)103 expected0 = data.take(indexer, axis=0)104 expected1 = data.take(indexer, axis=1)105 tm.assert_almost_equal(out0, expected0)106 tm.assert_almost_equal(out1, expected1)107 indexer = [2, 1, 0, -1]108 out0 = np.empty((4, 3), dtype=dtype)109 out1 = np.empty((5, 4), dtype=dtype)110 if can_hold_na:111 algos.take_nd(data, indexer, out=out0, axis=0)112 algos.take_nd(data, indexer, out=out1, axis=1)113 expected0 = data.take(indexer, axis=0)114 expected1 = data.take(indexer, axis=1)115 expected0[3, :] = np.nan116 expected1[:, 3] = np.nan117 tm.assert_almost_equal(out0, expected0)118 tm.assert_almost_equal(out1, expected1)119 else:120 for i, out in enumerate([out0, out1]):121 with pytest.raises(TypeError, match=self.fill_error):122 algos.take_nd(data, indexer, out=out, axis=i)123 # No Exception otherwise.124 data.take(indexer, out=out, axis=i)125 def test_2d_fill_nonna(self, dtype_fill_out_dtype):126 dtype, fill_value, out_dtype = dtype_fill_out_dtype127 data = np.random.randint(0, 2, (5, 3)).astype(dtype)128 indexer = [2, 1, 0, -1]129 result = algos.take_nd(data, indexer, axis=0,130 fill_value=fill_value)131 assert ((result[[0, 1, 2], :] == data[[2, 1, 0], :]).all())132 assert ((result[3, :] == fill_value).all())133 assert (result.dtype == out_dtype)134 result = algos.take_nd(data, indexer, axis=1,135 fill_value=fill_value)136 assert ((result[:, [0, 1, 2]] == data[:, [2, 1, 0]]).all())137 assert ((result[:, 3] == fill_value).all())138 assert (result.dtype == out_dtype)139 indexer = [2, 1, 0, 1]140 result = algos.take_nd(data, indexer, axis=0,141 fill_value=fill_value)142 assert ((result[[0, 1, 2, 3], :] == data[indexer, :]).all())143 assert (result.dtype == dtype)144 result = algos.take_nd(data, indexer, axis=1,145 fill_value=fill_value)146 assert ((result[:, [0, 1, 2, 3]] == data[:, indexer]).all())147 assert (result.dtype == dtype)148 def test_3d_with_out(self, dtype_can_hold_na):149 dtype, can_hold_na = dtype_can_hold_na150 data = np.random.randint(0, 2, (5, 4, 3)).astype(dtype)151 indexer = [2, 1, 0, 1]152 out0 = np.empty((4, 4, 3), dtype=dtype)153 out1 = np.empty((5, 4, 3), dtype=dtype)154 out2 = np.empty((5, 4, 4), dtype=dtype)155 algos.take_nd(data, indexer, out=out0, axis=0)156 algos.take_nd(data, indexer, out=out1, axis=1)157 algos.take_nd(data, indexer, out=out2, axis=2)158 expected0 = data.take(indexer, axis=0)159 expected1 = data.take(indexer, axis=1)160 expected2 = data.take(indexer, axis=2)161 tm.assert_almost_equal(out0, expected0)162 tm.assert_almost_equal(out1, expected1)163 tm.assert_almost_equal(out2, expected2)164 indexer = [2, 1, 0, -1]165 out0 = np.empty((4, 4, 3), dtype=dtype)166 out1 = np.empty((5, 4, 3), dtype=dtype)167 out2 = np.empty((5, 4, 4), dtype=dtype)168 if can_hold_na:169 algos.take_nd(data, indexer, out=out0, axis=0)170 algos.take_nd(data, indexer, out=out1, axis=1)171 algos.take_nd(data, indexer, out=out2, axis=2)172 expected0 = data.take(indexer, axis=0)173 expected1 = data.take(indexer, axis=1)174 expected2 = data.take(indexer, axis=2)175 expected0[3, :, :] = np.nan176 expected1[:, 3, :] = np.nan177 expected2[:, :, 3] = np.nan178 tm.assert_almost_equal(out0, expected0)179 tm.assert_almost_equal(out1, expected1)180 tm.assert_almost_equal(out2, expected2)181 else:182 for i, out in enumerate([out0, out1, out2]):183 with pytest.raises(TypeError, match=self.fill_error):184 algos.take_nd(data, indexer, out=out, axis=i)185 # No Exception otherwise.186 data.take(indexer, out=out, axis=i)187 def test_3d_fill_nonna(self, dtype_fill_out_dtype):188 dtype, fill_value, out_dtype = dtype_fill_out_dtype189 data = np.random.randint(0, 2, (5, 4, 3)).astype(dtype)190 indexer = [2, 1, 0, -1]191 result = algos.take_nd(data, indexer, axis=0,192 fill_value=fill_value)193 assert ((result[[0, 1, 2], :, :] == data[[2, 1, 0], :, :]).all())194 assert ((result[3, :, :] == fill_value).all())195 assert (result.dtype == out_dtype)196 result = algos.take_nd(data, indexer, axis=1,197 fill_value=fill_value)198 assert ((result[:, [0, 1, 2], :] == data[:, [2, 1, 0], :]).all())199 assert ((result[:, 3, :] == fill_value).all())200 assert (result.dtype == out_dtype)201 result = algos.take_nd(data, indexer, axis=2,202 fill_value=fill_value)203 assert ((result[:, :, [0, 1, 2]] == data[:, :, [2, 1, 0]]).all())204 assert ((result[:, :, 3] == fill_value).all())205 assert (result.dtype == out_dtype)206 indexer = [2, 1, 0, 1]207 result = algos.take_nd(data, indexer, axis=0,208 fill_value=fill_value)209 assert ((result[[0, 1, 2, 3], :, :] == data[indexer, :, :]).all())210 assert (result.dtype == dtype)211 result = algos.take_nd(data, indexer, axis=1,212 fill_value=fill_value)213 assert ((result[:, [0, 1, 2, 3], :] == data[:, indexer, :]).all())214 assert (result.dtype == dtype)215 result = algos.take_nd(data, indexer, axis=2,216 fill_value=fill_value)217 assert ((result[:, :, [0, 1, 2, 3]] == data[:, :, indexer]).all())218 assert (result.dtype == dtype)219 def test_1d_other_dtypes(self):220 arr = np.random.randn(10).astype(np.float32)221 indexer = [1, 2, 3, -1]222 result = algos.take_1d(arr, indexer)223 expected = arr.take(indexer)224 expected[-1] = np.nan225 tm.assert_almost_equal(result, expected)226 def test_2d_other_dtypes(self):227 arr = np.random.randn(10, 5).astype(np.float32)228 indexer = [1, 2, 3, -1]229 # axis=0230 result = algos.take_nd(arr, indexer, axis=0)231 expected = arr.take(indexer, axis=0)232 expected[-1] = np.nan233 tm.assert_almost_equal(result, expected)234 # axis=1235 result = algos.take_nd(arr, indexer, axis=1)236 expected = arr.take(indexer, axis=1)237 expected[:, -1] = np.nan238 tm.assert_almost_equal(result, expected)239 def test_1d_bool(self):240 arr = np.array([0, 1, 0], dtype=bool)241 result = algos.take_1d(arr, [0, 2, 2, 1])242 expected = arr.take([0, 2, 2, 1])243 tm.assert_numpy_array_equal(result, expected)244 result = algos.take_1d(arr, [0, 2, -1])245 assert result.dtype == np.object_246 def test_2d_bool(self):247 arr = np.array([[0, 1, 0], [1, 0, 1], [0, 1, 1]], dtype=bool)248 result = algos.take_nd(arr, [0, 2, 2, 1])249 expected = arr.take([0, 2, 2, 1], axis=0)250 tm.assert_numpy_array_equal(result, expected)251 result = algos.take_nd(arr, [0, 2, 2, 1], axis=1)252 expected = arr.take([0, 2, 2, 1], axis=1)253 tm.assert_numpy_array_equal(result, expected)254 result = algos.take_nd(arr, [0, 2, -1])255 assert result.dtype == np.object_256 def test_2d_float32(self):257 arr = np.random.randn(4, 3).astype(np.float32)258 indexer = [0, 2, -1, 1, -1]259 # axis=0260 result = algos.take_nd(arr, indexer, axis=0)261 result2 = np.empty_like(result)262 algos.take_nd(arr, indexer, axis=0, out=result2)263 tm.assert_almost_equal(result, result2)264 expected = arr.take(indexer, axis=0)265 expected[[2, 4], :] = np.nan266 tm.assert_almost_equal(result, expected)267 # this now accepts a float32! # test with float64 out buffer268 out = np.empty((len(indexer), arr.shape[1]), dtype='float32')269 algos.take_nd(arr, indexer, out=out) # it works!270 # axis=1271 result = algos.take_nd(arr, indexer, axis=1)272 result2 = np.empty_like(result)273 algos.take_nd(arr, indexer, axis=1, out=result2)274 tm.assert_almost_equal(result, result2)275 expected = arr.take(indexer, axis=1)276 expected[:, [2, 4]] = np.nan277 tm.assert_almost_equal(result, expected)278 def test_2d_datetime64(self):279 # 2005/01/01 - 2006/01/01280 arr = np.random.randint(281 long(11045376), long(11360736), (5, 3)) * 100000000000282 arr = arr.view(dtype='datetime64[ns]')283 indexer = [0, 2, -1, 1, -1]284 # axis=0285 result = algos.take_nd(arr, indexer, axis=0)286 result2 = np.empty_like(result)287 algos.take_nd(arr, indexer, axis=0, out=result2)288 tm.assert_almost_equal(result, result2)289 expected = arr.take(indexer, axis=0)290 expected.view(np.int64)[[2, 4], :] = iNaT291 tm.assert_almost_equal(result, expected)292 result = algos.take_nd(arr, indexer, axis=0,293 fill_value=datetime(2007, 1, 1))294 result2 = np.empty_like(result)295 algos.take_nd(arr, indexer, out=result2, axis=0,296 fill_value=datetime(2007, 1, 1))297 tm.assert_almost_equal(result, result2)298 expected = arr.take(indexer, axis=0)299 expected[[2, 4], :] = datetime(2007, 1, 1)300 tm.assert_almost_equal(result, expected)301 # axis=1302 result = algos.take_nd(arr, indexer, axis=1)303 result2 = np.empty_like(result)304 algos.take_nd(arr, indexer, axis=1, out=result2)305 tm.assert_almost_equal(result, result2)306 expected = arr.take(indexer, axis=1)307 expected.view(np.int64)[:, [2, 4]] = iNaT308 tm.assert_almost_equal(result, expected)309 result = algos.take_nd(arr, indexer, axis=1,310 fill_value=datetime(2007, 1, 1))311 result2 = np.empty_like(result)312 algos.take_nd(arr, indexer, out=result2, axis=1,313 fill_value=datetime(2007, 1, 1))314 tm.assert_almost_equal(result, result2)315 expected = arr.take(indexer, axis=1)316 expected[:, [2, 4]] = datetime(2007, 1, 1)317 tm.assert_almost_equal(result, expected)318 def test_take_axis_0(self):319 arr = np.arange(12).reshape(4, 3)320 result = algos.take(arr, [0, -1])321 expected = np.array([[0, 1, 2], [9, 10, 11]])322 tm.assert_numpy_array_equal(result, expected)323 # allow_fill=True324 result = algos.take(arr, [0, -1], allow_fill=True, fill_value=0)325 expected = np.array([[0, 1, 2], [0, 0, 0]])326 tm.assert_numpy_array_equal(result, expected)327 def test_take_axis_1(self):328 arr = np.arange(12).reshape(4, 3)329 result = algos.take(arr, [0, -1], axis=1)330 expected = np.array([[0, 2], [3, 5], [6, 8], [9, 11]])331 tm.assert_numpy_array_equal(result, expected)332 # allow_fill=True333 result = algos.take(arr, [0, -1], axis=1, allow_fill=True,334 fill_value=0)335 expected = np.array([[0, 0], [3, 0], [6, 0], [9, 0]])336 tm.assert_numpy_array_equal(result, expected)337class TestExtensionTake(object):338 # The take method found in pd.api.extensions339 def test_bounds_check_large(self):340 arr = np.array([1, 2])341 with pytest.raises(IndexError):342 algos.take(arr, [2, 3], allow_fill=True)343 with pytest.raises(IndexError):344 algos.take(arr, [2, 3], allow_fill=False)345 def test_bounds_check_small(self):346 arr = np.array([1, 2, 3], dtype=np.int64)347 indexer = [0, -1, -2]348 with pytest.raises(ValueError):349 algos.take(arr, indexer, allow_fill=True)350 result = algos.take(arr, indexer)351 expected = np.array([1, 3, 2], dtype=np.int64)352 tm.assert_numpy_array_equal(result, expected)353 @pytest.mark.parametrize('allow_fill', [True, False])354 def test_take_empty(self, allow_fill):355 arr = np.array([], dtype=np.int64)356 # empty take is ok357 result = algos.take(arr, [], allow_fill=allow_fill)358 tm.assert_numpy_array_equal(arr, result)359 with pytest.raises(IndexError):360 algos.take(arr, [0], allow_fill=allow_fill)361 def test_take_na_empty(self):362 result = algos.take(np.array([]), [-1, -1], allow_fill=True,363 fill_value=0.0)364 expected = np.array([0., 0.])365 tm.assert_numpy_array_equal(result, expected)366 def test_take_coerces_list(self):367 arr = [1, 2, 3]368 result = algos.take(arr, [0, 0])369 expected = np.array([1, 1])...
lazy.py
Source:lazy.py
...13 if self.data is None:14 _fill_lock.acquire()15 try:16 if self.data is None:17 self._fill()18 finally:19 _fill_lock.release()20 return self.data[key.upper()]21 def __contains__(self, key):22 if self.data is None:23 _fill_lock.acquire()24 try:25 if self.data is None:26 self._fill()27 finally:28 _fill_lock.release()29 return key in self.data30 def __iter__(self):31 if self.data is None:32 _fill_lock.acquire()33 try:34 if self.data is None:35 self._fill()36 finally:37 _fill_lock.release()38 return iter(self.data)39 def __len__(self):40 if self.data is None:41 _fill_lock.acquire()42 try:43 if self.data is None:44 self._fill()45 finally:46 _fill_lock.release()47 return len(self.data)48 def keys(self):49 if self.data is None:50 _fill_lock.acquire()51 try:52 if self.data is None:53 self._fill()54 finally:55 _fill_lock.release()56 return self.data.keys()57class LazyList(list):58 """List populated on first use."""59 _props = [60 '__str__', '__repr__', '__unicode__',61 '__hash__', '__sizeof__', '__cmp__',62 '__lt__', '__le__', '__eq__', '__ne__', '__gt__', '__ge__',63 'append', 'count', 'index', 'extend', 'insert', 'pop', 'remove',64 'reverse', 'sort', '__add__', '__radd__', '__iadd__', '__mul__',65 '__rmul__', '__imul__', '__contains__', '__len__', '__nonzero__',66 '__getitem__', '__setitem__', '__delitem__', '__iter__',67 '__reversed__', '__getslice__', '__setslice__', '__delslice__']...
Using AI Code Generation
1const { chromium } = require('playwright');2(async () => {3 const browser = await chromium.launch();4 const context = await browser.newContext();5 const page = await context.newPage();6 await page.fill('input[aria-label="Search"]', 'Hello World!');7 await page.screenshot({ path: `example.png` });8 await browser.close();9})();10const { chromium } = require('playwright');11(async () => {12 const browser = await chromium.launch();13 const context = await browser.newContext();14 const page = await context.newPage();15 await page.fill('input[aria-label="Search"]', 'Hello World!');16 await page.screenshot({ path: `example.png` });17 await browser.close();18})();19const { chromium } = require('playwright');20(async () => {21 const browser = await chromium.launch();22 const context = await browser.newContext();23 const page = await context.newPage();24 await page.fill('input[aria-label="Search"]', 'Hello World!');25 await page.screenshot({ path: `example.png` });26 await browser.close();27})();28const { chromium } = require('playwright');29(async () => {30 const browser = await chromium.launch();31 const context = await browser.newContext();32 const page = await context.newPage();33 await page.fill('input[aria-label="Search"]', 'Hello World!');34 await page.screenshot({ path: `example.png` });35 await browser.close();36})();37const { chromium } = require('playwright');38(async () => {39 const browser = await chromium.launch();40 const context = await browser.newContext();41 const page = await context.newPage();42 await page.fill('input[aria-label="Search"]', 'Hello World!');43 await page.screenshot({ path: `
Using AI Code Generation
1const { chromium } = require('playwright');2(async () => {3 const browser = await chromium.launch();4 const context = await browser.newContext();5 const page = await context.newPage();6 await page.fill('input[name="q"]', 'Playwright');7 await page.click('input[type="submit"]');8 await page.screenshot({ path: `google.png` });9 await browser.close();10})();11const { chromium } = require('playwright');12(async () => {13 const browser = await chromium.launch();14 const context = await browser.newContext();15 const page = await context.newPage();16 await page.fill('input[name="q"]', 'Playwright');17 await page.click('input[type="submit"]');18 await page.screenshot({ path: `google.png` });19 await browser.close();20})();21const { chromium } = require('playwright');22(async () => {23 const browser = await chromium.launch();24 const context = await browser.newContext();25 const page = await context.newPage();26 await page.fill('input[name="q"]', 'Playwright');27 await page.click('input[type="submit"]');28 await page.screenshot({ path: `google.png` });29 await browser.close();30})();31const { chromium } = require('playwright');32(async () => {33 const browser = await chromium.launch();34 const context = await browser.newContext();35 const page = await context.newPage();36 await page.fill('input[name="q"]', 'Playwright');37 await page.click('input[type="submit"]');38 await page.screenshot({ path: `google.png` });39 await browser.close();40})();41const { chromium } = require('playwright');42(async () => {43 const browser = await chromium.launch();44 const context = await browser.newContext();45 const page = await context.newPage();
Using AI Code Generation
1const { chromium } = require('playwright');2(async () => {3 const browser = await chromium.launch();4 const context = await browser.newContext();5 const page = await context.newPage();6 await page.fill('input[name="q"]', 'Hello World');7 await page.screenshot({ path: 'google.png' });8 await browser.close();9})();
Using AI Code Generation
1const { chromium } = require('playwright');2(async () => {3 const browser = await chromium.launch({ headless: false });4 const context = await browser.newContext();5 const page = await context.newPage();6 await page.fill('input[name="q"]', 'Hello World');7 await page.screenshot({ path: 'example.png' });8 await browser.close();9})();10const { chromium } = require('playwright');11(async () => {12 const browser = await chromium.launch({ headless: false });13 const context = await browser.newContext();14 const page = await context.newPage();15 await page.fill('input[name="q"]', 'Hello World');16 await page.screenshot({ path: 'example.png' });17 await browser.close();18})();19const { chromium } = require('playwright');20(async () => {21 const browser = await chromium.launch({ headless: false });22 const context = await browser.newContext();23 const page = await context.newPage();24 await page.fill('input[name="q"]', 'Hello World');25 await page.screenshot({ path: 'example.png' });26 await browser.close();27})();28const { chromium } = require('playwright');29(async () => {30 const browser = await chromium.launch({ headless: false });31 const context = await browser.newContext();32 const page = await context.newPage();33 await page.fill('input[name="q"]', 'Hello World');34 await page.screenshot({ path: 'example.png' });35 await browser.close();36})();37const { chromium } = require('playwright');38(async () => {39 const browser = await chromium.launch({ headless: false });40 const context = await browser.newContext();41 const page = await context.newPage();42 await page.fill('input[name="q
Using AI Code Generation
1const { chromium } = require('playwright');2(async () => {3 const browser = await chromium.launch({ headless: false });4 const context = await browser.newContext();5 const page = await context.newPage();6 await page.waitForTimeout(2000);7 await page.click('#main > div.w3-container.w3-teal > a:nth-child(1)');8 await page.waitForTimeout(2000);9 const frame = page.frame({ name: 'iframeResult' });10 await frame.waitForSelector('#colorpicker');11 await frame.fill('#colorpicker', '#000000');12 await page.waitForTimeout(2000);13 await browser.close();14})();15const { chromium } = require('playwright');16(async () => {17 const browser = await chromium.launch({ headless: false });18 const context = await browser.newContext();19 const page = await context.newPage();20 await page.waitForTimeout(2000);21 await page.click('#main > div.w3-container.w3-teal > a:nth-child(1)');22 await page.waitForTimeout(2000);23 const frame = page.frame({ name: 'iframeResult' });24 await frame.waitForSelector('#colorpicker');25 await frame.fill('#colorpicker', '#000000');26 await page.waitForTimeout(2000);27 await browser.close();28})();29const { chromium } = require('playwright');30(async () => {31 const browser = await chromium.launch({ headless: false });
Using AI Code Generation
1const { chromium } = require('playwright');2(async () => {3 const browser = await chromium.launch({ headless: false });4 const context = await browser.newContext();5 const page = await context.newPage();6 await page.fill('input[aria-label="Search"]', 'Playwright');7 await page.click('input[value="Google Search"]');8 await page.screenshot({ path: 'example.png' });9 await browser.close();10})();11"dependencies": {12 },13const { chromium } = require('playwright');14(async () => {15 const browser = await chromium.launch({ headless: false });16 const context = await browser.newContext();17 const page = await context.newPage();18 await page.fill('input[aria-label="Search"]', 'Playwright');19 await page.click('input[value="Google Search"]');20 await page.screenshot({ path: 'example.png' });21 await browser.close();22})();
Using AI Code Generation
1const {chromium} = require('playwright');2(async () => {3 const browser = await chromium.launch();4 const context = await browser.newContext();5 const page = await context.newPage();6 await page.fill('input[name="q"]', 'Hello World');7 await browser.close();8})();9const {chromium} = require('playwright');10(async () => {11 const browser = await chromium.launch();12 const context = await browser.newContext();13 const page = await context.newPage();14 await page.fill('input[name="q"]', 'Hello World');15 await browser.close();16})();17const {chromium} = require('playwright');18(async () => {19 const browser = await chromium.launch();20 const context = await browser.newContext();21 const page = await context.newPage();22 await page.fill('input[name="q"]', 'Hello World');23 await browser.close();24})();25const {chromium} = require('playwright');26(async () => {27 const browser = await chromium.launch();28 const context = await browser.newContext();29 const page = await context.newPage();30 await page.fill('input[name="q"]', 'Hello World');31 await browser.close();32})();33const {chromium} = require('playwright');34(async () => {35 const browser = await chromium.launch();36 const context = await browser.newContext();37 const page = await context.newPage();38 await page.fill('input[name="q"]', 'Hello World');39 await browser.close();40})();41const {chromium} = require('playwright');42(async () => {43 const browser = await chromium.launch();44 const context = await browser.newContext();
Using AI Code Generation
1const { chromium } = require('playwright');2(async () => {3 const browser = await chromium.launch({headless: false});4 const page = await browser.newPage();5 await page.fill('input[type="text"]','playwright');6 await page.click('input[type="submit"]');7 await page.waitForSelector('h3');8 await page.screenshot({ path: `example.png` });9 await browser.close();10})();11const { chromium } = require('playwright');12(async () => {13 const browser = await chromium.launch({headless: false});14 const page = await browser.newPage();15 await page.fill('input[type="text"]','playwright');16 await page.click('input[type="submit"]');17 await page.waitForSelector('h3');18 await page.screenshot({ path: `example.png` });19 await browser.close();20})();21const { chromium } = require('playwright');22(async () => {23 const browser = await chromium.launch({headless: false});24 const page = await browser.newPage();25 await page.fill('input[type="text"]','playwright');26 await page.click('input[type="submit"]');27 await page.waitForSelector('h3');28 await page.screenshot({ path: `example.png` });29 await browser.close();30})();31const { chromium } = require('playwright');32(async () => {33 const browser = await chromium.launch({headless: false});34 const page = await browser.newPage();35 await page.fill('input[type="text"]','playwright');36 await page.click('input[type="submit"]');37 await page.waitForSelector('h3');38 await page.screenshot({ path: `example.png` });39 await browser.close();40})();41const { chromium } = require('playwright');42(async () => {43 const browser = await chromium.launch({headless:
LambdaTest’s Playwright tutorial will give you a broader idea about the Playwright automation framework, its unique features, and use cases with examples to exceed your understanding of Playwright testing. This tutorial will give A to Z guidance, from installing the Playwright framework to some best practices and advanced concepts.
Get 100 minutes of automation test minutes FREE!!